diff --git a/CHANGELOG b/CHANGELOG index 21bc53d18..eccc241c7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,34 @@ +-------------------------------------------------------------------------------- + Changes in version 5.1.21 +-------------------------------------------------------------------------------- +- new api to fulltext search +- do not offer to export users of group if there are no users +- config file can be set in env var SEEDDMS_CONFIG_FILE +- fix error when searching for a boolean attribute value +- extension may contain a conf varіable to select a workflow +- do not set max_execution_time for scripts run by php-cli +- add link to document/folder details in each list row if onepage mode is on +- add list of rejected documents to tasks +- fix .htaccess file in restapi +- restapi: add setDocumentOwner, owner can be set when uploading a document +- theme in configuration can override theme of user +- saving the settings will no longer reenable an extention with no configuration +- put a red/green bullet before the extension name in the settings +- escape value of dropfolderfile in input form field created by + SeedDMS_Bootstrap_Style::getDropFolderChooserHtml() (CVE-2020-28726) +- prevent cross site scripting in views/bootstrap/class.DropFileChooser.php + folderid wasn't checked propperly for being an integer (CVE-2020-28727) +- output format for dates can be configured +- add filter function to notification service +- reindex document after it was edited +- show preview images in drop folder menu on mouse over +- add support for indexing folders in fulltext search +- add support for start folder in fulltext search +- always call hook postAddSubFolder and postEditDocument +- call each notification service even if one of them fails +- support partial content downloads (useful for embedding videos) +- unfold all folders within current path in jqtree + -------------------------------------------------------------------------------- Changes in version 5.1.20 -------------------------------------------------------------------------------- diff --git a/Gruntfile.js b/Gruntfile.js index 1beeb3cc4..e1015ea84 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -173,36 +173,50 @@ module.exports = function (grunt) { ], dest: bootstrapDir + '/bootstrap-datepicker/locales', flatten: true - },{ - expand: true, - src: [ - nodeDir + '/@coreui/coreui/dist/js/*' - ], - dest: bootstrapDir + '/coreui/js', - flatten: true - },{ - expand: true, - src: [ - nodeDir + '/@coreui/coreui/dist/css/*' - ], - dest: bootstrapDir + '/coreui/css', - flatten: true }] }, - 'coreui': { + 'tdk': { files: [{ + expand: true, + src: [ + nodeDir + '/jquery/dist/*' + ], + dest: tdkDir + '/jquery', + flatten: true + }, { expand: true, src: [ nodeDir + '/@coreui/coreui/dist/js/*' ], - dest: tdkDir + '/coreui/js', + dest: tdkDir + '/@coreui/coreui/js', flatten: true },{ expand: true, src: [ nodeDir + '/@coreui/coreui/dist/css/*' ], - dest: tdkDir + '/coreui/css', + dest: tdkDir + '/@coreui/coreui/css', + flatten: true + },{ + expand: true, + src: [ + nodeDir + '/@coreui/icons/css/*' + ], + dest: tdkDir + '/@coreui/icons/css', + flatten: true + },{ + expand: true, + src: [ + nodeDir + '/@coreui/icons/fonts/*' + ], + dest: tdkDir + '/@coreui/icons/fonts', + flatten: true + },{ + expand: true, + src: [ + nodeDir + '/popper.js/dist/esm/*' + ], + dest: tdkDir + '/popper.js', flatten: true },{ expand: true, @@ -239,6 +253,48 @@ module.exports = function (grunt) { ], dest: tdkDir + '/font-awesome/css', flatten: true + },{ + expand: true, + src: [ + nodeDir + '/pace-progressbar/index.js' + ], + dest: tdkDir + '/pace-progressbar', + flatten: true + },{ + expand: true, + src: [ + nodeDir + '/pace-progressbar/themes/*' + ], + dest: tdkDir + '/pace-progressbar/themes', + flatten: true + },{ + expand: true, + src: [ + nodeDir + '/pace-progressbar/templates/*' + ], + dest: tdkDir + '/pace-progressbar/templates', + flatten: true + },{ + expand: true, + src: [ + nodeDir + '/flag-icon-css/css/*' + ], + dest: tdkDir + '/flag-icon-css/css', + flatten: true + },{ + expand: true, + src: [ + nodeDir + '/simple-line-icons/dist/fonts/*' + ], + dest: tdkDir + '/simple-line-icons/fonts', + flatten: true + },{ + expand: true, + src: [ + nodeDir + '/simple-line-icons/dist/styles/*' + ], + dest: tdkDir + '/simple-line-icons/css', + flatten: true }] }, } diff --git a/Makefile b/Makefile index cedfde6e9..11de07b63 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ VERSION=$(shell php -r 'include("inc/inc.Version.php"); $$v=new SeedDMS_Version(); echo $$v->version();') -SRC=CHANGELOG inc conf utils index.php .htaccess languages views op out controllers doc styles TODO LICENSE webdav install restapi pdfviewer -# webapp +SRC=CHANGELOG inc conf utils index.php .htaccess languages op out controllers doc TODO LICENSE webdav install restapi pdfviewer +VIEWS ?= bootstrap -NODISTFILES=utils/importmail.php utils/seedddms-importmail utils/remote-email-upload utils/remote-upload utils/da-bv-reminder.php utils/seeddms-da-bv-reminder .svn .gitignore styles/blue styles/hc styles/clean views/blue views/hc views/clean views/pca views/tdk +NODISTFILES=utils/importmail.php utils/seedddms-importmail utils/remote-email-upload utils/remote-upload utils/da-bv-reminder.php utils/seeddms-da-bv-reminder .svn .gitignore EXTENSIONS := \ dynamic_content.tar.gz\ @@ -15,8 +15,18 @@ PHPDOC=~/Downloads/phpDocumentor.phar dist: mkdir -p tmp/seeddms-$(VERSION) cp -a $(SRC) tmp/seeddms-$(VERSION) + mkdir -p tmp/seeddms-$(VERSION)/views + mkdir -p tmp/seeddms-$(VERSION)/styles + for view in $(VIEWS) ; do \ + if [ -d "views/$$view" ] ; then \ + cp -a views/$$view tmp/seeddms-$(VERSION)/views ; \ + fi ; \ + if [ -d "styles/$$view" ] ; then \ + cp -a styles/$$view tmp/seeddms-$(VERSION)/styles ; \ + fi ; \ + done (cd tmp/seeddms-$(VERSION); rm -rf $(NODISTFILES); mv conf conf.template) - (cd tmp; tar --exclude=.svn --exclude=.gitignore --exclude=views/blue --exclude=views/hc --exclude=views/clean --exclude=styles/blue --exclude=styles/hc --exclude=styles/clean -czvf ../seeddms-$(VERSION).tar.gz seeddms-$(VERSION)) + (cd tmp; tar --exclude=.svn --exclude=.gitignore -czvf ../seeddms-$(VERSION).tar.gz seeddms-$(VERSION)) rm -rf tmp pear: diff --git a/SeedDMS_Core/Core/inc.ClassAttribute.php b/SeedDMS_Core/Core/inc.ClassAttribute.php index 8090c915b..b6f342295 100644 --- a/SeedDMS_Core/Core/inc.ClassAttribute.php +++ b/SeedDMS_Core/Core/inc.ClassAttribute.php @@ -96,6 +96,13 @@ class SeedDMS_Core_Attribute { /* {{{ */ $this->_dms = $dms; } /* }}} */ + /** + * Get dms of attribute + * + * @return object $dms + */ + function getDMS() { return $this->_dms; } + /** * Get internal id of attribute * @@ -469,6 +476,13 @@ class SeedDMS_Core_AttributeDefinition { /* {{{ */ $this->_dms = $dms; } /* }}} */ + /** + * Get dms of attribute definition + * + * @return object $dms + */ + function getDMS() { return $this->_dms; } + /** * Get internal id of attribute definition * @@ -1117,15 +1131,24 @@ class SeedDMS_Core_AttributeDefinition { /* {{{ */ * definition. * If the validation fails the validation error will be set which * can be requested by SeedDMS_Core_Attribute::getValidationError() + * Set $new to true if the value to be checked isn't saved to the database + * already. It will just be passed to the callback onAttributeValidate where + * it could be used to, e.g. check if a value is unique once it is saved to + * the database. $object is set to a folder, document or documentcontent + * if the attribute belongs to such an object. This will be null, if a + * new object is created. * * @param string|array $attrvalue attribute value + * @param object $object set if the current attribute is saved for this object + * @param boolean $new set to true if the value is new value and not taken from + * an existing attribute * @return boolean true if validation succeds, otherwise false */ - function validate($attrvalue) { /* {{{ */ + function validate($attrvalue, $object=null, $new=false) { /* {{{ */ /* Check if 'onAttributeValidate' callback is set */ if(isset($this->_dms->callbacks['onAttributeValidate'])) { foreach($this->_dms->callbacks['onAttributeValidate'] as $callback) { - $ret = call_user_func($callback[0], $callback[1], $this); + $ret = call_user_func($callback[0], $callback[1], $this, $attrvalue, $object, $new); if(is_bool($ret)) return $ret; } diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index bde9fb114..807da2020 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -161,6 +161,13 @@ class SeedDMS_Core_DMS { */ public $noReadForStatus; + /** + * @var boolean $checkWithinRootDir check if folder/document being accessed + * is within the rootdir + * @access public + */ + public $checkWithinRootDir; + /** * @var string $version version of pear package * @access public @@ -383,6 +390,7 @@ class SeedDMS_Core_DMS { $this->rootFolderID = 1; $this->maxDirID = 0; //31998; $this->forceRename = false; + $this->checkWithinRootDir = false; $this->enableConverting = false; $this->convertFileTypes = array(); $this->noReadForStatus = array(); @@ -396,7 +404,7 @@ class SeedDMS_Core_DMS { $this->lasterror = ''; $this->version = '@package_version@'; if($this->version[0] == '@') - $this->version = '5.1.20'; + $this->version = '5.1.21'; } /* }}} */ /** @@ -1472,6 +1480,10 @@ class SeedDMS_Core_DMS { $searchFolder = ""; if ($startFolder) { $searchFolder = "`tblFolders`.`folderList` LIKE '%:".$startFolder->getID().":%'"; + if($this->checkWithinRootDir) + $searchFolder = '('.$searchFolder." AND `tblFolders`.`folderList` LIKE '%:".$this->rootFolderID.":%')"; + } elseif($this->checkWithinRootDir) { + $searchFolder = "`tblFolders`.`folderList` LIKE '%:".$this->rootFolderID.":%'"; } // Check to see if the search has been restricted to a particular @@ -1634,6 +1646,10 @@ class SeedDMS_Core_DMS { $searchFolder = ""; if ($startFolder) { $searchFolder = "`tblDocuments`.`folderList` LIKE '%:".$startFolder->getID().":%'"; + if($this->checkWithinRootDir) + $searchFolder = '('.$searchFolder." AND `tblDocuments`.`folderList` LIKE '%:".$this->rootFolderID.":%')"; + } elseif($this->checkWithinRootDir) { + $searchFolder = "`tblDocuments`.`folderList` LIKE '%:".$this->rootFolderID.":%'"; } // Check to see if the search has been restricted to a particular @@ -1920,6 +1936,9 @@ class SeedDMS_Core_DMS { * @return SeedDMS_Core_Folder|boolean found folder or false */ function getFolderByName($name, $folder=null) { /* {{{ */ + $classname = $this->classnames['folder']; + return $classname::getInstanceByName($name, $folder, $this); + if (!$name) return false; $queryStr = "SELECT * FROM `tblFolders` WHERE `name` = " . $this->db->qstr($name); @@ -2915,11 +2934,14 @@ class SeedDMS_Core_DMS { /** @var SeedDMS_Core_Document[] $versions */ $versions = array(); foreach($resArr as $row) { - /** @var SeedDMS_Core_Document $document */ - $document = new $this->classnames['document']($row['document'], '', '', '', '', '', '', '', '', '', '', ''); - $document->setDMS($this); - $version = new $this->classnames['documentcontent']($row['id'], $document, $row['version'], $row['comment'], $row['date'], $row['createdBy'], $row['dir'], $row['orgFileName'], $row['fileType'], $row['mimeType'], $row['fileSize'], $row['checksum'], $row['fileSize'], $row['checksum']); - $versions[] = $version; + $document = $this->getDocument($row['document']); + /* getting the document can fail if it is outside the root folder + * and checkWithinRootDir is enabled. + */ + if($document) { + $version = new $this->classnames['documentcontent']($row['id'], $document, $row['version'], $row['comment'], $row['date'], $row['createdBy'], $row['dir'], $row['orgFileName'], $row['fileType'], $row['mimeType'], $row['fileSize'], $row['checksum'], $row['fileSize'], $row['checksum']); + $versions[] = $version; + } } return $versions; @@ -2942,11 +2964,14 @@ class SeedDMS_Core_DMS { /** @var SeedDMS_Core_Document[] $versions */ $versions = array(); foreach($resArr as $row) { - /** @var SeedDMS_Core_Document $document */ - $document = new $this->classnames['document']($row['document'], '', '', '', '', '', '', '', '', '', '', ''); - $document->setDMS($this); - $version = new $this->classnames['documentcontent']($row['id'], $document, $row['version'], $row['comment'], $row['date'], $row['createdBy'], $row['dir'], $row['orgFileName'], $row['fileType'], $row['mimeType'], $row['fileSize'], $row['checksum']); - $versions[] = $version; + $document = $this->getDocument($row['document']); + /* getting the document can fail if it is outside the root folder + * and checkWithinRootDir is enabled. + */ + if($document) { + $version = new $this->classnames['documentcontent']($row['id'], $document, $row['version'], $row['comment'], $row['date'], $row['createdBy'], $row['dir'], $row['orgFileName'], $row['fileType'], $row['mimeType'], $row['fileSize'], $row['checksum']); + $versions[] = $version; + } } return $versions; @@ -2970,12 +2995,17 @@ class SeedDMS_Core_DMS { $versions = array(); foreach($resArr as $row) { $document = $this->getDocument($row['document']); - $version = new $this->classnames['documentcontent']($row['id'], $document, $row['version'], $row['comment'], $row['date'], $row['createdBy'], $row['dir'], $row['orgFileName'], $row['fileType'], $row['mimeType'], $row['fileSize'], $row['checksum']); - if(!isset($versions[$row['dupid']])) { - $versions[$row['id']]['content'] = $version; - $versions[$row['id']]['duplicates'] = array(); - } else - $versions[$row['dupid']]['duplicates'][] = $version; + /* getting the document can fail if it is outside the root folder + * and checkWithinRootDir is enabled. + */ + if($document) { + $version = new $this->classnames['documentcontent']($row['id'], $document, $row['version'], $row['comment'], $row['date'], $row['createdBy'], $row['dir'], $row['orgFileName'], $row['fileType'], $row['mimeType'], $row['fileSize'], $row['checksum']); + if(!isset($versions[$row['dupid']])) { + $versions[$row['id']]['content'] = $version; + $versions[$row['id']]['duplicates'] = array(); + } else + $versions[$row['dupid']]['duplicates'][] = $version; + } } return $versions; diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 5a0d00bcc..90a490921 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -294,6 +294,8 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ // $queryStr = "SELECT * FROM `tblDocuments` WHERE `id` = " . (int) $id; $queryStr = "SELECT `tblDocuments`.*, `tblDocumentLocks`.`userID` as `lock` FROM `tblDocuments` LEFT JOIN `tblDocumentLocks` ON `tblDocuments`.`id` = `tblDocumentLocks`.`document` WHERE `id` = " . (int) $id; + if($dms->checkWithinRootDir) + $queryStr .= " AND `folderList` LIKE '%:".$dms->rootFolderID.":%'"; $resArr = $db->getResultArray($queryStr); if (is_bool($resArr) && $resArr == false) return false; @@ -1549,12 +1551,19 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if($attributes) { foreach($attributes as $attrdefid=>$attribute) { /* $attribute can be a string or an array */ - if($attribute) - if(!$content->setAttributeValue($this->_dms->getAttributeDefinition($attrdefid), $attribute)) { + if($attribute) { + if($attrdef = $this->_dms->getAttributeDefinition($attrdefid)) { + if(!$content->setAttributeValue($attrdef, $attribute)) { + $this->_removeContent($content); + $db->rollbackTransaction(); + return false; + } + } else { $this->_removeContent($content); $db->rollbackTransaction(); return false; } + } } } @@ -2460,6 +2469,12 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ $groupIDs = ""; $defAccess = $this->getDefaultAccess(); + /* Check if the default access is < read access or >= read access. + * If default access is less than read access, then create a list + * of users and groups with read access. + * If default access is equal or greater then read access, then + * create a list of users and groups without read access. + */ if ($defAccessgetAccessList(M_NONE, O_LTEQ); } + /** @var SeedDMS_Core_GroupAccess $groupAccess */ foreach ($tmpList["groups"] as $groupAccess) { $groupIDs .= (strlen($groupIDs)==0 ? "" : ", ") . $groupAccess->getGroupID(); } + + /** @var SeedDMS_Core_UserAccess $userAccess */ foreach ($tmpList["users"] as $userAccess) { $user = $userAccess->getUser(); if (!$listadmin && $user->isAdmin()) continue; @@ -2504,7 +2522,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ (strlen($userIDs) == 0 ? "" : " OR (`tblUsers`.`id` IN (". $userIDs ."))"). ") ORDER BY `login`"; } - /* If default access is equal or greater then M_READ, $userIDs and + /* If default access is equal or greater than M_READ, $userIDs and * $groupIDs contains a list of user without read access */ else { diff --git a/SeedDMS_Core/Core/inc.ClassFolder.php b/SeedDMS_Core/Core/inc.ClassFolder.php index 0b7945bff..2ad0a365e 100644 --- a/SeedDMS_Core/Core/inc.ClassFolder.php +++ b/SeedDMS_Core/Core/inc.ClassFolder.php @@ -205,21 +205,48 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { $db = $dms->getDB(); $queryStr = "SELECT * FROM `tblFolders` WHERE `id` = " . (int) $id; + if($dms->checkWithinRootDir && ($id != $dms->rootFolderID)) + $queryStr .= " AND `folderList` LIKE '%:".$dms->rootFolderID.":%'"; $resArr = $db->getResultArray($queryStr); if (is_bool($resArr) && $resArr == false) return false; - else if (count($resArr) != 1) + elseif (count($resArr) != 1) return null; return self::getInstanceByData($resArr[0], $dms); - - $resArr = $resArr[0]; - $classname = $dms->getClassname('folder'); - /** @var SeedDMS_Core_Folder $folder */ - $folder = new $classname($resArr["id"], $resArr["name"], $resArr["parent"], $resArr["comment"], $resArr["date"], $resArr["owner"], $resArr["inheritAccess"], $resArr["defaultAccess"], $resArr["sequence"]); - $folder->setDMS($dms); - $folder = $folder->applyDecorators(); - return $folder; + } /* }}} */ + + /** + * Return a folder by its name + * + * This function retrieves a folder from the database by its name. The + * search covers the whole database. If + * the parameter $folder is not null, it will search for the name + * only within this parent folder. It will not be done recursively. + * + * @param string $name name of the folder + * @param SeedDMS_Core_Folder $folder parent folder + * @return SeedDMS_Core_Folder|boolean found folder or false + */ + public static function getInstanceByName($name, $folder=null, $dms) { /* {{{ */ + if (!$name) return false; + + $db = $dms->getDB(); + $queryStr = "SELECT * FROM `tblFolders` WHERE `name` = " . $db->qstr($name); + if($folder) + $queryStr .= " AND `parent` = ". $folder->getID(); + if($dms->checkWithinRootDir && ($id != $dms->rootFolderID)) + $queryStr .= " AND `folderList` LIKE '%:".$dms->rootFolderID.":%'"; + $queryStr .= " LIMIT 1"; + $resArr = $db->getResultArray($queryStr); + + if (is_bool($resArr) && $resArr == false) + return false; + + if(!$resArr) + return false; + + return self::getInstanceByData($resArr[0], $dms); } /* }}} */ /** @@ -465,9 +492,13 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { */ function getDefaultAccess() { /* {{{ */ if ($this->inheritsAccess()) { + /* Access is supposed to be inherited but it could be that there + * is no parent because the configured root folder id is somewhere + * below the actual root folder. + */ $res = $this->getParent(); - if (!$res) return false; - return $this->_parent->getDefaultAccess(); + if ($res) + return $this->_parent->getDefaultAccess(); } return $this->_defaultAccess; @@ -669,7 +700,12 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { if($attributes) { foreach($attributes as $attrdefid=>$attribute) { if($attribute) - if(!$newFolder->setAttributeValue($this->_dms->getAttributeDefinition($attrdefid), $attribute)) { + if($attrdef = $this->_dms->getAttributeDefinition($attrdefid)) { + if(!$newFolder->setAttributeValue($attrdef, $attribute)) { + $db->rollbackTransaction(); + return false; + } + } else { $db->rollbackTransaction(); return false; } @@ -995,12 +1031,19 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { if($attributes) { foreach($attributes as $attrdefid=>$attribute) { /* $attribute can be a string or an array */ - if($attribute) - if(!$document->setAttributeValue($this->_dms->getAttributeDefinition($attrdefid), $attribute)) { + if($attribute) { + if($attrdef = $this->_dms->getAttributeDefinition($attrdefid)) { + if(!$document->setAttributeValue($attrdef, $attribute)) { + $document->remove(); + $db->rollbackTransaction(); + return false; + } + } else { $document->remove(); $db->rollbackTransaction(); return false; } + } } } @@ -1226,9 +1269,13 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { $db = $this->_dms->getDB(); if ($this->inheritsAccess()) { + /* Access is supposed to be inherited but it could be that there + * is no parent because the configured root folder id is somewhere + * below the actual root folder. + */ $res = $this->getParent(); - if (!$res) return false; - return $this->_parent->getAccessList($mode, $op); + if ($res) + return $this->_parent->getAccessList($mode, $op); } if (!isset($this->_accessList[$mode])) { @@ -1770,11 +1817,12 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { * administrators and the owner of the folder unless $listadmin resp. * $listowner is set to true. * - * @param bool|int $listadmin if set to true any admin will be listed too - * @param bool|int $listowner if set to true the owner will be listed too + * @param boolean $listadmin if set to true any admin will be listed too + * @param boolean $listowner if set to true the owner will be listed too + * @param boolean $listguest if set to true any guest will be listed too * @return array list of users and groups */ - function getReadAccessList($listadmin=0, $listowner=0) { /* {{{ */ + function getReadAccessList($listadmin=0, $listowner=0, $listguest=0) { /* {{{ */ $db = $this->_dms->getDB(); if (!isset($this->_readAccessList)) { @@ -1809,7 +1857,7 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { $user = $userAccess->getUser(); if (!$listadmin && $user->isAdmin()) continue; if (!$listowner && $user->getID() == $this->_ownerID) continue; - if ($user->isGuest()) continue; + if (!$listguest && $user->isGuest()) continue; $userIDs .= (strlen($userIDs)==0 ? "" : ", ") . $userAccess->getUserID(); } @@ -1836,7 +1884,7 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { (strlen($userIDs) == 0 ? "" : " OR (`tblUsers`.`id` IN (". $userIDs ."))"). ") ORDER BY `login`"; } - /* If default access is equal or greate then read, $userIDs and + /* If default access is equal or greater than M_READ, $userIDs and * $groupIDs contains a list of user without read access */ else { diff --git a/SeedDMS_Core/Core/inc.ClassUser.php b/SeedDMS_Core/Core/inc.ClassUser.php index 1716ff84b..cdf46ebe6 100644 --- a/SeedDMS_Core/Core/inc.ClassUser.php +++ b/SeedDMS_Core/Core/inc.ClassUser.php @@ -618,7 +618,8 @@ class SeedDMS_Core_User { /* {{{ */ $db = $this->_dms->getDB(); $homefolder = intval($homefolder); - $queryStr = "UPDATE `tblUsers` SET `homefolder` = " . ($homefolder ? $homefolder : NULL) . " WHERE `id` = " . $this->_id; + $queryStr = "UPDATE `tblUsers` SET `homefolder` = " . ($homefolder ? $homefolder : 'NULL') . " WHERE `id` = " . $this->_id; + echo $queryStr; if (!$db->getResult($queryStr)) return false; diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index eb0fceaf4..bd8ff243e 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -15,8 +15,8 @@ 2020-09-29 - 5.1.20 - 5.1.20 + 5.1.21 + 5.1.21 stable @@ -24,10 +24,12 @@ GPL License -- SeedDMS_Core_DMS::getDocumentList() returns false, if an unknown list is passed -- SeedDMS_Core_Document::getDocumentFiles() has new parameter to select only those files attached to a specific version of the document -- removing a document version will not remove attachments of the document anymore -- set dms of new user instances in SeedDMS_Core_Group +- SeedDMS_Folder_DMS::getAccessList() and getDefaultAccess() do not return fals anymore if the parent does not exists. They just stop inheritance. +- pass attribute value to callback 'onAttributeValidate' +- new paramter 'new' of methode SeedDMЅ_Core_AttributeDefinition::validate() +- check if folder/document is below rootDir can be turned on (default off) +- SeedDMS_Core_User::setHomeFolder() can be used to unset the home folder +- check if attribute definition exists when setting attributes of folders and documents @@ -1822,5 +1824,24 @@ add method SeedDMS_Core_DatabaseAccess::setLogFp() - add new attribute types 'document', 'folder', 'user', 'group' + + 2020-09-29 + + + 5.1.20 + 5.1.20 + + + stable + stable + + GPL License + +- SeedDMS_Core_DMS::getDocumentList() returns false, if an unknown list is passed +- SeedDMS_Core_Document::getDocumentFiles() has new parameter to select only those files attached to a specific version of the document +- removing a document version will not remove attachments of the document anymore +- set dms of new user instances in SeedDMS_Core_Group + + diff --git a/SeedDMS_Lucene/Lucene/IndexedDocument.php b/SeedDMS_Lucene/Lucene/IndexedDocument.php index f3938df8c..f4ef10432 100644 --- a/SeedDMS_Lucene/Lucene/IndexedDocument.php +++ b/SeedDMS_Lucene/Lucene/IndexedDocument.php @@ -91,7 +91,7 @@ class SeedDMS_Lucene_IndexedDocument extends Zend_Search_Lucene_Document { * Constructor. Creates our indexable document and adds all * necessary fields to it using the passed in document * @param SeedDMS_Core_DMS $dms - * @param SeedDMS_Core_Document $document + * @param SeedDMS_Core_Document|Folder $document * @param null $convcmd * @param bool $nocontent * @param int $timeout @@ -100,44 +100,8 @@ class SeedDMS_Lucene_IndexedDocument extends Zend_Search_Lucene_Document { $this->errormsg = ''; $this->cmd = ''; $this->mimetype = ''; - $_convcmd = array( - 'application/pdf' => 'pdftotext -enc UTF-8 -nopgbrk %s - |sed -e \'s/ [a-zA-Z0-9.]\{1\} / /g\' -e \'s/[0-9.]//g\'', - 'application/postscript' => 'ps2pdf14 %s - | pdftotext -enc UTF-8 -nopgbrk - - | sed -e \'s/ [a-zA-Z0-9.]\{1\} / /g\' -e \'s/[0-9.]//g\'', - 'application/msword' => 'catdoc %s', - 'application/vnd.ms-excel' => 'ssconvert -T Gnumeric_stf:stf_csv -S %s fd://1', - 'audio/mp3' => "id3 -l -R %s | egrep '(Title|Artist|Album)' | sed 's/^[^:]*: //g'", - 'audio/mpeg' => "id3 -l -R %s | egrep '(Title|Artist|Album)' | sed 's/^[^:]*: //g'", - 'text/plain' => 'cat %s', - ); - if($convcmd) { - $_convcmd = $convcmd; - } - $version = $document->getLatestContent(); - $this->addField(Zend_Search_Lucene_Field::Keyword('document_id', $document->getID())); - if($version) { - $this->addField(Zend_Search_Lucene_Field::Keyword('mimetype', $version->getMimeType())); - $this->addField(Zend_Search_Lucene_Field::Keyword('origfilename', $version->getOriginalFileName(), 'utf-8')); - if(!$nocontent) - $this->addField(Zend_Search_Lucene_Field::UnIndexed('created', $version->getDate())); - if($attributes = $version->getAttributes()) { - foreach($attributes as $attribute) { - $attrdef = $attribute->getAttributeDefinition(); - if($attrdef->getValueSet() != '') - $this->addField(Zend_Search_Lucene_Field::Keyword('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue(), 'utf-8')); - else - $this->addField(Zend_Search_Lucene_Field::Text('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue(), 'utf-8')); - } - } - } $this->addField(Zend_Search_Lucene_Field::Text('title', $document->getName(), 'utf-8')); - if($categories = $document->getCategories()) { - $names = array(); - foreach($categories as $cat) { - $names[] = $cat->getName(); - } - $this->addField(Zend_Search_Lucene_Field::Text('category', implode(' ', $names), 'utf-8')); - } if($acllist = $document->getReadAccessList(1, 1, 1)) { $allu = []; foreach($acllist['users'] as $u) @@ -159,45 +123,83 @@ class SeedDMS_Lucene_IndexedDocument extends Zend_Search_Lucene_Document { $this->addField(Zend_Search_Lucene_Field::Text('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue(), 'utf-8')); } } - $owner = $document->getOwner(); $this->addField(Zend_Search_Lucene_Field::Text('owner', $owner->getLogin(), 'utf-8')); - if($keywords = $document->getKeywords()) { - $this->addField(Zend_Search_Lucene_Field::Text('keywords', $keywords, 'utf-8')); - } if($comment = $document->getComment()) { $this->addField(Zend_Search_Lucene_Field::Text('comment', $comment, 'utf-8')); } - if($version && !$nocontent) { - $path = $dms->contentDir . $version->getPath(); - if(file_exists($path)) { - $content = ''; - $mimetype = $version->getMimeType(); - $this->mimetype = $mimetype; - $cmd = ''; - $mimeparts = explode('/', $mimetype, 2); - if(isset($_convcmd[$mimetype])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } elseif(isset($_convcmd[$mimeparts[0].'/*'])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } elseif(isset($_convcmd['*'])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } - if($cmd) { - $this->cmd = $cmd; - try { - $content = self::execWithTimeout($cmd, $timeout); - if($content['stdout']) { - $this->addField(Zend_Search_Lucene_Field::UnStored('content', $content['stdout'], 'utf-8')); - } - if($content['stderr']) { - $this->errormsg = $content['stderr']; - } - } catch (Exception $e) { + $tmp = explode(':', substr($document->getFolderList(), 1, -1)); + foreach($tmp as $t) + $this->addField(Zend_Search_Lucene_Field::Keyword('path', $t)); +// $this->addField(Zend_Search_Lucene_Field::Keyword('path', str_replace(':', 'x', $document->getFolderList()))); + + if($document->isType('document')) { + $this->addField(Zend_Search_Lucene_Field::Keyword('document_id', 'D'.$document->getID())); + $version = $document->getLatestContent(); + if($version) { + $this->addField(Zend_Search_Lucene_Field::Keyword('mimetype', $version->getMimeType())); + $this->addField(Zend_Search_Lucene_Field::Keyword('origfilename', $version->getOriginalFileName(), 'utf-8')); + if(!$nocontent) + $this->addField(Zend_Search_Lucene_Field::UnIndexed('created', $version->getDate())); + if($attributes = $version->getAttributes()) { + foreach($attributes as $attribute) { + $attrdef = $attribute->getAttributeDefinition(); + if($attrdef->getValueSet() != '') + $this->addField(Zend_Search_Lucene_Field::Keyword('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue(), 'utf-8')); + else + $this->addField(Zend_Search_Lucene_Field::Text('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue(), 'utf-8')); } } } - } + if($categories = $document->getCategories()) { + $names = array(); + foreach($categories as $cat) { + $names[] = $cat->getName(); + } + $this->addField(Zend_Search_Lucene_Field::Text('category', implode(' ', $names), 'utf-8')); + } + + if($keywords = $document->getKeywords()) { + $this->addField(Zend_Search_Lucene_Field::Text('keywords', $keywords, 'utf-8')); + } + if($version) { + $status = $version->getStatus(); + $this->addField(Zend_Search_Lucene_Field::Keyword('status', $status['status'], 'utf-8')); + } + if($version && !$nocontent) { + $path = $dms->contentDir . $version->getPath(); + if(file_exists($path)) { + $content = ''; + $mimetype = $version->getMimeType(); + $this->mimetype = $mimetype; + $cmd = ''; + $mimeparts = explode('/', $mimetype, 2); + if(isset($convcmd[$mimetype])) { + $cmd = sprintf($convcmd[$mimetype], $path); + } elseif(isset($convcmd[$mimeparts[0].'/*'])) { + $cmd = sprintf($convcmd[$mimetype], $path); + } elseif(isset($convcmd['*'])) { + $cmd = sprintf($convcmd[$mimetype], $path); + } + if($cmd) { + $this->cmd = $cmd; + try { + $content = self::execWithTimeout($cmd, $timeout); + if($content['stdout']) { + $this->addField(Zend_Search_Lucene_Field::UnStored('content', $content['stdout'], 'utf-8')); + } + if($content['stderr']) { + $this->errormsg = $content['stderr']; + } + } catch (Exception $e) { + } + } + } + } + } elseif($document->isType('folder')) { + $this->addField(Zend_Search_Lucene_Field::Keyword('document_id', 'F'.$document->getID())); + $this->addField(Zend_Search_Lucene_Field::UnIndexed('created', $document->getDate())); + } } /* }}} */ public function getErrorMsg() { /* {{{ */ diff --git a/SeedDMS_Lucene/Lucene/Indexer.php b/SeedDMS_Lucene/Lucene/Indexer.php index 58b7204eb..7c3b3f68a 100644 --- a/SeedDMS_Lucene/Lucene/Indexer.php +++ b/SeedDMS_Lucene/Lucene/Indexer.php @@ -29,18 +29,22 @@ class SeedDMS_Lucene_Indexer { */ protected $indexname; - static function open($luceneDir) { /* {{{ */ + static function open($conf) { /* {{{ */ try { - $index = Zend_Search_Lucene::open($luceneDir); - return($index); + $index = Zend_Search_Lucene::open($conf['indexdir']); + return($index); } catch (Exception $e) { return null; } } /* }}} */ - static function create($luceneDir) { /* {{{ */ - $index = Zend_Search_Lucene::create($luceneDir); - return($index); + static function create($conf) { /* {{{ */ + try { + $index = Zend_Search_Lucene::create($conf['indexdir']); + return($index); + } catch (Exception $e) { + return null; + } } /* }}} */ /** diff --git a/SeedDMS_Lucene/Lucene/Search.php b/SeedDMS_Lucene/Lucene/Search.php index 604c1549c..c25ba678a 100644 --- a/SeedDMS_Lucene/Lucene/Search.php +++ b/SeedDMS_Lucene/Lucene/Search.php @@ -49,7 +49,18 @@ class SeedDMS_Lucene_Search { * @return object instance of SeedDMS_Lucene_Document of false */ function getDocument($id) { /* {{{ */ - $hits = $this->index->find('document_id:'.$id); + $hits = $this->index->find('document_id:D'.$id); + return $hits ? $hits[0] : false; + } /* }}} */ + + /** + * Get folder from index + * + * @param object $index lucene index + * @return object instance of SeedDMS_Lucene_Document of false + */ + function getFolder($id) { /* {{{ */ + $hits = $this->index->find('document_id:F'.$id); return $hits ? $hits[0] : false; } /* }}} */ @@ -59,30 +70,64 @@ class SeedDMS_Lucene_Search { * @param object $index lucene index * @return object instance of SeedDMS_Lucene_Search */ - function search($term, $owner, $status='', $categories=array(), $fields=array(), $users=array()) { /* {{{ */ + function search($term, $fields=array(), $limit=array()) { /* {{{ */ $querystr = ''; - if($fields) { - } else { - if($term) - $querystr .= trim($term); + $term = trim($term); + if($term) { + $querystr = substr($term, -1) != '*' ? $term.'*' : $term; } - if($owner) { - if($querystr) - $querystr .= ' && '; - $querystr .= 'owner:'.$owner; + if(!empty($fields['owner'])) { + if(is_string($owner)) { + if($querystr) + $querystr .= ' && '; + $querystr .= 'owner:'.$owner; + } elseif(is_array($fields['owner'])) { + if($querystr) + $querystr .= ' && '; + $querystr .= '(owner:"'; + $querystr .= implode('" || owner:"', $fields['owner']); + $querystr .= '")'; + } } - if($categories) { + if(!empty($fields['category'])) { if($querystr) $querystr .= ' && '; $querystr .= '(category:"'; - $querystr .= implode('" || category:"', $categories); + $querystr .= implode('" || category:"', $fields['category']); $querystr .= '")'; } - if($users) { + if(!empty($fields['status'])) { + if($querystr) + $querystr .= ' && '; + $querystr .= '(status:"'; + $querystr .= implode('" || status:"', $fields['status']); + $querystr .= '")'; + } + if(!empty($fields['user'])) { if($querystr) $querystr .= ' && '; $querystr .= '(users:"'; - $querystr .= implode('" || users:"', $users); + $querystr .= implode('" || users:"', $fields['user']); + $querystr .= '")'; + } + if(!empty($fields['rootFolder']) && $fields['rootFolder']->getFolderList()) { + if($querystr) + $querystr .= ' && '; + $querystr .= '(path:"'; + $tmp[] = $fields['rootFolder']->getID(); + $querystr .= implode('" && path:"', $tmp); + //$querystr .= $fields['rootFolder']->getFolderList().$fields['rootFolder']->getID().':'; + $querystr .= '")'; + } + if(!empty($fields['startFolder']) && $fields['startFolder']->getFolderList()) { + if($querystr) + $querystr .= ' && '; + $querystr .= '(path:"'; +// $querystr .= str_replace(':', 'x', $fields['startFolder']->getFolderList().$fields['startFolder']->getID().':'); + $tmp = array();//explode(':', substr($fields['startFolder']->getFolderList(), 1, -1)); + $tmp[] = $fields['startFolder']->getID(); + $querystr .= implode('" && path:"', $tmp); +// $querystr .= str_replace(':', ' ', $fields['startFolder']->getFolderList().$fields['startFolder']->getID()); $querystr .= '")'; } try { @@ -90,10 +135,13 @@ class SeedDMS_Lucene_Search { try { $hits = $this->index->find($query); $recs = array(); + $c = 0; foreach($hits as $hit) { - $recs[] = array('id'=>$hit->id, 'document_id'=>$hit->document_id); + if($c >= $limit['offset'] && ($c-$limit['offset'] < $limit)) + $recs[] = array('id'=>$hit->id, 'document_id'=>$hit->document_id); + $c++; } - return $recs; + return array('count'=>count($hits), 'hits'=>$recs, 'facets'=>array()); } catch (Zend_Search_Lucene_Exception $e) { return false; } diff --git a/SeedDMS_Lucene/package.xml b/SeedDMS_Lucene/package.xml index 2780d31cd..8d80f829e 100644 --- a/SeedDMS_Lucene/package.xml +++ b/SeedDMS_Lucene/package.xml @@ -11,11 +11,11 @@ uwe@steinmann.cx yes - 2020-09-02 + 2020-12-12 - 1.1.14 - 1.1.14 + 1.1.16 + 1.1.16 stable @@ -23,7 +23,7 @@ GPL License -Index users with at least read access on the document +- add indexing of folders @@ -315,5 +315,42 @@ execWithTimeout() reads data from stderr and saves it into error msg IndexedDocument() remembers cmd and mimetype + + 2020-09-02 + + + 1.1.14 + 1.1.14 + + + stable + stable + + GPL License + +Index users with at least read access on the document + + + + 2020-09-10 + + + 1.1.15 + 1.1.15 + + + stable + stable + + GPL License + +- add searching for document status +- better error handling if opening index fails +- parameters for SeedDMS_Lucene_Search::search() has changed +- SeedDMS_Lucene_Search::search() returns array of hits, count and facets +- pass config array instead of index directory to SeedDMS_Lucene_Indexer::create() + and SeedDMS_Lucene_Indexer::open() + + diff --git a/SeedDMS_Preview/Preview/Base.php b/SeedDMS_Preview/Preview/Base.php index f34359e7e..59aa7b703 100644 --- a/SeedDMS_Preview/Preview/Base.php +++ b/SeedDMS_Preview/Preview/Base.php @@ -172,6 +172,8 @@ class SeedDMS_Preview_Base { if($this->xsendfile && function_exists('apache_get_modules') && in_array('mod_xsendfile',apache_get_modules())) { header("X-Sendfile: ".$filename); } else { + $size = filesize($filename); + header("Content-Length: " . $size); /* Make sure output buffering is off */ if (ob_get_level()) { ob_end_clean(); diff --git a/SeedDMS_Preview/package.xml b/SeedDMS_Preview/package.xml index 9bb36ad03..715278e1a 100644 --- a/SeedDMS_Preview/package.xml +++ b/SeedDMS_Preview/package.xml @@ -4,17 +4,17 @@ pear.php.net Create thumbnails from document content for SeedDMS SeedDMS is a web based document management system (DMS). These - are the classes to create preview images from the document content. + are the classes to create preview images and pdf file from the document content. Uwe Steinmann steinm uwe@steinmann.cx yes - 2020-03-21 + 2020-12-23 - 1.3.1 + 1.3.2 1.3.1 @@ -23,7 +23,8 @@ GPL License -add parameter $target to SeedDMS_Preview_pdfPreviewer::hasRawPreview() and SeedDMS_Preview_pdfPreviewer::getRawPreview() +set header Content-Length +update package description @@ -436,5 +437,21 @@ fix creation of pdf preview if document content class is not SeedDMS_Core_Docume add new methode getPreviewFile() + + 2020-03-21 + + + 1.3.1 + 1.3.1 + + + stable + stable + + GPL License + +add parameter $target to SeedDMS_Preview_pdfPreviewer::hasRawPreview() and SeedDMS_Preview_pdfPreviewer::getRawPreview() + + diff --git a/SeedDMS_SQLiteFTS/SQLiteFTS/Document.php b/SeedDMS_SQLiteFTS/SQLiteFTS/Document.php index 7734848e5..956c8076c 100644 --- a/SeedDMS_SQLiteFTS/SQLiteFTS/Document.php +++ b/SeedDMS_SQLiteFTS/SQLiteFTS/Document.php @@ -44,7 +44,8 @@ class SeedDMS_SQLiteFTS_Document { } /* }}} */ public function addField($key, $value) { /* {{{ */ - if($key == 'document_id') { + //if($key == 'document_id') { + if($key == 'docid') { $this->id = $this->fields[$key] = (int) $value; } else { if(isset($this->fields[$key])) diff --git a/SeedDMS_SQLiteFTS/SQLiteFTS/IndexedDocument.php b/SeedDMS_SQLiteFTS/SQLiteFTS/IndexedDocument.php index 237cf8576..7c235976b 100644 --- a/SeedDMS_SQLiteFTS/SQLiteFTS/IndexedDocument.php +++ b/SeedDMS_SQLiteFTS/SQLiteFTS/IndexedDocument.php @@ -94,62 +94,8 @@ class SeedDMS_SQLiteFTS_IndexedDocument extends SeedDMS_SQLiteFTS_Document { $this->errormsg = ''; $this->cmd = ''; $this->mimetype = ''; - $_convcmd = array( - 'application/pdf' => 'pdftotext -enc UTF-8 -nopgbrk %s - |sed -e \'s/ [a-zA-Z0-9.]\{1\} / /g\' -e \'s/[0-9.]//g\'', - 'application/postscript' => 'ps2pdf14 %s - | pdftotext -enc UTF-8 -nopgbrk - - | sed -e \'s/ [a-zA-Z0-9.]\{1\} / /g\' -e \'s/[0-9.]//g\'', - 'application/msword' => 'catdoc %s', - 'application/vnd.ms-excel' => 'ssconvert -T Gnumeric_stf:stf_csv -S %s fd://1', - 'audio/mp3' => "id3 -l -R %s | egrep '(Title|Artist|Album)' | sed 's/^[^:]*: //g'", - 'audio/mpeg' => "id3 -l -R %s | egrep '(Title|Artist|Album)' | sed 's/^[^:]*: //g'", - 'text/plain' => 'cat %s', - ); - if($convcmd) { - $_convcmd = $convcmd; - } - $version = $document->getLatestContent(); - $this->addField('document_id', $document->getID()); - if($version) { - $this->addField('mimetype', $version->getMimeType()); - $this->addField('origfilename', $version->getOriginalFileName()); - if(!$nocontent) - $this->addField('created', $version->getDate(), 'unindexed'); - if($attributes = $version->getAttributes()) { - foreach($attributes as $attribute) { - $attrdef = $attribute->getAttributeDefinition(); - if($attrdef->getValueSet() != '') - $this->addField('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue()); - else - $this->addField('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue()); - } - } - } $this->addField('title', $document->getName()); - if($categories = $document->getCategories()) { - $names = array(); - foreach($categories as $cat) { - $names[] = $cat->getName(); - } - $this->addField('category', implode(' ', $names)); - } - if($attributes = $document->getAttributes()) { - foreach($attributes as $attribute) { - $attrdef = $attribute->getAttributeDefinition(); - if($attrdef->getValueSet() != '') - $this->addField('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue()); - else - $this->addField('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue()); - } - } - - $owner = $document->getOwner(); - $this->addField('owner', $owner->getLogin()); - if($keywords = $document->getKeywords()) { - $this->addField('keywords', $keywords); - } - if($comment = $document->getComment()) { - $this->addField('comment', $comment); - } if($acllist = $document->getReadAccessList(1, 1, 1)) { $allu = []; foreach($acllist['users'] as $u) @@ -162,35 +108,86 @@ class SeedDMS_SQLiteFTS_IndexedDocument extends SeedDMS_SQLiteFTS_Document { $this->addField('groups', implode(' ', $allg)); */ } - if($version && !$nocontent) { - $path = $dms->contentDir . $version->getPath(); - if(file_exists($path)) { - $content = ''; - $mimetype = $version->getMimeType(); - $this->mimetype = $mimetype; - $cmd = ''; - $mimeparts = explode('/', $mimetype, 2); - if(isset($_convcmd[$mimetype])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } elseif(isset($_convcmd[$mimeparts[0].'/*'])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } elseif(isset($_convcmd['*'])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } - if($cmd) { - $this->cmd = $cmd; - try { - $content = self::execWithTimeout($cmd, $timeout); - if($content['stdout']) { - $this->addField('content', $content['stdout'], 'unstored'); - } - if($content['stderr']) { - $this->errormsg = $content['stderr']; - } - } catch (Exception $e) { + if($attributes = $document->getAttributes()) { + foreach($attributes as $attribute) { + $attrdef = $attribute->getAttributeDefinition(); + if($attrdef->getValueSet() != '') + $this->addField('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue()); + else + $this->addField('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue()); + } + } + $owner = $document->getOwner(); + $this->addField('owner', $owner->getLogin()); + $this->addField('path', str_replace(':', 'x', $document->getFolderList())); + if($comment = $document->getComment()) { + $this->addField('comment', $comment); + } + + if($document->isType('document')) { + $this->addField('document_id', 'D'.$document->getID()); + $version = $document->getLatestContent(); + if($version) { + $this->addField('mimetype', $version->getMimeType()); + $this->addField('origfilename', $version->getOriginalFileName()); + if(!$nocontent) + $this->addField('created', $version->getDate(), 'unindexed'); + if($attributes = $version->getAttributes()) { + foreach($attributes as $attribute) { + $attrdef = $attribute->getAttributeDefinition(); + if($attrdef->getValueSet() != '') + $this->addField('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue()); + else + $this->addField('attr_'.str_replace(' ', '_', $attrdef->getName()), $attribute->getValue()); } } } + if($categories = $document->getCategories()) { + $names = array(); + foreach($categories as $cat) { + $names[] = $cat->getName(); + } + $this->addField('category', implode(' ', $names)); + } + if($keywords = $document->getKeywords()) { + $this->addField('keywords', $keywords); + } + if($version) { + $status = $version->getStatus(); + $this->addField('status', $status['status']+10); + } + if($version && !$nocontent) { + $path = $dms->contentDir . $version->getPath(); + if(file_exists($path)) { + $content = ''; + $mimetype = $version->getMimeType(); + $this->mimetype = $mimetype; + $cmd = ''; + $mimeparts = explode('/', $mimetype, 2); + if(isset($convcmd[$mimetype])) { + $cmd = sprintf($convcmd[$mimetype], $path); + } elseif(isset($convcmd[$mimeparts[0].'/*'])) { + $cmd = sprintf($convcmd[$mimetype], $path); + } elseif(isset($convcmd['*'])) { + $cmd = sprintf($convcmd[$mimetype], $path); + } + if($cmd) { + $this->cmd = $cmd; + try { + $content = self::execWithTimeout($cmd, $timeout); + if($content['stdout']) { + $this->addField('content', $content['stdout'], 'unstored'); + } + if($content['stderr']) { + $this->errormsg = $content['stderr']; + } + } catch (Exception $e) { + } + } + } + } + } elseif($document->isType('folder')) { + $this->addField('document_id', 'F'.$document->getID()); } } /* }}} */ diff --git a/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php b/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php index f4791f5f2..6b209cb58 100644 --- a/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php +++ b/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php @@ -42,30 +42,30 @@ class SeedDMS_SQLiteFTS_Indexer { * * @param string $indexerDir directory on disk containing the index */ - static function open($indexerDir) { /* {{{ */ - if(file_exists($indexerDir.'/index.db')) { - return new SeedDMS_SQLiteFTS_Indexer($indexerDir); + static function open($conf) { /* {{{ */ + if(file_exists($conf['indexdir'].'/index.db')) { + return new SeedDMS_SQLiteFTS_Indexer($conf['indexdir']); } else - return self::create($indexerDir); + return self::create($conf); } /* }}} */ /** * Create a new index * - * @param string $indexerDir directory on disk containing the index + * @param array $conf $conf['indexdir'] is the directory on disk containing the index */ - static function create($indexerDir) { /* {{{ */ - if(file_exists($indexerDir.'/index.db')) - unlink($indexerDir.'/index.db'); - $index = new SeedDMS_SQLiteFTS_Indexer($indexerDir); + static function create($conf) { /* {{{ */ + if(file_exists($conf['indexdir'].'/index.db')) + unlink($conf['indexdir'].'/index.db'); + $index = new SeedDMS_SQLiteFTS_Indexer($conf['indexdir']); /* Make sure the sequence of fields is identical to the field list * in SeedDMS_SQLiteFTS_Term */ $version = SQLite3::version(); if($version['versionNumber'] >= 3008000) - $sql = 'CREATE VIRTUAL TABLE docs USING fts4(title, comment, keywords, category, mimetype, origfilename, owner, content, created, users, notindexed=created, matchinfo=fts3)'; + $sql = 'CREATE VIRTUAL TABLE docs USING fts4(documentid, title, comment, keywords, category, mimetype, origfilename, owner, content, created, users, status, path, notindexed=created, matchinfo=fts3)'; else - $sql = 'CREATE VIRTUAL TABLE docs USING fts4(title, comment, keywords, category, mimetype, origfilename, owner, content, created, users, matchinfo=fts3)'; + $sql = 'CREATE VIRTUAL TABLE docs USING fts4(documentid, title, comment, keywords, category, mimetype, origfilename, owner, content, created, users, status, path, matchinfo=fts3)'; $res = $index->_conn->exec($sql); if($res === false) { return null; @@ -96,7 +96,7 @@ class SeedDMS_SQLiteFTS_Indexer { if(!$this->_conn) return false; - $sql = "INSERT INTO docs (docid, title, comment, keywords, category, owner, content, mimetype, origfilename, created, users) VALUES(".$doc->getFieldValue('document_id').", ".$this->_conn->quote($doc->getFieldValue('title')).", ".$this->_conn->quote($doc->getFieldValue('comment')).", ".$this->_conn->quote($doc->getFieldValue('keywords')).", ".$this->_conn->quote($doc->getFieldValue('category')).", ".$this->_conn->quote($doc->getFieldValue('owner')).", ".$this->_conn->quote($doc->getFieldValue('content')).", ".$this->_conn->quote($doc->getFieldValue('mimetype')).", ".$this->_conn->quote($doc->getFieldValue('origfilename')).", ".$doc->getFieldValue('created').", ".$this->_conn->quote($doc->getFieldValue('users'))/*time()*/.")"; + $sql = "INSERT INTO docs (documentid, title, comment, keywords, category, owner, content, mimetype, origfilename, created, users, status, path) VALUES (".$this->_conn->quote($doc->getFieldValue('document_id')).", ".$this->_conn->quote($doc->getFieldValue('title')).", ".$this->_conn->quote($doc->getFieldValue('comment')).", ".$this->_conn->quote($doc->getFieldValue('keywords')).", ".$this->_conn->quote($doc->getFieldValue('category')).", ".$this->_conn->quote($doc->getFieldValue('owner')).", ".$this->_conn->quote($doc->getFieldValue('content')).", ".$this->_conn->quote($doc->getFieldValue('mimetype')).", ".$this->_conn->quote($doc->getFieldValue('origfilename')).", ".(int)$doc->getFieldValue('created').", ".$this->_conn->quote($doc->getFieldValue('users')).", ".$this->_conn->quote($doc->getFieldValue('status')).", ".$this->_conn->quote($doc->getFieldValue('path'))/*time()*/.")"; $res = $this->_conn->exec($sql); if($res === false) { return false; @@ -135,25 +135,40 @@ class SeedDMS_SQLiteFTS_Indexer { /** * Find documents in index * - * @param object $doc indexed document of class - * SeedDMS_SQLiteFTS_IndexedDocument - * @return boolean false in case of an error, otherwise true + * @param string $query + * @param array $limit array with elements 'limit' and 'offset' + * @return boolean false in case of an error, otherwise array with elements + * 'count', 'hits', 'facets' */ - public function find($query) { /* {{{ */ + public function find($query, $limit=array()) { /* {{{ */ if(!$this->_conn) return false; - $sql = "SELECT docid FROM docs WHERE docs MATCH ".$this->_conn->quote($query); + $sql = "SELECT count(*) AS `c` FROM `docs`"; + if($query) + $sql .= " WHERE docs MATCH ".$this->_conn->quote($query); + $res = $this->_conn->query($sql); + $row = $res->fetch(); + + $sql = "SELECT docid, documentid FROM docs"; + if($query) + $sql .= " WHERE docs MATCH ".$this->_conn->quote($query); + $res = $this->_conn->query($sql); + if(!empty($limit['limit'])) + $sql .= " LIMIT ".(int) $limit['limit']; + if(!empty($limit['offset'])) + $sql .= " OFFSET ".(int) $limit['offset']; $res = $this->_conn->query($sql); $hits = array(); if($res) { foreach($res as $rec) { $hit = new SeedDMS_SQLiteFTS_QueryHit($this); $hit->id = $rec['docid']; + $hit->documentid = $rec['documentid']; $hits[] = $hit; } } - return $hits; + return array('count'=>$row['c'], 'hits'=>$hits); } /* }}} */ /** @@ -182,19 +197,21 @@ class SeedDMS_SQLiteFTS_Indexer { /** * Get a single document from index * - * @param integer $id id of document + * @param integer $id id of index record * @return boolean false in case of an error, otherwise true */ public function getDocument($id) { /* {{{ */ if(!$this->_conn) return false; - $sql = "SELECT title, comment, owner, keywords, category, mimetype, origfilename, created, users FROM docs WHERE docid=".(int) $id; + $sql = "SELECT docid, documentid, title, comment, owner, keywords, category, mimetype, origfilename, created, users, status, path FROM docs WHERE docid=".$id; $res = $this->_conn->query($sql); $doc = false; if($res) { $rec = $res->fetch(PDO::FETCH_ASSOC); $doc = new SeedDMS_SQLiteFTS_Document(); + $doc->addField('docid', $rec['docid']); + $doc->addField('document_id', $rec['documentid']); $doc->addField('title', $rec['title']); $doc->addField('comment', $rec['comment']); $doc->addField('keywords', $rec['keywords']); @@ -204,6 +221,36 @@ class SeedDMS_SQLiteFTS_Indexer { $doc->addField('owner', $rec['owner']); $doc->addField('created', $rec['created']); $doc->addField('users', $rec['users']); + $doc->addField('status', $rec['status']); + $doc->addField('path', $rec['path']); + } + return $doc; + } /* }}} */ + + /** + * Get a single folder from index + * + * @param integer $id id of folder + * @return boolean false in case of an error, otherwise true + */ + public function getFolder($id) { /* {{{ */ + if(!$this->_conn) + return false; + + $sql = "SELECT docid, documentid, title, comment, owner, keywords, category, mimetype, origfilename, created, users, status, path FROM docs WHERE documentid='F".$id."'"; + $res = $this->_conn->query($sql); + $doc = false; + if($res) { + $rec = $res->fetch(PDO::FETCH_ASSOC); + $doc = new SeedDMS_SQLiteFTS_Document(); + $doc->addField('docid', $rec['docid']); + $doc->addField('document_id', $rec['documentid']); + $doc->addField('title', $rec['title']); + $doc->addField('comment', $rec['comment']); + $doc->addField('owner', $rec['owner']); + $doc->addField('created', $rec['created']); + $doc->addField('users', $rec['users']); + $doc->addField('path', $rec['path']); } return $doc; } /* }}} */ diff --git a/SeedDMS_SQLiteFTS/SQLiteFTS/QueryHit.php b/SeedDMS_SQLiteFTS/SQLiteFTS/QueryHit.php index d87486118..facbd9519 100644 --- a/SeedDMS_SQLiteFTS/SQLiteFTS/QueryHit.php +++ b/SeedDMS_SQLiteFTS/SQLiteFTS/QueryHit.php @@ -37,11 +37,17 @@ class SeedDMS_SQLiteFTS_QueryHit { protected $_document; /** - * @var integer $id id of document + * @var integer $id id of index document * @access public */ public $id; + /** + * @var integer $id id of real document + * @access public + */ + public $documentid; + /** * */ diff --git a/SeedDMS_SQLiteFTS/SQLiteFTS/Search.php b/SeedDMS_SQLiteFTS/SQLiteFTS/Search.php index 511783539..78b5ed86c 100644 --- a/SeedDMS_SQLiteFTS/SQLiteFTS/Search.php +++ b/SeedDMS_SQLiteFTS/SQLiteFTS/Search.php @@ -43,14 +43,25 @@ class SeedDMS_SQliteFTS_Search { } /* }}} */ /** - * Get hit from index + * Get document from index * - * @param object $index lucene index - * @return object instance of SeedDMS_Lucene_Document of false + * @param int $id real document id + * @return object instance of SeedDMS_SQliteFTS_QueryHit or false */ function getDocument($id) { /* {{{ */ - $hits = $this->index->findById((int) $id); - return $hits ? $hits[0] : false; + $hits = $this->index->find('D'.$id); + return $hits['hits'] ? $hits['hits'][0] : false; + } /* }}} */ + + /** + * Get folder from index + * + * @param int $id real folder id + * @return object instance of SeedDMS_SQliteFTS_QueryHit or false + */ + function getFolder($id) { /* {{{ */ + $hits = $this->index->find('F'.$id); + return $hits['hits'] ? $hits['hits'][0] : false; } /* }}} */ /** @@ -59,43 +70,68 @@ class SeedDMS_SQliteFTS_Search { * @param object $index SQlite FTS index * @return object instance of SeedDMS_Lucene_Search */ - function search($term, $owner, $status='', $categories=array(), $fields=array(), $users=array()) { /* {{{ */ + function search($term, $fields=array(), $limit=array()) { /* {{{ */ $querystr = ''; - if($fields) { - } else { - if($term) - $querystr .= trim($term); + $term = trim($term); + if($term) { + $querystr = substr($term, -1) != '*' ? $term.'*' : $term; } - if($owner) { + if(!empty($fields['owner'])) { + if(is_string($fields['owner'])) { + if($querystr) + $querystr .= ' '; + $querystr .= 'owner:'.$fields['owner']; + } elseif(is_array($fields['owner'])) { + if($querystr) + $querystr .= ' '; + $querystr .= '(owner:'; + $querystr .= implode(' OR owner:', $fields['owner']); + $querystr .= ')'; + } + } + if(!empty($fields['category'])) { if($querystr) $querystr .= ' '; - //$querystr .= ' AND '; - $querystr .= 'owner:'.$owner; - //$querystr .= $owner; + $querystr .= '(category:'; + $querystr .= implode(' OR category:', $fields['category']); + $querystr .= ')'; } - if($categories) { + if(!empty($fields['status'])) { if($querystr) $querystr .= ' '; - //$querystr .= ' AND '; - $querystr .= 'category:'; - $querystr .= implode(' OR category:', $categories); - $querystr .= ''; + $status = array_map(function($v){return $v+10;}, $fields['status']); + $querystr .= '(status:'; + $querystr .= implode(' OR status:', $status); + $querystr .= ')'; } - if($users) { + if(!empty($fields['user'])) { if($querystr) $querystr .= ' '; - //$querystr .= ' AND '; - $querystr .= 'users:'; - $querystr .= implode(' OR users:', $users); - $querystr .= ''; + $querystr .= '(users:'; + $querystr .= implode(' OR users:', $fields['user']); + $querystr .= ')'; + } + if(!empty($fields['rootFolder']) && $fields['rootFolder']->getFolderList()) { + if($querystr) + $querystr .= ' '; + $querystr .= '(path:'; + $querystr .= str_replace(':', 'x', $fields['rootFolder']->getFolderList().$fields['rootFolder']->getID().':'); + $querystr .= ')'; + } + if(!empty($fields['startFolder']) && $fields['startFolder']->getFolderList()) { + if($querystr) + $querystr .= ' '; + $querystr .= '(path:'; + $querystr .= str_replace(':', 'x', $fields['startFolder']->getFolderList().$fields['startFolder']->getID().':'); + $querystr .= ')'; } try { - $hits = $this->index->find($querystr); + $result = $this->index->find($querystr, $limit); $recs = array(); - foreach($hits as $hit) { - $recs[] = array('id'=>$hit->id, 'document_id'=>$hit->id); + foreach($result["hits"] as $hit) { + $recs[] = array('id'=>$hit->id, 'document_id'=>$hit->documentid); } - return $recs; + return array('count'=>$result['count'], 'hits'=>$recs, 'facets'=>array()); } catch (Exception $e) { return false; } diff --git a/SeedDMS_SQLiteFTS/SQLiteFTS/Term.php b/SeedDMS_SQLiteFTS/SQLiteFTS/Term.php index 01b35429b..a996ee962 100644 --- a/SeedDMS_SQLiteFTS/SQLiteFTS/Term.php +++ b/SeedDMS_SQLiteFTS/SQLiteFTS/Term.php @@ -48,16 +48,19 @@ class SeedDMS_SQLiteFTS_Term { public function __construct($term, $col, $occurrence) { /* {{{ */ $this->text = $term; $fields = array( - 0 => 'title', - 1 => 'comment', - 2 => 'keywords', - 3 => 'category', - 4 => 'mimetype', - 5 => 'origfilename', - 6 => 'owner', - 7 => 'content', - 8 => 'created', - 9 => 'user' + 0 => 'documentid', + 1 => 'title', + 2 => 'comment', + 3 => 'keywords', + 4 => 'category', + 5 => 'mimetype', + 6 => 'origfilename', + 7 => 'owner', + 8 => 'content', + 9 => 'created', + 10 => 'user', + 11 => 'status', + 12 => 'path' ); $this->field = $fields[$col]; $this->_occurrence = $occurrence; diff --git a/SeedDMS_SQLiteFTS/package.xml b/SeedDMS_SQLiteFTS/package.xml index 61845de9a..424c76ecc 100644 --- a/SeedDMS_SQLiteFTS/package.xml +++ b/SeedDMS_SQLiteFTS/package.xml @@ -11,11 +11,11 @@ uwe@steinmann.cx yes - 2020-09-02 + 2020-12-12 - 1.0.13 - 1.0.13 + 1.0.15 + 1.0.15 stable @@ -23,7 +23,7 @@ GPL License -add user to list of terms +- add indexing folders @@ -275,5 +275,42 @@ timestamp) Index users with at least read access on a document + + 2020-09-02 + + + 1.0.13 + 1.0.13 + + + stable + stable + + GPL License + +add user to list of terms + + + + 2020-09-11 + + + 1.0.14 + 1.0.14 + + + stable + stable + + GPL License + +- add searching for document status +- search even if query is empty (will find all documents) +- parameters for SeedDMS_SQLiteFTS_Search::search() has changed +- SeedDMS_Lucene_Search::search() returns array of hits, count and facets +- pass config array instead of index directory to SeedDMS_Lucene_Indexer::create() + and SeedDMS_Lucene_Indexer::open() + + diff --git a/controllers/class.AddDocument.php b/controllers/class.AddDocument.php index 69259ca9e..d3ecb2679 100644 --- a/controllers/class.AddDocument.php +++ b/controllers/class.AddDocument.php @@ -26,8 +26,7 @@ class SeedDMS_Controller_AddDocument extends SeedDMS_Controller_Common { $dms = $this->params['dms']; $user = $this->params['user']; $settings = $this->params['settings']; - $index = $this->params['index']; - $indexconf = $this->params['indexconf']; + $fulltextservice = $this->params['fulltextservice']; $folder = $this->params['folder']; /* Call preAddDocument early, because it might need to modify some @@ -60,6 +59,11 @@ class SeedDMS_Controller_AddDocument extends SeedDMS_Controller_Common { if($attrdef = $dms->getAttributeDefinition($attrdefid)) { if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { if($attribute) { + switch($attrdef->getType()) { + case SeedDMS_Core_AttributeDefinition::type_date: + $attribute = date('Y-m-d', makeTsFromDate($attribute)); + break; + } if(!$attrdef->validate($attribute)) { $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); return false; @@ -79,6 +83,11 @@ class SeedDMS_Controller_AddDocument extends SeedDMS_Controller_Common { if($attrdef = $dms->getAttributeDefinition($attrdefid)) { if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { if($attribute) { + switch($attrdef->getType()) { + case SeedDMS_Core_AttributeDefinition::type_date: + $attribute = date('Y-m-d', makeTsFromDate($attribute)); + break; + } if(!$attrdef->validate($attribute)) { $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); return false; @@ -134,21 +143,24 @@ class SeedDMS_Controller_AddDocument extends SeedDMS_Controller_Common { if($document->getGroupAccessMode($notgroup) >= M_READ) $res = $document->addNotify($notgroup->getID(), false); } - } elseif($result === false) { + } elseif($document === false) { if(empty($this->errormsg)) $this->errormsg = 'hook_addDocument_failed'; return false; } - if($index && $document) { - $idoc = new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, !($filesize < $settings->_maxSizeForFullText)); + if($fulltextservice && ($index = $fulltextservice->Indexer()) && $document) { + $idoc = $fulltextservice->IndexedDocument($document); if(false !== $this->callHook('preIndexDocument', $document, $idoc)) { $index->addDocument($idoc); $index->commit(); } } - if(!$this->callHook('postAddDocument', $document)) { + if(false === $this->callHook('postAddDocument', $document)) { + if(empty($this->errormsg)) + $this->errormsg = 'hook_postAddDocument_failed'; + return false; } return $document; diff --git a/controllers/class.AddSubFolder.php b/controllers/class.AddSubFolder.php index 539dcec12..9b1835a12 100644 --- a/controllers/class.AddSubFolder.php +++ b/controllers/class.AddSubFolder.php @@ -25,6 +25,7 @@ class SeedDMS_Controller_AddSubFolder extends SeedDMS_Controller_Common { public function run() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; + $fulltextservice = $this->params['fulltextservice']; $folder = $this->params['folder']; /* Call preAddSubFolder early, because it might need to modify some @@ -33,7 +34,7 @@ class SeedDMS_Controller_AddSubFolder extends SeedDMS_Controller_Common { if(false === $this->callHook('preAddSubFolder')) { if(empty($this->errormsg)) $this->errormsg = 'hook_preAddSubFolder_failed'; - return null; + return false; } $name = $this->getParam('name'); @@ -61,8 +62,8 @@ class SeedDMS_Controller_AddSubFolder extends SeedDMS_Controller_Common { $notificationgroups = $this->getParam('notificationgroups'); $notificationusers = $this->getParam('notificationusers'); - $result = $this->callHook('addSubFolder'); - if($result === null) { + $subFolder = $this->callHook('addSubFolder'); + if($subFolder === null) { $subFolder = $folder->addSubFolder($name, $comment, $user, $sequence, $attributes); if (!is_object($subFolder)) { $this->errormsg = "error_occured"; @@ -77,13 +78,27 @@ class SeedDMS_Controller_AddSubFolder extends SeedDMS_Controller_Common { if($subFolder->getGroupAccessMode($notgroup) >= M_READ) $res = $subFolder->addNotify($notgroup->getID(), false); } - - if(!$this->callHook('postAddSubFolder', $subFolder)) { - } - $result = $subFolder; + } elseif($subFolder === false) { + if(empty($this->errormsg)) + $this->errormsg = 'hook_addFolder_failed'; + return false; } - return $result; + if($fulltextservice && ($index = $fulltextservice->Indexer()) && $subFolder) { + $idoc = $fulltextservice->IndexedDocument($subFolder); + if(false !== $this->callHook('preIndexFolder', $subFolder, $idoc)) { + $index->addDocument($idoc); + $index->commit(); + } + } + + if(false === $this->callHook('postAddSubFolder', $subFolder)) { + if(empty($this->errormsg)) + $this->errormsg = 'hook_postAddSubFoder_failed'; + return false; + } + + return $subFolder; } /* }}} */ } diff --git a/controllers/class.Download.php b/controllers/class.Download.php index 9f8c0d2f9..839ddb66c 100644 --- a/controllers/class.Download.php +++ b/controllers/class.Download.php @@ -54,7 +54,6 @@ class SeedDMS_Controller_Download extends SeedDMS_Controller_Common { if(null === $this->callHook('version')) { if(file_exists($dms->contentDir . $content->getPath())) { header("Content-Transfer-Encoding: binary"); - header("Content-Length: " . filesize($dms->contentDir . $content->getPath() )); $efilename = rawurlencode($content->getOriginalFileName()); header("Content-Disposition: attachment; filename=\"" . $efilename . "\"; filename*=UTF-8''".$efilename); header("Content-Type: " . $content->getMimeType()); diff --git a/controllers/class.EditDocument.php b/controllers/class.EditDocument.php index d84ceae8d..ef91be1c0 100644 --- a/controllers/class.EditDocument.php +++ b/controllers/class.EditDocument.php @@ -26,6 +26,7 @@ class SeedDMS_Controller_EditDocument extends SeedDMS_Controller_Common { $dms = $this->params['dms']; $user = $this->params['user']; $settings = $this->params['settings']; + $fulltextservice = $this->params['fulltextservice']; $document = $this->params['document']; $name = $this->params['name']; @@ -119,7 +120,12 @@ class SeedDMS_Controller_EditDocument extends SeedDMS_Controller_Common { if($attrdef = $dms->getAttributeDefinition($attrdefid)) { if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { if($attribute) { - if(!$attrdef->validate($attribute)) { + switch($attrdef->getType()) { + case SeedDMS_Core_AttributeDefinition::type_date: + $attribute = date('Y-m-d', makeTsFromDate($attribute)); + break; + } + if(!$attrdef->validate($attribute, $document, true)) { $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); return false; } @@ -156,11 +162,22 @@ class SeedDMS_Controller_EditDocument extends SeedDMS_Controller_Common { } } - if(!$this->callHook('postEditDocument')) { + if($fulltextservice && ($index = $fulltextservice->Indexer()) && $document) { + $idoc = $fulltextservice->IndexedDocument($document); + if(false !== $this->callHook('preIndexDocument', $document, $idoc)) { + $index->addDocument($idoc); + $index->commit(); + } } + + } elseif($result === false) { + if(empty($this->errormsg)) + $this->errormsg = 'hook_editDocument_failed'; + return false; + } - } else - return $result; + if(!$this->callHook('postEditDocument')) { + } return true; } diff --git a/controllers/class.EditFolder.php b/controllers/class.EditFolder.php index 02c6d1163..0110f6e06 100644 --- a/controllers/class.EditFolder.php +++ b/controllers/class.EditFolder.php @@ -26,6 +26,7 @@ class SeedDMS_Controller_EditFolder extends SeedDMS_Controller_Common { $dms = $this->params['dms']; $user = $this->params['user']; $settings = $this->params['settings']; + $fulltextservice = $this->params['fulltextservice']; $folder = $this->params['folder']; if(false === $this->callHook('preEditFolder')) { @@ -53,7 +54,7 @@ class SeedDMS_Controller_EditFolder extends SeedDMS_Controller_Common { $attrdef = $dms->getAttributeDefinition($attrdefid); if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { if($attribute) { - if(!$attrdef->validate($attribute)) { + if(!$attrdef->validate($attribute, $folder, true)) { $this->errormsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute); return false; } @@ -89,6 +90,14 @@ class SeedDMS_Controller_EditFolder extends SeedDMS_Controller_Common { } } + if($fulltextservice && ($index = $fulltextservice->Indexer()) && $folder) { + $idoc = $fulltextservice->IndexedDocument($folder); + if(false !== $this->callHook('preIndexFolder', $folder, $idoc)) { + $index->addDocument($idoc); + $index->commit(); + } + } + } elseif($result === false) { if(empty($this->errormsg)) $this->errormsg = 'hook_editFolder_failed'; diff --git a/controllers/class.ExtensionMgr.php b/controllers/class.ExtensionMgr.php index 306e521f8..755baf186 100644 --- a/controllers/class.ExtensionMgr.php +++ b/controllers/class.ExtensionMgr.php @@ -41,7 +41,6 @@ class SeedDMS_Controller_ExtensionMgr extends SeedDMS_Controller_Common { if(null === $this->callHook('download')) { if(file_exists($filename)) { header("Content-Transfer-Encoding: binary"); - header("Content-Length: " . filesize($filename)); header("Content-Disposition: attachment; filename=\"" . utf8_basename($filename) . "\"; filename*=UTF-8''".utf8_basename($filename)); header("Content-Type: application/zip"); header("Cache-Control: must-revalidate"); diff --git a/controllers/class.Login.php b/controllers/class.Login.php index ef96153ee..380253277 100644 --- a/controllers/class.Login.php +++ b/controllers/class.Login.php @@ -174,7 +174,10 @@ class SeedDMS_Controller_Login extends SeedDMS_Controller_Common { } else { $sesstheme = $user->getTheme(); - if (strlen($sesstheme)==0) { + /* Override the theme if the user doesn't have one or the default theme + * shall override it. + */ + if (strlen($sesstheme)==0 || !empty($settings->_overrideTheme)) { $sesstheme = $settings->_theme; // $user->setTheme($sesstheme); } diff --git a/controllers/class.Preview.php b/controllers/class.Preview.php index e0cc065f2..688ed7a0a 100644 --- a/controllers/class.Preview.php +++ b/controllers/class.Preview.php @@ -72,6 +72,38 @@ class SeedDMS_Controller_Preview extends SeedDMS_Controller_Common { $previewer->getPreview($content); } break; + case "file": + $object = $this->params['object']; + $document = $this->params['document']; + $width = $this->params['width']; + if (!is_object($object)) { + $this->errormsg = 'invalid_version'; + return false; + } + + if(null === $this->callHook('file')) { + if($width) + $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $width, $settings->_cmdTimeout); + else + $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir); + $previewer->setConverters($settings->_converters['preview']); + $previewer->setXsendfile($settings->_enableXsendfile); + + if(!$previewer->hasPreview($object)) { + add_log_line(""); + if(!$previewer->createPreview($object)) { + add_log_line("", PEAR_LOG_ERR); + } + } + if(!$previewer->hasPreview($object)) { + header('Content-Type: image/svg+xml'); + readfile('../views/'.$theme.'/images/empty.svg'); + exit; + } + header('Content-Type: image/png'); + $previewer->getPreview($object); + } + break; } return true; } diff --git a/controllers/class.RemoveDocument.php b/controllers/class.RemoveDocument.php index d4b1950f7..1b78314d9 100644 --- a/controllers/class.RemoveDocument.php +++ b/controllers/class.RemoveDocument.php @@ -27,8 +27,7 @@ class SeedDMS_Controller_RemoveDocument extends SeedDMS_Controller_Common { $user = $this->params['user']; $settings = $this->params['settings']; $document = $this->params['document']; - $index = $this->params['index']; - $indexconf = $this->params['indexconf']; + $fulltextservice = $this->params['fulltextservice']; $folder = $document->getFolder(); @@ -58,8 +57,8 @@ class SeedDMS_Controller_RemoveDocument extends SeedDMS_Controller_Common { } /* Remove the document from the fulltext index */ - if($index) { - $lucenesearch = new $indexconf['Search']($index); + if($fulltextservice && ($index = $fulltextservice->Indexer())) { + $lucenesearch = $fulltextservice->Search(); if($hit = $lucenesearch->getDocument($documentid)) { $index->delete($hit->id); $index->commit(); diff --git a/controllers/class.RemoveFolder.php b/controllers/class.RemoveFolder.php index b12c10eae..4dfd686cf 100644 --- a/controllers/class.RemoveFolder.php +++ b/controllers/class.RemoveFolder.php @@ -27,8 +27,7 @@ class SeedDMS_Controller_RemoveFolder extends SeedDMS_Controller_Common { $user = $this->params['user']; $settings = $this->params['settings']; $folder = $this->params['folder']; - $index = $this->params['index']; - $indexconf = $this->params['indexconf']; + $fulltextservice = $this->params['fulltextservice']; /* Get the document id and name before removing the document */ $foldername = $folder->getName(); @@ -46,17 +45,24 @@ class SeedDMS_Controller_RemoveFolder extends SeedDMS_Controller_Common { * The callback must return null other the removal will be canceled. */ function removeFromIndex($arr, $document) { - $index = $arr[0]; - $indexconf = $arr[1]; - $lucenesearch = new $indexconf['Search']($index); - if($hit = $lucenesearch->getDocument($document->getID())) { + $fulltextservice = $arr[0]; + $lucenesearch = $fulltextservice->Search(); + $hit = null; + if($document->isType('document')) + $hit = $lucenesearch->getDocument($document->getID()); + elseif($document->isType('folder')) + $hit = $lucenesearch->getFolder($document->getID()); + if($hit) { + $index = $fulltextservice->Indexer(); $index->delete($hit->id); $index->commit(); } return null; } - if($index) - $dms->setCallback('onPreRemoveDocument', 'removeFromIndex', array($index, $indexconf)); + if($fulltextservice && ($index = $fulltextservice->Indexer())) { + $dms->addCallback('onPreRemoveDocument', 'removeFromIndex', array($fulltextservice)); + $dms->addCallback('onPreRemoveFolder', 'removeFromIndex', array($fulltextservice)); + } function removePreviews($arr, $document) { $previewer = $arr[0]; diff --git a/controllers/class.UpdateDocument.php b/controllers/class.UpdateDocument.php index 6c7b97838..c1e2b7e57 100644 --- a/controllers/class.UpdateDocument.php +++ b/controllers/class.UpdateDocument.php @@ -40,8 +40,7 @@ class SeedDMS_Controller_UpdateDocument extends SeedDMS_Controller_Common { $user = $this->params['user']; $document = $this->params['document']; $settings = $this->params['settings']; - $index = $this->params['index']; - $indexconf = $this->params['indexconf']; + $fulltextservice = $this->params['fulltextservice']; $folder = $this->params['folder']; $userfiletmp = $this->getParam('userfiletmp'); $userfilename = $this->getParam('userfilename'); @@ -77,12 +76,12 @@ class SeedDMS_Controller_UpdateDocument extends SeedDMS_Controller_Common { return false; } - if($index && $content) { - $lucenesearch = new $indexconf['Search']($index); + if($fulltextservice && ($index = $fulltextservice->Indexer()) && $content) { + $lucenesearch = $fulltextservice->Search(); if($hit = $lucenesearch->getDocument((int) $document->getId())) { $index->delete($hit->id); } - $idoc = new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, !($filesize < $settings->_maxSizeForFullText)); + $idoc = $fulltextservice->IndexedDocument($document); if(false !== $this->callHook('preIndexDocument', $document, $idoc)) { $index->addDocument($idoc); $index->commit(); diff --git a/controllers/class.ViewOnline.php b/controllers/class.ViewOnline.php index b4c01be66..7d071db17 100644 --- a/controllers/class.ViewOnline.php +++ b/controllers/class.ViewOnline.php @@ -56,7 +56,6 @@ class SeedDMS_Controller_ViewOnline extends SeedDMS_Controller_Common { } else { header("Content-Disposition: filename=\"" . $efilename . "\"; filename*=UTF-8''".$efilename); } - header("Content-Length: " . filesize($dms->contentDir . $content->getPath())); header("Cache-Control: must-revalidate"); sendFile($dms->contentDir.$content->getPath()); diff --git a/doc/README.Install.md b/doc/README.Install.md index ff16da785..81ebac299 100644 --- a/doc/README.Install.md +++ b/doc/README.Install.md @@ -128,7 +128,7 @@ Just open the settings in the admin tools and empty the currently set encryption key on the tab 'System'. Save the settings and check the key again. It should be new one. Save the settings again -UPDATING FROM A PREVIOUS VERSION OR SEEDDMS +UPGRATING FROM A PREVIOUS VERSION OR SEEDDMS ============================================= As SeedDMS is a smooth continuation of LetoDMS there is no difference @@ -173,7 +173,7 @@ Fresh installation and take over of data contain database updates. - test your new installation. -Updating your current installation +Upgrading your current installation ----------------------------------- - make a backup of your data folder and the configuration file settings.xml diff --git a/doc/README.xsendfile b/doc/README.xsendfile index 96ec5653b..bdf40aef6 100644 --- a/doc/README.xsendfile +++ b/doc/README.xsendfile @@ -24,3 +24,13 @@ XSendFilePath /var/www/seeddms51x/data/ If the XSendFilePath is not set propperly, you will notice an error message in your apache log file, probably telling you that the download file could not be found. + +A positive side effect of xsendfile is support for content ranges which are +currently *not* supported by seeddms' Download and ViewOnline scripts. This is +especially usefull when previewing videos. Without content ranges it is not +possible to jump to certain time in the video. + +In order to check if the xsendfile module is loaded, php uses apache_get_modules() +which is only available if php is loaded as an apache module. Running php in fpm +mode will prevent php from checking for xsendfile and consequently xsendfile support +will not be available. diff --git a/inc/inc.Authentication.php b/inc/inc.Authentication.php index 89d3ab7c1..63b5b9d01 100644 --- a/inc/inc.Authentication.php +++ b/inc/inc.Authentication.php @@ -37,9 +37,9 @@ if (!isset($_COOKIE["mydms_session"])) { exit; } $theme = $user->getTheme(); - if (strlen($theme)==0) { + if (strlen($theme)==0 || !empty($settings->_overrideTheme)) { $theme = $settings->_theme; - $user->setTheme($theme); +// $user->setTheme($theme); } $lang = $user->getLanguage(); if (strlen($lang)==0) { @@ -90,6 +90,10 @@ $theme = $resArr["theme"]; $lang = $resArr["language"]; $dms->setUser($user); +if($settings->_useHomeAsRootFolder && !$user->isAdmin() && $user->getHomeFolder()) { + $dms->checkWithinRootDir = true; + $dms->setRootFolderID($user->getHomeFolder()); +} $notifier = new SeedDMS_NotificationService(); @@ -102,7 +106,7 @@ if(isset($GLOBALS['SEEDDMS_HOOKS']['notification'])) { } if($settings->_enableEmail) { - $notifier->addService(new SeedDMS_EmailNotify($dms, $settings->_smtpSendFrom, $settings->_smtpServer, $settings->_smtpPort, $settings->_smtpUser, $settings->_smtpPassword)); + $notifier->addService(new SeedDMS_EmailNotify($dms, $settings->_smtpSendFrom, $settings->_smtpServer, $settings->_smtpPort, $settings->_smtpUser, $settings->_smtpPassword), 'email'); } if(isset($GLOBALS['SEEDDMS_HOOKS']['notification'])) { diff --git a/inc/inc.ClassAccessOperation.php b/inc/inc.ClassAccessOperation.php index 352c7cead..0b838d546 100644 --- a/inc/inc.ClassAccessOperation.php +++ b/inc/inc.ClassAccessOperation.php @@ -226,7 +226,7 @@ class SeedDMS_AccessOperation { $latestContent = $this->obj->getLatestContent(); $status = $latestContent->getStatus(); $workflow = $latestContent->getWorkflow(); - if ((($this->settings->_enableVersionModification && ($this->obj->getAccessMode($this->user) >= M_READWRITE)) || $this->user->isAdmin()) && ($status["status"]==S_DRAFT_REV || ($workflow && $workflow->getInitState()->getID() == $latestContent->getWorkflowState()->getID()))) { + if ((($this->settings->_enableVersionModification && ($this->obj->getAccessMode($this->user) >= M_READWRITE)) || $this->user->isAdmin()) && (in_array($status["status"], array(S_DRAFT_REV, S_DRAFT_APP)) || ($workflow && $workflow->getInitState()->getID() == $latestContent->getWorkflowState()->getID()))) { return true; } } diff --git a/inc/inc.ClassControllerCommon.php b/inc/inc.ClassControllerCommon.php index dab542824..c0454150d 100644 --- a/inc/inc.ClassControllerCommon.php +++ b/inc/inc.ClassControllerCommon.php @@ -193,8 +193,12 @@ class SeedDMS_Controller_Common { $tmps = array(); $tmp = explode('_', get_class($this)); $tmps[] = $tmp[2]; - $tmp = explode('_', get_parent_class($this)); - $tmps[] = $tmp[2]; + foreach(class_parents($this) as $pc) { + $tmp = explode('_', $pc); + $tmps[] = $tmp[2]; + } +// $tmp = explode('_', get_parent_class($this)); +// $tmps[] = $tmp[2]; /* Run array_unique() in case the parent class has the same suffix */ $tmps = array_unique($tmps); foreach($tmps as $tmp) diff --git a/inc/inc.ClassFulltextService.php b/inc/inc.ClassFulltextService.php new file mode 100644 index 000000000..7a8165cbe --- /dev/null +++ b/inc/inc.ClassFulltextService.php @@ -0,0 +1,110 @@ + + * @copyright Copyright (C) 2016 Uwe Steinmann + * @version Release: @package_version@ + */ + +/** + * Implementation of fulltext service + * + * @category DMS + * @package SeedDMS + * @author Uwe Steinmann + * @copyright Copyright (C) 2016 Uwe Steinmann + * @version Release: @package_version@ + */ +class SeedDMS_FulltextService { + /** + * List of services for searching fulltext + */ + protected $services; + + /** + * List of converters + */ + protected $converters; + + /** + * Max file size for imediate indexing + */ + protected $maxsize; + + private $index; + + private $search; + + public function __construct() { + $this->services = array(); + $this->converters = array(); + $this->maxsize = 0; + $this->index = null; + $this->search = null; + $this->cmdtimeout = 5; + } + + public function addService($name, $service) { + $this->services[] = $service; + } + + public function setConverters($converters) { + $this->converters = $converters; + } + + public function setMaxSize($maxsize) { + $this->maxsize = $maxsize; + } + + public function setCmdTimeout($timeout) { + $this->cmdtimeout = $timeout; + } + + public function IndexedDocument($document, $forceupdate=false) { + if($document->isType('document')) + $nocontent = ($document->getLatestContent()->getFileSize() > $this->maxsize) && !$forceupdate; + else + $nocontent = true; + return new $this->services[0]['IndexedDocument']($document->getDMS(), $document, $this->converters, $nocontent, $this->cmdtimeout); + } + + /** + * Returns an instance of the indexer + * + * The indexer provides access to fulltext index. It allows to add and + * get documents. + * + * @return object instance of class specified in 'Indexer' + */ + public function Indexer($recreate=false) { + if($this->index) + return $this->index; + + if($this->services[0]) { + if($recreate) + $this->index = $this->services[0]['Indexer']::create($this->services[0]['Conf']); + else + $this->index = $this->services[0]['Indexer']::open($this->services[0]['Conf']); + return $this->index; + } else + return null; + } + + public function Search() { + if($this->search) + return $this->search; + if($this->services[0]) { + $this->search = new $this->services[0]['Search']($this->index); + return $this->search; + } else { + return null; + } + } +} + + diff --git a/inc/inc.ClassNotificationService.php b/inc/inc.ClassNotificationService.php index c44c4018d..e7bea6347 100644 --- a/inc/inc.ClassNotificationService.php +++ b/inc/inc.ClassNotificationService.php @@ -26,30 +26,74 @@ class SeedDMS_NotificationService { */ protected $services; + /* + * List of servives with errors + */ + protected $errors; + public function __construct() { $this->services = array(); + $this->errors = array(); } - public function addService($service) { - $this->services[] = $service; + public function addService($service, $name='') { + if(!$name) + $name = md5(uniqid()); + $this->services[$name] = $service; + $this->errors[$name] = true; + } + + public function getServices() { + return $this->services; + } + + public function getErrors() { + return $this->errors; } public function toIndividual($sender, $recipient, $subject, $message, $params=array()) { - foreach($this->services as $service) { - return $service->toIndividual($sender, $recipient, $subject, $message, $params); + $error = true; + foreach($this->services as $name => $service) { + if(!is_callable([$service, 'filter']) || $service->filter($sender, $recipient, $subject, $message, $params)) { + if(!$service->toIndividual($sender, $recipient, $subject, $message, $params)) { + $error = false; + $this->errors[$name] = false; + } else { + $this->errors[$name] = true; + } + } } + return $error; } public function toGroup($sender, $groupRecipient, $subject, $message, $params=array()) { - foreach($this->services as $service) { - return $service->toGroup($sender, $groupRecipient, $subject, $message, $params); + $error = true; + foreach($this->services as $name => $service) { + if(!is_callable([$service, 'filter']) || $service->filter($sender, $groupRecipient, $subject, $message, $params)) { + if(!$service->toGroup($sender, $groupRecipient, $subject, $message, $params)) { + $error = false; + $this->errors[$name] = false; + } else { + $this->errors[$name] = true; + } + } } + return $error; } public function toList($sender, $recipients, $subject, $message, $params=array()) { - foreach($this->services as $service) { - return $service->toList($sender, $recipients, $subject, $message, $params); + $error = true; + foreach($this->services as $name => $service) { + if(!is_callable([$service, 'filter']) || $service->filter($sender, $recipients, $subject, $message, $params)) { + if(!$service->toList($sender, $recipients, $subject, $message, $params)) { + $error = false; + $this->errors[$name] = false; + } else { + $this->errors[$name] = true; + } + } } + return $error; } } diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 9b5180cf2..230ed9465 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -36,6 +36,8 @@ class Settings { /* {{{ */ var $_guestID = 2; // ID of root-folder var $_rootFolderID = 1; + // use home folder as root-folder + var $_useHomeAsRootFolder = false; // If you want anybody to login as guest, set the following line to true var $_enableGuestLogin = false; // If you even want guest to be logged in automatically, set the following to true @@ -132,6 +134,10 @@ class Settings { /* {{{ */ var $_availablelanguages = array(); // default language (name of a subfolder in folder "languages") var $_language = "en_GB"; + // default date format + var $_dateformat = "Y-m-d"; + // default date/time format + var $_datetimformat = "Y-m-d H:i:s"; // users are notified about document-changes that took place within the last $_updateNotifyTime seconds var $_updateNotifyTime = 86400; // files with one of the following endings can be viewed online @@ -142,6 +148,8 @@ class Settings { /* {{{ */ var $_enableConverting = false; // default style var $_theme = "bootstrap"; + // override user settings of theme + var $_overrideTheme = false; // experimental one page mode for ViewFolder page var $_onePageMode = false; // Workaround for page titles that go over more than 2 lines. @@ -451,9 +459,12 @@ class Settings { /* {{{ */ $this->_footNote = strval($tab["footNote"]); $this->_printDisclaimer = Settings::boolVal($tab["printDisclaimer"]); $this->_language = strval($tab["language"]); + $this->_dateformat = strval($tab["dateformat"]); + $this->_datetimeformat = strval($tab["datetimeformat"]); if(trim(strval($tab["availablelanguages"]))) $this->_availablelanguages = explode(',',strval($tab["availablelanguages"])); $this->_theme = strval($tab["theme"]); + $this->_overrideTheme = Settings::boolVal($tab["overrideTheme"]); $this->_onePageMode = Settings::boolVal($tab["onePageMode"]); if(isset($tab["previewWidthList"])) $this->_previewWidthList = intval($tab["previewWidthList"]); @@ -655,6 +666,7 @@ class Settings { /* {{{ */ $tab = $node[0]->attributes(); $this->_siteDefaultPage = strval($tab["siteDefaultPage"]); $this->_rootFolderID = intval($tab["rootFolderID"]); + $this->_useHomeAsRootFolder = Settings::boolval($tab["useHomeAsRootFolder"]); $this->_titleDisplayHack = Settings::boolval($tab["titleDisplayHack"]); $this->_showMissingTranslations = Settings::boolval($tab["showMissingTranslations"]); } @@ -823,8 +835,11 @@ class Settings { /* {{{ */ $this->setXMLAttributValue($node, "footNote", $this->_footNote); $this->setXMLAttributValue($node, "printDisclaimer", $this->_printDisclaimer); $this->setXMLAttributValue($node, "language", $this->_language); + $this->setXMLAttributValue($node, "dateformat", $this->_dateformat); + $this->setXMLAttributValue($node, "datetimeformat", $this->_datetimeformat); $this->setXMLAttributValue($node, "availablelanguages", implode(',', $this->_availablelanguages)); $this->setXMLAttributValue($node, "theme", $this->_theme); + $this->setXMLAttributValue($node, "overrideTheme", $this->_overrideTheme); $this->setXMLAttributValue($node, "onePageMode", $this->_onePageMode); $this->setXMLAttributValue($node, "previewWidthList", $this->_previewWidthList); $this->setXMLAttributValue($node, "previewWidthMenuList", $this->_previewWidthMenuList); @@ -991,6 +1006,7 @@ class Settings { /* {{{ */ $node = $this->getXMLNode($xml, '/configuration/advanced', 'display'); $this->setXMLAttributValue($node, "siteDefaultPage", $this->_siteDefaultPage); $this->setXMLAttributValue($node, "rootFolderID", $this->_rootFolderID); + $this->setXMLAttributValue($node, "useHomeAsRootFolder", $this->_useHomeAsRootFolder); $this->setXMLAttributValue($node, "titleDisplayHack", $this->_titleDisplayHack); $this->setXMLAttributValue($node, "showMissingTranslations", $this->_showMissingTranslations); diff --git a/inc/inc.ClassViewCommon.php b/inc/inc.ClassViewCommon.php index 1d8f1245b..37b153a68 100644 --- a/inc/inc.ClassViewCommon.php +++ b/inc/inc.ClassViewCommon.php @@ -112,8 +112,10 @@ class SeedDMS_View_Common { $tmps = array(); $tmp = explode('_', get_class($this)); $tmps[] = $tmp[2]; - $tmp = explode('_', get_parent_class($this)); - $tmps[] = $tmp[2]; + foreach(class_parents($this) as $pc) { + $tmp = explode('_', $pc); + $tmps[] = $tmp[2]; + } /* Run array_unique() in case the parent class has the same suffix */ $tmps = array_unique($tmps); $ret = null; diff --git a/inc/inc.DBInit.php b/inc/inc.DBInit.php index 1b8d31ab4..4dad2c87d 100644 --- a/inc/inc.DBInit.php +++ b/inc/inc.DBInit.php @@ -64,3 +64,5 @@ if(isset($GLOBALS['SEEDDMS_HOOKS']['initDMS'])) { } } } + +require_once('inc.FulltextInit.php'); diff --git a/inc/inc.Settings.php b/inc/inc.Settings.php index 659b202d3..1f0e7b692 100644 --- a/inc/inc.Settings.php +++ b/inc/inc.Settings.php @@ -21,6 +21,8 @@ require_once('inc.ClassSettings.php'); if(defined("SEEDDMS_CONFIG_FILE")) $settings = new Settings(SEEDDMS_CONFIG_FILE); +elseif(getenv("SEEDDMS_CONFIG_FILE")) + $settings = new Settings(getenv("SEEDDMS_CONFIG_FILE")); else $settings = new Settings(); if(!defined("SEEDDMS_INSTALL") && file_exists(dirname($settings->_configFilePath)."/ENABLE_INSTALL_TOOL")) { @@ -33,8 +35,11 @@ if(isset($settings->_extraPath)) /* composer is installed in pear directory */ require_once 'vendor/autoload.php'; -if(isset($settings->_maxExecutionTime)) - ini_set('max_execution_time', $settings->_maxExecutionTime); +if(isset($settings->_maxExecutionTime)) { + if (php_sapi_name() !== "cli") { + ini_set('max_execution_time', $settings->_maxExecutionTime); + } +} if (get_magic_quotes_gpc()) { $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); @@ -52,31 +57,6 @@ if (get_magic_quotes_gpc()) { unset($process); } -$indexconf = null; -if($settings->_enableFullSearch) { - if($settings->_fullSearchEngine == 'sqlitefts') { - $indexconf = array( - 'Indexer' => 'SeedDMS_SQLiteFTS_Indexer', - 'Search' => 'SeedDMS_SQLiteFTS_Search', - 'IndexedDocument' => 'SeedDMS_SQLiteFTS_IndexedDocument' - ); - - require_once('SeedDMS/SQLiteFTS.php'); - } else { - $indexconf = array( - 'Indexer' => 'SeedDMS_Lucene_Indexer', - 'Search' => 'SeedDMS_Lucene_Search', - 'IndexedDocument' => 'SeedDMS_Lucene_IndexedDocument' - ); - - if(!empty($settings->_luceneClassDir)) - require_once($settings->_luceneClassDir.'/Lucene.php'); - else - 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.Utils.php b/inc/inc.Utils.php index 750d9226c..f3b0fb372 100644 --- a/inc/inc.Utils.php +++ b/inc/inc.Utils.php @@ -26,12 +26,74 @@ function formatted_size($size_bytes) { /* {{{ */ return number_format($size_bytes,0,"","")." Bytes"; } /* }}} */ -function getReadableDate($timestamp) { /* {{{ */ - return date("Y-m-d", $timestamp); +/* Date picker needs a different syntax for date formats using + * yyyy for %Y + * yy for %y + * mm for %m + * dd for %d + * This functions returns the converted format + */ +function getConvertDateFormat() { + global $settings; + if($settings->_dateformat) { + return str_replace(['y', 'Y', 'm', 'M', 'F', 'd', 'l', 'D'], ['yy', 'yyyy', 'mm', 'M', 'MM', 'dd', 'DD', 'D'], $settings->_dateformat); + } else + return 'yyyy-mm-dd'; +} + +function getReadableDate($timestamp=0) { /* {{{ */ + global $settings; + if(!$timestamp) + $timestamp = time(); + elseif(!is_numeric($timestamp)) + $timestamp = strtotime($timestamp); + if($settings->_dateformat) + return date($settings->_dateformat, $timestamp); + else + return date("Y-m-d", $timestamp); } /* }}} */ function getLongReadableDate($timestamp) { /* {{{ */ - return date("Y-m-d H:i:s", $timestamp); + global $settings; + if(!is_numeric($timestamp)) + $timestamp = strtotime($timestamp); + if($settings->_datetimeformat) + return date($settings->_datetimeformat, $timestamp); + else + return date("Y-m-d H:i:s", $timestamp); +} /* }}} */ + +function getPeriodOfTime($timestamp) { /* {{{ */ + if(!is_numeric($timestamp)) + $timestamp = strtotime($timestamp); + + $time = time() - $timestamp; // to get the time since that moment + $time = ($time<1)? 1 : $time; + $tokens = array ( + 31536000 => 'abbr_year', + 2592000 => 'abbr_month', + 604800 => 'abbr_week', + 86400 => 'abbr_day', + 3600 => 'abbr_hour', + 60 => 'abbr_minute', + 1 => 'abbr_second' + ); + + foreach ($tokens as $unit => $text) { + if ($time < $unit) continue; + $numberOfUnits = floor($time / $unit); + return $numberOfUnits.' '.(($numberOfUnits>1) ? getMLText($text):getMLText($text)); + } +} /* }}} */ + +/* + * Converts a date string into a timestamp + * + * @param $date string date in format understood by strftime + * @return integer/boolean unix timestamp or false in case of an error + */ +function makeTsFromDate($date) { /* {{{ */ + return strtotime($date); } /* }}} */ /* @@ -41,6 +103,7 @@ function getLongReadableDate($timestamp) { /* {{{ */ * @return integer/boolean unix timestamp or false in case of an error */ function makeTsFromLongDate($date) { /* {{{ */ + return strtotime($date); $tmp = explode(' ', $date); if(count($tmp) != 2) return false; @@ -581,11 +644,69 @@ function sendFile($filename) { /* {{{ */ if($settings->_enableXsendfile && function_exists('apache_get_modules') && in_array('mod_xsendfile',apache_get_modules())) { header("X-Sendfile: ".$filename); } else { - /* Make sure output buffering is off */ - if (ob_get_level()) { - ob_end_clean(); + + $size = filesize($filename); + header("Content-Length: " . $size); + if (isset($_SERVER['HTTP_RANGE'])) { + $fp = @fopen($filename, 'rb'); + $length = $size; // Content length + $start = 0; // Start byte + $end = $size - 1; // End byte + + header("Accept-Ranges: 0-$length"); + + $c_start = $start; + $c_end = $end; + + list($unit, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2); + if (trim($unit) !== 'bytes') { + header('HTTP/1.1 416 Requested Range Not Satisfiable'); + header("Content-Range: bytes $start-$end/$size"); + exit; + } + if (strpos($range, ',') !== false) { + header('HTTP/1.1 416 Requested Range Not Satisfiable'); + header("Content-Range: bytes $start-$end/$size"); + exit; + } + if ($range == '-') { + $c_start = $size - substr($range, 1); + } else { + $range = explode('-', $range); + $c_start = $range[0]; + $c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size; + } + $c_end = ($c_end > $end) ? $end : $c_end; + if ($c_start > $c_end || $c_start > $size - 1 || $c_end >= $size) { + header('HTTP/1.1 416 Requested Range Not Satisfiable'); + header("Content-Range: bytes $start-$end/$size"); + exit; + } + $start = $c_start; + $end = $c_end; + $length = $end - $start + 1; + fseek($fp, $start); + header('HTTP/1.1 206 Partial Content'); + header("Content-Range: bytes $start-$end/$size"); + + $buffer = 1024 * 8; + while(!feof($fp) && ($p = ftell($fp)) <= $end) { + if ($p + $buffer > $end) { + $buffer = $end - $p + 1; + } + set_time_limit(0); + echo fread($fp, $buffer); + flush(); + } + + fclose($fp); + } else { + /* Make sure output buffering is off */ + if (ob_get_level()) { + ob_end_clean(); + } + readfile($filename); } - readfile($filename); } } /* }}} */ @@ -612,6 +733,13 @@ function getToken($length){ /* {{{ */ return $token; } /* }}} */ +function isAjax() { /* {{{ */ + if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') + return true; + else + return false; +} /* }}} */ + /** * Hash a password * diff --git a/inc/inc.Version.php b/inc/inc.Version.php index 6e4476b08..765c0a617 100644 --- a/inc/inc.Version.php +++ b/inc/inc.Version.php @@ -20,7 +20,7 @@ class SeedDMS_Version { /* {{{ */ - const _number = "5.1.20"; + const _number = "5.1.21"; const _string = "SeedDMS"; function __construct() { diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index c305f1d63..1e45b8332 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2266) +// Translators: Admin (2267) $text = array( '2_factor_auth' => 'توثيق ذو عاملين', '2_factor_auth_info' => 'معلومات عن توثيق ذو عاملين', '2_fact_auth_secret' => '', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'وافق', 'access_control' => 'صلاحيات الدخول', 'access_control_is_off' => 'صلاحيات الدخول غير مفعلة', @@ -210,6 +217,8 @@ URL: [url]', 'calendar' => 'التقويم', 'calendar_week' => 'التقويم الأسبوعي', 'cancel' => 'الغاء', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'لايمكن تعديل ملف مرفوض او مهمل', 'cannot_change_final_states' => 'تحذير: لا يمكن تعديل حالة مستند مرفوض او منتهى صلاحيته او رهن المراجعة او الموافقة', 'cannot_delete_user' => 'لا يمكن حذف مستخدم', @@ -315,6 +324,7 @@ URL: [url]', 'daily' => 'يومي', 'databasesearch' => 'بحث قاعدة البيانات', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'تاريخ', 'days' => 'أيام', 'debug' => 'debug', @@ -340,6 +350,7 @@ URL: [url]', 'documents_locked' => 'مستندات مغلقة', 'documents_locked_by_you' => 'المستندات محمية من التعديل بواسطتك', 'documents_only' => 'مستندات فقط', +'documents_rejected' => '', 'documents_to_approve' => 'مستندات في انتظار الموافقة', 'documents_to_correct' => 'مستندات للتصحيح', 'documents_to_process' => 'مستندات للمعالجة', @@ -381,7 +392,9 @@ Parent folder: [folder_path] 'document_duplicate_name' => 'اسم المستند متكرر', 'document_has_no_workflow' => 'المستند لايحتوى مسار عمل', 'document_infos' => 'معلومات المستند', -'document_is_checked_out' => 'تم سحب المستند', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'تم سحب المستند', 'document_is_not_locked' => 'هذا المستند غير محمي ضد التعديل', 'document_link_by' => 'مربوط بواسطة', 'document_link_public' => 'عام', @@ -907,6 +920,7 @@ URL: [url]', 'october' => 'اكتوبر', 'old' => 'قديم', 'only_jpg_user_images' => 'فقط يمكنك استخدام ملفات من تنسيق jpg كصورة المستخدم', +'operation_disallowed' => '', 'order_by_sequence_off' => 'الترتيب بالتسلسل موقف', 'original_filename' => 'اسم الملف الاصلي', 'overall_indexing_progress' => 'متابعة الفهرسة', @@ -1258,6 +1272,10 @@ URL: [url]', 'settings_createdirectory' => 'انشاء دليل', 'settings_currentvalue' => 'القيمة الحالية', 'settings_Database' => 'قاعدة البيانات', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'قاعدة البيانات', 'settings_dbDatabase_desc' => 'قاعدة البيانات', 'settings_dbDriver' => 'القرص', @@ -1299,6 +1317,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => 'تمكين المسؤول من مراجعة التطبيق', 'settings_enableCalendar' => 'تمكين التقويم', 'settings_enableCalendar_desc' => 'تمكين التقويم', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'تمكين الحافظة', 'settings_enableClipboard_desc' => 'تمكين الحافظة', 'settings_enableConverting' => 'تمكين التحويل', @@ -1459,6 +1479,8 @@ URL: [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'تجاوز نوع الملف', 'settings_overrideMimeType_desc' => 'تجاوز نوع الملف', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'حجم القسم', 'settings_partitionSize_desc' => 'حجم القسم', 'settings_passwordExpiration' => 'انتهاء صلاحية كلمة المرور', @@ -1554,9 +1576,11 @@ URL: [url]', 'settings_System' => 'نظام', 'settings_tasksInMenu' => 'قائمة المهام', 'settings_tasksInMenu_approval' => 'موافقة قائمة المهام', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => 'قائمة المهام', 'settings_tasksInMenu_needscorrection' => 'قائمة المهام تحتاج إلى تصحيح', 'settings_tasksInMenu_receipt' => 'مستلم قائمة المهام', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => 'مراجعة قائمة المهام', 'settings_tasksInMenu_revision' => 'مراجعة قائمة المهام', 'settings_tasksInMenu_workflow' => 'سير عمل قائمة المهام', @@ -1570,6 +1594,8 @@ URL: [url]', 'settings_updateNotifyTime' => 'تحديث وقت التنبيه', 'settings_updateNotifyTime_desc' => 'تحديث وقت التنبيه', 'settings_upgrade_php' => 'تطوير php', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'اسم ملف الاصدار', 'settings_versioningFileName_desc' => 'اسم ملف الاصدار', 'settings_versiontolow' => 'نسخة منخفضة الجودة', @@ -1611,6 +1637,7 @@ URL: [url]', 'splash_add_to_transmittal' => 'اضافة إلى الإحالة', 'splash_add_transmittal' => 'إضافة إحالة', 'splash_add_user' => 'اضافة مستخدم', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'مسح ذاكرة التخزين المؤقت', 'splash_cleared_clipboard' => 'مسح الحافظة', 'splash_delete_access' => 'حذف الوصول', @@ -1632,6 +1659,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => 'خطأ الإضافة إلى الإحالة', 'splash_error_rm_download_link' => 'خطأ في إزالة رابط التنزيل', 'splash_error_send_download_link' => 'خطأ في إرسال رابط التنزيل', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => 'قائمة التمديد', 'splash_extension_import' => 'استيراد', 'splash_extension_refresh' => 'تحديث', @@ -1768,7 +1797,7 @@ URL: [url]', 'to' => 'الى', 'toggle_manager' => 'رجح مدير', 'toggle_qrcode' => 'toggle toggle', -'total' => '', +'total' => 'ﺍﻼﺠﻣﺎﻠﻳ', 'to_before_from' => 'إلى قبل من', 'transfer_content' => 'تحويل المحتوى', 'transfer_document' => 'تحويل مستند', @@ -1872,6 +1901,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - تم مسح الاصدار', 'version_info' => 'معلومات الاصدار', 'view' => 'اعرض', +'view_document' => '', +'view_folder' => '', 'view_online' => 'شاهد اونلاين', 'warning' => 'تحذير', 'webauthn_auth' => '', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 0ea74b0ed..624565b9a 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (863) +// Translators: Admin (866) $text = array( '2_factor_auth' => '', '2_factor_auth_info' => '', '2_fact_auth_secret' => '', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Приеми', 'access_control' => '', 'access_control_is_off' => '', @@ -193,6 +200,8 @@ $text = array( 'calendar' => 'Календар', 'calendar_week' => '', 'cancel' => 'Отмяна', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Невозможно е да се измени остарял или отклонен документ', 'cannot_change_final_states' => 'Невозможно е да се изменя статусът на отклонен, просрочен или чакащ рецензия или утверждаване', 'cannot_delete_user' => '', @@ -298,6 +307,7 @@ $text = array( 'daily' => 'Ежедневно', 'databasesearch' => 'Търсене по БД', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'Дата', 'days' => 'дни', 'debug' => '', @@ -323,6 +333,7 @@ $text = array( 'documents_locked' => '', 'documents_locked_by_you' => 'Документи, блокирани от Вас', 'documents_only' => 'Само документи', +'documents_rejected' => '', 'documents_to_approve' => 'Документи, чакащи Вашето утвърждаване', 'documents_to_correct' => '', 'documents_to_process' => '', @@ -356,6 +367,8 @@ $text = array( 'document_has_no_workflow' => 'Документът няма процес', 'document_infos' => 'Информация за документа', 'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => '', 'document_is_not_locked' => 'Документът не е блокиран', 'document_link_by' => 'Свързан', 'document_link_public' => 'Публичен', @@ -736,9 +749,9 @@ $text = array( 'move_folder' => 'Премести папка', 'my_account' => 'Моя акаунт', 'my_documents' => 'Моите документи', -'my_transmittals' => '', +'my_transmittals' => 'Моите предавания', 'name' => 'Име', -'nb_NO' => '', +'nb_NO' => 'Норвежки', 'needs_correction' => '', 'needs_workflow_action' => '', 'network_drive' => '', @@ -812,7 +825,8 @@ $text = array( 'october' => 'октомври', 'old' => 'Стар', 'only_jpg_user_images' => 'Разрешени са само .jpg-изображения', -'order_by_sequence_off' => '', +'operation_disallowed' => '', +'order_by_sequence_off' => 'Подреждането по последователност е изключено в настройките. Ако искате този параметър да има ефект, ще трябва да го включите отново.', 'original_filename' => 'Оригинално име на файл', 'overall_indexing_progress' => '', 'owner' => 'Собственик', @@ -1121,6 +1135,10 @@ $text = array( 'settings_createdirectory' => 'Създаи папка', 'settings_currentvalue' => 'Текущо значение', 'settings_Database' => 'Настройки БД', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'БД', 'settings_dbDatabase_desc' => 'Има на БД, въведена в процеса на инсталацията. Не променяй без нужда, само например, ако БД е преместена.', 'settings_dbDriver' => 'Тип БД', @@ -1162,6 +1180,8 @@ $text = array( 'settings_enableAdminRevApp_desc' => 'Изключи, за да скрия админа от списъка с рецензиращи/утвърждаващи', 'settings_enableCalendar' => 'Включи календаря', 'settings_enableCalendar_desc' => 'Включване/изключване календар', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => '', 'settings_enableClipboard_desc' => '', 'settings_enableConverting' => 'Включи конвертирането', @@ -1322,6 +1342,8 @@ $text = array( 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Частичен размер на файла', 'settings_partitionSize_desc' => 'Размер на частичните файлове в байтове, качвани чрез jumploader. Не установвявайте над максимално возможния размер, установен на сървъра.', 'settings_passwordExpiration' => 'Валидност на парола', @@ -1417,9 +1439,11 @@ $text = array( 'settings_System' => 'Система', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1433,6 +1457,8 @@ $text = array( 'settings_updateNotifyTime' => 'Интервал за уведомяване за изменения', 'settings_updateNotifyTime_desc' => 'Потребителите се уведомяват за изменения в документите за последните \'Update Notify Time\' секунди', 'settings_upgrade_php' => '', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Име на файла с версиите', 'settings_versioningFileName_desc' => 'Име на файла с версиите, създаван от инструмента за бекъп', 'settings_versiontolow' => '', @@ -1474,6 +1500,7 @@ $text = array( 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => '', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => '', 'splash_delete_access' => '', @@ -1495,6 +1522,8 @@ $text = array( 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1721,6 +1750,8 @@ $text = array( 'version_deleted_email_subject' => '', 'version_info' => 'Информация за версията', 'view' => 'Преглед', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Преглед онлайн', 'warning' => 'Внимание', 'webauthn_auth' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index fc90c92f5..d2b319ba9 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -19,14 +19,21 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (758) +// Translators: Admin (764) $text = array( '2_factor_auth' => '', '2_factor_auth_info' => '', '2_fact_auth_secret' => '', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Acceptar', -'access_control' => '', +'access_control' => 'Control d\'accés', 'access_control_is_off' => '', 'access_denied' => 'Accés denegat', 'access_inheritance' => 'Accés heretat', @@ -198,6 +205,8 @@ URL: [url]', 'calendar' => 'Calendari', 'calendar_week' => '', 'cancel' => 'Cancel.lar', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'No es poden assignar nous revisors a un document que no està pendent de revisió o d\'aprovació.', 'cannot_change_final_states' => 'Atenció: No es pot canviar l\'estat de documents que han estat rebutjats, marcats com a obsolets o expirats.', 'cannot_delete_user' => '', @@ -303,6 +312,7 @@ URL: [url]', 'daily' => 'Daily', 'databasesearch' => 'Database search', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'Data', 'days' => '', 'debug' => '', @@ -328,6 +338,7 @@ URL: [url]', 'documents_locked' => '', 'documents_locked_by_you' => 'Documents bloquejats per vostè', 'documents_only' => 'Només documents', +'documents_rejected' => '', 'documents_to_approve' => 'Documents en espera d\'aprovació d\'usuaris', 'documents_to_correct' => '', 'documents_to_process' => '', @@ -361,6 +372,8 @@ URL: [url]', 'document_has_no_workflow' => '', 'document_infos' => 'Informacions', 'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => '', 'document_is_not_locked' => 'Aquest document no està bloquejat', 'document_link_by' => 'Vinculat per', 'document_link_public' => 'Públic', @@ -587,7 +600,7 @@ 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' => 'Importar usuaris', 'import_users_addnew' => '', 'import_users_update' => '', 'include_content' => '', @@ -743,7 +756,7 @@ URL: [url]', 'my_documents' => 'Els meus documents', 'my_transmittals' => 'Documents enviats per mi', 'name' => 'Nom', -'nb_NO' => '', +'nb_NO' => 'Noruec', 'needs_correction' => '', 'needs_workflow_action' => '', 'network_drive' => '', @@ -817,6 +830,7 @@ URL: [url]', 'october' => 'Octubre', 'old' => 'Vell', 'only_jpg_user_images' => 'Només pot utilitzar imatges .jpg com imatges d\'usuari', +'operation_disallowed' => '', 'order_by_sequence_off' => 'L\'ordenació per seqüència és desactivada a la configuració. Si vol que aquest paràmetre sigui efectiu, haurà d\'activar-lo.', 'original_filename' => '', 'overall_indexing_progress' => '', @@ -1036,7 +1050,7 @@ URL: [url]', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', 'select_category' => 'Prem per seleccionar la categoria', -'select_group' => '', +'select_group' => 'Seleccionar grup', 'select_groups' => '', 'select_grp_approvers' => '', 'select_grp_ind_approvers' => '', @@ -1056,7 +1070,7 @@ URL: [url]', 'select_mimetype' => '', 'select_one' => 'Seleccionar un', 'select_owner' => '', -'select_user' => '', +'select_user' => 'Seleccionar usuari', 'select_users' => 'Prem per seleccionar els usuaris', 'select_value' => 'Selecciona un valor', 'select_workflow' => '', @@ -1126,6 +1140,10 @@ URL: [url]', 'settings_createdirectory' => '', 'settings_currentvalue' => 'Current value', 'settings_Database' => 'Database settings', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Database', 'settings_dbDatabase_desc' => '', 'settings_dbDriver' => 'Database Type', @@ -1167,6 +1185,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => '', 'settings_enableCalendar' => '', 'settings_enableCalendar_desc' => '', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => '', 'settings_enableClipboard_desc' => '', 'settings_enableConverting' => '', @@ -1327,6 +1347,8 @@ URL: [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => '', 'settings_partitionSize_desc' => '', 'settings_passwordExpiration' => '', @@ -1422,9 +1444,11 @@ URL: [url]', 'settings_System' => 'System', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1438,6 +1462,8 @@ URL: [url]', 'settings_updateNotifyTime' => 'Update Notify Time', 'settings_updateNotifyTime_desc' => 'Users are notified about document-changes that took place within the last \'Update Notify Time\' seconds', 'settings_upgrade_php' => '', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Versioning filename', 'settings_versioningFileName_desc' => 'The name of the versioning info file created by the backup tool', 'settings_versiontolow' => '', @@ -1479,6 +1505,7 @@ URL: [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => '', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => '', 'splash_delete_access' => '', @@ -1500,6 +1527,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1726,6 +1755,8 @@ URL: [url]', 'version_deleted_email_subject' => '', 'version_info' => 'Informació de versió', 'view' => '', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Veure online', 'warning' => 'Advertència', 'webauthn_auth' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 956cd3088..b531c6a1d 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1531), kreml (579) +// Translators: Admin (1537), kreml (579) $text = array( '2_factor_auth' => 'dvoufaktorové ověření', '2_factor_auth_info' => 'Tento systém vyžaduje dvoufaktorové ověření. Na svém mobilním telefonu budete potřebovat Google Authenticator. Níže vidíte dva QR kódy. Správný je vaše současné tajemství. Vlevo můžete nastavit nové tajemství. Pokud nastavíte nové tajemství, ujistěte se, že jste jej znovu otestovali pomocí služby Google Authenticator.', '2_fact_auth_secret' => 'tajemství', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Přijmout', 'access_control' => 'Řízení přístupu', 'access_control_is_off' => 'Řízení přístupu je vypnuté', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Kalendář', 'calendar_week' => 'Kaledářní týden', 'cancel' => 'Zrušit', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Není možné přidělit schvalovatele dokumentu, který nečeká na kontrolu nebo na schválení.', 'cannot_change_final_states' => 'Upozornění: Nemůžete měnit stav dokumentu: zamítnutého, s vypršenou platností, posuzovaného nebo schvalovaného.', 'cannot_delete_user' => 'Uživatele nejde smazat', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'Denně', 'databasesearch' => 'Vyhledání v databázi', 'database_schema_version' => '', +'data_loading' => 'Prosím vyčkejte dokud se data nenahrají...', 'date' => 'Datum', 'days' => 'dny', 'debug' => 'odstranění chyb kódu', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => 'Uzamčené dokumenty', 'documents_locked_by_you' => 'Vámi uzamčené dokumenty', 'documents_only' => 'Pouze dokumenty', +'documents_rejected' => '', 'documents_to_approve' => 'Dokumenty čekající na schválení uživatele', 'documents_to_correct' => 'Dokumenty, které potřebují opravu', 'documents_to_process' => 'Dokumenty, které potřebují zpracování', @@ -400,7 +411,9 @@ Uživatel: [username]', 'document_duplicate_name' => 'Duplicitní název dokumentu', 'document_has_no_workflow' => 'Dokument nemá workflow', 'document_infos' => 'Informace o dokumentu', -'document_is_checked_out' => 'Dokument je aktuálně zkontrolován. Pokud nahrajete novou verzi, nemůžete již kontrolovanou verzi zkontrolovat.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Dokument je aktuálně zkontrolován. Pokud nahrajete novou verzi, nemůžete již kontrolovanou verzi zkontrolovat.', 'document_is_not_locked' => 'Tento dokument není zamčený', 'document_link_by' => 'Odkazuje sem', 'document_link_public' => 'Veřejný', @@ -684,9 +697,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' => '', +'import_users' => 'Import uživatelů', +'import_users_addnew' => 'Přidat nové uživatele', +'import_users_update' => 'Aktualizovat existující uživatele', 'include_content' => 'Včetně obsahu', 'include_documents' => 'Včetně dokumentů', 'include_subdirectories' => 'Včetně podadresářů', @@ -938,6 +951,7 @@ URL: [url]', 'october' => 'Říjen', 'old' => 'Starý', 'only_jpg_user_images' => 'Pro obrázky uživatelů je možné použít pouze obrázky .jpg', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Pořadí podle řazení je v nastavení vypnuto. Chcete-li mít tento parametr vliv, musíte jej znovu zapnout.', 'original_filename' => 'Originální název souboru', 'overall_indexing_progress' => 'Celkový průběh indexování', @@ -1330,6 +1344,10 @@ Jméno: [username] 'settings_createdirectory' => 'Vytvořit adresář', 'settings_currentvalue' => 'Současná hodnota', 'settings_Database' => 'Nastavení databáze', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Databáze', 'settings_dbDatabase_desc' => 'Název databáze zadaný během procesu instalace. Toto pole neupravujte, pokud není nutné, například pokud byla databáze přesunuta.', 'settings_dbDriver' => 'Typ databáze', @@ -1371,6 +1389,8 @@ Jméno: [username] 'settings_enableAdminRevApp_desc' => 'Povolte, pokud chcete, aby správci byli uvedeni jako recenzenti/schvalující a pro přechody workflow.', 'settings_enableCalendar' => 'Povolit kalendář', 'settings_enableCalendar_desc' => 'Povolení / zakázání kalendáře', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Povolit schránku', 'settings_enableClipboard_desc' => 'Povolit/zakázat schránku', 'settings_enableConverting' => 'Povolit konverzi', @@ -1531,6 +1551,8 @@ Jméno: [username] 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Přepsat typ MimeType', 'settings_overrideMimeType_desc' => 'Přepsat MimeType dodaný prohlížečem, pokud je nahrán soubor. Nový MimeType je určen samotným SeedDMS.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Částečná velikost souboru', 'settings_partitionSize_desc' => 'Velikost dílčích souborů v bajtech, nahraná jumploaderem. Nenastavujte hodnotu větší, než je maximální velikost odesílání nastavená serverem.', 'settings_passwordExpiration' => 'Platnost hesla', @@ -1626,9 +1648,11 @@ Jméno: [username] 'settings_System' => 'System', 'settings_tasksInMenu' => 'Vybrané úkoly', 'settings_tasksInMenu_approval' => 'Schvalování', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => 'Vyberte ty úkoly, které mají být započítány. Není-li vybrán žádný, započítávají se všechny úkoly.', 'settings_tasksInMenu_needscorrection' => 'vyžadována korektura', 'settings_tasksInMenu_receipt' => 'Přijetí', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => 'Recenze', 'settings_tasksInMenu_revision' => 'Revize', 'settings_tasksInMenu_workflow' => 'Workflow', @@ -1642,6 +1666,8 @@ Jméno: [username] 'settings_updateNotifyTime' => 'Update Notify Time', 'settings_updateNotifyTime_desc' => 'Uživatelé jsou informováni o změnách dokumentů, ke kterým došlo v posledních sekundách \'Aktualizace upozornění\'', 'settings_upgrade_php' => 'Aktualizujte PHP alespoň na verzi 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Verzování názvu souboru', 'settings_versioningFileName_desc' => 'Název souboru s informacemi o verzích vytvořeném nástrojem pro zálohování', 'settings_versiontolow' => 'Příliš nízká verze', @@ -1683,6 +1709,7 @@ Jméno: [username] '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', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'Mezipaměť vymazána', 'splash_cleared_clipboard' => 'Schránka vymazána', 'splash_delete_access' => 'Přístupová práva smazána', @@ -1704,6 +1731,8 @@ Jméno: [username] 'splash_error_add_to_transmittal' => 'Chyba při přidávání dokumentu k přenosu', 'splash_error_rm_download_link' => 'Chyba při odstranění odkazu ke stažení', 'splash_error_send_download_link' => 'Chyba při odesílání odkazu ke stažení', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => 'Aktualizovaný seznam rozšíření z úložiště', 'splash_extension_import' => 'Importováno rozšíření', 'splash_extension_refresh' => 'Aktualizovaný seznam rozšíření', @@ -1910,7 +1939,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' => '', +'userdata_file' => 'Soubor uživatelů', 'userid_groupid' => 'ID uživatel/ID skupiny', 'users' => 'Uživatel', 'users_and_groups' => 'Uživatelé / Skupiny', @@ -1944,6 +1973,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Verze smazána', 'version_info' => 'Informace o verzi', 'view' => 'Posouzení', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Zobrazit online', 'warning' => 'Upozornění', 'webauthn_auth' => '', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 3815b1b0c..a34f7d44b 100644 --- a/languages/de_DE/lang.inc +++ b/languages/de_DE/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2813), dgrutsch (22) +// Translators: Admin (2848), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', '2_factor_auth_info' => 'Dieses System erfordert 2-Faktor-Authentifikation. Dazu brauchen Sie den Google Authenticator auf Ihrem Mobiltelefon. Unten sehen Sie zwei QR-Codes. Der rechte Code beinhaltet Ihren aktuellen geheimen Schlüssel. Auf der linken Seite wird ein neuer Schlüssel angezeigt. Wenn Sie den neuen Schlüssel speichern, dann stellen Sie zuvor sicher, dass sie ihn mit dem Google Authenticator zuvor eingescant haben.', '2_fact_auth_secret' => 'Schlüssel', +'abbr_day' => 'T.', +'abbr_hour' => 'St.', +'abbr_minute' => 'Min.', +'abbr_month' => 'M.', +'abbr_second' => 'Sek.', +'abbr_week' => 'W.', +'abbr_year' => 'J.', 'accept' => 'Übernehmen', 'access_control' => 'Zugriffskontrolle', 'access_control_is_off' => 'Erweiterte Zugriffskontrolle ist ausgeschaltet', @@ -129,7 +136,7 @@ Status: [status] Kommentar: [comment] Benutzer: [username] URL: [url]', -'approval_submit_email_subject' => '[sitename]: [name] - Freigabe erteilen', +'approval_submit_email_subject' => '[sitename]: [name] - Freigabe erteilt', 'approval_summary' => 'Übersicht Freigaben', 'approval_update_failed' => 'Störung bei der Aktualisierung des Berechtigungsstatus. Aktualisierung gescheitert', 'approvers' => 'Freigebender', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Kalender', 'calendar_week' => 'Kalenderwoche', 'cancel' => 'Abbrechen', +'cancel_checkout' => 'Auschecken abbrechen', +'cancel_checkout_warning' => 'Das Auschecken kann beendet werden, auch wenn bereits Änderung am ausgecheckten Dokument vorgenommen worden sind. In dem Fall wird die Datei gelöscht und die Änderungen gehen verloren.', 'cannot_assign_invalid_state' => 'Die Zuweisung eines neuen Prüfers zu einem Dokument, welches noch nachbearbeitet oder überprüft wird ist nicht möglich', 'cannot_change_final_states' => 'Warnung: Nicht imstande, Dokumentstatus für Dokumente, die zurückgewiesen worden sind, oder als abgelaufen bzw. überholt markiert wurden zu ändern', 'cannot_delete_user' => 'Benutzer kann nicht gelöscht werden', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'täglich', 'databasesearch' => 'Datenbanksuche', 'database_schema_version' => 'Version des Datenbankschemas', +'data_loading' => 'Bitte warten, bis die Daten geladen sind …', 'date' => 'Datum', 'days' => 'Tage', 'debug' => 'Debug', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => 'Gesperrte Dokumente', 'documents_locked_by_you' => 'Von mir gesperrte Dokumente', 'documents_only' => 'Nur Dokumente', +'documents_rejected' => 'Abgelehnt', 'documents_to_approve' => 'Freigabe erforderlich', 'documents_to_correct' => 'Korrektur erforderlich', 'documents_to_process' => 'Dokumente, die bearbeitet werden müssen', @@ -400,7 +411,9 @@ Benutzer: [username]', 'document_duplicate_name' => 'Doppelter Dokumentenname', 'document_has_no_workflow' => 'Dokument hat keinen Workflow', 'document_infos' => 'Informationen', -'document_is_checked_out' => 'Das Dokument ist zur Zeit ausgecheckt. Wenn Sie eine neue Version hochladen, werden Sie die ausgecheckte Version nicht mehr einchecken können.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => 'Das Dokument ist zur Zeit ausgecheckt. Wenn Sie das Dokument löschen kann die ausgecheckte Version nicht mehr hochgeladen werden und verbleibt im Auscheck-Bereich.', +'document_is_checked_out_update' => 'Das Dokument ist zur Zeit ausgecheckt. Wenn Sie eine neue Version hochladen, werden Sie die ausgecheckte Version nicht mehr einchecken können.', 'document_is_not_locked' => 'Dieses Dokument ist nicht gesperrt', 'document_link_by' => 'Verknüpfung erstellt von', 'document_link_public' => 'Für alle sichtbar', @@ -477,7 +490,7 @@ URL: [url]', 'dropfolderdir_missing' => 'Ihr persönlicher Ablageordner auf dem Server existiert nicht! Kontaktieren Sie den Administrator, um in anlegen zu lassen.', 'dropfolder_file' => 'Datei aus Ablageordner', 'dropfolder_folder' => 'Ordner aus Ablageordner', -'dropfolder_metadata' => '', +'dropfolder_metadata' => 'Metadaten der zu importierenen Dateien', 'dropupload' => 'Direkt Hochladen', 'drop_files_here' => 'Dateien hier hin ziehen!', 'dump_creation' => 'DB dump erzeugen', @@ -937,6 +950,7 @@ URL: [url]', 'october' => 'Oktober', 'old' => 'Alt', 'only_jpg_user_images' => 'Es sind nur JPG-Bilder erlaubt', +'operation_disallowed' => 'Operation nicht erlaubt', 'order_by_sequence_off' => 'Die Sortierung nach Folge ist in den Einstellungen ausgeschaltet. Wenn dieser Parameter wirksam sein soll, muss sie wieder eingeschaltet werden.', 'original_filename' => 'Original filename', 'overall_indexing_progress' => 'Gesamtfortschritt bei der Indizierung', @@ -1158,7 +1172,7 @@ Status: [status] Kommentar: [comment] Benutzer: [username] URL: [url]', -'revision_submit_email_subject' => '[sitename]: [name] - Erneute Freigabe erteilen', +'revision_submit_email_subject' => '[sitename]: [name] - Erneute Freigabe erteilt', 'revision_summary' => 'Übersicht Wiederholungsprüfungen', 'revisors' => 'Wiederholungsprüfer', 'revisor_already_assigned' => 'Benutzer bereits als Wiederholungsprüfer eingetragen.', @@ -1341,6 +1355,10 @@ Name: [username] 'settings_createdirectory' => 'Verzeichnis erzeugen', 'settings_currentvalue' => 'Aktueller Wert', 'settings_Database' => 'Datenbank-Einstellungen', +'settings_dateformat' => 'Datumsformat', +'settings_dateformat_desc' => 'Das Datumsformat verwendet die Syntax der PHP-Funktion date()', +'settings_datetimeformat' => 'Datums/Zeitformat', +'settings_datetimeformat_desc' => 'Das Datumsformat verwendet die Syntax der PHP-Funktion date()', 'settings_dbDatabase' => 'Datenbank', 'settings_dbDatabase_desc' => 'Der Name der Datenbank, die bei der Installation von SeedDMS eingerichtet wurde. Ändern Sie diese Feld nicht, es sei denn es ist notwendig, weil Sie die Datenbank umbenannt haben.', 'settings_dbDriver' => 'Datenbank-Typ', @@ -1382,6 +1400,8 @@ Name: [username] 'settings_enableAdminRevApp_desc' => 'Anwählen, um Administratoren in der Liste der Prüfer und Freigeber und als Beteiligte in Workflows auszugeben', 'settings_enableCalendar' => 'Kalender einschalten', 'settings_enableCalendar_desc' => 'Kalender ein/ausschalten', +'settings_enableCancelCheckout' => 'Erlaube den Abbruch ausgecheckter Dokumente', +'settings_enableCancelCheckout_desc' => 'Auswählen, wenn es möglich sein soll auch bereits modifizierte ausgecheckte Dokumente zu verwerfen.', 'settings_enableClipboard' => 'Zwischenablage einschalten', 'settings_enableClipboard_desc' => 'Schaltet die Zwischenablage auf der \'View Folder\' Seite ein/aus', 'settings_enableConverting' => 'Dokumentenkonvertierung einschalten', @@ -1542,6 +1562,8 @@ Name: [username] 'settings_onePageMode_desc' => 'Der Einseiten-Modus schaltet javascript auf der ViewFolder-Seite ein, der die Ordner- und Dokumentenliste, die Navigation, etc. aktualisiert, wenn auf einen Ordner geklickt wird.', 'settings_overrideMimeType' => 'Überschreibe MimeType', 'settings_overrideMimeType_desc' => 'Überschreibe den MimeType, der vom Browser beim Hochladen einer Datei übertragen wird. Der neue MimeType wird von SeedDMS selbst ermittelt.', +'settings_overrideTheme' => 'Theme überschreiben', +'settings_overrideTheme_desc' => 'Einschalten, um die Einstellung des Themes im Benutzerkonto durch die Einstellung in der Konfiguration zu überschreiben.', 'settings_partitionSize' => 'Partitionsgröße', 'settings_partitionSize_desc' => 'Größe der partiellen Uploads in Bytes durch den Jumploader. Wählen Sie diesen Wert nicht größer als maximale Upload-Größe, die durch den Server vorgegeben ist.', 'settings_passwordExpiration' => 'Passwortverfall', @@ -1637,9 +1659,11 @@ Name: [username] 'settings_System' => 'System', 'settings_tasksInMenu' => 'Ausgewähtlte Aufgaben', 'settings_tasksInMenu_approval' => 'Freigaben', +'settings_tasksInMenu_checkedout' => 'Ausgechecked', 'settings_tasksInMenu_desc' => 'Setzt die Aufgaben, die gezählt werden sollen. Wenn keine Aufgaben ausgewählt werden, werden alle gezählt.', 'settings_tasksInMenu_needscorrection' => 'Korrektur erforderlich', 'settings_tasksInMenu_receipt' => 'Empfangsbestätigungen', +'settings_tasksInMenu_rejected' => 'Abgelehnt', 'settings_tasksInMenu_review' => 'Prüfungen', 'settings_tasksInMenu_revision' => 'Wiederholungsprüfungen', 'settings_tasksInMenu_workflow' => 'Workflow', @@ -1653,6 +1677,8 @@ Name: [username] 'settings_updateNotifyTime' => 'Update Notify Time', 'settings_updateNotifyTime_desc' => 'Users are notified about document-changes that took place within the last \'Update Notify Time\' seconds', 'settings_upgrade_php' => 'Aktualisiere PHP auf mindestens version 5.6.38', +'settings_useHomeAsRootFolder' => 'Benutze Home-Ordner als Wurzelordner', +'settings_useHomeAsRootFolder_desc' => 'Wenn dies eingeschaltet ist, wird der Home-Ordner eines Benutzer (kein Admin) als Wurzelordner verwendet (experimentell).', 'settings_versioningFileName' => 'Versionsinfo-Datei', 'settings_versioningFileName_desc' => 'Der Name der Datei mit Versionsinformationen, wie sie durch das Backup-Tool erzeugt werden.', 'settings_versiontolow' => 'Version zu gering', @@ -1694,6 +1720,7 @@ Name: [username] 'splash_add_to_transmittal' => 'Zur Dokumentenliste hinzugefügt', 'splash_add_transmittal' => 'Dokumentenliste angelegt', 'splash_add_user' => 'Neuen Benutzer hinzugefügt', +'splash_cancel_checkout' => 'Auschecken abgebrochen', 'splash_cleared_cache' => 'Cache geleert', 'splash_cleared_clipboard' => 'Zwischenablage geleert', 'splash_delete_access' => 'Zugriffsrecht gelöscht', @@ -1715,6 +1742,8 @@ Name: [username] 'splash_error_add_to_transmittal' => 'Fehler beim Hinzufügen zur Dokumentenliste', 'splash_error_rm_download_link' => 'Fehler beim Löschen des Download-Links', 'splash_error_send_download_link' => 'Fehler beim Verschicken des Download-Links', +'splash_expiration_date_cleared' => 'Ablaufdatum gelöscht', +'splash_expiration_date_set' => 'Ablaufdatum auf [date] gesetzt', 'splash_extension_getlist' => 'Liste der Erweiterungen im Repositorium aktualisiert.', 'splash_extension_import' => 'Erweiterung installiert', 'splash_extension_refresh' => 'Liste der Erweiterungen neu geladen', @@ -1955,6 +1984,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Version gelöscht', 'version_info' => 'Versionsinformation', 'view' => 'Ansicht', +'view_document' => 'Dokumentendetails anzeigen', +'view_folder' => 'Ordnerdetails anzeigen', 'view_online' => 'Online betrachten', 'warning' => 'Warnung', 'webauthn_auth' => 'WebAuthn Authentifizierung', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index a79db8d21..b4cb4fc10 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -19,15 +19,22 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (326) +// Translators: Admin (347) $text = array( '2_factor_auth' => '', '2_factor_auth_info' => '', '2_fact_auth_secret' => '', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => '', -'access_control' => '', -'access_control_is_off' => '', +'access_control' => 'Έλεγχος Πρόσβασης', +'access_control_is_off' => 'Ο προηγμένος έλεγχος πρόσβασης είναι απενεργοποιημένος', 'access_denied' => '', 'access_inheritance' => 'Κληρονομικότητα πρόσβασης', 'access_mode' => 'Είδος πρόσβασης', @@ -193,6 +200,8 @@ $text = array( 'calendar' => 'Ημερολόγιο', 'calendar_week' => 'Εβδομάδα', 'cancel' => 'Ακύρωση', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => '', 'cannot_change_final_states' => '', 'cannot_delete_user' => '', @@ -237,7 +246,7 @@ $text = array( 'choose_attrdefgroup' => '', 'choose_category' => 'Επιλέξτε', 'choose_group' => 'Επιλέξτε Ομάδα', -'choose_role' => '', +'choose_role' => 'Επιλογή Ρόλου', 'choose_target_category' => 'Επιλογή κατηγορίας', 'choose_target_document' => 'Επιλογή εγγράφου', 'choose_target_file' => 'Επιλογή αρχείου', @@ -287,17 +296,18 @@ $text = array( 'converter_new_mimetype' => '', 'copied_to_checkout_as' => '', 'create_download_link' => '', -'create_fulltext_index' => '', +'create_fulltext_index' => 'Δημιούργησε Αρίθμηση των Κειμένων', 'create_fulltext_index_warning' => '', 'creation_date' => 'Δημιουργήθηκε', 'cs_CZ' => 'Τσέχικα', 'current_password' => '', 'current_quota' => '', 'current_state' => '', -'current_version' => '', +'current_version' => 'Τρέχουσα έκδοση', 'daily' => '', 'databasesearch' => '', 'database_schema_version' => '', +'data_loading' => 'Αναμονή φόρτωσης δεδομένων...', 'date' => 'Ημερομηνία', 'days' => 'μέρες', 'debug' => '', @@ -323,6 +333,7 @@ $text = array( 'documents_locked' => '', 'documents_locked_by_you' => '', 'documents_only' => 'Έγγραφα μόνο', +'documents_rejected' => '', 'documents_to_approve' => '', 'documents_to_correct' => '', 'documents_to_process' => '', @@ -356,6 +367,8 @@ $text = array( 'document_has_no_workflow' => '', 'document_infos' => 'Πληροφορίες Εγγράφου', 'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => '', 'document_is_not_locked' => '', 'document_link_by' => '', 'document_link_public' => 'Δημόσιο', @@ -415,7 +428,7 @@ $text = array( 'dump_remove' => '', 'duplicates' => '', 'duplicate_content' => '', -'edit' => '', +'edit' => 'Επεξεργασία', 'edit_attributes' => '', 'edit_comment' => 'Επεξερασία σχόλιου', 'edit_default_keywords' => '', @@ -439,7 +452,7 @@ $text = array( 'edit_user_details' => '', 'edit_version' => '', 'el_GR' => 'Greek/Ελληνικά', -'email' => '', +'email' => 'Email', 'email_error_title' => '', 'email_footer' => '', 'email_header' => '', @@ -517,7 +530,7 @@ $text = array( 'filter_for_folders' => '', 'folder' => 'Φάκελος', 'folders' => 'Φάκελοι', -'folders_and_documents_statistic' => '', +'folders_and_documents_statistic' => 'στατιστικά Φακέλλων και Αρχείων', 'folders_with_notification' => '', 'folder_attribute_changed_email_body' => '', 'folder_attribute_changed_email_subject' => '', @@ -546,7 +559,7 @@ $text = array( 'fullsearch_hint' => '', 'fulltextsearch_disabled' => '', 'fulltext_converters' => '', -'fulltext_info' => '', +'fulltext_info' => 'Πληροφορίες Κειμένου', 'global_attributedefinitiongroups' => '', 'global_attributedefinitions' => 'Ιδιότητες', 'global_default_keywords' => 'Λέξεις Κλειδιά', @@ -582,7 +595,7 @@ $text = array( 'import_extension' => '', 'import_fs' => 'Εισαγωγή από το σύστημα', 'import_fs_warning' => '', -'import_users' => '', +'import_users' => 'Εισαγωγή χειριστών', 'import_users_addnew' => '', 'import_users_update' => '', 'include_content' => '', @@ -672,7 +685,7 @@ $text = array( 'linked_documents' => 'Σχετικά Έγγραφα', 'linked_files' => 'Συνδεμένα αρχεία', 'linked_to_current_version' => '', -'linked_to_document' => '', +'linked_to_document' => 'Συνδεδεμένο με το έγγραφο', 'linked_to_this_version' => '', 'link_alt_updatedocument' => '', 'link_document' => '', @@ -684,7 +697,7 @@ $text = array( 'local_file' => 'Τοπικό αρχείο', 'locked_by' => '', 'lock_document' => 'Κλείδωμα', -'lock_message' => '', +'lock_message' => 'Αυτό το έγγραφο είναι κλειδωμένο από [username]. Μόνο εξουσιοδοτημένοι χρήστες μπορούν να ξεκλειδώσουν αυτό το έγγραφο.', 'lock_status' => 'Κατάσταση', 'logfile_loading' => '', 'login' => 'Είσοδος', @@ -736,7 +749,7 @@ $text = array( 'move_folder' => 'Μετακίνηση φακέλου', 'my_account' => 'Ο Λογαριασμός μου', 'my_documents' => 'Τα έγγραφα μου', -'my_transmittals' => '', +'my_transmittals' => 'Οι Διαβιβάσεις μου', 'name' => 'Όνομα', 'nb_NO' => 'Νορβηγικά', 'needs_correction' => '', @@ -747,7 +760,7 @@ $text = array( 'new_attrdef' => '', 'new_default_keywords' => '', 'new_default_keyword_category' => 'Προσθήκη Κατηγορίας', -'new_document_category' => '', +'new_document_category' => 'Προσθήκη κατηγορίας', 'new_document_email' => 'Νέο Έγγραφο', 'new_document_email_body' => 'Νέο έγγραφο Name: [name] @@ -823,6 +836,7 @@ URL: [url]', 'october' => 'Οκτώβριος', 'old' => 'Παλιό', 'only_jpg_user_images' => '', +'operation_disallowed' => '', 'order_by_sequence_off' => '', 'original_filename' => '', 'overall_indexing_progress' => '', @@ -998,11 +1012,11 @@ URL: [url]', 'rm_workflow_action' => '', 'rm_workflow_state' => '', 'rm_workflow_warning' => '', -'role' => '', +'role' => 'Ρόλος', 'role_admin' => '', 'role_guest' => 'Επισκέπτης', 'role_info' => '', -'role_management' => '', +'role_management' => 'Διαχείριση Ρόλων', 'role_name' => '', 'role_type' => '', 'role_user' => 'Χρήστης', @@ -1018,7 +1032,7 @@ URL: [url]', 'scheduler_class_description' => '', 'scheduler_class_parameter' => '', 'scheduler_class_tasks' => '', -'scheduler_task_mgr' => '', +'scheduler_task_mgr' => 'Διαχειριστής Προγραμματισμού Εργασιών', 'search' => 'Αναζήτηση', 'search_fulltext' => '', 'search_in' => '', @@ -1132,6 +1146,10 @@ URL: [url]', 'settings_createdirectory' => '', 'settings_currentvalue' => '', 'settings_Database' => '', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => '', 'settings_dbDatabase_desc' => '', 'settings_dbDriver' => '', @@ -1173,6 +1191,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => '', 'settings_enableCalendar' => '', 'settings_enableCalendar_desc' => '', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => '', 'settings_enableClipboard_desc' => '', 'settings_enableConverting' => '', @@ -1333,6 +1353,8 @@ URL: [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => '', 'settings_partitionSize_desc' => '', 'settings_passwordExpiration' => '', @@ -1428,9 +1450,11 @@ URL: [url]', 'settings_System' => '', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1444,6 +1468,8 @@ URL: [url]', 'settings_updateNotifyTime' => '', 'settings_updateNotifyTime_desc' => '', 'settings_upgrade_php' => '', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => '', 'settings_versioningFileName_desc' => '', 'settings_versiontolow' => '', @@ -1485,6 +1511,7 @@ URL: [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => '', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => '', 'splash_delete_access' => '', @@ -1506,6 +1533,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1686,11 +1715,11 @@ URL: [url]', 'unlinking_objects' => '', 'unlock_cause_access_mode_all' => '', 'unlock_cause_locking_user' => '', -'unlock_document' => '', +'unlock_document' => 'Ξεκλείδωμα', 'update' => 'Ενημέρωση', 'update_approvers' => '', 'update_document' => 'Ενημέρωση εγγράφου', -'update_fulltext_index' => '', +'update_fulltext_index' => 'Ενημέρωση της Αρίθμησης Κειμένων', 'update_info' => '', 'update_locked_msg' => '', 'update_recipients' => '', @@ -1732,6 +1761,8 @@ URL: [url]', 'version_deleted_email_subject' => '', 'version_info' => 'Πληροφορίες έκδοσης', 'view' => '', +'view_document' => '', +'view_folder' => '', 'view_online' => 'προβολή online', 'warning' => 'Προειδοποίηση', 'webauthn_auth' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 90279fd46..28f117828 100644 --- a/languages/en_GB/lang.inc +++ b/languages/en_GB/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1921), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1956), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', '2_factor_auth_info' => 'This system enforces 2 factor authentication. You will need the Google Authenticator on your mobile phone. Below you see two QR codes. The right one is your current secret. On the left you can set a new secret. If you set a new secret make sure to rescan it with Google Authenticator.', '2_fact_auth_secret' => 'Secret', +'abbr_day' => 'd', +'abbr_hour' => 'h', +'abbr_minute' => 'min', +'abbr_month' => 'M', +'abbr_second' => 's', +'abbr_week' => 'wk', +'abbr_year' => 'Y', 'accept' => 'Accept', 'access_control' => 'Access control', 'access_control_is_off' => 'Advanced access control is turned off', @@ -129,7 +136,7 @@ Status: [status] Comment: [comment] User: [username] URL: [url]', -'approval_submit_email_subject' => '[sitename]: [name] - Submitted approval', +'approval_submit_email_subject' => '[sitename]: [name] - Approval submitted', 'approval_summary' => 'Approval Summary', 'approval_update_failed' => 'Error updating approval status. Update failed.', 'approvers' => 'Approvers', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Calendar', 'calendar_week' => 'Calendar week', 'cancel' => 'Cancel', +'cancel_checkout' => 'Cancel checkout', +'cancel_checkout_warning' => 'The check out can canceled thought the checked out file has been changed. In that case the file will be deleted from the check out space and your modification will be lost.', 'cannot_assign_invalid_state' => 'Cannot modify an obsolete or rejected document', 'cannot_change_final_states' => 'Warning: You cannot alter status for document rejected, expired or with pending review or approval', 'cannot_delete_user' => 'Cannot delete user', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'Daily', 'databasesearch' => 'Database search', 'database_schema_version' => 'Version of database schema', +'data_loading' => 'Please wait, until the data is loaded …', 'date' => 'Date', 'days' => 'days', 'debug' => 'Debug', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => 'Locked documents', 'documents_locked_by_you' => 'Documents locked by you', 'documents_only' => 'Documents only', +'documents_rejected' => 'Rejected', 'documents_to_approve' => 'Documents awaiting your approval', 'documents_to_correct' => 'Documents that need correction', 'documents_to_process' => 'Documents that need processing', @@ -400,7 +411,9 @@ User: [username]', 'document_duplicate_name' => 'Duplicate document name', 'document_has_no_workflow' => 'Document has no workflow', 'document_infos' => 'Document Information', -'document_is_checked_out' => 'Document is currently checked out. If you upload a new version, then the checked out version cannot be checked back in anymore.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => 'Document is currently checked out. If you delete the document, the checked out version can not be added anymore and remains in the checkout area.', +'document_is_checked_out_update' => 'Document is currently checked out. If you upload a new version, then the checked out version cannot be checked back in anymore.', 'document_is_not_locked' => 'This document is not locked', 'document_link_by' => 'Linked by', 'document_link_public' => 'Public', @@ -477,7 +490,7 @@ URL: [url]', 'dropfolderdir_missing' => 'Your personal drop folder does not exist on the server! Please ask your administrator to create it.', 'dropfolder_file' => 'File from drop folder', 'dropfolder_folder' => 'Folder from drop folder', -'dropfolder_metadata' => 'Metadata of the drop folder', +'dropfolder_metadata' => 'Metadata of files to be imported', 'dropupload' => 'Fast upload', 'drop_files_here' => 'Drop files here!', 'dump_creation' => 'DB dump creation', @@ -938,6 +951,7 @@ URL: [url]', 'october' => 'October', 'old' => 'Old', 'only_jpg_user_images' => 'Only .jpg-images may be used as user-images', +'operation_disallowed' => 'Operation not permitted', 'order_by_sequence_off' => 'Ordering by sequence is turned off in the settings. If you want this parameter to have effect, you will have to turn it back on.', 'original_filename' => 'Original filename', 'overall_indexing_progress' => 'Overall indexing progress', @@ -1152,7 +1166,7 @@ URL: [url]', 'revision_request_email_subject' => '[sitename]: [name] - Revision request', 'revision_status' => 'Status', 'revision_submit_email_body' => '', -'revision_submit_email_subject' => '', +'revision_submit_email_subject' => '[sitename]: [name] - Submitted revision', 'revision_summary' => 'Revision summary', 'revisors' => 'Revisors', 'revisor_already_assigned' => 'User is already assigned as an revisor.', @@ -1335,6 +1349,10 @@ Name: [username] 'settings_createdirectory' => 'Create directory', 'settings_currentvalue' => 'Current value', 'settings_Database' => 'Database settings', +'settings_dateformat' => 'Date format', +'settings_dateformat_desc' => 'This date format uses the syntax of php\'s date() function', +'settings_datetimeformat' => 'Date/Time format', +'settings_datetimeformat_desc' => 'This date format uses the syntax of php\'s date() function', 'settings_dbDatabase' => 'Database', 'settings_dbDatabase_desc' => 'The name for your database entered during the installation process. Do not edit this field unless necessary, if for example the database has been moved.', 'settings_dbDriver' => 'Database Type', @@ -1376,6 +1394,8 @@ Name: [username] 'settings_enableAdminRevApp_desc' => 'Enable this if you want administrators to be listed as reviewers/approvers and for workflow transitions.', 'settings_enableCalendar' => 'Enable Calendar', 'settings_enableCalendar_desc' => 'Enable/disable calendar', +'settings_enableCancelCheckout' => 'Allow to cancel check outs', +'settings_enableCancelCheckout_desc' => 'If checked, a checked out document which has already been modified can be discarded.', 'settings_enableClipboard' => 'Enable Clipboard', 'settings_enableClipboard_desc' => 'Enable/disable the clipboard on the \'View Folder\' page', 'settings_enableConverting' => 'Enable Converting', @@ -1536,6 +1556,8 @@ Name: [username] 'settings_onePageMode_desc' => 'One page mode will turn on javascript code on the ViewFolder page, which updates the folder/document list, navigation, etc. when clicking on a folder or changing the sort parameter.', 'settings_overrideMimeType' => 'Override MimeType', 'settings_overrideMimeType_desc' => 'Override the MimeType delivered by the browser, if a file is uploaded. The new MimeType is determined by SeedDMS itself.', +'settings_overrideTheme' => 'Override theme', +'settings_overrideTheme_desc' => 'Enable this for overriding the theme store in the user record with the theme configured in this configuration.', 'settings_partitionSize' => 'Partial filesize', 'settings_partitionSize_desc' => 'Size of partial files in bytes, uploaded by jumploader. Do not set a value larger than the maximum upload size set by the server.', 'settings_passwordExpiration' => 'Password expiration', @@ -1631,9 +1653,11 @@ Name: [username] 'settings_System' => 'System', 'settings_tasksInMenu' => 'Selected tasks', 'settings_tasksInMenu_approval' => 'Approvals', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => 'Select those tasks which are to be counted. If none is selected, then all tasks will be counted.', 'settings_tasksInMenu_needscorrection' => 'Correction needed', 'settings_tasksInMenu_receipt' => 'Receipts', +'settings_tasksInMenu_rejected' => 'Rejected', 'settings_tasksInMenu_review' => 'Reviews', 'settings_tasksInMenu_revision' => 'Revisions', 'settings_tasksInMenu_workflow' => 'Workflow', @@ -1647,6 +1671,8 @@ Name: [username] 'settings_updateNotifyTime' => 'Update Notify Time', 'settings_updateNotifyTime_desc' => 'Users are notified about document-changes that took place within the last \'Update Notify Time\' seconds', 'settings_upgrade_php' => 'Upgrade PHP to at least version 5.6.38', +'settings_useHomeAsRootFolder' => 'Use home folder as root folder', +'settings_useHomeAsRootFolder_desc' => 'Enable this if the user\'s home folder (no admin) shall be used as the root folder (experimental)', 'settings_versioningFileName' => 'Versioning FileName', 'settings_versioningFileName_desc' => 'The name of the versioning info file created by the backup tool', 'settings_versiontolow' => 'Version to low', @@ -1688,6 +1714,7 @@ Name: [username] 'splash_add_to_transmittal' => 'Add to transmittal', 'splash_add_transmittal' => 'Added transmittal', 'splash_add_user' => 'New user added', +'splash_cancel_checkout' => 'Checkout canceled', 'splash_cleared_cache' => 'Cache cleared', 'splash_cleared_clipboard' => 'Clipboard cleared', 'splash_delete_access' => 'Access right deleted', @@ -1709,6 +1736,8 @@ Name: [username] 'splash_error_add_to_transmittal' => 'Error while adding document to transmittal', 'splash_error_rm_download_link' => 'Error when removing download link', 'splash_error_send_download_link' => 'Error while sending download link', +'splash_expiration_date_cleared' => 'Cleared expiration date', +'splash_expiration_date_set' => 'Set expiration date on [date]', 'splash_extension_getlist' => 'Updated list of extensions from repository', 'splash_extension_import' => 'Extension installed', 'splash_extension_refresh' => 'Refreshed list of extensions', @@ -1949,6 +1978,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Version deleted', 'version_info' => 'Version Information', 'view' => 'View', +'view_document' => 'View document details', +'view_folder' => 'View folder details', 'view_online' => 'View online', 'warning' => 'Warning', 'webauthn_auth' => 'WebAuthn Authentification', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index b61aad99c..03c596068 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: acabello (20), Admin (1276), angel (123), francisco (2), jaimem (14) +// Translators: acabello (20), Admin (1292), angel (123), francisco (2), jaimem (14) $text = array( '2_factor_auth' => '', '2_factor_auth_info' => '', '2_fact_auth_secret' => '', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Aceptar', 'access_control' => 'Control de acceso', 'access_control_is_off' => 'Control de acceso avanzado está desconectado', @@ -67,10 +74,10 @@ URL: [url]', 'add_multiple_files' => 'Añadir múltiples ficheros (Se usará el nombre de fichero como nombre de documento)', 'add_receipt' => '', 'add_review' => 'Enviar revisión', -'add_revision' => '', +'add_revision' => 'Añadir revisión', 'add_role' => 'Agregar Usuario', 'add_subfolder' => 'Añadir subcarpeta', -'add_task' => '', +'add_task' => 'Agregar nueva tarea a esta clase', 'add_to_clipboard' => 'Añadir al portapapeles', 'add_to_transmittal' => 'Añadir a transmisión', 'add_transmittal' => '', @@ -164,15 +171,15 @@ URL: [url]', 'attrdef_type' => 'Tipo', 'attrdef_type_boolean' => 'Lógico (booleano)', 'attrdef_type_date' => 'Fecha', -'attrdef_type_document' => '', +'attrdef_type_document' => 'Documento', 'attrdef_type_email' => 'E-mail', 'attrdef_type_float' => 'Número decimal', -'attrdef_type_folder' => '', -'attrdef_type_group' => '', +'attrdef_type_folder' => 'Carpeta', +'attrdef_type_group' => 'Grupo', 'attrdef_type_int' => 'Número entero', 'attrdef_type_string' => 'Texto', 'attrdef_type_url' => 'URL', -'attrdef_type_user' => '', +'attrdef_type_user' => 'Usuario', 'attrdef_valueset' => 'Conjunto de valores', 'attrdef_valueset_help' => '', 'attributes' => 'Atributos', @@ -217,6 +224,8 @@ URL: [url]', 'calendar' => 'Calendario', 'calendar_week' => 'Calendario semanal', 'cancel' => 'Cancelar', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'No se puede modificar un documento obsoleto o rechazado', 'cannot_change_final_states' => 'Cuidado: No se puede cambiar el estado de documentos que han sido rechazados, marcados como obsoletos o expirados.', 'cannot_delete_user' => 'No es posible eliminar el usuario', @@ -322,6 +331,7 @@ URL: [url]', 'daily' => 'Diaria', 'databasesearch' => 'Búsqueda en base de datos', 'database_schema_version' => 'Versión del esquema de base de datos', +'data_loading' => 'Por favor, espere hasta que los datos sean cargados ...', 'date' => 'Fecha', 'days' => 'días', 'debug' => 'Depuración', @@ -347,6 +357,7 @@ URL: [url]', 'documents_locked' => '', 'documents_locked_by_you' => 'Documentos bloqueados por usted', 'documents_only' => 'Solo documentos', +'documents_rejected' => '', 'documents_to_approve' => 'Documentos en espera de aprobación de usuarios', 'documents_to_correct' => '', 'documents_to_process' => '', @@ -389,6 +400,8 @@ Usuario: [username]', 'document_has_no_workflow' => 'Documento sin flujo de trabajo', 'document_infos' => 'Informaciones', 'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => '', 'document_is_not_locked' => 'Este documento no está bloqueado', 'document_link_by' => 'Vinculado por', 'document_link_public' => 'Público', @@ -460,7 +473,7 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => 'Fichero de la carpeta destino', 'dropfolder_folder' => 'Carpeta de la carpeta destino', -'dropfolder_metadata' => 'Metadata de carpeta de destino', +'dropfolder_metadata' => '', 'dropupload' => 'Carga Rapida', 'drop_files_here' => 'Arrastre archivos aquí!', 'dump_creation' => 'Creación de volcado de BDD', @@ -541,7 +554,7 @@ URL: [url]', 'expire_in_1y' => 'Expira en 1 año', 'expire_in_2h' => 'Vence en 2 horas', 'expire_in_2y' => 'Expira en 2 años', -'expire_in_3y' => '', +'expire_in_3y' => 'Expira en 3 años', 'expire_today' => 'Vence Hoy', 'expire_tomorrow' => 'Vence mañana', 'expiry_changed_email' => 'Fecha de caducidad modificada', @@ -668,7 +681,7 @@ URL: [url]', 'include_subdirectories' => 'Incluir subcarpetas', 'indexing_tasks_in_queue' => 'Tareas de indexación en cola', 'index_converters' => '', -'index_document_unchanged' => '', +'index_document_unchanged' => 'documento sin cambios', 'index_done' => '', 'index_error' => '', 'index_folder' => 'Índice de carpetas', @@ -914,6 +927,7 @@ URL: [url]', 'october' => 'Octubre', 'old' => 'Viejo', 'only_jpg_user_images' => 'Sólo puede usar imágenes .jpg como imágenes de usuario', +'operation_disallowed' => '', 'order_by_sequence_off' => 'El orden secuencial está desactivado en la configuración. Si quiere utilizar este parámetro, deberá activarlo.', 'original_filename' => 'Nombre de fichero original', 'overall_indexing_progress' => 'Proceso de indexación global', @@ -989,7 +1003,7 @@ Si continua teniendo problemas de acceso, por favor contacte con el administrado 'receipts_without_user' => 'Recibos sin usuario', 'receipt_deletion_email_body' => '', 'receipt_deletion_email_subject' => '', -'receipt_log' => '', +'receipt_log' => 'Log de recepción', 'receipt_request_email_body' => '', 'receipt_request_email_subject' => '', 'receipt_status' => '', @@ -1155,9 +1169,9 @@ URL: [url]', 'saturday' => 'Sábado', 'saturday_abbr' => 'S', 'save' => 'Guardar', -'scheduler_class' => '', -'scheduler_class_description' => '', -'scheduler_class_parameter' => '', +'scheduler_class' => 'Clase', +'scheduler_class_description' => 'Descripción', +'scheduler_class_parameter' => 'Parametro', 'scheduler_class_tasks' => '', 'scheduler_task_mgr' => 'Rrogramacion', 'search' => 'Buscar', @@ -1273,6 +1287,10 @@ URL: [url]', 'settings_createdirectory' => 'Crear carpeta', 'settings_currentvalue' => 'Valor actual', 'settings_Database' => 'Configuración de Base de datos', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Base de datos', 'settings_dbDatabase_desc' => 'Nombre para su base de datos introducido durante el proceso de instalación. No edite este campo a menos que sea necesario, por ejemplo si la base de datos se traslada.', 'settings_dbDriver' => 'Tipo de Base de datos', @@ -1314,6 +1332,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => 'Deseleccione para no mostrar al administrador como revisor/aprobador', 'settings_enableCalendar' => 'Habilitar calendario', 'settings_enableCalendar_desc' => 'Habilitar/Deshabilitar calendario', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Habilitar portapapeles', 'settings_enableClipboard_desc' => 'Habilitar/deshabilitar el portapapeles', 'settings_enableConverting' => 'Habilitar conversión', @@ -1428,7 +1448,7 @@ URL: [url]', 'settings_initialDocumentStatus_draft' => 'Borrador', 'settings_initialDocumentStatus_released' => 'Liberado', 'settings_inlineEditing' => '', -'settings_inlineEditing_desc' => '', +'settings_inlineEditing_desc' => 'Si se encuentra habilitado, será posible editar el nombre del documentos en la página de detalles', 'settings_installADOdb' => 'Instalar ADOdb', 'settings_install_disabled' => 'El archivo ENABLE_INSTALL_TOOL ha sido eliminado. Ahora puede conectarse a SeedDMS y seguir con la configuración.', 'settings_install_pear_package_log' => 'Instale el paquete Pear \'Log\'', @@ -1474,6 +1494,8 @@ URL: [url]', 'settings_onePageMode_desc' => 'El modo una página encenderá el código javascript en la página visor de carpetas, el cual actualiza la lista de carpetas/documentos, navegación, etc. Al hacer click en una carpeta o al cambiar el parametro ordenar.', 'settings_overrideMimeType' => 'Anular MimeType', 'settings_overrideMimeType_desc' => 'Permitir que SeedDMS fije el tipo MIME sobreescribiendo el que haya definido el navegador durante el proceso de carga de un archivo.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Tamaño de fichero parcial', 'settings_partitionSize_desc' => 'Tamaño de ficheros parciales en bytes, subidos por jumploader. No configurar un valor mayor que el tamaño máximo de subida configurado en el servidor.', 'settings_passwordExpiration' => 'Caducidad de contraseña', @@ -1569,9 +1591,11 @@ URL: [url]', 'settings_System' => 'Sistema', 'settings_tasksInMenu' => 'Tareas seleccionadas', 'settings_tasksInMenu_approval' => 'Aprobaciones', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => 'Selecciona aquéllas tareas que serán contadas. Si no se selecciona alguna, todas la tareas serán contadas.', 'settings_tasksInMenu_needscorrection' => 'Se requere correciones', 'settings_tasksInMenu_receipt' => 'Recibos', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => 'Revisiones', 'settings_tasksInMenu_revision' => 'Revisiones', 'settings_tasksInMenu_workflow' => 'Flujo de trabajo', @@ -1585,6 +1609,8 @@ URL: [url]', 'settings_updateNotifyTime' => 'Tiempo de notificación de actualización', 'settings_updateNotifyTime_desc' => 'Se notificará a los usuarios sobre los cambios en documentos que tengan lugar en los próximos segundos de «Tiempo de notificación de actualización»', 'settings_upgrade_php' => 'Actualice PHP a una versión igual o mayor a 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Archivo de versionado', 'settings_versioningFileName_desc' => 'Nombre de archivo de información de versionado creado por la herramienta de copia de respaldo', 'settings_versiontolow' => 'Versión antigua', @@ -1626,6 +1652,7 @@ URL: [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Nuevo usuario agregado', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Portapapeles limpiado', 'splash_delete_access' => '', @@ -1647,6 +1674,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1887,6 +1916,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Versión eliminada', 'version_info' => 'Información de versión', 'view' => 'Vista', +'view_document' => 'Ver detalles del documento', +'view_folder' => '', 'view_online' => 'Ver online', 'warning' => 'Advertencia', 'webauthn_auth' => '', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 51a04099c..9eaa41622 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1104), jeromerobert (50), lonnnew (9), Oudiceval (966) +// Translators: Admin (1108), jeromerobert (50), lonnnew (9), Oudiceval (977) $text = array( '2_factor_auth' => 'Authentification forte', '2_factor_auth_info' => 'Ce système requiert une authentification à deux facteurs. Cela nécessite l’installation de Google Authenticator sur votre téléphone mobile. Ci-dessous sont visibles deux QR codes. Celui de droite correspond à votre clé secrète actuelle. Celui de gauche permet de définir une nouvelle clé secrète. Lorsque vous définissez une nouvelle clé secrète, assurez-vous de la scanner avec Google Authenticator.', '2_fact_auth_secret' => 'Clé secrète', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Accepter', 'access_control' => 'Contrôle d’accès', 'access_control_is_off' => 'Le contrôle d’accès avancé est désactivé', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Agenda', 'calendar_week' => 'Semaine', 'cancel' => 'Annuler', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Impossible de modifier un document obsolète ou rejeté', 'cannot_change_final_states' => 'Attention : Vous ne pouvez pas modifier l’état d\'un document rejeté, expiré ou en attente de vérification ou d’approbation.', 'cannot_delete_user' => 'Impossible de supprimer l’utilisateur', @@ -243,7 +252,7 @@ URL: [url]', 'change_assignments' => 'Changer les affectations', 'change_password' => 'Changer de mot de passe', 'change_password_message' => 'Votre mot de passe a été changé.', -'change_recipients' => 'Définir destinataires', +'change_recipients' => 'Définir les destinataires', 'change_revisors' => 'Définir les réviseurs', 'change_status' => 'Modifier le statut', 'charts' => 'Graphiques', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'Journalier', 'databasesearch' => 'Recherche dans la base de données', 'database_schema_version' => 'Version du schéma de base de données', +'data_loading' => 'Veuillez patienter, jusqu\'à ce que les données soient chargées', 'date' => 'Date', 'days' => 'jours', 'debug' => 'Débogage', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => 'Documents verrouillés', 'documents_locked_by_you' => 'Documents verrouillés', 'documents_only' => 'Documents uniquement', +'documents_rejected' => '', 'documents_to_approve' => 'Documents en attente d\'approbation', 'documents_to_correct' => 'Documents à corriger', 'documents_to_process' => 'Documents à traiter', @@ -400,7 +411,9 @@ Utilisateur : [username]', 'document_duplicate_name' => 'Un document porte déjà ce nom !', 'document_has_no_workflow' => 'Le document n\'a pas de workflow', 'document_infos' => 'Informations sur le document', -'document_is_checked_out' => 'Le document est actuellement bloqué. Si vous ajoutez une nouvelle version, la version bloquée ne pourra plus être débloquée.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Le document est actuellement bloqué. Si vous ajoutez une nouvelle version, la version bloquée ne pourra plus être débloquée.', 'document_is_not_locked' => 'Ce document n\'est pas verrouillé', 'document_link_by' => 'Lié par', 'document_link_public' => 'Public', @@ -519,7 +532,7 @@ URL: [url]', 'empty_folder_list' => 'Pas de documents ou de dossier', 'empty_list' => 'Aucune entrée', 'empty_notify_list' => 'Aucune entrée', -'enable_extension' => '', +'enable_extension' => 'Activer l’extension', 'en_GB' => 'Anglais (RU)', 'equal_transition_states' => 'États de début et de fin identiques', 'error' => 'Erreur', @@ -816,7 +829,7 @@ URL: [url]', 'may' => 'Mai', 'menu_dropfolder' => 'Dossier de dépôt', 'menu_upload_from_dropfolder' => 'Importer ce fichier', -'message' => '', +'message' => 'Message', 'mimetype' => 'Type MIME', 'minutes' => 'minutes', 'misc' => 'Divers', @@ -938,6 +951,7 @@ URL: [url]', 'october' => 'Octobre', 'old' => 'Ancien', 'only_jpg_user_images' => 'Images d\'utilisateur au format .jpg seulement', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Le tri par position est désactivé dans les préférences. Si vous souhaitez que ce paramètre prenne effet, vous devez l’activer.', 'original_filename' => 'Nom de fichier original', 'overall_indexing_progress' => 'Progression globale de l’indexation', @@ -1156,7 +1170,7 @@ Statut : [status] Commentaire : [comment] Utilisateur : [username] URL : [url]', -'revision_submit_email_subject' => '[sitename] : [name] - Publié à nouveau', +'revision_submit_email_subject' => '[sitename]: [name] - Publié à nouveau', 'revision_summary' => 'Récapitulatif révision', 'revisors' => 'Réviseurs', 'revisor_already_assigned' => 'L’utilisateur est déjà attribué en tant que réviseur.', @@ -1255,13 +1269,13 @@ URL : [url]', 'select_ind_recipients' => 'Cliquer pour choisir un destinataire individuel', 'select_ind_reviewers' => 'Cliquer pour choisir un examinateur individuel', 'select_ind_revisors' => 'Cliquer pour choisir un réviseur individuel', -'select_mimetype' => '', +'select_mimetype' => 'Sélectionner un type MIME', 'select_one' => 'Selectionner', -'select_owner' => '', +'select_owner' => 'Sélectionner un propriétaire', 'select_user' => 'Sélectionner un utilisateur', 'select_users' => 'Cliquer pour choisir un utilisateur', 'select_value' => 'Sélectionner une valeur', -'select_workflow' => 'Choisir un workflow', +'select_workflow' => 'Sélectionner un workflow', 'send_email' => 'Envoyer un e-mail', 'send_login_data' => 'Envoyer les informations de connexion', 'send_login_data_body' => 'Informations de connexion @@ -1333,6 +1347,10 @@ Nom : [username] 'settings_createdirectory' => 'Créer répertoire', 'settings_currentvalue' => 'Valeur actuelle', 'settings_Database' => 'Paramètres base de données', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Base de données', 'settings_dbDatabase_desc' => 'Le nom de votre base de données entré pendant le processus d\'installation. Ne pas modifier le champ sauf si absolument nécessaire, par exemple si la base de données a été déplacé.', 'settings_dbDriver' => 'Type base de données', @@ -1374,6 +1392,8 @@ Nom : [username] 'settings_enableAdminRevApp_desc' => 'Activer cette option pour ajouter les administrateurs à la liste des examinateurs/approbateurs et pour les transitions de workflow.', 'settings_enableCalendar' => 'Activer agenda', 'settings_enableCalendar_desc' => 'Active/désactive l’agenda', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Activer le presse-papier', 'settings_enableClipboard_desc' => 'Active/désactive le presse-papier', 'settings_enableConverting' => 'Activer conversion des fichiers', @@ -1487,8 +1507,8 @@ Nom : [username] 'settings_initialDocumentStatus_desc' => 'État du document défini lors de l’ajout', 'settings_initialDocumentStatus_draft' => 'ébauche', 'settings_initialDocumentStatus_released' => 'publié', -'settings_inlineEditing' => '', -'settings_inlineEditing_desc' => '', +'settings_inlineEditing' => 'Édition en ligne', +'settings_inlineEditing_desc' => 'Permet d’éditer le nom du document directement depuis la page des détails.', 'settings_installADOdb' => 'Installer ADOdb', 'settings_install_disabled' => 'Le fichier ENABLE_INSTALL_TOOL a été supprimé. Vous pouvez maintenant vous connecter à SeedDMS et poursuivre la configuration.', 'settings_install_pear_package_log' => 'Installer le paquet Pear \'Log\'', @@ -1534,6 +1554,8 @@ Nom : [username] 'settings_onePageMode_desc' => 'Le mode Page unique activera le code javascript dans la page AfficherDossier, qui va mettre à jour la liste Dossier/Document, navigation, etc quand vous cliquez sur un dossier ou vous changer le parametre de l\'ordre d\'affichage.', 'settings_overrideMimeType' => 'Passer outre le type MIME', 'settings_overrideMimeType_desc' => 'Ne pas tenir compte du type MIME envoyé par le navigateur quand un fichier est téléversé. Le type MIME sera déterminé par SeedDMS.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Taille des fichiers partiels téléchargées par jumploader', 'settings_partitionSize_desc' => 'Taille des fichiers partiels en octets, téléchargées par jumploader. Ne pas fixer une valeur plus grande que la taille de transfert maximale définie par le serveur.', 'settings_passwordExpiration' => 'Expiration du mot de passe', @@ -1629,9 +1651,11 @@ Nom : [username] 'settings_System' => 'Système', 'settings_tasksInMenu' => 'Tâches sélectionnées', 'settings_tasksInMenu_approval' => 'Approbations', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => 'Sélectionnez les tâches à comptabiliser. Si aucune n’est sélectionnée, toutes les tâches seront comptabilisées.', 'settings_tasksInMenu_needscorrection' => 'Nécessitant une correction', 'settings_tasksInMenu_receipt' => 'Réceptions', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => 'Vérifications', 'settings_tasksInMenu_revision' => 'Révisions', 'settings_tasksInMenu_workflow' => 'Workflow', @@ -1645,6 +1669,8 @@ Nom : [username] 'settings_updateNotifyTime' => 'Délai de notification des modifications', 'settings_updateNotifyTime_desc' => 'Les utilisateurs sont informés des modifications apportées aux documents qui ont eu lieu durant le délai précisé (en secondes).', 'settings_upgrade_php' => 'Mettez à jour PHP vers une version au moins égale à 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Nom des fichiers de versionnage', 'settings_versioningFileName_desc' => 'Nom des fichiers textes d’information créés depuis les outils de sauvegarde', 'settings_versiontolow' => 'Version trop ancienne', @@ -1683,9 +1709,10 @@ Nom : [username] 'splash_add_group_member' => 'Nouveau membre ajouté au groupe', 'splash_add_role' => 'Nouveau rôle ajouté', 'splash_add_task' => 'Nouvelle tâche ajoutée', -'splash_add_to_transmittal' => 'Ajouter à la transmission', +'splash_add_to_transmittal' => 'Ajouté à la transmission', 'splash_add_transmittal' => 'Ajouté à la transmission', 'splash_add_user' => 'Nouvel utilisateur ajouté', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'Cache vidé', 'splash_cleared_clipboard' => 'Presse-papier vidé', 'splash_delete_access' => 'Droits d’accès supprimés', @@ -1707,6 +1734,8 @@ Nom : [username] 'splash_error_add_to_transmittal' => 'Erreur lors de l’ajout du document à la transmission', 'splash_error_rm_download_link' => 'Erreur lors de la suppression du lien de téléchargement', 'splash_error_send_download_link' => 'Erreur lors de l’envoi du lien de téléchargement', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => 'Liste des extensions du dépôt actualisée', 'splash_extension_import' => 'Extension installée', 'splash_extension_refresh' => 'Liste des extensions actualisée', @@ -1947,6 +1976,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename] : [name] - Version supprimée', 'version_info' => 'Informations de version', 'view' => 'Aperçu', +'view_document' => 'Voir le document', +'view_folder' => 'Voir les détails du dossier', 'view_online' => 'Aperçu en ligne', 'warning' => 'Avertissement', 'webauthn_auth' => 'Authentification WebAuthn', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index f2d939ab7..e237696b1 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1241), marbanas (16) +// Translators: Admin (1242), marbanas (16) $text = array( '2_factor_auth' => '', '2_factor_auth_info' => '', '2_fact_auth_secret' => '', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Prihvati', 'access_control' => 'Kontrola pristupa', 'access_control_is_off' => '', @@ -129,7 +136,7 @@ Status: [status] Komentar: [comment] Korisnik: [username] Internet poveznica: [url]', -'approval_submit_email_subject' => 'Podnešeno odobrenje', +'approval_submit_email_subject' => '[sitename] : [name] - Podnešeno odobrenje', 'approval_summary' => 'Pregled odobrenja', 'approval_update_failed' => 'Greška pri ažuriranju statusa odobrenja. Ažuriranje nije uspjelo.', 'approvers' => 'Validatori', @@ -222,6 +229,8 @@ Internet poveznica: [url]', 'calendar' => 'Kalendar', 'calendar_week' => 'kalendarski tjedan', 'cancel' => 'Odustani', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Ne možete mijenjati zastarjeli ili odbijeni dokument', 'cannot_change_final_states' => 'Upozorenje: Ne možete mijenjati status odbijenog, isteklog ili dokumenta koji čeka na ovjeru ili odobrenje', 'cannot_delete_user' => 'Ne možete izbrisati korisnika', @@ -327,6 +336,7 @@ Internet poveznica: [url]', 'daily' => 'Dnevno', 'databasesearch' => 'Pretraživanje baze podataka', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'Datum', 'days' => 'dani', 'debug' => 'Ispravljanje', @@ -352,6 +362,7 @@ Internet poveznica: [url]', 'documents_locked' => '', 'documents_locked_by_you' => 'Dokumenti koje ste vi zaključali', 'documents_only' => 'Samo dokumenti', +'documents_rejected' => '', 'documents_to_approve' => 'Dokumenti koji čekaju vaše odobrenje', 'documents_to_correct' => '', 'documents_to_process' => '', @@ -393,7 +404,9 @@ Korisnik: [username]', 'document_duplicate_name' => 'Duplicate document name', 'document_has_no_workflow' => 'Dokument nema tok rada', 'document_infos' => 'Informacije o dokumentu', -'document_is_checked_out' => 'Dokument je trenutno odjavljen. Ako učitate novu verziju, tada odjavljena verzija ne može više biti ponovno prijavljena.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Dokument je trenutno odjavljen. Ako učitate novu verziju, tada odjavljena verzija ne može više biti ponovno prijavljena.', 'document_is_not_locked' => 'Ovaj dokument nije zaključan', 'document_link_by' => 'Povezao', 'document_link_public' => 'Javno', @@ -918,6 +931,7 @@ Internet poveznica: [url]', 'october' => 'Listopad', 'old' => 'Staro', 'only_jpg_user_images' => 'Kao korisničke slike mogu se koristiti samo .jpg slike', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Sortiranje po sekvencei ne isključeno u postavkama. Ako želite da ovaj parametar ima utjecaja, morat ćete ga ponovno uključiti.', 'original_filename' => 'Izvorni naziv datoteke', 'overall_indexing_progress' => '', @@ -1294,6 +1308,10 @@ Internet poveznica: [url]', 'settings_createdirectory' => 'Izradi mapu', 'settings_currentvalue' => 'Trenutna vrijednost', 'settings_Database' => 'Postavke baze podataka', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Baza podataka', 'settings_dbDatabase_desc' => 'Naziv vaše baze podataka unijet tijekom postupka instalacije. Ne uređujte ovo polje dok se ne pojavi potreba, ako npr. premjestite bazu podataka.', 'settings_dbDriver' => 'Vrsta baze podataka', @@ -1335,6 +1353,8 @@ Internet poveznica: [url]', 'settings_enableAdminRevApp_desc' => 'Omogući ovo ako želiš da administratori budu navedeni kao recezenti/validatori i za promjenu toka rada.', 'settings_enableCalendar' => 'Omogući Kalendar', 'settings_enableCalendar_desc' => 'Omogući/onemogući kalendar', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Omogući međuspremnik', 'settings_enableClipboard_desc' => 'Omogući/onemogući međuspremnik na \'Vidi mapu\' stranici', 'settings_enableConverting' => 'Omogući pretvaranje', @@ -1495,6 +1515,8 @@ Internet poveznica: [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Premosti tip datoteke', 'settings_overrideMimeType_desc' => 'Premošćivanje tipa datoteke određenog od strane pretraživača ako je datoteka učitana. Novi tip datoteke se određuje od strane DMS sustava.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Veličina djelomične datoteke', 'settings_partitionSize_desc' => 'Veličine djelomičnih datoteka u bajtovima, učitane s jumploader-om. Ne postavljajte vrijednot veću od max. veličine učitavanja koju je postavio server.', 'settings_passwordExpiration' => 'Istek lozinke', @@ -1590,9 +1612,11 @@ Internet poveznica: [url]', 'settings_System' => 'Sustav', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1606,6 +1630,8 @@ Internet poveznica: [url]', 'settings_updateNotifyTime' => 'Ažuriraj vrijeme obavijesti', 'settings_updateNotifyTime_desc' => 'Korisnici se obavještavaju o promjenama dokumenta koje su se dogodile unutar zadnjih \'Update Notify Time\' sekundi', 'settings_upgrade_php' => 'Ažuriraj PHP najmanje na verziju 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Naziv datoteke verzije dokumenta', 'settings_versioningFileName_desc' => 'Naziv datoteke s informacijom o verziji kreirane alatom za stvaranje sigurnosne kopije', 'settings_versiontolow' => 'Na nižu verziju', @@ -1647,6 +1673,7 @@ Internet poveznica: [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Dodan novi korisnik', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Očišćen međuspremnik', 'splash_delete_access' => '', @@ -1668,6 +1695,8 @@ Internet poveznica: [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1908,6 +1937,8 @@ Internet poveznica: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Izbrisana verzija', 'version_info' => 'Informacije o verziji', 'view' => 'Pregled', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Online pregled', 'warning' => 'Upozorenje', 'webauthn_auth' => '', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 63f8aa29d..f58b0a8e3 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -25,6 +25,13 @@ $text = array( '2_factor_auth' => 'Kétfaktoros azonosítás', '2_factor_auth_info' => 'A rendszernek két faktoros hitelesítése van. Szükséged lesz a Google Authenticator-ra a mobil telefonodon. Lejebb látható két QR kód. A jobb oldali a saját jelszavát, a baloldali egy új titkos jelszót tartalmaz. Ha új jelszót szeretne beállítani, szkennelje be újra a Goolge Authenticator-al.', '2_fact_auth_secret' => 'Titkos', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Elfogad', 'access_control' => 'Hozzáférés vezérlés', 'access_control_is_off' => 'A speciális vezérlés hozzáférése ki van kapcsolva', @@ -217,6 +224,8 @@ URL: [url]', 'calendar' => 'Naptár', 'calendar_week' => 'Naptári hét', 'cancel' => 'Mé‰gsem', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Nem lehet új felülvizsgálót hozzárendelni olyan dokumentumhoz, amely nincs felülvizsgálat vagy jóváhagyás alatt.', 'cannot_change_final_states' => 'Figyelem: Nem lehet olyan dokumentum állapotát módosítani, amely visszautasított, elavultnak jelölt vagy lejárt.', 'cannot_delete_user' => 'Nem törölhet felhasználót', @@ -322,6 +331,7 @@ URL: [url]', 'daily' => 'Napi', 'databasesearch' => 'Adatbázis keresés', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'Dátum', 'days' => 'nap', 'debug' => 'Hibakeresés', @@ -347,6 +357,7 @@ URL: [url]', 'documents_locked' => 'dokumentum zárolva', 'documents_locked_by_you' => 'Ön által zárolt dokumentumok', 'documents_only' => 'Csak dokumentumok', +'documents_rejected' => '', 'documents_to_approve' => 'Jóváhagyására váró dokumentumok', 'documents_to_correct' => '', 'documents_to_process' => '', @@ -389,6 +400,8 @@ Felhasználó: [username]', 'document_has_no_workflow' => 'Dokumentumhoz nincs munkafolyamat', 'document_infos' => 'Dokumentum információ', 'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => '', 'document_is_not_locked' => 'Ez a dokumentum NEM zßrolt', 'document_link_by' => 'Hivatkozást létrehozta:', 'document_link_public' => 'Nyilvános', @@ -914,6 +927,7 @@ URL: [url]', 'october' => 'Október', 'old' => 'Régi', 'only_jpg_user_images' => 'Felhasználói képként csak .jpg állományok adhatók meg', +'operation_disallowed' => '', 'order_by_sequence_off' => '', 'original_filename' => 'Eredeti fájlnév', 'overall_indexing_progress' => 'Teljes indexelési folyamat', @@ -1272,6 +1286,10 @@ URL: [url]', 'settings_createdirectory' => 'Könyvtár létrehozása', 'settings_currentvalue' => 'Aktuális érték', 'settings_Database' => 'Adatbázis beállítások', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Adatbázis', 'settings_dbDatabase_desc' => 'Az adatbázis nevét a telepítési folyamat során kell megadni. Ne szerkessze ezt a mezőt ha nem szükséges, ha például az adatbázis áthelyezésre kerül.', 'settings_dbDriver' => 'Adatbázis típus', @@ -1313,6 +1331,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => 'Engedélyezze, ha szeretné, hogy az adminisztrátorok listázva legyenek a felülvizsgálóknál/jóváhagyóknál és a munkamenet átmeneteknél.', 'settings_enableCalendar' => 'Naptár engedélyezése', 'settings_enableCalendar_desc' => 'Naptár engedélyezés/tiltás', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Vágólap engedélyezése', 'settings_enableClipboard_desc' => 'Vágólap engedélyezés/tiltás', 'settings_enableConverting' => 'Konvertálás engedélyezése', @@ -1473,6 +1493,8 @@ URL: [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'A Mime típus felülbírálása', 'settings_overrideMimeType_desc' => 'A fájl feltöltése esetén felülbírálja a böngésző által szállított Mime típust. Az új Mime típust maga a SeedDMS határozza meg.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Részleges fájlméret', 'settings_partitionSize_desc' => 'A részleges állományok mérete, amelyek a jumploader segítségével lesznek feltöltve. Ne adjon meg magasabb értéket, mint a szerveren beállított legnagyobb feltölthető állomány méret.', 'settings_passwordExpiration' => 'Jelszó lejárat', @@ -1568,9 +1590,11 @@ URL: [url]', 'settings_System' => 'Rendszer', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1584,6 +1608,8 @@ URL: [url]', 'settings_updateNotifyTime' => 'Értesítési idő frissítése', 'settings_updateNotifyTime_desc' => 'Felhasználók értesítést kapnak az \'Értesítés frissítési idő\' által meghatározott másodperc alatt történt dokumentum változásokról', 'settings_upgrade_php' => 'Frissítse a PHP-t legalább 5.6.38 verzióra', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Változatkezelő állománynév', 'settings_versioningFileName_desc' => 'A változáskezelő információs állomány neve létrehozva a mentő eszközzel', 'settings_versiontolow' => 'túl alacsony verzió', @@ -1625,6 +1651,7 @@ URL: [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Új felhasználó hozzáadva', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Vágólap törölve', 'splash_delete_access' => '', @@ -1646,6 +1673,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1886,6 +1915,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Változat törölve', 'version_info' => 'Verzió információ', 'view' => 'Nézet', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Online megtekintés', 'warning' => 'Figyelmeztetés', 'webauthn_auth' => '', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 2209473ed..7c84f2649 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2026), rickr (144), s.pnt (26) +// Translators: Admin (2049), rickr (144), s.pnt (26) $text = array( '2_factor_auth' => 'Autorizzazione a due fattori', '2_factor_auth_info' => 'Questo sistema usa autenticazione a due fattori. Sarà necessario il “Google Authenticator” sul tuo telephono cellulare. Qui potete vedere due codici QR. Quello di destra è il tuo segreto. è sulla sinistra chè un nuovo segreto. Se si imposta un nuovo segreto per assicurarsi si deve scansione con “Google Authenticator” di nuovo.', '2_fact_auth_secret' => 'Segreto', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Accetta', 'access_control' => 'Il controllo degli accessi', 'access_control_is_off' => 'Controlo avanzate è spento', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Calendario', 'calendar_week' => 'Calendario settimanale', 'cancel' => 'Annulla', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Non è possibile modificare le assegnazioni di un documento obsoleto o rifiutato', 'cannot_change_final_states' => 'Attenzione: non si può modificare lo stato dei documenti rifiutati, scaduti o in attesa di revisione o approvazione', 'cannot_delete_user' => 'Impossibile eliminare l\'utente', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'Giornaliero', 'databasesearch' => 'Ricerca nel Database', 'database_schema_version' => '', +'data_loading' => 'Attendere il caricamento dei dati...', 'date' => 'Data', 'days' => 'Giorni', 'debug' => 'Localizzare e rimuovere errori da (Debug)', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => 'Documenti bloccati', 'documents_locked_by_you' => 'Documenti bloccati da te', 'documents_only' => 'Solo documenti', +'documents_rejected' => '', 'documents_to_approve' => 'Documenti in attesa della tua approvazione', 'documents_to_correct' => 'Documenti in attesa della tua correzione', 'documents_to_process' => 'I documenti che necessitano di trattamento', @@ -393,7 +404,9 @@ Utente: [username]', 'document_duplicate_name' => 'Nome del Documento duplicato', 'document_has_no_workflow' => 'Il documento non ha un flusso di lavoro', 'document_infos' => 'Informazioni documento', -'document_is_checked_out' => 'Il documento é approvato. Se aggiorni il documento, la versione approvata verrà sovrascritta definitivamente', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Il documento é approvato. Se aggiorni il documento, la versione approvata verrà sovrascritta definitivamente', 'document_is_not_locked' => 'Questo documento non è bloccato', 'document_link_by' => 'Collegato da', 'document_link_public' => 'Pubblico', @@ -809,7 +822,7 @@ URL: [url]', 'missing_checksum' => 'Checksum mancante', 'missing_file' => 'File mancante', 'missing_filesize' => 'Dimensione mancante', -'missing_php_extensions' => '', +'missing_php_extensions' => 'Estensioni php mancanti', 'missing_reception' => 'Ricezione mancante', 'missing_request_object' => 'Manca oggetto di richiesta', 'missing_transition_user_group' => 'Utente/Gruppo per la transizione mancanti', @@ -868,7 +881,7 @@ URL: [url]', 'next_state' => 'Nuovo stato', 'nl_NL' => 'Olandese', 'no' => 'No', -'notification' => '', +'notification' => 'Notifica', 'notify_added_email' => 'Sei stato aggiunto alla lista di notifica', 'notify_added_email_body' => 'Aggiunto alla lista di notifica Nome: [name] @@ -924,6 +937,7 @@ URL: [url]', 'october' => 'Ottobre', 'old' => 'Vecchio', 'only_jpg_user_images' => 'Possono essere utilizzate solo immagini di tipo jpeg', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Ordina in sequenza disabilitato', 'original_filename' => 'Nome file originale', 'overall_indexing_progress' => 'Totale processo di indicizzazione', @@ -1221,7 +1235,7 @@ URL: [url]', 'search_time' => 'Tempo trascorso: [time] secondi.', 'seconds' => 'secondi', 'seeddms_info' => '', -'seeddms_version' => '', +'seeddms_version' => 'Versione di SeedDMS', 'selection' => 'Selezione', 'select_attrdefgrp_show' => 'Scegli quando mostrare', 'select_attribute_value' => 'Seleziona il valore dell\'attributo', @@ -1282,12 +1296,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_apiKey' => 'Chiave di autenticazione per api', +'settings_apiKey_desc' => 'Questa chiave viene utilizzata come autenticazione alternativa per api. Scegli una stringa lunga 32 caratteri.', +'settings_apiOrigin' => 'Origine consentita delle chiamate API', +'settings_apiOrigin_desc' => 'Un elenco di indirizzi separati da punto e virgola. Ogni indirizzo ha la forma: // [:]. La porta può essere omessa. Se questo campo viene lasciato vuoto, non verranno applicate restrizioni.', 'settings_apiUserId' => '', -'settings_apiUserId_desc' => '', +'settings_apiUserId_desc' => 'Questo utente verrà utilizzato dalle altre API, se l\'autenticazione è stata eseguita con la chiave API configurata.', '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.', @@ -1321,6 +1335,10 @@ Name: [username] 'settings_createdirectory' => 'Crea cartella', 'settings_currentvalue' => 'Valore corrente', 'settings_Database' => 'Impostazioni database', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Database', 'settings_dbDatabase_desc' => 'Il nome del database inserito durante il processo di installazione. Non modificare questo campo se non assolutamente necessario, ad esempio nel trasferimento del database su un nuovo Host.', 'settings_dbDriver' => 'Tipo database', @@ -1362,12 +1380,14 @@ Name: [username] 'settings_enableAdminRevApp_desc' => 'Abilita per elencare gli amministratori tra i revisori/approvatori e per le transizioni del flusso di lavoro', 'settings_enableCalendar' => 'Abilita calendario', 'settings_enableCalendar_desc' => 'Abilita/disabilita il calendario', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Abilita clipboard', 'settings_enableClipboard_desc' => 'Abilita/disabilita la clipboard sulla pagina \'Vista cartella\'', 'settings_enableConverting' => 'Abilita conversione', 'settings_enableConverting_desc' => 'Abilita/disabilita la conversione dei files', -'settings_enableDebugMode' => '', -'settings_enableDebugMode_desc' => '', +'settings_enableDebugMode' => 'Modo debug', +'settings_enableDebugMode_desc' => 'Abilitalo per attivare la modalità di debug che aggiunge un nuovo menu negli strumenti di amministrazione', 'settings_enableDropFolderList' => 'Abilita lista dei file nella cartella di pubblicazione', 'settings_enableDropFolderList_desc' => 'Abilita la lista dei file nella cartella di pubblicazione. La lista viene mostrata nel menù principale.', 'settings_enableDropUpload' => 'Abilita caricamento veloce', @@ -1417,7 +1437,7 @@ Name: [username] 'settings_enableRecursiveCount' => 'Abilita il conteggio ricursivo di documenti/cartelle', 'settings_enableRecursiveCount_desc' => 'Se selezionato il numero di documenti e sottocartelle accessibili all\'utente sarà calcolato con un conteggio ricursivo di tutti gli oggetti contenuti nella cartella.', 'settings_enableRevisionOneVoteReject' => 'Respinto da un revisore', -'settings_enableRevisionOneVoteReject_desc' => '', +'settings_enableRevisionOneVoteReject_desc' => 'Se abilitato, lo stato del documento verrà impostato su ""necessita correzione"" una volta che il primo revisore rifiuta il documento. Se disabilitato, lo stato del documento non cambierà fino a quando tutti i revisori non avranno terminato la revisione.', 'settings_enableRevisionOnVoteReject' => 'Rifiutato da un revisore', 'settings_enableRevisionOnVoteReject_desc' => 'Se impostato, il documento verrà rifiutato se un revisore rifiuta il documento.', 'settings_enableRevisionWorkflow' => 'Abilita riesame dei documenti', @@ -1475,8 +1495,8 @@ Name: [username] 'settings_initialDocumentStatus_desc' => 'Stato assegnato quando si aggiunge documento', 'settings_initialDocumentStatus_draft' => 'Bozza', 'settings_initialDocumentStatus_released' => 'Pubblicato', -'settings_inlineEditing' => '', -'settings_inlineEditing_desc' => '', +'settings_inlineEditing' => 'Modifica in linea', +'settings_inlineEditing_desc' => 'Se abilitato, sarà possibile modificare il nome del documento nella pagina dei dettagli', 'settings_installADOdb' => 'Installa ADOdb', 'settings_install_disabled' => 'Il file ENABLE_INSTALL_TOOL è stato cancellato. Ora puoi effettuare il login in SeedDMS e fare ulteriori configurazioni.', 'settings_install_pear_package_log' => 'Installa il registro del pacchetto Pear', @@ -1519,9 +1539,11 @@ Name: [username] 'settings_notwritable' => 'La configurazione non può essere salvata perchè il file di configurazione non può essere sovrascritto.', 'settings_no_content_dir' => 'Cartella contenitore', 'settings_onePageMode' => 'Modalità ad una pagina', -'settings_onePageMode_desc' => '', +'settings_onePageMode_desc' => 'La modalità a una pagina, attiverà il codice javascript nella pagina ViewFolder, che aggiorna l\'elenco di cartelle/documenti, la navigazione, ecc. quando si fa clic su una cartella o si modifica il parametro di ordinamento.', 'settings_overrideMimeType' => 'Ignora MimeType', 'settings_overrideMimeType_desc' => 'Ignora il MimeType impostato dal browser, se un file viene caricato. Il MimeType è determinato ed impostato dal DMS stesso.', +'settings_overrideTheme' => 'Ignora tema', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Dimensione file parziale', 'settings_partitionSize_desc' => 'Dimensione parziale dei files caricati da Jumploader in bytes. Non impostare un valore maggiore del massimo carico di upload attribuito dal server.', 'settings_passwordExpiration' => 'Scadenza Password', @@ -1553,12 +1575,12 @@ Name: [username] 'settings_previewWidthMenuList_desc' => 'Larghezza immagine di anteprima mostrata come articolo nel menu cartella di pubblicazione.', 'settings_printDisclaimer' => 'Mostra disclaimer', 'settings_printDisclaimer_desc' => 'Se abilitato il messaggio circa i termini e le condizioni d\'uso verrà mostrato nel pié di pagina.', -'settings_proxyUPassword' => '', -'settings_proxyUPassword_desc' => '', -'settings_proxyUrl' => '', -'settings_proxyUrl_desc' => '', -'settings_proxyUser' => '', -'settings_proxyUser_desc' => '', +'settings_proxyUPassword' => 'Password per il proxy', +'settings_proxyUPassword_desc' => 'Password per l\'autenticazione al proxy', +'settings_proxyUrl' => 'URL del proxy', +'settings_proxyUrl_desc' => 'URL del proxy utilizzato per accedere al repository delle estensioni.', +'settings_proxyUser' => 'Nome utente utilizzato per il proxy', +'settings_proxyUser_desc' => 'Nome utente utilizzato per l\'autenticazione con il proxy', 'settings_quota' => 'Quota utente', 'settings_quota_desc' => 'La quantità Max di spazio su disco che può essere occupata da ciascun utente. Impostare il valore 0 offre spazio illimitato.', 'settings_removeFromDropFolder' => 'Rimuovere file dalla cartella di ricezione dopo il caricamento', @@ -1617,9 +1639,11 @@ Name: [username] 'settings_System' => 'Sistema', 'settings_tasksInMenu' => 'Attività selezionate', 'settings_tasksInMenu_approval' => 'Approvazioni', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => 'Seleziona le attività da conteggiare. Se non ne sono state selezionate, verranno conteggiate tutte le attività.', 'settings_tasksInMenu_needscorrection' => 'Correzioni necessarie', 'settings_tasksInMenu_receipt' => 'Ricevute', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => 'Revisioni', 'settings_tasksInMenu_revision' => 'Riesami', 'settings_tasksInMenu_workflow' => 'Flusso di lavoro', @@ -1633,6 +1657,8 @@ Name: [username] 'settings_updateNotifyTime' => 'Intervallo notifica di aggiornamento', 'settings_updateNotifyTime_desc' => 'Intervallo di tempo in secondi durante il quale ogni modifica ad un documento verrà notificata agli utenti', 'settings_upgrade_php' => 'Aggiornare PHP alla versione 5.6.38 o superiori', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Nome file di versione', 'settings_versioningFileName_desc' => 'Nome attribuito al file di versione creato dallo strumento di backup.', 'settings_versiontolow' => 'Versione obsoleta', @@ -1674,6 +1700,7 @@ Name: [username] 'splash_add_to_transmittal' => 'Aggiungere alla trasmissione', 'splash_add_transmittal' => 'Aggiungere trasmissione', 'splash_add_user' => 'Utente aggiunto', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'Cache cancellata', 'splash_cleared_clipboard' => 'Appunti cancellati', 'splash_delete_access' => 'Diritto d\'accesso cancellato', @@ -1695,6 +1722,8 @@ Name: [username] 'splash_error_add_to_transmittal' => 'Errore durante l\'aggiunta di documento per la trasmissione', 'splash_error_rm_download_link' => 'Errore durante la rimozione del collegamento di scaricamento', 'splash_error_send_download_link' => 'Errore durante l\'invio del collegamento di scaricamento', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => 'Elenco estensioni aggiornate dal repository', 'splash_extension_import' => 'Extensition installed', 'splash_extension_refresh' => 'Refreshed list of extensions', @@ -1831,7 +1860,7 @@ Name: [username] 'to' => 'A', 'toggle_manager' => 'Gestore', 'toggle_qrcode' => 'Mostri/nascondi codice QR', -'total' => '', +'total' => 'Totale', 'to_before_from' => 'La data di fine non può essere antecedente a quella di inizio', 'transfer_content' => 'Trasferisci contenuto', 'transfer_document' => 'Trasferisci documento', @@ -1935,6 +1964,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Versione cancellata', 'version_info' => 'Informazioni versione', 'view' => 'Visualizza', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Visualizza on-line', 'warning' => 'Attenzione', 'webauthn_auth' => '', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index 9b1b3ce3b..fc2160321 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -25,6 +25,13 @@ $text = array( '2_factor_auth' => '이중 인증', '2_factor_auth_info' => '', '2_fact_auth_secret' => '시크릿', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => '동의', 'access_control' => '접근 제어', 'access_control_is_off' => '고급 접근 제어 꺼짐', @@ -224,6 +231,8 @@ URL: [url]', 'calendar' => '달력', 'calendar_week' => '주', 'cancel' => '취소', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => '사용되지 않거나 거부된 문서는 수정 불가', 'cannot_change_final_states' => '경고 : 거부, 만료 또는 검토나 승인보류 중인 문서의 상태는 변경할 수 없습니다.', 'cannot_delete_user' => '사용자를 삭제할 수 없습니다', @@ -330,6 +339,7 @@ URL: [url]', 'daily' => '매일', 'databasesearch' => '데이터베이스 검색', 'database_schema_version' => '', +'data_loading' => '', 'date' => '날짜', 'days' => '일', 'debug' => '디버그', @@ -355,6 +365,7 @@ URL: [url]', 'documents_locked' => '잠긴 문서', 'documents_locked_by_you' => '당신에 의해 잠긴 문서', 'documents_only' => '문서', +'documents_rejected' => '', 'documents_to_approve' => '당신의 승인을 기다리는 문서들', 'documents_to_correct' => '', 'documents_to_process' => '문서처리', @@ -396,7 +407,9 @@ URL: [url]', 'document_duplicate_name' => '중복 문서 이름', 'document_has_no_workflow' => '문서에 워크플로우가 없습니다', 'document_infos' => '문서 정보', -'document_is_checked_out' => '문서가 현재 체크아웃 되어 있습니다. 새 버전을 업로드하면 체크아웃된 버전은 더 이상 확인 할 수 없습니다.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => '문서가 현재 체크아웃 되어 있습니다. 새 버전을 업로드하면 체크아웃된 버전은 더 이상 확인 할 수 없습니다.', 'document_is_not_locked' => '잠겨 있지 않은 문서', 'document_link_by' => '연결', 'document_link_public' => '공개', @@ -920,6 +933,7 @@ URL : [url]', 'october' => '10월', 'old' => '이전', 'only_jpg_user_images' => '.JPG - 이미지만 사용자가 이미지로 사용할 수 있습니다', +'operation_disallowed' => '', 'order_by_sequence_off' => '순서에 의한 정렬 설정이 켜져 있습니다. 이 매개 변수를 사용하고 싶은 경우 이것을 활성화 해야 합니다.', 'original_filename' => '원래본 파일명', 'overall_indexing_progress' => '전체 색인 진행률', @@ -1288,6 +1302,10 @@ URL : [url]', 'settings_createdirectory' => '디렉토리 만들기', 'settings_currentvalue' => '현재 값', 'settings_Database' => '데이터베이스 설정', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => '데이터베이스', 'settings_dbDatabase_desc' => '설치 과정에서 입력 한 데이터베이스 액세스를 위한 데이터베이스 이름 . 필요한 경우가 아니면이 필드를 편집하지 마십시오.', 'settings_dbDriver' => '데이터베이스 유형', @@ -1329,6 +1347,8 @@ URL : [url]', 'settings_enableAdminRevApp_desc' => '관리자가 검토 / 승인으로 워크플로우를 전환 할 경우에 사용.', 'settings_enableCalendar' => '달력 활성화', 'settings_enableCalendar_desc' => '활성화 / 비활성화 달력', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => '클립 보드 활성화', 'settings_enableClipboard_desc' => '\'View Folder\'의 클립 보드 활성화/비활성화', 'settings_enableConverting' => '변환 사용', @@ -1489,6 +1509,8 @@ URL : [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'MIME 타입 재정의', 'settings_overrideMimeType_desc' => '파일이 업로드 되는 경우, 브라우저에 의해 제공되는 MIME 타입을 재정의 합니다. 새로운 MIME 타입은 SeedDMS에 의해 결정 됩니다.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => '조각 파일 크기', 'settings_partitionSize_desc' => 'jumploader의 조각 업로드 파일의 크기(Byte). 서버에서 설정 한 최대 업로드 크기 보다 큰 값을 설정하지 마십시오.', 'settings_passwordExpiration' => '암호 만료', @@ -1584,9 +1606,11 @@ URL : [url]', 'settings_System' => '시스템', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1600,6 +1624,8 @@ URL : [url]', 'settings_updateNotifyTime' => '업데이트 시간 알림', 'settings_updateNotifyTime_desc' => '사용자가 마지막으로 발생한 문서 변경에 대한 알림 \'Update Notify Time\' 초', 'settings_upgrade_php' => '최소 버전 5.2.0 PHP 이상 요구', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => '버전 파일 이름', 'settings_versioningFileName_desc' => '백업 도구에 의해 생성 된 버전 정보 파일 이름', 'settings_versiontolow' => '낮은 버전', @@ -1641,6 +1667,7 @@ URL : [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => '새 사용자 추가', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => '클립 보드 비우기', 'splash_delete_access' => '', @@ -1662,6 +1689,8 @@ URL : [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1902,6 +1931,8 @@ URL : [url]', 'version_deleted_email_subject' => '[sitename] : [name] - 버전 삭제', 'version_info' => '버전 정보', 'view' => '보기', +'view_document' => '', +'view_folder' => '', 'view_online' => '온라인으로 보기', 'warning' => '경고', 'webauthn_auth' => '', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index 88ada726f..9b1633fec 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -25,6 +25,13 @@ $text = array( '2_factor_auth' => 'ການກວດສອບແບບ 2 ປັດໃຈ', '2_factor_auth_info' => 'ລະບົບນີ້ໄຊ້ການກວດສອບແບບ 02 ປັດໃຈ. ເຈົ້າຈະຕ້ອງມີ Google Authenticator ໃນໂທລະສັບມືຖືຂອງທ່ານ. ດ້ານລຸ່ມແມ່ນມີ QR Codes ສອງແບບ ທາງດ້ານຂວາຈະມີຄວາມເປັນສ່ວນຕົວຂອງເຈົ້າ, ສ່ວນດ້ານຊ້າຍຂອງເຈົ້າແມ່ນຈະສາມາດຕັ້ງຄ່າຄວາມເປັນສ່ວນຕົວໄຫມ່. ຖ້າເຈົ້າຕັ້ງຄ່າຄວາມເປັນສ່ວນຕົວໄຫມ່ຮຽບຮ້ອຍ ແລ້ວນັ້ນໃຫ້ແນ່ໃຈວ່າໄດ້ສະແກນອີກຄັ້ງດ້ວຍ Google Authenticator', '2_fact_auth_secret' => 'ຄວາມລັບ', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'ຍອມຮັບ', 'access_control' => 'ການຄວບຄຸມການເຂົ້າເຖິງ', 'access_control_is_off' => 'ການຄວບຄຸມການເຂົ້າເຖິງຂັນສຸງໄດ້ຖືກປິດ', @@ -220,6 +227,8 @@ URL: [url]', 'calendar' => 'ປະຕຶທຶນ', 'calendar_week' => 'ປະຕຶທຶນປະຈຳອາທຶດ', 'cancel' => 'ຍົກເລີກ', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'ບໍ່ສາມາດແກ້ໄຂເອກະສານທີ່ລ້າສະໄຫມ ຫຼື ເອກະສານທີ່ຖືກປະຕິເສດໄດ້', 'cannot_change_final_states' => 'ຄຳເຕືອນ: ເຈົ້າບໍ່ສາມາດປ່ຽນແປງສະຖານະຂອງເອກະສານທີ່ຖືກປະຕິເສດ, ໝົດອາຍຸ ຫຼື ລໍຖ້າການກວດຄືນ ຫຼື ອະນຸມັດ', 'cannot_delete_user' => 'ບໍ່ສາມາດລົບຜູ້ໄຊ້ໄດ້', @@ -325,6 +334,7 @@ URL: [url]', 'daily' => 'ປະຈຳວັນ', 'databasesearch' => 'ຄົ້ນຫາຖານຂໍ້ມູນ', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'ວັນທີ', 'days' => 'ວັນ', 'debug' => 'ກວດແກ້ຈຸດບົກຜ່ອງ', @@ -350,6 +360,7 @@ URL: [url]', 'documents_locked' => 'ເອກະສານທີ່ຖືກລັອກ', 'documents_locked_by_you' => 'ເອກະສານນີ້ແມ່ນເຈົ້າເປັນຄົນລັອກ', 'documents_only' => 'ເອກະສານຢ່າງດຽວ', +'documents_rejected' => '', 'documents_to_approve' => 'ເອກະສານທີ່ລໍຖ້າອະນຸມັດຈາກທ່ານ', 'documents_to_correct' => '', 'documents_to_process' => 'ເອກະສານທີ່ຢູ່ໃນຂັ້ນຕອນການດຳເນີນງານ', @@ -391,7 +402,9 @@ URL: [url]', 'document_duplicate_name' => 'ຊື່ເອກະສານຊໍ້າ', 'document_has_no_workflow' => 'ເອກະສານບໍ່ມີເວີກໂຟ', 'document_infos' => 'ຂໍ້ມູນເອກະສານ', -'document_is_checked_out' => 'ຂະນະນີ້ມີການກວດສອບເອກະສານ ຫາກເຈົ້າອັບໂຫລດເວີຊັນໄຫມ່ລະບົບຈະບໍ່ສາມາດກວດສອບລະບົບທີປິດອອກໄດ້ອີກຕໍ່ໄປ', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'ຂະນະນີ້ມີການກວດສອບເອກະສານ ຫາກເຈົ້າອັບໂຫລດເວີຊັນໄຫມ່ລະບົບຈະບໍ່ສາມາດກວດສອບລະບົບທີປິດອອກໄດ້ອີກຕໍ່ໄປ', 'document_is_not_locked' => 'ເອກະສານນີ້ແມ່ນບໍ່ໄດ້ລັອກ', 'document_link_by' => 'ເຊື່ອມໂຢງໂດຍ', 'document_link_public' => 'ສາທາລະນະ', @@ -917,6 +930,7 @@ URL: [url]', 'october' => 'ເດືອນ ຕຸລາ', 'old' => 'ເກົ່າ', 'only_jpg_user_images' => 'ອາດໄຊ້ພາບ ຈິພີເຈ ເປັນພາບຂອງຜູ້ນຳໄຊ້ເທົ່ານັ້ນ', +'operation_disallowed' => '', 'order_by_sequence_off' => 'ການສັ່ງຊື້ຕາມລຳດັບຖືກປິດຢູ່ການຕັ້ງຄ່າ, ຖ້າເຈົ້າຕ້ອງການໃຫ້ພາລາມິດເຕີນີ້ໄດ້ຮັບຜົນ, ເຈົ້າຈະຕ້ອງເປີດໄຊ້ງານອີກຄັ້ງ', 'original_filename' => 'ຊື່ໄຟລຕົ້ນສະບັບ', 'overall_indexing_progress' => 'ຄວາມຄືບໜ້າການເຮັດດັດສະນີໂດຍລວມ', @@ -1314,6 +1328,10 @@ URL: [url]', 'settings_createdirectory' => 'ການສ້າງໄດ້ເລັກທໍລີ', 'settings_currentvalue' => 'ມູນຕ່າປະຈຸບັນ', 'settings_Database' => 'ການຕັ້ງຄ່າຖານຂໍ້ມູນ', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'ຖານຂໍ້ມູນ', 'settings_dbDatabase_desc' => 'ຊື່ຂອງຖານຂໍ້ມູນຂອງເຈົ້າປ້ອນລະຫວ່າງຂັ້ນຕອນການຕິດຕັ້ງ, ບໍ່ໃຫ້ແກ້ໄຂຂໍ້ມູນນີ້ເວັ້ນແຕ່ວ່າມີຄວາມຈໍາເປັນ, ຍົກຕົວຢ່າງເຊັ່ນວ່າຍ້າຍຖານຂໍ້ມູນແລ້ວ', 'settings_dbDriver' => 'ປະເພດຖານຂໍ້ມູນ', @@ -1355,6 +1373,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => 'ເປີດໄຊ້ງານຄຸນລັກສະນະນີ້ຖ້າວ່າເຈົ້າຕ້ອງການໃຫ້ຜູ້ດູແລລະບົບສະແດງລາຍຊື່ຜູ້ກວດສອບ/ຜູ້ອະນຸມັດແລະສຳລັບການປ່ຽນວິທີການເຮັດວຽກ', 'settings_enableCalendar' => 'ເປີດໄຊ້ງານປະຕິທິນ', 'settings_enableCalendar_desc' => 'ເປີດ / ປິດ ປະຕິທິນ', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'ເປີດໄຊ້ຄິບບອດ', 'settings_enableClipboard_desc' => 'ເປີດ/ ປິດການໄຊ້ຄິບບອສໃນໜ້າຕ່າງ ວິວໂຟລເດີ', 'settings_enableConverting' => 'ເປີດໄຊ້ງານການແປງ', @@ -1515,6 +1535,8 @@ URL: [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'ชนิดละครใบ้แทนที่', 'settings_overrideMimeType_desc' => 'แทนที่ ชนิดละครใบ้ ที่จัดส่งโดยเบราว์เซอร์ถ้าไฟล์ถูกอัปโหลด ชนิดละครใบ้ใหม่จะถูกกำหนดโดย SeedDMS เอง.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'ໄຟລບາງສ່ວນ', 'settings_partitionSize_desc' => 'ຂະໜາດຂອງໄຟລບາງສ່ວນເປັນໄບຣທີອັບໂຫລດ,ບໍ່ສາມາດຕັ້ງຄ່າທີ່ໃຫ່ຍກ່ວາຂະໜາດອັບໂຫຼດສູງສຸດທີກຳນົດໂດຍເຊີເວີ', 'settings_passwordExpiration' => 'ລະຫັດໝົດອາຍຸ', @@ -1610,9 +1632,11 @@ URL: [url]', 'settings_System' => 'ລະບົບ', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1626,6 +1650,8 @@ URL: [url]', 'settings_updateNotifyTime' => 'ອັບເດດເວລາການແຈ້ງເຕືອນ', 'settings_updateNotifyTime_desc' => 'ຜູ້ໄຊ້ຈະໄດ້ຮັບການແຈ້ງກ່ຽວກັບການປ່ຽນແປງເອກະສານທີ່ເກີດຂື້ນພາຍໃນວິນາທີສຸດທ້າຍ "ແຈ້ງເຕືອນເວລາ "', 'settings_upgrade_php' => 'ອັບເກດ PHP ຢ່າງນ້ອຍຕ້ອງເປັນເວີຊັ້ນ 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'ການກຳນົດຊື່ໄຟລ', 'settings_versioningFileName_desc' => 'ຊື່ຂອງແຟ້ມຂໍ້ມູນການກຳນົດເວີຊັນທີ່ສ້າງໂດຍເຄື່ອງມືສຳຮອງຂໍ້ມູນ', 'settings_versiontolow' => 'ເວີຊັນເກົ່າ', @@ -1667,6 +1693,7 @@ URL: [url]', 'splash_add_to_transmittal' => 'ເພີ່ມການສົ່ງຜ່ານ', 'splash_add_transmittal' => 'ເພີ່ມການສົ່ງຜ່ານ', 'splash_add_user' => 'ເພີ່ມຜູ້ໄຊ້ໄຫມ່ແລ້ວ', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'ລ້າງແຄຣແລ້ວ', 'splash_cleared_clipboard' => 'ລ້າງຄິບບອດແລ້ວ', 'splash_delete_access' => '', @@ -1688,6 +1715,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => 'ເກີດຂໍ້ຜິດພາດໃນຂະນະທີ່ເພີ່ມເອກະສານເພື່ອຕິດຕໍ່', 'splash_error_rm_download_link' => 'ຂໍ້ຜິດພາດໃນການລົບລິງການດາວໂຫລດ', 'splash_error_send_download_link' => 'ຂໍ້ຜິດພາດໃນການລົບລິງການດາວໂຫລດ', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1928,6 +1957,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]:[name] - ເວີຊັ້ນທີຖືກລົບ', 'version_info' => 'ຂໍ້ມູນເວີຊັນ', 'view' => 'ດູ', +'view_document' => '', +'view_folder' => '', 'view_online' => 'ດູອອນລາຍ', 'warning' => 'ການເຕືອນ', 'webauthn_auth' => '', diff --git a/languages/nb_NO/lang.inc b/languages/nb_NO/lang.inc index 8701bfcb0..9f9a47c03 100644 --- a/languages/nb_NO/lang.inc +++ b/languages/nb_NO/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1729) +// Translators: Admin (1731) $text = array( '2_factor_auth' => '2-trinns autentisering', '2_factor_auth_info' => 'Dette systemet håndhever 2-faktor autentisering. Du trenger Google Authenticator på mobiltelefonen din. Nedenfor ser du to QR-koder. Den rette er din nåværende hemmelighet. På venstre side kan du angi en ny hemmelighet. Hvis du angir en ny hemmelighet, må du huske å skanne den på nytt med Google Authenticator.', '2_fact_auth_secret' => 'Hemmelig', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Godkjenn', 'access_control' => 'Adgangskontroll', 'access_control_is_off' => 'Avansert adgangskontroll er deaktivert', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Kalender', 'calendar_week' => 'Kalenderuke', 'cancel' => 'Avbryt', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Kan ikke endre et foreldet eller avvist dokument', 'cannot_change_final_states' => 'Advarsel: Du kan ikke endre status for dokument som er avvist, utløpt eller i påvente av gjennomgang eller godkjenning', 'cannot_delete_user' => 'Kan ikke slette bruker', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'Daglig', 'databasesearch' => 'Søk i database', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'Dato', 'days' => 'dager', 'debug' => 'Feilsøking', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => 'Låste dokumenter', 'documents_locked_by_you' => 'Dokumenter som du har låst', 'documents_only' => 'Bare dokumenter', +'documents_rejected' => '', 'documents_to_approve' => 'Dokumenter som venter på din godkjenning', 'documents_to_correct' => 'Dokumenter som trenger dine rettelser', 'documents_to_process' => 'Dokumenter som trenger din behandling', @@ -400,7 +411,9 @@ Bruker: [username]', 'document_duplicate_name' => 'Dupliser dokumentnavn', 'document_has_no_workflow' => 'Dokumentet har ingen arbeidsflyt', 'document_infos' => 'Dokumentinformation', -'document_is_checked_out' => 'Dokumentet er allerede utsjekket. Hvis du laster opp en ny version kan den utsjekkede versionen ikke sjekkes inn igen.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Dokumentet er allerede utsjekket. Hvis du laster opp en ny version kan den utsjekkede versionen ikke sjekkes inn igen.', 'document_is_not_locked' => 'Dette dokumentet er ikke låst', 'document_link_by' => 'Koblet av', 'document_link_public' => 'Offentlig', @@ -477,7 +490,7 @@ URL: [url]', 'dropfolderdir_missing' => 'Din personlige slippmappe eksisterer ikke på serveren! Be administratoren din om å opprette den.', 'dropfolder_file' => 'Fil fra personlige slippmappe', 'dropfolder_folder' => 'Katalog fra personlige slippmappe', -'dropfolder_metadata' => 'Metadata fra personlige slippmappe', +'dropfolder_metadata' => '', 'dropupload' => 'Hurtig opplasting', 'drop_files_here' => 'Dra filene hit!', 'dump_creation' => 'Lag database-dump', @@ -938,6 +951,7 @@ URL: [url]', 'october' => 'Oktober', 'old' => 'Gammel', 'only_jpg_user_images' => 'Bare .jpg-bilder kan brukes som bruker-bilder', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Sortering etter sekvens er slått av i innstillingene. Hvis du vil at denne parameteren skal ha effekt, må du slå den på igjen.', 'original_filename' => 'Orginalt filnavn', 'overall_indexing_progress' => 'Samlet fremgang for indeksering', @@ -1146,7 +1160,7 @@ URL: [url]', 'revision_request_email_subject' => '[sitename]: [name] - Korrektur forespørsel', 'revision_status' => 'Status', 'revision_submit_email_body' => 'Revisjon av sendt e-post emne', -'revision_submit_email_subject' => 'Revisjon av sendt e-post emne', +'revision_submit_email_subject' => '[sitename]: [name] - Revisjon av sendt e-post emne', 'revision_summary' => 'Korrektur sammendrag', 'revisors' => 'Korrekturlesere', 'revisor_already_assigned' => 'Bruker er allerede tilordnet som korrekturleser.', @@ -1327,6 +1341,10 @@ Bruker: [username] 'settings_createdirectory' => 'Lag mappe', 'settings_currentvalue' => 'Nåværende verdi', 'settings_Database' => 'Databaseinnstillinger', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Database', 'settings_dbDatabase_desc' => 'Navnet på databasen som ble lagt inn under installasjonsprosessen. Ikke rediger dette feltet med mindre det er nødvendig, hvis databasen for eksempel er flyttet.', 'settings_dbDriver' => 'Databasetype', @@ -1368,6 +1386,8 @@ Bruker: [username] 'settings_enableAdminRevApp_desc' => 'Aktiver dette hvis du vil at administratorer skal være oppført som korrekturlesere / godkjennere og for arbeidsflytoverganger.', 'settings_enableCalendar' => 'Aktiver kalender', 'settings_enableCalendar_desc' => 'Aktiver/deaktiver kalender', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Aktiver utklippstavle', 'settings_enableClipboard_desc' => 'Aktiver/deaktiver utklippstavlen på \'Vis mappe\' siden', 'settings_enableConverting' => 'Aktiver konvertering', @@ -1528,6 +1548,8 @@ Bruker: [username] 'settings_onePageMode_desc' => 'En sidemodus vil slå på javascript-kode på ViewFolder-siden, som oppdaterer mappe/dokumentliste, navigasjon osv. Når du klikker på en mappe eller endrer sorteringsparameter.', 'settings_overrideMimeType' => 'Overstyr Mime-type', 'settings_overrideMimeType_desc' => 'Overstyr Mime-type levert av nettleseren, hvis en fil lastes opp. Den nye Mime-type bestemmes av SeedDMS selv.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Oppdelt filstørrrelse', 'settings_partitionSize_desc' => 'Størrelse på oppdelte filer i byte, lastet opp av jumploader. Ikke angi en verdi som er større enn den maksimale opplastningsstørrelsen som er angitt av serveren.', 'settings_passwordExpiration' => 'Utløp av passord', @@ -1623,9 +1645,11 @@ Bruker: [username] 'settings_System' => 'System', 'settings_tasksInMenu' => 'Valgte oppgaver', 'settings_tasksInMenu_approval' => 'Godkjenninger', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => 'Velg oppgavene som skal telles. Hvis ingen er valgt, telles alle oppgavene.', 'settings_tasksInMenu_needscorrection' => 'Retting nødvendig', 'settings_tasksInMenu_receipt' => 'Kvitteringer', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => 'Korrigeringer', 'settings_tasksInMenu_revision' => 'Revisjoner', 'settings_tasksInMenu_workflow' => 'Arbeidsflyt', @@ -1639,6 +1663,8 @@ Bruker: [username] 'settings_updateNotifyTime' => 'Oppdater varslingstid', 'settings_updateNotifyTime_desc' => 'Brukere får beskjed om dokumentendringer som skjedde i løpet av de siste \'Update Notify Time\' sekunder', 'settings_upgrade_php' => 'Oppgrader PHP til minst versjon 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Versjon av filnavn', 'settings_versioningFileName_desc' => 'Navnet på den versjonsfil som er laget av sikkerhetskopieringsverktøyet.', 'settings_versiontolow' => 'Versjonen for lav', @@ -1680,6 +1706,7 @@ Bruker: [username] 'splash_add_to_transmittal' => 'Legg til overføring', 'splash_add_transmittal' => 'Lagt til overføring', 'splash_add_user' => 'Ny bruker lagt til', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'Cache ble slettet', 'splash_cleared_clipboard' => 'Utklippstavlen ryddet', 'splash_delete_access' => 'Adgangs retten er slettet', @@ -1701,6 +1728,8 @@ Bruker: [username] 'splash_error_add_to_transmittal' => 'Feil under tilføyelse av dokument til overføringen', 'splash_error_rm_download_link' => 'Feil ved fjerning av nedlastingslenke', 'splash_error_send_download_link' => 'Feil under sending av nedlastingslenke', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => 'Oppdatert liste over utvidelser fra oppbevaringsted', 'splash_extension_import' => 'Utvidelse installert', 'splash_extension_refresh' => 'Oppdaterte liste over utvidelser', @@ -1941,6 +1970,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Versjon slettet', 'version_info' => 'Versjons informasjon', 'view' => 'Vis', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Vis på nett', 'warning' => 'Advarsel', 'webauthn_auth' => '', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 8e768a45b..96aa7d2d3 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (780), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) +// Translators: Admin (1167), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) $text = array( '2_factor_auth' => '2-factor-authenticatie', -'2_factor_auth_info' => 'Dit systeem werkt met 2-factor-authenticatie. U heeft de Google Authenticator nodig op uf mobiele telfoon. Hieronder staan 2 QR-codes. De rechter is uw huidige geheime code. Met de linker kunt u een nieuwe geheime code instellen. Denk erom de nieuwe code opnieuw te scannen met Googke Authenticator.', +'2_factor_auth_info' => 'Dit systeem werkt met 2-factor-authenticatie. U heeft de Google Authenticator nodig op uw mobiele telfoon. Hieronder staan 2 QR-codes. De rechter is uw huidige geheime code. Met de linker kunt u een nieuwe geheime code instellen. Denk erom de nieuwe code opnieuw te scannen met Googke Authenticator.', '2_fact_auth_secret' => 'Toegangscode 2-factor-authenticatie', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Accepteren', 'access_control' => 'Toegangscontrole', 'access_control_is_off' => 'Toegangscontrole staat uit', @@ -34,14 +41,14 @@ $text = array( 'access_mode_all' => 'Alle machtigingen', 'access_mode_none' => 'Geen toegang', 'access_mode_read' => 'Leesrechten', -'access_mode_readwrite' => 'Lees- en Schrijf rechten', +'access_mode_readwrite' => 'Lees- en Schrijfrechten', 'access_permission_changed_email' => 'Machtigingen gewijzigd', -'access_permission_changed_email_body' => 'Toestemming veranderd -Document: [naam] -Bovenliggende map: [folder_pad] -Gebruiker: [gebruikersnaam] +'access_permission_changed_email_body' => 'Permission changed +Document: [name] +Parent folder: [folder_path] +User: [username] URL: [url]', -'access_permission_changed_email_subject' => '[naam site]: [naam] - Toestemming gewijzigd', +'access_permission_changed_email_subject' => '[sitename]: [name] - Toestemming gewijzigd', 'according_settings' => 'volgens instellingen', 'action' => 'Actie', 'actions' => 'Acties', @@ -53,12 +60,12 @@ URL: [url]', 'action_review' => 'Beoordelen', 'action_revise' => 'Nog herzien', 'add' => 'Toevoegen', -'add_approval' => 'Verzend [Goedkeuring]', +'add_approval' => 'Verzend goedkeuring', 'add_attrdefgroup' => 'Voeg een nieuwe attribuutgroep toe', 'add_document' => 'Document toevoegen', 'add_document_link' => 'Link toevoegen', 'add_document_notify' => 'Notificatie toekennen', -'add_doc_reviewer_approver_warning' => 'N.B. Documenten zijn automatisch gemarkeeerd als [Gepubliceerd] als geen [Autoriseerder] of [Controleur] is toegewezen.', +'add_doc_reviewer_approver_warning' => 'N.B. Documenten zijn automatisch gemarkeeerd als \'Gepubliceerd\' als geen goedkeurder of beoordelaaris toegewezen.', 'add_doc_workflow_warning' => 'N.B. Documenten worden automatisch gemarkeerd als vrijgegeven, indien er geen workflow is toegewezen.', 'add_event' => 'Activiteit toevoegen', 'add_group' => 'Nieuwe groep toevoegen', @@ -90,18 +97,18 @@ URL: [url]', 'and' => 'en', 'apply' => 'Toepassen', 'approvals_accepted' => '[no_approvals] goedkeuringen', -'approvals_accepted_latest' => '', +'approvals_accepted_latest' => 'Er zijn [no_approvals] goedkeuringen', 'approvals_and_reviews_accepted' => '[no_approvals] goedkeuringen en [no_reviews] geaccepteerde reviews', 'approvals_and_reviews_not_touched' => '[no_approvals] goedkeuringen [no_reviews] reviews nog niet behandeld', 'approvals_and_reviews_rejected' => '[no_approvals] goedkeuringen en [no_reviews] reviews afgekeurd', 'approvals_not_touched' => '[no_approvals] goedkeuringen nog niet behandeld', -'approvals_not_touched_latest' => '', +'approvals_not_touched_latest' => 'Er zijn [no_approvals] goedkeuringen', 'approvals_rejected' => '[no_approvals] goedkeuringen afgekeurd', -'approvals_rejected_latest' => '', +'approvals_rejected_latest' => 'Er zijn [no_approvals] in de laatste versie', 'approvals_without_group' => 'Goedkeuringen zonder groep', 'approvals_without_user' => 'Goedkeuringen zonder gebruiker', 'approval_deletion_email' => 'Goedkeuringsverzoek verwijderd', -'approval_deletion_email_body' => 'Approval request deleted +'approval_deletion_email_body' => 'Goedkeuringsverzoek verwijderd Document: [name] Version: [version] Parent folder: [folder_path] @@ -110,7 +117,7 @@ URL: [url]', 'approval_deletion_email_subject' => '[sitename]: [name] - Verzoek om goedkeuring verwijderd', 'approval_file' => 'Goedkeuring bestand', 'approval_group' => 'Goedkeuring Groep', -'approval_log' => 'Goedkeuring overzicht', +'approval_log' => 'Overzicht van goedkeuringen', 'approval_request_email' => 'Goedkeuring verzoek', 'approval_request_email_body' => 'Toestemming vereist Document: [name] @@ -118,7 +125,7 @@ Versie: [version] Bovenliggende map: [folder_path] User: [username] URL: [url]', -'approval_request_email_subject' => '[Naam site]: [naam] - Toestemming vereist', +'approval_request_email_subject' => '[sitename]: [name] - Toestemming vereist', 'approval_status' => 'Goedkeuring Status', 'approval_submit_email' => 'Goedkeuringings-email versturen', 'approval_submit_email_body' => 'Goedkeuringings-email versturen', @@ -131,25 +138,25 @@ URL: [url]', 'april' => 'april', 'archive' => 'Archief', 'archive_creation' => 'Archief aanmaken', -'archive_creation_warning' => 'Met deze handeling maakt U een Archief aan van alle bestanden in het DMS. Na het aanmaken van het Archief, wordt deze opgeslagen in de data-map van uw server.
Waarschuwing: een leesbaar Archief kan niet worden gebruikt voor server back-up doeleinde.', +'archive_creation_warning' => 'Met deze handeling maakt U een Archief aan van alle bestanden in het DMS. Na het aanmaken van het Archief, wordt dit opgeslagen in de data-map van uw server.
Waarschuwing: een leesbaar Archief kan niet worden gebruikt voor server back-up doeleinde.', 'ar_EG' => 'Arabisch', -'assign_approvers' => 'Aangewezen [Goedkeurders]', +'assign_approvers' => 'Wijs goedkeurders aan', 'assign_recipients' => 'Wijs ontvangers aan', -'assign_reviewers' => 'Aangewezen [Controleurs]', -'assign_user_property_to' => 'Wijs gebruikers machtigingen toe aan', +'assign_reviewers' => 'Wijs beoordelaars aan', +'assign_user_property_to' => 'Wijs gebruikersmachtigingen toe aan', 'assumed_released' => 'vermoedelijke status: Gepubliceerd', 'attrdefgroup_management' => 'Beheer attribuut-definiities', 'attrdefgrp_show_detail' => 'Details Beheer attribuut-definiities', 'attrdefgrp_show_list' => 'Lijst van attribuut-definiities', 'attrdefgrp_show_search' => 'Zoeken naar attribuut-definiities', 'attrdefgrp_show_searchlist' => 'Lijst van gezochte attribuut-definiities', -'attrdef_exists' => 'Kenmerkdefinitie bestaat al', -'attrdef_info' => 'Kenmerk info', -'attrdef_in_use' => 'Kenmerkdefinitie nog in gebruikt', -'attrdef_management' => 'Kenmerkdefinitie-beheer', +'attrdef_exists' => 'Attribuut-definitie bestaat al', +'attrdef_info' => 'attribuut info', +'attrdef_in_use' => 'attribuutdefinitie nog in gebruikt', +'attrdef_management' => 'Attribuut-definities beheren', 'attrdef_maxvalues' => 'Max. aantal waarden', 'attrdef_minvalues' => 'Min. aantal waarden', -'attrdef_minvalues_help' => '', +'attrdef_minvalues_help' => 'Minimum aantal waardes. Zet het op 1.', 'attrdef_min_greater_max' => 'Het minimum aantal is groter dan het maximum aantal', 'attrdef_multiple' => 'Meerdere waarden toegestaan', 'attrdef_multiple_needs_valueset' => 'Meerdere waarden nodig', @@ -158,21 +165,21 @@ URL: [url]', 'attrdef_noname' => 'Geen naam voor attribuut definitie', 'attrdef_objtype' => 'Object type', 'attrdef_regex' => 'Veelgebruikte uitdrukking', -'attrdef_regex_help' => '', +'attrdef_regex_help' => 'Regular expression (Regex) passend bij de attribuutwaarde (type is string)', 'attrdef_type' => 'Type', 'attrdef_type_boolean' => 'attribuut: boolean', 'attrdef_type_date' => 'attribuut: datum', -'attrdef_type_document' => '', +'attrdef_type_document' => 'Type Document', 'attrdef_type_email' => 'attribuut: email', 'attrdef_type_float' => 'attribuut: decimaal getal', -'attrdef_type_folder' => '', -'attrdef_type_group' => '', +'attrdef_type_folder' => 'Type Map', +'attrdef_type_group' => 'Type Groep', 'attrdef_type_int' => 'attribuut: geheel getal', 'attrdef_type_string' => 'attribuut: string', 'attrdef_type_url' => 'attribuut: url', -'attrdef_type_user' => '', -'attrdef_valueset' => 'Verzameling waarden', -'attrdef_valueset_help' => '', +'attrdef_type_user' => 'Type gebruiker', +'attrdef_valueset' => 'Verzameling waardes', +'attrdef_valueset_help' => 'Een lijst van waardes gescheiden door een willekeurig teken, dat ook het eerste teken van de string is: bijvoorbeeld #yes#no#maybe', 'attributes' => 'Attributen', 'attribute_changed_email_body' => 'Attribuut gewijzigd Document: [name] @@ -188,11 +195,11 @@ URL: [url]', 'attribute_value' => 'Waarde van het attribuut', 'attribute_value_not_in_valueset' => 'Waarde van attribuut bestaat niet', 'attr_malformed_boolean' => 'Foute vormgeving boolean', -'attr_malformed_date' => 'Foute vormgeving datum', -'attr_malformed_email' => 'Foute vormgeving email', -'attr_malformed_float' => 'Foute vormgeving getal', -'attr_malformed_int' => 'Foute vormgeving geheel getal', -'attr_malformed_url' => 'Foute vormgeving url', +'attr_malformed_date' => 'Foute vormgeving van datum', +'attr_malformed_email' => 'Foute vormgeving van email', +'attr_malformed_float' => 'Foute vormgeving van getal', +'attr_malformed_int' => 'Foute vormgeving van geheel getal', +'attr_malformed_url' => 'Foute vormgeving van url', 'attr_max_values' => 'attribuut: maximale waarde', 'attr_min_values' => 'attribuut: minimale waarde', 'attr_not_in_valueset' => 'Attribuut bestaat niet', @@ -203,26 +210,28 @@ URL: [url]', 'authentication' => 'Authentificatie', 'authentication_failed' => 'Authenticatie mislukte', 'author' => 'Auteur', -'automatic_status_update' => 'Automatische Status wijziging', +'automatic_status_update' => 'Automatische statuswijziging', 'back' => 'Terug', -'backup_list' => 'Bestaande backup lijst', +'backup_list' => 'Bestaande backuplijst', 'backup_log_management' => 'Backup/loggen', -'backup_remove' => 'Verwijder backup bestand', -'backup_tools' => 'Backup gereedschap', +'backup_remove' => 'Verwijder backupbestand', +'backup_tools' => 'Backup-gereedschap', 'between' => 'tussen', 'bg_BG' => 'Bulgaars', 'browse' => 'Browse', 'calendar' => 'Kalender', 'calendar_week' => 'Weekkalender', 'cancel' => 'Annuleren', -'cannot_assign_invalid_state' => 'Kan document niet aanpassen in deze status', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', +'cannot_assign_invalid_state' => 'Kan het document niet aanpassen in deze status', 'cannot_change_final_states' => 'Waarschuwing: U kunt de Status [afgewezen], [vervallen], [in afwachting van] (nog) niet wijzigen.', -'cannot_delete_user' => 'Kan gebruiker niet verwijderen', -'cannot_delete_yourself' => 'Kan uzelf niet verwijderen', -'cannot_move_root' => 'Foutmelding: U kunt de basis map niet verplaatsen.', -'cannot_retrieve_approval_snapshot' => 'Niet mogelijk om [Goedgekeurde] status voor de huidige versie van dit document te verkrijgen.', -'cannot_retrieve_review_snapshot' => 'Niet mogelijk om Beoordeling status voor de huidige versie van dit document te verkrijgen.', -'cannot_rm_root' => 'Foutmelding: U kunt de basis map niet verwijderen.', +'cannot_delete_user' => 'Kan deze gebruiker niet verwijderen', +'cannot_delete_yourself' => 'U kunt uzelf niet verwijderen', +'cannot_move_root' => 'Foutmelding: U kunt de basismap niet verplaatsen.', +'cannot_retrieve_approval_snapshot' => 'Het is niet mogelijk om [Goedgekeurde] status voor de huidige versie van dit document te verkrijgen.', +'cannot_retrieve_review_snapshot' => 'niet mogelijk om Beoordelingsstatus voor de huidige versie van dit document te verkrijgen.', +'cannot_rm_root' => 'Foutmelding: U kunt de basismap niet verwijderen.', 'categories' => 'Categorieen', 'categories_loading' => 'Categorieën worden geladen', 'category' => 'Categorie', @@ -232,7 +241,7 @@ URL: [url]', 'category_in_use' => 'Categorie is in gebruik door documenten.', 'category_noname' => 'Geen Categorienaam opgegeven.', 'ca_ES' => 'Catalaans', -'changelog_loading' => '', +'changelog_loading' => 'De change log word geladen …', 'change_assignments' => 'Wijzig taken/toewijzingen', 'change_password' => 'Wijzig wachtwoord', 'change_password_message' => 'Wachtwoord is gewijzigd.', @@ -246,7 +255,7 @@ URL: [url]', 'chart_docspermonth_title' => 'Nieuwe documenten per maand', 'chart_docsperstatus_title' => 'Documenten per status', 'chart_docsperuser_title' => 'Documenten per gebruiker', -'chart_selection' => 'Kies grafiek', +'chart_selection' => 'Kies een grafiek', 'chart_sizeperuser_title' => 'Schijfruimte per gebruiker', 'checkedout_file_has_different_version' => 'Checkout-document is een andere versie', 'checkedout_file_has_disappeared' => 'File is onvindbaar', @@ -255,8 +264,8 @@ URL: [url]', 'checkoutpath_does_not_exist' => 'Checkout-pad bestaat niet', 'checkout_document' => 'Checkout-document', 'checkout_is_disabled' => 'Checkout is niet mogelijk', -'choose_attrdef' => 'Kies een kenmerkdefinitie', -'choose_attrdefgroup' => 'Kies een kenmerkdefinitie-groep', +'choose_attrdef' => 'Kies een attribuutdefinitie', +'choose_attrdefgroup' => 'Kies een attribuutdefinitie-groep', 'choose_category' => 'Selecteer a.u.b.', 'choose_group' => 'Selecteer Groep', 'choose_role' => 'Selecteer een rol', @@ -280,7 +289,7 @@ URL: [url]', 'comment_for_current_version' => 'Versie van het commentaar', 'configure_extension' => 'Configureer extensie', 'confirm_clear_cache' => 'Ja, ik wil de cache opschonen!', -'confirm_create_fulltext_index' => 'Ja, Ik wil de volledigetekst index opnieuw maken!', +'confirm_create_fulltext_index' => 'Ja, Ik wil de fulltext index opnieuw maken!', 'confirm_move_document' => 'Bevestig verplaatsing van document', 'confirm_move_folder' => 'Bevestig de verplaatsing van de map', 'confirm_pwd' => 'Bevestig wachtwoord', @@ -294,13 +303,13 @@ 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_task' => 'Bevestig de verwijdering van deze taak', '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.', 'confirm_rm_user_from_processes' => 'Weet U zeker dat U de Gebruiker "[username]" wilt verwijderen uit dit proces?
Let op: deze handeling kan niet ongedaan worden gemaakt.', 'confirm_rm_version' => 'Weet U zeker dat U deze versie van het document "[documentname]" wilt verwijderen?
Pas op: deze handeling kan niet ongedaan worden gemaakt.', -'confirm_transfer_link_document' => '', +'confirm_transfer_link_document' => 'Versleep het document naar een document als a nieuwe versie. Alleen documenten met 1 versie zijn hiervoor geschikt.Het versleepte document wordt verwijderd', 'confirm_transfer_objects' => 'Weet U zeker dat U de documenten, mappen etc. van gebruiker "[username]" wilt overzetten?
Let op: deze handeling kan niet ongedaan worden gemaakt.', 'confirm_update_transmittalitem' => 'Bevestig verandering van te verzenden item', 'content' => 'Welkomstpagina', @@ -308,9 +317,9 @@ URL: [url]', 'converter_new_cmd' => 'Wijziging: nieuw commando', 'converter_new_mimetype' => 'Wijziging: nieuw mimetype', 'copied_to_checkout_as' => 'Gekopieerd naar checkout als:', -'create_download_link' => '', -'create_fulltext_index' => 'Creeer volledige tekst index', -'create_fulltext_index_warning' => 'U staat op het punt de volledigetekst opnieuw te indexeren. Dit kan behoorlijk veel tijd en snelheid vergen van het systeem. Als u zeker bent om opnieuw te indexeren, bevestig deze actie.', +'create_download_link' => 'Maak een download-link', +'create_fulltext_index' => 'Creëer de index voor de fulltext search', +'create_fulltext_index_warning' => 'U staat op het punt de volledige tekst opnieuw te indexeren. Dit kan behoorlijk veel tijd en snelheid vergen van het systeem. Als u echt opnieuw wilt indexeren, bevestig dan deze actie.', 'creation_date' => 'Aangemaakt', 'cs_CZ' => 'Tsjechisch', 'current_password' => 'Huidige wachtwoord', @@ -319,7 +328,8 @@ URL: [url]', 'current_version' => 'Huidige versie', 'daily' => 'Dagelijks', 'databasesearch' => 'Zoek in Database', -'database_schema_version' => '', +'database_schema_version' => 'Versie van het database-schema', +'data_loading' => 'Even geduld tot de data geladen is', 'date' => 'Datum', 'days' => 'Dagen', 'debug' => 'debug', @@ -331,7 +341,7 @@ URL: [url]', 'details' => 'Details', 'details_version' => 'Details voor versie: [version]', 'de_DE' => 'Duits', -'disable_extension' => '', +'disable_extension' => 'Schakel de extensie uit', 'disclaimer' => 'Dit is een beveiligde omgeving. Gebruik is alleen toegestaan voor geautoriseerde leden. Ongeautoriseerde toegang kan worden bestraft overeenkomstig (inter)nationale wetgeving.', 'discspace' => 'Schijfruimte', 'docs_in_reception_no_access' => 'Documenten zonder toegang ontvanger', @@ -343,15 +353,16 @@ URL: [url]', 'documents_expired' => 'Verlopen documenten', 'documents_in_process' => 'Documenten in behandeling', 'documents_locked' => 'Geblokkeerde documenten', -'documents_locked_by_you' => 'Documenten door U geblokkeerd', +'documents_locked_by_you' => 'Documenten door u geblokkeerd', 'documents_only' => 'Alleen documenten', +'documents_rejected' => '', 'documents_to_approve' => 'Documenten die wachten op uw goedkeuring', 'documents_to_correct' => 'Te corrigeren documenten', 'documents_to_process' => 'Te verwerken documenten', 'documents_to_receipt' => 'documenten te ontvangen', 'documents_to_review' => 'Documenten die wachten op uw controle', 'documents_to_revise' => 'Te reviseren documenten', -'documents_to_trigger_workflow' => '', +'documents_to_trigger_workflow' => 'Documenten in de workflow', 'documents_user_draft' => 'Concepten', 'documents_user_expiration' => 'Verlopen documenten', 'documents_user_needs_correction' => 'Documenten die verbeterd dienen te worden.', @@ -363,8 +374,15 @@ URL: [url]', 'documents_with_notification' => 'Documenten met notificatie', 'document_already_checkedout' => 'Al in behandeling genomen documenten', 'document_already_locked' => 'Dit document is al geblokkeerd', -'document_attribute_changed_email_body' => '', -'document_attribute_changed_email_subject' => '', +'document_attribute_changed_email_body' => 'Attribute changed +Document: [name] +Attribute: [attribute_name] +Old value: [attribute_old_value] +New value: [attribute_new_value] +Parent folder: [folder_path] +User: [username] +URL: [url]', +'document_attribute_changed_email_subject' => '[sitename]: [name] - Attribute changed', 'document_comment_changed_email' => 'Commentaar gewijzigd', 'document_comment_changed_email_body' => 'Commentaar gewijzigd Document: [name] @@ -374,7 +392,7 @@ Bovenliggende map: [folder_path] Gebruiker: [username] URL: [url]', 'document_comment_changed_email_subject' => '[sitename]: [name] - Commentaar gewijzigd', -'document_content_missing' => '', +'document_content_missing' => 'Inhoud document ontbreekt', 'document_count' => 'Aantal documenten', 'document_deleted' => 'Document verwijderd', 'document_deleted_email' => 'Document verwijderd', @@ -385,8 +403,10 @@ Gebruiker: [username]', 'document_deleted_email_subject' => '[sitename]: [name] - Document verwijderd', 'document_duplicate_name' => 'Dupliceer documentnaam', 'document_has_no_workflow' => 'Document bevat geen workflow', -'document_infos' => 'Document Informatie', +'document_infos' => 'Document-informatie', 'document_is_checked_out' => 'Document is uitgecheckt.', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Document is uitgecheckt.', 'document_is_not_locked' => 'Dit document is niet geblokkeerd', 'document_link_by' => 'Gekoppeld met', 'document_link_public' => 'Publiek', @@ -416,8 +436,13 @@ Gebruiker: [username] URL: [url]', 'document_status_changed_email_subject' => '[sitename]: [name] - Document status gewijzigd', 'document_title' => 'Document \'[documentname]\'', -'document_transfered_email_body' => '', -'document_transfered_email_subject' => '', +'document_transfered_email_body' => 'Document transfer to other user +Document: [name] +New owner: [newuser] +Parent folder: [folder_path] +User: [username] +URL: [url]', +'document_transfered_email_subject' => '[sitename]: [name] - Transfer Document', 'document_updated_email' => 'Document bijgewerkt', 'document_updated_email_body' => 'Document geupdate Document: [name] @@ -426,30 +451,30 @@ Gebruiker: [username] Commentaar: [comment] Commentaar versie: [version_comment] URL: [url]', -'document_updated_email_subject' => '[sitename]: [name] - Document geupdate', +'document_updated_email_subject' => '[sitename]: [name] - Document geüpdated', 'does_not_expire' => 'Verloopt niet', 'does_not_inherit_access_msg' => 'Erft toegang', 'download' => 'Download', 'download_extension' => 'Download extensie als zip file', -'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_header_approval_comment' => 'Commentaar bij goedkeuring', +'download_header_approval_date' => 'Datum goedkeuring', +'download_header_approval_state' => 'Status goedkeuring', +'download_header_approver' => 'Goedkeuring door', +'download_header_document_name' => 'Naam document', +'download_header_document_no' => 'Document nr.', +'download_header_filename' => 'Filenaam', +'download_header_internal_version' => 'Interne versie', +'download_header_reviewer' => 'Beoordelaar', +'download_header_review_comment' => 'Commentaar bij beoordeling', +'download_header_review_date' => 'Datum beoordeling', +'download_header_review_state' => 'Status beoordeling', +'download_header_state' => 'Status', 'download_links' => 'Download-links', -'do_no_transfer_to_user' => '', +'do_no_transfer_to_user' => 'Niet overdragen aan gebruiker', 'do_object_repair' => 'Repareer alle mappen en documenten.', 'do_object_setchecksum' => 'Set checksum', 'do_object_setfilesize' => 'Voer bestandgrootte in', -'do_object_setfiletype' => '', +'do_object_setfiletype' => 'Stel filetype in', 'do_object_unlink' => 'Verwijdere documentversie', 'draft' => 'Concept', 'draft_pending_approval' => 'Draft - in afwachting van goedkeuring', @@ -458,14 +483,14 @@ URL: [url]', 'dropfolderdir_missing' => 'Uw persoonlijke map om files te droppen (dropfolder) bestaat niet op de server! Vraag de administrator om deze aan te maken.', 'dropfolder_file' => 'Bestand in dropfolder', 'dropfolder_folder' => 'Map in dropfolder', -'dropfolder_metadata' => '', +'dropfolder_metadata' => 'eigenschappen vd dropfolder', 'dropupload' => 'Snel toevoegen', 'drop_files_here' => 'Sleep bestanden hierheen', 'dump_creation' => 'DB-dump aanmaken', 'dump_creation_warning' => 'M.b.v. deze functie maakt U een DB dump file. het bestand wordt opgeslagen in uw data-map op de Server', 'dump_list' => 'Bestaande dump bestanden', 'dump_remove' => 'Verwijder dump bestand', -'duplicates' => 'Dubbelen', +'duplicates' => 'Doublures', 'duplicate_content' => 'Dubbele inhoud', 'edit' => 'Wijzigen', 'edit_attributes' => 'Bewerk attributen', @@ -484,7 +509,7 @@ URL: [url]', 'edit_folder_props' => 'Wijzig Map eigenschappen', 'edit_group' => 'Wijzig Groep', 'edit_online' => 'Online bewerken', -'edit_online_warning' => '', +'edit_online_warning' => 'Waarschuwing: als u de wijzigingen opslaat, wordt de bestaande versie van het document overschreven. Er wordt dus geen nieuwe versie gemaakt.', 'edit_task' => 'Taak bewerken', 'edit_transmittal_props' => 'Opmerkingen bij verzending', 'edit_user' => 'Wijzig gebruiker', @@ -500,15 +525,15 @@ URL: [url]', 'empty_folder_list' => 'Geen documenten of mappen', 'empty_list' => 'Lijst is leeg', 'empty_notify_list' => 'Geen gegevens', -'enable_extension' => '', +'enable_extension' => 'Activeer de extensie', 'en_GB' => 'Engels (GB)', 'equal_transition_states' => 'Begin- en eind-status zijn hetzelfde', 'error' => 'Fout', 'error_add_aro' => 'Verzoek om toegang toegevoegd', 'error_add_permission' => 'Voeg permissie toe', 'error_cleared_cache' => 'Fout bij het leegmaken van de cache', -'error_edit_task' => '', -'error_extension_getlist' => '', +'error_edit_task' => 'Fout bij het opslaan van de taak', +'error_extension_getlist' => 'Fout bij het ophalen van de lijst met extensies uit het repository', 'error_importfs' => 'Fout bij het importeren van form file systeem', 'error_no_document_selected' => 'Geen document geselecteerd', 'error_no_folder_selected' => 'Geen map geselecteerd', @@ -516,30 +541,30 @@ URL: [url]', 'error_remove_document' => 'Fout bij het verwijderen van document', 'error_remove_folder' => 'Fout bij het verwijderen van map', 'error_remove_permission' => 'Verwijder permissie', -'error_rm_workflow' => '', -'error_rm_workflow_action' => '', -'error_rm_workflow_state' => '', -'error_toogle_permission' => 'Wijzig permissie', -'error_transfer_document' => '', -'error_trigger_workflow' => '', -'error_update_document' => '', -'error_uploading_reviewer_only' => '', +'error_rm_workflow' => 'Fout bij het verwijderen van de workflow', +'error_rm_workflow_action' => 'Fout bij het verwijderen van een handeling uit de workflow', +'error_rm_workflow_state' => 'Fout bij het verwijderen van de workflow-status', +'error_toogle_permission' => 'Fout bij wijzigen van permissie', +'error_transfer_document' => 'Fout bij het overdragen van document', +'error_trigger_workflow' => 'Fout bij het triggeren van de workflow', +'error_update_document' => 'Fout tijdens updaten van het document', +'error_uploading_reviewer_only' => 'Fout bij het creëren van het document. Er is alleen een beoordelaar, geen goedkeurder.', 'es_ES' => 'Spaans', 'event_details' => 'Activiteit-details', 'exclude_items' => 'Sluit iets uit', 'expired' => 'Verlopen', 'expired_at_date' => 'Verloopdatum', -'expired_documents' => '', +'expired_documents' => 'Verlopen documenten', 'expires' => 'Verloopt', 'expire_by_date' => 'Vervaldatum', -'expire_in_1d' => 'Vervalt binnen 1 dag', -'expire_in_1h' => 'Vervalt binnen 1 uur', -'expire_in_1m' => 'Vervalt binnen 1 maand', -'expire_in_1w' => 'Vervalt binnen 1 week', -'expire_in_1y' => 'Vervalt binnen 1 jaar', -'expire_in_2h' => 'Vervalt binnen 2 uur', -'expire_in_2y' => 'Vervalt binnen 2 jaar', -'expire_in_3y' => '', +'expire_in_1d' => 'Vervalt over 1 dag', +'expire_in_1h' => 'Vervalt over 1 uur', +'expire_in_1m' => 'Vervalt over 1 maand', +'expire_in_1w' => 'Vervalt over 1 week', +'expire_in_1y' => 'Vervalt over 1 jaar', +'expire_in_2h' => 'Vervalt over 2 uur', +'expire_in_2y' => 'Vervalt over 2 jaar', +'expire_in_3y' => 'Vervalt over 3 jaar', 'expire_today' => 'Vervalt vandaag', 'expire_tomorrow' => 'Vervalt morgen', 'expiry_changed_email' => 'Verloopdatum gewijzigd', @@ -550,24 +575,24 @@ Gebruiker: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Vervaldatum gewijzigd', 'export' => 'export', -'export_user_list_csv' => '', -'extension_archive' => '', -'extension_changelog' => 'Overzicht wijzigingen', +'export_user_list_csv' => 'Exporteer gebruikers in csv-formaat', +'extension_archive' => 'Extensies', +'extension_changelog' => 'Overzicht van wijzigingen', 'extension_loading' => 'Laden van extensies ...', -'extension_manager' => 'Beheer uitbreidingen', -'extension_mgr_error_upload' => '', +'extension_manager' => 'Extensies beheren', +'extension_mgr_error_upload' => 'Fout bij het uploaden van de extensie', 'extension_mgr_installed' => 'Geïnstalleerd', 'extension_mgr_no_upload' => 'Installeren nieuwe extensies is niet mogelijk omdat de extensies map niet schrijfbaar is.', -'extension_mgr_no_zipfile' => '', +'extension_mgr_no_zipfile' => 'Fout bij uploaden extensie: is geen zipfile', 'extension_mgr_repository' => 'Beschikbaar', 'extension_version_list' => 'Versies', 'february' => 'februari', 'file' => 'Bestand', 'files' => 'Bestanden', 'files_deletion' => 'Bestanden verwijderen', -'files_deletion_warning' => 'Met deze handeling verwijdert U ALLE bestanden uit het DMS. Versie informatie blijft beschikbaar', +'files_deletion_warning' => 'Met deze handeling verwijdert U ALLE bestanden uit het DMS. Versie-informatie blijft beschikbaar', 'files_loading' => 'Even geduld. De lijst met bestanden wordt geladen ...', -'filetype' => '', +'filetype' => 'Type file', 'file_size' => 'Bestandsomvang', 'filter_for_documents' => 'Extra filter voor documenten', 'filter_for_folders' => 'Extra filter voor mappen', @@ -575,8 +600,15 @@ URL: [url]', 'folders' => 'Mappen', 'folders_and_documents_statistic' => 'Inhoudsopgave', 'folders_with_notification' => 'Mappen met notificatie', -'folder_attribute_changed_email_body' => '', -'folder_attribute_changed_email_subject' => '', +'folder_attribute_changed_email_body' => 'Attribute changed +Folder: [name] +Attribute: [attribute_name] +Old value: [attribute_old_value] +New value: [attribute_new_value] +Parent folder: [folder_path] +User: [username] +URL: [url]', +'folder_attribute_changed_email_subject' => '[sitename]: [name] - Attribute changed', 'folder_comment_changed_email' => 'Commentaar gewijzigd', 'folder_comment_changed_email_body' => 'Commentaar gewijzigd Map: [name] @@ -612,19 +644,19 @@ Gebruiker: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Folder hernoemd', 'folder_title' => 'Map naam \'[foldername]\'', -'foot_note' => '', +'foot_note' => 'Voetnoot', 'force_update' => 'Bijwerken', -'friday' => 'Vrijdag', -'friday_abbr' => 'FR', +'friday' => 'vrijdag', +'friday_abbr' => 'vr', 'from' => 'Van', 'fr_FR' => 'Frans', -'fullsearch' => 'Zoek in volledige tekst', -'fullsearch_hint' => 'Volledige tekst index', -'fulltextsearch_disabled' => 'Fulltext-zoeken uitgeschakeld', -'fulltext_converters' => 'Index document conversie', -'fulltext_info' => 'Volledige tekst index info', -'global_attributedefinitiongroups' => 'Kennmerk-definitie groepen', -'global_attributedefinitions' => 'Kenmerkdefinities', +'fullsearch' => 'Fulltext search', +'fullsearch_hint' => 'Index voor fulltext search', +'fulltextsearch_disabled' => 'Fulltext search uitgeschakeld', +'fulltext_converters' => 'Conversie t.b.v. indexering fulltext search', +'fulltext_info' => 'Inhoud van de fulltext index', +'global_attributedefinitiongroups' => 'Attribuut-definities in groepen', +'global_attributedefinitions' => 'attribuutdefinities', 'global_default_keywords' => 'Algemene sleutelwoorden', 'global_document_categories' => 'Categorieën', 'global_workflows' => 'Workflows', @@ -632,16 +664,16 @@ URL: [url]', 'global_workflow_states' => 'Workflow-status', 'group' => 'Groep', 'groups' => 'Groepen', -'group_approval_summary' => 'Groep [Goedkeuring] samenvatting', -'group_exists' => 'Groep bestaat reeds.', +'group_approval_summary' => 'Groepsgoedkeuring (samenvatting)', +'group_exists' => 'Groep bestaat reeds', 'group_info' => 'Info over de groep', 'group_management' => 'Groepenbeheer', 'group_members' => 'Groepsleden', 'group_receipt_summary' => 'Overzicht van ontvangst per groep', -'group_review_summary' => 'Groep Beoordeling samenvatting', -'group_revision_summary' => '', +'group_review_summary' => 'Samenvatting beoordeling per groep', +'group_revision_summary' => 'Samenvatting van de beoordelingen', 'guest_login' => 'Login als Gast', -'guest_login_disabled' => 'Gast login is uitgeschakeld.', +'guest_login_disabled' => 'Gast-login is uitgeschakeld.', 'hash' => 'Hashcode', 'help' => 'Help', 'home_folder' => 'Thuismap', @@ -652,58 +684,58 @@ URL: [url]', 'human_readable' => 'Leesbaar archief', 'hu_HU' => 'Hongaars', 'id' => 'ID', -'identical_version' => 'Nieuwe versie is identiek aan de huidige versie', +'identical_version' => 'Nieuwe versie is identiek aan de bestaande versie', 'import' => 'Importeer', 'importfs' => 'Importeer van bestandssysteem', -'import_extension' => '', +'import_extension' => 'Import-extensie', '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' => '', +'import_users_addnew' => 'Voeg nieuwe gebruikers toe', +'import_users_update' => 'Werk gebruikers bij', 'include_content' => 'inclusief inhoud', 'include_documents' => 'Inclusief documenten', 'include_subdirectories' => 'Inclusief submappen', -'indexing_tasks_in_queue' => 'Indexerings taken in wachtrij', -'index_converters' => '', -'index_document_unchanged' => '', -'index_done' => 'Indexering gereed', +'indexing_tasks_in_queue' => 'Percentage indexeringstaken in wachtrij', +'index_converters' => 'Converters tbv de index', +'index_document_unchanged' => 'Document is niet gewijzigd', +'index_done' => 'Indexering is gereed', 'index_error' => 'Fout bij indexering', 'index_folder' => 'Inhoud', -'index_no_content' => '', +'index_no_content' => 'Index heeft geen inhoud', 'index_pending' => 'Indexering moet nog gebeuren', 'index_waiting' => 'Indexering wacht', 'individuals' => 'Individuen', 'individuals_in_groups' => 'Individuen in groepen', -'info_recipients_tab_not_released' => '', -'inherited' => 'overgeerfd', -'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' => '', +'info_recipients_tab_not_released' => 'Ontvangstbevestiging van deze versie van het document is niet mogelijk omdat de versie nog niet is vrijgegeven.', +'inherited' => 'overgeërfd', +'inherits_access_copy_msg' => 'Lijst van overgeërfde toegang', +'inherits_access_empty_msg' => 'Begin met een lege toegangslijst', +'inherits_access_msg' => 'Toegang is overgeërfd.', +'installed_php_extensions' => 'Geïnstalleerde PHP-extensies', 'internal_error' => 'Interne fout', -'internal_error_exit' => 'Interne fout. Niet mogelijk om verzoek uit de voeren.', +'internal_error_exit' => 'Interne fout. niet mogelijk om verzoek uit de voeren.', 'invalid_access_mode' => 'Foutmelding: verkeerde toegangsmode', 'invalid_action' => 'Foutieve actie', 'invalid_approval_status' => 'Foutieve autorisatie status', 'invalid_create_date_end' => 'Foutieve eind-datum voor het maken van een periode.', 'invalid_create_date_start' => 'Foutieve begin-datum voor het maken van een periode.', -'invalid_doc_id' => 'Foutief Document ID', +'invalid_doc_id' => 'Foutief Document-ID', 'invalid_dropfolder_folder' => 'Ongeldige dropfolder-map', 'invalid_expiration_date_end' => 'Foute expiratiedatum', 'invalid_expiration_date_start' => 'Foute startdatum', 'invalid_file_id' => 'Foutief Bestand ID', -'invalid_folder_id' => 'Foutief Map ID', +'invalid_folder_id' => 'Foutief Map-ID', 'invalid_group_id' => 'Foutief Groep ID', -'invalid_link_id' => 'Foutief link ID', +'invalid_link_id' => 'Foutief link-ID', 'invalid_request_token' => 'Foutief Verzoek Token', 'invalid_review_status' => 'Foutief Controle Status', 'invalid_sequence' => 'Foutief volgwaarde', 'invalid_status' => 'Foutief Document Status', -'invalid_target_doc_id' => 'Foutief Doel Document ID', -'invalid_target_folder' => 'Foutief Doel Map ID', -'invalid_user_id' => 'Foutief Gebruiker ID', -'invalid_version' => 'Foutief Document Versie', +'invalid_target_doc_id' => 'Foutief Doel Document-ID', +'invalid_target_folder' => 'Foutief Doel Map-ID', +'invalid_user_id' => 'Foutief Gebruiker-ID', +'invalid_version' => 'Foutieve Document-versie', 'in_folder' => 'In map', 'in_revision' => 'In herziening', 'in_workflow' => 'In workflow', @@ -714,8 +746,8 @@ URL: [url]', 'js_form_error' => 'Fout in JavaScript', 'js_form_errors' => 'Fouten in JavaScript', 'js_invalid_email' => 'Ongeldige email', -'js_no_approval_group' => 'Selecteer a.u.b. een Goedkeuring Groep', -'js_no_approval_status' => 'Selecteer a.u.b. een Goedkeuring Status', +'js_no_approval_group' => 'Selecteer a.u.b. een goedkeuringsGroep', +'js_no_approval_status' => 'Selecteer a.u.b. een goedkeuringsStatus', 'js_no_comment' => 'Er zijn geen commentaren', 'js_no_currentpwd' => 'Geen geldig wachtwoord', 'js_no_email' => 'Voer uw e-mail adres in', @@ -726,8 +758,8 @@ URL: [url]', 'js_no_override_status' => 'Selecteer de nieuwe [override] status', 'js_no_pwd' => 'U moet uw wachtwoord invoeren', 'js_no_query' => 'Voer een zoekvraag in', -'js_no_review_group' => 'Selecteer a.u.b. een Controleursgroep', -'js_no_review_status' => 'Selecteer a.u.b. een Controle status', +'js_no_review_group' => 'Selecteer a.u.b. een beoordelaarsgroep', +'js_no_review_status' => 'Selecteer a.u.b. een beoordelingsFstatus', 'js_pwd_not_conf' => 'Wachtwoord en bevestigingswachtwoord zijn niet identiek', 'js_select_user' => 'Selecteer een Gebruiker', 'js_select_user_or_group' => 'Selecteer tenminste een Gebruiker of Groep', @@ -751,30 +783,30 @@ URL: [url]', 'linked_to_document' => 'Bijlage(n) bij document', 'linked_to_this_version' => 'Bijlage bij deze versie', 'link_alt_updatedocument' => 'Als u bestanden wilt uploaden groter dan het huidige maximum, gebruik aub de alternatieve upload pagina.', -'link_document' => '', +'link_document' => 'Link naar document', 'link_to_version' => 'Bijlage(n) bij versie', 'list_access_rights' => 'Toegangsrechten', 'list_contains_no_access_docs' => 'Geen toegankelijke documenten', 'list_hooks' => 'Hooks', -'list_tasks' => '', +'list_tasks' => 'Taken', 'local_file' => 'Lokaal bestand', 'locked_by' => 'In gebruik door', 'lock_document' => 'Blokkeer', 'lock_message' => 'Dit document is geblokkeerd door [username]. Alleen geautoriseerde Gebruikers kunnen het de-blokeren.', 'lock_status' => 'Status', -'logfile_loading' => '', +'logfile_loading' => 'De logfile wordt geladen...', 'login' => 'Login', -'login_disabled_text' => 'Uw account is gedeactiveerd, mogelijk door teveel foutieve inlogpogingen.', +'login_disabled_text' => 'Uw account is gedeactiveerd, mogelijk door te veel foutieve inlogpogingen.', 'login_disabled_title' => 'Account is gedeactiveerd', 'login_error_text' => 'Invoer fout: Gebruikersnaam en/of wachtwoord is fout.', 'login_error_title' => 'Login fout', 'login_not_given' => 'Er is geen Gebruikersnaam ingevoerd', 'login_ok' => 'Login geslaagd', -'login_restrictions_apply' => '', +'login_restrictions_apply' => 'Login mislukt vanwege restricties', 'logout' => 'Log uit', -'log_management' => 'Logbestanden beheer', +'log_management' => 'Logbestanden beheren', 'lo_LA' => 'Laotiaans', -'malformed_expiration_date' => '', +'malformed_expiration_date' => 'Verkeerde verloopdatum', 'manager' => 'Beheerder', 'manager_of_group' => 'U bent beheerder van deze groep', 'mandatory_approvergroups' => 'Verplichte groep \'[group]\'', @@ -789,15 +821,15 @@ URL: [url]', 'max_upload_size' => 'Maximale upload omvang voor ieder bestand', 'may' => 'mei', 'menu_dropfolder' => 'Dropfolder', -'menu_upload_from_dropfolder' => '', -'message' => '', +'menu_upload_from_dropfolder' => 'Dit bestand importeren', +'message' => 'Bericht', 'mimetype' => 'MIME Type', 'minutes' => 'minuten', 'misc' => 'Diversen', 'missing_checksum' => 'Controlesom ontbreekt', 'missing_file' => 'File ontbreekt', 'missing_filesize' => 'Bestandsgrootte ontbreekt', -'missing_php_extensions' => '', +'missing_php_extensions' => 'Ontbrekende PHP-extensies', 'missing_reception' => 'Ontvanger ontbreekt', 'missing_request_object' => 'Gevraagd object ontbreekt', 'missing_transition_user_group' => 'Gebruiker / groep ontbreekt voor de overdracht', @@ -805,7 +837,7 @@ URL: [url]', 'monday_abbr' => 'ma', 'monthly' => 'Maandelijks', 'month_view' => 'Maandoverzicht', -'more_objects_loading' => '', +'more_objects_loading' => 'Er wordt nog meer geladen...', 'move' => 'Verplaats', 'move_clipboard' => 'Verplaats klembord', 'move_document' => 'Verplaats document', @@ -814,13 +846,13 @@ URL: [url]', 'my_documents' => 'Mijn Documenten', 'my_transmittals' => 'Mijn zendingen', 'name' => 'Naam', -'nb_NO' => 'Noorweegs', -'needs_correction' => '', -'needs_workflow_action' => 'Dit document vereist uw aandacht. Bekijk deze onder het tabblad workflows.', +'nb_NO' => 'Noors', +'needs_correction' => 'Correctie nodig', +'needs_workflow_action' => 'Dit document vereist uw aandacht. Bekijk het onder het tabblad workflows.', 'network_drive' => 'Networkdrive', 'never' => 'Nooit', 'new' => 'Nieuw', -'new_attrdef' => 'Voeg een kenmerkdefinitie toe', +'new_attrdef' => 'Voeg een attribuutdefinitie toe', 'new_default_keywords' => 'Sleutelwoorden toevoegen', 'new_default_keyword_category' => 'Categorie Toevoegen', 'new_document_category' => 'Categorie toevoegen', @@ -851,11 +883,11 @@ Gebruikers: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nieuwe map', 'new_user_image' => 'Nieuwe afbeelding', -'next_revision_abbr' => '', +'next_revision_abbr' => 'Volgende beoord.', 'next_state' => 'Nieuwe status', 'nl_NL' => 'Nederlands', 'no' => 'Nee', -'notification' => '', +'notification' => 'Bericht', 'notify_added_email' => 'U bent toegevoegd aan de [notificatie lijst]', 'notify_added_email_body' => 'Toegevoegd aan notificatielijst Naam: [name] @@ -875,14 +907,14 @@ URL: [url]', 'no_action' => 'Geen actie nodig', 'no_approval_needed' => 'Geen goedkeuring gaande.', 'no_attached_files' => 'Geen bijlagen', -'no_attribute_definitions' => '', -'no_backup_dir' => '', +'no_attribute_definitions' => 'Geen attribuut-definities', +'no_backup_dir' => 'De backup-map is niet ingesteld.', 'no_current_version' => 'U werkt met een oude versie van SeedDMS. De laatste versie beschikbaar is [latestversion].', -'no_default_keywords' => 'Geen Sleutelwoorden beschikbaar', +'no_default_keywords' => 'Geen sleutelwoorden beschikbaar', 'no_docs_checked_out' => 'Geen documenten in gebruik genomen', -'no_docs_expired' => '', +'no_docs_expired' => 'Geen documenten verlopen.', 'no_docs_locked' => 'Geen documenten in gebruik.', -'no_docs_needs_correction' => '', +'no_docs_needs_correction' => 'Geen documenten te corrigeren', 'no_docs_rejected' => 'Geen documenten geweigerd', 'no_docs_to_approve' => 'Er zijn momenteel geen documenten die goedkeuring behoeven.', 'no_docs_to_look_at' => 'Geen documenten die aandacht behoeven.', @@ -904,16 +936,17 @@ URL: [url]', 'no_version_check' => 'Controle op een nieuwe versie van SeedDMS is mislukt! Dit kan komen omdat allow_url_fopen is ingesteld op 0 in uw PHP configuratie.', 'no_version_modification' => 'Geen versiewijziging', 'no_workflow_available' => 'Geen workflow beschikbaar', -'objectcheck' => 'Map/Document controle', +'objectcheck' => 'Mappen en documenten controleren', 'object_check_critical' => 'Ernstige fouten', 'object_check_warning' => 'Waarschuwingen', 'obsolete' => 'verouderd', 'october' => 'oktober', 'old' => 'Oude', 'only_jpg_user_images' => 'U mag alleen .jpg afbeeldingen gebruiken als gebruikersafbeeldingen.', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Volgorde uit', 'original_filename' => 'Originele bestandsnaam', -'overall_indexing_progress' => 'Indexerings voortgang totaal', +'overall_indexing_progress' => 'Voortgang van de indexering', 'owner' => 'Eigenaar', 'ownership_changed_email' => 'Eigenaar gewijzigd', 'ownership_changed_email_body' => 'Eigenaar gewijzigd @@ -958,7 +991,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' => '', +'php_info' => 'Informatie over PHP', 'pl_PL' => 'Pools', 'possible_substitutes' => 'Mogelijke alternatieven', 'preset_expires' => 'Preset verloopt', @@ -966,7 +999,7 @@ Mocht u de komende minuten geen email ontvangen, probeer het dan nogmaals en con 'preview_converters' => 'Converters', 'preview_images' => 'Voorbeelden', 'preview_markdown' => 'Voorbeeld in Markdown', -'preview_pdf' => 'Beeld vd PDF', +'preview_pdf' => 'Inhoud van het document', 'preview_plain' => 'Voorbeeld in platte tekst', 'previous_state' => 'Vorige staat', 'previous_versions' => 'Vorige versies', @@ -978,11 +1011,11 @@ Mocht u de komende minuten geen email ontvangen, probeer het dan nogmaals en con 'quota_is_disabled' => 'Quota support is momenteel niet actief in de eigenschappen. Een user-quotum instellen zal geen effect hebben tot quota actief zijn', 'quota_warning' => 'Uw maximale datagebruik is overschreden met [bytes]. Gelieve documenten of eerdere versies te verwijderen.', 'receipts_accepted' => '[no_receipts] ontvangen en geaccepteerd', -'receipts_accepted_latest' => '', +'receipts_accepted_latest' => '(er zijn [no_receipts] in de nieuwste versie)', 'receipts_not_touched' => '[no_receipts] ontvangen, nog niet behandeld', -'receipts_not_touched_latest' => '', +'receipts_not_touched_latest' => '(er zijn [no_receipts] in de nieuwste versie)', 'receipts_rejected' => '[no_receipts] ontvangen, geweigerd', -'receipts_rejected_latest' => '', +'receipts_rejected_latest' => '(er zijn [no_receipts] in de nieuwste versie)', 'receipts_without_group' => '[no_receipts] ontvangen, geen groep', 'receipts_without_user' => '[no_receipts] ontvangen, geen gebruiker', 'receipt_deletion_email_body' => 'Gebruiker is verwijderd uit de lijst van ontvangers @@ -1010,7 +1043,7 @@ URL: [url]', 'reception_noaction' => 'Geen actie', 'reception_rejected' => 'bestemming geweigerd', 'recipients' => 'Ontvangers', -'recipient_already_removed' => '', +'recipient_already_removed' => 'Ontvanger is al verwijderd', 'redraw' => 'Nogmaals weergeven', 'refresh' => 'Verversen', 'rejected' => 'Afgewezen', @@ -1033,7 +1066,7 @@ Gebruiker: [username] URL: [url]', 'removed_workflow_email_subject' => '[sitename]: [name] - Workflow verwijderd van document versie', 'removeFolderFromDropFolder' => 'Map verwijderen uit Dropfilder', -'remove_marked_files' => 'Geselecteerde bestanden zijn verwijderd', +'remove_marked_files' => 'Geselecteerde bestanden worden verwijderd', 'repaired' => 'Gerepareerd', 'repairing_objects' => 'Documenten en mappen repareren.', 'request_workflow_action_email_body' => 'De workflow vereist actie van uw kant. @@ -1063,11 +1096,11 @@ URL: [url]', 'reviewer_already_assigned' => 'is reeds aangewezen als beoordelaar', 'reviewer_already_removed' => 'is reeds verwijderd uit het beoordelingsproces of heeft reeds een beoordeling uitgevoerd', 'reviews_accepted' => '[no_reviews] reviews geaccepteerd', -'reviews_accepted_latest' => '', +'reviews_accepted_latest' => '(er zijn [no_reviews] in de nieuwste versie)', 'reviews_not_touched' => '[no_reviews] reviews niet geopend', -'reviews_not_touched_latest' => '', +'reviews_not_touched_latest' => '(er zijn [no_reviews] in de nieuwste versie)', 'reviews_rejected' => '[no_reviews] reviews geweigerd', -'reviews_rejected_latest' => '', +'reviews_rejected_latest' => '(er zijn [no_reviews] in de nieuwste versie)', 'reviews_without_group' => 'reviews zonder groep', 'reviews_without_user' => 'reviews zonder gebruiker', 'review_deletion_email' => 'Beoordelingsverzoek verwijderd', @@ -1080,7 +1113,7 @@ URL: [url]', 'review_deletion_email_subject' => '[sitename]: [name] - Beoordelingsverzoek verwijderd', 'review_file' => 'Bestand', 'review_group' => 'Beoordelaarsgroep', -'review_log' => 'Reviseer overzicht', +'review_log' => 'Overzicht van beoordelingen', 'review_request_email' => 'Verzoek om beoordeling', 'review_request_email_body' => 'Verzoek om beoordeling Document: [name] @@ -1104,13 +1137,13 @@ URL: [url]', 'revise_document' => 'Document herzien', 'revise_document_on' => 'Volgende herziening van document op [date]', 'revisions_accepted' => '[no_revisions] revisies geaccepteerd', -'revisions_accepted_latest' => '', +'revisions_accepted_latest' => '(er zijn [no_revisions] in de nieuwste versie)', 'revisions_not_touched' => '[no_revisions] revisies geopend', -'revisions_not_touched_latest' => '', +'revisions_not_touched_latest' => '(er zijn [no_revisions] in de nieuwste versie)', 'revisions_pending' => '[no_revisions] revisies in afwachting', -'revisions_pending_latest' => '', +'revisions_pending_latest' => '(er zijn [no_revisions] in de nieuwste versie)', 'revisions_rejected' => '[no_revisions] revisies geweigerd', -'revisions_rejected_latest' => '', +'revisions_rejected_latest' => '(er zijn [no_revisions] in de nieuwste versie)', 'revisions_without_group' => '[no_revisions] revisies zonder groep', 'revisions_without_user' => '[no_revisions] revisies zonder gebruiker', 'revision_date' => 'Datum revisie', @@ -1139,9 +1172,9 @@ Gebruiker: [username] URL: [url]', 'rewind_workflow_email_subject' => '[sitename]: [name] - Workflow is teruggezet', 'rewind_workflow_warning' => 'Als u de workflow terugzet naar oorspronkelijke staat, dan wordt de workflow historie voor dit document verwijderd en onherstelbaar.', -'rm_attrdef' => 'Verwijder kenmerkdefinitie', -'rm_attrdefgroup' => 'Verwijder kenmerkdefinitie-groep', -'rm_attr_value' => '', +'rm_attrdef' => 'Verwijder attribuutdefinitie', +'rm_attrdefgroup' => 'Verwijder attribuutdefinitie-groep', +'rm_attr_value' => 'Verwijder waarde vh attribuut', 'rm_default_keyword_category' => 'Verwijder categorie', 'rm_document' => 'Verwijder document', 'rm_document_category' => 'Verwijder categorie', @@ -1151,7 +1184,7 @@ URL: [url]', 'rm_from_clipboard' => 'Verwijder van klembord', 'rm_group' => 'Verwijder deze Groep', 'rm_role' => 'Verwijder deze rol', -'rm_task' => '', +'rm_task' => 'Verwijder deze taak', 'rm_transmittal' => 'Verwijder de verzending', 'rm_transmittalitem' => 'Verwijder verzonden item', 'rm_user' => 'Verwijder deze Gebruiker', @@ -1181,14 +1214,14 @@ Gebruikers: [username] URL: [url]', 'run_subworkflow_email_subject' => '[sitename]: [name] - Subworkflow is gestart', 'ru_RU' => 'Russisch', -'saturday' => 'Zaterdag', -'saturday_abbr' => 'ZA', +'saturday' => 'zaterdag', +'saturday_abbr' => 'za', 'save' => 'Opslaan', -'scheduler_class' => '', -'scheduler_class_description' => '', -'scheduler_class_parameter' => '', -'scheduler_class_tasks' => '', -'scheduler_task_mgr' => '', +'scheduler_class' => 'Klasse', +'scheduler_class_description' => 'Beschrijving', +'scheduler_class_parameter' => 'Parameter', +'scheduler_class_tasks' => 'Taken', +'scheduler_task_mgr' => 'Scheduler', 'search' => 'Zoeken', 'search_fulltext' => 'Zoek in volledige tekst', 'search_in' => 'Zoek in', @@ -1206,20 +1239,20 @@ 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' => '', +'seeddms_info' => 'Informatie over SeedDMS', +'seeddms_version' => 'De versie van SeedDMS', 'selection' => 'Selectie', -'select_attrdefgrp_show' => 'Toon attribut definities-groep', -'select_attribute_value' => '', +'select_attrdefgrp_show' => 'Toon attribuut-definities-groep', +'select_attribute_value' => 'Kies een waarde voor het attribuut', 'select_category' => 'klik om categorie te selecteren', 'select_group' => 'Selecteer groep', 'select_groups' => 'Klik om groep te selecteren', 'select_grp_approvers' => 'Klik om beoordelaars te selecteren', 'select_grp_ind_approvers' => 'Klik om beoordelaars te selecteren', -'select_grp_ind_notification' => 'Selecteerd de groep', -'select_grp_ind_recipients' => 'Selecteer de groep', -'select_grp_ind_reviewers' => 'Selecteer de groep', -'select_grp_ind_revisors' => '', +'select_grp_ind_notification' => 'Selecteer de groep voor notificatie', +'select_grp_ind_recipients' => 'Selecteer de groep ontvangers', +'select_grp_ind_reviewers' => 'Selecteer de groep beoordelaars', +'select_grp_ind_revisors' => 'Selecteer de groepredacteuren', 'select_grp_notification' => 'Klik voor groepsnotificatiebeoordelaars', 'select_grp_recipients' => 'Klik om groep beoordelaar te selecteren', 'select_grp_reviewers' => 'Klik om groep beoordelaars te selecteren', @@ -1229,9 +1262,9 @@ URL: [url]', 'select_ind_recipients' => 'Klik voor individuele ontvnagers', 'select_ind_reviewers' => 'Klik om individuele beoordelaar te selecteren', 'select_ind_revisors' => 'Klik voor individuele herziners', -'select_mimetype' => '', -'select_one' => 'Selecteer een', -'select_owner' => '', +'select_mimetype' => 'Selecteer het mime-type', +'select_one' => 'Kies er een', +'select_owner' => 'Kies de eigenaar', 'select_user' => 'Selecteer gebruiker', 'select_users' => 'Klik om gebruikers te selecteren', 'select_value' => 'selecteer waarde', @@ -1253,8 +1286,8 @@ Name: [username] 'seq_keep' => 'Behoud Positie', 'seq_start' => 'Eerste positie', 'sessions' => 'sessies', -'setDateFromFile' => '', -'setDateFromFolder' => '', +'setDateFromFile' => 'Gebruik de datum van de geïmporteerde file', +'setDateFromFolder' => 'Gebruik de datum van de geïmporteerde map', 'settings' => 'Instellingen', 'settings_activate_module' => 'Activeer module', 'settings_activate_php_extension' => 'Activeer PHP uitbreiding', @@ -1263,32 +1296,28 @@ Name: [username] 'settings_Advanced' => 'Uitgebreid', 'settings_advancedAcl' => 'Advanced Access control', 'settings_advancedAcl_desc' => 'Advanced Access control staat het uit- en inschakelen van bepaalde modules toe. Het kan niet gebruikt worden voor het beheer van toegangsrechten van documenten en mappen.', -'settings_allowChangeRevAppInProcess' => '', -'settings_allowChangeRevAppInProcess_desc' => '', +'settings_allowChangeRevAppInProcess' => 'Sta toe dat de beoordelaar/goedkeurder verandert na de start van het proces', +'settings_allowChangeRevAppInProcess_desc' => 'De default is dat beoordelaars en goedkeurders niet meer veranderen nadat er al een beoordeling of goedkeuring is verzonden. Deze optie stelt administrators in staat veranderingen aan te brengen zolang het document niet is afgewezen of vrijgegeven.', 'settings_allowReviewerOnly' => 'Alleen reviewer toestaan', -'settings_allowReviewerOnly_desc' => 'Aanzetten als wel de reviewe, maar niet de goedkeurder toegewezen kan worden.', +'settings_allowReviewerOnly_desc' => 'Aanzetten als wel de reviewer, 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_apiKey' => 'Authentification key voor REST api', +'settings_apiKey_desc' => 'Deze sleutel wordt gebruikt als alternatieve authenticatie voor de REST api. Kies een tekst-string van 32 tekens.', +'settings_apiOrigin' => 'Toegestane afkomst van api calls', +'settings_apiOrigin_desc' => 'Een lijst van adressen gescheiden door puntkomma\'s. Ieder adres heeft de vorm ://[:]. De poort is optioneel. Als dit veld wordt leeggelaten, volgen geen restricties.', +'settings_apiUserId' => 'Gebruiker voor de REST api', +'settings_apiUserId_desc' => 'Deze gebruiker wordt gebruikt door de REST api als de authenticatie gebeurt met de REST api key.', +'settings_Authentication' => 'Authenticatie-instellingen', 'settings_autoLoginUser' => 'Automatische login', -'settings_autoLoginUser_desc' => 'Gebruik dit gebruikers-ID als de gebruiker nog niet is ingelogd. Zo, - => , - => , - => , - =>', +'settings_autoLoginUser_desc' => 'Gebruik dit gebruikers-ID als de gebruiker nog niet is ingelogd in de basismap. Via zo\'n toegang wordt geen sessie gestart.', 'settings_available_languages' => 'Beschikbare vertalingen', 'settings_available_languages_desc' => 'Alleen de geselecteerde vertalingen worden beschikbaar in het taal-selectie-menu. De default-taal (EN) wordt altijd geladen.', 'settings_backupDir' => 'Instellingen backupmap', -'settings_backupDir_desc' => 'Instellingen backupmap', +'settings_backupDir_desc' => 'Instellingen vd backupmap', 'settings_cacheDir' => 'cache directory', -'settings_cacheDir_desc' => 'Waar de voorbeeld afbeeldingen zijn opgeslagen (het is het beste om te kiezen voor een pad, welke niet toegankelijk is door uw webserver)', +'settings_cacheDir_desc' => 'De map waar de voorbeeldafbeeldingen zijn opgeslagen (het is het beste om te kiezen voor een map die niet toegankelijk voor uw webserver)', 'settings_Calendar' => 'Instellingen van de agenda', -'settings_calendarDefaultView' => 'Standaard overzicht agenda', +'settings_calendarDefaultView' => 'Standaard-overzicht vd agenda', 'settings_calendarDefaultView_desc' => 'Pagina per dag/week/maand', 'settings_cannot_disable' => 'Bestand ENABLE_INSTALL_TOOL kon niet verwijderd worden', 'settings_checkOutDir' => 'Instellingen Checkoutmap', @@ -1311,6 +1340,10 @@ Name: [username] 'settings_createdirectory' => 'Maak map', 'settings_currentvalue' => 'Huidige waarde', 'settings_Database' => 'Database instellingen', +'settings_dateformat' => 'Datum formaat', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Database', 'settings_dbDatabase_desc' => 'De naam van de database ingevoerd tijdens het installatie proces. Verander de waarde niet tenzij noodzakelijk, als bijvoorbeeld de database is verplaatst.', 'settings_dbDriver' => 'Database Type', @@ -1324,10 +1357,10 @@ Name: [username] 'settings_dbVersion' => 'Database schema te oud', 'settings_defaultAccessDocs' => 'Standaard toegangsrechten voor nieuwe documenten', 'settings_defaultAccessDocs_desc' => 'Als een nieuw document wordt gecreëerd, worden dit de nieuwe toegangsrechten.', -'settings_defaultDocPosition' => '', -'settings_defaultDocPosition_desc' => '', -'settings_defaultDocPosition_val_end' => '', -'settings_defaultDocPosition_val_start' => '', +'settings_defaultDocPosition' => 'Standaard positie nieuw document', +'settings_defaultDocPosition_desc' => 'Dit is de standaardplaats binnen een map waar een document wordt gecreëerd.', +'settings_defaultDocPosition_val_end' => 'aan het einde', +'settings_defaultDocPosition_val_start' => 'aan het begin', 'settings_defaultSearchMethod' => 'Standaard zoekmethode', 'settings_defaultSearchMethod_desc' => 'Default zoekmethode = op documentnaam / fulltext-search', 'settings_defaultSearchMethod_valdatabase' => 'Default zoekmethode (Documentnaam)', @@ -1339,7 +1372,7 @@ Name: [username] 'settings_Display' => 'Scherm instellingen', 'settings_dropFolderDir' => 'Pad voor drop folder', 'settings_dropFolderDir_desc' => 'Dit pad kan gebruikt worden voor dropfiles op de server en hier vanaf te importeren in plaats van uploaden via de browser.', -'settings_Edition' => 'Uitgave instellingen', +'settings_Edition' => 'Instellingen van deze editie', 'settings_editOnlineFileTypes' => 'Online bewerken van de volgende filetypes', 'settings_editOnlineFileTypes_desc' => 'Bestanden met één van de volgende extensies kunnen online bewerkt worden (ALLEEN KLEINE LETTERS GEBRUIKEN!)', 'settings_enable2FactorAuthentication' => 'Schakel 2-factor-authenticatie in', @@ -1349,30 +1382,32 @@ Name: [username] 'settings_enableAdminReceipt' => 'Sta ontvangst van documenten door admins toe', 'settings_enableAdminReceipt_desc' => 'Inschakelen als u admins documenten wilt laten ontvangen', 'settings_enableAdminRevApp' => 'Inschakelen Beheer Contr/Beoord', -'settings_enableAdminRevApp_desc' => 'Uitvinken om beheerder niet te tonen als controleerder/beoordeler', +'settings_enableAdminRevApp_desc' => 'Uitvinken om beheerder niette tonen als controleerder/beoordeler', 'settings_enableCalendar' => 'Agenda inschakelen', 'settings_enableCalendar_desc' => 'Inschakelen/uitschakelen agenda', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Activeer klembord', 'settings_enableClipboard_desc' => 'Activeer/ blokkeer het klembord', 'settings_enableConverting' => 'Documenten converteren', 'settings_enableConverting_desc' => 'Inschakelen/uitschakelen conversie van bestanden naar PDF', -'settings_enableDebugMode' => '', -'settings_enableDebugMode_desc' => '', +'settings_enableDebugMode' => 'Stel Debug Mode in', +'settings_enableDebugMode_desc' => 'In Debug Mode komt er een extra menu in de beheerpagina\'s.', 'settings_enableDropFolderList' => 'Inschakelen van de lijst van files in dropfolder.', 'settings_enableDropFolderList_desc' => 'De lijst van files in Dropfolder zichtbaar maken in het menu', 'settings_enableDropUpload' => 'Inschakelen Snelle Upload', 'settings_enableDropUpload_desc' => 'Aanzetten DropUpload', 'settings_enableDuplicateDocNames' => 'Sta duplicaten van documentnamen toe', -'settings_enableDuplicateDocNames_desc' => 'Staat het toe om documentnamen te dupliceren in een folder.', -'settings_enableDuplicateSubFolderNames' => '', -'settings_enableDuplicateSubFolderNames_desc' => '', +'settings_enableDuplicateDocNames_desc' => 'Staat het toe om documentnamen te dupliceren in een map.', +'settings_enableDuplicateSubFolderNames' => 'Sta duplicaten van mapnamen toe', +'settings_enableDuplicateSubFolderNames_desc' => 'Staat het toe om mapnamen te dupliceren in een map.', 'settings_enableEmail' => 'E-mail inschakelen', 'settings_enableEmail_desc' => 'Inschakelen/uitschakelen automatische email notificatie', -'settings_enableFilterReceipt' => '', -'settings_enableFilterReceipt_desc' => '', +'settings_enableFilterReceipt' => 'Filter de eigenaar, beoordelaar .... weg uit de ontvangerslijst', +'settings_enableFilterReceipt_desc' => 'Sommige ontvangers / leden van de groep worden weggefilterd uit de lijst van ontvangers.', 'settings_enableFolderTree' => 'Mappenstructuur tonen', -'settings_enableFolderTree_desc' => 'Uitschakelen om de mappenstructuur niet te tonen', -'settings_enableFullSearch' => 'Volledige-tekst zoeken', +'settings_enableFolderTree_desc' => 'Uitschakelen om de mappenstructuur niette tonen', +'settings_enableFullSearch' => 'Fulltext search', 'settings_enableFullSearch_desc' => 'Inschakelen zoeken in volledigetekst', 'settings_enableGuestAutoLogin' => 'Gastlogin automatisch aanzetten', 'settings_enableGuestAutoLogin_desc' => 'Gastlogin automatisch aanzetten', @@ -1400,20 +1435,20 @@ Name: [username] 'settings_enableOwnerRevApp_desc' => 'Activeer dit als de eigenaar van een document genoteerd staat as beoordelaar/ goedkeurder en voor workflow overdrachten.', 'settings_enablePasswordForgotten' => '\'wachtwoord vergeten\' aanzetten', 'settings_enablePasswordForgotten_desc' => 'Inschakelen om een wachtwoord via mail te versturen als de gebruiker een nieuw wachtwoord heeft ingesteld.', -'settings_enableReceiptReject' => '', -'settings_enableReceiptReject_desc' => '', +'settings_enableReceiptReject' => 'Maak het weigeren van ontvangen berichten mogelijk', +'settings_enableReceiptReject_desc' => 'Maak het weigeren van ontvangen berichten mogelijk', 'settings_enableReceiptWorkflow' => 'Aanzetten Workflow-stappen', 'settings_enableReceiptWorkflow_desc' => 'Aanzetten workflow-stappen', 'settings_enableRecursiveCount' => 'Document/ map teller herhalen toestaan', 'settings_enableRecursiveCount_desc' => 'If turned on, the number of documents and folders in the folder view will be determined by counting all objects by recursively processing the folders and counting those documents and folders the user is allowed to access.', -'settings_enableRevisionOneVoteReject' => '', -'settings_enableRevisionOneVoteReject_desc' => '', +'settings_enableRevisionOneVoteReject' => 'Afwijzen door één revisor', +'settings_enableRevisionOneVoteReject_desc' => 'Als dit aan staat, wordt de status van het document \'correctie nodig\' zodra de eerste revisor het document afwijst. Als deze optie uit staat, verandert de status van het document niet voordat alle revisors hun bijdrage hebben geleverd.', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Herzieningsworkflow aanzetten', 'settings_enableRevisionWorkflow_desc' => 'Herzieningsworkflow aanzetten', -'settings_enableSelfReceipt' => '', -'settings_enableSelfReceipt_desc' => '', +'settings_enableSelfReceipt' => 'Ontvangst van eigen documenten mogelijk', +'settings_enableSelfReceipt_desc' => 'Als dit \'aan\' staat komt de ingelogde gebruiker op de ontvangerslijst', 'settings_enableSelfRevApp' => 'Beoordeling/ goedkeuring toestaan voor ingelogde gebruikers', 'settings_enableSelfRevApp_desc' => 'Schakel in indien the huidig ingelogde gebruiker wordt toegewezen als goedkeurder/ beoordelaar en voor workflow overgangen.', 'settings_enableSessionList' => 'Lijst van gebruikers online', @@ -1424,19 +1459,19 @@ Name: [username] 'settings_enableUpdateReceipt_desc' => 'Mag de gebruiker die een bestemming heeft opgesteld, zijn beslissing wijzigen?', 'settings_enableUpdateRevApp' => 'Wijzig bestaande review/goedkeuring', 'settings_enableUpdateRevApp_desc' => 'Mag de gebruiker die een review//goedkeuring heeft gegeven, zijn beslissing wijzigen (zolang de huidige stap in de workflow nog duurt)?', -'settings_enableUserImage' => 'Inschakelen Gebruikersplaatjes', +'settings_enableUserImage' => 'Eigen plaatje', 'settings_enableUserImage_desc' => 'Inschakelen Gebruikerplaatjes', -'settings_enableUsersView' => 'Inschakelen Gebruikers overzicht', +'settings_enableUsersView' => 'Inschakelen overzicht van gebruikers', 'settings_enableUsersView_desc' => 'Inschakelen/uitschakelen groeps en gebruikers overzicht voor alle gebruikers', 'settings_enableVersionDeletion' => 'Inschakelen verwijderen voorgaande versies', 'settings_enableVersionDeletion_desc' => 'Inschakelen/uitschakelen verwijderen van voorgaande documentversies door normale gebruikers. Beheerder mag altijd oude versies verwijderen.', 'settings_enableVersionModification' => 'Inschakelen van versiebewerking', 'settings_enableVersionModification_desc' => 'Inschakelen/uitschakelen van bewerkingen op documentversies door normale gebruikers na een versie upload. Beheerder mag altijd de versie wijzigen na upload.', 'settings_enableWebdavReplaceDoc' => 'Oud document vervangen bij opslaan', -'settings_enableWebdavReplaceDoc_desc' => '', -'settings_enableXsendfile' => '', -'settings_enableXsendfile_desc' => '', -'settings_encryptionKey' => 'Encryptie sleutel', +'settings_enableWebdavReplaceDoc_desc' => 'Een nieuwe versie van het document vervangt de oude versie, i.p.v. dat er een nieuwe versie gecreëerd wordt, onder voorwaarde dat gebruiker, mimetype en bestandsnaam gelijk zijn aan de laatste versie. Dit kan nuttig zijn als bepaalde applicaties regelmatig een nieuwe versie van het document opslaan.', +'settings_enableXsendfile' => 'Gebruik de Apache xsendfile module', +'settings_enableXsendfile_desc' => 'Als de Apache module xsendfile geïnstallleerd is, wordt deze gebruikt om afbeeldingen te verzenden.', +'settings_encryptionKey' => 'Sleutel voor encryptie', 'settings_encryptionKey_desc' => 'Deze string wordt gebruikt om een unieke identificatie als onzichtbaar veld aan een formulier toe te voegen om CSRF aanvallen tegen te gaan.', 'settings_error' => 'Fout', 'settings_expandFolderTree' => 'Uitvouwen mappenstructuur', @@ -1451,35 +1486,35 @@ Name: [username] 'settings_firstDayOfWeek_desc' => 'Eerste dag van de (werk)week', 'settings_footNote' => 'Subtitel', 'settings_footNote_desc' => 'Bericht om onderop elke pagina te tonen', -'settings_fullSearchEngine' => 'Instellingen Fulltextsearch', -'settings_fullSearchEngine_desc' => 'Instellingen Fulltextsearch', +'settings_fullSearchEngine' => 'Instellingen Fulltext search', +'settings_fullSearchEngine_desc' => 'Instellingen Fulltext search', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', 'settings_guestID' => 'Gast ID', 'settings_guestID_desc' => 'ID van gastgebruiker gebruikt indien ingelogd als gast (meestal geen wijziging nodig)', 'settings_httpRoot' => 'Http Basis', 'settings_httpRoot_desc' => 'Het relatieve pad in de URL, na het domeindeel. Voeg geen http:// toe aan het begin of de websysteemnaam. Bijv: Als de volledige URL http://www.example.com/letodms/ is, voer \'/letodms/\' in. Als de URL http://www.example.com/ is, voer \'/\' in', -'settings_incItemsPerPage' => 'Aantal items ,geladen aan einde pagina', -'settings_incItemsPerPage_desc' => '', +'settings_incItemsPerPage' => 'Aantal items, geladen aan einde pagina', +'settings_incItemsPerPage_desc' => 'Als het aantal mappen en documenten beperkt is, stelt deze optie het aantal toegevoegde objecten, wanneer je naar het einde van de detailpagina scrollt. Op 0 stellen verandert heet aantal objecten niet.', 'settings_initialDocumentStatus' => 'Beginstatus document', 'settings_initialDocumentStatus_desc' => 'De beginstatus van een document wordt ingesteld wanneer het document wordt toegevoegd.', 'settings_initialDocumentStatus_draft' => 'Initieel document als concept', 'settings_initialDocumentStatus_released' => 'Initieel document-status: gepubliceerd', -'settings_inlineEditing' => '', -'settings_inlineEditing_desc' => '', +'settings_inlineEditing' => 'Inline editing', +'settings_inlineEditing_desc' => 'Inline editing: bewerk het document op de detailpagina.', 'settings_installADOdb' => 'Installeer ADOdb', 'settings_install_disabled' => 'Bestand ENABLE_INSTALL_TOOL is verwijderd. U kunt nu inloggen in SeedDMS en verdere configuratie uitvoeren.', 'settings_install_pear_package_log' => 'Installeer Pear package \'Log\'', 'settings_install_pear_package_webdav' => 'Installeer Pear package \'HTTP_WebDAV_Server\', als u van plan bent om webdav interface te gebruiken', 'settings_install_success' => 'De installatie is succesvol beeindigd.', -'settings_install_welcome_text' => '

Wees er zeker van dat u een bestand, genaamd \'ENABLE_INSTALL_TOOL\', gemaakt heeft in de configuratiemap, voordat u de installatie van letDMS begint, anders zal de installatie niet werken. Op een Unix-Syteem kan dit makkelijk gedaan worden met \'touch conf/ENABLE_INSTALL_TOOL\'. Verwijder het bestand nadat de installatie afgerond is.

letoDMS heeft weinig installatievoorwaarden. U heeft een mysql database en een php-geschikte web server nodig. Voor de lucene volledige tekst zoekfunctie, moet Zend framework geinstalleerd zijn op schijf en gevonden worden door php. Vanaf versie 3.2.0 van letoDMS zal ADOdb geen deel meer uitmaken van de uitgave. Een kopie kan van http://adodb.sourceforge.net gehaald en geinstalleerd worden. Het pad kan later opgegeven worden tijdens de installatie.

Als u de database voor de installatie wilt aanmaken, dan kunt u het handmatig met uw favoriete gereedschap aanmaken. optioneel kan een database met gebruikerstoegang gemaakt worden en importeer een van de database dumps in de configuratiemap. Met het installatiescript kan dit ook, maar hiervoor is database toegang nodig met voldoende rechten om een database aan te maken.

', +'settings_install_welcome_text' => '

Wees er zeker van dat u een bestand, genaamd \'ENABLE_INSTALL_TOOL\', gemaakt heeft in de configuratiemap, voordat u de installatie van letDMS begint, anders zal de installatie nietwerken. Op een Unix-Syteem kan dit makkelijk gedaan worden met \'touch conf/ENABLE_INSTALL_TOOL\'. Verwijder het bestand nadat de installatie afgerond is.

letoDMS heeft weinig installatievoorwaarden. U heeft een mysql database en een php-geschikte web server nodig. Voor de lucene volledige tekst zoekfunctie, moet Zend framework geinstalleerd zijn op schijf en gevonden worden door php. Vanaf versie 3.2.0 van letoDMS zal ADOdb geen deel meer uitmaken van de uitgave. Een kopie kan van http://adodb.sourceforge.net gehaald en geinstalleerd worden. Het pad kan later opgegeven worden tijdens de installatie.

Als u de database voor de installatie wilt aanmaken, dan kunt u het handmatig met uw favoriete gereedschap aanmaken. optioneel kan een database met gebruikerstoegang gemaakt worden en importeer een van de database dumps in de configuratiemap. Met het installatiescript kan dit ook, maar hiervoor is database toegang nodig met voldoende rechten om een database aan te maken.

', 'settings_install_welcome_title' => 'Welkom bij de installatie van letoDMS', 'settings_install_zendframework' => 'Installeer Zend Framework, als u volledigetekst zoekmechanisme wilt gebruiken', 'settings_language' => 'Standaardtaal', 'settings_language_desc' => 'Standaardtaal (naam van de submap in map "languages")', 'settings_libraryFolder' => 'Bibliotheekmap', 'settings_libraryFolder_desc' => 'In deze map kunnen documenten worden opgeslagen. Hiermee worden nieuwe documenten gecreëerd.', -'settings_logFileEnable' => 'Inschakelen Logbestand', +'settings_logFileEnable' => 'Inschakelen logbestand', 'settings_logFileEnable_desc' => 'Inschakelen/uitschakelen logbestand', 'settings_logFileRotation' => 'Rotering Logbestand', 'settings_logFileRotation_desc' => 'Rotering Logbestand', @@ -1489,31 +1524,33 @@ Name: [username] 'settings_luceneClassDir_desc' => 'Pad naar SeedDMS_Lucene (optioneel)', 'settings_luceneDir' => 'Map voor volledigetekst index', 'settings_luceneDir_desc' => 'Pad naar Lucene index', -'settings_maxDirID' => 'Max Map ID', +'settings_maxDirID' => 'Max Map-ID', 'settings_maxDirID_desc' => 'Maximaal toegestane aantal submappen per bovenliggende map. Standaard: 0.', 'settings_maxExecutionTime' => 'Max Uitvoertijd (s)', 'settings_maxExecutionTime_desc' => 'Dit bepaald de maximale tijd in seconden waarin een script mag worden uitgevoerd, voordat het afgebroken wordt', 'settings_maxItemsPerPage' => 'Max aantal items per pagina', -'settings_maxItemsPerPage_desc' => '', +'settings_maxItemsPerPage_desc' => 'Max aantal items per pagina', 'settings_maxRecursiveCount' => 'Max. nummers of recursieve document/map telling', -'settings_maxRecursiveCount_desc' => 'Dit is het maximum aantal documenten of mappen dat zal worden gecontroleerd voor toegangsrechten bij recursieve objecten telling. Als dit aantal is overschreden, zal het aantal documenten en mappen in de het map overzicht worden geschat.', +'settings_maxRecursiveCount_desc' => 'Dit is het maximum aantal documenten of mappen dat zal worden gecontroleerd voor toegangsrechten bij recursieve objecten telling. Als dit aantal is overschreden, zal het aantal documenten en mappen in de het mappenoverzicht worden geschat.', 'settings_maxSizeForFullText' => 'Maximum bestandsgrootte voor onmiddellijke indexering', 'settings_maxSizeForFullText_desc' => 'Alle nieuwe documenten kleiner dan deze waarde worden direct na het uploaden geïndexeerd. In alle andere gevallen worden alleen de metadata geïndexeerd.', 'settings_maxUploadSize' => 'Maximale omvang voor uploaden', 'settings_maxUploadSize_desc' => 'Dit is de maximale omvang voor te uploaden bestanden. Dat geldt voor bestanden en bijlagen.', -'settings_more_settings' => 'Meer instellingen. Standaard login: admin/admin', -'settings_noDocumentFormFields' => '', -'settings_noDocumentFormFields_desc' => '', -'settings_notfound' => 'Niet gevonden', -'settings_Notification' => 'Notificatie instellingen', -'settings_notwritable' => 'De configuratie kan niet opgeslagen worden omdat het configuratiebestand niet beschrijfbaar is.', +'settings_more_settings' => 'Meer instellingen. Standaardlogin: admin/admin', +'settings_noDocumentFormFields' => 'Deze velden niet tonen', +'settings_noDocumentFormFields_desc' => 'Deze velden niet laten zien bij toevoegen of bewerken van een document. Bestaande waardes worden bewaard.', +'settings_notfound' => 'nietgevonden', +'settings_Notification' => 'Notificatie-instellingen', +'settings_notwritable' => 'De configuratie kan nietopgeslagen worden omdat het configuratiebestand nietbeschrijfbaar is.', 'settings_no_content_dir' => 'Inhoud map', -'settings_onePageMode' => '', -'settings_onePageMode_desc' => '', +'settings_onePageMode' => 'Eén-pagina modus', +'settings_onePageMode_desc' => 'Eén-pagina modus activeert javascript code op de ViewFolder pagina. Deze pagina houdt de lijst van mappen en documenten bij, de navigatie, de volgorde etc.', 'settings_overrideMimeType' => 'Override MimeType', 'settings_overrideMimeType_desc' => 'Override MimeType', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Partitie-grootte', -'settings_partitionSize_desc' => 'Omvang van de partitie in bytes, geüpload door jumploader. Zet de waarde niet hoger dan de maximum upload grootte van de server.', +'settings_partitionSize_desc' => 'Omvang van de partitie in bytes, geüpload door jumploader. Zet de waarde niethoger dan de maximum upload grootte van de server.', 'settings_passwordExpiration' => 'Wachtwoord verloopt', 'settings_passwordExpiration_desc' => 'Het aantal dagen waarna een wachtwoord verloopt? en gereset moet worden. 0 zet het verlopen van het wachtwoord uit.', 'settings_passwordHistory' => 'Wachtwoord geschiedenis', @@ -1536,25 +1573,25 @@ Name: [username] 'settings_previewWidthDetail' => 'Breedte van het voorbeeld (detail)', 'settings_previewWidthDetail_desc' => 'weergegeven op de detail pagina', 'settings_previewWidthDropFolderList' => 'Breedte van het voorbeeld in de dropfolder-lijst', -'settings_previewWidthDropFolderList_desc' => '', +'settings_previewWidthDropFolderList_desc' => 'Breedte van het voorbeeld in de dropfolder-lijst', 'settings_previewWidthList' => 'Breedte van het voorbeeld (lijst)', 'settings_previewWidthList_desc' => 'Breedte van het voorbeeld weergegeven in lijsten', 'settings_previewWidthMenuList' => 'Breedte van het voorbeeld (menu-lijst)', 'settings_previewWidthMenuList_desc' => 'Breedte van het voorbeeld als dropfolder', 'settings_printDisclaimer' => 'Vrijwaring afdrukken', 'settings_printDisclaimer_desc' => 'Indien ingeschakeld zal het vrijwaringsbericht bestanden worden getoond onderaan de pagina', -'settings_proxyUPassword' => '', -'settings_proxyUPassword_desc' => '', -'settings_proxyUrl' => '', -'settings_proxyUrl_desc' => '', -'settings_proxyUser' => '', -'settings_proxyUser_desc' => '', +'settings_proxyUPassword' => 'Password voor de proxy', +'settings_proxyUPassword_desc' => 'Password dat gebruikt wordt om in te loggen bij de proxy', +'settings_proxyUrl' => 'URL van de proxy', +'settings_proxyUrl_desc' => 'URL van de proxy die gebruikt wordt voor het benaderen van de extension repository.', +'settings_proxyUser' => 'Gebruikersnaam van de proxy', +'settings_proxyUser_desc' => 'Gebruikersnaam voor authenticatie bij de proxy', 'settings_quota' => 'Gebruikersquotum', 'settings_quota_desc' => 'Het maximum aantal bytes een gebruiker op de schijf mag schrijven. Stel deze in op 0 voor een onbeperkte schijfruimte. Deze waarde kan worden overschreven voor elk gebruik in zijn profiel.', 'settings_removeFromDropFolder' => 'Verwijder het bestand uit de dropfolder na een succesvolle upload', 'settings_removeFromDropFolder_desc' => 'Verwijder het bestand uit de dropfolder na een succesvolle upload', 'settings_repositoryUrl' => 'URL van repository', -'settings_repositoryUrl_desc' => '', +'settings_repositoryUrl_desc' => 'URL van repository', 'settings_restricted' => 'Beperkte toegang', 'settings_restricted_desc' => 'Sta alleen gebruiker toe om in te loggen die in de database zijn opgenomen (ongeacht succesvolle authenticatie met LDAP)', 'settings_rootDir' => 'Basismap', @@ -1566,7 +1603,7 @@ Name: [username] 'settings_showFullPreview' => 'Toon volledige document', 'settings_showFullPreview_desc' => 'In/Uitschakelen preview van alle pagina\'s van het document.', 'settings_showMissingTranslations' => 'Ontbrekende vertalingen weergeven', -'settings_showMissingTranslations_desc' => 'Geef alle ontbrekende vertalingen onder aan de pagina weer. De gebruiker kan een verzoek tot vertaling indienen dat wordt opgeslagen als csv bestand. Let op! Zet deze functie niet aan in productieomgevingen!', +'settings_showMissingTranslations_desc' => 'Geef alle ontbrekende vertalingen onder aan de pagina weer. De gebruiker kan een verzoek tot vertaling indienen dat wordt opgeslagen als csv bestand. Let op! Zet deze functie nietaan in productieomgevingen!', 'settings_showSingleSearchHit' => 'Spring rechtstreeks naar het enkele zoekresultaat', 'settings_showSingleSearchHit_desc' => 'Als er maar één zoekresultaat is, wordt dat in detail getoond.', 'settings_Site' => 'WebLocatie', @@ -1582,7 +1619,7 @@ Name: [username] 'settings_smtpSendFrom' => 'Send from', 'settings_smtpSendFrom_desc' => 'Send from', 'settings_smtpSendTestMail' => 'Testmail versturen', -'settings_smtpSendTestMail_desc' => '', +'settings_smtpSendTestMail_desc' => 'Testmail versturen', 'settings_smtpServer' => 'SMTP Server hostname', 'settings_smtpServer_desc' => 'SMTP Server hostname', 'settings_smtpUser' => 'SMTP Server gebruiker', @@ -1591,7 +1628,7 @@ Name: [username] 'settings_sortFoldersDefault_desc' => 'Stel de sorteervolgorde voor mappen en documenten in de mapweergave in.', 'settings_sortFoldersDefault_val_name' => 'op naam', 'settings_sortFoldersDefault_val_sequence' => 'op volgorde', -'settings_sortFoldersDefault_val_unsorted' => 'niet gesorteerd', +'settings_sortFoldersDefault_val_unsorted' => 'nietgesorteerd', 'settings_sortUsersInList' => 'Sorteer gebruikers in de lijst', 'settings_sortUsersInList_desc' => 'Bepaald of gebruikers in keuzemenus gesorteerd worden op loginnaam of volledige naam', 'settings_sortUsersInList_val_fullname' => 'Sorteer op volledige name', @@ -1599,32 +1636,36 @@ Name: [username] 'settings_stagingDir' => 'Map voor gedeeltelijke uploads', 'settings_stagingDir_desc' => 'De directory waar jumploader de delen van een bestand upload voordat het weer in elkaar wordt gezet.', 'settings_start_install' => 'Begin installatie', -'settings_stopWordsFile' => 'Pad naar bestand met niet-index woorden', -'settings_stopWordsFile_desc' => 'Als volledigetekst zoekopdracht is ingeschakeld, bevat dit bestand woorden die niet geindexeerd zullen worden.', +'settings_stopWordsFile' => 'Pad naar bestand met basismap -index woorden', +'settings_stopWordsFile_desc' => 'Als volledigetekst zoekopdracht is ingeschakeld, bevat dit bestand woorden die nietgeindexeerd zullen worden.', 'settings_strictFormCheck' => 'Strikte formaatcontrole', 'settings_strictFormCheck_desc' => 'Strikte controle op het juiste formaat. Indien ingeschakeld, worden alle velden in het formulier gecontroleer op een waarde. Indien uitgeschakeld, worden de meeste commentaar en invoervelden opgevat als optioneel. Commentaren zijn altijd nodig bij een review of modificatie van een documentstatus', 'settings_suggestionvalue' => 'Voorgestelde waarde', 'settings_System' => 'Systeem', -'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' => 'Taken', +'settings_tasksInMenu_approval' => 'Goedgekeuring', +'settings_tasksInMenu_checkedout' => '', +'settings_tasksInMenu_desc' => 'Selecteer de taken die goedgekeurd zijn. Als je niets selecteert, worden alle taken meegeteld', +'settings_tasksInMenu_needscorrection' => 'Correctie nodig', +'settings_tasksInMenu_receipt' => 'Ontvangen', +'settings_tasksInMenu_rejected' => '', +'settings_tasksInMenu_review' => 'Beoordeling', +'settings_tasksInMenu_revision' => 'Herziening', +'settings_tasksInMenu_workflow' => 'Workflow', 'settings_theme' => 'Standaard thema', 'settings_theme_desc' => 'Standaard stijl (name of a subfolder in folder "styles")', 'settings_titleDisplayHack' => 'Titel Tonen Oplossing', 'settings_titleDisplayHack_desc' => 'Oplossing voor paginatitels die verspreid zijn over 2 regels.', -'settings_undelUserIds' => 'Niet verwijderbare gebruiker ID\'s', -'settings_undelUserIds_desc' => 'Komma\'s gescheiden lijst van gebruikers-ID\'s, die niet verwijderd kunnen worden.', +'settings_undelUserIds' => 'nietverwijderbare gebruiker-ID\'s', +'settings_undelUserIds_desc' => 'Komma\'s gescheiden lijst van gebruikers-ID\'s, die nietverwijderd kunnen worden.', 'settings_updateDatabase' => 'Voer schema update scripts uit op database', 'settings_updateNotifyTime' => 'Update Notificatie Tijd', -'settings_updateNotifyTime_desc' => 'Gebruikers worden niet genotificeerd over documentwijzigingen die plaats vinden binnen de laatste \'Update Notificatie Tijd\' seconden', +'settings_updateNotifyTime_desc' => 'Gebruikers worden nietgenotificeerd over documentwijzigingen die plaats vinden binnen de laatste \'Update Notificatie Tijd\' seconden', 'settings_upgrade_php' => 'Upgrade PHP minimaal naar versie 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Versie-informatie Bestandsnaam', -'settings_versioningFileName_desc' => 'De naam van het versie informatie bestand gemaakt door het backupgereedschap', +'settings_versioningFileName_desc' => 'De naam van het versie-informatie bestand gemaakt door het backupgereedschap', 'settings_versiontolow' => 'Versie te laag', 'settings_viewOnlineFileTypes' => 'De volgende bestandstypen online bekijken', 'settings_viewOnlineFileTypes_desc' => 'Bestanden met een van de volgende extensies kunnen online bekeken worden (GEBRUIK ALLEEN KLEINE LETTERS)', @@ -1632,7 +1673,7 @@ Name: [username] 'settings_workflowMode' => 'Workflow mode', 'settings_workflowMode_desc' => 'De uitgebreide workflow maakt het mogelijk om uw eigen workflow op te geven voor documentversies.', 'settings_workflowMode_valadvanced' => 'geavanceerd', -'settings_workflowMode_valnone' => '', +'settings_workflowMode_valnone' => 'Geen', 'settings_workflowMode_valtraditional' => 'Traditioneel', 'settings_workflowMode_valtraditional_only_approval' => 'Traditioneel (zonder beoordeling)', 'settings_zendframework' => 'Zend-Framework', @@ -1647,62 +1688,65 @@ Name: [username] 'sign_in' => 'Log in', 'sign_out' => 'Log uit', 'sign_out_user' => 'Log gebruiker uit', -'site_brand' => '', +'site_brand' => 'Merk van de site', 'sk_SK' => 'Slowaaks', 'sort_by_date' => 'Sorteren op datum', -'sort_by_expiration_date' => '', +'sort_by_expiration_date' => 'Sorteren op vervaldatum', 'sort_by_name' => 'Sorteren op naam', 'sort_by_sequence' => 'Sorteer op volgorde', 'space_used_on_data_folder' => 'Gebruikte diskomvang in data map', 'splash_added_to_clipboard' => 'Toegevoegd aan klembord', -'splash_add_access' => '', +'splash_add_access' => 'Toegangsrechten toegevoegd', 'splash_add_attribute' => 'Nieuw attribuut toegevoegd', 'splash_add_group' => 'Nieuwe groep toegevoegd', 'splash_add_group_member' => 'Nieuwe groepslid toegevoegd', 'splash_add_role' => 'Nieuwe rol toegevoegd', -'splash_add_task' => '', +'splash_add_task' => 'Taak toegevoegd', 'splash_add_to_transmittal' => 'Toevoegen aan verzending', 'splash_add_transmittal' => 'Verzending toegevoegd', 'splash_add_user' => 'Nieuwe gebruiker toegevoegd', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'Cache leeggemaakt', 'splash_cleared_clipboard' => 'Klembord leeg gemaakt', -'splash_delete_access' => '', +'splash_delete_access' => 'Toegangsrechten verwijderd', 'splash_document_added' => 'Nieuw document toegevoegd', 'splash_document_checkedout' => 'Document in gebruik genomen', 'splash_document_edited' => 'Document opgeslagen', 'splash_document_indexed' => 'Document geïndexeerd', 'splash_document_locked' => 'Document vergrendeld', -'splash_document_name_changed' => '', +'splash_document_name_changed' => 'Documentnaam veranderd', 'splash_document_unlocked' => 'Document ontgrendeld', -'splash_edit_access' => '', +'splash_edit_access' => 'Wijzig toegangsrechten', 'splash_edit_attribute' => 'Attribuut opgeslagen', 'splash_edit_event' => 'Gebeurtenis opgeslagen', 'splash_edit_group' => 'Groep opgeslagen', 'splash_edit_role' => 'Rol opgeslagen', -'splash_edit_task' => '', -'splash_edit_transmittal' => '', +'splash_edit_task' => 'Taak opgeslagen', +'splash_edit_transmittal' => 'Zending opgeslagen', 'splash_edit_user' => 'Gebruiker opgeslagen', 'splash_error_add_to_transmittal' => 'Fout: toevoeging aan verzending', 'splash_error_rm_download_link' => 'Fout bij verwijderen download-link', 'splash_error_send_download_link' => 'Fout bij verzenden download-link', -'splash_extension_getlist' => '', -'splash_extension_import' => '', -'splash_extension_refresh' => '', -'splash_extension_upload' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', +'splash_extension_getlist' => 'Bijgewerkte lijst van extensies', +'splash_extension_import' => 'Extensie geïnstalleerd', +'splash_extension_refresh' => 'Extensie vernieuwd', +'splash_extension_upload' => 'Extensie geüpload', 'splash_folder_edited' => 'Opslaan mapwijzigingen', 'splash_importfs' => 'Geïmporteerd: [docs] documenten en [folders] mappen', -'splash_inherit_access' => '', +'splash_inherit_access' => 'Toegangsrechten worden overgeërfd', 'splash_invalid_folder_id' => 'Ongeldige map ID', 'splash_invalid_searchterm' => 'Ongeldige zoekterm', -'splash_link_document' => '', +'splash_link_document' => 'Link toegevoegd', 'splash_moved_clipboard' => 'Klembord verplaatst naar de huidige map', 'splash_move_document' => 'Document verplaatst', 'splash_move_folder' => 'Map verplaatst', -'splash_notinherit_access' => '', +'splash_notinherit_access' => 'Toegangsrechten worden niet meer overgeërfd', 'splash_receipt_update_success' => 'Ontvangst succesvol toegevoegd', 'splash_removed_from_clipboard' => 'Verwijderd van het klembord', 'splash_rm_attribute' => 'Attribuut verwijderd', -'splash_rm_attr_value' => '', +'splash_rm_attr_value' => 'Waarde van attribuut verwijderd', 'splash_rm_document' => 'Document verwijderd', 'splash_rm_download_link' => 'Download-link verwijderd', 'splash_rm_folder' => 'Map verwijderd', @@ -1712,34 +1756,34 @@ Name: [username] 'splash_rm_transmittal' => 'Verzending verwijderd', 'splash_rm_user' => 'Gebruiker verwijderd', 'splash_rm_user_processes' => 'Gebruiker uit alle processen verwijderd', -'splash_rm_workflow' => '', -'splash_rm_workflow_action' => '', -'splash_rm_workflow_state' => '', +'splash_rm_workflow' => 'Workflow verwijderd', +'splash_rm_workflow_action' => 'Handeling uit workflow verwijderd', +'splash_rm_workflow_state' => 'Status van de workflow verwijderd', 'splash_saved_file' => 'Bestand opgeslagen', 'splash_save_user_data' => 'Gebruikersgegevens opgeslagen', 'splash_send_download_link' => 'Download-link verzonden', 'splash_send_login_data' => 'Login-gegevens verzonden', -'splash_setowner' => '', +'splash_setowner' => 'Stelt een nieuwe eigenaar in', 'splash_settings_saved' => 'Instellingen opgeslagen', -'splash_set_default_access' => '', +'splash_set_default_access' => 'Stel default-toegangsrechten in', 'splash_substituted_user' => 'Invallers gebruiker', 'splash_switched_back_user' => 'Teruggeschakeld naar de oorspronkelijke gebruiker', -'splash_toogle_group_manager' => 'Group manager toogled', -'splash_transfer_content' => '', -'splash_transfer_document' => '', -'splash_transfer_objects' => 'Objecten overgedragen', -'splash_trigger_workflow' => '', -'state_and_next_state' => 'staat/ volgende staat', +'splash_toogle_group_manager' => 'Group manager gewisseld', +'splash_transfer_content' => 'Inhoud verzonden', +'splash_transfer_document' => 'Document verzonden', +'splash_transfer_objects' => 'Objecten verzonden', +'splash_trigger_workflow' => 'Triggered transition van de workflow', +'state_and_next_state' => 'status/ volgende status', 'statistic' => 'Statistieken', 'status' => 'Status', 'status_approval_rejected' => 'Klad Goedkeuring [Afgewezen]', 'status_approved' => 'Goedgekeurd', 'status_approver_removed' => 'Goedkeurder verwijderd', -'status_needs_correction' => '', -'status_not_approved' => 'Niet goedgekeurd', -'status_not_receipted' => 'Niet ontvangen', -'status_not_reviewed' => 'Niet gecontroleerd', -'status_not_revised' => 'Niet herzien', +'status_needs_correction' => 'Correctie nodig', +'status_not_approved' => 'niet goedgekeurd', +'status_not_receipted' => 'niet ontvangen', +'status_not_reviewed' => 'niet gecontroleerd', +'status_not_revised' => 'niet herzien', 'status_receipted' => 'Ontvangen', 'status_receipt_rejected' => 'Afgewezen', 'status_recipient_removed' => 'Ontvanger verwijderd', @@ -1752,18 +1796,18 @@ Name: [username] 'status_revisor_removed' => 'Verwijderd', 'status_unknown' => 'Onbekend', 'storage_size' => 'Omvang opslag', -'subfolder_duplicate_name' => '', +'subfolder_duplicate_name' => 'Dubble mapnaam', 'submit_2_fact_auth' => '2-factor-authentificatie verstuurd', 'submit_approval' => 'Verzend [Goedkeuring]', 'submit_login' => 'Log in', 'submit_password' => 'Nieuw wachtwoord instellen', -'submit_password_forgotten' => 'Start proces', +'submit_password_forgotten' => 'Start \'Wachtwoord vergeten\'', 'submit_receipt' => 'Verzonden bericht ontvangen', 'submit_review' => 'Verzend Beoordeling', 'submit_revision' => 'Herziening verzenden', 'submit_userinfo' => 'Wijzigingen opslaan', -'submit_webauthn_login' => '', -'submit_webauthn_register' => '', +'submit_webauthn_login' => 'Login', +'submit_webauthn_register' => 'Registreren', 'subsribe_timelinefeed' => 'Subscribe to timeline feed', 'substitute_to_user' => 'Switch naar \'[username]\'', 'substitute_user' => 'Invaller/ vervanger Gebruiker', @@ -1785,13 +1829,13 @@ Name: [username] 'takeOverIndReviewer' => 'Onthoud de laatste groep individuele herzieners', 'takeOverIndReviewers' => '', 'tasks' => 'taken', -'task_core_expireddocs_days' => '', -'task_description' => '', -'task_disabled' => '', -'task_frequency' => '', -'task_last_run' => '', -'task_name' => '', -'task_next_run' => '', +'task_core_expireddocs_days' => 'Dagen', +'task_description' => 'Omschrijving', +'task_disabled' => 'Inactief', +'task_frequency' => 'Frequentie', +'task_last_run' => 'Laatst uitgevoerd', +'task_name' => 'Naam', +'task_next_run' => 'Komende uitvoering', 'temp_jscode' => 'Tijdelijke jscode', 'testmail_body' => 'Deze mail dient enkel voor het testen van de mail configuratie van SeedDMS', 'testmail_subject' => 'Test mail', @@ -1805,11 +1849,11 @@ Name: [username] 'timeline_full_add_version' => 'Nieuwe versie', 'timeline_full_scheduled_revision' => '', 'timeline_full_status_change' => 'Status veranderd', -'timeline_scheduled_revision' => '', +'timeline_scheduled_revision' => 'Geplande herziening', 'timeline_selected_item' => 'Document geselecteerd', 'timeline_skip_add_file' => 'Bijlage toegevoegd', -'timeline_skip_scheduled_revision' => '', -'timeline_skip_status_change_-1' => 'verworpen', +'timeline_skip_scheduled_revision' => 'In revisie', +'timeline_skip_status_change_-1' => 'afgewezenen', 'timeline_skip_status_change_-3' => 'verlopen', 'timeline_skip_status_change_0' => 'wacht op beoordeling', 'timeline_skip_status_change_1' => 'wacht op goedkeuring', @@ -1822,14 +1866,14 @@ Name: [username] 'toggle_manager' => 'Wijzig Beheerder', 'toggle_qrcode' => 'Tonen/Verbergen QR-code', 'total' => '', -'to_before_from' => 'De einddatum mag niet voor de startdatum liggen', -'transfer_content' => '', -'transfer_document' => 'Document overdragen', -'transfer_no_read_access' => '', +'to_before_from' => 'De einddatum mag nietvoor de startdatum liggen', +'transfer_content' => 'Inhoud verzenden', +'transfer_document' => 'Document verzenden', +'transfer_no_read_access' => 'De gebruiker heeft geen leesrechten in deze map', 'transfer_no_write_access' => 'De gebruiker heeft geen schrijfrechten in deze map', 'transfer_objects' => 'Objecten overdragen', -'transfer_objects_to_user' => 'Objecten overdragen aan gebruiker', -'transfer_process_to_user' => '', +'transfer_objects_to_user' => 'Objecten verzenden aan gebruiker', +'transfer_process_to_user' => 'Verzenden naar gebruiker', 'transfer_to_user' => 'Overdragen aan gebruiker', 'transition_triggered_email' => 'Workflow-overgang geactiveerd', 'transition_triggered_email_body' => 'Workflow Overgang @@ -1854,23 +1898,23 @@ URL: [url]', 'tr_TR' => 'Turks', 'tuesday' => 'dinsdag', 'tuesday_abbr' => 'di', -'types_generic' => '', -'type_of_hook' => 'Soort hook', -'type_to_filter' => '', +'types_generic' => 'Algemene types', +'type_of_hook' => 'Type hook', +'type_to_filter' => 'Type om de lijst te filteren', 'type_to_search' => 'zoeken naar', 'uk_UA' => 'Oekraïens', 'under_folder' => 'In map', 'unknown_attrdef' => 'Onbekende attribuut definitie', -'unknown_command' => 'Opdracht niet herkend.', +'unknown_command' => 'Opdracht nietherkend.', 'unknown_document_category' => 'Onbekende categorie', -'unknown_group' => 'Onbekende Groep ID', +'unknown_group' => 'Onbekende Groep-ID', 'unknown_id' => 'Onbekende id', 'unknown_keyword_category' => 'Onbekend sleutelwoordcategorie', 'unknown_owner' => 'Onbekende eigenaar ID', 'unknown_user' => 'Onbekende gebruiker', 'unlinked_content' => 'Ongekoppelde inhoud', -'unlinked_documents' => 'Niet gekoppelde documenten', -'unlinked_folders' => 'Niet gekoppelde mappen', +'unlinked_documents' => 'nietgekoppelde documenten', +'unlinked_folders' => 'nietgekoppelde mappen', 'unlinking_objects' => 'Ontkoppel inhoud', 'unlock_cause_access_mode_all' => 'U kunt toch e.e.a. bijwerken omdat U machtiging "all" heeft. Blokkering wordt automatisch opgeheven.', 'unlock_cause_locking_user' => 'U kunt toch e.e.a. bijwerken omdat U degene bent die dit heeft geblokeerd. Blokkering wordt automatisch opgeheven.', @@ -1878,11 +1922,11 @@ URL: [url]', 'update' => 'Bijwerken', 'update_approvers' => 'Bijwerken lijst van [Goedkeurders]', 'update_document' => 'Bijwerken', -'update_fulltext_index' => 'Bijwerken volledige tekst index', -'update_info' => 'Bijwerken informatie', +'update_fulltext_index' => 'Index voor fulltext search bijwerken', +'update_info' => 'Update-informatie', 'update_locked_msg' => 'Dit document is geblokkeerd.', -'update_recipients' => 'update_reviewersBijwerken lijst van [Controleurs]', -'update_reviewers' => 'Bijwerken lijst van [Controleurs]', +'update_recipients' => 'Update de lijst vanontvangers', +'update_reviewers' => 'Update de lijst van beoordelaars', 'update_revisors' => 'Bewerkers update', 'update_transmittalitem' => 'Geüpdate item versturen', 'uploaded_by' => 'Geüpload door', @@ -1891,8 +1935,8 @@ 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', +'userdata_file' => 'Bestand met gebruikersgegevens', +'userid_groupid' => 'GebruikerID / Groep-ID', 'users' => 'Gebruikers', 'users_and_groups' => 'Gebruikers / Groepen', 'users_done_work' => 'Uitgevoerd werk gebruikers', @@ -1900,7 +1944,7 @@ URL: [url]', 'user_group' => 'Gebruiker / Groep', 'user_group_management' => 'Gebruikers / Groepenbeheer', 'user_image' => 'Afbeelding', -'user_info' => 'Gebruikers informatie', +'user_info' => 'Gebruikers-informatie', 'user_list' => 'Lijst van Gebruikers', 'user_login' => 'Gebruikersnaam', 'user_management' => 'Gebruikersbeheer', @@ -1911,10 +1955,10 @@ URL: [url]', 'valid_till' => 'Geldig tot', 'version' => 'Versie', 'versioning_file_creation' => 'Aanmaken bestand versies', -'versioning_file_creation_warning' => 'Met deze handeling maakt U een bestand aan die de versie voortgang informatie van een compleet DMS bevat. Na het aanmaken wordt ieder bestand opgeslagen in de document map.', +'versioning_file_creation_warning' => 'Met deze handeling maakt U een bestand aan die de versie voortgangsinformatie van een compleet DMS bevat. Na het aanmaken wordt ieder bestand opgeslagen in de document map.', 'versioning_info' => 'Versie eigenschappen', 'versiontolow' => 'Versie voor laag', -'version_comment' => '', +'version_comment' => 'Commentaar op deze versie', 'version_deleted_email' => 'Versie verwijderd', 'version_deleted_email_body' => 'Version deleted Document: [name] @@ -1923,18 +1967,20 @@ Parent folder: [folder_path] User: [username] URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Versie verwijderd', -'version_info' => 'Versie Informatie', +'version_info' => 'Versie-informatie', 'view' => 'Bekijk', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Bekijk online', 'warning' => 'Waarschuwing', -'webauthn_auth' => '', -'webauthn_crossplatform_info' => '', -'webauthn_info' => '', +'webauthn_auth' => 'WebAuthn Authentificatie', +'webauthn_crossplatform_info' => 'Gebruik cross-platform: kies \'Ja\' als u een verwijderbaar device hebt (bijv. een Yubico key), dat u gebruikt om verschillende computers in te loggen. Kies \'Nee\' als uw device verbonden is met de computer. De keuze bepaalt welk(e) device(s) worden aangeboden door de browser en/of het security-system van de computer.', +'webauthn_info' => 'WebAuthn is passwordless authentification met public key cryptography. Een private-public sleutelpaar (known as a credential) wordt gecreëerd voor een website. De private key wordt veilig opgeslagen op het device van de gebruiker; een public key en een random gegenereerd credential ID wordt naar de server verzonden. De server kan die dan gebruken om de identiteit van de gebruiker vast te stellen. De private key wordt meestal opgeslagen op een hardware-token. Het token moet geregistreerd worden voordat het kan worden gebruikt voor authenticatie.', 'webauth_crossplatform' => '', 'wednesday' => 'Woensdag', -'wednesday_abbr' => 'Woe', +'wednesday_abbr' => 'wo', 'weeks' => 'Weken', -'week_view' => 'Week Overzicht', +'week_view' => 'Weekoverzicht', 'workflow' => 'Workflow', 'workflows_involded' => 'Betrokken bij workflows', 'workflow_actions_management' => 'Workflow actiebeheer', @@ -1959,12 +2005,12 @@ 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_title' => 'Titel van de workflow', +'workflow_transition_without_user_group' => 'Minstens één transitie kent geen gebruiker of groep', 'workflow_user_summary' => 'Gebruiker samenvatting', -'wrong_filetype' => '', +'wrong_filetype' => 'Fout bestandstype', 'x_more_objects' => 'meer items', -'year_view' => 'Jaar Overzicht', +'year_view' => 'Jaaroverzicht', 'yes' => 'Ja', 'zh_CN' => 'Chinees (CN)', 'zh_TW' => 'Chinees (TW)', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 51db7318d..cb794098a 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1452), netixw (84), romi (93), uGn (112) +// Translators: Admin (1456), netixw (84), romi (93), uGn (112) $text = array( '2_factor_auth' => 'Uwierzytelnianie dwuetapowe', '2_factor_auth_info' => 'Uwierzytelnianie dwuetapowe', '2_fact_auth_secret' => 'Uwierzytelnianie dwuetapowe poufny kod', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Akceptuj', 'access_control' => 'Kontrola dostępu', 'access_control_is_off' => 'Kontrola dostepu jest wyłączona', @@ -161,11 +168,11 @@ URL: [url]', 'attrdef_type_email' => 'Email', 'attrdef_type_float' => 'Liczna zmiennoprzecinkowa', 'attrdef_type_folder' => '', -'attrdef_type_group' => '', +'attrdef_type_group' => 'Grupa', 'attrdef_type_int' => 'Liczba całkowita', 'attrdef_type_string' => 'Ciąg znaków', 'attrdef_type_url' => 'URL', -'attrdef_type_user' => '', +'attrdef_type_user' => 'Użytkownik', 'attrdef_valueset' => 'Zestaw wartości', 'attrdef_valueset_help' => '', 'attributes' => 'Atrybuty', @@ -210,6 +217,8 @@ URL: [url]', 'calendar' => 'Kalendarz', 'calendar_week' => 'Kalendarz tygodniowy', 'cancel' => 'Anuluj', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Nie można modyfikować zdezaktualizowanego lub odrzuconego dokumentu', 'cannot_change_final_states' => 'Ostrzeżenie: Nie można zmienić statusu dla dokumentu odrzuconego, wygasłego, lub w trakcie recenzowania albo zatwierdzania.', 'cannot_delete_user' => 'Nie można usunąć użytkownika', @@ -315,6 +324,7 @@ URL: [url]', 'daily' => 'Codziennie', 'databasesearch' => 'Przeszukiwanie bazy danych', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'Data', 'days' => 'dni', 'debug' => 'Debugowanie', @@ -340,6 +350,7 @@ URL: [url]', 'documents_locked' => 'Dokumenty zablokowane', 'documents_locked_by_you' => 'Dokumenty zablokowane przez Ciebie', 'documents_only' => 'Tylko dokumenty', +'documents_rejected' => '', 'documents_to_approve' => 'Dokumenty oczekujące na Twoje zatwierdzenie', 'documents_to_correct' => 'Dokumenty oczekujące na Twoje korekty', 'documents_to_process' => 'Dokumenty oczekujące na Twoje przetworzenie', @@ -381,7 +392,9 @@ 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' => 'Ten dokument jest pobierany', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Ten dokument jest pobierany', 'document_is_not_locked' => 'Ten dokument nie jest zablokowany', 'document_link_by' => 'Dowiązane przez', 'document_link_public' => 'Publiczny', @@ -453,7 +466,7 @@ URL: [url]', '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', +'dropfolder_metadata' => '', 'dropupload' => 'Szybki upload', 'drop_files_here' => 'Przeciągnij tu pliki!', 'dump_creation' => 'Utworzenie zrzutu bazy danych', @@ -534,7 +547,7 @@ URL: [url]', 'expire_in_1y' => 'Wygasa po 1 roku', 'expire_in_2h' => 'Wygasa po 2 godzinach', 'expire_in_2y' => 'Wygasa po 2 latach', -'expire_in_3y' => '', +'expire_in_3y' => 'Wygasa za 3 lata', 'expire_today' => 'Wygasa dzisiaj', 'expire_tomorrow' => 'Wygasa jutro', 'expiry_changed_email' => 'Zmieniona data wygaśnięcia', @@ -907,6 +920,7 @@ URL: [url]', 'october' => 'Październik', 'old' => 'Stary', 'only_jpg_user_images' => 'Wyłącznie pliki typu .jpg mogą być użyte jako obrazy użytkowników', +'operation_disallowed' => '', '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', @@ -1257,6 +1271,10 @@ Name: [username] 'settings_createdirectory' => 'Utwórz katalog', 'settings_currentvalue' => 'Bieżąca wartość', 'settings_Database' => 'Ustawienia bazy danych', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Baza danych', 'settings_dbDatabase_desc' => 'Nazwa dla bazy danych podana w procesie instalacji. Nie zmieniaj tego pola bez konieczności, na przykład kiedy baza danych została przeniesiona.', 'settings_dbDriver' => 'Typ bazy danych', @@ -1298,6 +1316,8 @@ Name: [username] 'settings_enableAdminRevApp_desc' => 'Odznacz aby usunąć Administratora z listy zatwierdzających/recenzentów', 'settings_enableCalendar' => 'Włącz kalendarz', 'settings_enableCalendar_desc' => 'Włącz/Wyłącz kalendarz', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Włącz schowek', 'settings_enableClipboard_desc' => 'Włącz/wyłącz schowek', 'settings_enableConverting' => 'Włącz konwertowanie', @@ -1458,6 +1478,8 @@ Name: [username] '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' => 'Zastąp typ MimeType dostarczony przez przeglądarkę, jeśli plik zostanie przesłany. Nowy typ MimeType jest określany przez sam SeedDMS.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', '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', @@ -1553,9 +1575,11 @@ Name: [username] 'settings_System' => 'System', 'settings_tasksInMenu' => 'Wybrane zadania', 'settings_tasksInMenu_approval' => 'Zatwierdzone', +'settings_tasksInMenu_checkedout' => '', '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_rejected' => '', 'settings_tasksInMenu_review' => 'Recenzji', 'settings_tasksInMenu_revision' => 'Korekty', 'settings_tasksInMenu_workflow' => 'Przepływu pracy', @@ -1569,6 +1593,8 @@ Name: [username] 'settings_updateNotifyTime' => 'Okres powiadamiania o zmianach', 'settings_updateNotifyTime_desc' => 'Użytkownicy są powiadamiani o zmianach w dokumentach, które miały miejsce w ciągu ostatnich \'Update Notify Time\' sekund', 'settings_upgrade_php' => 'Uaktualnij PHP do wersji przynajmniej 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Nazwa pliku z wersjonowaniem', 'settings_versioningFileName_desc' => 'Nazwa pliku, zawierającego informacje o wersjonowaniu, utworzonego przez narzędzie kopii zapasowej.', 'settings_versiontolow' => 'Za niska wersja', @@ -1610,6 +1636,7 @@ Name: [username] 'splash_add_to_transmittal' => 'Dodaj do przekazu', 'splash_add_transmittal' => 'Dodano przekaz', 'splash_add_user' => 'Dodano nowego użytkownika', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'Pamięć podręczna wyczyszczona', 'splash_cleared_clipboard' => 'Wyczyszczono schowek', 'splash_delete_access' => 'Prawo dostępu zostało usunięte', @@ -1631,6 +1658,8 @@ Name: [username] '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_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => 'Zaktualizowana lista rozszerzeń z repozytorium', 'splash_extension_import' => 'Rozszerzenie zainstalowane', 'splash_extension_refresh' => 'Odświeżona lista rozszerzeń', @@ -1871,6 +1900,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Usunięcie wersji', 'version_info' => 'Informacje o wersji', 'view' => 'Widok', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Obejrzyj online', 'warning' => 'Ostrzeżenie', 'webauthn_auth' => 'Uwierzytelnianie WebAuthn', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 3e89d6d53..64f1ee6b0 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1842), flaviove (627), lfcristofoli (352) +// Translators: Admin (1845), flaviove (627), lfcristofoli (352) $text = array( '2_factor_auth' => 'Autenticação de dois fatores', '2_factor_auth_info' => 'Este sistema impõe a autenticação de 2 fatores. Você precisará do Google Authenticator no seu celular. Abaixo você vê dois códigos QR. O caminho certo é o seu atual segredo. À esquerda, você pode definir um novo segredo. Se você definir um novo segredo, verifique novamente com o Google Authenticator.', '2_fact_auth_secret' => 'Segredo', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Aceitar', 'access_control' => 'Controle de acesso', 'access_control_is_off' => 'O controle de acesso avançado está desativado.', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Calendário', 'calendar_week' => 'Calendário semanal', 'cancel' => 'Cancelar', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Não é possível atribuir novos revisores a um documento que não está pendente de revisão ou aprovação pendente.', 'cannot_change_final_states' => 'Aviso: Você não pode alterar o estado do documento rejeitado, expirado ou com revisão ou aprovação.', 'cannot_delete_user' => 'Não é possível excluir usuário', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'Diariamente', 'databasesearch' => 'Pesquisar Base de dados', 'database_schema_version' => '', +'data_loading' => 'Aguarde o carregamento', 'date' => 'Data', 'days' => 'dias', 'debug' => 'Debug', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => 'Documentos bloqueados', 'documents_locked_by_you' => 'Documentos bloqueados por você', 'documents_only' => 'Somente documentos', +'documents_rejected' => '', 'documents_to_approve' => 'Documentos aguardando sua aprovação', 'documents_to_correct' => 'Documentos que precisam de correção', 'documents_to_process' => 'Documentos que precisam de processamento', @@ -400,7 +411,9 @@ Usuário: [username]', 'document_duplicate_name' => 'Duplicar nome do documento', 'document_has_no_workflow' => 'Documento não tem fluxo de trabalho', 'document_infos' => 'Informações', -'document_is_checked_out' => 'O documento está atualmente com estado de retirado. Se você fizer o envio de uma nova versão, a versão retirada não poderá mais ser registrada.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'O documento está atualmente com estado de retirado. Se você fizer o envio de uma nova versão, a versão retirada não poderá mais ser registrada.', 'document_is_not_locked' => 'Este documento não está travado', 'document_link_by' => 'Ligado por', 'document_link_public' => 'Público', @@ -477,7 +490,7 @@ URL: [url]', 'dropfolderdir_missing' => 'Sua pasta suspensa pessoal não existe no servidor! Por favor, peça ao seu administrador para criá-lo.', 'dropfolder_file' => 'Arquivo de pasta suspensa', 'dropfolder_folder' => 'Pasta da pasta-alvo', -'dropfolder_metadata' => 'soltar metadados da pasta', +'dropfolder_metadata' => '', 'dropupload' => 'Envio rápido', 'drop_files_here' => 'Solte os arquivos aqui!', 'dump_creation' => 'Criação de despejo de banco de dados', @@ -937,6 +950,7 @@ URL: [url]', 'october' => 'Outubro', 'old' => 'Antigo', 'only_jpg_user_images' => 'Somente imagens jpg podem ser utilizadas como avatar', +'operation_disallowed' => '', 'order_by_sequence_off' => 'O pedido por sequência é desativado nas configurações. Se você quiser que este parâmetro tenha efeito, você terá que ativá-lo novamente.', 'original_filename' => 'Arquivo original', 'overall_indexing_progress' => 'Progresso geral da indexação', @@ -1150,7 +1164,7 @@ URL: [url]', 'revision_request_email_subject' => '[sitename]: [name] - solicitação de revisão', 'revision_status' => 'Estado', 'revision_submit_email_body' => 'revisão enviar corpo do e-mail', -'revision_submit_email_subject' => 'Revisão enviar assunto de e-mail', +'revision_submit_email_subject' => '[sitename]: [name] - Revisão enviar assunto de e-mail', 'revision_summary' => 'Resumo das revisões', 'revisors' => 'Revisores', 'revisor_already_assigned' => 'O usuário já está designado como revisor.', @@ -1333,6 +1347,10 @@ Nome: [username] 'settings_createdirectory' => 'Criar diretório', 'settings_currentvalue' => 'Valor atual', 'settings_Database' => 'Configurações do banco de dados', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Banco de dados', 'settings_dbDatabase_desc' => 'O nome para o seu banco de dados, informado durante o processo de instalação. Não edite este campo a menos que necessário, por exemplo, se o banco de dados foi movido.', 'settings_dbDriver' => 'Tipo do Banco de dados', @@ -1374,6 +1392,8 @@ Nome: [username] 'settings_enableAdminRevApp_desc' => 'Ative esta opção se quiser que os administradores sejam listados como revisores/aprovadores e para transições de fluxo de trabalho.', 'settings_enableCalendar' => 'Habilitar Calendário', 'settings_enableCalendar_desc' => 'Habilitar/Desabilitar calendário', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Habilitar Área de Transferência', 'settings_enableClipboard_desc' => 'Habilitar/Desabilitar a área de transferência', 'settings_enableConverting' => 'Ativar conversão', @@ -1534,6 +1554,8 @@ Nome: [username] 'settings_onePageMode_desc' => 'O modo de uma página ativará o código javascript na página do ViewFolder, que atualiza a lista de pastas / documentos, navegação, etc. ao clicar em uma pasta ou alterar o parâmetro de classificação.', 'settings_overrideMimeType' => 'Substituir MimeType', 'settings_overrideMimeType_desc' => 'Substitua o MimeType entregue pelo navegador, se um arquivo for carregado. O novo MimeType é determinado pelo próprio Sistema GED.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Tamanho de arquivo parcial', 'settings_partitionSize_desc' => 'Tamanho dos arquivos parciais em bytes, enviados por jumploader. Não defina um valor maior do que o tamanho máximo de carregamento definido pelo servidor.', 'settings_passwordExpiration' => 'Expiração de senha', @@ -1629,9 +1651,11 @@ Nome: [username] 'settings_System' => 'Sistema', 'settings_tasksInMenu' => 'Tarefas selecionadas', 'settings_tasksInMenu_approval' => 'Aprovações', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => 'Selecione as tarefas que devem ser contadas. Se nenhuma for selecionado, todas as tarefas serão contadas.', 'settings_tasksInMenu_needscorrection' => 'Correção necessária', 'settings_tasksInMenu_receipt' => 'Recibos', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => 'Avaliações', 'settings_tasksInMenu_revision' => 'Revisões', 'settings_tasksInMenu_workflow' => 'Fluxo de trabalho', @@ -1645,6 +1669,8 @@ Nome: [username] 'settings_updateNotifyTime' => 'Atualizar Tempo de Notificação', 'settings_updateNotifyTime_desc' => 'Usuários são notificados sobe mudanças em documentos que se realizaram nos últimos segundos \'Tempo de Atualização de Notificação\'', 'settings_upgrade_php' => 'Atualize PHP para pelo menos a versão 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Versionando NomedoArquivo', 'settings_versioningFileName_desc' => 'O nome do arquivo de informações de versões criadas pela ferramenta de backup', 'settings_versiontolow' => 'Versão para baixo', @@ -1686,6 +1712,7 @@ Nome: [username] 'splash_add_to_transmittal' => 'Adicionar à transmissão', 'splash_add_transmittal' => 'Transmissão adicionada', 'splash_add_user' => 'Novo usuário adicionado', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'Cache limpo', 'splash_cleared_clipboard' => 'Área de transferência limpa', 'splash_delete_access' => 'Direito de acesso removido', @@ -1707,6 +1734,8 @@ Nome: [username] 'splash_error_add_to_transmittal' => 'Erro ao adicionar documento à transmissão', 'splash_error_rm_download_link' => 'Erro ao remover o link de download', 'splash_error_send_download_link' => 'Erro ao enviar o link de download', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => 'Lista atualizada de extensões do repositório', 'splash_extension_import' => 'Extensão instalada', 'splash_extension_refresh' => 'Lista atualizada de extensões', @@ -1947,6 +1976,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Versão eliminada', 'version_info' => 'Informações da versão', 'view' => 'Visualizar', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Ver online', 'warning' => 'Aviso', 'webauthn_auth' => '', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index e9e49c71b..3ee604f57 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1099), balan (87) +// Translators: Admin (1101), balan (87) $text = array( '2_factor_auth' => '', '2_factor_auth_info' => '', '2_fact_auth_secret' => '', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Accept', 'access_control' => 'Controlul accesului', 'access_control_is_off' => '', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Calendar', 'calendar_week' => 'Săptămână calendar', 'cancel' => 'Anulare', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Nu se poate modifica un document învechit(absolete) sau respins(rejected)', 'cannot_change_final_states' => 'Atenție: Nu puteți modifica status-ul unui document respins, expirat sau in așteptarea revizuirii/aprobarii', 'cannot_delete_user' => 'Nu se poate șterge utilizatorul', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'Zilnic', 'databasesearch' => 'Căutare baza de date', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'Data', 'days' => 'zile', 'debug' => '', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => '', 'documents_locked_by_you' => 'Documente blocate de tine', 'documents_only' => 'Doar documente', +'documents_rejected' => '', 'documents_to_approve' => 'Documente care așteaptă aprobarea dumneavoastră', 'documents_to_correct' => '', 'documents_to_process' => '', @@ -393,7 +404,9 @@ Utilizator: [username]', 'document_duplicate_name' => 'Nume document duplicat', 'document_has_no_workflow' => 'Documentul nu are workflow', 'document_infos' => 'Informații document', -'document_is_checked_out' => 'Documentul este in prezent verificat. Daca incarcati o noua versiune, versiunea verificata nu mai poate fi verificata din nou.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Documentul este in prezent verificat. Daca incarcati o noua versiune, versiunea verificata nu mai poate fi verificata din nou.', 'document_is_not_locked' => 'Acest document nu este blocat', 'document_link_by' => 'Corelat cu (Linked by)', 'document_link_public' => 'Public', @@ -546,7 +559,7 @@ URL: [url]', 'expire_in_1y' => 'Expira in un an', 'expire_in_2h' => '', 'expire_in_2y' => 'Expira in 2 ani', -'expire_in_3y' => '', +'expire_in_3y' => 'Expira in 3 ani', 'expire_today' => '', 'expire_tomorrow' => '', 'expiry_changed_email' => 'Data de expirare schimbată', @@ -665,7 +678,7 @@ URL: [url]', 'import_extension' => '', 'import_fs' => 'Import din filesystem', 'import_fs_warning' => '', -'import_users' => '', +'import_users' => 'Importa utilizatori', 'import_users_addnew' => '', 'import_users_update' => '', 'include_content' => '', @@ -919,6 +932,7 @@ URL: [url]', 'october' => 'Octombrie', 'old' => 'Vechi', 'only_jpg_user_images' => 'Doar imagini .jpg pot fi utilizate ca imagine-utilizator', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Ordonarea dupa secventa este dezactivata in setari. Daca doriti acest parametru sa aiba efect, va trebui sa-l reactivati.', 'original_filename' => 'Nume de fișier original', 'overall_indexing_progress' => 'Progres indexare total', @@ -1295,6 +1309,10 @@ URL: [url]', 'settings_createdirectory' => 'Creare director', 'settings_currentvalue' => 'Valoare curentă', 'settings_Database' => 'Setări Bază de date', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Baza de date', 'settings_dbDatabase_desc' => 'Numele bazei de date introdus în timpul procesului de instalare. Nu editați acest câmp decât dacă este necesar, dacă de exemplu baza de date a fost mutată.', 'settings_dbDriver' => 'Tip Baza de date', @@ -1336,6 +1354,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => 'Activați această opțiune dacă doriți ca administratorii să fie listati ca revizuitori/aprobatori sau in tranzițiile workflow-ului.', 'settings_enableCalendar' => 'Activare Calendar', 'settings_enableCalendar_desc' => 'Activare/dezactivare calendar', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Activare Clipboard', 'settings_enableClipboard_desc' => 'Activare/dezactivare clipboard în pagina \'Vizualizare Folder\'', 'settings_enableConverting' => 'Activare Conversie', @@ -1496,6 +1516,8 @@ URL: [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Suprascrie MMimeType', 'settings_overrideMimeType_desc' => 'Suprascrie MimeType expus de browser, dacă un fișier este încărcat. MimeType este determinat de SeedDMS.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Dimensiune fișier parțială', 'settings_partitionSize_desc' => 'Mărimea fișierelor parțiale în bytes, încărcate de jumploader. Nu setați o valoare mai mare decât dimensiunea maximă de încărcare stabilită de server.', 'settings_passwordExpiration' => 'Expirare parolă', @@ -1591,9 +1613,11 @@ URL: [url]', 'settings_System' => 'Sistem', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1607,6 +1631,8 @@ URL: [url]', 'settings_updateNotifyTime' => 'Timpul de actualizare a notificarilor', 'settings_updateNotifyTime_desc' => 'Utilizatorii sunt notificați cu privire la schimbările suferite de un documentul în ultima perioadă a \'Timpul de actualizare a notificarilor\' în secunde', 'settings_upgrade_php' => 'Upgrade PHP cel puțin la versiunea 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Nume Fișier versionare', 'settings_versioningFileName_desc' => 'Numele fișierului cu informatii ale versiunilor creat de către instrumentul de backup', 'settings_versiontolow' => 'Versiunea e prea mică(veche)', @@ -1648,6 +1674,7 @@ URL: [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Utilizator nou adăugat', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Clipboard golit', 'splash_delete_access' => '', @@ -1669,6 +1696,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1909,6 +1938,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Versiune ștearsă', 'version_info' => 'Informații versiune', 'view' => 'Vizualizare', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Vizualizare online', 'warning' => 'Avertisment', 'webauthn_auth' => '', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index fcf5d3628..b9df1fc11 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1687) +// Translators: Admin (1704) $text = array( '2_factor_auth' => 'Двухфакторная аутентификация', '2_factor_auth_info' => 'Использовать усиленную проверку подлинности', '2_fact_auth_secret' => 'Кдюч двухфакторной аутентификации', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Принять', 'access_control' => 'Контроль достпуа', 'access_control_is_off' => 'Контроль достпуа отключен', @@ -136,7 +143,7 @@ URL: [url]', 'approver_already_assigned' => 'Пользователь уже назначен в качестве утверждающего.', 'approver_already_removed' => 'Утверждающий уже удален из процесса утверждения или уже оставил утверждение.', 'april' => 'Апрель', -'archive' => '', +'archive' => 'Архив', 'archive_creation' => 'Создать архив', 'archive_creation_warning' => 'Эта операция создаст архив, содержащий все каталоги. После создания архив будет сохранен в каталоге данных сервера.
Внимание: архив созданный как понятный человеку, будет непригоден в качестве резервной копии для восстановления!', 'ar_EG' => 'Arabic', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Календарь', 'calendar_week' => 'Неделя', 'cancel' => 'Отмена', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Невозможно изменить устаревший или отклонённый документ', 'cannot_change_final_states' => 'Нельзя изменять статус отклонённого, устаревшего или ожидающего рецензии или утверждения', 'cannot_delete_user' => 'Невозможно удалить пользователя', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'Ежедневно', 'databasesearch' => 'Поиск по БД', 'database_schema_version' => '', +'data_loading' => 'Пожалуйста подождите, данные загружаются...', 'date' => 'Дата', 'days' => 'дни', 'debug' => 'Отладка', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => 'Заблокированные документы', 'documents_locked_by_you' => 'Документы, заблокированные вами', 'documents_only' => 'Только документы', +'documents_rejected' => '', 'documents_to_approve' => 'Документы, ожидающие вашего утверждения', 'documents_to_correct' => '', 'documents_to_process' => 'Документы требующие обработки', @@ -360,10 +371,10 @@ URL: [url]', 'documents_to_revise' => 'Документы на ревизии', 'documents_to_trigger_workflow' => '', 'documents_user_draft' => '', -'documents_user_expiration' => '', +'documents_user_expiration' => 'Просроченный документ', 'documents_user_needs_correction' => '', 'documents_user_no_reception' => '', -'documents_user_obsolete' => '', +'documents_user_obsolete' => 'Устаревшие документы', 'documents_user_reception' => '', 'documents_user_rejected' => 'Отклоненные документы', 'documents_user_requiring_attention' => 'Ваши документы, требующие внимания', @@ -393,7 +404,9 @@ URL: [url]', 'document_duplicate_name' => 'Одноимённый документ уже существует.', 'document_has_no_workflow' => 'Для документа не назначен процесс', 'document_infos' => 'Информация о документе', -'document_is_checked_out' => 'Документ в настоящее время проверяется. Если вы загрузить новую версию, то проверяемая версия не может быть возвращена обратно.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Документ в настоящее время проверяется. Если вы загрузить новую версию, то проверяемая версия не может быть возвращена обратно.', 'document_is_not_locked' => 'Документ не заблокирован', 'document_link_by' => 'Связан', 'document_link_public' => 'Публичный', @@ -505,7 +518,7 @@ URL: [url]', 'email_not_given' => 'Введите настоящий адрес e-mail.', 'empty_attribute_group_list' => 'Пустой список группы атрибутов', 'empty_folder_list' => 'Нет документов или каталогов', -'empty_list' => '', +'empty_list' => 'Записи отсутствуют', 'empty_notify_list' => 'Нет записей', 'enable_extension' => '', 'en_GB' => 'English (GB)', @@ -539,16 +552,16 @@ URL: [url]', 'expired_documents' => '', 'expires' => 'Срок действия', 'expire_by_date' => 'дата', -'expire_in_1d' => '', -'expire_in_1h' => '', +'expire_in_1d' => 'Истекает в течении 1 дня', +'expire_in_1h' => 'Истекает через час', 'expire_in_1m' => '1 месяц', 'expire_in_1w' => '1 неделя', 'expire_in_1y' => '1 год', -'expire_in_2h' => '', +'expire_in_2h' => 'Истекает через два часа', 'expire_in_2y' => '2 года', 'expire_in_3y' => '', -'expire_today' => '', -'expire_tomorrow' => '', +'expire_today' => 'Истекает сегодня', +'expire_tomorrow' => 'Истекает завтра', 'expiry_changed_email' => 'Срок действия изменен', 'expiry_changed_email_body' => 'Срок действия изменен Документ: [name] @@ -769,7 +782,7 @@ URL: [url]', 'lock_document' => 'Заблокировать', 'lock_message' => 'Документ заблокировал(а) [username]. Только имеющие права могут его разблокировать.', 'lock_status' => 'Статус', -'logfile_loading' => '', +'logfile_loading' => 'Подождите, идет загрузка лог-файла', 'login' => 'Логин', 'login_disabled_text' => 'Ваша учётная запись заблокирована, возможно, из-за нескольких неудачных попыток входа.', 'login_disabled_title' => 'Учётная запись заблокирована', @@ -862,7 +875,7 @@ URL: [url]', 'next_state' => 'Новое состояние', 'nl_NL' => 'Dutch', 'no' => 'Нет', -'notification' => '', +'notification' => 'Уведомление', 'notify_added_email' => 'Вы добавлены в список уведомлений', 'notify_added_email_body' => 'Вы добавлены в список уведомлений Имя: [name] @@ -883,7 +896,7 @@ URL: [url]', 'no_approval_needed' => 'Утверждение не требуется', 'no_attached_files' => 'Нет вложений', 'no_attribute_definitions' => '', -'no_backup_dir' => '', +'no_backup_dir' => 'Директория для архивирования не установлена', 'no_current_version' => 'Вы используете старую версию SeedDMS. Последняя доступная версия [latestversion].', 'no_default_keywords' => 'Нет меток', 'no_docs_checked_out' => 'Нет документов на рассмотрении', @@ -918,6 +931,7 @@ URL: [url]', 'october' => 'Октябрь', 'old' => 'Старый', 'only_jpg_user_images' => 'Разрешены только .jpg-изображения', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Сортировка последовательности выключена в настройках. Если вы хотите применить этот эффект, вам необходимо его включить', 'original_filename' => 'Исходное имя файла', 'overall_indexing_progress' => 'Общий прогресс индексации', @@ -1212,7 +1226,7 @@ URL: [url]', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', 'select_category' => 'Выберите категорию', -'select_group' => '', +'select_group' => 'Выберите группу', 'select_groups' => 'Выберите группы', 'select_grp_approvers' => 'Выберите утверждающую группу', 'select_grp_ind_approvers' => 'Выберите группу', @@ -1232,7 +1246,7 @@ URL: [url]', 'select_mimetype' => '', 'select_one' => 'Выберите', 'select_owner' => '', -'select_user' => '', +'select_user' => 'Выберите пользователя', 'select_users' => 'Выберите пользователей', 'select_value' => 'Выберите значение', 'select_workflow' => 'Выберите процесс', @@ -1302,6 +1316,10 @@ URL: [url]', 'settings_createdirectory' => 'Создать каталог', 'settings_currentvalue' => 'Текущее значение', 'settings_Database' => 'Настройки базы данных', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'База данных (БД)', 'settings_dbDatabase_desc' => 'Название базы данных (БД), введённое в ходе установки. Не изменять без необходимости, только, например, если БД перемещена.', 'settings_dbDriver' => 'Тип БД', @@ -1343,6 +1361,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => 'Если отключено, администратор не отображается в списке рецензирующих и утверждающих.', 'settings_enableCalendar' => 'Включить календарь', 'settings_enableCalendar_desc' => 'Включить/отключить календарь.', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Включить буфер обмена', 'settings_enableClipboard_desc' => 'Включить/отключить буфер обмена.', 'settings_enableConverting' => 'Включить преобразование', @@ -1493,16 +1513,18 @@ URL: [url]', 'settings_maxUploadSize' => 'Максимальный размер загружаемых файлов', 'settings_maxUploadSize_desc' => 'Это максимальный размер загружаемых файлов. Он повлияет на версии документов и вложения.', 'settings_more_settings' => 'Прочие настройки. Логин по умолчанию: admin/admin', -'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields' => 'Не показывать поле', 'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Не найден', 'settings_Notification' => 'Настройки извещения', 'settings_notwritable' => 'Конфигурация не может быть сохранена, потому что файл конфигурации только для чтения.', 'settings_no_content_dir' => 'Каталог содержимого', -'settings_onePageMode' => '', +'settings_onePageMode' => 'Одностраничный режим', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Переопределить mime тип', 'settings_overrideMimeType_desc' => 'Переопределение mime типа предоставленного браузером, если файл загружен. Новый mime тип определяется самой SeedDMS.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Частичный размер файла', 'settings_partitionSize_desc' => 'Размер частичных файлов в байтах, загружаемых через jumploader. Не устанавливать выше максимально возможного размера, установленного на сервере.', 'settings_passwordExpiration' => 'Срок действия пароля', @@ -1598,9 +1620,11 @@ URL: [url]', 'settings_System' => 'Система', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1614,6 +1638,8 @@ URL: [url]', 'settings_updateNotifyTime' => 'Период уведомлений об изменениях', 'settings_updateNotifyTime_desc' => 'Пользователи уведомляются об изменениях документов за указанные последние секунды.', 'settings_upgrade_php' => 'Обновите PHP до версии не ниже 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Название файла версий', 'settings_versioningFileName_desc' => 'Названия файла версий, создаваемого инструментом резервного копирования.', 'settings_versiontolow' => 'Слишком старая версия', @@ -1655,6 +1681,7 @@ URL: [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Добавлен новый пользователь', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Буфер обмена очищен', 'splash_delete_access' => '', @@ -1676,6 +1703,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1916,6 +1945,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: удалена версия «[name]»', 'version_info' => 'Информация о версии', 'view' => 'Просмотр', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Просмотреть', 'warning' => 'Внимание', 'webauthn_auth' => '', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index d929d77db..3cd2845d5 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -25,6 +25,13 @@ $text = array( '2_factor_auth' => '2-faktorové overovanie', '2_factor_auth_info' => 'This system enforces 2 factor authentication. You will need the Google Authenticator on your mobile phone. Below you see two QR codes. The right one is your current secret. On the left you can set a new secret. If you set a new secret make sure to rescan it with Google Authenticator.', '2_fact_auth_secret' => 'Tajný', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Prijať', 'access_control' => 'Kontrola prístupu', 'access_control_is_off' => 'Pokročilá kontrola prístupu je vypnutá', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Kalendár', 'calendar_week' => 'Kalendárny týždeň', 'cancel' => 'Zrušiť', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Cannot modify an obsolete or rejected document', 'cannot_change_final_states' => 'Warning: You cannot alter status for document rejected, expired or with pending review or approval', 'cannot_delete_user' => 'Nie je možné odstrániť používateľa', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'Denná', 'databasesearch' => 'Hľadať databázu', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'Dátum', 'days' => 'dní', 'debug' => 'Ladiť', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => 'Zamknuté dokumenty', 'documents_locked_by_you' => 'Vami uzamknuté dokumenty', 'documents_only' => 'Iba dokumenty', +'documents_rejected' => '', 'documents_to_approve' => 'Dokumenty čakajúce na schválenie používateľa', 'documents_to_correct' => 'Dokumenty, ktoré treba opraviť', 'documents_to_process' => 'Dokumenty, ktoré potrebujú spracovanie', @@ -400,7 +411,9 @@ Používateľ: [username]', 'document_duplicate_name' => 'Duplicitný názov dokumentu', 'document_has_no_workflow' => 'Dokument nemá pracovný postup', 'document_infos' => 'Informácie o dokumente', -'document_is_checked_out' => 'Document is currently checked out. If you upload a new version, then the checked out version cannot be checked back in anymore.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Document is currently checked out. If you upload a new version, then the checked out version cannot be checked back in anymore.', 'document_is_not_locked' => 'Tento dokument nie je zamknutý', 'document_link_by' => 'Odkazuje sem', 'document_link_public' => 'Verejný', @@ -938,6 +951,7 @@ URL: [url]', 'october' => 'Október', 'old' => 'Staré', 'only_jpg_user_images' => 'Ako obrázky používateľov je možné použiť iba obrázky .jpg', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Ordering by sequence is turned off in the settings. If you want this parameter to have effect, you will have to turn it back on.', 'original_filename' => 'Pôvodný názov súboru', 'overall_indexing_progress' => 'Celkový priebeh indexovania', @@ -1335,6 +1349,10 @@ Meno: [username] 'settings_createdirectory' => 'Vytvoriť zložku', 'settings_currentvalue' => 'Aktuálna hodnota', 'settings_Database' => 'Nastavenia databazy', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Databáza', 'settings_dbDatabase_desc' => 'The name for your database entered during the installation process. Do not edit this field unless necessary, if for example the database has been moved.', 'settings_dbDriver' => 'Typ databázy', @@ -1376,6 +1394,8 @@ Meno: [username] 'settings_enableAdminRevApp_desc' => 'Enable this if you want administrators to be listed as reviewers/approvers and for workflow transitions.', 'settings_enableCalendar' => 'Zapnúť kalendár', 'settings_enableCalendar_desc' => 'Zapnúť/vypnúť kalendár', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Aktivovať schránky', 'settings_enableClipboard_desc' => 'Enable/disable the clipboard on the \'View Folder\' page', 'settings_enableConverting' => 'Povoliť konverziu', @@ -1536,6 +1556,8 @@ Meno: [username] 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Override MimeType', 'settings_overrideMimeType_desc' => 'Override the MimeType delivered by the browser, if a file is uploaded. The new MimeType is determined by SeedDMS itself.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Čiastočná veľkosť súboru', 'settings_partitionSize_desc' => 'Size of partial files in bytes, uploaded by jumploader. Do not set a value larger than the maximum upload size set by the server.', 'settings_passwordExpiration' => 'Vypršanie hesla', @@ -1631,9 +1653,11 @@ Meno: [username] 'settings_System' => 'Systém', 'settings_tasksInMenu' => 'Selected tasks', 'settings_tasksInMenu_approval' => 'Approvals', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => 'Select those tasks which are to be counted. If none is selected, then all tasks will be counted.', 'settings_tasksInMenu_needscorrection' => 'Correction needed', 'settings_tasksInMenu_receipt' => 'Reviews', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => 'Receipts', 'settings_tasksInMenu_revision' => 'Revisions', 'settings_tasksInMenu_workflow' => 'Workflow', @@ -1647,6 +1671,8 @@ Meno: [username] 'settings_updateNotifyTime' => 'Aktualizovať čas notifikácie', 'settings_updateNotifyTime_desc' => 'Users are notified about document-changes that took place within the last \'Update Notify Time\' seconds', 'settings_upgrade_php' => 'Upgrade PHP to at least version 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Versioning FileName', 'settings_versioningFileName_desc' => 'The name of the versioning info file created by the backup tool', 'settings_versiontolow' => 'Verzia je nízka', @@ -1688,6 +1714,7 @@ Meno: [username] 'splash_add_to_transmittal' => 'Add to transmittal', 'splash_add_transmittal' => 'Added transmittal', 'splash_add_user' => 'Pridaný nový používateľ', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'Vymazanie vyrovnávacej pamäte', 'splash_cleared_clipboard' => 'Schránka bola vymazaná', 'splash_delete_access' => 'Access right deleted', @@ -1709,6 +1736,8 @@ Meno: [username] 'splash_error_add_to_transmittal' => 'Error while adding document to transmittal', 'splash_error_rm_download_link' => 'Error when removing download link', 'splash_error_send_download_link' => 'Error while sending download link', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => 'Updated list of extensions from repository', 'splash_extension_import' => 'Extensition installed', 'splash_extension_refresh' => 'Refreshed list of extensions', @@ -1949,6 +1978,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Verzia bola odstránená', 'version_info' => 'Informácie o verzii', 'view' => 'Zobraziť', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Zobraziť online', 'warning' => 'Upozornenie', 'webauthn_auth' => '', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index a6530313c..43f175a67 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -19,13 +19,20 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1162), MagnusI (649), tmichelfelder (106) +// Translators: Admin (1166), MagnusI (649), tmichelfelder (106) $text = array( '2_factor_auth' => '2-faktors autentisering', '2_factor_auth_info' => 'För stöd av 2-faktors autentisering behöver du Google Authenticator installerad på din mobiltelefon. Nedan ser du två QR-koder. Den högra är din hemliga kod och till vänster kan du skapa en ny kod. Om du skapar en ny kod måste du skanna den på nytt med Google Authenticator.', '2_fact_auth_secret' => 'Hemlighet', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Godkänn', 'access_control' => 'Åtkomstkontroll', 'access_control_is_off' => 'Avancerad åtkomstkontroll är inaktiverad', @@ -170,10 +177,10 @@ URL: [url]', 'attrdef_type' => 'Typ', 'attrdef_type_boolean' => 'Logisk', 'attrdef_type_date' => 'Datum', -'attrdef_type_document' => '', +'attrdef_type_document' => 'Dokument', 'attrdef_type_email' => 'E-post', 'attrdef_type_float' => 'Flyttal', -'attrdef_type_folder' => '', +'attrdef_type_folder' => 'Mapp', 'attrdef_type_group' => '', 'attrdef_type_int' => 'Heltal', 'attrdef_type_string' => 'Textsträng', @@ -223,6 +230,8 @@ URL: [url]', 'calendar' => 'Kalender', 'calendar_week' => 'Kalendervecka', 'cancel' => 'Avbryt', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Kan inte ändra ett dokument som har gått ut eller avvisats.', 'cannot_change_final_states' => 'OBS: Du kan inte ändra status för ett dokument som har avvisats, gått ut eller som väntar på att bli godkänt.', 'cannot_delete_user' => 'Du kan inte ta bort användaren.', @@ -328,6 +337,7 @@ URL: [url]', 'daily' => 'Dagligen', 'databasesearch' => 'Sök databas', 'database_schema_version' => '', +'data_loading' => 'Vänta tills data har laddats ...', 'date' => 'Datum', 'days' => 'dagar', 'debug' => 'Felsökning', @@ -353,6 +363,7 @@ URL: [url]', 'documents_locked' => 'Låsta dokument', 'documents_locked_by_you' => 'Dokument som du har låst', 'documents_only' => 'Endast dokument', +'documents_rejected' => '', 'documents_to_approve' => 'Dokument som du behöver godkänna', 'documents_to_correct' => '', 'documents_to_process' => 'Dokument som kräver åtgärd', @@ -394,7 +405,9 @@ Användare: [username]', 'document_duplicate_name' => 'Dubblett av dokumentnamn', 'document_has_no_workflow' => 'Dokumentet saknar arbetsflöde', 'document_infos' => 'Dokumentinformation', -'document_is_checked_out' => 'Dokumentet är redan utcheckat. Om du laddar upp en ny version kan den utcheckade versionen inte checkas in igen.', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Dokumentet är redan utcheckat. Om du laddar upp en ny version kan den utcheckade versionen inte checkas in igen.', 'document_is_not_locked' => 'Detta dokument är inte låst', 'document_link_by' => 'Länkat av', 'document_link_public' => 'Offentlig länk', @@ -671,7 +684,7 @@ 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' => 'Importera användare', 'import_users_addnew' => '', 'import_users_update' => '', 'include_content' => 'Inkudera innehåll', @@ -925,6 +938,7 @@ URL: [url]', 'october' => 'Oktober', 'old' => 'gammalt', 'only_jpg_user_images' => 'Bara .jpg-bilder kan användas som användarbild', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Sortering efter sekvens är inaktiverat i inställningarna.', 'original_filename' => 'Ursprungligt filnamn', 'overall_indexing_progress' => 'Total indexeringsprocess', @@ -1308,6 +1322,10 @@ Kommentar: [comment]', 'settings_createdirectory' => 'Skapa katalog', 'settings_currentvalue' => 'Aktuellt värde', 'settings_Database' => 'Databasinställningar', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Databas', 'settings_dbDatabase_desc' => 'Namnet på din databas som angavs under installationsprocessen. Ändra inte om det inte är nödvändigt, t.ex. om databasen har flyttats.', 'settings_dbDriver' => 'Databastyp', @@ -1349,6 +1367,8 @@ Kommentar: [comment]', 'settings_enableAdminRevApp_desc' => 'Ta bort utval, så att administratören inte kan väljas som person som kan granska/godkänna', 'settings_enableCalendar' => 'Aktivera kalendern', 'settings_enableCalendar_desc' => 'Aktivera/Inaktivera kalendar', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Aktivera urklipp', 'settings_enableClipboard_desc' => 'Aktivera/Inaktivera urklipp funktionen.', 'settings_enableConverting' => 'Aktivera filkonvertering', @@ -1509,6 +1529,8 @@ Kommentar: [comment]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Åsido Mediatyp (Mime)', 'settings_overrideMimeType_desc' => 'Åsidosätta MimeType levererad av webbläsaren, om en fil överförs. Den nya Mediatyp bestäms av SeedDMS själv.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Uppdelad filstorlek', 'settings_partitionSize_desc' => 'Storlek hos uppdelade filer i bytes som laddades upp med jumploader. Sätt inte ett värde som är större än den högsta tillåtna storleken på servern.', 'settings_passwordExpiration' => 'Lösenord utgångsdatum', @@ -1604,9 +1626,11 @@ Kommentar: [comment]', 'settings_System' => 'System', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1620,6 +1644,8 @@ Kommentar: [comment]', 'settings_updateNotifyTime' => 'Tid för uppdateringsmeddelande', 'settings_updateNotifyTime_desc' => 'Användare meddelas om att ändringar i dokumentet har genomförts inom de senaste \'Tid för uppdateringsmeddelande\' sekunder.', 'settings_upgrade_php' => 'Uppdatera PHP till åtminstone version 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Versionsinfo-filnamn', 'settings_versioningFileName_desc' => 'Namnet på versionsinfo-fil som skapas med backup-verktyget', 'settings_versiontolow' => 'Version för låg', @@ -1661,6 +1687,7 @@ Kommentar: [comment]', 'splash_add_to_transmittal' => 'Lägg till meddelande', 'splash_add_transmittal' => 'Meddelande tillagt', 'splash_add_user' => 'Ny användare tillagd', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'Cachen är rensad', 'splash_cleared_clipboard' => 'Urklipp rensat', 'splash_delete_access' => '', @@ -1682,6 +1709,8 @@ Kommentar: [comment]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => 'Fel vid borttagande av nedladdningslänk', 'splash_error_send_download_link' => 'Fel vid sändning av nedladdningslänk', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1922,6 +1951,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Version borttagen', 'version_info' => 'Versionsinformation', 'view' => 'Vy', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Visa online', 'warning' => 'Varning', 'webauthn_auth' => '', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 4e70ee015..8144bff19 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1110), aydin (83) +// Translators: Admin (1120), aydin (83) $text = array( '2_factor_auth' => 'İki faktörlü yetkilendirme', '2_factor_auth_info' => '', '2_fact_auth_secret' => '', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Kabul', 'access_control' => 'Erişim Kontrolü', 'access_control_is_off' => '', @@ -216,6 +223,8 @@ URL: [url]', 'calendar' => 'Takvim', 'calendar_week' => 'Takvim haftası', 'cancel' => 'İptal', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Geçersiz veya reddedilmiş doküman değiştirilemez.', 'cannot_change_final_states' => 'Dikkat: Reddedilen, süresi dolan, kontrol veya onay bekleyen dokümanın durumununu değiştiremezsiniz.', 'cannot_delete_user' => 'Kullanıcı silinemez', @@ -320,7 +329,8 @@ URL: [url]', 'current_version' => 'Mevcut versiyon', 'daily' => 'Günlük', 'databasesearch' => 'Veritabanı arama', -'database_schema_version' => '', +'database_schema_version' => 'Veritabanı tasarım sürümü', +'data_loading' => 'Lütfen veriler yüklenene kadar bekleyin…', 'date' => 'Tarih', 'days' => 'gün', 'debug' => '', @@ -346,6 +356,7 @@ URL: [url]', 'documents_locked' => '', 'documents_locked_by_you' => 'Doküman sizin tarafınızdan kilitlendi', 'documents_only' => 'Sadece dokümanlar', +'documents_rejected' => '', 'documents_to_approve' => 'Onayınızı bekleyen dokümanlar', 'documents_to_correct' => '', 'documents_to_process' => '', @@ -388,6 +399,8 @@ Kullanıcı: [username]', 'document_has_no_workflow' => 'Dokümanın iş akışı yok', 'document_infos' => 'Doküman Bilgisi', 'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => '', 'document_is_not_locked' => 'Bu doküman kilitli değil', 'document_link_by' => 'Link veren', 'document_link_public' => 'Genel', @@ -515,7 +528,7 @@ URL: [url]', 'error_no_folder_selected' => 'Hiçbir klasör seçilmedi', 'error_occured' => 'Bir hata oluştu', 'error_remove_document' => '', -'error_remove_folder' => '', +'error_remove_folder' => 'Klasörü Silerken Hata!', 'error_remove_permission' => '', 'error_rm_workflow' => '', 'error_rm_workflow_action' => '', @@ -681,7 +694,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' => '', +'installed_php_extensions' => 'Kurulu php eklentileri', 'internal_error' => 'İç hata', 'internal_error_exit' => 'İç hata. İstek tamamlanmadı.', 'invalid_access_mode' => 'Gereçsiz Erişim Modu', @@ -798,7 +811,7 @@ URL: [url]', 'missing_checksum' => 'Sağlama toplamı eksik', 'missing_file' => '', 'missing_filesize' => 'Dosya boyutu eksik', -'missing_php_extensions' => '', +'missing_php_extensions' => 'Eksik php eklentileri', 'missing_reception' => '', 'missing_request_object' => '', 'missing_transition_user_group' => 'Geçiş için kullanıcı/grup bilgisi eksik', @@ -857,7 +870,7 @@ URL: [url]', 'next_state' => 'Yeni durum', 'nl_NL' => 'Hollandaca', 'no' => 'Hayır', -'notification' => '', +'notification' => 'Notlar', 'notify_added_email' => 'Bildirim listesine eklendiniz', 'notify_added_email_body' => 'Bildirim listesine eklendiniz İsim: [name] @@ -878,7 +891,7 @@ URL: [url]', 'no_approval_needed' => 'Onay bekleyen yok.', 'no_attached_files' => 'Ek dosya yok', 'no_attribute_definitions' => '', -'no_backup_dir' => '', +'no_backup_dir' => 'Yedekleme dizini belirlenmedi', 'no_current_version' => 'Kullandığınız SeedDMS versiyonu eski görünüyor. Son versiyon [latestversion].', 'no_default_keywords' => 'Anahtar kelime yok', 'no_docs_checked_out' => '', @@ -913,6 +926,7 @@ URL: [url]', 'october' => 'Ekim', 'old' => 'Eski', 'only_jpg_user_images' => 'Kullanıcı resmi olarak sadece .jpg uzantı resimler kullanılabilir', +'operation_disallowed' => '', 'order_by_sequence_off' => '', 'original_filename' => 'Orijinal dosya adı', 'overall_indexing_progress' => '', @@ -1178,8 +1192,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' => '', +'seeddms_info' => 'SeedDMS hakkında bilgi', +'seeddms_version' => 'SeedDMS Sürümü', 'selection' => 'Seçim', 'select_attrdefgrp_show' => '', 'select_attribute_value' => '', @@ -1274,6 +1288,10 @@ URL: [url]', 'settings_createdirectory' => 'Dizin oluştur', 'settings_currentvalue' => 'Mevcut değer', 'settings_Database' => 'Veritabanı ayarları', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'Veritabanı', 'settings_dbDatabase_desc' => 'Kurulum sırasında girilen veritabanı adı. Bu alanı gerekmedikçe değiştirmeyin.', 'settings_dbDriver' => 'Veritabanı Tipi', @@ -1315,6 +1333,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => 'Yöneticilerin kontrol/onay listesine eklenmesi ve iş akış süreçlerini yapabilmeleri için bu ayarı etkinleştirin.', 'settings_enableCalendar' => 'Takvimi Etkinleştir', 'settings_enableCalendar_desc' => 'Takvimi etkinleştir/devre dışı bırak', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Panoyu Etkinleştir', 'settings_enableClipboard_desc' => '\'Klasör Görüntüle\' sayfasında panoyu etkinleştir/devredışı bırak', 'settings_enableConverting' => 'Dönüştürmeyi etkinleştir', @@ -1475,6 +1495,8 @@ URL: [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Kısmi dosya boyutu', 'settings_partitionSize_desc' => 'Jumploader ile yüklenecek dosyaların byte cinsinden kısmi dosya boyutu. Sunucu tarafından tanımlanandan daha büyük bir değer girmeyiniz.', 'settings_passwordExpiration' => 'Parola geçerlilik süresi', @@ -1570,9 +1592,11 @@ URL: [url]', 'settings_System' => 'Sistem', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1586,6 +1610,8 @@ URL: [url]', 'settings_updateNotifyTime' => 'Güncelleme Bildirim Zamanı', 'settings_updateNotifyTime_desc' => 'Kullanıcılara doküman güncellemelerinin \'Update Notify Time\' saniyede gerçekleştiği bildirilir.', 'settings_upgrade_php' => 'PHP versiyonu en az 5.6.38 olmalıdır', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Versiyonlama DosyaAdı', 'settings_versioningFileName_desc' => 'Yedekleme aracı tarafından oluşturulan versiyon bilgisi dosyasının adı', 'settings_versiontolow' => 'Versiyon düşük', @@ -1627,6 +1653,7 @@ URL: [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Yeni kullanıcı eklendi', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Pano temizlendi', 'splash_delete_access' => '', @@ -1648,6 +1675,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1888,6 +1917,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Versiyon silindi', 'version_info' => 'Versiyon Bilgisi', 'view' => 'Görüntüle', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Online görüntüle', 'warning' => 'Dikkat', 'webauthn_auth' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 40f39efc6..e0c4179c4 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1339) +// Translators: Admin (1340) $text = array( '2_factor_auth' => '', '2_factor_auth_info' => '', '2_fact_auth_secret' => '', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => 'Прийняти', 'access_control' => '', 'access_control_is_off' => '', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => 'Календар', 'calendar_week' => 'Тиждень', 'cancel' => 'Відміна', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => 'Неможливо змінити застарілий чи відхилений документ', 'cannot_change_final_states' => 'Не можна змінювати статус відхиленого, застарілого документа або документа, що очікує на рецензію чи затвердження', 'cannot_delete_user' => 'Неможливо видалити користувача', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => 'Щоденно', 'databasesearch' => 'Пошук по БД', 'database_schema_version' => '', +'data_loading' => '', 'date' => 'Дата', 'days' => 'дні', 'debug' => '', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => 'Заблоковані документи', 'documents_locked_by_you' => 'Документи, які ви заблокували', 'documents_only' => 'лише документи', +'documents_rejected' => '', 'documents_to_approve' => 'Документи, які чекають вашого затвердження', 'documents_to_correct' => '', 'documents_to_process' => 'Документи, які чекають опрацювання', @@ -393,7 +404,9 @@ URL: [url]', 'document_duplicate_name' => 'Документ з такою назвою вже існує', 'document_has_no_workflow' => 'Документові не призначено процес', 'document_infos' => 'Інформація про документ', -'document_is_checked_out' => 'Документ на опрацюванні', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => 'Документ на опрацюванні', 'document_is_not_locked' => 'Документ не заблокований', 'document_link_by' => 'Пов\'язаний', 'document_link_public' => 'Публічний', @@ -821,7 +834,7 @@ URL: [url]', 'my_documents' => 'Мої документи', 'my_transmittals' => 'Мої перенесення', 'name' => 'Назва', -'nb_NO' => '', +'nb_NO' => 'Норвезька (букмол)', 'needs_correction' => '', 'needs_workflow_action' => 'Цей документ потребує вашої уваги. Див. вкладку «Процес».', 'network_drive' => '', @@ -918,6 +931,7 @@ URL: [url]', 'october' => 'Жовтень', 'old' => 'Старий', 'only_jpg_user_images' => 'Дозволені лише .jpg-зображення', +'operation_disallowed' => '', 'order_by_sequence_off' => 'Можливість ручного сортування відключена в налаштуваннях. Якщо ви хочете використовувати цю функцію, ви повинні знову її включити.', 'original_filename' => 'Початкова назва файлу', 'overall_indexing_progress' => 'Загальне просування індексації"', @@ -1295,6 +1309,10 @@ URL: [url]', 'settings_createdirectory' => 'Створити каталог', 'settings_currentvalue' => 'Поточне значення', 'settings_Database' => 'Налаштування бази даних', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => 'База даних (БД)', 'settings_dbDatabase_desc' => 'Ім\'я бази даних (БД), введене при встановленні. Не змінювати без потреби, лише, наприклад, якщо БД переміщено.', 'settings_dbDriver' => 'Тип БД', @@ -1336,6 +1354,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => 'Якщо відключено, адміністратор не відображається у списку рецензентів і затверджувачів.', 'settings_enableCalendar' => 'Увімкнути календар', 'settings_enableCalendar_desc' => 'Увімкнути/вимкнути календар.', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => 'Увімкнути буфер обміну', 'settings_enableClipboard_desc' => 'Увімкнути/вимкнути буфер обміну.', 'settings_enableConverting' => 'Увімкнути перетворення', @@ -1496,6 +1516,8 @@ URL: [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Перевизначити mime тип', 'settings_overrideMimeType_desc' => 'Перевизначення mime типу наданого браузером, якщо файл завантажений. Новий mime тип визначається самою SeedDMS.', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => 'Частковий розмір файлу', 'settings_partitionSize_desc' => 'Розмір частинок файлів, які завантажуються через jumploader. Не встановлювати більше максимально дозволеного розміру, встановленого на сервері.', 'settings_passwordExpiration' => 'Термін дії пароля', @@ -1591,9 +1613,11 @@ URL: [url]', 'settings_System' => 'Система', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1607,6 +1631,8 @@ URL: [url]', 'settings_updateNotifyTime' => 'Період сповіщень про зміни', 'settings_updateNotifyTime_desc' => 'Користувачі отримують сповіщення за вказані останні секунди.', 'settings_upgrade_php' => 'Оновіть PHP до версії не нижче 5.6.38', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => 'Назва файлу версій', 'settings_versioningFileName_desc' => 'Назва файлу версій, створеного інструментами резервного копіювання.', 'settings_versiontolow' => 'Надто стара версія', @@ -1648,6 +1674,7 @@ URL: [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => 'Додано нового користувача', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Буфер обміну очищено', 'splash_delete_access' => '', @@ -1669,6 +1696,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', 'splash_error_send_download_link' => '', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1909,6 +1938,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: знищено версію «[name]»', 'version_info' => 'Інформація про версію', 'view' => 'Перегляд', +'view_document' => '', +'view_folder' => '', 'view_online' => 'Переглянути', 'warning' => 'Увага', 'webauthn_auth' => '', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index b13355555..a5acfc69e 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (773), archonwang (469), fengjohn (5), yang86 (1) +// Translators: Admin (774), archonwang (469), fengjohn (5), yang86 (1) $text = array( '2_factor_auth' => '双重认证', '2_factor_auth_info' => '该系统启用双重认证。您需要在手机上进行 Google 认证。下面你会看到两个 QR 码。正确的是你目前的密码。在左边你可以设置一个新的密码。如果您设置了新的密码,请重新扫描并通过 Google 认证。', '2_fact_auth_secret' => '双重认证密码', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => '接受', 'access_control' => '访问控制', 'access_control_is_off' => '高级访问控制已关闭', @@ -214,6 +221,8 @@ URL: [url]', 'calendar' => '日历', 'calendar_week' => '周历', 'cancel' => '取消', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => '不能修改文档的最终状态', 'cannot_change_final_states' => '警告:您不能更改文档的拒绝、过期、待校对、或是待审核等状态', 'cannot_delete_user' => '不能删除用户', @@ -321,6 +330,7 @@ URL: [url]', 'daily' => '天', 'databasesearch' => '数据库搜索', 'database_schema_version' => '', +'data_loading' => '', 'date' => '日期', 'days' => '天', 'debug' => '调试', @@ -346,6 +356,7 @@ URL: [url]', 'documents_locked' => '已锁定的文档', 'documents_locked_by_you' => '被您锁定的文档', 'documents_only' => '指定文件', +'documents_rejected' => '', 'documents_to_approve' => '待您审核的文档', 'documents_to_correct' => '', 'documents_to_process' => '', @@ -387,7 +398,9 @@ URL: [url]', 'document_duplicate_name' => '文档名称重复', 'document_has_no_workflow' => '文档未配置工作流', 'document_infos' => '文档信息', -'document_is_checked_out' => '文档已签出。如上传了新版本,则已签出的版本则不能再被签回。', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => '文档已签出。如上传了新版本,则已签出的版本则不能再被签回。', 'document_is_not_locked' => '该文档没有被锁定', 'document_link_by' => '链接', 'document_link_public' => '公开', @@ -909,6 +922,7 @@ URL: [url]', 'october' => '十 月', 'old' => 'Old', 'only_jpg_user_images' => '只用jpg格式的图片才可以作为用户身份图片', +'operation_disallowed' => '', 'order_by_sequence_off' => '按顺序排序功能设置已关闭。 如果你需要此参数设定有效,请在设置中打开它。', 'original_filename' => '原始文件名', 'overall_indexing_progress' => '所有索引进程', @@ -1270,6 +1284,10 @@ URL: [url]', 'settings_createdirectory' => '创建目录', 'settings_currentvalue' => '当前值', 'settings_Database' => '数据库设置', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => '数据库名称', 'settings_dbDatabase_desc' => '设置连接的数据库', 'settings_dbDriver' => '数据库类型', @@ -1311,6 +1329,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => '', 'settings_enableCalendar' => '开启日历', 'settings_enableCalendar_desc' => '启用/禁用日历模块', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => '允许剪切板', 'settings_enableClipboard_desc' => '在【查看文件夹】页,启用/禁用粘贴板', 'settings_enableConverting' => '打开转换', @@ -1471,6 +1491,8 @@ URL: [url]', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '覆盖Mime Type', 'settings_overrideMimeType_desc' => '', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => '', 'settings_partitionSize_desc' => '', 'settings_passwordExpiration' => '密码过期', @@ -1566,9 +1588,11 @@ URL: [url]', 'settings_System' => '系统设置', 'settings_tasksInMenu' => '', 'settings_tasksInMenu_approval' => '', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '', 'settings_tasksInMenu_needscorrection' => '', 'settings_tasksInMenu_receipt' => '', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '', 'settings_tasksInMenu_revision' => '', 'settings_tasksInMenu_workflow' => '', @@ -1582,6 +1606,8 @@ URL: [url]', 'settings_updateNotifyTime' => '更新时间通知', 'settings_updateNotifyTime_desc' => '通知用户有关文档的变化,采取了最后的内地方“更新通知时间”秒', 'settings_upgrade_php' => '', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => '文件名版本', 'settings_versioningFileName_desc' => '', 'settings_versiontolow' => '', @@ -1623,6 +1649,7 @@ URL: [url]', 'splash_add_to_transmittal' => '', 'splash_add_transmittal' => '', 'splash_add_user' => '用户已添加', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => 'Cache 缓存已清理', 'splash_cleared_clipboard' => '剪贴板已清空', 'splash_delete_access' => '', @@ -1644,6 +1671,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '移除下载链接时报错', 'splash_error_send_download_link' => '发送下载链接时报错', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '', 'splash_extension_import' => '', 'splash_extension_refresh' => '', @@ -1711,7 +1740,7 @@ URL: [url]', 'status_revisor_removed' => '', 'status_unknown' => '未知', 'storage_size' => '存储大小', -'subfolder_duplicate_name' => '', +'subfolder_duplicate_name' => '重复的文件夹', 'submit_2_fact_auth' => '', 'submit_approval' => '提交审核', 'submit_login' => '登录', @@ -1875,6 +1904,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - 版本已删除', 'version_info' => '版本信息', 'view' => '查看', +'view_document' => '', +'view_folder' => '', 'view_online' => '在线浏览', 'warning' => '警告', 'webauthn_auth' => '', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 819d55056..ca319ef79 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -19,12 +19,19 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2424) +// Translators: Admin (2425) $text = array( '2_factor_auth' => '2階段認證', '2_factor_auth_info' => '此系統強制執行2階段身份驗證。您將需要在手機上使用Google Authenticator。在下面,您可以看到兩個QR碼。正確的是您當前的秘密。在左側,您可以設置一個新的秘密。如果您設置了新的機密,請確保使用Google Authenticator重新掃描它。', '2_fact_auth_secret' => '秘密', +'abbr_day' => '', +'abbr_hour' => '', +'abbr_minute' => '', +'abbr_month' => '', +'abbr_second' => '', +'abbr_week' => '', +'abbr_year' => '', 'accept' => '接受', 'access_control' => '存取控制', 'access_control_is_off' => '進階存取控制(ACL)關閉', @@ -222,6 +229,8 @@ URL: [url]', 'calendar' => '日曆', 'calendar_week' => '日曆週', 'cancel' => '取消', +'cancel_checkout' => '', +'cancel_checkout_warning' => '', 'cannot_assign_invalid_state' => '不能修改文件的最終狀態', 'cannot_change_final_states' => '警告:您不能更改文件的拒絕、過期、待校對、或是待審核等狀態', 'cannot_delete_user' => '不能刪除使用者', @@ -327,6 +336,7 @@ URL: [url]', 'daily' => '每日', 'databasesearch' => '資料庫搜索', 'database_schema_version' => '', +'data_loading' => '', 'date' => '日期', 'days' => '天數', 'debug' => '除錯', @@ -352,6 +362,7 @@ URL: [url]', 'documents_locked' => '文件鎖定', 'documents_locked_by_you' => '被您鎖定的文件', 'documents_only' => '指定檔', +'documents_rejected' => '', 'documents_to_approve' => '待您審核的文件', 'documents_to_correct' => '需要更正的文件', 'documents_to_process' => '需要處理的文件', @@ -400,7 +411,9 @@ URL: [url]', 'document_duplicate_name' => '文件名稱重複', 'document_has_no_workflow' => '文件沒有工作流程', 'document_infos' => '文件資訊', -'document_is_checked_out' => '當前已簽出文檔。如果您上傳新版本,那麼簽出的版本將無法再簽回。', +'document_is_checked_out' => '', +'document_is_checked_out_remove' => '', +'document_is_checked_out_update' => '當前已簽出文檔。如果您上傳新版本,那麼簽出的版本將無法再簽回。', 'document_is_not_locked' => '該文件沒有被鎖定', 'document_link_by' => '連結', 'document_link_public' => '公開', @@ -477,7 +490,7 @@ URL: [url]', 'dropfolderdir_missing' => '您的個人放置文件夾在服務器上不存在!請要求管理員創建它', 'dropfolder_file' => '檔案來源為 drop 目錄', 'dropfolder_folder' => '目錄來源為下拉目錄', -'dropfolder_metadata' => '下拉目錄的Metadata', +'dropfolder_metadata' => '', 'dropupload' => '快速上傳', 'drop_files_here' => '拖入這裡', 'dump_creation' => '轉儲數據', @@ -938,6 +951,7 @@ URL: [url]', 'october' => '十 月', 'old' => 'Old', 'only_jpg_user_images' => '只用jpg格式的圖片才可以作為使用者身份圖片', +'operation_disallowed' => '', 'order_by_sequence_off' => '在設置中關閉了按順序排序。如果希望此參數生效,則必須重新打開它。', 'original_filename' => '原始檔名', 'overall_indexing_progress' => '整體索引編制進度', @@ -1333,6 +1347,10 @@ URL: [url]', 'settings_createdirectory' => '創建目錄', 'settings_currentvalue' => '當前值', 'settings_Database' => '資料庫設定', +'settings_dateformat' => '', +'settings_dateformat_desc' => '', +'settings_datetimeformat' => '', +'settings_datetimeformat_desc' => '', 'settings_dbDatabase' => '資料庫', 'settings_dbDatabase_desc' => '在安裝過程中輸入的數據庫名稱。除非必要,否則請勿編輯此字段,例如,如果數據庫已移動。', 'settings_dbDriver' => '資料庫類型', @@ -1374,6 +1392,8 @@ URL: [url]', 'settings_enableAdminRevApp_desc' => '如果希望管理員被列為審閱者/批准者並進行工作流轉換,請啟用此選項。', 'settings_enableCalendar' => '啟動月曆', 'settings_enableCalendar_desc' => '啟用/禁用日曆', +'settings_enableCancelCheckout' => '', +'settings_enableCancelCheckout_desc' => '', 'settings_enableClipboard' => '啟動剪貼簿', 'settings_enableClipboard_desc' => '在“查看文件夾”頁面上啟用/禁用剪貼簿', 'settings_enableConverting' => '啟動轉換', @@ -1534,6 +1554,8 @@ URL: [url]', 'settings_onePageMode_desc' => '單一頁面模式將打開ViewFolder頁面上的javascript代碼,當單擊文件夾或更改排序參數時,該代碼將更新文件夾/文檔列表,導航等。', 'settings_overrideMimeType' => '覆蓋MimeType', 'settings_overrideMimeType_desc' => '如果上傳了文件,則覆蓋瀏覽器提供的MimeType。新的MimeType由SeedDMS本身確定。', +'settings_overrideTheme' => '', +'settings_overrideTheme_desc' => '', 'settings_partitionSize' => '部分文件大小', 'settings_partitionSize_desc' => '由Jumploader上傳的部分文件的大小(以字節為單位)。請勿將值設置為大於服務器設置的最大上傳大小。', 'settings_passwordExpiration' => '密碼過期', @@ -1629,9 +1651,11 @@ URL: [url]', 'settings_System' => '系統', 'settings_tasksInMenu' => '選定的任務', 'settings_tasksInMenu_approval' => '批准書', +'settings_tasksInMenu_checkedout' => '', 'settings_tasksInMenu_desc' => '選擇要計算的那些任務。如果未選擇任何一項,則將計算所有任務。', 'settings_tasksInMenu_needscorrection' => '需要更正', 'settings_tasksInMenu_receipt' => '收據', +'settings_tasksInMenu_rejected' => '', 'settings_tasksInMenu_review' => '預覽', 'settings_tasksInMenu_revision' => '修訂版', 'settings_tasksInMenu_workflow' => '工作流程', @@ -1645,6 +1669,8 @@ URL: [url]', 'settings_updateNotifyTime' => '更新時間通知', 'settings_updateNotifyTime_desc' => '通知使用者有關文件的變化,採取了最後的內地方“更新通知時間”秒', 'settings_upgrade_php' => '將PHP升級到至少5.6.38版本', +'settings_useHomeAsRootFolder' => '', +'settings_useHomeAsRootFolder_desc' => '', 'settings_versioningFileName' => '檔案名版本', 'settings_versioningFileName_desc' => '備份工具創建的版本資訊文件的名稱', 'settings_versiontolow' => '版本低', @@ -1686,6 +1712,7 @@ URL: [url]', 'splash_add_to_transmittal' => '新增到傳送', 'splash_add_transmittal' => '加入傳送', 'splash_add_user' => '新增新的使用者', +'splash_cancel_checkout' => '', 'splash_cleared_cache' => '快取清除', 'splash_cleared_clipboard' => '剪貼簿已清除', 'splash_delete_access' => '訪問權限已刪除', @@ -1707,6 +1734,8 @@ URL: [url]', 'splash_error_add_to_transmittal' => '將文件添加到傳送時出錯', 'splash_error_rm_download_link' => '刪除下載鏈接時出錯', 'splash_error_send_download_link' => '發送下載鏈接時出錯', +'splash_expiration_date_cleared' => '', +'splash_expiration_date_set' => '', 'splash_extension_getlist' => '來自存儲庫的擴展名更新列表', 'splash_extension_import' => '安裝擴展', 'splash_extension_refresh' => '刷新的擴展名列表', @@ -1947,6 +1976,8 @@ URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name]-版本已刪除', 'version_info' => '版本資訊', 'view' => '檢視', +'view_document' => '', +'view_folder' => '', 'view_online' => '線上流覽', 'warning' => '警告', 'webauthn_auth' => '', diff --git a/op/op.AddDocument.php b/op/op.AddDocument.php index 704052eea..f76224216 100644 --- a/op/op.AddDocument.php +++ b/op/op.AddDocument.php @@ -135,10 +135,11 @@ if (!is_numeric($sequence)) { switch($_POST["presetexpdate"]) { case "date": - $tmp = explode('-', $_POST["expdate"]); - if(count($tmp) != 3) - UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("malformed_expiration_date")); - $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); + $expires = makeTsFromDate($_POST["expdate"]); +// $tmp = explode('-', $_POST["expdate"]); +// if(count($tmp) != 3) +// UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("malformed_expiration_date")); +// $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); break; case "1w": $tmp = explode('-', date('Y-m-d')); @@ -303,13 +304,6 @@ if(isset($_POST[$prefix.'-fine-uploader-uuids']) && $_POST[$prefix.'-fine-upload } } -if($settings->_enableFullSearch) { - $index = $indexconf['Indexer']::open($settings->_luceneDir); - $indexconf['Indexer']::init($settings->_stopWordsFile); -} else { - $index = null; -} - /* Check if additional notification shall be added */ $notusers = array(); if(!empty($_POST['notification_users'])) { @@ -371,8 +365,7 @@ for ($file_num=0;$file_numsetParam('documentsource', $docsource); $controller->setParam('folder', $folder); - $controller->setParam('index', $index); - $controller->setParam('indexconf', $indexconf); + $controller->setParam('fulltextservice', $fulltextservice); $controller->setParam('name', $name); $controller->setParam('comment', $comment); $controller->setParam('expires', $expires); diff --git a/op/op.AddEvent.php b/op/op.AddEvent.php index c18aac653..b5ce57a54 100644 --- a/op/op.AddEvent.php +++ b/op/op.AddEvent.php @@ -49,14 +49,16 @@ if (!isset($_POST["name"]) || !isset($_POST["comment"]) ) { $name = $_POST["name"]; $comment = $_POST["comment"]; if(isset($_POST["from"])) { - $tmp = explode('-', $_POST["from"]); - $from = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); + $from = makeTsFromDate($_POST["from"]); +// $tmp = explode('-', $_POST["from"]); +// $from = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); } else { $from = mktime(0,0,0, intval($_POST["frommonth"]), intval($_POST["fromday"]), intval($_POST["fromyear"])); } if(isset($_POST["to"])) { - $tmp = explode('-', $_POST["to"]); - $to = mktime(23,59,59, $tmp[1], $tmp[2], $tmp[0]); + $to = makeTsFromDate($_POST["to"])+86400; +// $tmp = explode('-', $_POST["to"]); +// $to = mktime(23,59,59, $tmp[1], $tmp[2], $tmp[0]); } else { $to = mktime(23,59,59, intval($_POST["tomonth"]), intval($_POST["today"]), intval($_POST["toyear"])); } diff --git a/op/op.AddSubFolder.php b/op/op.AddSubFolder.php index 19012dd46..c7fe9f600 100644 --- a/op/op.AddSubFolder.php +++ b/op/op.AddSubFolder.php @@ -108,6 +108,7 @@ if(!$settings->_enableDuplicateSubFolderNames) { } } +$controller->setParam('fulltextservice', $fulltextservice); $controller->setParam('folder', $folder); $controller->setParam('name', $name); $controller->setParam('comment', $comment); diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 4f30ab91b..cb70295e9 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -16,21 +16,21 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -include("../inc/inc.Settings.php"); -include("../inc/inc.LogInit.php"); -include("../inc/inc.Utils.php"); -include("../inc/inc.Language.php"); -include("../inc/inc.Init.php"); -include("../inc/inc.Extension.php"); -include("../inc/inc.DBInit.php"); -include("../inc/inc.ClassNotificationService.php"); -include("../inc/inc.ClassEmailNotify.php"); -include("../inc/inc.ClassUI.php"); -include("../inc/inc.ClassController.php"); +require_once("../inc/inc.Settings.php"); +require_once("../inc/inc.LogInit.php"); +require_once("../inc/inc.Utils.php"); +require_once("../inc/inc.Language.php"); +require_once("../inc/inc.Init.php"); +require_once("../inc/inc.Extension.php"); +require_once("../inc/inc.DBInit.php"); +require_once("../inc/inc.ClassNotificationService.php"); +require_once("../inc/inc.ClassEmailNotify.php"); +require_once("../inc/inc.ClassUI.php"); +require_once("../inc/inc.ClassController.php"); require_once("../inc/inc.ClassSession.php"); -include("../inc/inc.ClassPasswordStrength.php"); -include("../inc/inc.ClassPasswordHistoryManager.php"); +require_once("../inc/inc.ClassPasswordStrength.php"); +require_once("../inc/inc.ClassPasswordHistoryManager.php"); /* Load session */ if (isset($_COOKIE["mydms_session"])) { @@ -52,12 +52,17 @@ if (isset($_COOKIE["mydms_session"])) { echo json_encode(array('error'=>1)); exit; } - $dms->setUser($user); if($user->isAdmin()) { if($resArr["su"]) { $user = $dms->getUser($resArr["su"]); } } + $dms->setUser($user); + if($settings->_useHomeAsRootFolder && !$user->isAdmin() && $user->getHomeFolder()) { + $dms->checkWithinRootDir = true; + $dms->setRootFolderID($user->getHomeFolder()); + } + $notifier = new SeedDMS_NotificationService(); if(isset($GLOBALS['SEEDDMS_HOOKS']['notification'])) { foreach($GLOBALS['SEEDDMS_HOOKS']['notification'] as $notificationObj) { @@ -123,7 +128,7 @@ switch($command) { if($user) { $query = $_GET['query']; - $hits = $dms->search($query, $limit=0, $offset=0, $logicalmode='AND', $searchin=array(), $startFolder=null, $owner=null, $status = array(), $creationstartdate=array(), $creationenddate=array(), $modificationstartdate=array(), $modificationenddate=array(), $categories=array(), $attributes=array(), $mode=0x1, $expirationstartdate=array(), $expirationenddate=array()); + $hits = $dms->search($query, $limit=0, $offset=0, $logicalmode='AND', $searchin=array(), $startFolder=$dms->getRootFolder(), $owner=null, $status = array(), $creationstartdate=array(), $creationenddate=array(), $modificationstartdate=array(), $modificationenddate=array(), $categories=array(), $attributes=array(), $mode=0x1, $expirationstartdate=array(), $expirationenddate=array()); if($hits) { $result = array(); foreach($hits['docs'] as $hit) { @@ -139,7 +144,7 @@ switch($command) { if($user) { $query = $_GET['query']; - $hits = $dms->search($query, $limit=0, $offset=0, $logicalmode='AND', $searchin=array(), $startFolder=null, $owner=null, $status = array(), $creationstartdate=array(), $creationenddate=array(), $modificationstartdate=array(), $modificationenddate=array(), $categories=array(), $attributes=array(), $mode=0x2, $expirationstartdate=array(), $expirationenddate=array()); + $hits = $dms->search($query, $limit=0, $offset=0, $logicalmode='AND', $searchin=array(), $startFolder=$dms->getRootFolder(), $owner=null, $status = array(), $creationstartdate=array(), $creationenddate=array(), $modificationstartdate=array(), $modificationenddate=array(), $categories=array(), $attributes=array(), $mode=0x2, $expirationstartdate=array(), $expirationenddate=array()); if($hits) { $result = array(); foreach($hits['folders'] as $hit) { @@ -155,9 +160,10 @@ switch($command) { case 'subtree': /* {{{ */ if($user) { if(empty($_GET['node'])) - $nodeid = $settings->_rootFolderID; + $folder = $dms->getHomeFolder(); else - $nodeid = (int) $_GET['node']; + $folder = $dms->getFolder((int) $_GET['node']); + if (!is_object($folder)) return ''; if(empty($_GET['showdocs'])) $showdocs = false; else @@ -167,9 +173,6 @@ switch($command) { else $orderby = $_GET['orderby']; - $folder = $dms->getFolder($nodeid); - if (!is_object($folder)) return ''; - $subfolders = $folder->getSubFolders($orderby); $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, M_READ); $tree = array(); @@ -513,18 +516,9 @@ switch($command) { ); $docname = $document->getName(); - if($settings->_enableFullSearch) { - $index = $indexconf['Indexer']::open($settings->_luceneDir); - $indexconf['Indexer']::init($settings->_stopWordsFile); - } else { - $index = null; - $indexconf = null; - } - $controller = Controller::factory('RemoveDocument', array('dms'=>$dms, 'user'=>$user)); $controller->setParam('document', $document); - $controller->setParam('index', $index); - $controller->setParam('indexconf', $indexconf); + $controller->setParam('fulltextservice', $fulltextservice); if($controller->run()) { if ($notifier){ $subject = "document_deleted_email_subject"; @@ -779,19 +773,10 @@ switch($command) { $cats = array(); - if($settings->_enableFullSearch) { - $index = $indexconf['Indexer']::open($settings->_luceneDir); - $indexconf['Indexer']::init($settings->_stopWordsFile); - } else { - $index = null; - $indexconf = null; - } - $controller = Controller::factory('AddDocument', array('dms'=>$dms, 'user'=>$user)); $controller->setParam('documentsource', 'upload'); $controller->setParam('folder', $folder); - $controller->setParam('index', $index); - $controller->setParam('indexconf', $indexconf); + $controller->setParam('fulltextservice', $fulltextservice); $controller->setParam('name', $name); $controller->setParam('comment', ''); $controller->setParam('expires', $expires); @@ -932,21 +917,28 @@ switch($command) { break; /* }}} */ case 'indexdocument': /* {{{ */ + case 'indexfolder': /* {{{ */ if($user && $user->isAdmin()) { - if($settings->_enableFullSearch) { - $document = $dms->getDocument($_REQUEST['id']); - if($document) { - $index = $indexconf['Indexer']::open($settings->_luceneDir); - if($index) { - $indexconf['Indexer']::init($settings->_stopWordsFile); - $idoc = new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, false, $settings->_cmdTimeout); + if($fulltextservice) { + if($command == 'indexdocument') { + $hook = 'indexDocument'; + $object = $dms->getDocument($_REQUEST['id']); + $prefix = 'D'; + } else { + $hook = 'indexFolder'; + $object = $dms->getFolder($_REQUEST['id']); + $prefix = 'F'; + } + if($object) { + if($index = $fulltextservice->Indexer()) { + $idoc = $fulltextservice->IndexedDocument($object, true); $error = $idoc->getErrorMsg(); if(!$error) { $ires = null; - if(isset($GLOBALS['SEEDDMS_HOOKS']['indexDocument'])) { - foreach($GLOBALS['SEEDDMS_HOOKS']['indexDocument'] as $hookObj) { - if (method_exists($hookObj, 'preIndexDocument')) { - $ires = $hookObj->preIndexDocument(null, $document, $idoc); + if(isset($GLOBALS['SEEDDMS_HOOKS'][$hook])) { + foreach($GLOBALS['SEEDDMS_HOOKS'][$hook] as $hookObj) { + if (method_exists($hookObj, 'pre'.ucfirst($hook))) { + $ires = $hookObj->preIndexDocument(null, $object, $idoc); } } } @@ -954,17 +946,17 @@ switch($command) { $ires = $index->addDocument($idoc); header('Content-Type: application/json'); if(false === $ires) { - echo json_encode(array('success'=>false, 'message'=>getMLText('error_document_indexed'), 'data'=>$document->getID())); + echo json_encode(array('success'=>false, 'message'=>getMLText('error_document_indexed'), 'data'=>$prefix.$object->getID())); } else { - echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_indexed'), 'data'=>$document->getID(), 'cmd'=>$idoc->getCmd())); + echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_indexed'), 'data'=>$prefix.$object->getID(), 'cmd'=>$idoc->getCmd())); } } else { header('Content-Type: application/json'); - echo json_encode(array('success'=>false, 'message'=>$error, 'data'=>$document->getID(), 'mimetype'=>$idoc->getMimeType(), 'cmd'=>$idoc->getCmd())); + echo json_encode(array('success'=>false, 'message'=>$error, 'data'=>$object->getID(), 'mimetype'=>$idoc->getMimeType(), 'cmd'=>$idoc->getCmd())); } } else { header('Content-Type: application/json'); - echo json_encode(array('success'=>false, 'message'=>getMLText('error_occured'), 'data'=>$document->getID())); + echo json_encode(array('success'=>false, 'message'=>getMLText('error_occured'), 'data'=>$prefix.$object->getID())); } } else { header('Content-Type: application/json'); diff --git a/op/op.EditAttributes.php b/op/op.EditAttributes.php index 4397351a6..cde0f86e4 100644 --- a/op/op.EditAttributes.php +++ b/op/op.EditAttributes.php @@ -71,7 +71,12 @@ if($attributes) { foreach($attributes as $attrdefid=>$attribute) { $attrdef = $dms->getAttributeDefinition($attrdefid); if($attribute) { - if(!$attrdef->validate($attribute)) { + switch($attrdef->getType()) { + case SeedDMS_Core_AttributeDefinition::type_date: + $attribute = date('Y-m-d', makeTsFromDate($attribute)); + break; + } + if(!$attrdef->validate($attribute, $version, true)) { $errmsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute); UI::exitError(getMLText("document_title", array("documentname" => $document->getName())), $errmsg); } diff --git a/op/op.EditDocument.php b/op/op.EditDocument.php index 9854e28ca..44e4556a1 100644 --- a/op/op.EditDocument.php +++ b/op/op.EditDocument.php @@ -79,8 +79,9 @@ else if(isset($_POST['presetexpdate'])) { switch($_POST["presetexpdate"]) { case "date": - $tmp = explode('-', $_POST["expdate"]); - $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); + $expires = makeTsFromDate($_POST["expdate"]); +// $tmp = explode('-', $_POST["expdate"]); +// $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); break; case "1w": $tmp = explode('-', date('Y-m-d')); @@ -121,6 +122,7 @@ foreach($document->getAttributes() as $ai=>$aa) $oldattributes[$ai] = clone $aa; //$oldattributes = $document->getAttributes(); +$controller->setParam('fulltextservice', $fulltextservice); $controller->setParam('document', $document); $controller->setParam('name', $name); $controller->setParam('comment', $comment); diff --git a/op/op.EditEvent.php b/op/op.EditEvent.php index 55dc8cf84..7f73a438e 100644 --- a/op/op.EditEvent.php +++ b/op/op.EditEvent.php @@ -61,15 +61,17 @@ else $comment = $_POST["comment"]; if(isset($_POST["from"])) { - $from = explode('T', $_POST["from"]); - $tmp = explode('-', $from[0]); - $from = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); + $from = makeTsFromDate($_POST["from"]); +// $from = explode('T', $_POST["from"]); +// $tmp = explode('-', $from[0]); +// $from = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); } else { UI::exitError(getMLText("edit_event"),getMLText("error_occured")); } if(isset($_POST["to"])) { - $tmp = explode('-', $_POST["to"]); - $to = mktime(23,59,59, $tmp[1], $tmp[2], $tmp[0]); + $to = makeTsFromDate($_POST["to"])+86400; +// $tmp = explode('-', $_POST["to"]); +// $to = mktime(23,59,59, $tmp[1], $tmp[2], $tmp[0]); } else { $to = $event['stop'] - $event['start'] + $from;; } diff --git a/op/op.EditFolder.php b/op/op.EditFolder.php index 6ea93f654..ea2c61510 100644 --- a/op/op.EditFolder.php +++ b/op/op.EditFolder.php @@ -74,6 +74,7 @@ $oldattributes = array(); foreach($folder->getAttributes() as $ai=>$aa) $oldattributes[$ai] = clone $aa; +$controller->setParam('fulltextservice', $fulltextservice); $controller->setParam('folder', $folder); $controller->setParam('name', $name); $controller->setParam('comment', $comment); diff --git a/op/op.ImportFS.php b/op/op.ImportFS.php index 73afdeed4..19cf01aea 100644 --- a/op/op.ImportFS.php +++ b/op/op.ImportFS.php @@ -174,10 +174,10 @@ function import_folder($dirname, $folder, $setfiledate, $setfolderdate, $metadat echo $mimetype." - ".$filetype." - ".$path."
\n"; if($res = $folder->addDocument($docname, $comment, $expires, $owner, $keywords, - $metadata[$path]['category'], $filetmp, $name, + !empty($metadata[$path]['category']) ? $metadata[$path]['category'] : array(), $filetmp, $name, $filetype, $mimetype, $sequence, $reviewers, $approvers, $reqversion, $version_comment, - $metadata[$path]['attributes'])) { + !empty($metadata[$path]['attributes']) ? $metadata[$path]['attributes'] : array())) { $doccount++; if($setfiledate) { $newdoc = $res[0]; diff --git a/op/op.Preview.php b/op/op.Preview.php index 5b1fed579..da3c11a9a 100644 --- a/op/op.Preview.php +++ b/op/op.Preview.php @@ -64,7 +64,9 @@ if(isset($_GET['version'])) { $controller->setParam('version', $version); $controller->setParam('type', 'version'); if(!$controller->run()) { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version")); + header('Content-Type: image/svg+xml'); + readfile('../views/'.$theme.'/images/empty.svg'); + exit; } exit; } elseif(isset($_GET['file'])) { @@ -72,10 +74,21 @@ if(isset($_GET['version'])) { if (!is_numeric($file) || intval($file)<1) exit; $object = $document->getDocumentFile($file); + $controller->setParam('width', !empty($_GET["width"]) ? $_GET["width"] : null); + $controller->setParam('document', $document); + $controller->setParam('object', $object); + $controller->setParam('type', 'file'); + if(!$controller->run()) { + header('Content-Type: image/svg+xml'); + readfile('../views/'.$theme.'/images/empty.svg'); + exit; + } + exit; } else { exit; } +/* From here on old code which isn't used anymore if (!is_object($object)) { exit; } @@ -98,5 +111,5 @@ if(!$previewer->hasPreview($object)) { } header('Content-Type: image/png'); $previewer->getPreview($object); - + */ ?> diff --git a/op/op.RemoveDocument.php b/op/op.RemoveDocument.php index bfd19b701..24fd3c614 100644 --- a/op/op.RemoveDocument.php +++ b/op/op.RemoveDocument.php @@ -60,14 +60,6 @@ if($document->isLocked()) { } } -if($settings->_enableFullSearch) { - $index = $indexconf['Indexer']::open($settings->_luceneDir); - $indexconf['Indexer']::init($settings->_stopWordsFile); -} else { - $index = null; - $indexconf = null; -} - $folder = $document->getFolder(); /* Remove all preview images. */ @@ -87,8 +79,7 @@ $nl = array( $docname = $document->getName(); $controller->setParam('document', $document); -$controller->setParam('index', $index); -$controller->setParam('indexconf', $indexconf); +$controller->setParam('fulltextservice', $fulltextservice); if(!$controller->run()) { if ($controller->getErrorMsg() != '') $errormsg = $controller->getErrorMsg(); diff --git a/op/op.RemoveFolder.php b/op/op.RemoveFolder.php index 5ca82a13a..53c630b03 100644 --- a/op/op.RemoveFolder.php +++ b/op/op.RemoveFolder.php @@ -54,13 +54,6 @@ if ($folder->getAccessMode($user, 'removeFolder') < M_ALL) { UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("access_denied")); } -if($settings->_enableFullSearch) { - $index = $indexconf['Indexer']::open($settings->_luceneDir); - $indexconf['Indexer']::init($settings->_stopWordsFile); -} else { - $index = null; -} - /* function removePreviews($arr, $document) { $previewer = $arr[0]; @@ -86,8 +79,7 @@ $nl = array( ); $controller->setParam('folder', $folder); -$controller->setParam('index', $index); -$controller->setParam('indexconf', $indexconf); +$controller->setParam('fulltextservice', $fulltextservice); if(!$controller->run()) { UI::exitError(getMLText("folder_title", array("foldername" => htmlspecialchars($foldername))),getMLText("error_remove_folder")); } diff --git a/op/op.RemoveVersion.php b/op/op.RemoveVersion.php index 0dd0e2287..8f7eede93 100644 --- a/op/op.RemoveVersion.php +++ b/op/op.RemoveVersion.php @@ -74,14 +74,11 @@ if (count($document->getContent())==1) { } else { $nexturl = "../out/out.ViewFolder.php?folderid=".$folder->getId(); /* Remove the document from the fulltext index */ - if($settings->_enableFullSearch) { - $index = $indexconf['Indexer']::open($settings->_luceneDir); - if($index) { - $lucenesearch = new $indexconf['Search']($index); - if($hit = $lucenesearch->getDocument($documentid)) { - $index->delete($hit->id); - $index->commit(); - } + if($fulltextservice && ($index = $fulltextservice->Index())) { + $lucenesearch = $fulltextservice->Search(); + if($hit = $lucenesearch->getDocument($documentid)) { + $index->delete($hit->id); + $index->commit(); } } @@ -142,18 +139,14 @@ else { else $nexturl = "../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=previous"; /* Remove the document from the fulltext index and reindex latest version */ - if($settings->_enableFullSearch) { - $index = $indexconf['Indexer']::open($settings->_luceneDir); - if($index) { - $lucenesearch = new $indexconf['Search']($index); - if($hit = $lucenesearch->getDocument($document->getID())) { - $index->delete($hit->id); - } - $version = $document->getLatestContent(); - $indexconf['Indexer']::init($settings->_stopWordsFile); - $index->addDocument(new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, !($version->getFileSize() < $settings->_maxSizeForFullText))); - $index->commit(); + if($fulltextservice && ($index = $fulltextservice->Indexer())) { + $lucenesearch = $fulltextservice->Search(); + if($hit = $lucenesearch->getDocument($document->getID())) { + $index->delete($hit->id); } + $version = $document->getLatestContent(); + $index->addDocument($fulltextservice->IndexedDocument($document)); + $index->commit(); } // Notify affected users. diff --git a/op/op.ResetSu.php b/op/op.ResetSu.php index a8898cb8d..12af8d57c 100644 --- a/op/op.ResetSu.php +++ b/op/op.ResetSu.php @@ -30,6 +30,4 @@ $session->resetSu(); $session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_switched_back_user'))); add_log_line(""); -header("Location: ../".(isset($settings->_siteDefaultPage) && strlen($settings->_siteDefaultPage)>0 ? $settings->_siteDefaultPage : "out/out.ViewFolder.php?folderid=".$settings->_rootFolderID)); - -?> +header("Location: ".$settings->_httpRoot.(isset($settings->_siteDefaultPage) && strlen($settings->_siteDefaultPage)>0 ? $settings->_siteDefaultPage : "out/out.ViewFolder.php")); diff --git a/op/op.SearchFulltext.php b/op/op.SearchFulltext.php deleted file mode 100644 index da8874f33..000000000 --- a/op/op.SearchFulltext.php +++ /dev/null @@ -1,241 +0,0 @@ -_rootFolderID; -} else { - $folderid = $_GET["folderid"]; -} - -$folder = $dms->getFolder($folderid); -if (!is_object($folder)) { - UI::exitError(getMLText("search_results"),getMLText("invalid_folder_id")); -} - -// Create the keyword search string. This search spans up to three columns -// in the database: keywords, name and comment. - -if (isset($_GET["query"]) && is_string($_GET["query"])) { - $query = $_GET["query"]; -} -else { - $query = ""; -} - -// category -$categories = array(); -if(isset($_GET['categoryids']) && $_GET['categoryids']) { - foreach($_GET['categoryids'] as $catid) { - if($catid > 0) { - $category = $dms->getDocumentCategory($catid); - $categories[] = $category->getName(); - } - } -} - -// -// Get the page number to display. If the result set contains more than -// 25 entries, it is displayed across multiple pages. -// -// This requires that a page number variable be used to track which page the -// user is interested in, and an extra clause on the select statement. -// -// Default page to display is always one. -$pageNumber=1; -if (isset($_GET["pg"])) { - if (is_numeric($_GET["pg"]) && $_GET["pg"]>0) { - $pageNumber = (integer)$_GET["pg"]; - } - else if (!strcasecmp($_GET["pg"], "all")) { - $pageNumber = "all"; - } -} - - -// --------------- Suche starten -------------------------------------------- - -// Check to see if the search has been restricted to a particular -// document owner. -$owner = null; -if (isset($_GET["ownerid"]) && is_numeric($_GET["ownerid"]) && $_GET["ownerid"]!=-1) { - $owner = $dms->getUser($_GET["ownerid"]); - if (!is_object($owner)) { - UI::exitError(getMLText("search_results"),getMLText("unknown_owner")); - } -} - -$pageNumber=1; -if (isset($_GET["pg"])) { - if (is_numeric($_GET["pg"]) && $_GET["pg"]>0) { - $pageNumber = (integer)$_GET["pg"]; - } - else if (!strcasecmp($_GET["pg"], "all")) { - $pageNumber = "all"; - } -} - -$startTime = getTime(); -if($settings->_enableFullSearch) { - if(!empty($settings->_luceneClassDir)) - require_once($settings->_luceneClassDir.'/Lucene.php'); - else - require_once('SeedDMS/Lucene.php'); -} - -Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8'); -$index = Zend_Search_Lucene::open($settings->_luceneDir); -$lucenesearch = new SeedDMS_Lucene_Search($index); -$hits = $lucenesearch->search($query, $owner ? $owner->getLogin() : '', '', $categories); -$totalDocs = count($hits); -$limit = 20; -$resArr = array(); -if($pageNumber != 'all' && count($hits) > $limit) { - $resArr['totalPages'] = (int) (count($hits) / $limit); - if ((count($hits)%$limit) > 0) - $resArr['totalPages']++; - $hits = array_slice($hits, ($pageNumber-1)*$limit, $limit); -} else { - $resArr['totalPages'] = 1; -} - -$resArr['docs'] = array(); -if($hits) { - foreach($hits as $hit) { - if($tmp = $dms->getDocument($hit['document_id'])) { - $resArr['docs'][] = $tmp; - } - } -} -$searchTime = getTime() - $startTime; -$searchTime = round($searchTime, 2); - -// -------------- Output results -------------------------------------------- - -$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); -$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'folder'=>$folder, 'searchhits'=>$resArr['docs'], 'totalpages'=>$resArr['totalPages'], 'totaldocs'=>$totalDocs, 'pagenumber'=>$pageNumber, 'searchtime'=>$searchTime, 'urlparams'=>$_GET)); -if($view) { - $view->show(); - exit; -} - -UI::htmlStartPage(getMLText("search_results")); -UI::globalNavigation($folder); -UI::pageNavigation(getFolderPathHTML($folder, true), "", $folder); -UI::contentHeading(getMLText("search_results")); - -UI::contentContainerStart(); -?> - - - - - -
- $totalDocs)); -} -?> - $searchTime));?>
- -"; -print "\n\n"; -//print "\n"; -print "".getMLText("name")."\n"; -print "".getMLText("owner")."\n"; -print "".getMLText("status")."\n"; -print "".getMLText("version")."\n"; -print "".getMLText("comment")."\n"; -//print "".getMLText("reviewers")."\n"; -//print "".getMLText("approvers")."\n"; -print "\n\n\n"; - -$resultsFilteredByAccess = false; -foreach ($resArr['docs'] as $document) { - if ($document->getAccessMode($user) < M_READ) { - $resultsFilteredByAccess = true; - } - else { - $lc = $document->getLatestContent(); - print ""; - $docName = htmlspecialchars($document->getName()); - print "getID()."\">/"; - $folder = $document->getFolder(); - $path = $folder->getPath(); - for ($i = 1; $i < count($path); $i++) { - print htmlspecialchars($path[$i]->getName())."/"; - } - print $docName; - print ""; - - $owner = $document->getOwner(); - print "".htmlspecialchars($owner->getFullName()).""; - $display_status=$lc->getStatus(); - print "".getOverallStatusText($display_status["status"]). ""; - - print "".$lc->getVersion().""; - - $comment = htmlspecialchars($document->getComment()); - if (strlen($comment) > 50) $comment = substr($comment, 0, 47) . "..."; - print "".$comment.""; - print "\n"; - } -} -if ($resultsFilteredByAccess) { - print "". getMLText("search_results_access_filtered") . ""; -} -print "\n"; - -UI::pageList($pageNumber, $resArr['totalPages'], "../op/op.Search.php", $_GET); - -UI::contentContainerEnd(); -UI::htmlEndPage(); -?> diff --git a/op/op.SetExpires.php b/op/op.SetExpires.php index 20fc29011..8dc626487 100644 --- a/op/op.SetExpires.php +++ b/op/op.SetExpires.php @@ -49,8 +49,9 @@ if (!isset($_POST["presetexpdate"]) || $_POST["presetexpdate"] == "") { switch($_POST["presetexpdate"]) { case "date": - $tmp = explode('-', $_POST["expdate"]); - $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); + $expires = makeTsFromDate($_POST["expdate"]); +// $tmp = explode('-', $_POST["expdate"]); +// $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); break; case "1w": $tmp = explode('-', date('Y-m-d')); @@ -88,6 +89,11 @@ if(isset($GLOBALS['SEEDDMS_HOOKS']['setExpires'])) { if (!$document->setExpires($expires)){ UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured")); +} else { + if($expires) + $session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_expiration_date_set', array('date'=>getReadableDate($expires))))); + else + $session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_expiration_date_cleared'))); } $document->verifyLastestContentExpriry(); diff --git a/op/op.Settings.php b/op/op.Settings.php index 007620307..8b3772e19 100644 --- a/op/op.Settings.php +++ b/op/op.Settings.php @@ -59,11 +59,14 @@ if ($action == "saveSettings") $settings->_footNote = $_POST["footNote"]; $settings->_printDisclaimer = getBoolValue("printDisclaimer"); $settings->_language = $_POST["language"]; + $settings->_dateformat = $_POST["dateformat"]; + $settings->_datetimeformat = $_POST["datetimeformat"]; if(empty($_POST["availablelanguages"])) $settings->_availablelanguages = array(); else $settings->_availablelanguages = $_POST["availablelanguages"]; $settings->_theme = $_POST["theme"]; + $settings->_overrideTheme = getBoolValue("overrideTheme"); $settings->_onePageMode = getBoolValue("onePageMode"); $settings->_previewWidthList = $_POST["previewWidthList"]; $settings->_previewWidthMenuList = $_POST["previewWidthMenuList"]; @@ -176,6 +179,7 @@ if ($action == "saveSettings") // SETTINGS -ADVANCED - DISPLAY $settings->_siteDefaultPage = $_POST["siteDefaultPage"]; $settings->_rootFolderID = intval($_POST["rootFolderID"]); + $settings->_useHomeAsRootFolder = getBoolValue("useHomeAsRootFolder"); $settings->_titleDisplayHack = getBoolValue("titleDisplayHack"); $settings->_showMissingTranslations = getBoolValue("showMissingTranslations"); diff --git a/op/op.UpdateDocument.php b/op/op.UpdateDocument.php index 2e8a377a7..ea2751fef 100644 --- a/op/op.UpdateDocument.php +++ b/op/op.UpdateDocument.php @@ -133,13 +133,6 @@ if (isset($_FILES['userfile']) && $_FILES['userfile']['error'] == 0) { $fileType = ".".pathinfo($userfilename, PATHINFO_EXTENSION); -if($settings->_enableFullSearch) { - $index = $indexconf['Indexer']::open($settings->_luceneDir); - $indexconf['Indexer']::init($settings->_stopWordsFile); -} else { - $index = null; -} - if(isset($_POST["comment"])) $comment = $_POST["comment"]; else @@ -148,8 +141,9 @@ else $oldexpires = $document->getExpires(); switch($_POST["presetexpdate"]) { case "date": - $tmp = explode('-', $_POST["expdate"]); - $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); + $expires = makeTsFromDate($_POST["expdate"]); +// $tmp = explode('-', $_POST["expdate"]); +// $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); break; case "1w": $tmp = explode('-', date('Y-m-d')); @@ -277,6 +271,11 @@ default: foreach($attributes as $attrdefid=>$attribute) { $attrdef = $dms->getAttributeDefinition($attrdefid); if($attribute) { + switch($attrdef->getType()) { + case SeedDMS_Core_AttributeDefinition::type_date: + $attribute = date('Y-m-d', makeTsFromDate($attribute)); + break; + } if(!$attrdef->validate($attribute)) { $errmsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute); UI::exitError(getMLText("document_title", array("documentname" => $document->getName())), $errmsg); @@ -291,8 +290,7 @@ default: $controller->setParam('folder', $folder); $controller->setParam('document', $document); - $controller->setParam('index', $index); - $controller->setParam('indexconf', $indexconf); + $controller->setParam('fulltextservice', $fulltextservice); $controller->setParam('comment', $comment); if($oldexpires != $expires) $controller->setParam('expires', $expires); diff --git a/op/op.UpdateDocument2.php b/op/op.UpdateDocument2.php index 342160127..609125075 100644 --- a/op/op.UpdateDocument2.php +++ b/op/op.UpdateDocument2.php @@ -159,15 +159,13 @@ if( move_uploaded_file( $source_file_path, $target_file_path ) ) { if (is_bool($contentResult) && !$contentResult) { echo getMLText("error_occured"); } else { - if($settings->_enableFullSearch) { - $index = $indexconf['Indexer']::open($settings->_luceneDir); + if($fulltextservice && ($index = $fulltextservice->Indexer())) { if($index) { - $lucenesearch = new $indexconf['Search']($index); + $lucenesearch = $fulltextservice->Search(); if($hit = $lucenesearch->getDocument((int) $document->getId())) { $index->delete($hit->id); } - $indexconf['Indexer']::init($settings->_stopWordsFile); - $index->addDocument(new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, !($filesize < $settings->_maxSizeForFullText))); + $index->addDocument($fulltextservice->IndexedDocument($document)); $index->commit(); } } diff --git a/op/op.ViewOnline.php b/op/op.ViewOnline.php index 79cdef8da..ef15a0a7d 100644 --- a/op/op.ViewOnline.php +++ b/op/op.ViewOnline.php @@ -46,7 +46,7 @@ if ($document->getAccessMode($user) < M_READ) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); } -if(isset($_GET["version"])) { +if(isset($_GET["version"])) { /* {{{ */ $version = $_GET["version"]; if (!is_numeric($version)) { @@ -59,7 +59,8 @@ if(isset($_GET["version"])) { if(!$controller->run()) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version")); } -} elseif(isset($_GET["file"])) { +} /* }}} */ +elseif(isset($_GET["file"])) { /* {{{ */ $fileid = $_GET["file"]; if (!is_numeric($fileid) || intval($fileid)<1) { @@ -83,7 +84,7 @@ if(isset($_GET["version"])) { ob_clean(); readfile($dms->contentDir . $file->getPath()); -} +} /* }}} */ add_log_line(); exit; diff --git a/out/out.Charts.php b/out/out.Charts.php index cd505da87..ad06a2d29 100644 --- a/out/out.Charts.php +++ b/out/out.Charts.php @@ -35,8 +35,6 @@ if (!$user->isAdmin()) { UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); } -$rootfolder = $dms->getFolder($settings->_rootFolderID); - $type = 'docsperuser'; if(!empty($_GET['type'])) { $type = $_GET['type']; @@ -52,7 +50,6 @@ if($data = $dms->getStatisticalData($type)) { } if($view) { - $view->setParam('rootfolder', $rootfolder); $view->setParam('type', $type); $view->setParam('data', $data); $view($_GET); diff --git a/out/out.DocumentChooser.php b/out/out.DocumentChooser.php index 08948390e..77fe21698 100644 --- a/out/out.DocumentChooser.php +++ b/out/out.DocumentChooser.php @@ -31,12 +31,11 @@ require_once("inc/inc.Authentication.php"); if(isset($_GET['action']) && $_GET['action'] == 'subtree') { if (!isset($_GET["node"]) || !is_numeric($_GET["node"]) || intval($_GET["node"])<1) { - $nodeid = $settings->_rootFolderID; + $node = $dms->getRootFolder(); } else { - $nodeid = intval($_GET["node"]); + $node = $dms->getFolder(intval($_GET["node"])); } - $node = $dms->getFolder($nodeid); if (!is_object($node)) { UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_folder_id"))), getMLText("invalid_folder_id")); } diff --git a/out/out.FolderChooser.php b/out/out.FolderChooser.php index 47f0946cf..d45c13c73 100644 --- a/out/out.FolderChooser.php +++ b/out/out.FolderChooser.php @@ -30,12 +30,11 @@ require_once("inc/inc.Authentication.php"); if(isset($_GET['action']) && $_GET['action'] == 'subtree') { if (!isset($_GET["node"]) || !is_numeric($_GET["node"]) || intval($_GET["node"])<1) { - $nodeid = $settings->_rootFolderID; + $node = $dms->getRootFolder(); } else { - $nodeid = intval($_GET["node"]); + $node = $dms->getFolder(intval($_GET["node"])); } - $node = $dms->getFolder($nodeid); if (!is_object($node)) { UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_folder_id"))), getMLText("invalid_folder_id")); } diff --git a/out/out.IndexInfo.php b/out/out.IndexInfo.php index c0f026b05..5bfb894f6 100644 --- a/out/out.IndexInfo.php +++ b/out/out.IndexInfo.php @@ -40,14 +40,12 @@ if(!$settings->_enableFullSearch) { UI::exitError(getMLText("admin_tools"),getMLText("fulltextsearch_disabled")); } -$index = $indexconf['Indexer']::open($settings->_luceneDir); +$index = $fulltextservice->Indexer(); if(!$index) { UI::exitError(getMLText("admin_tools"),getMLText("no_fulltextindex")); } if($view) { - $view->setParam('luceneclassdir', $settings->_luceneClassDir); - $view->setParam('lucenedir', $settings->_luceneDir); $view->setParam('index', $index); $view($_GET); exit; diff --git a/out/out.Indexer.php b/out/out.Indexer.php index d4521bc81..aeb445973 100644 --- a/out/out.Indexer.php +++ b/out/out.Indexer.php @@ -42,27 +42,25 @@ if(!$settings->_enableFullSearch) { $index = null; if(!isset($_GET['action']) || $_GET['action'] == 'show') { - if($indexconf) { + if($fulltextservice) { if(isset($_GET['create']) && $_GET['create'] == 1) { if(isset($_GET['confirm']) && $_GET['confirm'] == 1) { - $index = $indexconf['Indexer']::create($settings->_luceneDir); + $index = $fulltextservice->Indexer(true); if(!$index) { UI::exitError(getMLText("admin_tools"),getMLText("no_fulltextindex")); } - $indexconf['Indexer']::init($settings->_stopWordsFile); } else { header('Location: out.CreateIndex.php'); exit; } } else { - $index = $indexconf['Indexer']::open($settings->_luceneDir); + $index = $fulltextservice->Indexer(false); if(!$index) { - $index = $indexconf['Indexer']::create($settings->_luceneDir); + $index = $fulltextservice->Indexer(true); if(!$index) { UI::exitError(getMLText("admin_tools"),getMLText("no_fulltextindex")); } } - $indexconf['Indexer']::init($settings->_stopWordsFile); } } } @@ -76,8 +74,7 @@ else { $folder = $dms->getFolder($folderid); if($view) { - $view->setParam('index', $index); - $view->setParam('indexconf', $indexconf); + $view->setParam('fulltextservice', $fulltextservice); $view->setParam('recreate', (isset($_GET['create']) && $_GET['create']==1)); $view->setParam('forceupdate', (isset($_GET['forceupdate']) && $_GET['forceupdate']==1)); $view->setParam('folder', $folder); diff --git a/out/out.MyDocuments.php b/out/out.MyDocuments.php index aa183d67a..fff285cdf 100644 --- a/out/out.MyDocuments.php +++ b/out/out.MyDocuments.php @@ -49,6 +49,7 @@ if (isset($_GET["orderby"]) && strlen($_GET["orderby"])==1 ) { } if($view) { + $view->setParam('showtree', showtree()); $view->setParam('orderby', $orderby); $view->setParam('showinprocess', $showInProcess); $view->setParam('workflowmode', $settings->_workflowMode); diff --git a/out/out.ObjectCheck.php b/out/out.ObjectCheck.php index d03953b96..ee27b537d 100644 --- a/out/out.ObjectCheck.php +++ b/out/out.ObjectCheck.php @@ -61,7 +61,7 @@ if(isset($_GET['setchecksum']) && $_GET['setchecksum'] == 1) { $setchecksum = 0; } -$folder = $dms->getFolder($settings->_rootFolderID); +$folder = $dms->getRootFolder(); //getFolder($settings->_rootFolderID); $unlinkedversions = $dms->getUnlinkedDocumentContent(); $unlinkedfolders = $dms->checkFolders(); $unlinkeddocuments = $dms->checkDocuments(); @@ -73,7 +73,7 @@ foreach(array('review', 'approval') as $process) { $processwithoutusergroup[$process][$ug] = $dms->getProcessWithoutUserGroup($process, $ug); } } -$rootfolder = $dms->getFolder($settings->_rootFolderID); +$rootfolder = $dms->getRootFolder(); //getFolder($settings->_rootFolderID); if($view) { $view->setParam('folder', $folder); diff --git a/out/out.RewindWorkflow.php b/out/out.RewindWorkflow.php index b419dfa10..7d3ba11bb 100644 --- a/out/out.RewindWorkflow.php +++ b/out/out.RewindWorkflow.php @@ -33,7 +33,6 @@ require_once("inc/inc.Authentication.php"); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); -$accessop = new SeedDMS_AccessOperation($dms, $document, $user, $settings); if (!$user->isAdmin()) { UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); } @@ -64,6 +63,7 @@ if (!is_object($workflow)) { } $folder = $document->getFolder(); +$accessop = new SeedDMS_AccessOperation($dms, $document, $user, $settings); if($view) { $view->setParam('folder', $folder); diff --git a/out/out.Search.php b/out/out.Search.php index 74d47fb35..75d70ff68 100644 --- a/out/out.Search.php +++ b/out/out.Search.php @@ -47,20 +47,11 @@ if (isset($_GET["navBar"])) { } else { $folderid = $_GET["folderid"]; } - /* - if(strlen($_GET["query"])==0) { - header("Location: ../out/out.SearchForm.php?folderid=".$folderid); - } else { - if(isset($_GET["fullsearch"]) && $_GET["fullsearch"]) { - header("Location: ../op/op.SearchFulltext.php?folderid=".$folderid."&query=".$_GET["query"]); - } - } - */ } $accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); -if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSearch) { +if(((!isset($_GET["fullsearch"]) && $settings->_defaultSearchMethod == 'fulltext') || !empty($_GET["fullsearch"])) && $settings->_enableFullSearch) { // Search in Fulltext {{{ if (isset($_GET["query"]) && is_string($_GET["query"])) { $query = $_GET["query"]; @@ -72,12 +63,20 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe // category $categories = array(); $categorynames = array(); - if(isset($_GET['categoryids']) && $_GET['categoryids']) { + if(isset($_GET['category']) && $_GET['category']) { + foreach($_GET['category'] as $catname) { + if($catname) { + $cat = $dms->getDocumentCategoryByName($catname); + $categories[] = $cat; + $categorynames[] = $cat->getName(); + } + } + } elseif(isset($_GET['categoryids']) && $_GET['categoryids']) { foreach($_GET['categoryids'] as $catid) { - if($catid > 0) { - $category = $dms->getDocumentCategory($catid); - $categories[] = $category; - $categorynames[] = $category->getName(); + if($catid) { + $cat = $dms->getDocumentCategory($catid); + $categories[] = $cat; + $categorynames[] = $cat->getName(); } } } @@ -104,64 +103,147 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe // Check to see if the search has been restricted to a particular // document owner. - $owner = null; - if (isset($_GET["ownerid"]) && is_numeric($_GET["ownerid"]) && $_GET["ownerid"]!=-1) { - $owner = $dms->getUser($_GET["ownerid"]); - if (!is_object($owner)) { - UI::exitError(getMLText("search_results"),getMLText("unknown_owner")); + $owner = []; + if (isset($_GET["owner"])) { + if (!is_array($_GET['owner'])) { + if(!empty($_GET['owner']) && $o = $dms->getUserByLogin($_GET['owner'])) + $owner[] = $o->getLogin(); + else + UI::exitError(getMLText("search"),getMLText("unknown_owner")); + } else { + foreach($_GET["owner"] as $l) { + if($l && $o = $dms->getUserByLogin($l)) + $owner[] = $o->getLogin(); + } } } - $startTime = getTime(); - if($settings->_enableFullSearch) { - if($settings->_fullSearchEngine == 'lucene') { - Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8'); + // Check to see if the search has been restricted to a particular + // mimetype. + $mimetype = []; + if (isset($_GET["mimetype"])) { + if (!is_array($_GET['mimetype'])) { + if(!empty($_GET['mimetype'])) + $mimetype[] = $_GET['mimetype']; + } else { + foreach($_GET["mimetype"] as $l) { + if($l) + $mimetype[] = $l; + } } } + // status + $status = array(); + if (isset($_GET["pendingReview"])){ + $status[] = S_DRAFT_REV; + } + if (isset($_GET["pendingApproval"])){ + $status[] = S_DRAFT_APP; + } + if (isset($_GET["inWorkflow"])){ + $status[] = S_IN_WORKFLOW; + } + if (isset($_GET["released"])){ + $status[] = S_RELEASED; + } + if (isset($_GET["rejected"])){ + $status[] = S_REJECTED; + } + if (isset($_GET["obsolete"])){ + $status[] = S_OBSOLETE; + } + if (isset($_GET["expired"])){ + $status[] = S_EXPIRED; + } + + // Check to see if the search has been restricted to a particular sub-tree in + // the folder hierarchy. + $startFolder = null; + if (isset($_GET["targetid"]) && is_numeric($_GET["targetid"]) && $_GET["targetid"]>0) { + $targetid = $_GET["targetid"]; + $startFolder = $dms->getFolder($targetid); + if (!is_object($startFolder)) { + UI::exitError(getMLText("search"),getMLText("invalid_folder_id")); + } + } + + $rootFolder = $dms->getFolder($settings->_rootFolderID); + + $startTime = getTime(); + if($settings->_fullSearchEngine == 'lucene') { + Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8'); + } + if(strlen($query) < 4 && strpos($query, '*')) { $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('splash_invalid_searchterm'))); + $dcount = 0; $totalPages = 0; $entries = array(); $searchTime = 0; } else { $startTime = getTime(); - $index = $indexconf['Indexer']::open($settings->_luceneDir); - $lucenesearch = new $indexconf['Search']($index); - $hits = $lucenesearch->search($query, $owner ? $owner->getLogin() : '', '', $categorynames, array(), $user->isAdmin() ? [] : [$user->getLogin()]); - if($hits === false) { - $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('splash_invalid_searchterm'))); - $totalPages = 0; - $entries = array(); - $searchTime = 0; - } else { - $entries = array(); - $dcount = 0; - $fcount = 0; - if($hits) { - foreach($hits as $hit) { - if($tmp = $dms->getDocument($hit['document_id'])) { - if($tmp->getAccessMode($user) >= M_READ) { - $tmp->verifyLastestContentExpriry(); - $entries[] = $tmp; - $dcount++; + $limit = 20; + $total = 0; + $index = $fulltextservice->Indexer(); + if($index) { + $lucenesearch = $fulltextservice->Search(); + $searchresult = $lucenesearch->search($query, array('owner'=>$owner, 'status'=>$status, 'category'=>$categorynames, 'user'=>$user->isAdmin() ? [] : [$user->getLogin()], 'mimetype'=>$mimetype, 'startFolder'=>$startFolder, 'rootFolder'=>$rootFolder), ($pageNumber == 'all' ? array() : array('limit'=>$limit, 'offset'=>$limit * ($pageNumber-1)))); + if($searchresult === false) { + $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('splash_invalid_searchterm'))); + $dcount = 0; + $fcount = 0; + $totalPages = 0; + $entries = array(); + $facets = array(); + $searchTime = 0; + } else { + $entries = array(); + $facets = $searchresult['facets']; + $dcount = 0; + $fcount = 0; + if($searchresult) { + foreach($searchresult['hits'] as $hit) { + if($hit['document_id'][0] == 'D') { + if($tmp = $dms->getDocument(substr($hit['document_id'], 1))) { +// if($tmp->getAccessMode($user) >= M_READ) { + $tmp->verifyLastestContentExpriry(); + $entries[] = $tmp; + $dcount++; +// } + } + } elseif($hit['document_id'][0] == 'F') { + if($tmp = $dms->getFolder(substr($hit['document_id'], 1))) { +// if($tmp->getAccessMode($user) >= M_READ) { + $entries[] = $tmp; + $fcount++; +// } + } } } } + if($pageNumber != 'all' && $searchresult['count'] > $limit) { + $totalPages = (int) ($searchresult['count']/$limit); + if($searchresult['count']%$limit) + $totalPages++; +// if($limit > 0) +// $entries = array_slice($entries, ($pageNumber-1)*$limit, $limit); + } else { + $totalPages = 1; + } + $total = $searchresult['count']; } - $limit = 20; - if($pageNumber != 'all' && count($entries) > $limit) { - $totalPages = (int) (count($entries)/$limit); - if(count($entries)%$limit) - $totalPages++; - if($limit > 0) - $entries = array_slice($entries, ($pageNumber-1)*$limit, $limit); - } else { - $totalPages = 1; - } + $searchTime = getTime() - $startTime; + $searchTime = round($searchTime, 2); + } else { + $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('splash_invalid_search_service'))); + $dcount = 0; + $fcount = 0; + $totalPages = 0; + $entries = array(); + $facets = array(); + $searchTime = 0; } - $searchTime = getTime() - $startTime; - $searchTime = round($searchTime, 2); } // }}} } else { @@ -220,8 +302,7 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe $startFolder = $dms->getFolder($targetid); } else { - $targetid = $settings->_rootFolderID; - $startFolder = $dms->getFolder($targetid); + $startFolder = $dms->getRootFolder(); } if (!is_object($startFolder)) { UI::exitError(getMLText("search"),getMLText("invalid_folder_id")); @@ -229,11 +310,22 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe // Check to see if the search has been restricted to a particular // document owner. - $owner = null; - if (isset($_GET["ownerid"]) && is_numeric($_GET["ownerid"]) && $_GET["ownerid"]!=-1) { - $owner = $dms->getUser($_GET["ownerid"]); - if (!is_object($owner)) { - UI::exitError(getMLText("search"),getMLText("unknown_owner")); + $owner = array(); + $ownerobjs = array(); + if (isset($_GET["owner"])) { + if (!is_array($_GET['owner'])) { + if(!empty($_GET['owner']) && $o = $dms->getUserByLogin($_GET['owner'])) { + $ownerobjs[] = $o; + $owner = $o->getLogin(); + } else + UI::exitError(getMLText("search"),getMLText("unknown_owner")); + } else { + foreach($_GET["owner"] as $l) { + if($o = $dms->getUserByLogin($l)) { + $ownerobjs[] = $o; + $owner[] = $o->getLogin(); + } + } } } @@ -331,10 +423,14 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe // category $categories = array(); - if(isset($_GET['categoryids']) && $_GET['categoryids']) { - foreach($_GET['categoryids'] as $catid) { - if($catid > 0) - $categories[] = $dms->getDocumentCategory($catid); + $categorynames = array(); + if(isset($_GET['category']) && $_GET['category']) { + foreach($_GET['category'] as $catname) { + if($catname) { + $cat = $dms->getDocumentCategoryByName($catname); + $categories[] = $cat; + $categorynames[] = $cat->getName(); + } } } @@ -376,7 +472,7 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe 'logicalmode'=>$mode, 'searchin'=>$searchin, 'startFolder'=>$startFolder, - 'owner'=>$owner, + 'owner'=>$ownerobjs, 'status'=>$status, 'creationstartdate'=>$creationdate ? $startdate : array(), 'creationenddate'=>$creationdate ? $stopdate : array(), @@ -389,6 +485,7 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe 'expirationenddate'=>$expirationdate ? $expstopdate : array(), 'orderby'=>$orderby )); + $total = $resArr['totalDocs'] + $resArr['totalFolders']; $searchTime = getTime() - $startTime; $searchTime = round($searchTime, 2); @@ -419,6 +516,7 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe $entries = array_slice($entries, ($pageNumber-1)*$limit, $limit); } else $totalPages = 1; + $facets = array(); // }}} } @@ -437,17 +535,19 @@ if($settings->_showSingleSearchHit && count($entries) == 1) { $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'query'=>$query, 'searchhits'=>$entries, 'totalpages'=>$totalPages, 'pagenumber'=>$pageNumber, 'searchtime'=>$searchTime, 'urlparams'=>$_GET, 'cachedir'=>$settings->_cacheDir)); if($view) { + $view->setParam('facets', $facets); $view->setParam('accessobject', $accessop); $view->setParam('onepage', $settings->_onePageMode); // do most navigation by reloading areas of pages with ajax $view->setParam('showtree', showtree()); $view->setParam('enableRecursiveCount', $settings->_enableRecursiveCount); $view->setParam('maxRecursiveCount', $settings->_maxRecursiveCount); + $view->setParam('total', $total); $view->setParam('totaldocs', $dcount /*resArr['totalDocs']*/); $view->setParam('totalfolders', $fcount /*resArr['totalFolders']*/); - $view->setParam('fullsearch', (isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSearch) ? true : false); + $view->setParam('fullsearch', (!empty($_GET["fullsearch"]) && $settings->_enableFullSearch) ? true : false); $view->setParam('mode', isset($mode) ? $mode : ''); $view->setParam('orderby', isset($orderby) ? $orderby : ''); - $view->setParam('defaultsearchmethod', $settings->_defaultSearchMethod); + $view->setParam('defaultsearchmethod', !empty($_GET["fullsearch"]) || $settings->_defaultSearchMethod); $view->setParam('resultmode', isset($resultmode) ? $resultmode : ''); $view->setParam('searchin', isset($searchin) ? $searchin : array()); $view->setParam('startfolder', isset($startFolder) ? $startFolder : null); @@ -460,6 +560,8 @@ if($settings->_showSingleSearchHit && count($entries) == 1) { $view->setParam('expirationdate', isset($expirationdate) ? $expirationdate: ''); $view->setParam('status', isset($status) ? $status : array()); $view->setParam('categories', isset($categories) ? $categories : ''); + $view->setParam('category', isset($categorynames) ? $categorynames : ''); + $view->setParam('mimetype', isset($mimetype) ? $mimetype : ''); $view->setParam('attributes', isset($attributes) ? $attributes : ''); $attrdefs = $dms->getAllAttributeDefinitions(array(SeedDMS_Core_AttributeDefinition::objtype_document, SeedDMS_Core_AttributeDefinition::objtype_documentcontent, SeedDMS_Core_AttributeDefinition::objtype_folder, SeedDMS_Core_AttributeDefinition::objtype_all)); $view->setParam('attrdefs', $attrdefs); diff --git a/out/out.SearchForm.php b/out/out.SearchForm.php deleted file mode 100644 index fd18d9dca..000000000 --- a/out/out.SearchForm.php +++ /dev/null @@ -1,59 +0,0 @@ -_rootFolderID; - $folder = $dms->getFolder($folderid); -} -else { - $folderid = $_GET["folderid"]; - $folder = $dms->getFolder($folderid); -} -if (!is_object($folder)) { - UI::exitError(getMLText("search"),getMLText("invalid_folder_id")); -} - -$attrdefs = $dms->getAllAttributeDefinitions(array(SeedDMS_Core_AttributeDefinition::objtype_document, SeedDMS_Core_AttributeDefinition::objtype_documentcontent/*, SeedDMS_Core_AttributeDefinition::objtype_all*/)); -$allCats = $dms->getDocumentCategories(); -$allUsers = $dms->getAllUsers($settings->_sortUsersInList); - -$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); -$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); -if($view) { - $view->setParam('folder', $folder); - $view->setParam('attrdefs', $attrdefs); - $view->setParam('allcategories', $allCats); - $view->setParam('allusers', $allUsers); - $view->setParam('enablefullsearch', $settings->_enableFullSearch); - $view($_GET); - exit; -} diff --git a/out/out.Statistic.php b/out/out.Statistic.php index d676b7aae..38248a267 100644 --- a/out/out.Statistic.php +++ b/out/out.Statistic.php @@ -33,7 +33,8 @@ $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); if (!$user->isAdmin()) { UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); } -$rootfolder = $dms->getFolder($settings->_rootFolderID); +//$rootfolder = $dms->getFolder($settings->_rootFolderID); +$rootfolder = $dms->getRootFolder(); if($view) { $view->setParam('rootfolder', $rootfolder); diff --git a/out/out.Timeline.php b/out/out.Timeline.php index 2b07ab5b1..82f394588 100644 --- a/out/out.Timeline.php +++ b/out/out.Timeline.php @@ -34,7 +34,6 @@ $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); if (!$user->isAdmin()) { UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); } -$rootfolder = $dms->getFolder($settings->_rootFolderID); if(isset($_GET['skip'])) $skip = $_GET['skip']; diff --git a/out/out.ViewDocument.php b/out/out.ViewDocument.php index 36ffbce1e..dbb1a6e67 100644 --- a/out/out.ViewDocument.php +++ b/out/out.ViewDocument.php @@ -65,6 +65,7 @@ if ($document->verifyLastestContentExpriry()){ } if($view) { + $view->setParam('fulltextservice', $fulltextservice); $view->setParam('folder', $folder); $view->setParam('document', $document); $view->setParam('accessobject', $accessop); diff --git a/out/out.ViewFolder.php b/out/out.ViewFolder.php index b30329feb..af5f6db69 100644 --- a/out/out.ViewFolder.php +++ b/out/out.ViewFolder.php @@ -34,25 +34,23 @@ $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); if (!isset($_GET["folderid"]) || !is_numeric($_GET["folderid"]) || intval($_GET["folderid"])<1) { - $folderid = $settings->_rootFolderID; + $folder = $dms->getRootFolder(); } else { - $folderid = intval($_GET["folderid"]); + $folder = $dms->getFolder(intval($_GET["folderid"])); } -$folder = $dms->getFolder($folderid); if (!is_object($folder)) { UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_folder_id"))), getMLText("invalid_folder_id")); } if(isset($_GET['action']) && $_GET['action'] == 'subtree') { if (!isset($_GET["node"]) || !is_numeric($_GET["node"]) || intval($_GET["node"])<1) { - $nodeid = $settings->_rootFolderID; + $node = $dms->getRootFolder(); } else { - $nodeid = intval($_GET["node"]); + $node = $dms->getFolder(intval($_GET["node"])); } - $node = $dms->getFolder($nodeid); if (!is_object($node)) { UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_folder_id"))), getMLText("invalid_folder_id")); } diff --git a/package.json b/package.json index 8378da1e4..4084e288c 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,12 @@ "author": "Uwe Steinmann", "license": "ISC", "dependencies": { - "@coreui/coreui": "^3.2.2", - "@popperjs/core": "^2.4.4", + "@coreui/coreui": "^3.3.0", + "@popperjs/core": "^2.5.3", "bootstrap": "^4.5.2", "bootstrap-datepicker": "^1.9.0", "chartjs": "^0.3.24", - "cytoscape": "^3.15.2", + "cytoscape": "^3.16.2", "cytoscape-grid-guide": "^2.3.2", "fine-uploader": "^5.16.2", "flot": "^4.2.1", @@ -23,10 +23,10 @@ "grunt": "^1.3.0", "grunt-contrib-clean": "^2.0.0", "grunt-contrib-copy": "^1.0.0", - "jqtree": "^1.4.12", + "jqtree": "^1.5.1", "jquery": "^1.12.4", "jquery-validation": "^1.19.2", - "moment": "^2.17.1", + "moment": "^2.29.1", "noty": "^2.4.1", "perfect-scrollbar": "^1.5.0", "select2": "^4.0.13" diff --git a/restapi/.htaccess b/restapi/.htaccess index edeafcef4..0151827f6 100644 --- a/restapi/.htaccess +++ b/restapi/.htaccess @@ -1,10 +1,11 @@ RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] - +SetHandler application/x-httpd-php + 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 e6b2a4c42..74e5f637b 100644 --- a/restapi/index.php +++ b/restapi/index.php @@ -629,7 +629,11 @@ class RestapiController { /* {{{ */ foreach($categories as $catid) { if($cat = $dms->getDocumentCategory($catid)) $cats[] = $cat; - } + } + $owner = null; + if($userobj->isAdmin() && isset($params["owner"]) && ctype_digit($params['owner'])) { + $owner = $dms->getUser($params["owner"]); + } $attributes = isset($params["attributes"]) ? $params["attributes"] : array(); foreach($attributes as $attrdefid=>$attribute) { if($attrdef = $dms->getAttributeDefinition($attrdefid)) { @@ -661,7 +665,7 @@ class RestapiController { /* {{{ */ $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); + $res = $mfolder->addDocument($docname, $comment, $expires, $owner ? $owner : $userobj, $keywords, $cats, $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, $sequence, array(), array(), $reqversion, $version_comment, $attributes); // addDocumentCategories($res, $categories); // setDocumentAttributes($res, $attributes); @@ -1322,6 +1326,43 @@ class RestapiController { /* {{{ */ } } /* }}} */ + function addDocumentCategory($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 given', 'data'=>''), 400); + return; + } + if(!ctype_digit($args['catid']) || $args['catid'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No category given', 'data'=>''), 400); + return; + } + $cat = $dms->getDocumentCategory($args['catid']); + $doc = $dms->getDocument($args['id']); + if($doc && $cat) { + if($doc->getAccessMode($userobj, 'addDocumentCategory') >= M_READ) { + if ($doc->addCategories([$cat])){ + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 201); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Could not add document category', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access on document', 'data'=>''), 403); + } + } else { + if(!$doc) + return $response->withJson(array('success'=>false, 'message'=>'No such document', 'data'=>''), 404); + if(!$cat) + return $response->withJson(array('success'=>false, 'message'=>'No such category', 'data'=>''), 404); + return $response->withJson(array('success'=>false, 'message'=>'Could not find category or document', 'data'=>''), 500); + } + } /* }}} */ + function removeDocumentCategory($request, $response, $args) { /* {{{ */ $dms = $this->container->dms; $userobj = $this->container->userobj; @@ -1380,6 +1421,46 @@ class RestapiController { /* {{{ */ } } /* }}} */ + function setDocumentOwner($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(!$userobj->isAdmin()) { + return $response->withJson(array('success'=>false, 'message'=>'No access on document', 'data'=>''), 403); + } + + if(!ctype_digit($args['id']) || $args['id'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No document given', 'data'=>''), 400); + return; + } + if(!ctype_digit($args['userid']) || $args['userid'] == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No user given', 'data'=>''), 400); + return; + } + $owner = $dms->getUser($args['userid']); + $doc = $dms->getDocument($args['id']); + if($doc && $owner) { + if($doc->getAccessMode($userobj, 'setDocumentOwner') > M_READ) { + if ($doc->setOwner($owner)){ + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 201); + } else { + return $response->withJson(array('success'=>false, 'message'=>'Could not set owner of document', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No access on document', 'data'=>''), 403); + } + } else { + if(!$doc) + return $response->withJson(array('success'=>false, 'message'=>'No such document', 'data'=>''), 404); + if(!$owner) + return $response->withJson(array('success'=>false, 'message'=>'No such user', 'data'=>''), 404); + return $response->withJson(array('success'=>false, 'message'=>'Could not find user or document', 'data'=>''), 500); + } + } /* }}} */ + function getAccount($request, $response) { /* {{{ */ $dms = $this->container->dms; $userobj = $this->container->userobj; @@ -1411,8 +1492,18 @@ class RestapiController { /* {{{ */ 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); + $objects = 0x3; + $sparams = array( + 'query'=>$querystr, + 'limit'=>$limit, + 'offset'=>$offset, + 'logicalmode'=>'AND', + 'searchin'=>$searchin, + 'mode'=>$objects, +// 'creationstartdate'=>array('hour'=>1, 'minute'=>0, 'second'=>0, 'year'=>date('Y')-1, 'month'=>date('m'), 'day'=>date('d')), + ); + $resArr = $dms->search($sparams); +// $resArr = $dms->search($querystr, $limit, $offset, 'AND', $searchin, null, null, array(), array('hour'=>1, 'minute'=>0, 'second'=>0, 'year'=>date('Y')-1, 'month'=>date('m'), 'day'=>date('d')), array(), array(), array(), array(), array(), $objects); if($resArr === false) { return $response->withJson(array(), 200); } @@ -2355,6 +2446,8 @@ $app->get('/document/{id}/attributes', \RestapiController::class.':getDocumentAt $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->post('/document/{id}/category/{catid}', \RestapiController::class.':addDocumentCategory'); +$app->put('/document/{id}/owner/{userid}', \RestapiController::class.':setDocumentOwner'); $app->put('/account/fullname', \RestapiController::class.':setFullName'); $app->put('/account/email', \RestapiController::class.':setEmail'); $app->get('/account/documents/locked', \RestapiController::class.':getLockedDocuments'); diff --git a/restapi/swagger.yaml b/restapi/swagger.yaml index 1e453c2a0..4375e09e1 100644 --- a/restapi/swagger.yaml +++ b/restapi/swagger.yaml @@ -910,6 +910,53 @@ paths: $ref: "#/definitions/ApiResponse" security: - api_key: [] + /document/{id}/category/{catid}: + post: + tags: + - "document" + summary: "Add a single category to document" + description: "Adds a single category to a document" + operationId: "addDocumentCategory" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - name: "id" + in: "path" + description: "ID of document." + type: "integer" + required: true + format: "int64" + - name: "catid" + in: "path" + description: "ID of category." + type: "integer" + required: true + format: "int64" + responses: + "201": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "400": + description: "No document or category given" + 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}/category/{catid}: delete: tags: @@ -951,6 +998,53 @@ paths: $ref: "#/definitions/ApiResponse" security: - api_key: [] + /document/{id}/owner/{userid}: + post: + tags: + - "document" + summary: "Set owner of document" + description: "Set owner of document" + operationId: "setDocumentOwner" + produces: + - "application/json" + consumes: + - multipart/form-data + parameters: + - name: "id" + in: "path" + description: "ID of document." + type: "integer" + required: true + format: "int64" + - name: "userid" + in: "path" + description: "ID of user." + type: "integer" + required: true + format: "int64" + responses: + "201": + description: "successful operation" + schema: + $ref: "#/definitions/ApiResponse" + "400": + description: "No document or user given" + 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: [] /folder/{id}: get: tags: diff --git a/styles/bootstrap/application.css b/styles/bootstrap/application.css index 87b864374..0b8ffc87f 100644 --- a/styles/bootstrap/application.css +++ b/styles/bootstrap/application.css @@ -216,8 +216,10 @@ ul.jqtree-tree li.jqtree_common > .jqtree-element:hover { } i.success {color: #00b000;} +i.enabled {color: #00b000;} i.error {color: #b00000;} - +i.disabled {color: #b00000;} +i.warning {color: #ff9900;} i.initstate {color: #ff9900;} i.released {color: #00b000;} i.rejected {color: #b00000;} diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 255c8f410..b6e349dbf 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -12,8 +12,8 @@ chzn_template_func = function (state) { if($(state.element).data('warning')) warning = $(state.element).data('warning')+''; /* make sure it is a string */ var html = ''; - if($(state.element).data('fa fa-before')) - html += ' '; + if($(state.element).data('icon-before')) + html += ' '; html += state.text.replace(/'; @@ -63,8 +63,8 @@ $(document).ready( function() { $('body').on('touchstart.dropdown', '.dropdown-menu', function (e) { e.stopPropagation(); }); - $('.datepicker, #expirationdate, #fromdate, #todate, #createstartdate, #createenddate, #expirationstartdate, #expirationenddate') - .datepicker() + $('.datepicker, #expirationdate, #createstartdate, #createenddate, #expirationstartdate, #expirationenddate') + .datepicker({todayHighlight: true, toggleActive: true}) .on('changeDate', function(ev){ if(ev.date && $(ev.target).data('selectmenu')) { $("#"+$(ev.target).data('selectmenu')).val('date'); @@ -96,33 +96,84 @@ $(document).ready( function() { } }); /* }}} */ - /* The typeahead functionality useѕ the rest api */ + /* The typeahead functionality useѕ the modified version of + * bootstrap-typeahead, which is able to set the render function. + * This was needed because the search function return json objects + * for each hit and render could only process strings. + * */ $("#searchfield").typeahead({ /* {{{ */ minLength: 3, + items: 100, /* the query will limit the number of hits */ source: function(query, process) { - $.get('../restapi/index.php/search', { query: query, limit: 8, mode: 'typeahead' }, function(data) { - process(data); + var d = new Date(); + var pastYear = d.getFullYear() - 1; + d.setFullYear(pastYear); +// console.log(d.toISOString().split('T')[0]); + +// $.get('../restapi/index.php/search', { query: query, limit: 8, mode: 'typeahead' }, function(data) { + var data = { + query: query, + limit: 18, +// fullsearch: 1, +// creationdate: 1, +// createstart: d.toISOString().split('T')[0], + action: 'typeahead' + }; + /* Return a list of json objects, each containing + * type: type of object (D=doc, F=folder, S=searchterm) + * name: name of object + */ + $.get('../out/out.Search.php', data, function(data) { + process(data); }); }, /* updater is called when the item in the list is clicked. It is * actually provided to update the input field, but here we use - * it to set the document location. */ + * it to set the document location. The passed value is the string + * set in data-value of the list items. */ updater: function (item) { - document.location = "../out/out.Search.php?query=" + encodeURIComponent(item.substring(1)); + document.location = "../out/out.Search.php?query=" + encodeURIComponent(item); return item; }, - /* Set a matcher that allows any returned value */ + sorter: function(items) { + return items; + }, + /* matcher will always return true, because the initial search returns + * matches only + */ matcher : function (item) { return true; }, highlighter : function (item) { - if(item.charAt(0) == 'D') - return ' ' + item.substring(1).replace(/ ' + item.substring(1).replace(/ ' + item.name.replace(/ ' + item.name.replace(/ ' + item.substring(1).replace(/ ' + item.name.replace(/' + match + '' + }) + } + + , render: function (items) { + var that = this + + items = $(items).map(function (i, item) { + i = $(that.options.item).attr('data-value', item) + i.find('a').html(that.highlighter(item)) + return i[0] + }) + + items.first().addClass('active') + this.$menu.html(items) + return this + } + + , next: function (event) { + var active = this.$menu.find('.active').removeClass('active') + , next = active.next() + + if (!next.length) { + next = $(this.$menu.find('li')[0]) + } + + next.addClass('active') + } + + , prev: function (event) { + var active = this.$menu.find('.active').removeClass('active') + , prev = active.prev() + + if (!prev.length) { + prev = this.$menu.find('li').last() + } + + prev.addClass('active') + } + + , listen: function () { + this.$element + .on('focus', $.proxy(this.focus, this)) + .on('blur', $.proxy(this.blur, this)) + .on('keypress', $.proxy(this.keypress, this)) + .on('keyup', $.proxy(this.keyup, this)) + + if (this.eventSupported('keydown')) { + this.$element.on('keydown', $.proxy(this.keydown, this)) + } + + this.$menu + .on('click', $.proxy(this.click, this)) + .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) + .on('mouseleave', 'li', $.proxy(this.mouseleave, this)) + } + + , eventSupported: function(eventName) { + var isSupported = eventName in this.$element + if (!isSupported) { + this.$element.setAttribute(eventName, 'return;') + isSupported = typeof this.$element[eventName] === 'function' + } + return isSupported + } + + , move: function (e) { + if (!this.shown) return + + switch(e.keyCode) { + case 9: // tab + case 13: // enter + case 27: // escape + e.preventDefault() + break + + case 38: // up arrow + e.preventDefault() + this.prev() + break + + case 40: // down arrow + e.preventDefault() + this.next() + break + } + + e.stopPropagation() + } + + , keydown: function (e) { + this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27]) + this.move(e) + } + + , keypress: function (e) { + if (this.suppressKeyPressRepeat) return + this.move(e) + } + + , keyup: function (e) { + switch(e.keyCode) { + case 40: // down arrow + case 38: // up arrow + case 16: // shift + case 17: // ctrl + case 18: // alt + break + + case 9: // tab + case 13: // enter + if (!this.shown) return + this.select() + break + + case 27: // escape + if (!this.shown) return + this.hide() + break + + default: + this.lookup() + } + + e.stopPropagation() + e.preventDefault() + } + + , focus: function (e) { + this.focused = true + } + + , blur: function (e) { + this.focused = false + if (!this.mousedover && this.shown) this.hide() + } + + , click: function (e) { + e.stopPropagation() + e.preventDefault() + this.select() + this.$element.focus() + } + + , mouseenter: function (e) { + this.mousedover = true + this.$menu.find('.active').removeClass('active') + $(e.currentTarget).addClass('active') + } + + , mouseleave: function (e) { + this.mousedover = false + if (!this.focused && this.shown) this.hide() + } + + } + + + /* TYPEAHEAD PLUGIN DEFINITION + * =========================== */ + + var old = $.fn.typeahead + + $.fn.typeahead = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('typeahead') + , options = typeof option == 'object' && option + if (!data) $this.data('typeahead', (data = new Typeahead(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.typeahead.defaults = { + source: [] + , items: 8 + , menu: '' + , item: '
  • ' + , minLength: 1 + } + + $.fn.typeahead.Constructor = Typeahead + + + /* TYPEAHEAD NO CONFLICT + * =================== */ + + $.fn.typeahead.noConflict = function () { + $.fn.typeahead = old + return this + } + + + /* TYPEAHEAD DATA-API + * ================== */ + + $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { + var $this = $(this) + if ($this.data('typeahead')) return + $this.typeahead($this.data()) + }) + +}(window.jQuery); + diff --git a/utils/indexer.php b/utils/indexer.php index f0f2daf1b..47744609a 100644 --- a/utils/indexer.php +++ b/utils/indexer.php @@ -59,38 +59,67 @@ include($myincpath."/inc/inc.Init.php"); include($myincpath."/inc/inc.Extension.php"); include($myincpath."/inc/inc.DBInit.php"); -if($settings->_fullSearchEngine == 'sqlitefts') { - $indexconf = array( - 'Indexer' => 'SeedDMS_SQLiteFTS_Indexer', - 'Search' => 'SeedDMS_SQLiteFTS_Search', - 'IndexedDocument' => 'SeedDMS_SQLiteFTS_IndexedDocument' - ); - - require_once('SeedDMS/SQLiteFTS.php'); -} else { - $indexconf = array( - 'Indexer' => 'SeedDMS_Lucene_Indexer', - 'Search' => 'SeedDMS_Lucene_Search', - 'IndexedDocument' => 'SeedDMS_Lucene_IndexedDocument' - ); - - require_once('SeedDMS/Lucene.php'); -} - -function tree($dms, $index, $indexconf, $folder, $indent='') { /* {{{ */ +function tree($dms, $fulltextservice, $folder, $indent='', $numdocs) { /* {{{ */ global $settings, $themes; - echo $themes->black($indent."D ".$folder->getName()).PHP_EOL; + + $index = $fulltextservice->Indexer(); + $lucenesearch = $fulltextservice->Search(); + +// echo $themes->black($indent."D ".$folder->getName()).PHP_EOL; + echo $themes->black($indent."D ".$folder->getId().":".$folder->getName()." "); + if(($numdocs == 0) || !($hit = $lucenesearch->getFolder($folder->getId()))) { + try { + $idoc = $fulltextservice->IndexedDocument($folder, true); + if(isset($GLOBALS['SEEDDMS_HOOKS']['indexFolder'])) { + foreach($GLOBALS['SEEDDMS_HOOKS']['indexFolder'] as $hookObj) { + if (method_exists($hookObj, 'preIndexFolder')) { + $hookObj->preIndexDocument(null, $folder, $idoc); + } + } + } + $index->addDocument($idoc); + echo $themes->green(" (Folder added)").PHP_EOL; + } catch(Exception $e) { + echo $themes->error(" (Timeout)").PHP_EOL; + } + } else { + try { + $created = (int) $hit->getDocument()->getFieldValue('created'); + } catch (Exception $e) { + $created = 0; + } + if($created >= $folder->getDate()) { + echo $themes->italic(" (Folder unchanged)").PHP_EOL; + } else { + $index->delete($hit->id); + try { + $idoc = $fulltextservice->IndexedDocument($folder, true); + if(isset($GLOBALS['SEEDDMS_HOOKS']['indexDocument'])) { + foreach($GLOBALS['SEEDDMS_HOOKS']['indexDocument'] as $hookObj) { + if (method_exists($hookObj, 'preIndexDocument')) { + $hookObj->preIndexDocument(null, $folder, $idoc); + } + } + } + $index->addDocument($idoc); + echo $themes->green(" (Folder updated)").PHP_EOL; + } catch(Exception $e) { + echo $themes->error(" (Timeout)").PHP_EOL; + } + } + } + $subfolders = $folder->getSubFolders(); foreach($subfolders as $subfolder) { - tree($dms, $index, $indexconf, $subfolder, $indent.' '); + tree($dms, $fulltextservice, $subfolder, $indent.' ', $numdocs); } + $documents = $folder->getDocuments(); foreach($documents as $document) { echo $themes->black($indent." ".$document->getId().":".$document->getName()." "); - $lucenesearch = new $indexconf['Search']($index); - if(!($hit = $lucenesearch->getDocument($document->getId()))) { + if(($numdocs == 0) || !($hit = $lucenesearch->getDocument($document->getId()))) { try { - $idoc = new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, false, $settings->_cmdTimeout); + $idoc = $fulltextservice->IndexedDocument($document, true); if(isset($GLOBALS['SEEDDMS_HOOKS']['indexDocument'])) { foreach($GLOBALS['SEEDDMS_HOOKS']['indexDocument'] as $hookObj) { if (method_exists($hookObj, 'preIndexDocument')) { @@ -115,7 +144,7 @@ function tree($dms, $index, $indexconf, $folder, $indent='') { /* {{{ */ } else { $index->delete($hit->id); try { - $idoc = new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, false, $settings->_cmdTimeout); + $idoc = $fulltextservice->IndexedDocument($document, true); if(isset($GLOBALS['SEEDDMS_HOOKS']['indexDocument'])) { foreach($GLOBALS['SEEDDMS_HOOKS']['indexDocument'] as $hookObj) { if (method_exists($hookObj, 'preIndexDocument')) { @@ -135,19 +164,18 @@ function tree($dms, $index, $indexconf, $folder, $indent='') { /* {{{ */ $themes = new \AlecRabbit\ConsoleColour\Themes(); -if($recreate) - $index = $indexconf['Indexer']::create($settings->_luceneDir); -else - $index = $indexconf['Indexer']::open($settings->_luceneDir); +$index = $fulltextservice->Indexer($recreate); if(!$index) { echo $themes->error("Could not create index.").PHP_EOL; exit(1); } -$indexconf['Indexer']::init($settings->_stopWordsFile); - +$numdocs = $fulltextservice->Indexer()->count(); $folder = $dms->getFolder($settings->_rootFolderID); -tree($dms, $index, $indexconf, $folder); +/* if numdocs is 0, then there is no need to check if a document/folder is already + * indexed. That speeds up the indexing. + */ +tree($dms, $fulltextservice, $folder,'', $numdocs); $index->commit(); $index->optimize(); diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index fa5c53a18..a6bce56f1 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -286,7 +286,7 @@ $(document).ready(function() { ); $this->formField( getMLText("expires"), - $this->getDateChooser(($expts ? date('Y-m-d', $expts) : ''), "expdate", $this->params['session']->getLanguage()) + $this->getDateChooser(($expts ? getReadableDate($expts) : ''), "expdate", $this->params['session']->getLanguage()) ); } if($user->isAdmin()) { diff --git a/views/bootstrap/class.AddEvent.php b/views/bootstrap/class.AddEvent.php index 014fe2e69..ec8a62e36 100644 --- a/views/bootstrap/class.AddEvent.php +++ b/views/bootstrap/class.AddEvent.php @@ -80,7 +80,7 @@ $(document).ready(function() { $this->contentHeading(getMLText("add_event")); $this->contentContainerStart(); - $expdate = date('Y-m-d'); + $expdate = getReadableDate(); ?>
    diff --git a/views/bootstrap/class.ApprovalSummary.php b/views/bootstrap/class.ApprovalSummary.php index 8050aa283..ea2c46e3c 100644 --- a/views/bootstrap/class.ApprovalSummary.php +++ b/views/bootstrap/class.ApprovalSummary.php @@ -60,8 +60,8 @@ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style { $this->globalNavigation(); $this->contentStart(); $this->pageNavigation(getMLText("my_documents"), "my_documents"); - echo "
    \n"; - echo "
    \n"; + $this->rowStart(); + $this->columnStart(6); $this->contentHeading(getMLText("approval_summary")); // $this->contentContainerStart(); @@ -110,8 +110,8 @@ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style { } // $this->contentContainerEnd(); - echo "
    \n"; - echo "
    \n"; + $this->columnEnd(); + $this->columnStart(6); $this->contentHeading(getMLText("group_approval_summary")); // $this->contentContainerStart(); @@ -149,8 +149,8 @@ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style { } // $this->contentContainerEnd(); - echo "
    \n"; - echo "
    \n"; + $this->columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.AttributeMgr.php b/views/bootstrap/class.AttributeMgr.php index b3f90356c..de06bc3dc 100644 --- a/views/bootstrap/class.AttributeMgr.php +++ b/views/bootstrap/class.AttributeMgr.php @@ -325,10 +325,9 @@ $(document).ready( function() { $this->contentStart(); $this->pageNavigation(getMLText("admin_tools"), "admin_tools"); $this->contentHeading(getMLText("attrdef_management")); + $this->rowStart(); + $this->columnStart(6); ?> - -
    -
    getID()."\" />"; } echo " "; - echo " params['defaultsearchmethod'] == 'fulltext' ? "" : "id=\"searchfield\"")." data-provide=\"typeahead\" type=\"search\" style=\"width: 150px;\" placeholder=\"".getMLText("search")."\"/>"; + echo " params['defaultsearchmethod'] == 'fulltext_' ? "" : "id=\"searchfield\"")." data-provide=\"typeahead\" type=\"search\" style=\"width: 150px;\" placeholder=\"".getMLText("search")."\"/>"; if($this->params['defaultsearchmethod'] == 'fulltext') echo " "; // if($this->params['enablefullsearch']) { @@ -467,9 +475,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo "
    \n"; echo "
    \n"; echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; + echo " \n"; echo " \n"; switch ($pageType) { case "view_folder": @@ -579,6 +585,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } /* }}} */ private function documentNavigationBar($document) { /* {{{ */ + $accessobject = $this->params['accessobject']; $accessMode = $document->getAccessMode($this->params['user']); $docid=".php?documentid=" . $document->getID(); echo "".getMLText("document")."\n"; @@ -602,7 +609,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['move_document'] = array('link'=>"../out/out.MoveDocument".$docid, 'label'=>'move_document'); } } - if($this->params['accessobject']->maySetExpires()) { + if($accessobject->maySetExpires()) { $menuitems['expires'] = array('link'=>"../out/out.SetExpires".$docid, 'label'=>'expires'); } } @@ -764,7 +771,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo "
  • ".getMLText("week_view")."
  • \n"; echo "
  • ".getMLText("month_view")."
  • \n"; echo "
  • ".getMLText("year_view")."
  • \n"; - if (!$this->params['user']->isGuest()) echo "
  • ".getMLText("add_event")."
  • \n"; + if (!$this->params['user']->isGuest()) + echo "
  • ".getMLText("add_event")."
  • \n"; echo "\n"; echo "
    \n"; return; @@ -903,6 +911,26 @@ background-image: linear-gradient(to bottom, #882222, #111111);; return; } /* }}} */ + function rowStart() { /* {{{ */ + echo "
    \n"; + return; + } /* }}} */ + + function rowEnd() { /* {{{ */ + echo "
    \n"; + return; + } /* }}} */ + + function columnStart($width=6) { /* {{{ */ + echo "
    \n"; + return; + } /* }}} */ + + function columnEnd() { /* {{{ */ + echo "
    \n"; + return; + } /* }}} */ + function formField($title, $value, $params=array()) { /* {{{ */ if($title !== null) { echo "
    "; @@ -1069,6 +1097,63 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } } /* }}} */ + /** + * Get html for button opening a modal box + * + * @param array $config contains elements + * target: id of modal box + * remote: URL of data to be loaded into box + * title: text on button + * @return string + */ + function getModalBoxLink($config) { /* {{{ */ + $content = ''; + $content .= "$attrval) + $content .= ' '.$attrname.'="'.$attrval.'"'; + } + $content .= ">".$config['title']."…\n"; + return $content; + } /* }}} */ + + /** + * Get html for a modal box with buttons + * + * @param array $config contains elements + * id: id of modal box (must match target of getModalBoxLink()) + * title: title of modal box + * buttons: array of buttons, each having a title and an optional id + * @return string + */ + function getModalBox($config) { /* {{{ */ + $content = ' + +'; + return $content; + } /* }}} */ + function printFileChooserJs() { /* {{{ */ ?> $(document).ready(function() { @@ -1100,7 +1185,7 @@ $(document).ready(function() {
    - + '.getMLText("browse").'…
    @@ -1114,11 +1199,13 @@ $(document).ready(function() { echo self::getFileChooserHtml($varname, $multiple, $accept); } /* }}} */ - function printDateChooser($defDate = '', $varName, $lang='', $dateformat='yyyy-mm-dd', $startdate='', $enddate='') { /* {{{ */ + function printDateChooser($defDate = '', $varName, $lang='', $dateformat='', $startdate='', $enddate='') { /* {{{ */ echo self::getDateChooser($defDate, $varName, $lang, $dateformat, $startdate, $enddate); } /* }}} */ - function getDateChooser($defDate = '', $varName, $lang='', $dateformat='yyyy-mm-dd', $startdate='', $enddate='') { /* {{{ */ + function getDateChooser($defDate = '', $varName, $lang='', $dateformat='', $startdate='', $enddate='') { /* {{{ */ + if(!$dateformat) + $dateformat = getConvertDateFormat(); $content = ' @@ -1206,26 +1293,25 @@ $(document).ready(function() { $content = ''; $content .= "getID() : "") ."\">"; $content .= "
    \n"; - $content .= "getName()) : "") ."\"/>"; + $content .= "getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\"".($default ? ' title="'.htmlspecialchars($default->getFolder()->getFolderPathPlain().' / '.$default->getName()).'"' : '')." />"; $content .= ""; if(!$skiptree) - $content .= "params['rootfolderid']."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".getMLText("document")."…\n"; + $content .= $this->getModalBoxLink( + array( + 'target' => 'docChooser'.$formid, + 'remote' => "../out/out.DocumentChooser.php?form=".$formid."&folderid=".$this->params['dms']->getRootFolder()->getId(), + 'title' => getMLText('document') + )); $content .= "
    \n"; if(!$skiptree) - $content .= ' - -'; + $content .= $this->getModalBox( + array( + 'id' => 'docChooser'.$formid, + 'title' => getMLText('choose_target_document'), + 'buttons' => array( + array('title'=>getMLText('close')) + ) + )); return $content; } /* }}} */ @@ -1271,27 +1357,26 @@ function folderSelected(id, name) { $content = ''; $content .= "getID() : "") ."\">"; $content .= "
    \n"; - $content .= "getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" target=\"".$formid."\"/>"; + $content .= "getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" target=\"".$formid."\"".($default ? ' title="'.htmlspecialchars($default->getFolderPathPlain()).'"' : '')."/>"; $content .= ""; if(!$skiptree) { - $content .= "".getMLText("folder")."…\n"; + $content .= $this->getModalBoxLink( + array( + 'target' => 'folderChooser'.$formid, + 'remote' => "../out/out.FolderChooser.php?form=".$formid."&mode=".$accessMode."&exclude=".$exclude, + 'title' => getMLText('folder') + )); } $content .= "
    \n"; if(!$skiptree) { - $content .= ' - -'; + $content .= $this->getModalBox( + array( + 'id' => 'folderChooser'.$formid, + 'title' => getMLText('choose_target_folder'), + 'buttons' => array( + array('title'=>getMLText('close')) + ) + )); } return $content; } /* }}} */ @@ -1337,61 +1422,6 @@ $(document).ready(function() { - -getId(); - $names[] = htmlspecialchars($cat->getName()); - } - } - print ""; - print "
    \n"; - print ""; - print ""; - print "".getMLText("category")."…\n"; - print "
    \n"; -?> - - - - '.getMLText("keywords").'… -
    -'; + '; + $content .= $this->getModalBoxLink( + array( + 'target' => 'keywordChooser', + 'remote' => "../out/out.KeywordChooser.php?target=".$formName, + 'title' => getMLText('keywords') + )); + $content .= ' +
    +'; + $content .= $this->getModalBox( + array( + 'id' => 'keywordChooser', + 'title' => getMLText('use_default_keywords'), + 'buttons' => array( + array('id'=>'acceptkeywords', 'title'=>getMLText('save')), + array('title'=>getMLText('close')), + ) + )); return $content; } /* }}} */ @@ -1441,7 +1474,12 @@ $(document).ready(function() { ', $tmp); break; + case SeedDMS_Core_AttributeDefinition::type_date: + $attrs = $attribute->getValueAsArray(); + $tmp = array(); + foreach($attrs as $attr) { + $tmp[] = getReadableDate($attr); + } + return implode(', ', $tmp); + break; default: return htmlspecialchars(implode(', ', $attribute->getValueAsArray())); } @@ -1515,12 +1561,14 @@ $(document).ready(function() { $content = ''; switch($attrdef->getType()) { case SeedDMS_Core_AttributeDefinition::type_boolean: + $objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : ''; $content .= "getId()."]\" value=\"\" />"; - $content .= "getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"1\" ".(($attribute && $attribute->getValue()) ? 'checked' : '')." />"; + $content .= "getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"1\" ".($objvalue ? 'checked' : '')." />"; break; case SeedDMS_Core_AttributeDefinition::type_date: $objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : ''; - $content .= ' + $dateformat = getConvertDateFormat($this->params['settings']->_dateformat); + $content .= ' '; @@ -1633,24 +1681,23 @@ $(document).ready(function() { function getDropFolderChooserHtml($formName, $dropfolderfile="", $showfolders=0) { /* {{{ */ $content = "
    \n"; - $content .= ""; + $content .= ""; $content .= ""; - $content .= "".($showfolders ? getMLText("choose_target_folder"): getMLText("choose_target_file"))."…\n"; + $content .= $this->getModalBoxLink( + array( + 'target' => 'dropfolderChooser', + 'remote' => "../out/out.DropFolderChooser.php?form=".$formName."&dropfolderfile=".urlencode($dropfolderfile)."&showfolders=".$showfolders, + 'title' => ($showfolders ? getMLText("choose_target_folder"): getMLText("choose_target_file")) + )); $content .= "
    \n"; - $content .= ' - -'; + $content .= $this->getModalBox( + array( + 'id' => 'dropfolderChooser', + 'title' => ($showfolders ? getMLText("choose_target_folder"): getMLText("choose_target_file")), + 'buttons' => array( + array('title'=>getMLText('close')), + ) + )); return $content; } /* }}} */ @@ -1764,10 +1811,12 @@ $(document).ready(function() { print "

    ".getMLText('error')."!

    "; print htmlspecialchars($error); print "
    "; - print "
    "; - - $this->contentEnd(); - $this->htmlEndPage(); + if(!$plain) { + print "
    "; + + $this->contentEnd(); + $this->htmlEndPage(); + } add_log_line(" UI::exitError error=".$error." pagetitle=".$pagetitle, PEAR_LOG_ERR); @@ -1822,7 +1871,8 @@ $(document).ready(function() { } foreach($subfolders as $subfolder) { $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()) { + /* if the subfolder is in the path then further unfold the tree. */ + if(/*$expandtree>=$level ||*/ $path && ($path[0]->getID() == $subfolder->getID())) { $node['children'] = jqtree($path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1); if($showdocs) { $documents = $subfolder->getDocuments(isset($orderby[0]) ? $orderby[0] : '', $orderdir); @@ -1850,13 +1900,12 @@ $(document).ready(function() { } /* }}} */ $orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc'); - if($folderid) { - $folder = $this->params['dms']->getFolder($folderid); + if($folderid && ($folder = $this->params['dms']->getFolder($folderid))) { if(!$partialtree) { $path = $folder->getPath(); + /* Get the first folder (root folder) of path */ + $folder = array_shift($path); } - /* Get the first folder (root folder) of path */ - $folder = array_shift($path); $node = array('label'=>$folder->getName(), 'id'=>$folder->getID(), 'load_on_demand'=>false, 'is_folder'=>true); if(!$folder->hasSubFolders()) { $node['load_on_demand'] = true; @@ -1881,8 +1930,10 @@ $(document).ready(function() { } } else { - $root = $this->params['dms']->getFolder($this->params['rootfolderid']); - $tree = array(array('label'=>$root->getName(), 'id'=>$root->getID(), 'load_on_demand'=>false, 'is_folder'=>true)); + if($root = $this->params['dms']->getFolder($this->params['rootfolderid'])) + $tree = array(array('label'=>$root->getName(), 'id'=>$root->getID(), 'load_on_demand'=>false, 'is_folder'=>true)); + else + $tree = array(); } ?> var data = ; @@ -1890,7 +1941,7 @@ $(function() { const $tree = $('#jqtree'); $tree.tree({ // saveState: false, - selectable: true, + selectable: false, data: data, saveState: 'jqtree', openedIcon: $(''), @@ -1911,7 +1962,7 @@ $(function() { onCreateLi: function(node, $li) { // Add 'icon' span before title if(node.is_folder) - $li.find('.jqtree-title').before(' ').attr('rel', 'folder_' + node.id).attr('formtoken', '').attr('data-uploadformtoken', ''); + $li.find('.jqtree-title').before(' ').attr('data-name', node.name).attr('rel', 'folder_' + node.id).attr('formtoken', '').attr('data-uploadformtoken', '').attr('data-droptarget', 'folder_' + node.id).addClass('droptarget'); else $li.find('.jqtree-title').before(' '); } @@ -1925,8 +1976,8 @@ $(function() { if(!node) return; if(node.is_folder) { - $('#jqtree').tree('openNode', node); + // event.preventDefault(); if(typeof node.fetched == 'undefined') { node.fetched = true; @@ -2556,9 +2607,6 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; $docID = $document->getID(); - if(!$skipcont) - $content .= $this->documentListRowStart($document); - if($version) { $latestContent = $this->callHook('documentContent', $document, $version); if($latestContent === null) @@ -2570,6 +2618,9 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) } if($latestContent) { + if(!$skipcont) + $content .= $this->documentListRowStart($document); + $previewer->createPreview($latestContent); $version = $latestContent->getVersion(); $status = $latestContent->getStatus(); @@ -2613,7 +2664,11 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) $content .= "" . htmlspecialchars($document->getName()) . ""; if(isset($extracontent['below_title'])) $content .= $extracontent['below_title']; - $content .= "
    ".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".date('Y-m-d', $document->getDate()).", ".getMLText('version')." ".$version." - ".date('Y-m-d', $latestContent->getDate())."".($document->expires() ? ", ".getMLText('expires').": ".getReadableDate($document->getExpires())."" : "").""; + $content .= "
    "; + if($belowtitle = $this->callHook('documentListRowBelowTitle', $document, $latestContent)) + $content .= $belowtitle; + else + $content .= "".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".getReadableDate($document->getDate()).", ".getMLText('version')." ".$version." - ".getReadableDate($latestContent->getDate())."".($document->expires() ? ", ".getMLText('expires').": ".getReadableDate($document->getExpires())."" : "").""; if($comment) { $content .= "
    ".htmlspecialchars($comment).""; } @@ -2638,7 +2693,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) $content .= count($links)."/".count($revlinks)." ".getMLText("linked_documents")."
    "; if($status["status"] == S_IN_WORKFLOW && $workflowmode == 'advanced') { $workflowstate = $latestContent->getWorkflowState(); - $content .= 'getName()).'">'.htmlspecialchars($workflowstate->getName()).''; + $content .= 'getName()) : '').'">'.($workflowstate ? htmlspecialchars($workflowstate->getName()) : '').''; } else { $content .= getOverallStatusText($status["status"]); } @@ -2664,13 +2719,15 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) if($enableClipboard) { $content .= ''; } + if($onepage) + $content .= ''; if(!empty($extracontent['end_action_list'])) $content .= $extracontent['end_action_list']; $content .= "
    "; $content .= ""; + if(!$skipcont) + $content .= $this->documentListRowEnd($document); } - if(!$skipcont) - $content .= $this->documentListRowEnd($document); return $content; } /* }}} */ @@ -2791,6 +2848,8 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) if($enableClipboard) { $content .= ''; } + if($onepage) + $content .= ''; if(!empty($extracontent['end_action_list'])) $content .= $extracontent['end_action_list']; $content .= "
    "; @@ -3041,7 +3100,7 @@ $(document).ready(function() { echo $reqName; echo ""; echo ""; - echo "".$rec['date']." - "; + echo "".getLongReadableDate($rec['date'])." - "; $updateuser = $dms->getUser($rec["userID"]); if(!is_object($updateuser)) echo getMLText("unknown_user"); diff --git a/views/bootstrap/class.Calendar.php b/views/bootstrap/class.Calendar.php index 7529ad3ea..342b3eb73 100644 --- a/views/bootstrap/class.Calendar.php +++ b/views/bootstrap/class.Calendar.php @@ -74,11 +74,11 @@ class SeedDMS_View_Calendar extends SeedDMS_Bootstrap_Style { formField( getMLText("from"), - $this->getDateChooser(date('Y-m-d', $event["start"]), "from") + $this->getDateChooser(getReadableDate($event["start"]), "from") ); $this->formField( getMLText("to"), - $this->getDateChooser(date('Y-m-d', $event["stop"]), "to") + $this->getDateChooser(getReadableDate($event["stop"]-86400), "to") ); $this->formField( getMLText("name"), @@ -112,7 +112,7 @@ class SeedDMS_View_Calendar extends SeedDMS_Bootstrap_Style { ">

    htmlspecialchars($event["name"])));?>

    - + contentContainerEnd(); @@ -392,15 +392,21 @@ $(document).ready(function() { $this->globalNavigation(); $this->contentStart(); // $this->pageNavigation("", "calendar", array()); + $this->rowStart(); + $this->columnStart(8); ?> -
    -
    -
    +
    +columnEnd(); + $this->columnStart(4); +?> +
    -
    columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.Categories.php b/views/bootstrap/class.Categories.php index 29045f79b..944414678 100644 --- a/views/bootstrap/class.Categories.php +++ b/views/bootstrap/class.Categories.php @@ -97,7 +97,7 @@ $(document).ready( function() { - + pageNavigation(getMLText("admin_tools"), "admin_tools"); $this->contentHeading(getMLText("global_document_categories")); + $this->rowStart(); + $this->columnStart(6); ?> -
    -
    ".$c[1]."

    "; } ?> -

    +

    contentContainerEnd(); diff --git a/views/bootstrap/class.DefaultKeywords.php b/views/bootstrap/class.DefaultKeywords.php index f2b61e03f..6b42ff0c0 100644 --- a/views/bootstrap/class.DefaultKeywords.php +++ b/views/bootstrap/class.DefaultKeywords.php @@ -128,7 +128,7 @@ $(document).ready( function() { - + - +
    @@ -196,7 +196,7 @@ $(document).ready( function() { "> "> - +
    @@ -204,7 +204,7 @@ $(document).ready( function() { "> - +

    @@ -240,9 +240,9 @@ $(document).ready( function() { $this->pageNavigation(getMLText("admin_tools"), "admin_tools"); $this->contentHeading(getMLText("global_default_keywords")); + $this->rowStart(); + $this->columnStart(4); ?> -
    -
    >
    -
    - -
    - contentContainerStart(); ?> +columnEnd(); + $this->columnStart(8); + $this->contentContainerStart(); +?>
    >
    - contentContainerEnd(); ?> -
    - contentContainerEnd(); + $this->columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.DocumentAccess.php b/views/bootstrap/class.DocumentAccess.php index 3471dc6b4..220cbc545 100644 --- a/views/bootstrap/class.DocumentAccess.php +++ b/views/bootstrap/class.DocumentAccess.php @@ -93,8 +93,8 @@ $(document).ready( function() { $this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document); $this->contentHeading(getMLText("edit_document_access")); - echo "
    \n"; - echo "
    \n"; + $this->rowStart(); + $this->columnStart(4); $this->contentContainerStart(); if ($user->isAdmin()) { @@ -149,8 +149,8 @@ $(document).ready( function() {

    contentContainerEnd(); - echo "
    "; - echo "
    "; + $this->columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); return; @@ -164,8 +164,8 @@ $(document).ready( function() { contentContainerEnd(); - echo "
    "; - echo "
    "; + $this->columnEnd(); + $this->columnStart(4); $this->contentContainerStart(); $accessList = $document->getAccessList(); @@ -239,10 +239,8 @@ $(document).ready( function() { contentContainerEnd(); -?> -
    -
    -columnEnd(); + $this->columnStart(4); /* memorize users with access rights */ $memusers = array(); /* memorize groups with access rights */ @@ -314,11 +312,8 @@ $(document).ready( function() { print "
    "; } -?> -
    - - -columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.DocumentChooser.php b/views/bootstrap/class.DocumentChooser.php index a22b1253a..801bfdc7a 100644 --- a/views/bootstrap/class.DocumentChooser.php +++ b/views/bootstrap/class.DocumentChooser.php @@ -45,7 +45,8 @@ class SeedDMS_View_DocumentChooser extends SeedDMS_Bootstrap_Style { $orderby = $this->params['orderby']; header('Content-Type: application/javascript'); - $this->printNewTreeNavigationJs($folder->getID(), M_READ, 1, $form, '', $orderby); + if($folder) + $this->printNewTreeNavigationJs($folder->getID(), M_READ, 1, $form, '', $orderby); } /* }}} */ function show() { /* {{{ */ @@ -58,8 +59,10 @@ class SeedDMS_View_DocumentChooser extends SeedDMS_Bootstrap_Style { // $this->htmlStartPage(getMLText("choose_target_document")); // $this->contentContainerStart(); // $this->printNewTreeNavigationHtml($folder->getID(), M_READ, 1, $form); - $this->printNewTreeNavigationHtml($folder->getID(), M_READ, 1, $form, 0, $orderby); - echo ''."\n"; + if($folder) { + $this->printNewTreeNavigationHtml($folder->getID(), M_READ, 1, $form, 0, $orderby); + echo ''."\n"; + } // $this->contentContainerEnd(); // $this->htmlEndPage(true); } /* }}} */ diff --git a/views/bootstrap/class.DocumentNotify.php b/views/bootstrap/class.DocumentNotify.php index de9096b65..b727835b6 100644 --- a/views/bootstrap/class.DocumentNotify.php +++ b/views/bootstrap/class.DocumentNotify.php @@ -89,8 +89,8 @@ $(document).ready( function() { $groupNotifyIDs[] = $groupNotify->getID(); } - echo "
    \n"; - echo "
    \n"; + $this->rowStart(); + $this->columnStart(6); $this->contentContainerStart(); ?> @@ -142,8 +142,8 @@ $(document).ready( function() { contentContainerEnd(); - echo "
    \n"; - echo "
    \n"; + $this->columnEnd(); + $this->columnStart(6); print "\n"; if ((count($notifyList["users"]) == 0) && (count($notifyList["groups"]) == 0)) { print ""; @@ -186,8 +186,8 @@ $(document).ready( function() { } print "
    ".getMLText("empty_notify_list")."
    \n"; - echo "
    \n"; - echo "
    \n"; + $this->columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.DocumentVersionDetail.php b/views/bootstrap/class.DocumentVersionDetail.php index 6d96e0299..833bdb67d 100644 --- a/views/bootstrap/class.DocumentVersionDetail.php +++ b/views/bootstrap/class.DocumentVersionDetail.php @@ -157,10 +157,8 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style { $this->globalNavigation($folder); $this->contentStart(); $this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document); -?> -
    -
    -rowStart(); + $this->columnStart(4); $this->contentHeading(getMLText("document_infos")); $this->contentContainerStart(); ?> @@ -243,10 +241,8 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style { contentContainerEnd(); $this->preview(); -?> -
    -
    -columnEnd(); + $this->columnStart(8); // verify if file exists $file_exists=file_exists($dms->contentDir . $version->getPath()); @@ -348,8 +344,8 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style { $this->contentContainerEnd(); - print "
    "; - print "
    "; + $this->rowStart(); + $this->columnStart(6); if (is_array($reviewStatus) && count($reviewStatus)>0) { /* {{{ */ @@ -386,7 +382,7 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style { } print "\n"; print "".$reqName."\n"; - print "".$r["date"]." - "; + print "".getLongReadableDate($r["date"])." - "; /* $updateUser is the user who has done the review */ $updateUser = $dms->getUser($r["userID"]); print (is_object($updateUser) ? htmlspecialchars($updateUser->getFullName()." (".$updateUser->getLogin().")") : "unknown user id '".$r["userID"]."'")."
    "; @@ -402,8 +398,8 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style { print "\n"; } /* }}} */ - print "
    \n"; - print "
    "; + $this->columnEnd(); + $this->columnStart(6); if (is_array($approvalStatus) && count($approvalStatus)>0) { /* {{{ */ @@ -440,7 +436,7 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style { } print "\n"; print "".$reqName."\n"; - print "".$a["date"]." - "; + print "".getLongReadableDate($a["date"])." - "; /* $updateUser is the user who has done the approval */ $updateUser = $dms->getUser($a["userID"]); print (is_object($updateUser) ? htmlspecialchars($updateUser->getFullName()." (".$updateUser->getLogin().")") : "unknown user id '".$a["userID"]."'")."
    "; @@ -456,8 +452,8 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style { print "\n"; } /* }}} */ - print "
    \n"; - print "
    \n"; + $this->columnEnd(); + $this->rowEnd(); /* Get attachments exclusively for this version, without those * attached to the document @@ -553,7 +549,7 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style { $fullname = $suser->getFullName(); else $fullname = "--"; - echo "".$entry['date']."".getOverallStatusText($entry['status'])."".$fullname."".$entry['comment']."\n"; + echo "".getLongReadableDate($entry['date'])."".getOverallStatusText($entry['status'])."".$fullname."".$entry['comment']."\n"; } print "\n\n"; $this->contentContainerEnd(); @@ -577,36 +573,26 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Bootstrap_Style { print "\n\n"; $this->contentContainerEnd(); } -?> -
    -rowStart(); /* Check for an existing review log, even if the workflowmode * is set to traditional_only_approval. There may be old documents * that still have a review log if the workflow mode has been * changed afterwards. */ if($version->getReviewStatus(10)) { -?> -
    - printProtocol($version, 'review'); ?> -
    -columnStart(6); + $this->printProtocol($version, 'review'); + $this->columnEnd(); } if($version->getApprovalStatus(10)) { -?> -
    - printProtocol($version, 'approval'); ?> -
    -columnStart(6); + $this->printProtocol($version, 'approval'); + $this->columnEnd(); } -?> -
    -rowEnd(); } -?> -
    -
    -columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.DropFolderChooser.php b/views/bootstrap/class.DropFolderChooser.php index d668fae80..688d2785d 100644 --- a/views/bootstrap/class.DropFolderChooser.php +++ b/views/bootstrap/class.DropFolderChooser.php @@ -61,7 +61,7 @@ $('.folderselect').click(function(ev) { $previewwidth = $this->params['previewWidthMenuList']; $timeout = $this->params['timeout']; $xsendfile = $this->params['xsendfile']; - $folderid = isset($_GET['folderid']) ? $_GET['folderid'] : 0; + $folder = $this->params['folder']; $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); @@ -81,14 +81,14 @@ $('.folderselect').click(function(ev) { if($showfolders == 0 && !is_dir($dir.'/'.$entry)) { $c++; $mimetype = finfo_file($finfo, $dir.'/'.$entry); - $filecontent .= "
  • "; + $filecontent .= "
  • getId()."&dropfolderfileform1=".urldecode($entry)."\" title=\"".getMLText('menu_upload_from_dropfolder')."\"" : "").">"; if($previewwidth) { $previewer->createRawPreview($dir.'/'.$entry, 'dropfolder/', $mimetype); if($previewer->hasRawPreview($dir.'/'.$entry, 'dropfolder/')) { - $filecontent .= "
    "; + $filecontent .= "
    "; } } - $filecontent .= "
    ".$entry."
    ".SeedDMS_Core_File::format_filesize(filesize($dir.'/'.$entry)).", ".date('Y-m-d H:i:s', filectime($dir.'/'.$entry))."
  • \n"; + $filecontent .= "
    ".$entry."
    ".SeedDMS_Core_File::format_filesize(filesize($dir.'/'.$entry)).", ".date('Y-m-d H:i:s', filectime($dir.'/'.$entry))."
    \n"; } elseif($showfolders && is_dir($dir.'/'.$entry)) { $filecontent .= "
  • ".$entry."
  • "; } @@ -101,7 +101,7 @@ $('.folderselect').click(function(ev) { $content .= "
      \n"; $content .= "
    • \n"; $content .= " ".getMLText('menu_dropfolder')." (".$c.") \n"; - $content .= "
        \n"; + $content .= "
          \n"; $content .= $filecontent; $content .= "
        \n"; $content .= " \n"; diff --git a/views/bootstrap/class.EditDocument.php b/views/bootstrap/class.EditDocument.php index d05626805..c94c1c356 100644 --- a/views/bootstrap/class.EditDocument.php +++ b/views/bootstrap/class.EditDocument.php @@ -85,7 +85,7 @@ $(document).ready( function() { $this->contentContainerStart(); if($document->expires()) - $expdate = date('Y-m-d', $document->getExpires()); + $expdate = getReadableDate($document->getExpires()); else $expdate = ''; ?> diff --git a/views/bootstrap/class.EditOnline.php b/views/bootstrap/class.EditOnline.php index f9b7de66a..029604fb6 100644 --- a/views/bootstrap/class.EditOnline.php +++ b/views/bootstrap/class.EditOnline.php @@ -108,13 +108,9 @@ $(document).ready(function() { $this->contentStart(); $folder = $document->getFolder(); $this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document); -?> - -\n"; - -echo "
        \n"; -$this->contentHeading(getMLText("content")); + $this->rowStart(); + $this->columnStart(6); + $this->contentHeading(getMLText("content")); ?>
        @@ -129,15 +125,12 @@ $this->contentHeading(getMLText("content"));
        \n"; - - echo "
        \n"; + $this->columnEnd(); + $this->columnStart(6); $this->contentHeading(getMLText("preview")); echo "
        getId()."\">
        "; - echo "
        \n"; - - echo "
        \n"; - + $this->columnEnd(); + $this->rowEnd(); $this->contentContainerEnd(); $this->contentEnd(); $this->htmlEndPage(); diff --git a/views/bootstrap/class.ExtensionMgr.php b/views/bootstrap/class.ExtensionMgr.php index 1f7f32619..ada1960ca 100644 --- a/views/bootstrap/class.ExtensionMgr.php +++ b/views/bootstrap/class.ExtensionMgr.php @@ -250,10 +250,8 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { $this->contentStart(); $this->pageNavigation(getMLText("admin_tools"), "admin_tools"); $this->contentHeading(getMLText("extension_manager")); -?> -
        -
        -rowStart(); + $this->columnStart(4); if($extmgr->isWritableExtDir()) { ?>
        @@ -271,9 +269,9 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { } else { echo "
        ".getMLText('extension_mgr_no_upload')."
        "; } + $this->columnEnd(); + $this->columnStart(8); ?> -
        -
        @@ -343,13 +341,15 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { - +
        - - +columnEnd(); + $this->rowEnd(); +?> - -columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.FolderChooser.php b/views/bootstrap/class.FolderChooser.php index 88d9bc0c2..b6265bd59 100644 --- a/views/bootstrap/class.FolderChooser.php +++ b/views/bootstrap/class.FolderChooser.php @@ -40,13 +40,14 @@ class SeedDMS_View_FolderChooser extends SeedDMS_Bootstrap_Style { } /* }}} */ function js() { /* {{{ */ + $dms = $this->params['dms']; $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, 0, $orderby); + $this->printNewTreeNavigationJs($dms->getRootFolder()->getId()/*$rootfolderid*/, $mode, 0, $form, 0, $orderby); } /* }}} */ function show() { /* {{{ */ @@ -59,7 +60,7 @@ class SeedDMS_View_FolderChooser extends SeedDMS_Bootstrap_Style { $rootfolderid = $this->params['rootfolderid']; // $this->htmlStartPage(getMLText("choose_target_folder")); - $this->printNewTreeNavigationHtml($rootfolderid, $mode, 0, $form, 0, $orderby); + $this->printNewTreeNavigationHtml($dms->getRootFolder()->getId()/*$rootfolderid*/, $mode, 0, $form, 0, $orderby); echo ''."\n"; // $this->htmlEndPage(true); } /* }}} */ diff --git a/views/bootstrap/class.FolderNotify.php b/views/bootstrap/class.FolderNotify.php index cae14942f..5fe0bfb24 100644 --- a/views/bootstrap/class.FolderNotify.php +++ b/views/bootstrap/class.FolderNotify.php @@ -89,8 +89,8 @@ $(document).ready(function() { $groupNotifyIDs[] = $groupNotify->getID(); } - echo "
        \n"; - echo "
        \n"; + $this->rowStart(); + $this->columnStart(6); $this->contentContainerStart(); ?> @@ -142,8 +142,8 @@ $(document).ready(function() { contentContainerEnd(); - echo "
        \n"; - echo "
        \n"; + $this->columnEnd(); + $this->columnStart(6); print "\n"; if (empty($notifyList["users"]) && empty($notifyList["groups"])) { print ""; @@ -186,8 +186,8 @@ $(document).ready(function() { } print "
        ".getMLText("empty_notify_list")."
        \n"; - echo "
        \n"; - echo "
        \n"; + $this->columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.GroupMgr.php b/views/bootstrap/class.GroupMgr.php index 144f59f3c..aff4f2a29 100644 --- a/views/bootstrap/class.GroupMgr.php +++ b/views/bootstrap/class.GroupMgr.php @@ -128,9 +128,9 @@ $(document).ready( function() { $i++; } } + echo "".getMLText('pending_reviews')."".$i.""; } if($workflowmode == "traditional" || $workflowmode == 'traditional_only_approval') { - echo "".getMLText('pending_reviews')."".$i.""; $approvalstatus = $selgroup->getApprovalStatus(); $i = 0; foreach($approvalstatus as $rv) { @@ -164,7 +164,8 @@ $(document).ready( function() { @@ -295,10 +296,9 @@ $(document).ready( function() { $this->pageNavigation(getMLText("admin_tools"), "admin_tools"); $this->contentHeading(getMLText("group_management")); + $this->rowStart(); + $this->columnStart(4); ?> - -
        -
        getID()."\"" : "") ?>>
        getID()."\"" : "") ?>>
        -
        - -
        - contentContainerStart(); ?> -
        getID()."\"" : "") ?>>
        - contentContainerEnd(); ?> -
        - -
        - columnEnd(); + $this->columnStart(8); + $this->contentContainerStart(); +?> +
        getID()."\"" : "") ?>>
        +contentContainerEnd(); + $this->columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.Help.php b/views/bootstrap/class.Help.php index 15d9d2898..6dfd467f7 100644 --- a/views/bootstrap/class.Help.php +++ b/views/bootstrap/class.Help.php @@ -40,9 +40,9 @@ class SeedDMS_View_Help extends SeedDMS_Bootstrap_Style { $this->globalNavigation(); $this->contentStart(); // $this->pageNavigation(getMLText("help").": ".getMLText('help_'.strtolower($context), array(), $context), ""); + $this->rowStart(); + $this->columnStart(4); ?> -
        -
        Table of contents params['session']->getLanguage()."/help"; @@ -57,9 +57,9 @@ class SeedDMS_View_Help extends SeedDMS_Bootstrap_Style { } } echo "
      "; + $this->columnEnd(); + $this->columnStart(8); ?> - -
      params['session']->getLanguage()."/help.htm"); } -?> -
      - -columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.ImportUsers.php b/views/bootstrap/class.ImportUsers.php index 5886caccf..5a2f92673 100644 --- a/views/bootstrap/class.ImportUsers.php +++ b/views/bootstrap/class.ImportUsers.php @@ -51,8 +51,8 @@ class SeedDMS_View_ImportUsers extends SeedDMS_Bootstrap_Style { $this->contentHeading(getMLText("import_users")); - echo "
      \n"; - echo "
      \n"; + $this->rowStart(); + $this->columnStart(4); $this->contentContainerStart(); print ""; $this->formField( @@ -81,8 +81,8 @@ class SeedDMS_View_ImportUsers extends SeedDMS_Bootstrap_Style { print "\n"; $this->contentContainerEnd(); - echo "
      \n"; - echo "
      \n"; + $this->columnEnd(); + $this->columnStart(8); if($newusers) { echo "\n"; echo ""; @@ -121,8 +121,8 @@ class SeedDMS_View_ImportUsers extends SeedDMS_Bootstrap_Style { */ echo "
      "; } - echo "
      \n"; - echo "
      \n"; + $this->columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ diff --git a/views/bootstrap/class.IndexInfo.php b/views/bootstrap/class.IndexInfo.php index e7a11dd6c..623dc7821 100644 --- a/views/bootstrap/class.IndexInfo.php +++ b/views/bootstrap/class.IndexInfo.php @@ -34,8 +34,6 @@ class SeedDMS_View_IndexInfo extends SeedDMS_Bootstrap_Style { function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; - $luceneclassdir = $this->params['luceneclassdir']; - $lucenedir = $this->params['lucenedir']; $index = $this->params['index']; $this->htmlStartPage(getMLText('fulltext_info')); @@ -49,8 +47,8 @@ class SeedDMS_View_IndexInfo extends SeedDMS_Bootstrap_Style { $this->contentContainerStart(); for ($id = 0; $id < $numDocs; $id++) { if (!$index->isDeleted($id)) { - $hit = $index->getDocument($id); - echo "document_id."\">".htmlspecialchars($hit->title)."\n"; + if($hit = $index->getDocument($id)) + echo "document_id."\">".htmlspecialchars($hit->title)."\n"; } } $this->contentContainerEnd(); @@ -68,6 +66,7 @@ class SeedDMS_View_IndexInfo extends SeedDMS_Bootstrap_Style { $field = $term->field; } echo htmlspecialchars($term->text)."\n"; +// echo "_occurrence."\">".htmlspecialchars($term->text)."\n"; } $this->contentContainerEnd(); // echo ""; diff --git a/views/bootstrap/class.Indexer.php b/views/bootstrap/class.Indexer.php index e0934f963..35e9540a3 100644 --- a/views/bootstrap/class.Indexer.php +++ b/views/bootstrap/class.Indexer.php @@ -29,61 +29,67 @@ class SeedDMS_View_Indexer_Process_Folder { /* {{{ */ protected $index; - protected $indexconf; - - public function __construct($index, $indexconf, $forceupdate) { /* {{{ */ - $this->index = $index; - $this->indexconf = $indexconf; + public function __construct($fulltextservice, $forceupdate) { /* {{{ */ + $this->fulltextservice = $fulltextservice; $this->forceupdate = $forceupdate; + $this->numdocs = $this->fulltextservice->Indexer()->count(); } /* }}} */ public function process($folder) { /* {{{ */ + $lucenesearch = $this->fulltextservice->Search(); + echo "
      ".$folder->getId().":".htmlspecialchars($folder->getFolderPathPlain()); + /* If the document wasn't indexed before then just add it */ + if(($this->numdocs == 0) || !($hit = $lucenesearch->getFolder($folder->getId()))) { + echo " getID()."\" class=\"indexme indexstatus\" data-docid=\"F".$folder->getID()."\">".getMLText('index_waiting').""; + } else { + /* Check if the attribute created is set or has a value older + * than the lastet content. Documents without such an attribute + * where added when a new document was added to the dms. In such + * a case the document content wasn't indexed. + */ + try { + $created = (int) $hit->getDocument()->getFieldValue('created'); + } catch (/* Zend_Search_Lucene_ */Exception $e) { + $created = 0; + } + if($created >= $folder->getDate() && !$this->forceupdate) { + echo "getID()."\" class=\"indexstatus\" data-docid=\"F".$folder->getID()."\">".getMLText('index_document_unchanged').""; + } else { + $this->fulltextservice->Indexer()->delete($hit->id); + echo " getID()."\" class=\"indexme indexstatus\" data-docid=\"F".$folder->getID()."\">".getMLText('index_waiting').""; + } + } + echo "
      "; + $documents = $folder->getDocuments(); if($documents) { - echo "
      ".$folder->getFolderPathPlain()."
      "; +// echo "
      ".htmlspecialchars($folder->getFolderPathPlain())."
      "; foreach($documents as $document) { - echo "
      ".$document->getId().":".htmlspecialchars($document->getName()); - /* If the document wasn't indexed before then just add it */ - $lucenesearch = new $this->indexconf['Search']($this->index); - if(!($hit = $lucenesearch->getDocument($document->getId()))) { - echo " getID()."\" class=\"indexme indexstatus\" data-docid=\"".$document->getID()."\">".getMLText('index_waiting').""; - /* - try { - $index->addDocument(new $indexconf['IndexedDocument']($dms, $document, $this->converters ? $this->converters : null, false, $this->timeout)); - echo "(document added)"; - } catch(Exception $e) { - echo $indent."(adding document failed '".$e->getMessage()."')"; - } - */ - } else { - /* Check if the attribute created is set or has a value older - * than the lastet content. Documents without such an attribute - * where added when a new document was added to the dms. In such - * a case the document content wasn't indexed. - */ - try { - $created = (int) $hit->getDocument()->getFieldValue('created'); - } catch (/* Zend_Search_Lucene_ */Exception $e) { - $created = 0; - } - $content = $document->getLatestContent(); - if($created >= $content->getDate() && !$this->forceupdate) { - echo "getID()."\" class=\"indexstatus\" data-docid=\"".$document->getID()."\">".getMLText('index_document_unchanged').""; + echo "
      ".$document->getId().":".htmlspecialchars($document->getName()); + /* If the document wasn't indexed before then just add it */ + if(($this->numdocs == 0) || !($hit = $lucenesearch->getDocument($document->getId()))) { + echo " getID()."\" class=\"indexme indexstatus\" data-docid=\"D".$document->getID()."\">".getMLText('index_waiting').""; } else { - $this->index->delete($hit->id); - echo " getID()."\" class=\"indexme indexstatus\" data-docid=\"".$document->getID()."\">".getMLText('index_waiting').""; - /* - try { - $index->addDocument(new $indexconf['IndexedDocument']($dms, $document, $this->converters ? $this->converters : null, false, $this->timeout)); - echo $indent."(document updated)"; - } catch(Exception $e) { - echo $indent."(updating document failed)"; - } + /* Check if the attribute created is set or has a value older + * than the lastet content. Documents without such an attribute + * where added when a new document was added to the dms. In such + * a case the document content wasn't indexed. */ + try { + $created = (int) $hit->getDocument()->getFieldValue('created'); + } catch (/* Zend_Search_Lucene_ */Exception $e) { + $created = 0; + } + $content = $document->getLatestContent(); + if($created >= $content->getDate() && !$this->forceupdate) { + echo "getID()."\" class=\"indexstatus\" data-docid=\"D".$document->getID()."\">".getMLText('index_document_unchanged').""; + } else { + $this->fulltextservice->Indexer()->delete($hit->id); + echo " getID()."\" class=\"indexme indexstatus\" data-docid=\"D".$document->getID()."\">".getMLText('index_waiting').""; + } } + echo "
      "; } - echo "
      "; - } } } /* }}} */ } /* }}} */ @@ -110,13 +116,13 @@ class SeedDMS_View_Indexer extends SeedDMS_Bootstrap_Style { var queue_count = 0; // Number of functions being called var funcArray = []; // Array of functions waiting var MAX_REQUESTS = 5; // Max requests -var CALL_WAIT = 100; // 100ms +var CALL_WAIT = 20; // 100ms var docstoindex = 0; // total number of docs to index function check_queue() { // Check if count doesn't exceeds or if there aren't any functions to call - console.log('Queue has ' + funcArray.length + '/' + docstoindex + ' items'); - console.log('Currently processing ' + queue_count + ' requests (' + $.active + ')'); +// console.log('Queue has ' + funcArray.length + '/' + docstoindex + ' items'); +// console.log('Currently processing ' + queue_count + ' requests (' + $.active + ')'); if(queue_count >= MAX_REQUESTS) { setTimeout(function() { check_queue() }, CALL_WAIT); return; @@ -124,12 +130,18 @@ function check_queue() { if(funcArray.length == 0) { return; } + var command = ''; docid = funcArray.pop(); $('#status_'+docid).html('Processsing ...'); + if(docid[0] == 'F') { + command = 'indexfolder'; + } else { + command = 'indexdocument'; + } $.ajax({url: '../op/op.Ajax.php', type: 'GET', dataType: "json", - data: {command: 'indexdocument', id: docid}, + data: {command: command, id: docid.substring(1)}, beforeSend: function() { queue_count++; // Add request to the counter $('.queue-bar').css('width', (queue_count*100/MAX_REQUESTS)+'%'); @@ -172,7 +184,7 @@ function check_queue() { if(funcArray.length+queue_count == 0) $('.total-bar').addClass('bar-success'); } - }); + }); setTimeout(function() { check_queue() }, CALL_WAIT); } @@ -193,74 +205,10 @@ $(document).ready( function() { params['forceupdate']; - - set_time_limit(30); -// echo $indent."D ".htmlspecialchars($folder->getName())."\n"; - echo '\n"; - } /* }}} */ - function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; - $index = $this->params['index']; - $indexconf = $this->params['indexconf']; + $fulltextservice = $this->params['fulltextservice']; $forceupdate = $this->params['forceupdate']; $folder = $this->params['folder']; $this->converters = $this->params['converters']; @@ -271,7 +219,8 @@ $(document).ready( function() { $this->contentStart(); $this->pageNavigation(getMLText("admin_tools"), "admin_tools"); $this->contentHeading(getMLText("update_fulltext_index")); - if($index) { + if($fulltextservice) { + $index = $fulltextservice->Indexer(); ?>