diff --git a/CHANGELOG b/CHANGELOG index 2e1775b20..3658ff998 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,19 @@ +-------------------------------------------------------------------------------- + Changes in version 5.1.18 +-------------------------------------------------------------------------------- +- various minor improvements of indexer.php script +- minor fix for better behaviour of folder tree ('plus' signs appears if folder + has children) +- allow to import users from and export users into csv file +- skip all fileѕ and directories starting with a '.' when creating an extension's + zip file +- add support for authentication of the rest api by a key +- add support for CORS in the rest api +- fix parsing of file size +- major rework of restapi which has now a swagger specification +- fix indexing of documents by script (Closes: #479) +- fix ordering of folders in DocumentChooser and FolderChooser + -------------------------------------------------------------------------------- Changes in version 5.1.17 -------------------------------------------------------------------------------- diff --git a/SeedDMS_Core/Core/inc.ClassAttribute.php b/SeedDMS_Core/Core/inc.ClassAttribute.php index f6b874c2b..89842171a 100644 --- a/SeedDMS_Core/Core/inc.ClassAttribute.php +++ b/SeedDMS_Core/Core/inc.ClassAttribute.php @@ -245,7 +245,7 @@ class SeedDMS_Core_Attribute { /* {{{ */ */ function validate() { /* {{{ */ /** @var SeedDMS_Core_AttributeDefinition $attrdef */ - $attrdef = $this->_attrdef(); /** @todo check this out, this method is not existing */ + $attrdef = $this->_attrdef; $result = $attrdef->validate($this->_value); $this->_validation_error = $attrdef->getValidationError(); return $result; @@ -1123,11 +1123,6 @@ class SeedDMS_Core_AttributeDefinition { /* {{{ */ if(!$success) $this->_validation_error = 3; break; - case self::type_boolean: /** @todo: Same case in LINE 966 */ - foreach($values as $value) { - $success &= preg_match('/^[01]$/', $value); - } - break; case self::type_email: foreach($values as $value) { $success &= preg_match('/^[a-z0-9._-]+@+[a-z0-9._-]+\.+[a-z]{2,4}$/i', $value); diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index 83537c1de..153b2df42 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -396,7 +396,7 @@ class SeedDMS_Core_DMS { $this->lasterror = ''; $this->version = '@package_version@'; if($this->version[0] == '@') - $this->version = '5.1.16'; + $this->version = '5.1.18'; } /* }}} */ /** @@ -793,6 +793,9 @@ class SeedDMS_Core_DMS { function getDocumentByOriginalFilename($name, $folder=null) { /* {{{ */ if (!$name) return false; + if (!$this->db->createTemporaryTable("ttcontentid")) { + return false; + } $queryStr = "SELECT `tblDocuments`.*, `tblDocumentLocks`.`userID` as `lockUser` ". "FROM `tblDocuments` ". "LEFT JOIN `ttcontentid` ON `ttcontentid`.`document` = `tblDocuments`.`id` ". @@ -1217,7 +1220,7 @@ class SeedDMS_Core_DMS { $orderdir = 'ASC'; /** @noinspection PhpUndefinedConstantInspection */ $queryStr .= "AND `tblDocuments`.`owner` = '".$user->getID()."' ". - "AND `tblDocumentStatusLog`.`status` IN (".S_DRAFT_REV.", ".S_DRAFT_APP.", ".S_IN_REVISION.") "; /** @todo S_IN_REVISION is not defined */ + "AND `tblDocumentStatusLog`.`status` IN (".S_DRAFT_REV.", ".S_DRAFT_APP.") "; if ($orderby=='e') $queryStr .= "ORDER BY `expires`"; else if ($orderby=='u') $queryStr .= "ORDER BY `statusDate`"; else if ($orderby=='s') $queryStr .= "ORDER BY `status`"; diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 8d264bdb2..bda805c0c 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -881,12 +881,12 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ /** - * @return int + * @return float */ function getSequence() { return $this->_sequence; } /** - * @param $seq + * @param float $seq * @return bool */ function setSequence($seq) { /* {{{ */ @@ -1492,7 +1492,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if ((int)$version<1) { $queryStr = "SELECT MAX(`version`) as m from `tblDocumentContent` where `document` = ".$this->_id; $resArr = $db->getResultArray($queryStr); - if (is_bool($resArr) && !$res) + if (is_bool($resArr) && !$resArr) return false; $version = $resArr[0]['m']+1; @@ -1563,7 +1563,6 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ // a document be rejected. $pendingReview=false; /** @noinspection PhpUnusedLocalVariableInspection */ - $reviewRes = array(); /** @todo unused variable */ foreach (array("i", "g") as $i){ if (isset($reviewers[$i])) { foreach ($reviewers[$i] as $reviewerID) { @@ -1582,7 +1581,6 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ // and make a recommendation on its release as an approved version. $pendingApproval=false; /** @noinspection PhpUnusedLocalVariableInspection */ - $approveRes = array(); /** @todo unused variable */ foreach (array("i", "g") as $i){ if (isset($approvers[$i])) { foreach ($approvers[$i] as $approverID) { @@ -1621,7 +1619,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ } /** @noinspection PhpMethodParametersCountMismatchInspection */ - $docResultSet->setStatus($status,$comment,$user); /** @todo parameter count wrong */ + $docResultSet->setStatus($status); $db->commitTransaction(); return $docResultSet; @@ -1659,7 +1657,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if ((int) $version<1) { $queryStr = "SELECT MAX(`version`) as m from `tblDocumentContent` where `document` = ".$this->_id; $resArr = $db->getResultArray($queryStr); - if (is_bool($resArr) && !$res) /** @todo undefined variable */ + if (is_bool($resArr) && !$resArr) return false; $version = $resArr[0]['m']; @@ -1725,7 +1723,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if (!isset($this->_content)) { $queryStr = "SELECT * FROM `tblDocumentContent` WHERE `document` = ".$this->_id." ORDER BY `version`"; $resArr = $db->getResultArray($queryStr); - if (is_bool($resArr) && !$res) /** @todo undefined variable */ + if (is_bool($resArr) && !$resArr) return false; $this->_content = array(); @@ -1771,7 +1769,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ $db = $this->_dms->getDB(); $queryStr = "SELECT * FROM `tblDocumentContent` WHERE `document` = ".$this->_id." AND `version` = " . (int) $version; $resArr = $db->getResultArray($queryStr); - if (is_bool($resArr) && !$res) /** @todo undefined variable */ + if (is_bool($resArr) && !$resArr) return false; if (count($resArr) != 1) return false; @@ -1829,7 +1827,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ $db = $this->_dms->getDB(); $queryStr = "SELECT * FROM `tblDocumentContent` WHERE `document` = ".$this->_id." ORDER BY `version` DESC"; $resArr = $db->getResultArray($queryStr); - if (is_bool($resArr) && !$res) /** @todo: $res not defined */ + if (is_bool($resArr) && !$resArr) return false; $classname = $this->_dms->getClassname('documentcontent'); diff --git a/SeedDMS_Core/Core/inc.ClassFolder.php b/SeedDMS_Core/Core/inc.ClassFolder.php index 58f21a26d..0b7945bff 100644 --- a/SeedDMS_Core/Core/inc.ClassFolder.php +++ b/SeedDMS_Core/Core/inc.ClassFolder.php @@ -555,7 +555,7 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { $db = $this->_dms->getDB(); if (isset($this->_subFolders)) { /** @noinspection PhpUndefinedFieldInspection */ - return count($this->subFolders); /** @todo not $this->_subFolders? */ + return count($this->_subFolders); } $queryStr = "SELECT count(*) as c FROM `tblFolders` WHERE `parent` = " . $this->_id; $resArr = $db->getResultArray($queryStr); @@ -757,7 +757,7 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { $db = $this->_dms->getDB(); if (isset($this->_documents)) { /** @noinspection PhpUndefinedFieldInspection */ - return count($this->documents); /** @todo not $this->_documents? */ + return count($this->_documents); } $queryStr = "SELECT count(*) as c FROM `tblDocuments` WHERE `folder` = " . $this->_id; $resArr = $db->getResultArray($queryStr); diff --git a/SeedDMS_Core/Core/inc.ClassUser.php b/SeedDMS_Core/Core/inc.ClassUser.php index 86286c6c8..1716ff84b 100644 --- a/SeedDMS_Core/Core/inc.ClassUser.php +++ b/SeedDMS_Core/Core/inc.ClassUser.php @@ -216,7 +216,7 @@ class SeedDMS_Core_User { /* {{{ */ $resArr = $resArr[0]; - $user = new self($resArr["id"], $resArr["login"], $resArr["pwd"], $resArr["fullName"], $resArr["email"], $resArr["language"], $resArr["theme"], $resArr["comment"], $resArr["role"], $resArr["hidden"], $resArr["disabled"], $resArr["pwdExpiration"], $resArr["loginfailures"], $resArr["quota"], $resArr["homefolder"]); + $user = new self((int) $resArr["id"], $resArr["login"], $resArr["pwd"], $resArr["fullName"], $resArr["email"], $resArr["language"], $resArr["theme"], $resArr["comment"], $resArr["role"], $resArr["hidden"], $resArr["disabled"], $resArr["pwdExpiration"], $resArr["loginfailures"], $resArr["quota"], $resArr["homefolder"]); $user->setDMS($dms); return $user; } /* }}} */ @@ -1036,7 +1036,7 @@ class SeedDMS_Core_User { /* {{{ */ $classname = $this->_dms->getClassname('group'); foreach ($resArr as $row) { /** @var SeedDMS_Core_Group $group */ - $group = new $classname($row["id"], $row["name"], $row["comment"]); + $group = new $classname((int) $row["id"], $row["name"], $row["comment"]); $group->setDMS($this->_dms); array_push($this->_groups, $group); } @@ -1137,7 +1137,7 @@ class SeedDMS_Core_User { /* {{{ */ $classname = $this->_dms->getClassname('document'); foreach ($resArr as $row) { /** @var SeedDMS_Core_Document $document */ - $document = new $classname($row["id"], $row["name"], $row["comment"], $row["date"], $row["expires"], $row["owner"], $row["folder"], $row["inheritAccess"], $row["defaultAccess"], $row["lockUser"], $row["keywords"], $row["sequence"]); + $document = new $classname((int) $row["id"], $row["name"], $row["comment"], $row["date"], $row["expires"], $row["owner"], $row["folder"], $row["inheritAccess"], $row["defaultAccess"], $row["lockUser"], $row["keywords"], $row["sequence"]); $document->setDMS($this->_dms); $documents[] = $document; } @@ -1165,7 +1165,7 @@ class SeedDMS_Core_User { /* {{{ */ $classname = $this->_dms->getClassname('document'); foreach ($resArr as $row) { /** @var SeedDMS_Core_Document $document */ - $document = new $classname($row["id"], $row["name"], $row["comment"], $row["date"], $row["expires"], $row["owner"], $row["folder"], $row["inheritAccess"], $row["defaultAccess"], $row["lockUser"], $row["keywords"], $row["sequence"]); + $document = new $classname((int) $row["id"], $row["name"], $row["comment"], $row["date"], $row["expires"], $row["owner"], $row["folder"], $row["inheritAccess"], $row["defaultAccess"], $row["lockUser"], $row["keywords"], $row["sequence"]); $document->setDMS($this->_dms); $documents[] = $document; } @@ -1407,7 +1407,7 @@ class SeedDMS_Core_User { /* {{{ */ $result = array(); if (count($resArr)>0) { foreach ($resArr as $res) { - $result[] = $this->_dms->getWorkflow($res['id']); + $result[] = $this->_dms->getWorkflow((int) $res['id']); } } @@ -1748,7 +1748,7 @@ class SeedDMS_Core_User { /* {{{ */ $categories = array(); foreach ($resArr as $row) { - $cat = new SeedDMS_Core_KeywordCategory($row["id"], $row["owner"], $row["name"]); + $cat = new SeedDMS_Core_KeywordCategory((int) $row["id"], $row["owner"], $row["name"]); $cat->setDMS($this->_dms); array_push($categories, $cat); } diff --git a/SeedDMS_Core/Core/inc.FileUtils.php b/SeedDMS_Core/Core/inc.FileUtils.php index dc6238063..2001ea316 100644 --- a/SeedDMS_Core/Core/inc.FileUtils.php +++ b/SeedDMS_Core/Core/inc.FileUtils.php @@ -93,13 +93,12 @@ class SeedDMS_Core_File { * @return bool|int */ static function parse_filesize($str) { /* {{{ */ - preg_replace('/\s\s+/', ' ', $str); - if(strtoupper(substr($str, -1)) == 'B') { - $value = (int) substr($str, 0, -2); - $unit = substr($str, -2, 1); - } else { + preg_replace('/\s\s+/', '', $str); + if(in_array(strtoupper(substr($str, -1)), array('B','K','M','G'))) { $value = (int) substr($str, 0, -1); - $unit = substr($str, -1); + $unit = substr($str, -1, 1); + } else { + return (int) $str; } switch(strtoupper($unit)) { case 'G': diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index e8364dc0c..26d73bf1f 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -12,11 +12,11 @@ uwe@steinmann.cx yes - 2020-05-22 + 2020-05-28 - 5.1.17 - 5.1.17 + 5.1.18 + 5.1.18 stable @@ -24,9 +24,9 @@ GPL License -- add new callback onSetStatus -- fix SeedDMS_Core_DMS::getExpiredDocuments(), sql statement failed because temp. tables were not created -- add parameters $orderdir, $orderby, $update to SeedDMS_Core::getExpiredDocuments() +- fixed remaining todos +- fixed parsing of file size in SeedDMS_Core_File::parse_filesize() +- fix SeedDMS_Core_DMS::getDocumentByOriginalFilename() @@ -1765,5 +1765,23 @@ add method SeedDMS_Core_DatabaseAccess::setLogFp() - better error checking in SeedDMS_Core_Document::addDocumentFile() + + 2020-05-22 + + + 5.1.17 + 5.1.17 + + + stable + stable + + GPL License + +- add new callback onSetStatus +- fix SeedDMS_Core_DMS::getExpiredDocuments(), sql statement failed because temp. tables were not created +- add parameters $orderdir, $orderby, $update to SeedDMS_Core::getExpiredDocuments() + + diff --git a/controllers/class.AddDocument.php b/controllers/class.AddDocument.php index 2b9942c86..370cfb253 100644 --- a/controllers/class.AddDocument.php +++ b/controllers/class.AddDocument.php @@ -74,19 +74,20 @@ class SeedDMS_Controller_AddDocument extends SeedDMS_Controller_Common { } } } - $attributes_version = $this->getParam('attributesversion'); - foreach($attributes_version as $attrdefid=>$attribute) { - if($attrdef = $dms->getAttributeDefinition($attrdefid)) { - if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { - if($attribute) { - if(!$attrdef->validate($attribute)) { - $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); - return false; + if($attributes_version = $this->getParam('attributesversion')) { + foreach($attributes_version as $attrdefid=>$attribute) { + if($attrdef = $dms->getAttributeDefinition($attrdefid)) { + if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { + if($attribute) { + if(!$attrdef->validate($attribute)) { + $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); + return false; + } + } + } else { + if($ret === false) + return false; } - } - } else { - if($ret === false) - return false; } } } diff --git a/controllers/class.UserListCsv.php b/controllers/class.UserListCsv.php new file mode 100644 index 000000000..5debafc6e --- /dev/null +++ b/controllers/class.UserListCsv.php @@ -0,0 +1,56 @@ + + * @copyright Copyright (C) 2010-2013 Uwe Steinmann + * @version Release: @package_version@ + */ + +/** + * Class which does the busines logic for export a list of all users as csv + * + * @category DMS + * @package SeedDMS + * @author Uwe Steinmann + * @copyright Copyright (C) 2010-2013 Uwe Steinmann + * @version Release: @package_version@ + */ +class SeedDMS_Controller_UserListCsv extends SeedDMS_Controller_Common { + + public function run() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $settings = $this->params['settings']; + + $allUsers = $dms->getAllUsers($settings->_sortUsersInList); + $m = 0; + foreach($allUsers as $u) { + $m = max($m, count($u->getGroups())); + } + $fp = fopen("php://temp/maxmemory", 'r+'); + $header = array('login', 'name', 'email', 'comment', 'role', 'quota', 'homefolder'); + for($i=1; $i<=$m; $i++) + $header[] = 'group_'.$i; + fputcsv($fp, $header, ';'); + foreach($allUsers as $u) { + $data = array($u->getLogin(), $u->getFullName(), $u->getEmail(), $u->getComment(), $u->isAdmin() ? 'admin' : ($u->isGuest() ? 'guest' : 'user'), $u->getQuota(), $u->getHomeFolder() ? $u->getHomeFolder() : ''); + foreach($u->getGroups() as $g) + $data[] = $g->getName(); + fputcsv($fp, $data, ';'); + } + $efilename = 'userlist-'.date('Ymd-His').'.csv'; + header("Content-Type: text/csv"); + header("Content-Disposition: attachment; filename=\"" . $efilename . "\"; filename*=UTF-8''".$efilename); +// header("Content-Length: " . filesize($name)); + fseek($fp, 0); + fpassthru($fp); + fclose($fp); + return true; + } /* }}} */ + +} diff --git a/doc/README.Install.md b/doc/README.Install.md index d70acd0fc..39cf13fec 100644 --- a/doc/README.Install.md +++ b/doc/README.Install.md @@ -16,21 +16,22 @@ Here is a detailed list of requirements: 1. A web server with at least php 7.0 2. A mysql database, unless you use sqlite -3. The php installation must have support for `pdo_mysql` or `pdo_sqlite`, - `php_gd2`, `php_mbstring` -4. Various command line programms to convert files into text for indexing +3. The php installation must have support for `pdo_mysql`, `pdo_pgsql` or `pdo_sqlite`, + `php_gd2`, `php_mbstring`, `php_xml` +4. Depending on the configuration the extensions `php_ldap`, `php_mycrypt`, + `php_gmp`, `php_libsodium`must be installed +5. Various command line programms to convert files into text for indexing pdftotext, catdoc, xls2csv or scconvert, cat, id3 (optional, only needed for fulltext search) -5. ImageMagic (the convert program) is needed for creating preview images -6. The Zend Framework (version 1) (optional, only needed for fulltext search) -7. The pear Log and Mail package -8. The pear HTTP_WebDAV_Server package (optional, only need for webdav) -9. SLIM RestApi -10. FeedWriter from https://github.com/mibe/FeedWriter +6. ImageMagic (the convert program) is needed for creating preview images +7. A bunch of packages from Packagist which all ship with the seeddms-quickstart + archive -It is highly recommended to use the quickstart archive (seeddms-quickstart-x.y.z.tar.gz) -because it includes all software packages for running SeedDMS, though you still need -a working web server with PHP and a mysql database unless you intend to use sqlite. +It is highly recommended to use the quickstart archive +(seeddms-quickstart-x.y.z.tar.gz) because it includes all software packages +(excluding those listing above in item 1. to 6.) for running SeedDMS. Hence, +you still need a working web server with PHP and a mysql or postgres database +unless you intend to use sqlite. QUICKSTART =========== @@ -45,7 +46,11 @@ below `seeddms51x` or add an alias. For apache this could be like Alias /seeddms51x //seeddms51x/www -Do not set the DocumentRoot to +or even + +Alias /mydms //seeddms51x/www + +Do not set the DocumentRoot or Alias to the `seeddms51x` directory, because this will allow anybody to access your `data` and `conf` directory. This is a major security risk. diff --git a/ext/example/class.example.php b/ext/example/class.example.php index 7d19e4338..8660d10fe 100644 --- a/ext/example/class.example.php +++ b/ext/example/class.example.php @@ -37,8 +37,8 @@ class SeedDMS_ExtExample extends SeedDMS_ExtBase { * * Use this method to do some initialization like setting up the hooks * You have access to the following global variables: - * $GLOBALS['settings'] : current global configuration - * $GLOBALS['settings']->_extensions['example'] : configuration of this extension + * $this->settings : current global configuration + * $this->settings->_extensions['example'] : configuration of this extension * $GLOBALS['LANG'] : the language array with translations for all languages * $GLOBALS['SEEDDMS_HOOKS'] : all hooks added so far */ diff --git a/inc/inc.ClassExtBase.php b/inc/inc.ClassExtBase.php index d9cd0602c..1c63891b6 100644 --- a/inc/inc.ClassExtBase.php +++ b/inc/inc.ClassExtBase.php @@ -29,4 +29,9 @@ * @package SeedDMS */ class SeedDMS_ExtBase { + var $settings; + + public function __construct($settings) { + $this->settings = $settings; + } } diff --git a/inc/inc.ClassExtensionMgr.php b/inc/inc.ClassExtensionMgr.php index 1776eb79f..b65cec291 100644 --- a/inc/inc.ClassExtensionMgr.php +++ b/inc/inc.ClassExtensionMgr.php @@ -255,6 +255,9 @@ class SeedDMS_Extension_Mgr { // Ignore "." and ".." folders if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) ) continue; + // Ignore all files and directories starting with a '.' + if( preg_match('#/\\.#', $file) ) + continue; $file = realpath($file); diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 7965fc619..d040cbb02 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -68,6 +68,12 @@ class Settings { /* {{{ */ var $_cookieLifetime = ''; // default access mode for documents var $_defaultAccessDocs = ''; + // api key for restapi + var $_apiKey = ''; + // api user id for restapi + var $_apiUserId = 0; + // api allowed origins for restapi + var $_apiOrigin = ''; // Strict form checking var $_strictFormCheck = false; // list of form fields which are visible by default but can be explixitly @@ -656,6 +662,9 @@ class Settings { /* {{{ */ $tab = $node[0]->attributes(); $this->_guestID = intval($tab["guestID"]); $this->_adminIP = strval($tab["adminIP"]); + $this->_apiKey = strval($tab["apiKey"]); + $this->_apiUserId = intval($tab["apiUserId"]); + $this->_apiOrigin = strval($tab["apiOrigin"]); } // XML Path: /configuration/advanced/edition @@ -985,6 +994,9 @@ class Settings { /* {{{ */ $node = $this->getXMLNode($xml, '/configuration/advanced', 'authentication'); $this->setXMLAttributValue($node, "guestID", $this->_guestID); $this->setXMLAttributValue($node, "adminIP", $this->_adminIP); + $this->setXMLAttributValue($node, "apiKey", $this->_apiKey); + $this->setXMLAttributValue($node, "apiUserId", $this->_apiUserId); + $this->setXMLAttributValue($node, "apiOrigin", $this->_apiOrigin); // XML Path: /configuration/advanced/edition $node = $this->getXMLNode($xml, '/configuration/advanced', 'edition'); diff --git a/inc/inc.Extension.php b/inc/inc.Extension.php index 3fff1f770..fb525c44c 100644 --- a/inc/inc.Extension.php +++ b/inc/inc.Extension.php @@ -43,7 +43,7 @@ foreach($extMgr->getExtensionConfiguration() as $extname=>$extconf) { $classfile = $settings->_rootDir."/ext/".$extname."/".$extconf['class']['file']; if(file_exists($classfile)) { include($classfile); - $obj = new $extconf['class']['name']; + $obj = new $extconf['class']['name']($settings); if(method_exists($obj, 'init')) $obj->init(isset($settings->_extensions[$extname]) ? $settings->_extensions[$extname] : null); } diff --git a/inc/inc.Settings.php b/inc/inc.Settings.php index 75f124709..659b202d3 100644 --- a/inc/inc.Settings.php +++ b/inc/inc.Settings.php @@ -75,6 +75,7 @@ if($settings->_enableFullSearch) { require_once('SeedDMS/Lucene.php'); } } +$settings->_indexconf = $indexconf; /* Add root Dir. Needed because the view classes are included * relative to it. diff --git a/inc/inc.Version.php b/inc/inc.Version.php index d564f80df..926d248a0 100644 --- a/inc/inc.Version.php +++ b/inc/inc.Version.php @@ -20,7 +20,7 @@ class SeedDMS_Version { /* {{{ */ - const _number = "5.1.17"; + const _number = "5.1.18"; const _string = "SeedDMS"; function __construct() { diff --git a/index.php b/index.php index c70f392f0..3698d0757 100644 --- a/index.php +++ b/index.php @@ -26,7 +26,6 @@ if(true) { include("inc/inc.Init.php"); include("inc/inc.Extension.php"); include("inc/inc.DBInit.php"); -// include("inc/inc.Authentication.php"); require "vendor/autoload.php"; @@ -56,6 +55,11 @@ if(true) { foreach($GLOBALS['SEEDDMS_HOOKS']['initDMS'] as $hookObj) { if (method_exists($hookObj, 'addRoute')) { $hookObj->addRoute(array('dms'=>$dms, 'app'=>$app, 'settings'=>$settings)); + } else { + include("inc/inc.Authentication.php"); + if (method_exists($hookObj, 'addRouteAfterAuthentication')) { + $hookObj->addRouteAfterAuthentication(array('dms'=>$dms, 'app'=>$app, 'settings'=>$settings, 'user'=>$user)); + } } } } diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index b7413aa43..a7c438431 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2263) +// Translators: Admin (2264) $text = array( '2_factor_auth' => 'توثيق ذو عاملين', @@ -282,6 +282,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'هل تود حقا ازالة كل الملفات الموجودة بالمجلد "[foldername]" وكل مافي المجلدات الفرعية؟
كن حذرا: هذا الاجراء لايمكن التراجع فيه', 'confirm_rm_group' => 'هل تود حقا ازالة المجموعة "[groupname]"?
كن حذرا: هذا الاجراء لايمكن التراجع فيه', 'confirm_rm_log' => 'هل تود حقا ازالة ملف السجل "[logname]"?
كن حذرا: هذا الاجراء لايمكن التراجع فيه', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'تاكيد ازالة الإحالة', 'confirm_rm_transmittalitem' => 'تاكيد ازالة حاجة الإحالة', 'confirm_rm_user' => 'هل تود حقا ازالة المستخدم "[username]"?
كن حذرا: هذا الاجراء لايمكن التراجع فيه', @@ -306,6 +307,7 @@ URL: [url]', 'current_version' => 'الإصدار الحالي', 'daily' => 'يومي', 'databasesearch' => 'بحث قاعدة البيانات', +'database_schema_version' => '', 'date' => 'تاريخ', 'days' => 'أيام', 'debug' => 'debug', @@ -532,6 +534,7 @@ Parent folder: [folder_path] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - تم تغيير تاريخ الصلاحية', 'export' => 'تصدير', +'export_user_list_csv' => '', 'extension_archive' => 'إرشيف أطول', 'extension_changelog' => 'سجل التعديلات', 'extension_loading' => 'تحميل الإضافات', @@ -637,6 +640,9 @@ URL: [url]', 'import_extension' => 'استيراد إضافات', 'import_fs' => 'نسخ من ملف النظام', 'import_fs_warning' => 'تحذير النسخ من ملف النظام', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'إضافة المحتوى', 'include_documents' => 'اشمل مستندات', 'include_subdirectories' => 'اشمل مجلدات فرعية', @@ -655,6 +661,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'نسخ قائمة صلاحيات موروثة.', 'inherits_access_empty_msg' => 'ابدأ بقائمة صلاحيات فارغة', 'inherits_access_msg' => 'الصلاحيات موروثة.', +'installed_php_extensions' => '', 'internal_error' => 'خطأ داخلي', 'internal_error_exit' => 'خطأ داخلي. عدم الاستطاعة لاستكمال الطلب. خروج', 'invalid_access_mode' => 'حالة دخول غير صحيحة', @@ -770,6 +777,7 @@ URL: [url]', 'missing_checksum' => 'فحص الأخطاء مفقود', 'missing_file' => 'الملف غير موجود', 'missing_filesize' => 'حجم الملف مفقود', +'missing_php_extensions' => '', 'missing_reception' => 'الإستقبال غير موجود', 'missing_request_object' => 'طلب شيء غير موجود', 'missing_transition_user_group' => 'مستخدم/مجموعة مفقودة للتحول', @@ -786,7 +794,7 @@ URL: [url]', 'my_documents' => 'مستنداتي', 'my_transmittals' => 'الإحالات الخاصة بي', 'name' => 'اسم', -'nb_NO' => '', +'nb_NO' => 'ﺎﻠﻧﺭﻮﻴﺟ', 'needs_correction' => 'يحتاج الى تصحيح', 'needs_workflow_action' => 'هذا المستند يتطلب انتباهك . من فضلك تفقد زر مسار العمل', 'network_drive' => 'قرص النترنت', @@ -921,6 +929,7 @@ URL: [url]', 'pending_revision' => 'إنتظار المراجعة', 'pending_workflows' => 'إنتظار سير العمل', 'personal_default_keywords' => 'قوائم الكلمات البحثية الشخصية', +'php_info' => '', 'pl_PL' => 'البولندية', 'possible_substitutes' => 'بدلاء متاحين', 'preset_expires' => 'تاريخ الإنتهاء', @@ -1082,6 +1091,7 @@ URL: [url]', 'rm_from_clipboard' => 'ازالة من لوحة القصاصات', 'rm_group' => 'ازالة هذه المجموعة', 'rm_role' => 'ازالة دور', +'rm_task' => '', 'rm_transmittal' => 'ازالة محول', 'rm_transmittalitem' => 'ازالة حاجة المحول', 'rm_user' => 'ازالة هذا المستخدم', @@ -1136,6 +1146,8 @@ URL: [url]', 'search_results_access_filtered' => 'نتائج البحث من الممكن ان تحتوى بعد المستندات التى ليس لديك صلاحية اليها', 'search_time' => 'الوقت المتبقي: [time] sec.', 'seconds' => 'ثواني', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'اختيار', 'select_attrdefgrp_show' => 'حدد معرف سمة المجموعة', 'select_attribute_value' => 'اختيار سمة الرقم', @@ -1189,6 +1201,12 @@ URL: [url]', 'settings_allowReviewerOnly' => 'السماح بالمراجع فقط', 'settings_allowReviewerOnly_desc' => 'السماح بالمراجع فقط', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'المصادقة', 'settings_autoLoginUser' => 'تسجيل الدخول التلقائي', 'settings_autoLoginUser_desc' => 'تسجيل الدخول التلقائي', @@ -1569,6 +1587,7 @@ URL: [url]', 'splash_add_group' => 'اضافة مجموعة', 'splash_add_group_member' => 'اضافة مستخدم الى المجموعة', 'splash_add_role' => 'اضافة دور', +'splash_add_task' => '', 'splash_add_to_transmittal' => 'اضافة إلى الإحالة', 'splash_add_transmittal' => 'إضافة إحالة', 'splash_add_user' => 'اضافة مستخدم', @@ -1797,6 +1816,7 @@ URL: [url]', 'uploading_zerosize' => 'تحميل ملف فارغ. عملية التحميل الغيت', 'used_discspace' => 'المساحة المستخدمة', 'user' => 'مستخدم', +'userdata_file' => '', 'userid_groupid' => 'هوية المجموعة', 'users' => 'مستخدمين', 'users_and_groups' => 'مستخدمين ومجموعات', @@ -1864,6 +1884,7 @@ URL: [url]', 'workflow_state_in_use' => 'هذه الحالة مستخدمة من قبل مسار عمل', 'workflow_state_name' => 'اسم', 'workflow_summary' => 'ملخص مسار العمل', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'تحويل سير العمل بدون استخدام مستخدم من المجموعة', 'workflow_user_summary' => 'ملخص المستخدم', 'wrong_filetype' => '', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 86ea1e7d3..28df8365a 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (862) +// Translators: Admin (863) $text = array( '2_factor_auth' => '', @@ -265,6 +265,7 @@ $text = array( 'confirm_rm_folder_files' => 'Изтрий всички файлове в папка "[foldername]" и нейните подпапки?
Действието е перманентно', 'confirm_rm_group' => 'Изтрий група "[groupname]"?
Действието е перманентно', 'confirm_rm_log' => 'Изтрий лог "[logname]"?
Действието е перманентно', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => '', 'confirm_rm_user' => 'Изтрий потребител "[username]"?
Действието е перманентно', @@ -289,6 +290,7 @@ $text = array( 'current_version' => 'Текуща версия', 'daily' => 'Ежедневно', 'databasesearch' => 'Търсене по БД', +'database_schema_version' => '', 'date' => 'Дата', 'days' => 'дни', 'debug' => '', @@ -481,6 +483,7 @@ $text = array( 'expiry_changed_email_body' => '', 'expiry_changed_email_subject' => '', 'export' => '', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => '', 'extension_loading' => '', @@ -566,6 +569,9 @@ $text = array( 'import_extension' => '', 'import_fs' => 'добави от файловата система', 'import_fs_warning' => '', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => '', 'include_documents' => 'Включи документи', 'include_subdirectories' => 'Включи под-папки', @@ -584,6 +590,7 @@ $text = array( 'inherits_access_copy_msg' => 'Изкопирай наследения список', 'inherits_access_empty_msg' => 'Започни с празен списък за достъп', 'inherits_access_msg' => 'достъпът наследен.', +'installed_php_extensions' => '', 'internal_error' => 'Вътрешна грешка', 'internal_error_exit' => 'Вътрешна грешка. Невозможно е да се изпълни запитването.', 'invalid_access_mode' => 'Неправилно ниво на достъп', @@ -699,6 +706,7 @@ $text = array( 'missing_checksum' => 'липсва контролна сума', 'missing_file' => '', 'missing_filesize' => 'липсва размер на файла', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => 'липсва потребител или група за преход', @@ -820,10 +828,11 @@ $text = array( 'pending_revision' => '', 'pending_workflows' => '', 'personal_default_keywords' => 'Личен списък с ключови думи', +'php_info' => '', 'pl_PL' => 'Полски', 'possible_substitutes' => '', 'preset_expires' => '', -'preview' => '', +'preview' => 'Преглед', 'preview_converters' => '', 'preview_images' => '', 'preview_markdown' => '', @@ -952,6 +961,7 @@ $text = array( 'rm_from_clipboard' => 'Премахни от clipboard буфера', 'rm_group' => 'Премахни тази група', 'rm_role' => '', +'rm_task' => '', 'rm_transmittal' => '', 'rm_transmittalitem' => '', 'rm_user' => 'Премахни тоз потребител', @@ -999,6 +1009,8 @@ $text = array( 'search_results_access_filtered' => 'Резултатите от търсенето могат да съдържат объекти за които нямате достъп', 'search_time' => 'Изминаха: [time] sec.', 'seconds' => 'секунди', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Избор', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1052,6 +1064,12 @@ $text = array( 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Настройки на автентификацията', 'settings_autoLoginUser' => '', 'settings_autoLoginUser_desc' => '', @@ -1432,6 +1450,7 @@ $text = array( 'splash_add_group' => '', 'splash_add_group_member' => '', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => '', @@ -1651,6 +1670,7 @@ $text = array( 'uploading_zerosize' => 'Качване на празен файл/размер=0. Качването прекратено.', 'used_discspace' => 'Използвано дисково пространство', 'user' => 'Потребител', +'userdata_file' => '', 'userid_groupid' => '', 'users' => 'Потребители', 'users_and_groups' => '', @@ -1713,6 +1733,7 @@ $text = array( 'workflow_state_in_use' => 'Този статус текущо се използва от процесите.', 'workflow_state_name' => 'Име', 'workflow_summary' => 'Резюме за процес', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Резюме за потребител', 'wrong_filetype' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index f2b1b34d5..9c6797c5c 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (752) +// Translators: Admin (758) $text = array( '2_factor_auth' => '', @@ -270,6 +270,7 @@ URL: [url]', 'confirm_rm_folder_files' => '¿Vol realment eliminar tots els fitxers de la carpeta "[foldername]" i de les seves subcarpetes?
Atenció: aquesta acció no es pot desfer.', 'confirm_rm_group' => '¿Vol realment eliminar el grup "[groupname]"?
atenció: aquesta acció no es pot desfer.', 'confirm_rm_log' => '¿Vol realment eliminar el fitxer de registre "[logname]"?
Atenció: aquesta acció no es pot desfer.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => '', 'confirm_rm_user' => '¿Vol realment eliminar l\'usuari "[username]"?
Atenció: aquesta acció no es pot desfer.', @@ -294,6 +295,7 @@ URL: [url]', 'current_version' => 'Versió actual', 'daily' => 'Daily', 'databasesearch' => 'Database search', +'database_schema_version' => '', 'date' => 'Data', 'days' => '', 'debug' => '', @@ -472,20 +474,21 @@ URL: [url]', 'expired_at_date' => '', 'expired_documents' => '', 'expires' => 'Caduca', -'expire_by_date' => '', +'expire_by_date' => 'Expiració segons data', 'expire_in_1d' => '', 'expire_in_1h' => '', -'expire_in_1m' => '', -'expire_in_1w' => '', -'expire_in_1y' => '', +'expire_in_1m' => 'Expira en un mes', +'expire_in_1w' => 'Expira en una setmana', +'expire_in_1y' => 'Expira en un any', 'expire_in_2h' => '', -'expire_in_2y' => '', +'expire_in_2y' => 'Expira en dos anys', 'expire_today' => '', 'expire_tomorrow' => '', 'expiry_changed_email' => 'Data de caducitat modificada', 'expiry_changed_email_body' => '', 'expiry_changed_email_subject' => '', 'export' => '', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => '', 'extension_loading' => '', @@ -571,6 +574,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => 'Importa del sistema d\'arxius', 'import_fs_warning' => 'Només funciona arrastrant carpetes.La operació importarà recursivament totes les carpetes i arxius.', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => '', 'include_documents' => 'Incloure documents', 'include_subdirectories' => 'Incloure subdirectoris', @@ -589,6 +595,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Copiar llista d\'accés heretat', 'inherits_access_empty_msg' => 'Començar amb una llista d\'accés buida', 'inherits_access_msg' => 'Accés heretat', +'installed_php_extensions' => '', 'internal_error' => 'Error intern', 'internal_error_exit' => 'Error intern. No és possible acabar la sol.licitud.', 'invalid_access_mode' => 'No és valid el mode d\'accés', @@ -645,7 +652,7 @@ URL: [url]', 'keep' => '', 'keep_doc_status' => '', 'keywords' => 'Mots clau', -'keywords_loading' => '', +'keywords_loading' => 'Espera fins que la llista de paraules clau s\'hagi carregat...', 'keyword_exists' => 'El mot clau ja existeix', 'ko_KR' => 'Coreà', 'language' => 'Llenguatge', @@ -704,6 +711,7 @@ URL: [url]', 'missing_checksum' => '', 'missing_file' => '', 'missing_filesize' => '', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => '', @@ -825,6 +833,7 @@ URL: [url]', 'pending_revision' => '', 'pending_workflows' => '', 'personal_default_keywords' => 'Mots clau personals', +'php_info' => '', 'pl_PL' => 'Polonès', 'possible_substitutes' => '', 'preset_expires' => '', @@ -957,6 +966,7 @@ URL: [url]', 'rm_from_clipboard' => '', 'rm_group' => 'Eliminar aquest grup', 'rm_role' => '', +'rm_task' => '', 'rm_transmittal' => '', 'rm_transmittalitem' => '', 'rm_user' => 'Eliminar aquest usuari', @@ -1004,6 +1014,8 @@ URL: [url]', 'search_results_access_filtered' => 'Els resultats de la cerca podrien incloure continguts amb l\'accés denegat.', 'search_time' => 'Temps transcorregut: [time] seg.', 'seconds' => '', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Selecció', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1057,6 +1069,12 @@ URL: [url]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => '', 'settings_autoLoginUser' => '', 'settings_autoLoginUser_desc' => '', @@ -1437,6 +1455,7 @@ URL: [url]', 'splash_add_group' => '', 'splash_add_group_member' => '', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => '', @@ -1656,6 +1675,7 @@ URL: [url]', 'uploading_zerosize' => '', 'used_discspace' => 'Espai utilitzat', 'user' => 'Usuari', +'userdata_file' => '', 'userid_groupid' => '', 'users' => 'Usuaris', 'users_and_groups' => '', @@ -1718,6 +1738,7 @@ URL: [url]', 'workflow_state_in_use' => '', 'workflow_state_name' => '', 'workflow_summary' => '', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => '', 'wrong_filetype' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 8d1e815ae..e6a0e6837 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Opravdu chcete odstranit všechny soubory z podsložky "[foldername]" ?
Buďte opatrní: Tuto akci nelze vrátit zpět.', 'confirm_rm_group' => 'Opravdu chcete odstranit skupinu "[groupname]"?
Pozor: Akce je nevratná.', 'confirm_rm_log' => 'Opravdu chcete odstranit LOG soubor "[logname]"?
Pozor: Akci nelze vrátit zpět.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'Potvrďte prosím smazání přenosu.', 'confirm_rm_transmittalitem' => 'Potvrďte odstranění', 'confirm_rm_user' => 'Opravdu chcete odstranit uživatele "[username]"?
Pozor: Akce je nevratná.', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Aktuální verze', 'daily' => 'Denně', 'databasesearch' => 'Vyhledání v databázi', +'database_schema_version' => '', 'date' => 'Datum', 'days' => 'dny', 'debug' => 'odstranění chyb kódu', @@ -556,6 +558,7 @@ Uživatel: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Datum ukončení platnosti změněn', 'export' => 'export', +'export_user_list_csv' => '', 'extension_archive' => 'Rozšíření', 'extension_changelog' => 'Changelog', 'extension_loading' => 'Načítání rozšíření', @@ -668,6 +671,9 @@ URL: [url]', 'import_extension' => 'Importovat rozšíření', 'import_fs' => 'Nahrát ze souborového systému', 'import_fs_warning' => 'To bude fungovat pouze pro složky ve vhazovací složce. Operace rekurzivně importuje všechny složky a soubory. Soubory budou okamžitě uvolněny.', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'Včetně obsahu', 'include_documents' => 'Včetně dokumentů', 'include_subdirectories' => 'Včetně podadresářů', @@ -686,6 +692,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Zkopírovat zděděný seznam řízení přístupu', 'inherits_access_empty_msg' => 'Založit nový seznam řízení přístupu', 'inherits_access_msg' => 'Přístup se dědí.', +'installed_php_extensions' => '', 'internal_error' => 'Vnitřní chyba', 'internal_error_exit' => 'Vnitřní chyba. Nebylo možné dokončit požadavek. Ukončuje se.', 'invalid_access_mode' => 'Neplatný režim přístupu', @@ -801,6 +808,7 @@ URL: [url]', 'missing_checksum' => 'Chybějící kontrolní součet', 'missing_file' => 'Chybějící soubor', 'missing_filesize' => 'Chybějící velikost souboru', +'missing_php_extensions' => '', 'missing_reception' => 'Chybějící recepce', 'missing_request_object' => 'Chybějící požadovaný objekt', 'missing_transition_user_group' => 'Chybějící uživatel / skupina pro transformaci', @@ -956,6 +964,7 @@ Pokud budete mít problém s přihlášením i po změně hesla, kontaktujte Adm 'pending_revision' => 'Probíhá revize', 'pending_workflows' => 'Čekající workflows', 'personal_default_keywords' => 'Osobní klíčová slova', +'php_info' => '', 'pl_PL' => 'Polština', 'possible_substitutes' => 'zástupci', 'preset_expires' => 'Přednastavená expirace', @@ -1149,6 +1158,7 @@ URL: [url]', 'rm_from_clipboard' => 'Odstranit ze schránky', 'rm_group' => 'Odstranit tuto skupinu', 'rm_role' => 'Odstranit tuto roli', +'rm_task' => '', 'rm_transmittal' => 'Odstranit přenos', 'rm_transmittalitem' => 'Odstranit položku přenosu', 'rm_user' => 'Odstranit tohoto uživatele', @@ -1203,6 +1213,8 @@ URL: [url]', 'search_results_access_filtered' => 'Výsledky hledání můžou obsahovat obsah, ke kterému byl zamítnut přístup.', 'search_time' => 'Uplynulý čas: [time] sek', 'seconds' => 'sekundy', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Výběr', 'select_attrdefgrp_show' => 'Vybrat, kdy chcete zobrazit', 'select_attribute_value' => 'Vybrat hodnotu atributu', @@ -1261,6 +1273,12 @@ Jméno: [username] 'settings_allowReviewerOnly' => 'Nastavit pouze recenzenta', 'settings_allowReviewerOnly_desc' => 'Aktivujte, pokud má být nastaven pouze recenzent, ale žádný schvalovatel v tradičním režimu workflow.', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Nastavení autentizace', 'settings_autoLoginUser' => 'Automatické přihlášení', 'settings_autoLoginUser_desc' => 'Toto uživatelské ID použijte pro přístup, pokud uživatel ještě není přihlášen. Takový přístup nebude vytvářet relaci.', @@ -1641,6 +1659,7 @@ Jméno: [username] 'splash_add_group' => 'Přidána nová skupina', 'splash_add_group_member' => 'Přidán nový člen skupiny', 'splash_add_role' => 'Přidána nová role', +'splash_add_task' => '', 'splash_add_to_transmittal' => 'Přidáno k přenosu', 'splash_add_transmittal' => 'Přidán přenos', 'splash_add_user' => 'Přidán nový uživatel', @@ -1869,6 +1888,7 @@ URL: [url]', 'uploading_zerosize' => 'Nahrávání prázdného souboru. Nahrání zrušeno.', 'used_discspace' => 'Použité místo na disku', 'user' => 'Uživatel', +'userdata_file' => '', 'userid_groupid' => 'ID uživatel/ID skupiny', 'users' => 'Uživatel', 'users_and_groups' => 'Uživatelé / Skupiny', @@ -1936,6 +1956,7 @@ URL: [url]', 'workflow_state_in_use' => 'Tento stav je použit ve workflow.', 'workflow_state_name' => 'Název stavu pracovního postupu', 'workflow_summary' => 'Souhrn workflow', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'Alespoň jedna z transformací pracovního postupu nemá uživatele ani skupinu!', 'workflow_user_summary' => 'Přehled uživatelů', 'wrong_filetype' => '', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 07a7ba8a3..54edeedae 100644 --- a/languages/de_DE/lang.inc +++ b/languages/de_DE/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2770), dgrutsch (22) +// Translators: Admin (2790), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Möchten Sie wirklich alle Dateien und Unterordner des Ordner "[foldername]" löschen?
Vorsicht: Diese Operation kann nicht rückgängig gemacht werden.', 'confirm_rm_group' => 'Möchten Sie wirklich die Gruppe "[groupname]" löschen?
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?
Beachten Sie, dass diese Operation nicht rückgängig gemacht werden kann.', +'confirm_rm_task' => 'Bitte bestätigen Sie die Löschung dieser Task.', '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?
Beachten Sie, dass diese Operation nicht rückgängig gemacht werden kann.', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Aktuelle Version', 'daily' => 'täglich', 'databasesearch' => 'Datenbanksuche', +'database_schema_version' => 'Version des Datenbankschemas', 'date' => 'Datum', 'days' => 'Tage', 'debug' => 'Debug', @@ -556,6 +558,7 @@ Benutzer: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Ablaufdatum geändert', 'export' => 'Export', +'export_user_list_csv' => 'Exportiere Benutzer als CSV-Datei', 'extension_archive' => 'Erweiterung', 'extension_changelog' => 'Versionshistorie', 'extension_loading' => 'Lade Erweiterungen ...', @@ -668,6 +671,9 @@ URL: [url]', 'import_extension' => 'Erweiterung importieren', 'import_fs' => 'Aus Dateisystem importieren', 'import_fs_warning' => 'Der Import kann nur für Ordner im Ablageordner erfolgen. Alle Ordner und Dateien werden rekursiv importiert. Dateien werden sofort freigegeben.', +'import_users' => 'Importiere Benutzer', +'import_users_addnew' => 'Neue Benutzer anlegen', +'import_users_update' => 'Aktualisiere bestehende Benutzer', 'include_content' => 'Inhalte mit exportieren', 'include_documents' => 'Dokumente miteinbeziehen', 'include_subdirectories' => 'Unterverzeichnisse miteinbeziehen', @@ -686,6 +692,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Berechtigungen kopieren', 'inherits_access_empty_msg' => 'Leere Zugriffsliste', 'inherits_access_msg' => 'Zur Zeit werden die Rechte geerbt', +'installed_php_extensions' => 'Installierte PHP-Erweiterungen', 'internal_error' => 'Interner Fehler', 'internal_error_exit' => 'Interner Fehler: Anfrage kann nicht ausgeführt werden.', 'invalid_access_mode' => 'Unzulässige Zugangsart', @@ -801,6 +808,7 @@ URL: [url]', 'missing_checksum' => 'Fehlende Check-Summe', 'missing_file' => 'Datei fehlt', 'missing_filesize' => 'Fehlende Dateigröße', +'missing_php_extensions' => 'Fehlende PHP-Erweiterungen', 'missing_reception' => 'Fehlende Empfangsbestätigung', 'missing_request_object' => 'Fehlendes Zugriffsobjekte', 'missing_transition_user_group' => 'Fehlende/r Benutzer/Gruppe für Transition', @@ -959,6 +967,7 @@ Sollen Sie danach immer noch Probleme bei der Anmeldung haben, dann kontaktieren 'pending_revision' => 'Ausstehende Wiederholungsprüfungen', 'pending_workflows' => 'Ausstehende Workflows', 'personal_default_keywords' => 'Persönliche Stichwortlisten', +'php_info' => 'Informationen über PHP', 'pl_PL' => 'Polnisch', 'possible_substitutes' => 'Vertreter', 'preset_expires' => 'Fester Ablaufzeitpunkt', @@ -1160,6 +1169,7 @@ URL: [url]', 'rm_from_clipboard' => 'Aus Zwischenablage löschen', 'rm_group' => 'Diese Gruppe löschen', 'rm_role' => 'Diese Rolle löschen', +'rm_task' => 'Task löschen', 'rm_transmittal' => 'Dokumentenliste entfernen', 'rm_transmittalitem' => 'Eintrag löschen', 'rm_user' => 'Benutzer löschen', @@ -1214,6 +1224,8 @@ URL: [url]', 'search_results_access_filtered' => 'Suchresultate können Inhalte enthalten, zu welchen der Zugang verweigert wurde.', 'search_time' => 'Dauer: [time] sek.', 'seconds' => 'Sekunden', +'seeddms_info' => 'Informationen über SeedDMS', +'seeddms_version' => 'SeedDMS Version', 'selection' => 'Auswahl', 'select_attrdefgrp_show' => 'Anzeigeort auswählen', 'select_attribute_value' => 'Attributwert auswählen', @@ -1272,6 +1284,12 @@ Name: [username] 'settings_allowReviewerOnly' => 'Erlaube nur Prüfer zu setzen', 'settings_allowReviewerOnly_desc' => 'Anwählen, um zu erlauben, dass nur ein Prüfer aber kein Freigeber beim traditionellen Workflow gesetzt werden darf.', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => 'Authentifizierungsschḻüssel für REST API', +'settings_apiKey_desc' => 'Dieser Schlüssel wird zur alternative Authentifizierung in der REST API verwendet. Wählen Sie eine 32 Zeichen lange Zeichenkette.', +'settings_apiOrigin' => 'Erlaubte Herkunft der API Aufrufe', +'settings_apiOrigin_desc' => 'Ein semicolonseparierte Liste von Adressen, denen ein Zugriff auf die REST API erlaubt ist. Jede Adresse muss in der Form ://[:] angegeben werden. Der Port kann ausgelassen werden. Bleibt dieses Feld leer, dann ist der Zugriff uneingeschränkt.', +'settings_apiUserId' => 'Benutzer für die REST API', +'settings_apiUserId_desc' => 'Dieser Benutzer wird für Zugriffe über die REST API genutzt, sofern eine Authentifizierung über den konifigurierten API Schlüssel erfolgt.', 'settings_Authentication' => 'Authentifikations-Einstellungen', 'settings_autoLoginUser' => 'Automatisches Login', 'settings_autoLoginUser_desc' => 'Verwende den Benutzer mit der angegebenen Id, sofern man nicht bereits angemeldet ist. Solch ein Zugriff erzeugt keine eigene Sitzung.', @@ -1652,6 +1670,7 @@ Name: [username] 'splash_add_group' => 'Neue Gruppe hinzugefügt', 'splash_add_group_member' => 'Neues Gruppenmitglied hinzugefügt', 'splash_add_role' => 'Neue Rolle hinzugefügt', +'splash_add_task' => 'Neuer Task hinzugefügt', 'splash_add_to_transmittal' => 'Zur Dokumentenliste hinzugefügt', 'splash_add_transmittal' => 'Dokumentenliste angelegt', 'splash_add_user' => 'Neuen Benutzer hinzugefügt', @@ -1880,6 +1899,7 @@ URL: [url]', 'uploading_zerosize' => 'Versuch eine leere Datei hochzuladen. Vorgang wird abgebrochen.', 'used_discspace' => 'Verbrauchter Speicherplatz', 'user' => 'Benutzer', +'userdata_file' => 'Benutzerdaten', 'userid_groupid' => 'Benutzer-ID/Gruppen-ID', 'users' => 'Benutzer', 'users_and_groups' => 'Benutzer/Gruppen', @@ -1947,6 +1967,7 @@ URL: [url]', 'workflow_state_in_use' => 'Dieser Status wird zur Zeit von einem Workflow verwendet.', 'workflow_state_name' => 'Name', 'workflow_summary' => 'Übersicht Workflows', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'Mindestens eine Transition hat weder einen Benutzer noch eine Gruppe zugewiesen!', 'workflow_user_summary' => 'Übersicht Benutzer', 'wrong_filetype' => 'Falscher Dateityp', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index 3a37f9b78..7b44ff13d 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -265,6 +265,7 @@ $text = array( 'confirm_rm_folder_files' => '', 'confirm_rm_group' => '', 'confirm_rm_log' => '', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => '', 'confirm_rm_user' => '', @@ -289,6 +290,7 @@ $text = array( 'current_version' => '', 'daily' => '', 'databasesearch' => '', +'database_schema_version' => '', 'date' => 'Ημερομηνία', 'days' => 'μέρες', 'debug' => '', @@ -481,6 +483,7 @@ $text = array( 'expiry_changed_email_body' => '', 'expiry_changed_email_subject' => '', 'export' => '', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => '', 'extension_loading' => '', @@ -566,6 +569,9 @@ $text = array( 'import_extension' => '', 'import_fs' => 'Εισαγωγή από το σύστημα', 'import_fs_warning' => '', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => '', 'include_documents' => '', 'include_subdirectories' => '', @@ -584,6 +590,7 @@ $text = array( 'inherits_access_copy_msg' => '', 'inherits_access_empty_msg' => '', 'inherits_access_msg' => '', +'installed_php_extensions' => '', 'internal_error' => 'Εσωτερικό λάθος', 'internal_error_exit' => '', 'invalid_access_mode' => '', @@ -699,6 +706,7 @@ $text = array( 'missing_checksum' => '', 'missing_file' => '', 'missing_filesize' => '', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => '', @@ -831,6 +839,7 @@ URL: [url]', 'pending_revision' => '', 'pending_workflows' => '', 'personal_default_keywords' => '', +'php_info' => '', 'pl_PL' => 'Πολωνικά', 'possible_substitutes' => '', 'preset_expires' => 'Λήξη προκαθορισμένης τιμής', @@ -963,6 +972,7 @@ URL: [url]', 'rm_from_clipboard' => '', 'rm_group' => '', 'rm_role' => '', +'rm_task' => '', 'rm_transmittal' => '', 'rm_transmittalitem' => '', 'rm_user' => 'Διαγραφή Χρήστη', @@ -1010,6 +1020,8 @@ URL: [url]', 'search_results_access_filtered' => '', 'search_time' => '', 'seconds' => 'δεύτερα', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Επιλογή', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1063,6 +1075,12 @@ URL: [url]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => '', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => '', 'settings_autoLoginUser' => '', 'settings_autoLoginUser_desc' => '', @@ -1443,6 +1461,7 @@ URL: [url]', 'splash_add_group' => '', 'splash_add_group_member' => '', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => '', @@ -1662,6 +1681,7 @@ URL: [url]', 'uploading_zerosize' => '', 'used_discspace' => 'Χώρος', 'user' => 'Χρήστης', +'userdata_file' => '', 'userid_groupid' => '', 'users' => 'Χρήστες', 'users_and_groups' => 'Χρήστες/Ομάδες', @@ -1724,6 +1744,7 @@ URL: [url]', 'workflow_state_in_use' => '', 'workflow_state_name' => 'Όνομα', 'workflow_summary' => '', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => '', 'wrong_filetype' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index d4a6ffc36..06b205b43 100644 --- a/languages/en_GB/lang.inc +++ b/languages/en_GB/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1876), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1897), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Do you really want to remove all the files of the folder "[foldername]" and of its subfolders?
Be careful: This action cannot be undone.', 'confirm_rm_group' => 'Do you really want to remove the group "[groupname]"?
Be careful: This action cannot be undone.', 'confirm_rm_log' => 'Do you really want to remove log file "[logname]"?
Be careful: This action cannot be undone.', +'confirm_rm_task' => 'Please confirm the removal of this task.', 'confirm_rm_transmittal' => 'Please confirm the deletion of the transmittal.', 'confirm_rm_transmittalitem' => 'Confirm removal', 'confirm_rm_user' => 'Do you really want to remove the user "[username]"?
Be careful: This action cannot be undone.', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Current version', 'daily' => 'Daily', 'databasesearch' => 'Database search', +'database_schema_version' => 'Version of database scheman', 'date' => 'Date', 'days' => 'days', 'debug' => 'Debug', @@ -556,6 +558,7 @@ User: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Expiry date changed', 'export' => 'Export', +'export_user_list_csv' => 'Export users as CSV', 'extension_archive' => 'Extension', 'extension_changelog' => 'Changelog', 'extension_loading' => 'Loading extensions ...', @@ -668,6 +671,9 @@ URL: [url]', 'import_extension' => 'Import extension', 'import_fs' => 'Import from filesystem', 'import_fs_warning' => 'This will only work for folders in the drop folder. The operation recursively imports all folders and files. Files will be released immediately.', +'import_users' => 'Import users', +'import_users_addnew' => 'Add new users', +'import_users_update' => 'Update existing users', 'include_content' => 'Include content', 'include_documents' => 'Include documents', 'include_subdirectories' => 'Include subdirectories', @@ -686,6 +692,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Copy inherited access list', 'inherits_access_empty_msg' => 'Start with empty access list', 'inherits_access_msg' => 'Access is being inherited.', +'installed_php_extensions' => 'Installed php extensions', 'internal_error' => 'Internal error', 'internal_error_exit' => 'Internal error. Unable to complete request.', 'invalid_access_mode' => 'Invalid Access Mode', @@ -801,6 +808,7 @@ URL: [url]', 'missing_checksum' => 'Missing checksum', 'missing_file' => 'Missing file', 'missing_filesize' => 'Missing filesize', +'missing_php_extensions' => 'Missing php extensions', 'missing_reception' => 'Missing reception', 'missing_request_object' => 'Missing request object', 'missing_transition_user_group' => 'Missing user/group for transition', @@ -960,6 +968,7 @@ If you have still problems to login, then please contact your administrator.', 'pending_revision' => 'Pending revisions', 'pending_workflows' => 'Pending workflows', 'personal_default_keywords' => 'Personal keywordlists', +'php_info' => 'Information about PHP', 'pl_PL' => 'Polish', 'possible_substitutes' => 'Substitutes', 'preset_expires' => 'Preset expiration', @@ -1154,6 +1163,7 @@ URL: [url]', 'rm_from_clipboard' => 'Remove from clipboard', 'rm_group' => 'Remove this group', 'rm_role' => 'Delete this role', +'rm_task' => 'Remove task', 'rm_transmittal' => 'Remove transmittal', 'rm_transmittalitem' => 'Remove item', 'rm_user' => 'Remove user', @@ -1208,6 +1218,8 @@ URL: [url]', 'search_results_access_filtered' => 'Search results may contain content to which access has been denied.', 'search_time' => 'Elapsed time: [time] sec.', 'seconds' => 'seconds', +'seeddms_info' => 'Information about SeedDMS', +'seeddms_version' => 'Version of SeedDMS', 'selection' => 'Selection', 'select_attrdefgrp_show' => 'Choose when to show', 'select_attribute_value' => 'Select attribute value', @@ -1266,6 +1278,12 @@ Name: [username] 'settings_allowReviewerOnly' => 'Allow to set reviewer only', 'settings_allowReviewerOnly_desc' => 'Enable this, if it shall be allow to set just a reviewer but no approver in traditional workflow mode.', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => 'Authentification key for rest api', +'settings_apiKey_desc' => 'This key is used a alternative authentication for the rest api. Choose a 32 char long string.', +'settings_apiOrigin' => 'Allowed origin of api calls', +'settings_apiOrigin_desc' => 'A list of addresses separated by semicolon. Each address has the form ://[:]. The port can be omitted. If this field is left empty, no restrictions will apply.', +'settings_apiUserId' => 'User for rest api', +'settings_apiUserId_desc' => 'This user will be used by the rest api, if authentication was done with the configured api key.', 'settings_Authentication' => 'Authentication settings', 'settings_autoLoginUser' => 'Automatic login', 'settings_autoLoginUser_desc' => 'Use this user id for accesses if the user is not already logged in. Such an access will not create a session.', @@ -1646,6 +1664,7 @@ Name: [username] 'splash_add_group' => 'New group added', 'splash_add_group_member' => 'New group member added', 'splash_add_role' => 'Added new role', +'splash_add_task' => 'Added new task', 'splash_add_to_transmittal' => 'Add to transmittal', 'splash_add_transmittal' => 'Added transmittal', 'splash_add_user' => 'New user added', @@ -1874,6 +1893,7 @@ URL: [url]', 'uploading_zerosize' => 'Uploading an empty file. Upload is canceled.', 'used_discspace' => 'Used disk space', 'user' => 'User', +'userdata_file' => 'User data file', 'userid_groupid' => 'User id/Group id', 'users' => 'Users', 'users_and_groups' => 'Users/Groups', @@ -1911,7 +1931,7 @@ URL: [url]', 'warning' => 'Warning', 'webauthn_auth' => 'WebAuthn Authentification', 'webauthn_crossplatform_info' => 'Use cross-platform \'Yes\' when you have a removable device, like a Yubico key, which you would want to use to login on different computers; say \'No\' when your device is attached to the computer. The choice affects which device(s) are offered by the browser and/or computer security system.', -'webauthn_info' => 'WebAuthn is a password less authentification usind public key cryptography. A private-public keypair (known as a credential) is created for a website. The private key is stored securely on the user’s device; a public key and randomly generated credential ID is sent to the server for storage. The server can then use that public key to prove the user’s identity. The private key is usually stored on a hardware token. The token must be registered before it can be used for authentication.', +'webauthn_info' => 'WebAuthn is a password less authentification using public key cryptography. A private-public keypair (known as a credential) is created for a website. The private key is stored securely on the user’s device; a public key and randomly generated credential ID is sent to the server for storage. The server can then use that public key to prove the user’s identity. The private key is usually stored on a hardware token. The token must be registered before it can be used for authentication.', 'webauth_crossplatform' => 'Crossplatform', 'wednesday' => 'Wednesday', 'wednesday_abbr' => 'We', @@ -1941,6 +1961,7 @@ URL: [url]', 'workflow_state_in_use' => 'This state is currently used by workflows.', 'workflow_state_name' => 'Name', 'workflow_summary' => 'Workflow summary', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'At least one of the transitions has neither a user nor a group!', 'workflow_user_summary' => 'User summary', 'wrong_filetype' => 'Wrong file type', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index b8e3f6e75..a19040a47 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: acabello (20), Admin (1171), angel (123), francisco (2), jaimem (14) +// Translators: acabello (20), Admin (1187), angel (123), francisco (2), jaimem (14) $text = array( '2_factor_auth' => '', @@ -27,7 +27,7 @@ $text = array( '2_fact_auth_secret' => '', 'accept' => 'Aceptar', 'access_control' => 'Control de acceso', -'access_control_is_off' => '', +'access_control_is_off' => 'Control de acceso avanzado está desconectado', 'access_denied' => 'Acceso denegado', 'access_inheritance' => 'Acceso heredado', 'access_mode' => 'Tipo de acceso', @@ -227,7 +227,7 @@ URL: [url]', 'category_in_use' => 'Esta categoría está en uso por documentos.', 'category_noname' => 'No ha proporcionado un nombre de categoría.', 'ca_ES' => 'Catala', -'changelog_loading' => '', +'changelog_loading' => 'Espere a que el registro de cambios se cargue ...', 'change_assignments' => 'cambiar asignaciones', 'change_password' => 'cambiar contraseña', 'change_password_message' => 'Su contraseña se ha modificado.', @@ -289,6 +289,7 @@ URL: [url]', 'confirm_rm_folder_files' => '¿Desea realmente eliminar todos los ficheros de la carpeta "[foldername]" y de sus subcarpetas?
Atención: Esta acción no se puede deshacer.', 'confirm_rm_group' => '¿Desea realmente eliminar el grupo "[groupname]"?
Atención: Esta acción no se puede deshacer.', 'confirm_rm_log' => '¿Desea realmente eliminar el fichero de registro "[logname]"?
Atención: Esta acción no se puede deshacer.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => '', 'confirm_rm_user' => '¿Desea realmente eliminar el usuario "[username]"?
Atención: Esta acción no se puede deshacer.', @@ -313,6 +314,7 @@ URL: [url]', 'current_version' => 'Versión actual', 'daily' => 'Diaria', 'databasesearch' => 'Búsqueda en base de datos', +'database_schema_version' => '', 'date' => 'Fecha', 'days' => 'días', 'debug' => 'Depuración', @@ -522,15 +524,15 @@ URL: [url]', 'expired_documents' => 'Documentos expirados', 'expires' => 'Caduca', 'expire_by_date' => 'Fecha de expiración', -'expire_in_1d' => '', -'expire_in_1h' => '', +'expire_in_1d' => 'Vence en 1 día', +'expire_in_1h' => 'Vence en 1 hora', 'expire_in_1m' => 'Expira en 1 mes', 'expire_in_1w' => 'Expira en 1 semana', 'expire_in_1y' => 'Expira en 1 año', -'expire_in_2h' => '', +'expire_in_2h' => 'Vence en 2 horas', 'expire_in_2y' => 'Expira en 2 años', -'expire_today' => '', -'expire_tomorrow' => '', +'expire_today' => 'Vence Hoy', +'expire_tomorrow' => 'Vence mañana', 'expiry_changed_email' => 'Fecha de caducidad modificada', 'expiry_changed_email_body' => 'Fecha de caducidad modificada Documento: [name] @@ -539,6 +541,7 @@ Usuario: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Fecha de caducidad modificada', 'export' => '', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => 'Log de Cambios', 'extension_loading' => 'Cargando extensiones', @@ -628,7 +631,7 @@ URL: [url]', 'group_revision_summary' => '', 'guest_login' => 'Acceso como invitado', 'guest_login_disabled' => 'La cuenta de invitado está deshabilitada.', -'hash' => '', +'hash' => 'Cifrado', 'help' => 'Ayuda', 'home_folder' => '', 'hook_name' => '', @@ -644,6 +647,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => 'Importar desde sistema de archivos', 'import_fs_warning' => 'Esto funciona únicamente con carpetas dentro de la carpeta destino. La operación importa recursivamente todos los archivos y carpetas. Los archivos serán liberados inmediatamente.', +'import_users' => 'Importar usuarios', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => '', 'include_documents' => 'Incluir documentos', 'include_subdirectories' => 'Incluir subcarpetas', @@ -662,6 +668,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Copiar lista de acceso heredado', 'inherits_access_empty_msg' => 'Empezar con una lista de acceso vacía', 'inherits_access_msg' => 'Acceso heredado.', +'installed_php_extensions' => 'Extensiones PHP instaladas', 'internal_error' => 'Error interno', 'internal_error_exit' => 'Error interno. No es posible terminar la solicitud.', 'invalid_access_mode' => 'Modo de acceso no válido', @@ -777,6 +784,7 @@ URL: [url]', 'missing_checksum' => 'Falta checksum', 'missing_file' => '', 'missing_filesize' => 'Falta tamaño fichero', +'missing_php_extensions' => 'Extensiones PHP ausentes', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => 'Falta usuario/grupo para transición', @@ -936,6 +944,7 @@ Si continua teniendo problemas de acceso, por favor contacte con el administrado 'pending_revision' => '', 'pending_workflows' => '', 'personal_default_keywords' => 'Listas de palabras clave personales', +'php_info' => 'Información de PHP', 'pl_PL' => 'Polaco', 'possible_substitutes' => '', 'preset_expires' => 'Establece caducidad', @@ -1097,6 +1106,7 @@ URL: [url]', 'rm_from_clipboard' => 'Borrar del portapapeles', 'rm_group' => 'Eliminar este grupo', 'rm_role' => '', +'rm_task' => '', 'rm_transmittal' => '', 'rm_transmittalitem' => 'Eliminar elemento', 'rm_user' => 'Eliminar este usuario', @@ -1151,6 +1161,8 @@ URL: [url]', 'search_results_access_filtered' => 'Los resultados de la búsqueda podrían incluir contenidos cuyo acceso ha sido denegado.', 'search_time' => 'Tiempo transcurrido: [time] seg.', 'seconds' => 'segundos', +'seeddms_info' => 'Acerca de SeedDMS', +'seeddms_version' => 'Versión de SeedDMS', 'selection' => 'Selección', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1204,6 +1216,12 @@ URL: [url]', 'settings_allowReviewerOnly' => 'Permitir habilitar la función de Revisor para un usuario', 'settings_allowReviewerOnly_desc' => 'Habilite esto si se requiere permitir que un usuario sea lector o revisor sin capacidad de aprobar un documento en un proceso de workflow tradicional', 'settings_apache_mod_rewrite' => 'Apache - Módulo Reescritura', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Configuración de autenticación', 'settings_autoLoginUser' => 'Acceso automatico', 'settings_autoLoginUser_desc' => 'Utilice esta clave de usuario para accesos si el usuario no ha ingresado al sistema todavía. Este tipo de acceso no creará una sesión.', @@ -1584,6 +1602,7 @@ URL: [url]', 'splash_add_group' => 'Nuevo grupo agregado', 'splash_add_group_member' => 'Nuevo miembro del grupo agregado', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Nuevo usuario agregado', @@ -1743,7 +1762,7 @@ URL: [url]', 'to' => 'Hasta', 'toggle_manager' => 'Intercambiar mánager', 'toggle_qrcode' => '', -'total' => '', +'total' => 'Total', 'to_before_from' => 'La fecha de finalización no debe ser anterior a la de inicio', 'transfer_content' => '', 'transfer_document' => 'Transferir documento', @@ -1812,6 +1831,7 @@ URL: [url]', 'uploading_zerosize' => 'Subiendo un fichero vacío. -Subida cancelada.', 'used_discspace' => 'Espacio de disco utilizado', 'user' => 'Usuario', +'userdata_file' => '', 'userid_groupid' => 'ID Usuario/ID Grupo', 'users' => 'Usuarios', 'users_and_groups' => 'Usuarios/Grupos', @@ -1828,7 +1848,7 @@ URL: [url]', 'use_comment_of_document' => 'Usar comentario del documento', 'use_default_categories' => 'Utilizar categorías predefinidas', 'use_default_keywords' => 'Utilizar palabras claves por defecto', -'valid_till' => '', +'valid_till' => 'Valido hasta', 'version' => 'Versión', 'versioning_file_creation' => 'Creación de fichero de versiones', 'versioning_file_creation_warning' => 'Con esta operación usted puede crear un fichero que contenga la información de versiones de una carpeta del DMS completa. Después de la creación todos los ficheros se guardarán en la carpeta de documentos.', @@ -1879,6 +1899,7 @@ URL: [url]', 'workflow_state_in_use' => 'Este estado está siendo usado por flujos de trabajo.', 'workflow_state_name' => 'Nombre', 'workflow_summary' => 'Resumen Flujo de Trabajo', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Resumen Usuario', 'wrong_filetype' => '', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 7ba4a3732..cb2be6875 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1102), jeromerobert (50), lonnnew (9), Oudiceval (929) +// Translators: Admin (1103), jeromerobert (50), lonnnew (9), Oudiceval (929) $text = array( '2_factor_auth' => 'Authentification forte', @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Voulez-vous vraiment supprimer tous les fichiers du dossier « [foldername] » et ses sous-dossiers ?
Attention : Cette action est irréversible.', 'confirm_rm_group' => 'Voulez-vous vraiment supprimer le groupe « [groupname] » ?
Attention : Cette action est irréversible.', 'confirm_rm_log' => 'Voulez-vous vraiment supprimer le fichier journal « [logname] » ?
Attention : Cette action est irréversible.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'Veuillez confirmer la suppression de la transmission.', 'confirm_rm_transmittalitem' => 'Confirmer la suppression', 'confirm_rm_user' => 'Voulez-vous vraiment supprimer l’utilisateur « [username] » ?
Attention : Cette action est irréversible.', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Version actuelle', 'daily' => 'Journalier', 'databasesearch' => 'Recherche dans la base de données', +'database_schema_version' => '', 'date' => 'Date', 'days' => 'jours', 'debug' => 'Débogage', @@ -556,6 +558,7 @@ Utilisateur : [username] URL : [url]', 'expiry_changed_email_subject' => '[sitename] : [name] - Date d’expiration modifiée', 'export' => 'Exporter', +'export_user_list_csv' => '', 'extension_archive' => 'Extension', 'extension_changelog' => 'Journal des modifications', 'extension_loading' => 'Chargement des extensions…', @@ -668,6 +671,9 @@ URL: [url]', 'import_extension' => 'Importer l’extension', 'import_fs' => 'Importer depuis le système de fichiers', 'import_fs_warning' => 'L’importation peut se faire à partir du dossier de dépôt personnel uniquement. Tous les sous-dossiers et fichiers seront importés. Les fichiers seront immédiatement publiés.', +'import_users' => 'Importer des utilisateurs', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'Inclure le contenu', 'include_documents' => 'Inclure les documents', 'include_subdirectories' => 'Inclure les sous-dossiers', @@ -686,6 +692,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Recopier la liste des accès hérités', 'inherits_access_empty_msg' => 'Commencer avec une liste d\'accès vide', 'inherits_access_msg' => 'L\'accès est hérité.', +'installed_php_extensions' => '', 'internal_error' => 'Erreur interne', 'internal_error_exit' => 'Erreur interne. Impossible d\'achever la demande.', 'invalid_access_mode' => 'Droits d\'accès invalides', @@ -801,6 +808,7 @@ URL: [url]', 'missing_checksum' => 'Checksum manquante', 'missing_file' => 'Fichier manquant', 'missing_filesize' => 'Taille de fichier manquante', +'missing_php_extensions' => '', 'missing_reception' => 'Réception manquante', 'missing_request_object' => '', 'missing_transition_user_group' => 'Utilisateur/groupe manquant pour transition', @@ -958,6 +966,7 @@ En cas de problème persistant, veuillez contacter votre administrateur.', 'pending_revision' => 'Révisions en attente', 'pending_workflows' => 'Workflows en attente', 'personal_default_keywords' => 'Mots-clés personnels', +'php_info' => '', 'pl_PL' => 'Polonais', 'possible_substitutes' => 'Substituts', 'preset_expires' => 'Expiration prédéfinie', @@ -1152,6 +1161,7 @@ URL : [url]', 'rm_from_clipboard' => 'Supprimer du presse-papier', 'rm_group' => 'Supprimer ce groupe', 'rm_role' => 'Supprimer ce rôle', +'rm_task' => '', 'rm_transmittal' => 'Supprimer la transmission', 'rm_transmittalitem' => 'Supprimer l’élément', 'rm_user' => 'Supprimer cet utilisateur', @@ -1206,6 +1216,8 @@ URL : [url]', 'search_results_access_filtered' => 'L\'accès à certains résultats de la recherche pourrait être refusé.', 'search_time' => 'Temps écoulé: [time] sec.', 'seconds' => 'secondes', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Sélection', 'select_attrdefgrp_show' => 'Choisir quand afficher', 'select_attribute_value' => 'Sélectionnez la valeur de l’attribut', @@ -1264,6 +1276,12 @@ Nom : [username] 'settings_allowReviewerOnly' => 'Permettre d’affecter l’examinateur uniquement', 'settings_allowReviewerOnly_desc' => 'Activer cette option pour permettre d’affecter un examinateur mais pas d’approbateur dans le mode de Workflow traditionnel.', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Paramètres d\'authentification', 'settings_autoLoginUser' => 'Connexion automatique', 'settings_autoLoginUser_desc' => 'Utiliser l’ID de cet utilisateur pour se connecter automatiquement. Ce type d’accès ne permet pas la création de nouveaux comptes.', @@ -1644,6 +1662,7 @@ Nom : [username] 'splash_add_group' => 'Nouveau groupe ajouté', 'splash_add_group_member' => 'Nouveau membre ajouté au groupe', 'splash_add_role' => 'Nouveau rôle ajouté', +'splash_add_task' => '', 'splash_add_to_transmittal' => 'Ajouter à la transmission', 'splash_add_transmittal' => 'Ajouté à la transmission', 'splash_add_user' => 'Nouvel utilisateur ajouté', @@ -1872,6 +1891,7 @@ URL : [url]', 'uploading_zerosize' => 'Chargement d\'un fichier vide. Chargement annulé.', 'used_discspace' => 'Espace disque utilisé', 'user' => 'Utilisateur', +'userdata_file' => '', 'userid_groupid' => 'ID utilisateur/ID groupe', 'users' => 'Utilisateurs', 'users_and_groups' => 'Utilisateurs/groupes', @@ -1939,6 +1959,7 @@ URL: [url]', 'workflow_state_in_use' => 'Cet état est actuellement utilisé par des workflows.', 'workflow_state_name' => 'Nom', 'workflow_summary' => 'Récapitulatif workflow', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'Au moins une transition a ni utilisateur, ni groupe !', 'workflow_user_summary' => 'Récapitulatif utilisateur', 'wrong_filetype' => 'Mauvais type de fichier', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 7fab3f079..ec37841c6 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1238), marbanas (16) +// Translators: Admin (1240), marbanas (16) $text = array( '2_factor_auth' => '', @@ -294,6 +294,7 @@ Internet poveznica: [url]', 'confirm_rm_folder_files' => 'Da li zaista želite ukloniti sve datoteke u mapi "[foldername]" i sve podmape?
Oprez: ova radnja nije povratna.', 'confirm_rm_group' => 'Da li zaista želite ukloniti grupu "[groupname]"?
Oprez: ova radnja nije povratna.', 'confirm_rm_log' => 'Da li zaista želite ukloniti log datoteku "[logname]"?
Oprez: ova radnja nije povratna.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => 'Potvrdi uklanjanje', 'confirm_rm_user' => 'Da li zaista želite ukloniti korisnika "[username]"?
Oprez: ova radnja nije povratna.', @@ -318,6 +319,7 @@ Internet poveznica: [url]', 'current_version' => 'Trenutna verzija', 'daily' => 'Dnevno', 'databasesearch' => 'Pretraživanje baze podataka', +'database_schema_version' => '', 'date' => 'Datum', 'days' => 'dani', 'debug' => 'Ispravljanje', @@ -544,6 +546,7 @@ Korisnik: [username] Internet poveznica: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Promijenjen datum isteka', 'export' => 'Izvoz', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => 'Popis promjena', 'extension_loading' => 'Učitavanje dodataka…', @@ -649,6 +652,9 @@ Internet poveznica: [url]', 'import_extension' => '', 'import_fs' => 'Importaj iz FS-a', 'import_fs_warning' => '', +'import_users' => 'Uvezi korisnike', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'Uključi sadržaj', 'include_documents' => 'Sadrži dokumente', 'include_subdirectories' => 'Sadrži podmape', @@ -667,6 +673,7 @@ Internet poveznica: [url]', 'inherits_access_copy_msg' => 'Kopiraj listu naslijeđenih prava pristupa', 'inherits_access_empty_msg' => 'Započnite s praznim popisom pristupa', 'inherits_access_msg' => 'Prava pristupa se naslijeđuju.', +'installed_php_extensions' => '', 'internal_error' => 'Interna greška', 'internal_error_exit' => 'Interna greška. Ne mogu završiti zahtjev.', 'invalid_access_mode' => 'Pogrešan način pristupa', @@ -782,6 +789,7 @@ Internet poveznica: [url]', 'missing_checksum' => 'Nedostaje kontrolna suma', 'missing_file' => '', 'missing_filesize' => 'Nedostaje veličina datoteke', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => 'Nedostaje korisnik/grupa za promjenu', @@ -798,7 +806,7 @@ Internet poveznica: [url]', 'my_documents' => 'Moji dokumenti', 'my_transmittals' => 'Moja proslijeđivanja', 'name' => 'Naziv', -'nb_NO' => '', +'nb_NO' => 'Norveški', 'needs_correction' => '', 'needs_workflow_action' => 'Ovaj dokument zahtjeva vašu pažnju. Molimo provjerite karticu toka rada.', 'network_drive' => '', @@ -940,6 +948,7 @@ Ako i dalje imate problema s prijavom, molimo kontaktirajte Vašeg administrator 'pending_revision' => '', 'pending_workflows' => '', 'personal_default_keywords' => 'Osobni popis ključnih riječi', +'php_info' => '', 'pl_PL' => 'Poljski', 'possible_substitutes' => 'Zamjene', 'preset_expires' => 'Ističe', @@ -1118,6 +1127,7 @@ Internet poveznica: [url]', 'rm_from_clipboard' => 'Uklonite iz međuspremnika', 'rm_group' => 'Uklonite ovu grupu', 'rm_role' => '', +'rm_task' => '', 'rm_transmittal' => 'Uklanjanje preusmjerenja', 'rm_transmittalitem' => 'Uklanjanje stavke', 'rm_user' => 'Uklonite ovog korisnika', @@ -1172,6 +1182,8 @@ Internet poveznica: [url]', 'search_results_access_filtered' => 'Rezultati pretrage mogu sadržavati sadržaj kojem je odbijen pristup.', 'search_time' => 'Proteklo vrijeme: [time] sek.', 'seconds' => 'sekunde', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Odabir', 'select_attrdefgrp_show' => '', 'select_attribute_value' => 'Izbari vrednost atributa', @@ -1225,6 +1237,12 @@ Internet poveznica: [url]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Modul prepisa', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Postavke autentifikacije', 'settings_autoLoginUser' => 'Automatska prijava', 'settings_autoLoginUser_desc' => 'Koristite ovaj korisnički ID za pristup ukoliko korisnik već nije prijavljen. Takav pristup neće otvoriti sesiju.', @@ -1605,6 +1623,7 @@ Internet poveznica: [url]', 'splash_add_group' => 'Dodana nova grupa', 'splash_add_group_member' => 'Dodan novi član grupe', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Dodan novi korisnik', @@ -1833,6 +1852,7 @@ Internet poveznica: [url]', 'uploading_zerosize' => 'Datoteka koja se učitava je prazna. Učitavanje je otkazano.', 'used_discspace' => 'Iskorišteni prostor na disku', 'user' => 'Korisnik', +'userdata_file' => '', 'userid_groupid' => 'ID Korisnika/ID Grupe', 'users' => 'Korisnici', 'users_and_groups' => 'Korisnici/Grupe', @@ -1900,6 +1920,7 @@ Internet poveznica: [url]', 'workflow_state_in_use' => 'Tok rada trenutno koristi ovaj status.', 'workflow_state_name' => 'Naziv statusa', 'workflow_summary' => 'Pregled toka rada', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Pregled korisnika', 'wrong_filetype' => '', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 5c5d4b032..edee82dfb 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (639), Kalpy (110), ribaz (1036) +// Translators: Admin (643), Kalpy (113), ribaz (1036) $text = array( '2_factor_auth' => 'Kétfaktoros azonosítás', @@ -89,7 +89,7 @@ URL: [url]', 'already_subscribed' => 'Már feliratkozott', 'and' => '-', 'apply' => 'Elfogad', -'approvals_accepted' => '', +'approvals_accepted' => '[no_approvals] már elfogadott jóváhagyások', 'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', @@ -102,7 +102,7 @@ URL: [url]', 'approvals_without_user' => '', 'approval_deletion_email' => 'Jóváhagyási kérelem törölve', 'approval_deletion_email_body' => '', -'approval_deletion_email_subject' => '', +'approval_deletion_email_subject' => '[sitename]: [name] - Jóváhagyási kérelem törölve', 'approval_file' => 'Fájl', 'approval_group' => 'Jóváhagyó csoport', 'approval_log' => 'Jóváhagyási napló', @@ -128,7 +128,7 @@ URL: [url]', 'approval_summary' => 'Jóváhagyási összesítő', 'approval_update_failed' => 'Hiba történt a jóváhagyási állapot frissítése során. Frissítés sikertelen.', 'approvers' => 'Jóváhagyók', -'approver_already_assigned' => '', +'approver_already_assigned' => 'A felhasználót már jóváhagyóként megjelölték.', 'approver_already_removed' => '', 'april' => 'Április', 'archive' => 'Archívum', @@ -289,6 +289,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Biztosan el kívánja távolítani az összes állományt és almappát a "[foldername]" mappából?
Legyen óvatos: Ez a művelet nem vonható vissza.', 'confirm_rm_group' => 'Biztosan el kívánja távolítani ezt a csoportot "[groupname]"?
Legyen óvatos: Ez a művelet nem vonható vissza.', 'confirm_rm_log' => 'Biztosan el kívánja távolítani ezt a napló állományt "[logname]"?
Legyen óvatos: Ez a művelet nem vonható vissza.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => '', 'confirm_rm_user' => 'Biztosan el kívánja távolítani ezt a felhasználót "[username]"?
Legyen óvatos: Ez a művelet nem vonható vissza.', @@ -313,9 +314,10 @@ URL: [url]', 'current_version' => 'Aktuális verzió', 'daily' => 'Napi', 'databasesearch' => 'Adatbázis keresés', +'database_schema_version' => '', 'date' => 'Dátum', 'days' => 'nap', -'debug' => '', +'debug' => 'Hibakeresés', 'december' => 'December', 'default_access' => 'Alapbeállítás szerinti jogosultság', 'default_keywords' => 'Rendelkezésre álló kulcsszavak', @@ -539,6 +541,7 @@ Felhasználó: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Lejárati dátum módosítva', 'export' => 'exportálás', +'export_user_list_csv' => '', 'extension_archive' => 'Bővítmények', 'extension_changelog' => 'Változásnapló', 'extension_loading' => 'Kiterjesztések betöltése ...', @@ -644,6 +647,9 @@ URL: [url]', 'import_extension' => 'Kiterjesztés import', 'import_fs' => 'Importálás fájlrendszerből', 'import_fs_warning' => '', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => '', 'include_documents' => 'Tartalmazó dokumentumok', 'include_subdirectories' => 'Tartalmazó alkönyvtárak', @@ -662,6 +668,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Örökített hozzáférési lista másolása', 'inherits_access_empty_msg' => 'Indulás üres hozzáférési listával', 'inherits_access_msg' => 'Jogosultság örökítése folyamatban.', +'installed_php_extensions' => '', 'internal_error' => 'Belső hiba', 'internal_error_exit' => 'Belső hiba. Nem lehet teljesíteni a kérést.', 'invalid_access_mode' => 'Érvénytelen hozzáférési mód', @@ -736,7 +743,7 @@ URL: [url]', 'link_to_version' => '', 'list_access_rights' => 'Összes jogosultság felsorolása...', 'list_contains_no_access_docs' => '', -'list_hooks' => '', +'list_hooks' => 'Hook lista', 'list_tasks' => '', 'local_file' => 'Helyi állomány', 'locked_by' => 'Zárolta', @@ -777,6 +784,7 @@ URL: [url]', 'missing_checksum' => 'Hiányzó ellenőrzőösszeg', 'missing_file' => 'hiányzó állomány', 'missing_filesize' => 'Hiányzó állomány méret', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => 'Hiányzó felhasználó/csoport az átvezetéshez', @@ -936,6 +944,7 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a 'pending_revision' => '', 'pending_workflows' => '', 'personal_default_keywords' => 'Személyes kulcsszó lista', +'php_info' => '', 'pl_PL' => 'Lengyel', 'possible_substitutes' => '', 'preset_expires' => 'Érvényesség beállítása', @@ -1097,6 +1106,7 @@ URL: [url]', 'rm_from_clipboard' => 'Eltávolítás a vágólapról', 'rm_group' => 'Csoport eltávolítása', 'rm_role' => '', +'rm_task' => '', 'rm_transmittal' => '', 'rm_transmittalitem' => '', 'rm_user' => 'Felhasználó eltávolítása', @@ -1110,7 +1120,7 @@ URL: [url]', 'role_admin' => 'Adminisztrátor', 'role_guest' => 'Vendég', 'role_info' => 'szerepkör információ', -'role_management' => '', +'role_management' => 'Szerepkörök kezelése', 'role_name' => '', 'role_type' => '', 'role_user' => 'Felhasználó', @@ -1132,7 +1142,7 @@ URL: [url]', 'scheduler_class_description' => '', 'scheduler_class_parameter' => '', 'scheduler_class_tasks' => '', -'scheduler_task_mgr' => '', +'scheduler_task_mgr' => 'Ütemező', 'search' => 'Keresés', 'search_fulltext' => 'Keresés a teljes szövegben', 'search_in' => 'Keresés ebben a könyvtárban', @@ -1150,6 +1160,8 @@ URL: [url]', 'search_results_access_filtered' => 'Search results may contain content to which access has been denied.', 'search_time' => 'Felhasznßlt id: [time] mßsodperc.', 'seconds' => 'másodperc', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Selection', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1203,6 +1215,12 @@ URL: [url]', 'settings_allowReviewerOnly' => 'Engedélyezi, hogy csak az ellenört állítsa be', 'settings_allowReviewerOnly_desc' => 'Ha ezt engedélyez, akkor lehetővé válik, hogy a hagyományos munkafolyamat módban csak ellenört állítson be, ne jóváhagyót.', 'settings_apache_mod_rewrite' => 'Apache - Rewrite modul', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Hitelesítési beállítások', 'settings_autoLoginUser' => 'Automatikus bejelentkezés', 'settings_autoLoginUser_desc' => 'Használja ezt a felhasználói azonosítót a hozzáférésekhez, ha a felhasználó még nincs bejelentkezve. Az ilyen hozzáférés nem hoz létre munkamenetet.', @@ -1583,6 +1601,7 @@ URL: [url]', 'splash_add_group' => 'Új csoport hozzáadva', 'splash_add_group_member' => 'Új csoporttag hozzáadva', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Új felhasználó hozzáadva', @@ -1811,6 +1830,7 @@ URL: [url]', 'uploading_zerosize' => 'Üres állomány feltöltése. Feltöltés megszakítva.', 'used_discspace' => 'Felhasznált lemezterület', 'user' => 'Felhasználó', +'userdata_file' => '', 'userid_groupid' => 'Felhasználó ID/Csoport ID', 'users' => 'Felhasználók', 'users_and_groups' => 'Felhasználók/Csoportok', @@ -1878,6 +1898,7 @@ URL: [url]', 'workflow_state_in_use' => 'Ezt az állapotot munkafolyamatok használják.', 'workflow_state_name' => 'Név', 'workflow_summary' => 'Munkafolyamat áttekintés', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Felhasználó áttekintés', 'wrong_filetype' => '', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 0d8fd704b..30ddf2cc4 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2021), rickr (144), s.pnt (26) +// Translators: Admin (2024), rickr (144), s.pnt (26) $text = array( '2_factor_auth' => 'Autorizzazione a due fattori', @@ -232,7 +232,7 @@ URL: [url]', 'category_in_use' => 'Questa categoria è attualmente in uso in alcuni documenti.', 'category_noname' => 'Non è stato attribuito un nome alla categoria.', 'ca_ES' => 'Catalano', -'changelog_loading' => '', +'changelog_loading' => 'Attendi il caricamento del log modifiche', 'change_assignments' => 'Modifica le assegnazioni', 'change_password' => 'Cambia la password', 'change_password_message' => 'La password è stata cambiata', @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Vuoi davvero rimuovere tutti i file dalla cartella "[foldername]" e dalle sue sottocartelle? Attenzione: questa operazione non può essere annullata.', 'confirm_rm_group' => 'Vuoi davvero rimuovere il gruppo "[groupname]"? Attenzione: questa operazione non può essere annullata.', 'confirm_rm_log' => 'Vuoi davvero rimuovere il file di log "[logname]"?
Attenzione: questa operazione non può essere annullata.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'Si prega di confermare l\'eliminazione della trasmissione.', 'confirm_rm_transmittalitem' => 'Conferma rimozione', 'confirm_rm_user' => 'Vuoi davvero rimuovere l\'utente "[username]"? Attenzione: questa operazione non può essere annullata.', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Versione attuale', 'daily' => 'Giornaliero', 'databasesearch' => 'Ricerca nel Database', +'database_schema_version' => '', 'date' => 'Data', 'days' => 'Giorni', 'debug' => 'Localizzare e rimuovere errori da (Debug)', @@ -549,6 +551,7 @@ Utente: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Scadenza cambiata', 'export' => 'Esporta', +'export_user_list_csv' => '', 'extension_archive' => 'Archivio estensioni', 'extension_changelog' => 'Registro delle modifiche delle estensioni', 'extension_loading' => 'Caricamento estensioni...', @@ -654,6 +657,9 @@ URL: [url]', 'import_extension' => 'Importa estensione', 'import_fs' => 'Importa dalla cartella di sistema', 'import_fs_warning' => 'Questo funziona solo per le cartelle nella cartella per lasciare. L\'operazione importa in modo ricorsivo tutte le cartelle e file. I file saranno pubblicati immediatamente.', +'import_users' => 'Importa utenti', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'Includi contenuto', 'include_documents' => 'Includi documenti', 'include_subdirectories' => 'Includi sottocartelle', @@ -672,6 +678,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Copia la lista degli accessi ereditati', 'inherits_access_empty_msg' => 'Reimposta una lista di permessi vuota', 'inherits_access_msg' => 'È impostato il permesso ereditario.', +'installed_php_extensions' => '', 'internal_error' => 'Errore interno', 'internal_error_exit' => 'Errore interno. Impossibile completare la richiesta.', 'invalid_access_mode' => 'Permessi non validi', @@ -787,6 +794,7 @@ URL: [url]', 'missing_checksum' => 'Checksum mancante', 'missing_file' => 'File mancante', 'missing_filesize' => 'Dimensione mancante', +'missing_php_extensions' => '', 'missing_reception' => 'Ricezione mancante', 'missing_request_object' => 'Manca oggetto di richiesta', 'missing_transition_user_group' => 'Utente/Gruppo per la transizione mancanti', @@ -865,7 +873,7 @@ URL: [url]', 'no_action' => 'Non è richiesto alcun intervento', 'no_approval_needed' => 'Non è richiesta approvazione.', 'no_attached_files' => 'Nessun file allegato', -'no_backup_dir' => '', +'no_backup_dir' => 'Cartella di Backup non configurata', 'no_current_version' => 'La corrente versione di SeedDMS non è aggiornata. La versione più recente disponibile è la [latestversion].', 'no_default_keywords' => 'Nessuna parola-chiave disponibile', 'no_docs_checked_out' => 'Nessun documento approvato', @@ -946,6 +954,7 @@ Dovessero esserci ancora problemi al login, prego contatta l\'amministratore di 'pending_revision' => 'In attesa di riesame', 'pending_workflows' => 'Flussi di lavoro in sospeso', 'personal_default_keywords' => 'Parole-chiave personali', +'php_info' => '', 'pl_PL' => 'Polacco', 'possible_substitutes' => 'Sostituti', 'preset_expires' => 'Scadenza preimpostata', @@ -1140,6 +1149,7 @@ URL: [url]', 'rm_from_clipboard' => 'Rimuovi dalla clipboard', 'rm_group' => 'Rimuovi questo gruppo', 'rm_role' => 'Eliminare questo ruolo', +'rm_task' => '', 'rm_transmittal' => 'Rimuovi trasmissione', 'rm_transmittalitem' => 'Rimuovi oggetto', 'rm_user' => 'Rimuovi questo utente', @@ -1194,6 +1204,8 @@ URL: [url]', 'search_results_access_filtered' => 'La ricerca può produrre risultati al cui contenuto è negato l\'accesso.', 'search_time' => 'Tempo trascorso: [time] secondi.', 'seconds' => 'secondi', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Selezione', 'select_attrdefgrp_show' => 'Scegli quando mostrare', 'select_attribute_value' => 'Seleziona il valore dell\'attributo', @@ -1252,6 +1264,12 @@ Name: [username] 'settings_allowReviewerOnly' => 'Abilita l\'impostazione del solo revisore', 'settings_allowReviewerOnly_desc' => 'Abilita se si vuole concedere di impostare solo un revisore ma non un apporvatore nel flusso di lavoro tradizionale', 'settings_apache_mod_rewrite' => 'Apache - Mod Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Impostazioni di Autenticazione', 'settings_autoLoginUser' => 'Login automatico', 'settings_autoLoginUser_desc' => 'Utilizzare questo ID utente per l\'accesso se l\'utente non è già connesso. Questo tipo di accesso non creerà una sessione.', @@ -1632,6 +1650,7 @@ Name: [username] 'splash_add_group' => 'Gruppo aggiunto', 'splash_add_group_member' => 'Membro aggiunto al gruppo', 'splash_add_role' => 'Aggiunto nuovo ruolo', +'splash_add_task' => '', 'splash_add_to_transmittal' => 'Aggiungere alla trasmissione', 'splash_add_transmittal' => 'Aggiungere trasmissione', 'splash_add_user' => 'Utente aggiunto', @@ -1860,6 +1879,7 @@ URL: [url]', 'uploading_zerosize' => 'Si sta caricando un file vuoto. Operazione abortita.', 'used_discspace' => 'Spazio su disco occupato', 'user' => 'Utente', +'userdata_file' => '', 'userid_groupid' => 'id Utente/id Gruppo', 'users' => 'Utenti', 'users_and_groups' => 'Utenti/Gruppi', @@ -1927,6 +1947,7 @@ URL: [url]', 'workflow_state_in_use' => 'Questo stato è attualmente usato da alcuni flussi di lavoro', 'workflow_state_name' => 'Nome', 'workflow_summary' => 'Riepilogo flusso di lavoro', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'Almeno una delle transizioni non ha un utente o un gruppo!', 'workflow_user_summary' => 'Riepilogo utenti', 'wrong_filetype' => '', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index f8ade3f6d..25d9da557 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -297,6 +297,7 @@ URL: [url]', 'confirm_rm_folder_files' => '폴더 "[foldername]"내의 모든 파일을 정말 삭제 하시겠습니까?
주의: 취소가 불가능 합니다.', 'confirm_rm_group' => '그룹 "[groupname]"을 정말 삭제 하시겠습니까?
주의: 취소가 불가능 합니다.', 'confirm_rm_log' => '로그파일 "[logname]"을 정말 삭제 하시겠습니까?
주의: 취소가 불가능 합니다.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => '제거 확인', 'confirm_rm_user' => '사용자 "[username]"을 정말 삭제 하시겠습니까?
주의: 취소가 불가능 합니다.', @@ -321,6 +322,7 @@ URL: [url]', 'current_version' => '현재 버전', 'daily' => '매일', 'databasesearch' => '데이터베이스 검색', +'database_schema_version' => '', 'date' => '날짜', 'days' => '일', 'debug' => '디버그', @@ -545,6 +547,7 @@ URL: [url]', URL: [url]', 'expiry_changed_email_subject' => '[sitename] : [name] - 유효 기간 변경', 'export' => '내보내기', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => '', 'extension_loading' => '', @@ -650,6 +653,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => '파일시스템으로부터 가져오기', 'import_fs_warning' => '', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => '내용을 포함', 'include_documents' => '문서 포함', 'include_subdirectories' => '하위 디렉터리 포함', @@ -668,6 +674,7 @@ URL: [url]', 'inherits_access_copy_msg' => '상속 액세스 목록 복사', 'inherits_access_empty_msg' => '빈 액세스 목록으로 시작', 'inherits_access_msg' => '액세스가 상속됩니다.', +'installed_php_extensions' => '', 'internal_error' => '내부 오류', 'internal_error_exit' => '내부 오류가 발생했습니다. 요청을 완료 할 수 없습니다. .', 'invalid_access_mode' => '잘못된 액세스 모드', @@ -783,6 +790,7 @@ URL: [url]', 'missing_checksum' => '검사 누락', 'missing_file' => '누락 된 파일', 'missing_filesize' => '누락 된 파일 크기', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => '변화에 대한 사용자 / 그룹을 누락', @@ -934,6 +942,7 @@ URL : [url]', 'pending_revision' => '', 'pending_workflows' => '대기중인 워크플로', 'personal_default_keywords' => '개인 키워드 목록', +'php_info' => '', 'pl_PL' => '폴란드어', 'possible_substitutes' => '대체', 'preset_expires' => '만료 조절', @@ -1112,6 +1121,7 @@ URL: [url]', 'rm_from_clipboard' => '클립 보드에서 제거', 'rm_group' => '이 그룹 제거', 'rm_role' => '이 역할 지우기', +'rm_task' => '', 'rm_transmittal' => '송부 삭제', 'rm_transmittalitem' => '아이템 삭제', 'rm_user' => '이 사용자 제거', @@ -1166,6 +1176,8 @@ URL : [url]', 'search_results_access_filtered' => '검색 결과는 액세스가 거부된 콘텐츠를 포함 할 수도 있습니다 search_results검색 결과', 'search_time' => '경과 시간 : [time] 초', 'seconds' => '초', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => '선택', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1219,6 +1231,12 @@ URL : [url]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => '아파치 - 모듈 다시 쓰기', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => '인증 설정', 'settings_autoLoginUser' => '자동 로그인', 'settings_autoLoginUser_desc' => '로그인하지 않은 사용자의 ID로 접근. 이러한 접근은 세션을 생성하지 않습니다.', @@ -1599,6 +1617,7 @@ URL : [url]', 'splash_add_group' => '새 그룹이 추가', 'splash_add_group_member' => '새 그룹 구성원 추가', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => '새 사용자 추가', @@ -1827,6 +1846,7 @@ URL : [url]', 'uploading_zerosize' => '빈 파일을 업로드 합니다. 업로드가 취소 됩니다.', 'used_discspace' => '사용된 디스크 공간', 'user' => '사용자', +'userdata_file' => '', 'userid_groupid' => 'User id/Group id', 'users' => '사용자', 'users_and_groups' => '사용자 / 그룹', @@ -1894,6 +1914,7 @@ URL : [url]', 'workflow_state_in_use' => '이 상태는 현재 워크플로우에 의해 사용된다.', 'workflow_state_name' => '이름', 'workflow_summary' => '워크플로우 요약', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => '사용자 요약', 'wrong_filetype' => '', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index 0f9d42de7..bd6969d73 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -292,6 +292,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'ເຈົ້າຕ້ອງການລົບໄຟລທັງໝົດໃນໂຟລເດີ [foldername] ແລະ ໂຟລເດີຍ່ອຍຂອງມັນໄຫມ່
ລະວັງ:ການກະທຳນີ້ບໍ່ສາມາດຍົກເລີກໄດ້', 'confirm_rm_group' => 'ເຈົ້າຕ້ອງການລົບກຸ່ມ "[groupname]"?
ລະວັງ: ການກະທຳນີ້ບໍ່ສາມາດຍົກເລີກໄດ້', 'confirm_rm_log' => 'ເຈົ້າຕ້ອງການລົບໄຟລບັນທຶກ "[logname]"?
ລະວັງ: ການກະທໍານີ້ບໍສາມາດຍົກເລີກໄດ້.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'ກະລຸນາຍຶນຢັນການລົບໄຟລການສົ່ງ', 'confirm_rm_transmittalitem' => 'ຍຶນຢັນການນຳອອກ', 'confirm_rm_user' => 'ເຈົ້າຄ້ອງການລົບຜູ້ໄຊ້ "[username]"?
ລະວັງ: ການກະທຳນີ້ບໍ່ສາມາດຍົກເລີກໄດ້', @@ -316,6 +317,7 @@ URL: [url]', 'current_version' => 'ເວີຊັນປະຈຸບັນ', 'daily' => 'ປະຈຳວັນ', 'databasesearch' => 'ຄົ້ນຫາຖານຂໍ້ມູນ', +'database_schema_version' => '', 'date' => 'ວັນທີ', 'days' => 'ວັນ', 'debug' => 'ກວດແກ້ຈຸດບົກຜ່ອງ', @@ -542,6 +544,7 @@ URL: [url]', URL: [url]', 'expiry_changed_email_subject' => '[sitename]:[name] - ວັນໝົດອາຍຸໄດ້ປ່ຽນແລ້ວ', 'export' => 'ສົ່ງອອກ', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => '', 'extension_loading' => '', @@ -647,6 +650,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => 'ນຳເຂົ້າຈາກຟາຍລະບົບ', 'import_fs_warning' => 'ຊື່ງຈະໄຊ້ໄດ້ສະເພາະກັບໂຟລເດີໃນໂຟລເດີແບບເລືອນລົງເທົ່ານັ້ນ ການດຳເນີນການນີ້ຈະນຳເຂົ້າໄຟລແລະໂຟລເດີທັງຫມົດໄຟລຈະໄດ້ຮັບການເຜີຍແຜ່ທັນທີ', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'ລວມເນື້ອຫາ', 'include_documents' => 'ລວມເອກະສານ', 'include_subdirectories' => 'ລວມໄດເລັກທໍລີຍ່ອຍ', @@ -665,6 +671,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'ຄັດລັອກລາຍການເຂົາເຖິງທີສືບທອດ', 'inherits_access_empty_msg' => 'ເລີ້ມຕົ້ນດ້ວຍລາຍການທີ່ວ່າງເປົ່າ', 'inherits_access_msg' => 'ຂໍຜິດພາດພາຍໃນ', +'installed_php_extensions' => '', 'internal_error' => 'ຂໍ້ຜິດພາດພາຍໃນ', 'internal_error_exit' => 'ຂໍ້ຜິດພາດພາຍໃນບໍ່ສາມາດດຳເນີນການຕາມຄຳຂໍໄດ້', 'invalid_access_mode' => 'ຮູບແບບການເຂົ້າເຖິງບໍ່ຖືກຕ້ອງ', @@ -780,6 +787,7 @@ URL: [url]', 'missing_checksum' => 'ບໍ່ມີການກວດສອບ', 'missing_file' => 'ບໍ່ມີຟາຍ', 'missing_filesize' => 'ບໍ່ມີຂະໜາດໄຟລ', +'missing_php_extensions' => '', 'missing_reception' => 'ຂາດການຕອນຮັບ', 'missing_request_object' => 'ການສະເໜີຄຳຂໍໄດ້ຫາຍໄປ', 'missing_transition_user_group' => 'ບໍ່ມີຜູ້ໄຊ້/ ກຸ່ມສຳລັບການປ່ຽນແປງ', @@ -939,6 +947,7 @@ URL: [url]', 'pending_revision' => 'ລໍຖ້າການດຳເນີນການແກ້ໄຂ', 'pending_workflows' => 'ລໍຖ້າການດຳເນີນງານ', 'personal_default_keywords' => 'ລາຍການຄຳຫຼັກສ່ວນບຸກຄົນ', +'php_info' => '', 'pl_PL' => 'ຂັດ', 'possible_substitutes' => 'ທົດແທນ', 'preset_expires' => 'ວັນໝົດອາຍຸທີກຳນົດໄວ້ລ່ວງໜ້າ', @@ -1133,6 +1142,7 @@ URL: [url]', 'rm_from_clipboard' => 'ຍ້າຍອອກຈາກຄິບບອດ', 'rm_group' => 'ຍ້າຍກຸ່ມນີ້ອອກ', 'rm_role' => 'ລົບບົດບາດ', +'rm_task' => '', 'rm_transmittal' => 'ລົບການໂອນຍ້າຍ', 'rm_transmittalitem' => 'ລົບລາຍການ', 'rm_user' => 'ລົບຜູ້ໄຊ້', @@ -1187,6 +1197,8 @@ URL: [url]', 'search_results_access_filtered' => 'ຜົນການຄົ້ນຫາ ອາດຈະມີເນື້ອໃນທີ່ປະຕິເສດເຂົ້າເຖິງໄດ້', 'search_time' => 'ເວລາທີ່ໄຊ້ໄປ: [time] ວິນາທີ', 'seconds' => 'ວິນາທີ', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'ການເລືອກ', 'select_attrdefgrp_show' => 'ເລືອກເວລາທີ່ຈະສະແດງ', 'select_attribute_value' => '', @@ -1245,6 +1257,12 @@ URL: [url]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => 'ອາປາເຊ -ຂຽນໄຫມ່', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'ການຕັ້ງຄ່າການກວດສອບຄວາມຖືກຕ້ອງ', 'settings_autoLoginUser' => 'ເຂົ້າສູ້ລະບົບແບອັດຕະໂນມັດ', 'settings_autoLoginUser_desc' => 'ໄຊ້ລະຫັດຜູ້ໄຊ້ສຳຫລັບການເຂົ້າເຖີງຫາກຜູ້ໄຊ້ຍັງບໍ່ໄດ້ລົງຊື່ເຂົ້າໄຊ້ການເຂົ້າເຖີງດັ່ງກ່າວຈະບໍ່ສັງເຊັດຊັ້ນ', @@ -1625,6 +1643,7 @@ URL: [url]', 'splash_add_group' => 'ເພີ່ມກຸ່ມໄຫມ່ແລ້ວ', 'splash_add_group_member' => 'ເພີ່ມສະມາຊິກໄໝ່ແລ້ວ', 'splash_add_role' => 'ເພີ່ມບົດບາດໄຫມ່', +'splash_add_task' => '', 'splash_add_to_transmittal' => 'ເພີ່ມການສົ່ງຜ່ານ', 'splash_add_transmittal' => 'ເພີ່ມການສົ່ງຜ່ານ', 'splash_add_user' => 'ເພີ່ມຜູ້ໄຊ້ໄຫມ່ແລ້ວ', @@ -1853,6 +1872,7 @@ URL: [url]', 'uploading_zerosize' => 'ການອັບໂຫລດໄຟລເປົ່າ, ການອັບໂຫຼດຖຶກຍົກເລີກ', 'used_discspace' => 'ໄຊ້ເນື້ອທີດິສ', 'user' => 'ຜູ້ໄຊ້ງານ', +'userdata_file' => '', 'userid_groupid' => 'ລະຫັດຜູ້ໄຊ້ / ລະຫັດກຸ່ມ', 'users' => 'ຜູ້ໄຊ້', 'users_and_groups' => 'ຜູ້ໄຊ້ / ກຸ່ມ', @@ -1920,6 +1940,7 @@ URL: [url]', 'workflow_state_in_use' => 'ປະຈຸບັນນີ້ສະຖານະນີຖືກໄຊ້ໂດຍເວີກໂຟລ', 'workflow_state_name' => 'ຊື່', 'workflow_summary' => 'ສະຫຼຸບການເຮັດວຽກ', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'ການປ່ຽນພາບຢ່າງນ້ອຍໜື່ງຄັ້ງບໍ່ມີທັງຜູ້ໄຊ້ແລະກຸ່ມ', 'workflow_user_summary' => 'ສະຫລູບຂໍ້ມູນຂອງຜູ້ໄຊ້', 'wrong_filetype' => '', diff --git a/languages/nb_NO/lang.inc b/languages/nb_NO/lang.inc index be2819954..fef8c465e 100644 --- a/languages/nb_NO/lang.inc +++ b/languages/nb_NO/lang.inc @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Vil du virkelig fjerne alle filer i mappen "[foldername]" og i katalogens undermapper?
OBS! Filene kan ikke gjennopprettes!', 'confirm_rm_group' => 'Vil du virkelig fjerne gruppen "[groupname]"?
OBS! Gruppen kan ikke gjennopprettes!', 'confirm_rm_log' => 'Vil du virkelig fjerne loggfilen "[logname]"?
OBS! Loggfilen kan ikke gjennopprettes!', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'Bekreft fjerning av sendingen.', 'confirm_rm_transmittalitem' => 'Bekreft fjerning', 'confirm_rm_user' => 'Vil du virkelig fjerne bruker "[username]"?
OBS! handlingen kan ikke omgjøres!', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Aktuell version', 'daily' => 'Daglig', 'databasesearch' => 'Søk i database', +'database_schema_version' => '', 'date' => 'Dato', 'days' => 'dager', 'debug' => 'Feilsøking', @@ -556,6 +558,7 @@ Bruker: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Utløpsdato endret', 'export' => 'Eksport', +'export_user_list_csv' => '', 'extension_archive' => 'Utvidelse', 'extension_changelog' => 'Endringslogg', 'extension_loading' => 'Laster inn utvidelser ...', @@ -668,6 +671,9 @@ URL: [url]', 'import_extension' => 'Importer utvidelse', 'import_fs' => 'Import fra filsystem', 'import_fs_warning' => 'Dette fungerer bare for mapper i slippmappen. Operasjonen importerer rekursivt alle mapper og filer. Filer vil bli gitt ut umiddelbart.', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'Inkludere innhold', 'include_documents' => 'Inkludere dokument', 'include_subdirectories' => 'Inkludere undermapper', @@ -686,6 +692,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Kopier arvet adgangsliste', 'inherits_access_empty_msg' => 'Start med tom adgangsliste', 'inherits_access_msg' => 'Tilgang blir arvet.', +'installed_php_extensions' => '', 'internal_error' => 'Intern feil', 'internal_error_exit' => 'Intern feil. Kan ikke fullføre forespørselen.', 'invalid_access_mode' => 'Ugyldig adgangsmodus', @@ -801,6 +808,7 @@ URL: [url]', 'missing_checksum' => 'Mangler sjekksum', 'missing_file' => 'Mangler fil', 'missing_filesize' => 'Mangler filstørrelse', +'missing_php_extensions' => '', 'missing_reception' => 'Mangler mottager', 'missing_request_object' => 'Mangler forespørsels-objekt', 'missing_transition_user_group' => 'Mangler bruker / gruppe for overgang', @@ -954,6 +962,7 @@ Om du fortsatt har problemer med innloggingen, kontakt admin.', 'pending_revision' => 'Venter på korrektur', 'pending_workflows' => 'Venter på arbeidsflyt', 'personal_default_keywords' => 'Personlig søkeordliste', +'php_info' => '', 'pl_PL' => 'Polsk', 'possible_substitutes' => 'Erstatte', 'preset_expires' => 'Forhåndsinnstilt utløp', @@ -1148,6 +1157,7 @@ URL: [url]', 'rm_from_clipboard' => 'Fjern fra utklippstavlen', 'rm_group' => 'Fjern denne gruppen', 'rm_role' => 'Slett denne rollen', +'rm_task' => '', 'rm_transmittal' => 'Fjern overføringen', 'rm_transmittalitem' => 'Fjerne gjenstand', 'rm_user' => 'Fjern bruker', @@ -1202,6 +1212,8 @@ URL: [url]', 'search_results_access_filtered' => 'Søkeresultater kan inneholde innhold som du ikke har tilgang til!', 'search_time' => 'Brukt tid: [time] sek.', 'seconds' => 'sekunder', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Utvalg', 'select_attrdefgrp_show' => 'Velg visings alternativ', 'select_attribute_value' => 'Velg egenskapsverdi', @@ -1258,6 +1270,12 @@ Bruker: [username] 'settings_allowReviewerOnly' => 'Tilat til å kun sette korrektur', 'settings_allowReviewerOnly_desc' => 'Aktiver dette hvis det skal være tillatt å stille en korrekturleser, men ingen godkjenner i tradisjonell arbeidsflytmodus.', 'settings_apache_mod_rewrite' => 'Apache - Omskriving av moduler', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Autentiseringsinnstillinger', 'settings_autoLoginUser' => 'Automatisk innlogging', 'settings_autoLoginUser_desc' => 'Bruk dette brukernavnet for tilgange hvis brukeren ikke allerede er logget inn. En slik tilgang vil ikke opprette en økt.', @@ -1638,6 +1656,7 @@ Bruker: [username] 'splash_add_group' => 'Ny gruppe lagt til', 'splash_add_group_member' => 'Nytt gruppemedlem lagt til', 'splash_add_role' => 'Lagt til ny rolle', +'splash_add_task' => '', 'splash_add_to_transmittal' => 'Legg til overføring', 'splash_add_transmittal' => 'Lagt til overføring', 'splash_add_user' => 'Ny bruker lagt til', @@ -1866,6 +1885,7 @@ URL: [url]', 'uploading_zerosize' => 'Laster opp en tom fil. Opplastingen er kansellert.', 'used_discspace' => 'Brukt diskplass', 'user' => 'Bruker', +'userdata_file' => '', 'userid_groupid' => 'Brukernavn/gruppenavn', 'users' => 'Brukere', 'users_and_groups' => 'Brukere/grupper', @@ -1933,6 +1953,7 @@ URL: [url]', 'workflow_state_in_use' => 'Denne tilstanden brukes for øyeblikket av arbeidsflyter.', 'workflow_state_name' => 'Navn', 'workflow_summary' => 'Arbeidsflyt sammendrag', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'Minst en av overgangene har verken en bruker eller en gruppe!', 'workflow_user_summary' => 'Brukersammendrag', 'wrong_filetype' => 'Feil filtype', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 67196458e..eabd365b1 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (779), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) +// Translators: Admin (780), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) $text = array( '2_factor_auth' => '2-factor-authenticatie', @@ -287,6 +287,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Weet U zeker dat U alle bestanden en submappen van de map "[foldername]" wilt verwijderen?
Let op: deze actie kan niet ongedaan worden gemaakt.', 'confirm_rm_group' => 'Weet U zeker dat U de Groep "[groupname]" wilt verwijderen?
Let op: deze handeling kan niet ongedaan worden gemaakt.', 'confirm_rm_log' => 'Weet U zeker dat U het logbestand "[logname]" wilt verwijderen?
Let op: deze handeling kan niet ongedaan worden gemaakt.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'Bestig de verwijdering van de verzending', 'confirm_rm_transmittalitem' => 'Bevestig te verzenden item', 'confirm_rm_user' => 'Weet U zeker dat U de Gebruiker "[username]" wilt verwijderen?
Let op: deze handeling kan niet ongedaan worden gemaakt.', @@ -311,6 +312,7 @@ URL: [url]', 'current_version' => 'Huidige versie', 'daily' => 'Dagelijks', 'databasesearch' => 'Zoek in Database', +'database_schema_version' => '', 'date' => 'Datum', 'days' => 'Dagen', 'debug' => 'debug', @@ -537,6 +539,7 @@ Gebruiker: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Vervaldatum gewijzigd', 'export' => 'export', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => 'Overzicht wijzigingen', 'extension_loading' => 'Laden van extensies ...', @@ -642,6 +645,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => 'Importeer van bestandssysteem', 'import_fs_warning' => 'Dit werkt alleen in de dropfolder. Mappen en bestanden worden recursief geïmporteerd. Bestanden worden direct ter beschikking gesteld.', +'import_users' => 'Gebruikers importeren', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'inclusief inhoud', 'include_documents' => 'Inclusief documenten', 'include_subdirectories' => 'Inclusief submappen', @@ -660,6 +666,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Kopie lijst overerfde toegang', 'inherits_access_empty_msg' => 'Begin met lege toegangslijst', 'inherits_access_msg' => 'Toegang is (over/ge)erfd.', +'installed_php_extensions' => '', 'internal_error' => 'Interne fout', 'internal_error_exit' => 'Interne fout. Niet mogelijk om verzoek uit de voeren.', 'invalid_access_mode' => 'Foutmelding: verkeerde toegangsmode', @@ -775,6 +782,7 @@ URL: [url]', 'missing_checksum' => 'Controlesom ontbreekt', 'missing_file' => 'File ontbreekt', 'missing_filesize' => 'Bestandsgrootte ontbreekt', +'missing_php_extensions' => '', 'missing_reception' => 'Ontvanger ontbreekt', 'missing_request_object' => 'Gevraagd object ontbreekt', 'missing_transition_user_group' => 'Gebruiker / groep ontbreekt voor de overdracht', @@ -934,6 +942,7 @@ Mocht u de komende minuten geen email ontvangen, probeer het dan nogmaals en con 'pending_revision' => 'Wachten op herziening', 'pending_workflows' => 'Wachten op workflow', 'personal_default_keywords' => 'Persoonlijke sleutelwoorden', +'php_info' => '', 'pl_PL' => 'Pools', 'possible_substitutes' => 'Mogelijke alternatieven', 'preset_expires' => 'Preset verloopt', @@ -1126,6 +1135,7 @@ URL: [url]', 'rm_from_clipboard' => 'Verwijder van klembord', 'rm_group' => 'Verwijder deze Groep', 'rm_role' => 'Verwijder deze rol', +'rm_task' => '', 'rm_transmittal' => 'Verwijder de verzending', 'rm_transmittalitem' => 'Verwijder verzonden item', 'rm_user' => 'Verwijder deze Gebruiker', @@ -1180,6 +1190,8 @@ URL: [url]', 'search_results_access_filtered' => 'Zoekresultaten kunnen inhoud bevatten waar U geen toegang toe heeft.', 'search_time' => 'Verstreken tijd: [time] sec.', 'seconds' => 'seconden', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Selectie', 'select_attrdefgrp_show' => 'Toon attribut definities-groep', 'select_attribute_value' => '', @@ -1238,6 +1250,12 @@ Name: [username] 'settings_allowReviewerOnly' => 'Alleen reviewer toestaan', 'settings_allowReviewerOnly_desc' => 'Aanzetten als wel de reviewe, maar niet de goedkeurder toegewezen kan worden.', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Authenticatie instellingen', 'settings_autoLoginUser' => 'Automatische login', 'settings_autoLoginUser_desc' => 'Gebruik dit gebruikers-ID als de gebruiker nog niet is ingelogd. Zo, @@ -1622,6 +1640,7 @@ Name: [username] 'splash_add_group' => 'Nieuwe groep toegevoegd', 'splash_add_group_member' => 'Nieuwe groepslid toegevoegd', 'splash_add_role' => 'Nieuwe rol toegevoegd', +'splash_add_task' => '', 'splash_add_to_transmittal' => 'Toevoegen aan verzending', 'splash_add_transmittal' => 'Verzending toegevoegd', 'splash_add_user' => 'Nieuwe gebruiker toegevoegd', @@ -1850,6 +1869,7 @@ URL: [url]', 'uploading_zerosize' => 'Uploaden van een leeg bestand. Upload wordt geannuleerd.', 'used_discspace' => 'Gebruike schijf ruimte', 'user' => 'Gebruiker', +'userdata_file' => '', 'userid_groupid' => 'GebruikerID / Groep ID', 'users' => 'Gebruikers', 'users_and_groups' => 'Gebruikers / Groepen', @@ -1917,6 +1937,7 @@ URL: [url]', 'workflow_state_in_use' => 'Deze status wordt momenteel gebruikt door workflows.', 'workflow_state_name' => 'Naam', 'workflow_summary' => 'Workflow samenvatting', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Gebruiker samenvatting', 'wrong_filetype' => '', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 07206a753..5d40bab47 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -19,15 +19,15 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (871), netixw (84), romi (93), uGn (112) +// Translators: Admin (1452), netixw (84), romi (93), uGn (112) $text = array( -'2_factor_auth' => '', -'2_factor_auth_info' => '', -'2_fact_auth_secret' => '', +'2_factor_auth' => 'Uwierzytelnianie dwuetapowe', +'2_factor_auth_info' => 'Uwierzytelnianie dwuetapowe', +'2_fact_auth_secret' => 'Uwierzytelnianie dwuetapowe poufny kod', 'accept' => 'Akceptuj', 'access_control' => 'Kontrola dostępu', -'access_control_is_off' => '', +'access_control_is_off' => 'Kontrola dostepu jest wyłączona', 'access_denied' => 'Dostęp zabroniony.', 'access_inheritance' => 'Dziedziczenie dostępu', 'access_mode' => 'Tryb dostępu', @@ -54,7 +54,7 @@ URL: [url]', 'action_revise' => 'Korekta', 'add' => 'Dodaj', 'add_approval' => 'Zaakceptuj', -'add_attrdefgroup' => '', +'add_attrdefgroup' => 'Dodaj nowy atrybut grupy', 'add_document' => 'Dodaj dokument', 'add_document_link' => 'Dodaj link', 'add_document_notify' => 'Przypisz powiadomienia', @@ -65,15 +65,15 @@ URL: [url]', 'add_member' => 'Dodaj członka', 'add_multiple_documents' => 'Dodaj wiele dokumentów', 'add_multiple_files' => 'Dodaj wiele plików (Nazwy plików zostaną użyte jako nazwy dokumentów)', -'add_receipt' => '', +'add_receipt' => 'Dodaj potwierdzenie', 'add_review' => 'Zatwierdź recenzję', -'add_revision' => '', -'add_role' => '', +'add_revision' => 'Dodaj korektę', +'add_role' => 'Dodaj role', 'add_subfolder' => 'Dodaj podfolder', -'add_task' => '', +'add_task' => 'Dodaj zadanie', 'add_to_clipboard' => 'Dodaj do schowka', -'add_to_transmittal' => '', -'add_transmittal' => '', +'add_to_transmittal' => 'Dodaj do przekazu', +'add_transmittal' => 'Dodaj przekaz', 'add_user' => 'Dodaj nowego użytkownika', 'add_user_to_group' => 'Przypisz użytkownika do grupy', 'add_workflow' => 'Dodaj nowy proces', @@ -89,29 +89,29 @@ URL: [url]', 'already_subscribed' => 'Aktualnie subskrybowane', 'and' => 'i', 'apply' => 'Zastosuj', -'approvals_accepted' => '', -'approvals_accepted_latest' => '', -'approvals_and_reviews_accepted' => '', -'approvals_and_reviews_not_touched' => '', -'approvals_and_reviews_rejected' => '', -'approvals_not_touched' => '', -'approvals_not_touched_latest' => '', -'approvals_rejected' => '', -'approvals_rejected_latest' => '', -'approvals_without_group' => '', -'approvals_without_user' => '', +'approvals_accepted' => 'Zatwierdzenia zaakceptowane', +'approvals_accepted_latest' => 'Zatwierdzenia zaakceptowane później', +'approvals_and_reviews_accepted' => 'Zatwierdzenia i recenzje zaakceptowane', +'approvals_and_reviews_not_touched' => 'Zatwierdzenia i recenzje nie oglądane', +'approvals_and_reviews_rejected' => 'Zatwierdzenia i recenzje odrzucone', +'approvals_not_touched' => 'Zatwierdzenia nie oglądane', +'approvals_not_touched_latest' => 'Zatwierdzenia nie oglądane później', +'approvals_rejected' => 'Zatwierdzenia odrzucone', +'approvals_rejected_latest' => 'Zatwierdzenia odrzucone później', +'approvals_without_group' => 'Zatwierdzenia bez grupy', +'approvals_without_user' => 'Zatwierdzenia bez użytkownika', 'approval_deletion_email' => 'Prośba o akceptację została usunięta', 'approval_deletion_email_body' => '', -'approval_deletion_email_subject' => '', -'approval_file' => '', +'approval_deletion_email_subject' => 'Akceptacja', +'approval_file' => 'Zatwierdzenia pliku', 'approval_group' => 'Grupa akceptująca', 'approval_log' => 'Zatwierdź log', 'approval_request_email' => 'Prośba o akceptację', -'approval_request_email_body' => 'Prośba o zatwierdzenie -Dokument: [name] -Wersja: [version] -Folder nadrzędny: [folder_path] -Użytkownik: [username] +'approval_request_email_body' => 'Prośba o zatwierdzenie +Dokument: [name] +Wersja: [version] +Folder nadrzędny: [folder_path] +Użytkownik: [username] URL: [url]', 'approval_request_email_subject' => '[sitename]: [name] - Prośba o zatwierdzenie', 'approval_status' => 'Status akceptacji', @@ -121,10 +121,10 @@ URL: [url]', 'approval_summary' => 'Podsumowanie akceptacji', 'approval_update_failed' => 'Błąd aktualizacji statusu akceptacji. Aktualizacja nie powiodła się.', 'approvers' => 'Osoby akceptujące', -'approver_already_assigned' => '', -'approver_already_removed' => '', +'approver_already_assigned' => 'Użytkownik jest już przypisany jako osoba zatwierdzająca.', +'approver_already_removed' => 'Osoba zatwierdzająca została już usunięta z procesu zatwierdzania lub już przesłała zatwierdzenie.', 'april' => 'Kwiecień', -'archive' => '', +'archive' => 'Archiwum', 'archive_creation' => 'Tworzenie archiwum', 'archive_creation_warning' => 'Ta operacja utworzy archiwum zawierające pliki z całego repozytorium. Po utworzeniu archiwum będzie zapisane w folderze na serwerze.
UWAGA: archiwum utworzone jako czytelne dla ludzi będzie bezużyteczne jako kopia serwera.', 'ar_EG' => 'Arabski', @@ -133,13 +133,13 @@ URL: [url]', 'assign_reviewers' => 'Przypisz recenzentów', 'assign_user_property_to' => 'Przypisz właściwości użytkownika do', 'assumed_released' => 'Assumed released', -'attrdefgroup_management' => '', -'attrdefgrp_show_detail' => '', -'attrdefgrp_show_list' => '', -'attrdefgrp_show_search' => '', -'attrdefgrp_show_searchlist' => '', +'attrdefgroup_management' => 'Zarządzanie grupami atrybutów', +'attrdefgrp_show_detail' => 'Szczegóły', +'attrdefgrp_show_list' => 'Lista', +'attrdefgrp_show_search' => 'Szukaj', +'attrdefgrp_show_searchlist' => 'Wynik wyszukiwania', 'attrdef_exists' => 'Definicja atrybutu już istnieje', -'attrdef_info' => '', +'attrdef_info' => 'Informacja', 'attrdef_in_use' => 'Definicja atrybutu nadal jest w użyciu', 'attrdef_management' => 'Zarządzanie definicją atrybutu', 'attrdef_maxvalues' => 'Max. ilość wartości', @@ -147,49 +147,49 @@ URL: [url]', 'attrdef_min_greater_max' => 'Minimalna ilość wartości jest większa od ich maksymalnej ilości', 'attrdef_multiple' => 'Pozwól na wiele wartości', 'attrdef_multiple_needs_valueset' => 'Definiowanie atrybutów z wieloma wartościami wymaga podania tych wartości', -'attrdef_must_be_multiple' => '', +'attrdef_must_be_multiple' => 'Atrybut musi mieć więcej niż jedną wartość, ale nie może zawierać wielu wartości', 'attrdef_name' => 'Nazwa', -'attrdef_noname' => '', +'attrdef_noname' => 'Brak nazwy dla definicji atrybutu', 'attrdef_objtype' => 'Typ obiektu', 'attrdef_regex' => 'Wyrażenie regularne', 'attrdef_type' => 'Typ', -'attrdef_type_boolean' => '', +'attrdef_type_boolean' => 'Boolean', 'attrdef_type_date' => 'Data', -'attrdef_type_email' => '', +'attrdef_type_email' => 'Email', 'attrdef_type_float' => 'Liczna zmiennoprzecinkowa', 'attrdef_type_int' => 'Liczba całkowita', 'attrdef_type_string' => 'Ciąg znaków', -'attrdef_type_url' => '', -'attrdef_valueset' => 'Set of values', +'attrdef_type_url' => 'URL', +'attrdef_valueset' => 'Zestaw wartości', 'attributes' => 'Atrybuty', -'attribute_changed_email_body' => 'Zmiana atrybutu -Dokument: [name] -Wersja: [version] -Atrybut: [attribute_name] -Old value: [attribute_old_value] -New value: [attribute_new_value] -Folder nadrzędny: [folder_path] -Użytkownik: [username] +'attribute_changed_email_body' => 'Zmiana atrybutu +Dokument: [name] +Wersja: [version] +Atrybut: [attribute_name] +Old value: [attribute_old_value] +New value: [attribute_new_value] +Folder nadrzędny: [folder_path] +Użytkownik: [username] URL: [url]', 'attribute_changed_email_subject' => '[sitename]: [name] - Zmiana atrybutu', 'attribute_count' => 'liczba użyć', 'attribute_value' => 'wartość atrybutu', -'attribute_value_not_in_valueset' => '', -'attr_malformed_boolean' => '', -'attr_malformed_date' => '', -'attr_malformed_email' => '', -'attr_malformed_float' => '', -'attr_malformed_int' => '', -'attr_malformed_url' => '', -'attr_max_values' => '', -'attr_min_values' => '', -'attr_not_in_valueset' => '', +'attribute_value_not_in_valueset' => 'Wartość nie w zestawie wartości', +'attr_malformed_boolean' => 'Wartość atrybutu \'[value]\' \'[attrname]\' nie jest prawidłowy boolean', +'attr_malformed_date' => 'Wartość atrybutu \'[value]\' \'[attrname]\' nie jest prawidłową datą', +'attr_malformed_email' => 'Wartość atrybutu \'[value]\' \'[attrname]\' nie jest prawidłowy adres email', +'attr_malformed_float' => 'Wartość atrybutu \'[value]\' \'[attrname]\' nie jest prawidłową liczbą zmiennoprzecinkową', +'attr_malformed_int' => 'Wartość atrybutu \'[value]\' \'[attrname]\' nie jest prawidłową liczbą całkowitą', +'attr_malformed_url' => 'Wartość atrybutu \'[value]\' \'[attrname]\' nie jest prawidłowy URL', +'attr_max_values' => 'Przekroczono maksymalną liczbę wymaganych wartości dla atrybutu \'[attrname]\'', +'attr_min_values' => 'Minimalna liczba wymaganych wartości dla atrybutu \'[attrname]\' nie została osiągnięta', +'attr_not_in_valueset' => 'Wartość atrybutu \'[value]\' \'[attrname]\' nie jest zawarta w zestawie wartości', 'attr_no_regex_match' => 'Wartość atrybutu nie pasuje do wyrażenia regularnego', -'attr_validation_error' => '', +'attr_validation_error' => 'Wartość \'[value]\' atrybutu \'[attrname]\' jest nieprawidłowa', 'at_least_n_users_of_group' => 'Przynajmniej [number_of_users] użytkowników grupy [group]', 'august' => 'Sierpień', 'authentication' => 'Autoryzacja', -'authentication_failed' => '', +'authentication_failed' => 'Błędna autoryzacja', 'author' => 'Autor', 'automatic_status_update' => 'Automatyczna zmiana statusu', 'back' => 'Powrót', @@ -212,15 +212,15 @@ URL: [url]', 'cannot_retrieve_review_snapshot' => 'Nie można pobrać migawki stanu recenzowania dla tej wersji dokumentu.', 'cannot_rm_root' => 'Błąd: Nie można usunąć katalogu głównego.', 'categories' => 'Kategorie', -'categories_loading' => '', +'categories_loading' => 'Poczekaj, aż lista kategorii zostanie załadowana…', 'category' => 'Kategoria', 'category_exists' => 'Kategoria już istnieje.', 'category_filter' => 'Tylko w kategoriach', -'category_info' => '', +'category_info' => 'Informacja', 'category_in_use' => 'Ta kategoria jest aktualnie używana przez dokumenty.', 'category_noname' => 'Nie podano nazwy kategorii.', 'ca_ES' => 'Kataloński', -'changelog_loading' => '', +'changelog_loading' => 'Poczekaj, aż dziennik zmian zostanie załadowany…', 'change_assignments' => 'Zmiana przypisania', 'change_password' => 'Zmiana hasła', 'change_password_message' => 'Twoje hasło zostało zmienione.', @@ -236,18 +236,18 @@ URL: [url]', 'chart_docsperuser_title' => 'Dokumenty na użytkownika', 'chart_selection' => 'Wybierz wykres', 'chart_sizeperuser_title' => 'Zajętość dysku na użytkownika', -'checkedout_file_has_different_version' => '', -'checkedout_file_has_disappeared' => '', -'checkedout_file_is_unchanged' => '', -'checkin_document' => '', -'checkoutpath_does_not_exist' => '', -'checkout_document' => '', -'checkout_is_disabled' => '', +'checkedout_file_has_different_version' => 'Wersja wypisana nie jest identyczna z bieżącą wersją. Zameldowanie nie zaktualizuje dokumentu.', +'checkedout_file_has_disappeared' => 'Plik wyrejestrowanego dokumentu zniknął. Zameldowanie nie będzie możliwe.', +'checkedout_file_is_unchanged' => 'Plik wyrejestrowanego dokumentu jest nadal niezmieniony. Zameldowanie nie będzie możliwe. Jeśli nie planujesz żadnych modyfikacji, możesz zresetować status transakcji.', +'checkin_document' => 'Zamelduj się', +'checkoutpath_does_not_exist' => 'Ścieżka realizacji transakcji nie istnieje', +'checkout_document' => 'Wymelduj się', +'checkout_is_disabled' => 'Wyewidencjonowywanie dokumentów jest wyłączone w konfiguracji.', 'choose_attrdef' => 'Proszę wybrać definicję atrybutu', -'choose_attrdefgroup' => '', +'choose_attrdefgroup' => 'Wybierz grupę atrybutów', 'choose_category' => 'Proszę wybrać', 'choose_group' => 'Wybierz grupę', -'choose_role' => '', +'choose_role' => 'Wybierz rolę', 'choose_target_category' => 'Wybierz kategorię', 'choose_target_document' => 'Wybierz dokument', 'choose_target_file' => 'Wybierz plik', @@ -256,23 +256,23 @@ URL: [url]', 'choose_workflow' => 'Wybierz proces', 'choose_workflow_action' => 'Wybierz działanie procesu', 'choose_workflow_state' => 'Wybierz stan obiegu', -'class_name' => '', +'class_name' => 'Nazwa klasy', 'clear_cache' => 'Wyczyść cache', 'clear_clipboard' => 'Oczyść schowek', -'clear_password' => '', +'clear_password' => 'Wyczyść hasło', 'clipboard' => 'Schowek', 'close' => 'Zamknij', -'command' => '', +'command' => 'Polecenia', 'comment' => 'Opis', 'comment_changed_email' => '', 'comment_for_current_version' => 'Komentarz do wersji', 'configure_extension' => 'Konfiguruj rozszerzenie', -'confirm_clear_cache' => '', +'confirm_clear_cache' => 'Czy naprawdę chcesz wyczyścić pamięć podręczną? Spowoduje to usunięcie wszystkich wstępnie obliczonych obrazów podglądu.', 'confirm_create_fulltext_index' => 'Tak, chcę ponownie utworzyć indeks pełnotekstowy!', -'confirm_move_document' => '', -'confirm_move_folder' => '', +'confirm_move_document' => 'Potwierdź przeniesienie dokumentu', +'confirm_move_folder' => 'Potwierdź przeniesienie folderu', 'confirm_pwd' => 'Potwierdź hasło', -'confirm_rm_attr_value' => '', +'confirm_rm_attr_value' => 'Czy naprawdę chcesz usunąć wartość atrybutu?', 'confirm_rm_backup' => 'Czy rzeczywiście chcesz usunąć plik "[arkname]"?
Ostrożnie: Ta operacja nie może być cofnięta.', 'confirm_rm_document' => 'Czy rzeczywiście chcesz usunąć dokument \'[documentname]\'?
Ostrożnie: Ta operacja nie może być cofnięta.', 'confirm_rm_dump' => 'Czy rzeczywiście chcesz usunąć plik "[dumpname]"?
Ostrożnie: Ta operacja nie może być cofnięta.', @@ -282,33 +282,35 @@ URL: [url]', 'confirm_rm_folder_files' => 'Czy rzeczywiście chcesz usunąć wszystkie pliki z folderu "[foldername]" oraz jego podfoldery?
Ostrożnie: Ta operacja nie może być cofnięta.', 'confirm_rm_group' => 'Czy rzeczywiście chcesz usunąć grupę "[groupname]"?
Ostrożnie: Ta operacja nie może być cofnięta.', 'confirm_rm_log' => 'Czy rzeczywiście chcesz usunąć plik dziennika "[logname]"?
Ostrożnie: Ta operacja nie może być cofnięta.', -'confirm_rm_transmittal' => '', -'confirm_rm_transmittalitem' => '', +'confirm_rm_task' => '', +'confirm_rm_transmittal' => 'Proszę potwierdzić usunięcie przekazu.', +'confirm_rm_transmittalitem' => 'Potwierdź usunięcie', 'confirm_rm_user' => 'Czy rzeczywiście chcesz usunąć użytkownika "[username]"?
Ostrożnie: Ta operacja nie może być cofnięta.', -'confirm_rm_user_from_processes' => '', +'confirm_rm_user_from_processes' => 'Czy naprawdę chcesz usunąć użytkownika "[username]" ze wszystkich procesów?
Uwaga: Ta akcja może doprowadzić do zwolnienia dokumentów, jeśli użytkownik był jedynym lub ostatnim zatwierdzającym.', 'confirm_rm_version' => 'Czy rzeczywiście chcesz usunąć wersję [version] dokumentu "[documentname]"?
Ostrożnie: Ta operacja nie może być cofnięta.', -'confirm_transfer_link_document' => '', -'confirm_transfer_objects' => '', -'confirm_update_transmittalitem' => '', +'confirm_transfer_link_document' => 'Wybierz, jeśli chcesz połączyć przeciągnięty dokument lub przenieść jego zawartość do dokumentu docelowego jako nową wersję. Można przesyłać tylko dokumenty z jedną wersją. Przeciągnięty dokument zostanie następnie usunięty.', +'confirm_transfer_objects' => 'Czy naprawdę chcesz przenieść dokumenty, foldery itp. użytkownika "[username]"?
Uważaj: tej czynności nie można cofnąć.', +'confirm_update_transmittalitem' => 'Potwierdź aktualizację', 'content' => 'Zawartość', 'continue' => 'Kontynuuj', 'converter_new_cmd' => 'Komenda', 'converter_new_mimetype' => 'Nowy typ MIME', -'copied_to_checkout_as' => '', -'create_download_link' => '', +'copied_to_checkout_as' => 'Plik skopiowany w celu wyewidencjonowania miejsca jako \'[filename]\' w dniu [date]', +'create_download_link' => 'Utwórz link do pobrania', 'create_fulltext_index' => 'Utwórz indeks pełnotekstowy', 'create_fulltext_index_warning' => 'Zamierzasz ponownie utworzyć indeks pełnotekstowy. To może zająć sporo czasu i ograniczyć ogólną wydajność systemu. Jeśli faktycznie chcesz to zrobić, proszę potwierdź tę operację.', 'creation_date' => 'Utworzony', 'cs_CZ' => 'czeski', 'current_password' => 'Aktualne hasło', -'current_quota' => '', +'current_quota' => 'Obecny limit systemowy jest ustawiony [quota].', 'current_state' => 'Bieżący stan', 'current_version' => 'Bieżąca wiersja', 'daily' => 'Codziennie', 'databasesearch' => 'Przeszukiwanie bazy danych', +'database_schema_version' => '', 'date' => 'Data', 'days' => 'dni', -'debug' => '', +'debug' => 'Debugowanie', 'december' => 'Grudzień', 'default_access' => 'Domyślny tryb dostępu', 'default_keywords' => 'Dostępne słowa kluczowe', @@ -319,34 +321,34 @@ URL: [url]', 'de_DE' => 'niemiecki', 'disclaimer' => 'To jest zastrzeżona strefa. Dostęp do niej ma wyłącznie wyznaczony personel. Wszelkie naruszenia będą ścigane zgodnie z prawem krajowym i międzynarodowym.', 'discspace' => 'Miejsce na dysku', -'docs_in_reception_no_access' => '', -'docs_in_revision_no_access' => '', +'docs_in_reception_no_access' => 'Dokumenty z odbiorem bez dostępu odbiorcy', +'docs_in_revision_no_access' => 'Dokumenty w wersji bez dostępu przez audytora', 'document' => 'Dokument', 'documentcontent' => 'Zawartość dokumentu', 'documents' => 'Dokumenty', -'documents_checked_out_by_you' => '', +'documents_checked_out_by_you' => 'Dokumenty sprawdzone przez Ciebie', 'documents_expired' => 'Wygasłe dokumenty', 'documents_in_process' => 'Dokumenty procesowane', -'documents_locked' => '', +'documents_locked' => 'Dokumenty zablokowane', 'documents_locked_by_you' => 'Dokumenty zablokowane przez Ciebie', 'documents_only' => 'Tylko dokumenty', 'documents_to_approve' => 'Dokumenty oczekujące na Twoje zatwierdzenie', -'documents_to_correct' => '', -'documents_to_process' => '', -'documents_to_receipt' => '', +'documents_to_correct' => 'Dokumenty oczekujące na Twoje korekty', +'documents_to_process' => 'Dokumenty oczekujące na Twoje przetworzenie', +'documents_to_receipt' => 'Dokumenty oczekujące na Twoje potwierdzenie', 'documents_to_review' => 'Dokumenty oczekujące na Twoją recenzję', -'documents_to_revise' => '', -'documents_to_trigger_workflow' => '', -'documents_user_draft' => '', -'documents_user_expiration' => '', -'documents_user_needs_correction' => '', -'documents_user_no_reception' => '', -'documents_user_obsolete' => '', -'documents_user_reception' => '', +'documents_to_revise' => 'Dokumenty oczekujące na Twoją weryfikacje', +'documents_to_trigger_workflow' => 'Dokumenty w przepływie pracy', +'documents_user_draft' => 'Dokumenty w projekcie', +'documents_user_expiration' => 'Dokumenty wygasłe', +'documents_user_needs_correction' => 'Dokumenty wymagające korekty', +'documents_user_no_reception' => 'Nie odebrane dokumenty', +'documents_user_obsolete' => 'Dokument przestarzały', +'documents_user_reception' => 'Odebrane dokumenty', 'documents_user_rejected' => 'Odrzucone dokumenty', 'documents_user_requiring_attention' => 'Dokumenty należące do Ciebie, które wymagają uwagi', -'documents_with_notification' => '', -'document_already_checkedout' => '', +'documents_with_notification' => 'Dokument z powiadomieniem', +'document_already_checkedout' => 'Dokument został już pobrany', 'document_already_locked' => 'Ten dokument jest już zablokowany', 'document_attribute_changed_email_body' => '', 'document_attribute_changed_email_subject' => '', @@ -359,7 +361,7 @@ Folder macierzysty: [folder_path] Użytkownik: [username] URL: [url]', 'document_comment_changed_email_subject' => '[sitename]: [name] - Zmiana komentarza', -'document_count' => '', +'document_count' => 'Liczba dokumentów', 'document_deleted' => 'Dokument usunięty', 'document_deleted_email' => 'Dokument usunięty', 'document_deleted_email_body' => 'Document usunięto @@ -370,7 +372,7 @@ Użytkownik: [username]', 'document_duplicate_name' => 'Zduplikowana nazwa dokumentu', 'document_has_no_workflow' => 'Dokument nie ma przypisanego procesu', 'document_infos' => 'Informacje o dokumencie', -'document_is_checked_out' => '', +'document_is_checked_out' => 'Ten dokument jest pobierany', 'document_is_not_locked' => 'Ten dokument nie jest zablokowany', 'document_link_by' => 'Dowiązane przez', 'document_link_public' => 'Publiczny', @@ -382,7 +384,7 @@ Nowy folder: [new_folder_path] Użytkownik: [username] URL: [url]', 'document_moved_email_subject' => '[sitename]: [name] - Przeniesienie dokumentu', -'document_not_checkedout' => '', +'document_not_checkedout' => 'Dokument nie jest wyewidencjonowany.', 'document_renamed_email' => 'Nazwa dokumenty zmieniona', 'document_renamed_email_body' => 'Nazwa dokumentu uległa zmianie Dokument: [name] @@ -392,57 +394,57 @@ Użytkownik: [username] URL: [url]', 'document_renamed_email_subject' => '[sitename]: [name] - Zmiana nazwy dokumentu', 'document_status_changed_email' => 'Zmieniono status dokumentu', -'document_status_changed_email_body' => 'Status dokumentu zmienił się -Dokument: [name] -Status: [status] -Folder macierzysty: [folder_path] -Użytkownik: [username] +'document_status_changed_email_body' => 'Status dokumentu zmienił się +Dokument: [name] +Status: [status] +Folder macierzysty: [folder_path] +Użytkownik: [username] URL: [url]', 'document_status_changed_email_subject' => '[sitename]: [name] - Zmiana statusu dokumentu', 'document_title' => 'Dokument \'[documentname]\'', 'document_transfered_email_body' => '', 'document_transfered_email_subject' => '', 'document_updated_email' => 'Dokument zaktualizowany', -'document_updated_email_body' => 'Document zaktualizowano -Dokument: [name] -Folder macierzysty: [folder_path] -Użytkownik: [username] -Komentarz: [comment] -Komentarz wersji: [version_comment] +'document_updated_email_body' => 'Document zaktualizowano +Dokument: [name] +Folder macierzysty: [folder_path] +Użytkownik: [username] +Komentarz: [comment] +Komentarz wersji: [version_comment] URL: [url]', 'document_updated_email_subject' => '[sitename]: [name] - Aktualizacja dokumentu', 'does_not_expire' => 'Nigdy nie wygasa', 'does_not_inherit_access_msg' => 'Dziedzicz dostęp', 'download' => 'Pobierz', 'download_extension' => 'Pobierz rozszerzenie w pliku zip', -'download_header_approval_comment' => '', -'download_header_approval_date' => '', -'download_header_approval_state' => '', -'download_header_approver' => '', -'download_header_document_name' => '', -'download_header_document_no' => '', -'download_header_filename' => '', -'download_header_internal_version' => '', -'download_header_reviewer' => '', -'download_header_review_comment' => '', -'download_header_review_date' => '', -'download_header_review_state' => '', -'download_header_state' => '', -'download_links' => '', -'do_no_transfer_to_user' => '', +'download_header_approval_comment' => 'Komentarz do zatwierdzenia', +'download_header_approval_date' => 'Data do zatwierdzenia', +'download_header_approval_state' => 'Status do zatwierdzenia', +'download_header_approver' => 'Zatwierdzający', +'download_header_document_name' => 'Nazwa dokumentu', +'download_header_document_no' => 'Numer dokumentu', +'download_header_filename' => 'Nazwa pliku', +'download_header_internal_version' => 'Wersja wewnętrzna', +'download_header_reviewer' => 'Recenzent', +'download_header_review_comment' => 'Komentarz recezenta', +'download_header_review_date' => 'Data recezenta', +'download_header_review_state' => 'Status recezenta', +'download_header_state' => 'Status', +'download_links' => 'Pobierz link', +'do_no_transfer_to_user' => 'Nie przesyłaj procesów do użytkownika', 'do_object_repair' => 'Napraw wszystkie katalogi i pliki.', 'do_object_setchecksum' => 'Ustaw sumę kontrolną', 'do_object_setfilesize' => 'Podaj rozmiar pliku', -'do_object_setfiletype' => '', +'do_object_setfiletype' => 'Podaj typ pliku', 'do_object_unlink' => 'Usuń wersję dokumentu', -'draft' => '', +'draft' => 'Szkic', 'draft_pending_approval' => 'Szkic - w oczekiwaniu na akceptację', 'draft_pending_review' => 'Szkic - w oczekiwaniu na opinię', 'drag_icon_here' => 'Przeciągnij ikonę folderu lub dokumentu tutaj!', -'dropfolderdir_missing' => '', -'dropfolder_file' => 'Plik z folderu rozwijanego', -'dropfolder_folder' => 'Katalog ze strefy drop', -'dropfolder_metadata' => '', +'dropfolderdir_missing' => 'Twój osobisty folder zrzutu nie istnieje na serwerze! Poproś swojego administratora o jego utworzenie.', +'dropfolder_file' => 'Plik z folderu zrzutu', +'dropfolder_folder' => 'Katalog ze strefy zrzutu', +'dropfolder_metadata' => 'Metadane folderu zrzutu', 'dropupload' => 'Szybki upload', 'drop_files_here' => 'Przeciągnij tu pliki!', 'dump_creation' => 'Utworzenie zrzutu bazy danych', @@ -460,70 +462,70 @@ URL: [url]', 'edit_document_props' => 'Edytuj dokument', 'edit_event' => 'Edytuj zdarzenie', 'edit_existing_access' => 'Edytuj listę dostępu', -'edit_existing_attribute_groups' => '', +'edit_existing_attribute_groups' => 'Edytuj grupy atrybutów', 'edit_existing_notify' => 'Edytuj listę powiadomień', 'edit_folder_access' => 'Edytuj dostęp', -'edit_folder_attrdefgrp' => '', +'edit_folder_attrdefgrp' => 'Edytuj grupy atrybutów', 'edit_folder_notify' => 'Lista powiadomień dla folderu', 'edit_folder_props' => 'Edytuj folder', 'edit_group' => 'Edytuj grupę', -'edit_online' => '', -'edit_online_warning' => '', -'edit_task' => '', -'edit_transmittal_props' => '', +'edit_online' => 'Edytuj online', +'edit_online_warning' => 'Zapisanie zmian spowoduje zastąpienie zawartości bieżącej wersji, zamiast tworzenia nowej wersji.', +'edit_task' => 'Edytuj zadanie', +'edit_transmittal_props' => 'Edytuj właściwości przekazu', 'edit_user' => 'Edytuj użytkownika', 'edit_user_details' => 'Zmień dane użytkownika', -'edit_version' => '', +'edit_version' => 'Edytuj wersję', 'el_GR' => 'Grecki', 'email' => 'Email', 'email_error_title' => 'Nie wprowadzono adresu email', 'email_footer' => 'W każdej chwili możesz zmienić swój email używając zakładki \'Moje konto\'.', 'email_header' => 'To jest automatyczne powiadomienie serwera DMS.', 'email_not_given' => 'Proszę podać poprawny adres email.', -'empty_attribute_group_list' => '', +'empty_attribute_group_list' => 'Brak grup atrybutów', 'empty_folder_list' => 'Nie ma dokumentów lub folderów', -'empty_list' => '', +'empty_list' => 'Brak wpisów', 'empty_notify_list' => 'Brak elementów', 'en_GB' => 'Angielski (GB)', 'equal_transition_states' => 'Stan rozpoczęcia i ukończenia jest taki sam', 'error' => 'Błąd', -'error_add_aro' => '', -'error_add_permission' => '', -'error_cleared_cache' => '', -'error_edit_task' => '', -'error_extension_getlist' => '', -'error_importfs' => '', +'error_add_aro' => 'Błąd podczas dodawania obiektu żądania dostępu', +'error_add_permission' => 'Błąd podczas dodawania uprawnienia', +'error_cleared_cache' => 'Błąd podczas czyszczenia pamięci podręcznej', +'error_edit_task' => 'Błąd podczas zapisywania zadania', +'error_extension_getlist' => 'Błąd podczas pobierania listy rozszerzeń z repozytorium', +'error_importfs' => 'Błąd podczas importowania systemu plików formularza', 'error_no_document_selected' => 'Brak wybranych dokumentów', 'error_no_folder_selected' => 'Brak wybranych katalogów', 'error_occured' => 'Wystąpił błąd', -'error_remove_document' => '', -'error_remove_folder' => '', -'error_remove_permission' => '', -'error_rm_workflow' => '', -'error_rm_workflow_action' => '', -'error_rm_workflow_state' => '', -'error_toogle_permission' => '', -'error_transfer_document' => '', -'error_trigger_workflow' => '', -'error_update_document' => '', -'error_uploading_reviewer_only' => '', +'error_remove_document' => 'Błąd podczas usuwania dokumentu', +'error_remove_folder' => 'Błąd podczas usuwania folderu', +'error_remove_permission' => 'Błąd podczas usuwania uprawnienia', +'error_rm_workflow' => 'Błąd podczas usuwania przepływu pracy', +'error_rm_workflow_action' => 'Błąd podczas usuwania akcji przepływu pracy', +'error_rm_workflow_state' => 'Błąd podczas usuwania stanu przepływu pracy', +'error_toogle_permission' => 'Błąd podczas zmiany uprawnień', +'error_transfer_document' => 'Błąd podczas przesyłania dokumentu', +'error_trigger_workflow' => 'Błąd podczas wyzwalania przejścia przepływu pracy', +'error_update_document' => 'Błąd podczas aktualizacji dokumentu', +'error_uploading_reviewer_only' => 'Błąd podczas tworzenia dokumentu. Dokument ma recenzenta, ale nie ma osoby zatwierdzającej.', 'es_ES' => 'Hiszpański', 'event_details' => 'Szczegóły zdarzenia', 'exclude_items' => 'Pozycje wykluczone', 'expired' => 'Wygasłe', -'expired_at_date' => '', -'expired_documents' => '', +'expired_at_date' => 'Wygasło [datetime]', +'expired_documents' => 'Wygasłe dokumenty', 'expires' => 'Wygasa', 'expire_by_date' => 'Wygaśnięcie wg daty', -'expire_in_1d' => '', -'expire_in_1h' => '', +'expire_in_1d' => 'Wygasa po 1 dniu', +'expire_in_1h' => 'Wygasa po 1 godzinie', 'expire_in_1m' => 'Wygasa po 1 miesiącu', 'expire_in_1w' => 'Wygasa po 1 tygodniu', 'expire_in_1y' => 'Wygasa po 1 roku', -'expire_in_2h' => '', +'expire_in_2h' => 'Wygasa po 2 godzinach', 'expire_in_2y' => 'Wygasa po 2 latach', -'expire_today' => '', -'expire_tomorrow' => '', +'expire_today' => 'Wygasa dzisiaj', +'expire_tomorrow' => 'Wygasa jutro', 'expiry_changed_email' => 'Zmieniona data wygaśnięcia', 'expiry_changed_email_body' => 'Zmiana daty wygaśnięcia Dokument: [name] @@ -531,8 +533,9 @@ Folder nadrzędny: [folder_path] Użytkownik: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Zmiana daty wygaśnięcia', -'export' => '', -'extension_archive' => '', +'export' => 'Export', +'export_user_list_csv' => '', +'extension_archive' => 'Rozszerzenie', 'extension_changelog' => 'Log Zmian', 'extension_loading' => 'Wgrywam dodatki...', 'extension_manager' => 'Zarządzanie rozszerzeniami', @@ -546,23 +549,23 @@ URL: [url]', 'files_deletion' => 'Usuwanie plików', 'files_deletion_warning' => 'Ta operacja pozwala usunąć wszystkie pliki z repozytorium. Informacje o wersjonowaniu pozostaną widoczne.', 'files_loading' => 'Proszę czekać do załadowania lista plików…', -'filetype' => '', +'filetype' => 'Typ pliku', 'file_size' => 'Rozmiar pliku', 'filter_for_documents' => 'Dodatkowe filtrowanie dla dokumentów', 'filter_for_folders' => 'Dodatkowe filtrowanie dla folderów', 'folder' => 'Folder', 'folders' => 'Foldery', 'folders_and_documents_statistic' => 'Podsumowanie zawartości', -'folders_with_notification' => '', +'folders_with_notification' => 'Foldery z powiadomieniem', 'folder_attribute_changed_email_body' => '', 'folder_attribute_changed_email_subject' => '', 'folder_comment_changed_email' => 'Zmiana komentarza', -'folder_comment_changed_email_body' => 'Komentarz uległ zmianie -Folder: [name] -Poprzedni komentarz: [old_comment] -Komentarz: [new_comment] -Parent folder: [folder_path] -Użytkownik: [username] +'folder_comment_changed_email_body' => 'Komentarz uległ zmianie +Folder: [name] +Poprzedni komentarz: [old_comment] +Komentarz: [new_comment] +Parent folder: [folder_path] +Użytkownik: [username] URL: [url]', 'folder_comment_changed_email_subject' => '[sitename]: [name] - Zmiana komentarza', 'folder_contents' => 'Zawartość folderu', @@ -599,10 +602,10 @@ URL: [url]', 'fr_FR' => 'Francuzki', 'fullsearch' => 'Przeszukiwanie treści dokumentów', 'fullsearch_hint' => 'Przeszukuj treść dokumentów', -'fulltextsearch_disabled' => '', +'fulltextsearch_disabled' => 'Indeks pełnotekstowy jest wyłączony', 'fulltext_converters' => 'Konwersja indeksu dokumentów', 'fulltext_info' => 'Informacje o indeksie pełnotekstowym', -'global_attributedefinitiongroups' => '', +'global_attributedefinitiongroups' => 'Grupy atrybutów', 'global_attributedefinitions' => 'Definicje atrybutów', 'global_default_keywords' => 'Globalne słowa kluczowe', 'global_document_categories' => 'Kategorie', @@ -613,18 +616,18 @@ URL: [url]', 'groups' => 'Grupy', 'group_approval_summary' => 'Podsumowanie akceptacji dla grupy', 'group_exists' => 'Grupa już istnieje.', -'group_info' => '', +'group_info' => 'Informacje o grupie', 'group_management' => 'Zarządzanie grupami', 'group_members' => 'Członkowie grupy', -'group_receipt_summary' => '', +'group_receipt_summary' => 'Podsumowanie potwierdzienia dla grupy', 'group_review_summary' => 'Podsumowanie opiniowania dla grupy', -'group_revision_summary' => '', +'group_revision_summary' => 'Podsumowanie korekty dla grupy', 'guest_login' => 'Zalogowany jako gość', 'guest_login_disabled' => 'Logowanie dla gościa jest wyłączone.', -'hash' => '', +'hash' => 'hash', 'help' => 'Pomoc', -'home_folder' => '', -'hook_name' => '', +'home_folder' => 'Katalog domowy', +'hook_name' => 'Nazwa zaczepu', 'hourly' => 'Co godzinę', 'hours' => 'godzin', 'hr_HR' => 'Chorwacki', @@ -633,28 +636,32 @@ URL: [url]', 'id' => 'ID', 'identical_version' => 'Nowa wersja jest identyczna z obecną', 'import' => 'Import', -'importfs' => '', -'import_extension' => '', +'importfs' => 'Importuj z systemu plików', +'import_extension' => 'Importuj rozszerzenie', 'import_fs' => 'Import z systemu plików', -'import_fs_warning' => '', -'include_content' => '', +'import_fs_warning' => 'Będzie to działać tylko w przypadku folderów w folderze zrzutu. Operacja rekurencyjnie importuje wszystkie foldery i pliki. Pliki zostaną natychmiast zwolnione.', +'import_users' => 'Import użytkowników', +'import_users_addnew' => '', +'import_users_update' => '', +'include_content' => 'Dołącz treść', 'include_documents' => 'Uwzględnij dokumenty', 'include_subdirectories' => 'Uwzględnij podkatalogi', 'indexing_tasks_in_queue' => 'Zadanie indeksowania w kolejce', -'index_converters' => '', -'index_done' => '', -'index_error' => '', +'index_converters' => 'Bez zmian', +'index_done' => 'Gotowy', +'index_error' => 'Błąd', 'index_folder' => 'Indeksuj folder', -'index_no_content' => '', -'index_pending' => '', +'index_no_content' => 'Nie indeksuje zawartości', +'index_pending' => 'Oczekujące', 'index_waiting' => 'Oczekiwanie', 'individuals' => 'Indywidualni', 'individuals_in_groups' => 'Członkowie grupy', -'info_recipients_tab_not_released' => '', +'info_recipients_tab_not_released' => 'Potwierdzenie odbioru dla tej wersji dokumentu nie jest możliwe, ponieważ wersja nie została wydana.', 'inherited' => 'dziedziczony', 'inherits_access_copy_msg' => 'Kopiuj odziedziczoną listę dostępu', 'inherits_access_empty_msg' => 'Rozpocznij z pustą listą dostępu', 'inherits_access_msg' => 'Dostęp jest dziedziczony.', +'installed_php_extensions' => '', 'internal_error' => 'Błąd wewnętrzny', 'internal_error_exit' => 'Błąd wewnętrzny. Nie można ukończyć zadania.', 'invalid_access_mode' => 'Nieprawidłowy tryb dostępu', @@ -663,9 +670,9 @@ URL: [url]', 'invalid_create_date_end' => 'Nieprawidłowa data końcowa dla tworzenia przedziału czasowego.', 'invalid_create_date_start' => 'Nieprawidłowa data początkowa dla tworzenia przedziału czasowego.', 'invalid_doc_id' => 'Nieprawidłowy identyfikator dokumentu', -'invalid_dropfolder_folder' => '', -'invalid_expiration_date_end' => '', -'invalid_expiration_date_start' => '', +'invalid_dropfolder_folder' => 'Nieprawidłowy folder zrzutu', +'invalid_expiration_date_end' => 'Nieprawidłowa data końcowa zakresu dat utworzenia.', +'invalid_expiration_date_start' => 'Nieprawidłowa data początkowa zakresu dat utworzenia.', 'invalid_file_id' => 'Nieprawidłowy identyfikator pliku', 'invalid_folder_id' => 'Nieprawidłowy identyfikator katalogu', 'invalid_group_id' => 'Nieprawidłowy identyfikator grupy', @@ -679,19 +686,19 @@ URL: [url]', 'invalid_user_id' => 'Nieprawidłowy identyfikator użytkownika', 'invalid_version' => 'Nieprawidłowa wersja dokumentu', 'in_folder' => 'w folderze', -'in_revision' => '', +'in_revision' => 'W korekcie', 'in_workflow' => 'W procesie', 'is_disabled' => 'Konto nieaktywne', 'is_hidden' => 'Nie pokazuj na liście użytkowników', 'it_IT' => 'Włoski', 'january' => 'Styczeń', -'js_form_error' => '', -'js_form_errors' => '', -'js_invalid_email' => '', +'js_form_error' => 'Formularz nadal zawiera # błąd.', +'js_form_errors' => 'Formularz nadal zawiera # błędów.', +'js_invalid_email' => 'The email address is invalid', 'js_no_approval_group' => 'Proszę wybrać grupę odpowiedzalną za akceptację', 'js_no_approval_status' => 'Proszę wybrać status akceptacji', 'js_no_comment' => 'Proszę dodać komentarz', -'js_no_currentpwd' => '', +'js_no_currentpwd' => 'Proszę podać swoje aktualne hasło', 'js_no_email' => 'Wprowadź swój adres email', 'js_no_file' => 'Proszę wybrać plik', 'js_no_keywords' => 'Wybierz jakieś słowa kluczowe', @@ -705,10 +712,10 @@ URL: [url]', 'js_pwd_not_conf' => 'Hasło i potwierdzenie hasła nie są identyczne', 'js_select_user' => 'Proszę wybrać użytkownika', 'js_select_user_or_group' => 'Wybierz użytkownika lub grupę', -'js_unequal_passwords' => '', +'js_unequal_passwords' => 'Hasła nie są równe', 'july' => 'Lipiec', 'june' => 'Czerwiec', -'keep' => '', +'keep' => 'Zachować', 'keep_doc_status' => 'Pozostaw status dokumentu', 'keywords' => 'Słowa kluczowe', 'keywords_loading' => 'Proszę czekać do załadowania lista słów kluczowych…', @@ -718,25 +725,25 @@ URL: [url]', 'lastaccess' => 'Ostatni dostęp', 'last_update' => 'Ostatnia aktualizacja', 'legend' => 'Legenda', -'librarydoc' => '', +'librarydoc' => 'Nie zmieniaj', 'linked_documents' => 'Powiązane dokumenty', 'linked_files' => 'Załączniki', 'linked_to_current_version' => 'Link do obecnej wersji', 'linked_to_document' => 'Połączony z dokumentem', -'linked_to_this_version' => '', +'linked_to_this_version' => 'Powiązany z tą wersją', 'link_alt_updatedocument' => 'Jeśli chcesz wczytać pliki większe niż bieżące maksimum, użyj alternatywnej strony wczytywania.', -'link_document' => '', -'link_to_version' => '', +'link_document' => 'Link do dokumentu', +'link_to_version' => 'Załącz do wersji', 'list_access_rights' => 'Pokaż uprawnienia dostępu', -'list_contains_no_access_docs' => '', -'list_hooks' => '', -'list_tasks' => '', +'list_contains_no_access_docs' => 'Lista zawiera więcej dokumentów, do których nie masz dostępu i nie są wyświetlane.', +'list_hooks' => 'Lista błędów', +'list_tasks' => 'Lista zadań', 'local_file' => 'Lokalny plik', 'locked_by' => 'Zablokowane przez', 'lock_document' => 'Zablokuj', 'lock_message' => 'Ten dokument jest zablokowany przez [username]. Tylko uprawnieni użytkownicy mogą odblokować dokument.', 'lock_status' => 'Status', -'logfile_loading' => '', +'logfile_loading' => 'Proszę czekać, aż plik dziennika zostanie załadowany…', 'login' => 'Login', 'login_disabled_text' => 'Twoje konto jest zablokowane. Prawdopodobnie z powodu zbyt wielu nieudanych prób logowania.', 'login_disabled_title' => 'Konto jest zablokowane', @@ -744,40 +751,41 @@ URL: [url]', 'login_error_title' => 'Błąd logowania', 'login_not_given' => 'Nie podano nazwy użytkownika', 'login_ok' => 'Zalogowano', -'login_restrictions_apply' => '', +'login_restrictions_apply' => 'Logowanie nie powiodło się z powodu ograniczeń', 'logout' => 'Wyloguj', 'log_management' => 'Zarządzanie plikami dziennika', 'lo_LA' => 'Laotański', -'malformed_expiration_date' => '', -'manager' => 'Zarządca', -'manager_of_group' => '', -'mandatory_approvergroups' => '', -'mandatory_approvergroup_no_access' => '', +'malformed_expiration_date' => 'Zniekształcona data ważności', +'manager' => 'Menedżer', +'manager_of_group' => 'Jesteś menedżerem tej grupy', +'mandatory_approvergroups' => 'Obowiązkowe grupy osób zatwierdzających', +'mandatory_approvergroup_no_access' => 'Obowiązkowa grupa osób zatwierdzających \'[group]\' ma niewystarczające prawa dostępu.', 'mandatory_approvers' => 'Wymagani zatwierdzający', -'mandatory_approver_no_access' => '', -'mandatory_reviewergroups' => '', -'mandatory_reviewergroup_no_access' => '', +'mandatory_approver_no_access' => 'Obowiązkowa osoba zatwierdzająca \'[user]\' nie ma wystarczających praw dostępu.', +'mandatory_reviewergroups' => 'Obowiązkowa grupa recenzentów', +'mandatory_reviewergroup_no_access' => 'Obowiązkowa grupa recenzentów \'[group]\' ma niewystarczające prawa dostępu.', 'mandatory_reviewers' => 'Wymagani przeglądający', -'mandatory_reviewer_no_access' => '', +'mandatory_reviewer_no_access' => 'Obowiązkowy recenzent \'[user]\' ma niewystarczające prawa dostępu.', 'march' => 'Marzec', 'max_upload_size' => 'Maksymalny rozmiar pliku', 'may' => 'Maj', -'menu_dropfolder' => '', -'menu_upload_from_dropfolder' => '', +'menu_dropfolder' => 'Folder zrzutu', +'menu_upload_from_dropfolder' => 'Kopiuj do folderu zrzutu', 'mimetype' => 'Typ mime', 'minutes' => 'minut', 'misc' => 'Różne', 'missing_checksum' => 'Brak sumy kontrolnej', -'missing_file' => '', +'missing_file' => 'Brakujący plik', 'missing_filesize' => 'Brakujący rozmiar pliku', -'missing_reception' => '', -'missing_request_object' => '', +'missing_php_extensions' => '', +'missing_reception' => 'Brakuje odbioru', +'missing_request_object' => 'Brak obiektu żądania', 'missing_transition_user_group' => 'Brak użytkownika / grupy dla przejścia', 'monday' => 'Poniedziałek', 'monday_abbr' => 'Pn.', 'monthly' => 'Miesięcznie', 'month_view' => 'Widok miesięczny', -'more_objects_loading' => '', +'more_objects_loading' => 'Ładuję więcej obiektów ...', 'move' => 'Przenieś', 'move_clipboard' => 'Przenieś schowek', 'move_document' => 'Przenieś dokument', @@ -787,10 +795,10 @@ URL: [url]', 'my_transmittals' => 'Moi recenzenci', 'name' => 'Nazwa', 'nb_NO' => 'Norweski', -'needs_correction' => '', +'needs_correction' => 'Wymaga korekty', 'needs_workflow_action' => 'Dokument wymaga uwagi. Proszę sprawdzić kartę workflow.', -'network_drive' => '', -'never' => '', +'network_drive' => 'Dysk sieciowy', +'never' => 'Nowszy', 'new' => 'Nowy', 'new_attrdef' => 'Dodaj definicję atrybutu', 'new_default_keywords' => 'Dodaj słowa kluczowe', @@ -824,11 +832,11 @@ Użytkownik: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nowy folder', 'new_user_image' => 'Nowy obraz', -'next_revision_abbr' => '', +'next_revision_abbr' => 'Następna wersja', 'next_state' => 'Nowy status', 'nl_NL' => 'holenderski', 'no' => 'Nie', -'notification' => '', +'notification' => 'Powiadomienie', 'notify_added_email' => 'Twoje konto zostało dodane do listy powiadomień', 'notify_added_email_body' => 'Dodano do listy powiadomień Nazwa: [name] @@ -848,42 +856,42 @@ URL: [url]', 'no_action' => 'Żadne działanie nie jest wymagane', 'no_approval_needed' => 'Nie ma dokumentów oczekujących na akceptację.', 'no_attached_files' => 'Brak załączonych plików', -'no_backup_dir' => '', -'no_current_version' => '', +'no_backup_dir' => 'Katalog kopii zapasowej nie jest ustawiony', +'no_current_version' => 'Brak aktualnej wersji', 'no_default_keywords' => 'Nie ma słów kluczowych', -'no_docs_checked_out' => '', -'no_docs_expired' => '', +'no_docs_checked_out' => 'Brak dokumentów', +'no_docs_expired' => 'Brak wygasłych dokumentów', 'no_docs_locked' => 'Brak zablokowanych dokumentów.', -'no_docs_needs_correction' => '', -'no_docs_rejected' => '', +'no_docs_needs_correction' => 'Brak dokumentów wymagających korekty', +'no_docs_rejected' => 'Brak dokumentów odrzuconych', 'no_docs_to_approve' => 'Aktualnie nie ma dokumentów wymagających akceptacji.', 'no_docs_to_look_at' => 'Brak dokumentów wymagających uwagi.', -'no_docs_to_receipt' => '', +'no_docs_to_receipt' => 'Brak dokumentów na potwierdzenie', 'no_docs_to_review' => 'Aktualnie nie ma dokumentów oczekujących na recenzję.', -'no_docs_to_revise' => '', -'no_email_or_login' => '', +'no_docs_to_revise' => 'Brak dokumentów oczekyjących na weryfikację', +'no_email_or_login' => 'Login i adres e-mail muszą zostać wprowadzone', 'no_fulltextindex' => 'Brak indeksu pełnotekstowego', 'no_groups' => 'Brak grup', 'no_group_members' => 'Ta grupa nie ma członków', 'no_linked_files' => 'Brak powiązanych dokumentów', 'no_previous_versions' => 'Nie znaleziono poprzednich wersji', -'no_receipt_needed' => '', +'no_receipt_needed' => 'Brak dokumentów w trakcie potwierdzenia', 'no_review_needed' => 'Brak dokumentów w trakcie opiniowania.', -'no_revision_needed' => '', -'no_revision_planed' => '', +'no_revision_needed' => 'Brak dokumentów w trakcie korygowania', +'no_revision_planed' => 'Brak dokumentów w wersji planowanej korekty', 'no_update_cause_locked' => 'Nie możesz zaktualizować tego dokumentu. Proszę skontaktuj się z osobą która go blokuje.', 'no_user_image' => 'Nie znaleziono obrazu', 'no_version_check' => 'Poszukiwanie nowej wersji DeedDMS nie powiodło się! To może być spowodowane ustawieniem opcji \'allow_url_fopen = 0\' w twojej konfiguracji PHP.', -'no_version_modification' => '', -'no_workflow_available' => '', +'no_version_modification' => 'Bez modyfikacji wersji', +'no_workflow_available' => 'Brak przepływu pracy', 'objectcheck' => 'Sprawdź Katalog/Dokument', -'object_check_critical' => '', -'object_check_warning' => '', +'object_check_critical' => 'Błędy krytyczne', +'object_check_warning' => 'Ostrzeżenia', 'obsolete' => 'Zdezaktualizowany', 'october' => 'Październik', 'old' => 'Stary', 'only_jpg_user_images' => 'Wyłącznie pliki typu .jpg mogą być użyte jako obrazy użytkowników', -'order_by_sequence_off' => '', +'order_by_sequence_off' => 'Porządkowanie według sekwencji jest wyłączone w ustawieniach. Jeśli chcesz, aby ten parametr zadziałał, musisz go ponownie włączyć.', 'original_filename' => 'Oryginalna nazwa pliku', 'overall_indexing_progress' => 'Całkowity postęp indeksowania', 'owner' => 'Właściciel', @@ -899,11 +907,11 @@ URL: [url]', 'password' => 'Hasło', 'password_already_used' => 'Hasło jest aktualnie używane', 'password_expiration' => 'Wygaśnięcie hasła', -'password_expiration_text' => 'Twoje hasło wygasło. Proszę ustawić nowe zanim zaczniesz używać LetoDMS.', -'password_expired' => '', -'password_expires_in_days' => '', +'password_expiration_text' => 'Twoje hasło wygasło. Proszę ustawić nowe zanim zaczniesz używać DMS.', +'password_expired' => 'Hasło wygasło', +'password_expires_in_days' => 'Hasło wygasa za %s dni', 'password_forgotten' => 'Zapomniane hasło', -'password_forgotten_email_body' => 'Drogi użytkowniku SeedDMS, +'password_forgotten_email_body' => 'Drogi użytkowniku DMS Fallwork, otrzymaliśmy prośbę o zmianę Twojego hasła. @@ -917,60 +925,61 @@ Jeśli nadal będą problemy z zalogowaniem, prosimy o kontakt z administratorem 'password_forgotten_text' => 'Wypełnij pola poniżej i postępuj wg instrukcji z emaila, który zostanie do Ciebie wysłany.', 'password_forgotten_title' => 'Hasło wysłane', 'password_repeat' => 'Powtórz hasło', -'password_send' => '', -'password_send_text' => '', +'password_send' => 'Hasło wysłane', +'password_send_text' => 'Twoje nowe hasło zostało wysłane na podany adres e-mail, jeśli login i adres e-mail odpowiadają istniejącemu użytkownikowi. Jeśli w ciągu kilku minut nie otrzymasz wiadomości e-mail, upewnij się, że login i e-mail są poprawne, i ponownie uruchom proces.', 'password_strength' => 'Siła hasła', 'password_strength_insuffient' => 'Niewystarczająca siła hasła', 'password_wrong' => 'Złe hasło', 'pdf_converters' => 'Konwertery PDF', -'pending_approvals' => '', -'pending_receipt' => '', -'pending_reviews' => '', -'pending_revision' => '', -'pending_workflows' => '', +'pending_approvals' => 'Oczekuje na zatwierdzenie', +'pending_receipt' => 'Oczekuje na potwierdzenie', +'pending_reviews' => 'Oczekuje na recenzje', +'pending_revision' => 'Oczekuje na korekty', +'pending_workflows' => 'Oczekuje na przepływ pracy', 'personal_default_keywords' => 'Osobiste sława kluczowe', +'php_info' => '', 'pl_PL' => 'Polski', -'possible_substitutes' => '', +'possible_substitutes' => 'Ewentualni zastępcy', 'preset_expires' => 'Wygasa', 'preview' => 'Podgląd', 'preview_converters' => 'Podgląd konwersji dokumentu', -'preview_images' => '', -'preview_markdown' => '', -'preview_pdf' => '', -'preview_plain' => '', +'preview_images' => 'Podgląd obrazu', +'preview_markdown' => 'Oznacz w dół', +'preview_pdf' => 'Podgląd PDF', +'preview_plain' => 'Zwykły podgląd', 'previous_state' => 'Poprzedni stan', 'previous_versions' => 'Poprzednie wersje', 'process' => 'Proces', -'process_without_user_group' => '', +'process_without_user_group' => 'Procesy bez użytkowników/grup', 'pt_BR' => 'Portugalski(BR)', 'quota' => 'Przydział', 'quota_exceeded' => 'Twój limit przydzielonej przestrzeni dyskowej został przekroczony o [bytes].', 'quota_is_disabled' => 'Wsparcie limitów dyskowych jest obecnie wyłączone w ustawieniach. Ustawiony limit dyskowy użytkownika nie będzie działał dopóki wparcie nie zostanie ponownie włączone.', 'quota_warning' => 'Przekroczono użycie dysku o [bytes]. Usuń dokumenty lub poprzednie wersje.', -'receipts_accepted' => '', -'receipts_accepted_latest' => '', -'receipts_not_touched' => '', -'receipts_not_touched_latest' => '', -'receipts_rejected' => '', -'receipts_rejected_latest' => '', -'receipts_without_group' => '', -'receipts_without_user' => '', +'receipts_accepted' => 'Potwierdzenie zaakceptowane', +'receipts_accepted_latest' => 'Potwierdzenie zaakceptowane później', +'receipts_not_touched' => 'Potwierdzenie nie oglądane', +'receipts_not_touched_latest' => 'Potwierdzenie nie oglądane później', +'receipts_rejected' => 'Potwierdzenie odrzucone', +'receipts_rejected_latest' => 'Potwierdzenie odrzucone później', +'receipts_without_group' => 'Potwierdzenie bez grupy', +'receipts_without_user' => 'Potwierdzenie bez użytkownika', 'receipt_deletion_email_body' => '', 'receipt_deletion_email_subject' => '', -'receipt_log' => '', +'receipt_log' => 'Log potwierdzenia', 'receipt_request_email_body' => '', -'receipt_request_email_subject' => '', -'receipt_status' => '', -'receipt_summary' => '', -'receipt_update_failed' => '', +'receipt_request_email_subject' => 'Potwierdzenie', +'receipt_status' => 'Status odbioru', +'receipt_summary' => 'Podsumowanie odbioru', +'receipt_update_failed' => 'Potwierdzenie odbioru nie powiodło się', 'recent_uploads' => 'Najnowsze dodania', -'reception' => '', -'reception_acknowleged' => '', -'reception_noaction' => '', -'reception_rejected' => '', -'recipients' => '', -'recipient_already_removed' => '', -'redraw' => '', +'reception' => 'Przyjęcie', +'reception_acknowleged' => 'Odbiór potwierdzony', +'reception_noaction' => 'Bez akcji', +'reception_rejected' => 'Przyjęcie odrzucone', +'recipients' => 'Odbiorcy', +'recipient_already_removed' => 'Odbiorca został już usunięty lub potwierdzony.', +'redraw' => 'Przerysuj', 'refresh' => 'Odśwież', 'rejected' => 'Odrzucony', 'released' => 'Zatwierdzony', @@ -981,9 +990,9 @@ Dokument: [document] Użytkownik: [username] URL: [url]', 'removed_file_email_subject' => '[sitename]: [document] - Usunięty załącznik', -'removed_recipient' => '', +'removed_recipient' => 'został usunięty z listy odbiorców.', 'removed_reviewer' => 'został usunięty z listy recenzentów.', -'removed_revisor' => '', +'removed_revisor' => 'został usunięty z listy revisors', 'removed_workflow_email_body' => 'Usunięcie procesu z wersji dokumentu Dokument: [name] Wersja: [version] @@ -998,8 +1007,8 @@ URL: [url]', 'repairing_objects' => 'Naprawa dokumentów i katalogów.', 'request_workflow_action_email_body' => '', 'request_workflow_action_email_subject' => '', -'reset_checkout' => '', -'restrict_access' => '', +'reset_checkout' => 'Zakończ i sprawdź', +'restrict_access' => 'Brak dostępu do', 'results_page' => 'Strona z wynikami', 'return_from_subworkflow' => 'Powróć z sub procesu', 'return_from_subworkflow_email_body' => 'Powrót z sub procesu dokumentu: [name] Wersja: [version] Proces: [workflow] Sub proces: [subworkflow] folderu nadrzędnego: [folder_path] Użytkownik: [username] URL: [url]', @@ -1008,18 +1017,18 @@ URL: [url]', 'reviewers' => 'Recenzenci', 'reviewer_already_assigned' => 'jest już przypisany jako recenzent', 'reviewer_already_removed' => 'został już usunięty z procesu opiniowania lub już wydał swoją opinię', -'reviews_accepted' => '', -'reviews_accepted_latest' => '', -'reviews_not_touched' => '', -'reviews_not_touched_latest' => '', -'reviews_rejected' => '', -'reviews_rejected_latest' => '', -'reviews_without_group' => '', -'reviews_without_user' => '', +'reviews_accepted' => 'Recenzje zaakceptowane', +'reviews_accepted_latest' => 'Recenzje zaakceptowane później', +'reviews_not_touched' => 'Recenzje nie oglądane', +'reviews_not_touched_latest' => 'Recenzje nie oglądane później', +'reviews_rejected' => 'Recenzje odrzucone', +'reviews_rejected_latest' => 'Recenzje odrzucone później', +'reviews_without_group' => 'Recenzje bez grupy', +'reviews_without_user' => 'Recenzje bez użytkownika', 'review_deletion_email' => 'Prośba o recenzję usunięta', 'review_deletion_email_body' => '', 'review_deletion_email_subject' => '', -'review_file' => '', +'review_file' => 'Plik', 'review_group' => 'Grupa recenzentów', 'review_log' => 'Zobacz log', 'review_request_email' => 'Prośba i recenzję', @@ -1031,29 +1040,29 @@ URL: [url]', 'review_submit_email_subject' => '[sitename]: [name] - Napisano recenzję', 'review_summary' => 'Podsumowanie opiniowania', 'review_update_failed' => 'Błąd podczas aktualizowania statusu recenzji. Aktualizacja nie powiodła się.', -'revise_document' => '', -'revise_document_on' => '', -'revisions_accepted' => '', -'revisions_accepted_latest' => '', -'revisions_not_touched' => '', -'revisions_not_touched_latest' => '', -'revisions_pending' => '', -'revisions_pending_latest' => '', -'revisions_rejected' => '', -'revisions_rejected_latest' => '', -'revisions_without_group' => '', -'revisions_without_user' => '', -'revision_date' => '', -'revision_log' => '', +'revise_document' => 'Zweryfikuj dokument', +'revise_document_on' => 'Sprawdź dokument', +'revisions_accepted' => 'Korekty zaakceptowane', +'revisions_accepted_latest' => 'Korekty zaakceptowane później', +'revisions_not_touched' => 'Korekty nie oglądane', +'revisions_not_touched_latest' => 'Korekty nie oglądane później', +'revisions_pending' => 'Korekty oczekujące', +'revisions_pending_latest' => 'Korekty oczekujące później', +'revisions_rejected' => 'Korekty odrzucone', +'revisions_rejected_latest' => 'Korekty odrzucone później', +'revisions_without_group' => 'Korekty bez grupy', +'revisions_without_user' => 'Korekty bez użytkownika', +'revision_date' => 'Data korekty', +'revision_log' => 'Log korekty', 'revision_request_email_body' => '', -'revision_request_email_subject' => '', -'revision_status' => '', +'revision_request_email_subject' => 'Korekta', +'revision_status' => 'Status korekty', 'revision_submit_email_body' => '', -'revision_submit_email_subject' => '', -'revision_summary' => '', -'revisors' => '', -'revisor_already_assigned' => '', -'revisor_already_removed' => '', +'revision_submit_email_subject' => 'Korekta', +'revision_summary' => 'Zbiorcza korekta', +'revisors' => 'Audytor', +'revisor_already_assigned' => 'Użytkownik jest już przypisany jako audytor', +'revisor_already_removed' => 'Audytor został już usunięty z procesu weryfikacji lub już poprawił dokument.', 'rewind_workflow' => 'Przewiń proces', 'rewind_workflow_email_body' => 'Przewinięcie procesu Dokument: [name] @@ -1065,21 +1074,22 @@ URL: [url]', 'rewind_workflow_email_subject' => '[sitename]: [name] - Przewinięto proces', 'rewind_workflow_warning' => 'Jeżeli przewiniesz proces do stanu początkowego, to cały log dla tego dokumentu zostanie usunięty bezpowrotnie.', 'rm_attrdef' => 'Usuń definicję atrybutu', -'rm_attrdefgroup' => '', -'rm_attr_value' => '', +'rm_attrdefgroup' => 'Usuń tę grupę atrybutów', +'rm_attr_value' => 'Usuń wartość', 'rm_default_keyword_category' => 'Usuń kategorię', 'rm_document' => 'Usuń dokument', 'rm_document_category' => 'Usuń kategorię', -'rm_event' => '', +'rm_event' => 'Usuń wydarzenie', 'rm_file' => 'Usuń plik', 'rm_folder' => 'Usuń folder', 'rm_from_clipboard' => 'Usuń ze schowka', 'rm_group' => 'Usuń tą grupę', -'rm_role' => '', -'rm_transmittal' => '', -'rm_transmittalitem' => '', +'rm_role' => 'Usuń tę rolę', +'rm_task' => '', +'rm_transmittal' => 'Usuń przekaz', +'rm_transmittalitem' => 'Usuń element', 'rm_user' => 'Usuń tego użytkownika', -'rm_user_from_processes' => '', +'rm_user_from_processes' => 'Usuń użytkownika z procesów', 'rm_version' => 'Usuń wersję', 'rm_workflow' => 'Usuń proces', 'rm_workflow_action' => 'Usunięcie działania procesu', @@ -1088,10 +1098,10 @@ URL: [url]', 'role' => 'Rola', 'role_admin' => 'Administrator', 'role_guest' => 'Gość', -'role_info' => '', -'role_management' => 'Zarządzanie rolam', -'role_name' => '', -'role_type' => '', +'role_info' => 'Informacja o rolach', +'role_management' => 'Zarządzanie rolami', +'role_name' => 'Nazwa', +'role_type' => 'Typ', 'role_user' => 'Użytkownik', 'ro_RO' => 'Rumuński', 'run_subworkflow' => 'Uruchom podproces', @@ -1108,10 +1118,10 @@ URL: [url]', 'saturday' => 'Sobota', 'saturday_abbr' => 'So', 'save' => 'Zapisz', -'scheduler_class' => '', -'scheduler_class_description' => '', -'scheduler_class_parameter' => '', -'scheduler_class_tasks' => '', +'scheduler_class' => 'Klasa harmonogramu', +'scheduler_class_description' => 'Opis klasy harmonogramu', +'scheduler_class_parameter' => 'Parametr klasy harmonogramu', +'scheduler_class_tasks' => 'Zadania klasy harmonogramu', 'scheduler_task_mgr' => 'Zadania', 'search' => 'Szukaj', 'search_fulltext' => 'Przeszukaj całe teksty', @@ -1130,36 +1140,43 @@ URL: [url]', 'search_results_access_filtered' => 'Wyniki wyszukiwania mogą zawierać treści, do których dostęp jest zabroniony.', 'search_time' => 'Upływający czas: [time] sec.', 'seconds' => 'sekund', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Wybierz', -'select_attrdefgrp_show' => '', -'select_attribute_value' => '', +'select_attrdefgrp_show' => 'Wybierz, kiedy pokazać', +'select_attribute_value' => 'Wybierz wartość atrybutu', 'select_category' => 'Kliknij by wybrać kategorię', 'select_group' => 'Wybierz grupę', 'select_groups' => 'Kliknij by wybrać grupy', 'select_grp_approvers' => 'Kliknij by wybrać grupę zatwierdzającą', 'select_grp_ind_approvers' => 'Kliknij by wybrać grupę', -'select_grp_ind_notification' => '', +'select_grp_ind_notification' => 'Kliknij by wybrać grupę', 'select_grp_ind_recipients' => 'Kliknij by wybrać grupę', 'select_grp_ind_reviewers' => 'Kliknij by wybrać grupę', -'select_grp_ind_revisors' => '', +'select_grp_ind_revisors' => 'Kliknij by wybrać grupę', 'select_grp_notification' => 'Kliknij, aby wybrać grupowe powiadomienia', 'select_grp_recipients' => 'Kliknij by wybrać grupę odbiorców', 'select_grp_reviewers' => 'Kliknij by wybrać grupę recenzentów', -'select_grp_revisors' => '', +'select_grp_revisors' => 'Kliknij by wybrać grupę audytorów', 'select_ind_approvers' => 'Kliknij by wybrać zatwierdzającego', 'select_ind_notification' => 'Kliknij, aby wybrać indywidualne powiadomienia', 'select_ind_recipients' => 'Kliknij by wybrać indywidualnych odbiorców', 'select_ind_reviewers' => 'Kliknij by wybrać recenzenta', -'select_ind_revisors' => '', +'select_ind_revisors' => 'Kliknij by wybrać audytora', 'select_one' => 'Wybierz', 'select_user' => 'Wybierz użytkownika', 'select_users' => 'Kliknij by wybrać użytkowników', 'select_value' => 'Wybrać wartość', 'select_workflow' => 'Wybierz proces', -'send_email' => '', -'send_login_data' => '', -'send_login_data_body' => '', -'send_login_data_subject' => '', +'send_email' => 'Wyślij e-mail', +'send_login_data' => 'Wyślij dane logowania', +'send_login_data_body' => 'Dane logowania + +Login: [login] +Name: [username] + +[comment]', +'send_login_data_subject' => '[sitename]: [login] - Twoje dane logowania', 'send_test_mail' => 'Wyślij wiadomość testową', 'september' => 'Wrzesień', 'sequence' => 'Kolejność', @@ -1167,37 +1184,43 @@ URL: [url]', 'seq_end' => 'Na końcu', 'seq_keep' => 'Na tej samej pozycji', 'seq_start' => 'Na początku', -'sessions' => '', -'setDateFromFile' => '', -'setDateFromFolder' => '', +'sessions' => 'Sesja', +'setDateFromFile' => 'Przejmij datę z importowanego pliku', +'setDateFromFolder' => 'Przejmij datę z importowanego folderu', 'settings' => 'Ustawienia', 'settings_activate_module' => 'Aktywuj moduł', 'settings_activate_php_extension' => 'Aktywuj rozszerzenie PHP', 'settings_adminIP' => 'Adres IP Administratora', 'settings_adminIP_desc' => 'Wprowadzenie tego adresu IP spowoduje, że administrator będzie mógł się logować tylko z tego adresu. Zostaw puste aby tego nie kontrolować. Uwaga! Działa tylko z autentykacją lokalną (nie w LDAP-ie)', 'settings_Advanced' => 'Zaawansowane', -'settings_advancedAcl' => '', -'settings_advancedAcl_desc' => '', -'settings_allowChangeRevAppInProcess' => '', -'settings_allowChangeRevAppInProcess_desc' => '', -'settings_allowReviewerOnly' => '', -'settings_allowReviewerOnly_desc' => '', +'settings_advancedAcl' => 'Zaawansowana kontrola dostępu', +'settings_advancedAcl_desc' => 'Zaawansowana kontrola dostępu pozwoli włączyć / wyłączyć niektóre moduły oprogramowania. Nie można go używać do praw dostępu do dokumentów i folderów.', +'settings_allowChangeRevAppInProcess' => 'Zezwalaj na zmianę recenzenta/osoby zatwierdzającej po rozpoczęciu procesu', +'settings_allowChangeRevAppInProcess_desc' => 'Domyślnie recenzenci i osoby zatwierdzające nie mogą być już zmieniane po przesłaniu recenzji lub zatwierdzenia. Ta opcja umożliwia administratorom to zrobić tak długo, jak długo dokument nie zostanie wydany lub odrzucony.', +'settings_allowReviewerOnly' => 'Zezwalaj tylko na ustawianie recenzenta', +'settings_allowReviewerOnly_desc' => 'Włącz to, jeśli będzie można zezwolić na ustawienie tylko recenzenta, ale bez osoby zatwierdzającej w tradycyjnym trybie przepływu pracy.', 'settings_apache_mod_rewrite' => 'Apache - Moduł Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Ustawienia uwierzytelniania', 'settings_autoLoginUser' => 'Automatyczne logowanie', -'settings_autoLoginUser_desc' => '', +'settings_autoLoginUser_desc' => 'Użyj tego identyfikatora użytkownika, aby uzyskać dostęp, jeśli użytkownik nie jest jeszcze zalogowany. Taki dostęp nie utworzy sesji.', 'settings_available_languages' => 'Dostępne języki', 'settings_available_languages_desc' => 'Tylko wybrane języki zostaną załadowane i będą widoczne w kontrolce wyboru języka. Domyślny język zawsze jest ładowany.', 'settings_backupDir' => 'Lokalizacja kopii zapasowej', -'settings_backupDir_desc' => '', +'settings_backupDir_desc' => 'Katalog, w którym narzędzie do tworzenia kopii zapasowych zapisuje kopie zapasowe. Jeśli ten katalog nie jest ustawiony lub nie można uzyskać do niego dostępu, kopie zapasowe zostaną zapisane w katalogu zawartości.', 'settings_cacheDir' => 'Folder bufora', 'settings_cacheDir_desc' => 'Miejsce przechowywania obrazków podglądu (najlepiej wybrać katalog nie dostępny bezpośrednio dla web-serwera).', 'settings_Calendar' => 'Ustawienia kalendarza', 'settings_calendarDefaultView' => 'Domyślny widok kalendarza', 'settings_calendarDefaultView_desc' => 'Domyślny widok kalendarza', 'settings_cannot_disable' => 'Plik ENABLE_INSTALL_TOOL nie może zostać usunięty', -'settings_checkOutDir' => '', -'settings_checkOutDir_desc' => '', +'settings_checkOutDir' => 'Katalog wyewidencjonowanych dokumentów', +'settings_checkOutDir_desc' => 'Jest to katalog, w którym najnowsza zawartość dokumentu jest kopiowana, jeśli dokument jest wyewidencjonowany. Jeśli ten katalog będzie dostępny dla użytkowników, mogą edytować plik i zaewidencjonować go ponownie po zakończeniu.', 'settings_cmdTimeout' => 'Przekroczony czas wykonania zewnętrznego polecenia', 'settings_cmdTimeout_desc' => 'Ten czas w sekundach określa kiedy zewnętrzne polecenie (np. do tworzenia indeksu) zostanie przerwany', 'settings_contentDir' => 'Katalog treści', @@ -1210,8 +1233,8 @@ URL: [url]', 'settings_cookieLifetime_desc' => 'Czas życia pliku cookie w sekundach. Jeśli wartość zostanie ustawione na 0, plik cookie zostanie usunięte po zamknięciu przeglądarki.', 'settings_coreDir' => 'Katalog Core letoDMS', 'settings_coreDir_desc' => 'Ścieżka do LetoDMS_Core (opcjonalnie)', -'settings_createCheckOutDir' => '', -'settings_createCheckOutDir_desc' => '', +'settings_createCheckOutDir' => 'Tworzenie katalogu wyewidencjonowania', +'settings_createCheckOutDir_desc' => 'Utwórz katalog do wyewidencjonowania, jeśli nie istnieje', 'settings_createdatabase' => 'Utwórz tabele basy danych', 'settings_createdirectory' => 'Utwórz katalog', 'settings_currentvalue' => 'Bieżąca wartość', @@ -1229,30 +1252,30 @@ URL: [url]', 'settings_dbVersion' => 'Schemat bazy danych jest za stary', 'settings_defaultAccessDocs' => 'Domyślny dostęp do nowych dokumentów', 'settings_defaultAccessDocs_desc' => 'Kiedy zostanie utworzony nowy dokument, będzie to domyślne prawo dostępu.', -'settings_defaultDocPosition' => '', -'settings_defaultDocPosition_desc' => '', +'settings_defaultDocPosition' => 'Położenie dokumentu podczas tworzenia', +'settings_defaultDocPosition_desc' => 'Jest to domyślna pozycja w folderze podczas tworzenia dokumentu.', 'settings_defaultDocPosition_val_end' => 'koniec', 'settings_defaultDocPosition_val_start' => 'początek', 'settings_defaultSearchMethod' => 'Domyślna metoda wyszukiwania', -'settings_defaultSearchMethod_desc' => '', +'settings_defaultSearchMethod_desc' => 'Domyślna metoda wyszukiwania, gdy wyszukiwanie jest uruchamiane przez formularz wyszukiwania w menu głównym.', 'settings_defaultSearchMethod_valdatabase' => 'baza danych', -'settings_defaultSearchMethod_valfulltext' => 'pewłnotekstowe', +'settings_defaultSearchMethod_valfulltext' => 'pełnotekstowe', 'settings_delete_install_folder' => 'Aby móc używać LetoDMS, musisz usunąć plik ENABLE_INSTALL_TOOL znajdujący się w katalogu konfiguracyjnym', 'settings_disableSelfEdit' => 'Wyłącz auto edycję', 'settings_disableSelfEdit_desc' => 'Jeśli zaznaczone, użytkownik nie może zmieniać własnych danych', 'settings_disable_install' => 'Usuń plik ENABLE_INSTALL_TOOL jeśli to możliwe', 'settings_Display' => 'Ustawienia wyświetlania', -'settings_dropFolderDir' => 'Katalog dla folderu rozwijanego', +'settings_dropFolderDir' => 'Katalog dla folderu zrzutu', 'settings_dropFolderDir_desc' => 'Ten katalog służy do kopiowania plików, przeznaczonych do zaimportowania, bezpośrednio do serwera i z pominięciem przeglądarki. W tym katalogu muszą się znajdować podfoldery dla wszystkich użytkowników, którzy posiadają uprawnienia do tego typu importu.', 'settings_Edition' => 'Ustawienia edycji', 'settings_editOnlineFileTypes' => 'Edytuj typy plików online', 'settings_editOnlineFileTypes_desc' => 'Pliki z następującymi rozszerzeniami mogą być edytowane online (używaj tylko małych liter)', -'settings_enable2FactorAuthentication' => '', -'settings_enable2FactorAuthentication_desc' => '', -'settings_enableAcknowledgeWorkflow' => '', -'settings_enableAcknowledgeWorkflow_desc' => '', -'settings_enableAdminReceipt' => '', -'settings_enableAdminReceipt_desc' => '', +'settings_enable2FactorAuthentication' => 'Włączanie uwierzytelniania dwuskładnikowego', +'settings_enable2FactorAuthentication_desc' => 'Włącz/wyłącz uwierzytelnianie dwuskładnikowe. Użytkownicy będą potrzebować Google Authenticator na swoim telefonie komórkowym.', +'settings_enableAcknowledgeWorkflow' => 'Włączanie potwierdzenia przepływu pracy', +'settings_enableAcknowledgeWorkflow_desc' => 'Włączanie potwierdzenia przepływu pracy', +'settings_enableAdminReceipt' => 'Zezwalaj na odbieranie dokumentów dla administratorów', +'settings_enableAdminReceipt_desc' => 'Włącz tę opcję, jeśli chcesz, aby administratorzy były wymienieni jako adresaci dokumentów.', 'settings_enableAdminRevApp' => 'Dołącz Administratora do recenzji/rewizji', 'settings_enableAdminRevApp_desc' => 'Odznacz aby usunąć Administratora z listy zatwierdzających/recenzentów', 'settings_enableCalendar' => 'Włącz kalendarz', @@ -1261,30 +1284,30 @@ URL: [url]', 'settings_enableClipboard_desc' => 'Włącz/wyłącz schowek', 'settings_enableConverting' => 'Włącz konwertowanie', 'settings_enableConverting_desc' => 'Włącz/Wyłącz konwertowanie plików', -'settings_enableDebugMode' => '', -'settings_enableDebugMode_desc' => '', -'settings_enableDropFolderList' => '', -'settings_enableDropFolderList_desc' => '', -'settings_enableDropUpload' => '', -'settings_enableDropUpload_desc' => '', +'settings_enableDebugMode' => 'Włączenie debugowania', +'settings_enableDebugMode_desc' => 'Włącz to, aby włączyć tryb debugowania, który dodaje nowe menu w narzędziach administracyjnych', +'settings_enableDropFolderList' => 'Włącz listę plików w folderze zrzutu w menu', +'settings_enableDropFolderList_desc' => 'Włącz listę plików w folderze zrzutu. Lista jest wyświetlana w menu głównym.', +'settings_enableDropUpload' => 'Włącz szybkie przesyłanie', +'settings_enableDropUpload_desc' => 'Włącz/Wyłącz obszar upuszczania na stronie "Wyświetl folder" w celu przesyłania plików przez Drag&Drop.', 'settings_enableDuplicateDocNames' => 'Zezwalaj na zduplikowane nazwy dokumentów', 'settings_enableDuplicateDocNames_desc' => 'Zezwala na tworzenie w folderze dokumentów o tej samej nazwie.', 'settings_enableDuplicateSubFolderNames' => 'Zezwól na duplikaty nazw podfolderów', 'settings_enableDuplicateSubFolderNames_desc' => 'Zezwala na zduplikowane nazwy podfolderów w folderze', 'settings_enableEmail' => 'Włącz powiadomienia e-mail', 'settings_enableEmail_desc' => 'Włącz/Wyłącz automatyczne powiadomienia drogą mailową', -'settings_enableFilterReceipt' => '', -'settings_enableFilterReceipt_desc' => '', +'settings_enableFilterReceipt' => 'Odfiltruj właściciela, recenzenta, ... z listy odbioru', +'settings_enableFilterReceipt_desc' => 'Włącz, aby odfiltrować niektórych adresatów z listy odbioru, jeśli wybrano członków grupy.', 'settings_enableFolderTree' => 'Pokaż drzewo katalogów', 'settings_enableFolderTree_desc' => 'Odznacz aby nie pokazywać drzewa katalogów', 'settings_enableFullSearch' => 'Włącz przeszukiwanie pełnotekstowe', 'settings_enableFullSearch_desc' => 'Włącz przeszukiwanie pełnotekstowe', 'settings_enableGuestAutoLogin' => 'Włącz automatyczne logowanie dla gości', -'settings_enableGuestAutoLogin_desc' => '', +'settings_enableGuestAutoLogin_desc' => 'Włącza automatyczne logowanie dla gości', 'settings_enableGuestLogin' => 'Pozwól na logowanie gościa', 'settings_enableGuestLogin_desc' => 'Jeśli chcesz dowolnej osobie zalogować się jako gość, zaznacz tę opcję. Uwaga: logowanie gościa powinno być używane wyłącznie w zaufanym środowisku.', 'settings_enableHelp' => 'Włącz pomoc', -'settings_enableHelp_desc' => '', +'settings_enableHelp_desc' => 'Włączenie pomocy w menu', 'settings_enableLanguageSelector' => 'Włącz wybór języka', 'settings_enableLanguageSelector_desc' => 'Pokaż selektor języka dla interfejsu użytkownika po zalogowaniu To nie ma wpływu na wybór języka na stronie logowania.', 'settings_enableLargeFileUpload' => 'Zezwól na wczytywanie dużych plików', @@ -1292,43 +1315,43 @@ URL: [url]', 'settings_enableMenuTasks' => 'Włącz listę zadań w menu', 'settings_enableMenuTasks_desc' => 'Włącza /Wyłącza pozycję w menu w której znajdują się wszystkie zadania dla użytkownika. Zawiera dokumenty, które potrzebują być ocenione, zatwierdzone, i.t.d.', 'settings_enableMultiUpload' => 'Zezwól na wysyłanie wielu plików', -'settings_enableMultiUpload_desc' => '', +'settings_enableMultiUpload_desc' => 'Zezwolenie na wysyłanie wielu plików', 'settings_enableNotificationAppRev' => 'Włącz/Wyłącz powiadomienia dla zatwierdzających/recenzentów', 'settings_enableNotificationAppRev_desc' => 'Zaznacz aby wysyłać powiadomienia do zatwierdzających i recenzentów kiedy pojawi się nowa wersja dokumentu', -'settings_enableNotificationWorkflow' => '', -'settings_enableNotificationWorkflow_desc' => '', +'settings_enableNotificationWorkflow' => 'Wysyłanie powiadomień do użytkowników w następnym przejściu przepływu pracy', +'settings_enableNotificationWorkflow_desc' => 'Jeśli ta opcja jest włączona, użytkownicy i grupy, które muszą podjąć działania w następnym przejściu przepływu pracy, zostaną powiadomieni. Nawet jeśli nie dodali powiadomienia o dokumencie.', 'settings_enableOwnerNotification' => 'Włącz domyślne powiadamianie właściciela', 'settings_enableOwnerNotification_desc' => 'Zaznacz aby właściciel pliku był powiadamiany zmianach w pliku.', -'settings_enableOwnerReceipt' => '', -'settings_enableOwnerReceipt_desc' => '', +'settings_enableOwnerReceipt' => 'Zezwalaj na odbiór dokumentów przez właściciela', +'settings_enableOwnerReceipt_desc' => 'Włącz tę opcję, jeśli chcesz, aby właściciel dokumentu był wyświetlany jako adresat.', 'settings_enableOwnerRevApp' => 'Pozwól przeglądać/zatwierdzenia właściciela', 'settings_enableOwnerRevApp_desc' => 'Włącz tę opcję jeżeli właściciel dokumentu powinien być wymieniony jako zatwierdzających/recenzentów oraz dla przepływu procesu', 'settings_enablePasswordForgotten' => 'Włącz odzyskiwanie hasła po jego zapomnieniu', 'settings_enablePasswordForgotten_desc' => 'Jeśli chcesz zezwolić użytkownikom na zmianę własnego hasła i wysyłanie go emailem, zaznacz tę opcję.', -'settings_enableReceiptReject' => '', -'settings_enableReceiptReject_desc' => '', -'settings_enableReceiptWorkflow' => '', -'settings_enableReceiptWorkflow_desc' => '', +'settings_enableReceiptReject' => 'Umożliwianie odrzucania przyjęć', +'settings_enableReceiptReject_desc' => 'Włącz, aby włączyć odrzucenie przyjęć.', +'settings_enableReceiptWorkflow' => 'Włącz potwierdzenie odbioru dokumentu', +'settings_enableReceiptWorkflow_desc' => 'Włącz, aby włączyć przepływ pracy, aby potwierdzić odbiór dokumentu.', 'settings_enableRecursiveCount' => 'Włącz licznik rekurencji dokumentu/folderu', 'settings_enableRecursiveCount_desc' => 'Jeżeli jest włączone, to liczba dokumentów i folderów w widoku będzie ustalona poprzez zliczenie wszystkich obiektów przez rekurencyjnie przetwarzane foldery i policzenia tych dokumentów i folderów do których użytkownik ma dostęp', -'settings_enableRevisionOneVoteReject' => '', -'settings_enableRevisionOneVoteReject_desc' => '', -'settings_enableRevisionOnVoteReject' => '', -'settings_enableRevisionOnVoteReject_desc' => '', -'settings_enableRevisionWorkflow' => '', -'settings_enableRevisionWorkflow_desc' => '', -'settings_enableSelfReceipt' => '', -'settings_enableSelfReceipt_desc' => '', +'settings_enableRevisionOneVoteReject' => 'Odrzuć przez jedną korektę', +'settings_enableRevisionOneVoteReject_desc' => 'Jeśli ta opcja jest włączona, stan dokumentu zostanie ustawiony na "wymaga korekty", gdy pierwsza korekta odrzuci dokument. Jeśli jest wyłączona, stan dokumentu nie ulegnie zmianie, dopóki wszystkie zmiany nie zakończą ich rewizji.', +'settings_enableRevisionOnVoteReject' => 'Odrzuć przez korektę', +'settings_enableRevisionOnVoteReject_desc' => 'Odrzuć przez korektę', +'settings_enableRevisionWorkflow' => 'Włączanie korekty dokumentów', +'settings_enableRevisionWorkflow_desc' => 'Włącz, aby móc uruchomić przepływ pracy w celu zmiany dokumentu po określonym czasie.', +'settings_enableSelfReceipt' => 'Zezwalaj na odbiór dokumentów dla zalogowanego użytkownika', +'settings_enableSelfReceipt_desc' => 'Włącz tę opcję, jeśli chcesz, aby aktualnie zalogowany użytkownik był wymieniony jako adresat dokumentu.', 'settings_enableSelfRevApp' => 'Pozwalaj przeglądać/zatwierdzać dla zalogowanych użytkowników', 'settings_enableSelfRevApp_desc' => 'Włącz tę opcję jeżeli zalogowany użytkownik ma prawo do recenzowania/zatwierdzania oraz do przepływu procesu', 'settings_enableSessionList' => 'Włącz listę użytkowników online w menu', 'settings_enableSessionList_desc' => 'Włącza listę obecnie zalogowanych użytkowników w menu.', 'settings_enableThemeSelector' => 'Wybór motywu', -'settings_enableThemeSelector_desc' => '', -'settings_enableUpdateReceipt' => '', -'settings_enableUpdateReceipt_desc' => '', -'settings_enableUpdateRevApp' => '', -'settings_enableUpdateRevApp_desc' => '', +'settings_enableThemeSelector_desc' => 'Włącza/wyłącza wybór motywu na stronie logowania.', +'settings_enableUpdateReceipt' => 'Zezwalaj na edycję istniejącego odbioru', +'settings_enableUpdateReceipt_desc' => 'Włącz to, jeśli użytkownik, który dokonał odbioru, może zmienić decyzję.', +'settings_enableUpdateRevApp' => 'Zezwól na edycję zamykania recenzji / zatwierdzenia', +'settings_enableUpdateRevApp_desc' => 'Włącz to, jeśli użytkownik, który dokonał przeglądu / zatwierdzenia, może zmienić decyzję, dopóki bieżący krok przepływu pracy nie zostanie zakończony.', 'settings_enableUserImage' => 'Włącz obrazy użytkowników', 'settings_enableUserImage_desc' => 'Zezwól na indywidualne obrazki użytkowników', 'settings_enableUsersView' => 'Włącz podgląd użytkownika', @@ -1337,10 +1360,10 @@ URL: [url]', 'settings_enableVersionDeletion_desc' => 'Włącz/Wyłącz możliwość kasowania poprzednich wersji plików przez zwykłych użytkowników. Administrator może w każdej chwili usunąć stare wersjie.', 'settings_enableVersionModification' => 'Zezwól na modyfikowanie wersji', 'settings_enableVersionModification_desc' => 'Włącz/Wyłącz możliwość modyfikacji wersji dokumentów przez zwykłych użytkowników po wczytaniu pliku. Administrator może w każdej chwili zmienić wersję wczytanego pliku.', -'settings_enableWebdavReplaceDoc' => '', -'settings_enableWebdavReplaceDoc_desc' => '', -'settings_enableXsendfile' => '', -'settings_enableXsendfile_desc' => '', +'settings_enableWebdavReplaceDoc' => 'Zamień dokument podczas zapisywania', +'settings_enableWebdavReplaceDoc_desc' => 'Jeśli ta opcja jest włączona, zapisanie nowej wersji dokumentu zastąpi stary dokument zamiast tworzenia nowej wersji. Będzie to miało zastosowanie tylko wtedy, gdy użytkownik, mimetype i nazwa pliku są równe ostatniej wersji. Może to być przydatne, gdy aplikacje automatycznie zapisują dokument w ustalonych odstępach czasu.', +'settings_enableXsendfile' => 'Użyj modułu apache xsendfile', +'settings_enableXsendfile_desc' => 'Jeśli ta opcja jest ustawiona i zainstalowany jest moduł apache xsendfile, będzie on używany do dostarczania obrazów.', 'settings_encryptionKey' => 'Klucz szyfrujący', 'settings_encryptionKey_desc' => 'Ten ciąg znaków jest używany do tworzenia unikatowego identyfikatora dodawanego jako ukryte pole do formularza aby zapobiec atakom CSRF.', 'settings_error' => 'Błąd', @@ -1356,7 +1379,7 @@ URL: [url]', 'settings_firstDayOfWeek_desc' => 'Pierwszy dzień tygodnia', 'settings_footNote' => 'Treść stopki', 'settings_footNote_desc' => 'Wiadomość wyświetlana na dole każdej strony', -'settings_fullSearchEngine' => '', +'settings_fullSearchEngine' => 'Wyszukiwanie pełnotekstowe', 'settings_fullSearchEngine_desc' => 'Ustaw metodę używaną do pełnotekstowego wyszukiwania', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', @@ -1365,11 +1388,11 @@ URL: [url]', 'settings_httpRoot' => 'Http Root', 'settings_httpRoot_desc' => 'Relatywna ścieżka w URL, część za domeną. Nie dołączaj przedrostka http:// ani nazwy hosta. Np. Jeśli cały URL to http://www.example.com/letodms/, wpisz \'/letodms/\'. Jeśli URL to http://www.example.com/, set \'/\'', 'settings_incItemsPerPage' => 'Liczba wpisów załadowana na dole strony', -'settings_incItemsPerPage_desc' => '', -'settings_initialDocumentStatus' => '', -'settings_initialDocumentStatus_desc' => '', -'settings_initialDocumentStatus_draft' => '', -'settings_initialDocumentStatus_released' => '', +'settings_incItemsPerPage_desc' => 'Jeśli liczba folderów i dokumentów jest ograniczona, spowoduje to ustawienie liczby dodatkowo załadowanych obiektów podczas przewijania w dół do dołu strony folderu widoku. Ustawienie tego na 0 spowoduje załadowanie takiej samej liczby obiektów, jaka została załadowana początkowo.', +'settings_initialDocumentStatus' => 'Stan dokumentu początkowego', +'settings_initialDocumentStatus_desc' => 'Ten stan zostanie ustawiony po dodaniu dokumentu.', +'settings_initialDocumentStatus_draft' => 'Projekt', +'settings_initialDocumentStatus_released' => 'Wydany', 'settings_installADOdb' => 'Zainstaluj ADOdb', 'settings_install_disabled' => 'Plik ENABLE_INSTALL_TOOL został usunięty. Możesz teraz zalogować się do LetoDMS i przeprowadzić dalszą konfigurację.', 'settings_install_pear_package_log' => 'Zainstaluj pakiet Pear \'Log\'', @@ -1380,8 +1403,8 @@ URL: [url]', 'settings_install_zendframework' => 'Zainstaluj Zend Framework, jeśli zamierzasz używać przeszukiwania pełnotekstowego', 'settings_language' => 'Domyślny język', 'settings_language_desc' => 'Domyślny język (nazwa podkatalogu w katalogu "languages")', -'settings_libraryFolder' => '', -'settings_libraryFolder_desc' => '', +'settings_libraryFolder' => 'Folder Biblioteka', +'settings_libraryFolder_desc' => 'Folder, w którym można kopiować dokumenty w celu utworzenia nowych dokumentów.', 'settings_logFileEnable' => 'Włącz plik dziennika', 'settings_logFileEnable_desc' => 'Włącz/Wyłącz plik dziennika', 'settings_logFileRotation' => 'Rotowanie pliku dziennika', @@ -1397,24 +1420,24 @@ URL: [url]', 'settings_maxExecutionTime' => 'Maksymalny czas wykonywania (s)', 'settings_maxExecutionTime_desc' => 'Ustawia maksymalny czas, liczony w sekundach, jaki ma na wykonanie skrypt zanim zostanie zakończony.', 'settings_maxItemsPerPage' => 'Maksymalna liczba wpisów na stronę', -'settings_maxItemsPerPage_desc' => '', +'settings_maxItemsPerPage_desc' => 'Ogranicza liczbę folderów i dokumentów wyświetlanych na stronie folderu widoku. Kolejne obiekty zostaną załadowane podczas przewijania do końca strony. Ustaw na 0, aby zawsze wyświetlać wszystkie obiekty.', 'settings_maxRecursiveCount' => 'Max. liczba rekurencji dokumentów/folderów', 'settings_maxRecursiveCount_desc' => 'Jest to maksymalna liczba dokumentów i folderów, które będą sprawdzane pod kątem praw dostępu, gdy włączone jest rekurencyjnie liczenie obiektów. Jeżeli liczba ta zostanie przekroczona to ilości dokumentów i folderów w widoku zostaną oszacowane.', -'settings_maxSizeForFullText' => '', -'settings_maxSizeForFullText_desc' => '', +'settings_maxSizeForFullText' => 'Maksymalny rozmiar plików do natychmiastowego indeksowania', +'settings_maxSizeForFullText_desc' => 'Wszystkie nowe wersje dokumentu mniejsze niż skonfigurowany rozmiar zostaną w pełni zindeksowane zaraz po przesłaniu. We wszystkich innych przypadkach tylko metadane będą indeksowane.', 'settings_maxUploadSize' => 'Maksymalny rozmiar wysyłanych plików', 'settings_maxUploadSize_desc' => 'To jest maksymalny rozmiar dla nadesłanych plików. To ustawienie wpływa również na wersje dokumentu i załączniki.', 'settings_more_settings' => 'Wykonaj dalszą konfigurację. Domyślny login/hasło: admin/admin', -'settings_noDocumentFormFields' => '', -'settings_noDocumentFormFields_desc' => '', +'settings_noDocumentFormFields' => 'Nie pokazuj tych pól', +'settings_noDocumentFormFields_desc' => 'Te pola nie będą wyświetlane podczas dodawania lub edycji dokumentu. Istniejące wartości zostaną zachowane.', 'settings_notfound' => 'Nie znaleziono', 'settings_Notification' => 'Ustawienia powiadomień', 'settings_notwritable' => 'Konfiguracja nie może zostać zapisana ponieważ plik konfiguracyjny nie jest zapisywalny.', 'settings_no_content_dir' => 'Katalog treści', -'settings_onePageMode' => '', -'settings_onePageMode_desc' => '', +'settings_onePageMode' => 'Tryb jednostronny', +'settings_onePageMode_desc' => 'Tryb jednostronicowy włączy kod javascript na stronie Wyświetl folder, który aktualizuje listę folderów / dokumentów, nawigację itp. Po kliknięciu folderu lub zmianie parametru sortowania.', 'settings_overrideMimeType' => 'Nadpisz typ rozszerzenia', -'settings_overrideMimeType_desc' => '', +'settings_overrideMimeType_desc' => 'Zastąp typ MimeType dostarczony przez przeglądarkę, jeśli plik zostanie przesłany. Nowy typ MimeType jest określany przez sam SeedDMS.', 'settings_partitionSize' => 'Rozmiar części pliku', 'settings_partitionSize_desc' => 'Rozmiar części pliku, w bajtach, wczytywane przez jumploader. Nie wpisuj wartości większej niż maksymalna wartość wczytywanego pliku ustawiona na serwerze.', 'settings_passwordExpiration' => 'Wygaśnięcie hasła', @@ -1434,30 +1457,30 @@ URL: [url]', 'settings_php_gd2' => 'Rozszerzenie PHP: php_gd2', 'settings_php_mbstring' => 'Rozszerzenie PHP: php_mbstring', 'settings_php_version' => 'Wersja PHP', -'settings_presetExpirationDate' => '', -'settings_presetExpirationDate_desc' => '', +'settings_presetExpirationDate' => 'Wstępnie ustawiona data ważności', +'settings_presetExpirationDate_desc' => 'Wszystkie nowe przesłane dokumenty będą miały datę ważności ustawioną na tę wartość. Wprowadzoną datę można określić w sposób zrozumiały dla funkcji strtotime () PHP, np. +5 weeks.', 'settings_previewWidthDetail' => 'Szerokość obrazka podglądu (szczegóły)', 'settings_previewWidthDetail_desc' => 'Szerokość obrazka podglądu na stronie szczegółów', -'settings_previewWidthDropFolderList' => '', -'settings_previewWidthDropFolderList_desc' => '', +'settings_previewWidthDropFolderList' => 'Szerokość obrazów podglądu (lista folderów)', +'settings_previewWidthDropFolderList_desc' => 'Szerokość obrazów podglądu wyświetlanych na liście podczas wybierania pliku z folderu rozwijanego.', 'settings_previewWidthList' => 'Szerokość obrazka podglądu (lista)', 'settings_previewWidthList_desc' => 'Szerokość podglądu obrazu pokazanego na liście', -'settings_previewWidthMenuList' => '', -'settings_previewWidthMenuList_desc' => '', +'settings_previewWidthMenuList' => 'Szerokość obrazów podglądu (lista menu)', +'settings_previewWidthMenuList_desc' => 'Szerokość obrazów podglądu wyświetlanych jako elementy w menu rozwijanego folderu.', 'settings_printDisclaimer' => 'Wyświetlaj Zrzeczenie się', 'settings_printDisclaimer_desc' => 'Zaznaczenie tej opcji spowoduje, że na dole strony będzie wyświetlany komunikat zrzeczenia się zawarty w pliku lang.inc.', -'settings_proxyUPassword' => '', -'settings_proxyUPassword_desc' => '', -'settings_proxyUrl' => '', -'settings_proxyUrl_desc' => '', -'settings_proxyUser' => '', -'settings_proxyUser_desc' => '', +'settings_proxyUPassword' => 'Hasło dla serwera proxy', +'settings_proxyUPassword_desc' => 'Hasło do uwierzytelniania na serwerze proxy.', +'settings_proxyUrl' => 'Adres URL serwera proxy', +'settings_proxyUrl_desc' => 'Adres URL serwera proxy używanego do uzyskiwania dostępu do repozytorium rozszerzeń.', +'settings_proxyUser' => 'Nazwa użytkownika używana dla serwera proxy', +'settings_proxyUser_desc' => 'Nazwa użytkownika używana do uwierzytelniania za pomocą serwera proxy', 'settings_quota' => 'Przydział dysku użytkownika', 'settings_quota_desc' => 'Maksymalna liczba bajtów jaką użytkownik może wykorzystać na dysku. Ustaw na 0 dla nieograniczonej przestrzeni dyskowej. Wartość ta może być zastąpiona dla każdego zastosowania w swoim profilu.', -'settings_removeFromDropFolder' => '', -'settings_removeFromDropFolder_desc' => '', -'settings_repositoryUrl' => '', -'settings_repositoryUrl_desc' => '', +'settings_removeFromDropFolder' => 'Usuwanie pliku z folderu zrzutu po pomyślnym przesłaniu', +'settings_removeFromDropFolder_desc' => 'Włącz to, jeśli plik pobrany z folderu zrzutu zostanie usunięty po pomyślnym przesłaniu.', +'settings_repositoryUrl' => 'Adres URL repozytorium', +'settings_repositoryUrl_desc' => 'Adres URL repozytorium rozszerzeń', 'settings_restricted' => 'Ograniczony dostęp', 'settings_restricted_desc' => 'Mogą zalogować się tylko ci użytkownicy, którzy mają swoje wpisy w lokalnej bazie danych (niezależnie od pomyślnego uwierzytelnienia w LDAP)', 'settings_rootDir' => 'Katalog główny', @@ -1467,11 +1490,11 @@ URL: [url]', 'settings_SaveError' => 'Błąd zapisu pliku konfiguracyjnego', 'settings_Server' => 'Ustawienia serwera', 'settings_showFullPreview' => 'Pokaż cały dokument', -'settings_showFullPreview_desc' => '', +'settings_showFullPreview_desc' => 'Włącz/wyłącz pełny podgląd dokumentu na stronie szczegółów, jeśli przeglądarka jest w stanie to zrobić.', 'settings_showMissingTranslations' => 'Pokaż brakujące tłumaczenia', -'settings_showMissingTranslations_desc' => '', -'settings_showSingleSearchHit' => '', -'settings_showSingleSearchHit_desc' => '', +'settings_showMissingTranslations_desc' => 'Wyświetl wszystkie brakujące tłumaczenia na stronie u dołu strony. Zalogowany użytkownik będzie mógł przesłać propozycję braku tłumaczenia, które zostanie zapisane w pliku csv. Nie włączaj tej funkcji w środowisku produkcyjnym!', +'settings_showSingleSearchHit' => 'Przejdź prosto do pojedynczego trafienia wyszukiwania', +'settings_showSingleSearchHit_desc' => 'Jeśli wyniki wyszukiwania w jednym trafieniu, zostanie on wyświetlony od razu zamiast listy wyników.', 'settings_Site' => 'Strona', 'settings_siteDefaultPage' => 'Domyślna strona', 'settings_siteDefaultPage_desc' => 'Strona wyświetlana domyślnie po zalogowaniu. Domyślnie jest to out/out.ViewFolder.php', @@ -1491,7 +1514,7 @@ URL: [url]', 'settings_smtpUser' => 'Użytkownik SMTP', 'settings_smtpUser_desc' => 'Użytkownik SMTP', 'settings_sortFoldersDefault' => 'Domyślna metoda sotowania', -'settings_sortFoldersDefault_desc' => '', +'settings_sortFoldersDefault_desc' => 'Spowoduje to ustawienie metod sortowania folderów i dokumentów w widoku folderów.', 'settings_sortFoldersDefault_val_name' => 'po nazwie', 'settings_sortFoldersDefault_val_sequence' => 'po sekwencji', 'settings_sortFoldersDefault_val_unsorted' => 'niesortowane', @@ -1508,14 +1531,14 @@ URL: [url]', 'settings_strictFormCheck_desc' => 'Sprawdzanie poprawności forularzy. Jeśli ta opcja jest włączona, to wszystkie pola w formularzach będą obowiązkowe do wypełnienia. Jeśli nie włączysz tej opcji, to większość komentarzy i pól słów kluczowych będzie opcjonalna. Komentarze są zawsze wymagane przy zatwierdzaniu, opiniowaniu lub zmianie statusu dokumentu.', 'settings_suggestionvalue' => 'Sugerowana wartość', 'settings_System' => 'System', -'settings_tasksInMenu' => '', -'settings_tasksInMenu_approval' => '', -'settings_tasksInMenu_desc' => '', -'settings_tasksInMenu_needscorrection' => '', -'settings_tasksInMenu_receipt' => '', -'settings_tasksInMenu_review' => '', -'settings_tasksInMenu_revision' => '', -'settings_tasksInMenu_workflow' => '', +'settings_tasksInMenu' => 'Wybrane zadania', +'settings_tasksInMenu_approval' => 'Zatwierdzone', +'settings_tasksInMenu_desc' => 'Wybierz te zadania, które mają być zliczane. Jeśli żadna opcja nie zostanie wybrana, wszystkie zadania zostaną policzone.', +'settings_tasksInMenu_needscorrection' => 'Konieczna korekta', +'settings_tasksInMenu_receipt' => 'Wpływy', +'settings_tasksInMenu_review' => 'Recenzji', +'settings_tasksInMenu_revision' => 'Korekty', +'settings_tasksInMenu_workflow' => 'Przepływu pracy', 'settings_theme' => 'Domyślny motyw', 'settings_theme_desc' => 'Domyślny styl wyglądu (nazwa podkatalogu w katalogu "styles")', 'settings_titleDisplayHack' => 'Korekta wyświetlania tytułu', @@ -1531,13 +1554,13 @@ URL: [url]', 'settings_versiontolow' => 'Za niska wersja', 'settings_viewOnlineFileTypes' => 'Typy plików widoczne online', 'settings_viewOnlineFileTypes_desc' => 'Pliki z jednym z następujących rozszerzeń mogą być widoczne online (UŻYWAJ WYŁĄCZNIE MAŁYCH LITER)', -'settings_webdav' => '', +'settings_webdav' => 'WebDAV', 'settings_workflowMode' => 'Tryb procesu', 'settings_workflowMode_desc' => 'Zaawansowany proces pozwala określić własne release procesu zwalniający dla wersji dokumentu.', 'settings_workflowMode_valadvanced' => 'zaawansowane', -'settings_workflowMode_valnone' => '', +'settings_workflowMode_valnone' => 'żaden', 'settings_workflowMode_valtraditional' => 'tradycyjny', -'settings_workflowMode_valtraditional_only_approval' => '', +'settings_workflowMode_valtraditional_only_approval' => 'tradycyjny (bez recenzji)', 'settings_zendframework' => 'Zend Framework', 'set_expiry' => 'Ustaw datę wygaśnięcia', 'set_owner' => 'Ustaw właściciela', @@ -1553,147 +1576,148 @@ URL: [url]', 'site_brand' => '', 'sk_SK' => 'słowacki', 'sort_by_date' => 'Sortuj według daty', -'sort_by_expiration_date' => '', +'sort_by_expiration_date' => 'Sortuj według daty ważności', 'sort_by_name' => 'Sortuj według nazwy', -'sort_by_sequence' => '', +'sort_by_sequence' => 'Sortuj według sekwencji', 'space_used_on_data_folder' => 'Przestrzeń zajęta przez folder danych', 'splash_added_to_clipboard' => 'Dodano do schowka', -'splash_add_access' => '', +'splash_add_access' => 'Dodano prawo dostępu', 'splash_add_attribute' => 'Dodano nowy atrybut', 'splash_add_group' => 'Dodano nową grupę', 'splash_add_group_member' => 'Dodano nowego członka grupy', -'splash_add_role' => '', -'splash_add_to_transmittal' => '', -'splash_add_transmittal' => '', +'splash_add_role' => 'Dodano nową rolę', +'splash_add_task' => '', +'splash_add_to_transmittal' => 'Dodaj do przekazu', +'splash_add_transmittal' => 'Dodano przekaz', 'splash_add_user' => 'Dodano nowego użytkownika', -'splash_cleared_cache' => '', +'splash_cleared_cache' => 'Pamięć podręczna wyczyszczona', 'splash_cleared_clipboard' => 'Wyczyszczono schowek', -'splash_delete_access' => '', -'splash_document_added' => '', -'splash_document_checkedout' => '', +'splash_delete_access' => 'Prawo dostępu zostało usunięte', +'splash_document_added' => 'Dokument został dodany', +'splash_document_checkedout' => 'Wyewidencjonowany dokument', 'splash_document_edited' => 'Dokument został zapisany', -'splash_document_indexed' => '', +'splash_document_indexed' => 'Dokument \'[name]\' zindeksowany.', 'splash_document_locked' => 'Dokument zablokowany', 'splash_document_unlocked' => 'Odblokowano dokument', -'splash_edit_access' => '', +'splash_edit_access' => 'Prawo dostępu zostało zmienione', 'splash_edit_attribute' => 'Zapisano atrybuty', -'splash_edit_event' => '', +'splash_edit_event' => 'Wydarzenie zapisane', 'splash_edit_group' => 'Grupa zapisana', -'splash_edit_role' => '', -'splash_edit_task' => '', -'splash_edit_transmittal' => '', +'splash_edit_role' => 'Rola zapisana', +'splash_edit_task' => 'Zadanie zapisane', +'splash_edit_transmittal' => 'Przesyłanie zapisane', 'splash_edit_user' => 'Zapisano użytkownika', -'splash_error_add_to_transmittal' => '', -'splash_error_rm_download_link' => '', -'splash_error_send_download_link' => '', -'splash_extension_getlist' => '', -'splash_extension_import' => '', -'splash_extension_refresh' => '', -'splash_extension_upload' => '', +'splash_error_add_to_transmittal' => 'Błąd podczas dodawania dokumentu do przekazu', +'splash_error_rm_download_link' => 'Błąd podczas usuwania linku do pobrania', +'splash_error_send_download_link' => 'Błąd podczas wysyłania linku do pobrania', +'splash_extension_getlist' => 'Zaktualizowana lista rozszerzeń z repozytorium', +'splash_extension_import' => 'Rozszerzenie zainstalowane', +'splash_extension_refresh' => 'Odświeżona lista rozszerzeń', +'splash_extension_upload' => 'Rozszerzenie zainstalowane', 'splash_folder_edited' => 'Zapisz zmiany folderu', -'splash_importfs' => '', -'splash_inherit_access' => '', +'splash_importfs' => 'Zaimportowane dokumenty [docs] i foldery [folders]', +'splash_inherit_access' => 'Prawa dostępu będą dziedziczone', 'splash_invalid_folder_id' => 'Nieprawidłowy identyfikator folderu', 'splash_invalid_searchterm' => 'Nieprawidłowa wartość wyszukiwania', -'splash_link_document' => '', +'splash_link_document' => 'Dodano link', 'splash_moved_clipboard' => 'Schowek został przeniesiony do bieżącego folderu', -'splash_move_document' => '', -'splash_move_folder' => '', -'splash_notinherit_access' => '', -'splash_receipt_update_success' => '', +'splash_move_document' => 'Dokument został przeniesiony', +'splash_move_folder' => 'Folder został przeniesiony', +'splash_notinherit_access' => 'Prawa dostępu nie są już dziedziczone', +'splash_receipt_update_success' => 'Odbiór został dodany pomyślnie', 'splash_removed_from_clipboard' => 'Usunięto ze schowka', 'splash_rm_attribute' => 'Usunięto atrybut', -'splash_rm_attr_value' => '', +'splash_rm_attr_value' => 'Wartość atrybutu została usunięta', 'splash_rm_document' => 'Dokument usunięto', -'splash_rm_download_link' => '', +'splash_rm_download_link' => 'Usunięto link do pobrania', 'splash_rm_folder' => 'Folder usunięty', 'splash_rm_group' => 'Grupę usunięto', 'splash_rm_group_member' => 'Usunięto członka grupy', -'splash_rm_role' => '', -'splash_rm_transmittal' => '', +'splash_rm_role' => 'Rola usunięta', +'splash_rm_transmittal' => 'Przekazywanie usunięte', 'splash_rm_user' => 'Użytkownika usunięto', -'splash_rm_user_processes' => '', -'splash_rm_workflow' => '', -'splash_rm_workflow_action' => '', -'splash_rm_workflow_state' => '', -'splash_saved_file' => '', -'splash_save_user_data' => '', -'splash_send_download_link' => '', -'splash_send_login_data' => '', -'splash_setowner' => '', +'splash_rm_user_processes' => 'Użytkownik usunięty ze wszystkich procesów', +'splash_rm_workflow' => 'Usunięto przepływ pracy', +'splash_rm_workflow_action' => 'Usunięto akcję przepływu pracy', +'splash_rm_workflow_state' => 'Usunięto stan przepływu pracy', +'splash_saved_file' => 'Wersja zapisana', +'splash_save_user_data' => 'Zapisane dane użytkownika', +'splash_send_download_link' => 'Link do pobrania wysłany e-mailem.', +'splash_send_login_data' => 'Dane do logowania zostały wysłane', +'splash_setowner' => 'Ustaw nowego właściciela', 'splash_settings_saved' => 'Zmiany zapisano', -'splash_set_default_access' => '', +'splash_set_default_access' => 'Domyślny zestaw praw dostępu', 'splash_substituted_user' => 'Zmieniono użytkownika', 'splash_switched_back_user' => 'Przełączono z powrotem do oryginalnego użytkownika', 'splash_toogle_group_manager' => 'Przełączono grupę menadżerów', -'splash_transfer_content' => '', -'splash_transfer_document' => '', -'splash_transfer_objects' => '', -'splash_trigger_workflow' => '', +'splash_transfer_content' => 'Treści przekazywane', +'splash_transfer_document' => 'Dokument przesłany', +'splash_transfer_objects' => 'Obiekty przekazane', +'splash_trigger_workflow' => 'Wyzwalane przejście przepływu pracy', 'state_and_next_state' => 'Status/Następny status', 'statistic' => 'Statystyka', 'status' => 'Status', 'status_approval_rejected' => 'Szkic odrzucony', 'status_approved' => 'Zatwierdzone', 'status_approver_removed' => 'Osoba zatwierdzająca usunięta z procesu', -'status_needs_correction' => '', +'status_needs_correction' => 'Wymaga korekty', 'status_not_approved' => 'Nie zatwierdzone', -'status_not_receipted' => '', +'status_not_receipted' => 'Jeszcze nie otrzymane', 'status_not_reviewed' => 'Nie zrecenzowane', -'status_not_revised' => '', -'status_receipted' => '', -'status_receipt_rejected' => '', -'status_recipient_removed' => '', +'status_not_revised' => 'Nie zweryfikowane', +'status_receipted' => 'Otrzymane', +'status_receipt_rejected' => 'Odrzucone', +'status_recipient_removed' => 'Adresat usunięty z listy', 'status_reviewed' => 'Zrecenzowane', 'status_reviewer_rejected' => 'Szkic odrzucony', 'status_reviewer_removed' => 'Recenzent usunięty z procesu', -'status_revised' => '', -'status_revision_rejected' => '', -'status_revision_sleeping' => '', -'status_revisor_removed' => '', +'status_revised' => 'Zmieniony', +'status_revision_rejected' => 'Korekta odrzucona', +'status_revision_sleeping' => 'Oczekujące', +'status_revisor_removed' => 'Revisor usunięty z listy', 'status_unknown' => 'Nieznany', 'storage_size' => 'Zajętość dysku', -'subfolder_duplicate_name' => '', -'submit_2_fact_auth' => '', +'subfolder_duplicate_name' => 'Zduplikowana nazwa podfolderu', +'submit_2_fact_auth' => 'Zapisz sekretne hasło', 'submit_approval' => 'Zaakceptuj', 'submit_login' => 'Zaloguj się', 'submit_password' => 'Ustaw nowe hasło', 'submit_password_forgotten' => 'Uruchom proces', -'submit_receipt' => '', +'submit_receipt' => 'Prześlij pokwitowanie', 'submit_review' => 'Zatwierdź recenzję', -'submit_revision' => '', +'submit_revision' => 'Zatwierdź korektę', 'submit_userinfo' => 'Zatwierdź dane', -'submit_webauthn_login' => '', -'submit_webauthn_register' => '', -'subsribe_timelinefeed' => '', -'substitute_to_user' => '', -'substitute_user' => 'Zastępca użytkownika', -'success_add_aro' => '', -'success_add_permission' => '', -'success_remove_permission' => '', -'success_toogle_permission' => '', +'submit_webauthn_login' => 'Login', +'submit_webauthn_register' => 'Zarejestrować', +'subsribe_timelinefeed' => 'Subskrybuj kanał czasu', +'substitute_to_user' => 'Przełącz na \'[username]\'', +'substitute_user' => 'Użytkownik zastępczy', +'success_add_aro' => 'Dodano obiekt żądania dostępu', +'success_add_permission' => 'Dodano uprawnienie', +'success_remove_permission' => 'Usunięto uprawnienie', +'success_toogle_permission' => 'Zmieniono uprawnienie', 'sunday' => 'Niedziela', 'sunday_abbr' => 'Ni', 'sv_SE' => 'szwedzki', 'switched_to' => 'Przełączone na', -'takeOverAttributeValue' => '', -'takeOverGrpApprover' => '', -'takeOverGrpApprovers' => '', -'takeOverGrpReviewer' => '', -'takeOverGrpReviewers' => '', -'takeOverIndApprover' => '', -'takeOverIndApprovers' => '', -'takeOverIndReviewer' => '', -'takeOverIndReviewers' => '', -'tasks' => '', -'task_core_expireddocs_days' => '', -'task_description' => '', -'task_disabled' => '', -'task_frequency' => '', -'task_last_run' => '', -'task_name' => '', -'task_next_run' => '', -'temp_jscode' => '', +'takeOverAttributeValue' => 'Przejmij wartość atrybutu z ostatniej wersji', +'takeOverGrpApprover' => 'Przejmij grupę osób zatwierdzających z ostatniej wersji.', +'takeOverGrpApprovers' => 'Przejęcie grupy zatwierdzających', +'takeOverGrpReviewer' => 'Przejmij grupę recenzentów z ostatniej wersji.', +'takeOverGrpReviewers' => 'Przejęcie grupy recezentów', +'takeOverIndApprover' => 'Przejmij kontrolę nad pojedynczym zatwierdzającym z ostatniej wersji.', +'takeOverIndApprovers' => 'Przejmij indywidualne osoby zatwierdzające', +'takeOverIndReviewer' => 'Przejmij kontrolę nad indywidualnym recenzentem z ostatniej wersji.', +'takeOverIndReviewers' => 'Przejmij poszczególnych recenzentów', +'tasks' => 'Zadania', +'task_core_expireddocs_days' => 'Rdzeń zadania wygasa', +'task_description' => 'Opis zadania', +'task_disabled' => 'Zadanie wyłączone', +'task_frequency' => 'Częstotliwość zadania', +'task_last_run' => 'Ostatnie uruchomienie zadania', +'task_name' => 'Nazwa zadania', +'task_next_run' => 'Zadanie następnego uruchomienia', +'temp_jscode' => 'Tymczasowy kod javascript', 'testmail_body' => 'To jest mail testowy SeedDMS', 'testmail_subject' => 'Wiadomość testowa', 'theme' => 'Wygląd', @@ -1701,66 +1725,66 @@ URL: [url]', 'thursday_abbr' => 'Cz', 'timeline' => 'Zakres czasowy', 'timeline_add_file' => 'Nowy załącznik', -'timeline_add_version' => '', -'timeline_full_add_file' => '', -'timeline_full_add_version' => '', -'timeline_full_scheduled_revision' => '', -'timeline_full_status_change' => '', -'timeline_scheduled_revision' => '', -'timeline_selected_item' => '', +'timeline_add_version' => 'Nowa wersja [version]', +'timeline_full_add_file' => '[document]
Nowy załącznik', +'timeline_full_add_version' => '[document]
Nowa wersja [version]', +'timeline_full_scheduled_revision' => '[document]
Rewizja wersji [version]', +'timeline_full_status_change' => 'Pełna zmiana statusu na osi czasu', +'timeline_scheduled_revision' => 'Rewizja wersji [version]', +'timeline_selected_item' => 'Wybrany dokument', 'timeline_skip_add_file' => 'dodano załącznik', -'timeline_skip_scheduled_revision' => '', +'timeline_skip_scheduled_revision' => 'Zaplanowana wersja', 'timeline_skip_status_change_-1' => 'odrzucony', 'timeline_skip_status_change_-3' => 'przedawniony', 'timeline_skip_status_change_0' => 'oczekuje na opinię', 'timeline_skip_status_change_1' => 'oczekuje na zatwierdzenie', 'timeline_skip_status_change_2' => 'wydany', 'timeline_skip_status_change_3' => 'w obiegu', -'timeline_skip_status_change_4' => '', -'timeline_skip_status_change_5' => '', +'timeline_skip_status_change_4' => 'w wersji', +'timeline_skip_status_change_5' => 'projekt', 'timeline_status_change' => 'Wersja [wersja]: [status]', 'to' => 'Do', 'toggle_manager' => 'Przełączanie zarządcy', -'toggle_qrcode' => '', -'total' => '', -'to_before_from' => '', -'transfer_content' => '', +'toggle_qrcode' => 'Pokaż/ukryj kod QR', +'total' => 'Suma', +'to_before_from' => 'Data zakończenia nie może być wcześniejsza niż data rozpoczęcia', +'transfer_content' => 'Przenieś zawartość', 'transfer_document' => 'Transfer dokumentu', 'transfer_no_read_access' => 'Użytkownik nie ma prawa do odczytu w tym folderze', 'transfer_no_write_access' => 'Użytkownik nie ma prawa do zapisu w tym folderze', -'transfer_objects' => '', -'transfer_objects_to_user' => '', -'transfer_process_to_user' => '', +'transfer_objects' => 'Przenieś obiekty', +'transfer_objects_to_user' => 'Nowy właściciel', +'transfer_process_to_user' => 'Prześlij proces do użytkownika', 'transfer_to_user' => 'Przekaż użytkownikowi', 'transition_triggered_email' => 'Uruchomiono proces przepływu', -'transition_triggered_email_body' => 'Uruchomiono proces przepływu -Dokument: [name] -Wersja: [version] -Komentarz: [comment] -Proces: [workflow] -Poprzedni status: [previous_state] -Bieżący status: [current_state] -Folder nadrzędny: [folder_path] -Użytkownik: [username] +'transition_triggered_email_body' => 'Uruchomiono proces przepływu +Dokument: [name] +Wersja: [version] +Komentarz: [comment] +Proces: [workflow] +Poprzedni status: [previous_state] +Bieżący status: [current_state] +Folder nadrzędny: [folder_path] +Użytkownik: [username] URL: [url]', 'transition_triggered_email_subject' => '[sitename]: [name] - Uruchomiono proces przepływu', -'transmittal' => '', -'transmittalitem_removed' => '', -'transmittalitem_updated' => '', -'transmittal_comment' => '', -'transmittal_name' => '', -'transmittal_size' => '', +'transmittal' => 'Przekaz', +'transmittalitem_removed' => 'Przedmiot przekazu został usunięty', +'transmittalitem_updated' => 'Dokument zaktualizowano do najnowszej wersji', +'transmittal_comment' => 'Komentarz', +'transmittal_name' => 'Nazwa przekazu', +'transmittal_size' => 'Rozmiar przekazu', 'tree_loading' => 'Czekaj, trwa ładowanie...', 'trigger_workflow' => 'Proces', 'tr_TR' => 'Turecki', 'tuesday' => 'Wtorek', 'tuesday_abbr' => 'Wt', -'type_of_hook' => '', -'type_to_filter' => '', +'type_of_hook' => 'Typ', +'type_to_filter' => 'Wpisz, aby przefiltrować listę', 'type_to_search' => 'Wpisz wyszukiwane', 'uk_UA' => 'Ukrainski', 'under_folder' => 'W folderze', -'unknown_attrdef' => '', +'unknown_attrdef' => 'Nieznana definicja atrybutu', 'unknown_command' => 'Polecenie nie rozpoznane.', 'unknown_document_category' => 'Nieznana kategoria', 'unknown_group' => 'Nieznany ID grupy', @@ -1781,22 +1805,23 @@ URL: [url]', 'update_fulltext_index' => 'Aktualizuj indeks pełnotekstowy', 'update_info' => 'Aktualizuj informacje', 'update_locked_msg' => 'Ten dokument jest zablokowany.', -'update_recipients' => '', +'update_recipients' => 'Zaktualizuj listę odbiorców', 'update_reviewers' => 'Aktualizuj listę recenzentów', -'update_revisors' => '', -'update_transmittalitem' => '', +'update_revisors' => 'Aktualizuj listę audytorów', +'update_transmittalitem' => 'Zaktualizuj do najnowszej wersji dokumentu', 'uploaded_by' => 'Przesłane przez', 'uploading_failed' => 'Przesyłanie nie powiodło się. Skontaktuj się z administratorem.', 'uploading_maxsize' => 'Rozmiar pliku większy niż dopuszczalny', 'uploading_zerosize' => 'Próba przesłania pustego pliku. Przesłanie zostało przerwane.', 'used_discspace' => 'Użyta przestrzeń dyskowa', 'user' => 'Użytkownik', +'userdata_file' => '', 'userid_groupid' => 'Id Użytkownika/Id Grupy', 'users' => 'Użytkownicy', 'users_and_groups' => 'Użytkownicy/Grupy', 'users_done_work' => 'Użytkownicy', 'user_exists' => 'Użytkownik już istnieje.', -'user_group' => '', +'user_group' => 'Użytkownik / grupa', 'user_group_management' => 'Zarządzanie Użytkownikami/Grupami', 'user_image' => 'Zdjęcie', 'user_info' => 'Informacje o użytkowniku', @@ -1807,7 +1832,7 @@ URL: [url]', 'use_comment_of_document' => 'Skomentuj dokumentu', 'use_default_categories' => 'Użyj predefiniowanych kategorii', 'use_default_keywords' => 'Użyj predefiniowanych słów kluczowych', -'valid_till' => '', +'valid_till' => 'Ważne do', 'version' => 'Wersja', 'versioning_file_creation' => 'Utwórz archiwum z wersjonowaniem', 'versioning_file_creation_warning' => 'Ta operacja utworzy plik zawierający informacje o wersjach plików z całego wskazanego folderu. Po utworzeniu, każdy plik będzie zapisany w folderze odpowiednim dla danego dokumentu.', @@ -1815,52 +1840,53 @@ URL: [url]', 'versiontolow' => 'Za niska wersja', 'version_comment' => 'Opis wersji', 'version_deleted_email' => 'Wersja usunięta', -'version_deleted_email_body' => 'Wersja została usunięta -Dokument: [name] -Wersja: [version] -Folder nadrzędny: [folder_path] -Użytkownik: [username] +'version_deleted_email_body' => 'Wersja została usunięta +Dokument: [name] +Wersja: [version] +Folder nadrzędny: [folder_path] +Użytkownik: [username] URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Usunięcie wersji', 'version_info' => 'Informacje o wersji', 'view' => 'Widok', 'view_online' => 'Obejrzyj online', 'warning' => 'Ostrzeżenie', -'webauthn_auth' => '', -'webauthn_crossplatform_info' => '', -'webauthn_info' => '', -'webauth_crossplatform' => '', +'webauthn_auth' => 'Uwierzytelnianie WebAuthn', +'webauthn_crossplatform_info' => 'Używaj wieloplatformowego „Tak”, gdy masz urządzenie wymienne, takie jak klucz Yubico, którego chcesz użyć do logowania na różnych komputerach; Powiedz „Nie”, gdy urządzenie jest podłączone do komputera. Wybór wpływa na to, które urządzenia są oferowane przez przeglądarkę i / lub system bezpieczeństwa komputera.', +'webauthn_info' => 'WebAuthn to uwierzytelnianie bez hasła, które wykorzystuje kryptografię klucza publicznego. Dla strony internetowej tworzony jest klucz prywatny-publiczny (znany jako poświadczenie). Klucz prywatny jest bezpiecznie przechowywany na urządzeniu użytkownika; Klucz publiczny i losowo wygenerowany identyfikator poświadczenia są wysyłane do serwera w celu przechowywania. Serwer może następnie użyć tego klucza publicznego do udowodnienia tożsamości użytkownika. Klucz prywatny jest zwykle przechowywany na tokenie sprzętowym. Token musi zostać zarejestrowany, zanim będzie można go użyć do uwierzytelnienia.', +'webauth_crossplatform' => 'Używaj wieloplatformowego', 'wednesday' => 'Środa', 'wednesday_abbr' => 'Śr', 'weeks' => 'tygodni', 'week_view' => 'Widok tygodniowy', 'workflow' => 'Proces', -'workflows_involded' => '', +'workflows_involded' => 'Zaangażowany w przepływ pracy', 'workflow_actions_management' => 'Zarządzanie akcjami procesu', 'workflow_action_in_use' => 'Akcja ta jest obecnie zastosowana w procesie', 'workflow_action_name' => 'Nazwa', 'workflow_editor' => 'Edytor procesu', 'workflow_group_summary' => 'Podsumowanie grupy', -'workflow_has_cycle' => '', +'workflow_has_cycle' => 'Przepływ pracy ma cykl', 'workflow_initstate' => 'Początkowy status', 'workflow_in_use' => 'Proces ten jest obecnie zastosowany w dokumentach.', -'workflow_layoutdata_saved' => '', +'workflow_layoutdata_saved' => 'Zapisano dane układu', 'workflow_management' => 'Menadżer procesów', 'workflow_name' => 'Nazwa', -'workflow_no_doc_rejected_state' => '', -'workflow_no_doc_released_state' => '', -'workflow_no_initial_state' => '', +'workflow_no_doc_rejected_state' => 'Dokument nie zostanie odrzucony w stanie przepływu pracy!', +'workflow_no_doc_released_state' => 'Dokument nie zostanie wydany w stanie przepływu pracy!', +'workflow_no_initial_state' => 'Żadne z przejść nie rozpoczyna się od początkowego stanu przepływu pracy!', 'workflow_no_states' => 'Zanim dodasz proces musisz najpierw zdefiniować jego status.', -'workflow_save_layout' => '', -'workflow_state' => '', +'workflow_save_layout' => 'Zapisz układ', +'workflow_state' => 'Stan procesu', 'workflow_states_management' => 'Menadżer statusów procesu', 'workflow_state_docstatus' => 'Status dokumentu', 'workflow_state_in_use' => 'Ten status jest aktualnie zastosowany w procesach.', 'workflow_state_name' => 'Nazwa', 'workflow_summary' => 'Podsumowanie procesu', -'workflow_transition_without_user_group' => '', +'workflow_title' => 'Tytuł przepływu pracy', +'workflow_transition_without_user_group' => 'Co najmniej jedno z przejść nie ma ani użytkownika, ani grupy!', 'workflow_user_summary' => 'Podsumowanie użytkownika', -'wrong_filetype' => '', +'wrong_filetype' => 'Nieprawidłowy typ pliku', 'x_more_objects' => '[number] więcej obiektów', 'year_view' => 'Widok roczny', 'yes' => 'Tak', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index d006763fc..d7cfcf8ce 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1841), flaviove (627), lfcristofoli (352) +// Translators: Admin (1842), flaviove (627), lfcristofoli (352) $text = array( '2_factor_auth' => 'Autenticação de dois fatores', @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Você realmente deseja remover todos os arquivos da pasta "[foldername]" e de suas subpastas
Cuidado: Eáa ação não pode ser desfeita.', 'confirm_rm_group' => 'Você realmente quer remover o grupo "[groupname]"?
Tenha cuidado: Esta ação não pode ser desfeita.', 'confirm_rm_log' => 'Você realmente deseja remover o arquivo de log "[logname]"?
Cuidado: esta ação não pode ser desfeita.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'Por favor, confirme a exclusão da transmissão.', 'confirm_rm_transmittalitem' => 'Confirme a remoção', 'confirm_rm_user' => 'Você realmente deseja remover o usuário "[username]"?
Tenha cuidado: esta ação não pode ser desfeita.', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Versão Atual', 'daily' => 'Diariamente', 'databasesearch' => 'Pesquisar Base de dados', +'database_schema_version' => '', 'date' => 'Data', 'days' => 'dias', 'debug' => 'Debug', @@ -556,6 +558,7 @@ Usuário: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Data de validade mudou', 'export' => 'Exportar', +'export_user_list_csv' => '', 'extension_archive' => 'Extensão', 'extension_changelog' => 'Alterações no Log', 'extension_loading' => 'Carregando Extensões', @@ -668,6 +671,9 @@ URL: [url]', 'import_extension' => 'Importar extensão', 'import_fs' => 'Importar do sistema de arquivos', 'import_fs_warning' => 'Isso só funcionará para pastas na pasta-alvo. A operação importa recursivamente todas as pastas e arquivos. Os arquivos serão liberados imediatamente.', +'import_users' => 'Importar utilizadores', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'Incluir conteúdo', 'include_documents' => 'Include documents', 'include_subdirectories' => 'Include subdirectories', @@ -686,6 +692,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Copiar lista de acesso herdada', 'inherits_access_empty_msg' => 'Inicie com a lista de acesso vazia', 'inherits_access_msg' => 'acesso está endo herdado.', +'installed_php_extensions' => '', 'internal_error' => 'Erro interno', 'internal_error_exit' => 'Erro interno. Não é possível concluir o pedido.', 'invalid_access_mode' => 'Modo de acesso inválido', @@ -801,6 +808,7 @@ URL: [url]', 'missing_checksum' => 'Falta verificação de checksum', 'missing_file' => 'Falta o arquivo', 'missing_filesize' => 'Falta tamanho do arquivo', +'missing_php_extensions' => '', 'missing_reception' => 'Falta o recebimento', 'missing_request_object' => 'Objeto de solicitação ausente', 'missing_transition_user_group' => 'Falta usuário/grupo para transição', @@ -959,6 +967,7 @@ Se você ainda tiver problemas para fazer o login, por favor, contate o administ 'pending_revision' => 'Revisões pendentes', 'pending_workflows' => 'Fluxos de trabalho pendentes', 'personal_default_keywords' => 'palavras-chave pessoais', +'php_info' => '', 'pl_PL' => 'Polonês', 'possible_substitutes' => 'Substitutos', 'preset_expires' => 'Vencimento pré-definido', @@ -1152,6 +1161,7 @@ URL: [url]', 'rm_from_clipboard' => 'Remover da área de transferência', 'rm_group' => 'Remove este grupo', 'rm_role' => 'Excluir este papel', +'rm_task' => '', 'rm_transmittal' => 'Por favor, confirme a exclusão da transmissão.', 'rm_transmittalitem' => 'Confirme a remoção', 'rm_user' => 'Remove este usuário', @@ -1206,6 +1216,8 @@ URL: [url]', 'search_results_access_filtered' => 'Os resultados da pesquisa podem conter conteúdo ao qual o acesso foi negado.', 'search_time' => 'Tempo decorrido: [time] seg.', 'seconds' => 'segundos', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Seleção', 'select_attrdefgrp_show' => 'Escolha quando mostrar', 'select_attribute_value' => 'Selecione o valor do atributo', @@ -1264,6 +1276,12 @@ Nome: [username] 'settings_allowReviewerOnly' => 'Permitir definir apenas o revisor', 'settings_allowReviewerOnly_desc' => 'Habilitar se for permitido definir apenas um revisor, mas nenhum aprovador no modo de fluxo de trabalho tradicional.', 'settings_apache_mod_rewrite' => 'Apache - Módulo Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Definições de autenticação', 'settings_autoLoginUser' => 'Login automático', 'settings_autoLoginUser_desc' => 'Use esse ID de usuário para acessos se o usuário ainda não tiver efetuado login. Esse acesso não criará uma sessão.', @@ -1644,6 +1662,7 @@ Nome: [username] 'splash_add_group' => 'Novo grupo adicionado', 'splash_add_group_member' => 'Novo membro do grupo adicionado', 'splash_add_role' => 'Novo papel adicionado', +'splash_add_task' => '', 'splash_add_to_transmittal' => 'Adicionar à transmissão', 'splash_add_transmittal' => 'Transmissão adicionada', 'splash_add_user' => 'Novo usuário adicionado', @@ -1872,6 +1891,7 @@ URL: [url]', 'uploading_zerosize' => 'Envio de um arquivo vazio. Envio cancelado.', 'used_discspace' => 'Espaço em disco usado', 'user' => 'Usuário', +'userdata_file' => '', 'userid_groupid' => 'Id do Usuário/Id do Grupo', 'users' => 'Usuários', 'users_and_groups' => 'Usuários/Grupos', @@ -1939,6 +1959,7 @@ URL: [url]', 'workflow_state_in_use' => 'Este estado está sendo usado por fluxos de trabalho.', 'workflow_state_name' => 'Nome', 'workflow_summary' => 'Sumário de fluxo de trabalho', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'transição do fluxo de trabalho sem grupo de usuários', 'workflow_user_summary' => 'Sumário de usuário', 'wrong_filetype' => 'Tipo de arquivo errado', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index fe8008d5f..433dd4539 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Sigur doriți să eliminați toate fișierele din folderul "[foldername]" si toate subfolderele?
Fiți atenți: Această acțiune nu poate fi anulată.', 'confirm_rm_group' => 'Sigur doriți să eliminați grupul "[groupname]"?
Fiți atenți: Această acțiune nu poate fi anulată.', 'confirm_rm_log' => 'Sigur doriți să eliminați fișierul log "[logname]"?
Fiți atenți: Această acțiune nu poate fi anulată.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => '', 'confirm_rm_user' => 'Sigur doriți să eliminați utilizatorul "[username]"?
Fiți atenți: Această acțiune nu poate fi anulată.', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Versiune curentă', 'daily' => 'Zilnic', 'databasesearch' => 'Căutare baza de date', +'database_schema_version' => '', 'date' => 'Data', 'days' => 'zile', 'debug' => '', @@ -544,6 +546,7 @@ Utilizator: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Data de expirare schimbată', 'export' => '', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => '', 'extension_loading' => 'Se incarca extensiile', @@ -649,6 +652,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => 'Import din filesystem', 'import_fs_warning' => '', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => '', 'include_documents' => 'Include documente', 'include_subdirectories' => 'Include subfoldere', @@ -667,6 +673,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Copie lista de acces moștenită', 'inherits_access_empty_msg' => 'Începeți cu lista de acces goală', 'inherits_access_msg' => 'Accesul este moștenit.', +'installed_php_extensions' => '', 'internal_error' => 'Eroare internă', 'internal_error_exit' => 'Eroare internă. Nu se poate finaliza cererea.', 'invalid_access_mode' => 'Modul de acces invalid', @@ -782,6 +789,7 @@ URL: [url]', 'missing_checksum' => 'Lipsește suma de control(checksum)', 'missing_file' => '', 'missing_filesize' => 'Lipsește dimensiunea fișierului', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => 'Lipsește utilizatorul/grupul pentru tranziție', @@ -941,6 +949,7 @@ Dacă aveți în continuare probleme la autentificare, vă rugăm să contactaț 'pending_revision' => '', 'pending_workflows' => '', 'personal_default_keywords' => 'Liste de cuvinte cheie personale', +'php_info' => '', 'pl_PL' => 'Poloneză', 'possible_substitutes' => '', 'preset_expires' => 'Expirarea presetului', @@ -1119,6 +1128,7 @@ URL: [url]', 'rm_from_clipboard' => 'Eliminați din clipboard', 'rm_group' => 'Eliminați acest grup', 'rm_role' => '', +'rm_task' => '', 'rm_transmittal' => 'Elimina transmiterea', 'rm_transmittalitem' => '', 'rm_user' => 'Eliminați acest utilizator', @@ -1173,6 +1183,8 @@ URL: [url]', 'search_results_access_filtered' => 'Rezultatele căutării pot cuprinde conținut la care accesul a fost interzis.', 'search_time' => 'Timp scurs: [time] sec.', 'seconds' => 'secunde', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Selecție', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1226,6 +1238,12 @@ URL: [url]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Setări de autentificare', 'settings_autoLoginUser' => 'Login automat', 'settings_autoLoginUser_desc' => '', @@ -1606,6 +1624,7 @@ URL: [url]', 'splash_add_group' => 'Grup nou adăugat', 'splash_add_group_member' => 'Membru grup nou adăugat', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Utilizator nou adăugat', @@ -1834,6 +1853,7 @@ URL: [url]', 'uploading_zerosize' => 'Se încarcă un fișier gol. Încărcarea este anulată.', 'used_discspace' => 'Spatiu pe disc folosit', 'user' => 'Utilizator', +'userdata_file' => '', 'userid_groupid' => '', 'users' => 'Utilizatori', 'users_and_groups' => 'Utilizatori/Grupuri', @@ -1901,6 +1921,7 @@ URL: [url]', 'workflow_state_in_use' => 'Această stare este utilizată în prezent de Workflow-uri.', 'workflow_state_name' => 'Nume', 'workflow_summary' => 'Sumar Workflow', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Sumar Utilizator', 'wrong_filetype' => '', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index dd9107aeb..6f32d6385 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1681) +// Translators: Admin (1682) $text = array( '2_factor_auth' => 'Двухфакторная аутентификация', @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Удалить в каталоге «[foldername]» все файлы и подкаталоги?
Действие необратимо', 'confirm_rm_group' => 'Удалить группу «[groupname]»?
Действие необратимо', 'confirm_rm_log' => 'Удалить журнал «[logname]»?
Действие необратимо', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'Подтвердить удаление', 'confirm_rm_transmittalitem' => 'Подтвердить удаление', 'confirm_rm_user' => 'Удалить пользователя «[username]»?
Действие необратимо', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Текущая версия', 'daily' => 'Ежедневно', 'databasesearch' => 'Поиск по БД', +'database_schema_version' => '', 'date' => 'Дата', 'days' => 'дни', 'debug' => 'Отладка', @@ -461,7 +463,7 @@ URL: [url]', 'dump_creation_warning' => 'Эта операция создаст дамп базы данных. После создания, файл будет сохранен в каталоге данных сервера.', 'dump_list' => 'Существующие дампы', 'dump_remove' => 'Удалить дамп', -'duplicates' => '', +'duplicates' => 'Дубликаты', 'duplicate_content' => 'Дублированное содержимое', 'edit' => 'Изменить', 'edit_attributes' => 'Изменить атрибуты', @@ -544,6 +546,7 @@ URL: [url]', URL: [url]', 'expiry_changed_email_subject' => '[sitename]: изменен срок действия для «[name]»', 'export' => 'Экспорт', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => '', 'extension_loading' => '', @@ -649,6 +652,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => 'Импорт из файловой системы', 'import_fs_warning' => 'Предупреждение импорта из ФС', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'Включая содержимое', 'include_documents' => 'Включая документы', 'include_subdirectories' => 'Включая подкаталоги', @@ -667,6 +673,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Скопировать наследованный список', 'inherits_access_empty_msg' => 'Начать с пустого списка доступа', 'inherits_access_msg' => 'Доступ унаследован.', +'installed_php_extensions' => '', 'internal_error' => 'Внутренняя ошибка', 'internal_error_exit' => 'Внутренняя ошибка. Невозможно выполнить запрос.', 'invalid_access_mode' => 'Неверный уровень доступа', @@ -782,6 +789,7 @@ URL: [url]', 'missing_checksum' => 'Отсутствует контрольная сумма', 'missing_file' => 'Отсутствует файл', 'missing_filesize' => 'Отсутствует размер файла', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => 'Отсутствует пользователь/группа для изменения.', @@ -938,6 +946,7 @@ URL: [url]', 'pending_revision' => '', 'pending_workflows' => 'В ожидании процесса', 'personal_default_keywords' => 'Личный список меток', +'php_info' => '', 'pl_PL' => 'Polish', 'possible_substitutes' => 'Замена', 'preset_expires' => 'Установить срок', @@ -1126,6 +1135,7 @@ URL: [url]', 'rm_from_clipboard' => 'Удалить из буфера обмена', 'rm_group' => 'Удалить группу', 'rm_role' => 'Удалить роль', +'rm_task' => '', 'rm_transmittal' => 'Удалить передачу', 'rm_transmittalitem' => 'Удалить документ', 'rm_user' => 'Удалить пользователя', @@ -1180,6 +1190,8 @@ URL: [url]', 'search_results_access_filtered' => 'Результаты поиска могут содержать объекты к которым у вас нет доступа', 'search_time' => 'Прошло: [time] с', 'seconds' => 'секунды', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Выбор', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1233,6 +1245,12 @@ URL: [url]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => 'Apache — модуль Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Настройки авторизации', 'settings_autoLoginUser' => 'Автоматический вход', 'settings_autoLoginUser_desc' => 'Использовать этого пользователя для доступа, если пользователь не вошел в систему. Такой доступ не будет создавать сеанс.', @@ -1613,6 +1631,7 @@ URL: [url]', 'splash_add_group' => 'Добавлена новая группа', 'splash_add_group_member' => 'Добавлен новый член группы', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Добавлен новый пользователь', @@ -1841,6 +1860,7 @@ URL: [url]', 'uploading_zerosize' => 'Отменена загрузка пустого файла.', 'used_discspace' => 'Занятое дисковое пространство', 'user' => 'Пользователь', +'userdata_file' => '', 'userid_groupid' => '', 'users' => 'Пользователи', 'users_and_groups' => 'Пользователи / группы', @@ -1908,6 +1928,7 @@ URL: [url]', 'workflow_state_in_use' => 'Этот статус используется процессами.', 'workflow_state_name' => 'Название', 'workflow_summary' => 'Сводка по процессу', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Сводка по пользователю', 'wrong_filetype' => '', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 5c9bbb3e3..5e371cbc8 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Skutočne si prajete odstrániť všetky súbory zložky "[foldername]" a všetkých jej podzložiek?
Buďte opatrní, táto akcia je nezvratná.', 'confirm_rm_group' => 'Skutočne si prajete odstrániť skupinu "[groupname]"?
Buďte opatrní, táto akcia je nezvratná.', 'confirm_rm_log' => 'Skutočne si prajete zmazať protokol "[logname]"?
Buďte opatrní, táto akcia je nezvratná.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'Please confirm the deletion of the transmittal.', 'confirm_rm_transmittalitem' => 'Potvrďte odstránenie', 'confirm_rm_user' => 'Skutočne si prajete odstrániť používateľa "[username]"?
Buďte opatrní, táto akcia je nezvratná.', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Aktuálna verzia', 'daily' => 'Denná', 'databasesearch' => 'Hľadať databázu', +'database_schema_version' => '', 'date' => 'Dátum', 'days' => 'dní', 'debug' => 'Ladiť', @@ -556,6 +558,7 @@ Užívateľ: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Dátum vypršania platnosti bol zmenený', 'export' => 'Exportovať', +'export_user_list_csv' => '', 'extension_archive' => 'Rozšírenie', 'extension_changelog' => 'Denník zmien', 'extension_loading' => 'Nahrávajú sa rozšírenia ...', @@ -668,6 +671,9 @@ URL: [url]', 'import_extension' => 'Import extension', 'import_fs' => 'Importovanie zo súborového systému', 'import_fs_warning' => 'This will only work for folders in the drop folder. The operation recursively imports all folders and files. Files will be released immediately.', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'Zahrnúť obsah', 'include_documents' => 'Vrátane súborov', 'include_subdirectories' => 'Vrátane podzložiek', @@ -686,6 +692,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Skopírovať zdedený zoznam riadenia prístupu', 'inherits_access_empty_msg' => 'Založiť nový zoznam riadenia prístupu', 'inherits_access_msg' => 'Prístup sa dedí.', +'installed_php_extensions' => '', 'internal_error' => 'Vnútorná chyba', 'internal_error_exit' => 'Vnútorná chyba. Nebolo možné dokončiť požiadavku.', 'invalid_access_mode' => 'Neplatný režim prístupu', @@ -801,6 +808,7 @@ URL: [url]', 'missing_checksum' => 'Chýba kontrolný súčet', 'missing_file' => 'Chýba súbor', 'missing_filesize' => 'Chýba veľkosť súboru', +'missing_php_extensions' => '', 'missing_reception' => 'Missing reception', 'missing_request_object' => 'Chýba požadovaný objekt', 'missing_transition_user_group' => 'Chýba používateľ/skupina pre prenos', @@ -960,6 +968,7 @@ If you have still problems to login, then please contact your administrator.', 'pending_revision' => 'Pending revisions', 'pending_workflows' => 'Pending workflows', 'personal_default_keywords' => 'Osobné kľúčové slová', +'php_info' => '', 'pl_PL' => 'Poľština', 'possible_substitutes' => 'Substitutes', 'preset_expires' => 'Preset expiration', @@ -1154,6 +1163,7 @@ URL: [url]', 'rm_from_clipboard' => 'Odstrániť zo schránky', 'rm_group' => 'Odstrániť túto skupinu', 'rm_role' => 'Odstrániť túto rolu', +'rm_task' => '', 'rm_transmittal' => 'Remove transmittal', 'rm_transmittalitem' => 'Odstrániť položku', 'rm_user' => 'Odstrániť tohto používateľa', @@ -1208,6 +1218,8 @@ URL: [url]', 'search_results_access_filtered' => 'Výsledky hľadania môžu obsahovať obsah, ku ktorému bol zamietnutý prístup.', 'search_time' => 'Uplynulý čas: [time] sek', 'seconds' => 'sekundy', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Výber', 'select_attrdefgrp_show' => 'Choose when to show', 'select_attribute_value' => 'Vyberte hodnotu atribútu', @@ -1266,6 +1278,12 @@ Meno: [username] 'settings_allowReviewerOnly' => 'Allow to set reviewer only', 'settings_allowReviewerOnly_desc' => 'Enable this, if it shall be allow to set just a reviewer but no approver in traditional workflow mode.', 'settings_apache_mod_rewrite' => 'Apache - Modul Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Authentication settings', 'settings_autoLoginUser' => 'Automatické prihlásenie', 'settings_autoLoginUser_desc' => 'Use this user id for accesses if the user is not already logged in. Such an access will not create a session.', @@ -1646,6 +1664,7 @@ Meno: [username] 'splash_add_group' => 'Bola pridaná nová skupina', 'splash_add_group_member' => 'New group member added', 'splash_add_role' => 'Nová rola bola pridaná', +'splash_add_task' => '', 'splash_add_to_transmittal' => 'Add to transmittal', 'splash_add_transmittal' => 'Added transmittal', 'splash_add_user' => 'Pridaný nový používateľ', @@ -1874,6 +1893,7 @@ URL: [url]', 'uploading_zerosize' => 'Nahrávate prázdny súbor. Nahrávanie je zrušené.', 'used_discspace' => 'Využitý priestor na disku', 'user' => 'Používateľ', +'userdata_file' => '', 'userid_groupid' => 'Používateľ id/Skupina id', 'users' => 'Používateľ', 'users_and_groups' => 'Používatelia/Skupiny', @@ -1941,6 +1961,7 @@ URL: [url]', 'workflow_state_in_use' => 'This state is currently used by workflows.', 'workflow_state_name' => 'Názov', 'workflow_summary' => 'Workflow summary', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'At least one of the transitions has neither a user nor a group!', 'workflow_user_summary' => 'User summary', 'wrong_filetype' => '', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index b3ef65ab4..1575efc08 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Vill du verkligen ta bort alla filer i katalogen "[foldername]" och i katalogens undermappar?
OBS! Filerna kan inte återskapas!', 'confirm_rm_group' => 'Vill du verkligen ta bort gruppen "[groupname]"?
OBS! Gruppen kan inte återskapas!', 'confirm_rm_log' => 'Vill du verkligen ta bort loggfilen "[logname]"?
OBS! Loggfilen kan inte återskapas!', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => 'Vänligen bekräfta radering av meddelande.', 'confirm_rm_transmittalitem' => 'Bekräfta radering', 'confirm_rm_user' => 'Vill du verkligen ta bort användaren "[username]"?
OBS! Åtgärden kan inte ångras!', @@ -319,6 +320,7 @@ URL: [url]', 'current_version' => 'Aktuell version', 'daily' => 'Dagligen', 'databasesearch' => 'Sök databas', +'database_schema_version' => '', 'date' => 'Datum', 'days' => 'dagar', 'debug' => 'Felsökning', @@ -550,6 +552,7 @@ Användare: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Utgångsdatum ändrat', 'export' => 'Exportera', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => '', 'extension_loading' => '', @@ -655,6 +658,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => 'Import från filsystem', 'import_fs_warning' => 'Detta fungerar endast för kataloger i mellanlagringsmappen. Filer och mappar får godkänd status direkt efter importen.', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'Inkudera innehåll', 'include_documents' => 'Inkludera dokument', 'include_subdirectories' => 'Inkludera underkataloger', @@ -673,6 +679,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Kopiera lista för behörighetsarv', 'inherits_access_empty_msg' => 'Börja med tom behörighetslista', 'inherits_access_msg' => 'Behörigheten har ärvts.', +'installed_php_extensions' => '', 'internal_error' => 'Internt fel', 'internal_error_exit' => 'Internt fel. Förfrågan kunde inte utföras.', 'invalid_access_mode' => 'Ogiltig behörighetsnivå', @@ -788,6 +795,7 @@ URL: [url]', 'missing_checksum' => 'Checksumma saknas', 'missing_file' => 'Fil saknas', 'missing_filesize' => 'Filstorlek saknas', +'missing_php_extensions' => '', 'missing_reception' => 'Mottagande saknas', 'missing_request_object' => 'Begärt objekt saknas', 'missing_transition_user_group' => 'Användare/grupp saknas för övergång', @@ -944,6 +952,7 @@ Om du fortfarande har problem med inloggningen, kontakta administratören.', 'pending_revision' => 'Förestående revisioner', 'pending_workflows' => 'Förestående arbetsflöden', 'personal_default_keywords' => 'Personlig nyckelordslista', +'php_info' => '', 'pl_PL' => 'Polska', 'possible_substitutes' => 'Alternativ', 'preset_expires' => 'Förinställd utgångstid', @@ -1127,6 +1136,7 @@ URL: [url]', 'rm_from_clipboard' => 'Ta bort från Urklipp', 'rm_group' => 'Ta bort denna grupp', 'rm_role' => 'Ta bort denna roll', +'rm_task' => '', 'rm_transmittal' => '', 'rm_transmittalitem' => '', 'rm_user' => 'Ta bort denna användare', @@ -1181,6 +1191,8 @@ URL: [url]', 'search_results_access_filtered' => 'Sökresultatet kan innehålla filer/dokument som du inte har behörighet att öppna.', 'search_time' => 'Förfluten tid: [time] sek', 'seconds' => 'sekunder', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Urval', 'select_attrdefgrp_show' => 'Välj visingsalternativ', 'select_attribute_value' => '', @@ -1239,6 +1251,12 @@ Kommentar: [comment]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Inställningar för autentisering', 'settings_autoLoginUser' => 'Automatisk inloggning', 'settings_autoLoginUser_desc' => 'Använd detta användar-ID för åtkomst om inte användaren redan är inloggad. Denna typ av inloggning kommer inte att skapa en session.', @@ -1619,6 +1637,7 @@ Kommentar: [comment]', 'splash_add_group' => 'Ny grupp tillagd', 'splash_add_group_member' => 'Ny gruppmedlem tillagt', 'splash_add_role' => 'Lägg till ny roll', +'splash_add_task' => '', 'splash_add_to_transmittal' => 'Lägg till meddelande', 'splash_add_transmittal' => 'Meddelande tillagt', 'splash_add_user' => 'Ny användare tillagd', @@ -1847,6 +1866,7 @@ URL: [url]', 'uploading_zerosize' => 'Uppladdning av tom fil. Uppladdningen avbryts.', 'used_discspace' => 'Använt lagringsutrymme', 'user' => 'Användare', +'userdata_file' => '', 'userid_groupid' => 'Användar-ID/Grupp-ID', 'users' => 'Användare', 'users_and_groups' => 'Användare/Grupper', @@ -1914,6 +1934,7 @@ URL: [url]', 'workflow_state_in_use' => 'Denna status används i ett arbetsflöde.', 'workflow_state_name' => 'Namn', 'workflow_summary' => 'Sammanfattning arbetsflöde', +'workflow_title' => '', 'workflow_transition_without_user_group' => 'Minst en av övergångarna i arbetsflödet saknar användare eller grupp.', 'workflow_user_summary' => 'Sammanfattning användare', 'wrong_filetype' => '', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index c4ab29d9f..765a443ab 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -19,14 +19,14 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1107), aydin (83) +// Translators: Admin (1109), aydin (83) $text = array( '2_factor_auth' => 'İki faktörlü yetkilendirme', '2_factor_auth_info' => '', '2_fact_auth_secret' => '', 'accept' => 'Kabul', -'access_control' => '', +'access_control' => 'Erişim Kontrolü', 'access_control_is_off' => '', 'access_denied' => 'Erişim engellendi.', 'access_inheritance' => 'Devredilen Erişim', @@ -288,6 +288,7 @@ URL: [url]', 'confirm_rm_folder_files' => '"[foldername]" klasöründeki tüm dosyaları ve alt klasörleri silmeyi onaylıyor musunuz?
Dikkatli olun: Bu eylemin geri dönüşü yoktur.', 'confirm_rm_group' => '"[groupname]" grubunu silmeyi onaylıyor musunuz?
Dikkatli olun: Bu eylemin geri dönüşü yoktur.', 'confirm_rm_log' => '"[logname]" log dosyasını silmeyi onaylıyor musunuz?
Dikkatli olun: Bu eylemin geri dönüşü yoktur.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => '', 'confirm_rm_user' => '"[username]" kullanıcısını silmeyi onaylıyor musunuz?
Dikkatli olun: Bu eylemin geri dönüşü yoktur.', @@ -312,6 +313,7 @@ URL: [url]', 'current_version' => 'Mevcut versiyon', 'daily' => 'Günlük', 'databasesearch' => 'Veritabanı arama', +'database_schema_version' => '', 'date' => 'Tarih', 'days' => 'gün', 'debug' => '', @@ -538,6 +540,7 @@ Kullanıcı: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Bitiş tarihi değişti', 'export' => '', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => 'Değişiklik Listesi', 'extension_loading' => 'Uzantı yüklendi', @@ -643,6 +646,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => 'dosya sisteminden getir', 'import_fs_warning' => '', +'import_users' => 'Kullanıcıları İçe Aktar', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => '', 'include_documents' => 'Dokümanları kapsa', 'include_subdirectories' => 'Alt klasörleri kapsa', @@ -661,6 +667,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Devralınan erişim listesini kopyala', 'inherits_access_empty_msg' => 'Boş erişim listesiyle başla', 'inherits_access_msg' => 'Erişim devralınıyor', +'installed_php_extensions' => '', 'internal_error' => 'İç hata', 'internal_error_exit' => 'İç hata. İstek tamamlanmadı.', 'invalid_access_mode' => 'Gereçsiz Erişim Modu', @@ -776,6 +783,7 @@ URL: [url]', 'missing_checksum' => 'Sağlama toplamı eksik', 'missing_file' => '', 'missing_filesize' => 'Dosya boyutu eksik', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => 'Geçiş için kullanıcı/grup bilgisi eksik', @@ -937,6 +945,7 @@ Giriş yaparken halen sorun yaşıyorsanız lütfen sistem yöneticinizle görü 'pending_revision' => '', 'pending_workflows' => '', 'personal_default_keywords' => 'Kişisel anahtar kelimeler', +'php_info' => '', 'pl_PL' => 'Polonyaca', 'possible_substitutes' => '', 'preset_expires' => 'Son Kullanım Tarihi Tanımla', @@ -1098,6 +1107,7 @@ URL: [url]', 'rm_from_clipboard' => 'Panodan sil', 'rm_group' => 'Bu grubu sil', 'rm_role' => '', +'rm_task' => '', 'rm_transmittal' => '', 'rm_transmittalitem' => '', 'rm_user' => 'Bu kullanıcıyı sil', @@ -1152,6 +1162,8 @@ URL: [url]', 'search_results_access_filtered' => 'Arama sonuçları içerisinde erişimin kısıtlandığı içerik bulunabilir.', 'search_time' => 'Arama süresi: [time] sn.', 'seconds' => 'saniye', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Seçim', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1205,6 +1217,12 @@ URL: [url]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Yetkilendirme ayarları', 'settings_autoLoginUser' => 'otomatik giriş', 'settings_autoLoginUser_desc' => '', @@ -1585,6 +1603,7 @@ URL: [url]', 'splash_add_group' => 'Yeni grup eklendi', 'splash_add_group_member' => 'Yeni grup üyesi eklendi', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Yeni kullanıcı eklendi', @@ -1813,6 +1832,7 @@ URL: [url]', 'uploading_zerosize' => 'Boş bir dosya yükleniyor. Yükleme iptal edildi.', 'used_discspace' => 'Kullanılan disk alanı', 'user' => 'Kullanıcı', +'userdata_file' => '', 'userid_groupid' => '', 'users' => 'Kullanıcı', 'users_and_groups' => 'Kullanıcılar/Gruplar', @@ -1880,6 +1900,7 @@ URL: [url]', 'workflow_state_in_use' => 'Bu durum iş akışı tarafından kullanımda.', 'workflow_state_name' => 'İsim', 'workflow_summary' => 'İş akış özeti', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Kullanıcı özeti', 'wrong_filetype' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index f8bf26bd9..c5ae5705d 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -294,6 +294,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Видалити в каталозі «[foldername]» всі файли і підкаталоги?
Дія незворотня', 'confirm_rm_group' => 'Видалити групу «[groupname]»?
Дія незворотня', 'confirm_rm_log' => 'Видалити журнал «[logname]»?
Дія незворотня', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => 'Підтвердити видалення', 'confirm_rm_user' => 'Видалити користувача «[username]»?
Дія незворотня', @@ -318,6 +319,7 @@ URL: [url]', 'current_version' => 'Поточна версія', 'daily' => 'Щоденно', 'databasesearch' => 'Пошук по БД', +'database_schema_version' => '', 'date' => 'Дата', 'days' => 'дні', 'debug' => '', @@ -544,6 +546,7 @@ URL: [url]', URL: [url]', 'expiry_changed_email_subject' => '[sitename]: зміна дати терміну виконання для «[name]»', 'export' => 'Експорт', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => '', 'extension_loading' => '', @@ -649,6 +652,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => 'Імпортувати з файлової системи', 'import_fs_warning' => '', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => 'Включно з вмістом', 'include_documents' => 'Включно з документами', 'include_subdirectories' => 'Включно з підкаталогами', @@ -667,6 +673,7 @@ URL: [url]', 'inherits_access_copy_msg' => 'Скопіювати успадкований список', 'inherits_access_empty_msg' => 'Почати з порожнього списку доступу', 'inherits_access_msg' => 'Доступ успадковано.', +'installed_php_extensions' => '', 'internal_error' => 'Внутрішня помилка', 'internal_error_exit' => 'Внутрішня помилка. Неможливо виконати запит.', 'invalid_access_mode' => 'Невірний рівень доступу', @@ -782,6 +789,7 @@ URL: [url]', 'missing_checksum' => 'Відсутня контрольна сума', 'missing_file' => 'Відсутній файл', 'missing_filesize' => 'Відсутній розмір файлу', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => 'Відсутній користувач/група для зміни.', @@ -938,6 +946,7 @@ URL: [url]', 'pending_revision' => '', 'pending_workflows' => 'Очікує процес', 'personal_default_keywords' => 'Особистий список ключових слів', +'php_info' => '', 'pl_PL' => 'Polish', 'possible_substitutes' => 'Підстановки', 'preset_expires' => '', @@ -1119,6 +1128,7 @@ URL: [url]', 'rm_from_clipboard' => 'Видалити з буферу обміну', 'rm_group' => 'Видалити групу', 'rm_role' => '', +'rm_task' => '', 'rm_transmittal' => 'Видалити передачу', 'rm_transmittalitem' => 'Видалити елемент передачі', 'rm_user' => 'Видалити користувача', @@ -1173,6 +1183,8 @@ URL: [url]', 'search_results_access_filtered' => 'Результати пошуку можуть містити об\'єкти, до яких у вас немає доступу', 'search_time' => 'Пройшло: [time] с', 'seconds' => 'секунди', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => 'Вибір', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1226,6 +1238,12 @@ URL: [url]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => 'Apache — модуль Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => 'Налаштування авторизації', 'settings_autoLoginUser' => 'Автоматичний вхід', 'settings_autoLoginUser_desc' => 'Використовувати цього користувача для доступу, якщо користувач не увійшов в систему. Такий доступ не буде створювати сеанс.', @@ -1606,6 +1624,7 @@ URL: [url]', 'splash_add_group' => 'Додана нова група', 'splash_add_group_member' => 'Додано нового члена групи', 'splash_add_role' => '', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Додано нового користувача', @@ -1834,6 +1853,7 @@ URL: [url]', 'uploading_zerosize' => 'Відміна завантаження порожнього файлу.', 'used_discspace' => 'Зайнятий дисковий простір', 'user' => 'Користувач', +'userdata_file' => '', 'userid_groupid' => '', 'users' => 'Користувачі', 'users_and_groups' => 'Користувачі / групи', @@ -1901,6 +1921,7 @@ URL: [url]', 'workflow_state_in_use' => 'Цей статус використовується в процесах.', 'workflow_state_name' => 'Назва', 'workflow_summary' => 'Підсумки по процесу', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Підсумки по користувачу', 'wrong_filetype' => '', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 10cf8e126..fb09cff16 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (770), archonwang (469), fengjohn (5), yang86 (1) +// Translators: Admin (772), archonwang (469), fengjohn (5), yang86 (1) $text = array( '2_factor_auth' => '双重认证', @@ -72,7 +72,7 @@ URL: [url]', 'add_subfolder' => '添加子文件夹', 'add_task' => '', 'add_to_clipboard' => '复制', -'add_to_transmittal' => '', +'add_to_transmittal' => '添加到传送', 'add_transmittal' => '', 'add_user' => '添加新用户', 'add_user_to_group' => '添加用户到组', @@ -286,6 +286,7 @@ URL: [url]', 'confirm_rm_folder_files' => '您确定要删除"[foldername]" 中所有文件及其子文件夹?
请注意:此动作执行后不能撤销.', 'confirm_rm_group' => '您确定要删除"[groupname]"组?
请注意:此动作执行后不能撤销.', 'confirm_rm_log' => '您确定要删除"[logname]"日志文件?
请注意:此动作执行后不能撤销.', +'confirm_rm_task' => '', 'confirm_rm_transmittal' => '', 'confirm_rm_transmittalitem' => '确认删除', 'confirm_rm_user' => '您确定要删除"[username]"用户?
请注意:此动作执行后不能撤销.', @@ -312,6 +313,7 @@ URL: [url]', 'current_version' => '当前版本', 'daily' => '天', 'databasesearch' => '数据库搜索', +'database_schema_version' => '', 'date' => '日期', 'days' => '天', 'debug' => '调试', @@ -534,6 +536,7 @@ URL: [url]', 'expiry_changed_email_body' => '', 'expiry_changed_email_subject' => '', 'export' => '导出', +'export_user_list_csv' => '', 'extension_archive' => '', 'extension_changelog' => '更新日志', 'extension_loading' => '加载扩展', @@ -639,6 +642,9 @@ URL: [url]', 'import_extension' => '', 'import_fs' => '从文件系统导入', 'import_fs_warning' => '这将只适用于拖动文件夹。该操作将递归导入所有文件夹和文件。文件将立即释放。', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', 'include_content' => '', 'include_documents' => '包含文档', 'include_subdirectories' => '包含子目录', @@ -657,6 +663,7 @@ URL: [url]', 'inherits_access_copy_msg' => '复制继承访问权限列表', 'inherits_access_empty_msg' => '从访问权限空列表开始', 'inherits_access_msg' => '继承访问权限', +'installed_php_extensions' => '', 'internal_error' => '内部错误', 'internal_error_exit' => '内部错误.无法完成请求.离开系统', 'invalid_access_mode' => '无效访问模式', @@ -772,6 +779,7 @@ URL: [url]', 'missing_checksum' => '缺失校验', 'missing_file' => '', 'missing_filesize' => '缺失文件大小', +'missing_php_extensions' => '', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => '', @@ -931,6 +939,7 @@ URL: [url]', 'pending_revision' => '待处理的修订', 'pending_workflows' => '待处理的工作流', 'personal_default_keywords' => '用户关键字', +'php_info' => '', 'pl_PL' => '波兰语', 'possible_substitutes' => '', 'preset_expires' => '预设失效时间', @@ -1089,6 +1098,7 @@ URL: [url]', 'rm_from_clipboard' => '从剪切板删除', 'rm_group' => '删除该组', 'rm_role' => '删除角色', +'rm_task' => '', 'rm_transmittal' => '', 'rm_transmittalitem' => '移除项目', 'rm_user' => '删除该用户', @@ -1143,6 +1153,8 @@ URL: [url]', 'search_results_access_filtered' => '搜索到得结果中可能包含受限访问的文档', 'search_time' => '耗时:[time]秒', 'seconds' => '秒', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => '选择', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1201,6 +1213,12 @@ URL: [url]', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', 'settings_apache_mod_rewrite' => '', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', 'settings_Authentication' => '授权管理', 'settings_autoLoginUser' => '自动登陆', 'settings_autoLoginUser_desc' => '', @@ -1581,6 +1599,7 @@ URL: [url]', 'splash_add_group' => '组已添加', 'splash_add_group_member' => '组成员已添加', 'splash_add_role' => '添加新角色', +'splash_add_task' => '', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => '用户已添加', @@ -1800,6 +1819,7 @@ URL: [url]', 'uploading_zerosize' => '上传失败!请检查是否没有选择上传的文件。', 'used_discspace' => '使用磁盘空间', 'user' => '用户', +'userdata_file' => '', 'userid_groupid' => '用户ID/组ID', 'users' => '用户', 'users_and_groups' => '用户/组', @@ -1816,7 +1836,7 @@ URL: [url]', 'use_comment_of_document' => '文档注释', 'use_default_categories' => '默认分类', 'use_default_keywords' => '使用预定义关键字', -'valid_till' => '', +'valid_till' => '有效期至', 'version' => '版本', 'versioning_file_creation' => '创建版本文件', 'versioning_file_creation_warning' => '通过此操作,您可以一个包含整个DMS文件夹的版本信息文件. 版本文件一经创建,每个文件都将保存到文件夹中.', @@ -1867,6 +1887,7 @@ URL: [url]', 'workflow_state_in_use' => '当前状态在工作流中已被使用。', 'workflow_state_name' => '状态名称', 'workflow_summary' => '工作流概述', +'workflow_title' => '', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => '用户概述', 'wrong_filetype' => '', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 5b8b4ee9a..c06615fb1 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -22,13 +22,13 @@ // Translators: Admin (2424) $text = array( -'2_factor_auth' => '', -'2_factor_auth_info' => '', -'2_fact_auth_secret' => '', +'2_factor_auth' => '2階段認證', +'2_factor_auth_info' => '此系統強制執行2階段身份驗證。您將需要在手機上使用Google Authenticator。在下面,您可以看到兩個QR碼。正確的是您當前的秘密。在左側,您可以設置一個新的秘密。如果您設置了新的機密,請確保使用Google Authenticator重新掃描它。', +'2_fact_auth_secret' => '秘密', 'accept' => '接受', -'access_control' => '', -'access_control_is_off' => '', -'access_denied' => '拒絕訪問', +'access_control' => '存取控制', +'access_control_is_off' => '進階存取控制(ACL)關閉', +'access_denied' => '拒絕存取', 'access_inheritance' => '繼承存取權限', 'access_mode' => '訪問模式', 'access_mode_all' => '所有權限', @@ -36,147 +36,172 @@ $text = array( 'access_mode_read' => '唯讀許可權', 'access_mode_readwrite' => '讀寫許可權', 'access_permission_changed_email' => '許可權已改變', -'access_permission_changed_email_body' => '許可權已變更 -文檔: [name] -上級資料夾: [folder_path] -用戶: [username] +'access_permission_changed_email_body' => '許可權已變更 +文件: [name] +上級資料夾: [folder_path] +使用者: [username] URL: [url]', 'access_permission_changed_email_subject' => '[sitename]: [name] - 許可權已變更', 'according_settings' => '相應的設置', 'action' => '執行', 'actions' => '動作', -'action_approve' => '', -'action_complete' => '', -'action_is_complete' => '', -'action_is_not_complete' => '', +'action_approve' => '批准', +'action_complete' => '完成', +'action_is_complete' => '已完成', +'action_is_not_complete' => '未完成', 'action_reject' => '拒絕', 'action_review' => '檢查', -'action_revise' => '', -'add' => '添加', +'action_revise' => '修改', +'add' => '新增', 'add_approval' => '提交審核', -'add_attrdefgroup' => '', -'add_document' => '添加文檔', -'add_document_link' => '添加連結', -'add_document_notify' => '', -'add_doc_reviewer_approver_warning' => '備註:如果沒有指派校對人或審核人那麼文檔將被自動標注為發佈', -'add_doc_workflow_warning' => '', -'add_event' => '添加事件', +'add_attrdefgroup' => '新增新的屬性組', +'add_document' => '新增文件', +'add_document_link' => '新增連結', +'add_document_notify' => '加入通知', +'add_doc_reviewer_approver_warning' => '備註:如果沒有指派校對人或審核人那麼文件將被自動標注為發佈', +'add_doc_workflow_warning' => '備註:如果未分配工作流程,則文件會自動標記為已發布。', +'add_event' => '新增事件', 'add_group' => '增加新組', -'add_member' => '添加成員', -'add_multiple_documents' => '添加多個檔', -'add_multiple_files' => '批量添加文檔(文檔名無法手動修改)', -'add_receipt' => '', +'add_member' => '新增成員', +'add_multiple_documents' => '新增多個檔', +'add_multiple_files' => '批量新增文件(文件名無法手動修改)', +'add_receipt' => '確認接待', 'add_review' => '提交校對', -'add_revision' => '', -'add_role' => '', -'add_subfolder' => '添加子資料夾', -'add_task' => '', +'add_revision' => '加入修正', +'add_role' => '新增角色', +'add_subfolder' => '新增子資料夾', +'add_task' => '為此排程新增新任務', 'add_to_clipboard' => '複製', -'add_to_transmittal' => '', -'add_transmittal' => '', -'add_user' => '添加新用戶', -'add_user_to_group' => '添加新用戶至群組', -'add_workflow' => '添加工作流程', -'add_workflow_action' => '添加流程動作', -'add_workflow_state' => '添加流程狀態', +'add_to_transmittal' => '新增到傳輸', +'add_transmittal' => '新增傳輸', +'add_user' => '新增新使用者', +'add_user_to_group' => '新增新使用者至群組', +'add_workflow' => '新增工作流程', +'add_workflow_action' => '新增流程動作', +'add_workflow_state' => '新增流程狀態', 'admin' => '管理員', 'admin_tools' => '管理員工具', 'all' => '所有', 'all_categories' => '所有分類', -'all_documents' => '所有文檔', +'all_documents' => '所有文件', 'all_pages' => '所有頁面', -'all_users' => '所有用戶', +'all_users' => '所有使用者', 'already_subscribed' => '已經訂閱', 'and' => '和', 'apply' => '接受', -'approvals_accepted' => '', -'approvals_accepted_latest' => '', -'approvals_and_reviews_accepted' => '', -'approvals_and_reviews_not_touched' => '', -'approvals_and_reviews_rejected' => '', -'approvals_not_touched' => '', -'approvals_not_touched_latest' => '', -'approvals_rejected' => '', -'approvals_rejected_latest' => '', -'approvals_without_group' => '', -'approvals_without_user' => '', +'approvals_accepted' => '[no_approvals]個批准已被接受', +'approvals_accepted_latest' => '(最新版本為[no_approvals])', +'approvals_and_reviews_accepted' => '[no_approvals]個批准和[no_reviews]個評論已被接受', +'approvals_and_reviews_not_touched' => '未觸及[no_approvals]個批准和[no_reviews]條評論', +'approvals_and_reviews_rejected' => '[no_approvals]個批准和[no_reviews]條評論已被拒絕', +'approvals_not_touched' => '[no_approvals]個批准沒有被觸及', +'approvals_not_touched_latest' => '(最新版本為[no_approvals])', +'approvals_rejected' => '[no_approvals]個批准已被拒絕', +'approvals_rejected_latest' => '(最新版本為[no_approvals])', +'approvals_without_group' => '沒有小組批准', +'approvals_without_user' => '沒有使用者批准', 'approval_deletion_email' => '審核請求已被刪除', -'approval_deletion_email_body' => '', -'approval_deletion_email_subject' => '', -'approval_file' => '', +'approval_deletion_email_body' => '批准請求已刪除 +文件:[name] +版本:[version] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'approval_deletion_email_subject' => '[sitename]:[name]-批准請求已刪除', +'approval_file' => '檔案', 'approval_group' => '審核組', 'approval_log' => '審批記錄', 'approval_request_email' => '審核請求', -'approval_request_email_body' => '', -'approval_request_email_subject' => '', +'approval_request_email_body' => '批准請求 +文件:[name] +版本:[version] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'approval_request_email_subject' => '[sitename]:[name]-批准請求', 'approval_status' => '審核狀態', 'approval_submit_email' => '', -'approval_submit_email_body' => '', +'approval_submit_email_body' => '批准文件 +文件:[name] +版本:[version] +父文件夾:[folder_path] +狀態:[status] +評論:[comment] +使用者:[username] +網址:[url]', 'approval_submit_email_subject' => '[sitename]: [name] - 提交審核', 'approval_summary' => '審核匯總', 'approval_update_failed' => '錯誤:更新審核狀態.更新失敗.', 'approvers' => '審核人', -'approver_already_assigned' => '', -'approver_already_removed' => '', +'approver_already_assigned' => '使用者已被分配為批准者。', +'approver_already_removed' => '批准人已經從批准過程中刪除或已經提交了批准。', 'april' => '四 月', -'archive' => '', +'archive' => '封存', 'archive_creation' => '創建存檔', -'archive_creation_warning' => '通過此操作您可以創建一個包含這個DMS(文檔管理系統)的資料檔案夾。之後,所有文檔都將保存到您伺服器的資料檔案夾中.
警告:如果所創建文檔名為非數字的,那麼將在伺服器備份中不可用', +'archive_creation_warning' => '通過此操作您可以創建一個包含這個DMS(文件管理系統)的資料檔案夾。之後,所有文件都將保存到您伺服器的資料檔案夾中.
警告:如果所創建文件名為非數字的,那麼將在伺服器備份中不可用', 'ar_EG' => '阿拉伯語', 'assign_approvers' => '指派審核人', -'assign_recipients' => '', +'assign_recipients' => '分配收件人', 'assign_reviewers' => '指派校對人', 'assign_user_property_to' => '分配使用者屬性給', 'assumed_released' => '假定發佈', -'attrdefgroup_management' => '', -'attrdefgrp_show_detail' => '', -'attrdefgrp_show_list' => '', -'attrdefgrp_show_search' => '', -'attrdefgrp_show_searchlist' => '', -'attrdef_exists' => '', -'attrdef_info' => '', -'attrdef_in_use' => '', +'attrdefgroup_management' => '屬性組管理', +'attrdefgrp_show_detail' => '細節', +'attrdefgrp_show_list' => '列表', +'attrdefgrp_show_search' => '搜尋', +'attrdefgrp_show_searchlist' => '搜尋結果', +'attrdef_exists' => '屬性定義已存在', +'attrdef_info' => '資訊', +'attrdef_in_use' => '屬性定義仍在使用', 'attrdef_management' => '屬性定義管理', 'attrdef_maxvalues' => '最大值', 'attrdef_minvalues' => '最小值', -'attrdef_min_greater_max' => '', +'attrdef_min_greater_max' => '最小數值大於最大數值', 'attrdef_multiple' => '允許多個值', -'attrdef_multiple_needs_valueset' => '', -'attrdef_must_be_multiple' => '', +'attrdef_multiple_needs_valueset' => '具有多個值的屬性定義需要設置值。', +'attrdef_must_be_multiple' => '屬性必須具有多個值,但不能設置多個值', 'attrdef_name' => '名稱', -'attrdef_noname' => '', +'attrdef_noname' => '屬性定義的名稱遺失', 'attrdef_objtype' => '類別', 'attrdef_regex' => '規則運算式', 'attrdef_type' => '類型', 'attrdef_type_boolean' => '布林數', 'attrdef_type_date' => '日期', -'attrdef_type_email' => '', +'attrdef_type_email' => '信箱', 'attrdef_type_float' => '浮點數', 'attrdef_type_int' => '整數', 'attrdef_type_string' => '字串', -'attrdef_type_url' => '', +'attrdef_type_url' => '網址', 'attrdef_valueset' => '屬性值', 'attributes' => '屬性', -'attribute_changed_email_body' => '', -'attribute_changed_email_subject' => '', +'attribute_changed_email_body' => '屬性已更改 +文件:[name] +版本:[version] +屬性:[attribute_name] +舊值:[attribute_old_value] +新值:[attribute_new_value] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'attribute_changed_email_subject' => '[sitename]:[name]-屬性已更改', 'attribute_count' => '使用次數', 'attribute_value' => '屬性值', -'attribute_value_not_in_valueset' => '', -'attr_malformed_boolean' => '', -'attr_malformed_date' => '', -'attr_malformed_email' => '', -'attr_malformed_float' => '', -'attr_malformed_int' => '', -'attr_malformed_url' => '', -'attr_max_values' => '', -'attr_min_values' => '', -'attr_not_in_valueset' => '', -'attr_no_regex_match' => '', -'attr_validation_error' => '', -'at_least_n_users_of_group' => '', +'attribute_value_not_in_valueset' => '沒有設定值', +'attr_malformed_boolean' => '屬性\'[attrname] \'的屬性值\'[value] \'不是有效的布林值。', +'attr_malformed_date' => '屬性\'[attrname] \'的屬性值\'[value] \'不是有效日期。', +'attr_malformed_email' => '屬性\'[attrname] \'的屬性值\'[value] \'不是有效的URL。', +'attr_malformed_float' => '屬性\'[attrname] \'的屬性值\'[value] \'不是有效的浮點數。', +'attr_malformed_int' => '屬性\'[attrname] \'的屬性值\'[value] \'不是有效的整數。', +'attr_malformed_url' => '屬性\'[attrname] \'的屬性值\'[value] \'不是有效的URL。', +'attr_max_values' => '超過了屬性[attrname]的最大數量。', +'attr_min_values' => '沒有達到屬性[attrname]的最小數量。', +'attr_not_in_valueset' => '屬性\'[attrname] \'的屬性值\'[value] \'不包含在值集中。', +'attr_no_regex_match' => '屬性\'[attrname] \'的屬性值\'[value] \'與正規表式法\'[regex] \'不匹配', +'attr_validation_error' => '屬性\'[attrname] \'的值\'[value] \'無效。', +'at_least_n_users_of_group' => '[group]的至少[number_of_users]個使用者', 'august' => '八 月', -'authentication' => '', -'authentication_failed' => '', +'authentication' => '認證方式', +'authentication_failed' => '認證失敗', 'author' => '作者', 'automatic_status_update' => '自動狀態變化', 'back' => '返回', @@ -188,116 +213,118 @@ URL: [url]', 'bg_BG' => '保加利亞語', 'browse' => '瀏覽', 'calendar' => '日曆', -'calendar_week' => '', +'calendar_week' => '日曆週', 'cancel' => '取消', -'cannot_assign_invalid_state' => '不能修改文檔的最終狀態', -'cannot_change_final_states' => '警告:您不能更改文檔的拒絕、過期、待校對、或是待審核等狀態', -'cannot_delete_user' => '', +'cannot_assign_invalid_state' => '不能修改文件的最終狀態', +'cannot_change_final_states' => '警告:您不能更改文件的拒絕、過期、待校對、或是待審核等狀態', +'cannot_delete_user' => '不能刪除使用者', 'cannot_delete_yourself' => '不能刪除自己', 'cannot_move_root' => '錯誤:不能移動根目錄', 'cannot_retrieve_approval_snapshot' => '無法檢索到該檔版本的審核快照.', 'cannot_retrieve_review_snapshot' => '無法檢索到該檔版本的校對快照.', 'cannot_rm_root' => '錯誤:不能刪除根目錄.', 'categories' => '分類', -'categories_loading' => '', +'categories_loading' => '請等待,直到載入類別列表...', 'category' => '分類', -'category_exists' => '', +'category_exists' => '分類已經存在', 'category_filter' => '指定分類', -'category_info' => '', +'category_info' => '資訊', 'category_in_use' => '已有檔使用此分類', -'category_noname' => '', +'category_noname' => '沒有分類名稱', 'ca_ES' => '加泰羅尼亞語', -'changelog_loading' => '', +'changelog_loading' => '請等待,直到加載更改日誌為止……', 'change_assignments' => '分配變更', 'change_password' => '變更密碼', 'change_password_message' => '變更密碼提示', -'change_recipients' => '', -'change_revisors' => '', +'change_recipients' => '設置收件人', +'change_revisors' => '設置修訂者', 'change_status' => '變更狀態', 'charts' => '圖表', 'chart_docsaccumulated_title' => '每月文件數量', -'chart_docspercategory_title' => '', -'chart_docspermimetype_title' => '', +'chart_docspercategory_title' => '每一分類的文件數', +'chart_docspermimetype_title' => '每一 mime-type 的文件數', 'chart_docspermonth_title' => '每月新增文件', -'chart_docsperstatus_title' => '', -'chart_docsperuser_title' => '用戶文件比例圖表', +'chart_docsperstatus_title' => '每一文件的狀態', +'chart_docsperuser_title' => '使用者文件比例圖表', 'chart_selection' => '選擇圖表', -'chart_sizeperuser_title' => '', -'checkedout_file_has_different_version' => '', -'checkedout_file_has_disappeared' => '', -'checkedout_file_is_unchanged' => '', -'checkin_document' => '', -'checkoutpath_does_not_exist' => '', -'checkout_document' => '', -'checkout_is_disabled' => '', +'chart_sizeperuser_title' => '每一使用者的空間', +'checkedout_file_has_different_version' => '簽出的版本與當前版本不同。簽入將不會更新文件。', +'checkedout_file_has_disappeared' => '簽出文件的文件已消失。無法辦理入住手續。', +'checkedout_file_is_unchanged' => '簽出文件的文件仍保持不變。無法辦理入住手續。如果不計劃任何修改,則可以重置簽出狀態。', +'checkin_document' => '簽入', +'checkoutpath_does_not_exist' => '簽出路徑不存在', +'checkout_document' => '簽出', +'checkout_is_disabled' => '在配置中禁用了簽出文件功能。', 'choose_attrdef' => '請選擇屬性', -'choose_attrdefgroup' => '', +'choose_attrdefgroup' => '選擇屬性組', 'choose_category' => '請選擇', 'choose_group' => '選擇組別', -'choose_role' => '', -'choose_target_category' => '', -'choose_target_document' => '選擇文檔', +'choose_role' => '選擇角色', +'choose_target_category' => '選擇類別', +'choose_target_document' => '選擇文件', 'choose_target_file' => '選擇檔', 'choose_target_folder' => '選擇資料夾', -'choose_user' => '選擇用戶', +'choose_user' => '選擇使用者', 'choose_workflow' => '選擇流程', 'choose_workflow_action' => '選擇流程行為', 'choose_workflow_state' => '選擇流程狀態', -'class_name' => '', +'class_name' => '類別名稱', 'clear_cache' => '清除緩存', 'clear_clipboard' => '清除剪貼簿', -'clear_password' => '', +'clear_password' => '清除密碼', 'clipboard' => '剪貼簿', 'close' => '關閉', -'command' => '', +'command' => '指令', 'comment' => '說明', 'comment_changed_email' => '', 'comment_for_current_version' => '版本說明', 'configure_extension' => '配置擴充套件', -'confirm_clear_cache' => '', +'confirm_clear_cache' => '您真的要清除緩存嗎?這將刪除所有預先計算的預覽圖像。', 'confirm_create_fulltext_index' => '確認已新增之全文索引', -'confirm_move_document' => '', -'confirm_move_folder' => '', +'confirm_move_document' => '請確認移動文件。', +'confirm_move_folder' => '請確認移動文件夾。', 'confirm_pwd' => '確認密碼', -'confirm_rm_attr_value' => '', -'confirm_rm_backup' => '您確定要刪除"[arkname]"備份文檔?
請注意:此動作執行後不能撤銷.', -'confirm_rm_document' => '您確定要刪除"[documentname]"文檔?
請注意:此動作執行後不能撤銷.', +'confirm_rm_attr_value' => '您是否真的要刪除屬性值?', +'confirm_rm_backup' => '您確定要刪除"[arkname]"備份文件?
請注意:此動作執行後不能撤銷.', +'confirm_rm_document' => '您確定要刪除"[documentname]"文件?
請注意:此動作執行後不能撤銷.', 'confirm_rm_dump' => '您確定要刪除"[dumpname]"轉儲檔?
請注意:此動作執行後不能撤銷.', 'confirm_rm_event' => '您確定要刪除"[name]"事件?
請注意:此動作執行後不能撤銷.', -'confirm_rm_file' => '您確定要刪除"[documentname]"文檔中的"[name]"檔 ?
請注意:此動作執行後不能撤銷.', +'confirm_rm_file' => '您確定要刪除"[documentname]"文件中的"[name]"檔 ?
請注意:此動作執行後不能撤銷.', 'confirm_rm_folder' => '您確定要刪除"[foldername]"資料夾 及其內檔?
請注意:此動作執行後不能撤銷.', 'confirm_rm_folder_files' => '您確定要刪除"[foldername]" 中所有檔及其子資料夾?
請注意:此動作執行後不能撤銷.', 'confirm_rm_group' => '您確定要刪除"[groupname]"組?
請注意:此動作執行後不能撤銷.', 'confirm_rm_log' => '您確定要刪除"[logname]"日誌檔?
請注意:此動作執行後不能撤銷.', -'confirm_rm_transmittal' => '', -'confirm_rm_transmittalitem' => '', -'confirm_rm_user' => '您確定要刪除"[username]"用戶?
請注意:此動作執行後不能撤銷.', -'confirm_rm_user_from_processes' => '', -'confirm_rm_version' => '您確定要刪除"[documentname]文檔的[version]版本檔?
請注意:此動作執行後不能撤銷.', -'confirm_transfer_link_document' => '', -'confirm_transfer_objects' => '', -'confirm_update_transmittalitem' => '', +'confirm_rm_task' => '', +'confirm_rm_transmittal' => '請確認刪除傳送的內容。', +'confirm_rm_transmittalitem' => '確認移除', +'confirm_rm_user' => '您確定要刪除"[username]"使用者?
請注意:此動作執行後不能撤銷.', +'confirm_rm_user_from_processes' => '您真的要從所有進程中刪除使用者“[username]”嗎?請注意:如果該使用者是唯一或最後一個批准者,則此操作可能導致發布文件。', +'confirm_rm_version' => '您確定要刪除"[documentname]文件的[version]版本檔?
請注意:此動作執行後不能撤銷.', +'confirm_transfer_link_document' => '選擇是否要鏈接拖動的文件或將其內容作為新版本傳輸到目標文件。只能傳送一種版本的文件。拖動的文件隨後將被刪除。', +'confirm_transfer_objects' => '您是否真的要傳輸使用者“ [username]”的文件,文件夾等?
請注意:此操作無法撤消。', +'confirm_update_transmittalitem' => '確認更新', 'content' => '內容', 'continue' => '繼續', -'converter_new_cmd' => '', -'converter_new_mimetype' => '', -'copied_to_checkout_as' => '', +'converter_new_cmd' => '指令', +'converter_new_mimetype' => '新的 mimetype', +'copied_to_checkout_as' => '在[date]以\'[filename] \'複製到簽出空間的文件', 'create_download_link' => '', 'create_fulltext_index' => '創建全文索引', -'create_fulltext_index_warning' => '', +'create_fulltext_index_warning' => '您將要重新創建全文索引。這會花費大量時間並降低整體系統性能。如果您確實要重新創建索引,請確認操作。', 'creation_date' => '創建日期', 'cs_CZ' => '捷克語', -'current_password' => '', -'current_quota' => '', -'current_state' => '', +'current_password' => '當前密碼', +'current_quota' => '設置了當前系統範圍的配額[quota]。', +'current_state' => '當前狀態', 'current_version' => '當前版本', -'daily' => '', +'daily' => '每日', 'databasesearch' => '資料庫搜索', +'database_schema_version' => '', 'date' => '日期', -'days' => '', -'debug' => '', +'days' => '天數', +'debug' => '除錯', 'december' => '十二月', -'default_access' => '缺省訪問模式', +'default_access' => '默認訪問模式', 'default_keywords' => '可用關鍵字', 'definitions' => '定義', 'delete' => '刪除', @@ -305,73 +332,115 @@ URL: [url]', 'details_version' => '版本詳情:[version]', 'de_DE' => '德國語', 'disclaimer' => '警告:這是機密區.只有授權使用者才被允許訪問.任何違反行為將受到法律制裁', -'discspace' => '', -'docs_in_reception_no_access' => '', -'docs_in_revision_no_access' => '', -'document' => '文檔', -'documentcontent' => '', -'documents' => '文檔', -'documents_checked_out_by_you' => '', +'discspace' => '磁碟空間', +'docs_in_reception_no_access' => '帶有收件人的文件,收件人無法訪問', +'docs_in_revision_no_access' => '修訂中的文件,沒有修訂者可以訪問', +'document' => '文件', +'documentcontent' => '文件內容', +'documents' => '文件', +'documents_checked_out_by_you' => '您簽出的文件', 'documents_expired' => '過期文件', -'documents_in_process' => '待處理文檔', -'documents_locked' => '', -'documents_locked_by_you' => '被您鎖定的文檔', +'documents_in_process' => '待處理文件', +'documents_locked' => '文件鎖定', +'documents_locked_by_you' => '被您鎖定的文件', 'documents_only' => '指定檔', -'documents_to_approve' => '待您審核的文檔', -'documents_to_correct' => '', -'documents_to_process' => '', -'documents_to_receipt' => '', -'documents_to_review' => '待您校對的文檔', -'documents_to_revise' => '', -'documents_to_trigger_workflow' => '', -'documents_user_draft' => '', -'documents_user_expiration' => '', -'documents_user_needs_correction' => '', -'documents_user_no_reception' => '', -'documents_user_obsolete' => '', -'documents_user_reception' => '', +'documents_to_approve' => '待您審核的文件', +'documents_to_correct' => '需要更正的文件', +'documents_to_process' => '需要處理的文件', +'documents_to_receipt' => '等待確認回覆的文件', +'documents_to_review' => '待您校對的文件', +'documents_to_revise' => '等待您修改的文件', +'documents_to_trigger_workflow' => '文件在工作流程中', +'documents_user_draft' => '草稿', +'documents_user_expiration' => '過期的文件', +'documents_user_needs_correction' => '需要更正的文件', +'documents_user_no_reception' => '沒有回覆的文件', +'documents_user_obsolete' => '過時的文件', +'documents_user_reception' => '等待接收的文件', 'documents_user_rejected' => '被拒絕的文件', -'documents_user_requiring_attention' => '需您關注的文檔', -'documents_with_notification' => '', -'document_already_checkedout' => '', -'document_already_locked' => '該文檔已被鎖定', -'document_attribute_changed_email_body' => '', -'document_attribute_changed_email_subject' => '', -'document_comment_changed_email' => '', -'document_comment_changed_email_body' => '', -'document_comment_changed_email_subject' => '', -'document_count' => '', -'document_deleted' => '刪除文檔', -'document_deleted_email' => '文檔已被刪除', -'document_deleted_email_body' => '', -'document_deleted_email_subject' => '', -'document_duplicate_name' => '', -'document_has_no_workflow' => '', -'document_infos' => '文檔信息', -'document_is_checked_out' => '', -'document_is_not_locked' => '該文檔沒有被鎖定', +'documents_user_requiring_attention' => '需您關注的文件', +'documents_with_notification' => '帶有通知的文件', +'document_already_checkedout' => '此份文件已經簽出', +'document_already_locked' => '該文件已被鎖定', +'document_attribute_changed_email_body' => '屬性已更改 +文件:[name] +屬性:[attribute_name] +舊值:[attribute_old_value] +新值:[attribute_new_value] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'document_attribute_changed_email_subject' => '[sitename]:[name]-屬性已更改', +'document_comment_changed_email' => '評論已更改', +'document_comment_changed_email_body' => '評論已更改 +文件:[name] +舊評論:[old_comment] +新評論:[new_comment] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'document_comment_changed_email_subject' => '[sitename]:[name]-評論已更改', +'document_count' => '文件數', +'document_deleted' => '刪除文件', +'document_deleted_email' => '文件已被刪除', +'document_deleted_email_body' => '文件已刪除 +文件:[name] +父文件夾:[folder_path] +使用者:[username]', +'document_deleted_email_subject' => '[sitename]:[name]-文檔已刪除', +'document_duplicate_name' => '文件名稱重複', +'document_has_no_workflow' => '文件沒有工作流程', +'document_infos' => '文件資訊', +'document_is_checked_out' => '當前已簽出文檔。如果您上傳新版本,那麼簽出的版本將無法再簽回。', +'document_is_not_locked' => '該文件沒有被鎖定', 'document_link_by' => '連結', 'document_link_public' => '公開', -'document_moved_email' => '文檔已被移動', -'document_moved_email_body' => '', -'document_moved_email_subject' => '', -'document_not_checkedout' => '', -'document_renamed_email' => '文檔已被重命名', -'document_renamed_email_body' => '', -'document_renamed_email_subject' => '', -'document_status_changed_email' => '文檔狀態已被更改', -'document_status_changed_email_body' => '', -'document_status_changed_email_subject' => '', -'document_title' => '文檔名稱 \'[documentname]\'', -'document_transfered_email_body' => '', -'document_transfered_email_subject' => '', -'document_updated_email' => '文檔已被更新', -'document_updated_email_body' => '', -'document_updated_email_subject' => '', +'document_moved_email' => '文件已被移動', +'document_moved_email_body' => '文件已移走 +文件:[name] +舊文件夾:[old_folder_path] +新文件夾:[new_folder_path] +使用者:[username] +網址:[url]', +'document_moved_email_subject' => '[sitename]:[name]-文件已移動', +'document_not_checkedout' => '文件沒有簽出', +'document_renamed_email' => '文件已被重命名', +'document_renamed_email_body' => '文件名稱已變更 +文件:[name] +父文件夾:[folder_path] +舊名稱:[old_name] +使用者:[username] +網址:[url]', +'document_renamed_email_subject' => '[sitename]:[name]-文件已重命名', +'document_status_changed_email' => '文件狀態已被更改', +'document_status_changed_email_body' => '文件狀態已變更 +文件:[name] +狀態:[status] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'document_status_changed_email_subject' => '[sitename]:[name]-文檔狀態已更改', +'document_title' => '文件名稱 \'[documentname]\'', +'document_transfered_email_body' => '文件轉移給其他使用者 +文件:[name] +新所有者:[newuser] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'document_transfered_email_subject' => '[sitename]:[name]-轉移文件', +'document_updated_email' => '文件已被更新', +'document_updated_email_body' => '文件已更新 +文件:[name] +父文件夾:[folder_path] +使用者:[username] +評論:[comment] +版本註釋:[version_comment] +網址:[url]', +'document_updated_email_subject' => '[sitename]:[name]-文檔已更新', 'does_not_expire' => '永不過期', 'does_not_inherit_access_msg' => '繼承存取權限', 'download' => '下載', -'download_extension' => '', +'download_extension' => '將擴展名下載為zip文件', 'download_header_approval_comment' => '', 'download_header_approval_date' => '', 'download_header_approval_state' => '', @@ -385,110 +454,115 @@ URL: [url]', 'download_header_review_date' => '', 'download_header_review_state' => '', 'download_header_state' => '', -'download_links' => '', -'do_no_transfer_to_user' => '', -'do_object_repair' => '', -'do_object_setchecksum' => '', +'download_links' => '下載連結', +'do_no_transfer_to_user' => '不要轉移流程給使用者。', +'do_object_repair' => '修復所有文件夾和文檔。', +'do_object_setchecksum' => '設置文件校驗', 'do_object_setfilesize' => '設定檔案大小', -'do_object_setfiletype' => '', -'do_object_unlink' => '', -'draft' => '', +'do_object_setfiletype' => '設置檔案類型', +'do_object_unlink' => '刪除檔案版本', +'draft' => '草稿', 'draft_pending_approval' => '待審核', 'draft_pending_review' => '待校對', 'drag_icon_here' => '拖動圖示到這裡', -'dropfolderdir_missing' => '', +'dropfolderdir_missing' => '您的個人放置文件夾在服務器上不存在!請要求管理員創建它', 'dropfolder_file' => '檔案來源為 drop 目錄', -'dropfolder_folder' => '', -'dropfolder_metadata' => '', +'dropfolder_folder' => '目錄來源為下拉目錄', +'dropfolder_metadata' => '下拉目錄的Metadata', 'dropupload' => '快速上傳', 'drop_files_here' => '拖入這裡', 'dump_creation' => '轉儲數據', 'dump_creation_warning' => '通過此操作,您可以創建一個您資料庫的轉儲檔,之後可以將轉儲資料保存到您伺服器所在的資料檔案夾中', 'dump_list' => '存在轉儲文件', 'dump_remove' => '刪除轉儲檔', -'duplicates' => '', +'duplicates' => '重複項', 'duplicate_content' => '重複內容', 'edit' => '編輯', 'edit_attributes' => '編輯屬性', 'edit_comment' => '編輯說明', 'edit_default_keywords' => '編輯關鍵字', 'edit_document_access' => '編輯存取權限', -'edit_document_notify' => '文檔通知列表', -'edit_document_props' => '編輯文檔', +'edit_document_notify' => '文件通知列表', +'edit_document_props' => '編輯文件', 'edit_event' => '編輯事件', 'edit_existing_access' => '編輯訪問列表', -'edit_existing_attribute_groups' => '', +'edit_existing_attribute_groups' => '編輯屬性組', 'edit_existing_notify' => '編輯通知列表', 'edit_folder_access' => '編輯存取權限', -'edit_folder_attrdefgrp' => '', +'edit_folder_attrdefgrp' => '編輯屬性組', 'edit_folder_notify' => '資料夾通知列表', 'edit_folder_props' => '編輯資料夾', 'edit_group' => '編輯組別', -'edit_online' => '', -'edit_online_warning' => '', -'edit_task' => '', -'edit_transmittal_props' => '', -'edit_user' => '編輯用戶', -'edit_user_details' => '編輯用戶詳情', -'edit_version' => '', +'edit_online' => '線上編輯', +'edit_online_warning' => '保存更改將覆蓋當前版本的內容,而不是創建新版本。', +'edit_task' => '編輯工作', +'edit_transmittal_props' => '編輯傳輸屬性', +'edit_user' => '編輯使用者', +'edit_user_details' => '編輯使用者詳情', +'edit_version' => '編輯版本', 'el_GR' => '希臘語', 'email' => 'Email', -'email_error_title' => '', +'email_error_title' => '信箱沒有輸入', 'email_footer' => '您可以用‘我的帳戶’選項來改變您的e-mail設置', -'email_header' => '這是來自于DMS(文檔管理系統)的自動發送消息', -'email_not_given' => '', -'empty_attribute_group_list' => '', +'email_header' => '這是來自于DMS(文件管理系統)的自動發送消息', +'email_not_given' => '請輸入有效的信箱網址', +'empty_attribute_group_list' => '沒有屬性組', 'empty_folder_list' => '沒有檔或子目錄', -'empty_list' => '', +'empty_list' => '沒有條目', 'empty_notify_list' => '沒有條目', 'en_GB' => '英語', -'equal_transition_states' => '', +'equal_transition_states' => '起始狀態和結束狀態相等', 'error' => '錯誤', -'error_add_aro' => '', -'error_add_permission' => '', -'error_cleared_cache' => '', -'error_edit_task' => '', -'error_extension_getlist' => '', -'error_importfs' => '', -'error_no_document_selected' => '請選擇文檔', +'error_add_aro' => '新增訪問請求對象時出錯', +'error_add_permission' => '新增權限時出錯', +'error_cleared_cache' => '清除緩存時出錯', +'error_edit_task' => '保存任務時出錯', +'error_extension_getlist' => '從存儲庫獲取擴展列表時出錯', +'error_importfs' => '導入表單文件系統時出錯', +'error_no_document_selected' => '請選擇文件', 'error_no_folder_selected' => '請選擇資料夾', 'error_occured' => '出錯', -'error_remove_document' => '', -'error_remove_folder' => '', -'error_remove_permission' => '', -'error_rm_workflow' => '', -'error_rm_workflow_action' => '', -'error_rm_workflow_state' => '', -'error_toogle_permission' => '', -'error_transfer_document' => '', -'error_trigger_workflow' => '', -'error_update_document' => '', -'error_uploading_reviewer_only' => '', +'error_remove_document' => '刪除文件時出錯', +'error_remove_folder' => '刪除文件夾時出錯', +'error_remove_permission' => '刪除權限時出錯', +'error_rm_workflow' => '刪除工作流程時出錯', +'error_rm_workflow_action' => '刪除工作流程操作時出錯', +'error_rm_workflow_state' => '刪除工作流程狀態時出錯', +'error_toogle_permission' => '更改權限時出錯', +'error_transfer_document' => '傳送文件時發生錯誤', +'error_trigger_workflow' => '觸發工作流程轉換時出錯', +'error_update_document' => '更新文件時發生錯誤', +'error_uploading_reviewer_only' => '創建文件時出錯。該文件具有審閱者,但沒有批准者。', 'es_ES' => '西班牙語', 'event_details' => '錯誤詳情', 'exclude_items' => '例外項目', 'expired' => '過期', -'expired_at_date' => '', -'expired_documents' => '', +'expired_at_date' => '已於[datetime]過期', +'expired_documents' => '過期的文件', 'expires' => '有效限期', 'expire_by_date' => '到期日', -'expire_in_1d' => '', -'expire_in_1h' => '', +'expire_in_1d' => '1天後到期', +'expire_in_1h' => '1小時後到期', 'expire_in_1m' => '1個月到期', 'expire_in_1w' => '1個星期到期', 'expire_in_1y' => '1年到期', -'expire_in_2h' => '', +'expire_in_2h' => '2小時後到期', 'expire_in_2y' => '2年到期', -'expire_today' => '', -'expire_tomorrow' => '', +'expire_today' => '今天到期', +'expire_tomorrow' => '明天到期', 'expiry_changed_email' => '到期日子已改變', -'expiry_changed_email_body' => '', -'expiry_changed_email_subject' => '', -'export' => '', -'extension_archive' => '', +'expiry_changed_email_body' => '到期日已更改 +文件:[name] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'expiry_changed_email_subject' => '[sitename]: [name] - 有效日期已更改', +'export' => '匯出', +'export_user_list_csv' => '', +'extension_archive' => '擴充', 'extension_changelog' => '修改紀錄', 'extension_loading' => '擴充套件讀取中', -'extension_manager' => '整體索引進度', +'extension_manager' => '擴充套件的管理', 'extension_mgr_installed' => '已安裝', 'extension_mgr_no_upload' => '無法上傳新的套件因為套件目錄無法寫入', 'extension_mgr_repository' => '可用', @@ -497,45 +571,72 @@ URL: [url]', 'file' => '文件', 'files' => '文件', 'files_deletion' => '刪除檔', -'files_deletion_warning' => '通過此操作,您可以刪除整個DMS(文檔管理系統)資料夾裡的所有檔.但版本資訊將被保留', +'files_deletion_warning' => '通過此操作,您可以刪除整個DMS(文件管理系統)資料夾裡的所有檔.但版本資訊將被保留', 'files_loading' => '請稍候, 檔案讀取中', -'filetype' => '', +'filetype' => '檔案類型', 'file_size' => '文件大小', -'filter_for_documents' => '', -'filter_for_folders' => '', +'filter_for_documents' => '附加文件過濾器', +'filter_for_folders' => '文件夾的附加過濾器', 'folder' => '資料夾', 'folders' => '資料夾', 'folders_and_documents_statistic' => '內容概要', -'folders_with_notification' => '', -'folder_attribute_changed_email_body' => '', -'folder_attribute_changed_email_subject' => '', -'folder_comment_changed_email' => '', -'folder_comment_changed_email_body' => '', -'folder_comment_changed_email_subject' => '', +'folders_with_notification' => '帶有通知的文件夾', +'folder_attribute_changed_email_body' => '屬性已更改 +文件夾:[name] +屬性:[attribute_name] +舊值:[attribute_old_value] +新值:[attribute_new_value] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'folder_attribute_changed_email_subject' => '[sitename]: [name] - 屬性已更改', +'folder_comment_changed_email' => '評論已更改', +'folder_comment_changed_email_body' => '評論已更改 +文件夾:[name] +舊評論:[old_comment] +新評論:[new_comment] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'folder_comment_changed_email_subject' => '[sitename]: [name] - 評論已修改', 'folder_contents' => '資料夾內容', 'folder_deleted_email' => '資料夾已被刪除', -'folder_deleted_email_body' => '', -'folder_deleted_email_subject' => '', -'folder_infos' => '資料夾信息', +'folder_deleted_email_body' => '資料夾已刪除 +文件夾:[name] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'folder_deleted_email_subject' => '[sitename]: [name] - 資料夾已刪除', +'folder_infos' => '資料夾資訊', 'folder_moved_email' => '資料夾已被移動', -'folder_moved_email_body' => '', -'folder_moved_email_subject' => '', +'folder_moved_email_body' => '文件夾移動 +文件夾:[name] +舊文件夾:[old_folder_path] +新文件夾:[new_folder_path] +使用者:[username] +網址:[url]', +'folder_moved_email_subject' => '[sitename]: [name] - 資料夾已移動', 'folder_renamed_email' => '資料夾已被重命名', -'folder_renamed_email_body' => '', -'folder_renamed_email_subject' => '', +'folder_renamed_email_body' => '文件夾已重命名 +文件夾:[name] +父文件夾:[folder_path] +舊名稱:[old_name] +使用者:[username] +網址:[url]', +'folder_renamed_email_subject' => '[sitename]: [name] - 資料夾已經重新命名', 'folder_title' => '資料夾 \'[foldername]\'', 'foot_note' => '', 'force_update' => '更新', 'friday' => 'Friday', -'friday_abbr' => '', +'friday_abbr' => 'Fr', 'from' => '從', 'fr_FR' => '法語', 'fullsearch' => '全文檢索搜尋', 'fullsearch_hint' => '使用全文索引', -'fulltextsearch_disabled' => '', +'fulltextsearch_disabled' => '全文索引已禁用', 'fulltext_converters' => '索引檔轉換', 'fulltext_info' => '全文索引資訊', -'global_attributedefinitiongroups' => '', +'global_attributedefinitiongroups' => '屬性組', 'global_attributedefinitions' => '屬性', 'global_default_keywords' => '全域關鍵字', 'global_document_categories' => '分類', @@ -546,48 +647,52 @@ URL: [url]', 'groups' => '組別', 'group_approval_summary' => '審核組匯總', 'group_exists' => '組已存在', -'group_info' => '', +'group_info' => '群組資訊', 'group_management' => '組管理', 'group_members' => '組成員', -'group_receipt_summary' => '', +'group_receipt_summary' => '群組回覆匯總', 'group_review_summary' => '校對組匯總', -'group_revision_summary' => '', +'group_revision_summary' => '群組修訂匯總', 'guest_login' => '來賓登錄', 'guest_login_disabled' => '來賓登錄被禁止', -'hash' => '', +'hash' => 'Hash', 'help' => '幫助', -'home_folder' => '', -'hook_name' => '', -'hourly' => '', -'hours' => '', +'home_folder' => '家目錄', +'hook_name' => '掛鉤的名稱', +'hourly' => '每小時', +'hours' => '小時', 'hr_HR' => '克羅埃西亞語', 'human_readable' => '可讀存檔', 'hu_HU' => '匈牙利語', 'id' => '序號', 'identical_version' => '新版本的內容與舊版本完全相同', 'import' => '匯入', -'importfs' => '', -'import_extension' => '', +'importfs' => '從檔案系統匯入', +'import_extension' => '匯入擴充', 'import_fs' => '由檔案系統匯入', -'import_fs_warning' => '', -'include_content' => '', -'include_documents' => '包含文檔', +'import_fs_warning' => '這僅適用於放置文件夾中的文件夾。該操作以遞歸方式導入所有文件夾和文件。文件將立即釋放。', +'import_users' => '', +'import_users_addnew' => '', +'import_users_update' => '', +'include_content' => '包含內容', +'include_documents' => '包含文件', 'include_subdirectories' => '包含子目錄', -'indexing_tasks_in_queue' => '', +'indexing_tasks_in_queue' => '索引任務正在序列中', 'index_converters' => '', -'index_done' => '', -'index_error' => '', +'index_done' => '完成', +'index_error' => '錯誤', 'index_folder' => '索引目錄', -'index_no_content' => '', -'index_pending' => '', +'index_no_content' => '沒有索引內容', +'index_pending' => '待定', 'index_waiting' => '請稍後', 'individuals' => '個人', -'individuals_in_groups' => '', -'info_recipients_tab_not_released' => '', +'individuals_in_groups' => '小組成員', +'info_recipients_tab_not_released' => '由於未發布該文檔版本,因此無法確認接收。', 'inherited' => '繼承', 'inherits_access_copy_msg' => '複製繼承存取權限列表', 'inherits_access_empty_msg' => '從存取權限空列表開始', 'inherits_access_msg' => '繼承存取權限', +'installed_php_extensions' => '', 'internal_error' => '內部錯誤', 'internal_error_exit' => '內部錯誤.無法完成請求.離開系統', 'invalid_access_mode' => '無效訪問模式', @@ -595,40 +700,40 @@ URL: [url]', 'invalid_approval_status' => '無效審核狀態', 'invalid_create_date_end' => '無效截止日期,不在創建日期範圍內', 'invalid_create_date_start' => '無效開始日期,不在創建日期範圍內', -'invalid_doc_id' => '無效文檔ID號', -'invalid_dropfolder_folder' => '', -'invalid_expiration_date_end' => '', -'invalid_expiration_date_start' => '', +'invalid_doc_id' => '無效文件ID號', +'invalid_dropfolder_folder' => '下拉資料夾中的資料夾無效', +'invalid_expiration_date_end' => '到期日期範圍的結束日期無效。', +'invalid_expiration_date_start' => '到期日期範圍的開始日期無效。', 'invalid_file_id' => '無效檔ID號', 'invalid_folder_id' => '無效資料夾ID號', 'invalid_group_id' => '無效組別ID號', 'invalid_link_id' => '無效連結標示', -'invalid_request_token' => 'Invalid Request Token', +'invalid_request_token' => '無效的令牌請求', 'invalid_review_status' => '無效校對狀態', 'invalid_sequence' => '無效序列值', -'invalid_status' => '無效文檔狀態', +'invalid_status' => '無效文件狀態', 'invalid_target_doc_id' => '無效目的文件ID號', 'invalid_target_folder' => '無效目的檔案夾ID號', -'invalid_user_id' => '無效用戶ID號', -'invalid_version' => '無效文檔版本', -'in_folder' => '', -'in_revision' => '', -'in_workflow' => '', +'invalid_user_id' => '無效使用者ID號', +'invalid_version' => '無效文件版本', +'in_folder' => '在', +'in_revision' => '修訂中', +'in_workflow' => '在工作流程中', 'is_disabled' => '禁用帳戶', -'is_hidden' => '從用戶列表中隱藏', +'is_hidden' => '從使用者列表中隱藏', 'it_IT' => '義大利語', 'january' => '一 月', -'js_form_error' => '', -'js_form_errors' => '', -'js_invalid_email' => '', +'js_form_error' => '表單仍然包含 # 錯誤。', +'js_form_errors' => '表單仍然包含 # 個錯誤。', +'js_invalid_email' => '郵箱地址無效', 'js_no_approval_group' => '請選擇審核組', 'js_no_approval_status' => '請選擇審核狀態', -'js_no_comment' => '沒有添加說明', -'js_no_currentpwd' => '', +'js_no_comment' => '沒有新增說明', +'js_no_currentpwd' => '請輸入您的當前密碼', 'js_no_email' => '輸入您的e-mail', 'js_no_file' => '請選擇一個檔', 'js_no_keywords' => '指定關鍵字', -'js_no_login' => '輸入用戶名', +'js_no_login' => '輸入使用者名', 'js_no_name' => '請輸入名稱', 'js_no_override_status' => '請選擇一個新的[override]狀態', 'js_no_pwd' => '您需要輸入您的密碼', @@ -636,1006 +741,1137 @@ URL: [url]', 'js_no_review_group' => '請選擇一個校對組', 'js_no_review_status' => '請選擇校對狀態', 'js_pwd_not_conf' => '密碼與確認密碼不一致', -'js_select_user' => '請選擇一個用戶', -'js_select_user_or_group' => '選擇至少一個用戶或一個組', -'js_unequal_passwords' => '', +'js_select_user' => '請選擇一個使用者', +'js_select_user_or_group' => '選擇至少一個使用者或一個組', +'js_unequal_passwords' => '密碼不相符', 'july' => '七 月', 'june' => '六 月', -'keep' => '', -'keep_doc_status' => '', +'keep' => '不要改變', +'keep_doc_status' => '保持文件狀態', 'keywords' => '關鍵字', 'keywords_loading' => '請稍後,關鍵字載入中', 'keyword_exists' => '關鍵字已存在', 'ko_KR' => '韓語', 'language' => '語言', -'lastaccess' => '', +'lastaccess' => '最後訪問', 'last_update' => '上次更新', -'legend' => '', -'librarydoc' => '', -'linked_documents' => '相關文檔', +'legend' => '說明', +'librarydoc' => '文件庫', +'linked_documents' => '相關文件', 'linked_files' => '附件', -'linked_to_current_version' => '', -'linked_to_document' => '', -'linked_to_this_version' => '', -'link_alt_updatedocument' => '超過20M大檔,請選擇上傳大檔.', -'link_document' => '', -'link_to_version' => '', +'linked_to_current_version' => '連結到當前版本', +'linked_to_document' => '連結到文件', +'linked_to_this_version' => '連結到這個版本', +'link_alt_updatedocument' => '如果您要上傳的文件大於當前的最大上傳大小,請使用其他上傳頁面。', +'link_document' => '連結文件', +'link_to_version' => '附加到版本', 'list_access_rights' => '列出權限', -'list_contains_no_access_docs' => '', -'list_hooks' => '', -'list_tasks' => '', -'local_file' => '本地檔', +'list_contains_no_access_docs' => '該列表包含更多您無法訪問且不會顯示的文檔。', +'list_hooks' => '掛勾列表', +'list_tasks' => '工作列表', +'local_file' => '選擇檔案', 'locked_by' => '鎖定人', 'lock_document' => '鎖定', -'lock_message' => '此文檔已被 [username] 鎖定. 只有授權使用者才能解鎖.', +'lock_message' => '此文件已被 [username] 鎖定. 只有授權使用者才能解鎖.', 'lock_status' => '鎖定狀態', -'logfile_loading' => '', -'login' => '', -'login_disabled_text' => '', -'login_disabled_title' => '', -'login_error_text' => '登錄錯誤.用戶名或密碼不正確', +'logfile_loading' => '請稍等,直到加載日誌文件……', +'login' => '登入', +'login_disabled_text' => '您的帳戶被禁用,可能是由於登錄失敗太多。', +'login_disabled_title' => '帳戶已被禁用', +'login_error_text' => '登錄錯誤.使用者名或密碼不正確', 'login_error_title' => '登錄錯誤', -'login_not_given' => '缺少用戶名', +'login_not_given' => '缺少使用者名', 'login_ok' => '登錄成功', -'login_restrictions_apply' => '', +'login_restrictions_apply' => '由於限制,登錄失敗', 'logout' => '登出', 'log_management' => '日誌管理', 'lo_LA' => '位置', -'malformed_expiration_date' => '', +'malformed_expiration_date' => '格式錯誤的到期日期', 'manager' => '管理員', -'manager_of_group' => '', -'mandatory_approvergroups' => '', -'mandatory_approvergroup_no_access' => '', -'mandatory_approvers' => '', -'mandatory_approver_no_access' => '', -'mandatory_reviewergroups' => '', -'mandatory_reviewergroup_no_access' => '', -'mandatory_reviewers' => '', -'mandatory_reviewer_no_access' => '', +'manager_of_group' => '您是這個群組的管理員', +'mandatory_approvergroups' => '強制批准的群組', +'mandatory_approvergroup_no_access' => '強制批准者組\'[group] \'沒有足夠的訪問權限。', +'mandatory_approvers' => '強制性批准人', +'mandatory_approver_no_access' => '強制批准者\'[user] \'沒有足夠的訪問權限。', +'mandatory_reviewergroups' => '強制性審稿人小組', +'mandatory_reviewergroup_no_access' => '強制性審閱者組\'[group] \'沒有足夠的訪問權限。', +'mandatory_reviewers' => '強制性審稿人', +'mandatory_reviewer_no_access' => '強制性審閱者\'[user] \'沒有足夠的訪問權限。', 'march' => '三 月', 'max_upload_size' => '最大上傳文件大小', 'may' => '五 月', -'menu_dropfolder' => '', -'menu_upload_from_dropfolder' => '', +'menu_dropfolder' => '下拉目錄', +'menu_upload_from_dropfolder' => '匯入這個檔案', 'mimetype' => 'MIME類型', -'minutes' => '', +'minutes' => '分鐘', 'misc' => '其他', -'missing_checksum' => '', -'missing_file' => '', -'missing_filesize' => '', -'missing_reception' => '', -'missing_request_object' => '', -'missing_transition_user_group' => '', -'monday' => 'Monday', -'monday_abbr' => '', -'monthly' => '', +'missing_checksum' => '缺少校驗', +'missing_file' => '缺少檔案', +'missing_filesize' => '缺少檔案大小', +'missing_php_extensions' => '', +'missing_reception' => '缺少接待處', +'missing_request_object' => '缺少請求物件', +'missing_transition_user_group' => '缺少傳送的使用者/群組', +'monday' => '禮拜一', +'monday_abbr' => 'Mo', +'monthly' => '月', 'month_view' => '月視圖', -'more_objects_loading' => '', +'more_objects_loading' => '較多物件載入中...', 'move' => '移動', 'move_clipboard' => '移動剪貼簿', -'move_document' => '移動文檔', +'move_document' => '移動文件', 'move_folder' => '移動資料夾', 'my_account' => '我的帳戶', 'my_documents' => '我的文件', -'my_transmittals' => '', +'my_transmittals' => '我的傳送', 'name' => '名稱', 'nb_NO' => '', -'needs_correction' => '', -'needs_workflow_action' => '', -'network_drive' => '', -'never' => '', +'needs_correction' => '需要糾正', +'needs_workflow_action' => '本文檔需要您注意。請檢查工作流程標籤。', +'network_drive' => '網路磁碟機', +'never' => '從不', 'new' => 'New', -'new_attrdef' => '添加屬性', -'new_default_keywords' => '添加關鍵字', -'new_default_keyword_category' => '添加類別', +'new_attrdef' => '新增屬性', +'new_default_keywords' => '新增關鍵字', +'new_default_keyword_category' => '新增類別', 'new_document_category' => '增加分類', -'new_document_email' => '添加新文檔', -'new_document_email_body' => '', -'new_document_email_subject' => '', -'new_file_email' => '添加新附件', -'new_file_email_body' => '', -'new_file_email_subject' => '', +'new_document_email' => '新增新文件', +'new_document_email_body' => '新文件 +姓名:[name] +父文件夾:[folder_path] +評論:[comment] +版本註釋:[version_comment] +使用者:[username] +網址:[url]', +'new_document_email_subject' => '[sitename]: [document] - 新文件', +'new_file_email' => '新增新附件', +'new_file_email_body' => '新附件 +姓名:[name] +文件:[document] +評論:[comment] +使用者:[username] +網址:[url]', +'new_file_email_subject' => '[sitename]: [document] - 新附件', 'new_folder' => '新建資料夾', -'new_password' => '', +'new_password' => '新密碼', 'new_subfolder_email' => '創建新資料夾', -'new_subfolder_email_body' => '', -'new_subfolder_email_subject' => '', +'new_subfolder_email_body' => '新建文件夾 +姓名:[name] +父文件夾:[folder_path] +評論:[comment] +使用者:[username] +網址:[url]', +'new_subfolder_email_subject' => '[sitename]: [name] - 新文件夾', 'new_user_image' => '新建圖片', -'next_revision_abbr' => '', -'next_state' => '', +'next_revision_abbr' => '下一版', +'next_state' => '新狀態', 'nl_NL' => '荷蘭語', 'no' => '否', -'notification' => '', -'notify_added_email' => '您已被添加到了通知名單中', -'notify_added_email_body' => '', -'notify_added_email_subject' => '', +'notification' => '通知', +'notify_added_email' => '您已被新增到了通知名單中', +'notify_added_email_body' => '已添加到通知列表 +姓名:[name] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'notify_added_email_subject' => '[sitename]: [name] - 從通知列表中刪除', 'notify_deleted_email' => '您已經從通知名單中刪除', -'notify_deleted_email_body' => '', -'notify_deleted_email_subject' => '', +'notify_deleted_email_body' => '從通知列表中刪除 +姓名:[name] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'notify_deleted_email_subject' => '[sitename]: [name] - 從通知列表中刪除', 'november' => '十一月', -'now' => '', +'now' => '現在', 'no_action' => '無動作請求', 'no_approval_needed' => '無待審核的檔', 'no_attached_files' => '無附件', -'no_backup_dir' => '', -'no_current_version' => '', +'no_backup_dir' => '未設置備份目錄。', +'no_current_version' => '您正在運行舊版本的SeedDMS。最新的可用版本是[latestversion]。', 'no_default_keywords' => '無關鍵字', -'no_docs_checked_out' => '', -'no_docs_expired' => '', -'no_docs_locked' => '無鎖定的文檔', -'no_docs_needs_correction' => '', -'no_docs_rejected' => '', -'no_docs_to_approve' => '當前沒有需要審核的文檔', -'no_docs_to_look_at' => '沒有需要關注的文檔', -'no_docs_to_receipt' => '', -'no_docs_to_review' => '當前沒有需要校對的文檔', -'no_docs_to_revise' => '', -'no_email_or_login' => '', -'no_fulltextindex' => '', +'no_docs_checked_out' => '沒有簽出文件', +'no_docs_expired' => '沒有過期的文件', +'no_docs_locked' => '無鎖定的文件', +'no_docs_needs_correction' => '沒有文件,需要更正', +'no_docs_rejected' => '沒有文件被拒絕。', +'no_docs_to_approve' => '當前沒有需要審核的文件', +'no_docs_to_look_at' => '沒有需要關注的文件', +'no_docs_to_receipt' => '無需文件收據', +'no_docs_to_review' => '當前沒有需要校對的文件', +'no_docs_to_revise' => '當前沒有需要修改的文件。', +'no_email_or_login' => '必須輸入登入名和電子郵件', +'no_fulltextindex' => '沒有全文索引', 'no_groups' => '無組別', 'no_group_members' => '該組沒有成員', 'no_linked_files' => '無連結檔', 'no_previous_versions' => '無其它版本', -'no_receipt_needed' => '', +'no_receipt_needed' => '當前沒有需要收據確認的文件。', 'no_review_needed' => '無待校對的文件', -'no_revision_needed' => '', -'no_revision_planed' => '', -'no_update_cause_locked' => '您不能更新此文檔,請聯繫該文檔鎖定人', +'no_revision_needed' => '沒有待定的修訂。', +'no_revision_planed' => '未計劃修訂文件', +'no_update_cause_locked' => '您不能更新此文件,請聯繫該文件鎖定人', 'no_user_image' => '無圖片', -'no_version_check' => '', -'no_version_modification' => '', -'no_workflow_available' => '', +'no_version_check' => '檢查新版本的SeedDMS失敗!這可能是由於在您的php配置中將allow_url_fopen設置為0', +'no_version_modification' => '沒有版本修改', +'no_workflow_available' => '沒有可用的工作流程', 'objectcheck' => '資料夾/檔檢查', -'object_check_critical' => '', -'object_check_warning' => '', +'object_check_critical' => '嚴重錯誤', +'object_check_warning' => '警告', 'obsolete' => '過時的', 'october' => '十 月', 'old' => 'Old', 'only_jpg_user_images' => '只用jpg格式的圖片才可以作為使用者身份圖片', -'order_by_sequence_off' => '', +'order_by_sequence_off' => '在設置中關閉了按順序排序。如果希望此參數生效,則必須重新打開它。', 'original_filename' => '原始檔名', -'overall_indexing_progress' => '', +'overall_indexing_progress' => '整體索引編制進度', 'owner' => '所有者', 'ownership_changed_email' => '所有者已變更', -'ownership_changed_email_body' => '', -'ownership_changed_email_subject' => '', +'ownership_changed_email_body' => '所有者已更改 +文件:[name] +父文件夾:[folder_path] +舊所有者:[old_owner] +新所有者:[new_owner] +使用者:[username] +網址:[url]', +'ownership_changed_email_subject' => '[sitename]: [name] - 擁有者已改變', 'password' => '密碼', -'password_already_used' => '', -'password_expiration' => '', -'password_expiration_text' => '', -'password_expired' => '', -'password_expires_in_days' => '', -'password_forgotten' => '', -'password_forgotten_email_body' => '', -'password_forgotten_email_subject' => '', -'password_forgotten_send_hash' => '', -'password_forgotten_text' => '', -'password_forgotten_title' => '', -'password_repeat' => '', -'password_send' => '', -'password_send_text' => '', +'password_already_used' => '密碼已使用', +'password_expiration' => '密碼過期', +'password_expiration_text' => '您的密碼已過期。請先選擇一個新版本,然後再繼續使用SeedDMS。', +'password_expired' => '密碼已過期', +'password_expires_in_days' => '密碼將於%s天后過期。', +'password_forgotten' => '忘記密碼', +'password_forgotten_email_body' => '尊敬的SeedDMS使用者, + +我們已收到更改您的密碼的請求。 + +可以通過單擊以下鏈接來完成: + +[url_prefix] out / out.ChangePassword.php?hash = [hash]', +'password_forgotten_email_subject' => '[sitename]: 密碼忘記', +'password_forgotten_send_hash' => '有關如何進行操作的說明已發送到使用者的電子郵件地址', +'password_forgotten_text' => '填寫以下表格,然後按照將發送給您的電子郵件中的說明進行操作。', +'password_forgotten_title' => '密碼已寄出', +'password_repeat' => '重複輸入密碼', +'password_send' => '密碼寄出', +'password_send_text' => '如果登錄名和電子郵件與現有使用者匹配,則您的新密碼已發送到給定的電子郵件地址。如果您在接下來的幾分鐘內沒有收到電子郵件,請確保登錄名和電子郵件均正確無誤,然後重新啟動該過程。', 'password_strength' => '密碼強度', -'password_strength_insuffient' => '', -'password_wrong' => '', -'pdf_converters' => '', -'pending_approvals' => '', -'pending_receipt' => '', -'pending_reviews' => '', -'pending_revision' => '', -'pending_workflows' => '', -'personal_default_keywords' => '用戶關鍵字', +'password_strength_insuffient' => '密碼強度不足', +'password_wrong' => '錯誤密碼', +'pdf_converters' => 'PDF 轉換', +'pending_approvals' => '待批准', +'pending_receipt' => '待收據', +'pending_reviews' => '待審核', +'pending_revision' => '待修訂', +'pending_workflows' => '待處理的工作流程', +'personal_default_keywords' => '使用者關鍵字', +'php_info' => '', 'pl_PL' => '波蘭語', -'possible_substitutes' => '', +'possible_substitutes' => '替代品', 'preset_expires' => '預設到期日', 'preview' => '預覽', -'preview_converters' => '', -'preview_images' => '', -'preview_markdown' => '', -'preview_pdf' => '', -'preview_plain' => '', -'previous_state' => '', +'preview_converters' => '預覽文件轉換', +'preview_images' => '預覽圖像', +'preview_markdown' => 'Markdown', +'preview_pdf' => '預覽為PDF', +'preview_plain' => '文本', +'previous_state' => '先前狀態', 'previous_versions' => '先前版本', -'process' => '', +'process' => '處理', 'process_without_user_group' => '程序缺少使用者/群組', 'pt_BR' => '葡萄牙語', 'quota' => '配額', -'quota_exceeded' => '', -'quota_is_disabled' => '', -'quota_warning' => '', -'receipts_accepted' => '', -'receipts_accepted_latest' => '', -'receipts_not_touched' => '', -'receipts_not_touched_latest' => '', -'receipts_rejected' => '', -'receipts_rejected_latest' => '', -'receipts_without_group' => '', -'receipts_without_user' => '', -'receipt_deletion_email_body' => '', -'receipt_deletion_email_subject' => '', -'receipt_log' => '', -'receipt_request_email_body' => '', -'receipt_request_email_subject' => '', -'receipt_status' => '', -'receipt_summary' => '', -'receipt_update_failed' => '', +'quota_exceeded' => '您的磁盤配額超出了[bytes]。', +'quota_is_disabled' => '當前在設置中禁用了配額支持。除非再次啟用,否則設置使用者配額將無效。', +'quota_warning' => '您的最大光盤使用量超出了[bytes]。請刪除文檔或以前的版本。', +'receipts_accepted' => '[no_receipts]張收據已被接受', +'receipts_accepted_latest' => '(最新版本為[no_receipts])', +'receipts_not_touched' => '[no_receipts]收據未觸及', +'receipts_not_touched_latest' => '(最新版本為[no_receipts])', +'receipts_rejected' => '[no_receipts]條收據已被拒絕', +'receipts_rejected_latest' => '(最新版本為[no_receipts])', +'receipts_without_group' => '無組收據', +'receipts_without_user' => '沒有使用者的收據', +'receipt_deletion_email_body' => '使用者已從收件人列表中刪除 +文件:[name] +版本:[version] +父文件夾:[folder_path] +收件人:[recipient] +使用者:[username] +網址:[url]', +'receipt_deletion_email_subject' => '[sitename]: [name] - 收件人已刪除', +'receipt_log' => '接待記錄', +'receipt_request_email_body' => '接待要求 +文件:[name] +版本:[version] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'receipt_request_email_subject' => '[sitename]: [name] - 接待要求', +'receipt_status' => '狀態', +'receipt_summary' => '收據摘要', +'receipt_update_failed' => '確認接收失敗', 'recent_uploads' => '最近上傳', -'reception' => '', -'reception_acknowleged' => '', -'reception_noaction' => '', -'reception_rejected' => '', -'recipients' => '', -'recipient_already_removed' => '', -'redraw' => '', +'reception' => '接待處', +'reception_acknowleged' => '接待確認', +'reception_noaction' => '沒有行動', +'reception_rejected' => '接待被拒絕', +'recipients' => '收件者', +'recipient_already_removed' => '收件人已被刪除或已知為收件人。', +'redraw' => '重畫', 'refresh' => '重新整理', 'rejected' => '拒絕', 'released' => '發佈', 'removed_approver' => '已經從審核人名單中刪除', 'removed_file_email' => '刪除附件', -'removed_file_email_body' => '', -'removed_file_email_subject' => '', -'removed_recipient' => '', +'removed_file_email_body' => '移除了附件 +文件:[document] +使用者:[username] +網址:[url]', +'removed_file_email_subject' => '[sitename]: [document] - 移除了附件', +'removed_recipient' => '已從收件人列表中刪除。', 'removed_reviewer' => '已經從校對人名單中刪除', -'removed_revisor' => '', -'removed_workflow_email_body' => '', -'removed_workflow_email_subject' => '', -'removeFolderFromDropFolder' => '', +'removed_revisor' => '已從修訂者列表中刪除。', +'removed_workflow_email_body' => '從文檔版本中刪除了工作流程 +文件:[name] +版本:[version] +工作流程:[workflow] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'removed_workflow_email_subject' => '[sitename]: [name] - 從文檔版本中刪除了工作流程', +'removeFolderFromDropFolder' => '導入後刪除文件夾', 'remove_marked_files' => '刪除勾選的檔案', -'repaired' => '', -'repairing_objects' => '', -'request_workflow_action_email_body' => '', -'request_workflow_action_email_subject' => '', -'reset_checkout' => '', -'restrict_access' => '', +'repaired' => '修復', +'repairing_objects' => '修復文檔和文件夾。', +'request_workflow_action_email_body' => '工作流程已達到需要您採取措施的狀態。 +文件:[name] +版本:[version] +工作流程:[workflow] +當前狀態:[current_state] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'request_workflow_action_email_subject' => '[sitename]: [name] - 需要採取的工作流程措施', +'reset_checkout' => '完成簽出', +'restrict_access' => '無法訪問', 'results_page' => '結果頁面', -'return_from_subworkflow' => '', -'return_from_subworkflow_email_body' => '', -'return_from_subworkflow_email_subject' => '', -'reverse_links' => '', +'return_from_subworkflow' => '返回子流程', +'return_from_subworkflow_email_body' => '從子工作流返回 +文件:[name] +版本:[version] +工作流程:[workflow] +子工作流程:[subworkflow] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'return_from_subworkflow_email_subject' => '[sitename]: [name] - 返回子流程', +'reverse_links' => '文檔,具有指向當前文檔的鏈接', 'reviewers' => '校對人', 'reviewer_already_assigned' => '已經被指派為校對人', 'reviewer_already_removed' => '已經從校對佇列中刪除或者已經提交校對', -'reviews_accepted' => '', -'reviews_accepted_latest' => '', -'reviews_not_touched' => '', -'reviews_not_touched_latest' => '', -'reviews_rejected' => '', -'reviews_rejected_latest' => '', -'reviews_without_group' => '', -'reviews_without_user' => '', +'reviews_accepted' => '[no_reviews]條評論已被接受', +'reviews_accepted_latest' => '(最新版本為[no_reviews])', +'reviews_not_touched' => '[no_reviews]條評論未觸及', +'reviews_not_touched_latest' => '(最新版本為[no_reviews])', +'reviews_rejected' => '[no_reviews]條評論已被拒絕', +'reviews_rejected_latest' => '(最新版本為[no_reviews])', +'reviews_without_group' => '群組沒有校對', +'reviews_without_user' => '使用者沒有校對', 'review_deletion_email' => '校對請求被刪除', -'review_deletion_email_body' => '', -'review_deletion_email_subject' => '', -'review_file' => '', +'review_deletion_email_body' => '審核請求已刪除 +文件:[name] +版本:[version] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'review_deletion_email_subject' => '[sitename]: [name] - 審核請求已刪除', +'review_file' => '檔案', 'review_group' => '校對組', 'review_log' => '檢閱紀錄', 'review_request_email' => '校對請求', -'review_request_email_body' => '', -'review_request_email_subject' => '', +'review_request_email_body' => '審查要求 +文件:[name] +版本:[version] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'review_request_email_subject' => '[sitename]: [name] - 審查要求', 'review_status' => '校對狀態', 'review_submit_email' => '提交校對', -'review_submit_email_body' => '', -'review_submit_email_subject' => '', +'review_submit_email_body' => '提交評論 +文件:[name] +版本:[version] +狀態:[status] +評論:[comment] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'review_submit_email_subject' => '[sitename]: [name] - 提交評論', 'review_summary' => '校對匯總', 'review_update_failed' => '錯誤 更新校對狀態.更新失敗', -'revise_document' => '', -'revise_document_on' => '', -'revisions_accepted' => '', -'revisions_accepted_latest' => '', -'revisions_not_touched' => '', -'revisions_not_touched_latest' => '', -'revisions_pending' => '', -'revisions_pending_latest' => '', -'revisions_rejected' => '', -'revisions_rejected_latest' => '', -'revisions_without_group' => '', -'revisions_without_user' => '', -'revision_date' => '', -'revision_log' => '', -'revision_request_email_body' => '', -'revision_request_email_subject' => '', -'revision_status' => '', +'revise_document' => '修改文件', +'revise_document_on' => '[date]文檔版本的下一修訂版', +'revisions_accepted' => '[no_revisions]個修訂已被接受', +'revisions_accepted_latest' => '(最新版本為[no_revisions])', +'revisions_not_touched' => '[no_revisions]修訂未涉及', +'revisions_not_touched_latest' => '(最新版本為[no_revisions])', +'revisions_pending' => '[no_revisions]個修訂版本將在將來發布', +'revisions_pending_latest' => '(最新版本為[no_revisions])', +'revisions_rejected' => '[no_revisions]個修訂已被拒絕', +'revisions_rejected_latest' => '(最新版本為[no_revisions])', +'revisions_without_group' => '沒有組的修訂', +'revisions_without_user' => '沒有使用者的修訂', +'revision_date' => '修訂日期', +'revision_log' => '修訂日誌', +'revision_request_email_body' => '修訂要求 +文件:[name] +版本:[version] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'revision_request_email_subject' => '[sitename]: [name] - 修訂要求', +'revision_status' => '狀態', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', -'revision_summary' => '', -'revisors' => '', -'revisor_already_assigned' => '', -'revisor_already_removed' => '', -'rewind_workflow' => '', -'rewind_workflow_email_body' => '', -'rewind_workflow_email_subject' => '', -'rewind_workflow_warning' => '', -'rm_attrdef' => '', -'rm_attrdefgroup' => '', -'rm_attr_value' => '', +'revision_summary' => '修訂摘要', +'revisors' => '修訂者', +'revisor_already_assigned' => '使用者已被分配為修訂者。', +'revisor_already_removed' => '修訂程序已經從修訂過程中刪除或已經修訂了文檔。', +'rewind_workflow' => '倒帶工作流程', +'rewind_workflow_email_body' => '工作流程已倒帶 +文件:[name] +版本:[version] +工作流程:[workflow] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'rewind_workflow_email_subject' => '[sitename]: [name] - 工作流程已倒帶', +'rewind_workflow_warning' => '如果將工作流程倒回其初始狀態,則該文檔的整個工作流程日誌將被刪除並且無法恢復。', +'rm_attrdef' => '刪除屬性定義', +'rm_attrdefgroup' => '刪除該屬性組', +'rm_attr_value' => '刪除值', 'rm_default_keyword_category' => '刪除類別', -'rm_document' => '刪除文檔', +'rm_document' => '刪除文件', 'rm_document_category' => '刪除分類', -'rm_event' => '', +'rm_event' => '刪除事件', 'rm_file' => '刪除檔', 'rm_folder' => '刪除資料夾', -'rm_from_clipboard' => '', +'rm_from_clipboard' => '從剪貼板中刪除', 'rm_group' => '刪除該組', -'rm_role' => '', -'rm_transmittal' => '', -'rm_transmittalitem' => '', -'rm_user' => '刪除該用戶', -'rm_user_from_processes' => '', +'rm_role' => '刪除這個角色', +'rm_task' => '', +'rm_transmittal' => '刪除傳送', +'rm_transmittalitem' => '移除項目', +'rm_user' => '刪除該使用者', +'rm_user_from_processes' => '從流程中刪除使用者', 'rm_version' => '刪除該版本', -'rm_workflow' => '', -'rm_workflow_action' => '', -'rm_workflow_state' => '', -'rm_workflow_warning' => '', +'rm_workflow' => '刪除流程', +'rm_workflow_action' => '刪除工作流程動作', +'rm_workflow_state' => '刪除工作流程狀態', +'rm_workflow_warning' => '您將要從文檔中刪除工作流程。這不能被撤消。', 'role' => '角色', 'role_admin' => '管理員', 'role_guest' => '來賓', -'role_info' => '', -'role_management' => '', -'role_name' => '', -'role_type' => '', -'role_user' => '用戶', +'role_info' => '資訊', +'role_management' => '角色管理', +'role_name' => '名字', +'role_type' => '角色類型', +'role_user' => '使用者', 'ro_RO' => '羅馬尼亞文', -'run_subworkflow' => '', -'run_subworkflow_email_body' => '', -'run_subworkflow_email_subject' => '', +'run_subworkflow' => '跑子流程', +'run_subworkflow_email_body' => '子工作流程已啟動 +文件:[name] +版本:[version] +工作流程:[workflow] +子工作流程:[subworkflow] +父文件夾:[folder_path] +使用者:[username] +網址:[url]', +'run_subworkflow_email_subject' => '[sitename]: [name] - 子流程啟動', 'ru_RU' => '俄語', 'saturday' => 'Saturday', -'saturday_abbr' => '', +'saturday_abbr' => 'Sa', 'save' => '保存', -'scheduler_class' => '', -'scheduler_class_description' => '', -'scheduler_class_parameter' => '', -'scheduler_class_tasks' => '', -'scheduler_task_mgr' => '', +'scheduler_class' => '類別', +'scheduler_class_description' => '描述', +'scheduler_class_parameter' => '參數', +'scheduler_class_tasks' => '類別的工作', +'scheduler_task_mgr' => '排程', 'search' => '搜索', -'search_fulltext' => '', +'search_fulltext' => '全文檢索', 'search_in' => '搜索於', 'search_mode_and' => '與模式', -'search_mode_documents' => '', -'search_mode_folders' => '', +'search_mode_documents' => '只文件', +'search_mode_folders' => '只資料夾', 'search_mode_or' => '或模式', -'search_no_results' => '沒有找到與您搜索添加相匹配的檔', +'search_no_results' => '沒有找到與您搜索新增相匹配的檔', 'search_query' => '搜索', -'search_report' => '找到 [count] 個文檔', -'search_report_fulltext' => '', +'search_report' => '找到 [doccount] 個文件和 [foldercount] 個目錄。耗時: [searchtime] 秒。', +'search_report_fulltext' => '找到 [doccount] 個文件', 'search_resultmode' => '搜尋結果', -'search_resultmode_both' => '', +'search_resultmode_both' => '文件和資料夾', 'search_results' => '搜索結果', -'search_results_access_filtered' => '搜索到得結果中可能包含受限訪問的文檔', +'search_results_access_filtered' => '搜索到得結果中可能包含受限訪問的文件', 'search_time' => '耗時:[time]秒', -'seconds' => '', +'seconds' => '秒', +'seeddms_info' => '', +'seeddms_version' => '', 'selection' => '選擇', -'select_attrdefgrp_show' => '', -'select_attribute_value' => '', +'select_attrdefgrp_show' => '選擇當展示時', +'select_attribute_value' => '選擇屬性值', 'select_category' => '選中分類', -'select_group' => '', +'select_group' => '選擇群', 'select_groups' => '點擊選擇組', 'select_grp_approvers' => '請點選審核人員群組', -'select_grp_ind_approvers' => '', -'select_grp_ind_notification' => '', -'select_grp_ind_recipients' => '', -'select_grp_ind_reviewers' => '', -'select_grp_ind_revisors' => '', -'select_grp_notification' => '', -'select_grp_recipients' => '', +'select_grp_ind_approvers' => '點擊選擇群組', +'select_grp_ind_notification' => '點擊選擇群組', +'select_grp_ind_recipients' => '點擊選擇群組', +'select_grp_ind_reviewers' => '點擊選擇群組', +'select_grp_ind_revisors' => '點擊選擇群組', +'select_grp_notification' => '單擊以選擇組通知', +'select_grp_recipients' => '單擊以選中收件人組', 'select_grp_reviewers' => '請點選校對人員群組', -'select_grp_revisors' => '', +'select_grp_revisors' => '單擊以選中修訂者組', 'select_ind_approvers' => '請點選單一的審核人', -'select_ind_notification' => '', -'select_ind_recipients' => '', +'select_ind_notification' => '單擊以選擇單個通知', +'select_ind_recipients' => '單擊以選擇單個收件人', 'select_ind_reviewers' => '請點選單一的校對人', -'select_ind_revisors' => '', +'select_ind_revisors' => '單擊以選中單個修訂者', 'select_one' => '選擇一個', -'select_user' => '', -'select_users' => '點擊選擇用戶', +'select_user' => '選擇使用者', +'select_users' => '點擊選擇使用者', 'select_value' => '選取值', -'select_workflow' => '', -'send_email' => '', -'send_login_data' => '', -'send_login_data_body' => '', -'send_login_data_subject' => '', -'send_test_mail' => '', +'select_workflow' => '選擇工作流程', +'send_email' => '寄送信件', +'send_login_data' => '寄送登入資料', +'send_login_data_body' => '登錄數據 + +登錄:[login] +名稱:[username] + +[comment]', +'send_login_data_subject' => '[sitename]: [login] - 您的登入資料', +'send_test_mail' => '寄送測試信件', 'september' => '九 月', 'sequence' => '次序', 'seq_after' => '在"[prevname]"之後', 'seq_end' => '末尾', 'seq_keep' => '當前', 'seq_start' => '首位', -'sessions' => '', -'setDateFromFile' => '', -'setDateFromFolder' => '', +'sessions' => '在線用戶', +'setDateFromFile' => '從導入的文件接管日期', +'setDateFromFolder' => '從導入的文件夾接管日期', 'settings' => '設置', -'settings_activate_module' => '', -'settings_activate_php_extension' => '', -'settings_adminIP' => '', -'settings_adminIP_desc' => '', +'settings_activate_module' => '激活模塊', +'settings_activate_php_extension' => '激活PHP擴展', +'settings_adminIP' => 'Admin IP', +'settings_adminIP_desc' => '如果設置,則管理員只能通過指定的IP地址登錄。留空以免失去訪問權限。注意:僅適用於本地身份驗證(無LDAP)', 'settings_Advanced' => '進階', -'settings_advancedAcl' => '', -'settings_advancedAcl_desc' => '', -'settings_allowChangeRevAppInProcess' => '', -'settings_allowChangeRevAppInProcess_desc' => '', -'settings_allowReviewerOnly' => '', -'settings_allowReviewerOnly_desc' => '', -'settings_apache_mod_rewrite' => '', -'settings_Authentication' => '', -'settings_autoLoginUser' => '', -'settings_autoLoginUser_desc' => '', -'settings_available_languages' => '', -'settings_available_languages_desc' => '', -'settings_backupDir' => '', -'settings_backupDir_desc' => '', -'settings_cacheDir' => '', -'settings_cacheDir_desc' => '', -'settings_Calendar' => '', -'settings_calendarDefaultView' => '', -'settings_calendarDefaultView_desc' => '', -'settings_cannot_disable' => '', -'settings_checkOutDir' => '', -'settings_checkOutDir_desc' => '', -'settings_cmdTimeout' => '', -'settings_cmdTimeout_desc' => '', -'settings_contentDir' => '', -'settings_contentDir_desc' => '', +'settings_advancedAcl' => '進階存取控制', +'settings_advancedAcl_desc' => '高級訪問控制將允許打開/關閉軟件的某些模塊。它不能用於文檔和文件夾的訪問權限。', +'settings_allowChangeRevAppInProcess' => '流程開始後允許更改審閱者/批准者', +'settings_allowChangeRevAppInProcess_desc' => '默認情況下,一旦提交了審核或批准,就不能再更改審核者和批准者。只要未發布或拒絕文檔,此選項將允許管理員執行此操作。', +'settings_allowReviewerOnly' => '只允許設置審閱者', +'settings_allowReviewerOnly_desc' => '如果允許在傳統的工作流程模式下僅設置審閱者而不設置批准者,則啟用此功能。', +'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', +'settings_apiKey' => '', +'settings_apiKey_desc' => '', +'settings_apiOrigin' => '', +'settings_apiOrigin_desc' => '', +'settings_apiUserId' => '', +'settings_apiUserId_desc' => '', +'settings_Authentication' => '認證設定', +'settings_autoLoginUser' => '自動登入', +'settings_autoLoginUser_desc' => '如果用戶尚未登錄,請使用此用戶ID進行訪問。這種訪問不會創建會話。', +'settings_available_languages' => '可使用的語言', +'settings_available_languages_desc' => '僅所選語言會被加載並顯示在語言選擇器中。默認語言將始終被加載。', +'settings_backupDir' => '備份目錄', +'settings_backupDir_desc' => '備份工具保存備份的目錄。如果未設置此目錄或無法訪問該目錄,則備份將保存在內容目錄中。', +'settings_cacheDir' => '緩存目錄', +'settings_cacheDir_desc' => '預覽圖像的存儲位置(最好選擇無法通過Web服務器訪問的目錄)', +'settings_Calendar' => '日曆設定', +'settings_calendarDefaultView' => '預設月曆檢視', +'settings_calendarDefaultView_desc' => '預設月曆檢視', +'settings_cannot_disable' => '無法刪除文件ENABLE_INSTALL_TOOL', +'settings_checkOutDir' => '簽出文件目錄', +'settings_checkOutDir_desc' => '如果檢出該文件,則在此目錄中復製文件的最新內容。如果您使用戶可以訪問此目錄,則他們可以編輯文件並在完成後將其重新簽入。', +'settings_cmdTimeout' => '外部命令超時', +'settings_cmdTimeout_desc' => '此持續時間(以秒為單位)確定何時終止外部命令(例如,用於創建全文本索引)。', +'settings_contentDir' => '內容目錄', +'settings_contentDir_desc' => '上載文件的存儲位置(最好選擇無法通過Web服務器訪問的目錄)', 'settings_contentOffsetDir' => '內容偏移目錄', 'settings_contentOffsetDir_desc' => '要解決在底層檔案系統的限制,一個新的目錄結構已制定了內容目錄(內容目錄)中存在的。這需要從它開始一個基本目錄。通常離開這個為默認設置,1048576,也可以是內(內容目錄)不存在任何數位或字串', -'settings_convertToPdf' => '', -'settings_convertToPdf_desc' => '', -'settings_cookieLifetime' => '', -'settings_cookieLifetime_desc' => '', -'settings_coreDir' => 'KME文檔系統核心目錄', -'settings_coreDir_desc' => '', -'settings_createCheckOutDir' => '', -'settings_createCheckOutDir_desc' => '', -'settings_createdatabase' => '', -'settings_createdirectory' => '', -'settings_currentvalue' => '', -'settings_Database' => '', -'settings_dbDatabase' => '', -'settings_dbDatabase_desc' => '', -'settings_dbDriver' => '', -'settings_dbDriver_desc' => '', -'settings_dbHostname' => '', -'settings_dbHostname_desc' => '', -'settings_dbPass' => '', -'settings_dbPass_desc' => '', -'settings_dbUser' => '', -'settings_dbUser_desc' => '', -'settings_dbVersion' => '', -'settings_defaultAccessDocs' => '', -'settings_defaultAccessDocs_desc' => '', -'settings_defaultDocPosition' => '', -'settings_defaultDocPosition_desc' => '', -'settings_defaultDocPosition_val_end' => '', -'settings_defaultDocPosition_val_start' => '', -'settings_defaultSearchMethod' => '', -'settings_defaultSearchMethod_desc' => '', -'settings_defaultSearchMethod_valdatabase' => '', -'settings_defaultSearchMethod_valfulltext' => '', -'settings_delete_install_folder' => '', -'settings_disableSelfEdit' => '', -'settings_disableSelfEdit_desc' => '', -'settings_disable_install' => '', +'settings_convertToPdf' => '將文檔轉換為PDF以進行預覽', +'settings_convertToPdf_desc' => '如果瀏覽器無法自然顯示文檔,則會顯示轉換為pdf的版本。', +'settings_cookieLifetime' => 'Cookie生存時間', +'settings_cookieLifetime_desc' => 'Cookie的生存時間(以秒為單位)。如果設置為0,則在關閉瀏覽器時將刪除cookie。', +'settings_coreDir' => 'KME文件系統核心目錄', +'settings_coreDir_desc' => 'SeedDMS_Core的路徑(可選)。如果您已將SeedDMS_Core安裝在PHP可以找到的位置,請將該字段留空。額外的PHP包含路徑', +'settings_createCheckOutDir' => '創建簽出目錄', +'settings_createCheckOutDir_desc' => '創建結帳目錄(如果不存在)', +'settings_createdatabase' => '創建數據庫表', +'settings_createdirectory' => '創建目錄', +'settings_currentvalue' => '當前值', +'settings_Database' => '資料庫設定', +'settings_dbDatabase' => '資料庫', +'settings_dbDatabase_desc' => '在安裝過程中輸入的數據庫名稱。除非必要,否則請勿編輯此字段,例如,如果數據庫已移動。', +'settings_dbDriver' => '資料庫類型', +'settings_dbDriver_desc' => '在安裝過程中輸入的正在使用的數據庫類型。除非由於主機更改而不得不遷移到其他類型的數據庫,否則不要編輯該字段。 adodb使用的DB-Driver的類型(請參閱adodb-readme)', +'settings_dbHostname' => '服務名稱', +'settings_dbHostname_desc' => '在安裝過程中輸入的數據庫主機名。除非絕對必要,否則不要編輯字段,例如,將數據庫轉移到新主機。', +'settings_dbPass' => '密碼', +'settings_dbPass_desc' => '在安裝過程中輸入的用於訪問數據庫的密碼。', +'settings_dbUser' => '使用者名稱', +'settings_dbUser_desc' => '在安裝過程中輸入的用於訪問數據庫的用戶名。除非絕對必要,否則不要編輯字段,例如,將數據庫轉移到新主機。', +'settings_dbVersion' => '數據庫架構太舊', +'settings_defaultAccessDocs' => '新文件的默認訪問權限', +'settings_defaultAccessDocs_desc' => '創建新文檔時,這將是默認的訪問權限。', +'settings_defaultDocPosition' => '創建文件時的位置', +'settings_defaultDocPosition_desc' => '這是創建文檔時文件夾中的默認位置。', +'settings_defaultDocPosition_val_end' => '結束', +'settings_defaultDocPosition_val_start' => '開始', +'settings_defaultSearchMethod' => '預設搜尋方式', +'settings_defaultSearchMethod_desc' => '默認搜索方法,當通過主菜單中的搜索表單開始搜索時。', +'settings_defaultSearchMethod_valdatabase' => '資料庫', +'settings_defaultSearchMethod_valfulltext' => '全文', +'settings_delete_install_folder' => '為了使用SeedDMS,必須在配置目錄中刪除文件ENABLE_INSTALL_TOOL', +'settings_disableSelfEdit' => '禁用自我編輯', +'settings_disableSelfEdit_desc' => '如果選中,則用戶無法編輯自己的個人資料', +'settings_disable_install' => '如果可能,刪除文件ENABLE_INSTALL_TOOL', 'settings_Display' => '顯示設定', -'settings_dropFolderDir' => '', -'settings_dropFolderDir_desc' => '', -'settings_Edition' => '', -'settings_editOnlineFileTypes' => '', -'settings_editOnlineFileTypes_desc' => '', -'settings_enable2FactorAuthentication' => '', -'settings_enable2FactorAuthentication_desc' => '', +'settings_dropFolderDir' => '存放文件夾的目錄', +'settings_dropFolderDir_desc' => '此目錄可用於將文件拖放到服務器的文件系統上並從那裡導入,而不是通過瀏覽器上傳。該目錄必須為每個被允許以這種方式導入文件的用戶包含一個子目錄。', +'settings_Edition' => '版本設置', +'settings_editOnlineFileTypes' => '編輯在線文件類型', +'settings_editOnlineFileTypes_desc' => '具有以下結尾或MIME類型之一的文件可以在線編輯(僅使用小寫字母)', +'settings_enable2FactorAuthentication' => '啟用兩因素身份驗證', +'settings_enable2FactorAuthentication_desc' => '啟用/禁用2因子身份驗證。用戶將需要在其手機上使用Google Authenticator。', 'settings_enableAcknowledgeWorkflow' => '', 'settings_enableAcknowledgeWorkflow_desc' => '', -'settings_enableAdminReceipt' => '', -'settings_enableAdminReceipt_desc' => '', -'settings_enableAdminRevApp' => '', -'settings_enableAdminRevApp_desc' => '', -'settings_enableCalendar' => '', -'settings_enableCalendar_desc' => '', -'settings_enableClipboard' => '', -'settings_enableClipboard_desc' => '', -'settings_enableConverting' => '', -'settings_enableConverting_desc' => '', -'settings_enableDebugMode' => '', -'settings_enableDebugMode_desc' => '', -'settings_enableDropFolderList' => '', -'settings_enableDropFolderList_desc' => '', -'settings_enableDropUpload' => '', -'settings_enableDropUpload_desc' => '', +'settings_enableAdminReceipt' => '允許管理員接收文件', +'settings_enableAdminReceipt_desc' => '如果希望管理員被列為文檔的收件人,請啟用此選項。', +'settings_enableAdminRevApp' => '允許管理員審核/批准', +'settings_enableAdminRevApp_desc' => '如果希望管理員被列為審閱者/批准者並進行工作流轉換,請啟用此選項。', +'settings_enableCalendar' => '啟動月曆', +'settings_enableCalendar_desc' => '啟用/禁用日曆', +'settings_enableClipboard' => '啟動剪貼簿', +'settings_enableClipboard_desc' => '在“查看文件夾”頁面上啟用/禁用剪貼簿', +'settings_enableConverting' => '啟動轉換', +'settings_enableConverting_desc' => '啟用/禁用文件轉換', +'settings_enableDebugMode' => '除錯模式', +'settings_enableDebugMode_desc' => '啟用此選項可打開調試模式,該模式將在管理工具中添加新菜單', +'settings_enableDropFolderList' => '啟用選單中放置文件夾中的文件列表', +'settings_enableDropFolderList_desc' => '打開放置文件夾中的文件列表。該列表顯示在主選單中。', +'settings_enableDropUpload' => '啟動快速上傳', +'settings_enableDropUpload_desc' => '啟用/禁用“查看文件夾”頁面上的拖放區域,以通過拖放方式上傳文件。', 'settings_enableDuplicateDocNames' => '允許重複的檔案名', -'settings_enableDuplicateDocNames_desc' => '', -'settings_enableDuplicateSubFolderNames' => '', -'settings_enableDuplicateSubFolderNames_desc' => '', -'settings_enableEmail' => '', -'settings_enableEmail_desc' => '', -'settings_enableFilterReceipt' => '', -'settings_enableFilterReceipt_desc' => '', -'settings_enableFolderTree' => '', -'settings_enableFolderTree_desc' => '', -'settings_enableFullSearch' => '', -'settings_enableFullSearch_desc' => '', -'settings_enableGuestAutoLogin' => '', -'settings_enableGuestAutoLogin_desc' => '', -'settings_enableGuestLogin' => '', -'settings_enableGuestLogin_desc' => '', -'settings_enableHelp' => '', -'settings_enableHelp_desc' => '', -'settings_enableLanguageSelector' => '', -'settings_enableLanguageSelector_desc' => '', -'settings_enableLargeFileUpload' => '', -'settings_enableLargeFileUpload_desc' => '', -'settings_enableMenuTasks' => '', -'settings_enableMenuTasks_desc' => '', -'settings_enableMultiUpload' => '', -'settings_enableMultiUpload_desc' => '', -'settings_enableNotificationAppRev' => '', -'settings_enableNotificationAppRev_desc' => '', -'settings_enableNotificationWorkflow' => '', -'settings_enableNotificationWorkflow_desc' => '', -'settings_enableOwnerNotification' => '', -'settings_enableOwnerNotification_desc' => '', -'settings_enableOwnerReceipt' => '', -'settings_enableOwnerReceipt_desc' => '', -'settings_enableOwnerRevApp' => '', -'settings_enableOwnerRevApp_desc' => '', -'settings_enablePasswordForgotten' => '', -'settings_enablePasswordForgotten_desc' => '', -'settings_enableReceiptReject' => '', -'settings_enableReceiptReject_desc' => '', -'settings_enableReceiptWorkflow' => '', -'settings_enableReceiptWorkflow_desc' => '', -'settings_enableRecursiveCount' => '', -'settings_enableRecursiveCount_desc' => '', -'settings_enableRevisionOneVoteReject' => '', -'settings_enableRevisionOneVoteReject_desc' => '', +'settings_enableDuplicateDocNames_desc' => '允許文件夾中有重複的文檔名稱。', +'settings_enableDuplicateSubFolderNames' => '允許重複的子文件夾名稱', +'settings_enableDuplicateSubFolderNames_desc' => '允許文件夾中有重複的子文件夾名稱。', +'settings_enableEmail' => '啟動 E-mail', +'settings_enableEmail_desc' => '啟用/禁用自動電子郵件通知', +'settings_enableFilterReceipt' => '從接待清單中過濾出所有者,審閱者,...', +'settings_enableFilterReceipt_desc' => '啟用,以便在選擇了組成員的情況下從接收列表中過濾掉某些收件人。', +'settings_enableFolderTree' => '啟動目錄樹', +'settings_enableFolderTree_desc' => '在“查看文件夾”頁面上啟用/禁用目錄樹', +'settings_enableFullSearch' => '啟動全文檢索', +'settings_enableFullSearch_desc' => '啟用全文搜索', +'settings_enableGuestAutoLogin' => '為訪客啟用自動登錄', +'settings_enableGuestAutoLogin_desc' => '如果啟用了訪客登錄和自動登錄,則訪客將自動登錄。', +'settings_enableGuestLogin' => '啟用訪客登錄', +'settings_enableGuestLogin_desc' => '如果您希望任何人以訪客身份登錄,請選中此選項。注意:訪客登錄僅應在受信任的環境中使用', +'settings_enableHelp' => '啟動幫助', +'settings_enableHelp_desc' => '啟用/禁用菜單中幫助屏幕的鏈接', +'settings_enableLanguageSelector' => '啟用語言選擇器', +'settings_enableLanguageSelector_desc' => '登錄後顯示用戶界面語言的選擇器。', +'settings_enableLargeFileUpload' => '啟用大文件上傳', +'settings_enableLargeFileUpload_desc' => '如果設置了該選項,則還可以通過一個名為Jumploader的Java小程序來上傳文件,而瀏覽器沒有設置文件大小限制。它還允許一步上傳幾個文件。啟用此功能將關閉僅HTTP cookie。', +'settings_enableMenuTasks' => '在菜單中啟用任務列表', +'settings_enableMenuTasks_desc' => '啟用/禁用包含用戶所有任務的菜單項。其中包含需要審查,批准等的文件。', +'settings_enableMultiUpload' => '允許上傳多個文件', +'settings_enableMultiUpload_desc' => '創建新文檔時,可以上傳多個文件。每個都將創建一個新文檔。', +'settings_enableNotificationAppRev' => '啟用審閱者/批准者通知', +'settings_enableNotificationAppRev_desc' => '新增新文檔版本時,選擇發送通知給審閱者/批准者', +'settings_enableNotificationWorkflow' => '在下一個工作流程過渡中向用戶發送通知', +'settings_enableNotificationWorkflow_desc' => '如果啟用此選項,則將通知需要在下一個工作流程轉換中執行操作的用戶和組。即使他們尚未為文檔添加通知。', +'settings_enableOwnerNotification' => '默認啟用所有者通知', +'settings_enableOwnerNotification_desc' => '如果添加了文檔,請檢查是否為所有者添加了通知。', +'settings_enableOwnerReceipt' => '允許所有者接收文件', +'settings_enableOwnerReceipt_desc' => '如果您希望將文檔所有者列為收件人,請啟用此選項。', +'settings_enableOwnerRevApp' => '允許所有者審查/批准', +'settings_enableOwnerRevApp_desc' => '如果您希望文檔的所有者被列為審閱者/批准者並進行工作流轉換,請啟用此選項。', +'settings_enablePasswordForgotten' => '啟動密碼忘記', +'settings_enablePasswordForgotten_desc' => '如果要允許用戶設置新密碼並通過郵件發送,請選中此選項。', +'settings_enableReceiptReject' => '啟用拒絕接收', +'settings_enableReceiptReject_desc' => '啟用,打開拒絕接收。', +'settings_enableReceiptWorkflow' => '啟用確認文件接收', +'settings_enableReceiptWorkflow_desc' => '啟用,打開工作流程以確認文檔接收。', +'settings_enableRecursiveCount' => '啟用遞歸文檔/文件夾計數', +'settings_enableRecursiveCount_desc' => '如果啟用,將通過遞歸處理文件夾併計數允許用戶訪問的那些文件和文件夾來計算所有對象,從而確定文件夾視圖中的文件和文件夾的數量。', +'settings_enableRevisionOneVoteReject' => '被一名審查員拒絕', +'settings_enableRevisionOneVoteReject_desc' => '如果啟用,則在第一個修訂者拒絕文檔後,文檔狀態將設置為“需要更正”。如果禁用,則在所有修訂者完成修訂之前,文檔狀態不會更改。', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', -'settings_enableRevisionWorkflow' => '', -'settings_enableRevisionWorkflow_desc' => '', -'settings_enableSelfReceipt' => '', -'settings_enableSelfReceipt_desc' => '', -'settings_enableSelfRevApp' => '', -'settings_enableSelfRevApp_desc' => '', -'settings_enableSessionList' => '', -'settings_enableSessionList_desc' => '', -'settings_enableThemeSelector' => '', -'settings_enableThemeSelector_desc' => '', -'settings_enableUpdateReceipt' => '', -'settings_enableUpdateReceipt_desc' => '', -'settings_enableUpdateRevApp' => '', -'settings_enableUpdateRevApp_desc' => '', -'settings_enableUserImage' => '', -'settings_enableUserImage_desc' => '', -'settings_enableUsersView' => '', -'settings_enableUsersView_desc' => '', -'settings_enableVersionDeletion' => '', -'settings_enableVersionDeletion_desc' => '', -'settings_enableVersionModification' => '', -'settings_enableVersionModification_desc' => '', -'settings_enableWebdavReplaceDoc' => '', -'settings_enableWebdavReplaceDoc_desc' => '', -'settings_enableXsendfile' => '', -'settings_enableXsendfile_desc' => '', -'settings_encryptionKey' => '', -'settings_encryptionKey_desc' => '', -'settings_error' => '', -'settings_expandFolderTree' => '', -'settings_expandFolderTree_desc' => '', -'settings_expandFolderTree_val0' => '', -'settings_expandFolderTree_val1' => '', -'settings_expandFolderTree_val2' => '', +'settings_enableRevisionWorkflow' => '啟用文件修訂', +'settings_enableRevisionWorkflow_desc' => '啟用,以便能夠在給定時間段後運行工作流程以修改文檔。', +'settings_enableSelfReceipt' => '允許接收已登錄用戶的文檔', +'settings_enableSelfReceipt_desc' => '如果希望將當前登錄的用戶列為文檔的收件人,請啟用此選項。', +'settings_enableSelfRevApp' => '允許對登錄用戶進行審核/批准', +'settings_enableSelfRevApp_desc' => '如果要將當前登錄的用戶列為審閱者/批准者並進行工作流轉換,請啟用此選項。', +'settings_enableSessionList' => '在菜單中啟用在線用戶列表', +'settings_enableSessionList_desc' => '在菜單中啟用當前登錄用戶的列表。', +'settings_enableThemeSelector' => '主題選擇', +'settings_enableThemeSelector_desc' => '打開/關閉登錄頁面上的主題選擇器。', +'settings_enableUpdateReceipt' => '允許編輯現有接收', +'settings_enableUpdateReceipt_desc' => '如果進行接收的用戶可能會更改決定,請啟用此功能。', +'settings_enableUpdateRevApp' => '允許編輯現有的審核/批准', +'settings_enableUpdateRevApp_desc' => '如果進行了審核/批准的用戶可以更改決策,只要當前工作流程步驟尚未完成,請啟用此功能。', +'settings_enableUserImage' => '啟用使用者圖像', +'settings_enableUserImage_desc' => '啟用使用者圖像', +'settings_enableUsersView' => '啟用使用者視圖', +'settings_enableUsersView_desc' => '為所有用戶啟用/禁用組和用戶視圖', +'settings_enableVersionDeletion' => '啟用刪除以前的版本', +'settings_enableVersionDeletion_desc' => '啟用/禁用普通用戶刪除以前的文檔版本。管理員可能總是刪除舊版本。', +'settings_enableVersionModification' => '啟用版本修改', +'settings_enableVersionModification_desc' => '上載版本後,由普通用戶啟用/禁用對文檔版本的修改。管理員可以在上傳後隨時修改版本。', +'settings_enableWebdavReplaceDoc' => '保存時替換文件', +'settings_enableWebdavReplaceDoc_desc' => '如果啟用,則保存文檔的新版本將替換舊文檔,而不是創建新版本。僅當用戶,mimetype和文件名等於上一個版本時才適用。當應用程序以固定間隔自動保存文檔時,這可能很有用。', +'settings_enableXsendfile' => '使用apache xsendfile模塊', +'settings_enableXsendfile_desc' => '如果設置了此選項並且安裝了apache模塊xsendfile,它將用於傳送映像。', +'settings_encryptionKey' => '加密金鑰', +'settings_encryptionKey_desc' => '該字符串用於創建唯一的標識符,該標識符作為隱藏字段添加到表單中,以防止CSRF攻擊。', +'settings_error' => '錯誤', +'settings_expandFolderTree' => '展開文件樹', +'settings_expandFolderTree_desc' => '展開文件樹', +'settings_expandFolderTree_val0' => '從隱藏的樹開始', +'settings_expandFolderTree_val1' => '從顯示的樹開始,展開第一級', +'settings_expandFolderTree_val2' => '從顯示完全展開的樹開始', 'settings_Extensions' => '延伸功能', 'settings_extraPath' => '額外的PHP的include路徑', 'settings_extraPath_desc' => '附加軟體的路徑。這是包含目錄,例如在ADODB目錄或額外的PEAR包', -'settings_firstDayOfWeek' => '', -'settings_firstDayOfWeek_desc' => '', +'settings_firstDayOfWeek' => '一周的第一天', +'settings_firstDayOfWeek_desc' => '一周的第一天', 'settings_footNote' => '頁尾註解', -'settings_footNote_desc' => '', -'settings_fullSearchEngine' => '', -'settings_fullSearchEngine_desc' => '', +'settings_footNote_desc' => '消息顯示在每頁底部', +'settings_fullSearchEngine' => '全文檢索引擎', +'settings_fullSearchEngine_desc' => '設置用於全文搜索的方法。', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', -'settings_guestID' => '', -'settings_guestID_desc' => '', -'settings_httpRoot' => '', -'settings_httpRoot_desc' => '', -'settings_incItemsPerPage' => '', -'settings_incItemsPerPage_desc' => '', -'settings_initialDocumentStatus' => '', -'settings_initialDocumentStatus_desc' => '', -'settings_initialDocumentStatus_draft' => '', -'settings_initialDocumentStatus_released' => '', -'settings_installADOdb' => '', -'settings_install_disabled' => '', -'settings_install_pear_package_log' => '', -'settings_install_pear_package_webdav' => '', -'settings_install_success' => '', -'settings_install_welcome_text' => '', -'settings_install_welcome_title' => '', -'settings_install_zendframework' => '', -'settings_language' => '', -'settings_language_desc' => '', -'settings_libraryFolder' => '', -'settings_libraryFolder_desc' => '', -'settings_logFileEnable' => '', -'settings_logFileEnable_desc' => '', -'settings_logFileRotation' => '', -'settings_logFileRotation_desc' => '', -'settings_loginFailure' => '', -'settings_loginFailure_desc' => '', +'settings_guestID' => 'Guest ID', +'settings_guestID_desc' => '以訪客身份登錄時使用的訪客用戶ID(通常無需更改)', +'settings_httpRoot' => 'Http Root', +'settings_httpRoot_desc' => 'URL中的相對路徑,在域部分之後。不要包含http://前綴或Web主機名。例如如果完整的URL是http://www.example.com/seeddms/,則設置\'/ seeddms / \'。如果網址為http://www.example.com/,則設置\'/ \'', +'settings_incItemsPerPage' => '頁面末加載的條目數', +'settings_incItemsPerPage_desc' => '如果文件夾和文檔的數量受到限制,則當向下滾動到視圖文件夾頁面的底部時,這將設置額外加載的對象的數量。將此設置為0,將加載與最初加載的對像數量相同的對象。', +'settings_initialDocumentStatus' => '初始文件狀態', +'settings_initialDocumentStatus_desc' => '添加文檔時將設置此狀態。', +'settings_initialDocumentStatus_draft' => '草案', +'settings_initialDocumentStatus_released' => '已發布', +'settings_installADOdb' => '安裝 ADOdb', +'settings_install_disabled' => '文件ENABLE_INSTALL_TOOL已刪除。現在,您可以登錄SeedDMS並進行進一步的配置。', +'settings_install_pear_package_log' => '安裝Pear軟件包\'Log \'', +'settings_install_pear_package_webdav' => '如果您打算使用webdav界面,請安裝Pear包\'HTTP_WebDAV_Server \'', +'settings_install_success' => '安裝已成功完成。', +'settings_install_welcome_text' => '

開始安裝SeedDMS之前,請確保已在配置目錄中創建文件\'ENABLE_INSTALL_TOOL ,否則安裝將無法進行。在Unix系統上,可以使用\'touch conf / ENABLE_INSTALL_TOOL \'輕鬆完成。安裝完成後,刪除文件。

SeedDMS的要求非常低。您將需要mysql數據庫或sqlite支持以及啟用了php的Web服務器。梨包Log也必須安裝。對於lucene全文搜索,您還需要將Zend框架安裝在光盤上,而php可以找到它。對於WebDAV服務器,您還將需要HTTP_WebDAV_Server。以後可以在安裝過程中設置它的路徑。

如果您想在開始安裝之前創建數據庫,則只需使用自己喜歡的工具手動創建它,或者創建一個具有數據庫訪問權限的數據庫用戶並在配置目錄中導入數據庫轉儲之一。安裝腳本也可以為您執行此操作,但是需要具有足夠權限的數據庫訪問權限才能創建數據庫。', +'settings_install_welcome_title' => '歡迎安裝SeedDMS', +'settings_install_zendframework' => '如果您打算使用基於zend的全文本搜索引擎,請安裝Zend Framework。否則,請忽略此消息並繼續安裝。', +'settings_language' => '預設的語系', +'settings_language_desc' => '默認語言(“語言”文件夾中子文件夾的名稱)', +'settings_libraryFolder' => '函式庫目錄', +'settings_libraryFolder_desc' => '可以在其中復製文檔以創建新文檔的文件夾。', +'settings_logFileEnable' => '日誌文件啟用', +'settings_logFileEnable_desc' => '啟用/禁用日誌文件', +'settings_logFileRotation' => '日誌文件輪換', +'settings_logFileRotation_desc' => '日誌文件輪換', +'settings_loginFailure' => '登錄失敗', +'settings_loginFailure_desc' => 'n次登錄失敗後禁用帳戶。', 'settings_luceneClassDir' => 'Lucene的SeedDMS目錄', -'settings_luceneClassDir_desc' => '', -'settings_luceneDir' => '', -'settings_luceneDir_desc' => '', +'settings_luceneClassDir_desc' => 'SeedDMS_Lucene的路徑(可選)。如果您已在PHP可以找到SeedDMS_Lucene的位置安裝了該字段,請將該字段留空。額外的PHP包含路徑', +'settings_luceneDir' => '全文索引目錄', +'settings_luceneDir_desc' => 'Lucene索引的路徑', 'settings_maxDirID' => '最大目錄編號', 'settings_maxDirID_desc' => '每個父目錄的子目錄的最大數目。預設值:0。', 'settings_maxExecutionTime' => '最大執行時間(秒)', 'settings_maxExecutionTime_desc' => '此設置最長時間,以秒為腳本允許運行之前它是由解析終止', -'settings_maxItemsPerPage' => '', -'settings_maxItemsPerPage_desc' => '', -'settings_maxRecursiveCount' => '', -'settings_maxRecursiveCount_desc' => '', -'settings_maxSizeForFullText' => '', -'settings_maxSizeForFullText_desc' => '', -'settings_maxUploadSize' => '', -'settings_maxUploadSize_desc' => '', -'settings_more_settings' => '', -'settings_noDocumentFormFields' => '', -'settings_noDocumentFormFields_desc' => '', -'settings_notfound' => '', +'settings_maxItemsPerPage' => '最高頁面上的條目數', +'settings_maxItemsPerPage_desc' => '限制查看文件夾頁面上顯示的文件夾和文檔的數量。滾動到頁面末尾時,將加載更多對象。設置為0總是顯示所有對象。', +'settings_maxRecursiveCount' => '最高遞歸文檔/文件夾數', +'settings_maxRecursiveCount_desc' => '這是遞歸計數對象時將檢查其訪問權限的最大文檔或文件夾數。如果超過此數量,則將估算文件夾視圖中的文檔和文件夾數量。', +'settings_maxSizeForFullText' => '即時索引的最大文件大小', +'settings_maxSizeForFullText_desc' => '上傳後,所有小於配置大小的新文檔版本都會被完全索引。在所有其他情況下,僅元數據將被索引。', +'settings_maxUploadSize' => '上載文件的最大大小', +'settings_maxUploadSize_desc' => '這是上傳文件的最大大小。這將對文檔版本和附件產生影響。', +'settings_more_settings' => '配置更多設置。默認登錄名:admin / admin', +'settings_noDocumentFormFields' => '不顯示此字段', +'settings_noDocumentFormFields_desc' => '添加或編輯文檔時不會顯示此字段。現有值將保留。', +'settings_notfound' => '找不到', 'settings_Notification' => '通知設置', -'settings_notwritable' => '', -'settings_no_content_dir' => '', -'settings_onePageMode' => '', -'settings_onePageMode_desc' => '', -'settings_overrideMimeType' => '', -'settings_overrideMimeType_desc' => '', -'settings_partitionSize' => '', -'settings_partitionSize_desc' => '', -'settings_passwordExpiration' => '', -'settings_passwordExpiration_desc' => '', -'settings_passwordHistory' => '', -'settings_passwordHistory_desc' => '', -'settings_passwordStrength' => '', -'settings_passwordStrengthAlgorithm' => '', -'settings_passwordStrengthAlgorithm_desc' => '', -'settings_passwordStrengthAlgorithm_valadvanced' => '', -'settings_passwordStrengthAlgorithm_valsimple' => '', -'settings_passwordStrength_desc' => '', -'settings_pear_log' => '', -'settings_pear_webdav' => '', -'settings_perms' => '', -'settings_php_dbDriver' => '', -'settings_php_gd2' => '', -'settings_php_mbstring' => '', -'settings_php_version' => '', -'settings_presetExpirationDate' => '', -'settings_presetExpirationDate_desc' => '', -'settings_previewWidthDetail' => '', -'settings_previewWidthDetail_desc' => '', -'settings_previewWidthDropFolderList' => '', -'settings_previewWidthDropFolderList_desc' => '', -'settings_previewWidthList' => '', -'settings_previewWidthList_desc' => '', -'settings_previewWidthMenuList' => '', -'settings_previewWidthMenuList_desc' => '', -'settings_printDisclaimer' => '', -'settings_printDisclaimer_desc' => '', -'settings_proxyUPassword' => '', -'settings_proxyUPassword_desc' => '', -'settings_proxyUrl' => '', -'settings_proxyUrl_desc' => '', -'settings_proxyUser' => '', -'settings_proxyUser_desc' => '', -'settings_quota' => '', -'settings_quota_desc' => '', -'settings_removeFromDropFolder' => '', -'settings_removeFromDropFolder_desc' => '', -'settings_repositoryUrl' => '', -'settings_repositoryUrl_desc' => '', -'settings_restricted' => '', -'settings_restricted_desc' => '', -'settings_rootDir' => '', -'settings_rootDir_desc' => '', -'settings_rootFolderID' => '', -'settings_rootFolderID_desc' => '', -'settings_SaveError' => '', -'settings_Server' => '', -'settings_showFullPreview' => '', -'settings_showFullPreview_desc' => '', -'settings_showMissingTranslations' => '', -'settings_showMissingTranslations_desc' => '', -'settings_showSingleSearchHit' => '', -'settings_showSingleSearchHit_desc' => '', +'settings_notwritable' => '由於配置文件不可寫,因此無法保存配置。', +'settings_no_content_dir' => '內容目錄', +'settings_onePageMode' => '單一頁面模式', +'settings_onePageMode_desc' => '單一頁面模式將打開ViewFolder頁面上的javascript代碼,當單擊文件夾或更改排序參數時,該代碼將更新文件夾/文檔列表,導航等。', +'settings_overrideMimeType' => '覆蓋MimeType', +'settings_overrideMimeType_desc' => '如果上傳了文件,則覆蓋瀏覽器提供的MimeType。新的MimeType由SeedDMS本身確定。', +'settings_partitionSize' => '部分文件大小', +'settings_partitionSize_desc' => '由Jumploader上傳的部分文件的大小(以字節為單位)。請勿將值設置為大於服務器設置的最大上傳大小。', +'settings_passwordExpiration' => '密碼過期', +'settings_passwordExpiration_desc' => '密碼過期的天數,必須重設。 0關閉密碼過期。', +'settings_passwordHistory' => '密碼記錄', +'settings_passwordHistory_desc' => '在可以重複使用密碼之前,用戶必須已使用的密碼數。 0關閉密碼歷史記錄。', +'settings_passwordStrength' => '最小密碼強度', +'settings_passwordStrengthAlgorithm' => '密碼強度算法', +'settings_passwordStrengthAlgorithm_desc' => '用於計算密碼強度的算法。 “簡單”算法僅檢查總共至少八個字符,一個小寫字母,一個大寫字母,一個數字和一個特殊字符。如果滿足這些條件,則返回的分數為100,否則為0。', +'settings_passwordStrengthAlgorithm_valadvanced' => '進階', +'settings_passwordStrengthAlgorithm_valsimple' => '簡易', +'settings_passwordStrength_desc' => '最小密碼強度是從0到100的整數值。將其設置為0將關閉對最小密碼強度的檢查。', +'settings_pear_log' => 'Pear package : Log', +'settings_pear_webdav' => 'Pear package : HTTP_WebDAV_Server', +'settings_perms' => '權限', +'settings_php_dbDriver' => 'PHP擴展名:php_ \'查看當前值\'', +'settings_php_gd2' => 'PHP extension : php_gd2', +'settings_php_mbstring' => 'PHP extension : php_mbstring', +'settings_php_version' => 'PHP 版本', +'settings_presetExpirationDate' => '預設到期日期', +'settings_presetExpirationDate_desc' => '所有新上傳的文檔的有效期都將設置為此值。輸入的日期可以由PHP的strtotime()函數指定,例如+5週。', +'settings_previewWidthDetail' => '預覽圖像的寬度(詳細資訊)', +'settings_previewWidthDetail_desc' => '詳細資訊頁面上顯示的預覽圖像的寬度', +'settings_previewWidthDropFolderList' => '預覽圖像的寬度(下拉列表)', +'settings_previewWidthDropFolderList_desc' => '從放置文件夾中選擇文件時,列表中顯示的預覽圖像的寬度。', +'settings_previewWidthList' => '預覽圖像的寬度(列表)', +'settings_previewWidthList_desc' => '列表中顯示的預覽圖像的寬度', +'settings_previewWidthMenuList' => '預覽圖像的寬度(菜單列表)', +'settings_previewWidthMenuList_desc' => '在放置文件夾菜單中顯示為項目的預覽圖像的寬度。', +'settings_printDisclaimer' => '印刷免責聲明', +'settings_printDisclaimer_desc' => '如果啟用,則免責聲明消息將打印在每頁底部', +'settings_proxyUPassword' => '代理密碼', +'settings_proxyUPassword_desc' => '代理驗證密碼', +'settings_proxyUrl' => '代理網址', +'settings_proxyUrl_desc' => '用於訪問擴展存儲庫的代理的URL。', +'settings_proxyUser' => '代理使用的用戶名', +'settings_proxyUser_desc' => '用於代理身份驗證的用戶名', +'settings_quota' => '用戶配額', +'settings_quota_desc' => '用戶在磁盤上可以使用的最大字節數。將此設置為0可獲得無限的磁盤空間。可以為每個用戶的個人資料覆蓋此值。', +'settings_removeFromDropFolder' => '成功上傳後從放置文件夾中刪除文件', +'settings_removeFromDropFolder_desc' => '如果成功上傳後應刪除從放置文件夾中提取的文件,請啟用此選項。', +'settings_repositoryUrl' => '數據庫的URL', +'settings_repositoryUrl_desc' => '擴展庫的URL', +'settings_restricted' => '禁止進入', +'settings_restricted_desc' => '僅當用戶在本地數據庫中有條目時才允許登錄(與LDAP成功身份驗證無關)', +'settings_rootDir' => '根目錄', +'settings_rootDir_desc' => 'SeedDMS所在的路徑', +'settings_rootFolderID' => '根文件夾ID', +'settings_rootFolderID_desc' => '根文件夾的ID(通常無需更改)', +'settings_SaveError' => '配置文件保存錯誤', +'settings_Server' => '服務器設定', +'settings_showFullPreview' => '顯示完整文件', +'settings_showFullPreview_desc' => '如果瀏覽器有能力,則在詳細資訊頁面上啟用/禁用文檔的完整預覽。', +'settings_showMissingTranslations' => '顯示缺少的翻譯', +'settings_showMissingTranslations_desc' => '在頁面底部的頁面上列出所有缺少的翻譯。登錄的用戶將能夠為缺少的翻譯提交提案,該提案將保存在csv文件中。如果在生產環境中,請勿打開此功能!', +'settings_showSingleSearchHit' => '直接跳轉到單個搜索命中', +'settings_showSingleSearchHit_desc' => '如果搜索結果僅命中一次,那麼它將立即顯示,而不是結果列表。', 'settings_Site' => '站台', 'settings_siteDefaultPage' => '網站的默認頁', -'settings_siteDefaultPage_desc' => '', +'settings_siteDefaultPage_desc' => '登錄時的默認頁面。如果為空,則默認為out / out.ViewFolder.php', 'settings_siteName' => '站台名稱', -'settings_siteName_desc' => '', +'settings_siteName_desc' => '頁面標題中使用的站點名稱。默認值:SeedDMS', 'settings_SMTP' => 'SMTP 伺服器設定', -'settings_smtpPassword' => '', -'settings_smtpPassword_desc' => '', +'settings_smtpPassword' => 'SMTP服務器密碼', +'settings_smtpPassword_desc' => 'SMTP服務器密碼', 'settings_smtpPort' => 'SMTP 伺服器埠', 'settings_smtpPort_desc' => 'SMTP 伺服器埠,默認25', 'settings_smtpSendFrom' => '發送自', 'settings_smtpSendFrom_desc' => '發送自', -'settings_smtpSendTestMail' => '', -'settings_smtpSendTestMail_desc' => '', +'settings_smtpSendTestMail' => '寄送測試信箱', +'settings_smtpSendTestMail_desc' => '發送測試郵件,以檢查當前的電子郵件配置。', 'settings_smtpServer' => 'SMTP 伺服器名稱', 'settings_smtpServer_desc' => 'SMTP 伺服器名稱', -'settings_smtpUser' => '', -'settings_smtpUser_desc' => '', -'settings_sortFoldersDefault' => '', -'settings_sortFoldersDefault_desc' => '', -'settings_sortFoldersDefault_val_name' => '按名称', -'settings_sortFoldersDefault_val_sequence' => '', +'settings_smtpUser' => 'SMTP服務器用戶', +'settings_smtpUser_desc' => 'SMTP服務器用戶', +'settings_sortFoldersDefault' => '預設排序', +'settings_sortFoldersDefault_desc' => '這將在文件夾視圖中設置文件夾和文檔的排序方法。', +'settings_sortFoldersDefault_val_name' => '按名稱', +'settings_sortFoldersDefault_val_sequence' => '按順序', 'settings_sortFoldersDefault_val_unsorted' => '不排序', -'settings_sortUsersInList' => '', -'settings_sortUsersInList_desc' => '', -'settings_sortUsersInList_val_fullname' => '', -'settings_sortUsersInList_val_login' => '', -'settings_stagingDir' => '', -'settings_stagingDir_desc' => '', -'settings_start_install' => '', -'settings_stopWordsFile' => '', -'settings_stopWordsFile_desc' => '', -'settings_strictFormCheck' => '', -'settings_strictFormCheck_desc' => '', -'settings_suggestionvalue' => '', +'settings_sortUsersInList' => '在列表中對用戶排序', +'settings_sortUsersInList_desc' => '設置選擇菜單中的用戶是按登錄名還是全名排序', +'settings_sortUsersInList_val_fullname' => '按全名排序', +'settings_sortUsersInList_val_login' => '按登錄排序', +'settings_stagingDir' => '部分上傳目錄', +'settings_stagingDir_desc' => '在目錄中,jumploader將文件上載的各個部分放回原處。', +'settings_start_install' => '開始安裝', +'settings_stopWordsFile' => '停用詞文件的路徑', +'settings_stopWordsFile_desc' => '如果啟用了全文搜索,則此文件將包含未索引的停用詞', +'settings_strictFormCheck' => '嚴格的表格檢查', +'settings_strictFormCheck_desc' => '嚴格的表格檢查。如果設置為true,則將檢查表單中的所有字段的值。如果設置為false,則(大多數)註釋和關鍵字字段變為可選。提交評論或覆蓋文檔狀態時始終需要評論', +'settings_suggestionvalue' => '建議值', 'settings_System' => '系統', -'settings_tasksInMenu' => '', -'settings_tasksInMenu_approval' => '', -'settings_tasksInMenu_desc' => '', -'settings_tasksInMenu_needscorrection' => '', -'settings_tasksInMenu_receipt' => '', -'settings_tasksInMenu_review' => '', -'settings_tasksInMenu_revision' => '', -'settings_tasksInMenu_workflow' => '', -'settings_theme' => '', -'settings_theme_desc' => '', -'settings_titleDisplayHack' => '', -'settings_titleDisplayHack_desc' => '', -'settings_undelUserIds' => '', -'settings_undelUserIds_desc' => '', -'settings_updateDatabase' => '', +'settings_tasksInMenu' => '選定的任務', +'settings_tasksInMenu_approval' => '批准書', +'settings_tasksInMenu_desc' => '選擇要計算的那些任務。如果未選擇任何一項,則將計算所有任務。', +'settings_tasksInMenu_needscorrection' => '需要更正', +'settings_tasksInMenu_receipt' => '收據', +'settings_tasksInMenu_review' => '預覽', +'settings_tasksInMenu_revision' => '修訂版', +'settings_tasksInMenu_workflow' => '工作流程', +'settings_theme' => '預設外觀', +'settings_theme_desc' => '默認樣式(文件夾“styles”中子文件夾的名稱)', +'settings_titleDisplayHack' => '標題顯示黑客', +'settings_titleDisplayHack_desc' => '超過兩行的頁面標題的解決方法。', +'settings_undelUserIds' => '不可刪除的用戶ID', +'settings_undelUserIds_desc' => '以逗號分隔的用戶ID列表,無法刪除。', +'settings_updateDatabase' => '在數據庫上運行架構更新腳本', 'settings_updateNotifyTime' => '更新時間通知', -'settings_updateNotifyTime_desc' => '通知用戶有關文檔的變化,採取了最後的內地方“更新通知時間”秒', -'settings_upgrade_php' => '', +'settings_updateNotifyTime_desc' => '通知使用者有關文件的變化,採取了最後的內地方“更新通知時間”秒', +'settings_upgrade_php' => '將PHP升級到至少5.6.38版本', 'settings_versioningFileName' => '檔案名版本', -'settings_versioningFileName_desc' => '', -'settings_versiontolow' => '', -'settings_viewOnlineFileTypes' => '', -'settings_viewOnlineFileTypes_desc' => '', -'settings_webdav' => '', -'settings_workflowMode' => '', -'settings_workflowMode_desc' => '', +'settings_versioningFileName_desc' => '備份工具創建的版本資訊文件的名稱', +'settings_versiontolow' => '版本低', +'settings_viewOnlineFileTypes' => '查看在線文件類型', +'settings_viewOnlineFileTypes_desc' => '可以在線查看具有以下結尾之一的文件(僅使用小寫字母)', +'settings_webdav' => 'WebDAV', +'settings_workflowMode' => '工作流程模式', +'settings_workflowMode_desc' => '高級工作流程允許您為文檔版本指定自己的發布工作流程。', 'settings_workflowMode_valadvanced' => '先進...', -'settings_workflowMode_valnone' => '', +'settings_workflowMode_valnone' => '無', 'settings_workflowMode_valtraditional' => '傳統', -'settings_workflowMode_valtraditional_only_approval' => '', -'settings_zendframework' => '', +'settings_workflowMode_valtraditional_only_approval' => '傳統(未經審核)', +'settings_zendframework' => 'Zend Framework', 'set_expiry' => '設置截止日期', 'set_owner' => '設置所有者', 'set_owner_error' => '錯誤 設置所有者', -'set_password' => '', -'set_workflow' => '', -'show_extension_changelog' => '', +'set_password' => '設定密碼', +'set_workflow' => '設定工作流程', +'show_extension_changelog' => '顯示變更日誌', 'show_extension_version_list' => '版本列表', 'signed_in_as' => '登錄為', -'sign_in' => '', +'sign_in' => '登入', 'sign_out' => '登出', -'sign_out_user' => '', +'sign_out_user' => '登出使用者', 'site_brand' => '', 'sk_SK' => '斯洛伐克語', -'sort_by_date' => '', +'sort_by_date' => '依日期排序', 'sort_by_expiration_date' => '', -'sort_by_name' => '', -'sort_by_sequence' => '', +'sort_by_name' => '依名稱排序', +'sort_by_sequence' => '按順序排序', 'space_used_on_data_folder' => '資料檔案夾使用空間', 'splash_added_to_clipboard' => '已複製', -'splash_add_access' => '', -'splash_add_attribute' => '', -'splash_add_group' => '', -'splash_add_group_member' => '', -'splash_add_role' => '', -'splash_add_to_transmittal' => '', -'splash_add_transmittal' => '', -'splash_add_user' => '', -'splash_cleared_cache' => '', -'splash_cleared_clipboard' => '', -'splash_delete_access' => '', -'splash_document_added' => '', -'splash_document_checkedout' => '', -'splash_document_edited' => '', -'splash_document_indexed' => '', -'splash_document_locked' => '文檔已被鎖定', -'splash_document_unlocked' => '已解鎖的文檔', -'splash_edit_access' => '', -'splash_edit_attribute' => '', -'splash_edit_event' => '', -'splash_edit_group' => '', -'splash_edit_role' => '', -'splash_edit_task' => '', -'splash_edit_transmittal' => '', -'splash_edit_user' => '', -'splash_error_add_to_transmittal' => '', -'splash_error_rm_download_link' => '', -'splash_error_send_download_link' => '', -'splash_extension_getlist' => '', -'splash_extension_import' => '', -'splash_extension_refresh' => '', -'splash_extension_upload' => '', -'splash_folder_edited' => '', -'splash_importfs' => '', -'splash_inherit_access' => '', -'splash_invalid_folder_id' => '', -'splash_invalid_searchterm' => '', -'splash_link_document' => '', -'splash_moved_clipboard' => '', -'splash_move_document' => '', -'splash_move_folder' => '', -'splash_notinherit_access' => '', -'splash_receipt_update_success' => '', -'splash_removed_from_clipboard' => '', -'splash_rm_attribute' => '', -'splash_rm_attr_value' => '', -'splash_rm_document' => '文檔已被移除', -'splash_rm_download_link' => '', +'splash_add_access' => '新增訪問權限', +'splash_add_attribute' => '新增屬性', +'splash_add_group' => '新增群組', +'splash_add_group_member' => '新群組會員新增', +'splash_add_role' => '新增一個角色', +'splash_add_task' => '', +'splash_add_to_transmittal' => '新增到傳送', +'splash_add_transmittal' => '加入傳送', +'splash_add_user' => '新增新的使用者', +'splash_cleared_cache' => '快取清除', +'splash_cleared_clipboard' => '剪貼簿已清除', +'splash_delete_access' => '訪問權限已刪除', +'splash_document_added' => '文件已新增', +'splash_document_checkedout' => '文件簽出', +'splash_document_edited' => '文件儲存', +'splash_document_indexed' => '已為文檔“ [name] ”建立索引。', +'splash_document_locked' => '文件已被鎖定', +'splash_document_unlocked' => '已解鎖的文件', +'splash_edit_access' => '訪問權限已更改', +'splash_edit_attribute' => '屬性已保存', +'splash_edit_event' => '活動已保存', +'splash_edit_group' => '群組已保存', +'splash_edit_role' => '角色已保存', +'splash_edit_task' => '任務已儲存', +'splash_edit_transmittal' => '傳送已儲存', +'splash_edit_user' => '使用者已儲存', +'splash_error_add_to_transmittal' => '將文件添加到傳送時出錯', +'splash_error_rm_download_link' => '刪除下載鏈接時出錯', +'splash_error_send_download_link' => '發送下載鏈接時出錯', +'splash_extension_getlist' => '來自存儲庫的擴展名更新列表', +'splash_extension_import' => '安裝擴展', +'splash_extension_refresh' => '刷新的擴展名列表', +'splash_extension_upload' => '安裝擴展', +'splash_folder_edited' => '保存文件夾更改', +'splash_importfs' => '導入的[docs]文檔和[folders]文件夾', +'splash_inherit_access' => '訪問權限將被繼承', +'splash_invalid_folder_id' => '無效的文件夾ID', +'splash_invalid_searchterm' => '搜尋字詞無效', +'splash_link_document' => '鏈接已添加', +'splash_moved_clipboard' => '剪貼簿已移至當前文件夾', +'splash_move_document' => '文件已移走', +'splash_move_folder' => '文件夾已移動', +'splash_notinherit_access' => '訪問權限不再繼承', +'splash_receipt_update_success' => '接待已成功添加', +'splash_removed_from_clipboard' => '已從剪貼簿中刪除', +'splash_rm_attribute' => '屬性已刪除', +'splash_rm_attr_value' => '屬性值已刪除', +'splash_rm_document' => '文件已被移除', +'splash_rm_download_link' => '刪除了下載鏈接', 'splash_rm_folder' => '已刪除的資料夾', -'splash_rm_group' => '', -'splash_rm_group_member' => '', -'splash_rm_role' => '', -'splash_rm_transmittal' => '', -'splash_rm_user' => '', -'splash_rm_user_processes' => '', -'splash_rm_workflow' => '', -'splash_rm_workflow_action' => '', -'splash_rm_workflow_state' => '', -'splash_saved_file' => '', -'splash_save_user_data' => '', -'splash_send_download_link' => '', -'splash_send_login_data' => '', -'splash_setowner' => '', -'splash_settings_saved' => '', -'splash_set_default_access' => '', -'splash_substituted_user' => '', -'splash_switched_back_user' => '', -'splash_toogle_group_manager' => '', -'splash_transfer_content' => '', -'splash_transfer_document' => '', -'splash_transfer_objects' => '', -'splash_trigger_workflow' => '', -'state_and_next_state' => '', -'statistic' => '', +'splash_rm_group' => '組已刪除', +'splash_rm_group_member' => '組成員已刪除', +'splash_rm_role' => '角色已刪除', +'splash_rm_transmittal' => '傳送已刪除', +'splash_rm_user' => '用戶已刪除', +'splash_rm_user_processes' => '用戶已從所有處理中刪除', +'splash_rm_workflow' => '工作流程已刪除', +'splash_rm_workflow_action' => '工作流程操作已刪除', +'splash_rm_workflow_state' => '工作流程狀態已刪除', +'splash_saved_file' => '版本已儲存', +'splash_save_user_data' => '使用者資料已儲存', +'splash_send_download_link' => '寄送下載連結的信件', +'splash_send_login_data' => '登入紀錄已寄送', +'splash_setowner' => '設定新的擁有者', +'splash_settings_saved' => '設定儲存', +'splash_set_default_access' => '默認訪問權限集', +'splash_substituted_user' => '替代用戶', +'splash_switched_back_user' => '切換回原始用戶', +'splash_toogle_group_manager' => '集團經理', +'splash_transfer_content' => '內容已轉移', +'splash_transfer_document' => '文件已轉移', +'splash_transfer_objects' => '轉移的物件', +'splash_trigger_workflow' => '觸發工作流程過渡', +'state_and_next_state' => '狀態/下一個狀態', +'statistic' => '統計', 'status' => '狀態', 'status_approval_rejected' => '擬拒絕', 'status_approved' => '批准', 'status_approver_removed' => '從審核佇列中刪除', -'status_needs_correction' => '', +'status_needs_correction' => '需要糾正', 'status_not_approved' => '未批准', -'status_not_receipted' => '', +'status_not_receipted' => '尚未收到', 'status_not_reviewed' => '未校對', -'status_not_revised' => '', -'status_receipted' => '', -'status_receipt_rejected' => '', -'status_recipient_removed' => '', +'status_not_revised' => '未修改', +'status_receipted' => '已收貨', +'status_receipt_rejected' => '拒絕', +'status_recipient_removed' => '收件人已從列表中刪除', 'status_reviewed' => '通過', 'status_reviewer_rejected' => '擬拒絕', 'status_reviewer_removed' => '從校對佇列中刪除', -'status_revised' => '', -'status_revision_rejected' => '', -'status_revision_sleeping' => '', -'status_revisor_removed' => '', +'status_revised' => '修訂版', +'status_revision_rejected' => '拒絕', +'status_revision_sleeping' => '待定', +'status_revisor_removed' => '修訂者已從清單中刪除', 'status_unknown' => '未知', 'storage_size' => '存儲大小', -'subfolder_duplicate_name' => '', -'submit_2_fact_auth' => '', +'subfolder_duplicate_name' => '子文件夾名稱重複', +'submit_2_fact_auth' => '保存秘密', 'submit_approval' => '提交審核', 'submit_login' => '登錄', -'submit_password' => '', -'submit_password_forgotten' => '', -'submit_receipt' => '', +'submit_password' => '設定新密碼', +'submit_password_forgotten' => '開始過程', +'submit_receipt' => '提交收據', 'submit_review' => '提交校對', -'submit_revision' => '', -'submit_userinfo' => '', +'submit_revision' => '新增修訂', +'submit_userinfo' => '提交資料', 'submit_webauthn_login' => '', 'submit_webauthn_register' => '', -'subsribe_timelinefeed' => '', -'substitute_to_user' => '', +'subsribe_timelinefeed' => '訂閱時間線供稿', +'substitute_to_user' => '切換為\'[username] \'', 'substitute_user' => '代理人', -'success_add_aro' => '', -'success_add_permission' => '', -'success_remove_permission' => '', -'success_toogle_permission' => '', +'success_add_aro' => '新增訪問請求對象', +'success_add_permission' => '新增權限', +'success_remove_permission' => '刪除權限', +'success_toogle_permission' => '權限改變', 'sunday' => 'Sunday', -'sunday_abbr' => '', +'sunday_abbr' => 'Su', 'sv_SE' => '瑞典語', -'switched_to' => '', -'takeOverAttributeValue' => '', -'takeOverGrpApprover' => '', -'takeOverGrpApprovers' => '', -'takeOverGrpReviewer' => '', -'takeOverGrpReviewers' => '', -'takeOverIndApprover' => '', -'takeOverIndApprovers' => '', +'switched_to' => '切換為', +'takeOverAttributeValue' => '接管最新版本的屬性值', +'takeOverGrpApprover' => '接管來自最新版本的批准者組。', +'takeOverGrpApprovers' => '接管小組批准人', +'takeOverGrpReviewer' => '從最新版本接管審閱者組。', +'takeOverGrpReviewers' => '接管小組審稿人', +'takeOverIndApprover' => '從上一版本接管單個審批者。', +'takeOverIndApprovers' => '接管個人批准人', 'takeOverIndReviewer' => '從上個版本接管個別審稿人', -'takeOverIndReviewers' => '', -'tasks' => '', -'task_core_expireddocs_days' => '', -'task_description' => '', -'task_disabled' => '', -'task_frequency' => '', -'task_last_run' => '', -'task_name' => '', -'task_next_run' => '', -'temp_jscode' => '', -'testmail_body' => '', -'testmail_subject' => '', +'takeOverIndReviewers' => '接管個人審稿人', +'tasks' => '任務', +'task_core_expireddocs_days' => '天數', +'task_description' => '描述', +'task_disabled' => '不啟用', +'task_frequency' => '頻率', +'task_last_run' => '最後一次啟用', +'task_name' => '名稱', +'task_next_run' => '下次啟用', +'temp_jscode' => '臨時JavaScript代碼', +'testmail_body' => '該郵件僅用於測試SeedDMS的郵件配置', +'testmail_subject' => '測試信件', 'theme' => '主題', 'thursday' => 'Thursday', -'thursday_abbr' => '', +'thursday_abbr' => 'Th', 'timeline' => '時間軸', 'timeline_add_file' => '新附件', -'timeline_add_version' => '', -'timeline_full_add_file' => '', -'timeline_full_add_version' => '', -'timeline_full_scheduled_revision' => '', -'timeline_full_status_change' => '', -'timeline_scheduled_revision' => '', -'timeline_selected_item' => '', +'timeline_add_version' => '新版本 [version]', +'timeline_full_add_file' => '[document]
新附件', +'timeline_full_add_version' => '[document]
新版本 [version]', +'timeline_full_scheduled_revision' => '[document]
版本修訂 [version]', +'timeline_full_status_change' => '[document]
Version [version]: [status]', +'timeline_scheduled_revision' => '版本[version]的修訂', +'timeline_selected_item' => '選定文件', 'timeline_skip_add_file' => '新增附件', -'timeline_skip_scheduled_revision' => '', -'timeline_skip_status_change_-1' => '', -'timeline_skip_status_change_-3' => '', -'timeline_skip_status_change_0' => '', -'timeline_skip_status_change_1' => '', -'timeline_skip_status_change_2' => '', -'timeline_skip_status_change_3' => '', -'timeline_skip_status_change_4' => '', -'timeline_skip_status_change_5' => '', -'timeline_status_change' => '版本 [版本號]:[狀態]', +'timeline_skip_scheduled_revision' => '預定修訂', +'timeline_skip_status_change_-1' => '拒絕', +'timeline_skip_status_change_-3' => '已過期', +'timeline_skip_status_change_0' => '等待審核', +'timeline_skip_status_change_1' => '等待批准', +'timeline_skip_status_change_2' => '已發布', +'timeline_skip_status_change_3' => '在工作流程中', +'timeline_skip_status_change_4' => '修訂中', +'timeline_skip_status_change_5' => '草案', +'timeline_status_change' => '版本 [version]:[status]', 'to' => '到', 'toggle_manager' => '角色切換', -'toggle_qrcode' => '', +'toggle_qrcode' => '秀/隱藏 QR code', 'total' => '總共', -'to_before_from' => '', -'transfer_content' => '', +'to_before_from' => '結束日期可能不早於開始日期', +'transfer_content' => '傳送內容', 'transfer_document' => '傳送檔案', -'transfer_no_read_access' => '', -'transfer_no_write_access' => '', -'transfer_objects' => '', -'transfer_objects_to_user' => '', -'transfer_process_to_user' => '', -'transfer_to_user' => '', -'transition_triggered_email' => '', -'transition_triggered_email_body' => '', -'transition_triggered_email_subject' => '', -'transmittal' => '', -'transmittalitem_removed' => '', -'transmittalitem_updated' => '', -'transmittal_comment' => '', -'transmittal_name' => '', -'transmittal_size' => '', +'transfer_no_read_access' => '用戶在文件夾中沒有讀取權限', +'transfer_no_write_access' => '用戶在文件夾中沒有寫權限', +'transfer_objects' => '傳送物件', +'transfer_objects_to_user' => '新擁有者', +'transfer_process_to_user' => '傳送處理給使用者', +'transfer_to_user' => '傳送給使用者', +'transition_triggered_email' => '觸發工作流程過渡', +'transition_triggered_email_body' => '觸發工作流程過渡 +文件:[name] +版本:[version] +評論:[comment] +工作流程:[workflow] +先前狀態:[previous_state] +當前狀態:[current_state] +父文件夾:[folder_path] +用戶:[username] +網址:[url]', +'transition_triggered_email_subject' => '[sitename]: [name] - 觸發工作流程過渡', +'transmittal' => '傳輸', +'transmittalitem_removed' => '傳輸項目已刪除', +'transmittalitem_updated' => '文件已更新至最新版本', +'transmittal_comment' => '註解', +'transmittal_name' => '名稱', +'transmittal_size' => '大小', 'tree_loading' => '請稍待,直到文件樹狀結構載入完畢...', -'trigger_workflow' => '', +'trigger_workflow' => '工作流程', 'tr_TR' => '土耳其語', 'tuesday' => 'Tuesday', -'tuesday_abbr' => '', -'type_of_hook' => '', -'type_to_filter' => '', +'tuesday_abbr' => 'Tu', +'type_of_hook' => '類型', +'type_to_filter' => '鍵入到篩選列表', 'type_to_search' => '搜索類型', 'uk_UA' => '烏克蘭語', 'under_folder' => '資料夾內', -'unknown_attrdef' => '', +'unknown_attrdef' => '未知的屬性定義', 'unknown_command' => '未知命令', 'unknown_document_category' => '未知檔分類', 'unknown_group' => '未知組ID號', 'unknown_id' => '未知ID號', 'unknown_keyword_category' => '未知類別', 'unknown_owner' => '未知所有者ID號', -'unknown_user' => '未知用戶ID號', -'unlinked_content' => '', -'unlinked_documents' => '', -'unlinked_folders' => '', -'unlinking_objects' => '', +'unknown_user' => '未知使用者ID號', +'unlinked_content' => '未關聯的內容', +'unlinked_documents' => '未關聯的文件', +'unlinked_folders' => '未鏈接的文件夾', +'unlinking_objects' => '取消鏈接內容', 'unlock_cause_access_mode_all' => '您仍然可以更新,因為您有擁有所有權限"all". 鎖定狀態被自動解除.', 'unlock_cause_locking_user' => '您仍然可以更新,因為是您鎖定了該檔. 鎖定狀態被自動解除.', 'unlock_document' => '解鎖', @@ -1644,43 +1880,49 @@ URL: [url]', 'update_document' => '更新', 'update_fulltext_index' => '更新全文索引', 'update_info' => '更新資訊', -'update_locked_msg' => '該文檔被鎖定', +'update_locked_msg' => '該文件被鎖定', 'update_recipients' => '', 'update_reviewers' => '更新校對人名單', -'update_revisors' => '', -'update_transmittalitem' => '', +'update_revisors' => '更新重新提交者列表', +'update_transmittalitem' => '更新到最新文檔版本', 'uploaded_by' => '上傳者', 'uploading_failed' => '文件太大無法上傳!請處理後重新上傳。', 'uploading_maxsize' => '最大上傳限制', 'uploading_zerosize' => '上傳失敗!請檢查是否沒有選擇上傳的檔。', 'used_discspace' => '使用磁碟空間', -'user' => '用戶', +'user' => '使用者', +'userdata_file' => '', 'userid_groupid' => '使用者 id/群組 id', -'users' => '用戶', -'users_and_groups' => '', -'users_done_work' => '', -'user_exists' => '用戶已存在', +'users' => '使用者', +'users_and_groups' => '使用者/群組', +'users_done_work' => '用戶完成工作', +'user_exists' => '使用者已存在', 'user_group' => '使用者/群組', -'user_group_management' => '用戶/組的管理', +'user_group_management' => '使用者/組的管理', 'user_image' => '使用者圖片', 'user_info' => '使用者資訊', -'user_list' => '用戶列表', -'user_login' => '用戶ID', -'user_management' => '用戶管理', +'user_list' => '使用者列表', +'user_login' => '使用者ID', +'user_management' => '使用者管理', 'user_name' => '全名', -'use_comment_of_document' => '', +'use_comment_of_document' => '使用文件的評論', 'use_default_categories' => '默認分類', 'use_default_keywords' => '使用預定義關鍵字', -'valid_till' => '', +'valid_till' => '有效期至', 'version' => '版本', 'versioning_file_creation' => '創建版本檔', 'versioning_file_creation_warning' => '通過此操作,您可以一個包含整個DMS資料夾的版本資訊檔. 版本檔一經創建,每個檔都將保存到資料夾中.', 'versioning_info' => '版本資訊', -'versiontolow' => '', -'version_comment' => '', +'versiontolow' => '版本低', +'version_comment' => '版本註釋', 'version_deleted_email' => '版本已被刪除', -'version_deleted_email_body' => '', -'version_deleted_email_subject' => '', +'version_deleted_email_body' => '版本已刪除 +文件:[name] +版本:[version] +父文件夾:[folder_path] +用戶:[username] +網址:[url]', +'version_deleted_email_subject' => '[sitename]: [name]-版本已刪除', 'version_info' => '版本資訊', 'view' => '檢視', 'view_online' => '線上流覽', @@ -1690,37 +1932,38 @@ URL: [url]', 'webauthn_info' => '', 'webauth_crossplatform' => '', 'wednesday' => 'Wednesday', -'wednesday_abbr' => '', -'weeks' => '', +'wednesday_abbr' => 'We', +'weeks' => '週', 'week_view' => '周視圖', 'workflow' => '流程', -'workflows_involded' => '', +'workflows_involded' => '參與工作流程', 'workflow_actions_management' => '流程動作管理', 'workflow_action_in_use' => '正在使用之流程動作', 'workflow_action_name' => '流程動作名稱', -'workflow_editor' => '', +'workflow_editor' => '工作流程編輯器', 'workflow_group_summary' => '流程群組簡述', -'workflow_has_cycle' => '', -'workflow_initstate' => '', +'workflow_has_cycle' => '工作流程有周期', +'workflow_initstate' => '初始狀態', 'workflow_in_use' => '正在使用之流程', -'workflow_layoutdata_saved' => '', +'workflow_layoutdata_saved' => '版面數據已保存', 'workflow_management' => '流程管理', 'workflow_name' => '流程名稱', -'workflow_no_doc_rejected_state' => '', -'workflow_no_doc_released_state' => '', -'workflow_no_initial_state' => '', -'workflow_no_states' => '', -'workflow_save_layout' => '', -'workflow_state' => '', +'workflow_no_doc_rejected_state' => '在工作流程狀態下不會拒絕該文檔!', +'workflow_no_doc_released_state' => '該文檔將不會以工作流程狀態發布!', +'workflow_no_initial_state' => '任何過渡都不會從工作流程的初始狀態開始!', +'workflow_no_states' => '您必須先定義工作流程狀態,然後才能添加工作流程。', +'workflow_save_layout' => '保存佈局', +'workflow_state' => '工作流程狀態', 'workflow_states_management' => '流程狀態管理', 'workflow_state_docstatus' => '文件流程狀態', 'workflow_state_in_use' => '正在使用之流程狀態', 'workflow_state_name' => '流程狀態名稱', -'workflow_summary' => '', -'workflow_transition_without_user_group' => '', -'workflow_user_summary' => '', -'wrong_filetype' => '', -'x_more_objects' => '增加[數值]物件', +'workflow_summary' => '工作流程摘要', +'workflow_title' => '', +'workflow_transition_without_user_group' => '至少有一個過渡既沒有用戶也沒有組!', +'workflow_user_summary' => '使用者摘要', +'wrong_filetype' => '錯誤的檔案類型', +'x_more_objects' => '增加[number]物件', 'year_view' => '年視圖', 'yes' => '是', 'zh_CN' => '中文簡體', diff --git a/op/op.ImportUsers.php b/op/op.ImportUsers.php new file mode 100644 index 000000000..68c19d842 --- /dev/null +++ b/op/op.ImportUsers.php @@ -0,0 +1,196 @@ +getFolder((int)$coldata)) { + $objdata['homefolder'] = $folder; + } + } else { + $objdata['homefolder'] = null; + } + return $objdata; +} /* }}} */ + +function getGroupData($colname, $coldata, $objdata) { /* {{{ */ + global $dms; + if($group = $dms->getGroupByName($coldata)) { + $objdata['groups'][] = $group; + } + return $objdata; +} /* }}} */ + +function getRoleData($colname, $coldata, $objdata) { /* {{{ */ + switch($coldata) { + case 'admin': + $role = 1; + break; + case 'guest': + $role = 2; + break; + default: + $role = 0; + } + $objdata['role'] = $role; + return $objdata; +} /* }}} */ + +if (!$user->isAdmin()) { + UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); +} + +$log = array(); +if (isset($_FILES['userdata']) && $_FILES['userdata']['error'] == 0) { + if(!is_uploaded_file($_FILES["userdata"]["tmp_name"])) + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured")); + + if($_FILES["userdata"]["size"] == 0) + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_zerosize")); + + $csvdelim = ';'; + $csvencl = '"'; + if($fp = fopen($_FILES['userdata']['tmp_name'], 'r')) { + $colmap = array(); + if($header = fgetcsv($fp, 0, $csvdelim, $csvencl)) { + foreach($header as $i=>$colname) { + $colname = trim($colname); + if(substr($colname, 0, 5) == 'group') { + $colmap[$i] = array("getGroupData", $colname); + } elseif(in_array($colname, array('role'))) { + $colmap[$i] = array("getRoleData", $colname); + } elseif(in_array($colname, array('homefolder'))) { + $colmap[$i] = array("getFolderData", $colname); + } elseif(in_array($colname, array('quota'))) { + $colmap[$i] = array("getQuotaData", $colname); + } elseif(in_array($colname, array('login', 'name', 'email', 'comment', 'group'))) { + $colmap[$i] = array("getBaseData", $colname); + } elseif(substr($colname, 0, 5) == 'attr:') { + $kk = explode(':', $colname, 2); + if(($attrdef = $dms->getAttributeDefinitionByName($kk[1])) || ($attrdef = $dms->getAttributeDefinition((int) $kk[1]))) { + $colmap[$i] = array("getAttributeData", $attrdef); + } + } + } + } +// echo "

";print_r($colmap);echo "
"; + if(count($colmap) > 1) { + $allusers = $dms->getAllUsers(); + $userids = array(); + foreach($allusers as $muser) + $userids[$muser->getLogin()] = $muser; + $newusers = array(); + while(!feof($fp)) { + if($data = fgetcsv($fp, 0, $csvdelim, $csvencl)) { + $md = array(); + foreach($data as $i=>$coldata) { + if(isset($colmap[$i])) { + $md = call_user_func($colmap[$i][0], $colmap[$i][1], $coldata, $md); + } + } + if($md) + $newusers[] = $md; + } + } +// echo "
";print_r($newusers);echo "
"; + $makeupdate = !empty($_POST['update']); + foreach($newusers as $u) { + if($eu = $dms->getUserByLogin($u['login'])) { + if(isset($u['name']) && $u['name'] != $eu->getFullName()) { + $log[] = array('id'=>$eu->getLogin(), 'type'=>'success', 'msg'=> "Name of user updated. '".$u['name']."' != '".$eu->getFullName()."'"); + if($makeupdate) + $eu->setFullName($u['name']); + } + if(isset($u['email']) && $u['email'] != $eu->getEmail()) { + $log[] = array('id'=>$eu->getLogin(), 'type'=>'success', 'msg'=> "Email of user updated. '".$u['email']."' != '".$eu->getEmail()."'"); + if($makeupdate) + $eu->setEmail($u['email']); + } + if(isset($u['comment']) && $u['comment'] != $eu->getComment()) { + $log[] = array('id'=>$eu->getLogin(), 'type'=>'success', 'msg'=> "Comment of user updated. '".$u['comment']."' != '".$eu->getComment()."'"); + if($makeupdate) + $eu->setComment($u['comment']); + } + if(isset($u['language']) && $u['language'] != $eu->getLanguage()) { + $log[] = array('id'=>$eu->getLogin(), 'type'=>'success', 'msg'=> "Language of user updated. '".$u['language']."' != '".$eu->getLanguage()."'"); + if($makeupdate) + $eu->setLanguage($u['language']); + } + if(isset($u['quota']) && $u['quota'] != $eu->getQuota()) { + $log[] = array('id'=>$eu->getLogin(), 'type'=>'success', 'msg'=> "Quota of user updated. '".$u['quota']."' != '".$eu->getQuota()."'"); + if($makeupdate) + $eu->setQuota($u['language']); + } + if(isset($u['homefolder']) && $u['homefolder']->getId() != $eu->getHomeFolder()) { + $log[] = array('id'=>$eu->getLogin(), 'type'=>'success', 'msg'=> "Homefolder of user updated. '".(is_object($u['homefolder']) ? $u['homefolder']->getId() : '')."' != '".($eu->getHomeFolder() ? $eu->getHomeFolder() : '')."'"); + if($makeupdate) + $eu->setHomeFolder($u['homefolder']); + } + $func = function($o) {return $o->getID();}; + if(isset($u['groups']) && implode(',',array_map($func, $u['groups'])) != implode(',',array_map($func, $eu->getGroups()))) { + $log[] = array('id'=>$eu->getLogin(), 'type'=>'success', 'msg'=> "Groups of user updated. '".implode(',',array_map($func, $u['groups']))."' != '".implode(',',array_map($func, $eu->getGroups()))."'"); + if($makeupdate) { + foreach($eu->getGroups() as $g) + $eu->leaveGroup($g); + foreach($u['groups'] as $g) + $eu->joinGroup($g); + } + } +// $log[] = array('id'=>$eu->getLogin(), 'type'=>'success', 'msg'=> "User '".$eu->getLogin()."' updated."); + } else { + if(!empty($_POST['addnew'])) { + if(!empty($u['login']) && !empty($u['name']) && !empty($u['email'])) { + $ret = $dms->addUser($u['login'], '', $u['name'], $u['email'], !empty($u['language']) ? $u['language'] : 'en_GB', 'bootstrap', !empty($u['comment']) ? $u['comment'] : '', $u['role']); + var_dump($ret); + } + } + $log[] = array('id'=>$u['login'], 'type'=>'success', 'msg'=> "User '".$u['name']."' added."); + } + } + } + } +} + +$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); +$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); +if($view) { + $view->setParam('log', $log); + $view($_GET); + exit; +} + diff --git a/op/op.Settings.php b/op/op.Settings.php index 178805c57..2c1c9a463 100644 --- a/op/op.Settings.php +++ b/op/op.Settings.php @@ -64,7 +64,7 @@ if ($action == "saveSettings") else $settings->_availablelanguages = $_POST["availablelanguages"]; $settings->_theme = $_POST["theme"]; - $settings->_onePageMode = $_POST["onePageMode"]; + $settings->_onePageMode = getBoolValue("onePageMode"); $settings->_previewWidthList = $_POST["previewWidthList"]; $settings->_previewWidthMenuList = $_POST["previewWidthMenuList"]; $settings->_previewWidthDropFolderList = $_POST["previewWidthDropFolderList"]; @@ -181,6 +181,9 @@ if ($action == "saveSettings") // SETTINGS - ADVANCED - AUTHENTICATION $settings->_guestID = intval($_POST["guestID"]); $settings->_adminIP = $_POST["adminIP"]; + $settings->_apiKey = strval($_POST["apiKey"]); + $settings->_apiUserId = intval($_POST["apiUserId"]); + $settings->_apiOrigin = strval($_POST["apiOrigin"]); // SETTINGS - ADVANCED - EDITION $settings->_versioningFileName = $_POST["versioningFileName"]; diff --git a/op/op.UserListCsv.php b/op/op.UserListCsv.php new file mode 100644 index 000000000..7a7ed3e8a --- /dev/null +++ b/op/op.UserListCsv.php @@ -0,0 +1,48 @@ +isAdmin()) { + UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); +} + +$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); +$controller = Controller::factory($tmp[1], array('dms'=>$dms, 'user'=>$user)); + +if(!$controller->run()) { + if ($controller->getErrorMsg() != '') + $errormsg = $controller->getErrorMsg(); + else + $errormsg = "error_userlistcsv"; + UI::exitError(getMLText("admin_tools"), getMLText($errormsg)); +} + + diff --git a/op/op.WorkflowStatesMgr.php b/op/op.WorkflowStatesMgr.php index 4b7db435f..f80423001 100644 --- a/op/op.WorkflowStatesMgr.php +++ b/op/op.WorkflowStatesMgr.php @@ -118,7 +118,7 @@ else if ($action == "editworkflowstate") { if ($editedWorkflowState->getDocumentStatus() != $docstatus) $editedWorkflowState->setDocumentStatus($docstatus); - add_log_line(".php&action=editworkflowstate&workflowstateid=".$workflow); + add_log_line(".php&action=editworkflowstate&workflowstateid=".$workflowstateid); } else UI::exitError(getMLText("admin_tools"),getMLText("unknown_command")); diff --git a/out/out.DocumentChooser.php b/out/out.DocumentChooser.php index e2d0c6f9e..08948390e 100644 --- a/out/out.DocumentChooser.php +++ b/out/out.DocumentChooser.php @@ -49,9 +49,9 @@ if(isset($_GET['action']) && $_GET['action'] == 'subtree') { $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); if($view) { + $view->setParam('orderby', $settings->_sortFoldersDefault); if(isset($_GET['action']) && $_GET['action'] == 'subtree') { $view->setParam('node', $node); - $view->setParam('orderby', $settings->_sortFoldersDefault); } else { $view->setParam('folder', $folder); $view->setParam('form', $form); diff --git a/out/out.ImportUsers.php b/out/out.ImportUsers.php new file mode 100644 index 000000000..4443ba892 --- /dev/null +++ b/out/out.ImportUsers.php @@ -0,0 +1,40 @@ +$dms, 'user'=>$user)); +if (!$user->isAdmin()) { + UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); +} + +if($view) { + $view($_GET); + exit; +} diff --git a/out/out.Info.php b/out/out.Info.php index 21f5b1483..079fc9986 100644 --- a/out/out.Info.php +++ b/out/out.Info.php @@ -47,9 +47,13 @@ if(@ini_get('allow_url_fopen') == '1') { } } +$reposurl = $settings->_repositoryUrl; +$extmgr = new SeedDMS_Extension_Mgr($settings->_rootDir."/ext", $settings->_cacheDir, $reposurl); + if($view) { $view->setParam('version', $v); $view->setParam('availversions', $versions); + $view->setParam('extmgr', $extmgr); $view($_GET); exit; } diff --git a/restapi/.htaccess b/restapi/.htaccess new file mode 100644 index 000000000..edeafcef4 --- /dev/null +++ b/restapi/.htaccess @@ -0,0 +1,10 @@ +RewriteEngine on +RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + + +Header set Access-Control-Allow-Origin "*" +Header set Access-Control-Allow-Methods "GET" +Header set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Accept, Origin, Authorization" + + diff --git a/restapi/index.php b/restapi/index.php index 805f7cdbc..ad5d9c206 100644 --- a/restapi/index.php +++ b/restapi/index.php @@ -1,6 +1,4 @@ getUser($_SESSION['userid']); - elseif($settings->_enableGuestLogin) - $userobj = $dms->getUser($settings->_guestID); - else - exit; - $dms->setUser($userobj); -} else { - require_once("../inc/inc.ClassSession.php"); - $session = new SeedDMS_Session($db); - if (isset($_COOKIE["mydms_session"])) { - $dms_session = $_COOKIE["mydms_session"]; - if(!$resArr = $session->load($dms_session)) { - /* Delete Cookie */ - setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot); - if($settings->_enableGuestLogin) - $userobj = $dms->getUser($settings->_guestID); - else - exit; - } - - /* Load user data */ - $userobj = $dms->getUser($resArr["userID"]); - if (!is_object($userobj)) { - /* Delete Cookie */ - setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot); - if($settings->_enableGuestLogin) - $userobj = $dms->getUser($settings->_guestID); - else - exit; - } - if($userobj->isAdmin()) { - if($resArr["su"]) { - $userobj = $dms->getUser($resArr["su"]); - } - } - $dms->setUser($userobj); - } -} - require "vendor/autoload.php"; -function __getLatestVersionData($lc) { /* {{{ */ - $document = $lc->getDocument(); - $data = array( - 'type'=>'document', - 'id'=>(int)$document->getId(), - 'date'=>date('Y-m-d H:i:s', $document->getDate()), - 'name'=>$document->getName(), - 'comment'=>$document->getComment(), - 'keywords'=>$document->getKeywords(), - 'mimetype'=>$lc->getMimeType(), - 'version'=>$lc->getVersion(), - 'version_comment'=>$lc->getComment(), - 'version_date'=>$lc->getDate(), - 'size'=>$lc->getFileSize(), - ); - $cats = $document->getCategories(); - if($cats) { - $c = array(); - foreach($cats as $cat) { - $c[] = array('id'=>(int)$cat->getID(), 'name'=>$cat->getName()); - } - $data['categories'] = $c; +use Psr\Container\ContainerInterface; + +class RestapiController { /* {{{ */ + protected $container; + + // constructor receives container instance + public function __construct(ContainerInterface $container) { + $this->container = $container; } - $attributes = $document->getAttributes(); - if($attributes) { - $attrvalues = array(); - foreach($attributes as $attrdefid=>$attribute) - $attrvalues[] = array('id'=>(int)$attrdefid, 'value'=>$attribute->getValue()); - $data['attributes'] = $attrvalues; - } - $attributes = $lc->getAttributes(); - if($attributes) { - $attrvalues = array(); - foreach($attributes as $attrdefid=>$attribute) - $attrvalues[] = array('id'=>(int)$attrdefid, 'value'=>$attribute->getValue()); - $data['version-attributes'] = $attrvalues; - } - return $data; -} /* }}} */ -function __getFolderData($folder) { /* {{{ */ - $data = array( - 'type'=>'folder', - 'id'=>(int)$folder->getID(), - 'name'=>$folder->getName(), - 'comment'=>$folder->getComment(), - 'date'=>date('Y-m-d H:i:s', $folder->getDate()), - ); - $attributes = $folder->getAttributes(); - if($attributes) { - $attrvalues = array(); - foreach($attributes as $attrdefid=>$attribute) - $attrvalues[] = array('id'=>(int)$attrdefid, 'value'=>$attribute->getValue()); - $data['attributes'] = $attrvalues; - } - return $data; -} /* }}} */ - -function __getGroupData($u) { /* {{{ */ - $data = array( - 'type'=>'group', - 'id'=>(int)$u->getID(), - 'name'=>$u->getName(), - 'comment'=>$u->getComment(), - ); - return $data; -} /* }}} */ - -function __getUserData($u) { /* {{{ */ - $data = array( - 'type'=>'user', - 'id'=>(int)$u->getID(), - 'name'=>$u->getFullName(), - 'comment'=>$u->getComment(), - 'login'=>$u->getLogin(), - 'email'=>$u->getEmail(), - 'language' => $u->getLanguage(), - 'theme' => $u->getTheme(), - 'role' => $u->getRole() == SeedDMS_Core_User::role_admin ? 'admin' : ($u->getRole() == SeedDMS_Core_User::role_guest ? 'guest' : 'user'), - 'hidden'=>$u->isHidden() ? true : false, - 'disabled'=>$u->isDisabled() ? true : false, - 'isguest' => $u->isGuest() ? true : false, - 'isadmin' => $u->isAdmin() ? true : false, - ); - if($u->getHomeFolder()) - $data['homefolder'] = (int)$u->getHomeFolder(); - - $groups = $u->getGroups(); - if($groups) { - $tmp = []; - foreach($groups as $group) - $tmp[] = __getGroupData($group); - $data['groups'] = $tmp; - } - return $data; -} /* }}} */ - -function doLogin($request, $response) { /* {{{ */ - global $dms, $userobj, $session, $settings; - - $params = $request->getParsedBody(); - $username = $params['user']; - $password = $params['pass']; - -// $userobj = $dms->getUserByLogin($username); - $userobj = null; - - /* Authenticate against LDAP server {{{ */ - if (!$userobj && isset($settings->_ldapHost) && strlen($settings->_ldapHost)>0) { - require_once("../inc/inc.ClassLdapAuthentication.php"); - $authobj = new SeedDMS_LdapAuthentication($dms, $settings); - $userobj = $authobj->authenticate($username, $password); + protected function __getDocumentData($document) { /* {{{ */ + $data = array( + 'type'=>'document', + 'id'=>(int)$document->getId(), + 'date'=>date('Y-m-d H:i:s', $document->getDate()), + 'name'=>$document->getName(), + 'comment'=>$document->getComment(), + 'keywords'=>$document->getKeywords() + ); + return $data; } /* }}} */ - /* Authenticate against SeedDMS database {{{ */ - if(!$userobj) { - require_once("../inc/inc.ClassDbAuthentication.php"); - $authobj = new SeedDMS_DbAuthentication($dms, $settings); - $userobj = $authobj->authenticate($username, $password); + protected function __getLatestVersionData($lc) { /* {{{ */ + $document = $lc->getDocument(); + $data = array( + 'type'=>'document', + 'id'=>(int)$document->getId(), + 'date'=>date('Y-m-d H:i:s', $document->getDate()), + 'name'=>$document->getName(), + 'comment'=>$document->getComment(), + 'keywords'=>$document->getKeywords(), + 'ownerid'=>(int) $document->getOwner()->getID(), + 'islocked'=>$document->isLocked(), + 'sequence'=>$document->getSequence(), + 'expires'=>$document->getExpires() ? date('Y-m-d H:i:s', $document->getExpires()) : "", + 'mimetype'=>$lc->getMimeType(), + 'version'=>$lc->getVersion(), + 'version_comment'=>$lc->getComment(), + 'version_date'=>date('Y-m-d H:i:s', $lc->getDate()), + 'size'=>(int) $lc->getFileSize(), + ); + $cats = $document->getCategories(); + if($cats) { + $c = array(); + foreach($cats as $cat) { + $c[] = array('id'=>(int)$cat->getID(), 'name'=>$cat->getName()); + } + $data['categories'] = $c; + } + $attributes = $document->getAttributes(); + if($attributes) { + $attrvalues = array(); + foreach($attributes as $attrdefid=>$attribute) + $attrvalues[] = array('id'=>(int)$attrdefid, 'value'=>$attribute->getValue()); + $data['attributes'] = $attrvalues; + } + $attributes = $lc->getAttributes(); + if($attributes) { + $attrvalues = array(); + foreach($attributes as $attrdefid=>$attribute) + $attrvalues[] = array('id'=>(int)$attrdefid, 'value'=>$attribute->getValue()); + $data['version-attributes'] = $attrvalues; + } + return $data; } /* }}} */ - if(!$userobj) { - if(USE_PHP_SESSION) { - unset($_SESSION['userid']); - } else { - setcookie("mydms_session", $session->getId(), time()-3600, $settings->_httpRoot); + protected function __getDocumentVersionData($lc) { /* {{{ */ + $data = array( + 'id'=>(int) $lc->getId(), + 'version'=>$lc->getVersion(), + 'date'=>date('Y-m-d H:i:s', $lc->getDate()), + 'mimetype'=>$lc->getMimeType(), + 'filetype'=>$lc->getFileType(), + 'origfilename'=>$lc->getOriginalFileName(), + 'size'=>(int) $lc->getFileSize(), + 'comment'=>$lc->getComment(), + ); + return $data; + } /* }}} */ + + protected function __getDocumentFileData($file) { /* {{{ */ + $data = array( + 'id'=>(int)$file->getId(), + 'name'=>$file->getName(), + 'date'=>$file->getDate(), + 'mimetype'=>$file->getMimeType(), + 'comment'=>$file->getComment(), + ); + return $data; + } /* }}} */ + + protected function __getDocumentLinkData($link) { /* {{{ */ + $data = array( + 'id'=>(int)$link->getId(), + 'target'=>$this->__getDocumentData($link->getTarget()), + 'public'=>(boolean)$link->isPublic(), + ); + return $data; + } /* }}} */ + + protected function __getFolderData($folder) { /* {{{ */ + $data = array( + 'type'=>'folder', + 'id'=>(int)$folder->getID(), + 'name'=>$folder->getName(), + 'comment'=>$folder->getComment(), + 'date'=>date('Y-m-d H:i:s', $folder->getDate()), + ); + $attributes = $folder->getAttributes(); + if($attributes) { + $attrvalues = array(); + foreach($attributes as $attrdefid=>$attribute) + $attrvalues[] = array('id'=>(int)$attrdefid, 'value'=>$attribute->getValue()); + $data['attributes'] = $attrvalues; } - return $response->withJson(array('success'=>false, 'message'=>'Login failed', 'data'=>''), 403); - } else { - if(USE_PHP_SESSION) { - $_SESSION['userid'] = $userobj->getId(); + return $data; + } /* }}} */ + + protected function __getGroupData($u) { /* {{{ */ + $data = array( + 'type'=>'group', + 'id'=>(int)$u->getID(), + 'name'=>$u->getName(), + 'comment'=>$u->getComment(), + ); + return $data; + } /* }}} */ + + protected function __getUserData($u) { /* {{{ */ + $data = array( + 'type'=>'user', + 'id'=>(int)$u->getID(), + 'name'=>$u->getFullName(), + 'comment'=>$u->getComment(), + 'login'=>$u->getLogin(), + 'email'=>$u->getEmail(), + 'language' => $u->getLanguage(), + 'theme' => $u->getTheme(), + 'role' => $u->getRole() == SeedDMS_Core_User::role_admin ? 'admin' : ($u->getRole() == SeedDMS_Core_User::role_guest ? 'guest' : 'user'), + 'hidden'=>$u->isHidden() ? true : false, + 'disabled'=>$u->isDisabled() ? true : false, + 'isguest' => $u->isGuest() ? true : false, + 'isadmin' => $u->isAdmin() ? true : false, + ); + if($u->getHomeFolder()) + $data['homefolder'] = (int)$u->getHomeFolder(); + + $groups = $u->getGroups(); + if($groups) { + $tmp = []; + foreach($groups as $group) + $tmp[] = $this->__getGroupData($group); + $data['groups'] = $tmp; + } + return $data; + } /* }}} */ + + protected function __getAttributeDefinitionData($attrdef) { /* {{{ */ + $data = [ + 'id' => (int)$attrdef->getId(), + 'name' => $attrdef->getName(), + 'type'=>(int)$attrdef->getType(), + 'objtype'=>(int)$attrdef->getObjType(), + 'min'=>(int)$attrdef->getMinValues(), + 'max'=>(int)$attrdef->getMaxValues(), + 'multiple'=>$attrdef->getMultipleValues()?true:false, + 'valueset'=>$attrdef->getValueSetAsArray(), + 'regex'=>$attrdef->getRegex() + ]; + return $data; + } /* }}} */ + + protected function __getCategoryData($category) { /* {{{ */ + $data = [ + 'id'=>(int)$category->getId(), + 'name'=>$category->getName() + ]; + return $data; + } /* }}} */ + + function doLogin($request, $response) { /* {{{ */ + global $session; + + $dms = $this->container->dms; + $settings = $this->container->config; + + $params = $request->getParsedBody(); + if(empty($params['user']) || empty($params['pass'])) + return $response->withJson(array('success'=>false, 'message'=>'No user or password given', 'data'=>''), 400); + $username = $params['user']; + $password = $params['pass']; + + // $userobj = $dms->getUserByLogin($username); + $userobj = null; + + /* Authenticate against LDAP server {{{ */ + if (!$userobj && isset($settings->_ldapHost) && strlen($settings->_ldapHost)>0) { + require_once("../inc/inc.ClassLdapAuthentication.php"); + $authobj = new SeedDMS_LdapAuthentication($dms, $settings); + $userobj = $authobj->authenticate($username, $password); + } /* }}} */ + + /* Authenticate against SeedDMS database {{{ */ + if(!$userobj) { + require_once("../inc/inc.ClassDbAuthentication.php"); + $authobj = new SeedDMS_DbAuthentication($dms, $settings); + $userobj = $authobj->authenticate($username, $password); + } /* }}} */ + + if(!$userobj) { + setcookie("mydms_session", '', time()-3600, $settings->_httpRoot); + return $response->withJson(array('success'=>false, 'message'=>'Login failed', 'data'=>''), 403); } else { + require_once("../inc/inc.ClassSession.php"); + $session = new SeedDMS_Session($dms->getDb()); if(!$id = $session->create(array('userid'=>$userobj->getId(), 'theme'=>$userobj->getTheme(), 'lang'=>$userobj->getLanguage()))) { exit; } @@ -197,1914 +235,2151 @@ function doLogin($request, $response) { /* {{{ */ $lifetime = 0; setcookie("mydms_session", $id, $lifetime, $settings->_httpRoot); $dms->setUser($userobj); + + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$this->__getUserData($userobj)), 200); } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>__getUserData($userobj)), 200); - } -} /* }}} */ + } /* }}} */ -function doLogout($request, $response) { /* {{{ */ - global $dms, $userobj, $session, $settings; + function doLogout($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + $settings = $this->container->config; - if(USE_PHP_SESSION) { - unset($_SESSION['userid']); - } else { - setcookie("mydms_session", $session->getId(), time()-3600, $settings->_httpRoot); - } - $userobj = null; - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); -} /* }}} */ + setcookie("mydms_session", '', time()-3600, $settings->_httpRoot); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + } /* }}} */ -function setFullName($request, $response) { /* {{{ */ - global $dms, $userobj; + function setFullName($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - return; - } - - $params = $request->getParsedBody(); - $userobj->setFullName($params['fullname']); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$userobj->getFullName()), 200); -} /* }}} */ - -function setEmail($request, $response) { /* {{{ */ - global $dms, $userobj; - - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - return; - } - - $params = $request->getParsedBody(); - $userobj->setEmail($params['email']); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$userid), 200); -} /* }}} */ - -function getLockedDocuments($request, $response) { /* {{{ */ - global $dms, $userobj; - - if(false !== ($documents = $dms->getDocumentsLockedByUser($userobj))) { - $documents = SeedDMS_Core_DMS::filterAccess($documents, $userobj, M_READ); - $recs = array(); - foreach($documents as $document) { - $lc = $document->getLatestContent(); - if($lc) { - $recs[] = __getLatestVersionData($lc); - } + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + return; } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); - } -} /* }}} */ -function getFolder($request, $response, $args) { /* {{{ */ - global $dms, $userobj, $settings; - $params = $request->getQueryParams(); - $forcebyname = isset($params['forcebyname']) ? $params['forcebyname'] : 0; - $parent = isset($params['parentid']) ? $dms->getFolder($params['parentid']) : null; + $params = $request->getParsedBody(); + $userobj->setFullName($params['fullname']); + $data = $this->__getUserData($userobj); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } /* }}} */ - if (!isset($args['id'])) - $folder = $dms->getFolder($settings->_rootFolderID); - elseif(ctype_digit($args['id']) && empty($forcebyname)) - $folder = $dms->getFolder($args['id']); - else { - $folder = $dms->getFolderByName($args['id'], $parent); - } - if($folder) { - if($folder->getAccessMode($userobj) >= M_READ) { - $data = __getFolderData($folder); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); - } else { - return $response->withStatus(404); + function setEmail($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + return; } - } else { - return $response->withStatus(404); - } -} /* }}} */ -function getFolderParent($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - if($id == 0) { - return $response->withJson(array('success'=>true, 'message'=>'id is 0', 'data'=>''), 200); - } - $root = $dms->getRootFolder(); - if($root->getId() == $id) { - return $response->withJson(array('success'=>true, 'message'=>'id is root folder', 'data'=>''), 200); - } - $folder = $dms->getFolder($id); - $parent = $folder->getParent(); - if($parent) { - $rec = __getFolderData($parent); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$rec), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); - } -} /* }}} */ + $params = $request->getParsedBody(); + $userobj->setEmail($params['email']); + $data = $this->__getUserData($userobj); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } /* }}} */ -function getFolderPath($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - if(empty($args['id'])) { - return $response->withJson(array('success'=>true, 'message'=>'id is 0', 'data'=>''), 200); - } - $folder = $dms->getFolder($args['id']); + function getLockedDocuments($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - $path = $folder->getPath(); - $data = array(); - foreach($path as $element) { - $data[] = array('id'=>$element->getId(), 'name'=>$element->getName()); - } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); -} /* }}} */ - -function getFolderAttributes($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $folder = $dms->getFolder($args['id']); - - if($folder) { - if ($folder->getAccessMode($userobj) >= M_READ) { + if(false !== ($documents = $dms->getDocumentsLockedByUser($userobj))) { + $documents = SeedDMS_Core_DMS::filterAccess($documents, $userobj, M_READ); $recs = array(); - $attributes = $folder->getAttributes(); - foreach($attributes as $attribute) { - $recs[] = array( - 'id'=>(int)$attribute->getId(), - 'value'=>$attribute->getValue(), - 'name'=>$attribute->getAttributeDefinition()->getName(), - ); + foreach($documents as $document) { + $lc = $document->getLatestContent(); + if($lc) { + $recs[] = $this->__getLatestVersionData($lc); + } } return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); } else { - return $response->withStatus(404); + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); } - } -} /* }}} */ + } /* }}} */ -function getFolderChildren($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - if(empty($args['id'])) { - $folder = $dms->getRootFolder(); - $recs = array(__getFolderData($folder)); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); - } else { + function getFolder($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + $settings = $this->container->config; + + $params = $request->getQueryParams(); + $forcebyname = isset($params['forcebyname']) ? $params['forcebyname'] : 0; + $parent = isset($params['parentid']) ? $dms->getFolder($params['parentid']) : null; + + if (!isset($args['id']) || !$args['id']) + $folder = $dms->getFolder($settings->_rootFolderID); + elseif(ctype_digit($args['id']) && empty($forcebyname)) + $folder = $dms->getFolder($args['id']); + else { + $folder = $dms->getFolderByName($args['id'], $parent); + } + if($folder) { + if($folder->getAccessMode($userobj) >= M_READ) { + $data = $this->__getFolderData($folder); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such folder', 'data'=>''), 404); + } + } /* }}} */ + + function getFolderParent($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if($id == 0) { + return $response->withJson(array('success'=>true, 'message'=>'id is 0', 'data'=>''), 200); + } + $root = $dms->getRootFolder(); + if($root->getId() == $id) { + return $response->withJson(array('success'=>true, 'message'=>'id is root folder', 'data'=>''), 200); + } + $folder = $dms->getFolder($id); + if($folder) { + $parent = $folder->getParent(); + if($parent) { + if($parent->getAccessMode($userobj) >= M_READ) { + $rec = $this->__getFolderData($parent); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$rec), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such folder', 'data'=>''), 404); + } + } /* }}} */ + + function getFolderPath($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(empty($args['id'])) { + return $response->withJson(array('success'=>true, 'message'=>'id is 0', 'data'=>''), 200); + } $folder = $dms->getFolder($args['id']); if($folder) { if($folder->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $subfolders = $folder->getSubFolders(); - $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $userobj, M_READ); - foreach($subfolders as $subfolder) { - $recs[] = __getFolderData($subfolder); + $path = $folder->getPath(); + $data = array(); + foreach($path as $element) { + $data[] = array('id'=>$element->getId(), 'name'=>$element->getName()); } - $documents = $folder->getDocuments(); - $documents = SeedDMS_Core_DMS::filterAccess($documents, $userobj, M_READ); - foreach($documents as $document) { - $lc = $document->getLatestContent(); - if($lc) { - $recs[] = __getLatestVersionData($lc); - } + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such folder', 'data'=>''), 404); + } + } /* }}} */ + + function getFolderAttributes($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $folder = $dms->getFolder($args['id']); + if($folder) { + if ($folder->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $attributes = $folder->getAttributes(); + foreach($attributes as $attribute) { + $recs[] = array( + 'id'=>(int)$attribute->getId(), + 'value'=>$attribute->getValue(), + 'name'=>$attribute->getAttributeDefinition()->getName(), + ); } return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); } else { return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); } } else { - return $response->withStatus(404); + return $response->withJson(array('success'=>false, 'message'=>'No such folder', 'data'=>''), 404); } - } -} /* }}} */ + } /* }}} */ -function createFolder($request, $response, $args) { /* {{{ */ - global $dms, $userobj, $settings; + function getFolderChildren($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - } + if(empty($args['id'])) { + $folder = $dms->getRootFolder(); + $recs = array($this->$this->__getFolderData($folder)); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); + } else { + $folder = $dms->getFolder($args['id']); + if($folder) { + if($folder->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $subfolders = $folder->getSubFolders(); + $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $userobj, M_READ); + foreach($subfolders as $subfolder) { + $recs[] = $this->__getFolderData($subfolder); + } + $documents = $folder->getDocuments(); + $documents = SeedDMS_Core_DMS::filterAccess($documents, $userobj, M_READ); + foreach($documents as $document) { + $lc = $document->getLatestContent(); + if($lc) { + $recs[] = $this->__getLatestVersionData($lc); + } + } + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + return $response->withStatus(404); + } + } + } /* }}} */ - if(!ctype_digit($args['id']) || $args['id'] == 0) { - return $response->withJson(array('success'=>false, 'message'=>'No parent folder given', 'data'=>''), 400); - return; - } - $parent = $dms->getFolder($args['id']); - if($parent) { - if($parent->getAccessMode($userobj, 'addFolder') >= M_READWRITE) { - $params = $request->getParsedBody(); - if(!empty($params['name'])) { + function createFolder($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + } + + if(!ctype_digit($args['id']) || $args['id'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No parent folder given', 'data'=>''), 400); + return; + } + $parent = $dms->getFolder($args['id']); + if($parent) { + if($parent->getAccessMode($userobj, 'addFolder') >= M_READWRITE) { + $params = $request->getParsedBody(); + if(!empty($params['name'])) { + $comment = isset($params['comment']) ? $params['comment'] : ''; + if(isset($params['sequence'])) { + $sequence = str_replace(',', '.', $params["sequence"]); + if (!is_numeric($sequence)) + return $response->withJson(array('success'=>false, 'message'=>getMLText("invalid_sequence"), 'data'=>''), 400); + } else { + $dd = $parent->getSubFolders('s'); + if(count($dd) > 1) + $sequence = $dd[count($dd)-1]->getSequence() + 1; + else + $sequence = 1.0; + } + $newattrs = array(); + if(!empty($params['attributes'])) { + foreach($params['attributes'] as $attrname=>$attrvalue) { + $attrdef = $dms->getAttributeDefinitionByName($attrname); + if($attrdef) { + $newattrs[$attrdef->getID()] = $attrvalue; + } + } + } + /* Check if name already exists in the folder */ + if(!$settings->_enableDuplicateSubFolderNames) { + if($parent->hasSubFolderByName($params['name'])) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("subfolder_duplicate_name"), 'data'=>''), 409); + } + } + if($folder = $parent->addSubFolder($params['name'], $comment, $userobj, $sequence, $newattrs)) { + + $rec = $this->__getFolderData($folder); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$rec), 201); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Could not create folder', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'Missing folder name', 'data'=>''), 400); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access on destination folder', 'data'=>''), 403); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'Could not find parent folder', 'data'=>''), 404); + } + } /* }}} */ + + function moveFolder($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + } + + if(!ctype_digit($args['id']) || $args['id'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No source folder given', 'data'=>''), 400); + } + + if(!ctype_digit($args['folderid']) || $args['folderid'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No destination folder given', 'data'=>''), 400); + } + + $mfolder = $dms->getFolder($args['id']); + if($mfolder) { + if ($mfolder->getAccessMode($userobj, 'moveFolder') >= M_READ) { + if($folder = $dms->getFolder($args['folderid'])) { + if($folder->getAccessMode($userobj, 'moveFolder') >= M_READWRITE) { + if($mfolder->setParent($folder)) { + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Error moving folder', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access on destination folder', 'data'=>''), 403); + } + } else { + if($folder === null) + $status = 404; + else + $status = 500; + return $response->withJson(array('success'=>false, 'message'=>'No destination folder', 'data'=>''), $status); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($mfolder === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No folder', 'data'=>''), $status); + } + } /* }}} */ + + function deleteFolder($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + } + + if(!ctype_digit($args['id']) || $args['id'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'id is 0', 'data'=>''), 400); + } + $mfolder = $dms->getFolder($args['id']); + if($mfolder) { + if ($mfolder->getAccessMode($userobj, 'removeFolder') >= M_READWRITE) { + if($mfolder->remove()) { + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Error deleting folder', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($mfolder === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No folder', 'data'=>''), $status); + } + } /* }}} */ + + function uploadDocument($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + } + + if(!ctype_digit($args['id']) || $args['id'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No parent folder id given', 'data'=>''), 400); + } + + $mfolder = $dms->getFolder($args['id']); + if($mfolder) { + $uploadedFiles = $request->getUploadedFiles(); + if ($mfolder->getAccessMode($userobj, 'addDocument') >= M_READWRITE) { + $params = $request->getParsedBody(); + $docname = isset($params['name']) ? $params['name'] : ''; + $keywords = isset($params['keywords']) ? $params['keywords'] : ''; $comment = isset($params['comment']) ? $params['comment'] : ''; if(isset($params['sequence'])) { $sequence = str_replace(',', '.', $params["sequence"]); if (!is_numeric($sequence)) return $response->withJson(array('success'=>false, 'message'=>getMLText("invalid_sequence"), 'data'=>''), 400); } else { - $dd = $parent->getSubFolders('s'); + $dd = $mfolder->getDocuments('s'); if(count($dd) > 1) $sequence = $dd[count($dd)-1]->getSequence() + 1; else $sequence = 1.0; } - $newattrs = array(); - if(!empty($params['attributes'])) { - foreach($params['attributes'] as $attrname=>$attrvalue) { - $attrdef = $dms->getAttributeDefinitionByName($attrname); - if($attrdef) { - $newattrs[$attrdef->getID()] = $attrvalue; + if(isset($params['expdate'])) { + $tmp = explode('-', $params["expdate"]); + if(count($tmp) != 3) + return $response->withJson(array('success'=>false, 'message'=>getMLText('malformed_expiration_date'), 'data'=>''), 400); + $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); + } else + $expires = 0; + $version_comment = isset($params['version_comment']) ? $params['version_comment'] : ''; + $reqversion = (isset($params['reqversion']) && (int) $params['reqversion'] > 1) ? (int) $params['reqversion'] : 1; + $origfilename = isset($params['origfilename']) ? $params['origfilename'] : null; + $categories = isset($params["categories"]) ? $params["categories"] : array(); + $cats = array(); + foreach($categories as $catid) { + if($cat = $dms->getDocumentCategory($catid)) + $cats[] = $cat; + } + $attributes = isset($params["attributes"]) ? $params["attributes"] : array(); + foreach($attributes as $attrdefid=>$attribute) { + if($attrdef = $dms->getAttributeDefinition($attrdefid)) { + if($attribute) { + if(!$attrdef->validate($attribute)) { + return $response->withJson(array('success'=>false, 'message'=>getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute), 'data'=>''), 400); + } + } elseif($attrdef->getMinValues() > 0) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("attr_min_values", array("attrname"=>$attrdef->getName())), 'data'=>''), 400); } } } + if (count($uploadedFiles) == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No file detected', 'data'=>''), 400); + } + $file_info = array_pop($uploadedFiles); + if ($origfilename == null) + $origfilename = $file_info->getClientFilename(); + if (trim($docname) == '') + $docname = $origfilename; /* Check if name already exists in the folder */ - if(!$settings->_enableDuplicateSubFolderNames) { - if($parent->hasSubFolderByName($params['name'])) { - return $response->withJson(array('success'=>false, 'message'=>getMLText("subfolder_duplicate_name"), 'data'=>''), 400); + if(!$settings->_enableDuplicateDocNames) { + if($mfolder->hasDocumentByName($docname)) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("document_duplicate_name"), 'data'=>''), 409); } } - if($folder = $parent->addSubFolder($params['name'], $comment, $userobj, $sequence, $newattrs)) { + $temp = $file_info->file; + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $userfiletype = finfo_file($finfo, $temp); + $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); + finfo_close($finfo); + $res = $mfolder->addDocument($docname, $comment, $expires, $userobj, $keywords, $cats, $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, $sequence, array(), array(), $reqversion, $version_comment, $attributes); + // addDocumentCategories($res, $categories); + // setDocumentAttributes($res, $attributes); - $rec = __getFolderData($folder); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$rec), 201); + unlink($temp); + if($res) { + $doc = $res[0]; + // $rec = array('id'=>(int)$doc->getId(), 'name'=>$doc->getName(), 'version'=>$doc->getLatestContent()->getVersion()); + return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$this->__getLatestVersionData($doc->getLatestContent())), 201); } else { - return $response->withJson(array('success'=>false, 'message'=>'Could not create folder', 'data'=>''), 500); + return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); } - } else { - return $response->withJson(array('success'=>false, 'message'=>'Missing folder name', 'data'=>''), 400); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access on destination folder', 'data'=>''), 403); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'Could not find parent folder', 'data'=>''), 500); - } -} /* }}} */ - -function moveFolder($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - } - - if(!ctype_digit($args['id']) || $args['id'] == 0) { - return $response->withJson(array('success'=>true, 'message'=>'No source folder given', 'data'=>''), 400); - } - - if(!ctype_digit($args['folderid']) || $args['folderid'] == 0) { - return $response->withJson(array('success'=>true, 'message'=>'No destination folder given', 'data'=>''), 400); - } - - $mfolder = $dms->getFolder($args['id']); - if($mfolder) { - if ($mfolder->getAccessMode($userobj, 'moveFolder') >= M_READ) { - if($folder = $dms->getFolder($args['folderid'])) { - if($folder->getAccessMode($userobj, 'moveFolder') >= M_READWRITE) { - if($mfolder->setParent($folder)) { - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Error moving folder', 'data'=>''), 500); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access on destination folder', 'data'=>''), 403); - } - } else { - if($folder === null) - $status = 400; - else - $status = 500; - return $response->withJson(array('success'=>false, 'message'=>'No destination folder', 'data'=>''), $status); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($mfolder === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No folder', 'data'=>''), $status); - } -} /* }}} */ - -function deleteFolder($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - } - - if(!ctype_digit($args['id']) || $args['id'] == 0) { - return $response->withJson(array('success'=>true, 'message'=>'id is 0', 'data'=>''), 400); - } - $mfolder = $dms->getFolder($args['id']); - if($mfolder) { - if ($mfolder->getAccessMode($userobj, 'removeFolder') >= M_READWRITE) { - if($mfolder->remove()) { - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Error deleting folder', 'data'=>''), 500); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($mfolder === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No folder', 'data'=>''), $status); - } -} /* }}} */ - -function uploadDocument($request, $response, $args) { /* {{{ */ - global $dms, $userobj, $settings; - - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - } - - if(!ctype_digit($args['id']) || $args['id'] == 0) { - return $response->withJson(array('success'=>false, 'message'=>'No parent folder id given', 'data'=>''), 400); - } - - $mfolder = $dms->getFolder($args['id']); - if($mfolder) { - $uploadedFiles = $request->getUploadedFiles(); - if ($mfolder->getAccessMode($userobj, 'addDocument') >= M_READWRITE) { - $params = $request->getParsedBody(); - $docname = isset($params['name']) ? $params['name'] : ''; - $keywords = isset($params['keywords']) ? $params['keywords'] : ''; - $comment = isset($params['comment']) ? $params['comment'] : ''; - if(isset($params['sequence'])) { - $sequence = str_replace(',', '.', $params["sequence"]); - if (!is_numeric($sequence)) - return $response->withJson(array('success'=>false, 'message'=>getMLText("invalid_sequence"), 'data'=>''), 400); - } else { - $dd = $mfolder->getDocuments('s'); - if(count($dd) > 1) - $sequence = $dd[count($dd)-1]->getSequence() + 1; - else - $sequence = 1.0; - } - if(isset($params['expdate'])) { - $tmp = explode('-', $params["expdate"]); - if(count($tmp) != 3) - return $response->withJson(array('success'=>false, 'message'=>getMLText('malformed_expiration_date'), 'data'=>''), 400); - $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); - } else - $expires = 0; - $version_comment = isset($params['version_comment']) ? $params['version_comment'] : ''; - $reqversion = (isset($params['reqversion']) && (int) $params['reqversion'] > 1) ? (int) $params['reqversion'] : 1; - $origfilename = isset($params['origfilename']) ? $params['origfilename'] : null; - $categories = isset($params["categories"]) ? $params["categories"] : array(); - $cats = array(); - foreach($categories as $catid) { - if($cat = $dms->getDocumentCategory($catid)) - $cats[] = $cat; - } - $attributes = isset($params["attributes"]) ? $params["attributes"] : array(); - foreach($attributes as $attrdefid=>$attribute) { - if($attrdef = $dms->getAttributeDefinition($attrdefid)) { - if($attribute) { - if(!$attrdef->validate($attribute)) { - return $response->withJson(array('success'=>false, 'message'=>getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute), 'data'=>''), 400); - } - } elseif($attrdef->getMinValues() > 0) { - return $response->withJson(array('success'=>false, 'message'=>getMLText("attr_min_values", array("attrname"=>$attrdef->getName())), 'data'=>''), 400); - } - } - } - if (count($uploadedFiles) == 0) { - return $response->withJson(array('success'=>false, 'message'=>'No file detected', 'data'=>''), 400); - } - $file_info = array_pop($uploadedFiles); - if ($origfilename == null) - $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); - $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); - finfo_close($finfo); - $res = $mfolder->addDocument($docname, $comment, $expires, $userobj, $keywords, $cats, $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, $sequence, array(), array(), $reqversion, $version_comment, $attributes); -// addDocumentCategories($res, $categories); -// setDocumentAttributes($res, $attributes); - - unlink($temp); - if($res) { - $doc = $res[0]; - $rec = array('id'=>(int)$doc->getId(), 'name'=>$doc->getName(), 'version'=>$doc->getLatestContent()->getVersion()); - return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$rec), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($mfolder === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No folder', 'data'=>''), $status); - } -} /* }}} */ - -function updateDocument($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - } - - if(!ctype_digit($args['id']) || $args['id'] == 0) { - return $response->withJson(array('success'=>false, 'message'=>'No document id given', 'data'=>''), 400); - } - - $document = $dms->getDocument($args['id']); - if($document) { - if ($document->getAccessMode($userobj, 'updateDocument') >= M_READWRITE) { - $params = $request->getParsedBody(); - $origfilename = isset($params['origfilename']) ? $params['origfilename'] : null; - $comment = isset($params['comment']) ? $params['comment'] : null; - $attributes = isset($params["attributes"]) ? $params["attributes"] : array(); - foreach($attributes as $attrdefid=>$attribute) { - if($attrdef = $dms->getAttributeDefinition($attrdefid)) { - if($attribute) { - if(!$attrdef->validate($attribute)) { - return $response->withJson(array('success'=>false, 'message'=>getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute), 'data'=>''), 400); - } - } elseif($attrdef->getMinValues() > 0) { - return $response->withJson(array('success'=>false, 'message'=>getMLText("attr_min_values", array("attrname"=>$attrdef->getName())), 'data'=>''), 400); - } - } - } - $uploadedFiles = $request->getUploadedFiles(); - if (count($uploadedFiles) == 0) { - return $response->withJson(array('success'=>false, 'message'=>'No file detected', 'data'=>''), 400); - } - $file_info = array_pop($uploadedFiles); - if ($origfilename == null) - $origfilename = $file_info->getClientFilename(); - $temp = $file_info->file; - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $userfiletype = finfo_file($finfo, $temp); - $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); - finfo_close($finfo); - $res=$document->addContent($comment, $userobj, $temp, $origfilename, $fileType, $userfiletype, array(), array(), 0, $attributes); - - unlink($temp); - if($res) { - $rec = array('id'=>(int)$document->getId(), 'name'=>$document->getName(), 'version'=>$document->getLatestContent()->getVersion()); - return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$rec), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), 400); - } -} /* }}} */ - -/** - * Old upload method which uses put instead of post - */ -function uploadDocumentPut($request, $response, $args) { /* {{{ */ - global $dms, $userobj, $settings; - - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - } - - if(!ctype_digit($args['id']) || $args['id'] == 0) { - return $response->withJson(array('success'=>false, 'message'=>'No document id given', 'data'=>''), 400); - } - $mfolder = $dms->getFolder($args['id']); - if($mfolder) { - if ($mfolder->getAccessMode($userobj, 'addDocument') >= M_READWRITE) { - $params = $request->getQueryParams(); - $docname = isset($params['name']) ? $params['name'] : ''; - $keywords = isset($params['keywords']) ? $params['keywords'] : ''; - $origfilename = isset($params['origfilename']) ? $params['origfilename'] : null; - $content = $request->getBody(); - $temp = tempnam('/tmp', 'lajflk'); - $handle = fopen($temp, "w"); - fwrite($handle, $content); - fclose($handle); - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $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) { - $doc = $res[0]; - $rec = array('id'=>(int)$doc->getId(), 'name'=>$doc->getName()); - return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$rec), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($mfolder === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No folder', 'data'=>''), $status); - } -} /* }}} */ - -function uploadDocumentFile($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - } - - if(!ctype_digit($args['id']) || $args['id'] == 0) { - return $response->withJson(array('success'=>false, 'message'=>'No document id given', 'data'=>''), 400); - } - $document = $dms->getDocument($args['id']); - if($document) { - if ($document->getAccessMode($userobj, 'addDocumentFile') >= M_READWRITE) { - $uploadedFiles = $request->getUploadedFiles(); - $params = $request->getParsedBody(); - $docname = $params['name']; - $keywords = isset($params['keywords']) ? $params['keywords'] : ''; - $origfilename = $params['origfilename']; - $comment = isset($params['comment']) ? $params['comment'] : ''; - $version = empty($params['version']) ? 0 : $params['version']; - $public = empty($params['public']) ? 'false' : $params['public']; - if (count($uploadedFiles) == 0) { - return $response->withJson(array('success'=>false, 'message'=>'No file detected', 'data'=>''), 400); - } - $file_info = array_pop($uploadedFiles); - if ($origfilename == null) - $origfilename = $file_info->getClientFilename(); - if (trim($docname) == '') - $docname = $origfilename; - $temp = $file_info->file; - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $userfiletype = finfo_file($finfo, $temp); - $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); - finfo_close($finfo); - $res = $document->addDocumentFile($docname, $comment, $userobj, $temp, - $origfilename ? $origfilename : utf8_basename($temp), - $fileType, $userfiletype, $version, $public); - unlink($temp); - if($res) { - return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$res), 201); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No such document', 'data'=>''), $status); - } -} /* }}} */ - -function addDocumentLink($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - } - - if(!ctype_digit($args['id']) || $args['id'] == 0) { - return $response->withJson(array('success'=>false, 'message'=>'No source document given', 'data'=>''), 400); - return; - } - $sourcedoc = $dms->getDocument($args['id']); - $targetdoc = $dms->getDocument($args['documentid']); - if($sourcedoc && $targetdoc) { - if($sourcedoc->getAccessMode($userobj, 'addDocumentLink') >= M_READ) { - $params = $request->getParsedBody(); - $public = !isset($params['public']) ? true : false; - if ($sourcedoc->addDocumentLink($targetdoc->getId(), $userobj->getID(), $public)){ - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 201); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Could not create document link', 'data'=>''), 500); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access on source document', 'data'=>''), 403); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'Could not find source or target document', 'data'=>''), 500); - } -} /* }}} */ - -function getDocument($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $lc = $document->getLatestContent(); - if($lc) { - $data = __getLatestVersionData($lc); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); } else { return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); } } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + if($mfolder === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No folder', 'data'=>''), $status); } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ + } /* }}} */ -function deleteDocument($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - if($document) { - if ($document->getAccessMode($userobj, 'deleteDocument') >= M_READWRITE) { - if($document->remove()) { - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + function updateDocument($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + } + + if(!ctype_digit($args['id']) || $args['id'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No document id given', 'data'=>''), 400); + } + + $document = $dms->getDocument($args['id']); + if($document) { + if ($document->getAccessMode($userobj, 'updateDocument') >= M_READWRITE) { + $params = $request->getParsedBody(); + $origfilename = isset($params['origfilename']) ? $params['origfilename'] : null; + $comment = isset($params['comment']) ? $params['comment'] : null; + $attributes = isset($params["attributes"]) ? $params["attributes"] : array(); + foreach($attributes as $attrdefid=>$attribute) { + if($attrdef = $dms->getAttributeDefinition($attrdefid)) { + if($attribute) { + if(!$attrdef->validate($attribute)) { + return $response->withJson(array('success'=>false, 'message'=>getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute), 'data'=>''), 400); + } + } elseif($attrdef->getMinValues() > 0) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("attr_min_values", array("attrname"=>$attrdef->getName())), 'data'=>''), 400); + } + } + } + $uploadedFiles = $request->getUploadedFiles(); + if (count($uploadedFiles) == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No file detected', 'data'=>''), 400); + } + $file_info = array_pop($uploadedFiles); + if ($origfilename == null) + $origfilename = $file_info->getClientFilename(); + $temp = $file_info->file; + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $userfiletype = finfo_file($finfo, $temp); + $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); + finfo_close($finfo); + $res=$document->addContent($comment, $userobj, $temp, $origfilename, $fileType, $userfiletype, array(), array(), 0, $attributes); + + unlink($temp); + if($res) { + $rec = array('id'=>(int)$document->getId(), 'name'=>$document->getName(), 'version'=>$document->getLatestContent()->getVersion()); + return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$rec), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); + } } else { - return $response->withJson(array('success'=>false, 'message'=>'Error removing document', 'data'=>''), 500); + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); } } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), 404); } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ + } /* }}} */ -function moveDocument($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - if($document) { - if ($document->getAccessMode($userobj, 'moveDocument') >= M_READ) { - if($folder = $dms->getFolder($args['folderid'])) { - if($folder->getAccessMode($userobj, 'moveDocument') >= M_READWRITE) { - if($document->setFolder($folder)) { - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + /** + * Old upload method which uses put instead of post + */ + function uploadDocumentPut($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + } + + if(!ctype_digit($args['id']) || $args['id'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No document id given', 'data'=>''), 400); + } + $mfolder = $dms->getFolder($args['id']); + if($mfolder) { + if ($mfolder->getAccessMode($userobj, 'addDocument') >= M_READWRITE) { + $params = $request->getQueryParams(); + $docname = isset($params['name']) ? $params['name'] : ''; + $keywords = isset($params['keywords']) ? $params['keywords'] : ''; + $origfilename = isset($params['origfilename']) ? $params['origfilename'] : null; + $content = $request->getBody(); + $temp = tempnam('/tmp', 'lajflk'); + $handle = fopen($temp, "w"); + fwrite($handle, $content); + fclose($handle); + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $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'=>''), 409); + } + } + $res = $mfolder->addDocument($docname, '', 0, $userobj, '', array(), $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, 0); + unlink($temp); + if($res) { + $doc = $res[0]; + $rec = array('id'=>(int)$doc->getId(), 'name'=>$doc->getName()); + return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$rec), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($mfolder === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No folder', 'data'=>''), $status); + } + } /* }}} */ + + function uploadDocumentFile($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + } + + if(!ctype_digit($args['id']) || $args['id'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No document id given', 'data'=>''), 400); + } + $document = $dms->getDocument($args['id']); + if($document) { + if ($document->getAccessMode($userobj, 'addDocumentFile') >= M_READWRITE) { + $uploadedFiles = $request->getUploadedFiles(); + $params = $request->getParsedBody(); + $docname = $params['name']; + $keywords = isset($params['keywords']) ? $params['keywords'] : ''; + $origfilename = $params['origfilename']; + $comment = isset($params['comment']) ? $params['comment'] : ''; + $version = empty($params['version']) ? 0 : $params['version']; + $public = empty($params['public']) ? 'false' : $params['public']; + if (count($uploadedFiles) == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No file detected', 'data'=>''), 400); + } + $file_info = array_pop($uploadedFiles); + if ($origfilename == null) + $origfilename = $file_info->getClientFilename(); + if (trim($docname) == '') + $docname = $origfilename; + $temp = $file_info->file; + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $userfiletype = finfo_file($finfo, $temp); + $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); + finfo_close($finfo); + $res = $document->addDocumentFile($docname, $comment, $userobj, $temp, + $origfilename ? $origfilename : utf8_basename($temp), + $fileType, $userfiletype, $version, $public); + unlink($temp); + if($res) { + return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$res), 201); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No such document', 'data'=>''), $status); + } + } /* }}} */ + + function addDocumentLink($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + } + + if(!ctype_digit($args['id']) || $args['id'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No source document given', 'data'=>''), 400); + return; + } + if(!ctype_digit($args['documentid']) || $args['documentid'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No target document given', 'data'=>''), 400); + return; + } + $sourcedoc = $dms->getDocument($args['id']); + $targetdoc = $dms->getDocument($args['documentid']); + if($sourcedoc && $targetdoc) { + if($sourcedoc->getAccessMode($userobj, 'addDocumentLink') >= M_READ) { + $params = $request->getParsedBody(); + $public = !isset($params['public']) ? true : false; + if ($sourcedoc->addDocumentLink($targetdoc->getId(), $userobj->getID(), $public)){ + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 201); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Could not create document link', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access on source document', 'data'=>''), 403); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'Could not find source or target document', 'data'=>''), 500); + } + } /* }}} */ + + function getDocument($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $document = $dms->getDocument($args['id']); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $lc = $document->getLatestContent(); + if($lc) { + $data = $this->__getLatestVersionData($lc); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } + } /* }}} */ + + function deleteDocument($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!ctype_digit($args['id'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); + } + + $document = $dms->getDocument($args['id']); + if($document) { + if ($document->getAccessMode($userobj, 'deleteDocument') >= M_READWRITE) { + if($document->remove()) { + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Error removing document', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } + } /* }}} */ + + function moveDocument($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $document = $dms->getDocument($args['id']); + if($document) { + if ($document->getAccessMode($userobj, 'moveDocument') >= M_READ) { + if($folder = $dms->getFolder($args['folderid'])) { + if($folder->getAccessMode($userobj, 'moveDocument') >= M_READWRITE) { + if($document->setFolder($folder)) { + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Error moving document', 'data'=>''), 500); + } } else { - return $response->withJson(array('success'=>false, 'message'=>'Error moving document', 'data'=>''), 500); + return $response->withJson(array('success'=>false, 'message'=>'No access on destination folder', 'data'=>''), 403); } } else { - return $response->withJson(array('success'=>false, 'message'=>'No access on destination folder', 'data'=>''), 403); + if($folder === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No destination folder', 'data'=>''), $status); } } else { - if($folder === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No destination folder', 'data'=>''), $status); + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); } } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ + } /* }}} */ -function getDocumentContent($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); + function getDocumentContent($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $lc = $document->getLatestContent(); - if($lc) { - if (pathinfo($document->getName(), PATHINFO_EXTENSION) == $lc->getFileType()) - $filename = $document->getName(); + $document = $dms->getDocument($args['id']); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $lc = $document->getLatestContent(); + if($lc) { + if (pathinfo($document->getName(), PATHINFO_EXTENSION) == $lc->getFileType()) + $filename = $document->getName(); + else + $filename = $document->getName().$lc->getFileType(); + + $file = $dms->contentDir . $lc->getPath(); + if(!($fh = @fopen($file, 'rb'))) { + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); + } + $stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body + + return $response->withHeader('Content-Type', $lc->getMimeType()) + ->withHeader('Content-Description', 'File Transfer') + ->withHeader('Content-Transfer-Encoding', 'binary') + ->withHeader('Content-Disposition', 'attachment; filename="' . $filename . '"') + ->withHeader('Content-Length', filesize($dms->contentDir . $lc->getPath())) + ->withHeader('Expires', '0') + ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') + ->withHeader('Pragma', 'no-cache') + ->withBody($stream); + + sendFile($dms->contentDir . $lc->getPath()); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } + + } /* }}} */ + + function getDocumentVersions($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $document = $dms->getDocument($args['id']); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $lcs = $document->getContent(); + foreach($lcs as $lc) { + $recs[] = $this->__getDocumentVersionData($lc); + } + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } + } /* }}} */ + + function getDocumentVersion($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!ctype_digit($args['id']) || !ctype_digit($args['version'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); + } + + $document = $dms->getDocument($args['id']); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $lc = $document->getContentByVersion($args['version']); + if($lc) { + if (pathinfo($document->getName(), PATHINFO_EXTENSION) == $lc->getFileType()) + $filename = $document->getName(); + else + $filename = $document->getName().$lc->getFileType(); + + $file = $dms->contentDir . $lc->getPath(); + if(!($fh = @fopen($file, 'rb'))) { + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); + } + $stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body + + return $response->withHeader('Content-Type', $lc->getMimeType()) + ->withHeader('Content-Description', 'File Transfer') + ->withHeader('Content-Transfer-Encoding', 'binary') + ->withHeader('Content-Disposition', 'attachment; filename="' . $filename . '"') + ->withHeader('Content-Length', filesize($dms->contentDir . $lc->getPath())) + ->withHeader('Expires', '0') + ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') + ->withHeader('Pragma', 'no-cache') + ->withBody($stream); + + sendFile($dms->contentDir . $lc->getPath()); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such version', 'data'=>''), 404); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } + } /* }}} */ + + function updateDocumentVersion($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $document = $dms->getDocument($args['id']); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $lc = $document->getContentByVersion($args['version']); + if($lc) { + $params = $request->getParsedBody(); + if (isset($params['comment'])) { + $lc->setComment($params['comment']); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such version', 'data'=>''), 404); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } + } /* }}} */ + + function getDocumentFiles($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!ctype_digit($args['id'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); + } + + $document = $dms->getDocument($args['id']); + + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $files = $document->getDocumentFiles(); + foreach($files as $file) { + $recs[] = $this->__getDocumentFileData($file); + } + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } + } /* }}} */ + + function getDocumentFile($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!ctype_digit($args['id']) || !ctype_digit($args['fileid'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); + } + + $document = $dms->getDocument($args['id']); + + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $lc = $document->getDocumentFile($args['fileid']); + if($lc) { + $file = $dms->contentDir . $lc->getPath(); + if(!($fh = @fopen($file, 'rb'))) { + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); + } + $stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body + + return $response->withHeader('Content-Type', $lc->getMimeType()) + ->withHeader('Content-Description', 'File Transfer') + ->withHeader('Content-Transfer-Encoding', 'binary') + ->withHeader('Content-Disposition', 'attachment; filename="' . $document->getName() . $lc->getFileType() . '"') + ->withHeader('Content-Length', filesize($dms->contentDir . $lc->getPath())) + ->withHeader('Expires', '0') + ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') + ->withHeader('Pragma', 'no-cache') + ->withBody($stream); + + sendFile($dms->contentDir . $lc->getPath()); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No document file', 'data'=>''), 404); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } + } /* }}} */ + + function getDocumentLinks($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!ctype_digit($args['id'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); + } + + $document = $dms->getDocument($args['id']); + + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $links = $document->getDocumentLinks(); + foreach($links as $link) { + $recs[] = $this->__getDocumentLinkData($link); + } + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } + } /* }}} */ + + function getDocumentAttributes($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $document = $dms->getDocument($args['id']); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $attributes = $document->getAttributes(); + foreach($attributes as $attribute) { + $recs[] = array( + 'id'=>(int)$attribute->getId(), + 'value'=>$attribute->getValue(), + 'name'=>$attribute->getAttributeDefinition()->getName(), + ); + } + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); + } + } /* }}} */ + + function getDocumentPreview($request, $response, $args) { /* {{{ */ + require_once "SeedDMS/Preview.php"; + + $dms = $this->container->dms; + $userobj = $this->container->userobj; + $settings = $this->container->config; + + if(!ctype_digit($args['id'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); + } + + $document = $dms->getDocument($args['id']); + + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + if($args['version']) + $object = $document->getContentByVersion($args['version']); else - $filename = $document->getName().$lc->getFileType(); + $object = $document->getLatestContent(); + if(!$object) + exit; - $file = $dms->contentDir . $lc->getPath(); + if(!empty($args['width'])) + $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $args['width']); + else + $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir); + if(!$previewer->hasPreview($object)) + $previewer->createPreview($object); + + $file = $previewer->getFileName($object, $args['width']).".png"; if(!($fh = @fopen($file, 'rb'))) { - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); } $stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body - return $response->withHeader('Content-Type', $lc->getMimeType()) - ->withHeader('Content-Description', 'File Transfer') - ->withHeader('Content-Transfer-Encoding', 'binary') - ->withHeader('Content-Disposition', 'attachment; filename="' . $filename . '"') - ->withHeader('Content-Length', filesize($dms->contentDir . $lc->getPath())) - ->withHeader('Expires', '0') - ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') - ->withHeader('Pragma', 'no-cache') - ->withBody($stream); - - sendFile($dms->contentDir . $lc->getPath()); + return $response->withHeader('Content-Type', 'image/png') + ->withHeader('Content-Description', 'File Transfer') + ->withHeader('Content-Transfer-Encoding', 'binary') + ->withHeader('Content-Disposition', 'attachment; filename=preview-"' . $document->getID() . "-" . $object->getVersion() . "-" . $width . ".png" . '"') + ->withHeader('Content-Length', $previewer->getFilesize($object)) + ->withBody($stream); } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); } } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + if($document === null) + $status=404; + else + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } + } /* }}} */ -} /* }}} */ + function removeDocumentCategory($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; -function getDocumentVersions($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $lcs = $document->getContent(); - foreach($lcs as $lc) { - $recs[] = array( - 'version'=>$lc->getVersion(), - 'date'=>$lc->getDate(), - 'mimetype'=>$lc->getMimeType(), - 'size'=>$lc->getFileSize(), - 'comment'=>$lc->getComment(), - ); - } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + if(!ctype_digit($args['id']) || !ctype_digit($args['catid'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ -function getDocumentVersion($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); + $document = $dms->getDocument($args['id']); + $category = $dms->getDocumentCategory($args['catid']); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $lc = $document->getContentByVersion($args['version']); - if($lc) { - if (pathinfo($document->getName(), PATHINFO_EXTENSION) == $lc->getFileType()) - $filename = $document->getName(); + if($document && $category) { + if ($document->getAccessMode($userobj, 'removeDocumentCategory') >= M_READWRITE) { + $ret = $document->removeCategories(array($category)); + if ($ret) + return $response->withJson(array('success'=>true, 'message'=>'Deleted category successfully.', 'data'=>''), 200); else - $filename = $document->getName().$lc->getFileType(); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + } + } else { + if(!$document) + return $response->withJson(array('success'=>false, 'message'=>'No such document', 'data'=>''), 404); + if(!$category) + return $response->withJson(array('success'=>false, 'message'=>'No such category', 'data'=>''), 404); + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); + } + } /* }}} */ - $file = $dms->contentDir . $lc->getPath(); - if(!($fh = @fopen($file, 'rb'))) { + function removeDocumentCategories($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!ctype_digit($args['id'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); + } + + $document = $dms->getDocument($args['id']); + + if($document) { + if ($document->getAccessMode($userobj, 'removeDocumentCategory') >= M_READWRITE) { + if($document->setCategories(array())) + return $response->withJson(array('success'=>true, 'message'=>'Deleted categories successfully.', 'data'=>''), 200); + else return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); - } - $stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body - - return $response->withHeader('Content-Type', $lc->getMimeType()) - ->withHeader('Content-Description', 'File Transfer') - ->withHeader('Content-Transfer-Encoding', 'binary') - ->withHeader('Content-Disposition', 'attachment; filename="' . $filename . '"') - ->withHeader('Content-Length', filesize($dms->contentDir . $lc->getPath())) - ->withHeader('Expires', '0') - ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') - ->withHeader('Pragma', 'no-cache') - ->withBody($stream); - - sendFile($dms->contentDir . $lc->getPath()); } else { - return $response->withJson(array('success'=>false, 'message'=>'No such version', 'data'=>''), 400); + return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); } } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ - -function updateDocumentVersion($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $lc = $document->getContentByVersion($args['version']); - if($lc) { - $params = $request->getParsedBody(); - if (isset($params['comment'])) { - $lc->setComment($params['comment']); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No such version', 'data'=>''), 400); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ - -function getDocumentFiles($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $files = $document->getDocumentFiles(); - foreach($files as $file) { - $recs[] = array( - 'id'=>(int)$file->getId(), - 'name'=>$file->getName(), - 'date'=>$file->getDate(), - 'mimetype'=>$file->getMimeType(), - 'comment'=>$file->getComment(), - ); - } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ - -function getDocumentFile($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $lc = $document->getDocumentFile($args['fileid']); - - $file = $dms->contentDir . $lc->getPath(); - if(!($fh = @fopen($file, 'rb'))) { - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); - } - $stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body - - return $response->withHeader('Content-Type', $lc->getMimeType()) - ->withHeader('Content-Description', 'File Transfer') - ->withHeader('Content-Transfer-Encoding', 'binary') - ->withHeader('Content-Disposition', 'attachment; filename="' . $document->getName() . $lc->getFileType() . '"') - ->withHeader('Content-Length', filesize($dms->contentDir . $lc->getPath())) - ->withHeader('Expires', '0') - ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') - ->withHeader('Pragma', 'no-cache') - ->withBody($stream); - - sendFile($dms->contentDir . $lc->getPath()); - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ - -function getDocumentLinks($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $links = $document->getDocumentLinks(); - foreach($links as $link) { - $recs[] = array( - 'id'=>(int)$link->getId(), - 'target'=>$link->getTarget(), - 'public'=>$link->isPublic(), - ); - } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ - -function getDocumentAttributes($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $attributes = $document->getAttributes(); - foreach($attributes as $attribute) { - $recs[] = array( - 'id'=>(int)$attribute->getId(), - 'value'=>$attribute->getValue(), - 'name'=>$attribute->getAttributeDefinition()->getName(), - ); - } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ - -function getDocumentPreview($request, $response, $args) { /* {{{ */ - global $dms, $userobj, $settings; - require_once "SeedDMS/Preview.php"; - $document = $dms->getDocument($args['id']); - - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - if($args['version']) - $object = $document->getContentByVersion($args['version']); + if($document === null) + $status=404; else - $object = $document->getLatestContent(); - if(!$object) - exit; + $status=500; + return $response->withJson(array('success'=>false, 'message'=>'No such document', 'data'=>''), $status); + } + } /* }}} */ - if(!empty($args['width'])) - $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $args['width']); - else - $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir); - if(!$previewer->hasPreview($object)) - $previewer->createPreview($object); + function getAccount($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - $file = $previewer->getFileName($object, $args['width']).".png"; - if(!($fh = @fopen($file, 'rb'))) { - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); - } - $stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body - - return $response->withHeader('Content-Type', 'image/png') - ->withHeader('Content-Description', 'File Transfer') - ->withHeader('Content-Transfer-Encoding', 'binary') - ->withHeader('Content-Disposition', 'attachment; filename=preview-"' . $document->getID() . "-" . $object->getVersion() . "-" . $width . ".png" . '"') - ->withHeader('Content-Length', $previewer->getFilesize($object)) - ->withBody($stream); + if($userobj) { + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$this->__getUserData($userobj)), 200); } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), $status); - } -} /* }}} */ + } /* }}} */ -function removeDocumentCategory($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - $category = $dms->getDocumentCategory($args['categoryId']); + /** + * Search for documents in the database + * + * If the request parameter 'mode' is set to 'typeahead', it will + * return a list of words only. + */ + function doSearch($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - if($document && $category) { - if ($document->getAccessMode($userobj, 'removeDocumentCategory') >= M_READWRITE) { - $ret = $document->removeCategories(array($category)); - if ($ret) - return $response->withJson(array('success'=>true, 'message'=>'Deleted category successfully.', 'data'=>''), 200); - else - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); + $params = $request->getQueryParams(); + $querystr = $params['query']; + $mode = isset($params['mode']) ? $params['mode'] : ''; + if(!isset($params['limit']) || !$limit = $params['limit']) + $limit = 5; + if(!isset($params['offset']) || !$offset = $params['offset']) + $offset = 0; + if(!isset($params['searchin']) || !$searchin = explode(",",$params['searchin'])) + $searchin = array(); + if(!isset($params['objects']) || !$objects = $params['objects']) + $objects = 0x3; + $resArr = $dms->search($querystr, $limit, $offset, 'AND', $searchin, null, null, array(), array(), array(), array(), array(), array(), array(), $objects); + if($resArr === false) { + return $response->withJson(array(), 200); } - } else { - if(!$document) - return $response->withJson(array('success'=>false, 'message'=>'No such document', 'data'=>''), 400); - if(!$category) - return $response->withJson(array('success'=>false, 'message'=>'No such category', 'data'=>''), 400); - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 500); - } -} /* }}} */ - -function removeDocumentCategories($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $document = $dms->getDocument($args['id']); - - if($document) { - if ($document->getAccessMode($userobj, 'removeDocumentCategory') >= M_READWRITE) { - if($document->setCategories(array())) - return $response->withJson(array('success'=>true, 'message'=>'Deleted categories successfully.', 'data'=>''), 200); - else - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>''), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); - } - } else { - if($document === null) - $status=400; - else - $status=500; - return $response->withJson(array('success'=>false, 'message'=>'No such document', 'data'=>''), $status); - } -} /* }}} */ - -function getAccount($request, $response) { /* {{{ */ - global $dms, $userobj; - if($userobj) { - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>__getUserData($userobj)), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); - } -} /* }}} */ - -/** - * Search for documents in the database - * - * If the request parameter 'mode' is set to 'typeahead', it will - * return a list of words only. - */ -function doSearch($request, $response) { /* {{{ */ - global $dms, $userobj; - - $params = $request->getQueryParams(); - $querystr = $params['query']; - $mode = isset($params['mode']) ? $params['mode'] : ''; - if(!isset($params['limit']) || !$limit = $params['limit']) - $limit = 5; - if(!isset($params['offset']) || !$offset = $params['offset']) - $offset = 0; - if(!isset($params['searchin']) || !$searchin = explode(",",$params['searchin'])) - $searchin = array(); - if(!isset($params['objects']) || !$objects = $params['objects']) - $objects = 0x3; - $resArr = $dms->search($querystr, $limit, $offset, 'AND', $searchin, null, null, array(), array(), array(), array(), array(), array(), array(), $objects); - if($resArr === false) { - return $response->withJson(array(), 200); - } - $entries = array(); - $count = 0; - if($resArr['folders']) { - foreach ($resArr['folders'] as $entry) { - if ($entry->getAccessMode($userobj) >= M_READ) { - $entries[] = $entry; - $count++; - } - if($count >= $limit) - break; - } - } - $count = 0; - if($resArr['docs']) { - foreach ($resArr['docs'] as $entry) { - $lc = $entry->getLatestContent(); - if ($entry->getAccessMode($userobj) >= M_READ && $lc) { - $entries[] = $entry; - $count++; - } - if($count >= $limit) - break; - } - } - - switch($mode) { - case 'typeahead'; - $recs = array(); - foreach ($entries as $entry) { - /* Passing anything back but a string does not work, because - * the process function of bootstrap.typeahead needs an array of - * strings. - * - * As a quick solution to distingish folders from documents, the - * name will be preceeded by a 'F' or 'D' - - $tmp = array(); - if(get_class($entry) == 'SeedDMS_Core_Document') { - $tmp['type'] = 'folder'; - } else { - $tmp['type'] = 'document'; - } - $tmp['id'] = $entry->getID(); - $tmp['name'] = $entry->getName(); - $tmp['comment'] = $entry->getComment(); - */ - if(get_class($entry) == 'SeedDMS_Core_Document') { - $recs[] = 'D'.$entry->getName(); - } else { - $recs[] = 'F'.$entry->getName(); - } - } - if($recs) -// array_unshift($recs, array('type'=>'', 'id'=>0, 'name'=>$querystr, 'comment'=>'')); - array_unshift($recs, ' '.$querystr); - return $response->withJson($recs, 200); - break; - default: - $recs = array(); - foreach ($entries as $entry) { - if(get_class($entry) == 'SeedDMS_Core_Document') { - $document = $entry; - $lc = $document->getLatestContent(); - if($lc) { - $recs[] = __getLatestVersionData($lc); - } - } elseif(get_class($entry) == 'SeedDMS_Core_Folder') { - $folder = $entry; - $recs[] = __getFolderData($folder); - } - } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs)); - break; - } -} /* }}} */ - -/** - * Search for documents/folders with a given attribute=value - * - */ -function doSearchByAttr($request, $response) { /* {{{ */ - global $dms, $userobj; - - $params = $request->getQueryParams(); - $attrname = $params['name']; - $query = $params['value']; - if(empty($params['limit']) || !$limit = $params['limit']) - $limit = 50; - $attrdef = $dms->getAttributeDefinitionByName($attrname); - $entries = array(); - if($attrdef) { - $resArr = $attrdef->getObjects($query, $limit); + $entries = array(); + $count = 0; if($resArr['folders']) { foreach ($resArr['folders'] as $entry) { if ($entry->getAccessMode($userobj) >= M_READ) { $entries[] = $entry; + $count++; } + if($count >= $limit) + break; } } + $count = 0; if($resArr['docs']) { foreach ($resArr['docs'] as $entry) { - if ($entry->getAccessMode($userobj) >= M_READ) { + $lc = $entry->getLatestContent(); + if ($entry->getAccessMode($userobj) >= M_READ && $lc) { $entries[] = $entry; + $count++; + } + if($count >= $limit) + break; + } + } + + switch($mode) { + case 'typeahead'; + $recs = array(); + foreach ($entries as $entry) { + /* Passing anything back but a string does not work, because + * the process function of bootstrap.typeahead needs an array of + * strings. + * + * As a quick solution to distingish folders from documents, the + * name will be preceeded by a 'F' or 'D' + + $tmp = array(); + if(get_class($entry) == 'SeedDMS_Core_Document') { + $tmp['type'] = 'folder'; + } else { + $tmp['type'] = 'document'; + } + $tmp['id'] = $entry->getID(); + $tmp['name'] = $entry->getName(); + $tmp['comment'] = $entry->getComment(); + */ + if(get_class($entry) == 'SeedDMS_Core_Document') { + $recs[] = 'D'.$entry->getName(); + } else { + $recs[] = 'F'.$entry->getName(); + } + } + if($recs) + // array_unshift($recs, array('type'=>'', 'id'=>0, 'name'=>$querystr, 'comment'=>'')); + array_unshift($recs, ' '.$querystr); + return $response->withJson($recs, 200); + break; + default: + $recs = array(); + foreach ($entries as $entry) { + if(get_class($entry) == 'SeedDMS_Core_Document') { + $document = $entry; + $lc = $document->getLatestContent(); + if($lc) { + $recs[] = $this->__getLatestVersionData($lc); + } + } elseif(get_class($entry) == 'SeedDMS_Core_Folder') { + $folder = $entry; + $recs[] = $this->__getFolderData($folder); + } + } + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs)); + break; + } + } /* }}} */ + + /** + * Search for documents/folders with a given attribute=value + * + */ + function doSearchByAttr($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $params = $request->getQueryParams(); + $attrname = $params['name']; + $query = $params['value']; + if(empty($params['limit']) || !$limit = $params['limit']) + $limit = 50; + $attrdef = $dms->getAttributeDefinitionByName($attrname); + $entries = array(); + if($attrdef) { + $resArr = $attrdef->getObjects($query, $limit); + if($resArr['folders']) { + foreach ($resArr['folders'] as $entry) { + if ($entry->getAccessMode($userobj) >= M_READ) { + $entries[] = $entry; + } + } + } + if($resArr['docs']) { + foreach ($resArr['docs'] as $entry) { + if ($entry->getAccessMode($userobj) >= M_READ) { + $entries[] = $entry; + } } } } - } - $recs = array(); - foreach ($entries as $entry) { - if(get_class($entry) == 'SeedDMS_Core_Document') { - $document = $entry; - $lc = $document->getLatestContent(); - if($lc) { - $recs[] = __getLatestVersionData($lc); + $recs = array(); + foreach ($entries as $entry) { + if(get_class($entry) == 'SeedDMS_Core_Document') { + $document = $entry; + $lc = $document->getLatestContent(); + if($lc) { + $recs[] = $this->__getLatestVersionData($lc); + } + } elseif(get_class($entry) == 'SeedDMS_Core_Folder') { + $folder = $entry; + $recs[] = $this->__getFolderData($folder); } - } elseif(get_class($entry) == 'SeedDMS_Core_Folder') { - $folder = $entry; - $recs[] = __getFolderData($folder); } - } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); -} /* }}} */ + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$recs), 200); + } /* }}} */ -function checkIfAdmin($request, $response) { /* {{{ */ - global $dms, $userobj; + function checkIfAdmin($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - if(!$userobj) { - return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 200); - } - if(!$userobj->isAdmin()) { - return $response->withJson(array('success'=>false, 'message'=>'You must be logged in with an administrator account to access this resource', 'data'=>''), 200); - } + if(!$userobj) { + return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); + } + if(!$userobj->isAdmin()) { + return $response->withJson(array('success'=>false, 'message'=>'You must be logged in with an administrator account to access this resource', 'data'=>''), 403); + } - return true; -} /* }}} */ + return true; + } /* }}} */ -function getUsers($request, $response) { /* {{{ */ - global $dms, $userobj; + function getUsers($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; + $users = $dms->getAllUsers(); + $data = []; + foreach($users as $u) + $data[] = $this->__getUserData($u); - $users = $dms->getAllUsers(); - $data = []; - foreach($users as $u) - $data[] = __getUserData($u); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } /* }}} */ - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); -} /* }}} */ + function createUser($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; -function createUser($request, $response) { /* {{{ */ - global $dms, $userobj; + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; + $params = $request->getParsedBody(); + if(empty(trim($params['user']))) { + return $response->withJson(array('success'=>false, 'message'=>'Missing user login', 'data'=>''), 400); + } + $userName = $params['user']; + $password = isset($params['pass']) ? $params['pass'] : ''; + if(empty(trim($params['name']))) { + return $response->withJson(array('success'=>false, 'message'=>'Missing full user name', 'data'=>''), 400); + } + $fullname = $params['name']; + $email = isset($params['email']) ? $params['email'] : ''; + $language = isset($params['language']) ? $params['language'] : null;; + $theme = isset($params['theme']) ? $params['theme'] : null; + $comment = isset($params['comment']) ? $params['comment'] : null; + $role = isset($params['role']) ? $params['role'] : null; + $roleid = $role == 'admin' ? SeedDMS_Core_User::role_admin : ($role == 'guest' ? SeedDMS_Core_User::role_guest : SeedDMS_Core_User::role_user); - $params = $request->getParsedBody(); - if(empty(trim($params['user']))) { - return $response->withJson(array('success'=>false, 'message'=>'Missing user login', 'data'=>''), 500); - } - $userName = $params['user']; - $password = isset($params['pass']) ? $params['pass'] : ''; - if(empty(trim($params['name']))) { - return $response->withJson(array('success'=>false, 'message'=>'Missing full user name', 'data'=>''), 500); - } - $fullname = $params['name']; - $email = isset($params['email']) ? $params['email'] : ''; - $language = isset($params['language']) ? $params['language'] : null;; - $theme = isset($params['theme']) ? $params['theme'] : null; - $comment = isset($params['comment']) ? $params['comment'] : null; - $role = isset($params['role']) ? $params['role'] : null; - $roleid = $role == 'admin' ? SeedDMS_Core_User::role_admin : ($role == 'guest' ? SeedDMS_Core_User::role_guest : SeedDMS_Core_User::role_user); + $newAccount = $dms->addUser($userName, $password, $fullname, $email, $language, $theme, $comment, $roleid); + if ($newAccount === false) { + return $response->withJson(array('success'=>false, 'message'=>'Account could not be created, maybe it already exists', 'data'=>''), 500); + } - $newAccount = $dms->addUser($userName, $password, $fullname, $email, $language, $theme, $comment, $roleid); - if ($newAccount === false) { - return $response->withJson(array('success'=>false, 'message'=>'Account could not be created, maybe it already exists', 'data'=>''), 500); - } + $result = $this->__getUserData($newAccount); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$result), 201); + } /* }}} */ - $result = __getUserData($newAccount); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$result), 201); -} /* }}} */ + function deleteUser($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; -function deleteUser($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; - if($user = $dms->getUser($args['id'])) { - if($result = $user->remove($userobj, $userobj)) { - return $response->withJson(array('success'=>$result, 'message'=>'', 'data'=>''), 200); + if($user = $dms->getUser($args['id'])) { + if($result = $user->remove($userobj, $userobj)) { + return $response->withJson(array('success'=>$result, 'message'=>'', 'data'=>''), 200); + } else { + return $response->withJson(array('success'=>$result, 'message'=>'Could not delete user', 'data'=>''), 500); + } } else { - return $response->withJson(array('success'=>$result, 'message'=>'Could not delete user', 'data'=>''), 500); + return $response->withJson(array('success'=>false, 'message'=>'No such user', 'data'=>''), 404); } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No such user', 'data'=>''), 404); - } -} /* }}} */ - -/** - * Updates the password of an existing Account, the password must be PUT as a md5 string - * - * @param $id The user name or numerical identifier - */ -function changeUserPassword($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; - - $params = $request->getParsedBody(); - if ($params['password'] == null) { - return $response->withJson(array('success'=>false, 'message'=>'You must supply a new password', 'data'=>''), 200); - } - - $newPassword = $params['password']; - - if(ctype_digit($args['id'])) - $account = $dms->getUser($args['id']); - else { - $account = $dms->getUserByLogin($args['id']); - } + } /* }}} */ /** - * User not found + * Updates the password of an existing Account, the password must be PUT as a md5 string + * + * @param $id The user name or numerical identifier */ - if (!$account) { - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>'User not found.'), 404); - return; - } + function changeUserPassword($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - $operation = $account->setPwd($newPassword); + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; - if (!$operation){ - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>'Could not change password.'), 404); - } + $params = $request->getParsedBody(); + if ($params['password'] == null) { + return $response->withJson(array('success'=>false, 'message'=>'You must supply a new password', 'data'=>''), 400); + } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); -} /* }}} */ + $newPassword = $params['password']; + + if(ctype_digit($args['id'])) + $account = $dms->getUser($args['id']); + else { + $account = $dms->getUserByLogin($args['id']); + } + + /** + * User not found + */ + if (!$account) { + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>'User not found.'), 404); + return; + } + + $operation = $account->setPwd($newPassword); + + if (!$operation){ + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>'Could not change password.'), 404); + } + + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + } /* }}} */ + + function getUserById($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + if(ctype_digit($args['id'])) + $account = $dms->getUser($args['id']); + else { + $account = $dms->getUserByLogin($args['id']); + } + if($account) { + $data = $this->__getUserData($account); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such user', 'data'=>''), 404); + } + } /* }}} */ + + function setDisabledUser($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + $params = $request->getParsedBody(); + if (!isset($params['disable'])) { + return $response->withJson(array('success'=>false, 'message'=>'You must supply a disabled state', 'data'=>''), 400); + } + + $isDisabled = false; + $status = $params['disable']; + if ($status == 'true' || $status == '1') { + $isDisabled = true; + } + + if(ctype_digit($args['id'])) + $account = $dms->getUser($args['id']); + else { + $account = $dms->getUserByLogin($args['id']); + } + + if($account) { + $account->setDisabled($isDisabled); + $data = $this->__getUserData($account); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such user', 'data'=>''), 404); + } + } /* }}} */ + + function getGroups($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + + $groups = $dms->getAllGroups(); + $data = []; + foreach($groups as $u) + $data[] = $this->__getGroupData($u); -function getUserById($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; - if(ctype_digit($args['id'])) - $account = $dms->getUser($args['id']); - else { - $account = $dms->getUserByLogin($args['id']); - } - if($account) { - $data = __getUserData($account); return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); - } else { - return $response->withStatus(404); - } -} /* }}} */ + } /* }}} */ -function setDisabledUser($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; - $params = $request->getParsedBody(); - if (!isset($params['disable'])) { - return $response->withJson(array('success'=>false, 'message'=>'You must supply a disabled state', 'data'=>''), 400); - } + function createGroup($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - $isDisabled = false; - $status = $params['disable']; - if ($status == 'true' || $status == '1') { - $isDisabled = true; - } + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + $params = $request->getParsedBody(); + if (empty($params['name'])) { + return $response->withJson(array('success'=>false, 'message'=>'Need a category.', 'data'=>''), 400); + } - if(ctype_digit($args['id'])) - $account = $dms->getUser($args['id']); - else { - $account = $dms->getUserByLogin($args['id']); - } + $groupName = $params['name']; + $comment = isset($params['comment']) ? $params['comment'] : ''; - if($account) { - $account->setDisabled($isDisabled); - $data = __getUserData($account); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); - } else { - return $response->withStatus(404); - } -} /* }}} */ + $newGroup = $dms->addGroup($groupName, $comment); + if ($newGroup === false) { + return $response->withJson(array('success'=>false, 'message'=>'Group could not be created, maybe it already exists', 'data'=>''), 500); + } -function getGroups($request, $response) { /* {{{ */ - global $dms, $userobj; + // $result = array('id'=>(int)$newGroup->getID()); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$this->__getGroupData($newGroup)), 201); + } /* }}} */ - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; + function getGroup($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - $groups = $dms->getAllGroups(); - $data = []; - foreach($groups as $u) - $data[] = __getGroupData($u); + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + if(ctype_digit($args['id'])) + $group = $dms->getGroup($args['id']); + else { + $group = $dms->getGroupByName($args['id']); + } + if($group) { + $data = $this->__getGroupData($group); + $data['users'] = array(); + foreach ($group->getUsers() as $user) { + $data['users'][] = array('id' => (int)$user->getID(), 'login' => $user->getLogin()); + } + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } else { + return $response->withStatus(404); + } + } /* }}} */ - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); -} /* }}} */ + function changeGroupMembership($request, $response, $args, $operationType) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; -function createGroup($request, $response) { /* {{{ */ - global $dms, $userobj; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; - $params = $request->getParsedBody(); - $groupName = $params['name']; - $comment = $params['comment']; + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; - $newGroup = $dms->addGroup($groupName, $comment); - if ($newGroup === false) { - return $response->withJson(array('success'=>false, 'message'=>'Group could not be created, maybe it already exists', 'data'=>''), 500); - } + if(ctype_digit($args['id'])) + $group = $dms->getGroup($args['id']); + else { + $group = $dms->getGroupByName($args['id']); + } - $result = array('id'=>(int)$newGroup->getID()); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$result), 201); -} /* }}} */ + $params = $request->getParsedBody(); + if (empty($params['userid'])) { + return $response->withJson(array('success'=>false, 'message'=>'Missing userid', 'data'=>''), 200); + } + $userId = $params['userid']; + if(ctype_digit($userId)) + $user = $dms->getUser($userId); + else { + $user = $dms->getUserByLogin($userId); + } -function getGroup($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; - if(ctype_digit($args['id'])) - $group = $dms->getGroup($args['id']); - else { - $group = $dms->getGroupByName($args['id']); - } - if($group) { - $data = __getGroupData($group); + if (!($group && $user)) { + return $response->withStatus(404); + } + + $operationResult = false; + + if ($operationType == 'add') + { + $operationResult = $group->addUser($user); + } + if ($operationType == 'remove') + { + $operationResult = $group->removeUser($user); + } + + if ($operationResult === false) + { + $message = 'Could not add user to the group.'; + if ($operationType == 'remove') + { + $message = 'Could not remove user from group.'; + } + return $response->withJson(array('success'=>false, 'message'=>'Something went wrong. ' . $message, 'data'=>''), 500); + } + + $data = $this->__getGroupData($group); $data['users'] = array(); - foreach ($group->getUsers() as $user) { - $data['users'][] = array('id' => (int)$user->getID(), 'login' => $user->getLogin()); + foreach ($group->getUsers() as $userObj) { + $data['users'][] = array('id' => (int)$userObj->getID(), 'login' => $userObj->getLogin()); } return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); - } else { - return $response->withStatus(404); - } -} /* }}} */ + } /* }}} */ -function changeGroupMembership($request, $response, $args, $operationType) { /* {{{ */ - global $dms, $userobj; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; + function addUserToGroup($request, $response, $args) { /* {{{ */ + return changeGroupMembership($request, $response, $args, 'add'); + } /* }}} */ - if(ctype_digit($args['id'])) - $group = $dms->getGroup($args['id']); - else { - $group = $dms->getGroupByName($args['id']); - } + function removeUserFromGroup($request, $response, $args) { /* {{{ */ + return changeGroupMembership($request, $response, $args, 'remove'); + } /* }}} */ - $params = $request->getParsedBody(); - if (empty($params['userid'])) { - return $response->withJson(array('success'=>false, 'message'=>'Missing userid', 'data'=>''), 200); - } - $userId = $params['userid']; - if(ctype_digit($userId)) - $user = $dms->getUser($userId); - else { - $user = $dms->getUserByLogin($userId); - } + function setFolderInheritsAccess($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - if (!($group && $user)) { - return $response->withStatus(404); - } - - $operationResult = false; - - if ($operationType == 'add') - { - $operationResult = $group->addUser($user); - } - if ($operationType == 'remove') - { - $operationResult = $group->removeUser($user); - } - - if ($operationResult === false) - { - $message = 'Could not add user to the group.'; - if ($operationType == 'remove') + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + $params = $request->getParsedBody(); + if (empty($params['enable'])) { - $message = 'Could not remove user from group.'; - } - return $response->withJson(array('success'=>false, 'message'=>'Something went wrong. ' . $message, 'data'=>''), 200); - } - - $data = __getGroupData($group); - $data['users'] = array(); - foreach ($group->getUsers() as $userObj) { - $data['users'][] = array('id' => (int)$userObj->getID(), 'login' => $userObj->getLogin()); - } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); -} /* }}} */ - -function addUserToGroup($request, $response, $args) { /* {{{ */ - return changeGroupMembership($request, $response, $args, 'add'); -} /* }}} */ - -function removeUserFromGroup($request, $response, $args) { /* {{{ */ - return changeGroupMembership($request, $response, $args, 'remove'); -} /* }}} */ - -function setFolderInheritsAccess($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; - $params = $request->getParsedBody(); - if (empty($params['enable'])) - { - return $response->withJson(array('success'=>false, 'message'=>'You must supply an "enable" value', 'data'=>''), 200); - } - - $inherit = false; - $status = $params['enable']; - if ($status == 'true' || $status == '1') - { - $inherit = true; - } - - if(ctype_digit($args['id'])) - $folder = $dms->getFolder($args['id']); - else { - $folder = $dms->getFolderByName($args['id']); - } - - if($folder) { - $folder->setInheritAccess($inherit); - $folderId = $folder->getId(); - $folder = null; - // reread from db - $folder = $dms->getFolder($folderId); - $success = ($folder->inheritsAccess() == $inherit); - return $response->withJson(array('success'=>$success, 'message'=>'', 'data'=>$data), 200); - } else { - return $response->withStatus(404); - } -} /* }}} */ - -function addUserAccessToFolder($request, $response, $args) { /* {{{ */ - return changeFolderAccess($request, $response, $args, 'add', 'user'); -} /* }}} */ - -function addGroupAccessToFolder($request, $response, $args) { /* {{{ */ - return changeFolderAccess($request, $response, $args, 'add', 'group'); -} /* }}} */ - -function removeUserAccessFromFolder($request, $response, $args) { /* {{{ */ - return changeFolderAccess($request, $response, $args, 'remove', 'user'); -} /* }}} */ - -function removeGroupAccessFromFolder($request, $response, $args) { /* {{{ */ - return changeFolderAccess($request, $response, $args, 'remove', 'group'); -} /* }}} */ - -function changeFolderAccess($request, $response, $args, $operationType, $userOrGroup) { /* {{{ */ - global $dms, $userobj; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; - - if(ctype_digit($args['id'])) - $folder = $dms->getfolder($args['id']); - else { - $folder = $dms->getfolderByName($args['id']); - } - if (!$folder) { - return $response->withStatus(404); - } - - $params = $request->getParsedBody(); - $userOrGroupIdInput = $params['id']; - if ($operationType == 'add') - { - if ($params['id'] == null) - { - return $response->withJson(array('success'=>false, 'message'=>'Please PUT the user or group Id', 'data'=>''), 200); + return $response->withJson(array('success'=>false, 'message'=>'You must supply an "enable" value', 'data'=>''), 200); } - if ($params['mode'] == null) + $inherit = false; + $status = $params['enable']; + if ($status == 'true' || $status == '1') { - return $response->withJson(array('success'=>false, 'message'=>'Please PUT the access mode', 'data'=>''), 200); + $inherit = true; } - $modeInput = $params['mode']; - - $mode = M_NONE; - if ($modeInput == 'read') - { - $mode = M_READ; + if(ctype_digit($args['id'])) + $folder = $dms->getFolder($args['id']); + else { + $folder = $dms->getFolderByName($args['id']); } - if ($modeInput == 'readwrite') - { - $mode = M_READWRITE; + + if($folder) { + $folder->setInheritAccess($inherit); + $folderId = $folder->getId(); + $folder = null; + // reread from db + $folder = $dms->getFolder($folderId); + $success = ($folder->inheritsAccess() == $inherit); + return $response->withJson(array('success'=>$success, 'message'=>'', 'data'=>$data), 200); + } else { + return $response->withStatus(404); } - if ($modeInput == 'all') - { - $mode = M_ALL; + } /* }}} */ + + function addUserAccessToFolder($request, $response, $args) { /* {{{ */ + return changeFolderAccess($request, $response, $args, 'add', 'user'); + } /* }}} */ + + function addGroupAccessToFolder($request, $response, $args) { /* {{{ */ + return changeFolderAccess($request, $response, $args, 'add', 'group'); + } /* }}} */ + + function removeUserAccessFromFolder($request, $response, $args) { /* {{{ */ + return changeFolderAccess($request, $response, $args, 'remove', 'user'); + } /* }}} */ + + function removeGroupAccessFromFolder($request, $response, $args) { /* {{{ */ + return changeFolderAccess($request, $response, $args, 'remove', 'group'); + } /* }}} */ + + function changeFolderAccess($request, $response, $args, $operationType, $userOrGroup) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + + if(ctype_digit($args['id'])) + $folder = $dms->getfolder($args['id']); + else { + $folder = $dms->getfolderByName($args['id']); } - } - - - $userOrGroupId = $userOrGroupIdInput; - if(!ctype_digit($userOrGroupIdInput) && $userOrGroup == 'user') - { - $userOrGroupObj = $dms->getUserByLogin($userOrGroupIdInput); - } - if(!ctype_digit($userOrGroupIdInput) && $userOrGroup == 'group') - { - $userOrGroupObj = $dms->getGroupByName($userOrGroupIdInput); - } - if(ctype_digit($userOrGroupIdInput) && $userOrGroup == 'user') - { - $userOrGroupObj = $dms->getUser($userOrGroupIdInput); - } - if(ctype_digit($userOrGroupIdInput) && $userOrGroup == 'group') - { - $userOrGroupObj = $dms->getGroup($userOrGroupIdInput); - } - if (!$userOrGroupObj) { - return $response->withStatus(404); - } - $userOrGroupId = $userOrGroupObj->getId(); - - $operationResult = false; - - if ($operationType == 'add' && $userOrGroup == 'user') - { - $operationResult = $folder->addAccess($mode, $userOrGroupId, true); - } - if ($operationType == 'remove' && $userOrGroup == 'user') - { - $operationResult = $folder->removeAccess($userOrGroupId, true); - } - - if ($operationType == 'add' && $userOrGroup == 'group') - { - $operationResult = $folder->addAccess($mode, $userOrGroupId, false); - } - if ($operationType == 'remove' && $userOrGroup == 'group') - { - $operationResult = $folder->removeAccess($userOrGroupId, false); - } - - if ($operationResult === false) - { - $message = 'Could not add user/group access to this folder.'; - if ($operationType == 'remove') - { - $message = 'Could not remove user/group access from this folder.'; + if (!$folder) { + return $response->withStatus(404); } - return $response->withJson(array('success'=>false, 'message'=>'Something went wrong. ' . $message, 'data'=>''), 200); - } - $data = array(); - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); -} /* }}} */ + $params = $request->getParsedBody(); + $userOrGroupIdInput = $params['id']; + if ($operationType == 'add') + { + if ($params['id'] == null) + { + return $response->withJson(array('success'=>false, 'message'=>'Please PUT the user or group Id', 'data'=>''), 200); + } -function getCategories($request, $response) { /* {{{ */ - global $dms, $userobj; + if ($params['mode'] == null) + { + return $response->withJson(array('success'=>false, 'message'=>'Please PUT the access mode', 'data'=>''), 200); + } - if(false === ($categories = $dms->getDocumentCategories())) { - return $response->withJson(array('success'=>false, 'message'=>'Could not get categories', 'data'=>null), 500); - } - $data = []; - foreach($categories as $category) - $data[] = ['id' => (int)$category->getId(), 'name' => $category->getName()]; + $modeInput = $params['mode']; - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); -} /* }}} */ + $mode = M_NONE; + if ($modeInput == 'read') + { + $mode = M_READ; + } + if ($modeInput == 'readwrite') + { + $mode = M_READWRITE; + } + if ($modeInput == 'all') + { + $mode = M_ALL; + } + } -function getCategory($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - if(!ctype_digit($args['id'])) { - return $response->withJson(array('success'=>false, 'message'=>'No such category', 'data'=>''), 400); - } + $userOrGroupId = $userOrGroupIdInput; + if(!ctype_digit($userOrGroupIdInput) && $userOrGroup == 'user') + { + $userOrGroupObj = $dms->getUserByLogin($userOrGroupIdInput); + } + if(!ctype_digit($userOrGroupIdInput) && $userOrGroup == 'group') + { + $userOrGroupObj = $dms->getGroupByName($userOrGroupIdInput); + } + if(ctype_digit($userOrGroupIdInput) && $userOrGroup == 'user') + { + $userOrGroupObj = $dms->getUser($userOrGroupIdInput); + } + if(ctype_digit($userOrGroupIdInput) && $userOrGroup == 'group') + { + $userOrGroupObj = $dms->getGroup($userOrGroupIdInput); + } + if (!$userOrGroupObj) { + return $response->withStatus(404); + } + $userOrGroupId = $userOrGroupObj->getId(); + + $operationResult = false; + + if ($operationType == 'add' && $userOrGroup == 'user') + { + $operationResult = $folder->addAccess($mode, $userOrGroupId, true); + } + if ($operationType == 'remove' && $userOrGroup == 'user') + { + $operationResult = $folder->removeAccess($userOrGroupId, true); + } + + if ($operationType == 'add' && $userOrGroup == 'group') + { + $operationResult = $folder->addAccess($mode, $userOrGroupId, false); + } + if ($operationType == 'remove' && $userOrGroup == 'group') + { + $operationResult = $folder->removeAccess($userOrGroupId, false); + } + + if ($operationResult === false) + { + $message = 'Could not add user/group access to this folder.'; + if ($operationType == 'remove') + { + $message = 'Could not remove user/group access from this folder.'; + } + return $response->withJson(array('success'=>false, 'message'=>'Something went wrong. ' . $message, 'data'=>''), 500); + } - $category = $dms->getDocumentCategory($args['id']); - if($category) { $data = array(); - $data['id'] = (int)$category->getId(); - $data['name'] = $category->getName(); return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); - } else { - return $response->withStatus(404); - } -} /* }}} */ + } /* }}} */ -function createCategory($request, $response) { /* {{{ */ - global $dms, $userobj; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; + function getCategories($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - $params = $request->getParsedBody(); - if (empty($params['category'])) { - return $response->withJson(array('success'=>false, 'message'=>'Need a category.', 'data'=>''), 400); - } - - $catobj = $dms->getDocumentCategoryByName($params['category']); - if($catobj) { - return $response->withJson(array('success'=>false, 'message'=>'Category already exists', 'data'=>''), 409); - } else { - if($data = $dms->addDocumentCategory($params['category'])) { - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>array('id'=>(int)$data->getID())), 201); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Could not add category', 'data'=>''), 500); + if(false === ($categories = $dms->getDocumentCategories())) { + return $response->withJson(array('success'=>false, 'message'=>'Could not get categories', 'data'=>null), 500); } - } -} /* }}} */ + $data = []; + foreach($categories as $category) + $data[] = $this->__getCategoryData($category); -function deleteCategory($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } /* }}} */ - if($category = $dms->getDocumentCategory($args['id'])) { - if($result = $category->remove()) { - return $response->withJson(array('success'=>$result, 'message'=>'', 'data'=>''), 200); - } else { - return $response->withJson(array('success'=>$result, 'message'=>'Could not delete category', 'data'=>''), 500); + function getCategory($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + if(!ctype_digit($args['id'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); } - } else { - return $response->withJson(array('success'=>false, 'message'=>'No such category', 'data'=>''), 404); - } -} /* }}} */ -/** - * Updates the name of an existing category - * - * @param $id The user name or numerical identifier - */ -function changeCategoryName($request, $response, $args) { /* {{{ */ - global $dms, $userobj; + $category = $dms->getDocumentCategory($args['id']); + if($category) { + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$this->__getCategoryData($category)), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such category', 'data'=>''), 404); + } + } /* }}} */ - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; + function createCategory($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - $params = $request->getParsedBody(); - if (empty($params['name'])) - { - return $response->withJson(array('success'=>false, 'message'=>'You must supply a new name', 'data'=>''), 200); - } + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; - $newname = $params['name']; + $params = $request->getParsedBody(); + if (empty($params['name'])) { + return $response->withJson(array('success'=>false, 'message'=>'Need a category.', 'data'=>''), 400); + } + + $catobj = $dms->getDocumentCategoryByName($params['name']); + if($catobj) { + return $response->withJson(array('success'=>false, 'message'=>'Category already exists', 'data'=>''), 409); + } else { + if($data = $dms->addDocumentCategory($params['name'])) { + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$this->__getCategoryData($data)), 201); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Could not add category', 'data'=>''), 500); + } + } + } /* }}} */ + + function deleteCategory($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + + if($category = $dms->getDocumentCategory($args['id'])) { + if($result = $category->remove()) { + return $response->withJson(array('success'=>$result, 'message'=>'', 'data'=>''), 200); + } else { + return $response->withJson(array('success'=>$result, 'message'=>'Could not delete category', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such category', 'data'=>''), 404); + } + } /* }}} */ + + /** + * Updates the name of an existing category + * + * @param $id The user name or numerical identifier + */ + function changeCategoryName($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + + if(!ctype_digit($args['id'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); + } + + $params = $request->getParsedBody(); + if (empty($params['name'])) + { + return $response->withJson(array('success'=>false, 'message'=>'You must supply a new name', 'data'=>''), 400); + } + + $newname = $params['name']; - $category = null; - if(ctype_digit($args['id'])) $category = $dms->getDocumentCategory($args['id']); + /** + * Category not found + */ + if (!$category) { + return $response->withJson(array('success'=>false, 'message'=>'No such category', 'data'=>''), 404); + } + + if (!$category->setName($newname)) { + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>'Could not change name.'), 400); + } + + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$this->__getCategoryData($category)), 200); + } /* }}} */ + + function getAttributeDefinitions($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $attrdefs = $dms->getAllAttributeDefinitions(); + $data = []; + foreach($attrdefs as $attrdef) + $data[] = $this->__getAttributeDefinitionData($attrdef); + + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } /* }}} */ + /** - * Category not found + * Updates the name of an existing attribute definition + * + * @param $id The user name or numerical identifier */ - if (!$category) { - return $response->withStatus(404); - } + function changeAttributeDefinitionName($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; - if (!$category->setName($newname)) { - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>'Could not change name.'), 200); - } + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); -} /* }}} */ + if(!ctype_digit($args['id'])) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''), 400); + } -function getAttributeDefinitions($request, $response) { /* {{{ */ - global $dms, $userobj; + $params = $request->getParsedBody(); + if ($params['name'] == null) { + return $response->withJson(array('success'=>false, 'message'=>'You must supply a new name', 'data'=>''), 400); + } - $attrdefs = $dms->getAllAttributeDefinitions(); - $data = []; - foreach($attrdefs as $attrdef) - $data[] = ['id' => (int)$attrdef->getId(), 'name' => $attrdef->getName(), 'type'=>(int)$attrdef->getType(), 'objtype'=>(int)$attrdef->getObjType(), 'min'=>(int)$attrdef->getMinValues(), 'max'=>(int)$attrdef->getMaxValues(), 'multiple'=>$attrdef->getMultipleValues()?true:false, 'valueset'=>$attrdef->getValueSetAsArray()]; + $newname = $params['name']; - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); -} /* }}} */ - -/** - * Updates the name of an existing attribute definition - * - * @param $id The user name or numerical identifier - */ -function changeAttributeDefinitionName($request, $response, $args) { /* {{{ */ - global $dms, $userobj; - - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; - - $params = $request->getParsedBody(); - if ($params['name'] == null) { - return $response->withJson(array('success'=>false, 'message'=>'You must supply a new name', 'data'=>''), 200); - } - - $newname = $params['name']; - - $attrdef = null; - if(ctype_digit($args['id'])) $attrdef = $dms->getAttributeDefinition($args['id']); - /** - * Category not found - */ - if (!$attrdef) { - return $response->withStatus(404); - } + /** + * Attribute definition not found + */ + if (!$attrdef) { + return $response->withJson(array('success'=>false, 'message'=>'No such attribute defintion', 'data'=>''), 404); + } - if (!$attrdef->setName($newname)) { - return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>'Could not change name.'), 200); - return; - } + if (!$attrdef->setName($newname)) { + return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>'Could not change name.'), 400); + return; + } + + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$this->__getAttributeDefinitionData($attrdef)), 200); + } /* }}} */ + + function clearFolderAccessList($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + + if(ctype_digit($args['id'])) + $folder = $dms->getFolder($args['id']); + else { + $folder = $dms->getFolderByName($args['id']); + } + if (!$folder) { + return $response->withStatus(404); + } + if (!$folder->clearAccessList()) { + return $response->withJson(array('success'=>false, 'message'=>'Something went wrong. Could not clear access list for this folder.', 'data'=>''), 500); + } + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); + } /* }}} */ - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); } /* }}} */ -function clearFolderAccessList($request, $response, $args) { /* {{{ */ - global $dms, $userobj; +class TestController { /* {{{ */ + protected $container; - $check = checkIfAdmin($request, $response); - if($check !== true) - return $check; + // constructor receives container instance + public function __construct(ContainerInterface $container) { + $this->container = $container; + } - if(ctype_digit($args['id'])) - $folder = $dms->getFolder($args['id']); - else { - $folder = $dms->getFolderByName($args['id']); - } - if (!$folder) { - return $response->withStatus(404); - } - if (!$folder->clearAccessList()) { - return $response->withJson(array('success'=>false, 'message'=>'Something went wrong. Could not clear access list for this folder.', 'data'=>''), 200); - } - return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200); -} /* }}} */ - -function echoData($request, $response) { /* {{{ */ - echo $request->getBody(); + public function echoData($request, $response) { /* {{{ */ + return $response->withJson(array('success'=>true, 'message'=>'This is the result of the echo call.', 'data'=>''), 200); + } /* }}} */ } /* }}} */ //$app = new Slim(array('mode'=>'development', '_session.handler'=>null)); $app = new \Slim\App(); +/* Middleware for authentication */ +class Auth { /* {{{ */ + + private $container; + + public function __construct($container) { + $this->container = $container; + } + + /** + * Example middleware invokable class + * + * @param \Psr\Http\Message\ServerRequestInterface $request PSR7 request + * @param \Psr\Http\Message\ResponseInterface $response PSR7 response + * @param callable $next Next middleware + * + * @return \Psr\Http\Message\ResponseInterface + */ + public function __invoke($request, $response, $next) + { + // $this->container has the DI + $dms = $this->container->dms; + $settings = $this->container->config; + if($settings->_apiOrigin && isset($this->container->environment['HTTP_ORIGIN'])) { + $origins = explode(',', $settings->_apiOrigin); + if(!in_array($this->container->environment['HTTP_ORIGIN'], $origins)) { + return $response->withStatus(403); + } + } + /* The preflight options request doesn't have authorization in the header. So + * don't even try to authorize. + */ + if($request->getMethod() == 'OPTIONS') { + } elseif(!in_array($request->getUri()->getPath(), array('echo', 'login'))) { + $userobj = null; + if(!empty($this->container->environment['HTTP_AUTHORIZATION']) && !empty($settings->_apiKey) && !empty($settings->_apiUserId)) { + if($settings->_apiKey == $this->container->environment['HTTP_AUTHORIZATION']) { + if(!($userobj = $dms->getUser($settings->_apiUserId))) { + return $response->withStatus(403); + } + } else { + return $response->withStatus(403); + } + } else { + require_once("../inc/inc.ClassSession.php"); + $session = new SeedDMS_Session($dms->getDb()); + if (isset($_COOKIE["mydms_session"])) { + $dms_session = $_COOKIE["mydms_session"]; + if(!$resArr = $session->load($dms_session)) { + /* Delete Cookie */ + setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot); + if($settings->_enableGuestLogin) + $userobj = $dms->getUser($settings->_guestID); + else + return $response->withStatus(403); + } + + /* Load user data */ + $userobj = $dms->getUser($resArr["userID"]); + if (!is_object($userobj)) { + /* Delete Cookie */ + setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot); + if($settings->_enableGuestLogin) { + if(!($userobj = $dms->getUser($settings->_guestID))) + return $response->withStatus(403); + } else + return $response->withStatus(403); + } + if($userobj->isAdmin()) { + if($resArr["su"]) { + if(!($userobj = $dms->getUser($resArr["su"]))) + return $response->withStatus(403); + } + } + $dms->setUser($userobj); + } else { + return $response->withStatus(403); + } + } + $this->container['userobj'] = $userobj; + } + $response = $next($request, $response); + return $response; + } +} /* }}} */ + +$container = $app->getContainer(); +$container['dms'] = $dms; +$container['config'] = $settings; +$app->add(new Auth($container)); + +// Make CORS preflighted request possible +$app->options('/{routes:.+}', function ($request, $response, $args) { + return $response; +}); +$app->add(function ($req, $res, $next) { + $response = $next($req, $res); + return $response + ->withHeader('Access-Control-Allow-Origin', $req->getHeader('Origin') ? $req->getHeader('Origin') : '*') + ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization') + ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS'); +}); // use post for create operation // use get for retrieval operation // use put for update operation // use delete for delete operation -$app->post('/login', 'doLogin'); -$app->get('/logout', 'doLogout'); -$app->get('/account', 'getAccount'); -$app->get('/search', 'doSearch'); -$app->get('/searchbyattr', 'doSearchByAttr'); -$app->get('/folder/', 'getFolder'); -$app->get('/folder/{id}', 'getFolder'); -$app->post('/folder/{id}/move/{folderid}', 'moveFolder'); -$app->delete('/folder/{id}', 'deleteFolder'); -$app->get('/folder/{id}/children', 'getFolderChildren'); -$app->get('/folder/{id}/parent', 'getFolderParent'); -$app->get('/folder/{id}/path', 'getFolderPath'); -$app->get('/folder/{id}/attributes', 'getFolderAttributes'); -$app->post('/folder/{id}/createfolder', 'createFolder'); -$app->put('/folder/{id}/document', 'uploadDocumentPut'); -$app->post('/folder/{id}/document', 'uploadDocument'); -$app->get('/document/{id}', 'getDocument'); -$app->post('/document/{id}/attachment', 'uploadDocumentFile'); -$app->post('/document/{id}/update', 'updateDocument'); -$app->delete('/document/{id}', 'deleteDocument'); -$app->post('/document/{id}/move/{folderid}', 'moveDocument'); -$app->get('/document/{id}/content', 'getDocumentContent'); -$app->get('/document/{id}/versions', 'getDocumentVersions'); -$app->get('/document/{id}/version/{version}', 'getDocumentVersion'); -$app->put('/document/{id}/version/{version}', 'updateDocumentVersion'); -$app->get('/document/{id}/files', 'getDocumentFiles'); -$app->get('/document/{id}/file/{fileid}', 'getDocumentFile'); -$app->get('/document/{id}/links', 'getDocumentLinks'); -$app->post('/document/{id}/link/{documentid}', 'addDocumentLink'); -$app->get('/document/{id}/attributes', 'getDocumentAttributes'); -$app->get('/document/{id}/preview/{version}/{width}', 'getDocumentPreview'); -$app->delete('/document/{id}/categories', 'removeDocumentCategories'); -$app->delete('/document/{id}/category/{categoryId}', 'removeDocumentCategory'); -$app->put('/account/fullname', 'setFullName'); -$app->put('/account/email', 'setEmail'); -$app->get('/account/documents/locked', 'getLockedDocuments'); -$app->get('/users', 'getUsers'); -$app->delete('/users/{id}', 'deleteUser'); -$app->post('/users', 'createUser'); -$app->get('/users/{id}', 'getUserById'); -$app->put('/users/{id}/disable', 'setDisabledUser'); -$app->put('/users/{id}/password', 'changeUserPassword'); -$app->post('/groups', 'createGroup'); -$app->get('/groups', 'getGroups'); -$app->get('/groups/{id}', 'getGroup'); -$app->put('/groups/{id}/addUser', 'addUserToGroup'); -$app->put('/groups/{id}/removeUser', 'removeUserFromGroup'); -$app->put('/folder/{id}/setInherit', 'setFolderInheritsAccess'); -$app->put('/folder/{id}/access/group/add', 'addGroupAccessToFolder'); // -$app->put('/folder/{id}/access/user/add', 'addUserAccessToFolder'); // -$app->put('/folder/{id}/access/group/remove', 'removeGroupAccessFromFolder'); -$app->put('/folder/{id}/access/user/remove', 'removeUserAccessFromFolder'); -$app->put('/folder/{id}/access/clear', 'clearFolderAccessList'); -$app->get('/categories', 'getCategories'); -$app->get('/categories/{id}', 'getCategory'); -$app->delete('/categories/{id}', 'deleteCategory'); -$app->post('/categories', 'createCategory'); -$app->put('/categories/{id}/name', 'changeCategoryName'); -$app->get('/attributedefinitions', 'getAttributeDefinitions'); -$app->put('/attributedefinitions/{id}/name', 'changeAttributeDefinitionName'); -$app->any('/echo', 'echoData'); +$app->post('/login', \RestapiController::class.':doLogin'); +$app->get('/logout', \RestapiController::class.':doLogout'); +$app->get('/account', \RestapiController::class.':getAccount'); +$app->get('/search', \RestapiController::class.':doSearch'); +$app->get('/searchbyattr', \RestapiController::class.':doSearchByAttr'); +$app->get('/folder/', \RestapiController::class.':getFolder'); +$app->get('/folder/{id}', \RestapiController::class.':getFolder'); +$app->post('/folder/{id}/move/{folderid}', \RestapiController::class.':moveFolder'); +$app->delete('/folder/{id}', \RestapiController::class.':deleteFolder'); +$app->get('/folder/{id}/children', \RestapiController::class.':getFolderChildren'); +$app->get('/folder/{id}/parent', \RestapiController::class.':getFolderParent'); +$app->get('/folder/{id}/path', \RestapiController::class.':getFolderPath'); +$app->get('/folder/{id}/attributes', \RestapiController::class.':getFolderAttributes'); +$app->post('/folder/{id}/folder', \RestapiController::class.':createFolder'); +$app->put('/folder/{id}/document', \RestapiController::class.':uploadDocumentPut'); +$app->post('/folder/{id}/document', \RestapiController::class.':uploadDocument'); +$app->get('/document/{id}', \RestapiController::class.':getDocument'); +$app->post('/document/{id}/attachment', \RestapiController::class.':uploadDocumentFile'); +$app->post('/document/{id}/update', \RestapiController::class.':updateDocument'); +$app->delete('/document/{id}', \RestapiController::class.':deleteDocument'); +$app->post('/document/{id}/move/{folderid}', \RestapiController::class.':moveDocument'); +$app->get('/document/{id}/content', \RestapiController::class.':getDocumentContent'); +$app->get('/document/{id}/versions', \RestapiController::class.':getDocumentVersions'); +$app->get('/document/{id}/version/{version}', \RestapiController::class.':getDocumentVersion'); +$app->put('/document/{id}/version/{version}', \RestapiController::class.':updateDocumentVersion'); +$app->get('/document/{id}/files', \RestapiController::class.':getDocumentFiles'); +$app->get('/document/{id}/file/{fileid}', \RestapiController::class.':getDocumentFile'); +$app->get('/document/{id}/links', \RestapiController::class.':getDocumentLinks'); +$app->post('/document/{id}/link/{documentid}', \RestapiController::class.':addDocumentLink'); +$app->get('/document/{id}/attributes', \RestapiController::class.':getDocumentAttributes'); +$app->get('/document/{id}/preview/{version}/{width}', \RestapiController::class.':getDocumentPreview'); +$app->delete('/document/{id}/categories', \RestapiController::class.':removeDocumentCategories'); +$app->delete('/document/{id}/category/{catid}', \RestapiController::class.':removeDocumentCategory'); +$app->put('/account/fullname', \RestapiController::class.':setFullName'); +$app->put('/account/email', \RestapiController::class.':setEmail'); +$app->get('/account/documents/locked', \RestapiController::class.':getLockedDocuments'); +$app->get('/users', \RestapiController::class.':getUsers'); +$app->delete('/users/{id}', \RestapiController::class.':deleteUser'); +$app->post('/users', \RestapiController::class.':createUser'); +$app->get('/users/{id}', \RestapiController::class.':getUserById'); +$app->put('/users/{id}/disable', \RestapiController::class.':setDisabledUser'); +$app->put('/users/{id}/password', \RestapiController::class.':changeUserPassword'); +$app->post('/groups', \RestapiController::class.':createGroup'); +$app->get('/groups', \RestapiController::class.':getGroups'); +$app->get('/groups/{id}', \RestapiController::class.':getGroup'); +$app->put('/groups/{id}/addUser', \RestapiController::class.':addUserToGroup'); +$app->put('/groups/{id}/removeUser', \RestapiController::class.':removeUserFromGroup'); +$app->put('/folder/{id}/setInherit', \RestapiController::class.':setFolderInheritsAccess'); +$app->put('/folder/{id}/access/group/add', \RestapiController::class.':addGroupAccessToFolder'); // +$app->put('/folder/{id}/access/user/add', \RestapiController::class.':addUserAccessToFolder'); // +$app->put('/folder/{id}/access/group/remove', \RestapiController::class.':removeGroupAccessFromFolder'); +$app->put('/folder/{id}/access/user/remove', \RestapiController::class.':removeUserAccessFromFolder'); +$app->put('/folder/{id}/access/clear', \RestapiController::class.':clearFolderAccessList'); +$app->get('/categories', \RestapiController::class.':getCategories'); +$app->get('/categories/{id}', \RestapiController::class.':getCategory'); +$app->delete('/categories/{id}', \RestapiController::class.':deleteCategory'); +$app->post('/categories', \RestapiController::class.':createCategory'); +$app->put('/categories/{id}/name', \RestapiController::class.':changeCategoryName'); +$app->get('/attributedefinitions', \RestapiController::class.':getAttributeDefinitions'); +$app->put('/attributedefinitions/{id}/name', \RestapiController::class.':changeAttributeDefinitionName'); +$app->get('/echo', \TestController::class.':echoData'); $app->run(); ?> diff --git a/restapi/swagger.yaml b/restapi/swagger.yaml new file mode 100644 index 000000000..1e453c2a0 --- /dev/null +++ b/restapi/swagger.yaml @@ -0,0 +1,1915 @@ + +swagger: "2.0" +info: + description: "This is the rest api of SeedDMS." + version: "1.0.0" + title: "Swagger SeedDMS" + termsOfService: "https://www.seeddms.org/terms/" + contact: + email: "info@seeddms.org" + license: + name: "Apache 2.0" + url: "http://www.apache.org/licenses/LICENSE-2.0.html" +host: "" +basePath: "_httpRoot; ?>restapi/index.php" +tags: +- name: "user" + description: "Operations about user" + externalDocs: + description: "Find out more about our store" + url: "https://www.seeddms.org" +schemes: +- "https" +paths: + /login: + post: + tags: + - "account" + summary: "Log in" + description: "Log in by providing a username and password" + operationId: "login" + produces: + - "application/json" + consumes: + - application/x-www-form-urlencoded + parameters: + - name: "user" + in: "formData" + type: "string" + description: "Name of user" + required: true + - name: "pass" + in: "formData" + type: "string" + description: "Password of user" + required: true + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseUser" + "403": + description: "Login failed" + schema: + $ref: "#/definitions/ApiResponse" + "400": + description: "Invalid parameter" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /logout: + get: + tags: + - "account" + summary: "Log out" + description: "Log out" + operationId: "Kills the session and removes the cookie" + produces: + - "application/json" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /account: + get: + tags: + - "account" + summary: "Get account data" + description: "Returns account data of logged in user" + operationId: "getAccount" + produces: + - "application/json" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseUser" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /account/fullname: + put: + tags: + - "account" + summary: "Set full name of account" + description: "Sets the full name of the currently logged in user" + operationId: "setAccountFullname" + produces: + - "application/json" + consumes: + - application/x-www-form-urlencoded + parameters: + - in: formData + name: email + type: string + description: "New full name" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseUser" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /account/email: + put: + tags: + - "account" + summary: "Set email of account" + description: "Sets the email of the currently logged in user" + operationId: "setAccountEmail" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - in: formData + name: email + type: string + description: "New email" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseUser" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /account/documents/locked: + get: + tags: + - "account" + summary: "Get locked documents by myself" + description: "Returns locked documents of logged in user" + operationId: "getLockedDocuments" + produces: + - "application/json" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseDocuments" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /users: + get: + tags: + - "user" + summary: "Finds all users" + description: "Multiple status values can be provided with comma separated strings" + operationId: "getUsers" + produces: + - "application/json" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseUsers" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + post: + tags: + - "user" + summary: "Create user" + description: "This can only be done by the logged in user." + operationId: "createUser" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - in: "formData" + name: "user" + description: "Login of user" + type: "string" + required: true + - in: "formData" + name: "pass" + description: "Password of user" + type: "string" + required: true + - in: "formData" + name: "name" + description: "Full name of user" + type: "string" + required: true + - in: "formData" + name: "email" + description: "Email of user" + type: "string" + required: false + - in: "formData" + name: "language" + description: "Language of user" + type: "string" + required: false + - in: "formData" + name: "theme" + description: "Theme of user" + type: "string" + required: false + - in: "formData" + name: "comment" + description: "Comment of user" + type: "string" + required: false + - in: "formData" + name: "role" + description: "Role of user (admin, user, guest)" + type: "string" + enum: + - admin + - user + - guest + required: false + responses: + "201": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseUser" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "409": + description: "User already exists" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Error creating user" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /users/{id}: + get: + tags: + - "user" + summary: "Find user by ID" + description: "Returns a single user" + operationId: "getUserById" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of user to return" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseUser" + "404": + description: "User not found" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + delete: + tags: + - "user" + summary: "Delete user by ID" + description: "Delete a single user" + operationId: "deleteUserById" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of user to delete" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Error deleting user" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "User not found" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /users/{id}/disable: + put: + tags: + - "user" + summary: "Disable user by ID" + description: "Disable a single user" + operationId: "setDisabledUser" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of user to disable" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseUser" + "404": + description: "User not found" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /users/{id}/password: + put: + tags: + - "user" + summary: "Change password of user by ID" + description: "Change the password of a single user" + operationId: "changeUserPassword" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - name: "id" + in: "path" + description: "ID of user" + required: true + type: "integer" + format: "int64" + - in: "formData" + name: "password" + type: "string" + description: "New password" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "400": + description: "Invalid parameter" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "User not found" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /groups: + get: + tags: + - "group" + summary: "Finds all groups" + description: "Return a list of all groups" + operationId: "getGroups" + produces: + - "application/json" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseGroups" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + post: + tags: + - "group" + summary: "Create group" + description: "This can only be done by the logged in user." + operationId: "createGroup" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - in: "formData" + name: "name" + type: "string" + description: "Name of new group" + required: true + - in: "formData" + name: "comment" + type: "string" + description: "Comment of new group" + required: false + responses: + "201": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseGroup" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "409": + description: "Group already exists" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Error creating user" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}: + get: + tags: + - "document" + summary: "Find document by ID" + description: "Returns a single document" + operationId: "getDocument" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of document to return" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseDocument" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Document not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + delete: + tags: + - "document" + summary: "Delete document by ID" + description: "Delete a single document" + operationId: "deleteDocument" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of document to delete" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Error deleting user" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "User not found" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/preview/{version}/{width}: + get: + tags: + - "document" + summary: "Return preview of document" + description: "Returns the preview image of a given version of a document" + operationId: "getDocumentPreview" + parameters: + - name: "id" + in: "path" + description: "ID of document to return" + required: true + type: "integer" + format: "int64" + - name: "version" + in: "path" + description: "Version number of document" + required: true + type: "integer" + format: "int64" + - name: "width" + in: "path" + description: "Width of preview image" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "preview image file" + schema: + type: "file" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Document not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/content: + get: + tags: + - "document" + summary: "Return latest content of document" + description: "Returns the most current version of a document" + operationId: "getDocumentContent" + parameters: + - name: "id" + in: "path" + description: "ID of document to return" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "content file" + schema: + type: "file" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Document not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/file/{fileid}: + get: + tags: + - "document" + summary: "Return certain attached file of document" + description: "Returns the attached file of a document" + operationId: "getDocumentFile" + parameters: + - name: "id" + in: "path" + description: "ID of document" + required: true + type: "integer" + format: "int64" + - name: "fileid" + in: "path" + description: "Id of file to return" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "attached file" + schema: + type: "file" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Document not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/version/{version}: + get: + tags: + - "document" + summary: "Return certain version of document" + description: "Returns the requested version of a document" + operationId: "getDocumentVersion" + parameters: + - name: "id" + in: "path" + description: "ID of document to return" + required: true + type: "integer" + format: "int64" + - name: "version" + in: "path" + description: "Version number of document to return" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "content file" + schema: + type: "file" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Document not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/attributes: + get: + tags: + - "document" + summary: "Return attributes of document by ID" + description: "Returns the attributes of a given document" + operationId: "getDocumentAttributes" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of document whose attributes to be returned." + type: "integer" + required: true + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseAttributes" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Document not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/files: + get: + tags: + - "document" + summary: "Return attached files of document by ID" + description: "Returns the attached files of a given document" + operationId: "getDocumentFiles" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of document whose files to be returned." + type: "integer" + required: true + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseDocumentFiles" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Document not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/links: + get: + tags: + - "document" + summary: "Return links of document by ID" + description: "Returns the links of a given document" + operationId: "getDocumentLinks" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of document whose links to be returned." + type: "integer" + required: true + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseDocumentLinks" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Document not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/link/{targetid}: + post: + tags: + - "document" + summary: "Add link between documents" + description: "Adds a link from a source document to a target document" + operationId: "addDocumentLink" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - name: "id" + in: "path" + description: "ID of source document." + type: "integer" + required: true + format: "int64" + - name: "targetid" + in: "path" + description: "ID of target document." + type: "integer" + required: true + format: "int64" + - in: "formData" + name: "public" + description: "Set to true if link shall be public" + type: "boolean" + required: false + responses: + "201": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Document not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/versions: + get: + tags: + - "document" + summary: "Return all versions of a document by ID" + description: "Returns the versions of a given document" + operationId: "getDocumentVersions" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of document whose versions to be returned." + type: "integer" + required: true + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseDocumentContents" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Document not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/categories: + delete: + tags: + - "document" + summary: "Delete all categories of a document" + description: "Delete all categories from a given document" + operationId: "deleteDocumentCategories" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of document" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Error deleting user" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "User not found" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /document/{id}/category/{catid}: + delete: + tags: + - "document" + summary: "Delete a single category of a document" + description: "Delete just one category with the given id from the given document" + operationId: "deleteDocumentCategory" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of document" + required: true + type: "integer" + format: "int64" + - name: "catid" + in: "path" + description: "ID of category to delete" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Error deleting user" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "User not found" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /folder/{id}: + get: + tags: + - "folder" + summary: "Find folder by ID" + description: "Returns a single folder" + operationId: "getFolder" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of folder to return. ID=0 returns root folder." + type: "integer" + required: true + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseFolder" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Folder not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + delete: + tags: + - "folder" + summary: "Delete folder by ID" + description: "Delete the folder with the given id" + operationId: "deleteFolder" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of folder to delete." + type: "integer" + required: true + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Folder not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /folder/{id}/parent: + get: + tags: + - "folder" + summary: "Find parent of folder by ID" + description: "Returns the parent folder of a given folder" + operationId: "getFolderParent" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of folder whose parent to be returned." + type: "integer" + required: true + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseFolder" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Folder not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /folder/{id}/children: + get: + tags: + - "folder" + summary: "Find children of folder by ID" + description: "Returns the children of a given folder" + operationId: "getFolderChildren" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of folder whose children to be returned." + type: "integer" + required: true + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseFolder" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Folder not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /folder/{id}/path: + get: + tags: + - "folder" + summary: "Return path of folder by ID" + description: "Returns the path of a given folder" + operationId: "getFolderPath" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of folder whose path to be returned." + type: "integer" + required: true + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseFolderPath" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Folder not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /folder/{id}/attributes: + get: + tags: + - "folder" + summary: "Return attributes of folder by ID" + description: "Returns the attributes of a given folder" + operationId: "getFolderAttributes" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of folder whose attributes to be returned." + type: "integer" + required: true + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseAttributes" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Folder not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /folder/{id}/folder: + post: + tags: + - "folder" + summary: "Create new subolder" + description: "Creates a new subfolder in the a given folder" + operationId: "createFolder" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - name: "id" + in: "path" + description: "ID of parent folder." + type: "integer" + required: true + format: "int64" + - in: "formData" + name: "name" + description: "Name of new folder" + type: "string" + required: true + - in: "formData" + name: "comment" + description: "Comment of new folder" + type: "string" + required: false + - in: "formData" + name: "sequence" + description: "Sequence of new folder" + type: "string" + required: false + responses: + "201": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseFolder" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Folder not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /folder/{id}/document: + post: + tags: + - "folder" + summary: "Create new document" + description: "Creates a new document in the a given folder" + operationId: "createDocument" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - name: "id" + in: "path" + description: "ID of parent folder." + type: "integer" + required: true + format: "int64" + - in: "formData" + name: "file" + type: "file" + description: "Content of new document" + required: true + - in: "formData" + name: "name" + description: "Name of new document" + type: "string" + required: true + - in: "formData" + name: "comment" + description: "Comment of new document" + type: "string" + required: false + - in: "formData" + name: "sequence" + description: "Sequence of new document" + type: "string" + required: false + responses: + "201": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseDocument" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Folder not found" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Internal error" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /categories: + get: + tags: + - "category" + summary: "Finds all categories" + operationId: "getCategories" + produces: + - "application/json" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseCategories" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + post: + tags: + - "category" + summary: "Create a new category" + operationId: "postCategories" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - in: "formData" + name: "name" + description: "Name of new category" + type: "string" + required: true + responses: + "201": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseCategories" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "409": + description: "Category already exists" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Error creating category" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /categories/{id}: + get: + tags: + - "category" + summary: "Find category by ID" + description: "Returns a single category" + operationId: "getCategory" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of category to return" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseCategory" + "404": + description: "Category not found" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + delete: + tags: + - "category" + summary: "Delete category by ID" + description: "Delete a single category" + operationId: "deleteCategory" + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "ID of category to delete" + required: true + type: "integer" + format: "int64" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "500": + description: "Error deleting user" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + "404": + description: "Category not found" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /categories/{id}/name: + put: + tags: + - "category" + summary: "Set name of category" + description: "Sets the name of the category" + operationId: "changeCategoryName" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - name: "id" + in: "path" + description: "ID of category" + required: true + type: "integer" + format: "int64" + - in: "formData" + name: "name" + type: "string" + description: "New name" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseCategory" + "400": + description: "Invalid parameter" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /attributedefinitions: + get: + tags: + - "attributedefinition" + summary: "Finds all attribute definitions" + operationId: "getAttributeDefinitions" + produces: + - "application/json" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseAttributeDefinitions" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /attributedefinitions/{id}/name: + put: + tags: + - "attributedefinition" + summary: "Set name of attribute definition" + description: "Sets the name of the attribute definition" + operationId: "changeAttributeDefinitionName" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - name: "id" + in: "path" + description: "ID of attribute definition" + required: true + type: "integer" + format: "int64" + - in: "formData" + name: "name" + type: "string" + description: "New name" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponseAttributeDefinition" + "400": + description: "Invalid parameter" + schema: + $ref: "#/definitions/ApiResponse" + "403": + description: "No access" + schema: + $ref: "#/definitions/ApiResponse" + security: + - api_key: [] + /echo: + get: + tags: + - "test" + summary: "Return what was send in the body" + description: "Just returns the body content" + operationId: "echoData" + produces: + - "application/json" + responses: + "200": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "400": + description: "Invalid status value" +securityDefinitions: + api_key: + type: "apiKey" + name: "Authorization" + in: "header" +definitions: + Role: + type: "object" + properties: + id: + type: "integer" + format: "int64" + name: + type: "string" + xml: + name: "Role" + Group: + type: "object" + properties: + type: + type: "string" + id: + type: "integer" + format: "int64" + name: + type: "string" + comment: + type: "string" + xml: + name: "Group" + User: + type: "object" + properties: + type: + type: "string" + enum: + - user + - group + id: + type: "integer" + format: "int64" + name: + type: "string" + comment: + type: "string" + login: + type: "string" + email: + type: "string" + language: + type: "string" + theme: + type: "string" + role: + $ref: "#/definitions/Role" + hidden: + type: "boolean" + disabled: + type: "boolean" + isguest: + type: "boolean" + isadmin: + type: "boolean" + xml: + name: "User" + Document: + type: "object" + properties: + type: + type: "string" + enum: + - document + id: + type: "integer" + format: "int64" + name: + type: "string" + date: + type: "string" + comment: + type: "string" + keywords: + type: "string" + ownerid: + type: "integer" + format: "int64" + islocked: + type: "boolean" + sequence: + type: "number" + expires: + type: "string" + mimetype: + type: "string" + version: + type: "integer" + format: "int64" + version_comment: + type: "string" + version_date: + type: "string" + size: + type: "integer" + format: "int64" + xml: + name: "Document" + DocumentContent: + type: "object" + properties: + id: + type: "integer" + format: "int64" + version: + type: "integer" + format: "int64" + date: + type: "string" + comment: + type: "string" + mimetype: + type: "string" + filetype: + type: "string" + origfilename: + type: "string" + size: + type: "integer" + format: "int64" + xml: + name: "DocumentContent" + DocumentFile: + type: "object" + properties: + id: + type: "integer" + format: "int64" + version: + type: "integer" + format: "int64" + date: + type: "string" + comment: + type: "string" + mimetype: + type: "string" + filetype: + type: "string" + origfilename: + type: "string" + public: + type: "boolean" + size: + type: "integer" + format: "int64" + xml: + name: "DocumentFile" + DocumentLink: + type: "object" + properties: + id: + type: "integer" + format: "int64" + target: + type: "integer" + format: "int64" + public: + type: "boolean" + xml: + name: "DocumentLink" + Folder: + type: "object" + properties: + type: + type: "string" + enum: + - folder + id: + type: "integer" + format: "int64" + name: + type: "string" + date: + type: "string" + comment: + type: "string" + xml: + name: "Folder" + Category: + type: "object" + properties: + id: + type: "integer" + format: "int64" + name: + type: "string" + xml: + name: "Category" + Attribute: + type: "object" + properties: + id: + type: "integer" + format: "int64" + name: + type: "string" + value: + type: "string" + xml: + name: "Attribute" + AttributeDefinition: + type: "object" + properties: + id: + type: "integer" + format: "int64" + name: + type: "string" + type: + type: "integer" + format: "int64" + objtype: + type: "integer" + format: "int64" + min: + type: "integer" + format: "int64" + max: + type: "integer" + format: "int64" + multiple: + type: "boolean" + valueset: + type: "array" + items: + type: "string" + regex: + type: "string" + xml: + name: "AttributeDefintion" + ApiResponse: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "string" + ApiResponseUser: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + $ref: "#/definitions/User" + ApiResponseUsers: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "array" + items: + $ref: "#/definitions/User" + ApiResponseGroup: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + $ref: "#/definitions/Group" + ApiResponseGroups: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "array" + items: + $ref: "#/definitions/Group" + ApiResponseDocument: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + $ref: "#/definitions/Document" + ApiResponseDocuments: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "array" + items: + $ref: "#/definitions/Document" + ApiResponseDocumentContents: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "array" + items: + $ref: "#/definitions/DocumentContent" + ApiResponseDocumentFiles: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "array" + items: + $ref: "#/definitions/DocumentFile" + ApiResponseDocumentLinks: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "array" + items: + $ref: "#/definitions/DocumentLink" + ApiResponseFolder: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + $ref: "#/definitions/Folder" + ApiResponseFolderPath: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "array" + items: + type: "object" + properties: + id: + type: "integer" + name: + type: "string" + format: "int64" + ApiResponseCategory: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + $ref: "#/definitions/Category" + ApiResponseCategories: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "array" + items: + $ref: "#/definitions/Category" + ApiResponseAttributes: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "array" + items: + $ref: "#/definitions/Attribute" + ApiResponseAttributeDefinition: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + $ref: "#/definitions/AttributeDefinition" + ApiResponseAttributeDefinitions: + type: "object" + properties: + success: + type: "boolean" + message: + type: "string" + data: + type: "array" + items: + $ref: "#/definitions/AttributeDefinition" +externalDocs: + description: "Find out more about SeedDMS" + url: "https://www.seeddms.org" diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index a50736333..8e23f63f9 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -377,7 +377,8 @@ $(document).ready( function() { element.html(data); $(".chzn-select").select2({ width: '100%', - templateResult: chzn_template_func + templateResult: chzn_template_func, + templateSelection: chzn_template_func }); $(".pwd").passStrength({ /* {{{ */ url: "../op/op.Ajax.php", @@ -425,7 +426,8 @@ $(document).ready( function() { element.html(data); $(".chzn-select").select2({ width: '100%', - templateResult: chzn_template_func + templateResult: chzn_template_func, + templateSelection: chzn_template_func }); $(".pwd").passStrength({ /* {{{ */ url: "../op/op.Ajax.php", diff --git a/utils/createfolder.php b/utils/createfolder.php index 9cc82b867..d5233e602 100644 --- a/utils/createfolder.php +++ b/utils/createfolder.php @@ -78,7 +78,7 @@ $db->connect() or die ("Could not connect to db-server \"" . $settings->_dbHostn //$db->_conn->debug = 1; $dms = new SeedDMS_Core_DMS($db, $settings->_contentDir.$settings->_contentOffsetDir); -if(!$dms->checkVersion()) { +if(!$settings->_doNotCheckDBVersion && !$dms->checkVersion()) { echo "Database update needed."; exit; } diff --git a/utils/indexer.php b/utils/indexer.php index 6a4cd14e5..172dabb0c 100644 --- a/utils/indexer.php +++ b/utils/indexer.php @@ -4,20 +4,19 @@ if(isset($_SERVER['SEEDDMS_HOME'])) { } else { require_once("../inc/inc.ClassSettings.php"); } -require("Log.php"); function usage() { /* {{{ */ - echo "Usage:\n"; - echo " seeddms-indexer [-h] [-v] [--config ]\n"; - echo "\n"; - echo "Description:\n"; - echo " This program recreates the full text index of SeedDMS.\n"; - echo "\n"; - echo "Options:\n"; - echo " -h, --help: print usage information and exit.\n"; - echo " -v, --version: print version and exit.\n"; - echo " -c: recreate index.\n"; - echo " --config: set alternative config file.\n"; + echo "Usage:".PHP_EOL; + echo " seeddms-indexer [-h] [-v] [--config ]".PHP_EOL; + echo "".PHP_EOL; + echo "Description:".PHP_EOL; + echo " This program recreates the full text index of SeedDMS.".PHP_EOL; + echo "".PHP_EOL; + echo "Options:".PHP_EOL; + echo " -h, --help: print usage information and exit.".PHP_EOL; + echo " -v, --version: print version and exit.".PHP_EOL; + echo " -c: recreate index.".PHP_EOL; + echo " --config: set alternative config file.".PHP_EOL; } /* }}} */ $version = "0.0.2"; @@ -36,7 +35,7 @@ if(isset($options['h']) || isset($options['help'])) { /* Print version and exit */ if(isset($options['v']) || isset($options['verѕion'])) { - echo $version."\n"; + echo $version."".PHP_EOL; exit(0); } @@ -60,6 +59,7 @@ if(isset($settings->_extraPath)) require_once("inc/inc.Init.php"); require_once("inc/inc.Extension.php"); require_once("inc/inc.DBInit.php"); +require "vendor/autoload.php"; if($settings->_fullSearchEngine == 'sqlitefts') { $indexconf = array( @@ -80,8 +80,8 @@ if($settings->_fullSearchEngine == 'sqlitefts') { } function tree($dms, $index, $indexconf, $folder, $indent='') { /* {{{ */ - global $settings; - echo $indent."D ".$folder->getName()."\n"; + global $settings, $themes; + echo $themes->black($indent."D ".$folder->getName()).PHP_EOL; $subfolders = $folder->getSubFolders(); foreach($subfolders as $subfolder) { tree($dms, $index, $indexconf, $subfolder, $indent.' '); @@ -101,9 +101,9 @@ function tree($dms, $index, $indexconf, $folder, $indent='') { /* {{{ */ } } $index->addDocument($idoc); - echo " (Document added)\n"; + echo $themes->green(" (Document added)").PHP_EOL; } catch(Exception $e) { - echo " (Timeout)\n"; + echo $themes->error(" (Timeout)").PHP_EOL; } } else { try { @@ -112,8 +112,8 @@ function tree($dms, $index, $indexconf, $folder, $indent='') { /* {{{ */ $created = 0; } $content = $document->getLatestContent(); - if($created > $content->getDate()) { - echo " (Document unchanged)\n"; + if($created >= $content->getDate()) { + echo $themes->italic(" (Document unchanged)").PHP_EOL; } else { $index->delete($hit->id); try { @@ -126,21 +126,23 @@ function tree($dms, $index, $indexconf, $folder, $indent='') { /* {{{ */ } } $index->addDocument($idoc); - echo " (Document updated)\n"; + echo $themes->green(" (Document updated)").PHP_EOL; } catch(Exception $e) { - echo " (Timeout)\n"; + echo $themes->error(" (Timeout)").PHP_EOL; } } } } } /* }}} */ +$themes = new \AlecRabbit\ConsoleColour\Themes(); + $db = new SeedDMS_Core_DatabaseAccess($settings->_dbDriver, $settings->_dbHostname, $settings->_dbUser, $settings->_dbPass, $settings->_dbDatabase); $db->connect() or die ("Could not connect to db-server \"" . $settings->_dbHostname . "\""); $dms = new SeedDMS_Core_DMS($db, $settings->_contentDir.$settings->_contentOffsetDir); -if(!$dms->checkVersion()) { - echo "Database update needed.\n"; +if(!$settings->_doNotCheckDBVersion && !$dms->checkVersion()) { + echo "Database update needed.".PHP_EOL; exit(1); } @@ -151,7 +153,7 @@ if($recreate) else $index = $indexconf['Indexer']::open($settings->_luceneDir); if(!$index) { - echo "Could not create index.\n"; + echo "Could not create index.".PHP_EOL; exit(1); } diff --git a/utils/seeddms-indexer b/utils/seeddms-indexer index cf481ebd6..6cc913ae9 100755 --- a/utils/seeddms-indexer +++ b/utils/seeddms-indexer @@ -1,8 +1,8 @@ #!/usr/bin/env bash if [ -z "${SEEDDMS_HOME}" ]; then - echo 'Please set $SEEDDMS_HOME before running this script' - exit 1 + parentdir=$(dirname "$0") + export SEEDDMS_HOME=$(dirname "$parentdir") fi exec php -f "${SEEDDMS_HOME}/utils/indexer.php" -- "${@}" diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index 422f1fbb2..a90011fd4 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -327,6 +327,8 @@ $(document).ready(function() { foreach($arrs as $arr) { $this->formField($arr[0], $arr[1]); } + } elseif(is_string($arrs)) { + echo $arrs; } $this->contentSubHeading(getMLText("version_info")); @@ -391,6 +393,8 @@ $(document).ready(function() { foreach($arrs as $arr) { $this->formField($arr[0], $arr[1]); } + } elseif(is_string($arrs)) { + echo $arrs; } if($workflowmode == 'advanced') { diff --git a/views/bootstrap/class.AddSubFolder.php b/views/bootstrap/class.AddSubFolder.php index 52048d3cd..158644a91 100644 --- a/views/bootstrap/class.AddSubFolder.php +++ b/views/bootstrap/class.AddSubFolder.php @@ -119,6 +119,15 @@ $(document).ready( function() { } } } + $arrs = $this->callHook('addFolderAttributes', $folder); + if(is_array($arrs)) { + foreach($arrs as $arr) { + $this->formField($arr[0], $arr[1]); + } + } elseif(is_string($arrs)) { + echo $arrs; + } + $this->formSubmit(" ".getMLText('add_subfolder')); ?> diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index f7a2d6356..cdc3d96c5 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -721,6 +721,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['misc'] = array('link'=>"#", 'label'=>'misc'); $menuitems['misc']['children']['import_fs'] = array('link'=>"../out/out.ImportFS.php", 'label'=>'import_fs'); + $menuitems['misc']['children']['import_users'] = array('link'=>"../out/out.ImportUsers.php", 'label'=>'import_users'); $menuitems['misc']['children']['folders_and_documents_statistic'] = array('link'=>"../out/out.Statistic.php", 'label'=>'folders_and_documents_statistic'); $menuitems['misc']['children']['charts'] = array('link'=>"../out/out.Charts.php", 'label'=>'charts'); $menuitems['misc']['children']['timeline'] = array('link'=>"../out/out.Timeline.php", 'label'=>'timeline'); @@ -1095,13 +1096,13 @@ $(document).ready(function() { echo self::getFileChooserHtml($varname, $multiple, $accept); } /* }}} */ - function printDateChooser($defDate = '', $varName, $lang='', $dateformat='yyyy-mm-dd') { /* {{{ */ - echo self::getDateChooser($defDate, $varName, $lang, $dateformat); + function printDateChooser($defDate = '', $varName, $lang='', $dateformat='yyyy-mm-dd', $startdate='', $enddate='') { /* {{{ */ + echo self::getDateChooser($defDate, $varName, $lang, $dateformat, $startdate, $enddate); } /* }}} */ - function getDateChooser($defDate = '', $varName, $lang='', $dateformat='yyyy-mm-dd') { /* {{{ */ + function getDateChooser($defDate = '', $varName, $lang='', $dateformat='yyyy-mm-dd', $startdate='', $enddate='') { /* {{{ */ $content = ' - + '; @@ -1638,7 +1639,7 @@ $(document).ready(function() { * @param boolean $partialtree set to true if the given folder is the start folder */ function printNewTreeNavigationJs($folderid=0, $accessmode=M_READ, $showdocs=0, $formid='form1', $expandtree=0, $orderby='', $partialtree=false) { /* {{{ */ - function jqtree($path, $folder, $user, $accessmode, $showdocs=1, $expandtree=0, $orderby='', $level=0) { + function jqtree($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) @@ -1651,7 +1652,7 @@ $(document).ready(function() { $subfolders = array($pathfolder); } foreach($subfolders as $subfolder) { - $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>(0 && ($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs))) ? true : false, 'is_folder'=>true); + $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>(1 && ($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs))) ? true : false, 'is_folder'=>true); if(/*$expandtree>=$level ||*/ $pathfolder->getID() == $subfolder->getID()) { $node['children'] = jqtree($path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1); if($showdocs) { @@ -1677,7 +1678,7 @@ $(document).ready(function() { return $children; } return array(); - } + } /* }}} */ $orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc'); if($folderid) { @@ -1719,7 +1720,7 @@ var data = ; $(function() { const $tree = $('#jqtree'); $tree.tree({ -// saveState: true, +// saveState: false, selectable: true, data: data, saveState: 'jqtree', @@ -1742,7 +1743,7 @@ $(function() { } }); // Unfold node for currently selected folder - $('#jqtree').tree('selectNode', $('#jqtree').tree('getNodeById', ), false); + $('#jqtree').tree('selectNode', $('#jqtree').tree('getNodeById', ), false, true); $('#jqtree').on( 'tree.click', function(event) { diff --git a/views/bootstrap/class.Categories.php b/views/bootstrap/class.Categories.php index d6553ba45..d9bb247a9 100644 --- a/views/bootstrap/class.Categories.php +++ b/views/bootstrap/class.Categories.php @@ -44,6 +44,7 @@ class SeedDMS_View_Categories extends SeedDMS_Bootstrap_Style { $(document).ready( function() { $( "#selector" ).change(function() { $('div.ajax').trigger('update', {categoryid: $(this).val()}); + window.history.pushState({"html":"","pageTitle":""},"", '../out/out.Categories.php?categoryid=' + $(this).val()); }); }); params['folder']; $form = $this->params['form']; + $orderby = $this->params['orderby']; header('Content-Type: application/javascript'); - $this->printNewTreeNavigationJs($folder->getID(), M_READ, 1, $form); + $this->printNewTreeNavigationJs($folder->getID(), M_READ, 1, $form, '', $orderby); } /* }}} */ function show() { /* {{{ */ @@ -52,11 +53,12 @@ class SeedDMS_View_DocumentChooser extends SeedDMS_Bootstrap_Style { $user = $this->params['user']; $folder = $this->params['folder']; $form = $this->params['form']; + $orderby = $this->params['orderby']; // $this->htmlStartPage(getMLText("choose_target_document")); // $this->contentContainerStart(); // $this->printNewTreeNavigationHtml($folder->getID(), M_READ, 1, $form); - $this->printNewTreeNavigationHtml($folder->getID(), M_READ, 1, $form); + $this->printNewTreeNavigationHtml($folder->getID(), M_READ, 1, $form, 0, $orderby); echo ''."\n"; // $this->contentContainerEnd(); // $this->htmlEndPage(true); diff --git a/views/bootstrap/class.EditAttributes.php b/views/bootstrap/class.EditAttributes.php index ca64c9b98..83616a1b3 100644 --- a/views/bootstrap/class.EditAttributes.php +++ b/views/bootstrap/class.EditAttributes.php @@ -72,8 +72,8 @@ class SeedDMS_View_EditAttributes extends SeedDMS_Bootstrap_Style { foreach($arrs as $arr) { $this->formField($arr[0], $arr[1]); } - } elseif(is_string($arr)) { - echo $arr; + } elseif(is_string($arrs)) { + echo $arrs; } $this->formSubmit(" ".getMLText('save')); ?> diff --git a/views/bootstrap/class.EditDocument.php b/views/bootstrap/class.EditDocument.php index c0a6977ca..31f281d15 100644 --- a/views/bootstrap/class.EditDocument.php +++ b/views/bootstrap/class.EditDocument.php @@ -228,8 +228,8 @@ $(document).ready( function() { foreach($arrs as $arr) { $this->formField($arr[0], $arr[1]); } - } elseif(is_string($arr)) { - echo $arr; + } elseif(is_string($arrs)) { + echo $arrs; } $this->formSubmit(" ".getMLText('save')); ?> diff --git a/views/bootstrap/class.EditFolder.php b/views/bootstrap/class.EditFolder.php index 5e99be9ae..59c2ac858 100644 --- a/views/bootstrap/class.EditFolder.php +++ b/views/bootstrap/class.EditFolder.php @@ -130,7 +130,7 @@ $(document).ready(function() { $this->formField($arr[0], $arr[1]); } } elseif(is_string($arrs)) { - echo $arr; + echo $arrs; } $this->formSubmit(" ".getMLText('save')); ?> diff --git a/views/bootstrap/class.ErrorDlg.php b/views/bootstrap/class.ErrorDlg.php index a58366fc5..0c7a4aa57 100644 --- a/views/bootstrap/class.ErrorDlg.php +++ b/views/bootstrap/class.ErrorDlg.php @@ -33,7 +33,6 @@ class SeedDMS_View_ErrorDlg extends SeedDMS_Bootstrap_Style { function show() { /* {{{ */ $dms = $this->params['dms']; - $user = $this->params['user']; $pagetitle = $this->params['pagetitle']; $errormsg = $this->params['errormsg']; $plain = $this->params['plain']; diff --git a/views/bootstrap/class.FolderChooser.php b/views/bootstrap/class.FolderChooser.php index ded83b32c..213a54162 100644 --- a/views/bootstrap/class.FolderChooser.php +++ b/views/bootstrap/class.FolderChooser.php @@ -43,9 +43,10 @@ class SeedDMS_View_FolderChooser extends SeedDMS_Bootstrap_Style { $rootfolderid = $this->params['rootfolderid']; $form = $this->params['form']; $mode = $this->params['mode']; + $orderby = $this->params['orderby']; header('Content-Type: application/javascript'); - $this->printNewTreeNavigationJs($rootfolderid, $mode, 0, $form); + $this->printNewTreeNavigationJs($rootfolderid, $mode, 0, $form, '', $orderby); } /* }}} */ function show() { /* {{{ */ diff --git a/views/bootstrap/class.ImportUsers.php b/views/bootstrap/class.ImportUsers.php new file mode 100644 index 000000000..b05ad6d54 --- /dev/null +++ b/views/bootstrap/class.ImportUsers.php @@ -0,0 +1,100 @@ + + * @copyright Copyright (C) 2002-2005 Markus Westphal, + * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, + * 2010-2012 Uwe Steinmann + * @version Release: @package_version@ + */ + +/** + * Include parent class + */ +require_once("class.Bootstrap.php"); + +/** + * Class which outputs the html page for ImportUsers view + * + * @category DMS + * @package SeedDMS + * @author Markus Westphal, Malcolm Cowe, Uwe Steinmann + * @copyright Copyright (C) 2002-2005 Markus Westphal, + * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, + * 2010-2012 Uwe Steinmann + * @version Release: @package_version@ + */ +class SeedDMS_View_ImportUsers extends SeedDMS_Bootstrap_Style { + + function js() { /* {{{ */ + $this->printFileChooserJs(); + header('Content-Type: application/javascript'); + + } /* }}} */ + + function show() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $log = $this->params['log']; + + $this->htmlStartPage(getMLText("import_users")); + $this->globalNavigation(); + $this->contentStart(); + $this->pageNavigation(getMLText("admin_tools"), "admin_tools"); + + $this->contentHeading(getMLText("import_users")); + + echo "
\n"; + echo "
\n"; + $this->contentContainerStart(); + print "
"; + $this->formField( + getMLText("userdata_file"), + $this->getFileChooserHtml('userdata', false) + ); + $this->formField( + getMLText("import_users_update"), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'update', + 'value'=>'1' + ) + ); + $this->formField( + getMLText("import_users_addnew"), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'addnew', + 'value'=>'1' + ) + ); + $this->formSubmit(" ".getMLText('import')); + print "
\n"; + $this->contentContainerEnd(); + + echo "
\n"; + echo "
\n"; + if($log) { + echo "\n"; + echo "\n"; + echo "\n"; + foreach($log as $item) { + $class = $item['type'] == 'success' ? 'success' : 'error'; + echo "\n"; + } + echo "
".getMLText('id')."".getMLText('message')."
".$item['id']."".htmlspecialchars($item['msg'])."
"; + } + echo "
\n"; + echo "
\n"; + $this->contentEnd(); + $this->htmlEndPage(); + } /* }}} */ +} + diff --git a/views/bootstrap/class.Info.php b/views/bootstrap/class.Info.php index 1bc7d8637..a733fef90 100644 --- a/views/bootstrap/class.Info.php +++ b/views/bootstrap/class.Info.php @@ -36,6 +36,7 @@ class SeedDMS_View_Info extends SeedDMS_Bootstrap_Style { $user = $this->params['user']; $version = $this->params['version']; $availversions = $this->params['availversions']; + $extmgr = $this->params['extmgr']; $this->htmlStartPage(getMLText("admin_tools")); $this->globalNavigation(); @@ -53,12 +54,66 @@ class SeedDMS_View_Info extends SeedDMS_Bootstrap_Style { } else { $this->warningMsg(getMLText('no_version_check')); } - $this->contentContainerStart(); - echo $version->banner(); - $this->contentContainerEnd(); -// $this->contentContainerStart(); -// phpinfo(); -// $this->contentContainerEnd(); +?> +
+
+contentHeading(getMLText("seeddms_info")); + $seedextensions = $extmgr->getExtensionConfiguration(); + echo "\n"; + echo "\n\n"; + echo "\n"; + echo "\n\n\n"; + $dbversion = $dms->getDBVersion(); + echo "\n"; + if($user->isAdmin()) { + echo "\n"; + foreach($seedextensions as $extname=>$extconf) + echo "\n"; + } + echo "\n
".getMLText("name"); + echo "
".getMLText('seeddms_version')."".$version->version()."
".getMLText('database_schema_version')."".$dbversion['major'].".".$dbversion['minor'].".".$dbversion['subminor']."
".$extname."
".$extconf['title']."
".$extconf['version']."
\n"; +?> +
+
+isAdmin()) { + $this->contentHeading(getMLText("php_info")); + echo "\n"; + echo "\n\n"; + echo "\n"; + echo "\n\n\n"; + echo "\n"; + echo "\n"; + echo "\n
".getMLText("name"); + echo "
PHP".phpversion()."
Path to php.ini".php_ini_loaded_file()."
\n"; + + $this->contentHeading(getMLText("installed_php_extensions")); + $phpextensions = get_loaded_extensions(false); + echo "\n"; + echo "\n\n"; + echo "\n"; + echo "\n\n\n"; + foreach($phpextensions as $extname) + echo "\n"; + echo "\n
".getMLText("name"); + echo "
".$extname.""."
\n"; + + $this->contentHeading(getMLText("missing_php_extensions")); + echo "\n"; + echo "\n\n"; + echo "\n"; + echo "\n\n\n"; + $requiredext = array('zip', 'xml', 'xsl', 'json', 'intl', 'fileinfo', 'mbstring', 'curl'); + foreach(array_diff($requiredext, $phpextensions) as $extname) + echo "\n"; + echo "\n
".getMLText("name"); + echo "
".$extname.""."
\n"; + } +?> +
+
+contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index 0b64409b7..dd9638321 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -156,7 +156,7 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { : - + isGuest() || ($userObj->isHidden() && $userObj->getID() != $user->getID() && !$user->isAdmin())) diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index a8ecb3e3d..820f1db1e 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -421,6 +421,9 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); showConfigHeadline('settings_Authentication'); ?> showConfigText('settings_guestID', 'guestID'); ?> showConfigText('settings_adminIP', 'adminIP'); ?> +showConfigText('settings_apiKey', 'apiKey'); ?> +showConfigText('settings_apiUserId', 'apiUserId'); ?> +showConfigText('settings_apiOrigin', 'apiOrigin'); ?>