diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index a949adb1a..2168d97c4 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: acabello (20), Admin (1097), angel (123), francisco (2), jaimem (14) +// Translators: acabello (20), Admin (1107), angel (123), francisco (2), jaimem (14) $text = array( '2_factor_auth' => '', @@ -1156,12 +1156,12 @@ URL: [url]', 'settings_advancedAcl_desc' => '', 'settings_allowChangeRevAppInProcess' => '', 'settings_allowChangeRevAppInProcess_desc' => '', -'settings_allowReviewerOnly' => '', -'settings_allowReviewerOnly_desc' => '', +'settings_allowReviewerOnly' => 'Permitir habilitar la función de Revisor para un usuario', +'settings_allowReviewerOnly_desc' => 'Habilite esto si se requiere permitir que un usuario sea lector o revisor sin capacidad de aprobar un documento en un proceso de workflow tradicional', 'settings_apache_mod_rewrite' => 'Apache - Módulo Reescritura', 'settings_Authentication' => 'Configuración de autenticación', 'settings_autoLoginUser' => 'Acceso automatico', -'settings_autoLoginUser_desc' => '', +'settings_autoLoginUser_desc' => 'Utilice esta clave de usuario para accesos si el usuario no ha ingresado al sistema todavía. Este tipo de acceso no creará una sesión.', 'settings_available_languages' => 'Idiomas disponibles', 'settings_available_languages_desc' => 'Unicamente los lenguages seleccionados seran cargados y mostrados en el selector de lenguages. El lenguage por defecto siempre sera cargado', 'settings_backupDir' => 'Directorio de copia de seguridad', @@ -1175,7 +1175,7 @@ URL: [url]', 'settings_checkOutDir' => '', 'settings_checkOutDir_desc' => '', 'settings_cmdTimeout' => 'Tiempo limite para comandos externos', -'settings_cmdTimeout_desc' => '', +'settings_cmdTimeout_desc' => 'Esta duración definirá cuando debe interrumpirse la ejecución de un comando externo (i.e. para crear el índice de texto completo).', 'settings_contentDir' => 'Carpeta de contenidos', 'settings_contentDir_desc' => 'Donde se almacenan los archivos subidos (es preferible seleccionar una carpeta que no sea accesible a través del servidor web)', 'settings_contentOffsetDir' => 'Carpeta de contenidos de desplazamiento', @@ -1371,14 +1371,14 @@ URL: [url]', 'settings_maxSizeForFullText' => 'Tamaño máximo del fichero para el indexado inmediato', 'settings_maxSizeForFullText_desc' => 'Todo documento nuevo menor que el tamaño configurado será indexado completamente después de su subida. En los demás casos se indexarán solo los metadatos.', 'settings_maxUploadSize' => 'Tamaño máximo de subida archivos', -'settings_maxUploadSize_desc' => '', +'settings_maxUploadSize_desc' => 'Tamaño máximo de archivos a cargar. Se tomará en cuenta para versiones de documentos y anexos de correo electrónico', 'settings_more_settings' => 'Configure más parámetros. Acceso por defecto: admin/admin', 'settings_notfound' => 'No encontrado', 'settings_Notification' => 'Parámetros de notificación', 'settings_notwritable' => 'La configuración no se puede guardar porque el fichero de configuración no es escribible.', 'settings_no_content_dir' => 'Carpeta de contenidos', 'settings_overrideMimeType' => 'Anular MimeType', -'settings_overrideMimeType_desc' => '', +'settings_overrideMimeType_desc' => 'Permitir que SeedDMS fije el tipo MIME sobreescribiendo el que haya definido el navegador durante el proceso de carga de un archivo.', 'settings_partitionSize' => 'Tamaño de fichero parcial', 'settings_partitionSize_desc' => 'Tamaño de ficheros parciales en bytes, subidos por jumploader. No configurar un valor mayor que el tamaño máximo de subida configurado en el servidor.', 'settings_passwordExpiration' => 'Caducidad de contraseña', @@ -1413,7 +1413,7 @@ URL: [url]', 'settings_quota' => 'Cuota de usuario', 'settings_quota_desc' => 'El número máximo de bytes que el usuario puede ocupar en disco. Asignar 0 para no limitar el espacio de disco. Este valor puede ser sobreescrito por cada uso en su perfil.', 'settings_removeFromDropFolder' => 'Elimina el archivo de la carpeta de subida despues de una subida exitosa', -'settings_removeFromDropFolder_desc' => '', +'settings_removeFromDropFolder_desc' => 'Habilite esto para que se elimine un archivo después de cargarse exitosamente.', 'settings_repositoryUrl' => 'URL del repositorio', 'settings_repositoryUrl_desc' => 'URL del repositorio de extensiones', 'settings_restricted' => 'Acceso restringido', @@ -1442,8 +1442,8 @@ URL: [url]', 'settings_smtpPort_desc' => 'Puerto del servidor SMTP, por defecto 25', 'settings_smtpSendFrom' => 'Enviar desde', 'settings_smtpSendFrom_desc' => 'Enviar desde', -'settings_smtpSendTestMail' => '', -'settings_smtpSendTestMail_desc' => '', +'settings_smtpSendTestMail' => 'Enviar correo electrónico de prueba', +'settings_smtpSendTestMail_desc' => 'Envía un correo electrónico de prueba para validar la configuración actual de correo electrónico.', 'settings_smtpServer' => 'Nombre de servidor SMTP', 'settings_smtpServer_desc' => 'Nombre de servidor SMTP', 'settings_smtpUser' => 'Usuario del servidor SMTP', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 3f2417d0a..493f884dd 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (764), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) +// Translators: Admin (766), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) $text = array( '2_factor_auth' => '2-factor-authenticatie', @@ -1710,10 +1710,10 @@ Name: [username] 'to_before_from' => 'De einddatum mag niet voor de startdatum liggen', 'transfer_document' => 'Document overdragen', 'transfer_no_read_access' => '', -'transfer_no_write_access' => '', +'transfer_no_write_access' => 'De gebruiker heeft geen schrijfrechten in deze map', 'transfer_objects' => 'Objecten overdragen', 'transfer_objects_to_user' => 'Objecten overdragen aan gebruiker', -'transfer_to_user' => '', +'transfer_to_user' => 'Overdragen aan gebruiker', 'transition_triggered_email' => 'Workflow-overgang geactiveerd', 'transition_triggered_email_body' => 'Workflow Overgang Document: [name] diff --git a/op/op.AddDocument.php b/op/op.AddDocument.php index 0ae406d61..00a733d6f 100644 --- a/op/op.AddDocument.php +++ b/op/op.AddDocument.php @@ -85,7 +85,8 @@ $categories = isset($_POST["categories"]) ? $_POST["categories"] : null; $cats = array(); if($categories) { foreach($categories as $catid) { - $cats[] = $dms->getDocumentCategory($catid); + if($cat = $dms->getDocumentCategory($catid)) + $cats[] = $cat; } } @@ -94,14 +95,15 @@ if(isset($_POST["attributes"])) else $attributes = array(); foreach($attributes as $attrdefid=>$attribute) { - $attrdef = $dms->getAttributeDefinition($attrdefid); - if($attribute) { - if(!$attrdef->validate($attribute)) { - $errmsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute); - UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())), $errmsg); + if($attrdef = $dms->getAttributeDefinition($attrdefid)) { + if($attribute) { + if(!$attrdef->validate($attribute)) { + $errmsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute); + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())), $errmsg); + } + } elseif($attrdef->getMinValues() > 0) { + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("attr_min_values", array("attrname"=>$attrdef->getName()))); } - } elseif($attrdef->getMinValues() > 0) { - UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("attr_min_values", array("attrname"=>$attrdef->getName()))); } } @@ -131,6 +133,8 @@ if (!is_numeric($sequence)) { switch($_POST["presetexpdate"]) { case "date": $tmp = explode('-', $_POST["expdate"]); + if(count($tmp) != 3) + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("malformed_expiration_date")); $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); break; case "1w": diff --git a/restapi/index.php b/restapi/index.php index 87d19012f..16b14a690 100644 --- a/restapi/index.php +++ b/restapi/index.php @@ -2,6 +2,9 @@ define('USE_PHP_SESSION', 0); include("../inc/inc.Settings.php"); +include("../inc/inc.LogInit.php"); +include("../inc/inc.Utils.php"); +include("../inc/inc.Language.php"); include("../inc/inc.Init.php"); include("../inc/inc.DBInit.php"); include("../inc/inc.Extension.php"); @@ -507,7 +510,46 @@ function uploadDocument($request, $response, $args) { /* {{{ */ $params = $request->getParsedBody(); $docname = isset($params['name']) ? $params['name'] : ''; $keywords = isset($params['keywords']) ? $params['keywords'] : ''; + $comment = isset($params['comment']) ? $params['comment'] : ''; + if(isset($params['sequence'])) { + $sequence = str_replace(',', '.', $params["sequence"]); + if (!is_numeric($sequence)) + return $response->withJson(array('success'=>false, 'message'=>getMLText("invalid_sequence"), 'data'=>''), 400); + } else { + $dd = $mfolder->getDocuments('s'); + if(count($dd) > 1) + $sequence = $dd[count($dd)-1]->getSequence() + 1; + else + $sequence = 1.0; + } + if(isset($params['expdate'])) { + $tmp = explode('-', $params["expdate"]); + if(count($tmp) != 3) + return $response->withJson(array('success'=>false, 'message'=>getMLText('malformed_expiration_date'), 'data'=>''), 400); + $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); + } else + $expires = 0; + $version_comment = isset($params['version_comment']) ? $params['version_comment'] : ''; + $reqversion = (isset($params['reqversion']) && (int) $params['reqversion'] > 1) ? (int) $params['reqversion'] : 1; $origfilename = isset($params['origfilename']) ? $params['origfilename'] : null; + $categories = isset($params["categories"]) ? $params["categories"] : array(); + $cats = array(); + foreach($categories as $catid) { + if($cat = $dms->getDocumentCategory($catid)) + $cats[] = $cat; + } + $attributes = isset($params["attributes"]) ? $params["attributes"] : array(); + foreach($attributes as $attrdefid=>$attribute) { + if($attrdef = $dms->getAttributeDefinition($attrdefid)) { + if($attribute) { + if(!$attrdef->validate($attribute)) { + return $response->withJson(array('success'=>false, 'message'=>getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute), 'data'=>''), 400); + } + } elseif($attrdef->getMinValues() > 0) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("attr_min_values", array("attrname"=>$attrdef->getName())), 'data'=>''), 400); + } + } + } if (count($uploadedFiles) == 0) { return $response->withJson(array('success'=>false, 'message'=>'No file detected', 'data'=>''), 400); } @@ -521,7 +563,7 @@ function uploadDocument($request, $response, $args) { /* {{{ */ $userfiletype = finfo_file($finfo, $temp); $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); finfo_close($finfo); - $res = $mfolder->addDocument($docname, '', 0, $userobj, $keywords, array(), $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, 0); + $res = $mfolder->addDocument($docname, $comment, $expires, $userobj, $keywords, $cats, $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, $sequence, array(), array(), $reqversion, $version_comment, $attributes); // addDocumentCategories($res, $categories); // setDocumentAttributes($res, $attributes);