diff --git a/CHANGELOG b/CHANGELOG index 5171dbce5..3749aa75d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,17 @@ when passwords are reset - count failed runs of a task, disable it after 5 failures +------------------------------------------------------------------------------- + Changes in version 6.0.29 +-------------------------------------------------------------------------------- +- merge changes up to 5.1.36 +- fix regression in FolderNotify + +-------------------------------------------------------------------------------- + Changes in version 6.0.28 +-------------------------------------------------------------------------------- +- merge changes up to 5.1.35 + -------------------------------------------------------------------------------- Changes in version 6.0.27 -------------------------------------------------------------------------------- @@ -14,6 +25,11 @@ - Document/folder check distinguishes between documents which cannot be receiped/revised because of access rights or the recipient/revisor being disabled. +- fix creating user via rest api +- checkout info does not depend on whether the logged in user was substituted +- add new endpoints for managing roles by rest api +- add transmittals in menu +- add legacy access check for controllers -------------------------------------------------------------------------------- Changes in version 6.0.26 @@ -288,6 +304,19 @@ - add document list which can be exported as an archive - search results can be exported +-------------------------------------------------------------------------------- + Changes in version 5.1.36 +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- + Changes in version 5.1.35 +-------------------------------------------------------------------------------- +- check access rights on EditDocumentFile and RemoveDocumentFile +- allow to set expiration dates in the past again +- fix authentication with ldap if AD is used +- fix progress bar in list of users if quota is active +- field storing email in ldap can be configured + -------------------------------------------------------------------------------- Changes in version 5.1.34 -------------------------------------------------------------------------------- @@ -307,6 +336,10 @@ - do not show full list of notifiers to none admins - do not list document/folders in sequence selector if its number exceeds 50 - typeahead menu works with arrow keys again, wait 1 sec. before searching +- fix sending notification mails when document/folder was moved +- tasks and clipboard can be shown in main menu, even if there are no tasks + due or the clipboard is empty +- add conversion service from text/html to text/plain -------------------------------------------------------------------------------- Changes in version 5.1.33 diff --git a/controllers/class.Cron.php b/controllers/class.Cron.php index 9bada6bb6..645cf7744 100644 --- a/controllers/class.Cron.php +++ b/controllers/class.Cron.php @@ -28,6 +28,7 @@ class SeedDMS_Controller_Cron extends SeedDMS_Controller_Common { $settings = $this->params['settings']; $logger = $this->params['logger']; $mode = $this->params['mode']; + $seltask = $this->params['task']; $db = $dms->getDb(); $scheduler = new SeedDMS_Scheduler($db); @@ -35,6 +36,8 @@ class SeedDMS_Controller_Cron extends SeedDMS_Controller_Common { $jsonarr = []; foreach($tasks as $task) { + if($seltask && $seltask != $task->getExtension()."::".$task->getTask()) + continue; if(isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()]) && is_object($taskobj = resolveTask($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()]))) { $arr = array( 'extension'=>$task->getExtension(), diff --git a/doc/README.Converters b/doc/README.Converters index 6537c19c4..fc4d18eb2 100644 --- a/doc/README.Converters +++ b/doc/README.Converters @@ -7,10 +7,11 @@ application/csv cat '%s' application/pdf - pdftotext -nopgbrk %s - | sed -e 's/ [a-zA-Z0-9.]\{1\} / /g' -e 's/[0-9.]//g' + pdftotext -q -nopgbrk %s - | sed -e 's/ [a-zA-Z0-9.]\{1\} / /g' -e 's/[0-9.]//g' If pdftotext takes too long on large document you may want to pass parameter - -l to specify the last page to be converted + -l to specify the last page to be converted. -q is for suppressing error/warnings + send to stderr mutool draw -F txt -q -N -o - %s @@ -142,6 +143,10 @@ video/mp4 convert -resize %wx "%f[12]" "png:%o" + You may as well use ffmpeg right away + + ffmpeg -i "%f" -ss 00:00:02 -frames:v 1 -loglevel quiet -vf scale=%w:-1 -f apng "%o" + audio/mpeg sox "%f" -n spectrogram -x 600 -Y 550 -r -l -o - | convert -resize %wx png:- "png:%o" diff --git a/doc/README.Install.md b/doc/README.Install.md index c6596fbb3..7ffbe77ce 100644 --- a/doc/README.Install.md +++ b/doc/README.Install.md @@ -8,7 +8,7 @@ SeedDMS is a web-based application written in PHP. It uses MySQL, SQLite3 or PostgreSQL to manage the documents that were uploaded into the application. Be aware that PostgreSQL is not very well tested. -Make sure you have PHP >= 7.3 and MySQL 5 or higher installed. SeedDMS +Make sure you have PHP >= 7.4 and MySQL 5 or higher installed. SeedDMS will work with PHP running in CGI-mode as well as running as a module under apache. @@ -240,7 +240,7 @@ in your current installation with new versions from the quickstart archive. current installation and make the link `seeddms` point to this new directory. 3. copy the directory `pear` from the unpacked archive into your current installation, replacing the existing directory. Make a backup of `pear` before - the replacement if you want to ensure to be able to go back to your old version. + the replacement if you want to ensure to be able to go back to your old version. 4. you may compare your `conf/settings.xml` file with the shipped version `conf/settings.xml.template` for new parameters. If you don't do it, the next time you save the configuration the default values will be used. @@ -350,7 +350,7 @@ http://localhost/seeddms/ * Create a data directory with the thre sub directories staging, cache and lucene. Make sure the data directory is either *not* below your document root - or is protected with a .htaccess file against web access. The data directory + or is protected with a .htaccess file against web access. The data directory needs to be writable by the web server. * Clicking on 'Start installation' will show a form with all necessary @@ -371,9 +371,9 @@ full text search engine support, you will also need to unpack * Unpack all the files in a public web server folder. If you're working on a host machine your provider will tell you where to upload the files. If possible, do not unpack the pear packages `SeedDMS_Core-.tgz`, - `SeedDMS_Preview-.tgz` and + `SeedDMS_Preview-.tgz` and `SeedDMS_Lucene-.tgz` below the document root of your web server. - Choose a temporary folder, as the files will be moved in a second. + Choose a temporary folder, as the files will be moved in a second. Create a directory e.g. `pear` in the same directory where you unpacked seeddms and create a sub directory SeedDMS. Move the content except for the @@ -395,36 +395,36 @@ full text search engine support, you will also need to unpack Since they are pear packages they can also be installed with - > pear install SeedDMS_Core-.tgz - > pear install SeedDMS_Lucene-.tgz - > pear install SeedDMS_Preview-.tgz + > pear install SeedDMS_Core-.tgz + > pear install SeedDMS_Lucene-.tgz + > pear install SeedDMS_Preview-.tgz * The PEAR packages Log and Mail are also needed. They can be downloaded from http://pear.php.net/package/Log and http://pear.php.net/package/Mail. - Either install it as a pear package - or place it under your new directory 'pear' + Either install it as a pear package + or place it under your new directory 'pear' > pear - > Log - > Log.php - > Mail - > Mail.php + > Log + > Log.php + > Mail + > Mail.php * The package HTTP_WebDAV_Server is also needed. It can be downloaded from http://pear.php.net/package/HTTP_WebDAV_Server. Either install it as a - pear package or place it under your new directory 'pear' + pear package or place it under your new directory 'pear' > pear > HTTP - > WebDAV - > Server - > Server.php + > WebDAV + > Server + > Server.php If you run PHP in CGI mode, you also need to place a .htaccess file - in the webdav directory with the following content. + in the webdav directory with the following content. - RewriteEngine on - RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last] + RewriteEngine on + RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last] * Create a data folder somewhere on your web server including the subdirectories staging, cache and lucene and make sure they are writable by your web server, @@ -435,24 +435,24 @@ or should be protected by a .htaccess file. The folder containing the configuration (settings.xml) must be protected by an .htaccess file like the following. - > - > Order allow,deny - > Deny from all - > + > + > Order allow,deny + > Deny from all + > If you install SeedDMS for the first time continue with the database setup. * Create a new database on your web server e.g. for mysql: - create database seeddms; + create database seeddms; * Create a new user for the database with all permissions on the new database e.g. for mysql: - grant all privileges on seeddms.* to seeddms@localhost identified by 'secret'; - (replace 'secret' with you own password) + grant all privileges on seeddms.* to seeddms@localhost identified by 'secret'; + (replace 'secret' with you own password) * Optionally import `create_tables-innodb.sql` in the new database e.g. for mysql: - > cat create_tables-innodb.sql | mysql -useeddms -p seeddms + > cat create_tables-innodb.sql | mysql -useeddms -p seeddms This step can also be done by the install tool. * create a file `ENABLE_INSTALL_TOOL` in the `conf` directory and point your browser at http://hostname/seeddms/install diff --git a/doc/README.Ldap b/doc/README.Ldap index 55d886498..3d73d57af 100644 --- a/doc/README.Ldap +++ b/doc/README.Ldap @@ -35,6 +35,14 @@ is set to false. In that case the common name (cn) and email address is taken from ldap. An already existing account in SeedDMS will be updated with data from ldap. +Since version 5.1.35 and 6.0.28 the field name of the email address in ldap +can be set with the attribute `mailField`. If it is not set it defaults to `mail`. + +Since version 5.1.34 and 6.0.27 the groups of a user stored in the ldap directory +can be synchronised with the groups in SeedDMS. The ldap field storing +the groups can be configured with the attribute `mailField`. This will add +new groups in SeedDMS and aѕsign them to the user. + Examples --------- diff --git a/inc/inc.ClassAccessOperation.php b/inc/inc.ClassAccessOperation.php index 9c7630306..4061f7533 100644 --- a/inc/inc.ClassAccessOperation.php +++ b/inc/inc.ClassAccessOperation.php @@ -48,7 +48,7 @@ class SeedDMS_AccessOperation { private $_aro; /** - * @var array $legacy_access list of objects with access + * @var array $legacy_access list of objects with access use for view and controller * @access protected */ private $legacy_access; @@ -59,12 +59,14 @@ class SeedDMS_AccessOperation { $this->settings = $settings; $this->legacy_access['guest'] = array( 'Calendar', + 'Download', 'ErrorDlg', 'Help', 'Login', 'Search', 'ViewDocument', 'ViewFolder', + 'ViewOnline', ); $this->legacy_access['user'] = array( 'AddDocument', @@ -85,6 +87,7 @@ class SeedDMS_AccessOperation { 'DocumentChooser', 'DocumentNotify', 'DocumentVersionDetail', + 'Download', 'DropFolderChooser', 'EditAttributes', 'EditComment', @@ -147,6 +150,7 @@ class SeedDMS_AccessOperation { 'ViewDocument', 'ViewEvent', 'ViewFolder', + 'ViewOnline', 'WorkflowGraph', 'WorkflowSummary'); } /* }}} */ @@ -559,6 +563,32 @@ class SeedDMS_AccessOperation { return false; } /* }}} */ + protected function check_controller_legacy_access($controller, $get=array()) { /* {{{ */ + if($this->user->isAdmin()) + return true; + + if(is_string($controller)) { + $scripts = array($controller); + } elseif(is_array($controller)) { + $scripts = $controller; + } elseif(is_subclass_of($controller, 'SeedDMS_Controller_Common')) { + $scripts = array($controller->getParam('class')); + } else { + return false; + } + + if($this->user->isGuest()) { + $user_allowed = $this->legacy_access['guest']; + } else { + $user_allowed = $this->legacy_access['user']; + } + + if(array_intersect($scripts, $user_allowed)) + return true; + + return false; + } /* }}} */ + /** * Check for access permission on view * @@ -618,6 +648,8 @@ class SeedDMS_AccessOperation { */ function check_controller_access($controller, $get=array()) { /* {{{ */ if(!$this->settings->_advancedAcl) { + return $this->check_controller_legacy_access($controller, $get); + /* if($this->user->isGuest()) return false; elseif($this->user->isAdmin()) @@ -627,6 +659,7 @@ class SeedDMS_AccessOperation { return false; return true; } + */ } if(is_string($controller)) { $scripts = array($controller); diff --git a/inc/inc.ClassController.php b/inc/inc.ClassController.php index 1f264f5c7..f0dcddf19 100644 --- a/inc/inc.ClassController.php +++ b/inc/inc.ClassController.php @@ -30,7 +30,7 @@ class Controller { * @return object an object of a class implementing the view */ static function factory($class, $params=array()) { /* {{{ */ - global $settings, $session, $extMgr, $request; + global $settings, $session, $extMgr, $request, $logger; if(!$class) { return null; } @@ -59,6 +59,7 @@ class Controller { $controller->setParam('session', $session); $controller->setParam('request', $request); $controller->setParam('settings', $settings); + $controller->setParam('logger', $logger); return $controller; } return null; diff --git a/inc/inc.ClassConversionMgr.php b/inc/inc.ClassConversionMgr.php index b06430543..28e717c80 100644 --- a/inc/inc.ClassConversionMgr.php +++ b/inc/inc.ClassConversionMgr.php @@ -16,6 +16,7 @@ require_once("inc/inc.ClassConversionServiceImageToImage.php"); require_once("inc/inc.ClassConversionServiceImageToText.php"); require_once("inc/inc.ClassConversionServicePdfToImage.php"); require_once("inc/inc.ClassConversionServiceTextToText.php"); +require_once("inc/inc.ClassConversionServiceHtmlToText.php"); require_once("inc/inc.ClassConversionServiceTextToImage.php"); /** diff --git a/inc/inc.ClassConversionServiceHtmlToText.php b/inc/inc.ClassConversionServiceHtmlToText.php new file mode 100644 index 000000000..c9342e564 --- /dev/null +++ b/inc/inc.ClassConversionServiceHtmlToText.php @@ -0,0 +1,51 @@ + + * @copyright Copyright (C) 2021 Uwe Steinmann + * @version Release: @package_version@ + */ + +require_once("inc/inc.ClassConversionServiceBase.php"); + +/** + * Implementation of conversion service class for text to text + * + * @category DMS + * @package SeedDMS + * @author Uwe Steinmann + * @copyright Copyright (C) 2021 Uwe Steinmann + * @version Release: @package_version@ + */ +class SeedDMS_ConversionServiceHtmlToText extends SeedDMS_ConversionServiceBase { + public function __construct($from, $to) { + parent::__construct(); + $this->from = $from; + $this->to = $to; + } + + public function getInfo() { + return "Strip tags from document contents"; + } + + public function convert($infile, $target = null, $params = array()) { + $d = new DOMDocument; + $d->loadHTMLFile($infile); + $body = $d->getElementsByTagName('body')->item(0); + $str = ''; + foreach($body->childNodes as $childNode) { + $str .= $d->saveHTML($childNode); + } + if($target) { + file_put_contents($target, strip_tags($str)); + return true; + } else + return strip_tags($str); + } +} + diff --git a/inc/inc.ClassLdapAuthentication.php b/inc/inc.ClassLdapAuthentication.php index db9ae1449..99234bd98 100644 --- a/inc/inc.ClassLdapAuthentication.php +++ b/inc/inc.ClassLdapAuthentication.php @@ -29,15 +29,17 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { var $settings; protected function addUser($username, $info) { - return $this->dms->addUser($username, null, $info['cn'][0], isset($info['mail']) ? $info['mail'][0] : '', $this->settings->_language, $this->settings->_theme, "User was added from LDAP"); + $mailfield = !empty($settings->_ldapMailField) ? $settings->_ldapMailField : 'mail'; + return $this->dms->addUser($username, null, $info['cn'][0], isset($info[$mailfield]) ? $info[$mailfield][0] : '', $this->settings->_language, $this->settings->_theme, "User was added from LDAP"); } protected function updateUser($user, $info) { + $mailfield = !empty($settings->_ldapMailField) ? $settings->_ldapMailField : 'mail'; if(isset($info['cn'][0]) && ($info['cn'][0] != $user->getFullName())) { $user->setFullName($info['cn'][0]); } - if(isset($info['mail'][0]) && ($info['mail'][0] != $user->getEmail())) { - $user->setEmail($info['mail'][0]); + if(isset($info[$mailfield][0]) && ($info[$mailfield][0] != $user->getEmail())) { + $user->setEmail($info[$mailfield][0]); } } @@ -199,7 +201,7 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { if (!is_bool($info) && $info["count"]>0) { $dn = $info[0]['dn']; /* Set username to login name in case the email was used for authentication */ - $username = $info[0][$ldapSearchAttribut][0]; + $username = $info[0][strtolower($ldapSearchAttribut)][0]; } } } elseif(!empty($settings->_enableLoginByEmail)) { diff --git a/inc/inc.ClassNotificationService.php b/inc/inc.ClassNotificationService.php index 3bafe2d94..2fd9b22d0 100644 --- a/inc/inc.ClassNotificationService.php +++ b/inc/inc.ClassNotificationService.php @@ -914,7 +914,7 @@ class SeedDMS_NotificationService { // if user is not owner and owner not already in list of notifiers, then // send notification to owner if ($user->getID() != $document->getOwner()->getID() && - false === SeedDMS_Core_DMS::inList($document->getOwner(), $notifyList['users'])) { + false === SeedDMS_Core_DMS::inList($document->getOwner(), $nl['users'])) { $this->toIndividual($user, $document->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER); } } /* }}} */ @@ -948,7 +948,7 @@ class SeedDMS_NotificationService { } // if user is not owner send notification to owner if ($user->getID() != $folder->getOwner()->getID() && - false === SeedDMS_Core_DMS::inList($folder->getOwner(), $notifyList['users'])) { + false === SeedDMS_Core_DMS::inList($folder->getOwner(), $nl['users'])) { $this->toIndividual($user, $folder->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER); } } /* }}} */ diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 5583ce1c4..47100d663 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -150,6 +150,8 @@ class Settings { /* {{{ */ var $_defaultSearchMethod = 'database'; // or 'fulltext' // suggest search term var $_suggestTerms = array(); // or 'all', 'title' + // allowed batch operations on search result + var $_batchOperations = array(); // or 'all', 'change_owner', etc. // jump straight to the document if it is the only hit of a search var $_showSingleSearchHit = true; // contentOffsetDirTo @@ -291,10 +293,16 @@ class Settings { /* {{{ */ var $_enableExtensionImportFromRepository = true; // enable/disable display of the clipboard var $_enableClipboard = true; + // show always clipboard in main menu, even if empty + var $_alwaysShowClipboard = false; + // enable/disable list of transmittals in main menu + var $_enableMenuTransmittals = false; // enable/disable list of tasks in main menu var $_enableMenuTasks = true; // select which tasks show up in main menu var $_tasksInMenu = array(); + // show always tasks in main menu, even if none are due + var $_alwaysShowMenuTasks = true; // enable/disable list of files in drop folder var $_enableDropFolderList = false; // enable/disable display of the session list @@ -398,6 +406,8 @@ class Settings { /* {{{ */ // Name of the ldap field containing the groups of the user, e.g. memeberOf // This field must contain the DN of the groups var $_ldapGroupField = ""; + // Name of the ldap field containing the email of the user, e.g. mail, or mailprimaryaddress + var $_ldapMailField = ""; // Type of Ldap server: 0 = ldap; 1 = AD var $_ldapType = 1; // Additional filter when searching for the user. If not set, the user will be searched @@ -598,7 +608,10 @@ class Settings { /* {{{ */ $this->_enableUsersView = Settings::boolVal($tab["enableUsersView"]); $this->_enableSessionList = Settings::boolVal($tab["enableSessionList"]); $this->_enableClipboard = Settings::boolVal($tab["enableClipboard"]); + $this->_alwaysShowClipboard = Settings::boolVal($tab["alwaysShowClipboard"]); + $this->_enableMenuTransmittals = Settings::boolVal($tab["enableMenuTransmittals"]); $this->_enableMenuTasks = Settings::boolVal($tab["enableMenuTasks"]); + $this->_alwaysShowMenuTasks = Settings::boolVal($tab["alwaysShowMenuTasks"]); $this->_tasksInMenu = Settings::arrayVal($tab["tasksInMenu"]); $this->_enableDropFolderList = Settings::boolVal($tab["enableDropFolderList"]); $this->_enableDropUpload = Settings::boolVal($tab["enableDropUpload"]); @@ -616,6 +629,8 @@ class Settings { /* {{{ */ $this->_defaultSearchMethod = strval($tab["defaultSearchMethod"]); if(trim(strval($tab["suggestTerms"]))) $this->_suggestTerms = explode(',',strval($tab["suggestTerms"])); + if(trim(strval($tab["batchOperations"]))) + $this->_batchOperations = explode(',',strval($tab["batchOperations"])); $this->_showSingleSearchHit = Settings::boolVal($tab["showSingleSearchHit"]); $this->_stopWordsFile = strval($tab["stopWordsFile"]); $this->_sortUsersInList = strval($tab["sortUsersInList"]); @@ -734,6 +749,7 @@ class Settings { /* {{{ */ $this->_ldapType = 0; $this->_ldapFilter = strVal($connectorNode["filter"]); $this->_ldapGroupField = strVal($connectorNode["groupField"]); + $this->_ldapMailField = strVal($connectorNode["mailField"]); } else if ($params['enable'] && ($typeConn == "AD")) { @@ -746,6 +762,7 @@ class Settings { /* {{{ */ $this->_ldapFilter = strVal($connectorNode["filter"]); $this->_ldapAccountDomainName = strVal($connectorNode["accountDomainName"]); $this->_ldapGroupField = strVal($connectorNode["groupField"]); + $this->_ldapMailField = strVal($connectorNode["mailField"]); } } @@ -1018,7 +1035,10 @@ class Settings { /* {{{ */ $this->setXMLAttributValue($node, "enableUsersView", $this->_enableUsersView); $this->setXMLAttributValue($node, "enableSessionList", $this->_enableSessionList); $this->setXMLAttributValue($node, "enableClipboard", $this->_enableClipboard); + $this->setXMLAttributValue($node, "alwaysShowClipboard", $this->_alwaysShowClipboard); + $this->setXMLAttributValue($node, "enableMenuTransmittals", $this->_enableMenuTransmittals); $this->setXMLAttributValue($node, "enableMenuTasks", $this->_enableMenuTasks); + $this->setXMLAttributValue($node, "alwaysShowMenuTasks", $this->_alwaysShowMenuTasks); $this->setXMLAttributValue($node, "tasksInMenu", $this->_tasksInMenu); $this->setXMLAttributValue($node, "enableDropFolderList", $this->_enableDropFolderList); $this->setXMLAttributValue($node, "enableDropUpload", $this->_enableDropUpload); @@ -1035,6 +1055,7 @@ class Settings { /* {{{ */ $this->setXMLAttributValue($node, "fullSearchEngine", $this->_fullSearchEngine); $this->setXMLAttributValue($node, "defaultSearchMethod", $this->_defaultSearchMethod); $this->setXMLAttributValue($node, "suggestTerms", implode(',', $this->_suggestTerms)); + $this->setXMLAttributValue($node, "batchOperations", implode(',', $this->_batchOperations)); $this->setXMLAttributValue($node, "showSingleSearchHit", $this->_showSingleSearchHit); $this->setXMLAttributValue($node, "expandFolderTree", $this->_expandFolderTree); $this->setXMLAttributValue($node, "stopWordsFile", $this->_stopWordsFile); diff --git a/inc/inc.ClassUI.php b/inc/inc.ClassUI.php index b45318498..73b2e42c6 100644 --- a/inc/inc.ClassUI.php +++ b/inc/inc.ClassUI.php @@ -46,7 +46,7 @@ class UI extends UI_Default { * @return object an object of a class implementing the view */ static function factory($theme, $class='', $params=array()) { /* {{{ */ - global $settings, $dms, $user, $session, $extMgr, $request; + global $settings, $dms, $user, $session, $extMgr, $request, $logger; if(!$class) { $class = 'Bootstrap'; $class = 'Style'; @@ -135,6 +135,7 @@ class UI extends UI_Default { $view->setParam('class', $class); $view->setParam('session', $session); $view->setParam('request', $request); + $view->setParam('logger', $logger); // $view->setParam('settings', $settings); $view->setParam('sitename', $settings->_siteName); $view->setParam('rootfolderid', $settings->_rootFolderID); @@ -152,6 +153,7 @@ class UI extends UI_Default { $view->setParam('enablefoldertree', $settings->_enableFolderTree); $view->setParam('enablelanguageselector', $settings->_enableLanguageSelector); $view->setParam('enableclipboard', $settings->_enableClipboard); + $view->setParam('enablemenutransmittals', $settings->_enableMenuTransmittals); $view->setParam('enablemenutasks', $settings->_enableMenuTasks); $view->setParam('tasksinmenu', $settings->_tasksInMenu); $view->setParam('enabledropfolderlist', $settings->_enableDropFolderList); diff --git a/inc/inc.ConversionInit.php b/inc/inc.ConversionInit.php index 4c2c9e64e..67014251a 100644 --- a/inc/inc.ConversionInit.php +++ b/inc/inc.ConversionInit.php @@ -42,6 +42,10 @@ $conversionmgr->addService(new SeedDMS_ConversionServiceImageToText('image/jpeg' $conversionmgr->addService(new SeedDMS_ConversionServiceImageToText('image/jpg', 'text/plain'))->setLogger($logger); $conversionmgr->addService(new SeedDMS_ConversionServiceTextToText('text/plain', 'text/plain'))->setLogger($logger); +$conversionmgr->addService(new SeedDMS_ConversionServiceTextToText('text/markdown', 'text/plain'))->setLogger($logger); +$conversionmgr->addService(new SeedDMS_ConversionServiceTextToText('text/x-rst', 'text/plain'))->setLogger($logger); + +$conversionmgr->addService(new SeedDMS_ConversionServiceHtmlToText('text/html', 'text/plain'))->setLogger($logger); if(isset($GLOBALS['SEEDDMS_HOOKS']['initConversion'])) { foreach($GLOBALS['SEEDDMS_HOOKS']['initConversion'] as $hookObj) { diff --git a/install/create_tables-postgres.sql b/install/create_tables-postgres.sql index c7f70a6b6..0f5c96912 100644 --- a/install/create_tables-postgres.sql +++ b/install/create_tables-postgres.sql @@ -864,9 +864,9 @@ INSERT INTO "tblRoles" ("id", "name", "role") VALUES (2, 'Guest', 2); SELECT nextval('"tblRoles_id_seq"'); INSERT INTO "tblRoles" ("id", "name", "role") VALUES (3, 'User', 0); SELECT nextval('"tblRoles_id_seq"'); -INSERT INTO "tblUsers" VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', '', '', 'Administrator', 'info@seeddms.org', '', '', '', 1, 0, NULL, 0, 0, 0, NULL); +INSERT INTO "tblUsers" VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', '', 'Administrator', 'info@seeddms.org', '', '', '', 1, 0, NULL, 0, 0, NULL, 0, NULL); SELECT nextval('"tblUsers_id_seq"'); -INSERT INTO "tblUsers" VALUES (2, 'guest', NULL, '', '', '', 'Guest User', NULL, '', '', '', '', 2, 0, NULL, 0, 0, NULL, 0, NULL); +INSERT INTO "tblUsers" VALUES (2, 'guest', NULL, '', 'Guest User', NULL, '', '', '', 2, 0, NULL, 0, 0, NULL, 0, NULL); SELECT nextval('"tblUsers_id_seq"'); INSERT INTO "tblFolders" VALUES (1, 'DMS', 0, '', 'DMS root', extract(epoch from now()), 1, 0, 2, 0); SELECT nextval('"tblFolders_id_seq"'); diff --git a/install/create_tables-sqlite3.sql b/install/create_tables-sqlite3.sql index 3e8d6882e..522fb025c 100644 --- a/install/create_tables-sqlite3.sql +++ b/install/create_tables-sqlite3.sql @@ -870,7 +870,7 @@ CREATE TABLE `tblVersion` ( INSERT INTO `tblRoles` (`id`, `name`, `role`) VALUES (1, 'Admin', 1); INSERT INTO `tblRoles` (`id`, `name`, `role`) VALUES (2, 'Guest', 2); INSERT INTO `tblRoles` (`id`, `name`, `role`) VALUES (3, 'User', 0); -INSERT INTO `tblUsers` (`id`, `login`, `pwd`, `webauthn`, `secret`, `fullName`, `email`, `language`, `theme`, `comment`, `role`, `hidden`, `pwdExpiration`, `loginfailures`, `disabled`, `quota`, `homefolder`) VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', '', '', 'Administrator', 'info@seeddms.org', '', '', '', 1, 0, '', 0, 0, 0, NULL); -INSERT INTO `tblUsers` (`id`, `login`, `pwd`, `fullName`, `webauthn`, `secret`, `email`, `language`, `theme`, `comment`, `role`, `hidden`, `pwdExpiration`, `loginfailures`, `disabled`, `quota`, `homefolder`) VALUES (2, 'guest', NULL, '', '', 'Guest User', NULL, '', '', '', 2, 0, '', 0, 0, 0, NULL); +INSERT INTO `tblUsers` (`id`, `login`, `pwd`, `secret`, `fullName`, `email`, `language`, `theme`, `comment`, `role`, `hidden`, `pwdExpiration`, `loginfailures`, `disabled`, `quota`, `homefolder`) VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', '', 'Administrator', 'info@seeddms.org', '', '', '', 1, 0, '', 0, 0, 0, NULL); +INSERT INTO `tblUsers` (`id`, `login`, `pwd`, `secret`, `fullName`, `email`, `language`, `theme`, `comment`, `role`, `hidden`, `pwdExpiration`, `loginfailures`, `disabled`, `quota`, `homefolder`) VALUES (2, 'guest', NULL, '', 'Guest User', NULL, '', '', '', 2, 0, '', 0, 0, 0, NULL); INSERT INTO `tblFolders` (`id`, `name`, `parent`, `folderList`, `comment`, `date`, `owner`, `inheritAccess`, `defaultAccess`, `sequence`) VALUES (1, 'DMS', NULL, '', 'DMS root', strftime('%s','now'), 1, 0, 2, 0); INSERT INTO `tblVersion` VALUES (DATETIME(), 6, 1, 0); diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index 5ff7dfd9e..d7ae27e2b 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -214,9 +214,14 @@ URL: [url]', 'backup_log_management' => 'نسخ احتياطي/سجلات', 'backup_remove' => 'ازالة ملف النسخ الاحتياطي', 'backup_tools' => 'أدوات النسخ الاحتياطية', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -307,6 +312,8 @@ URL: [url]', 'comment_changed_email' => 'تعليق تغيير البريد الإلكتروني', 'comment_for_current_version' => 'تعليق على الاصدار', 'configure_extension' => 'تعديل', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'تعديل مسح المحفوظات', @@ -452,6 +459,7 @@ Parent folder: [folder_path] 'document_files' => '', 'document_has_no_workflow' => 'المستند لايحتوى مسار عمل', 'document_infos' => 'معلومات المستند', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => 'تم سحب المستند', @@ -954,6 +962,7 @@ URL: [url]', 'link_to_version' => 'رابط الإصدار', 'list_access_rights' => 'لائحة حقوق الدخول', 'list_contains_no_access_docs' => 'هذه الائحة لا تحتوي على مستندات للدخول', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'لائحة الدمج', 'list_notification_services' => '', @@ -1501,6 +1510,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => 'السماح بتغيير التطبيق في العملية', 'settings_allowReviewerOnly' => 'السماح بالمراجع فقط', 'settings_allowReviewerOnly_desc' => 'السماح بالمراجع فقط', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1517,6 +1530,8 @@ URL: [url]', 'settings_backupDir_desc' => 'backupDir', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'cacheDir', 'settings_cacheDir_desc' => 'cacheDir', 'settings_Calendar' => 'اعدادات التقويم', @@ -1643,6 +1658,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'تمكين مهام القائمة', 'settings_enableMenuTasks_desc' => 'تمكين مهام القائمة', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'تمكين تحميل متعدد', 'settings_enableMultiUpload_desc' => 'تمكين تحميل متعدد', 'settings_enableNotificationAppRev' => 'تمكيين اشعارات لمراجعة التطبيق', @@ -1995,6 +2012,7 @@ URL: [url]', 'splash_extension_import' => 'استيراد', 'splash_extension_refresh' => 'تحديث', 'splash_extension_upload' => 'تحميل', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'تحرير مجلد', 'splash_importfs' => 'استيراد', @@ -2186,6 +2204,7 @@ URL: [url]', 'transmittal' => 'الإحالة', 'transmittalitem_removed' => 'تم إزالة الإحالة', 'transmittalitem_updated' => 'تم تحديث الإحالة', +'transmittals' => '', 'transmittal_comment' => 'تعليق الإحالة', 'transmittal_name' => 'اسم الإحالة', 'transmittal_size' => 'حجم الإحالة', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 961112f13..f5933d90a 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -201,9 +201,14 @@ $text = array( 'backup_log_management' => 'Backup/Logging', 'backup_remove' => 'Изтрий бекъп', 'backup_tools' => 'Иструменти за бекъп', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -294,6 +299,8 @@ $text = array( 'comment_changed_email' => 'Коментарите са изменени', 'comment_for_current_version' => 'Коментар за версията', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -426,6 +433,7 @@ $text = array( 'document_files' => '', 'document_has_no_workflow' => 'Документът няма процес', 'document_infos' => 'Информация за документа', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => '', @@ -848,6 +856,7 @@ $text = array( 'link_to_version' => '', 'list_access_rights' => 'Списък на права', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', @@ -1343,6 +1352,10 @@ $text = array( 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1359,6 +1372,8 @@ $text = array( 'settings_backupDir_desc' => '', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Кеш папка', 'settings_cacheDir_desc' => 'къде се съхраняват превю картинките (най-добре да се избере папка която не е достъпна през web-server-а)', 'settings_Calendar' => 'Настройки календар', @@ -1485,6 +1500,8 @@ $text = array( 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => '', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => 'Разреши уведомление до рецензиращи/утвърждаващи', @@ -1837,6 +1854,7 @@ $text = array( 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => '', 'splash_importfs' => '', @@ -2019,6 +2037,7 @@ $text = array( 'transmittal' => '', 'transmittalitem_removed' => '', 'transmittalitem_updated' => '', +'transmittals' => '', 'transmittal_comment' => '', 'transmittal_name' => '', 'transmittal_size' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index c33ee21b2..f76aaedfc 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -206,9 +206,14 @@ URL: [url]', 'backup_log_management' => 'Còpia / Accés', 'backup_remove' => 'Eliminar fitxer de còpia de seguretat', 'backup_tools' => 'Eines de còpia de seguretat', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -299,6 +304,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Comentari de la versió actual', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -431,6 +438,7 @@ URL: [url]', 'document_files' => '', 'document_has_no_workflow' => '', 'document_infos' => 'Informacions', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => '', @@ -853,6 +861,7 @@ URL: [url]', 'link_to_version' => '', 'list_access_rights' => 'Llista tots els tipus d\'accés...', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', @@ -1348,6 +1357,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1364,6 +1377,8 @@ URL: [url]', 'settings_backupDir_desc' => '', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => '', 'settings_cacheDir_desc' => '', 'settings_Calendar' => '', @@ -1490,6 +1505,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => '', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => '', @@ -1842,6 +1859,7 @@ URL: [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => '', 'splash_importfs' => '', @@ -2024,6 +2042,7 @@ URL: [url]', 'transmittal' => '', 'transmittalitem_removed' => '', 'transmittalitem_updated' => '', +'transmittals' => '', 'transmittal_comment' => '', 'transmittal_name' => '', 'transmittal_size' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 3939231a3..9e8aec22b 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -226,9 +226,14 @@ URL: [url]', 'backup_log_management' => 'Záloha/Logování', 'backup_remove' => 'Odstranit soubor zálohy', 'backup_tools' => 'Nástroje pro zálohování', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -319,6 +324,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Komentář k aktuální verzi', 'configure_extension' => 'Konfigurovat rozšíření', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Chtěli byste vyčistit mezipaměť? Tím se odstraní všechny předběžně vygenerované náhledy.', @@ -471,6 +478,7 @@ Uživatel: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Dokument nemá workflow', 'document_infos' => 'Informace o dokumentu', +'document_in_revision_no_date' => '', '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.', @@ -985,6 +993,7 @@ URL: [url]', 'link_to_version' => 'Provázat k verzi', 'list_access_rights' => 'Seznam všech přístupových práv ...', 'list_contains_no_access_docs' => 'Seznam obsahuje více dokumentů, ke kterým nemáte přístup a které se nezobrazují.', +'list_conversion_overview' => '', 'list_conversion_services' => 'Služba', 'list_hooks' => 'Seznam hooks', 'list_notification_services' => '', @@ -1573,6 +1582,10 @@ Jméno: [username] 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => 'Nastavit pouze recenzenta', 'settings_allowReviewerOnly_desc' => 'Aktivujte, pokud má být nastaven pouze recenzent, ale žádný schvalovatel v tradičním režimu workflow.', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1589,6 +1602,8 @@ Jméno: [username] 'settings_backupDir_desc' => 'Adresář, kde zálohovací nástroj ukládá zálohy. Pokud tento adresář není nastaven nebo není k němu přístup, zálohy budou uloženy v adresáři obsahu.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Adresář mezipaměti', 'settings_cacheDir_desc' => 'Kde jsou uloženy náhledy obrázků (nejlepší zvolit adresář, který není přístupný přes webový server)', 'settings_Calendar' => 'Nastavení kalendáře', @@ -1715,6 +1730,8 @@ Jméno: [username] 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Povolit seznam úkolů v nabídce', 'settings_enableMenuTasks_desc' => 'Aktivovat / Zakázat položku nabídky, která obsahuje všechny úkoly pro uživatele. Obsahuje dokumenty, které musí být přezkoumány, schváleny atd.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Umožit nahrát více souborů', 'settings_enableMultiUpload_desc' => 'Při vytváření nového dokumentu lze nahrát více souborů. Každý vytvoří nový dokument.', 'settings_enableNotificationAppRev' => 'Povolit oznámení posuzovateli / schvalovateli', @@ -2067,6 +2084,7 @@ Jméno: [username] 'splash_extension_import' => 'Importováno rozšíření', 'splash_extension_refresh' => 'Aktualizovaný seznam rozšíření', 'splash_extension_upload' => 'Instalováno rozšíření', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Změny složky uloženy', 'splash_importfs' => 'Importováno [docs] dokumentů a [folders] složek', @@ -2258,6 +2276,7 @@ URL: [url]', 'transmittal' => 'Přenos', 'transmittalitem_removed' => 'Položka přenosu byla odstraněna', 'transmittalitem_updated' => 'Dokument byl aktualizován na nejnovější verzi', +'transmittals' => '', 'transmittal_comment' => 'Komentář', 'transmittal_name' => 'Název', 'transmittal_size' => 'Velikost', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 0fc4bd1ac..839fba5f5 100644 --- a/languages/de_DE/lang.inc +++ b/languages/de_DE/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (3356), dgrutsch (22) +// Translators: Admin (3381), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -141,7 +141,7 @@ URL: [url]

', 'approval_request_email_subject' => '[sitename]: [name] - Aufforderung zur Freigabe', 'approval_status' => 'Freigabestatus', 'approval_submit_email' => '', -'approval_submit_email_body' => 'Freigabe erteilt +'approval_submit_email_body' => 'Freigabe ausgeführt Dokument: [name] Version: [version] @@ -150,7 +150,7 @@ Status: [status] Kommentar: [comment] Benutzer: [username] URL: [url]', -'approval_submit_email_body_html' => '

Freigabe erteilt

+'approval_submit_email_body_html' => '

Freigabe ausgeführt

Dokument: [name]
Version: [version]
@@ -259,9 +259,14 @@ URL: [url]

', 'backup_log_management' => 'Backup/Logging', 'backup_remove' => 'Backup löschen', 'backup_tools' => 'Backup tools', +'batch_add_approver' => 'Freigeber hinzufügen', +'batch_add_approver_msg' => '[count] Dokumenten wurde der Freigeber \'[name]\' hinzugefügt.', 'batch_add_category_msg' => '[count] Dokumenten wurde die neue Kategorie \'[catname]\' hinzugefügt.', +'batch_add_reviewer' => 'Prüfer hinzufügen', +'batch_add_reviewer_msg' => '[count] Dokumenten wurde der Prüfer \'[name]\' hinzugefügt.', 'batch_change_category' => 'Kategorie ändern', 'batch_change_owner' => 'Besitzer ändern', +'batch_export' => 'Export', 'batch_new_owner_msg' => 'Der Besitzer von [count] Dokuments wurde geändert.', 'batch_operation' => 'Massenoperation', 'batch_operation_result' => 'Ergebnis der Massenoperation', @@ -352,7 +357,9 @@ URL: [url]

', 'comment_changed_email' => '', 'comment_for_current_version' => 'Kommentar zur aktuellen Version', 'configure_extension' => 'Erweiterung konfigurieren', -'confirm_change_category' => 'Bitte bestätigen Sie das Ändern der Kategorie für die ausgewählten Objekte.', +'confirm_add_approver' => 'Bitte bestätigen Sie das Hinzufügen eines Freigebers für die ausgewählten Dokumente.', +'confirm_add_reviewer' => 'Bitte bestätigen Sie das Hinzufügen eines Prüfers für die ausgewählten Dokumente.', +'confirm_change_category' => 'Bitte bestätigen Sie das Ändern der Kategorie für die ausgewählten Dokumente.', 'confirm_change_owner' => 'Bitte bestätigen Sie den Besitzerwechsel der ausgewählten Objekte.', 'confirm_clear_cache' => 'Wollen Sie wirklich den Cache löschen? Dies entfernt alle vorberechneten Vorschaubilder, Javascript und andere Dateien.', 'confirm_create_fulltext_index' => 'Ja, Ich möchte den Volltext-Index neu erzeugen!.', @@ -546,6 +553,7 @@ Benutzer: [username]

', 'document_files' => 'Dokumentenanhänge', 'document_has_no_workflow' => 'Dokument hat keinen Workflow', 'document_infos' => 'Informationen', +'document_in_revision_no_date' => 'Das Dokument ist zur Zeit in der Wiederholungsprüfung. Ein neues Datum kann erst nach Abschluss der Prüfung gesetzt werden.', '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.', @@ -1198,6 +1206,7 @@ URL: [url]

', 'link_to_version' => 'An Version hängen', 'list_access_rights' => 'Alle Zugriffsrechte auflisten ...', 'list_contains_no_access_docs' => 'Die Liste enthält weitere Dokumente auf die Sie keinen Zugriff haben und deshalb nicht angezeigt werden.', +'list_conversion_overview' => 'Vorhandene Mime-Types und Konvertierungsdienste', 'list_conversion_services' => 'Liste der Konvertierer', 'list_hooks' => 'Liste der interne Aufrufe', 'list_notification_services' => 'Liste der Benachrichtigungsdienste', @@ -1774,7 +1783,7 @@ Status: [status] Kommentar: [comment] Benutzer: [username] URL: [url]', -'revision_submit_email_body_html' => '

Erneute Freigabe erteilt

+'revision_submit_email_body_html' => '

Erneute Freigabe ausgeführt

Dokument: [name]
Version: [version]
@@ -1783,7 +1792,7 @@ Status: [status]
Kommentar: [comment]
Benutzer: [username]
URL: [url]

', -'revision_submit_email_subject' => '[sitename]: [name] - Erneute Freigabe erteilt', +'revision_submit_email_subject' => '[sitename]: [name] - Erneute Freigabe ausgeführt', 'revision_summary' => 'Übersicht Wiederholungsprüfungen', 'revisors' => 'Wiederholungsprüfer', 'revisor_already_assigned' => 'Benutzer bereits als Wiederholungsprüfer eingetragen.', @@ -1964,6 +1973,10 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'settings_allowChangeRevAppInProcess_desc' => 'Voreingestellt können Prüfer und Freigeber nicht mehr verändert werden, wenn eine Freigabe oder Prüfung ausgeführt wurde. Diese Option erlaubt es Administratoren auch nach der ersten Prüfung oder Freigabe die Prüfer und Freigeber zu verändern, bis das Dokument endgültig freigegeben oder abgelehnt ist.', 'settings_allowReviewerOnly' => 'Erlaube nur Prüfer zu setzen', 'settings_allowReviewerOnly_desc' => 'Anwählen, um zu erlauben, dass nur ein Prüfer aber kein Freigeber beim traditionellen Workflow gesetzt werden darf.', +'settings_alwaysShowClipboard' => 'Zwischenablage im Hauptmenü immer anzeigen', +'settings_alwaysShowClipboard_desc' => 'Zeigt den Eintrag für die Zwischenablage im Hauptmenü auch dann an, wenn die Zwischenablage leer ist', +'settings_alwaysShowMenuTasks' => 'Aufgaben im Hauptmenü immer anzeigen', +'settings_alwaysShowMenuTasks_desc' => 'Zeigt den Eintrag im Hauptmenü für die Aufgaben auch dann an, wenn keine Aufgaben anstehen.', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => 'Authentifizierungsschḻüssel für REST API', 'settings_apiKey_desc' => 'Dieser Schlüssel wird zur alternativen Authentifizierung in der REST API verwendet. Wählen Sie eine 32 Zeichen lange Zeichenkette.', @@ -1980,6 +1993,8 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'settings_backupDir_desc' => 'Verzeichnis in dem das Backup-Tool die Sicherungen ablegt. Wenn hier kein Wert gesetzt wird oder auf das Verzeichnis nicht zugriffen werden kann, dann werden die Sicherungen im Content-Verzeichnis abgelegt.', 'settings_baseUrl' => 'Basis URL', 'settings_baseUrl_desc' => 'Dies ist die URL des Servers ohne das HTTP Wurzelverzeichnis. In der Regel kann SeedDMS dies selbst bestimmen. Hinter einem Proxy gelingt dies aber nicht zuverlässig. Für diesen Fall können Sie die Basis URL hier setzen.', +'settings_batchOperations' => 'Erlaubte Massenoperationen', +'settings_batchOperations_desc' => 'Nur diese Massenoperationen auf ein Suchergebnis sind erlaubt. Mit Ausnahme des Exports muss zudem der angemeldete Benutzer Administrationsrechte haben.', 'settings_cacheDir' => 'Cache Verzeichnis', 'settings_cacheDir_desc' => 'Verzeichnis in dem Vorschaubilder abgelegt werden. Dies sollte ein Verzeichnis sein, auf das man über den Web-Browser keinen direkten Zugriff hat.', 'settings_Calendar' => 'Kalender-Einstellungen', @@ -2106,6 +2121,8 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'settings_enableLoginByEmail_desc' => 'Wenn eingeschaltet, dann ist auch die Anmeldung mit der E-Mail-Adresse möglich. Die Anmeldung mit dem Benutzername bleibt weiterhin möglich. Diese Einstellung wird möglicherweise nicht von allen Authentifizierungsmethoden berücksichtigt. Da die E-Mail nicht eindeutig ist, kann die Identifikation fehlschagen, auch wenn das Password aus Sicht des anmeldenen Benutzers korrekt ist.', 'settings_enableMenuTasks' => 'Aufgabenliste im Menü', 'settings_enableMenuTasks_desc' => 'Ein-/Ausschalten des Menüeintrags, der anstehenden Aufgaben des Benutzers enthält. Diese Liste beinhaltet Dokumente die geprüft, freigegeben, usw. werden müssen.', +'settings_enableMenuTransmittals' => 'Dokumentenlisten im Menü', +'settings_enableMenuTransmittals_desc' => 'Ein-/Ausschalten des Menüeintrags, der alle Dokumentenlisten des Benutzers enthält.', 'settings_enableMultiUpload' => 'Erlaube Hochladen mehrerer Dateien', 'settings_enableMultiUpload_desc' => 'Beim Erstellen eines neuen Dokuments können mehrere Dateien in einem Vorgang hochgeladen werden. Jede Datei erzeugt ein neues Dokument.', 'settings_enableNotificationAppRev' => 'Prűfer/Freigeber benachrichtigen', @@ -2458,6 +2475,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'splash_extension_import' => 'Erweiterung installiert', 'splash_extension_refresh' => 'Liste der Erweiterungen neu geladen', 'splash_extension_upload' => 'Erweiterung installiert', +'splash_folder_added' => 'Ordner hinzugefügt', 'splash_folder_deleted' => 'Ordner gelöscht', 'splash_folder_edited' => 'Änderungen am Ordner gespeichert', 'splash_importfs' => '[docs] Dokumente und [folders] Ordner importiert', @@ -2660,6 +2678,7 @@ URL: [url]

', 'transmittal' => 'Dokumentenliste', 'transmittalitem_removed' => 'Eintrag aus Dokumentenliste gelöscht', 'transmittalitem_updated' => 'Dokument auf neueste Version aktualisiert', +'transmittals' => 'Dokumentlisten', 'transmittal_comment' => 'Kommentar', 'transmittal_name' => 'Name', 'transmittal_size' => 'Größe', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index 0e643522b..c0f860bd0 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -201,9 +201,14 @@ $text = array( 'backup_log_management' => 'Αρχεία Εφεδρικά/Καταγραφής', 'backup_remove' => '', 'backup_tools' => 'Εργαλεία εφεδρικής καταγραφής', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -294,6 +299,8 @@ $text = array( 'comment_changed_email' => '', 'comment_for_current_version' => 'τρέχουσα έκδοση', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -426,6 +433,7 @@ $text = array( 'document_files' => '', 'document_has_no_workflow' => '', 'document_infos' => 'Πληροφορίες Εγγράφου', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => '', @@ -848,6 +856,7 @@ $text = array( 'link_to_version' => '', 'list_access_rights' => 'Εμφάνισε όλα τα δικαιώματα πρόσβασης', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', @@ -1354,6 +1363,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => '', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1370,6 +1383,8 @@ URL: [url]', 'settings_backupDir_desc' => '', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => '', 'settings_cacheDir_desc' => '', 'settings_Calendar' => '', @@ -1496,6 +1511,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => '', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => '', @@ -1848,6 +1865,7 @@ URL: [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => '', 'splash_importfs' => '', @@ -2030,6 +2048,7 @@ URL: [url]', 'transmittal' => '', 'transmittalitem_removed' => '', 'transmittalitem_updated' => '', +'transmittals' => '', 'transmittal_comment' => '', 'transmittal_name' => '', 'transmittal_size' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 8fd4f8d56..d009d034b 100644 --- a/languages/en_GB/lang.inc +++ b/languages/en_GB/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2460), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (2481), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -259,9 +259,14 @@ URL: [url]

', 'backup_log_management' => 'Backup/Logging', 'backup_remove' => 'Remove backup file', 'backup_tools' => 'Backup tools', +'batch_add_approver' => 'Add approver', +'batch_add_approver_msg' => 'Added approver \'[name]\' to [count] documents.', 'batch_add_category_msg' => 'Added a new category \'[catname]\' to [count] documents.', +'batch_add_reviewer' => 'Add reviewer', +'batch_add_reviewer_msg' => 'Added reviewer \'[name]\' to [count] documents.', 'batch_change_category' => 'Change category', 'batch_change_owner' => 'Change owner', +'batch_export' => 'Export', 'batch_new_owner_msg' => 'The owner of [count] documents has been changed.', 'batch_operation' => 'Batch operation', 'batch_operation_result' => 'Result of batch operation', @@ -352,7 +357,9 @@ URL: [url]

', 'comment_changed_email' => '', 'comment_for_current_version' => 'Version comment', 'configure_extension' => 'Configure extension', -'confirm_change_category' => 'Please confirm changing the category of the selected objects.', +'confirm_add_approver' => 'Please confirm adding the approver to the selected documents.', +'confirm_add_reviewer' => 'Please confirm adding the reviewer to the selected documents.', +'confirm_change_category' => 'Please confirm changing the category of the selected documents.', 'confirm_change_owner' => 'Please confirm changing the owner of the selected objects.', 'confirm_clear_cache' => 'Would you really like to clear the cache? This will remove all precalculated preview images, javascript and other files.', 'confirm_create_fulltext_index' => 'Yes, I would like to recreate the fulltext index!', @@ -546,6 +553,7 @@ User: [username]

', 'document_files' => 'Attachments', 'document_has_no_workflow' => 'Document has no workflow', 'document_infos' => 'Document Information', +'document_in_revision_no_date' => 'The document is currently in revision. A new revision date can be set when the revision was finished.', '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.', @@ -1162,7 +1170,7 @@ URL: [url]

', 'js_no_keywords' => 'Specify some keywords', 'js_no_login' => 'Please type in a username', 'js_no_name' => 'Please type in a name', -'js_no_override_status' => 'Please select the new [override] status', +'js_no_override_status' => 'Please select the new status', 'js_no_pwd' => 'You need to type in your password', 'js_no_query' => 'Type in a query', 'js_no_review_group' => 'Please select a review group', @@ -1198,6 +1206,7 @@ URL: [url]

', 'link_to_version' => 'Attach to version', 'list_access_rights' => 'List all access rights ...', 'list_contains_no_access_docs' => 'The list contains more documents you have no access to and are not displayed.', +'list_conversion_overview' => 'Existing mime types and conversion services', 'list_conversion_services' => 'List of conversion services', 'list_hooks' => 'List of hooks', 'list_notification_services' => 'List of notification services', @@ -1966,6 +1975,10 @@ If you did not receive a password, please use the password forgotten function on 'settings_allowChangeRevAppInProcess_desc' => 'By default the reviewers and approvers cannot be changed anymore once a review or approval has been submitted. This option will allow administrators to do this as long as the document is not released or rejected.', 'settings_allowReviewerOnly' => 'Allow to set reviewer only', 'settings_allowReviewerOnly_desc' => 'Enable this, if it shall be allow to set just a reviewer but no approver in traditional workflow mode.', +'settings_alwaysShowClipboard' => 'Always show clipboard in main menu', +'settings_alwaysShowClipboard_desc' => 'Show the entry for the clipboard in the main menu, even if the clipboard is empty.', +'settings_alwaysShowMenuTasks' => 'Always show tasks in main menu', +'settings_alwaysShowMenuTasks_desc' => 'Shows the menu item in the main menu for the tasks, even if there are no tasks due.', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => 'Authentification key for REST api', 'settings_apiKey_desc' => 'This key is used a alternative authentication for the REST api. Choose a 32 char long string.', @@ -1982,6 +1995,8 @@ If you did not receive a password, please use the password forgotten function on 'settings_backupDir_desc' => 'Directory where the backup tool saves backups. If this directory is not set or cannot be accessed, then the backups will be saved in the content directory.', 'settings_baseUrl' => 'Base URL', 'settings_baseUrl_desc' => 'This is the URL without the HTTP root dir. Usually, this is determined by SeedDMS. Behind a proxy this can fail and in this case set it manually.', +'settings_batchOperations' => 'Allowed batch operations', +'settings_batchOperations_desc' => 'Allow only these batch operations on a search result. Except for exporting, all other batch operations require admin rights.', 'settings_cacheDir' => 'Cache directory', 'settings_cacheDir_desc' => 'Where the preview images are stored (best to choose a directory that is not accessible through your web-server)', 'settings_Calendar' => 'Calendar settings', @@ -2108,6 +2123,8 @@ If you did not receive a password, please use the password forgotten function on 'settings_enableLoginByEmail_desc' => 'If enabled, the user maya also use the email address for login. This will not disable login with the username. This setting may not be regarded by all authentication methods. Because the email is not unique, authentication may fail, even if the user enters a right password.', 'settings_enableMenuTasks' => 'Enable task list in menu', 'settings_enableMenuTasks_desc' => 'Enable/Disable the menu item which contains all tasks for the user. This contains documents, that need to be reviewed, approved, etc.', +'settings_enableMenuTransmittals' => 'Enable transmittals in menu', +'settings_enableMenuTransmittals_desc' => 'Enable/Disable the menu item which contains all transmittals of the user.', 'settings_enableMultiUpload' => 'Allow upload of multiple files', 'settings_enableMultiUpload_desc' => 'When creating a new document, multiple files can be uploaded. Each will create a new document.', 'settings_enableNotificationAppRev' => 'Enable reviewer/approver notification', @@ -2460,6 +2477,7 @@ If you did not receive a password, please use the password forgotten function on 'splash_extension_import' => 'Extension installed', 'splash_extension_refresh' => 'Refreshed list of extensions', 'splash_extension_upload' => 'Extension installed', +'splash_folder_added' => 'Folder added', 'splash_folder_deleted' => 'Folder deleted', 'splash_folder_edited' => 'Save folder changes', 'splash_importfs' => 'Imported [docs] documents and [folders] folders', @@ -2662,6 +2680,7 @@ URL: [url]

', 'transmittal' => 'Transmittal', 'transmittalitem_removed' => 'Transmittal item removed', 'transmittalitem_updated' => 'Document updated to latest version', +'transmittals' => 'Transmittals', 'transmittal_comment' => 'Comment', 'transmittal_name' => 'Name', 'transmittal_size' => 'Size', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index fb870174e..0934f21e7 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: acabello (20), Admin (1354), angel (123), francisco (2), jaimem (14) +// Translators: acabello (20), Admin (1355), angel (123), francisco (2), jaimem (14) $text = array( '2_factor_auth' => 'Autenticación de doble factor', @@ -221,9 +221,14 @@ URL: [url]', 'backup_log_management' => 'Gestión log Backup', 'backup_remove' => 'Eliminar fichero de copia de seguridad', 'backup_tools' => 'Herramientas de copia de seguridad', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -314,6 +319,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Comentario de la versión actual', 'configure_extension' => 'Configurar extensión', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -465,6 +472,7 @@ Usuario: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Documento sin flujo de trabajo', 'document_infos' => 'Informaciones', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => '', @@ -933,7 +941,7 @@ URL: [url]', 'js_no_keywords' => 'Especifique palabras clave', 'js_no_login' => 'Por favor, escriba un nombre de usuario', 'js_no_name' => 'Por favor, escriba un nombre', -'js_no_override_status' => 'Por favor, seleccione el nuevo [override] estado', +'js_no_override_status' => 'Por favor, seleccione el nuevo estado', 'js_no_pwd' => 'Necesita escribir su contraseña', 'js_no_query' => 'Escriba una búsqueda', 'js_no_review_group' => 'Por favor, seleccione un grupo de revisión', @@ -969,6 +977,7 @@ URL: [url]', 'link_to_version' => '', 'list_access_rights' => 'Listar los derechos de acceso', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Mis bloques', 'list_notification_services' => '', @@ -1524,6 +1533,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => 'Por defecto, los revisores y aprobadores no se pueden cambiar una vez que se ha enviado una revisión o aprobación esta opción permitirá al administrador hacer esto mientras el documento no sea liberado o rechazado.', 'settings_allowReviewerOnly' => 'Permitir habilitar la función de Revisor para un usuario', 'settings_allowReviewerOnly_desc' => 'Habilite esto si se requiere permitir que un usuario sea lector o revisor sin capacidad de aprobar un documento en un proceso de workflow tradicional', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Módulo Reescritura', 'settings_apiKey' => 'Clave de autenticación para la API de descanso.', 'settings_apiKey_desc' => 'Esta clave se utiliza como autenticación alternativa para la API de descanso. Selecciona una cadena de 32 caracteres.', @@ -1540,6 +1553,8 @@ URL: [url]', 'settings_backupDir_desc' => 'Directorio donde la herramienta de respaldos guarda los respaldos. Si este directorio no se crea o no puede ser accedido, entonces los respaldos serán guardados en el directorio de contenido.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Carpeta caché', 'settings_cacheDir_desc' => 'Donde están archivadas las imágenes anteriores (mejor elegir una carpeta que no sea accesible a través de su servidor web)', 'settings_Calendar' => 'Configuración de calendario', @@ -1666,6 +1681,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Activar en el menú la lista de tareas', 'settings_enableMenuTasks_desc' => 'Habilita/Deshabillita la parte del menú que contiene todas las tareas para el usuario. Contiene documentos que necesitan ser revisados, aprobados, etc.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Permitir subir múltiples archivos', 'settings_enableMultiUpload_desc' => 'Cuando se crea un documento, es posible subir varios archivos a la vez. Cada uno creará un nuevo documento.', 'settings_enableNotificationAppRev' => 'Habilitar notificación a revisor/aprobador', @@ -2018,6 +2035,7 @@ URL: [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Cambios a la carpeta guardados', 'splash_importfs' => '', @@ -2209,6 +2227,7 @@ URL: [url]', 'transmittal' => '', 'transmittalitem_removed' => '', 'transmittalitem_updated' => '', +'transmittals' => '', 'transmittal_comment' => '', 'transmittal_name' => 'Nombre', 'transmittal_size' => 'Tamaño', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index f6eeea9b2..3a490dbfe 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1170), jeromerobert (50), lonnnew (9), Oudiceval (1171) +// Translators: Admin (1171), jeromerobert (50), lonnnew (9), Oudiceval (1171) $text = array( '2_factor_auth' => 'Authentification forte', @@ -250,9 +250,14 @@ URL : [url]

', 'backup_log_management' => 'Sauvegarde/Log', 'backup_remove' => 'Supprimer le fichier de sauvegarde', 'backup_tools' => 'Outils de sauvegarde', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -343,6 +348,8 @@ URL : [url]

', 'comment_changed_email' => 'Commentaire lors du changement d\'adresse mail', 'comment_for_current_version' => 'Commentaires pour la version actuelle', 'configure_extension' => 'Configurer l’extension', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Voulez-vous vraiment vider le cache ? Cela va effacer toutes les miniatures.', @@ -521,6 +528,7 @@ Utilisateur : [username]

', 'document_files' => 'Fichiers attachés', 'document_has_no_workflow' => 'Le document n\'a pas de workflow', 'document_infos' => 'Informations sur le document', +'document_in_revision_no_date' => '', 'document_is_checked_out' => 'Ce document est vérifié', 'document_is_checked_out_remove' => 'Le document est actuellement vérifié. Si vous supprimez le document, la version vérifiée ne pourra plus être ajoutée et restera dans la zone de vérification.', 'document_is_checked_out_update' => 'Le document est actuellement vérifié. Si vous ajoutez une nouvelle version, la version vérifiée ne pourra plus être vérifiée à nouveau.', @@ -1117,7 +1125,7 @@ URL : [url]

', 'js_no_keywords' => 'Spécifiez quelques mots-clés', 'js_no_login' => 'Veuillez saisir un identifiant', 'js_no_name' => 'Veuillez saisir un nom', -'js_no_override_status' => 'Veuillez sélectionner le nouveau statut [override]', +'js_no_override_status' => 'Veuillez sélectionner le nouveau statut', 'js_no_pwd' => 'Vous devez saisir votre mot de passe', 'js_no_query' => 'Saisir une requête', 'js_no_review_group' => 'Veuillez sélectionner un groupe d’examinateurs', @@ -1153,6 +1161,7 @@ URL : [url]

', 'link_to_version' => 'Version', 'list_access_rights' => 'Liste des droits d’accès…', 'list_contains_no_access_docs' => 'La liste contient des documents auxquels vous n’avez pas accès et qui ne sont donc pas affichés.', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Liste des appels internes', 'list_notification_services' => '', @@ -1911,6 +1920,10 @@ Nom : [username] 'settings_allowChangeRevAppInProcess_desc' => 'Par défaut, les réviseurs et les approbateurs ne peuvent plus être modifiés une fois la soumission d’un examen ou d’une approbation. Cette option permettra aux administrateurs de le faire tant que le document n’est pas publié ou rejeté.', 'settings_allowReviewerOnly' => 'Permettre d’affecter l’examinateur uniquement', 'settings_allowReviewerOnly_desc' => 'Activer cette option pour permettre d’affecter un examinateur mais pas d’approbateur dans le mode de Workflow traditionnel.', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => 'Clé d’authentification pour l’API REST', 'settings_apiKey_desc' => 'Cette clé est utilisée pour l’authentification alternative via l\'API REST. Utilisez une chaîne de 32 caractères.', @@ -1927,6 +1940,8 @@ Nom : [username] 'settings_backupDir_desc' => 'Répertoire dans lequel l’outil de sauvegarde stocke les sauvegardes. Si aucune valeur n’est définie ou si le répertoire n’est pas accessible, les sauvegardes seront stockées dans le répertoire de contenu.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Répertoire Cache', 'settings_cacheDir_desc' => 'Lieu de stockage des images de prévisualisation (choisir de préférence un dossier non accessible à travers le web-server)', 'settings_Calendar' => 'Paramètres de l\'agenda', @@ -2053,6 +2068,8 @@ Nom : [username] 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Activer le menu des tâches', 'settings_enableMenuTasks_desc' => 'Affiche un menu avec la liste des tâches. Cette liste contient les documents en attente d’une action par l’utilisateur.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Autoriser le dépôt de plusieurs fichiers', 'settings_enableMultiUpload_desc' => 'Lors de la création d’un document, autoriser le dépôt de plusieurs fichiers à la fois. Un nouveau document sera créé pour chaque fichier.', 'settings_enableNotificationAppRev' => 'Notification examinateur/approbateur', @@ -2405,6 +2422,7 @@ Nom : [username] 'splash_extension_import' => 'Extension installée', 'splash_extension_refresh' => 'Liste des extensions actualisée', 'splash_extension_upload' => 'Extension installée', +'splash_folder_added' => '', 'splash_folder_deleted' => 'Dossier supprimé', 'splash_folder_edited' => 'Dossier modifié', 'splash_importfs' => '[docs] documents et [folders] dossiers importés', @@ -2607,6 +2625,7 @@ URL : [url]

', 'transmittal' => 'Transmission', 'transmittalitem_removed' => 'Élément de la transmission supprimé', 'transmittalitem_updated' => 'Élément de la transmission mis à jour', +'transmittals' => '', 'transmittal_comment' => 'Commentaire', 'transmittal_name' => 'Nom', 'transmittal_size' => 'Taille', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 67cbd8826..67a010e70 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -226,9 +226,14 @@ Internet poveznica: [url]', 'backup_log_management' => 'Sigurnosna kopija / Bilježenje', 'backup_remove' => 'Ukloni datoteku sigurnosne kopije', 'backup_tools' => 'Alat za sigurnosnu kopiju', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -319,6 +324,8 @@ Internet poveznica: [url]', 'comment_changed_email' => 'Promjena komentara', 'comment_for_current_version' => 'Verzija komentara', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -464,6 +471,7 @@ Korisnik: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Dokument nema tok rada', 'document_infos' => 'Informacije o dokumentu', +'document_in_revision_no_date' => '', '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.', @@ -966,6 +974,7 @@ Internet poveznica: [url]', 'link_to_version' => '', 'list_access_rights' => 'Izlistaj sve dozvole pristupa', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Kuke za popise', 'list_notification_services' => '', @@ -1537,6 +1546,10 @@ Internet poveznica: [url]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Modul prepisa', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1553,6 +1566,8 @@ Internet poveznica: [url]', 'settings_backupDir_desc' => 'Mapa gdje alat za sigurnosne kopije sprema podatke. Ako ova mapa nije postavljena ili joj se ne može pristupiti, tada se sigurnosne kopije spremaju u mapu sadržaja.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Mapa predmemorije', 'settings_cacheDir_desc' => 'Gdje se spremaju slike pregleda (najbolje da odaberete mapu koja nije dostupna kroz vaš web-server)', 'settings_Calendar' => 'Postavke kalendara', @@ -1679,6 +1694,8 @@ Internet poveznica: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Omogućavanje liste zadataka u izborniku', 'settings_enableMenuTasks_desc' => 'Omogućavanje/onemogućavanje stavke izbornika koja sadrži sve zadatke za korisnika. Ovo sadrži dokumente koji trebaju biti revidirani, odobreni itd.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => '', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => 'Omogući bilježenje recezenta/validatora', @@ -2031,6 +2048,7 @@ Internet poveznica: [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Pohrani izmjene mape', 'splash_importfs' => '', @@ -2222,6 +2240,7 @@ Internet poveznica: [url]', 'transmittal' => 'Proslijeđivanje', 'transmittalitem_removed' => 'Stavka za proslijeđivanje je uklonjena', 'transmittalitem_updated' => 'Dokument izmijenjen na zadnju verziju', +'transmittals' => '', 'transmittal_comment' => 'Komentar', 'transmittal_name' => 'Naziv', 'transmittal_size' => 'Veličina', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index c34dcf2ee..4a1a9ee3d 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -221,9 +221,14 @@ URL: [url]', 'backup_log_management' => 'Mentés/Naplózás', 'backup_remove' => 'Mentési állomány eltávolítása', 'backup_tools' => 'Mentő eszközök', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -314,6 +319,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Megjegyzés az aktuális verzióhoz', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -459,6 +466,7 @@ Felhasználó: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Dokumentumhoz nincs munkafolyamat', 'document_infos' => 'Dokumentum információ', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => '', @@ -960,6 +968,7 @@ URL: [url]', 'link_to_version' => '', 'list_access_rights' => 'Összes jogosultság felsorolása...', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Hook lista', 'list_notification_services' => '', @@ -1514,6 +1523,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => 'Engedélyezi, hogy csak az ellenört állítsa be', 'settings_allowReviewerOnly_desc' => 'Ha ezt engedélyez, akkor lehetővé válik, hogy a hagyományos munkafolyamat módban csak ellenört állítson be, ne jóváhagyót.', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Rewrite modul', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1530,6 +1543,8 @@ URL: [url]', 'settings_backupDir_desc' => 'Könyvtár, ahol a biztonsági mentési eszköz mentéseket készít. Ha ez a könyvtár nincs beállítva vagy nem érhető el, akkor a biztonsági másolatot a tartalom könyvtárba menti.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Átmeneti állományok könyvtára', 'settings_cacheDir_desc' => 'Ahol az előnézeti képek tárolódnak (legjobb olyan könyvtárat választani, amit a web-kiszolgálón keresztül nem lehet elérni)', 'settings_Calendar' => 'Naptár beállítások', @@ -1656,6 +1671,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Feladatok menüpont engedélyezése', 'settings_enableMenuTasks_desc' => 'Engedélyezi / letiltja a menüelemet, amely a felhasználó összes feladatát tartalmazza. Ez olyan dokumentumokat tartalmaz, amelyeket felül kell vizsgálni, jóvá kell hagyni stb.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Több fájl feltöltésének engedélyezése', 'settings_enableMultiUpload_desc' => 'Új dokumentum létrehozásakor több fájl feltölthető. Mindegyik létrehoz egy új dokumentumot.', 'settings_enableNotificationAppRev' => 'A felülvizsgáló/jóváhagyó értesítés engedélyezése', @@ -2008,6 +2025,7 @@ URL: [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Mappa változásainak mentése', 'splash_importfs' => '', @@ -2199,6 +2217,7 @@ URL: [url]', 'transmittal' => '', 'transmittalitem_removed' => '', 'transmittalitem_updated' => '', +'transmittals' => '', 'transmittal_comment' => '', 'transmittal_name' => '', 'transmittal_size' => '', diff --git a/languages/id_ID/lang.inc b/languages/id_ID/lang.inc index 835f63cd3..031773441 100644 --- a/languages/id_ID/lang.inc +++ b/languages/id_ID/lang.inc @@ -230,9 +230,14 @@ URL: [url]

', 'backup_log_management' => 'Pencadangan/Logging', 'backup_remove' => 'Hapus berkas backup', 'backup_tools' => 'Alat cadangan', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -323,6 +328,8 @@ URL: [url]

', 'comment_changed_email' => '', 'comment_for_current_version' => 'Komentar versi', 'configure_extension' => 'Konfigurasi ekstensi', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -483,6 +490,7 @@ Pengguna: [username]', 'document_files' => 'Lampiran', 'document_has_no_workflow' => 'Dokumen tidak memiliki alur kerja', 'document_infos' => 'Informasi Dokumen', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => 'Dokumen sedang diperiksa. Jika Anda menghapus dokumen, versi check out tidak dapat ditambahkan lagi dan tetap berada di area checkout.', 'document_is_checked_out_update' => '', @@ -1044,6 +1052,7 @@ URL: [url]

', 'link_to_version' => 'Lampirkan ke versi', 'list_access_rights' => 'Daftar semua hak akses ...', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Daftar hooks', 'list_notification_services' => '', @@ -1604,6 +1613,10 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'settings_allowChangeRevAppInProcess_desc' => 'Secara default, peninjau dan pemberi persetujuan tidak dapat diubah lagi setelah tinjauan atau persetujuan telah dikirimkan. Opsi ini akan memungkinkan administrator untuk melakukan ini selama dokumen tidak dirilis atau ditolak.', 'settings_allowReviewerOnly' => 'Izinkan untuk menyetel pengulas saja', 'settings_allowReviewerOnly_desc' => 'Aktifkan ini, jika diizinkan untuk menetapkan hanya peninjau tetapi tidak ada pemberi persetujuan dalam mode alur kerja tradisional.', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Modul Rewrite', 'settings_apiKey' => 'Kunci otentikasi untuk rest api', 'settings_apiKey_desc' => 'Kunci ini digunakan sebagai otentikasi alternatif untuk rest api. Pilih panjang string 32 karakter.', @@ -1620,6 +1633,8 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'settings_backupDir_desc' => 'Direktori tempat alat pencadangan menyimpan cadangan. Jika direktori ini tidak disetel atau tidak dapat diakses, maka cadangan akan disimpan di direktori konten.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Direktori cache', 'settings_cacheDir_desc' => 'Di mana gambar pratinjau disimpan (paling baik memilih direktori yang tidak dapat diakses melalui server web Anda)', 'settings_Calendar' => 'Pengaturan kalender', @@ -1746,6 +1761,8 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Aktifkan daftar task di menu', 'settings_enableMenuTasks_desc' => '', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Izinkan mengunggah banyak berkas', 'settings_enableMultiUpload_desc' => 'Saat membuat dokumen baru, beberapa berkas dapat diunggah. Masing-masing akan membuat dokumen baru.', 'settings_enableNotificationAppRev' => 'Aktifkan pemberitahuan pengulas/pemberi persetujuan', @@ -2098,6 +2115,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'splash_extension_import' => 'Ekstensi terpasang', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => 'Folder dihapus', 'splash_folder_edited' => '', 'splash_importfs' => '', @@ -2280,6 +2298,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'transmittal' => 'Pengiriman', 'transmittalitem_removed' => 'Item pengiriman dihapus', 'transmittalitem_updated' => 'Perbarui dokumen ke versi terkini', +'transmittals' => '', 'transmittal_comment' => 'Komentar', 'transmittal_name' => 'Nama', 'transmittal_size' => 'Ukuran', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 43bcff083..e3fd4dbf9 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2072), rickr (144), s.pnt (26) +// Translators: Admin (2073), rickr (144), s.pnt (26) $text = array( '2_factor_auth' => 'Autorizzazione a due fattori', @@ -226,9 +226,14 @@ URL: [url]', 'backup_log_management' => 'Backup/Logging', 'backup_remove' => 'Elimina file di backup', 'backup_tools' => 'Strumenti di backup', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -319,6 +324,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Commento per la versione', 'configure_extension' => 'Configura estensione', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Vuoi davvero cancellare la cache? Questo eliminerà tutte le immagini di anteprima precalcolate.', @@ -464,6 +471,7 @@ Utente: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Il documento non ha un flusso di lavoro', 'document_infos' => 'Informazioni documento', +'document_in_revision_no_date' => '', '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', @@ -931,7 +939,7 @@ URL: [url]', 'js_no_keywords' => 'Specifica alcune parole-chiave', 'js_no_login' => 'Per favore digita un ID utente', 'js_no_name' => 'Per favore digita un nome', -'js_no_override_status' => 'È necessario selezionare un nuovo [override] stato', +'js_no_override_status' => 'È necessario selezionare un nuovo stato', 'js_no_pwd' => 'La password è necessaria', 'js_no_query' => 'Scrivi una query', 'js_no_review_group' => 'Per favore seleziona un gruppo di revisori', @@ -967,6 +975,7 @@ URL: [url]', 'link_to_version' => 'Collega alla versione', 'list_access_rights' => 'Elenca tutti i diritti di accesso...', 'list_contains_no_access_docs' => 'L\'elenco contiene più documenti ai quali non si ha accesso e non vengono visualizzati.', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Elenco hooks', 'list_notification_services' => '', @@ -1560,6 +1569,10 @@ Name: [username] 'settings_allowChangeRevAppInProcess_desc' => 'Per impostazione predefinita, i revisori e gli approvatori non possono più essere modificati dopo l\'invio di una revisione o di un\'approvazione. Questa opzione consentirà agli amministratori di farlo purché il documento non venga rilasciato o rifiutato.', '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_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Mod Rewrite', '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.', @@ -1576,6 +1589,8 @@ Name: [username] 'settings_backupDir_desc' => 'Directory in cui lo strumento di backup salva i backup. Se questa directory non è impostato o non è possibile accedervi, quindi i backup vengono salvati nella directory dei contenuti.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Cartella di cache', 'settings_cacheDir_desc' => 'Cartella in cui vengono conservate le immagini di anteprima, si consiglia di scegliere una cartella sul web-server che non sia direttamente accessibile.', 'settings_Calendar' => 'Impostazioni calendario', @@ -1702,6 +1717,8 @@ Name: [username] 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Abilita compito delle attività nel menù', 'settings_enableMenuTasks_desc' => 'Abilita/disabilita la voce di menu che contiene tutte le attività degli utenti. Questo conterrà i documenti che devono essere rivisti, approvati, etc.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Consenti il caricamento di più files', 'settings_enableMultiUpload_desc' => 'Quando viene creato un nuovo documento, possono essere caricati più files. Ogniuno di essi genera un nuovo documento.', 'settings_enableNotificationAppRev' => 'Abilita/disabilita notifica a revisore/approvatore', @@ -2054,6 +2071,7 @@ Name: [username] 'splash_extension_import' => 'Extensition installed', 'splash_extension_refresh' => 'Refreshed list of extensions', 'splash_extension_upload' => 'Extension installed', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Cartella modificata', 'splash_importfs' => 'Importati [Documenti] documenti e cartelle [cartelle]', @@ -2245,6 +2263,7 @@ URL: [url]', 'transmittal' => 'Trasmissione', 'transmittalitem_removed' => 'Oggetto trasmissione rimosso', 'transmittalitem_updated' => 'Documento aggiornato all\'ultima versione', +'transmittals' => '', 'transmittal_comment' => 'Commento', 'transmittal_name' => 'Nome', 'transmittal_size' => 'Dimensione', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index 215b1b78c..ccddc7c19 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -228,9 +228,14 @@ URL: [url]', 'backup_log_management' => '백업/로깅', 'backup_remove' => '백업 파일 제거', 'backup_tools' => '백업 도구', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -321,6 +326,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => '버전 주석', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -467,6 +474,7 @@ URL: [url]', 'document_files' => '', 'document_has_no_workflow' => '문서에 워크플로우가 없습니다', 'document_infos' => '문서 정보', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => '문서가 현재 체크아웃 되어 있습니다. 새 버전을 업로드하면 체크아웃된 버전은 더 이상 확인 할 수 없습니다.', @@ -967,6 +975,7 @@ URL: [url]', 'link_to_version' => '', 'list_access_rights' => '모든 접근 권한 나열', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', @@ -1531,6 +1540,10 @@ URL : [url]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => '아파치 - 모듈 다시 쓰기', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1547,6 +1560,8 @@ URL : [url]', 'settings_backupDir_desc' => '백업 도구가 백업을 저장할 디렉토리. 이 디렉토리가 설정되어 있지 않거나 액세스 할 수 없는 경우 백업은 컨텐츠 디렉토리에 저장 됩니다.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => '캐시 디렉토리', 'settings_cacheDir_desc' => '미리보기 이미지 에 저장된다.(웹 서버를 통해 액세스 할 수없는 디렉토리를 선택하는 것이 좋습니다)', 'settings_Calendar' => '캘린더 설정', @@ -1673,6 +1688,8 @@ URL : [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '메뉴의 작업 목록 허용', 'settings_enableMenuTasks_desc' => '사용자의 모든 작업이 포함되어있는 메뉴 항목을 활성/비활성 합니다. 이것은 검토, 승인등이 필요한 문서를 포함 합니다', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => '', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => '검토 / 승인 알림 사용', @@ -2025,6 +2042,7 @@ URL : [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => '저장 폴더 변경', 'splash_importfs' => '', @@ -2216,6 +2234,7 @@ URL : [url]', 'transmittal' => '전송', 'transmittalitem_removed' => '송부 항목 삭제', 'transmittalitem_updated' => '최신 버전으로 문서 업데이트', +'transmittals' => '', 'transmittal_comment' => '코멘트', 'transmittal_name' => '아름', 'transmittal_size' => '크기', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index 19e538e11..320d9969c 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -224,9 +224,14 @@ URL: [url]', 'backup_log_management' => 'ສຳຮອງ/ເຂົ້າສຸ່ລະບົບ', 'backup_remove' => 'ລົບຟາຍສຳຮອງ', 'backup_tools' => 'ເຄື່ອງມືສຳຮອງຂໍມູນ', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -317,6 +322,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'ຄວາມຄິດເຫັນກ່ຽວກັບເວີຊັ້ນ', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'ເຈົ້າຕ້ອງການລົບແຄຣຫຼືບໍ່? ການດຳເນີນການນີ້ຈະລົບພາບຕົວຢ່າງທັງໝົດທີມີການຄຳນວນລ່ວງໜ້າ', @@ -462,6 +469,7 @@ URL: [url]', 'document_files' => '', 'document_has_no_workflow' => 'ເອກະສານບໍ່ມີເວີກໂຟ', 'document_infos' => 'ຂໍ້ມູນເອກະສານ', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => 'ຂະນະນີ້ມີການກວດສອບເອກະສານ ຫາກເຈົ້າອັບໂຫລດເວີຊັນໄຫມ່ລະບົບຈະບໍ່ສາມາດກວດສອບລະບົບທີປິດອອກໄດ້ອີກຕໍ່ໄປ', @@ -964,6 +972,7 @@ URL: [url]', 'link_to_version' => 'ແນບໄປພ້ອມກັບເວີຊັນ', 'list_access_rights' => 'ສະແດງສິດທິການເຂົ້າເຖິງທັງໝົດ ...', 'list_contains_no_access_docs' => 'ລິດລາຍການປະກອບດ້ວຍເອກະສານເພີ່ມເຕີມທີ່ເຈົ້າບໍ່ສາມາດເຂົ້າເຖິງໄດ້ ແລະບໍ່ສະແດງ', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'ລາບການ hooks', 'list_notification_services' => '', @@ -1557,6 +1566,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'ອາປາເຊ -ຂຽນໄຫມ່', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1573,6 +1586,8 @@ URL: [url]', 'settings_backupDir_desc' => 'ໄດເລິກທໍລີ້ເຄື່ອງມືສຳຮອງຈະບັນທຶກຂໍ້ມູນສຳຮອງ ຖ້າບບໍ່ມີການຕັ້ງຄ່າໄດ້ເລັກທໍລີ້ນີ້ຫຼືບໍ່ສາມາດເຂົ້າເຖິງໄດ້ການສຳຮອງຂໍ້ມູນຈະໄດ້ຮັບການບັນທຶກເນື້ອຫາໄວ້ໃນໄດເລັກທໍລີ້', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'ແຄຣໄດ້ເລັກທໍລີ້', 'settings_cacheDir_desc' => 'ບ່ອນເກັບຮູບພາບຕົວຢ່າງໄວ້ ເລືອກໄດເລັກທໍລີທີບໍ່ສາມາດເຂົ້າເຖິງໄດ້ຈາກເວັບເຊີເວີຂອງເຈົ້າ', 'settings_Calendar' => 'ການຕັ້ງຄ່າປະຕິທິນ', @@ -1699,6 +1714,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'ເປີດການໄຊ້ງານ', 'settings_enableMenuTasks_desc' => 'ເປີດ/ປິດ ລາຍການເມນູທີ່ມີວຽກທັງໝົດສຳລັບຜູ້ໄຊ້ເອກະສານນີ້ມີເອກະສານທີຈ້ອງໄດ້ຮັບການກວດສອບ', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'ອະນຸຍາດໃຫ້ອັບໂຫລດໄຟລຫຼາຍໄຟລ', 'settings_enableMultiUpload_desc' => 'ເມື່ອສ້າງເອກະສານໄໝ່ເຈົ້າສາມາດອັບໂຫຼດໄຟລຫຼາຍໄຟລໄດ້, ເມື່ອຕ້ອງການທີຈະສ້າງເອກະສານໄຫມ່', 'settings_enableNotificationAppRev' => 'ເປີດໄຊ້ງານການແຈ້ງເຕືອນຜູ້ກວດກາ/ ຜູ້ອະນຸມັດ', @@ -2051,6 +2068,7 @@ URL: [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'ບັນທິກການປ່ຽນແປງໂຟລເດີ', 'splash_importfs' => 'ນຳເຂົ້າ [docs] ເອກະສານແລະໂຟລເດີ [folders]', @@ -2242,6 +2260,7 @@ URL: [url]', 'transmittal' => 'ການສົ່ງ', 'transmittalitem_removed' => 'ລົບລາຍການທີ່ສົງຜ່ານໄປແລ້ວ', 'transmittalitem_updated' => 'ອັບເດດເອກະສານເປັນເວີຊັ້ນລ້າສຸດ', +'transmittals' => '', 'transmittal_comment' => 'ຄຳຄິດເຫັນ', 'transmittal_name' => 'ຊື່', 'transmittal_size' => 'ຂະຫນາດ', diff --git a/languages/nb_NO/lang.inc b/languages/nb_NO/lang.inc index 312d534d9..6efad18c9 100644 --- a/languages/nb_NO/lang.inc +++ b/languages/nb_NO/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1744) +// Translators: Admin (1745) $text = array( '2_factor_auth' => '2-trinns autentisering', @@ -226,9 +226,14 @@ URL: [url]', 'backup_log_management' => 'Sikkerhetskopi logg', 'backup_remove' => 'Slette sikkerhetskopi', 'backup_tools' => 'Sikkerhetskopi-verktøy', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -319,6 +324,8 @@ URL: [url]', 'comment_changed_email' => 'Forandre e-post', 'comment_for_current_version' => 'Versjonskommentar', 'configure_extension' => 'Konfigurere utvidelse', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Vil du virkelig tømme hurtigbufferen? Dette vil fjerne alle forhåndsberegnede forhåndsbilder.', @@ -471,6 +478,7 @@ Bruker: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Dokumentet har ingen arbeidsflyt', 'document_infos' => 'Dokumentinformation', +'document_in_revision_no_date' => '', '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.', @@ -949,7 +957,7 @@ URL: [url]', 'js_no_keywords' => 'Spesifiser noen søkeord', 'js_no_login' => 'Skriv inn et brukernavn', 'js_no_name' => 'Skriv inn et navn', -'js_no_override_status' => 'Velg den nye [override] statusen', +'js_no_override_status' => 'Velg den nye statusen', 'js_no_pwd' => 'Du må skrive inn passordet ditt', 'js_no_query' => 'Skriv inn et spørsmål', 'js_no_review_group' => 'Velg en vurderingsgruppe', @@ -985,6 +993,7 @@ URL: [url]', 'link_to_version' => 'Vedlegg til versjonen', 'list_access_rights' => 'Liste over alle rettigheter...', 'list_contains_no_access_docs' => 'Listen inneholder flere dokumenter du ikke har tilgang til og ikke vises.', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Liste hooks', 'list_notification_services' => '', @@ -1570,6 +1579,10 @@ Bruker: [username] 'settings_allowChangeRevAppInProcess_desc' => 'Som standard kan ikke anmelderne og godkjennerne endres lenger når en gjennomgang eller godkjenning er sendt. Dette alternativet lar administratorer gjøre dette så lenge dokumentet ikke er utgitt eller avvist.', 'settings_allowReviewerOnly' => 'Tilat til å kun sette korrektur', 'settings_allowReviewerOnly_desc' => 'Aktiver dette hvis det skal være tillatt å stille en korrekturleser, men ingen godkjenner i tradisjonell arbeidsflytmodus.', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Omskriving av moduler', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1586,6 +1599,8 @@ Bruker: [username] 'settings_backupDir_desc' => 'Mappe der sikkerhetskopieringsverktøyet lagrer sikkerhetskopier. Hvis denne mappen ikke er angitt eller ikke kan nås, vil sikkerhetskopiene lagres i innholdskatalogen.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Cache-mappe', 'settings_cacheDir_desc' => 'Hvor forhåndsvisningsbildene er lagret (best å velge en mappe som ikke er tilgjengelig via webserveren)', 'settings_Calendar' => 'Kalender innstillinger', @@ -1712,6 +1727,8 @@ Bruker: [username] 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Aktiver oppgaveliste i menyen', 'settings_enableMenuTasks_desc' => 'Aktiver/deaktiver menypunktet som inneholder alle oppgaver for brukeren. Denne inneholder dokumenter som må gjennomgås, godkjennes osv.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Tillat opplasting av flere filer', 'settings_enableMultiUpload_desc' => 'Når du oppretter et nytt dokument, kan flere filer lastes opp. Hver fil vil lage et nytt dokument.', 'settings_enableNotificationAppRev' => 'Aktiver anmeldelse/godkjenningsvarsel', @@ -2064,6 +2081,7 @@ Bruker: [username] 'splash_extension_import' => 'Utvidelse installert', 'splash_extension_refresh' => 'Oppdaterte liste over utvidelser', 'splash_extension_upload' => 'Utvidelse installert', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Lagre mappe endringer', 'splash_importfs' => 'Importerte [docs] dokumenter og [folders] mapper', @@ -2255,6 +2273,7 @@ URL: [url]', 'transmittal' => 'Overføring', 'transmittalitem_removed' => 'Overførings element fjernet', 'transmittalitem_updated' => 'Dokument oppdatert til siste versjon', +'transmittals' => '', 'transmittal_comment' => 'Kommentar', 'transmittal_name' => 'Navn', 'transmittal_size' => 'Størrelse', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 3fdcb30fc..084a39eac 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1188), gijsbertush (673), pepijn (45), reinoutdijkstra@hotmail.com (270) +// Translators: Admin (1189), gijsbertush (673), pepijn (45), reinoutdijkstra@hotmail.com (270) $text = array( '2_factor_auth' => '2-factor-authenticatie', @@ -219,9 +219,14 @@ URL: [url]', 'backup_log_management' => 'Backup/loggen', 'backup_remove' => 'Verwijder backupbestand', 'backup_tools' => 'Backup-gereedschap', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -312,6 +317,8 @@ URL: [url]', 'comment_changed_email' => 'Gewijzigde email', 'comment_for_current_version' => 'Versie van het commentaar', 'configure_extension' => 'Configureer extensie', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Ja, ik wil de cache opschonen!', @@ -464,6 +471,7 @@ Gebruiker: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Document bevat geen workflow', 'document_infos' => 'Document-informatie', +'document_in_revision_no_date' => '', 'document_is_checked_out' => 'Document is uitgecheckt.', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => 'Document is uitgecheckt.', @@ -942,7 +950,7 @@ URL: [url]', 'js_no_keywords' => 'Specificeer een aantal sleutelwoorden', 'js_no_login' => 'Voer een Gebruikersnaam in', 'js_no_name' => 'Voer een naam in', -'js_no_override_status' => 'Selecteer de nieuwe [override] status', +'js_no_override_status' => 'Selecteer de nieuwe 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 beoordelaarsgroep', @@ -978,6 +986,7 @@ URL: [url]', 'link_to_version' => 'Bijlage(n) bij versie', 'list_access_rights' => 'Toegangsrechten', 'list_contains_no_access_docs' => 'Geen toegankelijke documenten', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Hooks', 'list_notification_services' => '', @@ -1569,6 +1578,10 @@ Name: [username] '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 reviewer, maar niet de goedkeurder toegewezen kan worden.', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', '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.', @@ -1585,6 +1598,8 @@ Name: [username] 'settings_backupDir_desc' => 'Instellingen vd backupmap', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'cache directory', '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', @@ -1711,6 +1726,8 @@ Name: [username] 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Menu-taken aanzetten', 'settings_enableMenuTasks_desc' => 'Menu-taken aanzetten', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Multi-upload', 'settings_enableMultiUpload_desc' => 'Bij multiupload kunnen tegelijkertijd verschillende bestanden worden geüpload. Ieder bestand wordt een nieuw document.', 'settings_enableNotificationAppRev' => 'Notificeren controleur/beoordeler', @@ -2063,6 +2080,7 @@ Name: [username] 'splash_extension_import' => 'Extensie geïnstalleerd', 'splash_extension_refresh' => 'Extensie vernieuwd', 'splash_extension_upload' => 'Extensie geüpload', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Opslaan mapwijzigingen', 'splash_importfs' => 'Geïmporteerd: [docs] documenten en [folders] mappen', @@ -2254,6 +2272,7 @@ URL: [url]', 'transmittal' => 'Verzending', 'transmittalitem_removed' => 'Verzonden item verwijderd', 'transmittalitem_updated' => 'Verzonden item geüpdate', +'transmittals' => '', 'transmittal_comment' => 'Commentaar bij verzending', 'transmittal_name' => 'Naam verzending', 'transmittal_size' => 'Omvang verzending', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 4359fdcbc..f81f3298f 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -214,9 +214,14 @@ URL: [url]', 'backup_log_management' => 'Backup/Logi', 'backup_remove' => 'Usuń plik backupu', 'backup_tools' => 'Narzędzia kopii zapasowej', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -307,6 +312,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Komentarz do wersji', 'configure_extension' => 'Konfiguruj rozszerzenie', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Czy naprawdę chcesz wyczyścić pamięć podręczną? Spowoduje to usunięcie wszystkich wstępnie obliczonych obrazów podglądu.', @@ -452,6 +459,7 @@ Użytkownik: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Dokument nie ma przypisanego procesu', 'document_infos' => 'Informacje o dokumencie', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => 'Ten dokument jest pobierany', @@ -954,6 +962,7 @@ URL: [url]', 'link_to_version' => 'Załącz do wersji', 'list_access_rights' => 'Pokaż uprawnienia dostępu', 'list_contains_no_access_docs' => 'Lista zawiera więcej dokumentów, do których nie masz dostępu i nie są wyświetlane.', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Lista błędów', 'list_notification_services' => '', @@ -1500,6 +1509,10 @@ Name: [username] 'settings_allowChangeRevAppInProcess_desc' => 'Domyślnie recenzenci i osoby zatwierdzające nie mogą być już zmieniane po przesłaniu recenzji lub zatwierdzenia. Ta opcja umożliwia administratorom to zrobić tak długo, jak długo dokument nie zostanie wydany lub odrzucony.', 'settings_allowReviewerOnly' => 'Zezwalaj tylko na ustawianie recenzenta', 'settings_allowReviewerOnly_desc' => 'Włącz to, jeśli będzie można zezwolić na ustawienie tylko recenzenta, ale bez osoby zatwierdzającej w tradycyjnym trybie przepływu pracy.', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Moduł Rewrite', 'settings_apiKey' => 'Klucz autentyfikacyjny dla REST API', 'settings_apiKey_desc' => 'Ten klucz jest używany jako alternatywna autentyfikacja dla REST API. Wybierz 32-znakowy łańcuch.', @@ -1516,6 +1529,8 @@ Name: [username] 'settings_backupDir_desc' => 'Katalog, w którym narzędzie do tworzenia kopii zapasowych zapisuje kopie zapasowe. Jeśli ten katalog nie jest ustawiony lub nie można uzyskać do niego dostępu, kopie zapasowe zostaną zapisane w katalogu zawartości.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Folder bufora', 'settings_cacheDir_desc' => 'Miejsce przechowywania obrazków podglądu (najlepiej wybrać katalog niedostępny bezpośrednio dla web-serwera).', 'settings_Calendar' => 'Ustawienia kalendarza', @@ -1642,6 +1657,8 @@ Name: [username] 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Włącz listę zadań w menu', 'settings_enableMenuTasks_desc' => 'Włącza/Wyłącza pozycję w menu w której znajdują się wszystkie zadania dla użytkownika. Zawiera dokumenty, które potrzebują być ocenione, zatwierdzone, itd.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Zezwól na wysyłanie wielu plików', 'settings_enableMultiUpload_desc' => 'Zezwolenie na wysyłanie wielu plików', 'settings_enableNotificationAppRev' => 'Włącz/Wyłącz powiadomienia dla zatwierdzających/recenzentów', @@ -1994,6 +2011,7 @@ Name: [username] 'splash_extension_import' => 'Rozszerzenie zainstalowane', 'splash_extension_refresh' => 'Odświeżona lista rozszerzeń', 'splash_extension_upload' => 'Rozszerzenie zainstalowane', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Zapisz zmiany folderu', 'splash_importfs' => 'Zaimportowane dokumenty [docs] i foldery [folders]', @@ -2185,6 +2203,7 @@ URL: [url]', 'transmittal' => 'Przekaz', 'transmittalitem_removed' => 'Przedmiot przekazu został usunięty', 'transmittalitem_updated' => 'Dokument zaktualizowano do najnowszej wersji', +'transmittals' => '', 'transmittal_comment' => 'Komentarz', 'transmittal_name' => 'Nazwa przekazu', 'transmittal_size' => 'Rozmiar przekazu', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 7656d5d86..aa48c8128 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -226,9 +226,14 @@ URL: [url]', 'backup_log_management' => 'Backup/Logs', 'backup_remove' => 'Remove backup file', 'backup_tools' => 'Ferramentas de backup', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -319,6 +324,8 @@ URL: [url]', 'comment_changed_email' => 'comentário alterado email', 'comment_for_current_version' => 'Comentário para versão atual', 'configure_extension' => 'Configurar extensão', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Você realmente gostaria de limpar o cache? Isso removerá todas as imagens de pré-visualização.', @@ -471,6 +478,7 @@ Usuário: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Documento não tem fluxo de trabalho', 'document_infos' => 'Informações', +'document_in_revision_no_date' => '', '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.', @@ -985,6 +993,7 @@ URL: [url]', 'link_to_version' => 'Anexar à versão', 'list_access_rights' => 'Listar todos os direitos de acesso...', 'list_contains_no_access_docs' => 'A lista contém mais documentos aos quais você não tem acesso e não são exibidos.', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Listar ganchos', 'list_notification_services' => '', @@ -1576,6 +1585,10 @@ Nome: [username] 'settings_allowChangeRevAppInProcess_desc' => 'Por padrão, os revisores e aprovadores não podem mais ser alterados depois que uma revisão ou aprovação for enviada. Essa opção permitirá que os administradores façam isso, desde que o documento não seja liberado ou rejeitado.', 'settings_allowReviewerOnly' => 'Permitir definir apenas o revisor', 'settings_allowReviewerOnly_desc' => 'Habilitar se for permitido definir apenas um revisor, mas nenhum aprovador no modo de fluxo de trabalho tradicional.', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Módulo Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1592,6 +1605,8 @@ Nome: [username] 'settings_backupDir_desc' => 'Diretório onde a ferramenta de backup salva backups. Se esse diretório não estiver definido ou não puder ser acessado, os backups serão salvos no diretório de conteúdo.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Diretório de cache', 'settings_cacheDir_desc' => 'Onde as imagens de visualização são armazenadas (melhor escolher um diretório que não é acessível através de seu web-server)', 'settings_Calendar' => 'Configurações do calendário', @@ -1718,6 +1733,8 @@ Nome: [username] 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Ativar lista de tarefas no menu', 'settings_enableMenuTasks_desc' => 'Ativar / desativar o item de menu que contém todas as tarefas do usuário. Contém documentos que precisam ser revisados, aprovados etc.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Permitir envio de vários arquivos', 'settings_enableMultiUpload_desc' => 'Ao criar um novo documento, vários arquivos podem ser enviados. Cada um criará um novo documento.', 'settings_enableNotificationAppRev' => 'Habilitar notificações revisor/aprovador', @@ -2070,6 +2087,7 @@ Nome: [username] 'splash_extension_import' => 'Extensão instalada', 'splash_extension_refresh' => 'Lista atualizada de extensões', 'splash_extension_upload' => 'Extensão instalada', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Salvar modificação de pastas', 'splash_importfs' => 'Documentos [docs] e pastas [folders] importados', @@ -2261,6 +2279,7 @@ URL: [url]', 'transmittal' => 'Transmissão', 'transmittalitem_removed' => 'Item de transmissão removido', 'transmittalitem_updated' => 'Documento atualizado para a versão mais recente', +'transmittals' => '', 'transmittal_comment' => 'Comentário', 'transmittal_name' => 'Nome', 'transmittal_size' => 'Tamanho', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index cbd7a1db0..f525cf9b0 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1118), balan (87) +// Translators: Admin (1119), balan (87) $text = array( '2_factor_auth' => '', @@ -226,9 +226,14 @@ URL: [url]', 'backup_log_management' => 'Backup/Logging', 'backup_remove' => 'Sterge fișier backup', 'backup_tools' => 'Backup tools', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -319,6 +324,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Comentariu versiune', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -464,6 +471,7 @@ Utilizator: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Documentul nu are workflow', 'document_infos' => 'Informații document', +'document_in_revision_no_date' => '', '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.', @@ -930,7 +938,7 @@ URL: [url]', 'js_no_keywords' => 'Specificați câteva cuvinte cheie', 'js_no_login' => 'Vă rugăm să introduceți un username', 'js_no_name' => 'Vă rugăm să introduceți un nume', -'js_no_override_status' => 'Vă rugăm să selectați nou status [override]', +'js_no_override_status' => 'Vă rugăm să selectați nou status', 'js_no_pwd' => 'Trebuie să introduceți parola dumneavoastră', 'js_no_query' => 'Introduceți o interogare', 'js_no_review_group' => 'Vă rugăm să selectați un grup pentru revizuire', @@ -966,6 +974,7 @@ URL: [url]', 'link_to_version' => '', 'list_access_rights' => 'Listeaza toate drepturile de acces', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', @@ -1538,6 +1547,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1554,6 +1567,8 @@ URL: [url]', 'settings_backupDir_desc' => '', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Director Cache', 'settings_cacheDir_desc' => 'Unde sunt stocate imaginile de previzualizare (este recomandat sa alegeti un director care nu este accesibil prin intermediul web-server-ului dumneavoastră)', 'settings_Calendar' => 'Setări calendar', @@ -1680,6 +1695,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => '', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => 'Activare notificari rezuitor/aprobator', @@ -2032,6 +2049,7 @@ URL: [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Salvați modificările folderului', 'splash_importfs' => '', @@ -2223,6 +2241,7 @@ URL: [url]', 'transmittal' => '', 'transmittalitem_removed' => '', 'transmittalitem_updated' => '', +'transmittals' => '', 'transmittal_comment' => 'Comentariu', 'transmittal_name' => 'Nume', 'transmittal_size' => '', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 8a681ecc3..184d0bd21 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -226,9 +226,14 @@ URL: [url]', 'backup_log_management' => 'Резервные копии и журналы', 'backup_remove' => 'Удалить резервную копию', 'backup_tools' => 'Резервные копии', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -319,6 +324,8 @@ URL: [url]', 'comment_changed_email' => 'Сообщение об изменении комментария', 'comment_for_current_version' => 'Комментарий версии', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Подтвердить очистку кеша', @@ -464,6 +471,7 @@ URL: [url]', 'document_files' => '', 'document_has_no_workflow' => 'Для документа не назначен процесс', 'document_infos' => 'Информация о документе', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => 'Документ в настоящее время проверяется. Если вы загрузить новую версию, то проверяемая версия не может быть возвращена обратно.', @@ -966,6 +974,7 @@ URL: [url]', 'link_to_version' => '', 'list_access_rights' => 'Показать все права доступа', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Список хуков', 'list_notification_services' => '', @@ -1545,6 +1554,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache — модуль Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1561,6 +1574,8 @@ URL: [url]', 'settings_backupDir_desc' => 'Каталог, в котором средство резервного копирования сохраняет резервные копии. Если этот каталог не установлен или в него отсутствует доступ, то резервные копии будут сохранены в каталоге содержимого.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Каталог кэша', 'settings_cacheDir_desc' => 'Где хранятся эскизы изображений (лучше выбрать каталог недоступный веб-серверу).', 'settings_Calendar' => 'Настройки календаря', @@ -1687,6 +1702,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Включить список задач в меню', 'settings_enableMenuTasks_desc' => 'Включить/отключить пункт меню, который содержит все задачи пользователя. Там содержатся документы, которые нуждаются в рецензии, утверждении и т.д.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Разрешить загрузку нескольких файлов', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => 'Извещать рецензента или утверждающего', @@ -2039,6 +2056,7 @@ URL: [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Изменения каталога сохранены', 'splash_importfs' => '', @@ -2230,6 +2248,7 @@ URL: [url]', 'transmittal' => 'Передача', 'transmittalitem_removed' => 'Переданный элемент удален', 'transmittalitem_updated' => 'Переданный элемент обновлен', +'transmittals' => '', 'transmittal_comment' => 'Комментарий', 'transmittal_name' => 'Имя', 'transmittal_size' => 'Размер', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index dbbd91a72..33d0db9ac 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -226,9 +226,14 @@ URL: [url]', 'backup_log_management' => 'Zálohovanie/Log-y', 'backup_remove' => 'Odstrániť zálohu', 'backup_tools' => 'Zálohovacie nástroje', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -319,6 +324,8 @@ URL: [url]', 'comment_changed_email' => 'Nepreložené', 'comment_for_current_version' => 'Version comment', 'configure_extension' => 'Configure extension', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Chcete naozaj vyčistiť vyrovnávaciu pamäť? Tým sa odstránia všetky predbežne náhľady obrázkov.', @@ -471,6 +478,7 @@ Používateľ: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Dokument nemá pracovný postup', 'document_infos' => 'Informácie o dokumente', +'document_in_revision_no_date' => '', '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.', @@ -985,6 +993,7 @@ URL: [url]', 'link_to_version' => 'Pripojiť k verzii', 'list_access_rights' => 'Zobraziť všetky prístupové práva', 'list_contains_no_access_docs' => 'Zoznam obsahuje viac dokumentov, ku ktorým nemáte prístup a nie sú zobrazené.', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'List hooks', 'list_notification_services' => '', @@ -1578,6 +1587,10 @@ Meno: [username] 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => 'Allow to set reviewer only', 'settings_allowReviewerOnly_desc' => 'Enable this, if it shall be allow to set just a reviewer but no approver in traditional workflow mode.', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Modul Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1594,6 +1607,8 @@ Meno: [username] 'settings_backupDir_desc' => 'Directory where the backup tool saves backups. If this directory is not set or cannot be accessed, then the backups will be saved in the content directory.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Zložka medzipamäte', 'settings_cacheDir_desc' => 'Where the preview images are stored (best to choose a directory that is not accessible through your web-server)', 'settings_Calendar' => 'Nastavenie kalendára', @@ -1720,6 +1735,8 @@ Meno: [username] 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Enable task list in menu', 'settings_enableMenuTasks_desc' => 'Enable/Disable the menu item which contains all tasks for the user. This contains documents, that need to be reviewed, approved, etc.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Povoliť nahrať viacero súborov', 'settings_enableMultiUpload_desc' => 'When creating a new document, multiple files can be uploaded. Each will create a new document.', 'settings_enableNotificationAppRev' => 'Enable reviewer/approver notification', @@ -2072,6 +2089,7 @@ Meno: [username] 'splash_extension_import' => 'Extensition installed', 'splash_extension_refresh' => 'Refreshed list of extensions', 'splash_extension_upload' => 'Extension installed', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Uložiť zmeny zložky', 'splash_importfs' => 'Importované dokumenty [docs] a zložky [folders]', @@ -2263,6 +2281,7 @@ URL: [url]', 'transmittal' => 'Transmittal', 'transmittalitem_removed' => 'Transmittal item removed', 'transmittalitem_updated' => 'Dokument bol aktualizovaný na najnovšiu verziu', +'transmittals' => '', 'transmittal_comment' => 'Komentár', 'transmittal_name' => 'Názov', 'transmittal_size' => 'Veľkosť', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index f94edefa8..60ddfdf5e 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1177), MagnusI (649), tmichelfelder (106) +// Translators: Admin (1178), MagnusI (649), tmichelfelder (106) $text = array( '2_factor_auth' => '2-faktors autentisering', @@ -227,9 +227,14 @@ URL: [url]', 'backup_log_management' => 'Backup/Loggning', 'backup_remove' => 'Ta bort backup-fil', 'backup_tools' => 'Backup-verktyg', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -320,6 +325,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Kommentar till versionen', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Vill du verkligen rensa cachen? Detta kommer att ta bort alla förlagrade bilder för förhandsvisning.', @@ -465,6 +472,7 @@ Användare: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Dokumentet saknar arbetsflöde', 'document_infos' => 'Dokumentinformation', +'document_in_revision_no_date' => '', '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.', @@ -936,7 +944,7 @@ URL: [url]', 'js_no_keywords' => 'Skriv några nyckelord', 'js_no_login' => 'Skriv ett användarnamn', 'js_no_name' => 'Skriv ett namn', -'js_no_override_status' => 'Välj ny [override] status', +'js_no_override_status' => 'Välj ny status', 'js_no_pwd' => 'Du måste ange ditt lösenord', 'js_no_query' => 'Skriv en fråga', 'js_no_review_group' => 'Välj en grupp som ska utföra granskningen', @@ -972,6 +980,7 @@ URL: [url]', 'link_to_version' => 'Kopppla till version', 'list_access_rights' => 'Lista alla rättigheter...', 'list_contains_no_access_docs' => 'Listan innehåller fler dokument som inte visas då du saknar rättigheter till dessa.', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => 'Lista hooks', 'list_notification_services' => '', @@ -1551,6 +1560,10 @@ Kommentar: [comment]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1567,6 +1580,8 @@ Kommentar: [comment]', 'settings_backupDir_desc' => 'Sökväg till katalogen dit backupverktyget skriver backuper. Om sökväg saknas eller åtkomst inte medges, skrivs backuper till dokumentkatalogen.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Cache-mapp', 'settings_cacheDir_desc' => 'Här kommer bilder för förhandsvisning att sparas. (Det är bäst att använda en mapp som inte är tillgänglig från webbservern)', 'settings_Calendar' => 'Kalenderinställningar', @@ -1693,6 +1708,8 @@ Kommentar: [comment]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Aktivera uppgiftslista i menyn', 'settings_enableMenuTasks_desc' => 'Aktiverar ett menyobjekt som visar användarens uppgifter, såsom dokument som behöver granskas eller godkännas.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => 'Tillåt uppladdning av multipla filer', 'settings_enableMultiUpload_desc' => 'Ger möjlighet att ladda upp flera filer parallellt. Varje uppladdad fil skapar ett nytt dokument.', 'settings_enableNotificationAppRev' => 'Aktivera meddelande till personer som granskar/godkänner', @@ -2045,6 +2062,7 @@ Kommentar: [comment]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Spara ändringar i katalog', 'splash_importfs' => 'Importerade [docs] dokument och [folders] kataloger', @@ -2236,6 +2254,7 @@ URL: [url]', 'transmittal' => 'Meddelande', 'transmittalitem_removed' => 'Komponent i meddelande borttaget', 'transmittalitem_updated' => 'Dokument uppdaterat till senaste version', +'transmittals' => '', 'transmittal_comment' => 'Kommentar', 'transmittal_name' => 'Namn', 'transmittal_size' => 'Storlek', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 585880fcb..7b6123467 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1141), aydin (83) +// Translators: Admin (1142), aydin (83) $text = array( '2_factor_auth' => 'İki faktörlü yetkilendirme', @@ -221,9 +221,14 @@ URL: [url]', 'backup_log_management' => 'Yedekleme/Loglama', 'backup_remove' => 'Yedek dosyasını sil', 'backup_tools' => 'Yedekleme araçları', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -314,6 +319,8 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Versiyon açıklaması', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -458,6 +465,7 @@ Kullanıcı: [username]', 'document_files' => '', 'document_has_no_workflow' => 'Dokümanın iş akışı yok', 'document_infos' => 'Doküman Bilgisi', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => '', @@ -922,7 +930,7 @@ URL: [url]', 'js_no_keywords' => 'Anahtar kelime belirleyiniz', 'js_no_login' => 'Lütfen kullanıcı adı yazınız', 'js_no_name' => 'Lütfen isim yazınız', -'js_no_override_status' => 'Lütfen yeni [override] durumu seçiniz', +'js_no_override_status' => 'Lütfen yeni durumu seçiniz', 'js_no_pwd' => 'Parolanızı girmeniz gerekiyor', 'js_no_query' => 'Bir sorgu yazınız', 'js_no_review_group' => 'Lütfen kontrol grubu seçiniz', @@ -958,6 +966,7 @@ URL: [url]', 'link_to_version' => '', 'list_access_rights' => 'Tüm erişim haklarini listele', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', @@ -1515,6 +1524,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1531,6 +1544,8 @@ URL: [url]', 'settings_backupDir_desc' => '', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Cache klasörü', 'settings_cacheDir_desc' => 'Önizleme resimlerinin depolanacağı yer (web üzerinden erişilemeyen bir yer tercih etmeniz önerilir.)', 'settings_Calendar' => 'Takvim ayarları', @@ -1657,6 +1672,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => '', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => 'Kontrol eden/onaylayan bildirimlerini etkinleştir', @@ -2009,6 +2026,7 @@ URL: [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Klasör değişiklikleri kaydedildi', 'splash_importfs' => '', @@ -2200,6 +2218,7 @@ URL: [url]', 'transmittal' => '', 'transmittalitem_removed' => '', 'transmittalitem_updated' => '', +'transmittals' => '', 'transmittal_comment' => '', 'transmittal_name' => '', 'transmittal_size' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 64ac8fe84..b1c7f664b 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -226,9 +226,14 @@ URL: [url]', 'backup_log_management' => 'Резервні копії і журнали', 'backup_remove' => 'Видалити резервну копію', 'backup_tools' => 'Резервні копії', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -319,6 +324,8 @@ URL: [url]', 'comment_changed_email' => 'Повідомлення про зміну коментаря', 'comment_for_current_version' => 'Коментар версії', 'configure_extension' => '', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', @@ -464,6 +471,7 @@ URL: [url]', 'document_files' => '', 'document_has_no_workflow' => 'Документові не призначено процес', 'document_infos' => 'Інформація про документ', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => 'Документ на опрацюванні', @@ -965,6 +973,7 @@ URL: [url]', 'link_to_version' => '', 'list_access_rights' => 'Повний список прав...', 'list_contains_no_access_docs' => '', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', @@ -1537,6 +1546,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => '', 'settings_allowReviewerOnly' => '', 'settings_allowReviewerOnly_desc' => '', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache — модуль Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1553,6 +1566,8 @@ URL: [url]', 'settings_backupDir_desc' => 'Каталог, в якому інструмент резервного копіювання зберігає резервні копії. Якщо цей каталог не встановлений або до нього не має доступу, то резервні копії будуть збережені в каталозі вмісту.', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Каталог кешу', 'settings_cacheDir_desc' => 'Де зберігаються ескізи зображень (краще вибрати каталог, недоступний веб-серверові).', 'settings_Calendar' => 'Налаштування календаря', @@ -1679,6 +1694,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Включити список завдань в меню', 'settings_enableMenuTasks_desc' => 'Включити/відключити пункт меню, який містить всі завдання користувача. Там містяться документи, які потребують рецензії, затвердження і т.ін.', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => '', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => 'Сповіщати рецензента і затверджувача', @@ -2031,6 +2048,7 @@ URL: [url]', 'splash_extension_import' => '', 'splash_extension_refresh' => '', 'splash_extension_upload' => '', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => 'Зміни каталогу збережено', 'splash_importfs' => '', @@ -2222,6 +2240,7 @@ URL: [url]', 'transmittal' => 'Передача', 'transmittalitem_removed' => 'Переданий елемент видалено', 'transmittalitem_updated' => 'Переданий елемент оновлено', +'transmittals' => '', 'transmittal_comment' => 'Коментар', 'transmittal_name' => 'Назва', 'transmittal_size' => 'Розмір', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 669e92561..f30e33587 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -218,9 +218,14 @@ URL: [url]', 'backup_log_management' => '备份/日志', 'backup_remove' => '删除备份', 'backup_tools' => '备份工具', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -311,6 +316,8 @@ URL: [url]', 'comment_changed_email' => '评论更新', 'comment_for_current_version' => '版本说明', 'configure_extension' => '配置扩展', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '确认清除缓存吗?这将删除所有预先计算的预览图像。', @@ -458,6 +465,7 @@ URL: [url]', 'document_files' => '', 'document_has_no_workflow' => '文档未配置工作流', 'document_infos' => '文档信息', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '文档已签出。如上传了新版本,则已签出的版本则不能再被签回。', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => '文档已签出。如上传了新版本,则已签出的版本则不能再被签回。', @@ -968,6 +976,7 @@ URL: [url]', 'link_to_version' => '附加到版本', 'list_access_rights' => '列出所有的访问权限', 'list_contains_no_access_docs' => '这个列表包含了更多你无法访问的文件也没有显示出来。', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => '钩子列表', 'list_notification_services' => '', @@ -1525,6 +1534,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => '默认情况下,已提交审核或审核人员和审批人有批准就不能再更改。', 'settings_allowReviewerOnly' => '允许只设置审阅者', 'settings_allowReviewerOnly_desc' => '在传统的工作流程模式中,只允许设置审批人而不允许设置审批人则启用此功能。', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache -模块重写', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1541,6 +1554,8 @@ URL: [url]', 'settings_backupDir_desc' => '备份保存的目录。如果该目录未设置或无法访问则备份将保存在内容目录中。', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => 'Cashe 缓存目录', 'settings_cacheDir_desc' => '预览图像存储的位置(最好选择一个无法通过网络服务器访问的目录)', 'settings_Calendar' => '日历设置', @@ -1667,6 +1682,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '在菜单中启用任务列表', 'settings_enableMenuTasks_desc' => '启用/禁用包含用户所有任务的菜单项。其中包含需要审核、批准的文件等。', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => '允许一次性上传多个文件', 'settings_enableMultiUpload_desc' => '当创建新文档时可以上传多个文件。每个上传的文件都将创建一个新文档。', 'settings_enableNotificationAppRev' => '启用校对/审核通知', @@ -2019,6 +2036,7 @@ URL: [url]', 'splash_extension_import' => '扩展安装完成', 'splash_extension_refresh' => '刷新的扩展列表', 'splash_extension_upload' => '扩展安装', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => '更新文件夹', 'splash_importfs' => '已导入文档 [docs] 和文件夹 [folders]', @@ -2201,6 +2219,7 @@ URL: [url]', 'transmittal' => '传输', 'transmittalitem_removed' => '传送条目删除', 'transmittalitem_updated' => '文件更新至最新版本', +'transmittals' => '', 'transmittal_comment' => '备注', 'transmittal_name' => '名称', 'transmittal_size' => '大小', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 52ae84522..3b17ffa30 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -226,9 +226,14 @@ $text = array( 'backup_log_management' => '備份/日誌', 'backup_remove' => '刪除備份', 'backup_tools' => '備份工具', +'batch_add_approver' => '', +'batch_add_approver_msg' => '', 'batch_add_category_msg' => '', +'batch_add_reviewer' => '', +'batch_add_reviewer_msg' => '', 'batch_change_category' => '', 'batch_change_owner' => '', +'batch_export' => '', 'batch_new_owner_msg' => '', 'batch_operation' => '', 'batch_operation_result' => '', @@ -319,6 +324,8 @@ $text = array( 'comment_changed_email' => '', 'comment_for_current_version' => '版本說明', 'configure_extension' => '配置擴充套件', +'confirm_add_approver' => '', +'confirm_add_reviewer' => '', 'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '您真的要清除緩存嗎?這將刪除所有預先計算的預覽圖像。', @@ -471,6 +478,7 @@ URL: [url]', 'document_files' => '', 'document_has_no_workflow' => '文件沒有工作流程', 'document_infos' => '文件資訊', +'document_in_revision_no_date' => '', 'document_is_checked_out' => '', 'document_is_checked_out_remove' => '', 'document_is_checked_out_update' => '當前已簽出文檔。如果您上傳新版本,那麼簽出的版本將無法再簽回。', @@ -985,6 +993,7 @@ URL: [url]', 'link_to_version' => '附加到版本', 'list_access_rights' => '列出權限', 'list_contains_no_access_docs' => '該列表包含更多您無法訪問且不會顯示的文檔。', +'list_conversion_overview' => '', 'list_conversion_services' => '', 'list_hooks' => '掛勾列表', 'list_notification_services' => '', @@ -1576,6 +1585,10 @@ URL: [url]', 'settings_allowChangeRevAppInProcess_desc' => '默認情況下,一旦提交了審核或批准,就不能再更改審核者和批准者。只要未發布或拒絕文檔,此選項將允許管理員執行此操作。', 'settings_allowReviewerOnly' => '只允許設置審閱者', 'settings_allowReviewerOnly_desc' => '如果允許在傳統的工作流程模式下僅設置審閱者而不設置批准者,則啟用此功能。', +'settings_alwaysShowClipboard' => '', +'settings_alwaysShowClipboard_desc' => '', +'settings_alwaysShowMenuTasks' => '', +'settings_alwaysShowMenuTasks_desc' => '', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => '', 'settings_apiKey_desc' => '', @@ -1592,6 +1605,8 @@ URL: [url]', 'settings_backupDir_desc' => '備份工具保存備份的目錄。如果未設置此目錄或無法訪問該目錄,則備份將保存在內容目錄中。', 'settings_baseUrl' => '', 'settings_baseUrl_desc' => '', +'settings_batchOperations' => '', +'settings_batchOperations_desc' => '', 'settings_cacheDir' => '緩存目錄', 'settings_cacheDir_desc' => '預覽圖像的存儲位置(最好選擇無法通過Web服務器訪問的目錄)', 'settings_Calendar' => '日曆設定', @@ -1718,6 +1733,8 @@ URL: [url]', 'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '在菜單中啟用任務列表', 'settings_enableMenuTasks_desc' => '啟用/禁用包含用戶所有任務的菜單項。其中包含需要審查,批准等的文件。', +'settings_enableMenuTransmittals' => '', +'settings_enableMenuTransmittals_desc' => '', 'settings_enableMultiUpload' => '允許上傳多個文件', 'settings_enableMultiUpload_desc' => '創建新文檔時,可以上傳多個文件。每個都將創建一個新文檔。', 'settings_enableNotificationAppRev' => '啟用審閱者/批准者通知', @@ -2070,6 +2087,7 @@ URL: [url]', 'splash_extension_import' => '安裝擴展', 'splash_extension_refresh' => '刷新的擴展名列表', 'splash_extension_upload' => '安裝擴展', +'splash_folder_added' => '', 'splash_folder_deleted' => '', 'splash_folder_edited' => '保存文件夾更改', 'splash_importfs' => '導入的[docs]文檔和[folders]文件夾', @@ -2261,6 +2279,7 @@ URL: [url]', 'transmittal' => '傳輸', 'transmittalitem_removed' => '傳輸項目已刪除', 'transmittalitem_updated' => '文件已更新至最新版本', +'transmittals' => '', 'transmittal_comment' => '註解', 'transmittal_name' => '名稱', 'transmittal_size' => '大小', diff --git a/op/op.Ajax.php b/op/op.Ajax.php index fa055837a..8bd9bb46e 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -634,6 +634,13 @@ switch($command) { if($notifier) { $notifier->sendChangedNameMail($document, $user, $oldname); } + if($fulltextservice && ($index = $fulltextservice->Indexer())) { + $lucenesearch = $fulltextservice->Search(); + if($hit = $lucenesearch->getDocument($document->getId())) { + $index->reindexDocument($hit->id); + $index->commit(); + } + } header('Content-Type: application/json'); echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_name_changed'), 'data'=>'')); add_log_line("set name '".$_REQUEST['name']."' of document ".$document->getId()); @@ -665,6 +672,13 @@ switch($command) { header('Content-Type: application/json'); echo json_encode(array('success'=>false, 'message'=>'Error setting mimetype', 'data'=>'')); } else { + if($fulltextservice && ($index = $fulltextservice->Indexer())) { + $lucenesearch = $fulltextservice->Search(); + if($hit = $lucenesearch->getDocument($document->getId())) { + $index->reindexDocument($hit->id); + $index->commit(); + } + } header('Content-Type: application/json'); echo json_encode(array('success'=>true, 'message'=>getMLText('splash_mimetype_changed'), 'data'=>'')); add_log_line("set mimetype '".$realmimetype."' of document ".$document->getId().":".$content->getVersion()); diff --git a/op/op.ApproveDocument.php b/op/op.ApproveDocument.php index ab57d9127..617b9da4b 100644 --- a/op/op.ApproveDocument.php +++ b/op/op.ApproveDocument.php @@ -114,8 +114,6 @@ if(!$controller()) { } } -add_log_line("?documentid=".$_POST['documentid']."&version=".$_POST['version']."&approvalType=".$_POST['approvalType']."&approvalStatus=".$_POST['approvalStatus']); +add_log_line("?documentid=".$documentid."&version=".$version."&approvalType=".$_POST['approvalType']."&approvalStatus=".$_POST['approvalStatus']); header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=revapp"); - -?> diff --git a/op/op.Cron.php b/op/op.Cron.php index 3ecd68d2e..f2cd42296 100644 --- a/op/op.Cron.php +++ b/op/op.Cron.php @@ -42,10 +42,14 @@ if($user->getLogin() != 'cli_scheduler') { $mode = 'list'; if(!empty($_GET['mode']) && in_array($_GET['mode'], array('list', 'run', 'dryrun', 'check'))) $mode = $_GET['mode']; +$task = ''; +if(!empty($_GET['task'])) + $task = $_GET['task']; $controller->setParam('settings', $settings); $controller->setParam('logger', $logger); $controller->setParam('mode', $mode); +$controller->setParam('task', $task); if(!$controller->run()) { echo getMLText("error_occured"); exit; diff --git a/op/op.ReceiptDocument.php b/op/op.ReceiptDocument.php index 3b7fbf0f1..538b19aca 100644 --- a/op/op.ReceiptDocument.php +++ b/op/op.ReceiptDocument.php @@ -100,6 +100,6 @@ if ($_POST["receiptType"] == "ind" || $_POST["receiptType"] == "grp") { } } -header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=recipients"); +add_log_line("documentid=".$documentid."&version=".$version); -?> +header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=recipients"); diff --git a/op/op.ReviewDocument.php b/op/op.ReviewDocument.php index d2750feaa..e754d31e6 100644 --- a/op/op.ReviewDocument.php +++ b/op/op.ReviewDocument.php @@ -119,6 +119,6 @@ if(!$controller()) { } } -header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=revapp"); +add_log_line("documentid=".$documentid."&version=".$version."&reviewType=".$_POST['reviewType']."&reviewStatus=".$_POST['reviewStatus']); -?> +header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=revapp"); diff --git a/op/op.ReviseDocument.php b/op/op.ReviseDocument.php index d73ee2387..619885eac 100644 --- a/op/op.ReviseDocument.php +++ b/op/op.ReviseDocument.php @@ -115,6 +115,6 @@ if($notifier) { $notifier->sendChangedDocumentStatusMail($latestContent, $user, $controller->oldstatus); } -header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=revision"); +add_log_line("documentid=".$documentid."&version=".$version); -?> +header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=revision"); diff --git a/op/op.Settings.php b/op/op.Settings.php index 3257c113d..713faa83e 100644 --- a/op/op.Settings.php +++ b/op/op.Settings.php @@ -134,10 +134,14 @@ if ($action == "saveSettings") setStrValue('fullSearchEngine'); setStrValue('defaultSearchMethod'); setStrValue('suggestTerms'); + setArrayValue('batchOperations'); setBoolValue("showSingleSearchHit"); setBoolValue("enableSessionList"); setBoolValue("enableClipboard"); + setBoolValue("alwaysShowClipboard"); + setBoolValue("enableMenuTransmittals"); setBoolValue("enableMenuTasks"); + setBoolValue("alwaysShowMenuTasks"); $settings->_tasksInMenu = isset($_POST["tasksInMenu"]) ? $_POST["tasksInMenu"] : array(); setBoolValue("enableDropFolderList"); setBoolValue("enableDropUpload"); diff --git a/out/out.FolderNotify.php b/out/out.FolderNotify.php index 03c472df2..514055acf 100644 --- a/out/out.FolderNotify.php +++ b/out/out.FolderNotify.php @@ -48,9 +48,6 @@ if ($folder->getAccessMode($user) < M_READ) { UI::exitError(getMLText("folder_title", array("foldername" => htmlspecialchars($folder->getName()))),getMLText("access_denied")); } -/* Create object for checking access to certain operations */ -$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); - if($view) { $view->setParam('showtree', showtree()); $view->setParam('folder', $folder); diff --git a/out/out.ObjectCheck.php b/out/out.ObjectCheck.php index 6011492a5..e133cb017 100644 --- a/out/out.ObjectCheck.php +++ b/out/out.ObjectCheck.php @@ -102,6 +102,10 @@ if(!isset($_GET['action']) || $_GET['action'] == 'listDuplicateSequence') $duplicatesequences = $dms->getDuplicateSequenceNo(); else $duplicatesequences = null; +if(!isset($_GET['action']) || $_GET['action'] == 'listLinkToItself') + $docslinktoitself = $dms->getLinksToItself(); +else + $docslinktoitself = null; $processwithoutusergroup = array(); foreach(array('review', 'approval', 'receipt', 'revision') as $process) { foreach(array('user', 'group') as $ug) { @@ -256,6 +260,7 @@ if($view) { $view->setParam('wrongfiletypeversions', $wrongfiletypeversions); $view->setParam('duplicateversions', $duplicateversions); $view->setParam('duplicatesequences', $duplicatesequences); + $view->setParam('docslinktoitself', $docslinktoitself); $view->setParam('docsinrevisionnoaccess', $docsinrevisionnoaccess); $view->setParam('docsinrevisiondisabled', $docsinrevisiondisabled); $view->setParam('docsmissingrevsiondate', $docsmissingrevsiondate); diff --git a/out/out.Search.php b/out/out.Search.php index 17d3c379d..2858384c1 100644 --- a/out/out.Search.php +++ b/out/out.Search.php @@ -57,6 +57,16 @@ if (isset($_GET["newowner"]) && is_numeric($_GET["newowner"]) && $_GET['newowner $newowner = $dms->getUser((int) $_GET['newowner']); } +$newreviewer = null; +if (isset($_GET["newreviewer"]) && is_numeric($_GET["newreviewer"]) && $_GET['newreviewer'] > 0) { + $newreviewer = $dms->getUser((int) $_GET['newreviewer']); +} + +$newapprover = null; +if (isset($_GET["newapprover"]) && is_numeric($_GET["newapprover"]) && $_GET['newapprover'] > 0) { + $newapprover = $dms->getUser((int) $_GET['newapprover']); +} + $changecategory = null; if (isset($_GET["changecategory"]) && is_numeric($_GET["changecategory"]) && $_GET['changecategory'] > 0) { $changecategory = $dms->getDocumentCategory((int) $_GET['changecategory']); @@ -747,6 +757,8 @@ if($settings->_showSingleSearchHit && count($entries) == 1) { $view->setParam('includecontent', $includecontent); $view->setParam('marks', isset($_GET['marks']) ? $_GET['marks'] : array()); $view->setParam('newowner', $newowner); + $view->setParam('newreviewer', $newreviewer); + $view->setParam('newapprover', $newapprover); $view->setParam('changecategory', $changecategory); $view->setParam('removecategory', $removecategory); $view->setParam('searchhits', $entries); diff --git a/restapi/index.php b/restapi/index.php index f9971ad41..e2e324c5a 100644 --- a/restapi/index.php +++ b/restapi/index.php @@ -170,7 +170,7 @@ class RestapiController { /* {{{ */ 'email'=>$u->getEmail(), 'language' => $u->getLanguage(), 'theme' => $u->getTheme(), - 'role' => array('id'=>(int)$u->getRole()->getId(), 'name'=>$u->getRole()->getName()), + 'role' => $this->__getRoleData($u->getRole()), //array('id'=>(int)$u->getRole()->getId(), 'name'=>$u->getRole()->getName()), 'hidden'=>$u->isHidden() ? true : false, 'disabled'=>$u->isDisabled() ? true : false, 'isguest' => $u->isGuest() ? true : false, @@ -189,6 +189,16 @@ class RestapiController { /* {{{ */ return $data; } /* }}} */ + protected function __getRoleData($r) { /* {{{ */ + $data = array( + 'type'=>'role', + 'id'=>(int)$r->getID(), + 'name'=>$r->getName(), + 'role'=>$r->getRole() + ); + return $data; + } /* }}} */ + protected function __getAttributeDefinitionData($attrdef) { /* {{{ */ $data = [ 'id' => (int)$attrdef->getId(), @@ -717,94 +727,94 @@ class RestapiController { /* {{{ */ return $response->withJson(array('success'=>false, 'message'=>getMLText("document_duplicate_name"), 'data'=>''), 409); } } - // Get the list of reviewers and approvers for this document. - $reviewers = array(); - $approvers = array(); - $reviewers["i"] = array(); - $reviewers["g"] = array(); - $approvers["i"] = array(); - $approvers["g"] = array(); - $workflow = null; - if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'traditional_only_approval') { - // add mandatory reviewers/approvers - if($settings->_workflowMode == 'traditional') { - $mreviewers = getMandatoryReviewers($mfolder, null, $userobj); - if($mreviewers['i']) - $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); - if($mreviewers['g']) - $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); - } - $mapprovers = getMandatoryApprovers($mfolder, null, $userobj); - if($mapprovers['i']) - $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); - if($mapprovers['g']) - $approvers['g'] = array_merge($approvers['g'], $mapprovers['g']); - } elseif($settings->_workflowMode == 'advanced') { - if($workflows = $userobj->getMandatoryWorkflows()) { - $workflow = array_shift($workflows); - } - } + // Get the list of reviewers and approvers for this document. + $reviewers = array(); + $approvers = array(); + $reviewers["i"] = array(); + $reviewers["g"] = array(); + $approvers["i"] = array(); + $approvers["g"] = array(); + $workflow = null; + if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'traditional_only_approval') { + // add mandatory reviewers/approvers + if($settings->_workflowMode == 'traditional') { + $mreviewers = getMandatoryReviewers($mfolder, null, $userobj); + if($mreviewers['i']) + $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); + if($mreviewers['g']) + $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); + } + $mapprovers = getMandatoryApprovers($mfolder, null, $userobj); + if($mapprovers['i']) + $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); + if($mapprovers['g']) + $approvers['g'] = array_merge($approvers['g'], $mapprovers['g']); + } elseif($settings->_workflowMode == 'advanced') { + if($workflows = $userobj->getMandatoryWorkflows()) { + $workflow = array_shift($workflows); + } + } $temp = $file_info->file; $finfo = finfo_open(FILEINFO_MIME_TYPE); $userfiletype = finfo_file($finfo, $temp); $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); - finfo_close($finfo); - $attributes_version = []; - $notusers = []; - $notgroups = []; - $controller = Controller::factory('AddDocument'); - $controller->setParam('documentsource', 'restapi'); - $controller->setParam('documentsourcedetails', null); - $controller->setParam('dms', $dms); - $controller->setParam('user', $userobj); - $controller->setParam('folder', $mfolder); - $controller->setParam('fulltextservice', $fulltextservice); - $controller->setParam('name', $docname); - $controller->setParam('comment', $comment); - $controller->setParam('expires', $expires); - $controller->setParam('keywords', $keywords); - $controller->setParam('categories', $cats); - $controller->setParam('owner', $owner ? $owner : $userobj); - $controller->setParam('userfiletmp', $temp); - $controller->setParam('userfilename', $origfilename ? $origfilename : basename($temp)); - $controller->setParam('filetype', $fileType); - $controller->setParam('userfiletype', $userfiletype); - $controller->setParam('sequence', $sequence); - $controller->setParam('reviewers', $reviewers); - $controller->setParam('approvers', $approvers); - $controller->setParam('reqversion', $reqversion); - $controller->setParam('versioncomment', $version_comment); - $controller->setParam('attributes', $attributes); - $controller->setParam('attributesversion', $attributes_version); - $controller->setParam('workflow', $workflow); - $controller->setParam('notificationgroups', $notgroups); - $controller->setParam('notificationusers', $notusers); - $controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText); - $controller->setParam('defaultaccessdocs', $settings->_defaultAccessDocs); + finfo_close($finfo); + $attributes_version = []; + $notusers = []; + $notgroups = []; + $controller = Controller::factory('AddDocument'); + $controller->setParam('documentsource', 'restapi'); + $controller->setParam('documentsourcedetails', null); + $controller->setParam('dms', $dms); + $controller->setParam('user', $userobj); + $controller->setParam('folder', $mfolder); + $controller->setParam('fulltextservice', $fulltextservice); + $controller->setParam('name', $docname); + $controller->setParam('comment', $comment); + $controller->setParam('expires', $expires); + $controller->setParam('keywords', $keywords); + $controller->setParam('categories', $cats); + $controller->setParam('owner', $owner ? $owner : $userobj); + $controller->setParam('userfiletmp', $temp); + $controller->setParam('userfilename', $origfilename ? $origfilename : basename($temp)); + $controller->setParam('filetype', $fileType); + $controller->setParam('userfiletype', $userfiletype); + $controller->setParam('sequence', $sequence); + $controller->setParam('reviewers', $reviewers); + $controller->setParam('approvers', $approvers); + $controller->setParam('reqversion', $reqversion); + $controller->setParam('versioncomment', $version_comment); + $controller->setParam('attributes', $attributes); + $controller->setParam('attributesversion', $attributes_version); + $controller->setParam('workflow', $workflow); + $controller->setParam('notificationgroups', $notgroups); + $controller->setParam('notificationusers', $notusers); + $controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText); + $controller->setParam('defaultaccessdocs', $settings->_defaultAccessDocs); - if(!($document = $controller())) { - $err = $controller->getErrorMsg(); - if(is_string($err)) - $errmsg = getMLText($err); - elseif(is_array($err)) { - $errmsg = getMLText($err[0], $err[1]); - } else { - $errmsg = $err; - } - unlink($temp); - return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); - } else { - if($controller->hasHook('cleanUpDocument')) { - $controller->callHook('cleanUpDocument', $document, $file); - } - // Send notification to subscribers of folder. - if($notifier) { - $notifier->sendNewDocumentMail($document, $userobj); - } - unlink($temp); - return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$this->__getLatestVersionData($document->getLatestContent())), 201); - } - /* + if(!($document = $controller())) { + $err = $controller->getErrorMsg(); + if(is_string($err)) + $errmsg = getMLText($err); + elseif(is_array($err)) { + $errmsg = getMLText($err[0], $err[1]); + } else { + $errmsg = $err; + } + unlink($temp); + return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); + } else { + if($controller->hasHook('cleanUpDocument')) { + $controller->callHook('cleanUpDocument', $document, $file); + } + // Send notification to subscribers of folder. + if($notifier) { + $notifier->sendNewDocumentMail($document, $userobj); + } + unlink($temp); + return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$this->__getLatestVersionData($document->getLatestContent())), 201); + } + /* $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); unlink($temp); if($res) { @@ -815,8 +825,8 @@ class RestapiController { /* {{{ */ return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$this->__getLatestVersionData($doc->getLatestContent())), 201); } else { return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); - } - */ + } + */ } else { return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); } @@ -834,6 +844,7 @@ class RestapiController { /* {{{ */ $userobj = $this->container->userobj; $settings = $this->container->config; $notifier = $this->container->notifier; + $fulltextservice = $this->container->fulltextservice; if(!$userobj) { return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); @@ -852,66 +863,132 @@ class RestapiController { /* {{{ */ $document = $dms->getDocument($args['id']); if($document) { - if ($document->getAccessMode($userobj, 'updateDocument') >= M_READWRITE) { - $params = $request->getParsedBody(); - $origfilename = isset($params['origfilename']) ? $params['origfilename'] : null; - $comment = isset($params['comment']) ? $params['comment'] : null; - $attributes = isset($params["attributes"]) ? $params["attributes"] : array(); - foreach($attributes as $attrdefid=>$attribute) { - if((is_int($attrdefid) || ctype_digit($attrdefid)) && ((int) $attrdefid) > 0) - $attrdef = $dms->getAttributeDefinition((int) $attrdefid); - else - $attrdef = $dms->getAttributeDefinitionByName($attrdefid); - if($attrdef) { - if($attribute) { - if(!$attrdef->validate($attribute)) { - return $response->withJson(array('success'=>false, 'message'=>getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute), 'data'=>''), 400); - } - } elseif($attrdef->getMinValues() > 0) { - return $response->withJson(array('success'=>false, 'message'=>getMLText("attr_min_values", array("attrname"=>$attrdef->getName())), 'data'=>''), 400); - } - } - } - $uploadedFiles = $request->getUploadedFiles(); - if (count($uploadedFiles) == 0) { - return $response->withJson(array('success'=>false, 'message'=>'No file detected', 'data'=>''), 400); - } - $file_info = array_pop($uploadedFiles); - if ($origfilename == null) - $origfilename = $file_info->getClientFilename(); - $temp = $file_info->file; - - /* Check if the uploaded file is identical to last version */ - $lc = $document->getLatestContent(); - if($lc->getChecksum() == SeedDMS_Core_File::checksum($temp)) { - return $response->withJson(array('success'=>false, 'message'=>'Uploaded file identical to last version', 'data'=>''), 400); - } - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $userfiletype = finfo_file($finfo, $temp); - $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); - finfo_close($finfo); - $oldexpires = $document->getExpires(); - $res=$document->addContent($comment, $userobj, $temp, $origfilename, $fileType, $userfiletype, array(), array(), 0, $attributes); - - unlink($temp); - if($res) { - if($notifier) { - $notifier->sendNewDocumentVersionMail($document, $userobj); - - /* Actually there is not need to even try sending this mail - * because the expiration date cannot be set when calling - * this rest api endpoint. - */ - $notifier->sendChangedExpiryMail($document, $userobj, $oldexpires); - } - $rec = array('id'=>(int)$document->getId(), 'name'=>$document->getName(), 'version'=>$document->getLatestContent()->getVersion()); - return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$rec), 200); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Upload failed', 'data'=>''), 500); - } - } else { + if ($document->getAccessMode($userobj, 'updateDocument') < M_READWRITE) { return $response->withJson(array('success'=>false, 'message'=>'No access', 'data'=>''), 403); } + + $params = $request->getParsedBody(); + $origfilename = isset($params['origfilename']) ? $params['origfilename'] : null; + $comment = isset($params['comment']) ? $params['comment'] : null; + $attributes = isset($params["attributes"]) ? $params["attributes"] : array(); + foreach($attributes as $attrdefid=>$attribute) { + if((is_int($attrdefid) || ctype_digit($attrdefid)) && ((int) $attrdefid) > 0) + $attrdef = $dms->getAttributeDefinition((int) $attrdefid); + else + $attrdef = $dms->getAttributeDefinitionByName($attrdefid); + if($attrdef) { + if($attribute) { + if(!$attrdef->validate($attribute)) { + return $response->withJson(array('success'=>false, 'message'=>getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute), 'data'=>''), 400); + } + } elseif($attrdef->getMinValues() > 0) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("attr_min_values", array("attrname"=>$attrdef->getName())), 'data'=>''), 400); + } + } + } + $uploadedFiles = $request->getUploadedFiles(); + if (count($uploadedFiles) == 0) { + return $response->withJson(array('success'=>false, 'message'=>'No file detected', 'data'=>''), 400); + } + $file_info = array_pop($uploadedFiles); + if ($origfilename == null) + $origfilename = $file_info->getClientFilename(); + $temp = $file_info->file; + + /* Check if the uploaded file is identical to last version */ + $lc = $document->getLatestContent(); + if($lc->getChecksum() == SeedDMS_Core_File::checksum($temp)) { + return $response->withJson(array('success'=>false, 'message'=>'Uploaded file identical to last version', 'data'=>''), 400); + } + + if($document->isLocked()) { + $lockingUser = $document->getLockingUser(); + if(($lockingUser->getID() != $userobj->getID()) && ($document->getAccessMode($userobj) != M_ALL)) { + return $response->withJson(array('success'=>false, 'message'=>'Document is locked', 'data'=>''), 400); + } + else $document->setLocked(false); + } + + $folder = $document->getFolder(); + + // Get the list of reviewers and approvers for this document. + $reviewers = array(); + $approvers = array(); + $reviewers["i"] = array(); + $reviewers["g"] = array(); + $approvers["i"] = array(); + $approvers["g"] = array(); + $workflow = null; + if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'traditional_only_approval') { + // add mandatory reviewers/approvers + if($settings->_workflowMode == 'traditional') { + $mreviewers = getMandatoryReviewers($folder, null, $userobj); + if($mreviewers['i']) + $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); + if($mreviewers['g']) + $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); + } + $mapprovers = getMandatoryApprovers($folder, null, $userobj); + if($mapprovers['i']) + $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); + if($mapprovers['g']) + $approvers['g'] = array_merge($approvers['g'], $mapprovers['g']); + } elseif($settings->_workflowMode == 'advanced') { + if($workflows = $userobj->getMandatoryWorkflows()) { + $workflow = array_shift($workflows); + } + } + + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $userfiletype = finfo_file($finfo, $temp); + $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); + finfo_close($finfo); + + $controller = Controller::factory('UpdateDocument'); + $controller->setParam('documentsource', 'restapi'); + $controller->setParam('documentsourcedetails', null); + $controller->setParam('dms', $dms); + $controller->setParam('user', $userobj); + $controller->setParam('folder', $folder); + $controller->setParam('document', $document); + $controller->setParam('fulltextservice', $fulltextservice); + $controller->setParam('comment', $comment); + $controller->setParam('userfiletmp', $temp); + $controller->setParam('userfilename', $origfilename); + $controller->setParam('filetype', $fileType); + $controller->setParam('userfiletype', $userfiletype); + $controller->setParam('reviewers', $reviewers); + $controller->setParam('approvers', $approvers); + $controller->setParam('attributes', $attributes); + $controller->setParam('workflow', $workflow); + $controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText); + + if(!$content = $controller()) { + unlink($temp); + $err = $controller->getErrorMsg(); + if(is_string($err)) + $errmsg = getMLText($err); + elseif(is_array($err)) { + $errmsg = getMLText($err[0], $err[1]); + } else { + $errmsg = $err; + } + return $response->withJson(array('success'=>false, 'message'=>'Upload failed: '.$errmsg, 'data'=>''), 500); + } else { + unlink($temp); + if($controller->hasHook('cleanUpDocument')) { + $controller->callHook('cleanUpDocument', $document, $file_info); + } + // Send notification to subscribers. + if($notifier) { + $notifier->sendNewDocumentVersionMail($document, $userobj); + + //$notifier->sendChangedExpiryMail($document, $user, $oldexpires); + } + + $rec = array('id'=>(int)$document->getId(), 'name'=>$document->getName(), 'version'=>$document->getLatestContent()->getVersion()); + return $response->withJson(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$rec), 200); + } } else { return $response->withJson(array('success'=>false, 'message'=>'No document', 'data'=>''), 404); } @@ -1192,7 +1269,7 @@ class RestapiController { /* {{{ */ ->withHeader('Content-Description', 'File Transfer') ->withHeader('Content-Transfer-Encoding', 'binary') ->withHeader('Content-Disposition', 'attachment; filename="' . $filename . '"') - ->withHeader('Content-Length', filesize($dms->contentDir . $lc->getPath())) + ->withAddedHeader('Content-Length', filesize($dms->contentDir . $lc->getPath())) ->withHeader('Expires', '0') ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') ->withHeader('Pragma', 'no-cache') @@ -2052,11 +2129,14 @@ class RestapiController { /* {{{ */ $email = isset($params['email']) ? $params['email'] : ''; $language = isset($params['language']) ? $params['language'] : null;; $theme = isset($params['theme']) ? $params['theme'] : null; - $comment = isset($params['comment']) ? $params['comment'] : null; - $role = isset($params['role']) ? $params['role'] : null; - $roleid = $role == 'admin' ? SeedDMS_Core_User::role_admin : ($role == 'guest' ? SeedDMS_Core_User::role_guest : SeedDMS_Core_User::role_user); + $comment = isset($params['comment']) ? $params['comment'] : ''; + $role = isset($params['role']) ? $params['role'] : 3; + $roleobj = $role == 'admin' ? SeedDMS_Core_Role::getInstance(1, $dms) : ($role == 'guest' ? SeedDMS_Core_Role::getInstance(2, $dms) : SeedDMS_Core_Role::getInstance($role, $dms)); + if(!$roleobj) { + return $response->withJson(array('success'=>false, 'message'=>'Missing role', 'data'=>''), 400); + } - $newAccount = $dms->addUser($userName, $password, $fullname, $email, $language, $theme, $comment, $roleid); + $newAccount = $dms->addUser($userName, seed_pass_hash($password), $fullname, $email, $language, $theme, $comment, $roleobj); if ($newAccount === false) { return $response->withJson(array('success'=>false, 'message'=>'Account could not be created, maybe it already exists', 'data'=>''), 500); } @@ -2085,7 +2165,8 @@ class RestapiController { /* {{{ */ } /* }}} */ /** - * Updates the password of an existing Account, the password must be PUT as a md5 string + * Updates the password of an existing Account, the password + * will be hashed by this method * * @param $id The user name or numerical identifier */ @@ -2118,7 +2199,7 @@ class RestapiController { /* {{{ */ return; } - $operation = $account->setPwd($newPassword); + $operation = $account->setPwd(seed_pass_hash($newPassword)); if (!$operation){ return $response->withJson(array('success'=>false, 'message'=>'', 'data'=>'Could not change password.'), 404); @@ -2180,6 +2261,88 @@ class RestapiController { /* {{{ */ } } /* }}} */ + function getRoles($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + + $roles = $dms->getAllRoles(); + $data = []; + foreach($roles as $r) + $data[] = $this->__getRoleData($r); + + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } /* }}} */ + + function createRole($request, $response) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + $params = $request->getParsedBody(); + if (empty($params['name'])) { + return $response->withJson(array('success'=>false, 'message'=>'Need a role name.', 'data'=>''), 400); + } + + $roleName = $params['name']; + $roleType = $params['role']; + + $newRole = $dms->addRole($roleName, $roleType); + if ($newRole === false) { + return $response->withJson(array('success'=>false, 'message'=>'Role could not be created, maybe it already exists', 'data'=>''), 500); + } + + // $result = array('id'=>(int)$newGroup->getID()); + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$this->__getRoleData($newRole)), 201); + } /* }}} */ + + function deleteRole($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + + if($role = $dms->getRole($args['id'])) { + if($result = $role->remove($userobj)) { + return $response->withJson(array('success'=>$result, 'message'=>'', 'data'=>''), 200); + } else { + return $response->withJson(array('success'=>$result, 'message'=>'Could not delete role', 'data'=>''), 500); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such role', 'data'=>''), 404); + } + } /* }}} */ + + function getRole($request, $response, $args) { /* {{{ */ + $dms = $this->container->dms; + $userobj = $this->container->userobj; + + $check = $this->checkIfAdmin($request, $response); + if($check !== true) + return $check; + if(ctype_digit($args['id'])) + $role = $dms->getRole($args['id']); + else { + $role = $dms->getRoleByName($args['id']); + } + if($role) { + $data = $this->__getRoleData($role); + $data['users'] = array(); + foreach ($role->getUsers() as $user) { + $data['users'][] = array('id' => (int)$user->getID(), 'login' => $user->getLogin()); + } + return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200); + } else { + return $response->withJson(array('success'=>false, 'message'=>'No such role', 'data'=>''), 404); + } + } /* }}} */ + function getGroups($request, $response) { /* {{{ */ $dms = $this->container->dms; $userobj = $this->container->userobj; @@ -2768,17 +2931,17 @@ class RestapiAuth { /* {{{ */ $logger->log("Received preflight options request", PEAR_LOG_DEBUG); } elseif(!in_array($request->getUri()->getPath(), array('login')) && substr($request->getUri()->getPath(), 0, 5) != 'echo/' && $request->getUri()->getPath() != 'version') { $userobj = null; - if(!empty($this->container->environment['HTTP_AUTHORIZATION']) && !empty($settings->_apiKey) && !empty($settings->_apiUserId)) { - $logger->log("Authorization key: ".$this->container->environment['HTTP_AUTHORIZATION'], PEAR_LOG_DEBUG); - if($settings->_apiKey == $this->container->environment['HTTP_AUTHORIZATION']) { - if(!($userobj = $dms->getUser($settings->_apiUserId))) { - return $response->withJson(array('success'=>false, 'message'=>'Invalid user associated with api key', 'data'=>''), 403); - } - } else { - return $response->withJson(array('success'=>false, 'message'=>'Wrong api key', 'data'=>''), 403); - } - $logger->log("Login with apikey as '".$userobj->getLogin()."' successful", PEAR_LOG_INFO); - } else { + if(!empty($this->container->environment['HTTP_AUTHORIZATION']) && !empty($settings->_apiKey) && !empty($settings->_apiUserId)) { + $logger->log("Authorization key: ".$this->container->environment['HTTP_AUTHORIZATION'], PEAR_LOG_DEBUG); + if($settings->_apiKey == $this->container->environment['HTTP_AUTHORIZATION']) { + if(!($userobj = $dms->getUser($settings->_apiUserId))) { + return $response->withJson(array('success'=>false, 'message'=>'Invalid user associated with api key', 'data'=>''), 403); + } + } else { + return $response->withJson(array('success'=>false, 'message'=>'Wrong api key', 'data'=>''), 403); + } + $logger->log("Login with apikey as '".$userobj->getLogin()."' successful", PEAR_LOG_INFO); + } else { require_once("../inc/inc.ClassSession.php"); $session = new SeedDMS_Session($dms->getDb()); if (isset($_COOKIE["mydms_session"])) { @@ -2788,7 +2951,7 @@ class RestapiAuth { /* {{{ */ /* Delete Cookie */ setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot); $logger->log("Session for id '".$dms_session."' has gone", PEAR_LOG_ERR); - return $response->withJson(array('success'=>false, 'message'=>'Session has gone', 'data'=>''), 403); + return $response->withJson(array('success'=>false, 'message'=>'Session has gone', 'data'=>''), 403); } /* Load user data */ @@ -2798,20 +2961,20 @@ class RestapiAuth { /* {{{ */ setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot); if($settings->_enableGuestLogin) { if(!($userobj = $dms->getUser($settings->_guestID))) - return $response->withJson(array('success'=>false, 'message'=>'Could not get guest login', 'data'=>''), 403); + return $response->withJson(array('success'=>false, 'message'=>'Could not get guest login', 'data'=>''), 403); } else - return $response->withJson(array('success'=>false, 'message'=>'Login as guest disabled', 'data'=>''), 403); + return $response->withJson(array('success'=>false, 'message'=>'Login as guest disabled', 'data'=>''), 403); } if($userobj->isAdmin()) { if($resArr["su"]) { if(!($userobj = $dms->getUser($resArr["su"]))) - return $response->withJson(array('success'=>false, 'message'=>'Cannot substitute user', 'data'=>''), 403); + return $response->withJson(array('success'=>false, 'message'=>'Cannot substitute user', 'data'=>''), 403); } } // $logger->log("Login with user name '".$userobj->getLogin()."' successful", PEAR_LOG_INFO); $dms->setUser($userobj); } else { - return $response->withJson(array('success'=>false, 'message'=>'Missing session cookie', 'data'=>''), 403); + return $response->withJson(array('success'=>false, 'message'=>'Missing session cookie', 'data'=>''), 403); } } $this->container['userobj'] = $userobj; @@ -2905,6 +3068,10 @@ $app->post('/users', \RestapiController::class.':createUser'); $app->get('/users/{id}', \RestapiController::class.':getUserById'); $app->put('/users/{id}/disable', \RestapiController::class.':setDisabledUser'); $app->put('/users/{id}/password', \RestapiController::class.':changeUserPassword'); +$app->get('/roles', \RestapiController::class.':getRoles'); +$app->post('/roles', \RestapiController::class.':createRole'); +$app->get('/roles/{id}', \RestapiController::class.':getRole'); +$app->delete('/roles/{id}', \RestapiController::class.':deleteRole'); $app->post('/groups', \RestapiController::class.':createGroup'); $app->get('/groups', \RestapiController::class.':getGroups'); $app->delete('/groups/{id}', \RestapiController::class.':deleteGroup'); @@ -2938,3 +3105,4 @@ if(isset($GLOBALS['SEEDDMS_HOOKS']['initRestAPI'])) { $app->run(); +// vim: ts=4 sw=4 expandtab diff --git a/styles/bootstrap/jquery/jquery-1.8.2.min.js b/styles/bootstrap/jquery/jquery-1.8.2.min.js deleted file mode 100644 index f65cf1dc4..000000000 --- a/styles/bootstrap/jquery/jquery-1.8.2.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v1.8.2 jquery.com | jquery.org/license */ -(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="
",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/utils/adddoc.php b/utils/adddoc.php index d6800970c..a4cf35580 100644 --- a/utils/adddoc.php +++ b/utils/adddoc.php @@ -302,6 +302,7 @@ $filetmp = $filename; $reviewers = array(); $approvers = array(); +$recipients = array(); if($folder) { $controller = Controller::factory('AddDocument', array('dms'=>$dms, 'user'=>$user)); @@ -325,6 +326,7 @@ if($folder) { $controller->setParam('sequence', $minmax['max'] + 1); $controller->setParam('reviewers', $reviewers); $controller->setParam('approvers', $approvers); + $controller->setParam('recipients', $recipients); $controller->setParam('reqversion', $reqversion); $controller->setParam('versioncomment', $version_comment); $controller->setParam('attributes', $document_attributes); @@ -332,6 +334,7 @@ if($folder) { $controller->setParam('workflow', null); $controller->setParam('notificationgroups', array()); $controller->setParam('notificationusers', array()); + $controller->setParam('initialdocumentstatus', $settings->_initialDocumentStatus); $controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText); $controller->setParam('defaultaccessdocs', $settings->_defaultAccessDocs); diff --git a/utils/xmldump.php b/utils/xmldump.php index 5f993d227..7b2d65176 100644 --- a/utils/xmldump.php +++ b/utils/xmldump.php @@ -102,6 +102,7 @@ $statistic = array( 'folders'=>0, 'roles'=>0, 'users'=>0, + 'roles'=>0, 'groups'=>0, 'attributedefinitions'=>0, 'keywordcategories'=>0, @@ -203,7 +204,7 @@ function tree($folder, $parent=null, $indent='', $skipcurrent=false) { /* {{{ */ if($attributes = $folder->getAttributes()) { foreach($attributes as $attribute) { $attrdef = $attribute->getAttributeDefinition(); - echo $indent." getID()."\">".wrapWithCData($attribute->getValue())."\n"; + echo $indent." getID()."\">".wrapWithCData($attribute->getValueAsString())."\n"; } } $notifications = $folder->getNotifyList(); @@ -278,7 +279,7 @@ function tree($folder, $parent=null, $indent='', $skipcurrent=false) { /* {{{ */ if($attributes = $document->getAttributes()) { foreach($attributes as $attribute) { $attrdef = $attribute->getAttributeDefinition(); - echo $indent." getID()."\">".wrapWithCData($attribute->getValue())."\n"; + echo $indent." getID()."\">".wrapWithCData($attribute->getValueAsString())."\n"; } } @@ -335,7 +336,7 @@ function tree($folder, $parent=null, $indent='', $skipcurrent=false) { /* {{{ */ if($attributes = $version->getAttributes()) { foreach($attributes as $attribute) { $attrdef = $attribute->getAttributeDefinition(); - echo $indent." getID()."\">".wrapWithCData($attribute->getValue())."\n"; + echo $indent." getID()."\">".wrapWithCData($attribute->getValueAsString())."\n"; } } if($statuslog = $version->getStatusLog()) { @@ -371,18 +372,23 @@ function tree($folder, $parent=null, $indent='', $skipcurrent=false) { /* {{{ */ $workflowstate = $version->getWorkflowState(); echo $indent." getID()."\" state=\"".$workflowstate->getID()."\">\n"; } - $wkflogs = $version->getWorkflowLog(); - if($wkflogs) { + if($workflow) + $wkfalllogs[$workflow->getId()] = $version->getWorkflowLog(); + else + $wkfalllogs = $version->getWorkflowLog(); + if($wkfalllogs) { echo $indent." \n"; - foreach($wkflogs as $wklog) { - echo $indent." \n"; - echo $indent." ".$wklog->getDate()."\n"; - echo $indent." ".$wklog->getWorkflow()->getID()."\n"; - echo $indent." ".$wklog->getTransition()->getID()."\n"; - $loguser = $wklog->getUser(); - echo $indent." ".$loguser->getID()."\n"; - echo $indent." ".wrapWithCData($wklog->getComment())."\n"; - echo $indent." \n"; + foreach($wkfalllogs as $wkflogs) { + foreach($wkflogs as $wklog) { + echo $indent." \n"; + echo $indent." ".$wklog->getDate()."\n"; + echo $indent." ".$wklog->getWorkflow()->getID()."\n"; + echo $indent." ".$wklog->getTransition()->getID()."\n"; + $loguser = $wklog->getUser(); + echo $indent." ".$loguser->getID()."\n"; + echo $indent." ".wrapWithCData($wklog->getComment())."\n"; + echo $indent." \n"; + } } echo $indent." \n"; } @@ -470,11 +476,11 @@ function tree($folder, $parent=null, $indent='', $skipcurrent=false) { /* {{{ */ } /* }}} */ include($myincpath."/inc/inc.Settings.php"); +include($myincpath."/inc/inc.Utils.php"); include($myincpath."/inc/inc.Init.php"); include($myincpath."/inc/inc.Extension.php"); include($myincpath."/inc/inc.DBInit.php"); -include($myincpath."/inc/inc.ClassSettings.php"); -include($myincpath."/inc/inc.Acl.php"); +include($myincpath."/inc/inc.ClassAcl.php"); if(!$folderid) { $folderid = $settings->_rootFolderID; @@ -554,7 +560,7 @@ $users = $dms->getAllUsers(); if($users) { echo "\n"; foreach ($users as $user) { - echo " getId()."\">\n"; + echo " getId()."\" role=\"".$user->getRole()->getId()."\">\n"; echo " ".wrapWithCData($user->getLogin())."\n"; echo " ".wrapWithCData($user->getPwd())."\n"; echo " ".wrapWithCData($user->getEmail())."\n"; @@ -562,12 +568,13 @@ if($users) { echo " ".wrapWithCData($user->getComment())."\n"; echo " ".$user->getLanguage()."\n"; echo " ".$user->getTheme()."\n"; - echo " ".$user->getRole()->getID()."\n"; +// echo " ".$user->getRole()->getId()."\n"; echo " ".$user->isHidden()."\n"; echo " ".$user->isDisabled()."\n"; echo " ".$user->getPwdExpiration()."\n"; echo " ".$user->getHomeFolder()."\n"; echo " ".$user->getSecret()."\n"; + echo " ".$user->getQuota()."\n"; if($image = $user->getImage()) { echo " \n"; echo " ".$image['mimeType']."\n"; @@ -675,10 +682,12 @@ $categories = $dms->getDocumentCategories(); if($categories) { echo "\n"; foreach($categories as $category) { - echo " getId()."\">\n"; - echo " ".wrapWithCData($category->getName())."\n"; - echo " \n"; - $statistic['documentcategories']++; + if($category->getId() > 0) { + echo " getId()."\">\n"; + echo " ".wrapWithCData($category->getName())."\n"; + echo " \n"; + $statistic['documentcategories']++; + } } echo "\n"; } diff --git a/utils/xmlimport.php b/utils/xmlimport.php index 04365812f..77dabe5d8 100644 --- a/utils/xmlimport.php +++ b/utils/xmlimport.php @@ -23,6 +23,8 @@ function usage() { /* {{{ */ echo " --sections : comma seperated list of sections to read from dump.".PHP_EOL; echo " can be: users, groups, documents, folders, keywordcategories, or".PHP_EOL; echo " documentcategories, transmittals".PHP_EOL; + echo " can be: users, groups, roles, documents, folders, keywordcategories, or".PHP_EOL; + echo " documentcategories".PHP_EOL; echo " --contentdir : directory where all document versions are stored".PHP_EOL; echo " which are not included in the xml file.".PHP_EOL; echo " --default-user : use this user if user could not be found.".PHP_EOL; @@ -126,6 +128,10 @@ function insert_user($user) { /* {{{ */ if(in_array('users', $sections)) { if(substr($user['attributes']['pwdexpiration'], 0, 10) == '0000-00-00') $user['attributes']['pwdexpiration'] = ''; + $roleobj = null; + if(array_key_exists($user['role'], $objmap['roles'])) { + $roleobj = $dms->getRole($objmap['roles'][$user['role']]); + } $newUser = $dms->addUser( $user['attributes']['login'], $user['attributes']['pwd'], @@ -137,7 +143,8 @@ function insert_user($user) { /* {{{ */ $roleobj, $user['attributes']['hidden'], $user['attributes']['disabled'], - $user['attributes']['pwdexpiration']); + $user['attributes']['pwdexpiration'], + $user['attributes']['quota']); if(!$newUser) { $logger->err("Could not add user"); $logger->debug($dms->getDB()->getErrorMsg()); @@ -860,7 +867,11 @@ function insert_document($document) { /* {{{ */ $file['attributes']['version'], $file['attributes']['public'] ); - $newfile->setDate(dateToTimestamp($file['attributes']['date'])); + if($newfile) { + $newfile->setDate(dateToTimestamp($file['attributes']['date'])); + } else { + $logger->err("File '".$file['attributes']['name']."' could not be added."); + } unlink($filename); } } @@ -1084,7 +1095,7 @@ function set_mandatory() { /* {{{ */ } /* }}} */ function startElement($parser, $name, $attrs) { /* {{{ */ - global $logger, $dms, $noversioncheck, $elementstack, $objmap, $cur_user, $cur_group, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_workflowlog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_receipt, $cur_receiptlog, $cur_revision, $cur_revisionlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem, $cur_role, $cur_acopath, $cur_acos; + global $logger, $dms, $noversioncheck, $elementstack, $objmap, $cur_user, $cur_group, $cur_role, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_workflowlog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_receipt, $cur_receiptlog, $cur_revision, $cur_revisionlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem, $cur_role, $cur_acopath, $cur_acos; $parent = end($elementstack); array_push($elementstack, array('name'=>$name, 'attributes'=>$attrs)); @@ -1113,6 +1124,7 @@ function startElement($parser, $name, $attrs) { /* {{{ */ } else { $cur_user = array(); $cur_user['id'] = (int) $attrs['ID']; + $cur_user['role'] = (int) $attrs['ROLE']; $cur_user['attributes'] = array(); $cur_user['individual']['reviewers'] = array(); $cur_user['individual']['approvers'] = array(); @@ -1489,7 +1501,7 @@ function startElement($parser, $name, $attrs) { /* {{{ */ } /* }}} */ function endElement($parser, $name) { /* {{{ */ - global $logger, $dms, $sections, $rootfolder, $objmap, $elementstack, $users, $groups, $links,$cur_user, $cur_group, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_receipt, $cur_receiptlog, $cur_revision, $cur_revisionlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowlog, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem, $cur_role, $cur_acopath, $cur_acos; + global $logger, $dms, $sections, $rootfolder, $objmap, $elementstack, $users, $groups, $links,$cur_user, $cur_group, $cur_role, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_receipt, $cur_receiptlog, $cur_revision, $cur_revisionlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowlog, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem, $cur_role, $cur_acopath, $cur_acos; array_pop($elementstack); $parent = end($elementstack); @@ -1641,7 +1653,7 @@ function endElement($parser, $name) { /* {{{ */ } /* }}} */ function characterData($parser, $data) { /* {{{ */ - global $elementstack, $objmap, $cur_user, $cur_group, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_receipt, $cur_receiptlog, $cur_revision, $cur_revisionlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowlog, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem, $cur_role, $cur_acopath, $cur_acos; + global $elementstack, $objmap, $cur_user, $cur_group, $cur_role, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_receipt, $cur_receiptlog, $cur_revision, $cur_revisionlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowlog, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem, $cur_role, $cur_acopath, $cur_acos; $current = end($elementstack); $parent = prev($elementstack); @@ -1890,11 +1902,11 @@ if(isset($options['config'])) { } include($myincpath."/inc/inc.Settings.php"); +include($myincpath."/inc/inc.Utils.php"); include($myincpath."/inc/inc.Init.php"); include($myincpath."/inc/inc.Extension.php"); include($myincpath."/inc/inc.DBInit.php"); -include($myincpath."/inc/inc.ClassSettings.php"); -include($myincpath."/inc/inc.Acl.php"); +include($myincpath."/inc/inc.ClassAcl.php"); $logfile = "xmlimport.log"; $logconf = array(); @@ -1950,6 +1962,7 @@ if(isset($options['sections'])) { $sections = explode(',', $options['sections']); } +/* if(isset($settings->_extraPath)) ini_set('include_path', $settings->_extraPath. PATH_SEPARATOR .ini_get('include_path')); @@ -1965,7 +1978,7 @@ if(!$settings->_doNotCheckDBVersion && !$dms->checkVersion()) { exit; } $dms->setRootFolderID($settings->_rootFolderID); - + */ $rootfolder = $dms->getFolder($folderid); if(!$rootfolder) { exit(1); diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index 51c1dcb01..64c2409a9 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -107,6 +107,8 @@ console.log(params); ?> 'userfile[]': { require_from_group: [1, ".fileupload-group"] + maxsize: + // alternatives: [$('#dropfolderfileadddocform'), $('#choosedocsearch')] }, dropfolderfileadddocform: { @@ -174,6 +176,9 @@ console.log(params); $orderby = $this->params['orderby']; $folderid = $folder->getId(); $accessop = $this->params['accessobject']; + $accept = $this->getParam('accept'); + if($accept && is_array($accept)) + $accept = implode(',', $accept); $this->htmlAddHeader(''."\n", 'js'); $this->htmlAddHeader(''."\n", 'js'); @@ -403,7 +408,7 @@ console.log(params); } $this->formField( getMLText("local_file"), - $enablelargefileupload ? $this->getFineUploaderHtml() : $this->getFileChooserHtml('userfile[]', $enablemultiupload).($enablemultiupload ? '' : '') + $enablelargefileupload ? $this->getFineUploaderHtml() : $this->getFileChooserHtml('userfile[]', $enablemultiupload, $accept).($enablemultiupload ? '' : '') ); if($dropfolderdir) { $this->formField( diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 81016f2ff..f8412b1fb 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -502,6 +502,16 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } /* }}} End of menu tasks */ + /* menu transmittals {{{ */ + if($this->params['enablemenutransmittals']) { + if($accessobject->check_view_access('TransmittalMgr', array('action'=>'menuTransmittals'))) { + echo "
"; + echo "
"; + echo "
"; + } + } + /* }}} End of menu tasks */ + /* drop folder dir {{{ */ if($this->params['dropfolderdir'] && $this->params['enabledropfolderlist']) { echo "
"; @@ -1295,6 +1305,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; (!empty($value['name']) ? ' name="'.$value['name'].'"' : ''). (!empty($value['class']) ? ' class="'.$value['class'].'"' : ''). (!empty($value['placeholder']) ? ' data-placeholder="'.$value['placeholder'].'"' : ''). + (!empty($value['required']) ? ' required="required"' : ''). ($allowempty ? ' data-allow-clear="true"' : ''). (!empty($value['multiple']) ? ' multiple' : ''); if(!empty($value['attributes']) && is_array($value['attributes'])) @@ -1765,11 +1776,11 @@ $(document).ready(function() { function getSequenceChooser($parent, $type, $keepID = -1) { /* {{{ */ $objArr = []; if($type == 'd') { - if(($c = $parent->hasDocuments()) < 50) + if(($c = $parent->hasDocuments()) < 200) $objArr = $parent->getDocuments('s'); $minmax = $parent->getDocumentsMinMax(); } elseif($type = 'f') { - if(($c = $parent->hasSubFolders()) < 50) + if(($c = $parent->hasSubFolders()) < 200) $objArr = $parent->getSubFolders('s'); $minmax = $parent->getFoldersMinMax(); } else @@ -1783,7 +1794,7 @@ $(document).ready(function() { $min = (float) $minmax['min']; $max = $minmax['max']+1.0; } - $content = "\n"; if ($keepID != -1) { $content .= "
params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\">" . htmlspecialchars($subFolder->getName()) . ""; if(isset($extracontent['below_title'])) $content .= $extracontent['below_title']; - $content .= "
".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".date('Y-m-d', $subFolder->getDate()).""; + $content .= "
".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".getReadableDate($subFolder->getDate()).""; if($comment) { $content .= "
".htmlspecialchars($comment).""; } diff --git a/views/bootstrap/class.Clipboard.php b/views/bootstrap/class.Clipboard.php index 3b75db496..cce60ab47 100644 --- a/views/bootstrap/class.Clipboard.php +++ b/views/bootstrap/class.Clipboard.php @@ -41,8 +41,9 @@ class SeedDMS_View_Clipboard extends SeedDMS_Theme_Style { * @return string html code */ public function menuClipboard() { /* {{{ */ + $settings = $this->params['settings']; $clipboard = $this->params['session']->getClipboard(); - if (/*$this->params['user']->isGuest() ||*/ (count($clipboard['docs']) + count($clipboard['folders'])) == 0) { + if (empty($settings->_alwaysShowClipboard) && (count($clipboard['docs']) + count($clipboard['folders'])) == 0) { return ''; } @@ -58,13 +59,15 @@ class SeedDMS_View_Clipboard extends SeedDMS_Theme_Style { if($document = $this->params['dms']->getDocument($docid)) $subitems[] = array('label'=>' '.$document->getName(), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(), 'class'=>"table-row-document droptarget", 'attributes'=>array(array('data-droptarget', "document_".$document->getID()), array('rel', "document_".$document->getID()), array('formtoken', createFormKey('')), array('data-name', htmlspecialchars($document->getName(), ENT_QUOTES)))); } - $subitems[] = array('divider'=>true); - if(isset($this->params['folder']) && $this->params['folder']->getAccessMode($this->params['user']) >= M_READWRITE) { - $subitems[] = array('label'=>getMLText("move_clipboard"), 'link'=>$this->params['settings']->_httpRoot."op/op.MoveClipboard.php?targetid=".$this->params['folder']->getID()."&refferer=".urlencode($this->params['settings']->_httpRoot.'out/out.ViewFolder.php?folderid='.$this->params['folder']->getID())); + if((count($clipboard['docs']) + count($clipboard['folders'])) > 0) { + $subitems[] = array('divider'=>true); + if(isset($this->params['folder']) && $this->params['folder']->getAccessMode($this->params['user']) >= M_READWRITE) { + $subitems[] = array('label'=>getMLText("move_clipboard"), 'link'=>$this->params['settings']->_httpRoot."op/op.MoveClipboard.php?targetid=".$this->params['folder']->getID()."&refferer=".urlencode($this->params['settings']->_httpRoot.'out/out.ViewFolder.php?folderid='.$this->params['folder']->getID())); + } + $subitems[] = array('label'=>getMLText('clear_clipboard'), 'class'=>'ajax-click', 'attributes'=>array(array('data-href', $this->params['settings']->_httpRoot.'op/op.Ajax.php'), array('data-param1', 'command=clearclipboard'))); + if($this->hasHook('clipboardMenuItems')) + $subitems = $this->callHook('clipboardMenuItems', $clipboard, $subitems); } - $subitems[] = array('label'=>getMLText('clear_clipboard'), 'class'=>'ajax-click', 'attributes'=>array(array('data-href', $this->params['settings']->_httpRoot.'op/op.Ajax.php'), array('data-param1', 'command=clearclipboard'))); - if($this->hasHook('clipboardMenuItems')) - $subitems = $this->callHook('clipboardMenuItems', $clipboard, $subitems); $menuitems['clipboard'] = array('label'=>getMLText('clipboard')." (".count($clipboard['folders'])."/". count($clipboard['docs']).")", 'children'=>$subitems); self::showNavigationBar($menuitems, array('right'=>true)); } /* }}} */ diff --git a/views/bootstrap/class.ConversionServices.php b/views/bootstrap/class.ConversionServices.php index 6f9635ed1..d6b065557 100644 --- a/views/bootstrap/class.ConversionServices.php +++ b/views/bootstrap/class.ConversionServices.php @@ -26,12 +26,7 @@ class SeedDMS_View_ConversionServices extends SeedDMS_Theme_Style { * List all registered conversion services * */ - function list_conversion_services($conversionmgr) { /* {{{ */ - if(!$conversionmgr) - return; - - $allservices = $conversionmgr->getServices(); - + function list_conversion_services($allservices) { /* {{{ */ echo "\n"; echo ""; echo "\n"; @@ -57,9 +52,42 @@ class SeedDMS_View_ConversionServices extends SeedDMS_Theme_Style { $this->globalNavigation(); $this->contentStart(); $this->pageNavigation(getMLText("admin_tools"), "admin_tools"); - $this->contentHeading(getMLText("list_conversion_services")); - self::list_conversion_services($conversionmgr); + if($conversionmgr) { + $allservices = $conversionmgr->getServices(); + if($data = $dms->getStatisticalData('docspermimetype')) { + $this->contentHeading(getMLText("list_conversion_overview")); + echo "
".getMLText('service_list_from')."".getMLText('service_list_to')."".getMLText('class_name')."".getMLText('service_list_info')."
\n"; + echo ""; + echo "\n"; + echo ""; + echo ""; + foreach($data as $d) { + $key = $d['key']; + $t = explode('/', $key); + if(isset($allservices[$key]) || isset($allservices[$t[0].'/*'])) { + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + } + echo "
".getMLText('mimetype')."".getMLText('preview')."".getMLText('fullsearch')."".getMLText('preview_pdf')."
".$key.""; + if($allservices[$key]['image/png']) + echo ''; + echo ""; + if($allservices[$key]['text/plain']) + echo ''; + echo ""; + if($allservices[$key]['application/pdf']) + echo ''; + echo "
"; + } + + $this->contentHeading(getMLText("list_conversion_services")); + self::list_conversion_services($allservices); + } $this->contentEnd(); $this->htmlEndPage(); diff --git a/views/bootstrap/class.ObjectCheck.php b/views/bootstrap/class.ObjectCheck.php index d43496816..4491c45bd 100644 --- a/views/bootstrap/class.ObjectCheck.php +++ b/views/bootstrap/class.ObjectCheck.php @@ -470,6 +470,30 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style { } } /* }}} */ + function listLinkToItself() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + $docslinktoitself = $this->params['docslinktoitself']; + $conversionmgr = $this->params['conversionmgr']; + $cachedir = $this->params['cachedir']; + $previewwidth = $this->params['previewWidthList']; + $previewconverters = $this->params['previewConverters']; + $timeout = $this->params['timeout']; + + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout); + if($conversionmgr) + $previewer->setConversionMgr($conversionmgr); + else + $previewer->setConverters($previewconverters); + + $this->contentHeading(getMLText("docs_with_link_to_itself")); + + if($docslinktoitself) { + $this->printList($docslinktoitself, $previewer); + } + } /* }}} */ + function listDocsInRevisionNoAccess() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; @@ -722,6 +746,7 @@ $(document).ready( function() { $nochecksumversions = $this->params['nochecksumversions']; $duplicateversions = $this->params['duplicateversions']; $duplicatesequences = $this->params['duplicatesequences']; + $docslinktoitself = $this->params['docslinktoitself']; $docsinrevisionnoaccess = $this->params['docsinrevisionnoaccess']; $docsinrevisiondisabled = $this->params['docsinrevisiondisabled']; $docsinreceptionnoaccess = $this->params['docsinreceptionnoaccess']; @@ -759,6 +784,7 @@ $(document).ready( function() { $menuitems = []; $menuitems[] = array('label'=>getMLText('duplicate_content'), 'badge'=>count($duplicateversions), 'attributes'=>array(array('data-href', "#duplicate_content"), array('data-action', "listDuplicateContent"))); $menuitems[] = array('label'=>getMLText('duplicate_sequences'), 'badge'=>count($duplicatesequences), 'attributes'=>array(array('data-href', "#duplicate_sequences"), array('data-action', "listDuplicateSequence"))); + $menuitems[] = array('label'=>getMLText('link_to_itself'), 'badge'=>count($docslinktoitself), 'attributes'=>array(array('data-href', "#link_to_itself"), array('data-action', "listLinkToItself"))); $menuitems[] = array('label'=>getMLText('docs_in_revision_no_access'), 'badge'=>count($docsinrevisionnoaccess), 'attributes'=>array(array('data-href', "#inrevision_no_access"), array('data-action', "listDocsInRevisionNoAccess"))); $menuitems[] = array('label'=>getMLText('docs_in_revision_disabled'), 'badge'=>count($docsinrevisiondisabled), 'attributes'=>array(array('data-href', "#inrevision_disabled"), array('data-action', "listDocsInRevisionDisabled"))); $menuitems[] = array('label'=>getMLText('docs_in_reception_no_access'), 'badge'=>count($docsinreceptionnoaccess), 'attributes'=>array(array('data-href', "#inreception_no_access"), array('data-action', "listDocsInReceptionNoAccess"))); diff --git a/views/bootstrap/class.OverrideContentStatus.php b/views/bootstrap/class.OverrideContentStatus.php index 13a336b68..399dd762b 100644 --- a/views/bootstrap/class.OverrideContentStatus.php +++ b/views/bootstrap/class.OverrideContentStatus.php @@ -37,14 +37,6 @@ class SeedDMS_View_OverrideContentStatus extends SeedDMS_Theme_Style { ?> $(document).ready(function() { $("#form1").validate({ - rules: { - comment: { - required: true - }, - overrideStatus: { - required: true - }, - }, messages: { comment: "", overrideStatus: "", @@ -88,7 +80,7 @@ $(document).ready(function() { array( 'element'=>'textarea', 'name'=>'comment', - 'required'=>true, + 'required'=>false, 'rows'=>4, ) ); @@ -108,6 +100,7 @@ $(document).ready(function() { 'element'=>'select', 'name'=>'overrideStatus', 'options'=>$options, + 'required'=>true, ) ); $this->contentContainerEnd(); diff --git a/views/bootstrap/class.RoleMgr.php b/views/bootstrap/class.RoleMgr.php index 1cecc7f17..f5e8bcb51 100644 --- a/views/bootstrap/class.RoleMgr.php +++ b/views/bootstrap/class.RoleMgr.php @@ -117,7 +117,7 @@ $(document).ready( function() { - formSubmit(' '.getMLText('rm_role'),'','','neutral');?> + formSubmit(' '.getMLText('rm_role'),'','','secondary');?> -
- -
- :: -
-
formField( + getMLText('scheduler_class'), + $extname.'::'.$taskname + ); $this->formField( getMLText('task_name'), array( diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index 633d89e2d..2cf09f5e6 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -107,6 +107,50 @@ $(document).ready( function() { }); } }); + + $('body').on('click', 'a.add-reviewer-btn', function(ev){ + ev.preventDefault(); + ev.stopPropagation(); +console.log('add reviewer '+$('#addreviewer').val()); + confirmmsg = $(ev.currentTarget).attr('confirmmsg'); + href = $(ev.currentTarget).attr('href'); + var url = href+'&newreviewer='+($('#addreviewer').val()); + var values = {}; + $('input[name^=\"marks\"]').each(function() { + if(this.checked) + values[this.name] = 1; + }); + url += '&'+$.param(values); + if($('#addreviewer').val() && Object.keys(values).length > 0) { + SeedDMSBox.redirect(url, { + 'message': confirmmsg, + 'cancelLabel': '', + 'confirmLabel': ' ' + }); + } + }); + + $('body').on('click', 'a.add-approver-btn', function(ev){ + ev.preventDefault(); + ev.stopPropagation(); +console.log('add approver '+$('#addapprover').val()); + confirmmsg = $(ev.currentTarget).attr('confirmmsg'); + href = $(ev.currentTarget).attr('href'); + var url = href+'&newapprover='+($('#addapprover').val()); + var values = {}; + $('input[name^=\"marks\"]').each(function() { + if(this.checked) + values[this.name] = 1; + }); + url += '&'+$.param(values); + if($('#addapprover').val() && Object.keys(values).length > 0) { + SeedDMSBox.redirect(url, { + 'message': confirmmsg, + 'cancelLabel': '', + 'confirmLabel': ' ' + }); + } + }); }); printFolderChooserJs("form1"); @@ -245,6 +289,58 @@ $(document).ready(function() { return self::show(); } /* }}} */ + function addreviewer() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $entries = $this->params['searchhits']; + $newreviewer = $this->params['newreviewer']; + $marks = $this->params['marks']; + + if($newreviewer && $user->isAdmin()) { + $j = $i = 0; + foreach($entries as $entry) { + if($entry->isType('document') && $lc = $entry->getLatestContent()) { + if(empty($marks) || !empty($marks['D'.$entry->getId()])) { + if($lc->addIndReviewer($newreviewer, $user)) { + $lc->verifyStatus(true, $user); + $j++; + } + } + } + } + $this->setParam('batchmsg', getMLText('batch_add_reviewer_msg', ['count'=>$j, 'name'=>$newreviewer->getFullName()])); + } else { + } + + return self::show(); + } /* }}} */ + + function addapprover() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $entries = $this->params['searchhits']; + $newapprover = $this->params['newapprover']; + $marks = $this->params['marks']; + + if($newapprover && $user->isAdmin()) { + $j = $i = 0; + foreach($entries as $entry) { + if($entry->isType('document') && $lc = $entry->getLatestContent()) { + if(empty($marks) || !empty($marks['D'.$entry->getId()])) { + if($lc->addIndApprover($newapprover, $user)) { + $lc->verifyStatus(true, $user); + $j++; + } + } + } + } + $this->setParam('batchmsg', getMLText('batch_add_approver_msg', ['count'=>$j, 'name'=>$newapprover->getFullName()])); + } else { + } + + return self::show(); + } /* }}} */ + function changecategory() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; @@ -1420,9 +1516,10 @@ $(document).ready(function() { } /* Batch operations {{{ */ - if($total) + if($settings->_batchOperations && $total) $this->contentHeading(getMLText('batch_operation')); if($totaldocs) { + if(in_array('export', $settings->_batchOperations)) { ob_start(); $this->formField( getMLText("include_content"), @@ -1435,12 +1532,15 @@ $(document).ready(function() { ) ); //$this->formSubmit(" ".getMLText('export')); - print $this->html_link('Search', array_merge($_GET, array('action'=>'export')), array('class'=>'btn btn-primary', 'id'=>'export'), " ".getMLText("export"), false, true)."\n"; + print $this->html_link('Search', array_merge($_GET, array('action'=>'export')), array('class'=>'btn btn-primary', 'id'=>'export'), " ".getMLText("batch_export"), false, true)."\n"; $content = ob_get_clean(); $this->printAccordion(getMLText('export'), $content); + } } - if($user->isAdmin() && $total) { + /* All other batch operations are only allowed for admins */ + if($user->isAdmin()) { + if($total && in_array('change_owner', $settings->_batchOperations)) { ob_start(); $users = $dms->getAllUsers(); $options = array(); @@ -1465,7 +1565,61 @@ $(document).ready(function() { $content = ob_get_clean(); $this->printAccordion(getMLText('batch_change_owner'), $content); + } + if($totaldocs && in_array('add_reviewer', $settings->_batchOperations)) { + ob_start(); + $users = $dms->getAllUsers(); + $options = array(); + foreach ($users as $currUser) { + $options[] = array($currUser->getID(), htmlspecialchars($currUser->getLogin().' - '.$currUser->getFullName()), false, array(array('data-subtitle', htmlspecialchars($currUser->getEmail())))); + } + $this->formField( + null, //getMLText("selection"), + array( + 'element'=>'select', + 'id'=>'addreviewer', + 'class'=>'chzn-select', + 'options'=>$options, + 'allow_empty'=>true, + 'placeholder'=>getMLText('select_users'), + 'attributes'=>array(array('style', 'width: 100%;')) + ) + ); + + print $this->html_link('Search', array_merge($_GET, array('action'=>'addreviewer')), array('class'=>'btn btn-primary add-reviewer-btn mt-4', 'confirmmsg'=>htmlspecialchars(getMLText("confirm_add_reviewer", array ()), ENT_QUOTES)), " ".getMLText("batch_add_reviewer"), false, true)."\n"; + + $content = ob_get_clean(); + $this->printAccordion(getMLText('batch_add_reviewer'), $content); + } + + if($totaldocs && in_array('add_approver', $settings->_batchOperations)) { + ob_start(); + $users = $dms->getAllUsers(); + $options = array(); + foreach ($users as $currUser) { + $options[] = array($currUser->getID(), htmlspecialchars($currUser->getLogin().' - '.$currUser->getFullName()), false, array(array('data-subtitle', htmlspecialchars($currUser->getEmail())))); + } + $this->formField( + null, //getMLText("selection"), + array( + 'element'=>'select', + 'id'=>'addapprover', + 'class'=>'chzn-select', + 'options'=>$options, + 'allow_empty'=>true, + 'placeholder'=>getMLText('select_users'), + 'attributes'=>array(array('style', 'width: 100%;')) + ) + ); + + print $this->html_link('Search', array_merge($_GET, array('action'=>'addapprover')), array('class'=>'btn btn-primary add-approver-btn mt-4', 'confirmmsg'=>htmlspecialchars(getMLText("confirm_add_approver", array ()), ENT_QUOTES)), " ".getMLText("batch_add_approver"), false, true)."\n"; + + $content = ob_get_clean(); + $this->printAccordion(getMLText('batch_add_approver'), $content); + } + + if($totaldocs && in_array('change_category', $settings->_batchOperations)) { ob_start(); $cats = $dms->getDocumentCategories(); if($cats) { @@ -1501,6 +1655,7 @@ $(document).ready(function() { $content = ob_get_clean(); $this->printAccordion(getMLText('batch_change_category'), $content); } + } } // }}} diff --git a/views/bootstrap/class.SetExpires.php b/views/bootstrap/class.SetExpires.php index 08359a68b..53dcb2f51 100644 --- a/views/bootstrap/class.SetExpires.php +++ b/views/bootstrap/class.SetExpires.php @@ -72,6 +72,7 @@ $(document).ready( function() { $options = array(); $options[] = array('never', getMLText('does_not_expire')); $options[] = array('date', getMLText('expire_by_date'), $expdate != ''); + $options[] = array('today', getMLText('expire_today').' ('.date($df, getTsByPeriod('today', 's')).')'); $options[] = array('tomorrow', getMLText('expire_tomorrow').' ('.date($df, getTsByPeriod('tomorrow', 's')).')'); $options[] = array('1w', getMLText('expire_in_1w').' ('.date($df, getTsByPeriod('1w', 's')).')'); $options[] = array('1m', getMLText('expire_in_1m').' ('.date($df, getTsByPeriod('1m', 's')).')'); @@ -92,7 +93,7 @@ $(document).ready( function() { ); $this->formField( getMLText("expires"), - $this->getDateChooser($expdate, "expdate", $this->params['session']->getLanguage(), '', '+1d') + $this->getDateChooser($expdate, "expdate", $this->params['session']->getLanguage(), '', '') // set last parameter to '+1d' if dates in the past are not allowed ); $this->contentContainerEnd(); $this->formSubmit(" ".getMLText('save')); diff --git a/views/bootstrap/class.SetRevisors.php b/views/bootstrap/class.SetRevisors.php index fc7f965c9..90bd3aa1e 100644 --- a/views/bootstrap/class.SetRevisors.php +++ b/views/bootstrap/class.SetRevisors.php @@ -74,10 +74,12 @@ class SeedDMS_View_SetRevisors extends SeedDMS_Theme_Style { contentContainerStart(); if($content->getStatus()['status'] == S_IN_REVISION) { echo ''; + $this->infoMsg(getMLText('document_in_revision_no_date')); + $this->contentContainerStart(); } else { + $this->contentContainerStart(); $this->formField( getMLText("revision_date"), $this->getDateChooser($startdate, "startdate", $this->params['session']->getLanguage()) diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index e93311cbf..57971e275 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -419,9 +419,13 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) showConfigOption('settings_defaultSearchMethod', 'defaultSearchMethod', array('database'=>'settings_defaultSearchMethod_valdatabase', 'fulltext'=>'settings_defaultSearchMethod_valfulltext'), false, true); ?> showConfigCheckbox('settings_showSingleSearchHit', 'showSingleSearchHit'); ?> showConfigOption('settings_suggestTerms', 'suggestTerms', array('title','comment', 'keywords', 'content'), true, true); ?> +showConfigOption('settings_batchOperations', 'batchOperations', array('export'=>'batch_export', 'change_category'=>'batch_change_category', 'change_owner'=>'batch_change_owner', 'add_reviewer'=>'batch_add_reviewer', 'add_approver'=>'batch_add_approver', 'change_category'=>'batch_change_category'), true, true); ?> showConfigText('settings_stopWordsFile', 'stopWordsFile'); ?> showConfigCheckbox('settings_enableClipboard', 'enableClipboard'); ?> +showConfigCheckbox('settings_alwaysShowClipboard', 'alwaysShowClipboard'); ?> +showConfigCheckbox('settings_enableMenuTransmittals', 'enableMenuTransmittals'); ?> showConfigCheckbox('settings_enableMenuTasks', 'enableMenuTasks'); ?> +showConfigCheckbox('settings_alwaysShowMenuTasks', 'alwaysShowMenuTasks'); ?> showConfigOption('settings_tasksInMenu', 'tasksInMenu', array('review'=>'settings_tasksInMenu_review', 'approval'=>'settings_tasksInMenu_approval', 'workflow'=>'settings_tasksInMenu_workflow', 'receipt'=>'settings_tasksInMenu_receipt', 'revision'=>'settings_tasksInMenu_revision', 'needscorrection'=>'settings_tasksInMenu_needscorrection', 'rejected'=>'settings_tasksInMenu_rejected', 'checkedout'=>'settings_tasksInMenu_checkedout'), true, true); ?> showConfigCheckbox('settings_enableDropFolderList', 'enableDropFolderList'); ?> showConfigCheckbox('settings_enableSessionList', 'enableSessionList'); ?> @@ -667,9 +671,10 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) _extensions[$extname][$confkey]) ? array() : explode(",", $settings->_extensions[$extname][$confkey]); - echo ""; if(is_array($conf['options'])) { $options = $conf['options']; } elseif(is_string($conf['options']) && $conf['options'] == 'hook') { @@ -677,6 +682,8 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) } else { $options = []; } + if($allowempty) + echo ""; foreach($options as $key=>$opt) { echo "