Merge branch 'seeddms-5.1.x' into seeddms-6.0.x

This commit is contained in:
Uwe Steinmann 2019-07-01 21:34:08 +02:00
commit fa64bb3200
56 changed files with 1459 additions and 907 deletions

View File

@ -116,9 +116,35 @@
- add document list which can be exported as an archive
- search results can be exported
--------------------------------------------------------------------------------
Changes in version 5.1.12
--------------------------------------------------------------------------------
- fix for CVE-2019-12932 (Persistent or Stored XSS), excaping the search
result in the autocompletion search form placed in the header
- fix more XSS problems on ViewDocument page
- folder/document list can be sorted by name, date, sequence (ascending or descending)
- search result can be sorted by name, date (ascending or descending)
- do not check for Log.php during installation anymore, it's part of the
vendor directory anyway
- fix uploading documents from drop folder
- replace placeholders in email body header and footer
- SeedDMS_EmailNotify::toIndividual() can send attachments
- fix for searching a document with the same name, which sometimes found a duplicate
name even if it didn't exist
- add config option for checking of duplicate subfolder names in the same folder
- rest api also checks for duplicate folder/document names if turned on
- before moving a document/folder the target folder is checked for an object with
the same name, if this is turned on in the configuration
--------------------------------------------------------------------------------
Changes in version 5.1.11
--------------------------------------------------------------------------------
- fix for CVE-2019-12744 (Remote Command Execution through unvalidated
file upload), add .htaccess file to data directory, better documentation
for installing seeddms
- fix for CVE-2019-12745 (Persistent or Stored XSS in UsrMgr) and
CVE-2019-12801 (Persistent or Stored XSS in GroupMgr), propperly escape
strings used in Select2 js library used by UsrMgr and GroupMgr
- do not show attributes in search results in extra column anymore
- fix setting language during login (Closes #437)
- fix indexing documents even if no preIndexDocument hook is set (Closes #437)
@ -173,7 +199,7 @@
- catch error when updating a document fails (Closes #410)
- use always 'Send from' address as Return-Path when set, only if not set the
logged in user's email will be used (Closes #418)
- show the debug output when sendind a test mail
- show the debug output when sending a test mail
- add hooks add hooks folderListPreContent and folderListPostContent in
class.ViewFolder.php
- do not redirect to ForcePassword page if out.Logout.php was opened. This

View File

@ -1831,6 +1831,14 @@ class SeedDMS_Core_DMS {
* @return array|bool
*/
function search($query, $limit=0, $offset=0, $logicalmode='AND', $searchin=array(), $startFolder=null, $owner=null, $status = array(), $creationstartdate=array(), $creationenddate=array(), $modificationstartdate=array(), $modificationenddate=array(), $categories=array(), $attributes=array(), $mode=0x3, $expirationstartdate=array(), $expirationenddate=array(), $reception=array()) { /* {{{ */
$orderby = '';
if(is_array($query)) {
foreach(array('limit', 'offset', 'logicalmode', 'searchin', 'startFolder', 'owner', 'status', 'creationstartdate', 'creationenddate', 'modificationstartdate', 'modificationenddate', 'categories', 'attributes', 'mode', 'expirationstartdate', 'expirationenddate', 'reception') as $paramname)
${$paramname} = isset($query[$paramname]) ? $query[$paramname] : ${$paramname};
foreach(array('orderby') as $paramname)
${$paramname} = isset($query[$paramname]) ? $query[$paramname] : '';
$query = isset($query['query']) ? $query['query'] : '';
}
// Split the search string into constituent keywords.
$tkeys=array();
if (strlen($query)>0) {
@ -1960,6 +1968,22 @@ class SeedDMS_Core_DMS {
if($limit) {
$searchQuery .= " LIMIT ".$limit." OFFSET ".$offset;
}
switch($orderby) {
case 'dd':
$searchQuery .= " ORDER BY `tblFolders`.`date` DESC";
break;
case 'da':
case 'd':
$searchQuery .= " ORDER BY `tblFolders`.`date`";
break;
case 'nd':
$searchQuery .= " ORDER BY `tblFolders`.`name` DESC";
break;
case 'na':
default:
$searchQuery .= " ORDER BY `tblFolders`.`name`";
break;
}
// Send the complete search query to the database.
$resArr = $this->db->getResultArray($searchQuery);
@ -2217,6 +2241,23 @@ class SeedDMS_Core_DMS {
"`tblDocumentContent`.`version`, ".
"`tblDocumentStatusLog`.`status`, `tblDocumentLocks`.`userID` as `lockUser` ".$searchQuery;
switch($orderby) {
case 'dd':
$orderbyQuery = " ORDER BY `tblDocuments`.`date` DESC";
break;
case 'da':
case 'd':
$orderbyQuery = " ORDER BY `tblDocuments`.`date`";
break;
case 'nd':
$orderbyQuery = " ORDER BY `tblDocuments`.`name` DESC";
break;
case 'na':
default:
$orderbyQuery = " ORDER BY `tblDocuments`.`name`";
break;
}
// calculate the remaining entrїes of the current page
// If page is not full yet, get remaining entries
if($limit) {
@ -2229,6 +2270,8 @@ class SeedDMS_Core_DMS {
if($limit)
$searchQuery .= " LIMIT ".$limit." OFFSET ".$offset;
$searchQuery .= $orderbyQuery;
// Send the complete search query to the database.
$resArr = $this->db->getResultArray($searchQuery);
if($resArr === false)
@ -2237,11 +2280,13 @@ class SeedDMS_Core_DMS {
$resArr = array();
}
} else {
$searchQuery .= $orderbyQuery;
// Send the complete search query to the database.
$resArr = $this->db->getResultArray($searchQuery);
if($resArr === false)
return false;
}
}
// ------------------- Ausgabe der Ergebnisse ----------------------------
$numResults = count($resArr);

View File

@ -546,6 +546,24 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
return true;
} /* }}} */
/**
* Check, if this document is below of a given folder
*
* @param object $folder parent folder
* @return boolean true if folder is a subfolder
*/
function isDescendant($folder) { /* {{{ */
/* First check if the parent folder is folder looking for */
if ($this->getFolder()->getID() == $folder->getID())
return true;
/* Second, check for the parent folder of this document to be
* below the given folder
*/
if($this->getFolder()->isDescendant($folder))
return true;
return false;
} /* }}} */
/**
* Return the parent folder of the document
*

View File

@ -520,6 +520,26 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
return $resArr[0]['c'];
} /* }}} */
/**
* Check if folder has as subfolder with given name
*
* @param string $name
* @return bool true if subfolder exists, false if not or in case
* of an error
*/
function hasSubFolderByName($name) { /* {{{ */
$db = $this->_dms->getDB();
/* Always check the database instead of iterating over $this->_documents, because
* it is probably not slower
*/
$queryStr = "SELECT count(*) as c FROM `tblFolders` WHERE `parent` = " . $this->_id . " AND `name` = ".$db->qstr($name);
$resArr = $db->getResultArray($queryStr);
if (is_bool($resArr) && !$resArr)
return false;
return ($resArr[0]['c'] > 0);
} /* }}} */
/**
* Returns a list of subfolders
* This function does not check for access rights. Use
@ -539,9 +559,9 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
if (!isset($this->_subFolders)) {
$queryStr = "SELECT * FROM `tblFolders` WHERE `parent` = " . $this->_id;
if ($orderby=="n") $queryStr .= " ORDER BY `name`";
elseif ($orderby=="s") $queryStr .= " ORDER BY `sequence`";
elseif ($orderby=="d") $queryStr .= " ORDER BY `date`";
if ($orderby && $orderby[0]=="n") $queryStr .= " ORDER BY `name`";
elseif ($orderby && $orderby[0]=="s") $queryStr .= " ORDER BY `sequence`";
elseif ($orderby && $orderby[0]=="d") $queryStr .= " ORDER BY `date`";
if($dir == 'desc')
$queryStr .= " DESC";
if(is_int($limit) && $limit > 0) {
@ -672,15 +692,11 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
* @return boolean true if folder is a subfolder
*/
function isDescendant($folder) { /* {{{ */
if ($this->_parentID == $folder->getID())
return true;
elseif (isset($this->_parentID)) {
$res = $this->getParent();
if (!$res) return false;
return $this->_parent->isDescendant($folder);
} else
if(!$this->getParent())
return false;
if($this->getParent()->getID() == $folder->getID())
return true;
return $this->getParent()->isDescendant($folder);
} /* }}} */
/**
@ -713,10 +729,9 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
*/
function hasDocumentByName($name) { /* {{{ */
$db = $this->_dms->getDB();
if (isset($this->_documents)) {
/** @noinspection PhpUndefinedFieldInspection */ /** @todo not $this->_documents? */
return count($this->documents);
}
/* Always check the database instead of iterating over $this->_documents, because
* it is probably not slower
*/
$queryStr = "SELECT count(*) as c FROM `tblDocuments` WHERE `folder` = " . $this->_id . " AND `name` = ".$db->qstr($name);
$resArr = $db->getResultArray($queryStr);
if (is_bool($resArr) && !$resArr)
@ -743,9 +758,9 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object {
if (!isset($this->_documents)) {
$queryStr = "SELECT * FROM `tblDocuments` WHERE `folder` = " . $this->_id;
if ($orderby=="n") $queryStr .= " ORDER BY `name`";
elseif($orderby=="s") $queryStr .= " ORDER BY `sequence`";
elseif($orderby=="d") $queryStr .= " ORDER BY `date`";
if ($orderby && $orderby[0]=="n") $queryStr .= " ORDER BY `name`";
elseif($orderby && $orderby[0]=="s") $queryStr .= " ORDER BY `sequence`";
elseif($orderby && $orderby[0]=="d") $queryStr .= " ORDER BY `date`";
if($dir == 'desc')
$queryStr .= " DESC";
if(is_int($limit) && $limit > 0) {

View File

@ -1657,6 +1657,43 @@ fix php warning if workflow state doesn' have next transition
add method SeedDMS_Core_DatabaseAccess::setLogFp()
</notes>
</release>
<release>
<release>
<date>2019-05-03</date>
<time>07:31:17</time>
<version>
<release>5.1.11</release>
<api>5.1.11</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
???
</notes>
</release>
<release>
<date>2019-07-01</date>
<time>07:31:17</time>
<version>
<release>5.1.12</release>
<api>5.1.12</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
- parameter $orderby passed to SeedDMS_Core_Folder::getDocuments() and SeedDMS_Core_Folder::getSubFolders() can be a string, but only the first char is evaluated
- SeedDMS_Core_DMS::search() excepts parameters as array, added orderby
- add SeedDMS_Core_Folder::hasSubFolderByName()
- fix SeedDMS_Core_Folder::hasDocumentByName() which returned an int > 0 if documents
has been loaded before and even if the document searching for was not among them.
</notes>
</release>
<release>
<date>2017-02-28</date>
<time>06:34:50</time>

View File

@ -248,6 +248,7 @@
- enableVersionDeletion: allow to delete versions after approval
- enableVersionModification: allow to modify versions after approval
- enableDuplicateDocNames: allow duplicate names in a folder
- enableDuplicateSubFolderNames: allow duplicate names in a folder
- enableOwnerRevApp: XXX
- enableSelfRevApp: XXX
- presetExpirationDate: XXX
@ -260,6 +261,7 @@
enableVersionDeletion = "true"
enableVersionModification = "true"
enableDuplicateDocNames = "true"
enableDuplicateSubFolderNames = "true"
enableOwnerRevApp = "false"
enableSelfRevApp = "false"
presetExpirationDate = ""

View File

@ -36,24 +36,74 @@ QUICKSTART
===========
The fastes way to get SeedDMS running is by unpacking the archive
`seeddms-quickstart-x.y.z.tar.gz` into your webservers document root.
`seeddms-quickstart-x.y.z.tar.gz` on your webserver.
Let's assume you use seeddms-quickstart-5.1.10.tar.gz.
It will create a new directory `seeddms51x` containing everything you
need to run SeedDMS with sqlite3. Make sure that the subdіrectory
`seeddms51x/data`
and the configuration file `seeddms51/www/conf/settings.xml` is writeable
by your web server. All other directories must just be readable by your
web server. In the next step you need to adjust
the configuration file in `seeddms51/www/conf/settings.xml`. If you
are not afraid of xml files, then open it in your favorite text editor
and search for `/home/wwww-data`. Replace that part in any path found
with your document root. Alternatively, you can open the installer
with a browser at http://your-domain/seeddms51x/install/
It will first ask to unlock the installer by creating a file
`ENABLE_INSTALL_TOOL` in the diretory `seeddms51/www/conf/`. Change all
paths by replacing `/home/wwww-data` with your document root. Once done,
save it, remove the file `ENABLE_INSTALL_TOOL` and point your browser to
http://your-domain/seeddms51x/.
need to run SeedDMS with sqlite3.
Either let the document root of your web server point to the directory `www`
below `seeddms51x` or add an alias. For apache this could be like
Alias /seeddms51x /<some directory>/seeddms51x/www
Do not set the DocumentRoot to
the `seeddms51x` directory, because this will allow anybody to access
your `data` and `conf` directory. This is a major security risk.
Make sure that the subdіrectory `seeddms51x/data` and the configuration file
`seeddms51/conf/settings.xml` is writeable by your web server. All other
directories must just be readable by your web server.
In the next step you need to adjust the configuration file in
`seeddms51x/conf/settings.xml`. Open the file in your favorite text editor
and search for `/home/wwww-data`. Replace that part in any path found with your
base directory where you placed seeddms51x (e.g. /var/www/html/seeddms51x).
Alternatively, you can open the installer with a browser at
http://your-domain/install (if the document root points to
`seeddms51x/www`) or http://your-domain/seeddms51x/install/ (if you have
set an alias like described above).
It will first ask to unlock the installer by creating a file
`ENABLE_INSTALL_TOOL` in the diretory `seeddms51x/conf/`. Change all paths by
replacing `/home/wwww-data` with your base directory where you put seeddms51x.
Set httpRoot to '/' (if the document root points to`seeddms51x/www`) or
'/seeddms51x' (if you have set an alias like described above).
Once your configuration is done,
save it, remove the file `ENABLE_INSTALL_TOOL` and point your browser to
http://your-domain/ or http://your-domain/seeddms51x.
SECURITY CONSIDERATIONS
=======================
A crucial point when setting up SeedDMS is the propper placement of the
data directory. Do not place it below your document root as
configured in your web server! If you do so, there is good change that
attackers can easily access your documents with a regular browser.
If you can't place the data directory outside of document root, that either
restrict access to it with an appropriate .htaccess file or/and change
the `contentOffsetDir` in `settings.xml` to something random, but ensure it
is still a valid directory name. If you change contentOffsetDir then
do not forget to move `data/1048576` to `data/<your random name>`.
Example for .htaccess file in data directory
----------------------------------------------
```
# line below if for Apache 2.4
<ifModule mod_authz_core.c>
Require all denied
</ifModule>
# line below if for Apache 2.2
<ifModule !mod_authz_core.c>
deny from all
Satisfy All
</ifModule>
# section for Apache 2.2 and 2.4
<ifModule mod_autoindex.c>
IndexIgnore *
</ifModule>
```
UPDATING FROM A PREVIOUS VERSION OR SEEDDMS
=============================================

View File

@ -76,9 +76,10 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify {
* @param string $message key of string containing the body of the mail
* @param array $params list of parameters which replaces placeholder in
* the subject and body
* @param array $attachments list of attachments
* @return false or -1 in case of error, otherwise true
*/
function toIndividual($sender, $recipient, $subject, $message, $params=array()) { /* {{{ */
function toIndividual($sender, $recipient, $subject, $message, $params=array(), $attachments=array()) { /* {{{ */
if(is_object($recipient) && !strcasecmp(get_class($recipient), $this->_dms->getClassname('user')) && !$recipient->isDisabled() && $recipient->getEmail()!="") {
$to = $recipient->getEmail();
$lang = $recipient->getLanguage();
@ -106,8 +107,34 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify {
}
$message = getMLText("email_header", array(), "", $lang)."\r\n\r\n".getMLText($message, $params, "", $lang);
$message .= "\r\n\r\n".getMLText("email_footer", array(), "", $lang);
$message = getMLText("email_header", $params, "", $lang)."\r\n\r\n".getMLText($message, $params, "", $lang);
$message .= "\r\n\r\n".getMLText("email_footer", $params, "", $lang);
$mime = new Mail_mime(array('eol' => "\n"));
$mime->setTXTBody($message);
// $mime->setHTMLBody($bodyhtml);
if($attachments) {
foreach($attachments as $attachment) {
if(!$mime->addAttachment(
$attachment['file'],
$attachment['mimetype'],
isset($attachment['name']) ? $attachment['name'] : '',
isset($attachment['isfile']) ? $attachment['isfile'] : true
)) {
return false;
}
}
}
$message = $mime->get(array(
'text_encoding'=>'8bit',
'html_encoding'=>'8bit',
'head_charset'=>'utf-8',
'text_charset'=>'utf-8',
'html_charset'=>'utf-8'
));
$headers = array ();
$headers['From'] = $from;
@ -119,7 +146,9 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify {
$headers['Subject'] = substr($encoded_subject, strlen('Subject: '));
$headers['Date'] = date('r', time());
$headers['MIME-Version'] = "1.0";
$headers['Content-type'] = "text/plain; charset=utf-8";
// $headers['Content-type'] = "text/plain; charset=utf-8";
$hdrs = $mime->headers($headers);
$mail_params = array();
if($this->smtp_server) {
@ -146,13 +175,13 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify {
if (isset($GLOBALS['SEEDDMS_HOOKS']['mailqueue'])) {
foreach($GLOBALS['SEEDDMS_HOOKS']['mailqueue'] as $queueService) {
if(method_exists($queueService, 'queueMailJob')) {
$ret = $queueService->queueMailJob($mail_params, $to, $headers, getMLText($subject, $params, "", $lang), $message);
$ret = $queueService->queueMailJob($mail_params, $to, $hdrs, getMLText($subject, $params, "", $lang), $message);
if($ret !== null)
return $ret;
}
}
}
$result = $mail->send($to, $headers, $message);
$result = $mail->send($to, $hdrs, $message);
if (PEAR::isError($result)) {
return false;
} else {

View File

@ -165,6 +165,8 @@ class Settings { /* {{{ */
var $_enableVersionModification = false;
// enable/disable duplicate names of a document in a folder
var $_enableDuplicateDocNames = true;
// enable/disable duplicate names of a subfolder in a folder
var $_enableDuplicateSubFolderNames = true;
// override mimetype set by browser when uploading a file
var $_overrideMimeType = false;
// advanced access control lists
@ -712,6 +714,7 @@ class Settings { /* {{{ */
$this->_enableVersionDeletion = Settings::boolval($tab["enableVersionDeletion"]);
$this->_enableVersionModification = Settings::boolval($tab["enableVersionModification"]);
$this->_enableDuplicateDocNames = Settings::boolval($tab["enableDuplicateDocNames"]);
$this->_enableDuplicateSubFolderNames = Settings::boolval($tab["enableDuplicateSubFolderNames"]);
$this->_overrideMimeType = Settings::boolval($tab["overrideMimeType"]);
$this->_advancedAcl = Settings::boolval($tab["advancedAcl"]);
$this->_removeFromDropFolder = Settings::boolval($tab["removeFromDropFolder"]);
@ -1043,6 +1046,7 @@ class Settings { /* {{{ */
$this->setXMLAttributValue($node, "enableVersionDeletion", $this->_enableVersionDeletion);
$this->setXMLAttributValue($node, "enableVersionModification", $this->_enableVersionModification);
$this->setXMLAttributValue($node, "enableDuplicateDocNames", $this->_enableDuplicateDocNames);
$this->setXMLAttributValue($node, "enableDuplicateSubFolderNames", $this->_enableDuplicateSubFolderNames);
$this->setXMLAttributValue($node, "overrideMimeType", $this->_overrideMimeType);
$this->setXMLAttributValue($node, "advancedAcl", $this->_advancedAcl);
$this->setXMLAttributValue($node, "removeFromDropFolder", $this->_removeFromDropFolder);
@ -1492,7 +1496,7 @@ class Settings { /* {{{ */
}
// Check PHP version
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
if (version_compare(PHP_VERSION, '5.6.38') < 0) {
$result["php_version"] = array(
"status" => "versiontolow",
"type" => "error",
@ -1531,6 +1535,8 @@ class Settings { /* {{{ */
}
// Check for Log.php
// Do not check for Log anymore, because it is in the vendor directory
/*
if (!Settings::findInIncPath('Log.php')) {
$result["pear_log"] = array(
"status" => "notfound",
@ -1538,6 +1544,7 @@ class Settings { /* {{{ */
"suggestion" => "install_pear_package_log"
);
}
*/
// Check for HTTP/WebDAV/Server.php
if (!Settings::findInIncPath('HTTP/WebDAV/Server.php')) {

View File

@ -1231,6 +1231,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => '',
'settings_enableDuplicateDocNames' => '',
'settings_enableDuplicateDocNames_desc' => 'Allows to have duplicate document names in a folder.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => '',
'settings_enableEmail_desc' => 'Enable/disable automatic email notification',
'settings_enableFilterReceipt' => '',
@ -1498,6 +1500,9 @@ URL: [url]',
'sign_out' => 'تسجيل الخروج',
'sign_out_user' => 'تسجيل خروج مستخدم',
'sk_SK' => 'السلوفاكية',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'المساحة المستخدمة لمجلد البيانات',
'splash_added_to_clipboard' => 'ﺖﻣ ﺎﻠﻨﺴﺧ ﻒﻳ ﺎﻠﺣﺎﻔﻇﺓ',
'splash_add_access' => '',
@ -1592,6 +1597,7 @@ URL: [url]',
'status_revisor_removed' => '',
'status_unknown' => 'مجهول',
'storage_size' => 'حجم التخزين',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'ادخال موافقة',
'submit_login' => 'تسجيل الدخول',

View File

@ -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 (858)
// Translators: Admin (861)
$text = array(
'2_factor_auth' => '',
@ -1094,6 +1094,8 @@ $text = array(
'settings_enableDropUpload_desc' => '',
'settings_enableDuplicateDocNames' => 'Разреши еднакви имена на документи',
'settings_enableDuplicateDocNames_desc' => 'Разрешава да има еднакви имена на документи в папката.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Включи E-mail',
'settings_enableEmail_desc' => 'Включване/изключване автоматично уведомяване по email',
'settings_enableFilterReceipt' => '',
@ -1361,6 +1363,9 @@ $text = array(
'sign_out' => 'изход',
'sign_out_user' => '',
'sk_SK' => 'Словашки',
'sort_by_date' => 'Сортирай по дата"',
'sort_by_name' => 'Сортирай по име',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Размер на каталога с данните',
'splash_added_to_clipboard' => 'Добавено към клипборда',
'splash_add_access' => '',
@ -1455,6 +1460,7 @@ $text = array(
'status_revisor_removed' => '',
'status_unknown' => 'Неизвестен',
'storage_size' => 'Размер на хранилището',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'Утвърди',
'submit_login' => 'Влез',
@ -1631,7 +1637,7 @@ $text = array(
'workflow_summary' => 'Резюме за процес',
'workflow_transition_without_user_group' => '',
'workflow_user_summary' => 'Резюме за потребител',
'x_more_objects' => '',
'x_more_objects' => 'още [number] документа',
'year_view' => 'годишен изглед',
'yes' => 'Да',
'zh_CN' => 'Китайски (Китай)',

View File

@ -1099,6 +1099,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => '',
'settings_enableDuplicateDocNames' => '',
'settings_enableDuplicateDocNames_desc' => '',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Enable E-mail',
'settings_enableEmail_desc' => '',
'settings_enableFilterReceipt' => '',
@ -1366,6 +1368,9 @@ URL: [url]',
'sign_out' => 'desconnectar',
'sign_out_user' => '',
'sk_SK' => 'Eslovac',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Espai utilitzat a la carpeta de dades',
'splash_added_to_clipboard' => 'Emmagatzemat al portapapers',
'splash_add_access' => '',
@ -1460,6 +1465,7 @@ URL: [url]',
'status_revisor_removed' => '',
'status_unknown' => 'Desconegut',
'storage_size' => 'Storage size',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'Enviar aprovació',
'submit_login' => 'Connectat',

View File

@ -1310,6 +1310,8 @@ Jméno: [username]
'settings_enableDropUpload_desc' => 'Povolit / zakázat pokládácí prostor na stránce \'Zobrazení složek\' pro upload souborů pomocí Drag&Drop.',
'settings_enableDuplicateDocNames' => 'Povolit duplicitu názvů dokumentů',
'settings_enableDuplicateDocNames_desc' => 'Povolit duplicitu názvů dokumentů ve složce',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Zapnout E-mail',
'settings_enableEmail_desc' => 'Zapne / Vypne automatická e-mailová upozornění',
'settings_enableFilterReceipt' => 'Filtrování vlastníka, recenzenta, ... ze seznamu přijetí',
@ -1577,6 +1579,9 @@ Jméno: [username]
'sign_out' => 'Odhlásit',
'sign_out_user' => 'Odhlášení uživatele',
'sk_SK' => 'Slovenština',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Použité místo pro data složky',
'splash_added_to_clipboard' => 'Přidáno do schránky',
'splash_add_access' => 'Přidáno Přístupové právo',
@ -1671,6 +1676,7 @@ Jméno: [username]
'status_revisor_removed' => 'Kontrolor odstraněn ze seznamu',
'status_unknown' => 'Neznámý',
'storage_size' => 'Velikost úložiště',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'Poslán tajný kód',
'submit_approval' => 'Poslat ke schválení',
'submit_login' => 'Přihlásit se',

View File

@ -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 (2654), dgrutsch (22)
// Translators: Admin (2687), dgrutsch (22)
$text = array(
'2_factor_auth' => '2-Faktor Authentifizierung',
@ -48,7 +48,7 @@ URL: [url]',
'action_approve' => 'Freigeben',
'action_complete' => 'Komplett',
'action_is_complete' => 'Ist komplett',
'action_is_not_complete' => 'Ist Nicht komplett',
'action_is_not_complete' => 'Ist nicht komplett',
'action_reject' => 'Ablehnen',
'action_review' => 'Prüfen',
'action_revise' => 'Erneut prüfen',
@ -86,12 +86,12 @@ URL: [url]',
'all_documents' => 'Alle Dokumente',
'all_pages' => 'Alle',
'all_users' => 'Alle Benutzer',
'already_subscribed' => 'Bereits aboniert',
'already_subscribed' => 'Bereits abonniert',
'and' => 'und',
'apply' => 'Anwenden',
'approvals_accepted' => '[no_approvals] Freigaben',
'approvals_and_reviews_accepted' => '[no_approvals] Freigaben und [no_reviews] Prüfungen',
'approvals_and_reviews_not_touched' => '[no_approvals] offene Freigaben und [no_reviews] offenen Prüfungen',
'approvals_and_reviews_not_touched' => '[no_approvals] offene Freigaben und [no_reviews] offene Prüfungen',
'approvals_and_reviews_rejected' => '[no_approvals] abgelehnte Freigaben und [no_reviews] abgelehnte Prüfungen',
'approvals_not_touched' => '[no_approvals] offene Freigaben',
'approvals_rejected' => '[no_approvals] abgelehnte Freigaben',
@ -131,7 +131,7 @@ URL: [url]',
'approval_update_failed' => 'Störung bei der Aktualisierung des Berechtigungsstatus. Aktualisierung gescheitert',
'approvers' => 'Freigebender',
'approver_already_assigned' => 'Freigeber bereits zugewiesen',
'approver_already_removed' => 'Freigeber wurde bereits aus dem Freigabevorgang entfernt oder hat die Freigabe bereits abgeschlossen',
'approver_already_removed' => 'Freigeber wurde bereits aus dem Freigabevorgang entfernt oder hat die Freigabe bereits abgeschlossen',
'april' => 'April',
'archive' => 'Archiv',
'archive_creation' => 'Archiv erzeugen',
@ -255,7 +255,7 @@ URL: [url]',
'choose_attrdefgroup' => 'Attributgruppe wählen',
'choose_category' => 'Kategorie wählen',
'choose_group' => 'Gruppe wählen',
'choose_role' => 'Role wählen',
'choose_role' => 'Rolle wählen',
'choose_target_category' => 'Kategorie wählen',
'choose_target_document' => 'Dokument wählen',
'choose_target_file' => 'Datei wählen',
@ -276,7 +276,7 @@ URL: [url]',
'comment_for_current_version' => 'Kommentar zur aktuellen Version',
'configure_extension' => 'Erweiterung konfigurieren',
'confirm_clear_cache' => 'Wollen Sie wirklich den Cache löschen? Dies entfernt alle vorberechneten Vorschaubilder.',
'confirm_create_fulltext_index' => 'Ja, Ich möchte den Volltextindex neu erzeugen!.',
'confirm_create_fulltext_index' => 'Ja, Ich möchte den Volltext-Index neu erzeugen!.',
'confirm_move_document' => 'Dokument wirklich verschieben?',
'confirm_move_folder' => 'Ordner wirklich verschieben?',
'confirm_pwd' => 'Passwort-Bestätigung',
@ -290,7 +290,7 @@ URL: [url]',
'confirm_rm_folder_files' => 'Möchten Sie wirklich alle Dateien und Unterordner des Ordner "[foldername]" löschen?<br>Vorsicht: Diese Operation kann nicht rückgängig gemacht werden.',
'confirm_rm_group' => 'Möchten Sie wirklich die Gruppe "[groupname]" löschen?<br />Beachten Sie, dass diese Operation nicht rückgängig gemacht werden kann.',
'confirm_rm_log' => 'Möchten Sie wirklich die Log-Datei "[logname]" löschen?<br />Beachten Sie, dass diese Operation nicht rückgängig gemacht werden kann.',
'confirm_rm_transmittal' => 'Bitte bestätigen Sie as Löschen der Dokumentenliste.',
'confirm_rm_transmittal' => 'Bitte bestätigen Sie das Löschen der Dokumentenliste.',
'confirm_rm_transmittalitem' => 'Löschen bestätigen',
'confirm_rm_user' => 'Möchten Sie wirklich den Benutzer "[username]" löschen?<br />Beachten Sie, dass diese Operation nicht rückgängig gemacht werden kann.',
'confirm_rm_user_from_processes' => 'Möchten Sie wirklich den Benutzer "[username]" aus allen Prozessen löschen?<br />Beachten Sie, dass dies möglicherweise in der Freigabe von Dokumenten resultiert, wenn der Benutzer der einzige oder letzte Prüfer ist.',
@ -303,8 +303,8 @@ URL: [url]',
'converter_new_mimetype' => 'Neuer Mime-Type',
'copied_to_checkout_as' => 'Datei am [date] in den Checkout-Space als \'[filename]\' kopiert.',
'create_download_link' => 'Erzeuge Download Link',
'create_fulltext_index' => 'Erzeuge Volltextindex',
'create_fulltext_index_warning' => 'Sie möchten den Volltextindex neu erzeugen. Dies kann beträchtlich Zeit in Anspruch nehmen und Gesamtleistung Ihres System beeinträchtigen. Bestätigen Sie bitte diese Operation.',
'create_fulltext_index' => 'Erzeuge Volltext-Index',
'create_fulltext_index_warning' => 'Sie möchten den Volltext-Index neu erzeugen. Dies kann beträchtlich Zeit in Anspruch nehmen und Gesamtleistung Ihres System beeinträchtigen. Bestätigen Sie bitte diese Operation.',
'creation_date' => 'Erstellt am',
'cs_CZ' => 'Tschechisch',
'current_password' => 'Aktuelles Passwort',
@ -332,7 +332,7 @@ URL: [url]',
'documentcontent' => 'Dokumentenversion',
'documents' => 'Dokumente',
'documents_checked_out_by_you' => 'Von mir ausgecheckte Dokumente',
'documents_expired' => 'Abgelaufende Dokumente',
'documents_expired' => 'Abgelaufene Dokumente',
'documents_in_process' => 'Dokumente in Bearbeitung',
'documents_locked' => 'Gesperrte Dokumente',
'documents_locked_by_you' => 'Von mir gesperrte Dokumente',
@ -345,7 +345,7 @@ URL: [url]',
'documents_to_revise' => 'Erneute Prüfung erforderlich',
'documents_to_trigger_workflow' => 'Dokumente im Workflow',
'documents_user_draft' => 'Entwürfe',
'documents_user_expiration' => 'Abgelaufende Dokumente',
'documents_user_expiration' => 'Abgelaufene Dokumente',
'documents_user_needs_correction' => 'Dokumente, die korrigiert werden müssen',
'documents_user_no_reception' => 'Dokumente ohne Empfangsbestätigung',
'documents_user_obsolete' => 'Veraltete Dokumente',
@ -497,7 +497,7 @@ Der Link ist bis zum [valid] gültig.
'en_GB' => 'Englisch (GB)',
'equal_transition_states' => 'Start- und Endstatus ѕind gleich',
'error' => 'Fehler',
'error_add_aro' => 'Fehler beim Hinzufügen des Zugriffsobjekt',
'error_add_aro' => 'Fehler beim Hinzufügen des Zugriffsobjekts',
'error_add_permission' => 'Fehler beim Hinzufügen der Berechtigung',
'error_cleared_cache' => 'Fehler beim Löschen des Cache',
'error_edit_task' => 'Fehler beim Speichern der Task',
@ -522,7 +522,7 @@ Der Link ist bis zum [valid] gültig.
'exclude_items' => 'Einträge auslassen',
'expired' => 'abgelaufen',
'expired_at_date' => 'Abgelaufen am [datetime]',
'expired_documents' => 'Abgelaufende Dokumente',
'expired_documents' => 'Abgelaufene Dokumente',
'expires' => 'Ablaufdatum',
'expire_by_date' => 'Ablauf nach Datum',
'expire_in_1d' => 'Ablauf in 1 Tag',
@ -613,7 +613,7 @@ URL: [url]',
'from' => 'von',
'fr_FR' => 'Französisch',
'fullsearch' => 'Volltext',
'fullsearch_hint' => 'Volltextindex benutzen',
'fullsearch_hint' => 'Volltext-Index benutzen',
'fulltextsearch_disabled' => 'Volltext-Index ist ausgeschaltet',
'fulltext_converters' => 'Index Dokumentenumwandlung',
'fulltext_info' => 'Volltext-Index Info',
@ -835,7 +835,7 @@ URL: [url]',
'new_subfolder_email_subject' => '[sitename]: [folder_name] - Neuer Ordner',
'new_user_image' => 'Neues Bild',
'next_state' => 'Neuer Status',
'nl_NL' => 'Holländisch',
'nl_NL' => 'Niederländisch',
'no' => 'Nein',
'notify_added_email' => 'Benachrichtigung per Mail wurde eingerichtet',
'notify_added_email_body' => 'Added to notification list
@ -909,22 +909,22 @@ URL: [url]',
'password_expired' => 'Passwort ist abgelaufen',
'password_expires_in_days' => 'Passwort läuft in %s Tagen ab.',
'password_forgotten' => 'Passwort vergessen',
'password_forgotten_email_body' => 'Sehr geehrter Anwender von SeedDMS,
wir haben einen Anfrage zum Zurücksetzen Ihres Passworts erhalten.
Dies kann durch den folgenden Link erfolgen:
[url_prefix]out/out.ChangePassword.php?hash=[hash]
Sollen Sie danach immer noch Problem bei der Anmeldung haben, dann kontaktieren Sie bitte Ihren Adminstrator',
'password_forgotten_email_body' => 'Sehr geehrter Anwender von SeedDMS,
wir haben einen Anfrage zum Zurücksetzen Ihres Passworts erhalten.
Dies kann durch den folgenden Link erfolgen:
[url_prefix]out/out.ChangePassword.php?hash=[hash]
Sollen Sie danach immer noch Probleme bei der Anmeldung haben, dann kontaktieren Sie bitte Ihren Adminstrator',
'password_forgotten_email_subject' => '[sitename]: Passwort vergessen',
'password_forgotten_send_hash' => 'Anweisungen zum weiteren Vorgehen wurden an die E-Mail Adresse des Benutzers versandt',
'password_forgotten_text' => 'Füllen Sie bitte untenstehendes Formular aus. Weitere Anweisungen erhalten Sie dann in einer E-Mail die an Sie gesandt wird',
'password_forgotten_title' => 'Passwort gesendet',
'password_repeat' => 'Passwort wiederholen',
'password_send' => 'Passwort verschickt',
'password_send_text' => 'Ihr neues Passwort wurde an die angegebene E-Mail-Adresse versandt, wenn ein Benutzer mit diesem Login und dieser E-Mail-Adresse exitiert. Sollten Sie innerhalb der nächsten Minuten keine E-Mail bekommen, dann überprüfen Sie nochmal die Angaben und wiederholen Sie den Vorgang.',
'password_send_text' => 'Ihr neues Passwort wurde an die angegebene E-Mail-Adresse versandt, wenn ein Benutzer mit diesem Login und dieser E-Mail-Adresse existiert. Sollten Sie innerhalb der nächsten Minuten keine E-Mail bekommen, dann überprüfen Sie nochmal die Angaben und wiederholen Sie den Vorgang.',
'password_strength' => 'Passwortstärke',
'password_strength_insuffient' => 'Ungenügend starkes Passwort',
'password_wrong' => 'Falsches Passwort',
@ -1167,7 +1167,7 @@ URL: [url]',
'search_mode_and' => 'alle Begriffe',
'search_mode_documents' => 'Nur Dokumente',
'search_mode_folders' => 'Nur Ordner',
'search_mode_or' => 'min. ein Begriff',
'search_mode_or' => 'mind. ein Begriff',
'search_no_results' => 'Die Suche lieferte leider keine Treffer.',
'search_query' => 'Suchbegriffe',
'search_report' => 'Die Suche lieferte [doccount] Dokumente und [foldercount] Ordner in [searchtime] Sek.',
@ -1213,7 +1213,7 @@ Name: [username]
[comment]',
'send_login_data_subject' => '[sitename]: [login] - Ihre Login-Daten',
'send_test_mail' => 'Sende Test-Email',
'send_test_mail' => 'Sende Test-E-mail',
'september' => 'September',
'sequence' => 'Reihenfolge',
'seq_after' => 'Nach "[prevname]"',
@ -1252,7 +1252,7 @@ Name: [username]
'settings_checkOutDir' => 'Verzeichnis für ausgecheckte Dokumente',
'settings_checkOutDir_desc' => 'Dies ist das Verzeichnis, in das Dokumenteninhalte bei einem Check out kopiert werden. Wenn dieses Verzeichnis für die Benutzer erreichbar ist, können die Dateien editiert und dann wieder eingecheckt werden.',
'settings_cmdTimeout' => 'Timeout für externe Programme',
'settings_cmdTimeout_desc' => 'Diese Zeit in Sekunden legt fest, wann ein externes Programm (z.B. für die Erstellung des Volltextindex) beendet wird.',
'settings_cmdTimeout_desc' => 'Diese Zeit in Sekunden legt fest, wann ein externes Programm (z.B. für die Erstellung des Volltext-Index) beendet wird.',
'settings_contentDir' => 'Content-Verzeichnis',
'settings_contentDir_desc' => 'Verzeichnis, in dem die Dokumente gespeichert werden. Sie sollten ein Verzeichnis wählen, das nicht durch den Web-Server erreichbar ist.',
'settings_contentOffsetDir' => 'Content Offset Directory',
@ -1320,7 +1320,9 @@ Name: [username]
'settings_enableDropUpload_desc' => 'Ein/Ausschalten des Bereichs auf der \'View Folder\' Seite zum Hochladen von Dateien per Drag&Drop.',
'settings_enableDuplicateDocNames' => 'Erlaube doppelte Dokumentennamen',
'settings_enableDuplicateDocNames_desc' => 'Erlaube doppelte Dokumentennamen in einem Ordner.',
'settings_enableEmail' => 'E-mail aktivieren',
'settings_enableDuplicateSubFolderNames' => 'Erlaube doppelte Namen von Unterordnern',
'settings_enableDuplicateSubFolderNames_desc' => 'Erlaube doppelte Namen von Unterordnern in einem Ordner.',
'settings_enableEmail' => 'E-Mail aktivieren',
'settings_enableEmail_desc' => 'Automatische E-Mail-Benachrichtigung ein-/ausschalten',
'settings_enableFilterReceipt' => 'Besitzer, Prüfer, ... aus Empfängerliste filtern',
'settings_enableFilterReceipt_desc' => 'Anwählen, um einige Empfänger aus der Liste zu entfernen, wenn diese als Mitglieder einer Gruppe eingetragen werden.',
@ -1437,7 +1439,7 @@ Name: [username]
'settings_loginFailure_desc' => 'Konto nach n Anmeldefehlversuchen sperren.',
'settings_luceneClassDir' => 'Lucene SeedDMS Verzeichnis',
'settings_luceneClassDir_desc' => 'Pfad zum PEAR-Paket SeedDMS_Lucene (optional). Lassen Sie diese Einstellung leer, wenn SeedDMS_Lucene ohnehin von PHP gefunden wird, weil es beispielweise im \'Extra PHP Include-Path\' installiert ist.',
'settings_luceneDir' => 'Verzeichnis für Volltextindex',
'settings_luceneDir' => 'Verzeichnis für Volltext-Index',
'settings_luceneDir_desc' => 'Verzeichnis in dem der Lucene-Index abgelegt wird.',
'settings_maxDirID' => 'Max. Anzahl Unterverzeichnisse',
'settings_maxDirID_desc' => 'Maximale Anzahl der Unterverzeichnisse in einem Verzeichnis. Ändern Sie diesen Wert nur, wenn Sie genau wissen was Sie tun! Voreingestellt ist 0.',
@ -1520,9 +1522,9 @@ Name: [username]
'settings_smtpPort' => 'SMTP Server Port',
'settings_smtpPort_desc' => 'SMTP Server Port, voreingestellt ist 25',
'settings_smtpSendFrom' => 'Absenderadresse',
'settings_smtpSendFrom_desc' => 'Absenderadresse für herausgehende Mails',
'settings_smtpSendTestMail' => 'Sende Testmail',
'settings_smtpSendTestMail_desc' => 'Verschickte eine Testmail, um die akuelle Konfiguration zu testen.',
'settings_smtpSendFrom_desc' => 'Absenderadresse für herausgehende E-Mails',
'settings_smtpSendTestMail' => 'Sende Test-E-Mail',
'settings_smtpSendTestMail_desc' => 'Verschickte eine Test-E-Mail, um die akuelle Konfiguration zu testen.',
'settings_smtpServer' => 'SMTP Server-Hostname',
'settings_smtpServer_desc' => 'SMTP Server-Hostname',
'settings_smtpUser' => 'SMTP Server User',
@ -1587,6 +1589,9 @@ Name: [username]
'sign_out' => 'Abmelden',
'sign_out_user' => 'Benutzer abmelden',
'sk_SK' => 'Slovakisch',
'sort_by_date' => 'Nach Datum sortieren',
'sort_by_name' => 'Nach Name sortieren',
'sort_by_sequence' => 'Nach Reihenfolge sortieren',
'space_used_on_data_folder' => 'Benutzter Plattenplatz',
'splash_added_to_clipboard' => 'Der Zwischenablage hinzugefügt',
'splash_add_access' => 'Zugriffsrecht hinzugefügt',
@ -1681,6 +1686,7 @@ Name: [username]
'status_revisor_removed' => 'Wiederholungsprüfer von Liste entfernt',
'status_unknown' => 'unbekannt',
'storage_size' => 'Speicherverbrauch',
'subfolder_duplicate_name' => 'Doppelter Unterordnername',
'submit_2_fact_auth' => 'Schlüssel speichern',
'submit_approval' => 'Freigabe hinzufügen',
'submit_login' => 'Anmelden',
@ -1714,7 +1720,7 @@ Name: [username]
'task_name' => 'Name',
'task_next_run' => 'Nächste Ausführung',
'temp_jscode' => 'Temporärer Javascript-Code',
'testmail_body' => 'Diese Mail ist lediglich zum Test der Mail-Konfiguration von SeedDMS',
'testmail_body' => 'Diese Mail ist lediglich zum Test der E-Mail-Konfiguration von SeedDMS',
'testmail_subject' => 'Test Mail',
'theme' => 'Aussehen',
'thursday' => 'Donnerstag',
@ -1794,7 +1800,7 @@ URL: [url]',
'update' => 'Aktualisieren',
'update_approvers' => 'Liste der Freigebenden aktualisieren',
'update_document' => 'Aktualisieren',
'update_fulltext_index' => 'Aktualisiere Volltextindex',
'update_fulltext_index' => 'Aktualisiere Volltext-Index',
'update_info' => 'Informationen zur Aktualisierung',
'update_locked_msg' => 'Dieses Dokument wurde gesperrt<p>Die Sperrung wurde von <a href="mailto:[email]">[username]</a> eingerichtet.<br>',
'update_recipients' => 'Liste der Empfänger aktualisieren',

View File

@ -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 (280)
// Translators: Admin (281)
$text = array(
'2_factor_auth' => '',
@ -1105,6 +1105,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => '',
'settings_enableDuplicateDocNames' => '',
'settings_enableDuplicateDocNames_desc' => '',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => '',
'settings_enableEmail_desc' => '',
'settings_enableFilterReceipt' => '',
@ -1372,8 +1374,11 @@ URL: [url]',
'sign_out' => 'Αποσύνδεση',
'sign_out_user' => 'Αποσύνδεση χρήστη',
'sk_SK' => 'Σλοβάκικα',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => '',
'splash_added_to_clipboard' => '',
'splash_added_to_clipboard' => 'Προστέθηκε στο clipboard',
'splash_add_access' => '',
'splash_add_attribute' => '',
'splash_add_group' => '',
@ -1466,6 +1471,7 @@ URL: [url]',
'status_revisor_removed' => '',
'status_unknown' => '',
'storage_size' => '',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => '',
'submit_login' => '',

View File

@ -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 (1773), archonwang (3), dgrutsch (9), netixw (14)
// Translators: Admin (1779), archonwang (3), dgrutsch (9), netixw (14)
$text = array(
'2_factor_auth' => '2-factor authentication',
@ -1315,6 +1315,8 @@ Name: [username]
'settings_enableDropUpload_desc' => 'Enable/Disable the drop area on the \'View Folder\' page for uploading files by Drag&Drop.',
'settings_enableDuplicateDocNames' => 'Allow duplicate document names',
'settings_enableDuplicateDocNames_desc' => 'Allows to have duplicate document names in a folder.',
'settings_enableDuplicateSubFolderNames' => 'Allow duplicat subfolder names',
'settings_enableDuplicateSubFolderNames_desc' => 'Allows to have duplicate subfolder names in a folder.',
'settings_enableEmail' => 'Enable E-mail',
'settings_enableEmail_desc' => 'Enable/disable automatic email notification',
'settings_enableFilterReceipt' => 'Filter out owner, reviewer, ... from reception list',
@ -1582,6 +1584,9 @@ Name: [username]
'sign_out' => 'Sign out',
'sign_out_user' => 'Sign out user',
'sk_SK' => 'Slovak',
'sort_by_date' => 'Sort by date',
'sort_by_name' => 'Sort by name',
'sort_by_sequence' => 'Sort by sequence',
'space_used_on_data_folder' => 'Space used on data folder',
'splash_added_to_clipboard' => 'Added to clipboard',
'splash_add_access' => 'Access right added',
@ -1676,6 +1681,7 @@ Name: [username]
'status_revisor_removed' => 'Revisor removed from list',
'status_unknown' => 'Unknown',
'storage_size' => 'Storage size',
'subfolder_duplicate_name' => 'Duplicate subfolder name',
'submit_2_fact_auth' => 'Save secret',
'submit_approval' => 'Submit approval',
'submit_login' => 'Sign in',

View File

@ -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 (1111), angel (123), francisco (2), jaimem (14)
// Translators: acabello (20), Admin (1114), angel (123), francisco (2), jaimem (14)
$text = array(
'2_factor_auth' => '',
@ -1246,6 +1246,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => 'Habilite/Deshabilite el área de drop en la pagina \'\'Ver folder\' para subir archivos por Drag&Drop',
'settings_enableDuplicateDocNames' => 'Permite tener nombres de documento duplicados',
'settings_enableDuplicateDocNames_desc' => 'Permite tener un nombre de documento duplicado en una carpeta.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Habilitar E-mail',
'settings_enableEmail_desc' => 'Habilitar/Deshabilitar notificación automática por correo electrónico',
'settings_enableFilterReceipt' => '',
@ -1312,8 +1314,8 @@ URL: [url]',
'settings_enableVersionModification_desc' => 'Habilitar/Deshabilitar la modificación de versiones de documentos por parte de usuarios después de añadir una nueva versión. El administrador siempre podrá modificar la versión después de añadida.',
'settings_enableWebdavReplaceDoc' => 'Reemplaza documento al guardar',
'settings_enableWebdavReplaceDoc_desc' => 'Si se habilita, al guardar una nueva versión de un documento reemplaza al viejo documento en lugar de crear un nueva versión. Esto solo aplica si el usuario mimetype Yelp nombre del archivo son iguales a la última versión. Esto es útil cuando la aplicación guarda automáticamente un documento a intervalos fijos.',
'settings_enableXsendfile' => '',
'settings_enableXsendfile_desc' => '',
'settings_enableXsendfile' => 'Usar el módulo xsendfile de apache',
'settings_enableXsendfile_desc' => 'Si está opción esta activa y el módulo de apache xsendfile está instalado, se usará para la entrega de imagenes',
'settings_encryptionKey' => 'Clave de cifrado',
'settings_encryptionKey_desc' => 'Esta cadena se utiliza para crear un identificador único añadido como campo oculto a formularios para prevenir ataques CSRF.',
'settings_error' => 'Error',
@ -1513,6 +1515,9 @@ URL: [url]',
'sign_out' => 'Salir',
'sign_out_user' => 'Desconectar usuario',
'sk_SK' => 'Slovaco',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Espacio usado en la carpeta de datos',
'splash_added_to_clipboard' => 'Agregado al portapapeles',
'splash_add_access' => '',
@ -1607,6 +1612,7 @@ URL: [url]',
'status_revisor_removed' => '',
'status_unknown' => 'Desconocido',
'storage_size' => 'Tamaño de almacenamiento',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'Enviar aprobación',
'submit_login' => 'Conectar',

View File

@ -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 (1091), jeromerobert (50), lonnnew (9), Oudiceval (739)
// Translators: Admin (1091), jeromerobert (50), lonnnew (9), Oudiceval (750)
$text = array(
'2_factor_auth' => 'Authentification forte',
@ -501,7 +501,7 @@ Le lien est valide jusquau [valid].
'error_add_aro' => '',
'error_add_permission' => 'Erreur lors de lajout de permission',
'error_cleared_cache' => 'Erreur lors du vidage du cache',
'error_edit_task' => '',
'error_edit_task' => 'Erreur lors de la modification de la tâche',
'error_extension_getlist' => 'Erreur lors de lobtention de la liste des extensions depuis le dépôt',
'error_importfs' => 'Erreur lors de limport depuis le système de fichiers',
'error_no_document_selected' => 'Aucun document sélectionné',
@ -687,7 +687,7 @@ URL: [url]',
'invalid_link_id' => 'Identifiant de lien invalide',
'invalid_request_token' => 'Jeton de demande incorrect',
'invalid_review_status' => 'Statut de vérification invalide',
'invalid_sequence' => 'Valeur de séquence invalide',
'invalid_sequence' => 'Position invalide',
'invalid_status' => 'Statut de document invalide',
'invalid_target_doc_id' => 'Identifiant de document cible invalide',
'invalid_target_folder' => 'Identifiant de dossier cible invalide',
@ -761,7 +761,7 @@ URL: [url]',
'logout' => 'Déconnexion',
'log_management' => 'Gestion des fichiers journaux',
'lo_LA' => 'Laotien',
'malformed_expiration_date' => '',
'malformed_expiration_date' => 'Format de date dexpiration invalide',
'manager' => 'Responsable',
'manager_of_group' => 'Vous êtes le gestionnaire de ce groupe',
'mandatory_approvergroups' => 'Obligatoire : groupes de valideurs',
@ -891,7 +891,7 @@ URL: [url]',
'october' => 'Octobre',
'old' => 'Ancien',
'only_jpg_user_images' => 'Images d\'utilisateur au format .jpg seulement',
'order_by_sequence_off' => 'Le tri par séquence est désactivé dans les préférences. Si vous souhaitez que ce paramètre prenne effet, vous devez l\'activer.',
'order_by_sequence_off' => 'Le tri par position est désactivé dans les préférences. Si vous souhaitez que ce paramètre prenne effet, vous devez lactiver.',
'original_filename' => 'Nom de fichier original',
'overall_indexing_progress' => 'Progression globale de lindexation',
'owner' => 'Propriétaire',
@ -982,7 +982,7 @@ URL : [url]',
'reception_noaction' => 'Aucune action',
'reception_rejected' => 'Réception rejetée',
'recipients' => 'Destinataires',
'recipient_already_removed' => '',
'recipient_already_removed' => 'Le destinataire a déjà été supprimé ou a accusé réception.',
'redraw' => 'Redessiner',
'refresh' => 'Actualiser',
'rejected' => 'Rejeté',
@ -1299,6 +1299,8 @@ Nom : [username]
'settings_enableDropUpload_desc' => 'Active/désactive la zone de glisser-déposer sur la page dun dossier afin dy déposer des fichiers.',
'settings_enableDuplicateDocNames' => 'Autoriser plusieurs documents de même nom',
'settings_enableDuplicateDocNames_desc' => 'Autorise plusieurs documents de même nom dans un même dossier.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'E-mails',
'settings_enableEmail_desc' => 'Active/désactive la notification automatique par e-mail',
'settings_enableFilterReceipt' => '',
@ -1333,8 +1335,8 @@ Nom : [username]
'settings_enableOwnerRevApp_desc' => 'Activer cette option pour ajouter le propriétaire du document à la liste des examinateurs/approbateurs et pour les transitions de workflow.',
'settings_enablePasswordForgotten' => 'Activer Mot de passe oublié',
'settings_enablePasswordForgotten_desc' => 'Si vous voulez permettre à l\'utilisateur de définir un nouveau mot de passe et l\'envoyer par mail, cochez cette option.',
'settings_enableReceiptReject' => '',
'settings_enableReceiptReject_desc' => '',
'settings_enableReceiptReject' => 'Activer le rejet de réceptions',
'settings_enableReceiptReject_desc' => 'Activer cette option pour permettre de rejeter des réceptions.',
'settings_enableReceiptWorkflow' => 'Activer la réception de document',
'settings_enableReceiptWorkflow_desc' => 'Activer cette option pour permettre de confirmer la réception de document dans le workflow.',
'settings_enableRecursiveCount' => 'Décompte récursif des documents/dossiers',
@ -1509,7 +1511,7 @@ Nom : [username]
'settings_sortFoldersDefault' => 'Méthode de tri par défaut des dossiers',
'settings_sortFoldersDefault_desc' => 'Ceci définit les méthodes de tri pour les dossiers et documents dans la vue du dossier.',
'settings_sortFoldersDefault_val_name' => 'Par nom',
'settings_sortFoldersDefault_val_sequence' => 'Par séquence',
'settings_sortFoldersDefault_val_sequence' => 'Par position',
'settings_sortFoldersDefault_val_unsorted' => 'Non trié',
'settings_sortUsersInList' => 'Tri des utilisateurs',
'settings_sortUsersInList_desc' => 'Définit si les utilisateurs dans les menus de sélection sont triés par identifiant ou par nom complet',
@ -1566,6 +1568,9 @@ Nom : [username]
'sign_out' => 'Déconnexion',
'sign_out_user' => 'Déconnecter l\'utilisateur',
'sk_SK' => 'Slovaque',
'sort_by_date' => 'Trier par date',
'sort_by_name' => 'Trier par nom',
'sort_by_sequence' => 'Trier par position',
'space_used_on_data_folder' => 'Espace utilisé dans le répertoire de données',
'splash_added_to_clipboard' => 'Ajouté au presse-papier',
'splash_add_access' => 'Droits daccès ajoutés',
@ -1660,6 +1665,7 @@ Nom : [username]
'status_revisor_removed' => 'Réviseur retiré de la liste',
'status_unknown' => 'Inconnu',
'storage_size' => 'Taille occupée',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'Enregistrer la clé secrète',
'submit_approval' => 'Soumettre approbation',
'submit_login' => 'Connexion',

View File

@ -1267,6 +1267,8 @@ Internet poveznica: [url]',
'settings_enableDropUpload_desc' => 'Omogući/onemogući prostor za ubacivanje na \'Vidi mapu\' stranici za učitavanje datoteka "Povuci i ispusti" postupkom.',
'settings_enableDuplicateDocNames' => 'Omogući dvostruke nazive dokumenata',
'settings_enableDuplicateDocNames_desc' => 'Omogućuje da u mapi imate dvostruke nazive dokumenata.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Omogući E-mail',
'settings_enableEmail_desc' => 'Omogući/onemogući automatsku email obavijest',
'settings_enableFilterReceipt' => '',
@ -1534,6 +1536,9 @@ Internet poveznica: [url]',
'sign_out' => 'Odjava',
'sign_out_user' => 'Odjavi korisnika',
'sk_SK' => 'Slovački',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Prostor iskorišten na podatkovnoj mapi',
'splash_added_to_clipboard' => 'Dodano u međuspremnik',
'splash_add_access' => '',
@ -1628,6 +1633,7 @@ Internet poveznica: [url]',
'status_revisor_removed' => 'Revizor uklonjen s liste',
'status_unknown' => 'Nepoznato',
'storage_size' => 'Veličina pohrane',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'Pošaljite odobrenje',
'submit_login' => 'PRIJAVI SE',

View File

@ -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 (631), ribaz (1036)
// Translators: Admin (632), ribaz (1036)
$text = array(
'2_factor_auth' => 'Kétfaktoros azonosítás',
@ -1245,6 +1245,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => 'Be/Ki kapcsolja a \'Mappa nézet\' oldalon a fogd és vidd feltöltéshez tartozó területetet',
'settings_enableDuplicateDocNames' => 'Azonos dokumentum név engedélyezése',
'settings_enableDuplicateDocNames_desc' => 'Engedélyezi az azonos dokumentum neveket egy mappában.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Email engedélyezése',
'settings_enableEmail_desc' => 'Engedélyezi/tiltja az automatikus email értesítést',
'settings_enableFilterReceipt' => '',
@ -1512,6 +1514,9 @@ URL: [url]',
'sign_out' => 'Kijelentkezés',
'sign_out_user' => 'Kijelentkezés',
'sk_SK' => 'Szlovák',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Használt terület az adat mappában',
'splash_added_to_clipboard' => 'Vágólaphoz hozzáadva',
'splash_add_access' => '',
@ -1606,6 +1611,7 @@ URL: [url]',
'status_revisor_removed' => '',
'status_unknown' => 'Ismeretlen',
'storage_size' => 'Tároló mérete',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'Jóváhagyás küldése',
'submit_login' => 'Bejelentkezés',
@ -1668,7 +1674,7 @@ URL: [url]',
'toggle_manager' => 'Kulcs kezelő',
'toggle_qrcode' => '',
'to_before_from' => 'A lejárati dátum nem előzheti meg a kezdési dátumot',
'transfer_document' => '',
'transfer_document' => 'Tulajdonos váltás',
'transfer_no_read_access' => '',
'transfer_no_write_access' => '',
'transfer_objects' => 'Adatok átadása',

View File

@ -1279,6 +1279,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => 'Abilita/disabilita l\'area di rilascio nella pagina \'Vista cartella\' per caricare i files con drag&drop (trascina e rilascia).',
'settings_enableDuplicateDocNames' => 'Permetti documenti con lo stesso nome',
'settings_enableDuplicateDocNames_desc' => 'Permetti documenti con lo stesso nome nella stessa cartella',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Abilita l\'email',
'settings_enableEmail_desc' => 'Abilita/disabilita la notifica automatica via email',
'settings_enableFilterReceipt' => '',
@ -1546,6 +1548,9 @@ URL: [url]',
'sign_out' => 'Disconnettiti',
'sign_out_user' => 'Disconnetti l\'utente',
'sk_SK' => 'Slovacco',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Spazio utilizzato dai dati',
'splash_added_to_clipboard' => 'Aggiunto agli appunti',
'splash_add_access' => '',
@ -1640,6 +1645,7 @@ URL: [url]',
'status_revisor_removed' => 'Revisore rimosso dalla lista',
'status_unknown' => 'Sconosciuto',
'storage_size' => 'Spazio di archiviazione',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'Salva segreto',
'submit_approval' => 'Invio approvazione',
'submit_login' => 'Accedi',

View File

@ -1261,6 +1261,8 @@ URL : [url]',
'settings_enableDropUpload_desc' => 'Drag&Drop하여 파일을 업로드할 \'View_Folder\' 페이지의 드롭 영역을 활성/비활설 한다.',
'settings_enableDuplicateDocNames' => '중복 된 문서명 허용',
'settings_enableDuplicateDocNames_desc' => '이 폴더에 중복 된 문서명을 가질 수 있습니다.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => '전자 메일 사용',
'settings_enableEmail_desc' => '자동화 전자우편 알림 활성화/비활성화',
'settings_enableFilterReceipt' => '',
@ -1528,6 +1530,9 @@ URL : [url]',
'sign_out' => '로그 아웃',
'sign_out_user' => '사용자가 로그 아웃',
'sk_SK' => '슬로바키아어',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => '데이터 폴더에 사용되는 공간',
'splash_added_to_clipboard' => '클립 보드에 추가',
'splash_add_access' => '',
@ -1622,6 +1627,7 @@ URL : [url]',
'status_revisor_removed' => '감사자 목록에서 제거',
'status_unknown' => '알 수없는',
'storage_size' => '저장 크기',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => '승인 제출',
'submit_login' => '로그인',

View File

@ -1294,6 +1294,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => 'ເປີດ/ປິດ ໄຊ້ໜ້າຕ່າງພື້ນທີ່ວ່າງ ວິວໂຟລເດີ ເພື່ອອັບໂຫລດໄຟລໂດຍລາກ ແລະວາງ',
'settings_enableDuplicateDocNames' => 'ອະນຸຍາດໃຫ້ໄຊ້ເອກະສານຊໍ້າກັນ',
'settings_enableDuplicateDocNames_desc' => 'ອະນຸຍາດໃຫ້ມີເອກະສານຊໍ້າໃນໂຟລເດີ',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'ເປີດໄຊ້ອີເມວ',
'settings_enableEmail_desc' => 'ເປີດ/ປິດໄຊ້ງານການແຈ້ງເຕືອນທາງອີເມວໂດຍອັດຕະໂນມັດ',
'settings_enableFilterReceipt' => '',
@ -1561,6 +1563,9 @@ URL: [url]',
'sign_out' => 'ອອກຈາກລະບົບ',
'sign_out_user' => 'ອອກຈາກລະບົບຜູ້ໄຊ້',
'sk_SK' => 'ສະໂລວາເກຍ',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'ຟື້ນທີທີ່ໄຊ້ໃນໂຟລເດີຂໍ້ມູນ',
'splash_added_to_clipboard' => 'ເພີ່ມລົງໃນຄິບບອດ',
'splash_add_access' => '',
@ -1655,6 +1660,7 @@ URL: [url]',
'status_revisor_removed' => 'ແກ້ໄຂຄຳອະທິບາຍອອກຈາກລາຍການ',
'status_unknown' => 'ບໍ່ຮູ້',
'storage_size' => 'ຂະໜາດພື້ນທີ່ເກັບຂໍ້ມູນ',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'ເກັບຄວາມລັບໄວ້',
'submit_approval' => 'ສະເໜີການອະນຸມັດ',
'submit_login' => 'ລົງຊື່ເຂົາໄຊ້',

View File

@ -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 (766), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270)
// Translators: Admin (768), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270)
$text = array(
'2_factor_auth' => '2-factor-authenticatie',
@ -1291,6 +1291,8 @@ Name: [username]
'settings_enableDropUpload_desc' => 'Aanzetten DropUpload',
'settings_enableDuplicateDocNames' => 'Sta duplicaten van documentnamen toe',
'settings_enableDuplicateDocNames_desc' => 'Staat het toe om documentnamen te dupliceren in een folder.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'E-mail inschakelen',
'settings_enableEmail_desc' => 'Inschakelen/uitschakelen automatische email notificatie',
'settings_enableFilterReceipt' => '',
@ -1558,6 +1560,9 @@ Name: [username]
'sign_out' => 'Log uit',
'sign_out_user' => 'Log gebruiker uit',
'sk_SK' => 'Slowaaks',
'sort_by_date' => 'Sorteren op datum',
'sort_by_name' => 'Sorteren op naam',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Gebruikte diskomvang in data map',
'splash_added_to_clipboard' => 'Toegevoegd aan klembord',
'splash_add_access' => '',
@ -1652,6 +1657,7 @@ Name: [username]
'status_revisor_removed' => 'Verwijderd',
'status_unknown' => 'Onbekend',
'storage_size' => 'Omvang opslag',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '2-factor-authentificatie verstuurd',
'submit_approval' => 'Verzend [Goedkeuring]',
'submit_login' => 'Log in',

View File

@ -1225,6 +1225,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => '',
'settings_enableDuplicateDocNames' => 'Zezwalaj na zduplikowane nazwy dokumentów',
'settings_enableDuplicateDocNames_desc' => 'Zezwala na tworzenie w folderze dokumentów o tej samej nazwie.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Włącz powiadomienia e-mail',
'settings_enableEmail_desc' => 'Włącz/Wyłącz automatyczne powiadomienia drogą mailową',
'settings_enableFilterReceipt' => '',
@ -1492,6 +1494,9 @@ URL: [url]',
'sign_out' => 'Wyloguj',
'sign_out_user' => 'Wyloguj użytkownika',
'sk_SK' => 'słowacki',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Przestrzeń zajęta przez folder danych',
'splash_added_to_clipboard' => 'Dodano do schowka',
'splash_add_access' => '',
@ -1586,6 +1591,7 @@ URL: [url]',
'status_revisor_removed' => '',
'status_unknown' => 'Nieznany',
'storage_size' => 'Zajętość dysku',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'Zaakceptuj',
'submit_login' => 'Zaloguj się',

File diff suppressed because it is too large Load Diff

View File

@ -1268,6 +1268,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => 'Activare/dezactivare zona de plasare (drop area) în pagina \'Vizualizare Folder\' pentru încarcarea fisierelor folosind Drag&Drop.',
'settings_enableDuplicateDocNames' => 'Permiteți nume de documente duplicate',
'settings_enableDuplicateDocNames_desc' => 'Permiteți sa existe nume de documente duplicate într-un fisier.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Activare E-mail',
'settings_enableEmail_desc' => 'Activare/dezactivare notificari automare prin e-mail',
'settings_enableFilterReceipt' => '',
@ -1535,6 +1537,9 @@ URL: [url]',
'sign_out' => 'Sign out',
'sign_out_user' => 'Sign out utilizator',
'sk_SK' => 'Slovacă',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Spatiu folosit în folderul de date',
'splash_added_to_clipboard' => 'Adăugat la clipboard',
'splash_add_access' => '',
@ -1629,6 +1634,7 @@ URL: [url]',
'status_revisor_removed' => 'Revizuitor eliminat din lista',
'status_unknown' => 'Necunoscut',
'storage_size' => 'Dimensiunea de stocare',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'Trimite aprobare',
'submit_login' => 'Sign in',

View File

@ -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 (1667)
// Translators: Admin (1668)
$text = array(
'2_factor_auth' => 'Двухфакторная аутентификация',
@ -711,7 +711,7 @@ URL: [url]',
'linked_documents' => 'Связанные документы',
'linked_files' => 'Приложения',
'linked_to_current_version' => '',
'linked_to_document' => '',
'linked_to_document' => 'Связан с документом',
'linked_to_this_version' => '',
'link_alt_updatedocument' => 'Для загрузки файлов, превышающих ограничение размера, используйте <a href="%s">другой способ</a>.',
'link_to_version' => '',
@ -1275,6 +1275,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => 'Включить/отключить область в "Просмотр папки" для загрузки при помощи Drag&Drop.',
'settings_enableDuplicateDocNames' => 'Разрешить документы<br/>с одинаковым названием',
'settings_enableDuplicateDocNames_desc' => 'Разрешить документы с одинаковым названием в каталоге.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Включить e-mail',
'settings_enableEmail_desc' => 'Включить/отключить автоматическое уведомление по e-mail.',
'settings_enableFilterReceipt' => '',
@ -1542,6 +1544,9 @@ URL: [url]',
'sign_out' => 'Выйти',
'sign_out_user' => 'Пользовательский выход',
'sk_SK' => 'Slovak',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Размер каталога данных',
'splash_added_to_clipboard' => 'Добавлено в буфер обмена',
'splash_add_access' => '',
@ -1636,6 +1641,7 @@ URL: [url]',
'status_revisor_removed' => 'Ревизор удален из списка',
'status_unknown' => 'Неизвестный',
'storage_size' => 'Размер хранилища',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'Утвердить',
'submit_login' => 'Войти',

View File

@ -1315,6 +1315,8 @@ Meno: [username]
'settings_enableDropUpload_desc' => 'Enable/Disable the drop area on the \'View Folder\' page for uploading files by Drag&Drop.',
'settings_enableDuplicateDocNames' => 'Povoliť duplicitné názvy dokumentov',
'settings_enableDuplicateDocNames_desc' => 'Povoliť duplicitné názvy dokumentov v zložke.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Povoliť e-mail',
'settings_enableEmail_desc' => 'Povoliť/zakázať automatickú emailovú notifikáciu',
'settings_enableFilterReceipt' => 'Filter out owner, reviewer, ... from reception list',
@ -1582,6 +1584,9 @@ Meno: [username]
'sign_out' => 'odhlásiť',
'sign_out_user' => 'Odhlásiť používateľa',
'sk_SK' => 'Slovenčina',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Space used on data folder',
'splash_added_to_clipboard' => 'Pridané do schránky',
'splash_add_access' => 'Prístupové právo pridané',
@ -1676,6 +1681,7 @@ Meno: [username]
'status_revisor_removed' => 'Revisor removed from list',
'status_unknown' => 'Neznámy',
'storage_size' => 'Objem dát',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'Save secret',
'submit_approval' => 'Poslať schválenie',
'submit_login' => 'Prihlásiť sa',

View File

@ -1288,6 +1288,8 @@ Kommentar: [comment]',
'settings_enableDropUpload_desc' => 'Aktivera / avaktivera droppområdet på "Visa mapp" sidan för att ladda upp filer genom att dra och släppa.',
'settings_enableDuplicateDocNames' => 'Tillåter dubletter av dokumentnamn',
'settings_enableDuplicateDocNames_desc' => 'Tillåter att det finns dokument med samma namn i en mapp.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Använd e-postmeddelanden',
'settings_enableEmail_desc' => 'Aktivera/Inaktivera automatiska e-postmeddelanden',
'settings_enableFilterReceipt' => '',
@ -1555,6 +1557,9 @@ Kommentar: [comment]',
'sign_out' => 'Logga ut',
'sign_out_user' => 'Logga ut användare',
'sk_SK' => 'Slovakiska',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Utrymme använt i datakatalogen',
'splash_added_to_clipboard' => 'Tillagt till urklipp',
'splash_add_access' => '',
@ -1649,6 +1654,7 @@ Kommentar: [comment]',
'status_revisor_removed' => 'Reviderare borttagen från listan',
'status_unknown' => 'Okänd',
'storage_size' => 'Lagringsstorlek',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'Spara hemlighet',
'submit_approval' => 'Skicka godkännande',
'submit_login' => 'Logga in',

View File

@ -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 (1082), aydin (83)
// Translators: Admin (1083), aydin (83)
$text = array(
'2_factor_auth' => '',
@ -918,7 +918,7 @@ Giriş yaparken halen sorun yaşıyorsanız lütfen sistem yöneticinizle görü
'preview_plain' => '',
'previous_state' => 'Önceki durum',
'previous_versions' => 'Önceki versiyonlar',
'process' => '',
'process' => 'İşlem',
'process_without_user_group' => '',
'pt_BR' => 'Portekizce',
'quota' => 'Kota',
@ -1247,6 +1247,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => '\'Klasör Görüntüle\' alanında dosyaları Sürükle&Bırak yöntemiyle yüklemek için sürükleme alanını etkinleştir/devredışı bırak',
'settings_enableDuplicateDocNames' => 'Mükerrer doküman isimlerine izin ver',
'settings_enableDuplicateDocNames_desc' => 'Bir klasör içinde aynı isimli dosyalara izin verir.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'E-Postayı Etkinleştir',
'settings_enableEmail_desc' => 'Otomatik e-posta bildirimlerini etkinleştir/devre dışı bırak',
'settings_enableFilterReceipt' => '',
@ -1514,6 +1516,9 @@ URL: [url]',
'sign_out' => ıkış',
'sign_out_user' => 'Kullanıcı hesabından çıkış',
'sk_SK' => 'Slovakça',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Data klasörü kullanılan alan',
'splash_added_to_clipboard' => 'Panoya eklendi',
'splash_add_access' => '',
@ -1608,6 +1613,7 @@ URL: [url]',
'status_revisor_removed' => '',
'status_unknown' => 'Bilinmeyen',
'storage_size' => 'Depo boyutu',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'Onay ver',
'submit_login' => 'Giriş',

View File

@ -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 (1334)
// Translators: Admin (1337)
$text = array(
'2_factor_auth' => '',
@ -332,7 +332,7 @@ URL: [url]',
'documentcontent' => '',
'documents' => 'док.',
'documents_checked_out_by_you' => 'Документи на Опрацюванні у вас',
'documents_expired' => '',
'documents_expired' => 'Застарілі документи',
'documents_in_process' => 'Документи в роботі',
'documents_locked' => 'Заблоковані документи',
'documents_locked_by_you' => 'Документи, які ви заблокували',
@ -866,7 +866,7 @@ URL: [url]',
'only_jpg_user_images' => 'Дозволені лише .jpg-зображення',
'order_by_sequence_off' => 'Можливість ручного сортування відключена в налаштуваннях. Якщо ви хочете використовувати цю функцію, ви повинні знову її включити.',
'original_filename' => 'Початкова назва файлу',
'overall_indexing_progress' => '',
'overall_indexing_progress' => 'Загальне просування індексації"',
'owner' => 'Власник',
'ownership_changed_email' => 'Власника змінено',
'ownership_changed_email_body' => 'Змінено власника
@ -1268,6 +1268,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => 'Увімкнути/вимкнути область в "Перегляді каталогу" для завантаження за допомогою Drag&Drop.',
'settings_enableDuplicateDocNames' => 'Дозволити документи<br/>з однаковою назвою',
'settings_enableDuplicateDocNames_desc' => 'Дозволити документи з однаковими назвами в каталозі.',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => 'Увімкнути e-mail',
'settings_enableEmail_desc' => 'Увімкнути/вимкнути автоматичне сповіщення по e-mail.',
'settings_enableFilterReceipt' => '',
@ -1535,6 +1537,9 @@ URL: [url]',
'sign_out' => 'Вийти',
'sign_out_user' => 'Вихід користувача',
'sk_SK' => 'Slovak',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => 'Розмір каталогу даних',
'splash_added_to_clipboard' => 'Додано до буферу обміну',
'splash_add_access' => '',
@ -1629,6 +1634,7 @@ URL: [url]',
'status_revisor_removed' => 'Ревізора видалено зі списку',
'status_unknown' => 'Невідомий',
'storage_size' => 'Розмір сховища',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => 'Затвердити',
'submit_login' => 'Увійти',
@ -1819,7 +1825,7 @@ URL: [url]',
'workflow_summary' => 'Підсумки по процесу',
'workflow_transition_without_user_group' => '',
'workflow_user_summary' => 'Підсумки по користувачу',
'x_more_objects' => '',
'x_more_objects' => '[number] більше об\'єктів',
'year_view' => 'Рік',
'yes' => 'Так',
'zh_CN' => 'Chinese (CN)',

View File

@ -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 (760), archonwang (469), fengjohn (5), yang86 (1)
// Translators: Admin (761), archonwang (469), fengjohn (5), yang86 (1)
$text = array(
'2_factor_auth' => '双重认证',
@ -1249,6 +1249,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => '',
'settings_enableDuplicateDocNames' => '允许重复的文件名',
'settings_enableDuplicateDocNames_desc' => '',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => '开启邮件',
'settings_enableEmail_desc' => '开启/关闭邮件自动提醒',
'settings_enableFilterReceipt' => '',
@ -1410,7 +1412,7 @@ URL: [url]',
'settings_presetExpirationDate_desc' => '',
'settings_previewWidthDetail' => '缩略图宽度(详情页中)',
'settings_previewWidthDetail_desc' => '详情页面中缩略图的宽度',
'settings_previewWidthDropFolderList' => '',
'settings_previewWidthDropFolderList' => '预览图像的宽度',
'settings_previewWidthDropFolderList_desc' => '',
'settings_previewWidthList' => '缩略图宽度(列表中)',
'settings_previewWidthList_desc' => '列表中缩略图的宽度',
@ -1516,6 +1518,9 @@ URL: [url]',
'sign_out' => '登出',
'sign_out_user' => '退出登录',
'sk_SK' => '斯洛伐克语',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => '数据文件夹使用空间',
'splash_added_to_clipboard' => '已复制',
'splash_add_access' => '',
@ -1610,6 +1615,7 @@ URL: [url]',
'status_revisor_removed' => '',
'status_unknown' => '未知',
'storage_size' => '存储大小',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => '提交审核',
'submit_login' => '登录',

View File

@ -1098,6 +1098,8 @@ URL: [url]',
'settings_enableDropUpload_desc' => '',
'settings_enableDuplicateDocNames' => '允許重複的檔案名',
'settings_enableDuplicateDocNames_desc' => '',
'settings_enableDuplicateSubFolderNames' => '',
'settings_enableDuplicateSubFolderNames_desc' => '',
'settings_enableEmail' => '',
'settings_enableEmail_desc' => '',
'settings_enableFilterReceipt' => '',
@ -1365,6 +1367,9 @@ URL: [url]',
'sign_out' => '登出',
'sign_out_user' => '',
'sk_SK' => '斯洛伐克語',
'sort_by_date' => '',
'sort_by_name' => '',
'sort_by_sequence' => '',
'space_used_on_data_folder' => '資料檔案夾使用空間',
'splash_added_to_clipboard' => '已複製',
'splash_add_access' => '',
@ -1459,6 +1464,7 @@ URL: [url]',
'status_revisor_removed' => '',
'status_unknown' => '未知',
'storage_size' => '存儲大小',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',
'submit_approval' => '提交審核',
'submit_login' => '登錄',

View File

@ -316,7 +316,7 @@ $docsource = 'upload';
if($settings->_dropFolderDir) {
if(isset($_POST["dropfolderfileform1"]) && $_POST["dropfolderfileform1"]) {
$fullfile = $settings->_dropFolderDir.'/'.$user->getLogin().'/'.$folder->getID().'/'.$_POST["dropfolderfileform1"];
$fullfile = $settings->_dropFolderDir.'/'.$user->getLogin().'/'.$_POST["dropfolderfileform1"];
if(file_exists($fullfile)) {
$docsource = 'dropfolder';
/* Check if a local file is uploaded as well */

View File

@ -99,6 +99,13 @@ if(!empty($_POST['notification_groups'])) {
}
}
/* Check if name already exists in the folder */
if(!$settings->_enableDuplicateSubFolderNames) {
if($folder->hasSubFolderByName($name)) {
UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("subfolder_duplicate_name"));
}
}
$controller->setParam('folder', $folder);
$controller->setParam('name', $name);
$controller->setParam('comment', $comment);

View File

@ -70,6 +70,7 @@ $oldcomment = $folder->getComment();
* will just update the old attribute object in array attributes[] and hence
* also update the old value
*/
$oldattributes = array();
foreach($folder->getAttributes() as $ai=>$aa)
$oldattributes[$ai] = clone $aa;

View File

@ -41,7 +41,7 @@ $fullname = $_POST["fullname"];
$email = $_POST["email"];
$comment = $_POST["comment"];
$language = $_POST["language"];
/* 'theme' won't be set, if themeselector is turn off */
/* 'theme' won't be set, if themeselector is turned off */
if(isset($_POST["theme"]))
$mytheme = $_POST["theme"];
$current_pwd = $_POST["currentpwd"];

View File

@ -62,6 +62,13 @@ if($document->isLocked()) {
}
}
/* Check if name already exists in the folder */
if(!$settings->_enableDuplicateDocNames) {
if($targetFolder->hasDocumentByName($document->getName())) {
UI::exitError(getMLText("folder_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("document_duplicate_name"));
}
}
if ($targetid != $oldFolder->getID()) {
if ($document->setFolder($targetFolder)) {
// Send notification to subscribers.

View File

@ -60,6 +60,13 @@ if ($folder->getAccessMode($user, 'moveFolder') < M_READWRITE || $targetFolder->
UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("access_denied"));
}
/* Check if name already exists in the folder */
if(!$settings->_enableDuplicateSubFolderNames) {
if($targetFolder->hasSubFolderByName($folder->getName())) {
UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("subfolder_duplicate_name"));
}
}
$oldFolder = $folder->getParent();
if ($folder->setParent($targetFolder)) {
// Send notification to subscribers.

View File

@ -202,6 +202,7 @@ if ($action == "saveSettings")
$settings->_enableVersionDeletion = getBoolValue("enableVersionDeletion");
$settings->_enableVersionModification = getBoolValue("enableVersionModification");
$settings->_enableDuplicateDocNames = getBoolValue("enableDuplicateDocNames");
$settings->_enableDuplicateSubFolderNames = getBoolValue("enableDuplicateSubFolderNames");
$settings->_overrideMimeType = getBoolValue("overrideMimeType");
$settings->_advancedAcl = getBoolValue("advancedAcl");
$settings->_removeFromDropFolder = getBoolValue("removeFromDropFolder");

View File

@ -22,14 +22,17 @@ if(!isset($settings))
require_once("../inc/inc.Settings.php");
require_once("inc/inc.LogInit.php");
require_once("inc/inc.Language.php");
require_once("inc/inc.Init.php");
require_once("inc/inc.Extension.php");
require_once("inc/inc.DBInit.php");
require_once("inc/inc.ClassUI.php");
include $settings->_rootDir . "languages/" . $settings->_language . "/lang.inc";
if (isset($_REQUEST["referuri"]) && strlen($_REQUEST["referuri"])>0)
$referui = $_REQUEST["referuri"];
$referuri = $_REQUEST["referuri"];
else
$referui = '';
$referuri = '';
if (isset($_REQUEST["hash"]) && strlen($_REQUEST["hash"])>0) {
$hash = $_REQUEST["hash"];
@ -39,10 +42,8 @@ if (isset($_REQUEST["hash"]) && strlen($_REQUEST["hash"])>0) {
}
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'referui'=>$referui, 'hash'=>$hash, 'passwordstrength'=>$settings->_passwordStrength));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'referuri'=>$referuri, 'hash'=>$hash, 'passwordstrength'=>$settings->_passwordStrength));
if($view) {
$view($_GET);
exit;
}
?>

View File

@ -41,13 +41,14 @@ $type = 'docsperuser';
if(!empty($_GET['type'])) {
$type = $_GET['type'];
}
$data = $dms->getStatisticalData($type);
switch($type) {
case 'docsperstatus':
foreach($data as &$rec) {
$rec['key'] = getOverallStatusText((int) $rec['key']);
}
break;
if($data = $dms->getStatisticalData($type)) {
switch($type) {
case 'docsperstatus':
foreach($data as &$rec) {
$rec['key'] = getOverallStatusText((int) $rec['key']);
}
break;
}
}
if($view) {

View File

@ -174,6 +174,13 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe
$query = "";
}
if (isset($_GET["orderby"]) && is_string($_GET["orderby"])) {
$orderby = $_GET["orderby"];
}
else {
$orderby = "";
}
/* Select if only documents (0x01), only folders (0x02) or both (0x03)
* are found
*/
@ -377,7 +384,27 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe
// ---------------- Start searching -----------------------------------------
$startTime = getTime();
$resArr = $dms->search($query, 0, 0 /*$limit, ($pageNumber-1)*$limit*/, $mode, $searchin, $startFolder, $owner, $status, $creationdate ? $startdate : array(), $creationdate ? $stopdate : array(), array(), array(), $categories, $attributes, $resultmode, $expirationdate ? $expstartdate : array(), $expirationdate ? $expstopdate : array(), $reception);
$resArr = $dms->search(array(
'query'=>$query,
'limit'=>0,
'offset'=>0 /*$limit, ($pageNumber-1)*$limit*/,
'logicalmode'=>$mode,
'searchin'=>$searchin,
'startFolder'=>$startFolder,
'owner'=>$owner,
'status'=>$status,
'creationstartdate'=>$creationdate ? $startdate : array(),
'creationenddate'=>$creationdate ? $stopdate : array(),
'modificationstartdate'=>array(),
'modificationenddate'=>array(),
'categories'=>$categories,
'attributes'=>$attributes,
'mode'=>$resultmode,
'expirationstartdate'=>$expirationdate ? $expstartdate : array(),
'expirationenddate'=>$expirationdate ? $expstopdate : array(),
'reception'=>$reception,
'orderby'=>$orderby
));
$searchTime = getTime() - $startTime;
$searchTime = round($searchTime, 2);
@ -434,6 +461,7 @@ if($view) {
$view->setParam('totalfolders', $fcount /*resArr['totalFolders']*/);
$view->setParam('fullsearch', (isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSearch) ? true : false);
$view->setParam('mode', isset($mode) ? $mode : '');
$view->setParam('orderby', isset($orderby) ? $orderby : '');
$view->setParam('defaultsearchmethod', $settings->_defaultSearchMethod);
$view->setParam('resultmode', isset($resultmode) ? $resultmode : '');
$view->setParam('searchin', isset($searchin) ? $searchin : array());

View File

@ -46,7 +46,7 @@ if (!is_object($folder)) {
UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_folder_id"))), getMLText("invalid_folder_id"));
}
if (isset($_GET["orderby"]) && strlen($_GET["orderby"])==1 ) {
if (isset($_GET["orderby"]) && strlen($_GET["orderby"])>0 ) {
$orderby=$_GET["orderby"];
} else $orderby=$settings->_sortFoldersDefault;

View File

@ -374,7 +374,7 @@ function getFolderChildren($request, $response, $args) { /* {{{ */
} /* }}} */
function createFolder($request, $response, $args) { /* {{{ */
global $dms, $userobj;
global $dms, $userobj, $settings;
if(!$userobj) {
return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403);
@ -410,6 +410,12 @@ function createFolder($request, $response, $args) { /* {{{ */
}
}
}
/* Check if name already exists in the folder */
if(!$settings->_enableDuplicateSubFolderNames) {
if($folder->hasSubFolderByName($params['name'])) {
return $response->withJson(array('success'=>false, 'message'=>getMLText("subfolder_duplicate_name"), 'data'=>''), 400);
}
}
if($folder = $parent->addSubFolder($params['name'], $comment, $userobj, $sequence, $newattrs)) {
$rec = __getFolderData($folder);
@ -506,7 +512,7 @@ function deleteFolder($request, $response, $args) { /* {{{ */
} /* }}} */
function uploadDocument($request, $response, $args) { /* {{{ */
global $dms, $userobj;
global $dms, $userobj, $settings;
if(!$userobj) {
return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403);
@ -571,6 +577,12 @@ function uploadDocument($request, $response, $args) { /* {{{ */
$origfilename = $file_info->getClientFilename();
if (trim($docname) == '')
$docname = $origfilename;
/* Check if name already exists in the folder */
if(!$settings->_enableDuplicateDocNames) {
if($mfolder->hasDocumentByName($docname)) {
return $response->withJson(array('success'=>false, 'message'=>getMLText("document_duplicate_name"), 'data'=>''), 400);
}
}
$temp = $file_info->file;
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$userfiletype = finfo_file($finfo, $temp);
@ -662,7 +674,7 @@ function updateDocument($request, $response, $args) { /* {{{ */
* Old upload method which uses put instead of post
*/
function uploadDocumentPut($request, $response, $args) { /* {{{ */
global $dms, $userobj;
global $dms, $userobj, $settings;
if(!$userobj) {
return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403);
@ -687,6 +699,12 @@ function uploadDocumentPut($request, $response, $args) { /* {{{ */
$userfiletype = finfo_file($finfo, $temp);
$fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION);
finfo_close($finfo);
/* Check if name already exists in the folder */
if(!$settings->_enableDuplicateDocNames) {
if($mfolder->hasDocumentByName($docname)) {
return $response->withJson(array('success'=>false, 'message'=>getMLText("document_duplicate_name"), 'data'=>''), 400);
}
}
$res = $mfolder->addDocument($docname, '', 0, $userobj, '', array(), $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, 0);
unlink($temp);
if($res) {

View File

@ -229,6 +229,7 @@ i.released {color: #00b000;}
i.rejected {color: #b00000;}
i.in-workflow {color: #11479e;}
i.workflow-action {color: #91479e;}
i.selected {border: 1px solid #d4d4d4;padding:3px;border-radius:3px;background-color:#fafafa;background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);}
span.openpopupbox {
cursor: pointer;

View File

@ -1,10 +1,19 @@
/* Template function which outputs an option in a chzn-select */
/* Template function which outputs an option in a chzn-select
* The replace() call is required to prevent xss attacks (see CVE-2019-12745)
* Using htmlspecialchars() in php isn't sufficient because, chzn_template_func
* will receive an unescaped string
* (see https://forums.select2.org/t/propperly-escape-option-value-to-prevent-xss/788)
*/
chzn_template_func = function (state) {
var subtitle = $(state.element).data('subtitle');
var warning = $(state.element).data('warning');
var html = '<span>'+state.text+'';
var subtitle = '';
if($(state.element).data('subtitle'))
subtitle = $(state.element).data('subtitle')+''; /* make sure it is a string */
var warning = '';
if($(state.element).data('warning'))
warning = $(state.element).data('warning')+''; /* make sure it is a string */
var html = '<span>'+state.text.replace(/</g, '&lt;')+'';
if(subtitle)
html += '<br /><i>'+subtitle+'</i>';
html += '<br /><i>'+subtitle.replace(/</g, '&lt;')+'</i>';
if(warning)
html += '<br /><span class="label label-warning"><i class="icon-warning-sign"></i></span> '+warning+'';
html += '</span>';
@ -38,7 +47,8 @@ $(document).ready( function() {
$(".chzn-select").select2({
width: '100%',
templateResult: chzn_template_func
templateResult: chzn_template_func,
templateSelection: chzn_template_func
});
/* change the color and length of the bar graph showing the password
@ -80,11 +90,11 @@ $(document).ready( function() {
},
highlighter : function (item) {
if(item.charAt(0) == 'D')
return '<i class="icon-file"></i> ' + item.substring(1);
return '<i class="icon-file"></i> ' + item.substring(1).replace(/</g, '&lt;');
else if(item.charAt(0) == 'F')
return '<i class="icon-folder-close-alt"></i> ' + item.substring(1);
return '<i class="icon-folder-close-alt"></i> ' + item.substring(1).replace(/</g, '&lt;');
else
return '<i class="icon-search"></i> ' + item.substring(1);
return '<i class="icon-search"></i> ' + item.substring(1).replace(/</g, '&lt;');
}
}); /* }}} */
@ -112,7 +122,7 @@ $(document).ready( function() {
},
highlighter : function (item) {
strarr = item.split("#");
return '<i class="icon-file"></i> ' + strarr[1];
return '<i class="icon-file"></i> ' + strarr[1].replace(/</g, '&lt;');
}
}); /* }}} */
@ -141,7 +151,7 @@ $(document).ready( function() {
},
highlighter : function (item) {
strarr = item.split("#");
return '<i class="icon-folder-close-alt"></i> ' + strarr[1];
return '<i class="icon-folder-close-alt"></i> ' + strarr[1].replace(/</g, '&lt;');
}
}); /* }}} */

View File

@ -1744,10 +1744,11 @@ $(document).ready(function() {
*/
function printNewTreeNavigationJs($folderid=0, $accessmode=M_READ, $showdocs=0, $formid='form1', $expandtree=0, $orderby='', $partialtree=false) { /* {{{ */
function jqtree($obj, $path, $folder, $user, $accessmode, $showdocs=1, $expandtree=0, $orderby='', $level=0) {
$orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc');
if($path || $expandtree>=$level) {
if($path)
$pathfolder = array_shift($path);
$subfolders = $folder->getSubFolders($orderby);
$subfolders = $folder->getSubFolders($orderby[0], $orderdir);
$subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode);
$children = array();
foreach($subfolders as $subfolder) {
@ -1755,7 +1756,7 @@ $(document).ready(function() {
if($expandtree>=$level || $pathfolder->getID() == $subfolder->getID()) {
$node['children'] = jqtree($obj, $path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1);
if($showdocs) {
$documents = $subfolder->getDocuments($orderby);
$documents = $subfolder->getDocuments($orderby[0], $orderdir);
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, $accessmode);
if($obj->hasHook('filterTreeDocuments'))
$documents = $obj->callHook('filterTreeDocuments', $folder, $documents);
@ -1769,7 +1770,7 @@ $(document).ready(function() {
}
return $children;
} else {
$subfolders = $folder->getSubFolders($orderby);
$subfolders = $folder->getSubFolders($orderby[0], $orderdir);
$subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode);
$children = array();
foreach($subfolders as $subfolder) {
@ -1781,6 +1782,7 @@ $(document).ready(function() {
return array();
}
$orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc');
if($folderid) {
$folder = $this->params['dms']->getFolder($folderid);
$path = $folder->getPath();
@ -1804,7 +1806,7 @@ $(document).ready(function() {
} else {
$node['children'] = jqtree($this, $path, $folder, $this->params['user'], $accessmode, $showdocs, $expandtree, $orderby, 0);
if($showdocs) {
$documents = $folder->getDocuments($orderby);
$documents = $folder->getDocuments($orderby[0], $orderdir);
$documents = SeedDMS_Core_DMS::filterAccess($documents, $this->params['user'], $accessmode);
if($this->hasHook('filterTreeDocuments'))
$documents = $this->callHook('filterTreeDocuments', $folder, $documents);

View File

@ -43,7 +43,7 @@ class SeedDMS_View_ManageNotify extends SeedDMS_Bootstrap_Style {
$notifications = array();
if ($as_group){
if(!($groups = $this->user->getGroups()))
return NULL;
return array();
foreach ($groups as $group) {
$tmp = $group->getNotifications($folders ? T_FOLDER : T_DOCUMENT);

View File

@ -136,6 +136,7 @@ $(document).ready( function() {
$expirationdate = $this->params['expirationdate'];
$status = $this->params['status'];
$this->query = $this->params['query'];
$orderby = $this->params['orderby'];
$entries = $this->params['searchhits'];
$totalpages = $this->params['totalpages'];
$pageNumber = $this->params['pagenumber'];
@ -285,8 +286,7 @@ $(document).ready( function() {
<?php
$this->contentContainerEnd();
// }}}
?>
<?php
/* First check if any of the folder filters are set. If it is,
* open the accordion.
*/
@ -471,6 +471,9 @@ $(document).ready( function() {
</div>
</div>
</div>
<?php
// }}}
?>
</form>
</div>
<?php
@ -561,10 +564,18 @@ $(document).ready( function() {
if(is_string($txt))
echo $txt;
else {
parse_str($_SERVER['QUERY_STRING'], $tmp);
$tmp['orderby'] = $orderby=="n"||$orderby=="na)"?"nd":"n";
print "<table class=\"table table-hover\">";
print "<thead>\n<tr>\n";
print "<th></th>\n";
print "<th>".getMLText("name")."</th>\n";
print "<th>".getMLText("name");
if(!$fullsearch) {
print " <a href=\"../out/out.Search.php?".http_build_query($tmp)."\" title=\"".getMLText("sort_by_name")."\">".($orderby=="n"||$orderby=="na"?' <i class="icon-sort-by-alphabet selected"></i>':($orderby=="nd"?' <i class="icon-sort-by-alphabet-alt selected"></i>':' <i class="icon-sort-by-alphabet"></i>'))."</a>";
$tmp['orderby'] = $orderby=="d"||$orderby=="da)"?"dd":"d";
print " <a href=\"../out/out.Search.php?".http_build_query($tmp)."\" title=\"".getMLText("sort_by_date")."\">".($orderby=="d"||$orderby=="da"?' <i class="icon-sort-by-attributes selected"></i>':($orderby=="dd"?' <i class="icon-sort-by-attributes-alt selected"></i>':' <i class="icon-sort-by-attributes"></i>'))."</a>";
}
print "</th>\n";
//print "<th>".getMLText("attributes")."</th>\n";
print "<th>".getMLText("status")."</th>\n";
print "<th>".getMLText("action")."</th>\n";

View File

@ -451,6 +451,7 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site'));
<?php $this->showConfigCheckbox('settings_enableVersionDeletion', 'enableVersionDeletion'); ?>
<?php $this->showConfigCheckbox('settings_enableVersionModification', 'enableVersionModification'); ?>
<?php $this->showConfigCheckbox('settings_enableDuplicateDocNames', 'enableDuplicateDocNames'); ?>
<?php $this->showConfigCheckbox('settings_enableDuplicateSubFolderNames', 'enableDuplicateSubFolderNames'); ?>
<?php $this->showConfigCheckbox('settings_overrideMimeType', 'overrideMimeType'); ?>
<?php $this->showConfigCheckbox('settings_advancedAcl', 'advancedAcl'); ?>
<?php $this->showConfigCheckbox('settings_removeFromDropFolder', 'removeFromDropFolder'); ?>

View File

@ -474,7 +474,7 @@ console.log(element);
}
}
}
$fieldwrap = array();
$fieldwrap = array('', '');
if($tmp) {
$fieldwrap = array('', $this->getSelectPresetButtonHtml("GrpReviewers", $tmp));
}
@ -641,7 +641,7 @@ console.log(element);
}
}
}
$fieldwrap = array();
$fieldwrap = array('', '');
if($tmp) {
$fieldwrap = array('', $this->getSelectPresetButtonHtml("GrpApprovers", $tmp));
}

View File

@ -355,7 +355,7 @@ $(document).ready( function() {
);
$options = array();
foreach($groups as $group) {
$options[] = array($group->getID(), $group->getName(), ($currUser && $group->isMember($currUser)));
$options[] = array($group->getID(), htmlspecialchars($group->getName()), ($currUser && $group->isMember($currUser)));
}
$this->formField(
getMLText("groups"),

View File

@ -765,10 +765,10 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
echo "</thead><tbody>";
foreach($statuslog as $entry) {
if($suser = $dms->getUser($entry['userID']))
$fullname = $suser->getFullName();
$fullname = htmlspecialchars($suser->getFullName());
else
$fullname = "--";
echo "<tr><td>".$entry['date']."</td><td>".getOverallStatusText($entry['status'])."</td><td>".$fullname."</td><td>".$entry['comment']."</td></tr>\n";
echo "<tr><td>".$entry['date']."</td><td>".getOverallStatusText($entry['status'])."</td><td>".$fullname."</td><td>".htmlspecialchars($entry['comment'])."</td></tr>\n";
}
print "</tbody>\n</table>\n";
$this->contentContainerEnd();
@ -787,8 +787,8 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
echo "<td>".$wkflog->getDate()."</td>";
echo "<td>".$wkflog->getTransition()->getAction()->getName()."</td>";
$loguser = $wkflog->getUser();
echo "<td>".$loguser->getFullName()."</td>";
echo "<td>".$wkflog->getComment()."</td>";
echo "<td>".htmlspecialchars($loguser->getFullName())."</td>";
echo "<td>".htmlspecialchars($wkflog->getComment())."</td>";
echo "</tr>";
}
print "</tbody>\n</table>\n";

View File

@ -87,6 +87,7 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style {
$user = $this->params['user'];
$folder = $this->params['folder'];
$orderby = $this->params['orderby'];
$orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc');
$expandFolderTree = $this->params['expandFolderTree'];
$enableDropUpload = $this->params['enableDropUpload'];
$maxItemsPerPage = $this->params['maxItemsPerPage'];
@ -155,6 +156,7 @@ $('#loadmore').click(function(e) {
$user = $this->params['user'];
$folder = $this->params['folder'];
$orderby = $this->params['orderby'];
$orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc');
$cachedir = $this->params['cachedir'];
$previewwidth = $this->params['previewWidthList'];
$previewconverters = $this->params['previewConverters'];
@ -168,13 +170,13 @@ $('#loadmore').click(function(e) {
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
$previewer->setConverters($previewconverters);
$subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby);
$subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby[0]);
if($subFolders === null)
$subFolders = $folder->getSubFolders($orderby);
$subFolders = $folder->getSubFolders($orderby[0], $orderdir);
$subFolders = SeedDMS_Core_DMS::filterAccess($subFolders, $user, M_READ);
$documents = $this->callHook('folderGetDocuments', $folder, $orderby);
$documents = $this->callHook('folderGetDocuments', $folder, $orderby[0]);
if($documents === null)
$documents = $folder->getDocuments($orderby);
$documents = $folder->getDocuments($orderby[0], $orderdir);
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ);
$content = '';
@ -226,6 +228,7 @@ $('#loadmore').click(function(e) {
$user = $this->params['user'];
$folder = $this->params['folder'];
$orderby = $this->params['orderby'];
$orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc');
$enableFolderTree = $this->params['enableFolderTree'];
$enableClipboard = $this->params['enableclipboard'];
$enableDropUpload = $this->params['enableDropUpload'];
@ -399,13 +402,13 @@ $('#loadmore').click(function(e) {
else
$this->contentHeading(getMLText("folder_contents"));
$subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby);
$subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby[0], $orderdir);
if($subFolders === null)
$subFolders = $folder->getSubFolders($orderby);
$subFolders = $folder->getSubFolders($orderby[0], $orderdir);
$subFolders = SeedDMS_Core_DMS::filterAccess($subFolders, $user, M_READ);
$documents = $this->callHook('folderGetDocuments', $folder, $orderby);
$documents = $this->callHook('folderGetDocuments', $folder, $orderby[0], $orderdir);
if($documents === null)
$documents = $folder->getDocuments($orderby);
$documents = $folder->getDocuments($orderby[0], $orderdir);
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ);
$txt = $this->callHook('folderListPreContent', $folder, $subFolders, $documents);
@ -413,14 +416,18 @@ $('#loadmore').click(function(e) {
echo $txt;
$i = 0;
if ((count($subFolders) > 0)||(count($documents) > 0)){
$txt = $this->callHook('folderListHeader', $folder, $orderby);
$txt = $this->callHook('folderListHeader', $folder, $orderby, $orderdir);
if(is_string($txt))
echo $txt;
else {
print "<table id=\"viewfolder-table\" class=\"table table-condensed table-hover\">";
print "<thead>\n<tr>\n";
print "<th></th>\n";
print "<th><a href=\"../out/out.ViewFolder.php?folderid=". $folderid .($orderby=="n"?"&orderby=s":"&orderby=n")."\">".getMLText("name")."</a></th>\n";
print "<th>".getMLText("name");
print " <a href=\"../out/out.ViewFolder.php?folderid=". $folderid .($orderby=="n"||$orderby=="na"?"&orderby=nd":"&orderby=n")."\" title=\"".getMLText("sort_by_name")."\">".($orderby=="n"||$orderby=="na"?' <i class="icon-sort-by-alphabet selected"></i>':($orderby=="nd"?' <i class="icon-sort-by-alphabet-alt selected"></i>':' <i class="icon-sort-by-alphabet"></i>'))."</a>";
print " <a href=\"../out/out.ViewFolder.php?folderid=". $folderid .($orderby=="s"||$orderby=="sa"?"&orderby=sd":"&orderby=s")."\" title=\"".getMLText("sort_by_sequence")."\">".($orderby=="s"||$orderby=="sa"?' <i class="icon-sort-by-order selected"></i>':($orderby=="sd"?' <i class="icon-sort-by-order-alt selected"></i>':' <i class="icon-sort-by-order"></i>'))."</a>";
print " <a href=\"../out/out.ViewFolder.php?folderid=". $folderid .($orderby=="d"||$orderby=="da"?"&orderby=dd":"&orderby=d")."\" title=\"".getMLText("sort_by_date")."\">".($orderby=="d"||$orderby=="da"?' <i class="icon-sort-by-attributes selected"></i>':($orderby=="dd"?' <i class="icon-sort-by-attributes-alt selected"></i>':' <i class="icon-sort-by-attributes"></i>'))."</a>";
print "</th>\n";
// print "<th>".getMLText("owner")."</th>\n";
print "<th>".getMLText("status")."</th>\n";
// print "<th>".getMLText("version")."</th>\n";