From 770daa330c8abb4343f37234da1cc920eacb3fce Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 12 Feb 2019 08:18:10 +0100 Subject: [PATCH 001/467] SeedDMS_Core_Document::getTimeline() returns revision only for latest content --- SeedDMS_Core/Core/inc.ClassDocument.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 0e331afca..d2ebdcd53 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -2918,7 +2918,8 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ $timeline = array(); - $queryStr = "SELECT `revisiondate`, `version` FROM `tblDocumentContent` WHERE `document` = " . $this->_id; + $lc=$this->getLatestContent(); + $queryStr = "SELECT `revisiondate`, `version` FROM `tblDocumentContent` WHERE `document` = " . $this->_id . " AND `version` = " . $lc->getVersion(); $resArr = $db->getResultArray($queryStr); if (is_bool($resArr) && $resArr == false) return false; From b2fa733a0df4d1b98e89da4ba7cc392baa605ea3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 12 Feb 2019 08:18:16 +0100 Subject: [PATCH 002/467] new note for 6.0.7 --- SeedDMS_Core/package.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index 68a71ded1..00b040a11 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -24,7 +24,7 @@ GPL License - ??? +SeedDMS_Core_Document::getTimeline() returns revision only for latest content From feee5600c43dea9295b977e638fd23bc3d5dfe45 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 14 Feb 2019 12:33:11 +0100 Subject: [PATCH 003/467] =?UTF-8?q?add=20new=20list=20type=20=C2=B4DueRevi?= =?UTF-8?q?sion'=20in=20getDocumentList()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SeedDMS_Core/Core/inc.ClassDocument.php | 48 +++++++++++++++++++++---- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 102f841cc..6ec85ab4c 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -808,7 +808,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ /** - * Check if latest content of the document has a schedult + * Check if latest content of the document has a scheduled * revision workflow. * The method will update the document status log database table * if needed. @@ -825,8 +825,9 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if($lc) { $st=$lc->getStatus(); + /* A revision workflow will only be started if the document is released */ if($st["status"] == S_RELEASED) { - /* First check if there are any revisors left who need to revise */ + /* First check if there are any scheduled revisions currently sleeping */ $pendingRevision=false; unset($this->_revisionStatus); // force to be reloaded from DB $revisionStatus=$lc->getRevisionStatus(); @@ -841,7 +842,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if(!$pendingRevision) return false; - /* Second check if revision is already due */ + /* We have sleeping revision, next check if the revision is already due */ if($lc->getRevisionDate() && $lc->getRevisionDate() <= date('Y-m-d 00:00:00')) { if($lc->startRevision($user, 'Automatic start of revision workflow')) { if($next) { @@ -3051,23 +3052,30 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * This method will call {@see SeedDMS_Core_DocumentContent::setStatus()} * which checks if the state has actually changed. This is, why this * function can be called at any time without harm to the status log. + * The $initialstatus can be set, to define the status set when no other + * status is set. This happens if the document has no * * @param boolean $ignorecurrentstatus ignore the current status and * recalculate a new status in any case * @param object $user the user initiating this method * @param string $msg message stored in status log when status is set + * @param integer $initialstatus status to be set if no other status is set */ - function verifyStatus($ignorecurrentstatus=false, $user=null, $msg='') { /* {{{ */ + function verifyStatus($ignorecurrentstatus=false, $user=null, $msg='', $initialstatus=S_RELEASED) { /* {{{ */ unset($this->_status); $st=$this->getStatus(); + /* Documents already obsoleted, rejected or expired will not change + * its status anymore, unless explicitly requested. + */ if (!$ignorecurrentstatus && ($st["status"]==S_OBSOLETE || $st["status"]==S_REJECTED || $st["status"]==S_EXPIRED )) return; unset($this->_workflow); // force to be reloaded from DB $hasworkflow = $this->getWorkflow() ? true : false; $pendingReview=false; + $hasReview=false; unset($this->_reviewStatus); // force to be reloaded from DB $reviewStatus=$this->getReviewStatus(); if (is_array($reviewStatus) && count($reviewStatus)>0) { @@ -3075,10 +3083,13 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ if ($r["status"]==0){ $pendingReview=true; break; + } elseif($r["status"]==1){ + $hasReview=true; } } } $pendingApproval=false; + $hasApproval=false; unset($this->_approvalStatus); // force to be reloaded from DB $approvalStatus=$this->getApprovalStatus(); if (is_array($approvalStatus) && count($approvalStatus)>0) { @@ -3086,10 +3097,13 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ if ($a["status"]==0){ $pendingApproval=true; break; + } elseif($a["status"]==1){ + $hasApproval=true; } } } $pendingRevision=false; + $hasRevision=false; unset($this->_revisionStatus); // force to be reloaded from DB $revsisionStatus=$this->getRevisionStatus(); if (is_array($revsisionStatus) && count($revsisionStatus)>0) { @@ -3097,16 +3111,29 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ if ($a["status"]==0){ $pendingRevision=true; break; + } elseif($a["status"]==1){ + $hasRevision=true; } } } + /* First check for an open review, approval, revision. */ if ($hasworkflow) $this->setStatus(S_IN_WORKFLOW,$msg,$user); elseif ($pendingReview) $this->setStatus(S_DRAFT_REV,$msg,$user); elseif ($pendingApproval) $this->setStatus(S_DRAFT_APP,$msg,$user); elseif ($pendingRevision) $this->setStatus(S_IN_REVISION,$msg,$user); - /* A document in status S_DRAFT will never go into S_RELEASED */ - elseif ($st["status"]!=S_DRAFT) $this->setStatus(S_RELEASED,$msg,$user); + /* Finally decide what to do if either no review, approval, revision was + * ever done or if one of them has been done. In the first case it will + * go to the initial status, in the second case, it will be released. + * A document in status S_DRAFT will never go into S_RELEASED and document + * already released will never go back at this point into the given + * initial status, which can only by S_DRAFT or S_RELEASED + */ + elseif ($st["status"]!=S_DRAFT && $st["status"]!=S_RELEASED ) { + if($hasReview || $hasApproval || $hasRevision) $this->setStatus(S_RELEASED,$msg,$user); + else $this->setStatus($initialstatus,$msg,$user); + } + } /* }}} */ function __construct($id, $document, $version, $comment, $date, $userID, $dir, $orgFileName, $fileType, $mimeType, $fileSize=0, $checksum='', $revisionDate=null) { /* {{{ */ @@ -3398,6 +3425,15 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ if (is_bool($res) && !$res) return false; + /* Check if 'onSetStatus' callback is set */ + if(isset($this->_dms->callbacks['onSetStatus'])) { + foreach($this->_dms->callbacks['onSetStatus'] as $callback) { + $ret = call_user_func($callback[0], $callback[1], $this, $this->_status["status"], $status); + if(is_bool($ret)) + return $ret; + } + } + unset($this->_status); return true; } /* }}} */ From 08fac559c9ade23fa22acdb149e963b8927d9acd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 14 Feb 2019 12:33:50 +0100 Subject: [PATCH 004/467] add new list type 'DueRevision' in getDocumentList --- SeedDMS_Core/Core/inc.ClassDMS.php | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index ca6469110..904baa010 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -1331,7 +1331,7 @@ class SeedDMS_Core_DMS { } } break; // }}} - case 'ReviseByMe': // Documents I have to receipt {{{ + case 'ReviseByMe': // Documents I have to revise {{{ if (!$this->db->createTemporaryTable("ttrevisionid")) { return false; } @@ -1403,6 +1403,27 @@ class SeedDMS_Core_DMS { } } break; // }}} + case 'DueRevision': // Documents with a due revision, which is not started {{{ + if (!$this->db->createTemporaryTable("ttrevisionid")) { + return false; + } + $user = $param1; + $orderby = $param3; + if($param4 == 'desc') + $orderdir = 'DESC'; + else + $orderdir = 'ASC'; + + $selectStr .= ", `tblDocumentContent`.`revisiondate` "; + $queryStr .= "WHERE `tblDocumentContent`.`revisiondate` IS NOT NULL AND `tblDocumentContent`.`revisiondate` <= ".$this->db->getCurrentDatetime()." "; + $queryStr .= "AND `tblDocumentStatusLog`.`status` = ".S_RELEASED." "; + if ($orderby=='e') $queryStr .= "ORDER BY `expires`"; + else if ($orderby=='u') $queryStr .= "ORDER BY `statusDate`"; + else if ($orderby=='s') $queryStr .= "ORDER BY `status`"; + else $queryStr .= "ORDER BY `name`"; + $queryStr .= " ".$orderdir; + $queryStr .= ", `tblDocumentContent`.`revisiondate` ASC"; + break; // }}} case 'WorkflowByMe': // Documents I to trigger in Worklflow {{{ $queryStr .= "WHERE 1=1 "; From ee8802005464180041139d8ac7c1fcb33457027f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 14 Feb 2019 12:35:18 +0100 Subject: [PATCH 005/467] check frequency --- op/op.SchedulerTaskMgr.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/op/op.SchedulerTaskMgr.php b/op/op.SchedulerTaskMgr.php index 6904da2c7..ca0ce4ea2 100644 --- a/op/op.SchedulerTaskMgr.php +++ b/op/op.SchedulerTaskMgr.php @@ -95,11 +95,12 @@ else if ($action == "edittask") { /* {{{ */ $editedtask->setName($name); if ($editedtask->getDescription() != $description) $editedtask->setDescription($description); - $editedtask->setFrequency($frequency); $editedtask->setDisabled($disabled); $editedtask->setParameter($params); - - $session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_edit_task'))); + if($editedtask->setFrequency($frequency)) + $session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_edit_task'))); + else + $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_edit_task'))); add_log_line(".php&action=edittask&taskid=".$taskid); } /* }}} */ From 4b7e9d9c755f740b3868e3d0242e7a2471096215 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 14 Feb 2019 12:35:57 +0100 Subject: [PATCH 006/467] log run of execution --- utils/schedulercli.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/utils/schedulercli.php b/utils/schedulercli.php index bf2ddeda4..1a548d172 100644 --- a/utils/schedulercli.php +++ b/utils/schedulercli.php @@ -57,7 +57,9 @@ if(isset($options['mode'])) { } include($myincpath."/inc/inc.Settings.php"); +include($myincpath."/inc/inc.LogInit.php"); include($myincpath."/inc/inc.Init.php"); +include($myincpath."/inc/inc.Language.php"); include($myincpath."/inc/inc.Extension.php"); include($myincpath."/inc/inc.DBInit.php"); include($myincpath."/inc/inc.Scheduler.php"); @@ -72,9 +74,10 @@ foreach($tasks as $task) { if(method_exists($taskobj, 'execute')) { if(!$task->getDisabled()) { if($taskobj->execute($task, $dms)) { + add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." successful."); $task->updateLastNextRun(); } else { - echo "Execution of task failed, task has been disabled\n"; + add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." failed, task has been disabled.", PEAR_LOG_ERR); $task->setDisabled(1); } } From 6d5ce06c9f83498fa32db41f202763b1d0cb3fac Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 14 Feb 2019 12:45:39 +0100 Subject: [PATCH 007/467] add_log_line() be used from command line scripts without errors --- inc/inc.Utils.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/inc/inc.Utils.php b/inc/inc.Utils.php index e4404c056..28459a7d3 100644 --- a/inc/inc.Utils.php +++ b/inc/inc.Utils.php @@ -343,14 +343,19 @@ function add_log_line($msg="", $priority=null) { /* {{{ */ if(!$logger) return; + $ip = "-"; if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; - else + elseif(!empty($_SERVER['REMOTE_ADDR'])) $ip = $_SERVER['REMOTE_ADDR']; - if($user) - $logger->log($user->getLogin()." (".$ip.") ".basename($_SERVER["REQUEST_URI"], ".php").($msg ? ' '.$msg : ''), $priority); + if(!empty($_SERVER["REQUEST_URI"])) + $scriptname = basename($_SERVER["REQUEST_URI"], ".php"); else - $logger->log("-- (".$ip.") ".basename($_SERVER["REQUEST_URI"], ".php").($msg ? ' '.$msg : ''), $priority); + $scriptname = basename($_SERVER["SCRIPT_NAME"], ".php"); + if($user) + $logger->log($user->getLogin()." (".$ip.") ".$scriptname.($msg ? ' '.$msg : ''), $priority); + else + $logger->log("-- (".$ip.") ".$scriptname.($msg ? ' '.$msg : ''), $priority); } /* }}} */ function _add_log_line($msg="") { /* {{{ */ From 3ccc9f51764ecfcb637be0d91494f3c0184cd981 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 14 Feb 2019 12:46:11 +0100 Subject: [PATCH 008/467] add more notes for 6.0.7 --- SeedDMS_Core/package.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index 00b040a11..1b521517e 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -25,6 +25,8 @@ GPL License SeedDMS_Core_Document::getTimeline() returns revision only for latest content +add callback onSetStatus in SeedDMS_Core_DocumentContent::setStatus() +add new list type 'DueRevision' in SeedDMS_Core_DMS::getDocumentList() From 695c7c7c44b2a371a7a51dcf28c5e158a9d586d2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 14 Feb 2019 12:47:03 +0100 Subject: [PATCH 009/467] pass initial document status to verifyStatus() --- op/op.SetReviewersApprovers.php | 2 +- op/op.SetRevisors.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/op/op.SetReviewersApprovers.php b/op/op.SetReviewersApprovers.php index f895945dd..f5a4f119a 100644 --- a/op/op.SetReviewersApprovers.php +++ b/op/op.SetReviewersApprovers.php @@ -586,7 +586,7 @@ if (count($approvalIndex["g"]) > 0) { -$content->verifyStatus(false,$user); +$content->verifyStatus(false, $user, '', $settings->_initialDocumentStatus); add_log_line("?documentid=".$documentid); header("Location:../out/out.DocumentVersionDetail.php?documentid=".$documentid."&version=".$version); diff --git a/op/op.SetRevisors.php b/op/op.SetRevisors.php index e146ea215..0135c4c45 100644 --- a/op/op.SetRevisors.php +++ b/op/op.SetRevisors.php @@ -324,7 +324,7 @@ if (count($revisionIndex["g"]) > 0) { } /* Recheck status, because all revisors could have been removed */ -$content->verifyStatus(false, $user, getMLText('automatic_status_update')); +$content->verifyStatus(false, $user, getMLText('automatic_status_update'), $settings->_initialDocumentStatus); add_log_line("?documentid=".$documentid); header("Location:../out/out.DocumentVersionDetail.php?documentid=".$documentid."&version=".$version); From add79b47d1aaf5ee244265a75955bd5acc33b693 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 27 Feb 2019 11:56:33 +0100 Subject: [PATCH 010/467] fix syntax error, run update of index even if update hook was called before --- controllers/class.UpdateDocument.php | 31 +++++++++------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/controllers/class.UpdateDocument.php b/controllers/class.UpdateDocument.php index 09d93987a..602d5eea1 100644 --- a/controllers/class.UpdateDocument.php +++ b/controllers/class.UpdateDocument.php @@ -69,32 +69,21 @@ class SeedDMS_Controller_UpdateDocument extends SeedDMS_Controller_Common { } } - if($recipients['i']) { - foreach($recipients['i'] as $uid) { - if($u = $dms->getUser($uid)) { - $res = $contentResult->getContent()->addIndRecipient($u, $user); + if($recipients['i']) { + foreach($recipients['i'] as $uid) { + if($u = $dms->getUser($uid)) { + $res = $contentResult->getContent()->addIndRecipient($u, $user); + } } } - } - if($recipients['g']) { - foreach($recipients['g'] as $gid) { - if($g = $dms->getGroup($gid)) { - $res = $contentResult->getContent()->addGrpRecipient($g, $user); + if($recipients['g']) { + foreach($recipients['g'] as $gid) { + if($g = $dms->getGroup($gid)) { + $res = $contentResult->getContent()->addGrpRecipient($g, $user); + } } } - } - if($index) { - $lucenesearch = new $indexconf['Search']($index); - if($hit = $lucenesearch->getDocument((int) $document->getId())) { - $index->delete($hit->id); - } - $idoc = new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, !($filesize < $settings->_maxSizeForFullText)); - if(!$this->callHook('preIndexDocument', $document, $idoc)) { - } - - if(!$this->callHook('postUpdateDocument', $document, $contentResult->getContent())) { - } $content = $contentResult->getContent(); } else { $this->errormsg = 'error_update_document'; From ce3bb7d8ca14aa0cba935de59731f1435ebd5120 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 27 Feb 2019 15:40:21 +0100 Subject: [PATCH 011/467] fix typo in variable name --- op/op.ReviseDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op/op.ReviseDocument.php b/op/op.ReviseDocument.php index cc4f1830f..773da2979 100644 --- a/op/op.ReviseDocument.php +++ b/op/op.ReviseDocument.php @@ -92,7 +92,7 @@ if ($_POST["revisionType"] == "grp") { } $controller->setParam('group', $group); $controller->setParam('comment', $_POST["comment"]); -$controller->setParam('onevotereject', $settins->_enableRevisionOnVoteReject); +$controller->setParam('onevotereject', $settings->_enableRevisionOnVoteReject); if(!$controller->run()) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($controller->getErrorMsg())); } From 83e8f900e5e0179fb8261217c3f77104e77ce7ba Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 11 Mar 2019 18:27:20 +0100 Subject: [PATCH 012/467] fix setting role --- SeedDMS_Core/Core/inc.ClassUser.php | 1 - 1 file changed, 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassUser.php b/SeedDMS_Core/Core/inc.ClassUser.php index f6db633c2..63714308a 100644 --- a/SeedDMS_Core/Core/inc.ClassUser.php +++ b/SeedDMS_Core/Core/inc.ClassUser.php @@ -713,7 +713,6 @@ class SeedDMS_Core_User { /* {{{ */ */ function setRole($newrole) { /* {{{ */ $db = $this->_dms->getDB(); - $newrole = intval($newrole); if(is_object($newrole)) $queryStr = "UPDATE `tblUsers` SET `role` = " . $newrole->getID() . " WHERE `id` = " . $this->_id; From fd5bfe246f01eec3af0e60342e6f0ae25a6854b3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 14 Mar 2019 09:37:21 +0100 Subject: [PATCH 013/467] various minor corrections of sql statements improves compatibility with postgres --- SeedDMS_Core/Core/inc.ClassDocument.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 6ec85ab4c..082dc67d7 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -2920,7 +2920,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ $timeline = array(); $lc=$this->getLatestContent(); - $queryStr = "SELECT `revisiondate`, `version` FROM `tblDocumentContent` WHERE `document` = " . $this->_id . " AND `version` = " . $lc->getVersion(); + $queryStr = "SELECT `revisiondate`, `version` FROM `tblDocumentContent` WHERE `document` = " . $this->_id . " AND `version` = " . $lc->getVersion(); $resArr = $db->getResultArray($queryStr); if (is_bool($resArr) && $resArr == false) return false; @@ -3325,9 +3325,11 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * * @return array latest record from tblDocumentStatusLog */ - function getStatus() { /* {{{ */ + function getStatus($limit=1) { /* {{{ */ $db = $this->_document->_dms->getDB(); + if (!is_numeric($limit)) return false; + // Retrieve the current overall status of the content represented by // this object. if (!isset($this->_status)) { @@ -3339,7 +3341,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ "LEFT JOIN `tblDocumentStatusLog` USING (`statusID`) ". "WHERE `tblDocumentStatus`.`documentID` = '". $this->_document->getID() ."' ". "AND `tblDocumentStatus`.`version` = '". $this->_version ."' ". - "ORDER BY `tblDocumentStatusLog`.`statusLogID` DESC LIMIT 1"; + "ORDER BY `tblDocumentStatusLog`.`statusLogID` DESC LIMIT ".(int) $limit; $res = $db->getResultArray($queryStr); if (is_bool($res) && !$res) @@ -5418,7 +5420,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ if (!$this->_workflowState) { $queryStr= - "SELECT b.* FROM `tblWorkflowDocumentContent` a LEFT JOIN `tblWorkflowStates` b ON a.`state` = b.`id` WHERE `a`.`id`=". $this->_workflow->getID(); + "SELECT b.* FROM `tblWorkflowDocumentContent` a LEFT JOIN `tblWorkflowStates` b ON a.`state` = b.id WHERE `a`.`id`=". $this->_workflow['id']; $recs = $db->getResultArray($queryStr); if (is_bool($recs) && !$recs) return false; @@ -5482,7 +5484,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ if (!isset($this->_workflow)) { $queryStr= - "SELECT a.`id` as `wdcid`, a.`parent`, b.* FROM `tblWorkflowDocumentContent` a LEFT JOIN `tblWorkflows` b ON a.`workflow` = b.id WHERE a.`version`='".$this->_version + "SELECT a.`id` as `wdcid`, a.`parent`, b.* FROM `tblWorkflowDocumentContent` a LEFT JOIN `tblWorkflows` b ON a.`workflow` = b.`id` WHERE a.`version`='".$this->_version ."' AND a.`document` = '". $this->_document->getID() ."' " ." AND a.`state` IS NOT NULL" ." ORDER BY `date` DESC LIMIT 1"; @@ -5974,8 +5976,8 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * the next state will be reached if one of the transitions * leading to the given state can be processed. */ - if($nextstate->getPreCondFunc() == '') { - $workflow = $this->_workflow['workflow']; + if($nextstate->getPreCondFunc() == '') { + $workflow = $this->_workflow['workflow']; $transitions = $workflow->getPreviousTransitions($nextstate); foreach($transitions as $transition) { // echo "transition ".$transition->getID()." led to state ".$nextstate->getName()."
"; From c3b13c21b240206fec50df0a5f8f79e0ae8f1359 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 18 Mar 2019 06:42:22 +0100 Subject: [PATCH 014/467] =?UTF-8?q?fix=20various=20error=D1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/README.Dist-Layout | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/README.Dist-Layout b/doc/README.Dist-Layout index 5dd8a2d57..7c18113f5 100644 --- a/doc/README.Dist-Layout +++ b/doc/README.Dist-Layout @@ -21,7 +21,7 @@ SeedDMS_Lucene, SeedDMS_Preview, SeedDMS_SQLiteFTS. 'seeddms-5.1.x' are the sources of seeddms and 'www' being a link on it. This layout has disadvantages when updating the source of seeddms, because -the directories 'conf' and 'ext' has to be moved from 'seeddms-5.1.x' to +the directories 'conf' and 'ext' had to be moved from 'seeddms-5.1.x' to 'seeddms-5.1.(x+1)'. 'conf' was also visible over the web unless it was protected by an .htaccess file. The .htaccess file has been shipped, but it is far better to keep senѕitive data out of the document root in the first @@ -31,11 +31,14 @@ The new layout mostly retains that structure but uses more soft links to place the local data outside of 'seeddms-5.1.x' which makes updating a lot easier and moves the configuration out of the document root. As MS Windows does not support soft links, this change will only apply to Linux/Unix -systems. The new layout is the following: +systems. MS Windows users just skip all the soft links and set seeddms-5.1.x +as the document root. The new layout is the following: seeddms51x ---+--- data --+-- log | | - | +-- ext + | +-- cache + | | + | +-- 1048576 | | | +-- ... | @@ -69,17 +72,15 @@ seeddms51x ---+--- data --+-- log | +-- index.php -> ../seeddms/index.php | - +-- ext -> ../data/ext + +-- ext In order to convert to this layout you need to do the following in the seeddms51x directory: ln -s seeddms-5.1.x seeddms mv www/conf . -mv www/ext data -rm www -mdkir www cd www +rm inc op out views controllers styles languages webdav restapi pdfviewer index.php ln -s ../seeddms/inc ln -s ../seeddms/op ln -s ../seeddms/out @@ -91,4 +92,3 @@ ln -s ../seeddms/webdav ln -s ../seeddms/restapi ln -s ../seeddms/pdfviewer ln -s ../seeddms/index.php -ln -s ../data/ext From b953ead7963ebd1bae13c87047672bb466a46768 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 18 Mar 2019 06:55:02 +0100 Subject: [PATCH 015/467] fix merge errors --- doc/README.Dist-Layout | 7 ------- 1 file changed, 7 deletions(-) diff --git a/doc/README.Dist-Layout b/doc/README.Dist-Layout index ecdc5e214..0b58c09e2 100644 --- a/doc/README.Dist-Layout +++ b/doc/README.Dist-Layout @@ -78,14 +78,7 @@ In order to convert to this layout you need to do the following in the seeddms51 directory (replace seeddms-5.1.x with you installed version of seeddms): ln -s seeddms-5.1.x seeddms -<<<<<<< HEAD -mv seeddms-5.1.x/conf . -rm www -mkdir www -mv seeddms-5.1.x/ext www -======= mv www/conf . ->>>>>>> seeddms-5.1.x cd www rm inc op out views controllers styles languages webdav restapi pdfviewer index.php ln -s ../seeddms/inc From 539b5d3223b84295dc866b311e35350ed065bd70 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 18 Mar 2019 07:35:11 +0100 Subject: [PATCH 016/467] fix commands for converting from old to new layout --- doc/README.Dist-Layout | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/README.Dist-Layout b/doc/README.Dist-Layout index 7c18113f5..6822c63b5 100644 --- a/doc/README.Dist-Layout +++ b/doc/README.Dist-Layout @@ -75,10 +75,11 @@ seeddms51x ---+--- data --+-- log +-- ext In order to convert to this layout you need to do the following in the seeddms51x -directory: +directory (replace the 'x' in '5.1.x' with the correct number): ln -s seeddms-5.1.x seeddms mv www/conf . +mv seeddms-5.1.x/ext www cd www rm inc op out views controllers styles languages webdav restapi pdfviewer index.php ln -s ../seeddms/inc From cd4eb3d11567a4d8c8c422e562be6866ae4863f8 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 27 Mar 2019 15:30:11 +0100 Subject: [PATCH 017/467] move code for getting version into method version() --- controllers/class.Download.php | 40 ++++++++++++++++------------------ 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/controllers/class.Download.php b/controllers/class.Download.php index a7e19abe2..ad0f2be18 100644 --- a/controllers/class.Download.php +++ b/controllers/class.Download.php @@ -24,8 +24,25 @@ class SeedDMS_Controller_Download extends SeedDMS_Controller_Common { public function version() { /* {{{ */ $dms = $this->params['dms']; - $content = $this->params['content']; - + $version = $this->params['version']; + $document = $this->params['document']; + if($version < 1) { + $content = $this->callHook('documentLatestContent', $document); + if($content === null) + $content = $document->getLatestContent(); + } else { + $content = $this->callHook('documentContent', $document, $version); + if($content === null) + $content = $document->getContentByVersion($version); + } + if (!is_object($content)) { + $this->errormsg = 'invalid_version'; + return false; + } + /* set params['content'] for compatiblity with older extensions which + * expect the content in the controller + */ + $this->params['content'] = $content; if(null === $this->callHook('version')) { if(file_exists($dms->contentDir . $content->getPath())) { header("Content-Transfer-Encoding: binary"); @@ -174,25 +191,6 @@ class SeedDMS_Controller_Download extends SeedDMS_Controller_Common { $dms = $this->params['dms']; $type = $this->params['type']; - $version = $this->params['version']; - $document = $this->params['document']; - if($version < 1) { - $content = $this->callHook('documentLatestContent', $document); - if($content === null) - $content = $document->getLatestContent(); - } else { - $content = $this->callHook('documentContent', $document, $version); - if($content === null) - $content = $document->getContentByVersion($version); - } - if (!is_object($content)) { - $this->errormsg = 'invalid_version'; - return false; - } - /* set params['content'] for compatiblity with older extensions which - * expect the content in the controller - */ - $this->params['content'] = $content; switch($type) { case "version": return $this->version(); From d2c55cd685add9d1d505d630058c6d40b01805bc Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 3 Apr 2019 10:13:19 +0200 Subject: [PATCH 018/467] fix translation string --- op/op.SetRevisors.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op/op.SetRevisors.php b/op/op.SetRevisors.php index 0135c4c45..60f963da2 100644 --- a/op/op.SetRevisors.php +++ b/op/op.SetRevisors.php @@ -150,7 +150,7 @@ foreach ($pIndRev as $p) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); break; case -3: - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("recipient_already_assigned")); + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("revisor_already_assigned")); break; case -4: // email error From 9a5d6c31ab0ed1a7a90f34a83f7c1c2f41d9ad20 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 3 Apr 2019 10:54:04 +0200 Subject: [PATCH 019/467] do not list users/groups in select menu which already has an access right --- views/bootstrap/class.DocumentAccess.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/views/bootstrap/class.DocumentAccess.php b/views/bootstrap/class.DocumentAccess.php index 8753f4cac..f45241a4a 100644 --- a/views/bootstrap/class.DocumentAccess.php +++ b/views/bootstrap/class.DocumentAccess.php @@ -189,11 +189,16 @@ $(document).ready( function() { getUser(); + $memusers[] = $userObj->getID(); + } $options = array(); $options[] = array(-1, getMLText('select_one')); foreach ($allUsers as $currUser) { - if (!$currUser->isGuest()) - $options[] = array($currUser->getID(), htmlspecialchars($currUser->getLogin()), ($currUser->getID()==$user->getID()), array(array('data-subtitle', htmlspecialchars($currUser->getFullName())))); + if (!$currUser->isGuest() && !in_array($currUser->getID(), $memusers)) + $options[] = array($currUser->getID(), htmlspecialchars($currUser->getLogin()), false, array(array('data-subtitle', htmlspecialchars($currUser->getFullName())))); } $this->formField( getMLText("user"), @@ -204,10 +209,16 @@ $(document).ready( function() { 'options'=>$options ) ); + $memgroups = array(); + foreach ($accessList["groups"] as $groupAccess) { + $groupObj = $groupAccess->getGroup(); + $memgroups[] = $groupObj->getID(); + } $options = array(); $options[] = array(-1, getMLText('select_one')); foreach ($allGroups as $groupObj) { - $options[] = array($groupObj->getID(), htmlspecialchars($groupObj->getName())); + if(!in_array($groupObj->getID(), $memgroups)) + $options[] = array($groupObj->getID(), htmlspecialchars($groupObj->getName())); } $this->formField( getMLText("group"), From 029ac6d2d0663775f7fdd292a441d37a16a9dee2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 3 Apr 2019 10:55:17 +0200 Subject: [PATCH 020/467] add item for 5.1.9 --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index c40bc3d3a..974e3099f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -32,6 +32,8 @@ via restapi - add an input field on the substitute user and extension list page for filtering table rows by string +- do not list users/groups in select menu on DocumentAccess page which already + has an access right -------------------------------------------------------------------------------- Changes in version 5.1.9 From d0cf90032ff6367fa273818ffd43683308e59f65 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 4 Apr 2019 14:02:46 +0200 Subject: [PATCH 021/467] a revision call also be started if some of the revisors have already reviewed the document --- SeedDMS_Core/Core/inc.ClassDocument.php | 17 +++++++++++++---- SeedDMS_Core/package.xml | 3 ++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 082dc67d7..a921f0f1e 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -5289,10 +5289,15 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ /* A new revision may only be started if we are not in the middle of * revision or the user/group has been removed from the workflow */ + /* Taken out, because it happened that a revision wasn't started for each revisor + * but just for some. + * Checking for each revisor not being sleeping prevented a second start of the + * revision for the remaining revisors still sleeping. foreach($revisionStatus as $status) { if($status['status'] != S_LOG_SLEEPING && $status['status'] != S_LOG_USER_REMOVED) return false; } + */ /* Make sure all Logs will be set to the right status, in order to * prevent inconsistent states. Actually it could be a feature to @@ -5300,6 +5305,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * this may not be possible. */ $db->startTransaction(); + $startedrev = false; foreach($revisionStatus as $status) { if($status['status'] == S_LOG_SLEEPING) { $queryStr = "INSERT INTO `tblDocumentRevisionLog` (`revisionID`, `status`, @@ -5312,12 +5318,15 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ $db->rollbackTransaction(); return false; } + $startedrev = true; } } - if(!$this->setStatus(S_IN_REVISION, "Started revision", $requestUser)) { - $db->rollbackTransaction(); - return false; - } + /* Set status only if at least one revision was started */ + if($startedrev) + if(!$this->setStatus(S_IN_REVISION, "Started revision", $requestUser)) { + $db->rollbackTransaction(); + return false; + } $db->commitTransaction(); return true; diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index 1b521517e..3348352ea 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -12,7 +12,7 @@ uwe@steinmann.cx yes - 2018-11-23 + 2019-04-04 6.0.7 @@ -27,6 +27,7 @@ SeedDMS_Core_Document::getTimeline() returns revision only for latest content add callback onSetStatus in SeedDMS_Core_DocumentContent::setStatus() add new list type 'DueRevision' in SeedDMS_Core_DMS::getDocumentList() +a revision can also be started if some revisors have already reviewed the document From e2c3cbe3cfee1f99f67c2ca3f9461dcb3ac1fea5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 5 Apr 2019 13:23:38 +0200 Subject: [PATCH 022/467] do not show update user for revisions in status 0 --- CHANGELOG | 3 +++ views/bootstrap/class.ViewDocument.php | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b94525268..c20d3ac0b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,9 @@ - fix editing of document attachments - make receipt summary look like approval/review summary - merge changes up to 5.1.10 +- do not show the updating user in a revision workflow if the status is 0 + this is misleading because the user starting the revision workflow is the one + first accessing the document -------------------------------------------------------------------------------- Changes in version 6.0.6 diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 95474a084..ddbce2d4c 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -1430,8 +1430,11 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print "".$reqName."\n"; print "
  • ".$r["date"]."
  • "; /* $updateUser is the user who has done the revision */ - $updateUser = $dms->getUser($r["userID"]); - print "
  • ".(is_object($updateUser) ? htmlspecialchars($updateUser->getFullName()." (".$updateUser->getLogin().")") : "unknown user id '".$r["userID"]."'")."
"; + if($r['status'] != 0) { + $updateUser = $dms->getUser($r["userID"]); + print "
  • ".(is_object($updateUser) ? htmlspecialchars($updateUser->getFullName()." (".$updateUser->getLogin().")") : "unknown user id '".$r["userID"]."'")."
  • "; + } + print ""; print "".htmlspecialchars($r["comment"])."\n"; print "".getRevisionStatusText($r["status"])."\n"; print "
      "; From f5505e85b203866e431a4b4c6ce39299d078f546 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 9 Apr 2019 10:51:31 +0200 Subject: [PATCH 023/467] order documents in tree by name --- views/bootstrap/class.DocumentChooser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.DocumentChooser.php b/views/bootstrap/class.DocumentChooser.php index d4359890b..d3d5da5f0 100644 --- a/views/bootstrap/class.DocumentChooser.php +++ b/views/bootstrap/class.DocumentChooser.php @@ -37,7 +37,7 @@ class SeedDMS_View_DocumentChooser extends SeedDMS_Bootstrap_Style { $partialtree = $this->params['partialtree']; header('Content-Type: application/javascript'); - $this->printNewTreeNavigationJs($folder->getID(), M_READ, 1, $form, 0, '', $partialtree); + $this->printNewTreeNavigationJs($folder->getID(), M_READ, 1, $form, 0, 'n', $partialtree); } /* }}} */ function show() { /* {{{ */ From 469370cb428d25cb66eedf5e75427e2163450174 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 9 Apr 2019 10:51:51 +0200 Subject: [PATCH 024/467] new config option enableReceiptReject enables rejection of receipts --- inc/inc.ClassSettings.php | 10 +++++++--- op/op.Settings.php | 1 + out/out.ReceiptDocument.php | 1 + views/bootstrap/class.ReceiptDocument.php | 5 +++++ views/bootstrap/class.Settings.php | 1 + 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 99aeb2a69..b6c1a9ba3 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -186,6 +186,8 @@ class Settings { /* {{{ */ var $_workflowMode = "traditional"; // enable/disable acknowledge workflow var $_enableReceiptWorkflow = true; + // enable/disable reject of reception + var $_enableReceiptReject = false; // enable/disable revision workflow var $_enableRevisionWorkflow = true; // enable/disable revision on vote reject @@ -701,9 +703,10 @@ class Settings { /* {{{ */ $this->_initialDocumentStatus = intval($tab["initialDocumentStatus"]); $this->_versioningFileName = strval($tab["versioningFileName"]); $this->_workflowMode = strval($tab["workflowMode"]); - $this->_enableReceiptWorkflow = strval($tab["enableReceiptWorkflow"]); - $this->_enableRevisionWorkflow = strval($tab["enableRevisionWorkflow"]); - $this->_enableRevisionOnVoteReject = strval($tab["enableRevisionOnVoteReject"]); + $this->_enableReceiptWorkflow = Settings::boolval($tab["enableReceiptWorkflow"]); + $this->_enableReceiptReject = Settings::boolval($tab["enableReceiptReject"]); + $this->_enableRevisionWorkflow = Settings::boolval($tab["enableRevisionWorkflow"]); + $this->_enableRevisionOnVoteReject = Settings::boolval($tab["enableRevisionOnVoteReject"]); $this->_allowReviewerOnly = Settings::boolval($tab["allowReviewerOnly"]); $this->_allowChangeRevAppInProcess = Settings::boolval($tab["allowChangeRevAppInProcess"]); $this->_enableVersionDeletion = Settings::boolval($tab["enableVersionDeletion"]); @@ -1032,6 +1035,7 @@ class Settings { /* {{{ */ $this->setXMLAttributValue($node, "versioningFileName", $this->_versioningFileName); $this->setXMLAttributValue($node, "workflowMode", $this->_workflowMode); $this->setXMLAttributValue($node, "enableReceiptWorkflow", $this->_enableReceiptWorkflow); + $this->setXMLAttributValue($node, "enableReceiptReject", $this->_enableReceiptReject); $this->setXMLAttributValue($node, "enableRevisionWorkflow", $this->_enableRevisionWorkflow); $this->setXMLAttributValue($node, "enableRevisionOnVoteReject", $this->_enableRevisionOnVoteReject); $this->setXMLAttributValue($node, "allowReviewerOnly", $this->_allowReviewerOnly); diff --git a/op/op.Settings.php b/op/op.Settings.php index ce1c9e803..34cf27561 100644 --- a/op/op.Settings.php +++ b/op/op.Settings.php @@ -185,6 +185,7 @@ if ($action == "saveSettings") $settings->_initialDocumentStatus = $_POST["initialDocumentStatus"]; $settings->_workflowMode = $_POST["workflowMode"]; $settings->_enableReceiptWorkflow = getBoolValue("enableReceiptWorkflow"); + $settings->_enableReceiptReject = getBoolValue("enableReceiptReject"); $settings->_enableRevisionWorkflow = getBoolValue("enableRevisionWorkflow"); $settings->_enableRevisionOnVoteReject = getBoolValue("enableRevisionOnVoteReject"); $settings->_allowReviewerOnly = getBoolValue("allowReviewerOnly"); diff --git a/out/out.ReceiptDocument.php b/out/out.ReceiptDocument.php index cf6f3f955..be568e690 100644 --- a/out/out.ReceiptDocument.php +++ b/out/out.ReceiptDocument.php @@ -78,6 +78,7 @@ if($view) { $view->setParam('document', $document); $view->setParam('version', $content); $view->setParam('accessobject', $accessop); + $view->setParam('receiptreject', $settings->_enableReceiptReject); $view($_GET); exit; } diff --git a/views/bootstrap/class.ReceiptDocument.php b/views/bootstrap/class.ReceiptDocument.php index 46ccdc353..534de2dcb 100644 --- a/views/bootstrap/class.ReceiptDocument.php +++ b/views/bootstrap/class.ReceiptDocument.php @@ -93,6 +93,7 @@ $(document).ready(function() { $folder = $this->params['folder']; $document = $this->params['document']; $content = $this->params['version']; + $receiptreject = $this->params['receiptreject']; $receipts = $content->getReceiptStatus(); foreach($receipts as $receipt) { @@ -135,6 +136,7 @@ $(document).ready(function() { +
      @@ -148,6 +150,9 @@ $(document).ready(function() {
      + + +
      diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index be70fd429..981a21338 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -431,6 +431,7 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); showConfigHeadline('settings_Edition'); ?> showConfigOption('settings_workflowMode', 'workflowMode', array('traditional'=>'settings_workflowMode_valtraditional', 'traditional_only_approval'=>'settings_workflowMode_valtraditional_only_approval', 'advanced'=>'settings_workflowMode_valadvanced'), false, true); ?> showConfigCheckbox('settings_enableReceiptWorkflow', 'enableReceiptWorkflow'); ?> +showConfigCheckbox('settings_enableReceiptReject', 'enableReceiptReject'); ?> showConfigCheckbox('settings_enableRevisionWorkflow', 'enableRevisionWorkflow'); ?> showConfigCheckbox('settings_enableRevisionOnVoteReject', 'enableRevisionOnVoteReject'); ?> showConfigText('settings_versioningFileName', 'versioningFileName'); ?> From be725b8893df5bc545deef157d364b9ca11ea30c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 9 Apr 2019 10:54:01 +0200 Subject: [PATCH 025/467] some new phrases --- languages/ar_EG/lang.inc | 3 +++ languages/bg_BG/lang.inc | 3 +++ languages/ca_ES/lang.inc | 3 +++ languages/cs_CZ/lang.inc | 9 ++++++--- languages/de_DE/lang.inc | 5 ++++- languages/el_GR/lang.inc | 3 +++ languages/en_GB/lang.inc | 7 +++++-- languages/es_ES/lang.inc | 3 +++ languages/fr_FR/lang.inc | 33 ++++++++++++++++++--------------- languages/hr_HR/lang.inc | 3 +++ languages/hu_HU/lang.inc | 3 +++ languages/it_IT/lang.inc | 9 ++++++--- languages/ko_KR/lang.inc | 3 +++ languages/lo_LA/lang.inc | 3 +++ languages/nl_NL/lang.inc | 3 +++ languages/pl_PL/lang.inc | 3 +++ languages/pt_BR/lang.inc | 3 +++ languages/ro_RO/lang.inc | 11 +++++++---- languages/ru_RU/lang.inc | 3 +++ languages/sk_SK/lang.inc | 3 +++ languages/sv_SE/lang.inc | 3 +++ languages/tr_TR/lang.inc | 3 +++ languages/uk_UA/lang.inc | 3 +++ languages/zh_CN/lang.inc | 9 ++++++--- languages/zh_TW/lang.inc | 3 +++ 25 files changed, 106 insertions(+), 31 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index 2578d6f78..bb1cc71d2 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -927,6 +927,7 @@ URL: [url]', 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'اعادة تحميل', 'rejected' => 'مرفوض', @@ -1264,6 +1265,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => '', 'settings_enablePasswordForgotten' => '', 'settings_enablePasswordForgotten_desc' => '', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 9d4d80eab..9af2c5d59 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -826,6 +826,7 @@ $text = array( 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'Обнови', 'rejected' => 'Отказан', @@ -1127,6 +1128,8 @@ $text = array( 'settings_enableOwnerRevApp_desc' => '', 'settings_enablePasswordForgotten' => 'Включи възстанавяване на парола', 'settings_enablePasswordForgotten_desc' => 'Ако е включено, разрешава на потребителите да си възстанавяват паролата на email.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index f09c7f3b1..0790a6acd 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -831,6 +831,7 @@ URL: [url]', 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'Refresh', 'rejected' => 'Rebutjat', @@ -1132,6 +1133,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => '', 'settings_enablePasswordForgotten' => '', 'settings_enablePasswordForgotten_desc' => '', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index a045cd91c..9d0fda2eb 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/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 (1521), kreml (579) +// Translators: Admin (1523), kreml (579) $text = array( '2_factor_auth' => 'dvoufaktorové ověření', @@ -980,6 +980,7 @@ URL: [url]', 'reception_noaction' => 'Žádná akce', 'reception_rejected' => 'Přijetí odmítnuto', 'recipients' => 'Příjemci', +'recipient_already_removed' => '', 'redraw' => 'Překreslit', 'refresh' => 'Obnovit', 'rejected' => 'Odmítnuto', @@ -1343,6 +1344,8 @@ Jméno: [username] 'settings_enableOwnerRevApp_desc' => 'Povolte, pokud chcete, aby byl vlastník dokumentu uveden jako posuzovatel/schvalovatel a pro přechody workflow.', 'settings_enablePasswordForgotten' => 'Povolit zaslání zapomenutého hesla', 'settings_enablePasswordForgotten_desc' => 'Chcete-li povolit uživateli nastavit nové heslo a poslat ho e-mailem, zaškrtněte tuto možnost.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => 'Povolit potvrzení příjmu dokumentů', 'settings_enableReceiptWorkflow_desc' => 'Povolte, pro spuštění workflow při potvrzení příjmu dokumentu.', 'settings_enableRecursiveCount' => 'Povolit rekurzivní počítání dokumentů / složek', @@ -1373,8 +1376,8 @@ Jméno: [username] 'settings_enableVersionModification_desc' => 'Povolit / zakázat úpravu verze dokumentu běžnému uživateli po té, co byla verze nahrána. Administrátor může vždy změnit verzi po nahrání.', 'settings_enableWebdavReplaceDoc' => 'Nahradit dokument při ukládání', 'settings_enableWebdavReplaceDoc_desc' => 'Je-li tato možnost povolena, uložení nové verze dokumentu nahrazuje starý dokument namísto vytvoření nové verze. Platí to pouze tehdy, pokud se uživatel, typ mozku a název souboru rovnají poslední verzi. To může být užitečné, když aplikace automaticky ukládají dokument v pevných intervalech.', -'settings_enableXsendfile' => '', -'settings_enableXsendfile_desc' => '', +'settings_enableXsendfile' => 'Použij modul apache xsendfile', +'settings_enableXsendfile_desc' => 'Pokud je tato volba aktivní a modul apache xsendfile je nainstalován, tento bude použit pro doručování obrázků.', 'settings_encryptionKey' => 'Šifrovací klíč', 'settings_encryptionKey_desc' => 'Tento řetězec se používá k vytvoření jedinečného identifikátoru, který je přidán jako skryté pole formuláře, aby se zabránilo útokům CSRF.', 'settings_error' => 'Chyba', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index b5783ca27..e2bb30b96 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 (2652), dgrutsch (22) +// Translators: Admin (2654), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -982,6 +982,7 @@ URL: [url]', 'reception_noaction' => 'Keine Aktion', 'reception_rejected' => 'Empfang abgelehnt', 'recipients' => 'Empfänger', +'recipient_already_removed' => '', 'redraw' => 'Neu zeichnen', 'refresh' => 'Aktualisieren', 'rejected' => 'abgelehnt', @@ -1353,6 +1354,8 @@ Name: [username] 'settings_enableOwnerRevApp_desc' => 'Anwählen, um den Besitzer eines Dokuments in der Liste der Prüfer/Freigeber und für Workflow-Aktionen auswählbar zu machen.', 'settings_enablePasswordForgotten' => 'Passwort-Vergessen Funktion einschalten', 'settings_enablePasswordForgotten_desc' => 'Setzen Sie diese Option, wenn Benutzer ein neues Password per E-Mail anfordern dürfen.', +'settings_enableReceiptReject' => 'Erlaube Ablehnung einer Empfangsbestätgung', +'settings_enableReceiptReject_desc' => 'Amwählen, um Empfangsbestätigungen abzulehnen.', 'settings_enableReceiptWorkflow' => 'Ermögliche Bestätigung des Dokumentenempfang', 'settings_enableReceiptWorkflow_desc' => 'Anwählen, um den Workflow zur Kenntnisnahme von Dokumenten einzuschalten', 'settings_enableRecursiveCount' => 'Rekursive Dokumenten-/Ordner-Zählung', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index 593082dcf..b457a1a71 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -837,6 +837,7 @@ URL: [url]', 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => '', 'rejected' => '', @@ -1138,6 +1139,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => '', 'settings_enablePasswordForgotten' => '', 'settings_enablePasswordForgotten_desc' => '', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index b86b1a918..76dc7f871 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 (1769), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1773), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -984,6 +984,7 @@ URL: [url]', 'reception_noaction' => 'No action', 'reception_rejected' => 'Reception rejected', 'recipients' => 'Recipients', +'recipient_already_removed' => 'Recipient has already been removed or aknowledged recepiton.', 'redraw' => 'Redraw', 'refresh' => 'Refresh', 'rejected' => 'Rejected', @@ -1348,12 +1349,14 @@ Name: [username] 'settings_enableOwnerRevApp_desc' => 'Enable this if you want the owner of a document to be listed as reviewers/approvers and for workflow transitions.', 'settings_enablePasswordForgotten' => 'Enable Password forgotten', 'settings_enablePasswordForgotten_desc' => 'If you want to allow user to set a new password and send it by mail, check this option.', +'settings_enableReceiptReject' => 'Enable rejection of receptions', +'settings_enableReceiptReject_desc' => 'Enable, to turn on the rejection of receptions.', 'settings_enableReceiptWorkflow' => 'Enable acknowledge of document reception', 'settings_enableReceiptWorkflow_desc' => 'Enable, to turn on the workflow to acknowledge document reception.', 'settings_enableRecursiveCount' => 'Enable recursive document/folder count', 'settings_enableRecursiveCount_desc' => 'If turned on, the number of documents and folders in the folder view will be determined by counting all objects by recursively processing the folders and counting those documents and folders the user is allowed to access.', 'settings_enableRevisionOnVoteReject' => 'Reject by one revisor', -'settings_enableRevisionOnVoteReject_desc' => 'If set the document will be reject if one revisor rejects the document.', +'settings_enableRevisionOnVoteReject_desc' => 'If set the document will be rejected if one revisor rejects the document.', 'settings_enableRevisionWorkflow' => 'Enable revision of documents', 'settings_enableRevisionWorkflow_desc' => 'Enable, to be able to run the workflow for revising a document after a given period of time.', 'settings_enableSelfReceipt' => 'Allow reception of documents for logged in user', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index fbad627fb..8a1e1b8f5 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -942,6 +942,7 @@ Si continua teniendo problemas de acceso, por favor contacte con el administrado 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'Actualizar', 'rejected' => 'Rechazado', @@ -1279,6 +1280,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => 'Habilitar esto si quiere que el propietario de un documento sea listado como revisor/aprobador y para las transiciones del flujo de trabajo.', 'settings_enablePasswordForgotten' => 'Habilitar recordatorio de contraseña', 'settings_enablePasswordForgotten_desc' => 'Si quiere permitir a los usuarios fijar una nueva contraseña recibiendo un correo electrónico, active esta opción.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Habilitar cuenta de documento/carpeta recursivo', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index d6cfc2799..85d33eb92 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 (1091), jeromerobert (50), lonnnew (9), Oudiceval (725) +// Translators: Admin (1091), jeromerobert (50), lonnnew (9), Oudiceval (739) $text = array( '2_factor_auth' => 'Authentification forte', @@ -982,6 +982,7 @@ URL : [url]', 'reception_noaction' => 'Aucune action', 'reception_rejected' => 'Réception rejetée', 'recipients' => 'Destinataires', +'recipient_already_removed' => '', 'redraw' => 'Redessiner', 'refresh' => 'Actualiser', 'rejected' => 'Rejeté', @@ -1332,6 +1333,8 @@ Nom : [username] 'settings_enableOwnerRevApp_desc' => 'Activer cette option pour ajouter le propriétaire du document à la liste des examinateurs/approbateurs et pour les transitions de workflow.', 'settings_enablePasswordForgotten' => 'Activer Mot de passe oublié', 'settings_enablePasswordForgotten_desc' => 'Si vous voulez permettre à l\'utilisateur de définir un nouveau mot de passe et l\'envoyer par mail, cochez cette option.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => 'Activer la réception de document', 'settings_enableReceiptWorkflow_desc' => 'Activer cette option pour permettre de confirmer la réception de document dans le workflow.', 'settings_enableRecursiveCount' => 'Décompte récursif des documents/dossiers', @@ -1521,14 +1524,14 @@ Nom : [username] 'settings_strictFormCheck_desc' => 'Contrôle strict des formulaires. Si cette option est activée, tous les champs du formulaire doivent être saisis. Sinon, la plupart des champs (commentaires et mots-clés) sont facultatifs. Les commentaires sont toujours obligatoires lors de la soumission d\'une vérification ou du changement de statut ​​d’un document.', 'settings_suggestionvalue' => 'Valeur suggérée', 'settings_System' => 'Système', -'settings_tasksInMenu' => '', -'settings_tasksInMenu_approval' => '', -'settings_tasksInMenu_desc' => '', -'settings_tasksInMenu_needscorrection' => '', -'settings_tasksInMenu_receipt' => '', -'settings_tasksInMenu_review' => '', -'settings_tasksInMenu_revision' => '', -'settings_tasksInMenu_workflow' => '', +'settings_tasksInMenu' => 'Tâches sélectionnées', +'settings_tasksInMenu_approval' => 'Approbations', +'settings_tasksInMenu_desc' => 'Sélectionnez les tâches à comptabiliser. Si aucune n’est sélectionnée, toutes les tâches seront comptabilisées.', +'settings_tasksInMenu_needscorrection' => 'Nécessitant une correction', +'settings_tasksInMenu_receipt' => 'Réceptions', +'settings_tasksInMenu_review' => 'Vérifications', +'settings_tasksInMenu_revision' => 'Révisions', +'settings_tasksInMenu_workflow' => 'Workflow', 'settings_theme' => 'Thème par défaut', 'settings_theme_desc' => 'Thème par défaut(nom d\'un sous-répertoire du répertoire "styles")', 'settings_titleDisplayHack' => 'Title Display Hack', @@ -1587,15 +1590,15 @@ Nom : [username] 'splash_edit_event' => 'Événement modifié', 'splash_edit_group' => 'Groupe modifié', 'splash_edit_role' => 'Rôle modifié', -'splash_edit_task' => '', +'splash_edit_task' => 'Tâche modifiée', 'splash_edit_user' => 'Utilisateur modifié', 'splash_error_add_to_transmittal' => 'Erreur lors de l’ajout du document à la transmission', 'splash_error_rm_download_link' => 'Erreur lors de la suppression du lien de téléchargement', 'splash_error_send_download_link' => 'Erreur lors de l’envoi du lien de téléchargement', -'splash_extension_getlist' => '', +'splash_extension_getlist' => 'Liste des extensions mises à jour depuis le dépôt', 'splash_extension_import' => 'Extension installée', 'splash_extension_refresh' => 'Liste des extensions actualisée', -'splash_extension_upload' => '', +'splash_extension_upload' => 'Extension installée', 'splash_folder_edited' => 'Dossier modifié', 'splash_importfs' => '[docs] documents et [folders] dossiers importés', 'splash_inherit_access' => 'Droits d’accès hérités', @@ -1702,10 +1705,10 @@ Nom : [username] 'timeline_full_add_version' => '[document]
      Nouvelle version ([version])', 'timeline_full_scheduled_revision' => '[document]
      Révision de la version [version]', 'timeline_full_status_change' => '[document]
      Version [version] : [status]', -'timeline_scheduled_revision' => '', +'timeline_scheduled_revision' => 'Révision de la version [version]', 'timeline_selected_item' => 'Document sélectionné', 'timeline_skip_add_file' => 'avec fichiers attachés', -'timeline_skip_scheduled_revision' => '', +'timeline_skip_scheduled_revision' => 'Révision planifiée', 'timeline_skip_status_change_-1' => 'rejetés', 'timeline_skip_status_change_-3' => 'expirés', 'timeline_skip_status_change_0' => 'en attente de revue', @@ -1775,7 +1778,7 @@ URL : [url]', 'update_locked_msg' => 'Ce document est verrouillé.', 'update_recipients' => 'Mettre à jour la liste des destinataires', 'update_reviewers' => 'Mettre à jour la liste des examinateurs', -'update_revisors' => '', +'update_revisors' => 'Mettre à jour la liste des réviseurs', 'update_transmittalitem' => 'Mettre à jour l’élément', 'uploaded_by' => 'Déposé par', 'uploading_failed' => 'Dépôt d\'un des documents échoué. Veuillez vérifier la taille d\'envoi maximale autorisée.', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 1b379a1dc..b0ea9ac8a 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -946,6 +946,7 @@ Ako i dalje imate problema s prijavom, molimo kontaktirajte Vašeg administrator 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => 'Primatelji', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'Osvježi', 'rejected' => 'Odbijeno', @@ -1300,6 +1301,8 @@ Internet poveznica: [url]', 'settings_enableOwnerRevApp_desc' => 'Omogućite ovo ako želite da vlasnik dokumenta bude naveden kao recezent/validator i za promjene tokova rada.', 'settings_enablePasswordForgotten' => 'Omogući zaboravljanje lozinke', 'settings_enablePasswordForgotten_desc' => 'Ako želite omogućiti korisniku da postavi novu lozinku i pošalje ju e-mailom, označite ovu opciju.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => 'Omogućavanje potvrđivanja prijema dokumenta', 'settings_enableReceiptWorkflow_desc' => 'Omogućite kako bi omogućili tok rada za potvrđivajne prijema dokumenta.', 'settings_enableRecursiveCount' => 'Omogući rekurzivno brojanje dokumenta/mape', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 71e88d17b..3436115c7 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -942,6 +942,7 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => 'újrarajzol', 'refresh' => 'Frissítés', 'rejected' => 'Elutasított', @@ -1278,6 +1279,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => 'Engedélyezze, ha szeretné, hogy a dokumentum tulajdonosa listázásra kerüljön a felülvizsgálóknál/jóváhagyóknál és a munkamenet átmeneteknél.', 'settings_enablePasswordForgotten' => 'Jelszó emlékeztető engedélyezése', 'settings_enablePasswordForgotten_desc' => 'Ha azt szeretné, hogy a felhasználó megadhasson új jelszót és elküldhesse azt emailben, engedélyezze ezt a lehetőséget.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Engedélyezi a rekurzív dokumentum/mappa számot', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 2b939c5d3..946fa82cc 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 (1622), rickr (144), s.pnt (26) +// Translators: Admin (1624), rickr (144), s.pnt (26) $text = array( '2_factor_auth' => 'Autorizzazione a due fattori', @@ -953,6 +953,7 @@ URL: [url]', 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => 'Cartelle', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'Ricarica', 'rejected' => 'Rifiutato', @@ -1179,8 +1180,8 @@ URL: [url]', 'seq_keep' => 'Mantieni la posizione', 'seq_start' => 'Prima posizione', 'sessions' => '', -'setDateFromFile' => '', -'setDateFromFolder' => '', +'setDateFromFile' => 'Prende la data dal file importato', +'setDateFromFolder' => 'Prende la data dalla cartella importata', 'settings' => 'Impostazioni', 'settings_activate_module' => 'Attivazione modulo', 'settings_activate_php_extension' => 'Attivazione estensione PHP', @@ -1312,6 +1313,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => 'Spuntare per aggiungere il proprietario del documento alla lista dei revisori/approvatori e per le transizioni del flusso di lavoro.', 'settings_enablePasswordForgotten' => 'Abilita recupero password', 'settings_enablePasswordForgotten_desc' => 'Spuntare nel caso si desideri permettere all\'utente di re-impostare la password inviata per email.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => 'Abilitare per notifiche', 'settings_enableReceiptWorkflow_desc' => 'Abilitare per attivare sul workflow le ricevute di notifica.', 'settings_enableRecursiveCount' => 'Abilita il conteggio ricursivo di documenti/cartelle', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index c5733f683..904644b82 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -940,6 +940,7 @@ URL : [url]', 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '받는 사람', +'recipient_already_removed' => '', 'redraw' => '다시 그리기', 'refresh' => '새로 고침', 'rejected' => '거부', @@ -1294,6 +1295,8 @@ URL : [url]', 'settings_enableOwnerRevApp_desc' => '이 문서의 소유자가 검토 / 승인으로 워크 플로우 전환에 대한 나열하고자 할 경우에 사용합니다.', 'settings_enablePasswordForgotten' => '비밀번호 분실 활성화', 'settings_enablePasswordForgotten_desc' => '옵션을 사용자가 새 비밀번호를 설정하도록 메일로 보내 확인 할 수 있습니다.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '문서 수신의 응답 활성화', 'settings_enableReceiptWorkflow_desc' => '문서의 수신 확인을 위해 워크플로어를 선택하고 활성화 합니다.', 'settings_enableRecursiveCount' => '재귀적 문서 / 폴더 수 사용', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index d2a6be267..bbd36797e 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -963,6 +963,7 @@ URL: [url]', 'reception_noaction' => 'ບໍ່ມີການຕອບສະຫນອງ', 'reception_rejected' => 'ປະຕິເສດການຕ້ອນຮັບ', 'recipients' => 'ຜູ້ຮັບ', +'recipient_already_removed' => '', 'redraw' => 'ຂຽນໄຫມ່', 'refresh' => 'ລີເຟສ', 'rejected' => 'ປະຕິເສດ', @@ -1327,6 +1328,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => 'ເປີດໄຊ້ງານລັກສະນະນີ້ຫາກເຈົ້າຕ້ອງການໃຫ້ເຈົ້າຂອງເກະສານລະບຸວ່າເປັນຜູ້ກວດສອບ/ຜູ້ອະນຸມັດແລະສຳລັບການປ່ຽນແປງວິທີການເຮັດວຽກ', 'settings_enablePasswordForgotten' => 'ລືມລະຫັດຜ່ານເປີດໄຊ້ງານ', 'settings_enablePasswordForgotten_desc' => 'ຖ້າເຈົ້າຕ້ອງການອະນຸຍາດໃຫ້ຜູ້ໄຊ້ຕັ້ງລະຫັດຜ່ານໄຫມ່ແລະສົ່ງດ້ວຍອີເມວ ໃຫ້ເລືອກຕົວເລືອກນີ້', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'ເປີດໄຊ້ງານການນັບເອກະສານ/ໂຟລເດີນັບຊໍ້າ', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index ce443f923..3c62a28fd 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -958,6 +958,7 @@ URL: [url]', 'reception_noaction' => 'Geen actie', 'reception_rejected' => 'bestemming geweigerd', 'recipients' => 'Ontvangers', +'recipient_already_removed' => '', 'redraw' => 'Nogmaals weergeven', 'refresh' => 'Verversen', 'rejected' => 'Afgewezen', @@ -1324,6 +1325,8 @@ Name: [username] 'settings_enableOwnerRevApp_desc' => 'Activeer dit als de eigenaar van een document genoteerd staat as beoordelaar/ goedkeurder en voor workflow overdrachten.', 'settings_enablePasswordForgotten' => '\'wachtwoord vergeten\' aanzetten', 'settings_enablePasswordForgotten_desc' => 'Inschakelen om een wachtwoord via mail te versturen als de gebruiker een nieuw wachtwoord heeft ingesteld.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => 'Aanzetten Workflow-stappen', 'settings_enableReceiptWorkflow_desc' => 'Aanzetten workflow-stappen', 'settings_enableRecursiveCount' => 'Document/ map teller herhalen toestaan', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 31cad25b9..01263d9b8 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -935,6 +935,7 @@ Jeśli nadal będą problemy z zalogowaniem, prosimy o kontakt z administratorem 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'Odśwież', 'rejected' => 'Odrzucony', @@ -1258,6 +1259,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => 'Włącz tę opcję jeżeli właściciel dokumentu powinien być wymieniony jako zatwierdzających/recenzentów oraz dla przepływu procesu', 'settings_enablePasswordForgotten' => 'Włącz odzyskiwanie hasła po jego zapomnieniu', 'settings_enablePasswordForgotten_desc' => 'Jeśli chcesz zezwolić użytkownikom na zmianę własnego hasła i wysyłanie go emailem, zaznacz tę opcję.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Włącz licznik rekurencji dokumentu/folderu', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 2d020901e..682745dc8 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -940,6 +940,7 @@ Se você ainda tiver problemas para fazer o login, por favor, contate o administ 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'Atualizar', 'rejected' => 'Rejected', @@ -1276,6 +1277,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => 'Habilite esta opção se quiser que o proprietário de um documento seja listado como revisores/aprovadores e para transições de fluxo de trabalho.', 'settings_enablePasswordForgotten' => 'Ativar Senhas esquecidas', 'settings_enablePasswordForgotten_desc' => 'Se você quiser permitir o usuário definir uma nova senha e enviá-la por e-mail, marque esta opção.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Ativar contagem de documentos/pasta recursiva', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index 44c80298b..be4274008 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 (1082), balan (87) +// Translators: Admin (1085), balan (87) $text = array( '2_factor_auth' => '', @@ -914,7 +914,7 @@ Dacă aveți în continuare probleme la autentificare, vă rugăm să contactaț 'pl_PL' => 'Poloneză', 'possible_substitutes' => '', 'preset_expires' => 'Expirarea presetului', -'preview' => '', +'preview' => 'Previzualizare', 'preview_converters' => '', 'preview_images' => '', 'preview_markdown' => '', @@ -947,6 +947,7 @@ Dacă aveți în continuare probleme la autentificare, vă rugăm să contactaț 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => 'Destinatari', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'Refresh', 'rejected' => 'Respins', @@ -1301,6 +1302,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => 'Activați această opțiune dacă doriți ca proprietarul unui document să fie listat ca revizuitor/aprobator sau in tranzițiile workflow-ului.', 'settings_enablePasswordForgotten' => 'Activați Am uitat parola', 'settings_enablePasswordForgotten_desc' => 'Dacă doriți să permiteti utilizatorilor să stabilească o nouă parolă și să le fie trimisă prin e-mail, bifați această opțiune.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Activați numararea recursiva pentru documente/foldere', @@ -1690,10 +1693,10 @@ URL: [url]', 'to_before_from' => 'Data de încheiere nu poate fi înainte de data de începere', 'transfer_document' => 'Transfer document', 'transfer_no_read_access' => '', -'transfer_no_write_access' => '', +'transfer_no_write_access' => 'Utilizatorul nu are drepturi de scriere pe acest dosar', 'transfer_objects' => '', 'transfer_objects_to_user' => '', -'transfer_to_user' => '', +'transfer_to_user' => 'Trabsferare catre alt utilizator', 'transition_triggered_email' => 'Tranziție Workflow declanșată', 'transition_triggered_email_body' => 'Tranziție Workflow declanșată Document: [name] diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index fcc6bfc10..4ec0281fe 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -949,6 +949,7 @@ URL: [url]', 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => 'Получатели', +'recipient_already_removed' => '', 'redraw' => 'Обновить картинку', 'refresh' => 'Обновить', 'rejected' => 'Отклонён', @@ -1308,6 +1309,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => 'Включите для того, чтобы владелец документа был в списке рецензентов/утверждающих и в изменении процесса.', 'settings_enablePasswordForgotten' => 'Включить восстановление пароля', 'settings_enablePasswordForgotten_desc' => 'Если включено, разрешает пользователям восстанавливать пароль через e-mail.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => 'Включить подтверждение получения документа', 'settings_enableReceiptWorkflow_desc' => 'Включить для активации функции подтверждения получения документа', 'settings_enableRecursiveCount' => 'Рекурсивно подсчитывать
      документы и каталоги', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index f2e84f61d..11bb845c7 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -984,6 +984,7 @@ URL: [url]', 'reception_noaction' => 'Žiadna akcia', 'reception_rejected' => 'Reception rejected', 'recipients' => 'Príjemcovia', +'recipient_already_removed' => '', 'redraw' => 'Prekresliť', 'refresh' => 'Obnoviť', 'rejected' => 'Odmietnuté', @@ -1348,6 +1349,8 @@ Meno: [username] 'settings_enableOwnerRevApp_desc' => 'Enable this if you want the owner of a document to be listed as reviewers/approvers and for workflow transitions.', 'settings_enablePasswordForgotten' => 'Povoliť zabudnuté heslo', 'settings_enablePasswordForgotten_desc' => 'If you want to allow user to set a new password and send it by mail, check this option.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => 'Enable acknowledge of document reception', 'settings_enableReceiptWorkflow_desc' => 'Enable, to turn on the workflow to acknowledge document reception.', 'settings_enableRecursiveCount' => 'Enable recursive document/folder count', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index ec4285d62..241beb444 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -957,6 +957,7 @@ Om du fortfarande har problem med inloggningen, kontakta administratören.', 'reception_noaction' => 'Ingen åtgärd', 'reception_rejected' => '', 'recipients' => 'Mottagare', +'recipient_already_removed' => '', 'redraw' => 'Återkalla', 'refresh' => 'Uppdatera', 'rejected' => 'Avvisat', @@ -1321,6 +1322,8 @@ Kommentar: [comment]', 'settings_enableOwnerRevApp_desc' => 'Aktivera om du vill att en dokumentägare visas i listan för personer som granskar/godkänner dokumentet och i övergång på arbetsflöden.', 'settings_enablePasswordForgotten' => 'Aktivera glömt lösenord', 'settings_enablePasswordForgotten_desc' => 'Om du vill tillåta att användare kan få nytt lösenord genom att skicka e-post, aktivera denna option.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => 'Aktivera notifiering vid mottagande av dokument', 'settings_enableReceiptWorkflow_desc' => 'Aktivera notifiering av meddelanden i arbetsflödet.', 'settings_enableRecursiveCount' => 'Aktivera rekursiv räkning av dokument/katalog', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 393ebd32e..8b91e8d0a 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -943,6 +943,7 @@ Giriş yaparken halen sorun yaşıyorsanız lütfen sistem yöneticinizle görü 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'Yenile', 'rejected' => 'Reddedildi', @@ -1280,6 +1281,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => 'Bir dokümanın sahibinin kontrol eden/onaylayan listesinde ve iş akışında olmasını isterseniz bunu etkinleştirin.', 'settings_enablePasswordForgotten' => 'Parola Kurtarmayı Etkinleştir', 'settings_enablePasswordForgotten_desc' => 'Kullanıcının unuttuğu parolayı kendisine gönderilecek e-posta ile sıfırlamasına izin vermek için bu seçeneği etkinleştirebilirsiniz.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Özyinelenen doküman/klasör sayımını etkinleştir', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index c69a2334b..211252c90 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -949,6 +949,7 @@ URL: [url]', 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => 'Отримувачі', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => 'Оновити', 'rejected' => 'Відхилений', @@ -1301,6 +1302,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => 'Увімкніть для того, щоб власник відображався в списку рецензентів/затверджувачів і для зміни процесу.', 'settings_enablePasswordForgotten' => 'Включити відновлення паролю', 'settings_enablePasswordForgotten_desc' => 'Якщо увімкнено, дозволяє користувачам відновлювати пароль через e-mail.', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => 'Увімкнути підтвердження отримання документу', 'settings_enableReceiptWorkflow_desc' => 'Включіть для активації функції підтвердження отримання документу', 'settings_enableRecursiveCount' => 'Рекурсивно підраховувати
      документи і каталоги', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 5f13d24f7..afef9bc37 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (757), archonwang (469), fengjohn (5), yang86 (1) +// Translators: Admin (760), archonwang (469), fengjohn (5), yang86 (1) $text = array( '2_factor_auth' => '双重认证', @@ -948,6 +948,7 @@ URL: [url]', 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => '刷新', 'rejected' => '拒绝', @@ -1149,8 +1150,8 @@ URL: [url]', 'seq_keep' => '当前', 'seq_start' => '首位', 'sessions' => '在线用户', -'setDateFromFile' => '', -'setDateFromFolder' => '', +'setDateFromFile' => '从文件设置日期', +'setDateFromFolder' => '从文件夹中设置日期', 'settings' => '设置', 'settings_activate_module' => '启用模块', 'settings_activate_php_extension' => '启用 PHP 扩展', @@ -1282,6 +1283,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => '', 'settings_enablePasswordForgotten' => '启用忘记密码功能', 'settings_enablePasswordForgotten_desc' => '如您想让用户可以通过邮件方式自主设置新密码,请勾选此选项', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '启用文档接收确认通知', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index ec317d2be..7cadae681 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -830,6 +830,7 @@ URL: [url]', 'reception_noaction' => '', 'reception_rejected' => '', 'recipients' => '', +'recipient_already_removed' => '', 'redraw' => '', 'refresh' => '重新整理', 'rejected' => '拒絕', @@ -1131,6 +1132,8 @@ URL: [url]', 'settings_enableOwnerRevApp_desc' => '', 'settings_enablePasswordForgotten' => '', 'settings_enablePasswordForgotten_desc' => '', +'settings_enableReceiptReject' => '', +'settings_enableReceiptReject_desc' => '', 'settings_enableReceiptWorkflow' => '', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', From 570dc9ca7146fe22c15ae0f4163aa40a77e6b4cf Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 9 Apr 2019 11:20:00 +0200 Subject: [PATCH 026/467] new items for 6.0.7 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index c20d3ac0b..e3a6ba785 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,9 @@ - do not show the updating user in a revision workflow if the status is 0 this is misleading because the user starting the revision workflow is the one first accessing the document +- rejection of document receipts are turned off by default, but can be turned + on in the settings +- documents in DocumentChooser are sorted by name -------------------------------------------------------------------------------- Changes in version 6.0.6 From 423bf1dd7c8a861bc0f80fc54fd382330757947c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 11 Apr 2019 06:19:56 +0200 Subject: [PATCH 027/467] do not show attributes in extra column in search result put into a popup opened by a button --- styles/bootstrap/application.js | 3 ++ views/bootstrap/class.Bootstrap.php | 10 ++++- views/bootstrap/class.Search.php | 57 ++++++++++++++++++++++++++++- 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 47599c115..70a86eaa2 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -985,6 +985,9 @@ $(document).ready(function() { /* {{{ */ $("body").on("click", "span.openpopupbox i", function(e) { $(e.target).parent().click(); }); + $("body").on("click", "span.openpopupbox span", function(e) { + $(e.target).parent().click(); + }); $("body").on("click", "span.closepopupbox", function(e) { $(this).parent().hide(); }); diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 1eb4bb615..47319c248 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -2171,7 +2171,7 @@ $(document).ready( function() { * @param object $previewer * @param boolean $skipcont set to true if embrasing tr shall be skipped */ - function documentListRow($document, $previewer, $skipcont=false, $version=0) { /* {{{ */ + function documentListRow($document, $previewer, $skipcont=false, $version=0, $extracontent=array()) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $showtree = $this->params['showtree']; @@ -2238,10 +2238,14 @@ $(document).ready( function() { $content .= ""; $content .= "" . htmlspecialchars($document->getName()) . ""; + if(isset($extracontent['below_title'])) + $content .= $extracontent['below_title']; $content .= "
      ".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".date('Y-m-d', $document->getDate()).", ".getMLText('version')." ".$version." - ".date('Y-m-d', $latestContent->getDate())."".($document->expires() ? ", ".getMLText('expires').": ".getReadableDate($document->getExpires())."" : "").""; if($comment) { $content .= "
      ".htmlspecialchars($comment).""; } + if(!empty($extracontent['bottom_title'])) + $content .= $extracontent['bottom_title']; $content .= "\n"; $content .= ""; @@ -2293,7 +2297,7 @@ $(document).ready( function() { return $content; } /* }}} */ - function folderListRow($subFolder) { /* {{{ */ + function folderListRow($subFolder, $extracontent=array()) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; // $folder = $this->params['folder']; @@ -2314,6 +2318,8 @@ $(document).ready( function() { if($comment) { $content .= "
      ".htmlspecialchars($comment).""; } + if(isset($extracontent['bottom_title'])) + $content .= $extracontent['bottom_title']; $content .= "\n"; // $content .= "".htmlspecialchars($owner->getFullName()).""; $content .= ""; diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index 77d5b898d..f844dd070 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -463,7 +463,7 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { print "\n\n"; print "\n"; print "".getMLText("name")."\n"; - print "".getMLText("attributes")."\n"; + //print "".getMLText("attributes")."\n"; print "".getMLText("status")."\n"; print "".getMLText("action")."\n"; print "\n\n\n"; @@ -487,6 +487,42 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { else $comment = htmlspecialchars($document->getComment()); if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; + + $belowtitle = "
      ".getMLText('in_folder').": /"; + $folder = $document->getFolder(); + $path = $folder->getPath(); + for ($i = 1; $i < count($path); $i++) { + $belowtitle .= htmlspecialchars($path[$i]->getName())."/"; + } + $belowtitle .= ""; + $lcattributes = $lc->getAttributes(); + $attrstr = ''; + if($lcattributes) { + $attrstr .= "\n"; + $attrstr .= ""; + foreach($lcattributes as $lcattribute) { + $attrdef = $lcattribute->getAttributeDefinition(); + $attrstr .= "\n"; + } + $attrstr .= "
      ".getMLText('name')."".getMLText('attribute_value')."
      ".htmlspecialchars($attrdef->getName())."".htmlspecialchars(implode(', ', $lcattribute->getValueAsArray()))."
      \n"; + } + $docttributes = $document->getAttributes(); + if($docttributes) { + $attrstr .= "\n"; + $attrstr .= ""; + foreach($docttributes as $docttribute) { + $attrdef = $docttribute->getAttributeDefinition(); + $attrstr .= "\n"; + } + $attrstr .= "
      ".getMLText('name')."".getMLText('attribute_value')."
      ".htmlspecialchars($attrdef->getName())."".htmlspecialchars(implode(', ', $docttribute->getValueAsArray()))."
      \n"; + } + $extracontent = array(); + $extracontent['below_title'] = $belowtitle; + if($attrstr) + $extracontent['bottom_title'] = '
      '.$this->printPopupBox(''.getMLText('attributes').'', $attrstr, true); + print $this->documentListRow($document, $previewer, false, 0, $extracontent); + + if(0) { print "getID()."\" class=\"table-row-document\" rel=\"document_".$document->getID()."\" formtoken=\"".createFormKey('movedocument')."\" draggable=\"true\">"; if (in_array(2, $searchin)) { $docName = $this->markQuery(htmlspecialchars($document->getName()), "i"); @@ -565,6 +601,7 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { print "
      "; print ""; print "\n"; + } } } elseif(get_class($entry) == $dms->getClassname('folder')) { $folder = $entry; @@ -574,6 +611,23 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { } else { $folderName = htmlspecialchars($folder->getName()); } + + $attrstr = ''; + $folderattributes = $folder->getAttributes(); + if($folderattributes) { + $attrstr .= "\n"; + $attrstr .= ""; + foreach($folderattributes as $folderattribute) { + $attrdef = $folderattribute->getAttributeDefinition(); + $attrstr .= "\n"; + } + $attrstr .= "
      ".getMLText('name')."".getMLText('attribute_value')."
      ".htmlspecialchars($attrdef->getName())."".htmlspecialchars(implode(', ', $folderattribute->getValueAsArray()))."
      "; + } + $extracontent = array(); + if($attrstr) + $extracontent['bottom_title'] = '
      '.$this->printPopupBox(''.getMLText('attributes').'', $attrstr, true); + print $this->folderListRow($folder, $extracontent); + if(0) { print "getID()."\" draggable=\"true\" rel=\"folder_".$folder->getID()."\" class=\"folder table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">"; print "getID()."\">imgpath."folder.png\" width=\"24\" height=\"24\" border=0>"; print "getID()."\">"; @@ -630,6 +684,7 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { print "
      "; print ""; print "\n"; + } } } print "\n"; From 7ceb0e9718dd14a3dd095e5a24862ab3be0d1806 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Apr 2019 08:54:25 +0200 Subject: [PATCH 028/467] may not edit reception if rejecting a reception is turned off --- out/out.ViewDocument.php | 1 + views/bootstrap/class.ViewDocument.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/out/out.ViewDocument.php b/out/out.ViewDocument.php index 5adefe425..8d9387628 100644 --- a/out/out.ViewDocument.php +++ b/out/out.ViewDocument.php @@ -81,6 +81,7 @@ if($view) { $view->setParam('enablerevisionworkflow', $settings->_enableRevisionWorkflow); $view->setParam('enableownerrevapp', $settings->_enableOwnerRevApp); $view->setParam('enableownerreceipt', $settings->_enableOwnerReceipt); + $view->setParam('enablereceiptreject', $settings->_enableReceiptReject); $view->setParam('cachedir', $settings->_cacheDir); $view->setParam('workflowmode', $settings->_workflowMode); $view->setParam('previewWidthList', $settings->_previewWidthList); diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index ddbce2d4c..db2967332 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -443,6 +443,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { $enableownerrevapp = $this->params['enableownerrevapp']; $enableownerreceipt = $this->params['enableownerreceipt']; $enablereceiptworkflow = $this->params['enablereceiptworkflow']; + $enablereceiptreject = $this->params['enablereceiptreject']; $enablerevisionworkflow = $this->params['enablerevisionworkflow']; $workflowmode = $this->params['workflowmode']; $cachedir = $this->params['cachedir']; @@ -1318,7 +1319,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { if ($is_recipient) { if($r["status"]==0) { print "
    • ".$this->html_link('ReceiptDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'receiptid'=>$r['receiptID']), array('class'=>'btn btn-mini'), getMLText("add_receipt"), false, true)."
    • "; - } elseif ($accessop->mayUpdateReceipt($document, $updateUser) && (($r["status"]==1)||($r["status"]==-1))) { + } elseif ($accessop->mayUpdateReceipt($document, $updateUser) && (($r["status"]==1 && $enablereceiptreject)||($r["status"]==-1))) { print "
    • ".$this->html_link('ReceiptDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'receiptid'=>$r['receiptID']), array('class'=>'btn btn-mini'), getMLText("edit"), false, true)."
    • "; } } From e1bd6605aacd2e11f33da7f91305476a6b89f31e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Apr 2019 08:55:45 +0200 Subject: [PATCH 029/467] add entry from 5.1.11 --- CHANGELOG | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 974e3099f..def1728bc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +-------------------------------------------------------------------------------- + Changes in version 5.1.11 +-------------------------------------------------------------------------------- +- do not show attributes in search results in extra column anymore + -------------------------------------------------------------------------------- Changes in version 5.1.10 -------------------------------------------------------------------------------- From 43c15ff39953764959595eec47c0ea697186a8b5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 17 Apr 2019 08:28:46 +0200 Subject: [PATCH 030/467] index document even if hook preIndexDocument is not set --- op/op.Ajax.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 3e987b459..44778b452 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -803,15 +803,16 @@ switch($command) { $idoc = new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, false, $settings->_cmdTimeout); $error = $idoc->getErrorMsg(); if(!$error) { + $ires = null; if(isset($GLOBALS['SEEDDMS_HOOKS']['indexDocument'])) { foreach($GLOBALS['SEEDDMS_HOOKS']['indexDocument'] as $hookObj) { if (method_exists($hookObj, 'preIndexDocument')) { - if(false !== ($ires = $hookObj->preIndexDocument(null, $document, $idoc))) { - $ires = $index->addDocument($idoc); - } + $ires = $hookObj->preIndexDocument(null, $document, $idoc); } } } + if(false !== $ires) + $ires = $index->addDocument($idoc); header('Content-Type: application/json'); if(false === $ires) { echo json_encode(array('success'=>false, 'message'=>getMLText('error_document_indexed'), 'data'=>$document->getID())); From 0f38a3dff6e8c1f0e8049433cd26b52cdf13fbaa Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 17 Apr 2019 08:29:19 +0200 Subject: [PATCH 031/467] propperly evaluate lang from REQUEST --- controllers/class.Login.php | 6 ++---- op/op.Login.php | 5 +++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/controllers/class.Login.php b/controllers/class.Login.php index bf5abc190..01cd4f21a 100644 --- a/controllers/class.Login.php +++ b/controllers/class.Login.php @@ -151,11 +151,9 @@ class SeedDMS_Controller_Login extends SeedDMS_Controller_Common { $user->clearLoginFailures(); // Capture the user's language and theme settings. - if (isset($_REQUEST["lang"]) && strlen($_REQUEST["lang"])>0 && is_numeric(array_search($_REQUEST["lang"],getLanguages())) ) { - $lang = $_REQUEST["lang"]; + if ($lang) { $user->setLanguage($lang); - } - else { + } else { $lang = $user->getLanguage(); if (strlen($lang)==0) { $lang = $settings->_language; diff --git a/op/op.Login.php b/op/op.Login.php index 7f98452f9..ca4a8b714 100644 --- a/op/op.Login.php +++ b/op/op.Login.php @@ -65,6 +65,11 @@ if(isset($_POST['pwd'])) { } } +$lang = ''; +if(isset($_REQUEST["lang"]) && strlen($_REQUEST["lang"])>0 && is_numeric(array_search($_REQUEST["lang"],getLanguages())) ) { + $lang = (string) $_REQUEST["lang"]; +} + $session = new SeedDMS_Session($db); // TODO: by the PHP manual: The superglobals $_GET and $_REQUEST are already decoded. From ad1480eb3e87373c566b447cf05d781d7d8ed0d1 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 17 Apr 2019 08:29:52 +0200 Subject: [PATCH 032/467] add item for 5.1.11 (fixing #437) --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index def1728bc..09eb2d890 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ Changes in version 5.1.11 -------------------------------------------------------------------------------- - do not show attributes in search results in extra column anymore +- fix setting language during login (Closes #437) +- fix indexing documents even if no preIndexDocument hook is set (Closes #437) -------------------------------------------------------------------------------- Changes in version 5.1.10 From 1dfd36e79ab10fef33739d287a530cf2eb304c2f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 1 May 2019 12:43:36 +0200 Subject: [PATCH 033/467] fix moving documents on clipboard into the current folder --- out/out.Clipboard.php | 11 +++++++++++ views/bootstrap/class.Bootstrap.php | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/out/out.Clipboard.php b/out/out.Clipboard.php index bef7d4108..d81476bd0 100644 --- a/out/out.Clipboard.php +++ b/out/out.Clipboard.php @@ -33,7 +33,18 @@ require_once("inc/inc.ClassUI.php"); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); +$folder = null; +if (isset($_GET["folderid"]) && is_numeric($_GET["folderid"])) { + $folderid = intval($_GET["folderid"]); + $folder = $dms->getFolder($folderid); + if (!is_object($folder)) { + UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_folder_id"))), getMLText("invalid_folder_id")); + } +} + + if($view) { + $view->setParam('folder', $folder); $view->setParam('previewWidthList', $settings->_previewWidthList); $view->setParam('timeout', $settings->_cmdTimeout); $view->setParam('xsendfile', $settings->_enableXsendfile); diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 47319c248..6949641aa 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -350,7 +350,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } if($this->params['enableclipboard']) { echo "
      "; - echo "
      "; + echo "
      "; echo "
      "; } From 2fca4a8f50a9b7f77aa7b1cba809defead44a19a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 1 May 2019 12:48:36 +0200 Subject: [PATCH 034/467] add item for 5.1.11 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 09eb2d890..e45afe7e2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ - do not show attributes in search results in extra column anymore - fix setting language during login (Closes #437) - fix indexing documents even if no preIndexDocument hook is set (Closes #437) +- fix moving documents on the clipboard into the current folder -------------------------------------------------------------------------------- Changes in version 5.1.10 From f8841e670eb1bf591219204be24989c087d5a853 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 2 May 2019 16:56:00 +0200 Subject: [PATCH 035/467] start new version 5.1.11 --- SeedDMS_Core/Core/inc.ClassDMS.php | 2 +- SeedDMS_Core/package.xml | 26 +++++++++++++++++++++----- inc/inc.Version.php | 2 +- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index d42bfe9b6..d83a2fc33 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -376,7 +376,7 @@ class SeedDMS_Core_DMS { $this->callbacks = array(); $this->version = '@package_version@'; if($this->version[0] == '@') - $this->version = '5.1.10'; + $this->version = '5.1.11'; } /* }}} */ /** diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index 50aa5d16b..173016bf2 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -12,11 +12,11 @@ uwe@steinmann.cx yes - 2018-11-23 + 2019-05-03 - 5.1.10 - 5.1.10 + 5.1.11 + 5.1.11 stable @@ -24,8 +24,7 @@ GPL License -fix php warning if workflow state doesn' have next transition -add method SeedDMS_Core_DatabaseAccess::setLogFp() +???
      @@ -1635,5 +1634,22 @@ new optional parameter $listguest for SeedDMS_Core_Document::getReadAccessList() remove deprecated methods SeedDMS_Core_Document::convert(), SeedDMS_Core_Document::wasConverted(), SeedDMS_Core_Document::viewOnline(), SeedDMS_Core_Document::getUrl() + + 2019-04-04 + + + 5.1.10 + 5.1.10 + + + stable + stable + + GPL License + +fix php warning if workflow state doesn' have next transition +add method SeedDMS_Core_DatabaseAccess::setLogFp() + + diff --git a/inc/inc.Version.php b/inc/inc.Version.php index f9240bab5..78c5944ba 100644 --- a/inc/inc.Version.php +++ b/inc/inc.Version.php @@ -20,7 +20,7 @@ class SeedDMS_Version { - public $_number = "5.1.10"; + public $_number = "5.1.11"; private $_string = "SeedDMS"; function __construct() { From ddddb4fb74ccb02b6fa85c5e501d1ea74b7f38c3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 1 Aug 2017 09:35:05 +0200 Subject: [PATCH 036/467] add splashscreen for paypal --- styles/bootstrap/application.css | 15 ++++++++++++++ views/bootstrap/class.Bootstrap.php | 22 +++++++++++++++++++-- views/bootstrap/class.ViewFolder.php | 29 ++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/styles/bootstrap/application.css b/styles/bootstrap/application.css index eb117fcd6..6a94e401e 100644 --- a/styles/bootstrap/application.css +++ b/styles/bootstrap/application.css @@ -228,6 +228,21 @@ ul.qq-upload-list li span { display: none; } +#splashScreen img{ + margin:0 auto; + } + +#splashScreen{ + position:absolute; + top:0px; + left:0; + height:100%; + width:100%; + background: url(../img/kachel.png); + background-repeat:no-repeat; + text-align:center; +} + @media (min-width: 1200px) { .modal-wide { width: 800px; diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 6949641aa..b516c5a75 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -219,8 +219,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; function footNote() { /* {{{ */ echo "
      \n"; - echo '
      '."\n"; - echo '
      '."\n"; + echo '
      '."\n"; + echo '
      '."\n"; echo '
      '."\n"; if ($this->params['printdisclaimer']){ echo "
      ".getMLText("disclaimer")."
      "; @@ -229,6 +229,24 @@ background-image: linear-gradient(to bottom, #882222, #111111);; if (isset($this->params['footnote']) && strlen((string)$this->params['footnote'])>0) { echo "
      ".(string)$this->params['footnote']."
      "; } + echo "
      \n"; + echo "
      \n"; + echo '
      '."\n"; + echo '
      '."\n"; +?> +Please help to improve SeedDMS! All donations are spend on developing SeedDMS. +
      + + + + + + + + + +
      +\n"; echo "
      \n"; echo "
      \n"; diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 88b80a07c..5d6087498 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -246,6 +246,8 @@ $('#loadmore').click(function(e) { $this->htmlAddHeader(''."\n", 'js'); + $this->htmlAddHeader(''."\n", 'js'); + $this->htmlAddHeader(''."\n", 'js'); echo $this->callHook('startPage'); $this->htmlStartPage(getMLText("folder_title", array("foldername" => htmlspecialchars($folder->getName())))); @@ -263,6 +265,33 @@ $('#loadmore').click(function(e) { echo $this->callHook('preContent'); +?> +
      +\n"; // dynamic columns - left column removed if no content and right column then fills span12. From c459175babc6c59fb5989ff53f1914828c8698fa Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 22 Aug 2017 18:09:15 +0200 Subject: [PATCH 037/467] add offer to receive a copy of the user's manual --- views/bootstrap/class.Bootstrap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index b516c5a75..371d4a3b2 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -234,7 +234,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo '
      '."\n"; echo '
      '."\n"; ?> -Please help to improve SeedDMS! All donations are spend on developing SeedDMS. +Please help to improve SeedDMS! All donations are spend on developing SeedDMS. Donate at least 20 USD and get a pdf copy of the user's manual including updates for 1 year.
      From b1dc6847386fe9d53c1e5786d22152d2e632c859 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 16 Feb 2018 09:45:06 +0100 Subject: [PATCH 038/467] add donate button to global nav, use simpler button --- views/bootstrap/class.Bootstrap.php | 21 ++++++++++++++++----- views/bootstrap/class.ViewFolder.php | 6 +++--- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 371d4a3b2..c4d5b33d8 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -235,15 +235,14 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo '
      '."\n"; ?> Please help to improve SeedDMS! All donations are spend on developing SeedDMS. Donate at least 20 USD and get a pdf copy of the user's manual including updates for 1 year. - + - - + + - - +
      "; echo "
      "; } + echo ''; echo "
        \n"; // echo "
      • params['rootfolderid']."\">".getMLText("content")."
      • \n"; diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 5d6087498..4ae64fe77 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -282,11 +282,11 @@ $('#loadmore').click(function(e) { - + + - - +
      From 367d1b52a737e52ce2b5110f869caf5c2cc7f945 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Dec 2018 09:13:52 +0100 Subject: [PATCH 039/467] do not allow download of extensions --- op/op.ExtensionMgr.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/op/op.ExtensionMgr.php b/op/op.ExtensionMgr.php index 55dcd0177..181bcb7ce 100644 --- a/op/op.ExtensionMgr.php +++ b/op/op.ExtensionMgr.php @@ -45,6 +45,8 @@ else $currenttab=NULL; // add new attribute definition --------------------------------------------- if ($action == "download") { + UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); + if (!isset($_POST["extname"])) { UI::exitError(getMLText("admin_tools"),getMLText("unknown_id")); } From da75a7f4b90a57c1d04ebecec875a099c5b21c18 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 9 Jan 2019 16:49:53 +0100 Subject: [PATCH 040/467] add .htaccess file to distribution --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3d8dc4be3..4b8cf9a42 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ VERSION=$(shell php -r 'include("inc/inc.Version.php"); $$v=new SeedDMS_Version(); echo $$v->version();') -SRC=CHANGELOG inc conf utils index.php .htaccess languages views op out controllers doc styles TODO LICENSE webdav install restapi pdfviewer +SRC=CHANGELOG inc conf utils index.php languages views op out controllers doc styles TODO LICENSE webdav install restapi pdfviewer .htaccess # webapp NODISTFILES=utils/importmail.php utils/seedddms-importmail utils/remote-email-upload utils/remote-upload utils/da-bv-reminder.php utils/seeddms-da-bv-reminder .svn .gitignore styles/blue styles/hc styles/clean views/blue views/hc views/clean views/pca From 5734d9808e36e3ecc6ce826e7d2a80744ba2cb6b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 2 May 2019 18:17:49 +0200 Subject: [PATCH 041/467] do not echo error if no folder is set --- out/out.Clipboard.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/out/out.Clipboard.php b/out/out.Clipboard.php index d81476bd0..3d05a787b 100644 --- a/out/out.Clipboard.php +++ b/out/out.Clipboard.php @@ -37,9 +37,6 @@ $folder = null; if (isset($_GET["folderid"]) && is_numeric($_GET["folderid"])) { $folderid = intval($_GET["folderid"]); $folder = $dms->getFolder($folderid); - if (!is_object($folder)) { - UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_folder_id"))), getMLText("invalid_folder_id")); - } } From f8ac8aa74fb17de0c404ba19b7ca2e111d2948a7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 7 May 2019 08:05:19 +0200 Subject: [PATCH 042/467] take out patches accidentially taken over from demo --- Makefile | 2 +- op/op.ExtensionMgr.php | 2 -- styles/bootstrap/application.css | 15 ------------- views/bootstrap/class.Bootstrap.php | 33 ++-------------------------- views/bootstrap/class.ViewFolder.php | 29 ------------------------ 5 files changed, 3 insertions(+), 78 deletions(-) diff --git a/Makefile b/Makefile index 4b8cf9a42..3d8dc4be3 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ VERSION=$(shell php -r 'include("inc/inc.Version.php"); $$v=new SeedDMS_Version(); echo $$v->version();') -SRC=CHANGELOG inc conf utils index.php languages views op out controllers doc styles TODO LICENSE webdav install restapi pdfviewer .htaccess +SRC=CHANGELOG inc conf utils index.php .htaccess languages views op out controllers doc styles TODO LICENSE webdav install restapi pdfviewer # webapp NODISTFILES=utils/importmail.php utils/seedddms-importmail utils/remote-email-upload utils/remote-upload utils/da-bv-reminder.php utils/seeddms-da-bv-reminder .svn .gitignore styles/blue styles/hc styles/clean views/blue views/hc views/clean views/pca diff --git a/op/op.ExtensionMgr.php b/op/op.ExtensionMgr.php index 181bcb7ce..55dcd0177 100644 --- a/op/op.ExtensionMgr.php +++ b/op/op.ExtensionMgr.php @@ -45,8 +45,6 @@ else $currenttab=NULL; // add new attribute definition --------------------------------------------- if ($action == "download") { - UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); - if (!isset($_POST["extname"])) { UI::exitError(getMLText("admin_tools"),getMLText("unknown_id")); } diff --git a/styles/bootstrap/application.css b/styles/bootstrap/application.css index 6a94e401e..eb117fcd6 100644 --- a/styles/bootstrap/application.css +++ b/styles/bootstrap/application.css @@ -228,21 +228,6 @@ ul.qq-upload-list li span { display: none; } -#splashScreen img{ - margin:0 auto; - } - -#splashScreen{ - position:absolute; - top:0px; - left:0; - height:100%; - width:100%; - background: url(../img/kachel.png); - background-repeat:no-repeat; - text-align:center; -} - @media (min-width: 1200px) { .modal-wide { width: 800px; diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index c4d5b33d8..6949641aa 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -219,8 +219,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; function footNote() { /* {{{ */ echo "
      \n"; - echo '
      '."\n"; - echo '
      '."\n"; + echo '
      '."\n"; + echo '
      '."\n"; echo '
      '."\n"; if ($this->params['printdisclaimer']){ echo "
      ".getMLText("disclaimer")."
      "; @@ -229,23 +229,6 @@ background-image: linear-gradient(to bottom, #882222, #111111);; if (isset($this->params['footnote']) && strlen((string)$this->params['footnote'])>0) { echo "
      ".(string)$this->params['footnote']."
      "; } - echo "
      \n"; - echo "
      \n"; - echo '
      '."\n"; - echo '
      '."\n"; -?> -Please help to improve SeedDMS! All donations are spend on developing SeedDMS. Donate at least 20 USD and get a pdf copy of the user's manual including updates for 1 year. -
      - - - - - - - - -
      -\n"; echo "
      \n"; echo "
      \n"; @@ -370,18 +353,6 @@ Please help to improve SeedDMS! All donations are spend on developing SeedDMS. D echo "
      "; echo "
      "; } - echo ''; echo "
        \n"; // echo "
      • params['rootfolderid']."\">".getMLText("content")."
      • \n"; diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 4ae64fe77..88b80a07c 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -246,8 +246,6 @@ $('#loadmore').click(function(e) { $this->htmlAddHeader(''."\n", 'js'); - $this->htmlAddHeader(''."\n", 'js'); - $this->htmlAddHeader(''."\n", 'js'); echo $this->callHook('startPage'); $this->htmlStartPage(getMLText("folder_title", array("foldername" => htmlspecialchars($folder->getName())))); @@ -265,33 +263,6 @@ $('#loadmore').click(function(e) { echo $this->callHook('preContent'); -?> - -\n"; // dynamic columns - left column removed if no content and right column then fills span12. From e0c5013e29172ebda4610535cf003926b84e2625 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 7 May 2019 08:33:02 +0200 Subject: [PATCH 043/467] set minimum requirement to php 7.0 --- doc/README.Install.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/README.Install.md b/doc/README.Install.md index b203fa9e5..cc480541f 100644 --- a/doc/README.Install.md +++ b/doc/README.Install.md @@ -8,13 +8,13 @@ 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 5.4 and MySQL 5 or higher installed. SeedDMS +Make sure you have PHP 7.x and MySQL 5 or higher installed. SeedDMS will work with PHP running in CGI-mode as well as running as a module under apache. Here is a detailed list of requirements: -1. A web server with at least php 5.4 +1. A web server with at least php 7.0 2. A mysql database, unless you use sqlite 3. The php installation must have support for `pdo_mysql` or `pdo_sqlite`, `php_gd2`, `php_mbstring` From a511904a8156670e8a528a952c55879cf930bf90 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 13 May 2019 08:13:30 +0200 Subject: [PATCH 044/467] call new hook 'footNote', footNote() returns the html instead of echoing it --- views/bootstrap/class.Bootstrap.php | 31 ++++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 6949641aa..75572532e 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -141,7 +141,14 @@ background-image: linear-gradient(to bottom, #882222, #111111);; function htmlEndPage($nofooter=false) { /* {{{ */ if(!$nofooter) { - $this->footNote(); + $hookObjs = $this->getHookObjects('SeedDMS_View_Bootstrap'); + $html = $this->footNote(); + foreach($hookObjs as $hookObj) { + if (method_exists($hookObj, 'footNote')) { + $html = $hookObj->footNote($this, $html); + } + } + echo $html; if($this->params['showmissingtranslations']) { $this->missingLanguageKeys(); } @@ -218,23 +225,23 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } /* }}} */ function footNote() { /* {{{ */ - echo "
        \n"; - echo '
        '."\n"; - echo '
        '."\n"; - echo '
        '."\n"; + $html = "
        \n"; + $html .= '
        '."\n"; + $html .= '
        '."\n"; + $html .= '
        '."\n"; if ($this->params['printdisclaimer']){ - echo "
        ".getMLText("disclaimer")."
        "; + $html .= "
        ".getMLText("disclaimer")."
        "; } if (isset($this->params['footnote']) && strlen((string)$this->params['footnote'])>0) { - echo "
        ".(string)$this->params['footnote']."
        "; + $html .= "
        ".(string)$this->params['footnote']."
        "; } - echo "
        \n"; - echo "
        \n"; - echo "
        \n"; - echo "
        \n"; + $html .= "
        \n"; + $html .= "
        \n"; + $html .= "
        \n"; + $html .= "
        \n"; - return; + return $html; } /* }}} */ function contentStart() { /* {{{ */ From d239fbb331a2f364e9682b3201ca013f75574ff2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 13 May 2019 08:14:40 +0200 Subject: [PATCH 045/467] add entry for 5.1.11 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index e45afe7e2..630a18d72 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ - fix setting language during login (Closes #437) - fix indexing documents even if no preIndexDocument hook is set (Closes #437) - fix moving documents on the clipboard into the current folder +- new hook 'footNote' in class Bootstrap -------------------------------------------------------------------------------- Changes in version 5.1.10 From b6893da7067a8105211eb2f3a8a225a040b7b7bd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 7 Jun 2019 21:38:20 +0200 Subject: [PATCH 046/467] another note on setting document root propperly --- doc/README.Install.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/README.Install.md b/doc/README.Install.md index cc480541f..5aec87904 100644 --- a/doc/README.Install.md +++ b/doc/README.Install.md @@ -40,7 +40,7 @@ The fastes way to get SeedDMS running is by unpacking the archive It will create a new directory `seeddms51x` containing everything you need to run SeedDMS with sqlite3. Make sure that the subdіrectory `seeddms51x/data` -and the configuration file `seeddms51/www/conf/settings.xml` is writeable +and the configuration file `seeddms51/conf/settings.xml` is writeable by your web server. All other directories must just be readable by your web server. In the next step you need to adjust the configuration file in `seeddms51/www/conf/settings.xml`. If you @@ -50,7 +50,11 @@ with your document root. Alternatively, you can open the installer with a browser at http://your-domain/seeddms51x/install/ It will first ask to unlock the installer by creating a file `ENABLE_INSTALL_TOOL` in the diretory `seeddms51/www/conf/`. Change all -paths by replacing `/home/wwww-data` with your document root. Once done, +paths by replacing `/home/wwww-data` with your document root. Do not change +the httpRoot. Leave it at '/' and set your DocumentRoot in your web server +to the `www` directory in `seeddms51x`. Do not set the DocumentRoot to +the `seeddms51x` directory, because this will allow anybody to access +your `data` and `conf` directory. This is a major security risk. Once done, save it, remove the file `ENABLE_INSTALL_TOOL` and point your browser to http://your-domain/seeddms51x/. From b0e3c816ffab0a26ef7b0123bc6173719772c7e5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Jun 2019 08:50:13 +0200 Subject: [PATCH 047/467] fix typo in comment --- op/op.EditUserData.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op/op.EditUserData.php b/op/op.EditUserData.php index e4f37e4c5..749bbda20 100644 --- a/op/op.EditUserData.php +++ b/op/op.EditUserData.php @@ -41,7 +41,7 @@ $fullname = $_POST["fullname"]; $email = $_POST["email"]; $comment = $_POST["comment"]; $language = $_POST["language"]; -/* 'theme' won't be set, if themeselector is turn off */ +/* 'theme' won't be set, if themeselector is turned off */ if(isset($_POST["theme"])) $mytheme = $_POST["theme"]; $current_pwd = $_POST["currentpwd"]; From aed0c3cdf356ac0f22bb57402c87593d48f28a7d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Jun 2019 09:03:00 +0200 Subject: [PATCH 048/467] prevent xss attack in Select2 select menu --- styles/bootstrap/application.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 70a86eaa2..0f1508b0f 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -1,10 +1,15 @@ -/* Template function which outputs an option in a chzn-select */ +/* Template function which outputs an option in a chzn-select + * The replace() call is required to prevent xss attacks (see CVE-2019-12745) + * Using htmlspecialchars() in php isn't sufficient because, chzn_template_func + * will receive an unescaped string + * (see https://forums.select2.org/t/propperly-escape-option-value-to-prevent-xss/788) + */ chzn_template_func = function (state) { var subtitle = $(state.element).data('subtitle'); var warning = $(state.element).data('warning'); - var html = ''+state.text+''; + var html = ''+state.text.replace(/'; + html += '
        '+subtitle.replace(/'; if(warning) html += '
        '+warning+''; html += '
        '; @@ -38,7 +43,8 @@ $(document).ready( function() { $(".chzn-select").select2({ width: '100%', - templateResult: chzn_template_func + templateResult: chzn_template_func, + templateSelection: chzn_template_func }); /* change the color and length of the bar graph showing the password From 0fe038e512916b6933f44c693877c32c7cea36db Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Jun 2019 09:03:30 +0200 Subject: [PATCH 049/467] escape group name in list of groups --- views/bootstrap/class.UsrMgr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.UsrMgr.php b/views/bootstrap/class.UsrMgr.php index f5aa18b01..64a3a5d62 100644 --- a/views/bootstrap/class.UsrMgr.php +++ b/views/bootstrap/class.UsrMgr.php @@ -320,7 +320,7 @@ $(document).ready( function() { ); $options = array(); foreach($groups as $group) { - $options[] = array($group->getID(), $group->getName(), ($currUser && $group->isMember($currUser))); + $options[] = array($group->getID(), htmlspecialchars($group->getName()), ($currUser && $group->isMember($currUser))); } $this->formField( getMLText("groups"), From 03263c0dc9553fc40bd2f34dcb545a08e8f15a6f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Jun 2019 09:03:55 +0200 Subject: [PATCH 050/467] much better installation instructions added security considerations --- doc/README.Install.md | 66 ++++++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 20 deletions(-) diff --git a/doc/README.Install.md b/doc/README.Install.md index 5aec87904..bca601437 100644 --- a/doc/README.Install.md +++ b/doc/README.Install.md @@ -36,28 +36,54 @@ QUICKSTART =========== The fastes way to get SeedDMS running is by unpacking the archive -`seeddms-quickstart-x.y.z.tar.gz` into your webservers document root. +`seeddms-quickstart-x.y.z.tar.gz` on your webserver. +Let's assume you use seeddms-quickstart-5.1.10.tar.gz. It will create a new directory `seeddms51x` containing everything you -need to run SeedDMS with sqlite3. Make sure that the subdіrectory -`seeddms51x/data` -and the configuration file `seeddms51/conf/settings.xml` is writeable -by your web server. All other directories must just be readable by your -web server. In the next step you need to adjust -the configuration file in `seeddms51/www/conf/settings.xml`. If you -are not afraid of xml files, then open it in your favorite text editor -and search for `/home/wwww-data`. Replace that part in any path found -with your document root. Alternatively, you can open the installer -with a browser at http://your-domain/seeddms51x/install/ -It will first ask to unlock the installer by creating a file -`ENABLE_INSTALL_TOOL` in the diretory `seeddms51/www/conf/`. Change all -paths by replacing `/home/wwww-data` with your document root. Do not change -the httpRoot. Leave it at '/' and set your DocumentRoot in your web server -to the `www` directory in `seeddms51x`. Do not set the DocumentRoot to -the `seeddms51x` directory, because this will allow anybody to access -your `data` and `conf` directory. This is a major security risk. Once done, -save it, remove the file `ENABLE_INSTALL_TOOL` and point your browser to -http://your-domain/seeddms51x/. +need to run SeedDMS with sqlite3. +Either let the document root of your web server point to the directory `www` +below `seeddms51x` or add an alias. For apache this could be like +Alias /seeddms51x //seeddms51x/www + +Do not set the DocumentRoot to +the `seeddms51x` directory, because this will allow anybody to access +your `data` and `conf` directory. This is a major security risk. + +Make sure that the subdіrectory `seeddms51x/data` and the configuration file +`seeddms51/conf/settings.xml` is writeable by your web server. All other +directories must just be readable by your web server. + +In the next step you need to adjust the configuration file in +`seeddms51x/conf/settings.xml`. Open the file in your favorite text editor +and search for `/home/wwww-data`. Replace that part in any path found with your +base directory where you placed seeddms51x (e.g. /var/www/html/seeddms51x). +Alternatively, you can open the installer with a browser at +http://your-domain/install (if the document root points to +`seeddms51x/www`) or http://your-domain/seeddms51x/install/ (if you have +set an alias like described above). + +It will first ask to unlock the installer by creating a file +`ENABLE_INSTALL_TOOL` in the diretory `seeddms51x/conf/`. Change all paths by +replacing `/home/wwww-data` with your base directory where you put seeddms51x. +Set httpRoot to '/' (if the document root points to`seeddms51x/www`) or +'/seeddms51x' (if you have set an alias like described above). + +Once your configuration is done, +save it, remove the file `ENABLE_INSTALL_TOOL` and point your browser to +http://your-domain/ or http://your-domain/seeddms51x. + +SECURITY CONSIDERATIONS +======================= + +A crucial point when setting up SeedDMS is the propper placement of the +data directory. Do not place it below your document root as +configured in your web server! If you do so, there is good change that +attackers can easily access your documents with a regular browser. +If you can't place the data directory outside of document root, that either +restrict access to it with an appropriate .htaccess file or/and change +the `contentOffsetDir` in `settings.xml` to something random, but ensure it +is still a valid directory name. If you change contentOffsetDir then +do not forget to move `data/1048576` to `data/`. UPDATING FROM A PREVIOUS VERSION OR SEEDDMS ============================================= From 0b6d1b4597d781bc71045e7fc4bc4f9c4a71926d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Jun 2019 09:12:55 +0200 Subject: [PATCH 051/467] add example of .htaccess file for data directory --- doc/README.Install.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/doc/README.Install.md b/doc/README.Install.md index bca601437..f7e987dc0 100644 --- a/doc/README.Install.md +++ b/doc/README.Install.md @@ -85,6 +85,26 @@ the `contentOffsetDir` in `settings.xml` to something random, but ensure it is still a valid directory name. If you change contentOffsetDir then do not forget to move `data/1048576` to `data/`. +Example for .htaccess file in data directory +---------------------------------------------- +``` +# line below if for Apache 2.4 + +Require all denied + + +# line below if for Apache 2.2 + +deny from all +Satisfy All + + +# section for Apache 2.2 and 2.4 + +IndexIgnore * + +``` + UPDATING FROM A PREVIOUS VERSION OR SEEDDMS ============================================= From f32ac518eaeb6ef7fc8349ad835d8a1348552e84 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Jun 2019 09:13:38 +0200 Subject: [PATCH 052/467] add note for CVE-2019-12744 and CVE-2019-12745 --- CHANGELOG | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 630a18d72..5268e5fbf 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,9 @@ -------------------------------------------------------------------------------- Changes in version 5.1.11 -------------------------------------------------------------------------------- +- fix for CVE-2019-12744, add .htaccess file to data directory, better + documentation for installing seeddms +- fix for CVE-2019-12745, propperly escape strings used in Select2 js library - do not show attributes in search results in extra column anymore - fix setting language during login (Closes #437) - fix indexing documents even if no preIndexDocument hook is set (Closes #437) @@ -55,7 +58,7 @@ - catch error when updating a document fails (Closes #410) - use always 'Send from' address as Return-Path when set, only if not set the logged in user's email will be used (Closes #418) -- show the debug output when sendind a test mail +- show the debug output when sending a test mail - add hooks add hooks folderListPreContent and folderListPostContent in class.ViewFolder.php - do not redirect to ForcePassword page if out.Logout.php was opened. This From 556ec6de14b9cb5724833d9f6318759c00d45f84 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Jun 2019 09:29:24 +0200 Subject: [PATCH 053/467] callbacks for select2 can now handle numeric values for data attributes --- styles/bootstrap/application.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 0f1508b0f..7dfb584b5 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -5,8 +5,12 @@ * (see https://forums.select2.org/t/propperly-escape-option-value-to-prevent-xss/788) */ chzn_template_func = function (state) { - var subtitle = $(state.element).data('subtitle'); - var warning = $(state.element).data('warning'); + var subtitle = ''; + if($(state.element).data('subtitle')) + subtitle = $(state.element).data('subtitle')+''; /* make sure it is a string */ + var warning = ''; + if($(state.element).data('warning')) + warning = $(state.element).data('warning')+''; /* make sure it is a string */ var html = ''+state.text.replace(/'; From cf3d276913eacae7f867618b4f8eb9830394702f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 14 Jun 2019 08:53:04 +0200 Subject: [PATCH 054/467] add CVE --- CHANGELOG | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 5268e5fbf..e898e21ac 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,8 @@ -------------------------------------------------------------------------------- - fix for CVE-2019-12744, add .htaccess file to data directory, better documentation for installing seeddms -- fix for CVE-2019-12745, propperly escape strings used in Select2 js library +- fix for CVE-2019-12745 and CVE-2019-12801, propperly escape strings used + in Select2 js library used by UsrMgr and GroupMgr - do not show attributes in search results in extra column anymore - fix setting language during login (Closes #437) - fix indexing documents even if no preIndexDocument hook is set (Closes #437) From 94ec9f5962b2bafac0221729dac4fdc21ee2db2c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 20 Jun 2019 08:26:37 +0200 Subject: [PATCH 055/467] more detailed description of fixed CVE in 5.1.11 --- CHANGELOG | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e898e21ac..fe47781e0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,10 +1,12 @@ -------------------------------------------------------------------------------- Changes in version 5.1.11 -------------------------------------------------------------------------------- -- fix for CVE-2019-12744, add .htaccess file to data directory, better - documentation for installing seeddms -- fix for CVE-2019-12745 and CVE-2019-12801, propperly escape strings used - in Select2 js library used by UsrMgr and GroupMgr +- fix for CVE-2019-12744 (Remote Command Execution through unvalidated + file upload), add .htaccess file to data directory, better documentation + for installing seeddms +- fix for CVE-2019-12745 (Persistent or Stored XSS in UsrMgr) and + CVE-2019-12801 (Persistent or Stored XSS in GroupMgr), propperly escape + strings used in Select2 js library used by UsrMgr and GroupMgr - do not show attributes in search results in extra column anymore - fix setting language during login (Closes #437) - fix indexing documents even if no preIndexDocument hook is set (Closes #437) From 7485dbba15a3eff8c66aa7e8c593e26cd94c7b15 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 11:46:25 +0200 Subject: [PATCH 056/467] use only first char of $orderby --- SeedDMS_Core/Core/inc.ClassFolder.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassFolder.php b/SeedDMS_Core/Core/inc.ClassFolder.php index 76325f48a..5a9400197 100644 --- a/SeedDMS_Core/Core/inc.ClassFolder.php +++ b/SeedDMS_Core/Core/inc.ClassFolder.php @@ -539,9 +539,9 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { if (!isset($this->_subFolders)) { $queryStr = "SELECT * FROM `tblFolders` WHERE `parent` = " . $this->_id; - if ($orderby=="n") $queryStr .= " ORDER BY `name`"; - elseif ($orderby=="s") $queryStr .= " ORDER BY `sequence`"; - elseif ($orderby=="d") $queryStr .= " ORDER BY `date`"; + if ($orderby[0]=="n") $queryStr .= " ORDER BY `name`"; + elseif ($orderby[0]=="s") $queryStr .= " ORDER BY `sequence`"; + elseif ($orderby[0]=="d") $queryStr .= " ORDER BY `date`"; if($dir == 'desc') $queryStr .= " DESC"; if(is_int($limit) && $limit > 0) { @@ -743,9 +743,9 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { if (!isset($this->_documents)) { $queryStr = "SELECT * FROM `tblDocuments` WHERE `folder` = " . $this->_id; - if ($orderby=="n") $queryStr .= " ORDER BY `name`"; - elseif($orderby=="s") $queryStr .= " ORDER BY `sequence`"; - elseif($orderby=="d") $queryStr .= " ORDER BY `date`"; + if ($orderby[0]=="n") $queryStr .= " ORDER BY `name`"; + elseif($orderby[0]=="s") $queryStr .= " ORDER BY `sequence`"; + elseif($orderby[0]=="d") $queryStr .= " ORDER BY `date`"; if($dir == 'desc') $queryStr .= " DESC"; if(is_int($limit) && $limit > 0) { From 0a4d7359b29416628cd0b7530b9e7f77d7ae15ba Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 11:46:46 +0200 Subject: [PATCH 057/467] new version 5.1.12 --- SeedDMS_Core/package.xml | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index 173016bf2..e742bf36c 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -12,11 +12,11 @@ uwe@steinmann.cx yes - 2019-05-03 + 2019-06-24 - 5.1.11 - 5.1.11 + 5.1.12 + 5.1.12 stable @@ -24,7 +24,8 @@ GPL License -??? +parameter $orderby passed to SeedDMS_Core_Folder::getDocuments() and SeedDMS_Core_Folder::getSubFolders() can be a string, but only the first char is +evaluated @@ -1651,5 +1652,21 @@ fix php warning if workflow state doesn' have next transition add method SeedDMS_Core_DatabaseAccess::setLogFp() + + 2019-05-03 + + + 5.1.11 + 5.1.11 + + + stable + stable + + GPL License + +??? + + From 6d751b54372f012c8917c96d260f998744ccc2e4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 11:51:21 +0200 Subject: [PATCH 058/467] allow orderby to be a string not just a char --- out/out.ViewFolder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/out/out.ViewFolder.php b/out/out.ViewFolder.php index eec5fdcba..90d07ce45 100644 --- a/out/out.ViewFolder.php +++ b/out/out.ViewFolder.php @@ -45,7 +45,7 @@ if (!is_object($folder)) { UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_folder_id"))), getMLText("invalid_folder_id")); } -if (isset($_GET["orderby"]) && strlen($_GET["orderby"])==1 ) { +if (isset($_GET["orderby"]) && strlen($_GET["orderby"])>0 ) { $orderby=$_GET["orderby"]; } else $orderby=$settings->_sortFoldersDefault; From 66d2dcce8e139140143acc03fd9315128e39cf02 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 11:52:01 +0200 Subject: [PATCH 059/467] add style for i.selected, used in table headers --- styles/bootstrap/application.css | 1 + 1 file changed, 1 insertion(+) diff --git a/styles/bootstrap/application.css b/styles/bootstrap/application.css index eb117fcd6..6a02e1153 100644 --- a/styles/bootstrap/application.css +++ b/styles/bootstrap/application.css @@ -161,6 +161,7 @@ i.released {color: #00b000;} i.rejected {color: #b00000;} i.in-workflow {color: #11479e;} i.workflow-action {color: #91479e;} +i.selected {border: 1px solid #d4d4d4;padding:3px;border-radius:3px;background-color:#fafafa;background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);} span.openpopupbox { cursor: pointer; From 414f00c5c9541d4ceef473e915cd8a451e974c39 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 11:53:01 +0200 Subject: [PATCH 060/467] add fix for CVE-2019-12932, escape strings output by incr. search --- styles/bootstrap/application.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 7dfb584b5..086d46a6b 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -90,11 +90,11 @@ $(document).ready( function() { }, highlighter : function (item) { if(item.charAt(0) == 'D') - return ' ' + item.substring(1); + return ' ' + item.substring(1).replace(/ ' + item.substring(1); + return ' ' + item.substring(1).replace(/ ' + item.substring(1); + return ' ' + item.substring(1).replace(/ ' + strarr[1]; + return ' ' + strarr[1].replace(/ ' + strarr[1]; + return ' ' + strarr[1].replace(/ Date: Mon, 24 Jun 2019 11:54:08 +0200 Subject: [PATCH 061/467] add icons for sort field and sort order in list of folders/docs --- views/bootstrap/class.Bootstrap.php | 10 ++++++---- views/bootstrap/class.ViewFolder.php | 27 +++++++++++++++++---------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 75572532e..8090d872c 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1584,10 +1584,11 @@ $(document).ready(function() { */ function printNewTreeNavigationJs($folderid=0, $accessmode=M_READ, $showdocs=0, $formid='form1', $expandtree=0, $orderby='') { /* {{{ */ function jqtree($path, $folder, $user, $accessmode, $showdocs=1, $expandtree=0, $orderby='', $level=0) { + $orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc'); if($path || $expandtree>=$level) { if($path) $pathfolder = array_shift($path); - $subfolders = $folder->getSubFolders($orderby); + $subfolders = $folder->getSubFolders($orderby[0], $orderdir); $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); $children = array(); foreach($subfolders as $subfolder) { @@ -1595,7 +1596,7 @@ $(document).ready(function() { if($expandtree>=$level || $pathfolder->getID() == $subfolder->getID()) { $node['children'] = jqtree($path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1); if($showdocs) { - $documents = $subfolder->getDocuments($orderby); + $documents = $subfolder->getDocuments($orderby[0], $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, $accessmode); foreach($documents as $document) { $node2 = array('label'=>$document->getName(), 'id'=>$document->getID(), 'load_on_demand'=>false, 'is_folder'=>false); @@ -1607,7 +1608,7 @@ $(document).ready(function() { } return $children; } else { - $subfolders = $folder->getSubFolders($orderby); + $subfolders = $folder->getSubFolders($orderby[0], $orderdir); $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); $children = array(); foreach($subfolders as $subfolder) { @@ -1619,6 +1620,7 @@ $(document).ready(function() { return array(); } + $orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc'); if($folderid) { $folder = $this->params['dms']->getFolder($folderid); $path = $folder->getPath(); @@ -1631,7 +1633,7 @@ $(document).ready(function() { } else { $node['children'] = jqtree($path, $folder, $this->params['user'], $accessmode, $showdocs, $expandtree, $orderby, 0); if($showdocs) { - $documents = $folder->getDocuments($orderby); + $documents = $folder->getDocuments($orderby[0], $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $this->params['user'], $accessmode); foreach($documents as $document) { $node2 = array('label'=>$document->getName(), 'id'=>$document->getID(), 'load_on_demand'=>false, 'is_folder'=>false); diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 88b80a07c..8962abeeb 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -87,6 +87,7 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style { $user = $this->params['user']; $folder = $this->params['folder']; $orderby = $this->params['orderby']; + $orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc'); $expandFolderTree = $this->params['expandFolderTree']; $enableDropUpload = $this->params['enableDropUpload']; $maxItemsPerPage = $this->params['maxItemsPerPage']; @@ -155,6 +156,7 @@ $('#loadmore').click(function(e) { $user = $this->params['user']; $folder = $this->params['folder']; $orderby = $this->params['orderby']; + $orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc'); $cachedir = $this->params['cachedir']; $previewwidth = $this->params['previewWidthList']; $previewconverters = $this->params['previewConverters']; @@ -168,13 +170,13 @@ $('#loadmore').click(function(e) { $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); $previewer->setConverters($previewconverters); - $subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby); + $subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby[0]); if($subFolders === null) - $subFolders = $folder->getSubFolders($orderby); + $subFolders = $folder->getSubFolders($orderby[0], $orderdir); $subFolders = SeedDMS_Core_DMS::filterAccess($subFolders, $user, M_READ); - $documents = $this->callHook('folderGetDocuments', $folder, $orderby); + $documents = $this->callHook('folderGetDocuments', $folder, $orderby[0]); if($documents === null) - $documents = $folder->getDocuments($orderby); + $documents = $folder->getDocuments($orderby[0], $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ); $content = ''; @@ -226,6 +228,7 @@ $('#loadmore').click(function(e) { $user = $this->params['user']; $folder = $this->params['folder']; $orderby = $this->params['orderby']; + $orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc'); $enableFolderTree = $this->params['enableFolderTree']; $enableClipboard = $this->params['enableclipboard']; $enableDropUpload = $this->params['enableDropUpload']; @@ -399,13 +402,13 @@ $('#loadmore').click(function(e) { else $this->contentHeading(getMLText("folder_contents")); - $subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby); + $subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby[0], $orderdir); if($subFolders === null) - $subFolders = $folder->getSubFolders($orderby); + $subFolders = $folder->getSubFolders($orderby[0], $orderdir); $subFolders = SeedDMS_Core_DMS::filterAccess($subFolders, $user, M_READ); - $documents = $this->callHook('folderGetDocuments', $folder, $orderby); + $documents = $this->callHook('folderGetDocuments', $folder, $orderby[0], $orderdir); if($documents === null) - $documents = $folder->getDocuments($orderby); + $documents = $folder->getDocuments($orderby[0], $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ); $txt = $this->callHook('folderListPreContent', $folder, $subFolders, $documents); @@ -413,14 +416,18 @@ $('#loadmore').click(function(e) { echo $txt; $i = 0; if ((count($subFolders) > 0)||(count($documents) > 0)){ - $txt = $this->callHook('folderListHeader', $folder, $orderby); + $txt = $this->callHook('folderListHeader', $folder, $orderby, $orderdir); if(is_string($txt)) echo $txt; else { print ""; print "\n\n"; print "\n"; - print "\n"; + print "\n"; // print "\n"; print "\n"; // print "\n"; From c9ff52537221c581d8aaf9a8d30691980926d2a4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 11:54:45 +0200 Subject: [PATCH 062/467] start changelog for 5.1.12 --- CHANGELOG | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index fe47781e0..ee4228191 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,10 @@ +-------------------------------------------------------------------------------- + Changes in version 5.1.12 +-------------------------------------------------------------------------------- +- fix for CVE-2019-12932 (Persistent or Stored XSS), excaping the search + result in the autocompletion search form placed in the header +- folder/document list can be sorted ascending or descending + -------------------------------------------------------------------------------- Changes in version 5.1.11 -------------------------------------------------------------------------------- From eccbc5ebd604fc9577c1058a1a3dc4447eab1612 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 11:55:24 +0200 Subject: [PATCH 063/467] start new version 5.1.12 --- SeedDMS_Core/Core/inc.ClassDMS.php | 2 +- inc/inc.Version.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index d83a2fc33..83bedf665 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -376,7 +376,7 @@ class SeedDMS_Core_DMS { $this->callbacks = array(); $this->version = '@package_version@'; if($this->version[0] == '@') - $this->version = '5.1.11'; + $this->version = '5.1.12'; } /* }}} */ /** diff --git a/inc/inc.Version.php b/inc/inc.Version.php index 78c5944ba..9e1caf3d3 100644 --- a/inc/inc.Version.php +++ b/inc/inc.Version.php @@ -20,7 +20,7 @@ class SeedDMS_Version { - public $_number = "5.1.11"; + public $_number = "5.1.12"; private $_string = "SeedDMS"; function __construct() { From ee57a4b25bd428baa913384aab9ecad2e9fd50a8 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 12:36:55 +0200 Subject: [PATCH 064/467] require at least 5.6.38, do not check for Log.php anymore --- inc/inc.ClassSettings.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index f2ad438db..bb86e9bd5 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -1413,7 +1413,7 @@ class Settings { /* {{{ */ } // Check PHP version - if (version_compare(PHP_VERSION, '5.2.0') < 0) { + if (version_compare(PHP_VERSION, '5.6.38') < 0) { $result["php_version"] = array( "status" => "versiontolow", "type" => "error", @@ -1452,6 +1452,8 @@ class Settings { /* {{{ */ } // Check for Log.php + // Do not check for Log anymore, because it is in the vendor directory + /* if (!Settings::findInIncPath('Log.php')) { $result["pear_log"] = array( "status" => "notfound", @@ -1459,6 +1461,7 @@ class Settings { /* {{{ */ "suggestion" => "install_pear_package_log" ); } + */ // Check for HTTP/WebDAV/Server.php if (!Settings::findInIncPath('HTTP/WebDAV/Server.php')) { From 8af9d0fc285c0705ea586f3a11a70740a178c249 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 12:37:25 +0200 Subject: [PATCH 065/467] getNotificationList() returns an empty array if there are no notifications --- views/bootstrap/class.ManageNotify.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.ManageNotify.php b/views/bootstrap/class.ManageNotify.php index da096a740..a93f0a7ea 100644 --- a/views/bootstrap/class.ManageNotify.php +++ b/views/bootstrap/class.ManageNotify.php @@ -43,7 +43,7 @@ class SeedDMS_View_ManageNotify extends SeedDMS_Bootstrap_Style { $notifications = array(); if ($as_group){ if(!($groups = $this->user->getGroups())) - return NULL; + return array(); foreach ($groups as $group) { $tmp = $group->getNotifications($folders ? T_FOLDER : T_DOCUMENT); From 92116cfbc8f2ab0bd24ad8359bcb4bf2b8ed1759 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 12:38:16 +0200 Subject: [PATCH 066/467] add changes in installation process --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index ee4228191..e3a3fa88e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,8 @@ - fix for CVE-2019-12932 (Persistent or Stored XSS), excaping the search result in the autocompletion search form placed in the header - folder/document list can be sorted ascending or descending +- do not check for Log.php during installation anymore, it's part of the + vendor directory anyway -------------------------------------------------------------------------------- Changes in version 5.1.11 From d16bca778928e271ab37926a407395f2e2a41cc8 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 24 Jun 2019 13:12:22 +0200 Subject: [PATCH 067/467] lots of updates for portugese, some new keys --- languages/ar_EG/lang.inc | 3 + languages/bg_BG/lang.inc | 3 + languages/ca_ES/lang.inc | 3 + languages/cs_CZ/lang.inc | 3 + languages/de_DE/lang.inc | 5 +- languages/el_GR/lang.inc | 7 +- languages/en_GB/lang.inc | 5 +- languages/es_ES/lang.inc | 9 +- languages/fr_FR/lang.inc | 15 +- languages/hr_HR/lang.inc | 3 + languages/hu_HU/lang.inc | 7 +- languages/it_IT/lang.inc | 3 + languages/ko_KR/lang.inc | 3 + languages/lo_LA/lang.inc | 3 + languages/nl_NL/lang.inc | 3 + languages/pl_PL/lang.inc | 3 + languages/pt_BR/lang.inc | 1559 ++++++++++++++++++++------------------ languages/ro_RO/lang.inc | 3 + languages/ru_RU/lang.inc | 7 +- languages/sk_SK/lang.inc | 3 + languages/sv_SE/lang.inc | 3 + languages/tr_TR/lang.inc | 3 + languages/uk_UA/lang.inc | 11 +- languages/zh_CN/lang.inc | 7 +- languages/zh_TW/lang.inc | 3 + 25 files changed, 911 insertions(+), 766 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index bb1cc71d2..3bc07dbf9 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -1498,6 +1498,9 @@ URL: [url]', 'sign_out' => 'تسجيل الخروج', 'sign_out_user' => 'تسجيل خروج مستخدم', 'sk_SK' => 'السلوفاكية', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'المساحة المستخدمة لمجلد البيانات', 'splash_added_to_clipboard' => 'ﺖﻣ ﺎﻠﻨﺴﺧ ﻒﻳ ﺎﻠﺣﺎﻔﻇﺓ', 'splash_add_access' => '', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 9af2c5d59..5b85e6cd1 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -1361,6 +1361,9 @@ $text = array( 'sign_out' => 'изход', 'sign_out_user' => '', 'sk_SK' => 'Словашки', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Размер на каталога с данните', 'splash_added_to_clipboard' => 'Добавено към клипборда', 'splash_add_access' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 0790a6acd..309829143 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -1366,6 +1366,9 @@ URL: [url]', 'sign_out' => 'desconnectar', 'sign_out_user' => '', 'sk_SK' => 'Eslovac', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Espai utilitzat a la carpeta de dades', 'splash_added_to_clipboard' => 'Emmagatzemat al portapapers', 'splash_add_access' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 9d0fda2eb..91524456f 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -1577,6 +1577,9 @@ Jméno: [username] 'sign_out' => 'Odhlásit', 'sign_out_user' => 'Odhlášení uživatele', 'sk_SK' => 'Slovenština', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Použité místo pro data složky', 'splash_added_to_clipboard' => 'Přidáno do schránky', 'splash_add_access' => 'Přidáno Přístupové právo', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index e2bb30b96..838f72826 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 (2654), dgrutsch (22) +// Translators: Admin (2657), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -1587,6 +1587,9 @@ Name: [username] 'sign_out' => 'Abmelden', 'sign_out_user' => 'Benutzer abmelden', 'sk_SK' => 'Slovakisch', +'sort_by_date' => 'Nach Datum sortieren', +'sort_by_name' => 'Nach Name sortieren', +'sort_by_sequence' => 'Nach Reihenfolge sortieren', 'space_used_on_data_folder' => 'Benutzter Plattenplatz', 'splash_added_to_clipboard' => 'Der Zwischenablage hinzugefügt', 'splash_add_access' => 'Zugriffsrecht hinzugefügt', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index b457a1a71..06ffbc37f 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/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 (280) +// Translators: Admin (281) $text = array( '2_factor_auth' => '', @@ -1372,8 +1372,11 @@ URL: [url]', 'sign_out' => 'Αποσύνδεση', 'sign_out_user' => 'Αποσύνδεση χρήστη', 'sk_SK' => 'Σλοβάκικα', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => '', -'splash_added_to_clipboard' => '', +'splash_added_to_clipboard' => 'Προστέθηκε στο clipboard', 'splash_add_access' => '', 'splash_add_attribute' => '', 'splash_add_group' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 76dc7f871..97afa0ed0 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 (1773), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1776), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -1582,6 +1582,9 @@ Name: [username] 'sign_out' => 'Sign out', 'sign_out_user' => 'Sign out user', 'sk_SK' => 'Slovak', +'sort_by_date' => 'Sort by date', +'sort_by_name' => 'Sort by name', +'sort_by_sequence' => 'Sort by sequence', 'space_used_on_data_folder' => 'Space used on data folder', 'splash_added_to_clipboard' => 'Added to clipboard', 'splash_add_access' => 'Access right added', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 8a1e1b8f5..1da58b4d7 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 (1111), angel (123), francisco (2), jaimem (14) +// Translators: acabello (20), Admin (1114), angel (123), francisco (2), jaimem (14) $text = array( '2_factor_auth' => '', @@ -1312,8 +1312,8 @@ URL: [url]', 'settings_enableVersionModification_desc' => 'Habilitar/Deshabilitar la modificación de versiones de documentos por parte de usuarios después de añadir una nueva versión. El administrador siempre podrá modificar la versión después de añadida.', 'settings_enableWebdavReplaceDoc' => 'Reemplaza documento al guardar', 'settings_enableWebdavReplaceDoc_desc' => 'Si se habilita, al guardar una nueva versión de un documento reemplaza al viejo documento en lugar de crear un nueva versión. Esto solo aplica si el usuario mimetype Yelp nombre del archivo son iguales a la última versión. Esto es útil cuando la aplicación guarda automáticamente un documento a intervalos fijos.', -'settings_enableXsendfile' => '', -'settings_enableXsendfile_desc' => '', +'settings_enableXsendfile' => 'Usar el módulo xsendfile de apache', +'settings_enableXsendfile_desc' => 'Si está opción esta activa y el módulo de apache xsendfile está instalado, se usará para la entrega de imagenes', 'settings_encryptionKey' => 'Clave de cifrado', 'settings_encryptionKey_desc' => 'Esta cadena se utiliza para crear un identificador único añadido como campo oculto a formularios para prevenir ataques CSRF.', 'settings_error' => 'Error', @@ -1513,6 +1513,9 @@ URL: [url]', 'sign_out' => 'Salir', 'sign_out_user' => 'Desconectar usuario', 'sk_SK' => 'Slovaco', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Espacio usado en la carpeta de datos', 'splash_added_to_clipboard' => 'Agregado al portapapeles', 'splash_add_access' => '', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 85d33eb92..71393d95c 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 (1091), jeromerobert (50), lonnnew (9), Oudiceval (739) +// Translators: Admin (1091), jeromerobert (50), lonnnew (9), Oudiceval (744) $text = array( '2_factor_auth' => 'Authentification forte', @@ -501,7 +501,7 @@ Le lien est valide jusqu’au [valid]. 'error_add_aro' => '', 'error_add_permission' => 'Erreur lors de l’ajout de permission', 'error_cleared_cache' => 'Erreur lors du vidage du cache', -'error_edit_task' => '', +'error_edit_task' => 'Erreur lors de la modification de la tâche', 'error_extension_getlist' => 'Erreur lors de l’obtention de la liste des extensions depuis le dépôt', 'error_importfs' => 'Erreur lors de l’import depuis le système de fichiers', 'error_no_document_selected' => 'Aucun document sélectionné', @@ -761,7 +761,7 @@ URL: [url]', 'logout' => 'Déconnexion', 'log_management' => 'Gestion des fichiers journaux', 'lo_LA' => 'Laotien', -'malformed_expiration_date' => '', +'malformed_expiration_date' => 'Format de date d’expiration invalide', 'manager' => 'Responsable', 'manager_of_group' => 'Vous êtes le gestionnaire de ce groupe', 'mandatory_approvergroups' => 'Obligatoire : groupes de valideurs', @@ -982,7 +982,7 @@ URL : [url]', 'reception_noaction' => 'Aucune action', 'reception_rejected' => 'Réception rejetée', 'recipients' => 'Destinataires', -'recipient_already_removed' => '', +'recipient_already_removed' => 'Le destinataire a déjà été supprimé ou a accusé réception.', 'redraw' => 'Redessiner', 'refresh' => 'Actualiser', 'rejected' => 'Rejeté', @@ -1333,8 +1333,8 @@ Nom : [username] 'settings_enableOwnerRevApp_desc' => 'Activer cette option pour ajouter le propriétaire du document à la liste des examinateurs/approbateurs et pour les transitions de workflow.', 'settings_enablePasswordForgotten' => 'Activer Mot de passe oublié', 'settings_enablePasswordForgotten_desc' => 'Si vous voulez permettre à l\'utilisateur de définir un nouveau mot de passe et l\'envoyer par mail, cochez cette option.', -'settings_enableReceiptReject' => '', -'settings_enableReceiptReject_desc' => '', +'settings_enableReceiptReject' => 'Activer le rejet de réceptions', +'settings_enableReceiptReject_desc' => 'Activer cette option pour permettre de rejeter des réceptions.', 'settings_enableReceiptWorkflow' => 'Activer la réception de document', 'settings_enableReceiptWorkflow_desc' => 'Activer cette option pour permettre de confirmer la réception de document dans le workflow.', 'settings_enableRecursiveCount' => 'Décompte récursif des documents/dossiers', @@ -1566,6 +1566,9 @@ Nom : [username] 'sign_out' => 'Déconnexion', 'sign_out_user' => 'Déconnecter l\'utilisateur', 'sk_SK' => 'Slovaque', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Espace utilisé dans le répertoire de données', 'splash_added_to_clipboard' => 'Ajouté au presse-papier', 'splash_add_access' => 'Droits d’accès ajoutés', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index b0ea9ac8a..4190c14e5 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -1534,6 +1534,9 @@ Internet poveznica: [url]', 'sign_out' => 'Odjava', 'sign_out_user' => 'Odjavi korisnika', 'sk_SK' => 'Slovački', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Prostor iskorišten na podatkovnoj mapi', 'splash_added_to_clipboard' => 'Dodano u međuspremnik', 'splash_add_access' => '', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 3436115c7..5b69cc8cb 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (631), ribaz (1036) +// Translators: Admin (632), ribaz (1036) $text = array( '2_factor_auth' => 'Kétfaktoros azonosítás', @@ -1512,6 +1512,9 @@ URL: [url]', 'sign_out' => 'Kijelentkezés', 'sign_out_user' => 'Kijelentkezés', 'sk_SK' => 'Szlovák', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Használt terület az adat mappában', 'splash_added_to_clipboard' => 'Vágólaphoz hozzáadva', 'splash_add_access' => '', @@ -1668,7 +1671,7 @@ URL: [url]', 'toggle_manager' => 'Kulcs kezelő', 'toggle_qrcode' => '', 'to_before_from' => 'A lejárati dátum nem előzheti meg a kezdési dátumot', -'transfer_document' => '', +'transfer_document' => 'Tulajdonos váltás', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', 'transfer_objects' => 'Adatok átadása', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 946fa82cc..4501bfd90 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -1546,6 +1546,9 @@ URL: [url]', 'sign_out' => 'Disconnettiti', 'sign_out_user' => 'Disconnetti l\'utente', 'sk_SK' => 'Slovacco', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Spazio utilizzato dai dati', 'splash_added_to_clipboard' => 'Aggiunto agli appunti', 'splash_add_access' => '', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index 904644b82..e6ef93bd8 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -1528,6 +1528,9 @@ URL : [url]', 'sign_out' => '로그 아웃', 'sign_out_user' => '사용자가 로그 아웃', 'sk_SK' => '슬로바키아어', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => '데이터 폴더에 사용되는 공간', 'splash_added_to_clipboard' => '클립 보드에 추가', 'splash_add_access' => '', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index bbd36797e..0f05286c1 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -1561,6 +1561,9 @@ URL: [url]', 'sign_out' => 'ອອກຈາກລະບົບ', 'sign_out_user' => 'ອອກຈາກລະບົບຜູ້ໄຊ້', 'sk_SK' => 'ສະໂລວາເກຍ', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'ຟື້ນທີທີ່ໄຊ້ໃນໂຟລເດີຂໍ້ມູນ', 'splash_added_to_clipboard' => 'ເພີ່ມລົງໃນຄິບບອດ', 'splash_add_access' => '', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 3c62a28fd..fc6328145 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -1558,6 +1558,9 @@ Name: [username] 'sign_out' => 'Log uit', 'sign_out_user' => 'Log gebruiker uit', 'sk_SK' => 'Slowaaks', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Gebruikte diskomvang in data map', 'splash_added_to_clipboard' => 'Toegevoegd aan klembord', 'splash_add_access' => '', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 01263d9b8..3db61e362 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -1492,6 +1492,9 @@ URL: [url]', 'sign_out' => 'Wyloguj', 'sign_out_user' => 'Wyloguj użytkownika', 'sk_SK' => 'słowacki', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Przestrzeń zajęta przez folder danych', 'splash_added_to_clipboard' => 'Dodano do schowka', 'splash_add_access' => '', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 682745dc8..4161bfc18 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -19,15 +19,15 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1006), flaviove (627), lfcristofoli (352) +// Translators: Admin (1718), flaviove (627), lfcristofoli (352) $text = array( -'2_factor_auth' => '', -'2_factor_auth_info' => '', -'2_fact_auth_secret' => '', +'2_factor_auth' => 'Autenticação de dois fatores', +'2_factor_auth_info' => 'Este sistema impõe a autenticação de 2 fatores. Você precisará do Google Authenticator no seu celular. Abaixo você vê dois códigos QR. O caminho certo é o seu atual segredo. À esquerda, você pode definir um novo segredo. Se você definir um novo segredo, verifique novamente com o Google Authenticator.', +'2_fact_auth_secret' => 'Segredo', 'accept' => 'Aceitar', -'access_control' => '', -'access_control_is_off' => '', +'access_control' => 'Controle de acesso', +'access_control_is_off' => 'O controle de acesso avançado está desativado.', 'access_denied' => 'Acesso Negado.', 'access_inheritance' => 'access Inheritance', 'access_mode' => 'Modo de acesso', @@ -44,36 +44,36 @@ URL: [url]', 'access_permission_changed_email_subject' => '[sitename]: [name] - Permissões modificadas', 'according_settings' => 'configurações de acordo', 'action' => 'Ação', -'actions' => 'Actions', +'actions' => 'Ações', 'action_approve' => 'Aprovar', 'action_complete' => 'Completo', 'action_is_complete' => 'Está completo', 'action_is_not_complete' => 'Não está completo', 'action_reject' => 'Rejeitar', -'action_review' => 'Revisar', +'action_review' => 'Avaliar', 'action_revise' => 'Revisão', -'add' => 'Add', -'add_approval' => '', -'add_attrdefgroup' => '', +'add' => 'Adicionar', +'add_approval' => 'Adicionar aprovação', +'add_attrdefgroup' => 'Adicionar novo grupo de atributos', 'add_document' => 'Novo documento', 'add_document_link' => 'Adicionar link', 'add_document_notify' => 'Definir Notificações', 'add_doc_reviewer_approver_warning' => 'N.B. Documents are automatically marked as released if no reviewer or approver is assigned.', 'add_doc_workflow_warning' => 'N.B. Os documentos são automaticamente marcados como liberados se nenhum fluxo de trabalho é atribuído.', -'add_event' => 'Add event', +'add_event' => 'Adicionar evento', 'add_group' => 'Novo grupo', 'add_member' => 'Novo membro', 'add_multiple_documents' => 'Adicionar vários documentos', -'add_multiple_files' => 'Add multiple files (will use filename as document name)', -'add_receipt' => '', -'add_review' => '', -'add_revision' => '', -'add_role' => '', +'add_multiple_files' => 'Adicione vários arquivos (usará o nome do arquivo como nome do documento)', +'add_receipt' => 'Confirmar recebimento', +'add_review' => 'Adicionar avaliação', +'add_revision' => 'Adicionar revisão', +'add_role' => 'Adicionar novo papel', 'add_subfolder' => 'Criar sub-pasta', -'add_task' => '', +'add_task' => 'Adicionar nova tarefa para esta classe', 'add_to_clipboard' => 'Adicionar ao clipboard', -'add_to_transmittal' => '', -'add_transmittal' => '', +'add_to_transmittal' => 'Adicionar à transmissão', +'add_transmittal' => 'Adicionar transmissão', 'add_user' => 'Novo usuário', 'add_user_to_group' => 'Adicionar usuário ao grupo', 'add_workflow' => 'Adicionar novo fluxo de trabalho', @@ -89,29 +89,34 @@ URL: [url]', 'already_subscribed' => 'Já subscrito', 'and' => 'e', 'apply' => 'Aplicar', -'approvals_accepted' => '', -'approvals_and_reviews_accepted' => '', -'approvals_and_reviews_not_touched' => '', -'approvals_and_reviews_rejected' => '', -'approvals_not_touched' => '', -'approvals_rejected' => '', -'approvals_without_group' => '', -'approvals_without_user' => '', +'approvals_accepted' => '[no_approvals] aprovações já aceitas', +'approvals_and_reviews_accepted' => '[no_approvals] aprovações e [no_reviews] comentários já aceitos', +'approvals_and_reviews_not_touched' => '[no_approvals] aprovações e [no_reviews] comentários não tocados', +'approvals_and_reviews_rejected' => '[no_approvals] aprovações e [no_reviews] avaliações já rejeitadas', +'approvals_not_touched' => '[no_approvals] aprovações não sendo tocadas', +'approvals_rejected' => '[no_approvals] aprovações já rejeitadas', +'approvals_without_group' => 'Aprovações sem grupo', +'approvals_without_user' => 'Aprovações sem usuário', 'approval_deletion_email' => 'Solicitação de Aprovação eliminada', -'approval_deletion_email_body' => '', -'approval_deletion_email_subject' => '', -'approval_file' => '', +'approval_deletion_email_body' => 'Pedido de aprovação eliminado +Document: [name] +Versão: [version] +Pasta pai: [folder_path] +Usuário: [username] +URL: [url]', +'approval_deletion_email_subject' => '[sitename]: [name] - Pedido de aprovação eliminado', +'approval_file' => 'Arquivo', 'approval_group' => 'Approval Group', 'approval_log' => 'Log de Aprovação', 'approval_request_email' => 'Solicitação de aprovação', 'approval_request_email_body' => 'Pedido de aprovação Documento: [name] Versão: [version] -Pasta pai: [folder_path] +Pasta mãe: [folder_path] Usuário: [username] URL: [url]', 'approval_request_email_subject' => '[sitename]: [name] - Solicitação de aprovação', -'approval_status' => 'Approval Status', +'approval_status' => 'Estado da aprovação', 'approval_submit_email' => '', 'approval_submit_email_body' => 'Aprovação do documento Documento: [name] @@ -122,35 +127,35 @@ Comentário: [comment] Usuário: [username] URL: [url]', 'approval_submit_email_subject' => '[sitename]: [name] - Aprovação submetida', -'approval_summary' => 'Approval Summary', -'approval_update_failed' => 'Error updating approval status. Update failed.', -'approvers' => 'Approvers', -'approver_already_assigned' => '', -'approver_already_removed' => '', -'april' => 'April', -'archive' => '', -'archive_creation' => 'Archive creation', -'archive_creation_warning' => 'With this operation you can create achive containing the files of entire DMS folders. After the creation the archive will be saved in the data folder of your server.
        WARNING: an archive created as human readable will be unusable as server backup.', +'approval_summary' => 'Resumo de aprovação', +'approval_update_failed' => 'Erro ao atualizar o estado de aprovação. Atualização falhou.', +'approvers' => 'Aprovadores', +'approver_already_assigned' => 'O usuário já está atribuído como um aprovador.', +'approver_already_removed' => 'O aprovador já foi removido do processo de aprovação ou já enviou uma aprovação.', +'april' => 'Abril', +'archive' => 'Arquivo', +'archive_creation' => 'Criação de arquivo', +'archive_creation_warning' => 'Com esta operação, você pode criar um arquivo contendo os arquivos de pastas inteiras do DMS. Após a criação, o arquivo será salvo na pasta de dados do seu servidor.
        AVISO: um arquivo criado como legível por humanos será inutilizável como backup do servidor.', 'ar_EG' => 'Árabe', -'assign_approvers' => 'Assign Approvers', -'assign_recipients' => '', -'assign_reviewers' => 'Assign Reviewers', -'assign_user_property_to' => 'Assign user\'s properties to', -'assumed_released' => 'Assumed released', -'attrdefgroup_management' => '', -'attrdefgrp_show_detail' => '', -'attrdefgrp_show_list' => '', -'attrdefgrp_show_search' => '', -'attrdefgrp_show_searchlist' => '', +'assign_approvers' => 'Atribuir Aprovadores', +'assign_recipients' => 'Atribuir Destinatários', +'assign_reviewers' => 'Atribuir Avaliadores', +'assign_user_property_to' => 'Atribuir propriedades do usuário para', +'assumed_released' => 'Assumido liberado', +'attrdefgroup_management' => 'Gerenciamento de grupos de atributos', +'attrdefgrp_show_detail' => 'Detalhes', +'attrdefgrp_show_list' => 'Lista', +'attrdefgrp_show_search' => 'Procurar', +'attrdefgrp_show_searchlist' => 'Resultado da pesquisa', 'attrdef_exists' => 'Definição de atributo já existe', -'attrdef_info' => '', +'attrdef_info' => 'Informação', 'attrdef_in_use' => 'Definição de atributo ainda em uso', 'attrdef_management' => 'Gerência de definição de atributo', 'attrdef_maxvalues' => 'Max. número de valores', 'attrdef_minvalues' => 'Min. número de valores', 'attrdef_min_greater_max' => 'Número mínimo de valores é maior do que o número máximo de valores', 'attrdef_multiple' => 'Permitir múltiplos valores', -'attrdef_multiple_needs_valueset' => '', +'attrdef_multiple_needs_valueset' => 'A definição de atributo com vários valores precisa de um conjunto de valores.', 'attrdef_must_be_multiple' => 'Atributo deve ter mais de um valor, mas não está definido valor múltiplo', 'attrdef_name' => 'Nome', 'attrdef_noname' => 'Está faltando o nome de definição de atributo', @@ -159,41 +164,41 @@ URL: [url]', 'attrdef_type' => 'Tipo', 'attrdef_type_boolean' => 'Binário', 'attrdef_type_date' => 'Data', -'attrdef_type_email' => '', -'attrdef_type_float' => '', +'attrdef_type_email' => 'E-mail', +'attrdef_type_float' => 'Flutuante', 'attrdef_type_int' => 'Inteiro', 'attrdef_type_string' => 'Texto', -'attrdef_type_url' => '', +'attrdef_type_url' => 'URL', 'attrdef_valueset' => 'Conjunto de valores', 'attributes' => 'Atributos', -'attribute_changed_email_body' => 'Atributo alterado -Documento: [name] -Versão: [version] -Atributo: [attribute_name] -Old value: [attribute_old_value] -New value: [attribute_new_value] -Pasta mãe: [folder_path] -Usuário: [username] +'attribute_changed_email_body' => 'Atributo alterado +Documento: [name] +Versão: [version] +Atributo: [attribute_name] +Valor anterior: [attribute_old_value] +Novo valor: [attribute_new_value] +Pasta mãe: [folder_path] +Usuário: [username] URL: [url]', 'attribute_changed_email_subject' => '[sitename]: [name] - Atributo modificado', 'attribute_count' => 'Número de utilizações', 'attribute_value' => 'Valor do atributo', -'attribute_value_not_in_valueset' => '', -'attr_malformed_boolean' => '', -'attr_malformed_date' => '', -'attr_malformed_email' => '', -'attr_malformed_float' => '', -'attr_malformed_int' => '', -'attr_malformed_url' => '', -'attr_max_values' => '', +'attribute_value_not_in_valueset' => 'Valor não definido na tabela de valores', +'attr_malformed_boolean' => 'O valor do atributo \'[value]\' do atributo \'[attrname]\' não é um booleano válido.', +'attr_malformed_date' => 'O valor do atributo \'[value]\' do atributo \'[attrname]\' não é uma data válida.', +'attr_malformed_email' => 'O valor do atributo \'[value]\' do atributo \'[attrname]\' não é um URL válido.', +'attr_malformed_float' => 'O valor do atributo \'[value]\' do atributo \'[attrname]\' não é um flutuante válido.', +'attr_malformed_int' => 'O valor do atributo \'[value]\' do atributo \'[attrname]\' não é um inteiro válido.', +'attr_malformed_url' => 'O valor do atributo \'[value]\' do atributo \'[attrname]\' não é um URL válido.', +'attr_max_values' => 'O número máximo de valores requeridos para o atributo [attrname] foi excedido.', 'attr_min_values' => 'O valor mínimo para o atributo [attrname] não foi alcançado.', -'attr_not_in_valueset' => '', +'attr_not_in_valueset' => 'O valor do atributo \'[value]\' para o atributo \'[attrname]\' não está contido no conjunto de valores.', 'attr_no_regex_match' => 'O valor do atributo não corresponde à expressão regular', -'attr_validation_error' => '', +'attr_validation_error' => 'O valor \'[value]\' do atributo \'[attrname]\' é inválido.', 'at_least_n_users_of_group' => 'Pelo menos [nuber_of_users] usuários de [group]', -'august' => 'August', +'august' => 'Agosto', 'authentication' => 'Autenticação', -'authentication_failed' => '', +'authentication_failed' => 'Autenticação falhou', 'author' => 'Autor', 'automatic_status_update' => 'Mudança de status automático', 'back' => 'Voltar', @@ -207,28 +212,28 @@ URL: [url]', 'calendar' => 'Calendario', 'calendar_week' => 'Calendário semanal', 'cancel' => 'Cancelar', -'cannot_assign_invalid_state' => 'Cannot assign new reviewers to a document that is not pending review or pending approval.', -'cannot_change_final_states' => '', +'cannot_assign_invalid_state' => 'Não é possível atribuir novos revisores a um documento que não está pendente de revisão ou aprovação pendente.', +'cannot_change_final_states' => 'Aviso: Você não pode alterar o estado do documento rejeitado, expirado ou com revisão ou aprovação.', 'cannot_delete_user' => 'Não é possível excluir usuário', 'cannot_delete_yourself' => 'Não é possível autoexcluir-se', 'cannot_move_root' => 'Erro: Não pode remover a pasta raiz.', -'cannot_retrieve_approval_snapshot' => '', -'cannot_retrieve_review_snapshot' => '', -'cannot_rm_root' => 'Error: Cannot delete root folder.', +'cannot_retrieve_approval_snapshot' => 'Não é possível recuperar o instantâneo do estado de aprovação desta versão do documento.', +'cannot_retrieve_review_snapshot' => 'Não é possível recuperar o instantâneo do estado de revisão para esta versão do documento.', +'cannot_rm_root' => 'Erro: Não é possível excluir a pasta raiz.', 'categories' => 'Categorias', -'categories_loading' => '', +'categories_loading' => 'Por favor, aguarde até que a lista de categorias seja carregada...', 'category' => 'Categoria', 'category_exists' => 'Categoria já existe.', 'category_filter' => 'Somente categorias', -'category_info' => '', +'category_info' => 'Informação', 'category_in_use' => 'Esta categoria é usada atualmente por documentos.', 'category_noname' => 'Nenhum nome de categoria foi fornecido.', 'ca_ES' => 'Catalão', -'change_assignments' => 'Change Assignments', +'change_assignments' => 'Definir revisor / aprovador', 'change_password' => 'Modificar senha', 'change_password_message' => 'Sua senha foi modificada.', -'change_recipients' => '', -'change_revisors' => '', +'change_recipients' => 'Definir destinatários', +'change_revisors' => 'Definir revisores', 'change_status' => 'Mudar status', 'charts' => 'Gráficos', 'chart_docsaccumulated_title' => 'Número de documentos', @@ -239,18 +244,18 @@ URL: [url]', 'chart_docsperuser_title' => 'Documentos por usuário', 'chart_selection' => 'Selecione gráfico', 'chart_sizeperuser_title' => 'Espaço em disco por usuário', -'checkedout_file_has_different_version' => '', -'checkedout_file_has_disappeared' => '', -'checkedout_file_is_unchanged' => '', -'checkin_document' => '', -'checkoutpath_does_not_exist' => '', -'checkout_document' => '', -'checkout_is_disabled' => '', +'checkedout_file_has_different_version' => 'A versão retirada não é idêntica à versão atual. A entrada não atualizará o documento.', +'checkedout_file_has_disappeared' => 'O arquivo do documento retirado desapareceu. A entrada não será possível.', +'checkedout_file_is_unchanged' => 'O arquivo do documento retirado ainda está inalterado. A entrada não será possível. Se não planejar nenhuma modificação, você poderá redefinir o estado de retirada.', +'checkin_document' => 'Entrada', +'checkoutpath_does_not_exist' => 'O caminho de retirada não existe', +'checkout_document' => 'Retirada', +'checkout_is_disabled' => 'A retirada de documentos está desativada na configuração.', 'choose_attrdef' => 'Por favor escolha a definição de atributo', -'choose_attrdefgroup' => '', +'choose_attrdefgroup' => 'Escolher o grupo de atributos', 'choose_category' => 'Por favor escolha', 'choose_group' => 'Escolher grupo', -'choose_role' => '', +'choose_role' => 'Escolher o papel', 'choose_target_category' => 'Escolha a categoria', 'choose_target_document' => 'Escolha documento', 'choose_target_file' => 'Escolha o arquivo', @@ -259,45 +264,45 @@ URL: [url]', 'choose_workflow' => 'Escolha de fluxo de trabalho', 'choose_workflow_action' => 'Escolha a ação de fluxo de trabalho', 'choose_workflow_state' => 'Escolha um estado de fluxo de trabalho', -'class_name' => '', +'class_name' => 'Nome da classe', 'clear_cache' => 'Limpar o Cache', 'clear_clipboard' => 'Limpar área de transferência', -'clear_password' => '', +'clear_password' => 'Limpar senha', 'clipboard' => 'Área de transferência', 'close' => 'Fechar', -'command' => '', +'command' => 'Comando', 'comment' => 'Comentário', 'comment_changed_email' => '', 'comment_for_current_version' => 'Comentário para versão atual', 'configure_extension' => 'Configurar extensão', 'confirm_clear_cache' => 'Você realmente gostaria de limpar o cache? Isso removerá todas as imagens de pré-visualização.', 'confirm_create_fulltext_index' => 'Sim, eu gostaria de recriar o índice de texto completo!', -'confirm_move_document' => '', -'confirm_move_folder' => '', +'confirm_move_document' => 'Por favor, confirme a movimentação do documento.', +'confirm_move_folder' => 'Por favor, confirme o movimento da pasta.', 'confirm_pwd' => 'Confirme Senha', -'confirm_rm_attr_value' => '', -'confirm_rm_backup' => 'Do you really want to remove the file "[arkname]"?
        Be careful: This action cannot be undone.', -'confirm_rm_document' => 'Deseja realmente remover o documento \'[documentname]\'?
        Por favor, tenha cuidado porque esta ação não poderá ser desfeita.', -'confirm_rm_dump' => 'Do you really want to remove the file "[dumpname]"?
        Be careful: This action cannot be undone.', -'confirm_rm_event' => 'Do you really want to remove event "[name]"?
        Be careful: This action cannot be undone.', -'confirm_rm_file' => 'Do you really want to remove file "[name]" of document "[documentname]"?
        Be careful: This action cannot be undone.', +'confirm_rm_attr_value' => 'Você realmente deseja excluir o valor do atributo?', +'confirm_rm_backup' => 'Você realmente quer remover o arquivo "[arkname]"?
        Tenha cuidado: Esta ação não pode ser desfeita.', +'confirm_rm_document' => 'Você realmente quer remover o documento \'[documentname]\'?
        Por favor, tenha cuidado porque esta ação não poderá ser desfeita.', +'confirm_rm_dump' => 'Você realmente quer remover o arquivo "[dumpname]"?
        Tenha cuidado: Esta ação não pode ser desfeita.', +'confirm_rm_event' => 'Você realmente deseja remover o evento "[name]"?
        Tenha cuidado: essa ação não pode ser desfeita.', +'confirm_rm_file' => 'Você realmente deseja remover o arquivo "[name]" do documento "[documentname]"?
        Cuidado: esta ação não pode ser desfeita.', 'confirm_rm_folder' => 'Deseja realmente remover a \'[foldername]\' e seu conteúdo ?
        Por favor, tenha cuidado porque esta ação não poderá ser desfeita.', 'confirm_rm_folder_files' => 'Você realmente deseja remover todos os arquivos da pasta "[foldername]" e de suas subpastas
        Cuidado: Eáa ação não pode ser desfeita.', -'confirm_rm_group' => 'Do you really want to remove the group "[groupname]"?
        Be careful: This action cannot be undone.', -'confirm_rm_log' => 'Do you really want to remove log file "[logname]"?
        Be careful: This action cannot be undone.', -'confirm_rm_transmittal' => '', -'confirm_rm_transmittalitem' => '', -'confirm_rm_user' => 'Do you really want to remove the user "[username]"?
        Be careful: This action cannot be undone.', -'confirm_rm_user_from_processes' => '', +'confirm_rm_group' => 'Você realmente quer remover o grupo "[groupname]"?
        Tenha cuidado: Esta ação não pode ser desfeita.', +'confirm_rm_log' => 'Você realmente deseja remover o arquivo de log "[logname]"?
        Cuidado: esta ação não pode ser desfeita.', +'confirm_rm_transmittal' => 'Por favor, confirme a exclusão da transmissão.', +'confirm_rm_transmittalitem' => 'Confirme a remoção', +'confirm_rm_user' => 'Você realmente deseja remover o usuário "[username]"?
        Tenha cuidado: esta ação não pode ser desfeita.', +'confirm_rm_user_from_processes' => 'Você realmente deseja remover o usuário "[username]" de todos os processos?
        Tenha cuidado: essa ação pode levar à liberação de documentos se o usuário for o único ou o último aprovador.', 'confirm_rm_version' => 'Deseja realmente remover versão [version] do documento "[documentname]"?
        Por favor, tenha cuidado porque esta ação não poderá ser desfeita.', -'confirm_transfer_objects' => '', -'confirm_update_transmittalitem' => '', +'confirm_transfer_objects' => 'Você realmente quer transferir os documentos, pastas etc. do usuário "[username]"?
        Tenha cuidado: Esta ação não pode ser desfeita.', +'confirm_update_transmittalitem' => 'Confirme a atualização', 'content' => 'Conteúdo', 'continue' => 'Continue', 'converter_new_cmd' => 'Comando', 'converter_new_mimetype' => 'Novo mimetype', -'copied_to_checkout_as' => '', -'create_download_link' => '', +'copied_to_checkout_as' => 'Arquivo copiado para o espaço de retirada como \'[nome do arquivo]\' em [date]', +'create_download_link' => 'Criar link de download', 'create_fulltext_index' => 'Criar índice de texto completo', 'create_fulltext_index_warning' => 'Você está para recriar o índice de texto completo. Isso pode levar uma quantidade considerável de tempo e reduzir o desempenho geral do sistema. Se você realmente deseja recriar o índice, por favor confirme a operação.', 'creation_date' => 'Criado', @@ -310,48 +315,55 @@ URL: [url]', 'databasesearch' => 'Pesquisar Base de dados', 'date' => 'Data', 'days' => 'dias', -'debug' => '', +'debug' => 'Debug', 'december' => 'December', 'default_access' => 'Padrão de acesso', 'default_keywords' => 'Palavras-chave disponíveis', 'definitions' => 'Definições', 'delete' => 'Apagar', -'details' => 'Details', -'details_version' => 'Details for version: [version]', +'details' => 'Detalhes', +'details_version' => 'Detalhes para a versão: [version]', 'de_DE' => 'Alemão', 'disclaimer' => 'Esta é uma área restrita, o acesso é permitido apenas ao pessoal autorizado. Qualquer violação será tratado de acordo com as normas internas e leis vigentes.', 'discspace' => 'Espaço em Disco', -'docs_in_reception_no_access' => '', -'docs_in_revision_no_access' => '', +'docs_in_reception_no_access' => 'Documentos com recepção sem acesso pelo destinatário', +'docs_in_revision_no_access' => 'Documentos em revisão sem acesso por revisor', 'document' => 'Documento', 'documentcontent' => 'Conteúdo do Documento', 'documents' => 'Documentos', -'documents_checked_out_by_you' => '', +'documents_checked_out_by_you' => 'Documentos retirados por você', 'documents_expired' => 'Documentos Expirados', 'documents_in_process' => 'Documentos em Processo', -'documents_locked' => '', +'documents_locked' => 'Documentos bloqueados', 'documents_locked_by_you' => 'Documentos bloqueados por você', 'documents_only' => 'Somente documentos', -'documents_to_approve' => 'Documents Awaiting User\'s Approval', -'documents_to_correct' => '', -'documents_to_process' => '', -'documents_to_receipt' => '', -'documents_to_review' => 'Documents Awaiting User\'s Review', -'documents_to_revise' => '', -'documents_to_trigger_workflow' => '', -'documents_user_draft' => '', -'documents_user_expiration' => '', -'documents_user_needs_correction' => '', -'documents_user_no_reception' => '', -'documents_user_obsolete' => '', -'documents_user_reception' => '', +'documents_to_approve' => 'Documentos aguardando sua aprovação', +'documents_to_correct' => 'Documentos que precisam de correção', +'documents_to_process' => 'Documentos que precisam de processamento', +'documents_to_receipt' => 'Documents awaiting to confirm the receipt', +'documents_to_review' => 'Documentos aguardando sua avaliação', +'documents_to_revise' => 'Documentos aguardando sua revisão', +'documents_to_trigger_workflow' => 'Documentos no fluxo de trabalho', +'documents_user_draft' => 'Rascunhos', +'documents_user_expiration' => 'Documentos expirados', +'documents_user_needs_correction' => 'Documentos que precisam ser corrigidos', +'documents_user_no_reception' => 'Documentos sem recebimento', +'documents_user_obsolete' => 'Documentos obsoletos', +'documents_user_reception' => 'Documentos aguardando recebimento', 'documents_user_rejected' => 'Documentos rejeitados', -'documents_user_requiring_attention' => 'Documents Owned by User That Require Attention', -'documents_with_notification' => '', -'document_already_checkedout' => '', +'documents_user_requiring_attention' => 'Documentos de propriedade do usuário que exigem atenção', +'documents_with_notification' => 'Documentos com notificação', +'document_already_checkedout' => 'Este documento já foi retirado.', 'document_already_locked' => 'Este documento já está travado', -'document_attribute_changed_email_body' => '', -'document_attribute_changed_email_subject' => '', +'document_attribute_changed_email_body' => 'Atributo alterado +Documento: [name] +Atributo: [attribute_name] +Valor anterior: [attribute_old_value] +Novo valor: [attribute_new_value] +Pasta mãe: [folder_path] +Usuário: [username] +URL: [url]', +'document_attribute_changed_email_subject' => '[sitename]: [name] - Atributo alterado', 'document_comment_changed_email' => 'Comentário modificado', 'document_comment_changed_email_body' => 'Comentário modificado Documento: [name] @@ -361,7 +373,7 @@ Pasta mãe: [folder_path] Usuário: [username] URL: [url]', 'document_comment_changed_email_subject' => '[sitename]: [name] - Comentário modificado', -'document_count' => '', +'document_count' => 'Número de documentos', 'document_deleted' => 'Documento deletado', 'document_deleted_email' => 'Documento eliminado', 'document_deleted_email_body' => 'Documento eliminado @@ -372,7 +384,7 @@ Usuário: [username]', 'document_duplicate_name' => 'Duplicar nome do documento', 'document_has_no_workflow' => 'Documento não tem fluxo de trabalho', 'document_infos' => 'Informações', -'document_is_checked_out' => '', +'document_is_checked_out' => 'O documento está atualmente com estado de retirado. Se você fizer o envio de uma nova versão, a versão retirada não poderá mais ser registrada.', 'document_is_not_locked' => 'Este documento não está travado', 'document_link_by' => 'Ligado por', 'document_link_public' => 'Público', @@ -384,7 +396,7 @@ Nova pasta: [new_folder_path] Usuário: [username] URL: [url]', 'document_moved_email_subject' => '[sitename]: [name] - Documento movido', -'document_not_checkedout' => '', +'document_not_checkedout' => 'O documento não foi retirado', 'document_renamed_email' => 'Documento renomeado', 'document_renamed_email_body' => 'Documento renomeado Documento: [name] @@ -393,51 +405,64 @@ Nome antigo: [old_name] Usuário: [username] URL: [url]', 'document_renamed_email_subject' => '[sitename]: [name] - Documento renomeado', -'document_status_changed_email' => 'Status do documento alterado', -'document_status_changed_email_body' => 'Status do documento alterado +'document_status_changed_email' => 'Estado do documento alterado', +'document_status_changed_email_body' => 'Estado do documento alterado Documento: [name] -Status: [status] +Estado: [status] Pasta mãe: [folder_path] -Usuário: [username] rnURL: [url]', -'document_status_changed_email_subject' => '[sitename]: [name] - Status do documento modificado', +Usuário: [username] +URL: [url]', +'document_status_changed_email_subject' => '[sitename]: [name] - Estado do documento modificado', 'document_title' => 'Documento [documentname]', -'document_transfered_email_body' => '', -'document_transfered_email_subject' => '', +'document_transfered_email_body' => 'Transferência de documentos para outro usuário +Documento: [name] +Novo proprietário: [newuser] +Pasta mãe: [folder_path] +Usuário: [username] +URL: [url]', +'document_transfered_email_subject' => '[sitename]: [name] - Transferir documento', 'document_updated_email' => 'Documento atualizado', -'document_updated_email_body' => 'Documento atualizado -Documento: [name] -Pasta mãe: [folder_path] -Usuário: [username] -Comentário: [comment] -Versão comentário: [version_comment] +'document_updated_email_body' => 'Documento atualizado +Documento: [name] +Pasta mãe: [folder_path] +Usuário: [username] +Comentário: [comment] +Versão comentário: [version_comment] URL: [url]', 'document_updated_email_subject' => '[sitename]: [name] - Documento atualizado', 'does_not_expire' => 'não Expira', -'does_not_inherit_access_msg' => 'Inherit access', +'does_not_inherit_access_msg' => 'Herdar acesso', 'download' => 'Download', 'download_extension' => 'Baixar extensão como arquivo zip', -'download_links' => '', -'download_link_email_body' => '', -'download_link_email_subject' => '', +'download_links' => 'Links para download', +'download_link_email_body' => 'Clique no link abaixo para baixar a versão [version] do documento +\'[docname]\'. + +[url] + +O link é válido até [valid]. + +[comment]', +'download_link_email_subject' => 'Link de download', 'do_object_repair' => 'Reparar todas as pastas e documentos.', 'do_object_setchecksum' => 'Defina soma de verificação', 'do_object_setfilesize' => 'Defina o tamanho do arquivo', 'do_object_unlink' => 'Excluir versão do documento', -'draft' => '', +'draft' => 'Rascunho', 'draft_pending_approval' => 'Rascunho - Aprovação pendente', -'draft_pending_review' => 'Draft - pending review', +'draft_pending_review' => 'Rascunho - revisão pendente', 'drag_icon_here' => 'Arraste ícone de pasta ou documento para aqui!', -'dropfolderdir_missing' => '', +'dropfolderdir_missing' => 'Sua pasta suspensa pessoal não existe no servidor! Por favor, peça ao seu administrador para criá-lo.', 'dropfolder_file' => 'Arquivo de pasta suspensa', 'dropfolder_folder' => 'Pasta da pasta-alvo', -'dropupload' => 'Upload rápido', +'dropupload' => 'Envio rápido', 'drop_files_here' => 'Solte os arquivos aqui!', -'dump_creation' => 'DB dump creation', -'dump_creation_warning' => 'With this operation you can create a dump file of your database content. After the creation the dump file will be saved in the data folder of your server.', -'dump_list' => 'Existings dump files', -'dump_remove' => 'Remove dump file', +'dump_creation' => 'Criação de despejo de banco de dados', +'dump_creation_warning' => 'Com esta operação, você pode criar um arquivo de despejo do conteúdo do seu banco de dados. Após a criação, o arquivo de despejo será salvo na pasta de dados do seu servidor.', +'dump_list' => 'Arquivos de despejo existentes', +'dump_remove' => 'Remover arquivo de despejo', 'duplicates' => 'Duplicados', -'duplicate_content' => 'Conteúdo Duplicado', +'duplicate_content' => 'Conteúdo duplicado', 'edit' => 'editar', 'edit_attributes' => 'Editar atributos', 'edit_comment' => 'Editar comentário', @@ -445,71 +470,71 @@ URL: [url]', 'edit_document_access' => 'Editar acesso', 'edit_document_notify' => 'Lista de notificação', 'edit_document_props' => 'Editar documento', -'edit_event' => 'Edit event', +'edit_event' => 'Editar evento', 'edit_existing_access' => 'Editar lista de acesso.', -'edit_existing_attribute_groups' => '', +'edit_existing_attribute_groups' => 'Editar grupos de atributos', 'edit_existing_notify' => 'Editar lista de notificação', 'edit_folder_access' => 'Editar permissões da pasta', -'edit_folder_attrdefgrp' => '', +'edit_folder_attrdefgrp' => 'Editar grupos de atributos', 'edit_folder_notify' => 'Lista de notificação', 'edit_folder_props' => 'Editar pasta', 'edit_group' => 'Editar grupo', -'edit_online' => '', -'edit_task' => '', -'edit_transmittal_props' => '', +'edit_online' => 'Editar on-line', +'edit_task' => 'Editar tarefa', +'edit_transmittal_props' => 'Editar propriedades de transmissão', 'edit_user' => 'Editar usuário', 'edit_user_details' => 'Editar Perfil', -'edit_version' => '', +'edit_version' => 'Editar versão', 'el_GR' => 'Grego', 'email' => 'Email', 'email_error_title' => 'Nenhum email informado', -'email_footer' => 'You can always change your e-mail settings using \'My Account\' functions', -'email_header' => 'This is an automatic menager from the DMS server.', +'email_footer' => 'Você sempre pode alterar suas configurações de e-mail usando as funções \'Minha conta\'', +'email_header' => 'Este é um gerenciador automático do servidor DMS.', 'email_not_given' => 'Por favor insira um endereço de e-mail válido.', -'empty_attribute_group_list' => '', +'empty_attribute_group_list' => 'Nenhum grupo de atributos', 'empty_folder_list' => 'Nenhum documento ou pasta', -'empty_list' => '', +'empty_list' => 'Nenhuma entrada', 'empty_notify_list' => 'Sem entradas', 'en_GB' => 'Inglês (GB)', 'equal_transition_states' => 'Estado de início e fim são iguais', 'error' => 'Erro', -'error_add_aro' => '', -'error_add_permission' => '', -'error_cleared_cache' => '', -'error_edit_task' => '', -'error_extension_getlist' => '', -'error_importfs' => '', +'error_add_aro' => 'erro ao adicionar o objeto de solicitação de acesso', +'error_add_permission' => 'Erro ao adicionar permissão', +'error_cleared_cache' => 'Erro ao limpar o cache', +'error_edit_task' => 'Erro ao salvar tarefa', +'error_extension_getlist' => 'Erro ao obter lista de extensões do repositório', +'error_importfs' => 'Erro ao importar do sistema de arquivos', 'error_no_document_selected' => 'Nenhum documento selecionado', 'error_no_folder_selected' => 'Nenhuma pasta selecionada', 'error_occured' => 'Ocorreu um erro', -'error_remove_document' => '', +'error_remove_document' => 'Erro ao excluir o documento', 'error_remove_folder' => 'Erro na exclusão da pasta', -'error_remove_permission' => '', -'error_rm_workflow' => '', -'error_rm_workflow_action' => '', -'error_rm_workflow_state' => '', -'error_toogle_permission' => '', -'error_transfer_document' => '', -'error_trigger_workflow' => '', -'error_update_document' => '', +'error_remove_permission' => 'Erro ao remover permissão', +'error_rm_workflow' => 'Erro ao remover o fluxo de trabalho', +'error_rm_workflow_action' => 'Erro ao remover a ação do fluxo de trabalho', +'error_rm_workflow_state' => 'Erro ao remover o estado do fluxo de trabalho', +'error_toogle_permission' => 'Erro ao alterar a permissão', +'error_transfer_document' => 'Erro ao transferir documento', +'error_trigger_workflow' => 'Erro ao acionar a transição do fluxo de trabalho', +'error_update_document' => 'Erro ao atualizar o documento', 'error_uploading_reviewer_only' => 'Erro ao criar o documento. O documento tem um revisor, mas não tem um aprovador', 'es_ES' => 'Espanhol', -'event_details' => 'Event details', +'event_details' => 'Detalhes do evento', 'exclude_items' => 'Excluir ítens', 'expired' => 'Expirado', -'expired_at_date' => '', +'expired_at_date' => 'Expirado em [datetime]', 'expired_documents' => 'Documentos expirados', 'expires' => 'Expira', 'expire_by_date' => 'Data de vencimento', -'expire_in_1d' => '', -'expire_in_1h' => '', +'expire_in_1d' => 'Expira em 1 dia', +'expire_in_1h' => 'Expira em 1 hora', 'expire_in_1m' => 'Expira em 1 mês', -'expire_in_1w' => 'Expira em uma (01) semana', +'expire_in_1w' => 'Expira em 1 semana', 'expire_in_1y' => 'Expira em 1 ano', -'expire_in_2h' => '', +'expire_in_2h' => 'Expira em 2 horas', 'expire_in_2y' => 'Expira em 2 anos', -'expire_today' => '', -'expire_tomorrow' => '', +'expire_today' => 'Expira hoje', +'expire_tomorrow' => 'Expira amanhã', 'expiry_changed_email' => 'Data de validade mudou', 'expiry_changed_email_body' => 'Data de validade mudou Documento: [name] @@ -517,20 +542,20 @@ Pasta mãe: [folder_path] Usuário: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Data de validade mudou', -'export' => '', -'extension_archive' => '', +'export' => 'Exportar', +'extension_archive' => 'Extensão', 'extension_changelog' => 'Alterações no Log', 'extension_loading' => 'Carregando Extensões', 'extension_manager' => 'Gerenciar extensões', 'extension_mgr_installed' => 'Instalado', -'extension_mgr_no_upload' => 'Uploading de novas extensões não esta disponível pois o diretório Extensões recebeu a atribuição de Somente Leitura.', +'extension_mgr_no_upload' => 'O envio de novas extensões não esta disponível pois o diretório Extensões recebeu a atribuição de Somente Leitura.', 'extension_mgr_repository' => 'Disponível', 'extension_version_list' => 'Versões', -'february' => 'February', +'february' => 'Fevereiro', 'file' => 'Arquivo', 'files' => 'Arquivos', 'files_deletion' => 'Arquivos deletados', -'files_deletion_warning' => 'With this option you can delete all files of entire DMS folders. The versioning information will remain visible.', +'files_deletion_warning' => 'Com essa opção, você pode excluir todos os arquivos de pastas inteiras do DMS. As informações de versão permanecerão visíveis.', 'files_loading' => 'Pro favor aguarde ate a lista de ficheiros é carregado...', 'file_size' => 'Tamanho', 'filter_for_documents' => 'Filtro adicional para documentos', @@ -538,9 +563,16 @@ URL: [url]', 'folder' => 'Pasta', 'folders' => 'Pastas', 'folders_and_documents_statistic' => 'Relatórios de pastas e documentos', -'folders_with_notification' => '', -'folder_attribute_changed_email_body' => '', -'folder_attribute_changed_email_subject' => '', +'folders_with_notification' => 'Pastas com notificação', +'folder_attribute_changed_email_body' => 'Atributo alterado +Pasta: [name] +Atributo: [attribute_name] +Valor anterior: [attribute_old_value] +Novo valor: [attribute_new_value] +Pasta pai: [folder_path] +Usuário: [username] +URL: [url]', +'folder_attribute_changed_email_subject' => '[sitename]: [name] - Atributo alterado', 'folder_comment_changed_email' => 'Comentário mudou', 'folder_comment_changed_email_body' => 'Comentário mudou Pasta: [name] @@ -562,7 +594,7 @@ URL: [url]', 'folder_moved_email' => 'Pasta movida', 'folder_moved_email_body' => 'Mover pasta Pasta: [name] -Pasta antiga: [old_folder_path] +Pasta anterior: [old_folder_path] Nova pasta: [new_folder_path] Usuário: [username] URL: [url]', @@ -577,16 +609,16 @@ URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Pasta renomeada', 'folder_title' => 'Pasta [foldername]', 'force_update' => 'Atualizar', -'friday' => 'Friday', -'friday_abbr' => 'Fr', -'from' => 'From', +'friday' => 'Sexta-feira', +'friday_abbr' => 'Se', +'from' => 'De', 'fr_FR' => 'Francês', 'fullsearch' => 'Pesquisa de texto completo', 'fullsearch_hint' => 'Use índice de texto completo', -'fulltextsearch_disabled' => '', +'fulltextsearch_disabled' => 'O índice de texto completo está desativado', 'fulltext_converters' => 'Índice de conversão de documentos', 'fulltext_info' => 'Informações índice Texto completo', -'global_attributedefinitiongroups' => '', +'global_attributedefinitiongroups' => 'Grupos de atributos', 'global_attributedefinitions' => 'Atributos', 'global_default_keywords' => 'palavras-chave globais', 'global_document_categories' => 'Categorias', @@ -595,182 +627,182 @@ URL: [url]', 'global_workflow_states' => 'Estado de fluxos de trabalho', 'group' => 'Grupo', 'groups' => 'Grupos', -'group_approval_summary' => 'Resumo aprovação de grupo', -'group_exists' => 'Group already exists.', -'group_info' => '', +'group_approval_summary' => 'Resumo de aprovação de grupo', +'group_exists' => 'Grupo já existe.', +'group_info' => 'Informações do grupo', 'group_management' => 'Grupos', -'group_members' => 'Grupo membros', -'group_receipt_summary' => '', +'group_members' => 'Membros do Grupo', +'group_receipt_summary' => 'Resumo de recebimento de grupo', 'group_review_summary' => 'Resumo da avaliação do grupo', 'guest_login' => 'Entre como convidado', -'guest_login_disabled' => 'Guest login is disabled.', -'hash' => '', +'guest_login_disabled' => 'O login de convidado está desativado.', +'hash' => 'Hash', 'help' => 'Ajuda', -'home_folder' => '', -'hook_name' => '', +'home_folder' => 'Pasta pessoal', +'hook_name' => 'Nome do gancho', 'hourly' => 'De hora em hora', 'hours' => 'horas', 'hr_HR' => 'Croata', -'human_readable' => 'Human readable archive', +'human_readable' => 'Arquivo legível por humanos', 'hu_HU' => 'Húngaro', 'id' => 'ID', 'identical_version' => 'Nova versão é idêntica à versão atual.', 'import' => 'Importar', -'importfs' => '', -'import_extension' => '', +'importfs' => 'Importar do sistema de arquivos', +'import_extension' => 'Importar extensão', 'import_fs' => 'Importar do sistema de arquivos', 'import_fs_warning' => 'Isso só funcionará para pastas na pasta-alvo. A operação importa recursivamente todas as pastas e arquivos. Os arquivos serão liberados imediatamente.', -'include_content' => '', +'include_content' => 'Incluir conteúdo', 'include_documents' => 'Include documents', 'include_subdirectories' => 'Include subdirectories', 'indexing_tasks_in_queue' => 'Tarefas de indexação em fila', 'index_converters' => '', -'index_done' => '', -'index_error' => '', +'index_done' => 'Finalizado', +'index_error' => 'Erro', 'index_folder' => 'Pasta Raiz', -'index_no_content' => '', -'index_pending' => '', +'index_no_content' => 'Não indexou o conteúdo', +'index_pending' => 'Pendente', 'index_waiting' => 'Aguarde...', -'individuals' => 'Individuals', -'individuals_in_groups' => '', -'info_recipients_tab_not_released' => '', +'individuals' => 'Indivíduos', +'individuals_in_groups' => 'Members of a group', +'info_recipients_tab_not_released' => 'Confirmação de recebimento para esta versão do documento não é possível, porque a versão não é liberada.', 'inherited' => 'herdado', -'inherits_access_copy_msg' => 'Copy inherited access list', +'inherits_access_copy_msg' => 'Copiar lista de acesso herdada', 'inherits_access_empty_msg' => 'Inicie com a lista de acesso vazia', 'inherits_access_msg' => 'acesso está endo herdado.', -'internal_error' => 'Internal error', -'internal_error_exit' => '', -'invalid_access_mode' => 'Invalid access Mode', -'invalid_action' => 'Invalid Action', -'invalid_approval_status' => '', -'invalid_create_date_end' => 'Invalid end date for creation date range.', -'invalid_create_date_start' => 'Invalid start date for creation date range.', +'internal_error' => 'Erro interno', +'internal_error_exit' => 'Erro interno. Não é possível concluir o pedido.', +'invalid_access_mode' => 'Modo de acesso inválido', +'invalid_action' => 'Ação Inválida', +'invalid_approval_status' => 'Estado de aprovação inválido', +'invalid_create_date_end' => 'Data de término inválida para o período de criação.', +'invalid_create_date_start' => 'Data de início inválida para o intervalo de datas de criação.', 'invalid_doc_id' => 'ID de documento inválida', -'invalid_dropfolder_folder' => '', -'invalid_expiration_date_end' => '', -'invalid_expiration_date_start' => '', -'invalid_file_id' => 'Invalid file ID', -'invalid_folder_id' => 'Invalid Folder ID', -'invalid_group_id' => 'Invalid Group ID', -'invalid_link_id' => 'Invalid link identifier', -'invalid_request_token' => 'Invalid Request Token', -'invalid_review_status' => 'Invalid Review Status', -'invalid_sequence' => 'Invalid sequence value', -'invalid_status' => 'Invalid Document Status', -'invalid_target_doc_id' => 'Invalid Target Document ID', -'invalid_target_folder' => 'Invalid Target Folder ID', -'invalid_user_id' => 'Invalid User ID', -'invalid_version' => 'Invalid Document Version', -'in_folder' => 'Na Pasta', -'in_revision' => '', +'invalid_dropfolder_folder' => 'Pasta inválida na pasta suspensa', +'invalid_expiration_date_end' => 'Data de término inválida para o intervalo de datas de expiração.', +'invalid_expiration_date_start' => 'Data de início inválida para o intervalo de datas de expiração.', +'invalid_file_id' => 'ID de arquivo inválido', +'invalid_folder_id' => 'ID de pasta inválida', +'invalid_group_id' => 'ID do grupo inválido', +'invalid_link_id' => 'Identificador de link inválido', +'invalid_request_token' => 'Token de solicitação inválido', +'invalid_review_status' => 'Estado de avaliação inválido', +'invalid_sequence' => 'Valor de sequência inválido', +'invalid_status' => 'Estado do documento inválido', +'invalid_target_doc_id' => 'ID do documento de destino inválida', +'invalid_target_folder' => 'ID da pasta de destino inválida', +'invalid_user_id' => 'ID do usuário inválida', +'invalid_version' => 'Versão inválida do documento', +'in_folder' => 'Na pasta', +'in_revision' => 'Em revisão', 'in_workflow' => 'No fluxo de trabalho', 'is_disabled' => 'Desativar conta', 'is_hidden' => 'Ocultar perfil da lista de usuários', 'it_IT' => 'Italiano', -'january' => 'January', -'js_form_error' => '', -'js_form_errors' => '', -'js_invalid_email' => '', -'js_no_approval_group' => '', -'js_no_approval_status' => '', +'january' => 'Janeiro', +'js_form_error' => 'O formulário ainda contém # erro.', +'js_form_errors' => 'O formulário ainda contém # erros.', +'js_invalid_email' => 'O endereço de email é inválido', +'js_no_approval_group' => 'Por favor, selecione um grupo de aprovação', +'js_no_approval_status' => 'Por favor, selecione o estado de aprovação', 'js_no_comment' => 'não há comentário', -'js_no_currentpwd' => '', +'js_no_currentpwd' => 'Por favor digite sua senha atual', 'js_no_email' => 'Digite seu endereço de e-mail', 'js_no_file' => 'Por favor selecione um arquivo', 'js_no_keywords' => 'Especifique algumas palavras-chave', 'js_no_login' => 'Por favor digite um usuário', 'js_no_name' => 'Por favor digite um nome', -'js_no_override_status' => 'Por favor, selecione o novo status [override]', +'js_no_override_status' => 'Por favor, selecione o novo estado [override]', 'js_no_pwd' => 'É necessário digitar sua senha', 'js_no_query' => 'Digite uma solicitação', -'js_no_review_group' => 'Please select a review group', -'js_no_review_status' => 'Please select the review status', +'js_no_review_group' => 'Por favor selecione um grupo de avaliação', +'js_no_review_status' => 'Por favor, selecione o estado da revisão', 'js_pwd_not_conf' => 'Senha e confirmação de senha não são iguais', 'js_select_user' => 'Por favor selecione um usuário', 'js_select_user_or_group' => 'Selecione, no mínimo, um usuário ou grupo', -'js_unequal_passwords' => '', -'july' => 'July', -'june' => 'June', +'js_unequal_passwords' => 'As senhas não são iguais', +'july' => 'Julho', +'june' => 'Junho', 'keep' => 'Não altere', -'keep_doc_status' => 'Mantenha status do documento', +'keep_doc_status' => 'Mantenha o estado do documento', 'keywords' => 'Palavras-chave', -'keywords_loading' => 'Pro favor aguarde ate a lista de Keyword é carregada...', -'keyword_exists' => 'Keyword already exists', +'keywords_loading' => 'Por favor aguarde, até que a lista de palavras-chave seja carregada...', +'keyword_exists' => 'Palavra-chave já existe', 'ko_KR' => 'Coreano', 'language' => 'Idioma', 'lastaccess' => 'Último acesso', -'last_update' => 'última versão', +'last_update' => 'Última versão', 'legend' => 'Legenda', -'librarydoc' => '', +'librarydoc' => 'Documento da biblioteca', 'linked_documents' => 'Documentos relacionados', 'linked_files' => 'Arquivos anexados', -'linked_to_current_version' => '', -'linked_to_document' => 'Ligado ao documento', -'linked_to_this_version' => '', +'linked_to_current_version' => 'Vinculado à versão atual', +'linked_to_document' => 'Vinculado ao documento', +'linked_to_this_version' => 'Vinculado a esta versão', 'link_alt_updatedocument' => 'Se você gostaria de fazer envio de arquivos maiores que o tamanho permitido, por favor use a página alternativa de envio.', -'link_to_version' => '', +'link_to_version' => 'Anexar à versão', 'list_access_rights' => 'Listar todos os direitos de acesso...', -'list_contains_no_access_docs' => '', -'list_hooks' => '', -'list_tasks' => '', +'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_hooks' => 'Listar ganchos', +'list_tasks' => 'Listar tarefas', 'local_file' => 'Arquivo local', 'locked_by' => 'Bloqueado por', 'lock_document' => 'Travar', 'lock_message' => 'Este documento foi travado por [username]. Somente usuários autorizados podem remover a trava deste documento (veja no final da página).', -'lock_status' => 'Status', +'lock_status' => 'Estado', 'login' => 'Login', 'login_disabled_text' => 'Sua conta está desativada, provavelmente por causa de muitos logins falhos.', 'login_disabled_title' => 'Conta desativada', 'login_error_text' => 'Erro no login. Usuário ou senha incorreto.', 'login_error_title' => 'Erro de Login', -'login_not_given' => 'No username has been supplied', +'login_not_given' => 'Nenhum nome de usuário foi fornecido', 'login_ok' => 'Logado com sucesso', -'login_restrictions_apply' => '', +'login_restrictions_apply' => 'Falha no login devido a restrições', 'logout' => 'Sair', 'log_management' => 'Gerenciamento de Logs', 'lo_LA' => 'Laoiano', -'malformed_expiration_date' => '', -'manager' => 'Manager', +'malformed_expiration_date' => 'Data de validade mal formada', +'manager' => 'Gerente', 'manager_of_group' => 'Você é o gerente deste grupo', 'mandatory_approvergroups' => 'Grupos obrigatórios de aprovadores', -'mandatory_approvergroup_no_access' => 'Grupo obrigatória de aprovadores \'[group]\' tem direitos de acesso insuficientes.', +'mandatory_approvergroup_no_access' => 'Grupo obrigatório de aprovadores \'[group]\' tem direitos de acesso insuficientes.', 'mandatory_approvers' => 'Aprovadores obrigatórios', -'mandatory_approver_no_access' => 'Obrigatória \'[usuário]\' aprovador tem direitos de acesso insuficientes.', -'mandatory_reviewergroups' => 'Grupos obrigatórios de revisores', -'mandatory_reviewergroup_no_access' => 'Grupo obrigatória de revisores \'[group]\' tem direitos de acesso insuficientes.', -'mandatory_reviewers' => 'Revisores obrigatórios', -'mandatory_reviewer_no_access' => 'Obrigatória revisor \'[usuário]\' tem direitos de acesso insuficientes.', -'march' => 'March', +'mandatory_approver_no_access' => 'Aprovação obrigatória \'[usuário]\' aprovador tem direitos de acesso insuficientes.', +'mandatory_reviewergroups' => 'Grupos obrigatórios de avaliadores', +'mandatory_reviewergroup_no_access' => 'Grupo obrigatória de avaliadores \'[group]\' tem direitos de acesso insuficientes.', +'mandatory_reviewers' => 'Avaliadores obrigatórios', +'mandatory_reviewer_no_access' => 'Avaliação obrigatória \'[usuário]\' tem direitos de acesso insuficientes.', +'march' => 'Março', 'max_upload_size' => 'Tamanho máximo de arquivo para upload', -'may' => 'May', -'menu_dropfolder' => '', -'menu_upload_from_dropfolder' => '', +'may' => 'Maio', +'menu_dropfolder' => 'Pasta suspensa', +'menu_upload_from_dropfolder' => 'Importar este arquivo', 'mimetype' => 'Tipo mime', 'minutes' => 'minutos', 'misc' => 'Miscelânia', -'missing_checksum' => 'Falta de verificação', -'missing_file' => '', +'missing_checksum' => 'Falta verificação de checksum', +'missing_file' => 'Falta o arquivo', 'missing_filesize' => 'Falta tamanho do arquivo', -'missing_reception' => '', -'missing_request_object' => '', +'missing_reception' => 'Falta o recebimento', +'missing_request_object' => 'Objeto de solicitação ausente', 'missing_transition_user_group' => 'Falta usuário/grupo para transição', -'monday' => 'Monday', -'monday_abbr' => 'Mo', +'monday' => 'Segunda-feira', +'monday_abbr' => 'Se', 'monthly' => 'Mensal', -'month_view' => 'Month view', -'more_objects_loading' => '', -'move' => 'Move', +'month_view' => 'Visualização do Mês', +'more_objects_loading' => 'Mais objetos carregando...', +'move' => 'Mover', 'move_clipboard' => 'Mover para memória auxiliar', 'move_document' => 'Mover documento', 'move_folder' => 'Mover Pasta', 'my_account' => 'Minha Conta', 'my_documents' => 'Meus Documentos', -'my_transmittals' => '', +'my_transmittals' => 'Minhas Transmissões', 'name' => 'Nome', -'needs_correction' => '', +'needs_correction' => 'Precisa de correção', 'needs_workflow_action' => 'Este documento requer sua atenção. Por favor, verifique a guia de fluxo de trabalho.', -'network_drive' => '', -'never' => '', +'network_drive' => 'Unidade de rede', +'never' => 'nunca', 'new' => 'Novo', 'new_attrdef' => 'Adicionar definição de atributo', 'new_default_keywords' => 'Adicionar palavras-chave', @@ -805,7 +837,7 @@ URL: [url]', 'new_user_image' => 'Nova imagem', 'next_state' => 'Novo estado', 'nl_NL' => 'Holandês', -'no' => 'No', +'no' => 'Não', 'notify_added_email' => 'Você foi adicionado a lista de notificação', 'notify_added_email_body' => 'Adicionado a lista de notificação Nome: [name] @@ -820,45 +852,45 @@ Pasta mãe: [folder_path] Usuário: [username] URL: [url]', 'notify_deleted_email_subject' => '[sitename]: [name] - Removido da lista de notificação', -'november' => 'November', +'november' => 'Novembro', 'now' => 'agora', -'no_action' => 'No action required', +'no_action' => 'Nenhuma ação é requerida', 'no_approval_needed' => 'Nenhuma aprovação pendente.', 'no_attached_files' => 'Não há arquivos anexados', 'no_current_version' => 'Você está executando uma versão antiga do SeedDMS. A última versão disponível é [latestversion].', 'no_default_keywords' => 'não há palavras-chave disponíveis', -'no_docs_checked_out' => '', +'no_docs_checked_out' => 'Nenhum documento retirado', 'no_docs_locked' => 'Nenhum documento bloqueado.', -'no_docs_needs_correction' => '', -'no_docs_rejected' => '', +'no_docs_needs_correction' => 'Nenhum documento que precise ser corrigido', +'no_docs_rejected' => 'Nenhum documento rejeitado.', 'no_docs_to_approve' => 'There are currently no documents that require approval.', 'no_docs_to_look_at' => 'Não há documentos que precisam de atenção.', -'no_docs_to_receipt' => '', -'no_docs_to_review' => 'There are currently no documents that require review.', -'no_docs_to_revise' => '', +'no_docs_to_receipt' => 'Não é necessário recibo de documentos.', +'no_docs_to_review' => 'Atualmente, não há documentos que exijam avaliação.', +'no_docs_to_revise' => 'Atualmente, não há documentos que precisem ser revisados.', 'no_email_or_login' => 'Login e e-mail devem ser digitados', 'no_fulltextindex' => 'Nenhum índice de texto completo disponível', 'no_groups' => 'Sem grupos', 'no_group_members' => 'Este grupo não tem membros', 'no_linked_files' => 'Não há arquivos vinculados', -'no_previous_versions' => 'No other versions found', -'no_receipt_needed' => '', +'no_previous_versions' => 'Nenhuma outra versão encontrada', +'no_receipt_needed' => 'Atualmente, não há documentos que exijam uma confirmação de recebimento.', 'no_review_needed' => 'Nenhuma revisão pendente.', -'no_revision_needed' => '', -'no_revision_planed' => '', +'no_revision_needed' => 'Nenhuma revisão pendente.', +'no_revision_planed' => 'Nenhuma revisão do documento agendada.', 'no_update_cause_locked' => 'Por isso você não pode atualizar este documento. Por favor contacte usuário que poáui a trava.', 'no_user_image' => 'não foi encontrado imagem de perfil', 'no_version_check' => 'Verificação de uma nova versão do SeedDMS falhou! Isso pode ser causado por allow_url_fopen configurado para 0 na sua configuração do PHP.', -'no_version_modification' => '', -'no_workflow_available' => '', +'no_version_modification' => 'Nenhuma modificação de versão', +'no_workflow_available' => 'Nenhum fluxo de trabalho disponível', 'objectcheck' => 'Verificação da Pasta/Documento', -'object_check_critical' => '', -'object_check_warning' => '', -'obsolete' => 'Obsolete', -'october' => 'October', +'object_check_critical' => 'Erros críticos', +'object_check_warning' => 'Avisos', +'obsolete' => 'Obsoleto', +'october' => 'Outubro', 'old' => 'Antigo', 'only_jpg_user_images' => 'Somente imagens jpg podem ser utilizadas como avatar', -'order_by_sequence_off' => '', +'order_by_sequence_off' => 'O pedido por sequência é desativado nas configurações. Se você quiser que este parâmetro tenha efeito, você terá que ativá-lo novamente.', 'original_filename' => 'Arquivo original', 'overall_indexing_progress' => 'Progresso geral da indexação', 'owner' => 'Proprietário', @@ -866,7 +898,7 @@ URL: [url]', 'ownership_changed_email_body' => 'Proprietário mudou Documento: [name] Pasta mãe: [folder_path] -Proprietário antigo: [old_owner] +Proprietário amterior: [old_owner] Novo dono: [new_owner] Usuário: [username] URL: [url]', @@ -878,9 +910,9 @@ URL: [url]', 'password_expired' => 'Senha expirou', 'password_expires_in_days' => 'Senha expira em %s dias.', 'password_forgotten' => 'Esqueceu sua senha', -'password_forgotten_email_body' => 'Caro usuário de SeedDMS, +'password_forgotten_email_body' => 'Caro usuário, -nós recebemos um pedido para alterar sua senha. +Recebemos um pedido para alterar sua senha. Isso pode ser feito clicando no seguinte link: @@ -898,23 +930,23 @@ Se você ainda tiver problemas para fazer o login, por favor, contate o administ 'password_strength_insuffient' => 'A força da senha é insuficiente', 'password_wrong' => 'Senha errada', 'pdf_converters' => 'Conversores de PDF', -'pending_approvals' => '', -'pending_receipt' => '', -'pending_reviews' => '', -'pending_revision' => '', -'pending_workflows' => '', +'pending_approvals' => 'Aprovações pendentes', +'pending_receipt' => 'Recibos pendentes', +'pending_reviews' => 'Avaliações pendentes', +'pending_revision' => 'Revisões pendentes', +'pending_workflows' => 'Fluxos de trabalho pendentes', 'personal_default_keywords' => 'palavras-chave pessoais', 'pl_PL' => 'Polonês', -'possible_substitutes' => '', +'possible_substitutes' => 'Substitutos', 'preset_expires' => 'Vencimento pré-definido', 'preview' => 'visualizar', -'preview_converters' => '', +'preview_converters' => 'Visualizar a conversão do documento', 'preview_images' => 'Imagens de pré-visualização', -'preview_markdown' => '', -'preview_pdf' => '', -'preview_plain' => '', +'preview_markdown' => 'Markdown', +'preview_pdf' => 'Visualizar como PDF', +'preview_plain' => 'Texto', 'previous_state' => 'Estado anterior', -'previous_versions' => 'Previous Versions', +'previous_versions' => 'Versões anteriores', 'process' => 'Processos', 'process_without_user_group' => 'Processos sem usuário/grupo', 'pt_BR' => 'Português (BR)', @@ -922,41 +954,52 @@ Se você ainda tiver problemas para fazer o login, por favor, contate o administ 'quota_exceeded' => 'Sua cota de disco foi ultrapassada em [bytes].', 'quota_is_disabled' => 'Suporte a cota está desativado nas configurações. A definição de cota do usuário não terá efeito até que seja habilitada novamente.', 'quota_warning' => 'Seu uso máximo do disco foi ultrapassado em [bytes]. Por favor, remova documentos ou versões anteriores.', -'receipts_accepted' => '', -'receipts_not_touched' => '', -'receipts_rejected' => '', -'receipts_without_group' => '', -'receipts_without_user' => '', -'receipt_deletion_email_body' => '', -'receipt_deletion_email_subject' => '', -'receipt_log' => '', -'receipt_request_email_body' => '', -'receipt_request_email_subject' => '', -'receipt_status' => '', -'receipt_summary' => '', -'receipt_update_failed' => '', -'reception' => '', -'reception_acknowleged' => '', -'reception_noaction' => '', -'reception_rejected' => '', -'recipients' => '', -'recipient_already_removed' => '', -'redraw' => '', +'receipts_accepted' => '[no_receipts] recibos já aceitos', +'receipts_not_touched' => '[no_receipts] recibos não tocados', +'receipts_rejected' => '[no_receipts] recibos já rejeitados', +'receipts_without_group' => 'Recibos sem grupo', +'receipts_without_user' => 'Recibos sem usuário', +'receipt_deletion_email_body' => 'O usuário foi removido da lista de destinatários +Documento: [name] +Versão: [versão] +Pasta mãe: [folder_path] +Destinatário: [destinatário] +Usuário: [nome de usuário] +URL: [url]', +'receipt_deletion_email_subject' => '[sitename]: [name] - Destinatário removido', +'receipt_log' => 'Log de entrada', +'receipt_request_email_body' => 'Pedido de entrada +Documento: [name] +Versão: [versão] +Pasta mãe: [folder_path] +Usuário: [nome de usuário] +URL: [url]', +'receipt_request_email_subject' => '[sitename]: [name] - Pedido de entrada', +'receipt_status' => 'Estado', +'receipt_summary' => 'Resumo da entrada', +'receipt_update_failed' => 'Confirmação de entrada falhou', +'reception' => 'Entrada', +'reception_acknowleged' => 'Entrada reconhecida', +'reception_noaction' => 'Nenhuma ação', +'reception_rejected' => 'Entrega rejeitada', +'recipients' => 'Destinatários', +'recipient_already_removed' => 'O destinatário já foi removido ou já acusou o recebimento.', +'redraw' => 'Redesenhar', 'refresh' => 'Atualizar', -'rejected' => 'Rejected', -'released' => 'Released', -'removed_approver' => 'has been removed from the list of approvers.', +'rejected' => 'Rejeitado', +'released' => 'Liberado', +'removed_approver' => 'foi removido da lista de aprovadores.', 'removed_file_email' => 'Remover anexo', 'removed_file_email_body' => 'Remover anexo Documento: [document] Usuário: [username] URL: [url]', 'removed_file_email_subject' => '[sitename]: [document] - Anexo removido', -'removed_recipient' => '', -'removed_reviewer' => 'has been removed from the list of reviewers.', -'removed_revisor' => '', -'removed_workflow_email_body' => 'Removido do fluxo de trabalho de documentos version -Document: [name] +'removed_recipient' => 'foi removido da lista de destinatários.', +'removed_reviewer' => 'foi removido da lista de avaliadores.', +'removed_revisor' => 'foi removido da lista de revisores.', +'removed_workflow_email_body' => 'Fluxo de trabalho removido da versão do documento +Documento: [name] Versão: [version] Fluxo de Trabalho: [workflow] Pasta mãe: [folder_path] @@ -967,69 +1010,91 @@ URL: [url]', 'remove_marked_files' => 'Remover arquivos marcados', 'repaired' => 'reparado', 'repairing_objects' => 'Reparando documentos e pastas', -'request_workflow_action_email_body' => '', -'request_workflow_action_email_subject' => '', -'reset_checkout' => '', -'restrict_access' => '', -'results_page' => 'Results Page', -'return_from_subworkflow' => 'Retorno de sub fluxo de trabalho', -'return_from_subworkflow_email_body' => 'Retorno de sub fluxo de trabalho +'request_workflow_action_email_body' => 'O fluxo de trabalho atingiu um estado que requer sua ação. +Documento: [name]] +Versão: [versão] +Fluxo de trabalho: [fluxo de trabalho] +Estado atual: [current_state] +Pasta mãe: [folder_path] +Usuário: [nome de usuário] +URL: [url]', +'request_workflow_action_email_subject' => '[sitename]: [name] - Ação de fluxo de trabalho requerida', +'reset_checkout' => 'Concluir retirada', +'restrict_access' => 'Nenhum acesso a', +'results_page' => 'Página de resultados', +'return_from_subworkflow' => 'Retorno de sub-fluxo de trabalho', +'return_from_subworkflow_email_body' => 'Retorno de sub-fluxo de trabalho Documento: [name] Versão: [version] Fluxo de Trabalho: [workflow] -Sub Fluxo de Trabalho: [subworkflow] +sub-fluxo de trabalho: [subworkflow] Pasta mãe: [folder_path] Usuário: [username] URL: [url]', -'return_from_subworkflow_email_subject' => '[sitename]: [name] - Retornar do sub fluxo de trabalho', +'return_from_subworkflow_email_subject' => '[sitename]: [name] - Retornar do sub-fluxo de trabalho', 'reverse_links' => 'Documentos, que têm um link para o documento atual', -'reviewers' => 'Reviewers', -'reviewer_already_assigned' => 'is already assigned as a reviewer', -'reviewer_already_removed' => 'has already been removed from review proceá or has already submitted a review', -'reviews_accepted' => '', -'reviews_not_touched' => '', -'reviews_rejected' => '', -'reviews_without_group' => '', -'reviews_without_user' => '', +'reviewers' => 'Avaliadores', +'reviewer_already_assigned' => 'já está atribuído como avaliador', +'reviewer_already_removed' => 'já foi removido do processo de revisão ou já enviou um comentário', +'reviews_accepted' => '[no_reviews] avaliações já aceitas', +'reviews_not_touched' => '[no_reviews] avaliações não tocadas', +'reviews_rejected' => '[no_reviews] avaliações já rejeitadas', +'reviews_without_group' => 'Avaliações sem grupo', +'reviews_without_user' => 'Avaliações sem usuário', 'review_deletion_email' => 'Pedido de revisão eliminado', -'review_deletion_email_body' => '', -'review_deletion_email_subject' => '', -'review_file' => '', -'review_group' => 'Review Group', +'review_deletion_email_body' => 'Solicitação de revisão excluída +Documento: [name] +Versão: [versão] +Pasta mãe: [folder_path] +Usuário: [nome de usuário] +URL: [url]', +'review_deletion_email_subject' => '[sitename]: [name] - Solicitação de revisão excluída', +'review_file' => 'Arquivo', +'review_group' => 'Grupo de Revisão', 'review_log' => 'Log de Revisão', 'review_request_email' => 'Pedido de revisão', -'review_request_email_body' => '', -'review_request_email_subject' => '', -'review_status' => 'Review Status', +'review_request_email_body' => 'Pedido de revisão +Documento: [name] +Versão: [versão] +Pasta mãe: [folder_path] +Usuário: [username] +URL: [url]', +'review_request_email_subject' => '[sitename]: [name] - Solicitação de revisão', +'review_status' => 'Estado da revisão', 'review_submit_email' => 'Revisão submetida', 'review_submit_email_body' => 'Submitida revisão de documento: [name] Versão: [version] -Status: [status] +Estado: [status] Comentário: [comment] Pasta mãe: [folder_path] Usuário: [username] URL: [url]', 'review_submit_email_subject' => '[sitename]: [name] - Revisão submetida', -'review_summary' => 'Review Summary', -'review_update_failed' => 'Error updating review status. Update failed.', -'revise_document' => '', -'revise_document_on' => '', -'revisions_accepted' => '', -'revisions_not_touched' => '', -'revisions_pending' => '', -'revisions_rejected' => '', -'revisions_without_group' => '', -'revisions_without_user' => '', -'revision_date' => '', -'revision_log' => '', -'revision_request_email_body' => '', -'revision_request_email_subject' => '', -'revision_status' => '', +'review_summary' => 'Resumo de revisão', +'review_update_failed' => 'Erro ao atualizar o status da revisão. Atualização falhou.', +'revise_document' => 'Revisar documento', +'revise_document_on' => 'Próxima revisão da versão do documento em [date]', +'revisions_accepted' => '[no_revisions] revisões já aceitas', +'revisions_not_touched' => '[no_revisions] revisões não sendo tocadas', +'revisions_pending' => '[no_revisions] revisões devidas no futuro', +'revisions_rejected' => '[no_revisions] revisões já rejeitadas', +'revisions_without_group' => 'Revisões sem grupo', +'revisions_without_user' => 'Revisões sem usuário', +'revision_date' => 'Data da revisão', +'revision_log' => 'Log de revisão', +'revision_request_email_body' => 'Pedido de revisão +Documento: [name] +Versão: [version] +Pasta mãe: [folder_path] +Usuário: [username] +URL: [url]', +'revision_request_email_subject' => '[sitename]: [name] - solicitação de revisão', +'revision_status' => 'Estado', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', -'revisors' => '', -'revisor_already_assigned' => '', -'revisor_already_removed' => '', +'revisors' => 'Revisores', +'revisor_already_assigned' => 'O usuário já está designado como revisor.', +'revisor_already_removed' => 'Revisor já foi removido do processo de revisão ou já revisou o documento.', 'rewind_workflow' => 'Fluxo de trabalho revisto', 'rewind_workflow_email_body' => 'Fluxo de processo foi revisto Documento: [name] @@ -1041,19 +1106,19 @@ URL: [url]', 'rewind_workflow_email_subject' => '[sitename]: [name] - Fluxo de processo foi revisto', 'rewind_workflow_warning' => 'Se você voltar um fluxo de trabalho ao seu estado inicial, então o log todo o fluxo de trabalho para este documento será eliminado e não poderá ser recuperado.', 'rm_attrdef' => 'Remover definição de atributo', -'rm_attrdefgroup' => '', -'rm_attr_value' => '', +'rm_attrdefgroup' => 'Remover este grupo de atributos', +'rm_attr_value' => 'Valor de atributo removido', 'rm_default_keyword_category' => 'Apague esta categoria', 'rm_document' => 'Remove documento', 'rm_document_category' => 'Remover categoria', -'rm_event' => '', +'rm_event' => 'Remover evento', 'rm_file' => 'Remove file', 'rm_folder' => 'Remove pasta', 'rm_from_clipboard' => 'Remover da área de transferência', 'rm_group' => 'Remove este grupo', -'rm_role' => '', -'rm_transmittal' => '', -'rm_transmittalitem' => '', +'rm_role' => 'Excluir este papel', +'rm_transmittal' => 'Por favor, confirme a exclusão da transmissão.', +'rm_transmittalitem' => 'Confirme a remoção', 'rm_user' => 'Remove este usuário', 'rm_user_from_processes' => '', 'rm_version' => 'Remove versão', @@ -1064,38 +1129,38 @@ URL: [url]', 'role' => 'Tipo de Perfil', 'role_admin' => 'Administrador', 'role_guest' => 'Convidado', -'role_info' => '', -'role_management' => '', -'role_name' => '', -'role_type' => '', +'role_info' => 'Informação', +'role_management' => 'Gerenciamento de papéis', +'role_name' => 'Nome', +'role_type' => 'Tipo de papel', 'role_user' => 'Usuário', 'ro_RO' => 'Romeno', -'run_subworkflow' => 'Executar sub fluxo de trabalho', -'run_subworkflow_email_body' => 'Sub fluxo de trabalho foi iniciado +'run_subworkflow' => 'Executar sub-fluxo de trabalho', +'run_subworkflow_email_body' => 'Sub-fluxo de trabalho foi iniciado Documento: [nome] Versão: [version] Fluxo de Trabalho: [workflow] -Sub fluxo de trabalho: [subworkflow] +Sub-fluxo de trabalho: [subworkflow] Pasta mãe: [folder_path] Usuário: [username] URL: [url]', -'run_subworkflow_email_subject' => '[sitename]: [name] - Sub fluxo de trabalho foi iniciado', +'run_subworkflow_email_subject' => '[sitename]: [name] - Sub-fluxo de trabalho foi iniciado', 'ru_RU' => 'Russo', -'saturday' => 'Saturday', +'saturday' => 'Sábado', 'saturday_abbr' => 'Sa', 'save' => 'Salvar', -'scheduler_class' => '', -'scheduler_class_description' => '', -'scheduler_class_parameter' => '', -'scheduler_class_tasks' => '', -'scheduler_task_mgr' => '', +'scheduler_class' => 'Classe', +'scheduler_class_description' => 'Descrição', +'scheduler_class_parameter' => 'Parâmetro', +'scheduler_class_tasks' => 'Tarefas de classe', +'scheduler_task_mgr' => 'Agendador', 'search' => 'Busca', 'search_fulltext' => 'Pesquisa em texto completo', 'search_in' => 'Busca em', 'search_mode_and' => 'todas as palavras', 'search_mode_documents' => 'Só Documentos', 'search_mode_folders' => 'Só Pastas', -'search_mode_or' => 'at least one word', +'search_mode_or' => 'pelo menos uma palavra', 'search_no_results' => 'não há documento que satisfaçam sua busca', 'search_query' => 'Busca por', 'search_report' => 'Encontrados [count] documentos', @@ -1103,91 +1168,96 @@ URL: [url]', 'search_resultmode' => 'Resultados da Busca', 'search_resultmode_both' => 'Documentos e Pastas', 'search_results' => 'Resultados da busca', -'search_results_access_filtered' => 'Search results may contain content to which access has been denied.', -'search_time' => 'Tempo decorrido: [time] sec.', +'search_results_access_filtered' => 'Os resultados da pesquisa podem conter conteúdo ao qual o acesso foi negado.', +'search_time' => 'Tempo decorrido: [time] seg.', 'seconds' => 'segundos', -'selection' => 'Selection', -'select_attrdefgrp_show' => '', -'select_attribute_value' => '', +'selection' => 'Seleção', +'select_attrdefgrp_show' => 'Escolha quando mostrar', +'select_attribute_value' => 'Selecione o valor do atributo', 'select_category' => 'Clique para selecionar a categoria', 'select_group' => 'Selecione o grupo', 'select_groups' => 'Clique para selecionar os grupos', 'select_grp_approvers' => 'Clique para selecionar o grupo aprovador', -'select_grp_ind_approvers' => '', -'select_grp_ind_notification' => '', -'select_grp_ind_recipients' => '', -'select_grp_ind_reviewers' => '', -'select_grp_ind_revisors' => '', +'select_grp_ind_approvers' => 'Clique para selecionar o grupo', +'select_grp_ind_notification' => 'Clique para selecionar o grupo de notificações', +'select_grp_ind_recipients' => 'Clique para selecionar o grupo de destinatários', +'select_grp_ind_reviewers' => 'Clique para selecionar o grupo de avaliadores', +'select_grp_ind_revisors' => 'Clique para selecionar o grupo de revisores', 'select_grp_notification' => 'Click para selecionar um grupo a ser notificado', -'select_grp_recipients' => '', +'select_grp_recipients' => 'Clique para selecionar grupo de destinatários', 'select_grp_reviewers' => 'Clique para selecionar o grupo revisor', -'select_grp_revisors' => '', +'select_grp_revisors' => 'Clique para selecionar o grupo de revisores', 'select_ind_approvers' => 'Clique para selecionar aprovador indivídual', 'select_ind_notification' => 'Click para selecionar notificações individuais', -'select_ind_recipients' => '', +'select_ind_recipients' => 'Clique para selecionar destinatários individuais', 'select_ind_reviewers' => 'Clique para selecionar revisor individual', -'select_ind_revisors' => '', +'select_ind_revisors' => 'Clique para selecionar revisores individuais', 'select_one' => 'Selecione um', 'select_user' => 'Selecione o usuário', 'select_users' => 'Clique para selecionar os usuários', 'select_value' => 'Selecionar opção', 'select_workflow' => 'Selecione o fluxo de trabalho', -'send_email' => '', -'send_login_data' => '', -'send_login_data_body' => '', -'send_login_data_subject' => '', +'send_email' => 'Enviar e-mail', +'send_login_data' => 'Enviar informações de login', +'send_login_data_body' => 'Login data + +Login: [login] +Nome: [username] + +[comment]', +'send_login_data_subject' => '[sitename]: [login] - Suas informações para login', 'send_test_mail' => 'Enviar email de teste', -'september' => 'September', +'september' => 'Setembro', 'sequence' => 'Sequência', 'seq_after' => 'Depois "[prevname]"', 'seq_end' => 'No final', 'seq_keep' => 'Manter posição', 'seq_start' => 'Primeira posição', -'sessions' => '', -'setDateFromFile' => '', -'setDateFromFolder' => '', +'sessions' => 'Usuários online', +'setDateFromFile' => 'Assumir a data do arquivo importado', +'setDateFromFolder' => 'Assumir a data da pasta importada', 'settings' => 'Configurações', 'settings_activate_module' => 'Ativar módulo', 'settings_activate_php_extension' => 'Ativar extensão PHP', 'settings_adminIP' => 'IP Administrador', 'settings_adminIP_desc' => 'Se definido administrador pode entrar apenas por endereço IP especificado, deixe em branco para evitar o controle. NOTA: só funciona com Autenticação local (não LDAP)', 'settings_Advanced' => 'Avançado', -'settings_advancedAcl' => '', -'settings_advancedAcl_desc' => '', -'settings_allowChangeRevAppInProcess' => '', -'settings_allowChangeRevAppInProcess_desc' => '', -'settings_allowReviewerOnly' => '', -'settings_allowReviewerOnly_desc' => '', +'settings_advancedAcl' => 'Controle de acesso avançado', +'settings_advancedAcl_desc' => 'O controle de acesso avançado permitirá ligar / desligar determinados módulos do software. Não pode ser usado para direitos de acesso em documentos e pastas.', +'settings_allowChangeRevAppInProcess' => 'Permitir alteração do revisor / aprovador após o início do processo', +'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_apache_mod_rewrite' => 'Apache - Módulo Rewrite', 'settings_Authentication' => 'Definições de autenticação', 'settings_autoLoginUser' => 'Login automático', -'settings_autoLoginUser_desc' => '', +'settings_autoLoginUser_desc' => 'Use esse ID de usuário para acessos se o usuário ainda não tiver efetuado login. Esse acesso não criará uma sessão.', 'settings_available_languages' => 'Idiomas disponíveis', 'settings_available_languages_desc' => 'Apenas os idiomas selecionados serão carregados e mostrados no seletor de idioma. O idioma padrão sempre será carregado.', -'settings_backupDir' => '', -'settings_backupDir_desc' => '', +'settings_backupDir' => 'Diretório de backup', +'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_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', 'settings_calendarDefaultView' => 'Visualização Calendário Padrão', 'settings_calendarDefaultView_desc' => 'Visualização calendário padrão', 'settings_cannot_disable' => 'Arquivo ENABLE_INSTALL_TOOL não pode ser eliminado', -'settings_checkOutDir' => '', -'settings_checkOutDir_desc' => '', -'settings_cmdTimeout' => '', -'settings_cmdTimeout_desc' => '', +'settings_checkOutDir' => 'Diretório para documentos retirados', +'settings_checkOutDir_desc' => 'Esse é o diretório em que o conteúdo mais recente de um documento é copiado se o documento estiver com estado de retirado. Se você tornar esse diretório acessível para os usuários, eles poderão editar o arquivo e registrá-lo novamente quando terminar.', +'settings_cmdTimeout' => 'Tempo limite para comandos externos', +'settings_cmdTimeout_desc' => 'This duration in seconds determines when an external command (e.g. for creating the full text index) will be terminated.', 'settings_contentDir' => 'Diretório de conteúdo', 'settings_contentDir_desc' => 'Onde arquivos enviados são armazenados (melhor escolher um diretório que não é acessível através de seu web-server)', 'settings_contentOffsetDir' => 'Pasta de Compensação de Conteúdo', 'settings_contentOffsetDir_desc' => 'Para contornar as limitações do sistema de arquivos subjacente, uma nova estrutura de diretórios foi concebida que existe dentro do diretório de conteúdo (Content Directory). Isso requer um diretório base para começar. Normalmente, deixe Isso para a configuração padrão, 1048576, mas pode ser qualquer número ou cadeia de caracteres que ainda não existe dentro (Diretório de conteúdo)', -'settings_convertToPdf' => 'Converte o PDF para visualização', +'settings_convertToPdf' => 'Converter o documento em PDF para visualização', 'settings_convertToPdf_desc' => 'Se um documento não puder ser mostrado pelo navegador, uma versão em PDF será mostrada.', 'settings_cookieLifetime' => 'Tempo de Vida dos Cookies', 'settings_cookieLifetime_desc' => 'O tempo de vida de um cookie em segundos. Se definido como 0, o cookie será removido quando o navegador é fechado.', 'settings_coreDir' => 'Diretório Núcleo do SeedDMS', 'settings_coreDir_desc' => 'Caminho para SeedDMS_Core (opcional). Deixe em branco se você tiver instalado SeedDMS_Core em um lugar onde ele pode ser encontrado por PHP, por exemplo, Extra PHP Include-Path', -'settings_createCheckOutDir' => '', -'settings_createCheckOutDir_desc' => '', +'settings_createCheckOutDir' => 'Criar um diretório de retirada', +'settings_createCheckOutDir_desc' => 'Criar um diretório de retirada se não existir', 'settings_createdatabase' => 'Criar tabelas de banco de dados', 'settings_createdirectory' => 'Criar diretório', 'settings_currentvalue' => 'Valor atual', @@ -1203,14 +1273,14 @@ URL: [url]', 'settings_dbUser' => 'Nome do usuário', 'settings_dbUser_desc' => 'O nome de usuário para acesso ao banco de dados, informado durante o processo de instalação. Não edite campo a menos que seja absolutamente necessário, por exemplo, a transferência do banco de dados para um novo host.', 'settings_dbVersion' => 'Esquema de banco de dados muito antigo', -'settings_defaultAccessDocs' => '', -'settings_defaultAccessDocs_desc' => '', -'settings_defaultDocPosition' => '', -'settings_defaultDocPosition_desc' => '', -'settings_defaultDocPosition_val_end' => '', -'settings_defaultDocPosition_val_start' => '', +'settings_defaultAccessDocs' => 'Acesso padrão para novos documentos', +'settings_defaultAccessDocs_desc' => 'Quando um novo documento é criado, esse será o direito de acesso padrão.', +'settings_defaultDocPosition' => 'Posição do documento quando criado', +'settings_defaultDocPosition_desc' => 'Esta é a posição padrão dentro de uma pasta quando um documento é criado.', +'settings_defaultDocPosition_val_end' => 'fim', +'settings_defaultDocPosition_val_start' => 'início', 'settings_defaultSearchMethod' => 'Forma padrão para buscas', -'settings_defaultSearchMethod_desc' => '', +'settings_defaultSearchMethod_desc' => 'Método de pesquisa padrão, quando uma pesquisa é iniciada pelo formulário de pesquisa no menu principal.', 'settings_defaultSearchMethod_valdatabase' => 'Banco de Dados', 'settings_defaultSearchMethod_valfulltext' => 'texto completo', 'settings_delete_install_folder' => 'Para utilizar SeedDMS, você deve excluir o arquivo ENABLE_INSTALL_TOOL do diretório de configuração', @@ -1223,82 +1293,82 @@ URL: [url]', 'settings_Edition' => 'Configurações Edição', 'settings_editOnlineFileTypes' => 'Editar online os tipos de arquivos', 'settings_editOnlineFileTypes_desc' => 'Arquivos com as seguintes extensões podem ser editados online (use somente letras minúsculas)', -'settings_enable2FactorAuthentication' => '', -'settings_enable2FactorAuthentication_desc' => '', +'settings_enable2FactorAuthentication' => 'Ativar autenticação de dois fatores', +'settings_enable2FactorAuthentication_desc' => 'Ativar/desativar a autenticação de 2 fatores. Os usuários precisarão do Google Authenticator em seu celular.', 'settings_enableAcknowledgeWorkflow' => '', 'settings_enableAcknowledgeWorkflow_desc' => '', -'settings_enableAdminReceipt' => '', -'settings_enableAdminReceipt_desc' => '', +'settings_enableAdminReceipt' => 'Permitir a recepção de documentos para administradores', +'settings_enableAdminReceipt_desc' => 'Ativar se você quiser que os administradores sejam listados como destinatários de documentos.', 'settings_enableAdminRevApp' => 'Permitir revisão/aprovação para administradores', 'settings_enableAdminRevApp_desc' => 'Ative esta opção se quiser que os administradores sejam listados como revisores/aprovadores e para transições de fluxo de trabalho.', 'settings_enableCalendar' => 'Habilitar Calendário', -'settings_enableCalendar_desc' => 'Habilitar/desabilitar calendário', +'settings_enableCalendar_desc' => 'Habilitar/Desabilitar calendário', 'settings_enableClipboard' => 'Habilitar Área de Transferência', -'settings_enableClipboard_desc' => 'Habilitar/desabilitar a área de transferência', -'settings_enableConverting' => 'Ativar Convertendo', -'settings_enableConverting_desc' => 'Ativar/dasativar conversão de arquivos', -'settings_enableDropFolderList' => '', -'settings_enableDropFolderList_desc' => '', +'settings_enableClipboard_desc' => 'Habilitar/Desabilitar a área de transferência', +'settings_enableConverting' => 'Ativar conversão', +'settings_enableConverting_desc' => 'Ativar/desativar conversão de arquivos', +'settings_enableDropFolderList' => 'Ativar lista de arquivos na pasta suspensa no menu', +'settings_enableDropFolderList_desc' => 'Ativar uma lista de arquivos na pasta suspensa. A lista é mostrada no menu principal.', 'settings_enableDropUpload' => 'Habilitar Upload Rápido', 'settings_enableDropUpload_desc' => 'Habilitar / Desabilitar a área na página \'Vista de Pastas\' para upload de arquivos por Arrastar e Soltar.', 'settings_enableDuplicateDocNames' => 'Permitir nomes duplicados de documento', 'settings_enableDuplicateDocNames_desc' => 'Permite ter nomes de documentos duplicados em uma pasta.', 'settings_enableEmail' => 'Ativar E-mail', 'settings_enableEmail_desc' => 'Ativar/desativar a notificação de e-mail automático', -'settings_enableFilterReceipt' => '', -'settings_enableFilterReceipt_desc' => '', +'settings_enableFilterReceipt' => 'Filtrar dono, revisor, ... da lista de recepção', +'settings_enableFilterReceipt_desc' => 'Ativar para filtrar alguns destinatários de uma lista de recepção, se os membros de um grupo estiverem selecionados.', 'settings_enableFolderTree' => 'Ativar Árvore de Pasta', 'settings_enableFolderTree_desc' => 'Falso para não mostrar a árvore de pastas', 'settings_enableFullSearch' => 'Ativar Pesquisa de texto completo', 'settings_enableFullSearch_desc' => 'Ativar Pesquisa de texto completo', 'settings_enableGuestAutoLogin' => 'Habilitar auto acesso para visitante', -'settings_enableGuestAutoLogin_desc' => '', +'settings_enableGuestAutoLogin_desc' => 'Se um login de convidado e login automático estiver ativado, o convidado será conectado automaticamente.', 'settings_enableGuestLogin' => 'Ativar Login de Visitante', 'settings_enableGuestLogin_desc' => 'Se você quiser quiser permitir login como convidado, marque esta opção. Nota: login de convidado deve ser usado apenas em um ambiente de confiança', -'settings_enableHelp' => 'Abilitar Ajuda', +'settings_enableHelp' => 'Habilitar Ajuda', 'settings_enableHelp_desc' => 'Ativar/desativar o link para telas de ajuda no menu', 'settings_enableLanguageSelector' => 'Ativar Seletor de Idioma', 'settings_enableLanguageSelector_desc' => 'Mostrar seletor para idioma de interface de usuário após login.', 'settings_enableLargeFileUpload' => 'Ativar envio de grandes arquivos', 'settings_enableLargeFileUpload_desc' => 'Se selecionado, o upload de arquivo também estará disponível através de um applet java chamado jumploader sem limite de tamanho de arquivo definido pelo navegador. Ele também permite fazer o upload de vários arquivos de uma só vez.', -'settings_enableMenuTasks' => '', -'settings_enableMenuTasks_desc' => '', -'settings_enableMultiUpload' => '', -'settings_enableMultiUpload_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_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', 'settings_enableNotificationAppRev_desc' => 'Verificar o envio de uma notificação para o revisor/aprovador quando uma nova versão do documento for adicionada', -'settings_enableNotificationWorkflow' => '', -'settings_enableNotificationWorkflow_desc' => '', +'settings_enableNotificationWorkflow' => 'Enviar notificação aos usuários na próxima transição de fluxo de trabalho', +'settings_enableNotificationWorkflow_desc' => 'Se essa opção for ativada, os usuários e grupos que precisam executar uma ação na próxima transição de fluxo de trabalho serão notificados. Mesmo que eles não tenham adicionado uma notificação para o documento.', 'settings_enableOwnerNotification' => 'Habilitar notificações ao proprietário por padrão', 'settings_enableOwnerNotification_desc' => 'Verifique se há adição de uma notificação para o proprietário, se um documento for adicionado.', -'settings_enableOwnerReceipt' => '', -'settings_enableOwnerReceipt_desc' => '', +'settings_enableOwnerReceipt' => 'Permitir a recepção de documentos pelo proprietário', +'settings_enableOwnerReceipt_desc' => 'Ative isto se você quiser que o proprietário de um documento seja listado como um destinatário.', 'settings_enableOwnerRevApp' => 'Permitir revisão/aprovação para o proprietário', 'settings_enableOwnerRevApp_desc' => 'Habilite esta opção se quiser que o proprietário de um documento seja listado como revisores/aprovadores e para transições de fluxo de trabalho.', -'settings_enablePasswordForgotten' => 'Ativar Senhas esquecidas', +'settings_enablePasswordForgotten' => 'Habilitar senha esquecida', 'settings_enablePasswordForgotten_desc' => 'Se você quiser permitir o usuário definir uma nova senha e enviá-la por e-mail, marque esta opção.', -'settings_enableReceiptReject' => '', -'settings_enableReceiptReject_desc' => '', -'settings_enableReceiptWorkflow' => '', -'settings_enableReceiptWorkflow_desc' => '', +'settings_enableReceiptReject' => 'Habilitar rejeição de entradas', +'settings_enableReceiptReject_desc' => 'Habilitar para ativar a rejeição de entradas.', +'settings_enableReceiptWorkflow' => 'Ativar reconhecimento de entrada de documento', +'settings_enableReceiptWorkflow_desc' => 'Habilitar para ativar o fluxo de trabalho para confirmar a entrada do documento.', 'settings_enableRecursiveCount' => 'Ativar contagem de documentos/pasta recursiva', 'settings_enableRecursiveCount_desc' => 'Se estiver ativado, o número de documentos e pastas na exibição de pasta será determinada pela contagem de todos os objetos de forma recursiva proceáando as pastas e contando eáes documentos e pastas que o usuário tem permissão de acesso.', -'settings_enableRevisionOnVoteReject' => '', -'settings_enableRevisionOnVoteReject_desc' => '', -'settings_enableRevisionWorkflow' => '', -'settings_enableRevisionWorkflow_desc' => '', -'settings_enableSelfReceipt' => '', -'settings_enableSelfReceipt_desc' => '', +'settings_enableRevisionOnVoteReject' => 'Rejeitar por um revisor', +'settings_enableRevisionOnVoteReject_desc' => 'Se definido, o documento será rejeitado se um revisor rejeitar o documento.', +'settings_enableRevisionWorkflow' => 'Habilitar revisão de documentos', +'settings_enableRevisionWorkflow_desc' => 'Habilitar para poder executar o fluxo de trabalho para revisar um documento após um determinado período de tempo.', +'settings_enableSelfReceipt' => 'Permitir a recepção de documentos para usuário conectado', +'settings_enableSelfReceipt_desc' => 'Habilitar isto se você quiser que o usuário atualmente logado seja listado como destinatário de um documento.', 'settings_enableSelfRevApp' => 'Permitir revisão/aprovação para usuário conectado', 'settings_enableSelfRevApp_desc' => 'Habilite esta opção se quiser que o usuário conectado no momento seja listado como revisores/aprovadores e para transições de fluxo de trabalho.', -'settings_enableSessionList' => '', -'settings_enableSessionList_desc' => '', +'settings_enableSessionList' => 'Habilitar lista de usuários on-line no menu', +'settings_enableSessionList_desc' => 'Habilitar lista de usuários atualmente conectados no menu.', 'settings_enableThemeSelector' => 'Seleção de tema', 'settings_enableThemeSelector_desc' => 'Liga/desliga o seletor de tema na página de login.', -'settings_enableUpdateReceipt' => '', -'settings_enableUpdateReceipt_desc' => '', -'settings_enableUpdateRevApp' => '', -'settings_enableUpdateRevApp_desc' => '', +'settings_enableUpdateReceipt' => 'Permitir edição de entrada existente', +'settings_enableUpdateReceipt_desc' => 'Habilite isso se o usuário que fez uma recepção puder alterar a decisão.', +'settings_enableUpdateRevApp' => 'Permitir edição de revisão / aprovação existente', +'settings_enableUpdateRevApp_desc' => 'Habilite isso se o usuário que fez uma revisão / aprovação puder alterar a decisão, desde que a etapa atual do fluxo de trabalho não tenha sido concluída.', 'settings_enableUserImage' => 'Ativar Imagem de Usuário', 'settings_enableUserImage_desc' => 'Ativar Imagens de Usuários', 'settings_enableUsersView' => 'Ativar Usuários Visualizar', @@ -1306,11 +1376,11 @@ URL: [url]', 'settings_enableVersionDeletion' => 'Ativar exclusão de versões anteriores', 'settings_enableVersionDeletion_desc' => 'Ativar/desativar a exclusão de versões de documentos anteriores por usuários regulares. Administrador pode sempre apagar versões antigas.', 'settings_enableVersionModification' => 'Ativar modificação de versões', -'settings_enableVersionModification_desc' => 'Ativar/desativar a modificação de versões de documentos por usuários comuns, depois que uma versão foi enviada. Administrador pode sempre modificar a versão após o upload.', -'settings_enableWebdavReplaceDoc' => '', -'settings_enableWebdavReplaceDoc_desc' => '', -'settings_enableXsendfile' => '', -'settings_enableXsendfile_desc' => '', +'settings_enableVersionModification_desc' => 'Ativar/desativar a modificação de versões de documentos por usuários comuns, depois que uma versão foi enviada. Administrador pode sempre modificar a versão após o envio.', +'settings_enableWebdavReplaceDoc' => 'Substituir documento ao salvar', +'settings_enableWebdavReplaceDoc_desc' => 'Se ativado, salvar uma nova versão de um documento substituirá o documento antigo em vez de criar uma nova versão. Isso só será aplicado se o usuário, o tipo MIME e o nome do arquivo forem iguais à última versão. Isso pode ser útil quando os aplicativos salvam automaticamente um documento em intervalos fixos.', +'settings_enableXsendfile' => 'Usar o módulo xsendfile do apache', +'settings_enableXsendfile_desc' => 'Se esta opção estiver configurada e o módulo xsendfile do apache estiver instalado, ela será usada para entregar imagens.', 'settings_encryptionKey' => 'Chave de criptografia', 'settings_encryptionKey_desc' => 'Esta cadeia é usada para a criação de um identificador único a ser adicionado como um campo oculto para formular, a fim de evitar ataques CSRF.', 'settings_error' => 'Erro', @@ -1324,7 +1394,7 @@ URL: [url]', 'settings_extraPath_desc' => 'Caminho para o software adicional. Este é o diretório que contém, por exemplo, o diretório adodb ou pacotes adicionais em pear', 'settings_firstDayOfWeek' => 'Primeiro dia da semana', 'settings_firstDayOfWeek_desc' => 'Primeiro dia da semana', -'settings_footNote' => 'Nota de Pé', +'settings_footNote' => 'Nota de rodapé', 'settings_footNote_desc' => 'Mensagem a ser exibida na parte inferior de cada página', 'settings_fullSearchEngine' => 'Motor de texto', 'settings_fullSearchEngine_desc' => 'Selecione o método utilizado para a busca textual', @@ -1334,12 +1404,12 @@ URL: [url]', 'settings_guestID_desc' => 'ID do usuário-convidado usada quando conectado como convidado (na maioria das vezes não há necessidade de mudar)', 'settings_httpRoot' => 'Raiz Http', 'settings_httpRoot_desc' => 'O caminho relativo na URL, após a parte do domínio. Não inclua o prefixo http:// ou o nome do host. por exemplo Se a URL completa é http://www.example.com/seeddms/, definir \'/seeddms/\'. Se a URL é http://www.example.com/, definir \'/\'', -'settings_incItemsPerPage' => '', -'settings_incItemsPerPage_desc' => '', -'settings_initialDocumentStatus' => '', -'settings_initialDocumentStatus_desc' => '', -'settings_initialDocumentStatus_draft' => '', -'settings_initialDocumentStatus_released' => '', +'settings_incItemsPerPage' => 'Número de entradas carregadas no final da página', +'settings_incItemsPerPage_desc' => 'Se o número de pastas e documentos for limitado, isso definirá o número de objetos carregados adicionalmente ao rolar para baixo até a parte inferior da página da pasta de visualização. Configurar para 0, carregará o mesmo número de objetos que foi carregado inicialmente.', +'settings_initialDocumentStatus' => 'Estado do documento inicial', +'settings_initialDocumentStatus_desc' => 'Este estado será definido quando um documento for adicionado.', +'settings_initialDocumentStatus_draft' => 'Rascunho', +'settings_initialDocumentStatus_released' => 'liberada', 'settings_installADOdb' => 'Instalar ADOdb', 'settings_install_disabled' => 'O arquivo ENABLE_INSTALL_TOOL foi excluído. Agora você pode entrar em SeedDMS e fazer outras configurações.', 'settings_install_pear_package_log' => 'Instalar o Pacote pear \'Log\'', @@ -1350,8 +1420,8 @@ URL: [url]', 'settings_install_zendframework' => 'Instalar Zend Framework, se você pretende usar o motor de pesquisa de texto completo', 'settings_language' => 'Idioma padrão', 'settings_language_desc' => 'Idioma Padrão (nome de uma subpasta na pasta "languages")', -'settings_libraryFolder' => '', -'settings_libraryFolder_desc' => '', +'settings_libraryFolder' => 'Pasta da biblioteca', +'settings_libraryFolder_desc' => 'Pasta onde os documentos podem ser copiados para criar novos documentos.', 'settings_logFileEnable' => 'Ativar Log File', 'settings_logFileEnable_desc' => 'Ativar/Dasativar arquivo log', 'settings_logFileRotation' => 'Rotação do Arquivo Log', @@ -1362,34 +1432,34 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'Caminho para SeedDMS_Lucene (opcional). Deixe em branco se você tiver instalado SeedDMS_Lucene em um lugar onde ele pode ser encontrado por PHP, por exemplo, PHP extras incluem-Path', 'settings_luceneDir' => 'Diretório para o índice de texto completo', 'settings_luceneDir_desc' => 'Caminho para o índice Lucene', -'settings_maxDirID' => 'Max Diretório ID', +'settings_maxDirID' => 'ID máxima de diretório', 'settings_maxDirID_desc' => 'O número máximo de sub-diretórios por diretório mãe. Padrão: 0.', -'settings_maxExecutionTime' => 'Max Tempo de Execução (s)', -'settings_maxExecutionTime_desc' => 'Isso define o tempo máximo em segundos que é permitido executar antes de ser finalizado pelo parse', -'settings_maxItemsPerPage' => '', -'settings_maxItemsPerPage_desc' => '', +'settings_maxExecutionTime' => 'Tempo máximo de execução (s)', +'settings_maxExecutionTime_desc' => 'Isso define o tempo máximo em segundos que é permitido executar antes de ser finalizado pelo parse.', +'settings_maxItemsPerPage' => 'Número máximo de entradas em uma página', +'settings_maxItemsPerPage_desc' => 'Restringe o número de pastas e documentos mostrados na página da pasta de visualização. Outros objetos serão carregados ao rolar para o final da página. Defina como 0 para sempre mostrar todos os objetos.', 'settings_maxRecursiveCount' => 'Max. número de contagem de documentos/pasta recursiva', 'settings_maxRecursiveCount_desc' => 'Este é o número máximo de documentos ou pastas que serão verificados por direitos de acesso, quando recursivamente contar objetos. Se esse número for ultrapassado, será estimado o número de documentos e pastas na visualização da pasta.', -'settings_maxSizeForFullText' => '', -'settings_maxSizeForFullText_desc' => '', +'settings_maxSizeForFullText' => 'Tamanho máximo de arquivo para indexação instantânea', +'settings_maxSizeForFullText_desc' => 'Toda a nova versão do documento menor que o tamanho configurado será totalmente indexada logo após o envio. Em todos os outros casos, apenas os metadados serão indexados.', 'settings_maxUploadSize' => 'Tamanho máximo para arquivos enviados.', -'settings_maxUploadSize_desc' => '', +'settings_maxUploadSize_desc' => 'Esse é o tamanho máximo dos arquivos enviados. Ele terá efeito para versões de documentos e anexos.', 'settings_more_settings' => 'Configurar outras configurações. Login padrão: admin/admin', 'settings_notfound' => 'Não encontrado', 'settings_Notification' => 'Configurações de notificação', 'settings_notwritable' => 'A configuração não pode ser salva porque o arquivo de configuração não é gravável.', 'settings_no_content_dir' => 'Diretório de conteúdo', 'settings_overrideMimeType' => 'Substituir MimeType', -'settings_overrideMimeType_desc' => '', +'settings_overrideMimeType_desc' => 'Substitua o MimeType entregue pelo navegador, se um arquivo for carregado. O novo MimeType é determinado pelo próprio SeedDMS.', 'settings_partitionSize' => 'Tamanho de arquivo parcial', 'settings_partitionSize_desc' => 'Tamanho dos arquivos parciais em bytes, enviados por jumploader. Não defina um valor maior do que o tamanho máximo de carregamento definido pelo servidor.', 'settings_passwordExpiration' => 'Expiração de senha', 'settings_passwordExpiration_desc' => 'O número de dias após o qual a senha expira e deve ser reajustada. 0 desliga a expiração da senha.', 'settings_passwordHistory' => 'Histórico de senha', -'settings_passwordHistory_desc' => 'O número de senhas que um usuário deve ter sido usado antes que uma senha pode ser reutilizada. 0 transforma o histórico de senhas Desligado.', -'settings_passwordStrength' => 'Min. força da senha', +'settings_passwordHistory_desc' => 'O número de senhas que um usuário deve ter usado antes que uma senha possa ser reutilizada. 0 transforma o histórico de senhas Desligado.', +'settings_passwordStrength' => 'Força mínima da senha', 'settings_passwordStrengthAlgorithm' => 'Algoritmo para a força da senha', -'settings_passwordStrengthAlgorithm_desc' => 'O algoritmo utilizado para o cálculo da força da senha. O algoritmo "simples" apenas verifica se há pelo menos oito caracteres totais, uma letra minúscula, uma letra maiúscula, um número e um caractere especial. Se essas condições forem satisfeitas a pontuação retornada é 100 caso contrário 0.', +'settings_passwordStrengthAlgorithm_desc' => 'O algoritmo utilizado para o cálculo da força da senha. O algoritmo "simples" apenas verifica se há pelo menos oito caracteres totais, uma letra minúscula, uma letra maiúscula, um número e um caractere especial. Se essas condições forem satisfeitas a pontuação retornada é 100, caso contrário é 0.', 'settings_passwordStrengthAlgorithm_valadvanced' => 'avançada', 'settings_passwordStrengthAlgorithm_valsimple' => 'simples', 'settings_passwordStrength_desc' => 'A força mínima de senha é um valor inteiro de 0 a 100. Defini-lo para 0 irá desativar a verificação para a força mínima senha.', @@ -1401,23 +1471,23 @@ URL: [url]', 'settings_php_mbstring' => 'Extensão PHP : php_mbstring', 'settings_php_version' => 'Versão PHP', 'settings_presetExpirationDate' => 'Data de Expiração Pré-Definida', -'settings_presetExpirationDate_desc' => '', +'settings_presetExpirationDate_desc' => 'Todos os novos documentos enviados terão uma data de expiração definida para esse valor. A data introduzida pode ser especificada como entendida pela função strtotime() do PHP, por ex. +5 semanas', 'settings_previewWidthDetail' => 'Largura de imagens de visualização (detalhe)', 'settings_previewWidthDetail_desc' => 'Largura imagem de visualização mostrados na página de detalhes', -'settings_previewWidthDropFolderList' => '', -'settings_previewWidthDropFolderList_desc' => '', +'settings_previewWidthDropFolderList' => 'Largura das imagens de pré-visualização (lista de pastas suspensas)', +'settings_previewWidthDropFolderList_desc' => 'Largura das imagens de visualização mostradas na lista ao selecionar um arquivo da pasta suspensa.', 'settings_previewWidthList' => 'Largura de imagens de visualização (lista)', 'settings_previewWidthList_desc' => 'Largura de imagens de visualização mostrados em listas', -'settings_previewWidthMenuList' => '', -'settings_previewWidthMenuList_desc' => '', +'settings_previewWidthMenuList' => 'Largura das imagens de pré-visualização (lista de menus)', +'settings_previewWidthMenuList_desc' => 'Largura das imagens de visualização mostradas como itens no menu da pasta suspensa.', 'settings_printDisclaimer' => 'Imprimir Responsabilidade', -'settings_printDisclaimer_desc' => 'Se for verdade a mensagem de aviso de isenção os arquivos lang.inc será impresso na parte inferior da página', +'settings_printDisclaimer_desc' => 'Se ativado, a mensagem de aviso de responsabilidade será mostrada na parte inferior de todas as páginas.', 'settings_quota' => 'Quota do Usuário', -'settings_quota_desc' => 'O número máximo de bytes que um utilizador pode usar no disco. Defina para 0 para o espaço em disco ilimitado. Este valor pode ser substituído para cada uso em seu perfil.', -'settings_removeFromDropFolder' => '', -'settings_removeFromDropFolder_desc' => '', -'settings_repositoryUrl' => '', -'settings_repositoryUrl_desc' => '', +'settings_quota_desc' => 'O número máximo de bytes que um utilizador pode usar no disco. Defina para 0 para o espaço em disco ilimitado. Este valor pode ser substituído para cada usuário em seu perfil.', +'settings_removeFromDropFolder' => 'Remover arquivo da pasta suspensa após o upload bem-sucedido', +'settings_removeFromDropFolder_desc' => 'Habilite isso, se um arquivo retirado da pasta suspensa for apagado após o envio bem-sucedido.', +'settings_repositoryUrl' => 'URL do repositório', +'settings_repositoryUrl_desc' => 'URL do repositório para extensões', 'settings_restricted' => 'acesso restrito', 'settings_restricted_desc' => 'Só permitir que os usuários façam login se eles têm uma entrada no banco de dados local (independentemente de autenticação bem-sucedida com LDAP)', 'settings_rootDir' => 'Diretório raiz', @@ -1427,11 +1497,11 @@ URL: [url]', 'settings_SaveError' => 'Erro no arquivo de configuração salvo', 'settings_Server' => 'Configuraçoes do servidor', 'settings_showFullPreview' => 'Mostra o documento completo', -'settings_showFullPreview_desc' => '', +'settings_showFullPreview_desc' => 'Ativar / desativar uma visualização completa do documento na página de detalhes, se o navegador for capaz de fazer isso.', 'settings_showMissingTranslations' => 'Mostrar traduções em falta', 'settings_showMissingTranslations_desc' => 'Listar todas as traduções faltando na página na parte inferior da página. O usuário conectado será capaz de apresentar uma proposta para uma tradução em falta que serão salvos em um arquivo CSV. Não ativar eáa função, se em um ambiente de produção!', -'settings_showSingleSearchHit' => '', -'settings_showSingleSearchHit_desc' => '', +'settings_showSingleSearchHit' => 'Ir direto para o único item de pesquisa', +'settings_showSingleSearchHit_desc' => 'Se a pesquisa resultar em apenas um item, ela será exibida imediatamente, em vez da lista de resultados.', 'settings_Site' => 'Site', 'settings_siteDefaultPage' => 'Página Padrão do Site', 'settings_siteDefaultPage_desc' => 'Página padrão no login. Se os padrões estiverem vazios para out/out.ViewFolder.php', @@ -1445,7 +1515,7 @@ URL: [url]', 'settings_smtpSendFrom' => 'Enviar a partir de', 'settings_smtpSendFrom_desc' => 'Enviar a partir de', 'settings_smtpSendTestMail' => 'Enviar email de teste', -'settings_smtpSendTestMail_desc' => '', +'settings_smtpSendTestMail_desc' => 'Envia um email de teste, para verificar a configuração atual do email.', 'settings_smtpServer' => 'Hostname do servidor SMTP', 'settings_smtpServer_desc' => 'Hostname do servidor SMTP', 'settings_smtpUser' => 'Usuário do servidor SMTP', @@ -1459,26 +1529,26 @@ URL: [url]', 'settings_sortUsersInList_desc' => 'Define se os usuários em menus de seleção são ordenados por login, ou por seu nome completo', 'settings_sortUsersInList_val_fullname' => 'Ordenar por nome completo', 'settings_sortUsersInList_val_login' => 'Ordenar por login', -'settings_stagingDir' => 'Diretório para uploads parciais', -'settings_stagingDir_desc' => 'O diretório onde jumploader coloca as partes de um upload de arquivo antes de ser colocado de volta juntos.', -'settings_start_install' => 'Inicializar a instalação', +'settings_stagingDir' => 'Diretório para envios parciais', +'settings_stagingDir_desc' => 'O diretório onde jumploader coloca as partes de um envio de arquivo antes de ser colocado de volta juntos.', +'settings_start_install' => 'Iniciar a instalação', 'settings_stopWordsFile' => 'Caminho para parar arquivo palavras', 'settings_stopWordsFile_desc' => 'Se a pesquisa de texto completo está habilitado, este arquivo irá conter palavras de parada que não está sendo indexado', 'settings_strictFormCheck' => 'Formulário de Verificação Rigorosa', 'settings_strictFormCheck_desc' => 'Verificação de forma rigorosa. Se definido como verdadeiro, então todos os campos do formulário serão verificados por um valor. Se for definido como falso, então (a maioria) comentários e campos de palavra-chave tornar facultativo. Comentários são sempre necessários quando enviar um comentário ou substituindo status do documento', -'settings_suggestionvalue' => 'Valor Sugestão', +'settings_suggestionvalue' => 'Valor da sugestão', 'settings_System' => 'Sistema', -'settings_tasksInMenu' => '', -'settings_tasksInMenu_approval' => '', -'settings_tasksInMenu_desc' => '', -'settings_tasksInMenu_needscorrection' => '', -'settings_tasksInMenu_receipt' => '', -'settings_tasksInMenu_review' => '', -'settings_tasksInMenu_revision' => '', -'settings_tasksInMenu_workflow' => '', +'settings_tasksInMenu' => 'Tarefas selecionadas', +'settings_tasksInMenu_approval' => 'Aprovações', +'settings_tasksInMenu_desc' => 'Selecione as tarefas que devem ser contadas. Se nenhuma for selecionado, todas as tarefas serão contadas.', +'settings_tasksInMenu_needscorrection' => 'Correção necessária', +'settings_tasksInMenu_receipt' => 'Recibos', +'settings_tasksInMenu_review' => 'Avaliações', +'settings_tasksInMenu_revision' => 'Revisões', +'settings_tasksInMenu_workflow' => 'Fluxo de trabalho', 'settings_theme' => 'Tema padrão', -'settings_theme_desc' => 'Estilo padrão (nome de uma subpasta na pasta "styles")', -'settings_titleDisplayHack' => 'Título Exibir Hack', +'settings_theme_desc' => 'Estilo padrão (nome de uma subpasta na pasta "estilos")', +'settings_titleDisplayHack' => 'Hack de exibição de título', 'settings_titleDisplayHack_desc' => 'Solução para os títulos das páginas que vão ao longo de mais de duas linhas.', 'settings_undelUserIds' => 'IDs de usuário não deletável', 'settings_undelUserIds_desc' => 'Lista de ID de usuários que não podem ser excluídos, separados por vírgula.', @@ -1491,7 +1561,7 @@ URL: [url]', 'settings_versiontolow' => 'Versão para baixo', 'settings_viewOnlineFileTypes' => 'Ver Tipos de arquivo on-line', 'settings_viewOnlineFileTypes_desc' => 'Os arquivos com uma das seguintes terminações podem ser visualizados on-line (use somente caracteres minúsculos)', -'settings_webdav' => '', +'settings_webdav' => 'WebDAV', 'settings_workflowMode' => 'Modo de fluxo de trabalho', 'settings_workflowMode_desc' => 'O fluxo de trabalho avançado permite especificar seu próprio fluxo de trabalho de liberação de versões de documentos.', 'settings_workflowMode_valadvanced' => 'avançado', @@ -1499,8 +1569,8 @@ URL: [url]', 'settings_workflowMode_valtraditional_only_approval' => 'tradicional (sem revisão)', 'settings_zendframework' => 'Zend Framework', 'set_expiry' => 'Configurar Expiração', -'set_owner' => 'Define proprietário', -'set_owner_error' => 'Proprietário configuração de erro', +'set_owner' => 'Definir proprietário', +'set_owner_error' => 'Erro ao definir proprietário', 'set_password' => 'Definir Senha', 'set_workflow' => 'Definir fluxo de trabalho', 'show_extension_changelog' => 'Mostrar Changelog', @@ -1510,224 +1580,227 @@ URL: [url]', 'sign_out' => 'Sair', 'sign_out_user' => 'Sair usuário', 'sk_SK' => 'Eslovaco', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Space used on data folder', 'splash_added_to_clipboard' => 'Adicionado a área de transferência', -'splash_add_access' => '', +'splash_add_access' => 'Direito de acesso adicionado', 'splash_add_attribute' => 'Novo atributo adicionado', 'splash_add_group' => 'Novo grupo adicionado', 'splash_add_group_member' => 'Novo membro do grupo adicionado', -'splash_add_role' => '', -'splash_add_to_transmittal' => '', -'splash_add_transmittal' => '', +'splash_add_role' => 'Novo papel adicionado', +'splash_add_to_transmittal' => 'Adicionar à transmissão', +'splash_add_transmittal' => 'Transmissão adicionada', 'splash_add_user' => 'Novo usuário adicionado', -'splash_cleared_cache' => '', -'splash_cleared_clipboard' => 'Área de transferência limpada', -'splash_delete_access' => '', +'splash_cleared_cache' => 'Cache limpo', +'splash_cleared_clipboard' => 'Área de transferência limpa', +'splash_delete_access' => 'Direito de acesso removido', 'splash_document_added' => 'Documento inserido', -'splash_document_checkedout' => '', +'splash_document_checkedout' => 'Documento retirado', 'splash_document_edited' => 'Documento salvo', -'splash_document_indexed' => '', +'splash_document_indexed' => 'Documento \'[name]\' indexado.', 'splash_document_locked' => 'Documento bloqueado', 'splash_document_unlocked' => 'Documento desbloqueado', -'splash_edit_access' => '', +'splash_edit_access' => 'Direito de acesso alterado', 'splash_edit_attribute' => 'Atributo salvo', -'splash_edit_event' => '', +'splash_edit_event' => 'Evento salvo', 'splash_edit_group' => 'Grupo salvo', -'splash_edit_role' => '', -'splash_edit_task' => '', +'splash_edit_role' => 'Papel salvo', +'splash_edit_task' => 'Tarefa salva', 'splash_edit_user' => 'Usuário salvo', -'splash_error_add_to_transmittal' => '', -'splash_error_rm_download_link' => '', -'splash_error_send_download_link' => '', -'splash_extension_getlist' => '', -'splash_extension_import' => '', -'splash_extension_refresh' => '', -'splash_extension_upload' => '', +'splash_error_add_to_transmittal' => 'Erro ao adicionar documento à transmissão', +'splash_error_rm_download_link' => 'Erro ao remover o link de download', +'splash_error_send_download_link' => 'Erro ao enviar o link de download', +'splash_extension_getlist' => 'Lista atualizada de extensões do repositório', +'splash_extension_import' => 'Extensão instalada', +'splash_extension_refresh' => 'Lista atualizada de extensões', +'splash_extension_upload' => 'Extensão instalada', 'splash_folder_edited' => 'Salvar modificação de pastas', -'splash_importfs' => '', -'splash_inherit_access' => '', +'splash_importfs' => 'Documentos [docs] e pastas [folders] importados', +'splash_inherit_access' => 'O direito de acesso será herdado', 'splash_invalid_folder_id' => 'ID de pasta inválida', 'splash_invalid_searchterm' => 'Termo de pesquisa inválido', 'splash_moved_clipboard' => 'Área de transferência movida para a pasta corrente', -'splash_move_document' => '', -'splash_move_folder' => '', -'splash_notinherit_access' => '', -'splash_receipt_update_success' => '', +'splash_move_document' => 'Documento movido', +'splash_move_folder' => 'Pasta movida', +'splash_notinherit_access' => 'Direitos de acesso não herdados', +'splash_receipt_update_success' => 'Recepção adicionada com sucesso', 'splash_removed_from_clipboard' => 'Remover da área de transferência', 'splash_rm_attribute' => 'Atributo removido', -'splash_rm_attr_value' => '', +'splash_rm_attr_value' => 'Valor de atributo removido', 'splash_rm_document' => 'Documento removido', -'splash_rm_download_link' => '', +'splash_rm_download_link' => 'Link de download removido', 'splash_rm_folder' => 'Pasta excluida', 'splash_rm_group' => 'Grupo removido', 'splash_rm_group_member' => 'Membro do grupo removido', -'splash_rm_role' => '', -'splash_rm_transmittal' => '', +'splash_rm_role' => 'Papel removido', +'splash_rm_transmittal' => 'Transmissão excluída', 'splash_rm_user' => 'Usuário removido', -'splash_rm_user_processes' => '', -'splash_rm_workflow' => '', -'splash_rm_workflow_action' => '', -'splash_rm_workflow_state' => '', -'splash_saved_file' => '', -'splash_save_user_data' => '', -'splash_send_download_link' => '', -'splash_send_login_data' => '', -'splash_setowner' => '', +'splash_rm_user_processes' => 'Usuário removido de todos os processos', +'splash_rm_workflow' => 'Fluxo de trabalho removido', +'splash_rm_workflow_action' => 'Ação de fluxo de trabalho removida', +'splash_rm_workflow_state' => 'Estado do fluxo de trabalho removido', +'splash_saved_file' => 'Versão salva', +'splash_save_user_data' => 'Dados do usuário salvos', +'splash_send_download_link' => 'Link de download enviado por email.', +'splash_send_login_data' => 'Dados de login enviados', +'splash_setowner' => 'Definir novo dono', 'splash_settings_saved' => 'Configurações salvas', -'splash_set_default_access' => '', +'splash_set_default_access' => 'Conjunto de direitos de acesso padrão', 'splash_substituted_user' => 'Usuário substituido', 'splash_switched_back_user' => 'Comutada de volta ao usuário original', 'splash_toogle_group_manager' => 'Gerente Grupo alternado', -'splash_transfer_document' => '', -'splash_transfer_objects' => '', -'splash_trigger_workflow' => '', +'splash_transfer_document' => 'Documento transferido', +'splash_transfer_objects' => 'Objetos transferidos', +'splash_trigger_workflow' => 'Acionada transição do fluxo de trabalho', 'state_and_next_state' => 'Estado/Próximo estado', 'statistic' => 'Estatística', 'status' => 'Status', -'status_approval_rejected' => '', -'status_approved' => 'Approved', -'status_approver_removed' => 'Approver removed from proceá', -'status_needs_correction' => '', -'status_not_approved' => 'Not approved', -'status_not_receipted' => '', +'status_approval_rejected' => 'Rascunho rejeitado', +'status_approved' => 'Aprovado', +'status_approver_removed' => 'Aprovador removido do processo', +'status_needs_correction' => 'Precisa de correção', +'status_not_approved' => 'Não aprovado', +'status_not_receipted' => 'Ainda não recebido', 'status_not_reviewed' => 'Não revisado', -'status_not_revised' => '', -'status_receipted' => '', -'status_receipt_rejected' => '', -'status_recipient_removed' => '', -'status_reviewed' => '', -'status_reviewer_rejected' => '', +'status_not_revised' => 'não revisado', +'status_receipted' => 'Recebido', +'status_receipt_rejected' => 'Rejeitado', +'status_recipient_removed' => 'Destinatário removido da lista', +'status_reviewed' => 'Revisado', +'status_reviewer_rejected' => 'Rascunho rejeitado', 'status_reviewer_removed' => 'Revisor removido do processo', -'status_revised' => '', -'status_revision_rejected' => '', -'status_revision_sleeping' => '', -'status_revisor_removed' => '', -'status_unknown' => 'Unknown', +'status_revised' => 'revisado', +'status_revision_rejected' => 'Rejeitado', +'status_revision_sleeping' => 'pendente', +'status_revisor_removed' => 'Revisor removido da lista', +'status_unknown' => 'Desconhecido', 'storage_size' => 'Tamanho de armazenamento', -'submit_2_fact_auth' => '', -'submit_approval' => '', +'submit_2_fact_auth' => 'Salvar segredo', +'submit_approval' => 'Enviar aprovação', 'submit_login' => 'Entrar', 'submit_password' => 'Definir uma nova senha', 'submit_password_forgotten' => 'Iniciar processo', -'submit_receipt' => '', -'submit_review' => '', -'submit_revision' => '', +'submit_receipt' => 'Enviar recibo', +'submit_review' => 'Enviar revisão', +'submit_revision' => 'Adicionar revisão', 'submit_userinfo' => 'Submeter informação', -'subsribe_timelinefeed' => '', -'substitute_to_user' => '', +'subsribe_timelinefeed' => 'Inscrever-se no feed de linha do tempo', +'substitute_to_user' => 'Mudar para \'[username]\'', 'substitute_user' => 'Substituto do usuário', -'success_add_aro' => '', -'success_add_permission' => '', -'success_remove_permission' => '', -'success_toogle_permission' => '', -'sunday' => 'Sunday', -'sunday_abbr' => 'Su', +'success_add_aro' => 'Objeto de solicitação de acesso adicionado', +'success_add_permission' => 'Permissão adicionada', +'success_remove_permission' => 'Permissão removida', +'success_toogle_permission' => 'Permissão alterada', +'sunday' => 'Domingo', +'sunday_abbr' => 'Do', 'sv_SE' => 'Sueco', 'switched_to' => 'Comutado para', -'takeOverAttributeValue' => '', -'takeOverGrpApprover' => '', +'takeOverAttributeValue' => 'Assuma o valor do atributo da última versão', +'takeOverGrpApprover' => 'Assuma o grupo de aprovadores da última versão.', 'takeOverGrpReviewer' => 'Assuma o grupo de revisores da última versão.', -'takeOverIndApprover' => '', -'takeOverIndReviewer' => '', -'tasks' => '', -'task_description' => '', -'task_disabled' => '', -'task_frequency' => '', -'task_last_run' => '', -'task_name' => '', -'task_next_run' => '', +'takeOverIndApprover' => 'Assumir o aprovador individual da última versão.', +'takeOverIndReviewer' => 'Assuma o revisor individual da última versão.', +'tasks' => 'Tarefas', +'task_description' => 'Descrição', +'task_disabled' => 'Desativado', +'task_frequency' => 'Frequência', +'task_last_run' => 'Última execução', +'task_name' => 'Nome', +'task_next_run' => 'Próxima execução', 'temp_jscode' => 'Código javascript temporário', -'testmail_body' => 'Este e-mail é apenas para testar a configuração de correio de SeedDMS', -'testmail_subject' => 'Email Teste', +'testmail_body' => 'Este e-mail é apenas para testar a configuração de email de SeedDMS', +'testmail_subject' => 'Teste de Email', 'theme' => 'Tema', -'thursday' => 'Thursday', -'thursday_abbr' => 'Th', +'thursday' => 'Quinta-feira', +'thursday_abbr' => 'Qi', 'timeline' => 'Linha do Tempo', 'timeline_add_file' => 'Novo anexo', -'timeline_add_version' => '', -'timeline_full_add_file' => '', -'timeline_full_add_version' => '', -'timeline_full_scheduled_revision' => '', -'timeline_full_status_change' => '', -'timeline_scheduled_revision' => '', -'timeline_selected_item' => '', +'timeline_add_version' => 'Nova versão [version]', +'timeline_full_add_file' => '[document]
        Novo Anexo', +'timeline_full_add_version' => '[document]
        Nova versão [version]', +'timeline_full_scheduled_revision' => '[document]
        Revisão da versão [version]', +'timeline_full_status_change' => '[document]
        Versão [version]: [status]', +'timeline_scheduled_revision' => 'Revisão da versão [version]', +'timeline_selected_item' => 'Documento selecionado', 'timeline_skip_add_file' => 'anexo adicionado', -'timeline_skip_scheduled_revision' => '', +'timeline_skip_scheduled_revision' => 'Revisão agendada', 'timeline_skip_status_change_-1' => 'rejeitado', 'timeline_skip_status_change_-3' => 'expirado', 'timeline_skip_status_change_0' => 'revisão pendente', 'timeline_skip_status_change_1' => 'aprovação pendente', 'timeline_skip_status_change_2' => 'liberado', 'timeline_skip_status_change_3' => 'dentro do fluxo de trabalho', -'timeline_skip_status_change_4' => '', -'timeline_skip_status_change_5' => '', +'timeline_skip_status_change_4' => 'em revisão', +'timeline_skip_status_change_5' => 'rascunho', 'timeline_status_change' => 'Versão [versão]: [estado]', -'to' => 'To', -'toggle_manager' => 'Toggle manager', -'toggle_qrcode' => '', +'to' => 'Para', +'toggle_manager' => 'Alternar gerente', +'toggle_qrcode' => 'Mostrar / ocultar o código QR', 'to_before_from' => 'A data de término não pode ser anterior a data de início', 'transfer_document' => 'Transferir documento', 'transfer_no_read_access' => 'O usuário não possui acesso de leitura na pasta', 'transfer_no_write_access' => 'O usuário não possui acesso de escrita na pasta', -'transfer_objects' => '', -'transfer_objects_to_user' => '', -'transfer_to_user' => '', +'transfer_objects' => 'Transferir objetos', +'transfer_objects_to_user' => 'Novo proprietário', +'transfer_to_user' => 'Transferir para o usuário', 'transition_triggered_email' => 'Transição de fluxo de trabalho desencadeado', -'transition_triggered_email_body' => 'Transição do fluxo de trabalho triggered -Document: [name] -Version: [version] -Comment: [comment] -Workflow: [workflow] -Previous estado: [previous_state] -Current estado: [current_state] -Parent pasta: [folder_path] -User: [username] +'transition_triggered_email_body' => 'Transição do fluxo de trabalho acionada +Documento: [name] +Versão: [version] +Comentário: [comment] +Fluxo de trabalho: [workflow] +Estado anterior: [previous_state] +Estado atual: [current_state] +Pasta mãe: [folder_path] +Usuário: [username] URL: [url]', 'transition_triggered_email_subject' => '[sitename]: [name] - Transição de fluxo de trabalho desencadeado', -'transmittal' => '', -'transmittalitem_removed' => '', -'transmittalitem_updated' => '', -'transmittal_comment' => '', -'transmittal_name' => '', -'transmittal_size' => '', +'transmittal' => 'Transmissão', +'transmittalitem_removed' => 'Item de transmissão removido', +'transmittalitem_updated' => 'Documento atualizado para a versão mais recente', +'transmittal_comment' => 'Comentário', +'transmittal_name' => 'Nome', +'transmittal_size' => 'Tamanho', 'tree_loading' => 'Aguarde, a estrutura de diretórios está sendo carregada...', 'trigger_workflow' => 'Fluxo de trabalho', 'tr_TR' => 'Turco', -'tuesday' => 'Tuesday', -'tuesday_abbr' => 'Tu', +'tuesday' => 'Terça-feira', +'tuesday_abbr' => 'Te', 'type_of_hook' => '', 'type_to_search' => 'Tipo de pesquisa', 'uk_UA' => 'Ucraniano', 'under_folder' => 'Na pasta', 'unknown_attrdef' => 'Definição de atributo desconhecido', -'unknown_command' => 'Command not recognized.', +'unknown_command' => 'Comando não reconhecido.', 'unknown_document_category' => 'Categoria desconhecida', -'unknown_group' => 'Unknown group id', -'unknown_id' => 'unknown id', -'unknown_keyword_category' => 'Unknown category', -'unknown_owner' => 'Unknown owner id', -'unknown_user' => 'Unknown user id', +'unknown_group' => 'ID de grupo desconhecido', +'unknown_id' => 'ID desconhecido', +'unknown_keyword_category' => 'Categoria desconhecida', +'unknown_owner' => 'ID do proprietário desconhecida', +'unknown_user' => 'ID do usuário desconhecida', 'unlinked_content' => 'Conteúdo não conectado', 'unlinked_documents' => 'Documentos não conectados', 'unlinked_folders' => 'Pastas não conectadas', 'unlinking_objects' => 'Conteúdos não conectados', -'unlock_cause_access_mode_all' => 'você pode atualizá-lo, porque voc tem mode de acesso "all". Trava será automaticamente removida.', -'unlock_cause_locking_user' => 'você pode pode atualizá-lo, porque você o travou também. Trava será automaticamente removida.', +'unlock_cause_access_mode_all' => 'Você ainda pode atualizá-lo porque tem o modo de acesso "todos". A trava será automaticamente removida.', +'unlock_cause_locking_user' => 'Você pode pode atualizá-lo, porque você o travou também. A trava será automaticamente removida.', 'unlock_document' => 'Remover trava', -'update' => 'Update', -'update_approvers' => 'Update List of Approvers', +'update' => 'Atualizar', +'update_approvers' => 'Atualizar lista de aprovadores', 'update_document' => 'Atualizar', 'update_fulltext_index' => 'Índice de atualização de texto completo', -'update_info' => 'Update Information', +'update_info' => 'Atualizar informação', 'update_locked_msg' => 'Este documento está travado.', -'update_recipients' => '', -'update_reviewers' => 'Update List of Reviewers', -'update_revisors' => '', -'update_transmittalitem' => '', +'update_recipients' => 'Atualizar lista de destinatários', +'update_reviewers' => 'Atualizar lista de revisores', +'update_revisors' => 'Atualizar lista de reenviados', +'update_transmittalitem' => 'Atualize para a versão mais recente do documento', 'uploaded_by' => 'Inserido por', 'uploading_failed' => 'Inserção falhou. Por favor contacte o administrador', -'uploading_maxsize' => 'O arquivo excede o tamanho máximo permitido para upload.', -'uploading_zerosize' => 'Upload de um arquivo vazio. Upload é cancelado.', +'uploading_maxsize' => 'O arquivo excede o tamanho máximo permitido para envio.', +'uploading_zerosize' => 'Envio de um arquivo vazio. Envio cancelado.', 'used_discspace' => 'Espaço em disco usado', 'user' => 'Usuário', 'userid_groupid' => 'Id do Usuário/Id do Grupo', @@ -1735,7 +1808,7 @@ URL: [url]', 'users_and_groups' => 'Usuários/Grupos', 'users_done_work' => 'Usuários trabalho concluído', 'user_exists' => 'Usuário já existe.', -'user_group' => '', +'user_group' => 'Usuário/Grupo', 'user_group_management' => 'Gerenciamento Usuários/Grupos', 'user_image' => 'Imagem', 'user_info' => 'Perfil do usuário', @@ -1746,49 +1819,49 @@ URL: [url]', 'use_comment_of_document' => 'Utilize comentário de documento', 'use_default_categories' => 'Utilize categorias predefinidas', 'use_default_keywords' => 'Use palavras-chave pré-definidas', -'valid_till' => '', +'valid_till' => 'Válido até', 'version' => 'Versão', -'versioning_file_creation' => 'Versioning file creation', -'versioning_file_creation_warning' => 'With this operation you can create a file containing the versioning information of an entire DMS folder. After the creation every file will be saved inside the document folder.', +'versioning_file_creation' => 'Criação de arquivos de versão', +'versioning_file_creation_warning' => 'Com esta operação, você pode criar um arquivo contendo as informações de versão de uma pasta DMS inteira. Após a criação, todos os arquivos serão salvos dentro da pasta do documento.', 'versioning_info' => 'Informação de versionamento', 'versiontolow' => 'Versão para baixo', 'version_deleted_email' => 'Versão eliminado', -'version_deleted_email_body' => 'Versão deleted -Document: [name] -Version: [version] -Parent pasta: [folder_path] -User: [username] +'version_deleted_email_body' => 'Versão apagada +Documento: [name] +Versão: [version] +Pasta mãe: [folder_path] +Usuário: [username] URL: [url]', 'version_deleted_email_subject' => '[sitename]: [name] - Versão eliminada', 'version_info' => 'Informações da versão', 'view' => 'Visualizar', 'view_online' => 'Ver on-line', -'warning' => 'Warning', -'wednesday' => 'Wednesday', -'wednesday_abbr' => 'We', +'warning' => 'Aviso', +'wednesday' => 'Quarta-feira', +'wednesday_abbr' => 'Qa', 'weeks' => 'semanas', 'week_view' => 'Visualização semanal', 'workflow' => 'Fluxo de trabalho', -'workflows_involded' => '', +'workflows_involded' => 'Envolvido no fluxo de trabalho', 'workflow_actions_management' => 'Gestão de fluxo de trabalho ações', 'workflow_action_in_use' => 'Esta ação é usado atualmente por fluxos de trabalho.', 'workflow_action_name' => 'Nome', 'workflow_editor' => 'Editor de Fluxo de trabalho', 'workflow_group_summary' => 'Sumário do grupo', -'workflow_has_cycle' => '', +'workflow_has_cycle' => 'Fluxo de trabalho tem ciclo', 'workflow_initstate' => 'Estado inicial', 'workflow_in_use' => 'Esse fluxo de trabalho é usado atualmente por documentos.', -'workflow_layoutdata_saved' => '', +'workflow_layoutdata_saved' => 'Dados de layout salvos', 'workflow_management' => 'Gestão de fluxo de trabalho', 'workflow_name' => 'Nome', -'workflow_no_doc_rejected_state' => '', -'workflow_no_doc_released_state' => '', -'workflow_no_initial_state' => '', +'workflow_no_doc_rejected_state' => 'O documento não será rejeitado em um estado de fluxo de trabalho!', +'workflow_no_doc_released_state' => 'O documento não será liberado em um estado de fluxo de trabalho!', +'workflow_no_initial_state' => 'Nenhuma das transições começa com o estado inicial do fluxo de trabalho!', 'workflow_no_states' => 'Você deve primeiro definir estados de fluxo de trabalho, antes de adicionar um fluxo de trabalho.', 'workflow_save_layout' => '', -'workflow_state' => '', +'workflow_state' => 'estado do fluxo de trabalho', 'workflow_states_management' => 'Gestão de fluxo de trabalho estados', -'workflow_state_docstatus' => 'Status do documento', +'workflow_state_docstatus' => 'Estado do documento', 'workflow_state_in_use' => 'Este estado está sendo usado por fluxos de trabalho.', 'workflow_state_name' => 'Nome', 'workflow_summary' => 'Sumário de fluxo de trabalho', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index be4274008..0ea5e8553 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -1535,6 +1535,9 @@ URL: [url]', 'sign_out' => 'Sign out', 'sign_out_user' => 'Sign out utilizator', 'sk_SK' => 'Slovacă', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Spatiu folosit în folderul de date', 'splash_added_to_clipboard' => 'Adăugat la clipboard', 'splash_add_access' => '', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 4ec0281fe..39cb89aca 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1667) +// Translators: Admin (1668) $text = array( '2_factor_auth' => 'Двухфакторная аутентификация', @@ -711,7 +711,7 @@ URL: [url]', 'linked_documents' => 'Связанные документы', 'linked_files' => 'Приложения', 'linked_to_current_version' => '', -'linked_to_document' => '', +'linked_to_document' => 'Связан с документом', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Для загрузки файлов, превышающих ограничение размера, используйте другой способ.', 'link_to_version' => '', @@ -1542,6 +1542,9 @@ URL: [url]', 'sign_out' => 'Выйти', 'sign_out_user' => 'Пользовательский выход', 'sk_SK' => 'Slovak', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Размер каталога данных', 'splash_added_to_clipboard' => 'Добавлено в буфер обмена', 'splash_add_access' => '', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 11bb845c7..5630c1c1a 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -1582,6 +1582,9 @@ Meno: [username] 'sign_out' => 'odhlásiť', 'sign_out_user' => 'Odhlásiť používateľa', 'sk_SK' => 'Slovenčina', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Space used on data folder', 'splash_added_to_clipboard' => 'Pridané do schránky', 'splash_add_access' => 'Prístupové právo pridané', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index 241beb444..fe7d0a1b5 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -1555,6 +1555,9 @@ Kommentar: [comment]', 'sign_out' => 'Logga ut', 'sign_out_user' => 'Logga ut användare', 'sk_SK' => 'Slovakiska', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Utrymme använt i datakatalogen', 'splash_added_to_clipboard' => 'Tillagt till urklipp', 'splash_add_access' => '', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 8b91e8d0a..44185bc4b 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -1514,6 +1514,9 @@ URL: [url]', 'sign_out' => 'Çıkış', 'sign_out_user' => 'Kullanıcı hesabından çıkış', 'sk_SK' => 'Slovakça', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Data klasörü kullanılan alan', 'splash_added_to_clipboard' => 'Panoya eklendi', 'splash_add_access' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 211252c90..7baa2cefc 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/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 (1334) +// Translators: Admin (1337) $text = array( '2_factor_auth' => '', @@ -332,7 +332,7 @@ URL: [url]', 'documentcontent' => '', 'documents' => 'док.', 'documents_checked_out_by_you' => 'Документи на Опрацюванні у вас', -'documents_expired' => '', +'documents_expired' => 'Застарілі документи', 'documents_in_process' => 'Документи в роботі', 'documents_locked' => 'Заблоковані документи', 'documents_locked_by_you' => 'Документи, які ви заблокували', @@ -866,7 +866,7 @@ URL: [url]', 'only_jpg_user_images' => 'Дозволені лише .jpg-зображення', 'order_by_sequence_off' => 'Можливість ручного сортування відключена в налаштуваннях. Якщо ви хочете використовувати цю функцію, ви повинні знову її включити.', 'original_filename' => 'Початкова назва файлу', -'overall_indexing_progress' => '', +'overall_indexing_progress' => 'Загальне просування індексації"', 'owner' => 'Власник', 'ownership_changed_email' => 'Власника змінено', 'ownership_changed_email_body' => 'Змінено власника @@ -1535,6 +1535,9 @@ URL: [url]', 'sign_out' => 'Вийти', 'sign_out_user' => 'Вихід користувача', 'sk_SK' => 'Slovak', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Розмір каталогу даних', 'splash_added_to_clipboard' => 'Додано до буферу обміну', 'splash_add_access' => '', @@ -1819,7 +1822,7 @@ URL: [url]', 'workflow_summary' => 'Підсумки по процесу', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Підсумки по користувачу', -'x_more_objects' => '', +'x_more_objects' => '[number] більше об\'єктів', 'year_view' => 'Рік', 'yes' => 'Так', 'zh_CN' => 'Chinese (CN)', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index afef9bc37..03bef725f 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (760), archonwang (469), fengjohn (5), yang86 (1) +// Translators: Admin (761), archonwang (469), fengjohn (5), yang86 (1) $text = array( '2_factor_auth' => '双重认证', @@ -1410,7 +1410,7 @@ URL: [url]', 'settings_presetExpirationDate_desc' => '', 'settings_previewWidthDetail' => '缩略图宽度(详情页中)', 'settings_previewWidthDetail_desc' => '详情页面中缩略图的宽度', -'settings_previewWidthDropFolderList' => '', +'settings_previewWidthDropFolderList' => '预览图像的宽度', 'settings_previewWidthDropFolderList_desc' => '', 'settings_previewWidthList' => '缩略图宽度(列表中)', 'settings_previewWidthList_desc' => '列表中缩略图的宽度', @@ -1516,6 +1516,9 @@ URL: [url]', 'sign_out' => '登出', 'sign_out_user' => '退出登录', 'sk_SK' => '斯洛伐克语', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => '数据文件夹使用空间', 'splash_added_to_clipboard' => '已复制', 'splash_add_access' => '', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 7cadae681..c82622635 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -1365,6 +1365,9 @@ URL: [url]', 'sign_out' => '登出', 'sign_out_user' => '', 'sk_SK' => '斯洛伐克語', +'sort_by_date' => '', +'sort_by_name' => '', +'sort_by_sequence' => '', 'space_used_on_data_folder' => '資料檔案夾使用空間', 'splash_added_to_clipboard' => '已複製', 'splash_add_access' => '', From b3a2e0bb32c40f24978e7334416b8d23798d6351 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 26 Jun 2019 11:47:34 +0200 Subject: [PATCH 068/467] search() sorts hits by name --- SeedDMS_Core/Core/inc.ClassDMS.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index 83bedf665..c91376e83 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -1436,6 +1436,7 @@ class SeedDMS_Core_DMS { if($limit) { $searchQuery .= " LIMIT ".$limit." OFFSET ".$offset; } + $searchQuery .= " ORDER BY `tblFolders`.`name`"; // Send the complete search query to the database. $resArr = $this->db->getResultArray($searchQuery); @@ -1675,6 +1676,8 @@ class SeedDMS_Core_DMS { if($limit) $searchQuery .= " LIMIT ".$limit." OFFSET ".$offset; + $searchQuery .= " ORDER BY `tblDocuments`.`name`"; + // Send the complete search query to the database. $resArr = $this->db->getResultArray($searchQuery); if($resArr === false) @@ -1683,11 +1686,13 @@ class SeedDMS_Core_DMS { $resArr = array(); } } else { + $searchQuery .= " ORDER BY `tblDocuments`.`name`"; + // Send the complete search query to the database. $resArr = $this->db->getResultArray($searchQuery); if($resArr === false) return false; - } + } // ------------------- Ausgabe der Ergebnisse ---------------------------- $numResults = count($resArr); From e16a5dd46ef52c6a774957a023719c3c7acf4af0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 26 Jun 2019 13:37:16 +0200 Subject: [PATCH 069/467] fix typo in variable name --- out/out.ChangePassword.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/out/out.ChangePassword.php b/out/out.ChangePassword.php index a19768f91..a0885d8eb 100644 --- a/out/out.ChangePassword.php +++ b/out/out.ChangePassword.php @@ -27,9 +27,9 @@ require_once("inc/inc.ClassUI.php"); include $settings->_rootDir . "languages/" . $settings->_language . "/lang.inc"; if (isset($_REQUEST["referuri"]) && strlen($_REQUEST["referuri"])>0) - $referui = $_REQUEST["referuri"]; + $referuri = $_REQUEST["referuri"]; else - $referui = ''; + $referuri = ''; if (isset($_REQUEST["hash"]) && strlen($_REQUEST["hash"])>0) { $hash = $_REQUEST["hash"]; @@ -39,10 +39,8 @@ if (isset($_REQUEST["hash"]) && strlen($_REQUEST["hash"])>0) { } $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); -$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'referui'=>$referui, 'hash'=>$hash, 'passwordstrength'=>$settings->_passwordStrength)); +$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'referuri'=>$referuri, 'hash'=>$hash, 'passwordstrength'=>$settings->_passwordStrength)); if($view) { $view($_GET); exit; } - -?> From 3e4d90fe91ffc8f3eed6f5416d5c273dc302e3f8 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 26 Jun 2019 13:38:39 +0200 Subject: [PATCH 070/467] parameters for search() can be an array, add support for sorting the output --- SeedDMS_Core/Core/inc.ClassDMS.php | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index c91376e83..d636e1f95 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -1307,6 +1307,13 @@ class SeedDMS_Core_DMS { * @return array|bool */ function search($query, $limit=0, $offset=0, $logicalmode='AND', $searchin=array(), $startFolder=null, $owner=null, $status = array(), $creationstartdate=array(), $creationenddate=array(), $modificationstartdate=array(), $modificationenddate=array(), $categories=array(), $attributes=array(), $mode=0x3, $expirationstartdate=array(), $expirationenddate=array()) { /* {{{ */ + if(is_array($query)) { + foreach(array('limit', 'offset', 'logicalmode', 'searchin', 'startFolder', 'owner', 'status', 'creationstartdate', 'creationenddate', 'modificationstartdate', 'modificationenddate', 'categories', 'attributes', 'mode', 'expirationstartdate', 'expirationenddate') as $paramname) + ${$paramname} = isset($query[$paramname]) ? $query[$paramname] : ${$paramname}; + foreach(array('orderby') as $paramname) + ${$paramname} = isset($query[$paramname]) ? $query[$paramname] : ''; + $query = isset($query['query']) ? $query['query'] : ''; + } // Split the search string into constituent keywords. $tkeys=array(); if (strlen($query)>0) { @@ -1436,7 +1443,22 @@ class SeedDMS_Core_DMS { if($limit) { $searchQuery .= " LIMIT ".$limit." OFFSET ".$offset; } - $searchQuery .= " ORDER BY `tblFolders`.`name`"; + switch($orderby) { + case 'dd': + $searchQuery .= " ORDER BY `tblFolders`.`date` DESC"; + break; + case 'da': + case 'd': + $searchQuery .= " ORDER BY `tblFolders`.`date`"; + break; + case 'nd': + $searchQuery .= " ORDER BY `tblFolders`.`name` DESC"; + break; + case 'na': + default: + $searchQuery .= " ORDER BY `tblFolders`.`name`"; + break; + } // Send the complete search query to the database. $resArr = $this->db->getResultArray($searchQuery); From b8bc69bb117fa466630dfbc0ed6022a02432f814 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 26 Jun 2019 18:01:53 +0200 Subject: [PATCH 071/467] add sorting by name,date for documents in search() --- SeedDMS_Core/Core/inc.ClassDMS.php | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index d636e1f95..5a8ca52c0 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -1307,6 +1307,7 @@ class SeedDMS_Core_DMS { * @return array|bool */ function search($query, $limit=0, $offset=0, $logicalmode='AND', $searchin=array(), $startFolder=null, $owner=null, $status = array(), $creationstartdate=array(), $creationenddate=array(), $modificationstartdate=array(), $modificationenddate=array(), $categories=array(), $attributes=array(), $mode=0x3, $expirationstartdate=array(), $expirationenddate=array()) { /* {{{ */ + $orderby = ''; if(is_array($query)) { foreach(array('limit', 'offset', 'logicalmode', 'searchin', 'startFolder', 'owner', 'status', 'creationstartdate', 'creationenddate', 'modificationstartdate', 'modificationenddate', 'categories', 'attributes', 'mode', 'expirationstartdate', 'expirationenddate') as $paramname) ${$paramname} = isset($query[$paramname]) ? $query[$paramname] : ${$paramname}; @@ -1686,6 +1687,23 @@ class SeedDMS_Core_DMS { "`tblDocumentContent`.`version`, ". "`tblDocumentStatusLog`.`status`, `tblDocumentLocks`.`userID` as `lockUser` ".$searchQuery; + switch($orderby) { + case 'dd': + $orderbyQuery = " ORDER BY `tblDocuments`.`date` DESC"; + break; + case 'da': + case 'd': + $orderbyQuery = " ORDER BY `tblDocuments`.`date`"; + break; + case 'nd': + $orderbyQuery = " ORDER BY `tblDocuments`.`name` DESC"; + break; + case 'na': + default: + $orderbyQuery = " ORDER BY `tblDocuments`.`name`"; + break; + } + // calculate the remaining entrїes of the current page // If page is not full yet, get remaining entries if($limit) { @@ -1698,7 +1716,7 @@ class SeedDMS_Core_DMS { if($limit) $searchQuery .= " LIMIT ".$limit." OFFSET ".$offset; - $searchQuery .= " ORDER BY `tblDocuments`.`name`"; + $searchQuery .= $orderbyQuery; // Send the complete search query to the database. $resArr = $this->db->getResultArray($searchQuery); @@ -1708,7 +1726,7 @@ class SeedDMS_Core_DMS { $resArr = array(); } } else { - $searchQuery .= " ORDER BY `tblDocuments`.`name`"; + $searchQuery .= $orderbyQuery; // Send the complete search query to the database. $resArr = $this->db->getResultArray($searchQuery); From 86c03d3ee483d43169a2acb9f3c5810dbf205fc3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 26 Jun 2019 18:02:26 +0200 Subject: [PATCH 072/467] check if $orderby is set before using it --- SeedDMS_Core/Core/inc.ClassFolder.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassFolder.php b/SeedDMS_Core/Core/inc.ClassFolder.php index 5a9400197..59dac88d4 100644 --- a/SeedDMS_Core/Core/inc.ClassFolder.php +++ b/SeedDMS_Core/Core/inc.ClassFolder.php @@ -539,9 +539,9 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { if (!isset($this->_subFolders)) { $queryStr = "SELECT * FROM `tblFolders` WHERE `parent` = " . $this->_id; - if ($orderby[0]=="n") $queryStr .= " ORDER BY `name`"; - elseif ($orderby[0]=="s") $queryStr .= " ORDER BY `sequence`"; - elseif ($orderby[0]=="d") $queryStr .= " ORDER BY `date`"; + if ($orderby && $orderby[0]=="n") $queryStr .= " ORDER BY `name`"; + elseif ($orderby && $orderby[0]=="s") $queryStr .= " ORDER BY `sequence`"; + elseif ($orderby && $orderby[0]=="d") $queryStr .= " ORDER BY `date`"; if($dir == 'desc') $queryStr .= " DESC"; if(is_int($limit) && $limit > 0) { @@ -743,9 +743,9 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { if (!isset($this->_documents)) { $queryStr = "SELECT * FROM `tblDocuments` WHERE `folder` = " . $this->_id; - if ($orderby[0]=="n") $queryStr .= " ORDER BY `name`"; - elseif($orderby[0]=="s") $queryStr .= " ORDER BY `sequence`"; - elseif($orderby[0]=="d") $queryStr .= " ORDER BY `date`"; + if ($orderby && $orderby[0]=="n") $queryStr .= " ORDER BY `name`"; + elseif($orderby && $orderby[0]=="s") $queryStr .= " ORDER BY `sequence`"; + elseif($orderby && $orderby[0]=="d") $queryStr .= " ORDER BY `date`"; if($dir == 'desc') $queryStr .= " DESC"; if(is_int($limit) && $limit > 0) { From 3ab6d050cd9b6c26da5df31ccf62c22b41eef920 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 26 Jun 2019 18:03:07 +0200 Subject: [PATCH 073/467] pass parameters to search() by array --- out/out.Search.php | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/out/out.Search.php b/out/out.Search.php index e5a7a52ff..8221df5ef 100644 --- a/out/out.Search.php +++ b/out/out.Search.php @@ -171,6 +171,13 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe $query = ""; } + if (isset($_GET["orderby"]) && is_string($_GET["orderby"])) { + $orderby = $_GET["orderby"]; + } + else { + $orderby = ""; + } + /* Select if only documents (0x01), only folders (0x02) or both (0x03) * are found */ @@ -360,7 +367,26 @@ if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSe // ---------------- Start searching ----------------------------------------- $startTime = getTime(); - $resArr = $dms->search($query, 0, 0 /*$limit, ($pageNumber-1)*$limit*/, $mode, $searchin, $startFolder, $owner, $status, $creationdate ? $startdate : array(), $creationdate ? $stopdate : array(), array(), array(), $categories, $attributes, $resultmode, $expirationdate ? $expstartdate : array(), $expirationdate ? $expstopdate : array()); + $resArr = $dms->search(array( + 'query'=>$query, + 'limit'=>0, + 'offset'=>0 /*$limit, ($pageNumber-1)*$limit*/, + 'logicalmode'=>$mode, + 'searchin'=>$searchin, + 'startFolder'=>$startFolder, + 'owner'=>$owner, + 'status'=>$status, + 'creationstartdate'=>$creationdate ? $startdate : array(), + 'creationenddate'=>$creationdate ? $stopdate : array(), + 'modificationstartdate'=>array(), + 'modificationenddate'=>array(), + 'categories'=>$categories, + 'attributes'=>$attributes, + 'mode'=>$resultmode, + 'expirationstartdate'=>$expirationdate ? $expstartdate : array(), + 'expirationenddate'=>$expirationdate ? $expstopdate : array(), + 'orderby'=>$orderby + )); $searchTime = getTime() - $startTime; $searchTime = round($searchTime, 2); @@ -409,10 +435,14 @@ if($settings->_showSingleSearchHit && count($entries) == 1) { $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'query'=>$query, 'searchhits'=>$entries, 'totalpages'=>$totalPages, 'pagenumber'=>$pageNumber, 'searchtime'=>$searchTime, 'urlparams'=>$_GET, 'cachedir'=>$settings->_cacheDir)); if($view) { + $view->setParam('showtree', showtree()); + $view->setParam('enableRecursiveCount', $settings->_enableRecursiveCount); + $view->setParam('maxRecursiveCount', $settings->_maxRecursiveCount); $view->setParam('totaldocs', $dcount /*resArr['totalDocs']*/); $view->setParam('totalfolders', $fcount /*resArr['totalFolders']*/); $view->setParam('fullsearch', (isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSearch) ? true : false); $view->setParam('mode', isset($mode) ? $mode : ''); + $view->setParam('orderby', isset($orderby) ? $orderby : ''); $view->setParam('defaultsearchmethod', $settings->_defaultSearchMethod); $view->setParam('resultmode', isset($resultmode) ? $resultmode : ''); $view->setParam('searchin', isset($searchin) ? $searchin : array()); From 619a1de980844fe524616d961ef9a82dc1549544 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 26 Jun 2019 18:03:36 +0200 Subject: [PATCH 074/467] adding ordering of result for database search --- views/bootstrap/class.Search.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index f844dd070..d5b36979f 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -88,6 +88,7 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { $expirationdate = $this->params['expirationdate']; $status = $this->params['status']; $this->query = $this->params['query']; + $orderby = $this->params['orderby']; $entries = $this->params['searchhits']; $totalpages = $this->params['totalpages']; $pageNumber = $this->params['pagenumber']; @@ -219,7 +220,6 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style {
        ".getMLText("name")."".getMLText("name"); + print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; + print " ".($orderby=="s"||$orderby=="sa"?' ':($orderby=="sd"?' ':' ')).""; + print " ".($orderby=="d"||$orderby=="da"?' ':($orderby=="dd"?' ':' ')).""; + print "".getMLText("owner")."".getMLText("status")."".getMLText("version")."
        contentContainerEnd(); -// }}} /* First check if any of the folder filters are set. If it is, * open the accordion. @@ -369,6 +369,9 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style {
      +
      "; print "\n\n"; print "\n"; - print "".getMLText("name")."\n"; + print "".getMLText("name"); + if(!$fullsearch) { + print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; + $tmp['orderby'] = $orderby=="d"||$orderby=="da)"?"dd":"d"; + print " ".($orderby=="d"||$orderby=="da"?' ':($orderby=="dd"?' ':' ')).""; + } + print "\n"; //print "".getMLText("attributes")."\n"; print "".getMLText("status")."\n"; print "".getMLText("action")."\n"; From b7063fada397d85dd1571a0a42cb1703bf35e558 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 26 Jun 2019 20:39:37 +0200 Subject: [PATCH 075/467] add changes for 5.1.12 --- CHANGELOG | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index e3a3fa88e..c99630053 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,8 @@ -------------------------------------------------------------------------------- - fix for CVE-2019-12932 (Persistent or Stored XSS), excaping the search result in the autocompletion search form placed in the header -- folder/document list can be sorted ascending or descending +- folder/document list can be sorted by name, date, sequence (ascending or descending) +- search result can be sorted by name, date (ascending or descending) - do not check for Log.php during installation anymore, it's part of the vendor directory anyway From e8c9fd5e4e932d701d551a39ee17552762bc7ba0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 26 Jun 2019 20:41:19 +0200 Subject: [PATCH 076/467] add changes for 5.1.12 --- SeedDMS_Core/package.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index e742bf36c..440f1c507 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -12,7 +12,7 @@ uwe@steinmann.cx yes - 2019-06-24 + 2019-06-26 5.1.12 @@ -24,8 +24,8 @@ GPL License -parameter $orderby passed to SeedDMS_Core_Folder::getDocuments() and SeedDMS_Core_Folder::getSubFolders() can be a string, but only the first char is -evaluated + - parameter $orderby passed to SeedDMS_Core_Folder::getDocuments() and SeedDMS_Core_Folder::getSubFolders() can be a string, but only the first char is evaluated + - SeedDMS_Core_DMS::search() excepts parameters as array, added orderby From cf6b85223306c6891d816e2fb82e3c593b642d12 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 27 Jun 2019 14:18:39 +0200 Subject: [PATCH 077/467] do not access $data if there is none --- out/out.Charts.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/out/out.Charts.php b/out/out.Charts.php index 7114ad30f..cb1e73cba 100644 --- a/out/out.Charts.php +++ b/out/out.Charts.php @@ -41,13 +41,14 @@ $type = 'docsperuser'; if(!empty($_GET['type'])) { $type = $_GET['type']; } -$data = $dms->getStatisticalData($type); -switch($type) { - case 'docsperstatus': - foreach($data as &$rec) { - $rec['key'] = getOverallStatusText((int) $rec['key']); - } - break; +if($data = $dms->getStatisticalData($type)) { + switch($type) { + case 'docsperstatus': + foreach($data as &$rec) { + $rec['key'] = getOverallStatusText((int) $rec['key']); + } + break; + } } if($view) { From e0995e362c73e8fd3c5201b012fc53c689a74110 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 27 Jun 2019 14:18:58 +0200 Subject: [PATCH 078/467] initialize $fieldwrap in order to prevent php warnings --- views/bootstrap/class.UpdateDocument.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.UpdateDocument.php b/views/bootstrap/class.UpdateDocument.php index 80e5366dc..a75e27de6 100644 --- a/views/bootstrap/class.UpdateDocument.php +++ b/views/bootstrap/class.UpdateDocument.php @@ -447,7 +447,7 @@ console.log(element); } } } - $fieldwrap = array(); + $fieldwrap = array('', ''); if($tmp) { $fieldwrap = array('', $this->getSelectPresetButtonHtml("GrpReviewers", $tmp)); } @@ -597,7 +597,7 @@ console.log(element); } } } - $fieldwrap = array(); + $fieldwrap = array('', ''); if($tmp) { $fieldwrap = array('', $this->getSelectPresetButtonHtml("GrpApprovers", $tmp)); } From e6b9b15605aa20312102924578368c70e44a8b0e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 27 Jun 2019 14:19:24 +0200 Subject: [PATCH 079/467] init $oldattributes in order to prevent php warnings --- op/op.EditFolder.php | 1 + 1 file changed, 1 insertion(+) diff --git a/op/op.EditFolder.php b/op/op.EditFolder.php index 5ced89a82..c2f2afc57 100644 --- a/op/op.EditFolder.php +++ b/op/op.EditFolder.php @@ -70,6 +70,7 @@ $oldcomment = $folder->getComment(); * will just update the old attribute object in array attributes[] and hence * also update the old value */ +$oldattributes = array(); foreach($folder->getAttributes() as $ai=>$aa) $oldattributes[$ai] = clone $aa; From 91ce7f6d6ee35331648712b1315aaca2e263c084 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 27 Jun 2019 15:55:00 +0200 Subject: [PATCH 080/467] fix some typos, new translations --- languages/bg_BG/lang.inc | 8 ++--- languages/de_DE/lang.inc | 72 ++++++++++++++++++++-------------------- languages/fr_FR/lang.inc | 14 ++++---- languages/nl_NL/lang.inc | 6 ++-- languages/tr_TR/lang.inc | 4 +-- 5 files changed, 52 insertions(+), 52 deletions(-) diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 5b85e6cd1..d45eeed24 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (858) +// Translators: Admin (861) $text = array( '2_factor_auth' => '', @@ -1361,8 +1361,8 @@ $text = array( 'sign_out' => 'изход', 'sign_out_user' => '', 'sk_SK' => 'Словашки', -'sort_by_date' => '', -'sort_by_name' => '', +'sort_by_date' => 'Сортирай по дата"', +'sort_by_name' => 'Сортирай по име', 'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Размер на каталога с данните', 'splash_added_to_clipboard' => 'Добавено към клипборда', @@ -1634,7 +1634,7 @@ $text = array( 'workflow_summary' => 'Резюме за процес', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Резюме за потребител', -'x_more_objects' => '', +'x_more_objects' => 'още [number] документа', 'year_view' => 'годишен изглед', 'yes' => 'Да', 'zh_CN' => 'Китайски (Китай)', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 838f72826..80bf7e43c 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 (2657), dgrutsch (22) +// Translators: Admin (2684), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -48,7 +48,7 @@ URL: [url]', 'action_approve' => 'Freigeben', 'action_complete' => 'Komplett', 'action_is_complete' => 'Ist komplett', -'action_is_not_complete' => 'Ist Nicht komplett', +'action_is_not_complete' => 'Ist nicht komplett', 'action_reject' => 'Ablehnen', 'action_review' => 'Prüfen', 'action_revise' => 'Erneut prüfen', @@ -86,12 +86,12 @@ URL: [url]', 'all_documents' => 'Alle Dokumente', 'all_pages' => 'Alle', 'all_users' => 'Alle Benutzer', -'already_subscribed' => 'Bereits aboniert', +'already_subscribed' => 'Bereits abonniert', 'and' => 'und', 'apply' => 'Anwenden', 'approvals_accepted' => '[no_approvals] Freigaben', 'approvals_and_reviews_accepted' => '[no_approvals] Freigaben und [no_reviews] Prüfungen', -'approvals_and_reviews_not_touched' => '[no_approvals] offene Freigaben und [no_reviews] offenen Prüfungen', +'approvals_and_reviews_not_touched' => '[no_approvals] offene Freigaben und [no_reviews] offene Prüfungen', 'approvals_and_reviews_rejected' => '[no_approvals] abgelehnte Freigaben und [no_reviews] abgelehnte Prüfungen', 'approvals_not_touched' => '[no_approvals] offene Freigaben', 'approvals_rejected' => '[no_approvals] abgelehnte Freigaben', @@ -131,7 +131,7 @@ URL: [url]', 'approval_update_failed' => 'Störung bei der Aktualisierung des Berechtigungsstatus. Aktualisierung gescheitert', 'approvers' => 'Freigebender', 'approver_already_assigned' => 'Freigeber bereits zugewiesen', -'approver_already_removed' => 'Freigeber wurde bereits aus dem Freigabevorgang entfernt oder hat die Freigabe bereits abgeschlossen', +'approver_already_removed' => 'Freigeber wurde bereits aus dem Freigabevorgang entfernt oder hat die Freigabe bereits abgeschlossen', 'april' => 'April', 'archive' => 'Archiv', 'archive_creation' => 'Archiv erzeugen', @@ -255,7 +255,7 @@ URL: [url]', 'choose_attrdefgroup' => 'Attributgruppe wählen', 'choose_category' => 'Kategorie wählen', 'choose_group' => 'Gruppe wählen', -'choose_role' => 'Role wählen', +'choose_role' => 'Rolle wählen', 'choose_target_category' => 'Kategorie wählen', 'choose_target_document' => 'Dokument wählen', 'choose_target_file' => 'Datei wählen', @@ -276,7 +276,7 @@ URL: [url]', 'comment_for_current_version' => 'Kommentar zur aktuellen Version', 'configure_extension' => 'Erweiterung konfigurieren', 'confirm_clear_cache' => 'Wollen Sie wirklich den Cache löschen? Dies entfernt alle vorberechneten Vorschaubilder.', -'confirm_create_fulltext_index' => 'Ja, Ich möchte den Volltextindex neu erzeugen!.', +'confirm_create_fulltext_index' => 'Ja, Ich möchte den Volltext-Index neu erzeugen!.', 'confirm_move_document' => 'Dokument wirklich verschieben?', 'confirm_move_folder' => 'Ordner wirklich verschieben?', 'confirm_pwd' => 'Passwort-Bestätigung', @@ -290,7 +290,7 @@ URL: [url]', 'confirm_rm_folder_files' => 'Möchten Sie wirklich alle Dateien und Unterordner des Ordner "[foldername]" löschen?
      Vorsicht: Diese Operation kann nicht rückgängig gemacht werden.', 'confirm_rm_group' => 'Möchten Sie wirklich die Gruppe "[groupname]" löschen?
      Beachten Sie, dass diese Operation nicht rückgängig gemacht werden kann.', 'confirm_rm_log' => 'Möchten Sie wirklich die Log-Datei "[logname]" löschen?
      Beachten Sie, dass diese Operation nicht rückgängig gemacht werden kann.', -'confirm_rm_transmittal' => 'Bitte bestätigen Sie as Löschen der Dokumentenliste.', +'confirm_rm_transmittal' => 'Bitte bestätigen Sie das Löschen der Dokumentenliste.', 'confirm_rm_transmittalitem' => 'Löschen bestätigen', 'confirm_rm_user' => 'Möchten Sie wirklich den Benutzer "[username]" löschen?
      Beachten Sie, dass diese Operation nicht rückgängig gemacht werden kann.', 'confirm_rm_user_from_processes' => 'Möchten Sie wirklich den Benutzer "[username]" aus allen Prozessen löschen?
      Beachten Sie, dass dies möglicherweise in der Freigabe von Dokumenten resultiert, wenn der Benutzer der einzige oder letzte Prüfer ist.', @@ -303,8 +303,8 @@ URL: [url]', 'converter_new_mimetype' => 'Neuer Mime-Type', 'copied_to_checkout_as' => 'Datei am [date] in den Checkout-Space als \'[filename]\' kopiert.', 'create_download_link' => 'Erzeuge Download Link', -'create_fulltext_index' => 'Erzeuge Volltextindex', -'create_fulltext_index_warning' => 'Sie möchten den Volltextindex neu erzeugen. Dies kann beträchtlich Zeit in Anspruch nehmen und Gesamtleistung Ihres System beeinträchtigen. Bestätigen Sie bitte diese Operation.', +'create_fulltext_index' => 'Erzeuge Volltext-Index', +'create_fulltext_index_warning' => 'Sie möchten den Volltext-Index neu erzeugen. Dies kann beträchtlich Zeit in Anspruch nehmen und Gesamtleistung Ihres System beeinträchtigen. Bestätigen Sie bitte diese Operation.', 'creation_date' => 'Erstellt am', 'cs_CZ' => 'Tschechisch', 'current_password' => 'Aktuelles Passwort', @@ -332,7 +332,7 @@ URL: [url]', 'documentcontent' => 'Dokumentenversion', 'documents' => 'Dokumente', 'documents_checked_out_by_you' => 'Von mir ausgecheckte Dokumente', -'documents_expired' => 'Abgelaufende Dokumente', +'documents_expired' => 'Abgelaufene Dokumente', 'documents_in_process' => 'Dokumente in Bearbeitung', 'documents_locked' => 'Gesperrte Dokumente', 'documents_locked_by_you' => 'Von mir gesperrte Dokumente', @@ -345,7 +345,7 @@ URL: [url]', 'documents_to_revise' => 'Erneute Prüfung erforderlich', 'documents_to_trigger_workflow' => 'Dokumente im Workflow', 'documents_user_draft' => 'Entwürfe', -'documents_user_expiration' => 'Abgelaufende Dokumente', +'documents_user_expiration' => 'Abgelaufene Dokumente', 'documents_user_needs_correction' => 'Dokumente, die korrigiert werden müssen', 'documents_user_no_reception' => 'Dokumente ohne Empfangsbestätigung', 'documents_user_obsolete' => 'Veraltete Dokumente', @@ -497,7 +497,7 @@ Der Link ist bis zum [valid] gültig. 'en_GB' => 'Englisch (GB)', 'equal_transition_states' => 'Start- und Endstatus ѕind gleich', 'error' => 'Fehler', -'error_add_aro' => 'Fehler beim Hinzufügen des Zugriffsobjekt', +'error_add_aro' => 'Fehler beim Hinzufügen des Zugriffsobjekts', 'error_add_permission' => 'Fehler beim Hinzufügen der Berechtigung', 'error_cleared_cache' => 'Fehler beim Löschen des Cache', 'error_edit_task' => 'Fehler beim Speichern der Task', @@ -522,7 +522,7 @@ Der Link ist bis zum [valid] gültig. 'exclude_items' => 'Einträge auslassen', 'expired' => 'abgelaufen', 'expired_at_date' => 'Abgelaufen am [datetime]', -'expired_documents' => 'Abgelaufende Dokumente', +'expired_documents' => 'Abgelaufene Dokumente', 'expires' => 'Ablaufdatum', 'expire_by_date' => 'Ablauf nach Datum', 'expire_in_1d' => 'Ablauf in 1 Tag', @@ -613,7 +613,7 @@ URL: [url]', 'from' => 'von', 'fr_FR' => 'Französisch', 'fullsearch' => 'Volltext', -'fullsearch_hint' => 'Volltextindex benutzen', +'fullsearch_hint' => 'Volltext-Index benutzen', 'fulltextsearch_disabled' => 'Volltext-Index ist ausgeschaltet', 'fulltext_converters' => 'Index Dokumentenumwandlung', 'fulltext_info' => 'Volltext-Index Info', @@ -835,7 +835,7 @@ URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [folder_name] - Neuer Ordner', 'new_user_image' => 'Neues Bild', 'next_state' => 'Neuer Status', -'nl_NL' => 'Holländisch', +'nl_NL' => 'Niederländisch', 'no' => 'Nein', 'notify_added_email' => 'Benachrichtigung per Mail wurde eingerichtet', 'notify_added_email_body' => 'Added to notification list @@ -909,22 +909,22 @@ URL: [url]', 'password_expired' => 'Passwort ist abgelaufen', 'password_expires_in_days' => 'Passwort läuft in %s Tagen ab.', 'password_forgotten' => 'Passwort vergessen', -'password_forgotten_email_body' => 'Sehr geehrter Anwender von SeedDMS, - -wir haben einen Anfrage zum Zurücksetzen Ihres Passworts erhalten. - -Dies kann durch den folgenden Link erfolgen: - -[url_prefix]out/out.ChangePassword.php?hash=[hash] - -Sollen Sie danach immer noch Problem bei der Anmeldung haben, dann kontaktieren Sie bitte Ihren Adminstrator', +'password_forgotten_email_body' => 'Sehr geehrter Anwender von SeedDMS, + +wir haben einen Anfrage zum Zurücksetzen Ihres Passworts erhalten. + +Dies kann durch den folgenden Link erfolgen: + +[url_prefix]out/out.ChangePassword.php?hash=[hash] + +Sollen Sie danach immer noch Probleme bei der Anmeldung haben, dann kontaktieren Sie bitte Ihren Adminstrator', 'password_forgotten_email_subject' => '[sitename]: Passwort vergessen', 'password_forgotten_send_hash' => 'Anweisungen zum weiteren Vorgehen wurden an die E-Mail Adresse des Benutzers versandt', 'password_forgotten_text' => 'Füllen Sie bitte untenstehendes Formular aus. Weitere Anweisungen erhalten Sie dann in einer E-Mail die an Sie gesandt wird', 'password_forgotten_title' => 'Passwort gesendet', 'password_repeat' => 'Passwort wiederholen', 'password_send' => 'Passwort verschickt', -'password_send_text' => 'Ihr neues Passwort wurde an die angegebene E-Mail-Adresse versandt, wenn ein Benutzer mit diesem Login und dieser E-Mail-Adresse exitiert. Sollten Sie innerhalb der nächsten Minuten keine E-Mail bekommen, dann überprüfen Sie nochmal die Angaben und wiederholen Sie den Vorgang.', +'password_send_text' => 'Ihr neues Passwort wurde an die angegebene E-Mail-Adresse versandt, wenn ein Benutzer mit diesem Login und dieser E-Mail-Adresse existiert. Sollten Sie innerhalb der nächsten Minuten keine E-Mail bekommen, dann überprüfen Sie nochmal die Angaben und wiederholen Sie den Vorgang.', 'password_strength' => 'Passwortstärke', 'password_strength_insuffient' => 'Ungenügend starkes Passwort', 'password_wrong' => 'Falsches Passwort', @@ -1167,7 +1167,7 @@ URL: [url]', 'search_mode_and' => 'alle Begriffe', 'search_mode_documents' => 'Nur Dokumente', 'search_mode_folders' => 'Nur Ordner', -'search_mode_or' => 'min. ein Begriff', +'search_mode_or' => 'mind. ein Begriff', 'search_no_results' => 'Die Suche lieferte leider keine Treffer.', 'search_query' => 'Suchbegriffe', 'search_report' => 'Die Suche lieferte [doccount] Dokumente und [foldercount] Ordner in [searchtime] Sek.', @@ -1213,7 +1213,7 @@ Name: [username] [comment]', 'send_login_data_subject' => '[sitename]: [login] - Ihre Login-Daten', -'send_test_mail' => 'Sende Test-Email', +'send_test_mail' => 'Sende Test-E-mail', 'september' => 'September', 'sequence' => 'Reihenfolge', 'seq_after' => 'Nach "[prevname]"', @@ -1252,7 +1252,7 @@ Name: [username] 'settings_checkOutDir' => 'Verzeichnis für ausgecheckte Dokumente', 'settings_checkOutDir_desc' => 'Dies ist das Verzeichnis, in das Dokumenteninhalte bei einem Check out kopiert werden. Wenn dieses Verzeichnis für die Benutzer erreichbar ist, können die Dateien editiert und dann wieder eingecheckt werden.', 'settings_cmdTimeout' => 'Timeout für externe Programme', -'settings_cmdTimeout_desc' => 'Diese Zeit in Sekunden legt fest, wann ein externes Programm (z.B. für die Erstellung des Volltextindex) beendet wird.', +'settings_cmdTimeout_desc' => 'Diese Zeit in Sekunden legt fest, wann ein externes Programm (z.B. für die Erstellung des Volltext-Index) beendet wird.', 'settings_contentDir' => 'Content-Verzeichnis', 'settings_contentDir_desc' => 'Verzeichnis, in dem die Dokumente gespeichert werden. Sie sollten ein Verzeichnis wählen, das nicht durch den Web-Server erreichbar ist.', 'settings_contentOffsetDir' => 'Content Offset Directory', @@ -1320,7 +1320,7 @@ Name: [username] 'settings_enableDropUpload_desc' => 'Ein/Ausschalten des Bereichs auf der \'View Folder\' Seite zum Hochladen von Dateien per Drag&Drop.', 'settings_enableDuplicateDocNames' => 'Erlaube doppelte Dokumentennamen', 'settings_enableDuplicateDocNames_desc' => 'Erlaube doppelte Dokumentennamen in einem Ordner.', -'settings_enableEmail' => 'E-mail aktivieren', +'settings_enableEmail' => 'E-Mail aktivieren', 'settings_enableEmail_desc' => 'Automatische E-Mail-Benachrichtigung ein-/ausschalten', 'settings_enableFilterReceipt' => 'Besitzer, Prüfer, ... aus Empfängerliste filtern', 'settings_enableFilterReceipt_desc' => 'Anwählen, um einige Empfänger aus der Liste zu entfernen, wenn diese als Mitglieder einer Gruppe eingetragen werden.', @@ -1437,7 +1437,7 @@ Name: [username] 'settings_loginFailure_desc' => 'Konto nach n Anmeldefehlversuchen sperren.', 'settings_luceneClassDir' => 'Lucene SeedDMS Verzeichnis', 'settings_luceneClassDir_desc' => 'Pfad zum PEAR-Paket SeedDMS_Lucene (optional). Lassen Sie diese Einstellung leer, wenn SeedDMS_Lucene ohnehin von PHP gefunden wird, weil es beispielweise im \'Extra PHP Include-Path\' installiert ist.', -'settings_luceneDir' => 'Verzeichnis für Volltextindex', +'settings_luceneDir' => 'Verzeichnis für Volltext-Index', 'settings_luceneDir_desc' => 'Verzeichnis in dem der Lucene-Index abgelegt wird.', 'settings_maxDirID' => 'Max. Anzahl Unterverzeichnisse', 'settings_maxDirID_desc' => 'Maximale Anzahl der Unterverzeichnisse in einem Verzeichnis. Ändern Sie diesen Wert nur, wenn Sie genau wissen was Sie tun! Voreingestellt ist 0.', @@ -1520,9 +1520,9 @@ Name: [username] 'settings_smtpPort' => 'SMTP Server Port', 'settings_smtpPort_desc' => 'SMTP Server Port, voreingestellt ist 25', 'settings_smtpSendFrom' => 'Absenderadresse', -'settings_smtpSendFrom_desc' => 'Absenderadresse für herausgehende Mails', -'settings_smtpSendTestMail' => 'Sende Testmail', -'settings_smtpSendTestMail_desc' => 'Verschickte eine Testmail, um die akuelle Konfiguration zu testen.', +'settings_smtpSendFrom_desc' => 'Absenderadresse für herausgehende E-Mails', +'settings_smtpSendTestMail' => 'Sende Test-E-Mail', +'settings_smtpSendTestMail_desc' => 'Verschickte eine Test-E-Mail, um die akuelle Konfiguration zu testen.', 'settings_smtpServer' => 'SMTP Server-Hostname', 'settings_smtpServer_desc' => 'SMTP Server-Hostname', 'settings_smtpUser' => 'SMTP Server User', @@ -1717,7 +1717,7 @@ Name: [username] 'task_name' => 'Name', 'task_next_run' => 'Nächste Ausführung', 'temp_jscode' => 'Temporärer Javascript-Code', -'testmail_body' => 'Diese Mail ist lediglich zum Test der Mail-Konfiguration von SeedDMS', +'testmail_body' => 'Diese Mail ist lediglich zum Test der E-Mail-Konfiguration von SeedDMS', 'testmail_subject' => 'Test Mail', 'theme' => 'Aussehen', 'thursday' => 'Donnerstag', @@ -1797,7 +1797,7 @@ URL: [url]', 'update' => 'Aktualisieren', 'update_approvers' => 'Liste der Freigebenden aktualisieren', 'update_document' => 'Aktualisieren', -'update_fulltext_index' => 'Aktualisiere Volltextindex', +'update_fulltext_index' => 'Aktualisiere Volltext-Index', 'update_info' => 'Informationen zur Aktualisierung', 'update_locked_msg' => 'Dieses Dokument wurde gesperrt

      Die Sperrung wurde von [username] eingerichtet.
      ', 'update_recipients' => 'Liste der Empfänger aktualisieren', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 71393d95c..4b15cc841 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 (1091), jeromerobert (50), lonnnew (9), Oudiceval (744) +// Translators: Admin (1091), jeromerobert (50), lonnnew (9), Oudiceval (750) $text = array( '2_factor_auth' => 'Authentification forte', @@ -687,7 +687,7 @@ URL: [url]', 'invalid_link_id' => 'Identifiant de lien invalide', 'invalid_request_token' => 'Jeton de demande incorrect', 'invalid_review_status' => 'Statut de vérification invalide', -'invalid_sequence' => 'Valeur de séquence invalide', +'invalid_sequence' => 'Position invalide', 'invalid_status' => 'Statut de document invalide', 'invalid_target_doc_id' => 'Identifiant de document cible invalide', 'invalid_target_folder' => 'Identifiant de dossier cible invalide', @@ -891,7 +891,7 @@ URL: [url]', 'october' => 'Octobre', 'old' => 'Ancien', 'only_jpg_user_images' => 'Images d\'utilisateur au format .jpg seulement', -'order_by_sequence_off' => 'Le tri par séquence est désactivé dans les préférences. Si vous souhaitez que ce paramètre prenne effet, vous devez l\'activer.', +'order_by_sequence_off' => 'Le tri par position est désactivé dans les préférences. Si vous souhaitez que ce paramètre prenne effet, vous devez l’activer.', 'original_filename' => 'Nom de fichier original', 'overall_indexing_progress' => 'Progression globale de l’indexation', 'owner' => 'Propriétaire', @@ -1509,7 +1509,7 @@ Nom : [username] 'settings_sortFoldersDefault' => 'Méthode de tri par défaut des dossiers', 'settings_sortFoldersDefault_desc' => 'Ceci définit les méthodes de tri pour les dossiers et documents dans la vue du dossier.', 'settings_sortFoldersDefault_val_name' => 'Par nom', -'settings_sortFoldersDefault_val_sequence' => 'Par séquence', +'settings_sortFoldersDefault_val_sequence' => 'Par position', 'settings_sortFoldersDefault_val_unsorted' => 'Non trié', 'settings_sortUsersInList' => 'Tri des utilisateurs', 'settings_sortUsersInList_desc' => 'Définit si les utilisateurs dans les menus de sélection sont triés par identifiant ou par nom complet', @@ -1566,9 +1566,9 @@ Nom : [username] 'sign_out' => 'Déconnexion', 'sign_out_user' => 'Déconnecter l\'utilisateur', 'sk_SK' => 'Slovaque', -'sort_by_date' => '', -'sort_by_name' => '', -'sort_by_sequence' => '', +'sort_by_date' => 'Trier par date', +'sort_by_name' => 'Trier par nom', +'sort_by_sequence' => 'Trier par position', 'space_used_on_data_folder' => 'Espace utilisé dans le répertoire de données', 'splash_added_to_clipboard' => 'Ajouté au presse-papier', 'splash_add_access' => 'Droits d’accès ajoutés', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index fc6328145..bafc1b108 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 (766), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) +// Translators: Admin (768), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) $text = array( '2_factor_auth' => '2-factor-authenticatie', @@ -1558,8 +1558,8 @@ Name: [username] 'sign_out' => 'Log uit', 'sign_out_user' => 'Log gebruiker uit', 'sk_SK' => 'Slowaaks', -'sort_by_date' => '', -'sort_by_name' => '', +'sort_by_date' => 'Sorteren op datum', +'sort_by_name' => 'Sorteren op naam', 'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Gebruikte diskomvang in data map', 'splash_added_to_clipboard' => 'Toegevoegd aan klembord', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 44185bc4b..53b580478 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 (1082), aydin (83) +// Translators: Admin (1083), aydin (83) $text = array( '2_factor_auth' => '', @@ -918,7 +918,7 @@ Giriş yaparken halen sorun yaşıyorsanız lütfen sistem yöneticinizle görü 'preview_plain' => '', 'previous_state' => 'Önceki durum', 'previous_versions' => 'Önceki versiyonlar', -'process' => '', +'process' => 'İşlem', 'process_without_user_group' => '', 'pt_BR' => 'Portekizce', 'quota' => 'Kota', From cc892178841d5ad11adc5989378c1737a2480acd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 27 Jun 2019 18:11:11 +0200 Subject: [PATCH 081/467] include Extension.php and friends to prevent php warnings --- out/out.ChangePassword.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/out/out.ChangePassword.php b/out/out.ChangePassword.php index a0885d8eb..5e3365307 100644 --- a/out/out.ChangePassword.php +++ b/out/out.ChangePassword.php @@ -22,6 +22,9 @@ if(!isset($settings)) require_once("../inc/inc.Settings.php"); require_once("inc/inc.LogInit.php"); require_once("inc/inc.Language.php"); +require_once("inc/inc.Init.php"); +require_once("inc/inc.Extension.php"); +require_once("inc/inc.DBInit.php"); require_once("inc/inc.ClassUI.php"); include $settings->_rootDir . "languages/" . $settings->_language . "/lang.inc"; From b540f4a1b720fef8b63a38406683fc5169e8d80b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 28 Jun 2019 08:43:37 +0200 Subject: [PATCH 082/467] fix uploaded documents from drop folder --- op/op.AddDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op/op.AddDocument.php b/op/op.AddDocument.php index ec27f46c6..84176ecda 100644 --- a/op/op.AddDocument.php +++ b/op/op.AddDocument.php @@ -262,7 +262,7 @@ $docsource = 'upload'; if($settings->_dropFolderDir) { if(isset($_POST["dropfolderfileform1"]) && $_POST["dropfolderfileform1"]) { - $fullfile = $settings->_dropFolderDir.'/'.$user->getLogin().'/'.$folder->getID().'/'.$_POST["dropfolderfileform1"]; + $fullfile = $settings->_dropFolderDir.'/'.$user->getLogin().'/'.$_POST["dropfolderfileform1"]; if(file_exists($fullfile)) { $docsource = 'dropfolder'; /* Check if a local file is uploaded as well */ From 514bdb88da04735898be861a1b97f594eac17656 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 28 Jun 2019 08:46:31 +0200 Subject: [PATCH 083/467] add entry for 5.1.12 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index c99630053..74cb88546 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,7 @@ - search result can be sorted by name, date (ascending or descending) - do not check for Log.php during installation anymore, it's part of the vendor directory anyway +- fix uploading documents from drop folder -------------------------------------------------------------------------------- Changes in version 5.1.11 From c17bd81148f139cd0d2409edad918bbfbaae3f6e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 28 Jun 2019 10:46:20 +0200 Subject: [PATCH 084/467] replace placeholders in email header and footer --- CHANGELOG | 1 + inc/inc.ClassEmailNotify.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 74cb88546..96d3fa299 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,7 @@ - do not check for Log.php during installation anymore, it's part of the vendor directory anyway - fix uploading documents from drop folder +- replace placeholders in email body header and footer -------------------------------------------------------------------------------- Changes in version 5.1.11 diff --git a/inc/inc.ClassEmailNotify.php b/inc/inc.ClassEmailNotify.php index 62f1ddfa7..d96a64aa4 100644 --- a/inc/inc.ClassEmailNotify.php +++ b/inc/inc.ClassEmailNotify.php @@ -106,8 +106,8 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify { } - $message = getMLText("email_header", array(), "", $lang)."\r\n\r\n".getMLText($message, $params, "", $lang); - $message .= "\r\n\r\n".getMLText("email_footer", array(), "", $lang); + $message = getMLText("email_header", $params, "", $lang)."\r\n\r\n".getMLText($message, $params, "", $lang); + $message .= "\r\n\r\n".getMLText("email_footer", $params, "", $lang); $headers = array (); $headers['From'] = $from; From 6f2fb3e6467f1215d1e3a1c5eb7f2786bf2e14dd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 28 Jun 2019 11:02:10 +0200 Subject: [PATCH 085/467] fix possible xss --- views/bootstrap/class.ViewDocument.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 413f2c775..eea44db3d 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -705,10 +705,10 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { echo ""; foreach($statuslog as $entry) { if($suser = $dms->getUser($entry['userID'])) - $fullname = $suser->getFullName(); + $fullname = htmlspecialchars($suser->getFullName()); else $fullname = "--"; - echo "".$entry['date']."".getOverallStatusText($entry['status'])."".$fullname."".$entry['comment']."\n"; + echo "".$entry['date']."".getOverallStatusText($entry['status'])."".$fullname."".htmlspecialchars($entry['comment'])."\n"; } print "\n\n"; $this->contentContainerEnd(); @@ -725,8 +725,8 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { echo "".$wkflog->getDate().""; echo "".$wkflog->getTransition()->getAction()->getName().""; $loguser = $wkflog->getUser(); - echo "".$loguser->getFullName().""; - echo "".$wkflog->getComment().""; + echo "".htmlspecialchars($loguser->getFullName()).""; + echo "".htmlspecialchars($wkflog->getComment()).""; echo ""; } print "\n\n"; From 1a5a1f3ecb3e3e799c1024c82390f6fc14fad284 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 28 Jun 2019 11:03:27 +0200 Subject: [PATCH 086/467] add not for 5.1.12 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 96d3fa299..d5f949d2e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ -------------------------------------------------------------------------------- - fix for CVE-2019-12932 (Persistent or Stored XSS), excaping the search result in the autocompletion search form placed in the header +- fix more XSS problems on ViewDocument page - folder/document list can be sorted by name, date, sequence (ascending or descending) - search result can be sorted by name, date (ascending or descending) - do not check for Log.php during installation anymore, it's part of the From 3d9e752694d1a0caea16a9255c13d77d7720a401 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 09:56:19 +0200 Subject: [PATCH 087/467] new optional parameter $attachments for toIndividual() --- inc/inc.ClassEmailNotify.php | 37 ++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/inc/inc.ClassEmailNotify.php b/inc/inc.ClassEmailNotify.php index d96a64aa4..b6651b460 100644 --- a/inc/inc.ClassEmailNotify.php +++ b/inc/inc.ClassEmailNotify.php @@ -76,9 +76,10 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify { * @param string $message key of string containing the body of the mail * @param array $params list of parameters which replaces placeholder in * the subject and body + * @param array $attachments list of attachments * @return false or -1 in case of error, otherwise true */ - function toIndividual($sender, $recipient, $subject, $message, $params=array()) { /* {{{ */ + function toIndividual($sender, $recipient, $subject, $message, $params=array(), $attachments=array()) { /* {{{ */ if(is_object($recipient) && !strcasecmp(get_class($recipient), $this->_dms->getClassname('user')) && !$recipient->isDisabled() && $recipient->getEmail()!="") { $to = $recipient->getEmail(); $lang = $recipient->getLanguage(); @@ -109,6 +110,32 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify { $message = getMLText("email_header", $params, "", $lang)."\r\n\r\n".getMLText($message, $params, "", $lang); $message .= "\r\n\r\n".getMLText("email_footer", $params, "", $lang); + $mime = new Mail_mime(array('eol' => "\n")); + + $mime->setTXTBody($message); +// $mime->setHTMLBody($bodyhtml); + + if($attachments) { + foreach($attachments as $attachment) { + if(!$mime->addAttachment( + $attachment['file'], + $attachment['mimetype'], + isset($attachment['name']) ? $attachment['name'] : '', + isset($attachment['isfile']) ? $attachment['isfile'] : true + )) { + return false; + } + } + } + + $message = $mime->get(array( + 'text_encoding'=>'8bit', + 'html_encoding'=>'8bit', + 'head_charset'=>'utf-8', + 'text_charset'=>'utf-8', + 'html_charset'=>'utf-8' + )); + $headers = array (); $headers['From'] = $from; if($returnpath) @@ -119,7 +146,9 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify { $headers['Subject'] = substr($encoded_subject, strlen('Subject: ')); $headers['Date'] = date('r', time()); $headers['MIME-Version'] = "1.0"; - $headers['Content-type'] = "text/plain; charset=utf-8"; +// $headers['Content-type'] = "text/plain; charset=utf-8"; + + $hdrs = $mime->headers($headers); $mail_params = array(); if($this->smtp_server) { @@ -146,13 +175,13 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify { if (isset($GLOBALS['SEEDDMS_HOOKS']['mailqueue'])) { foreach($GLOBALS['SEEDDMS_HOOKS']['mailqueue'] as $queueService) { if(method_exists($queueService, 'queueMailJob')) { - $ret = $queueService->queueMailJob($mail_params, $to, $headers, getMLText($subject, $params, "", $lang), $message); + $ret = $queueService->queueMailJob($mail_params, $to, $hdrs, getMLText($subject, $params, "", $lang), $message); if($ret !== null) return $ret; } } } - $result = $mail->send($to, $headers, $message); + $result = $mail->send($to, $hdrs, $message); if (PEAR::isError($result)) { return false; } else { From 164282cfb9db1c19f3a08935625197258f3be647 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 10:46:27 +0200 Subject: [PATCH 088/467] add new method hasSubFolderByName(), fix hasDocumetByName() hasDocumetByName() returned a positiv integer if documents of the folder has been loaded before. --- SeedDMS_Core/Core/inc.ClassFolder.php | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassFolder.php b/SeedDMS_Core/Core/inc.ClassFolder.php index 59dac88d4..29ce71b10 100644 --- a/SeedDMS_Core/Core/inc.ClassFolder.php +++ b/SeedDMS_Core/Core/inc.ClassFolder.php @@ -520,6 +520,26 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { return $resArr[0]['c']; } /* }}} */ + /** + * Check if folder has as subfolder with given name + * + * @param string $name + * @return bool true if subfolder exists, false if not or in case + * of an error + */ + function hasSubFolderByName($name) { /* {{{ */ + $db = $this->_dms->getDB(); + /* Always check the database instead of iterating over $this->_documents, because + * it is probably not slower + */ + $queryStr = "SELECT count(*) as c FROM `tblFolders` WHERE `parent` = " . $this->_id . " AND `name` = ".$db->qstr($name); + $resArr = $db->getResultArray($queryStr); + if (is_bool($resArr) && !$resArr) + return false; + + return ($resArr[0]['c'] > 0); + } /* }}} */ + /** * Returns a list of subfolders * This function does not check for access rights. Use @@ -713,10 +733,9 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { */ function hasDocumentByName($name) { /* {{{ */ $db = $this->_dms->getDB(); - if (isset($this->_documents)) { - /** @noinspection PhpUndefinedFieldInspection */ /** @todo not $this->_documents? */ - return count($this->documents); - } + /* Always check the database instead of iterating over $this->_documents, because + * it is probably not slower + */ $queryStr = "SELECT count(*) as c FROM `tblDocuments` WHERE `folder` = " . $this->_id . " AND `name` = ".$db->qstr($name); $resArr = $db->getResultArray($queryStr); if (is_bool($resArr) && !$resArr) From e9d5381aa659051794a6966ff8373143a006f2ed Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 10:47:42 +0200 Subject: [PATCH 089/467] more notes for 5.1.12, update release date --- SeedDMS_Core/package.xml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index 440f1c507..98564e69b 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -12,7 +12,7 @@ uwe@steinmann.cx yes - 2019-06-26 + 2019-07-01 5.1.12 @@ -24,8 +24,11 @@ GPL License - - parameter $orderby passed to SeedDMS_Core_Folder::getDocuments() and SeedDMS_Core_Folder::getSubFolders() can be a string, but only the first char is evaluated - - SeedDMS_Core_DMS::search() excepts parameters as array, added orderby +- parameter $orderby passed to SeedDMS_Core_Folder::getDocuments() and SeedDMS_Core_Folder::getSubFolders() can be a string, but only the first char is evaluated +- SeedDMS_Core_DMS::search() excepts parameters as array, added orderby +- add SeedDMS_Core_Folder::hasSubFolderByName() +- fix SeedDMS_Core_Folder::hasDocumentByName() which returned an int > 0 if documents + has been loaded before and even if the document searching for was not among them.

      From 24a83e8f276786c4b2dde681c87b5a20b81b27d3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 10:48:12 +0200 Subject: [PATCH 090/467] more changes in 5.1.12 --- CHANGELOG | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index d5f949d2e..2ad3f9eb4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,6 +10,10 @@ vendor directory anyway - fix uploading documents from drop folder - replace placeholders in email body header and footer +- SeedDMS_EmailNotify::toIndividual() can send attachments +- fix for searching a document with the same name, which sometimes found a duplicate + name even if it didn't exist +- add config option for checking of duplicate subfolder names in the same folder -------------------------------------------------------------------------------- Changes in version 5.1.11 From b1a895fb27a7b5bb7fbc2c9221fe649eecdeb9d4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 10:50:40 +0200 Subject: [PATCH 091/467] new config options for disallowing duplicate subfolder names --- conf/settings.xml.template | 2 ++ inc/inc.ClassSettings.php | 4 ++++ op/op.Settings.php | 1 + views/bootstrap/class.Settings.php | 1 + 4 files changed, 8 insertions(+) diff --git a/conf/settings.xml.template b/conf/settings.xml.template index 452c847fe..bc69afe77 100644 --- a/conf/settings.xml.template +++ b/conf/settings.xml.template @@ -248,6 +248,7 @@ - enableVersionDeletion: allow to delete versions after approval - enableVersionModification: allow to modify versions after approval - enableDuplicateDocNames: allow duplicate names in a folder + - enableDuplicateSubFolderNames: allow duplicate names in a folder - enableOwnerRevApp: XXX - enableSelfRevApp: XXX - presetExpirationDate: XXX @@ -260,6 +261,7 @@ enableVersionDeletion = "true" enableVersionModification = "true" enableDuplicateDocNames = "true" + enableDuplicateSubFolderNames = "true" enableOwnerRevApp = "false" enableSelfRevApp = "false" presetExpirationDate = "" diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index bb86e9bd5..6eb59977d 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -147,6 +147,8 @@ class Settings { /* {{{ */ var $_enableVersionModification = false; // enable/disable duplicate names of a document in a folder var $_enableDuplicateDocNames = true; + // enable/disable duplicate names of a subfolder in a folder + var $_enableDuplicateSubFolderNames = true; // override mimetype set by browser when uploading a file var $_overrideMimeType = false; // enable/disable notification when added as a reviewer/approver @@ -652,6 +654,7 @@ class Settings { /* {{{ */ $this->_enableVersionDeletion = Settings::boolval($tab["enableVersionDeletion"]); $this->_enableVersionModification = Settings::boolval($tab["enableVersionModification"]); $this->_enableDuplicateDocNames = Settings::boolval($tab["enableDuplicateDocNames"]); + $this->_enableDuplicateSubFolderNames = Settings::boolval($tab["enableDuplicateSubFolderNames"]); $this->_overrideMimeType = Settings::boolval($tab["overrideMimeType"]); $this->_removeFromDropFolder = Settings::boolval($tab["removeFromDropFolder"]); } @@ -965,6 +968,7 @@ class Settings { /* {{{ */ $this->setXMLAttributValue($node, "enableVersionDeletion", $this->_enableVersionDeletion); $this->setXMLAttributValue($node, "enableVersionModification", $this->_enableVersionModification); $this->setXMLAttributValue($node, "enableDuplicateDocNames", $this->_enableDuplicateDocNames); + $this->setXMLAttributValue($node, "enableDuplicateSubFolderNames", $this->_enableDuplicateSubFolderNames); $this->setXMLAttributValue($node, "overrideMimeType", $this->_overrideMimeType); $this->setXMLAttributValue($node, "removeFromDropFolder", $this->_removeFromDropFolder); diff --git a/op/op.Settings.php b/op/op.Settings.php index d02deff6d..b02ee237c 100644 --- a/op/op.Settings.php +++ b/op/op.Settings.php @@ -186,6 +186,7 @@ if ($action == "saveSettings") $settings->_enableVersionDeletion = getBoolValue("enableVersionDeletion"); $settings->_enableVersionModification = getBoolValue("enableVersionModification"); $settings->_enableDuplicateDocNames = getBoolValue("enableDuplicateDocNames"); + $settings->_enableDuplicateSubFolderNames = getBoolValue("enableDuplicateSubFolderNames"); $settings->_overrideMimeType = getBoolValue("overrideMimeType"); $settings->_removeFromDropFolder = getBoolValue("removeFromDropFolder"); diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 27ea716b2..c627bf913 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -430,6 +430,7 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); showConfigCheckbox('settings_enableVersionDeletion', 'enableVersionDeletion'); ?> showConfigCheckbox('settings_enableVersionModification', 'enableVersionModification'); ?> showConfigCheckbox('settings_enableDuplicateDocNames', 'enableDuplicateDocNames'); ?> +showConfigCheckbox('settings_enableDuplicateSubFolderNames', 'enableDuplicateSubFolderNames'); ?> showConfigCheckbox('settings_overrideMimeType', 'overrideMimeType'); ?> showConfigCheckbox('settings_removeFromDropFolder', 'removeFromDropFolder'); ?> From ad86df5fc54ba014f14b262b730efc515e6b5e69 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 11:48:53 +0200 Subject: [PATCH 092/467] check for duplicate folder names --- op/op.AddSubFolder.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/op/op.AddSubFolder.php b/op/op.AddSubFolder.php index 344fa3723..3d3d42019 100644 --- a/op/op.AddSubFolder.php +++ b/op/op.AddSubFolder.php @@ -99,6 +99,13 @@ if(!empty($_POST['notification_groups'])) { } } +/* Check if name already exists in the folder */ +if(!$settings->_enableDuplicateSubFolderNames) { + if($folder->hasSubFolderByName($name)) { + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("subfolder_duplicate_name")); + } +} + $controller->setParam('folder', $folder); $controller->setParam('name', $name); $controller->setParam('comment', $comment); From 38413b671f193e48141e16ea39cd566796486034 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 11:49:17 +0200 Subject: [PATCH 093/467] added check for duplicate folder and document names if turned on --- restapi/index.php | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/restapi/index.php b/restapi/index.php index d4e2afa91..7efc667bc 100644 --- a/restapi/index.php +++ b/restapi/index.php @@ -374,7 +374,7 @@ function getFolderChildren($request, $response, $args) { /* {{{ */ } /* }}} */ function createFolder($request, $response, $args) { /* {{{ */ - global $dms, $userobj; + global $dms, $userobj, $settings; if(!$userobj) { return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); @@ -410,6 +410,12 @@ function createFolder($request, $response, $args) { /* {{{ */ } } } + /* Check if name already exists in the folder */ + if(!$settings->_enableDuplicateSubFolderNames) { + if($folder->hasSubFolderByName($params['name'])) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("subfolder_duplicate_name"), 'data'=>''), 400); + } + } if($folder = $parent->addSubFolder($params['name'], $comment, $userobj, $sequence, $newattrs)) { $rec = __getFolderData($folder); @@ -506,7 +512,7 @@ function deleteFolder($request, $response, $args) { /* {{{ */ } /* }}} */ function uploadDocument($request, $response, $args) { /* {{{ */ - global $dms, $userobj; + global $dms, $userobj, $settings; if(!$userobj) { return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); @@ -571,6 +577,12 @@ function uploadDocument($request, $response, $args) { /* {{{ */ $origfilename = $file_info->getClientFilename(); if (trim($docname) == '') $docname = $origfilename; + /* Check if name already exists in the folder */ + if(!$settings->_enableDuplicateDocNames) { + if($mfolder->hasDocumentByName($docname)) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("document_duplicate_name"), 'data'=>''), 400); + } + } $temp = $file_info->file; $finfo = finfo_open(FILEINFO_MIME_TYPE); $userfiletype = finfo_file($finfo, $temp); @@ -662,7 +674,7 @@ function updateDocument($request, $response, $args) { /* {{{ */ * Old upload method which uses put instead of post */ function uploadDocumentPut($request, $response, $args) { /* {{{ */ - global $dms, $userobj; + global $dms, $userobj, $settings; if(!$userobj) { return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403); @@ -687,6 +699,12 @@ function uploadDocumentPut($request, $response, $args) { /* {{{ */ $userfiletype = finfo_file($finfo, $temp); $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); finfo_close($finfo); + /* Check if name already exists in the folder */ + if(!$settings->_enableDuplicateDocNames) { + if($mfolder->hasDocumentByName($docname)) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("document_duplicate_name"), 'data'=>''), 400); + } + } $res = $mfolder->addDocument($docname, '', 0, $userobj, '', array(), $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, 0); unlink($temp); if($res) { From 4b9da8d495569f679f8973c8ab1b458e1204e730 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 11:50:10 +0200 Subject: [PATCH 094/467] add entry for 5.1.12 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 2ad3f9eb4..e87223075 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -14,6 +14,7 @@ - fix for searching a document with the same name, which sometimes found a duplicate name even if it didn't exist - add config option for checking of duplicate subfolder names in the same folder +- rest api also checks for duplicate folder/document names if turned on -------------------------------------------------------------------------------- Changes in version 5.1.11 From b4b2bd45e4ccffa45c6de10f21f60d669c5c7311 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 11:52:08 +0200 Subject: [PATCH 095/467] - add new translations --- languages/ar_EG/lang.inc | 3 +++ languages/bg_BG/lang.inc | 3 +++ languages/ca_ES/lang.inc | 3 +++ languages/cs_CZ/lang.inc | 3 +++ languages/de_DE/lang.inc | 5 ++++- languages/el_GR/lang.inc | 3 +++ languages/en_GB/lang.inc | 5 ++++- languages/es_ES/lang.inc | 3 +++ languages/fr_FR/lang.inc | 3 +++ languages/hr_HR/lang.inc | 3 +++ languages/hu_HU/lang.inc | 3 +++ languages/it_IT/lang.inc | 3 +++ languages/ko_KR/lang.inc | 3 +++ languages/lo_LA/lang.inc | 3 +++ languages/nl_NL/lang.inc | 3 +++ languages/pl_PL/lang.inc | 3 +++ languages/pt_BR/lang.inc | 3 +++ languages/ro_RO/lang.inc | 3 +++ languages/ru_RU/lang.inc | 3 +++ languages/sk_SK/lang.inc | 3 +++ languages/sv_SE/lang.inc | 3 +++ languages/tr_TR/lang.inc | 3 +++ languages/uk_UA/lang.inc | 3 +++ languages/zh_CN/lang.inc | 3 +++ languages/zh_TW/lang.inc | 3 +++ 25 files changed, 77 insertions(+), 2 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index 3bc07dbf9..de0f06586 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -1231,6 +1231,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => '', 'settings_enableDuplicateDocNames' => '', 'settings_enableDuplicateDocNames_desc' => 'Allows to have duplicate document names in a folder.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => '', 'settings_enableEmail_desc' => 'Enable/disable automatic email notification', 'settings_enableFilterReceipt' => '', @@ -1595,6 +1597,7 @@ URL: [url]', 'status_revisor_removed' => '', 'status_unknown' => 'مجهول', 'storage_size' => 'حجم التخزين', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'ادخال موافقة', 'submit_login' => 'تسجيل الدخول', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index d45eeed24..63ee88dac 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -1094,6 +1094,8 @@ $text = array( 'settings_enableDropUpload_desc' => '', 'settings_enableDuplicateDocNames' => 'Разреши еднакви имена на документи', 'settings_enableDuplicateDocNames_desc' => 'Разрешава да има еднакви имена на документи в папката.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Включи E-mail', 'settings_enableEmail_desc' => 'Включване/изключване автоматично уведомяване по email', 'settings_enableFilterReceipt' => '', @@ -1458,6 +1460,7 @@ $text = array( 'status_revisor_removed' => '', 'status_unknown' => 'Неизвестен', 'storage_size' => 'Размер на хранилището', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'Утвърди', 'submit_login' => 'Влез', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 309829143..5a6b43e65 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -1099,6 +1099,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => '', 'settings_enableDuplicateDocNames' => '', 'settings_enableDuplicateDocNames_desc' => '', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Enable E-mail', 'settings_enableEmail_desc' => '', 'settings_enableFilterReceipt' => '', @@ -1463,6 +1465,7 @@ URL: [url]', 'status_revisor_removed' => '', 'status_unknown' => 'Desconegut', 'storage_size' => 'Storage size', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'Enviar aprovació', 'submit_login' => 'Connectat', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 91524456f..6401ace3c 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -1310,6 +1310,8 @@ Jméno: [username] 'settings_enableDropUpload_desc' => 'Povolit / zakázat pokládácí prostor na stránce \'Zobrazení složek\' pro upload souborů pomocí Drag&Drop.', 'settings_enableDuplicateDocNames' => 'Povolit duplicitu názvů dokumentů', 'settings_enableDuplicateDocNames_desc' => 'Povolit duplicitu názvů dokumentů ve složce', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Zapnout E-mail', 'settings_enableEmail_desc' => 'Zapne / Vypne automatická e-mailová upozornění', 'settings_enableFilterReceipt' => 'Filtrování vlastníka, recenzenta, ... ze seznamu přijetí', @@ -1674,6 +1676,7 @@ Jméno: [username] 'status_revisor_removed' => 'Kontrolor odstraněn ze seznamu', 'status_unknown' => 'Neznámý', 'storage_size' => 'Velikost úložiště', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => 'Poslán tajný kód', 'submit_approval' => 'Poslat ke schválení', 'submit_login' => 'Přihlásit se', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 80bf7e43c..f2eef087d 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 (2684), dgrutsch (22) +// Translators: Admin (2687), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -1320,6 +1320,8 @@ Name: [username] 'settings_enableDropUpload_desc' => 'Ein/Ausschalten des Bereichs auf der \'View Folder\' Seite zum Hochladen von Dateien per Drag&Drop.', 'settings_enableDuplicateDocNames' => 'Erlaube doppelte Dokumentennamen', 'settings_enableDuplicateDocNames_desc' => 'Erlaube doppelte Dokumentennamen in einem Ordner.', +'settings_enableDuplicateSubFolderNames' => 'Erlaube doppelte Namen von Unterordnern', +'settings_enableDuplicateSubFolderNames_desc' => 'Erlaube doppelte Namen von Unterordnern in einem Ordner.', 'settings_enableEmail' => 'E-Mail aktivieren', 'settings_enableEmail_desc' => 'Automatische E-Mail-Benachrichtigung ein-/ausschalten', 'settings_enableFilterReceipt' => 'Besitzer, Prüfer, ... aus Empfängerliste filtern', @@ -1684,6 +1686,7 @@ Name: [username] 'status_revisor_removed' => 'Wiederholungsprüfer von Liste entfernt', 'status_unknown' => 'unbekannt', 'storage_size' => 'Speicherverbrauch', +'subfolder_duplicate_name' => 'Doppelter Unterordnername', 'submit_2_fact_auth' => 'Schlüssel speichern', 'submit_approval' => 'Freigabe hinzufügen', 'submit_login' => 'Anmelden', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index 06ffbc37f..b1484434b 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -1105,6 +1105,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => '', 'settings_enableDuplicateDocNames' => '', 'settings_enableDuplicateDocNames_desc' => '', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => '', 'settings_enableEmail_desc' => '', 'settings_enableFilterReceipt' => '', @@ -1469,6 +1471,7 @@ URL: [url]', 'status_revisor_removed' => '', 'status_unknown' => '', 'storage_size' => '', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => '', 'submit_login' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 97afa0ed0..566640a01 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 (1776), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1779), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -1315,6 +1315,8 @@ Name: [username] 'settings_enableDropUpload_desc' => 'Enable/Disable the drop area on the \'View Folder\' page for uploading files by Drag&Drop.', 'settings_enableDuplicateDocNames' => 'Allow duplicate document names', 'settings_enableDuplicateDocNames_desc' => 'Allows to have duplicate document names in a folder.', +'settings_enableDuplicateSubFolderNames' => 'Allow duplicat subfolder names', +'settings_enableDuplicateSubFolderNames_desc' => 'Allows to have duplicate subfolder names in a folder.', 'settings_enableEmail' => 'Enable E-mail', 'settings_enableEmail_desc' => 'Enable/disable automatic email notification', 'settings_enableFilterReceipt' => 'Filter out owner, reviewer, ... from reception list', @@ -1679,6 +1681,7 @@ Name: [username] 'status_revisor_removed' => 'Revisor removed from list', 'status_unknown' => 'Unknown', 'storage_size' => 'Storage size', +'subfolder_duplicate_name' => 'Duplicate subfolder name', 'submit_2_fact_auth' => 'Save secret', 'submit_approval' => 'Submit approval', 'submit_login' => 'Sign in', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 1da58b4d7..84c9dcca7 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -1246,6 +1246,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => 'Habilite/Deshabilite el área de drop en la pagina \'\'Ver folder\' para subir archivos por Drag&Drop', 'settings_enableDuplicateDocNames' => 'Permite tener nombres de documento duplicados', 'settings_enableDuplicateDocNames_desc' => 'Permite tener un nombre de documento duplicado en una carpeta.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Habilitar E-mail', 'settings_enableEmail_desc' => 'Habilitar/Deshabilitar notificación automática por correo electrónico', 'settings_enableFilterReceipt' => '', @@ -1610,6 +1612,7 @@ URL: [url]', 'status_revisor_removed' => '', 'status_unknown' => 'Desconocido', 'storage_size' => 'Tamaño de almacenamiento', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'Enviar aprobación', 'submit_login' => 'Conectar', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 4b15cc841..3c5a8a1bc 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -1299,6 +1299,8 @@ Nom : [username] 'settings_enableDropUpload_desc' => 'Active/désactive la zone de glisser-déposer sur la page d’un dossier afin d’y déposer des fichiers.', 'settings_enableDuplicateDocNames' => 'Autoriser plusieurs documents de même nom', 'settings_enableDuplicateDocNames_desc' => 'Autorise plusieurs documents de même nom dans un même dossier.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'E-mails', 'settings_enableEmail_desc' => 'Active/désactive la notification automatique par e-mail', 'settings_enableFilterReceipt' => '', @@ -1663,6 +1665,7 @@ Nom : [username] 'status_revisor_removed' => 'Réviseur retiré de la liste', 'status_unknown' => 'Inconnu', 'storage_size' => 'Taille occupée', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => 'Enregistrer la clé secrète', 'submit_approval' => 'Soumettre approbation', 'submit_login' => 'Connexion', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 4190c14e5..372269121 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -1267,6 +1267,8 @@ Internet poveznica: [url]', 'settings_enableDropUpload_desc' => 'Omogući/onemogući prostor za ubacivanje na \'Vidi mapu\' stranici za učitavanje datoteka "Povuci i ispusti" postupkom.', 'settings_enableDuplicateDocNames' => 'Omogući dvostruke nazive dokumenata', 'settings_enableDuplicateDocNames_desc' => 'Omogućuje da u mapi imate dvostruke nazive dokumenata.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Omogući E-mail', 'settings_enableEmail_desc' => 'Omogući/onemogući automatsku email obavijest', 'settings_enableFilterReceipt' => '', @@ -1631,6 +1633,7 @@ Internet poveznica: [url]', 'status_revisor_removed' => 'Revizor uklonjen s liste', 'status_unknown' => 'Nepoznato', 'storage_size' => 'Veličina pohrane', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'Pošaljite odobrenje', 'submit_login' => 'PRIJAVI SE', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 5b69cc8cb..b22819603 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -1245,6 +1245,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => 'Be/Ki kapcsolja a \'Mappa nézet\' oldalon a fogd és vidd feltöltéshez tartozó területetet', 'settings_enableDuplicateDocNames' => 'Azonos dokumentum név engedélyezése', 'settings_enableDuplicateDocNames_desc' => 'Engedélyezi az azonos dokumentum neveket egy mappában.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Email engedélyezése', 'settings_enableEmail_desc' => 'Engedélyezi/tiltja az automatikus email értesítést', 'settings_enableFilterReceipt' => '', @@ -1609,6 +1611,7 @@ URL: [url]', 'status_revisor_removed' => '', 'status_unknown' => 'Ismeretlen', 'storage_size' => 'Tároló mérete', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'Jóváhagyás küldése', 'submit_login' => 'Bejelentkezés', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 4501bfd90..7b5b8398b 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -1279,6 +1279,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => 'Abilita/disabilita l\'area di rilascio nella pagina \'Vista cartella\' per caricare i files con drag&drop (trascina e rilascia).', 'settings_enableDuplicateDocNames' => 'Permetti documenti con lo stesso nome', 'settings_enableDuplicateDocNames_desc' => 'Permetti documenti con lo stesso nome nella stessa cartella', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Abilita l\'email', 'settings_enableEmail_desc' => 'Abilita/disabilita la notifica automatica via email', 'settings_enableFilterReceipt' => '', @@ -1643,6 +1645,7 @@ URL: [url]', 'status_revisor_removed' => 'Revisore rimosso dalla lista', 'status_unknown' => 'Sconosciuto', 'storage_size' => 'Spazio di archiviazione', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => 'Salva segreto', 'submit_approval' => 'Invio approvazione', 'submit_login' => 'Accedi', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index e6ef93bd8..b97af1366 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -1261,6 +1261,8 @@ URL : [url]', 'settings_enableDropUpload_desc' => 'Drag&Drop하여 파일을 업로드할 \'View_Folder\' 페이지의 드롭 영역을 활성/비활설 한다.', 'settings_enableDuplicateDocNames' => '중복 된 문서명 허용', 'settings_enableDuplicateDocNames_desc' => '이 폴더에 중복 된 문서명을 가질 수 있습니다.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => '전자 메일 사용', 'settings_enableEmail_desc' => '자동화 전자우편 알림 활성화/비활성화', 'settings_enableFilterReceipt' => '', @@ -1625,6 +1627,7 @@ URL : [url]', 'status_revisor_removed' => '감사자 목록에서 제거', 'status_unknown' => '알 수없는', 'storage_size' => '저장 크기', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => '승인 제출', 'submit_login' => '로그인', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index 0f05286c1..ca3f4c8b5 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -1294,6 +1294,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => 'ເປີດ/ປິດ ໄຊ້ໜ້າຕ່າງພື້ນທີ່ວ່າງ ວິວໂຟລເດີ ເພື່ອອັບໂຫລດໄຟລໂດຍລາກ ແລະວາງ', 'settings_enableDuplicateDocNames' => 'ອະນຸຍາດໃຫ້ໄຊ້ເອກະສານຊໍ້າກັນ', 'settings_enableDuplicateDocNames_desc' => 'ອະນຸຍາດໃຫ້ມີເອກະສານຊໍ້າໃນໂຟລເດີ', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'ເປີດໄຊ້ອີເມວ', 'settings_enableEmail_desc' => 'ເປີດ/ປິດໄຊ້ງານການແຈ້ງເຕືອນທາງອີເມວໂດຍອັດຕະໂນມັດ', 'settings_enableFilterReceipt' => '', @@ -1658,6 +1660,7 @@ URL: [url]', 'status_revisor_removed' => 'ແກ້ໄຂຄຳອະທິບາຍອອກຈາກລາຍການ', 'status_unknown' => 'ບໍ່ຮູ້', 'storage_size' => 'ຂະໜາດພື້ນທີ່ເກັບຂໍ້ມູນ', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => 'ເກັບຄວາມລັບໄວ້', 'submit_approval' => 'ສະເໜີການອະນຸມັດ', 'submit_login' => 'ລົງຊື່ເຂົາໄຊ້', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index bafc1b108..8afaebd4a 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -1291,6 +1291,8 @@ Name: [username] 'settings_enableDropUpload_desc' => 'Aanzetten DropUpload', 'settings_enableDuplicateDocNames' => 'Sta duplicaten van documentnamen toe', 'settings_enableDuplicateDocNames_desc' => 'Staat het toe om documentnamen te dupliceren in een folder.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'E-mail inschakelen', 'settings_enableEmail_desc' => 'Inschakelen/uitschakelen automatische email notificatie', 'settings_enableFilterReceipt' => '', @@ -1655,6 +1657,7 @@ Name: [username] 'status_revisor_removed' => 'Verwijderd', 'status_unknown' => 'Onbekend', 'storage_size' => 'Omvang opslag', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '2-factor-authentificatie verstuurd', 'submit_approval' => 'Verzend [Goedkeuring]', 'submit_login' => 'Log in', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 3db61e362..cb01e0cab 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -1225,6 +1225,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => '', 'settings_enableDuplicateDocNames' => 'Zezwalaj na zduplikowane nazwy dokumentów', 'settings_enableDuplicateDocNames_desc' => 'Zezwala na tworzenie w folderze dokumentów o tej samej nazwie.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Włącz powiadomienia e-mail', 'settings_enableEmail_desc' => 'Włącz/Wyłącz automatyczne powiadomienia drogą mailową', 'settings_enableFilterReceipt' => '', @@ -1589,6 +1591,7 @@ URL: [url]', 'status_revisor_removed' => '', 'status_unknown' => 'Nieznany', 'storage_size' => 'Zajętość dysku', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'Zaakceptuj', 'submit_login' => 'Zaloguj się', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 4161bfc18..5353a5484 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -1313,6 +1313,8 @@ Nome: [username] 'settings_enableDropUpload_desc' => 'Habilitar / Desabilitar a área na página \'Vista de Pastas\' para upload de arquivos por Arrastar e Soltar.', 'settings_enableDuplicateDocNames' => 'Permitir nomes duplicados de documento', 'settings_enableDuplicateDocNames_desc' => 'Permite ter nomes de documentos duplicados em uma pasta.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Ativar E-mail', 'settings_enableEmail_desc' => 'Ativar/desativar a notificação de e-mail automático', 'settings_enableFilterReceipt' => 'Filtrar dono, revisor, ... da lista de recepção', @@ -1677,6 +1679,7 @@ Nome: [username] 'status_revisor_removed' => 'Revisor removido da lista', 'status_unknown' => 'Desconhecido', 'storage_size' => 'Tamanho de armazenamento', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => 'Salvar segredo', 'submit_approval' => 'Enviar aprovação', 'submit_login' => 'Entrar', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index 0ea5e8553..57ce5aa47 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -1268,6 +1268,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => 'Activare/dezactivare zona de plasare (drop area) în pagina \'Vizualizare Folder\' pentru încarcarea fisierelor folosind Drag&Drop.', 'settings_enableDuplicateDocNames' => 'Permiteți nume de documente duplicate', 'settings_enableDuplicateDocNames_desc' => 'Permiteți sa existe nume de documente duplicate într-un fisier.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Activare E-mail', 'settings_enableEmail_desc' => 'Activare/dezactivare notificari automare prin e-mail', 'settings_enableFilterReceipt' => '', @@ -1632,6 +1634,7 @@ URL: [url]', 'status_revisor_removed' => 'Revizuitor eliminat din lista', 'status_unknown' => 'Necunoscut', 'storage_size' => 'Dimensiunea de stocare', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'Trimite aprobare', 'submit_login' => 'Sign in', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 39cb89aca..97dda2ad0 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -1275,6 +1275,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => 'Включить/отключить область в "Просмотр папки" для загрузки при помощи Drag&Drop.', 'settings_enableDuplicateDocNames' => 'Разрешить документы
      с одинаковым названием', 'settings_enableDuplicateDocNames_desc' => 'Разрешить документы с одинаковым названием в каталоге.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Включить e-mail', 'settings_enableEmail_desc' => 'Включить/отключить автоматическое уведомление по e-mail.', 'settings_enableFilterReceipt' => '', @@ -1639,6 +1641,7 @@ URL: [url]', 'status_revisor_removed' => 'Ревизор удален из списка', 'status_unknown' => 'Неизвестный', 'storage_size' => 'Размер хранилища', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'Утвердить', 'submit_login' => 'Войти', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 5630c1c1a..b3eb847e6 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -1315,6 +1315,8 @@ Meno: [username] 'settings_enableDropUpload_desc' => 'Enable/Disable the drop area on the \'View Folder\' page for uploading files by Drag&Drop.', 'settings_enableDuplicateDocNames' => 'Povoliť duplicitné názvy dokumentov', 'settings_enableDuplicateDocNames_desc' => 'Povoliť duplicitné názvy dokumentov v zložke.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Povoliť e-mail', 'settings_enableEmail_desc' => 'Povoliť/zakázať automatickú emailovú notifikáciu', 'settings_enableFilterReceipt' => 'Filter out owner, reviewer, ... from reception list', @@ -1679,6 +1681,7 @@ Meno: [username] 'status_revisor_removed' => 'Revisor removed from list', 'status_unknown' => 'Neznámy', 'storage_size' => 'Objem dát', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => 'Save secret', 'submit_approval' => 'Poslať schválenie', 'submit_login' => 'Prihlásiť sa', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index fe7d0a1b5..c189879bf 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -1288,6 +1288,8 @@ Kommentar: [comment]', 'settings_enableDropUpload_desc' => 'Aktivera / avaktivera droppområdet på "Visa mapp" sidan för att ladda upp filer genom att dra och släppa.', 'settings_enableDuplicateDocNames' => 'Tillåter dubletter av dokumentnamn', 'settings_enableDuplicateDocNames_desc' => 'Tillåter att det finns dokument med samma namn i en mapp.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Använd e-postmeddelanden', 'settings_enableEmail_desc' => 'Aktivera/Inaktivera automatiska e-postmeddelanden', 'settings_enableFilterReceipt' => '', @@ -1652,6 +1654,7 @@ Kommentar: [comment]', 'status_revisor_removed' => 'Reviderare borttagen från listan', 'status_unknown' => 'Okänd', 'storage_size' => 'Lagringsstorlek', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => 'Spara hemlighet', 'submit_approval' => 'Skicka godkännande', 'submit_login' => 'Logga in', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 53b580478..19f357524 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -1247,6 +1247,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => '\'Klasör Görüntüle\' alanında dosyaları Sürükle&Bırak yöntemiyle yüklemek için sürükleme alanını etkinleştir/devredışı bırak', 'settings_enableDuplicateDocNames' => 'Mükerrer doküman isimlerine izin ver', 'settings_enableDuplicateDocNames_desc' => 'Bir klasör içinde aynı isimli dosyalara izin verir.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'E-Postayı Etkinleştir', 'settings_enableEmail_desc' => 'Otomatik e-posta bildirimlerini etkinleştir/devre dışı bırak', 'settings_enableFilterReceipt' => '', @@ -1611,6 +1613,7 @@ URL: [url]', 'status_revisor_removed' => '', 'status_unknown' => 'Bilinmeyen', 'storage_size' => 'Depo boyutu', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'Onay ver', 'submit_login' => 'Giriş', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 7baa2cefc..9a40ccf69 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -1268,6 +1268,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => 'Увімкнути/вимкнути область в "Перегляді каталогу" для завантаження за допомогою Drag&Drop.', 'settings_enableDuplicateDocNames' => 'Дозволити документи
      з однаковою назвою', 'settings_enableDuplicateDocNames_desc' => 'Дозволити документи з однаковими назвами в каталозі.', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Увімкнути e-mail', 'settings_enableEmail_desc' => 'Увімкнути/вимкнути автоматичне сповіщення по e-mail.', 'settings_enableFilterReceipt' => '', @@ -1632,6 +1634,7 @@ URL: [url]', 'status_revisor_removed' => 'Ревізора видалено зі списку', 'status_unknown' => 'Невідомий', 'storage_size' => 'Розмір сховища', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => 'Затвердити', 'submit_login' => 'Увійти', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 03bef725f..82e50fca2 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -1249,6 +1249,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => '', 'settings_enableDuplicateDocNames' => '允许重复的文件名', 'settings_enableDuplicateDocNames_desc' => '', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => '开启邮件', 'settings_enableEmail_desc' => '开启/关闭邮件自动提醒', 'settings_enableFilterReceipt' => '', @@ -1613,6 +1615,7 @@ URL: [url]', 'status_revisor_removed' => '', 'status_unknown' => '未知', 'storage_size' => '存储大小', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => '提交审核', 'submit_login' => '登录', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index c82622635..a8af9e3b4 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -1098,6 +1098,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => '', 'settings_enableDuplicateDocNames' => '允許重複的檔案名', 'settings_enableDuplicateDocNames_desc' => '', +'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => '', 'settings_enableEmail_desc' => '', 'settings_enableFilterReceipt' => '', @@ -1462,6 +1464,7 @@ URL: [url]', 'status_revisor_removed' => '', 'status_unknown' => '未知', 'storage_size' => '存儲大小', +'subfolder_duplicate_name' => '', 'submit_2_fact_auth' => '', 'submit_approval' => '提交審核', 'submit_login' => '登錄', From 536067200e7c2034ae61322ad509d8d1674ebf33 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 13:05:40 +0200 Subject: [PATCH 096/467] add method isDescendant() --- SeedDMS_Core/Core/inc.ClassDocument.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 6680f6d9d..51be6bb5f 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -519,6 +519,24 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ return true; } /* }}} */ + /** + * Check, if this document is below of a given folder + * + * @param object $folder parent folder + * @return boolean true if folder is a subfolder + */ + function isDescendant($folder) { /* {{{ */ + /* First check if the parent folder is folder looking for */ + if ($this->getFolder()->getID() == $folder->getID()) + return true; + /* Second, check for the parent folder of this document to be + * below the given folder + */ + if($this->getFolder()->isDescendant($folder)) + return true; + return false; + } /* }}} */ + /** * Return the parent folder of the document * From d18a3389bcc4da9637005db8b6363eccf046876a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 13:06:08 +0200 Subject: [PATCH 097/467] =?UTF-8?q?s=D1=96mplify=20and=20possibly=20fix=20?= =?UTF-8?q?method=20isDescendant()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SeedDMS_Core/Core/inc.ClassFolder.php | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassFolder.php b/SeedDMS_Core/Core/inc.ClassFolder.php index 29ce71b10..32b7a93e2 100644 --- a/SeedDMS_Core/Core/inc.ClassFolder.php +++ b/SeedDMS_Core/Core/inc.ClassFolder.php @@ -692,15 +692,11 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { * @return boolean true if folder is a subfolder */ function isDescendant($folder) { /* {{{ */ - if ($this->_parentID == $folder->getID()) - return true; - elseif (isset($this->_parentID)) { - $res = $this->getParent(); - if (!$res) return false; - - return $this->_parent->isDescendant($folder); - } else + if(!$this->getParent()) return false; + if($this->getParent()->getID() == $folder->getID()) + return true; + return $this->getParent()->isDescendant($folder); } /* }}} */ /** From 7fc98be1be830ba5d42d72e0d658e5747a938481 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 20:40:21 +0200 Subject: [PATCH 098/467] check for duplicate names if this is turn on in the settings --- op/op.MoveDocument.php | 7 +++++++ op/op.MoveFolder.php | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/op/op.MoveDocument.php b/op/op.MoveDocument.php index 87d42d120..21682eb3d 100644 --- a/op/op.MoveDocument.php +++ b/op/op.MoveDocument.php @@ -62,6 +62,13 @@ if($document->isLocked()) { } } +/* Check if name already exists in the folder */ +if(!$settings->_enableDuplicateDocNames) { + if($targetFolder->hasDocumentByName($document->getName())) { + UI::exitError(getMLText("folder_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("document_duplicate_name")); + } +} + if ($targetid != $oldFolder->getID()) { if ($document->setFolder($targetFolder)) { // Send notification to subscribers. diff --git a/op/op.MoveFolder.php b/op/op.MoveFolder.php index 09693127b..72afcf7bf 100644 --- a/op/op.MoveFolder.php +++ b/op/op.MoveFolder.php @@ -60,6 +60,13 @@ if ($folder->getAccessMode($user, 'moveFolder') < M_READWRITE || $targetFolder-> UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("access_denied")); } +/* Check if name already exists in the folder */ +if(!$settings->_enableDuplicateSubFolderNames) { + if($targetFolder->hasSubFolderByName($folder->getName())) { + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("subfolder_duplicate_name")); + } +} + $oldFolder = $folder->getParent(); if ($folder->setParent($targetFolder)) { // Send notification to subscribers. From d2614ba79d5b9ca7b437f7dbc4da5722358d3595 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 20:41:54 +0200 Subject: [PATCH 099/467] add entry for 5.1.12 --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index e87223075..d208b2198 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -15,6 +15,8 @@ name even if it didn't exist - add config option for checking of duplicate subfolder names in the same folder - rest api also checks for duplicate folder/document names if turned on +- before moving a document/folder the target folder is checked for an object with + the same name, if this is turned on in the configuration -------------------------------------------------------------------------------- Changes in version 5.1.11 From 768ff5acb1d3b22c410d5601b7828aa9893a5c58 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Jul 2019 21:36:22 +0200 Subject: [PATCH 100/467] update entry for 5.1.12 --- CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index b6f8a352e..d8b20d350 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,7 @@ -------------------------------------------------------------------------------- - fix editing of document attachments - make receipt summary look like approval/review summary -- merge changes up to 5.1.10 +- merge changes up to 5.1.12 - do not show the updating user in a revision workflow if the status is 0 this is misleading because the user starting the revision workflow is the one first accessing the document From c9d9bf6c7bb7983fb40d3254300c036eaccd4365 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 2 Jul 2019 08:47:12 +0200 Subject: [PATCH 101/467] new function and controller for emptying a folder --- SeedDMS_Core/Core/inc.ClassFolder.php | 62 ++++++++++++++++++++++ SeedDMS_Core/package.xml | 1 + controllers/class.EmptyFolder.php | 76 +++++++++++++++++++++++++++ 3 files changed, 139 insertions(+) create mode 100644 controllers/class.EmptyFolder.php diff --git a/SeedDMS_Core/Core/inc.ClassFolder.php b/SeedDMS_Core/Core/inc.ClassFolder.php index 32b7a93e2..a95856ea9 100644 --- a/SeedDMS_Core/Core/inc.ClassFolder.php +++ b/SeedDMS_Core/Core/inc.ClassFolder.php @@ -1038,6 +1038,12 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { * Remove recursively a folder * * Removes a folder, all its subfolders and documents + * This method triggers the callbacks onPreRemoveFolder and onPostRemoveFolder. + * If onPreRemoveFolder returns a boolean then this method will return + * imediately with the value returned by the callback. Otherwise the + * regular removal is executed, which in turn + * triggers further onPreRemoveFolder and onPostRemoveFolder callbacks + * and its counterparts for documents (onPreRemoveDocument, onPostRemoveDocument). * * @return boolean true on success, false in case of an error */ @@ -1093,6 +1099,62 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { return $ret; } /* }}} */ + /** + * Empty recursively a folder + * + * Removes all subfolders and documents of a folder but not the folder itself + * This method will call remove() on all its children. + * This method triggers the callbacks onPreEmptyFolder and onPostEmptyFolder. + * If onPreEmptyFolder returns a boolean then this method will return + * imediately. + * Be aware that the recursive calls of remove() will trigger the callbacks + * onPreRemoveFolder, onPostRemoveFolder, onPreRemoveDocument and onPostRemoveDocument. + * + * @return boolean true on success, false in case of an error + */ + function empty() { /* {{{ */ + /** @noinspection PhpUnusedLocalVariableInspection */ + $db = $this->_dms->getDB(); + + /* Check if 'onPreEmptyFolder' callback is set */ + if(isset($this->_dms->callbacks['onPreEmptyFolder'])) { + foreach($this->_dms->callbacks['onPreEmptyFolder'] as $callback) { + $ret = call_user_func($callback[0], $callback[1], $this); + if(is_bool($ret)) + return $ret; + } + } + + //Entfernen der Unterordner und Dateien + $res = $this->getSubFolders(); + if (is_bool($res) && !$res) return false; + $res = $this->getDocuments(); + if (is_bool($res) && !$res) return false; + + foreach ($this->_subFolders as $subFolder) { + $res = $subFolder->remove(); + if (!$res) { + return false; + } + } + + foreach ($this->_documents as $document) { + $res = $document->remove(); + if (!$res) { + return false; + } + } + + /* Check if 'onPostEmptyFolder' callback is set */ + if(isset($this->_dms->callbacks['onPostEmptyFolder'])) { + foreach($this->_dms->callbacks['onPostEmptyFolder'] as $callback) { + call_user_func($callback[0], $callback[1], $this); + } + } + + return true; + } /* }}} */ + /** * Returns a list of access privileges * diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index 98564e69b..b659e7baf 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -29,6 +29,7 @@ - add SeedDMS_Core_Folder::hasSubFolderByName() - fix SeedDMS_Core_Folder::hasDocumentByName() which returned an int > 0 if documents has been loaded before and even if the document searching for was not among them. +- add new method SeedDMS_Core_Folder::empty() diff --git a/controllers/class.EmptyFolder.php b/controllers/class.EmptyFolder.php new file mode 100644 index 000000000..f31f64209 --- /dev/null +++ b/controllers/class.EmptyFolder.php @@ -0,0 +1,76 @@ + + * @copyright Copyright (C) 2010-2013 Uwe Steinmann + * @version Release: @package_version@ + */ + +/** + * Class which does the busines logic for downloading a document + * + * @category DMS + * @package SeedDMS + * @author Uwe Steinmann + * @copyright Copyright (C) 2010-2013 Uwe Steinmann + * @version Release: @package_version@ + */ +class SeedDMS_Controller_EmptyFolder extends SeedDMS_Controller_Common { + + public function run() { + $dms = $this->params['dms']; + $user = $this->params['user']; + $settings = $this->params['settings']; + $folder = $this->params['folder']; + $index = $this->params['index']; + $indexconf = $this->params['indexconf']; + + /* Get the document id and name before removing the document */ + $foldername = $folder->getName(); + $folderid = $folder->getID(); + + if(false === $this->callHook('preEmptyFolder')) { + if(empty($this->errormsg)) + $this->errormsg = 'hook_preEmptyFolder_failed'; + return null; + } + + $result = $this->callHook('emptyFolder', $folder); + if($result === null) { + /* Register a callback which removes each document from the fulltext index + * The callback must return null other the removal will be canceled. + */ + function removeFromIndex($arr, $document) { + $index = $arr[0]; + $indexconf = $arr[1]; + $lucenesearch = new $indexconf['Search']($index); + if($hit = $lucenesearch->getDocument($document->getID())) { + $index->delete($hit->id); + $index->commit(); + } + return null; + } + if($index) + $dms->setCallback('onPreEmptyDocument', 'removeFromIndex', array($index, $indexconf)); + + if (!$folder->empty()) { + $this->errormsg = 'error_occured'; + return false; + } + } elseif($result === false) { + if(empty($this->errormsg)) + $this->errormsg = 'hook_emptyFolder_failed'; + return false; + } + + if(!$this->callHook('postEmptyFolder')) { + } + + return true; + } +} From bf1c297594cc3e5ddfda07276f2b65bb0c32808a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 2 Jul 2019 08:47:49 +0200 Subject: [PATCH 102/467] note about new EmptyFolder controller --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index d208b2198..87ed68fd7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -17,6 +17,7 @@ - rest api also checks for duplicate folder/document names if turned on - before moving a document/folder the target folder is checked for an object with the same name, if this is turned on in the configuration +- new controller EmptyFolder (currently not used) -------------------------------------------------------------------------------- Changes in version 5.1.11 From 10e419f7e3afc5cc1f2d47dffa98e0d95847f225 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 2 Jul 2019 15:20:11 +0200 Subject: [PATCH 103/467] eliminate duplicate mails to the same group --- op/op.TriggerWorkflow.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/op/op.TriggerWorkflow.php b/op/op.TriggerWorkflow.php index 0e0e46d4f..5c572f08d 100644 --- a/op/op.TriggerWorkflow.php +++ b/op/op.TriggerWorkflow.php @@ -117,6 +117,7 @@ if($version->triggerWorkflowTransition($user, $transition, $_POST["comment"])) { $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $usersinformed = array(); + $groupsinformed = array(); foreach($workflow->getNextTransitions($transition->getNextState()) as $ntransition) { foreach($ntransition->getUsers() as $tuser) { if(!in_array($tuser->getUser()->getID(), $usersinformed)) { @@ -125,7 +126,10 @@ if($version->triggerWorkflowTransition($user, $transition, $_POST["comment"])) { } } foreach($ntransition->getGroups() as $tuser) { - $notifier->toGroup($user, $tuser->getGroup(), $subject, $message, $params); + if(!in_array($tuser->getUser()->getID(), $groupsinformed)) { + $groupsinformed[] = $tuser->getGroup()->getID(); + $notifier->toGroup($user, $tuser->getGroup(), $subject, $message, $params); + } } } } From 2c11d4b1c7fd6df93272c836acf55e83b6d62f69 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 2 Jul 2019 15:21:07 +0200 Subject: [PATCH 104/467] new entry for 5.1.12 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 87ed68fd7..8d13dade9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -18,6 +18,7 @@ - before moving a document/folder the target folder is checked for an object with the same name, if this is turned on in the configuration - new controller EmptyFolder (currently not used) +- check for duplicate mails to the same group when a workflow was triggered -------------------------------------------------------------------------------- Changes in version 5.1.11 From a91a49cd56e5e59bde4ef31939f33c02b27468aa Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 4 Jul 2019 14:33:24 +0200 Subject: [PATCH 105/467] add filetype 'folder' in getMimeIcon() This enables the use of getMimeIcon() for folders instead of using the protected $imgpath --- views/bootstrap/class.Bootstrap.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 8090d872c..7e05c899f 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -993,6 +993,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $icons["sxm"] = "ooo_formula.png"; $icons["smf"] = "ooo_formula.png"; $icons["mml"] = "ooo_formula.png"; + $icons["folder"] = "folder.svg"; $icons["default"] = "text-x-preview.svg"; //"default.png"; @@ -2321,7 +2322,7 @@ $(document).ready( function() { $content = ''; $content .= "getID()."\" draggable=\"true\" rel=\"folder_".$subFolder->getID()."\" class=\"folder table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">"; - $content .= "getID()."\" draggable=\"false\" href=\"../out/out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\">imgpath."folder.svg\" width=\"24\" height=\"24\" border=0>\n"; + $content .= "getID()."\" draggable=\"false\" href=\"../out/out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\">getMimeIcon(".folder")."\" width=\"24\" height=\"24\" border=0>\n"; $content .= "getID()."\" href=\"../out/out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\">" . htmlspecialchars($subFolder->getName()) . ""; $content .= "
      ".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".date('Y-m-d', $subFolder->getDate()).""; if($comment) { From b90392191a7a60b506ac8a1ecc59f0781f23ecf9 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 4 Jul 2019 14:35:05 +0200 Subject: [PATCH 106/467] seperate code for lines in clipboard into extra function allows to add hook for replacing those functions with code in an extension --- views/bootstrap/class.Clipboard.php | 132 ++++++++++++++++++---------- 1 file changed, 87 insertions(+), 45 deletions(-) diff --git a/views/bootstrap/class.Clipboard.php b/views/bootstrap/class.Clipboard.php index d912e2e57..34f2f4451 100644 --- a/views/bootstrap/class.Clipboard.php +++ b/views/bootstrap/class.Clipboard.php @@ -91,6 +91,79 @@ class SeedDMS_View_Clipboard extends SeedDMS_Bootstrap_Style { echo $content; } /* }}} */ + /** + * Return row of clipboard for a folder + * + * @param object $folder + * @return string rendered html content + */ + public function folderClipboardRow($folder) { /* {{{ */ + $dms = $this->params['dms']; + + $content = ''; + $comment = $folder->getComment(); + if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; + $content .= "getID()."\" class=\"folder table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">"; + $content .= "getID()."&showtree=".showtree()."\">getMimeIcon(".folder")."\" width=\"24\" height=\"24\" border=0>\n"; + $content .= "getID()."&showtree=".showtree()."\">" . htmlspecialchars($folder->getName()) . ""; + if($comment) { + $content .= "
      ".htmlspecialchars($comment).""; + } + $content .= "\n"; + $content .= "\n"; + $content .= ""; + $content .= "\n"; + $content .= "\n"; + + return $content; + } /* }}} */ + + /** + * Return row of clipboard for a document + * + * @param object $document + * @return string rendered html content + */ + public function documentClipboardRow($document, $previewer) { /* {{{ */ + $dms = $this->params['dms']; + + $content = ''; + $comment = $document->getComment(); + if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; + $latestContent = $this->callHook('documentLatestContent', $document); + if($latestContent === null) + $latestContent = $document->getLatestContent(); + if($latestContent) { + $previewer->createPreview($latestContent); + $version = $latestContent->getVersion(); + $status = $latestContent->getStatus(); + + $content .= "getID()."\" class=\"table-row-document\" formtoken=\"".createFormKey('movedocument')."\">"; + + if (file_exists($dms->contentDir . $latestContent->getPath())) { + $content .= "getID()."&version=".$version."\">"; + if($previewer->hasPreview($latestContent)) { + $content .= "getID()."&version=".$latestContent->getVersion()."&width=40\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"; + } else { + $content .= "getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"; + } + $content .= ""; + } else + $content .= "getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"; + + $content .= "getID()."&showtree=".showtree()."\">" . htmlspecialchars($document->getName()) . ""; + if($comment) { + $content .= "
      ".htmlspecialchars($comment).""; + } + $content .= "\n"; + $content .= "\n"; + $content .= ""; + $content .= "\n"; + $content .= ""; + } + return $content; + } /* }}} */ + /** * Return clipboard content rendered as html * @@ -112,19 +185,13 @@ class SeedDMS_View_Clipboard extends SeedDMS_Bootstrap_Style { foreach($clipboard['folders'] as $folderid) { /* FIXME: check for access rights, which could have changed after adding the folder to the clipboard */ if($folder = $dms->getFolder($folderid)) { - $comment = $folder->getComment(); - if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; - $content .= "getID()."\" class=\"folder table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">"; - $content .= "getID()."&showtree=".showtree()."\">imgpath."folder.png\" width=\"24\" height=\"24\" border=0>\n"; - $content .= "getID()."&showtree=".showtree()."\">" . htmlspecialchars($folder->getName()) . ""; - if($comment) { - $content .= "
      ".htmlspecialchars($comment).""; + $txt = $this->callHook('folderClipboardItem', $folder, 'clipboard'); + if(is_string($txt)) + $content .= $txt; + else { + $content .= $this->folderClipboardRow($folder); } - $content .= "\n"; - $content .= "\n"; - $content .= ""; - $content .= "\n"; - $content .= "\n"; + $foldercount++; } } @@ -133,40 +200,15 @@ class SeedDMS_View_Clipboard extends SeedDMS_Bootstrap_Style { foreach($clipboard['docs'] as $docid) { /* FIXME: check for access rights, which could have changed after adding the document to the clipboard */ if($document = $dms->getDocument($docid)) { - $comment = $document->getComment(); - if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; - $latestContent = $this->callHook('documentLatestContent', $document); - if($latestContent === null) - $latestContent = $document->getLatestContent(); - if($latestContent) { - $previewer->createPreview($latestContent); - $version = $latestContent->getVersion(); - $status = $latestContent->getStatus(); - - $content .= ""; - - if (file_exists($dms->contentDir . $latestContent->getPath())) { - $content .= ""; - if($previewer->hasPreview($latestContent)) { - $content .= "getID()."&version=".$latestContent->getVersion()."&width=40\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"; - } else { - $content .= "getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"; - } - $content .= ""; - } else - $content .= "getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"; - - $content .= "" . htmlspecialchars($document->getName()) . ""; - if($comment) { - $content .= "
      ".htmlspecialchars($comment).""; - } - $content .= "\n"; - $content .= "\n"; - $content .= ""; - $content .= "\n"; - $content .= ""; - $doccount++; + $document->verifyLastestContentExpriry(); + $txt = $this->callHook('documentClipboardItem', $document, $previewer, 'clipboard'); + if(is_string($txt)) + $content .= $txt; + else { + $content .= $this->documentClipboardRow($document, $previewer); } + + $doccount++; } } } From 7a7542e01b17834f760328bc2557a8c3a06bf6f1 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 5 Jul 2019 08:07:52 +0200 Subject: [PATCH 107/467] fix wrong baseUrl which cause the styles not to be loaded --- views/bootstrap/class.ErrorDlg.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.ErrorDlg.php b/views/bootstrap/class.ErrorDlg.php index ef5cc64ed..66bd63507 100644 --- a/views/bootstrap/class.ErrorDlg.php +++ b/views/bootstrap/class.ErrorDlg.php @@ -40,7 +40,7 @@ class SeedDMS_View_ErrorDlg extends SeedDMS_Bootstrap_Style { $settings = $this->params['settings']; if(!$plain) { - $this->htmlStartPage($pagetitle, 'errorpage', $settings->_httpRoot."out"); + $this->htmlStartPage($pagetitle, 'errorpage', $settings->_httpRoot."out/"); $this->globalNavigation(); $this->contentStart(); } From 853d1117389d9283b13a109db492355a0b3cd0fa Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 5 Jul 2019 08:09:12 +0200 Subject: [PATCH 108/467] new item for 5.1.12 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 8d13dade9..e2a8f100a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -19,6 +19,7 @@ the same name, if this is turned on in the configuration - new controller EmptyFolder (currently not used) - check for duplicate mails to the same group when a workflow was triggered +- new hook to output clipboard items -------------------------------------------------------------------------------- Changes in version 5.1.11 From 585c81bb66b88e3ef8fca2b9633ea269cfd85329 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 5 Jul 2019 14:13:29 +0200 Subject: [PATCH 109/467] allow pass the object with the document content --- controllers/class.Download.php | 38 +++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/controllers/class.Download.php b/controllers/class.Download.php index 81a8c6ba7..9f8c0d2f9 100644 --- a/controllers/class.Download.php +++ b/controllers/class.Download.php @@ -28,25 +28,29 @@ class SeedDMS_Controller_Download extends SeedDMS_Controller_Common { switch($type) { case "version": - $version = $this->params['version']; - $document = $this->params['document']; - if($version < 1) { - $content = $this->callHook('documentLatestContent', $document); - if($content === null) - $content = $document->getLatestContent(); + if(empty($this->params['content'])) { + $version = $this->params['version']; + $document = $this->params['document']; + if($version < 1) { + $content = $this->callHook('documentLatestContent', $document); + if($content === null) + $content = $document->getLatestContent(); + } else { + $content = $this->callHook('documentContent', $document, $version); + if($content === null) + $content = $document->getContentByVersion($version); + } + if (!is_object($content)) { + $this->errormsg = 'invalid_version'; + return false; + } + /* set params['content'] for compatiblity with older extensions which + * expect the content in the controller + */ + $this->params['content'] = $content; } else { - $content = $this->callHook('documentContent', $document, $version); - if($content === null) - $content = $document->getContentByVersion($version); + $content = $this->params['content']; } - if (!is_object($content)) { - $this->errormsg = 'invalid_version'; - return false; - } - /* set params['content'] for compatiblity with older extensions which - * expect the content in the controller - */ - $this->params['content'] = $content; if(null === $this->callHook('version')) { if(file_exists($dms->contentDir . $content->getPath())) { header("Content-Transfer-Encoding: binary"); From 2e75779e4ed608a60d1b4716e38f7bf67dd0b858 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 5 Jul 2019 14:24:43 +0200 Subject: [PATCH 110/467] some minor updates of lately added keys --- languages/cs_CZ/lang.inc | 6 +++--- languages/de_DE/lang.inc | 4 ++-- languages/en_GB/lang.inc | 4 ++-- languages/es_ES/lang.inc | 10 +++++----- languages/fr_FR/lang.inc | 12 ++++++------ languages/hr_HR/lang.inc | 4 ++-- languages/hu_HU/lang.inc | 4 ++-- languages/it_IT/lang.inc | 10 +++++----- languages/lo_LA/lang.inc | 4 ++-- languages/nl_NL/lang.inc | 6 +++--- languages/pl_PL/lang.inc | 4 ++-- languages/pt_BR/lang.inc | 4 ++-- languages/ro_RO/lang.inc | 4 ++-- languages/ru_RU/lang.inc | 4 ++-- languages/sk_SK/lang.inc | 4 ++-- languages/sv_SE/lang.inc | 4 ++-- languages/tr_TR/lang.inc | 10 +++++----- languages/uk_UA/lang.inc | 4 ++-- languages/zh_CN/lang.inc | 8 ++++---- 19 files changed, 55 insertions(+), 55 deletions(-) diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 6401ace3c..432689409 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/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 (1523), kreml (579) +// Translators: Admin (1525), kreml (579) $text = array( '2_factor_auth' => 'dvoufaktorové ověření', @@ -1554,7 +1554,7 @@ Jméno: [username] 'settings_updateDatabase' => 'Spustit skripty pro aktualizaci schématu databáze', 'settings_updateNotifyTime' => 'Update Notify Time', 'settings_updateNotifyTime_desc' => 'Uživatelé jsou informováni o změnách dokumentů, ke kterým došlo v posledních sekundách \'Aktualizace upozornění\'', -'settings_upgrade_php' => 'Aktualizujte PHP alespoň na verzi 5.2.0', +'settings_upgrade_php' => 'Aktualizujte PHP alespoň na verzi 5.6.38', 'settings_versioningFileName' => 'Verzování názvu souboru', 'settings_versioningFileName_desc' => 'Název souboru s informacemi o verzích vytvořeném nástrojem pro zálohování', 'settings_versiontolow' => 'Příliš nízká verze', @@ -1580,7 +1580,7 @@ Jméno: [username] 'sign_out_user' => 'Odhlášení uživatele', 'sk_SK' => 'Slovenština', 'sort_by_date' => '', -'sort_by_name' => '', +'sort_by_name' => 'Třídit podle jména', 'sort_by_sequence' => '', 'space_used_on_data_folder' => 'Použité místo pro data složky', 'splash_added_to_clipboard' => 'Přidáno do schránky', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index f2eef087d..92217c35b 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 (2687), dgrutsch (22) +// Translators: Admin (2688), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -1564,7 +1564,7 @@ Name: [username] 'settings_updateDatabase' => 'Datenbank-Update-Skript ausführen', 'settings_updateNotifyTime' => 'Update Notify Time', 'settings_updateNotifyTime_desc' => 'Users are notified about document-changes that took place within the last \'Update Notify Time\' seconds', -'settings_upgrade_php' => 'Aktualisiere PHP auf mindestens version 5.2.0', +'settings_upgrade_php' => 'Aktualisiere PHP auf mindestens version 5.6.38', 'settings_versioningFileName' => 'Versionsinfo-Datei', 'settings_versioningFileName_desc' => 'Der Name der Datei mit Versionsinformationen, wie sie durch das Backup-Tool erzeugt werden.', 'settings_versiontolow' => 'Version zu gering', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 566640a01..282accc17 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 (1779), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1780), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -1559,7 +1559,7 @@ Name: [username] 'settings_updateDatabase' => 'Run schema update scripts on database', 'settings_updateNotifyTime' => 'Update Notify Time', 'settings_updateNotifyTime_desc' => 'Users are notified about document-changes that took place within the last \'Update Notify Time\' seconds', -'settings_upgrade_php' => 'Upgrade PHP to at least version 5.2.0', +'settings_upgrade_php' => 'Upgrade PHP to at least version 5.6.38', 'settings_versioningFileName' => 'Versioning FileName', 'settings_versioningFileName_desc' => 'The name of the versioning info file created by the backup tool', 'settings_versiontolow' => 'Version to low', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 84c9dcca7..4e93f1ff4 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 (1114), angel (123), francisco (2), jaimem (14) +// Translators: acabello (20), Admin (1118), angel (123), francisco (2), jaimem (14) $text = array( '2_factor_auth' => '', @@ -1490,7 +1490,7 @@ URL: [url]', 'settings_updateDatabase' => 'Lanzar scripts de actualización de esquema en la base de datos', 'settings_updateNotifyTime' => 'Tiempo de notificación de actualización', 'settings_updateNotifyTime_desc' => 'Se notificará a los usuarios sobre los cambios en documentos que tengan lugar en los próximos segundos de «Tiempo de notificación de actualización»', -'settings_upgrade_php' => 'Actualice PHP a una versión igual o mayor a 5.2.0', +'settings_upgrade_php' => 'Actualice PHP a una versión igual o mayor a 5.6.38', 'settings_versioningFileName' => 'Archivo de versionado', 'settings_versioningFileName_desc' => 'Nombre de archivo de información de versionado creado por la herramienta de copia de respaldo', 'settings_versiontolow' => 'Versión antigua', @@ -1515,9 +1515,9 @@ URL: [url]', 'sign_out' => 'Salir', 'sign_out_user' => 'Desconectar usuario', 'sk_SK' => 'Slovaco', -'sort_by_date' => '', -'sort_by_name' => '', -'sort_by_sequence' => '', +'sort_by_date' => 'Ordenar por Fecha', +'sort_by_name' => 'Ordenar por Nombre', +'sort_by_sequence' => 'Ordenar por Secuencia', 'space_used_on_data_folder' => 'Espacio usado en la carpeta de datos', 'splash_added_to_clipboard' => 'Agregado al portapapeles', 'splash_add_access' => '', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 3c5a8a1bc..ccd3831e8 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 (1091), jeromerobert (50), lonnnew (9), Oudiceval (750) +// Translators: Admin (1091), jeromerobert (50), lonnnew (9), Oudiceval (755) $text = array( '2_factor_auth' => 'Authentification forte', @@ -1299,8 +1299,8 @@ Nom : [username] 'settings_enableDropUpload_desc' => 'Active/désactive la zone de glisser-déposer sur la page d’un dossier afin d’y déposer des fichiers.', 'settings_enableDuplicateDocNames' => 'Autoriser plusieurs documents de même nom', 'settings_enableDuplicateDocNames_desc' => 'Autorise plusieurs documents de même nom dans un même dossier.', -'settings_enableDuplicateSubFolderNames' => '', -'settings_enableDuplicateSubFolderNames_desc' => '', +'settings_enableDuplicateSubFolderNames' => 'Autoriser les sous-dossiers de même nom', +'settings_enableDuplicateSubFolderNames_desc' => 'Autorise plusieurs sous-dossiers de même nom dans un dossier.', 'settings_enableEmail' => 'E-mails', 'settings_enableEmail_desc' => 'Active/désactive la notification automatique par e-mail', 'settings_enableFilterReceipt' => '', @@ -1543,10 +1543,10 @@ Nom : [username] 'settings_updateDatabase' => 'Exécuter les scripts de mise à jour du schéma de la base', 'settings_updateNotifyTime' => 'Délai de notification des modifications', 'settings_updateNotifyTime_desc' => 'Les utilisateurs sont informés des modifications apportées aux documents qui ont eu lieu durant le délai précisé (en secondes).', -'settings_upgrade_php' => 'Mettez à jour PHP vers une version au moins égale à 5.2.0', +'settings_upgrade_php' => 'Mettez à jour PHP vers une version au moins égale à 5.6.38', 'settings_versioningFileName' => 'Nom des fichiers de versionnage', 'settings_versioningFileName_desc' => 'Nom des fichiers textes d’information créés depuis les outils de sauvegarde', -'settings_versiontolow' => '', +'settings_versiontolow' => 'Version trop ancienne', 'settings_viewOnlineFileTypes' => 'Aperçu en ligne des fichiers', 'settings_viewOnlineFileTypes_desc' => 'Extensions des fichiers pouvant être visionnés en ligne (en lettres minuscules uniquement).', 'settings_webdav' => 'WebDAV', @@ -1665,7 +1665,7 @@ Nom : [username] 'status_revisor_removed' => 'Réviseur retiré de la liste', 'status_unknown' => 'Inconnu', 'storage_size' => 'Taille occupée', -'subfolder_duplicate_name' => '', +'subfolder_duplicate_name' => 'Un sous-dossier porte déjà ce nom !', 'submit_2_fact_auth' => 'Enregistrer la clé secrète', 'submit_approval' => 'Soumettre approbation', 'submit_login' => 'Connexion', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 372269121..fe53bb654 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1221), marbanas (16) +// Translators: Admin (1222), marbanas (16) $text = array( '2_factor_auth' => '', @@ -1511,7 +1511,7 @@ Internet poveznica: [url]', 'settings_updateDatabase' => 'Pokreni shemu ažuriranja skripti na bazi podataka', 'settings_updateNotifyTime' => 'Ažuriraj vrijeme obavijesti', 'settings_updateNotifyTime_desc' => 'Korisnici se obavještavaju o promjenama dokumenta koje su se dogodile unutar zadnjih \'Update Notify Time\' sekundi', -'settings_upgrade_php' => 'Ažuriraj PHP najmanje na verziju 5.2.0', +'settings_upgrade_php' => 'Ažuriraj PHP najmanje na verziju 5.6.38', 'settings_versioningFileName' => 'Naziv datoteke verzije dokumenta', 'settings_versioningFileName_desc' => 'Naziv datoteke s informacijom o verziji kreirane alatom za stvaranje sigurnosne kopije', 'settings_versiontolow' => 'Na nižu verziju', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index b22819603..b6b681de3 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (632), ribaz (1036) +// Translators: Admin (633), ribaz (1036) $text = array( '2_factor_auth' => 'Kétfaktoros azonosítás', @@ -1489,7 +1489,7 @@ URL: [url]', 'settings_updateDatabase' => 'Adatbázis séma frissítő szkript futtatása', 'settings_updateNotifyTime' => 'Értesítési idő frissítése', 'settings_updateNotifyTime_desc' => 'Felhasználók értesítést kapnak az \'Értesítés frissítési idő\' által meghatározott másodperc alatt történt dokumentum változásokról', -'settings_upgrade_php' => 'Frissítse a PHP-t legalább 5.2.0 verzióra', +'settings_upgrade_php' => 'Frissítse a PHP-t legalább 5.6.38 verzióra', 'settings_versioningFileName' => 'Változatkezelő állománynév', 'settings_versioningFileName_desc' => 'A változáskezelő információs állomány neve létrehozva a mentő eszközzel', 'settings_versiontolow' => 'túl alacsony verzió', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 7b5b8398b..55f2ee3de 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 (1624), rickr (144), s.pnt (26) +// Translators: Admin (1628), rickr (144), s.pnt (26) $text = array( '2_factor_auth' => 'Autorizzazione a due fattori', @@ -1523,7 +1523,7 @@ URL: [url]', 'settings_updateDatabase' => 'Esegui gli script di aggiornamento schema sul database', 'settings_updateNotifyTime' => 'Intervallo notifica di aggiornamento', 'settings_updateNotifyTime_desc' => 'Intervallo di tempo in secondi durante il quale ogni modifica ad un documento verrà notificata agli utenti', -'settings_upgrade_php' => 'Aggiornare PHP alla versione 5.2.0 o superiori', +'settings_upgrade_php' => 'Aggiornare PHP alla versione 5.6.38 o superiori', 'settings_versioningFileName' => 'Nome file di versione', 'settings_versioningFileName_desc' => 'Nome attribuito al file di versione creato dallo strumento di backup.', 'settings_versiontolow' => 'Versione obsoleta', @@ -1548,9 +1548,9 @@ URL: [url]', 'sign_out' => 'Disconnettiti', 'sign_out_user' => 'Disconnetti l\'utente', 'sk_SK' => 'Slovacco', -'sort_by_date' => '', -'sort_by_name' => '', -'sort_by_sequence' => '', +'sort_by_date' => 'Ordina per Data', +'sort_by_name' => 'Ordina per Nom', +'sort_by_sequence' => 'Ordina per Sequenza', 'space_used_on_data_folder' => 'Spazio utilizzato dai dati', 'splash_added_to_clipboard' => 'Aggiunto agli appunti', 'splash_add_access' => '', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index ca3f4c8b5..84965ef76 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/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 (1468) +// Translators: Admin (1469) $text = array( '2_factor_auth' => 'ການກວດສອບແບບ 2 ປັດໃຈ', @@ -1538,7 +1538,7 @@ URL: [url]', 'settings_updateDatabase' => 'ຮຽກໄຊ້ສະຄິບການປັບປຸງສະຄິບໃນຖານຂໍ້ມູນ', 'settings_updateNotifyTime' => 'ອັບເດດເວລາການແຈ້ງເຕືອນ', 'settings_updateNotifyTime_desc' => 'ຜູ້ໄຊ້ຈະໄດ້ຮັບການແຈ້ງກ່ຽວກັບການປ່ຽນແປງເອກະສານທີ່ເກີດຂື້ນພາຍໃນວິນາທີສຸດທ້າຍ "ແຈ້ງເຕືອນເວລາ "', -'settings_upgrade_php' => 'ອັບເກດ PHP ຢ່າງນ້ອຍຕ້ອງເປັນເວີຊັ້ນ 5.2.0', +'settings_upgrade_php' => 'ອັບເກດ PHP ຢ່າງນ້ອຍຕ້ອງເປັນເວີຊັ້ນ 5.6.38', 'settings_versioningFileName' => 'ການກຳນົດຊື່ໄຟລ', 'settings_versioningFileName_desc' => 'ຊື່ຂອງແຟ້ມຂໍ້ມູນການກຳນົດເວີຊັນທີ່ສ້າງໂດຍເຄື່ອງມືສຳຮອງຂໍ້ມູນ', 'settings_versiontolow' => 'ເວີຊັນເກົ່າ', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 8afaebd4a..d2f34f932 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 (768), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) +// Translators: Admin (770), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) $text = array( '2_factor_auth' => '2-factor-authenticatie', @@ -1535,7 +1535,7 @@ Name: [username] 'settings_updateDatabase' => 'Voer schema update scripts uit op database', 'settings_updateNotifyTime' => 'Update Notificatie Tijd', 'settings_updateNotifyTime_desc' => 'Gebruikers worden niet genotificeerd over documentwijzigingen die plaats vinden binnen de laatste \'Update Notificatie Tijd\' seconden', -'settings_upgrade_php' => 'Upgrade PHP minimaal naar versie 5.2.0', +'settings_upgrade_php' => 'Upgrade PHP minimaal naar versie 5.6.38', 'settings_versioningFileName' => 'Versie-informatie Bestandsnaam', 'settings_versioningFileName_desc' => 'De naam van het versie informatie bestand gemaakt door het backupgereedschap', 'settings_versiontolow' => 'Versie te laag', @@ -1562,7 +1562,7 @@ Name: [username] 'sk_SK' => 'Slowaaks', 'sort_by_date' => 'Sorteren op datum', 'sort_by_name' => 'Sorteren op naam', -'sort_by_sequence' => '', +'sort_by_sequence' => 'Sorteer op volgorde', 'space_used_on_data_folder' => 'Gebruikte diskomvang in data map', 'splash_added_to_clipboard' => 'Toegevoegd aan klembord', 'splash_add_access' => '', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index cb01e0cab..46fc1324a 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/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 (830), netixw (84), romi (93), uGn (112) +// Translators: Admin (831), netixw (84), romi (93), uGn (112) $text = array( '2_factor_auth' => '', @@ -1469,7 +1469,7 @@ URL: [url]', 'settings_updateDatabase' => 'Uruchom skrytoy aktualizujące shemat bazy danych', 'settings_updateNotifyTime' => 'Okres powiadamiania o zmianach', 'settings_updateNotifyTime_desc' => 'Użytkownicy są powiadamiani o zmianach w dokumentach, które miały miejsce w ciągu ostatnich \'Update Notify Time\' sekund', -'settings_upgrade_php' => 'Uaktualnij PHP do wersji przynajmniej 5.2.0', +'settings_upgrade_php' => 'Uaktualnij PHP do wersji przynajmniej 5.6.38', 'settings_versioningFileName' => 'Nazwa pliku z wersjonowaniem', 'settings_versioningFileName_desc' => 'Nazwa pliku, zawierającego informacje o wersjonowaniu, utworzonego przez narzędzie kopii zapasowej.', 'settings_versiontolow' => 'Za niska wersja', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 5353a5484..c34c3a96f 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1718), flaviove (627), lfcristofoli (352) +// Translators: Admin (1719), flaviove (627), lfcristofoli (352) $text = array( '2_factor_auth' => 'Autenticação de dois fatores', @@ -1557,7 +1557,7 @@ Nome: [username] 'settings_updateDatabase' => 'Executar scripts de atualização do esquema de banco de dados', 'settings_updateNotifyTime' => 'Atualizar Tempo de Notificação', 'settings_updateNotifyTime_desc' => 'Usuários são notificados sobe mudanças em documentos que se realizaram nos últimos segundos \'Tempo de Atualização de Notificação\'', -'settings_upgrade_php' => 'Atualize PHP para pelo menos a versão 5.2.0', +'settings_upgrade_php' => 'Atualize PHP para pelo menos a versão 5.6.38', 'settings_versioningFileName' => 'Versionando NomedoArquivo', 'settings_versioningFileName_desc' => 'O nome do arquivo de informações de versões criadas pela ferramenta de backup', 'settings_versiontolow' => 'Versão para baixo', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index 57ce5aa47..cf81b7c97 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 (1085), balan (87) +// Translators: Admin (1086), balan (87) $text = array( '2_factor_auth' => '', @@ -1512,7 +1512,7 @@ URL: [url]', 'settings_updateDatabase' => 'Rulați script-urile de actualizare a schemei bazei de date', 'settings_updateNotifyTime' => 'Timpul de actualizare a notificarilor', 'settings_updateNotifyTime_desc' => 'Utilizatorii sunt notificați cu privire la schimbările suferite de un documentul în ultima perioadă a \'Timpul de actualizare a notificarilor\' în secunde', -'settings_upgrade_php' => 'Upgrade PHP cel puțin la versiunea 5.2.0', +'settings_upgrade_php' => 'Upgrade PHP cel puțin la versiunea 5.6.38', 'settings_versioningFileName' => 'Nume Fișier versionare', 'settings_versioningFileName_desc' => 'Numele fișierului cu informatii ale versiunilor creat de către instrumentul de backup', 'settings_versiontolow' => 'Versiunea e prea mică(veche)', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 97dda2ad0..0471d460b 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1668) +// Translators: Admin (1669) $text = array( '2_factor_auth' => 'Двухфакторная аутентификация', @@ -1519,7 +1519,7 @@ URL: [url]', 'settings_updateDatabase' => 'Запустить обновление схемы БД', 'settings_updateNotifyTime' => 'Период уведомлений об изменениях', 'settings_updateNotifyTime_desc' => 'Пользователи уведомляются об изменениях документов за указанные последние секунды.', -'settings_upgrade_php' => 'Обновите PHP до версии не ниже 5.2.0', +'settings_upgrade_php' => 'Обновите PHP до версии не ниже 5.6.38', 'settings_versioningFileName' => 'Название файла версий', 'settings_versioningFileName_desc' => 'Названия файла версий, создаваемого инструментом резервного копирования.', 'settings_versiontolow' => 'Слишком старая версия', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index b3eb847e6..838324151 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/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 (1224), destinqo (19), pS2017 (508), ssebech (4) +// Translators: Admin (1225), destinqo (19), pS2017 (508), ssebech (4) $text = array( '2_factor_auth' => '2-faktorové overovanie', @@ -1559,7 +1559,7 @@ Meno: [username] 'settings_updateDatabase' => 'Run schema update scripts on database', 'settings_updateNotifyTime' => 'Aktualizovať čas notifikácie', 'settings_updateNotifyTime_desc' => 'Users are notified about document-changes that took place within the last \'Update Notify Time\' seconds', -'settings_upgrade_php' => 'Upgrade PHP to at least version 5.2.0', +'settings_upgrade_php' => 'Upgrade PHP to at least version 5.6.38', 'settings_versioningFileName' => 'Versioning FileName', 'settings_versioningFileName_desc' => 'The name of the versioning info file created by the backup tool', 'settings_versiontolow' => 'Verzia je nízka', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index c189879bf..f362ad09a 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 (1159), MagnusI (649), tmichelfelder (106) +// Translators: Admin (1160), MagnusI (649), tmichelfelder (106) $text = array( '2_factor_auth' => '2-faktors autentisering', @@ -1532,7 +1532,7 @@ Kommentar: [comment]', 'settings_updateDatabase' => 'Kör schemauppdateringsskript på databasen', 'settings_updateNotifyTime' => 'Tid för uppdateringsmeddelande', 'settings_updateNotifyTime_desc' => 'Användare meddelas om att ändringar i dokumentet har genomförts inom de senaste \'Tid för uppdateringsmeddelande\' sekunder.', -'settings_upgrade_php' => 'Uppdatera PHP till åtminstone version 5.2.0', +'settings_upgrade_php' => 'Uppdatera PHP till åtminstone version 5.6.38', 'settings_versioningFileName' => 'Versionsinfo-filnamn', 'settings_versioningFileName_desc' => 'Namnet på versionsinfo-fil som skapas med backup-verktyget', 'settings_versiontolow' => 'Version för låg', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 19f357524..b8b53939a 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 (1083), aydin (83) +// Translators: Admin (1087), aydin (83) $text = array( '2_factor_auth' => '', @@ -1491,7 +1491,7 @@ URL: [url]', 'settings_updateDatabase' => 'Veritabanında schema update betik çalıştır', 'settings_updateNotifyTime' => 'Güncelleme Bildirim Zamanı', 'settings_updateNotifyTime_desc' => 'Kullanıcılara doküman güncellemelerinin \'Update Notify Time\' saniyede gerçekleştiği bildirilir.', -'settings_upgrade_php' => 'PHP versiyonu en az 5.2.0 olmalıdır', +'settings_upgrade_php' => 'PHP versiyonu en az 5.6.38 olmalıdır', 'settings_versioningFileName' => 'Versiyonlama DosyaAdı', 'settings_versioningFileName_desc' => 'Yedekleme aracı tarafından oluşturulan versiyon bilgisi dosyasının adı', 'settings_versiontolow' => 'Versiyon düşük', @@ -1516,9 +1516,9 @@ URL: [url]', 'sign_out' => 'Çıkış', 'sign_out_user' => 'Kullanıcı hesabından çıkış', 'sk_SK' => 'Slovakça', -'sort_by_date' => '', -'sort_by_name' => '', -'sort_by_sequence' => '', +'sort_by_date' => 'Tarihe göre sırala', +'sort_by_name' => 'Ada göre sırala', +'sort_by_sequence' => 'Eklenme sırasına göre sırala', 'space_used_on_data_folder' => 'Data klasörü kullanılan alan', 'splash_added_to_clipboard' => 'Panoya eklendi', 'splash_add_access' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 9a40ccf69..be3385893 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/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 (1337) +// Translators: Admin (1338) $text = array( '2_factor_auth' => '', @@ -1512,7 +1512,7 @@ URL: [url]', 'settings_updateDatabase' => 'Запустити оновлення схеми БД', 'settings_updateNotifyTime' => 'Період сповіщень про зміни', 'settings_updateNotifyTime_desc' => 'Користувачі отримують сповіщення за вказані останні секунди.', -'settings_upgrade_php' => 'Оновіть PHP до версії не нижче 5.2.0', +'settings_upgrade_php' => 'Оновіть PHP до версії не нижче 5.6.38', 'settings_versioningFileName' => 'Назва файлу версій', 'settings_versioningFileName_desc' => 'Назва файлу версій, створеного інструментами резервного копіювання.', 'settings_versiontolow' => 'Надто стара версія', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 82e50fca2..72d351a6f 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (761), archonwang (469), fengjohn (5), yang86 (1) +// Translators: Admin (765), archonwang (469), fengjohn (5), yang86 (1) $text = array( '2_factor_auth' => '双重认证', @@ -1518,9 +1518,9 @@ URL: [url]', 'sign_out' => '登出', 'sign_out_user' => '退出登录', 'sk_SK' => '斯洛伐克语', -'sort_by_date' => '', -'sort_by_name' => '', -'sort_by_sequence' => '', +'sort_by_date' => '日期排序', +'sort_by_name' => '文件名排序', +'sort_by_sequence' => '顺序排列', 'space_used_on_data_folder' => '数据文件夹使用空间', 'splash_added_to_clipboard' => '已复制', 'splash_add_access' => '', From abf9465e311e771cddddac3e1825a6d755a566db Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 10 Jul 2019 19:31:33 +0200 Subject: [PATCH 111/467] ??? --- CHANGELOG | 8 ++++---- Makefile | 8 +++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e2a8f100a..ddd684165 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -19,17 +19,17 @@ the same name, if this is turned on in the configuration - new controller EmptyFolder (currently not used) - check for duplicate mails to the same group when a workflow was triggered -- new hook to output clipboard items +- new hook to output clipboard items -------------------------------------------------------------------------------- Changes in version 5.1.11 -------------------------------------------------------------------------------- - fix for CVE-2019-12744 (Remote Command Execution through unvalidated file upload), add .htaccess file to data directory, better documentation - for installing seeddms + for installing seeddms - fix for CVE-2019-12745 (Persistent or Stored XSS in UsrMgr) and CVE-2019-12801 (Persistent or Stored XSS in GroupMgr), propperly escape - strings used in Select2 js library used by UsrMgr and GroupMgr + strings used in Select2 js library used by UsrMgr and GroupMgr - do not show attributes in search results in extra column anymore - fix setting language during login (Closes #437) - fix indexing documents even if no preIndexDocument hook is set (Closes #437) @@ -84,7 +84,7 @@ - catch error when updating a document fails (Closes #410) - use always 'Send from' address as Return-Path when set, only if not set the logged in user's email will be used (Closes #418) -- show the debug output when sending a test mail +- show the debug output when sendind a test mail - add hooks add hooks folderListPreContent and folderListPostContent in class.ViewFolder.php - do not redirect to ForcePassword page if out.Logout.php was opened. This diff --git a/Makefile b/Makefile index 3d8dc4be3..f10892e27 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,8 @@ NODISTFILES=utils/importmail.php utils/seedddms-importmail utils/remote-email-up EXTENSIONS := \ dynamic_content.tar.gz\ login_action.tar.gz\ - example.tar.gz + example.tar.gz\ + tbs_template.tar.gz PHPDOC=~/Downloads/phpDocumentor-2.8.1/bin/phpdoc @@ -39,10 +40,12 @@ webapp: repository: mkdir -p tmp/seeddms-repository-$(VERSION) cp -a repository/www repository/utils repository/doc tmp/seeddms-repository-$(VERSION) + rm -f tmp/seeddms-repository/utils/update-repository.log mkdir -p tmp/seeddms-repository-$(VERSION)/files mkdir -p tmp/seeddms-repository-$(VERSION)/accounts cp -a repository/files/.htaccess tmp/seeddms-repository-$(VERSION)/files cp -a repository/accounts/.htaccess tmp/seeddms-repository-$(VERSION)/accounts + cp inc/inc.ClassExtensionMgr.php tmp/seeddms-repository-$(VERSION)/utils (cd tmp; tar --exclude=.svn -czvf ../seeddms-repository-$(VERSION).tar.gz seeddms-repository-$(VERSION)) rm -rf tmp @@ -55,6 +58,9 @@ example.tar.gz: ext/example login_action.tar.gz: ext/login_action tar czvf login_action.tar.gz ext/login_action +tbs_template.tar.gz: ext/tbs_template + tar czvf tbs_template.tar.gz ext/tbs_template + extensions: $(EXTENSIONS) doc: From f09ece975ba202e7e5257d3c7655bd727c834e8d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 10 Jul 2019 19:32:02 +0200 Subject: [PATCH 112/467] turn load on demand on in jqtree --- views/bootstrap/class.Bootstrap.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 7e05c899f..1644d6de3 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1593,7 +1593,7 @@ $(document).ready(function() { $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); $children = array(); foreach($subfolders as $subfolder) { - $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? false : false, 'is_folder'=>true); + $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? true : false, 'is_folder'=>true); if($expandtree>=$level || $pathfolder->getID() == $subfolder->getID()) { $node['children'] = jqtree($path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1); if($showdocs) { @@ -1613,7 +1613,7 @@ $(document).ready(function() { $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); $children = array(); foreach($subfolders as $subfolder) { - $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? false : false, 'is_folder'=>true); + $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? true : false, 'is_folder'=>true); $children[] = $node; } return $children; @@ -1652,7 +1652,7 @@ $(document).ready(function() { } else { $root = $this->params['dms']->getFolder($this->params['rootfolderid']); - $tree = array(array('label'=>$root->getName(), 'id'=>$root->getID(), 'load_on_demand'=>false, 'is_folder'=>true)); + $tree = array(array('label'=>$root->getName(), 'id'=>$root->getID(), 'load_on_demand'=>true, 'is_folder'=>true)); } ?> From a6af3cf0cd98148a6aa4f22e68f72904182be3e4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 10 Jul 2019 20:39:54 +0200 Subject: [PATCH 113/467] add entry form 5.1.12 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index ddd684165..840b0b31f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -20,6 +20,7 @@ - new controller EmptyFolder (currently not used) - check for duplicate mails to the same group when a workflow was triggered - new hook to output clipboard items +- turn on load on demand again in the folder tree -------------------------------------------------------------------------------- Changes in version 5.1.11 From d11887311c9956522c031f60030db6696b62c35b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 11 Jul 2019 17:14:56 +0200 Subject: [PATCH 114/467] declare variables in SeedDMS_Core_DocumentContent --- SeedDMS_Core/Core/inc.ClassDocument.php | 69 ++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 51be6bb5f..cbf26d2ab 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -2653,6 +2653,70 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ * @version Release: @package_version@ */ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ + /** + * @var object document + */ + protected $_document; + + /** + * @var integer version + */ + protected $_version; + + /** + * @var string comment + */ + protected $_comment; + + /** + * @var string date + */ + protected $_date; + + /** + * @var integer userID + */ + protected $_userID; + + /** + * @var string dir on disk (deprecated) + */ + protected $_dir; + + /** + * @var string original file name + */ + protected $_orgFileName; + + /** + * @var string file type (actually the extension without the leading dot) + */ + protected $_fileType; + + /** + * @var string mime type + */ + protected $_mimeType; + + /** + * @var string checksum of content + */ + protected $_checksum; + + /** + * @var object workflow + */ + protected $_workflow; + + /** + * @var object workflow state + */ + protected $_workflowState; + + /** + * @var object dms + */ + public $_dms; /** * Recalculate the status of a document @@ -2745,7 +2809,10 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ function getOriginalFileName() { return $this->_orgFileName; } function getFileType() { return $this->_fileType; } function getFileName(){ return $this->_version . $this->_fileType; } - function getDir() { return $this->_dir; } + /** + * getDir and the corresponding database table field are deprecated + */ + function __getDir() { return $this->_dir; } function getMimeType() { return $this->_mimeType; } function getDocument() { return $this->_document; } From 16e9d3748cc9eb8489dd14b8e195dbf38812826f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 11 Jul 2019 17:15:40 +0200 Subject: [PATCH 115/467] new command transferdocument and linkdocument transferdocument moves the version of one document to another document linkdocument creates a link between on document and another document --- op/op.Ajax.php | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 44778b452..7146fe78e 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -341,6 +341,96 @@ switch($command) { } break; /* }}} */ + case 'transfercontent': /* {{{ */ + if($user) { + if(!checkFormKey('movedocument', 'GET')) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>'')); + } else { + $mdocument = $dms->getDocument($_REQUEST['docid']); + if($mdocument) { + if ($mdocument->getAccessMode($user, 'transferContent') >= M_READWRITE) { + /* Check if source document has more than one version */ + $versions = $mdocument->getContent(); + if(count($versions) == 1) { + if($targetdoc = $dms->getDocument($_REQUEST['targetdocumentid'])) { + if($targetdoc->getAccessMode($user, 'transferContent') >= M_READWRITE) { + if($targetdoc->addContent($versions[0]->getComment(), $versions[0]->getUser(), $dms->contentDir . $versions[0]->getPath(), $versions[0]->getOriginalFileName(), $versions[0]->getFileType(), $versions[0]->getMimeType())) { //, $reviewers=array(), $approvers=array(), $version=0, $attributes=array(), $workflow=null) { + if($mdocument->remove()) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>true, 'message'=>getMLText('splash_transfer_content'), 'data'=>'')); + add_log_line(); + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>'Error removing source document', 'data'=>'')); + } + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>'Error transfering content', 'data'=>'')); + } + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('access_denied'), 'data'=>'')); + } + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_doc_id'), 'data'=>'')); + } + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('splash_source_doc_has_versions'), 'data'=>'')); + } + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('access_denied'), 'data'=>'')); + } + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_doc_id'), 'data'=>'')); + } + } + } + break; /* }}} */ + + case 'linkdocument': /* {{{ */ + if($user) { + if(!checkFormKey('movedocument', 'GET')) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>'')); + } else { + $mdocument = $dms->getDocument($_REQUEST['docid']); + if($mdocument) { + if ($mdocument->getAccessMode($user, 'linkDocument') >= M_READ) { + if($targetdoc = $dms->getDocument($_REQUEST['targetdocumentid'])) { + if($targetdoc->getAccessMode($user, 'linkDocument') >= M_READWRITE) { + if($targetdoc->addDocumentLink($mdocument->getID(), $user->getID(), false)) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>true, 'message'=>getMLText('splash_link_document'), 'data'=>'')); + add_log_line(); + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>'Error linking document', 'data'=>'')); + } + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('access_denied'), 'data'=>'')); + } + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_doc_id'), 'data'=>'')); + } + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('access_denied'), 'data'=>'')); + } + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_doc_id'), 'data'=>'')); + } + } + } + break; /* }}} */ + case 'deletefolder': /* {{{ */ if($user) { if(!checkFormKey('removefolder', 'GET')) { From e1ae62ec7ec662ffa1d8ffadc2d078cadc4ea216 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 11 Jul 2019 17:18:03 +0200 Subject: [PATCH 116/467] overhaul drag&drop code documents can be dropped on other documents, files can be dropped on folders --- styles/bootstrap/application.js | 332 ++++++++++++++++++--------- views/bootstrap/class.Bootstrap.php | 41 +++- views/bootstrap/class.Clipboard.php | 5 +- views/bootstrap/class.Search.php | 2 +- views/bootstrap/class.ViewFolder.php | 4 +- 5 files changed, 260 insertions(+), 124 deletions(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 086d46a6b..d1b5f96df 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -545,7 +545,6 @@ function onAddClipboard(ev) { /* {{{ */ } function sendFileToServer(formData,status) { - formData.append('command', 'uploaddocument'); var uploadURL = ajaxurl; //Upload URL var extraData ={}; //Extra Data. var jqXHR=$.ajax({ @@ -641,18 +640,28 @@ function onAddClipboard(ev) { /* {{{ */ } } - SeedDMSUpload.handleFileUpload = function(files,obj) { - var target = obj.data('target'); - if(target) { + SeedDMSUpload.handleFileUpload = function(files,obj,statusbar) { + /* target is set for the quick upload area */ + var target_id = obj.data('target'); + var target_type = 'folder'; + /* droptarget is set for folders and documents in lists */ + var droptarget = obj.data('droptarget'); + if(droptarget) { + target_type = droptarget.split("_")[0]; + target_id = droptarget.split("_")[1]; + } + if(target_type == 'folder' && target_id) { for (var i = 0; i < files.length; i++) { if(files[i].size <= maxFileSize) { var fd = new FormData(); - fd.append('folderid', target); - fd.append('formtoken', obj.data('formtoken')); + fd.append('targettype', target_type); + fd.append('folderid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); fd.append('userfile', files[i]); + fd.append('command', 'uploaddocument'); // fd.append('path', files[i].webkitRelativePath); - var status = new createStatusbar(obj); + var status = new createStatusbar(statusbar); status.setFileNameSize(files[i].name,files[i].size); sendFileToServer(fd,status); } else { @@ -666,6 +675,32 @@ function onAddClipboard(ev) { /* {{{ */ }); } } + } else if(target_type == 'document' && target_id) { + /* + for (var i = 0; i < files.length; i++) { + if(files[i].size <= maxFileSize) { + var fd = new FormData(); + fd.append('targettype', target_type); + fd.append('documentid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('userfile', files[i]); + fd.append('command', 'uploaddocument'); + + var status = new createStatusbar(statusbar); + status.setFileNameSize(files[i].name,files[i].size); + sendFileToServer(fd,status); + } else { + noty({ + text: maxFileSizeMsg + '
      ' + files[i].name + ' (' + files[i].size + ' Bytes)', + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 5000, + }); + } + } + */ } } }( window.SeedDMSUpload = window.SeedDMSUpload || {}, jQuery )); /* }}} */ @@ -690,120 +725,209 @@ $(document).ready(function() { /* {{{ */ var files = e.originalEvent.dataTransfer.files; //We need to send dropped files to Server - SeedDMSUpload.handleFileUpload(files,obj); + SeedDMSUpload.handleFileUpload(files,obj,obj); }); - $(document).on('dragenter', '.table-row-folder', function (e) { + $(document).on('dragenter', '.droptarget', function (e) { e.stopPropagation(); e.preventDefault(); $(e.currentTarget).css('border', '2px dashed #0B85A1'); }); - $(document).on('dragleave', '.table-row-folder', function (e) { + $(document).on('dragleave', '.droptarget', function (e) { e.stopPropagation(); e.preventDefault(); $(e.currentTarget).css('border', '0px solid white'); }); - $(document).on('dragover', '.table-row-folder', function (e) { + $(document).on('dragover', '.droptarget', function (e) { e.stopPropagation(); e.preventDefault(); }); - $(document).on('drop', '.table-row-folder', function (e) { + $(document).on('drop', '.droptarget', function (e) { e.preventDefault(); e.stopPropagation(); $(e.currentTarget).css('border', '0px solid white'); - attr_rel = $(e.currentTarget).attr('rel'); + attr_rel = $(e.currentTarget).data('droptarget'); target_type = attr_rel.split("_")[0]; target_id = attr_rel.split("_")[1]; - console.log(e.originalEvent.dataTransfer.getData("text")); - var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); - source_type = source_info.type; - source_id = source_info.id; - formtoken = source_info.formtoken; -// source_type = e.originalEvent.dataTransfer.getData("type"); -// source_id = e.originalEvent.dataTransfer.getData("id"); -// formtoken = e.originalEvent.dataTransfer.getData("formtoken"); - if(source_type == 'document') { - bootbox.dialog(trans.confirm_move_document, [{ - "label" : " "+trans.move_document, - "class" : "btn-danger", - "callback": function() { - $.get('../op/op.Ajax.php', - { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-document-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500, - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500, - }); - } - }, - 'json' - ); - } - }, { - "label" : trans.cancel, - "class" : "btn-cancel", - "callback": function() { - } - }]); + if(target_type == 'folder') { + var files = e.originalEvent.dataTransfer.files; + if(files.length > 0) { + console.log('Drop '+files.length+' files on '+target_type+' '+target_id); + SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$(e.currentTarget).find("span")); + } else { + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); + source_type = source_info.type; + source_id = source_info.id; + formtoken = source_info.formtoken; + console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); + if(source_type == 'document') { + bootbox.dialog(trans.confirm_move_document, [{ + "label" : " "+trans.move_document, + "class" : "btn-danger", + "callback": function() { + $.get('../op/op.Ajax.php', + { command: 'movedocument', docid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-document-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500, + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500, + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); - url = "../out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; -// document.location = url; - } else if(source_type == 'folder' && source_id != target_id) { - bootbox.dialog(trans.confirm_move_folder, [{ - "label" : " "+trans.move_folder, - "class" : "btn-danger", - "callback": function() { - $.get('../op/op.Ajax.php', - { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-folder-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500, - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500, - }); - } - }, - 'json' - ); - } - }, { - "label" : trans.cancel, - "class" : "btn-cancel", - "callback": function() { - } - }]); + url = "../out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; + // document.location = url; + } else if(source_type == 'folder' && source_id != target_id) { + bootbox.dialog(trans.confirm_move_folder, [{ + "label" : " "+trans.move_folder, + "class" : "btn-danger", + "callback": function() { + $.get('../op/op.Ajax.php', + { command: 'movefolder', folderid: source_id, targetfolderid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-folder-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500, + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500, + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); - url = "../out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; -// document.location = url; + url = "../out/out.MoveFolder.php?folderid="+source_id+"&targetid="+target_id; + // document.location = url; + } + } + } else if(target_type == 'document') { + var files = e.originalEvent.dataTransfer.files; + if(files.length > 0) { + console.log('Drop '+files.length+' files on '+target_type+' '+target_id); + SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$(e.currentTarget).find("span")); + } else { + var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); + source_type = source_info.type; + source_id = source_info.id; + formtoken = source_info.formtoken; + console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); + if(source_type == 'document') { + bootbox.dialog(trans.confirm_transfer_link_document, [{ + "label" : " "+trans.transfer_content, + "class" : "btn-danger", + "callback": function() { + $.get('../op/op.Ajax.php', + { command: 'transfercontent', docid: source_id, targetdocumentid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-document-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500, + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500, + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.link_document, + "class" : "btn-danger", + "callback": function() { + $.get('../op/op.Ajax.php', + { command: 'linkdocument', docid: source_id, targetdocumentid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500, + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500, + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); + + url = "../out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; + // document.location = url; + } + } } }); $(document).on('dragstart', '.table-row-folder', function (e) { @@ -816,9 +940,6 @@ $(document).ready(function() { /* {{{ */ formtoken : $(e.target).attr('formtoken') }; e.originalEvent.dataTransfer.setData("text", JSON.stringify(dragStartInfo)); -// e.originalEvent.dataTransfer.setData("id", attr_rel.split("_")[1]); -// e.originalEvent.dataTransfer.setData("type","folder"); -// e.originalEvent.dataTransfer.setData("formtoken", $(e.target).attr('formtoken')); }); $(document).on('dragstart', '.table-row-document', function (e) { @@ -831,9 +952,6 @@ $(document).ready(function() { /* {{{ */ formtoken : $(e.target).attr('formtoken') }; e.originalEvent.dataTransfer.setData("text", JSON.stringify(dragStartInfo)); -// e.originalEvent.dataTransfer.setData("id", attr_rel.split("_")[1]); -// e.originalEvent.dataTransfer.setData("type","document"); -// e.originalEvent.dataTransfer.setData("formtoken", $(e.target).attr('formtoken')); }); /* Dropping item on alert below clipboard */ diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 1644d6de3..792e8960d 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -398,7 +398,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; for ($i = 0; $i < count($path); $i++) { $txtpath .= "
    • "; if ($i +1 < count($path)) { - $txtpath .= "getID()."&showtree=".showtree()."\" rel=\"folder_".$path[$i]->getID()."\" class=\"table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">". + $txtpath .= "getID()."&showtree=".showtree()."\" data-droptarget=\"folder_".$path[$i]->getID()."\" rel=\"folder_".$path[$i]->getID()."\" class=\"table-row-folder droptarget\" formtoken=\"".createFormKey('movefolder')."\">". htmlspecialchars($path[$i]->getName()).""; } else { @@ -1589,7 +1589,7 @@ $(document).ready(function() { if($path || $expandtree>=$level) { if($path) $pathfolder = array_shift($path); - $subfolders = $folder->getSubFolders($orderby[0], $orderdir); + $subfolders = $folder->getSubFolders(isset($orderby[0]) ? $orderby[0] : '', $orderdir); $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); $children = array(); foreach($subfolders as $subfolder) { @@ -1597,7 +1597,7 @@ $(document).ready(function() { if($expandtree>=$level || $pathfolder->getID() == $subfolder->getID()) { $node['children'] = jqtree($path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1); if($showdocs) { - $documents = $subfolder->getDocuments($orderby[0], $orderdir); + $documents = $subfolder->getDocuments(isset($orderby[0]) ? $orderby[0] : '', $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, $accessmode); foreach($documents as $document) { $node2 = array('label'=>$document->getName(), 'id'=>$document->getID(), 'load_on_demand'=>false, 'is_folder'=>false); @@ -1609,7 +1609,7 @@ $(document).ready(function() { } return $children; } else { - $subfolders = $folder->getSubFolders($orderby[0], $orderdir); + $subfolders = $folder->getSubFolders(isset($orderby[0]) ? $orderby[0] : '', $orderdir); $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); $children = array(); foreach($subfolders as $subfolder) { @@ -1634,7 +1634,7 @@ $(document).ready(function() { } else { $node['children'] = jqtree($path, $folder, $this->params['user'], $accessmode, $showdocs, $expandtree, $orderby, 0); if($showdocs) { - $documents = $folder->getDocuments($orderby[0], $orderdir); + $documents = $folder->getDocuments(isset($orderby[0]) ? $orderby[0] : '', $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $this->params['user'], $accessmode); foreach($documents as $document) { $node2 = array('label'=>$document->getName(), 'id'=>$document->getID(), 'load_on_demand'=>false, 'is_folder'=>false); @@ -1675,7 +1675,7 @@ $(function() { onCreateLi: function(node, $li) { // Add 'icon' span before title if(node.is_folder) - $li.find('.jqtree-title').before(' ').attr('rel', 'folder_' + node.id).attr('formtoken', ''); + $li.find('.jqtree-title').before(' ').attr('rel', 'folder_' + node.id).attr('formtoken', '').attr('data-uploadformtoken', ''); else $li.find('.jqtree-title').before(' '); } @@ -2174,6 +2174,15 @@ $(document).ready( function() { "; } /* }}} */ + function documentListRowStart($document) { /* {{{ */ + $docID = $document->getID(); + return ""; + } /* }}} */ + + function documentListRowEnd($document) { /* {{{ */ + return "\n"; + } /* }}} */ + /** * Return HTML of a single row in the document list table * @@ -2197,7 +2206,7 @@ $(document).ready( function() { $docID = $document->getID(); if(!$skipcont) - $content .= ""; + $content .= $this->documentListRowStart($document); if($version) { $latestContent = $this->callHook('documentContent', $document, $version); @@ -2303,10 +2312,18 @@ $(document).ready( function() { $content .= ""; } if(!$skipcont) - $content .= "\n"; + $content .= $this->documentListRowEnd($document); return $content; } /* }}} */ + function folderListRowStart($folder) { /* {{{ */ + return "getID()."\" draggable=\"true\" data-droptarget=\"folder_".$folder->getID()."\" rel=\"folder_".$folder->getID()."\" class=\"folder table-row-folder droptarget\" data-uploadformtoken=\"".createFormKey('adddocument')."\" formtoken=\"".createFormKey('movefolder')."\">"; + } /* }}} */ + + function folderListRowEnd($folder) { /* {{{ */ + return "\n"; + } /* }}} */ + function folderListRow($subFolder, $extracontent=array()) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; @@ -2321,9 +2338,9 @@ $(document).ready( function() { if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; $content = ''; - $content .= "getID()."\" draggable=\"true\" rel=\"folder_".$subFolder->getID()."\" class=\"folder table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">"; - $content .= "getID()."\" draggable=\"false\" href=\"../out/out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\">getMimeIcon(".folder")."\" width=\"24\" height=\"24\" border=0>\n"; - $content .= "getID()."\" href=\"../out/out.ViewFolder.php?folderid=".$subFolder->getID()."&showtree=".$showtree."\">" . htmlspecialchars($subFolder->getName()) . ""; + $content .= $this->folderListRowStart($subFolder); + $content .= "getID()."&showtree=".$showtree."\">getMimeIcon(".folder")."\" width=\"24\" height=\"24\" border=0>\n"; + $content .= "getID()."&showtree=".$showtree."\">" . htmlspecialchars($subFolder->getName()) . ""; $content .= "
      ".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".date('Y-m-d', $subFolder->getDate()).""; if($comment) { $content .= "
      ".htmlspecialchars($comment).""; @@ -2378,7 +2395,7 @@ $(document).ready( function() { } $content .= "
    • "; $content .= ""; - $content .= "\n"; + $content .= $this->folderListRowEnd($subFolder); return $content; } /* }}} */ diff --git a/views/bootstrap/class.Clipboard.php b/views/bootstrap/class.Clipboard.php index 34f2f4451..13dafe1fa 100644 --- a/views/bootstrap/class.Clipboard.php +++ b/views/bootstrap/class.Clipboard.php @@ -103,7 +103,8 @@ class SeedDMS_View_Clipboard extends SeedDMS_Bootstrap_Style { $content = ''; $comment = $folder->getComment(); if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; - $content .= "getID()."\" class=\"folder table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">"; +// $content .= "getID()."\" class=\"folder table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">"; + $content .= $this->folderListRowStart($folder); $content .= "getID()."&showtree=".showtree()."\">getMimeIcon(".folder")."\" width=\"24\" height=\"24\" border=0>\n"; $content .= "getID()."&showtree=".showtree()."\">" . htmlspecialchars($folder->getName()) . ""; if($comment) { @@ -138,7 +139,7 @@ class SeedDMS_View_Clipboard extends SeedDMS_Bootstrap_Style { $version = $latestContent->getVersion(); $status = $latestContent->getStatus(); - $content .= "getID()."\" class=\"table-row-document\" formtoken=\"".createFormKey('movedocument')."\">"; + $content .= $this->documentListRowStart($document); if (file_exists($dms->contentDir . $latestContent->getPath())) { $content .= "getID()."&version=".$version."\">"; diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index d5b36979f..73415eaea 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -55,7 +55,7 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { function js() { /* {{{ */ header('Content-Type: application/javascript; charset=UTF-8'); - parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); + parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); $this->printFolderChooserJs("form1"); $this->printDeleteFolderButtonJs(); diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 8962abeeb..cb9b409f3 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -94,7 +94,7 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style { $showtree = $this->params['showtree']; header('Content-Type: application/javascript; charset=UTF-8'); - parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); + parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); ?> function folderSelected(id, name) { window.location = '../out/out.ViewFolder.php?folderid=' + id; @@ -390,7 +390,7 @@ $('#loadmore').click(function(e) { // $this->addFooterJS("SeedDMSUpload.setMaxFileSize(".SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize")).");"); // $this->addFooterJS("SeedDMSUpload.setMaxFileSizeMsg('".getMLText("uploading_maxsize")."');"); ?> -
      +
      "; echo "
      "; From 62f6431ac71f32a6dbeccb14475858e586599b1a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 11 Jul 2019 17:19:46 +0200 Subject: [PATCH 117/467] new phrases --- languages/ar_EG/lang.inc | 5 +++++ languages/bg_BG/lang.inc | 5 +++++ languages/ca_ES/lang.inc | 5 +++++ languages/cs_CZ/lang.inc | 5 +++++ languages/de_DE/lang.inc | 7 ++++++- languages/el_GR/lang.inc | 5 +++++ languages/en_GB/lang.inc | 7 ++++++- languages/es_ES/lang.inc | 5 +++++ languages/fr_FR/lang.inc | 5 +++++ languages/hr_HR/lang.inc | 5 +++++ languages/hu_HU/lang.inc | 5 +++++ languages/it_IT/lang.inc | 5 +++++ languages/ko_KR/lang.inc | 5 +++++ languages/lo_LA/lang.inc | 5 +++++ languages/nl_NL/lang.inc | 5 +++++ languages/pl_PL/lang.inc | 5 +++++ languages/pt_BR/lang.inc | 5 +++++ languages/ro_RO/lang.inc | 5 +++++ languages/ru_RU/lang.inc | 5 +++++ languages/sk_SK/lang.inc | 5 +++++ languages/sv_SE/lang.inc | 5 +++++ languages/tr_TR/lang.inc | 5 +++++ languages/uk_UA/lang.inc | 5 +++++ languages/zh_CN/lang.inc | 5 +++++ languages/zh_TW/lang.inc | 5 +++++ 25 files changed, 127 insertions(+), 2 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index de0f06586..fcc544ef2 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -283,6 +283,7 @@ URL: [url]', 'confirm_rm_user' => 'هل تود حقا ازالة المستخدم "[username]"?
      كن حذرا: هذا الاجراء لايمكن التراجع فيه', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => 'هل تود حقا ازالة الاصدار [version] الخاص بالمستند "[documentname]"?
      كن حذرا: هذا الاجراء لايمكن التراجع فيه', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '', 'content' => 'المحتوى', @@ -702,6 +703,7 @@ URL: [url]', 'linked_to_document' => 'ﺮﺒﻃ ﺐﻤﻠﻓ ﺄﺧﺭ', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'اذا كنت تود تحميل ملفات اكبر من حجم الملفات المتاحة حاليا, من فضلك استخدم البديل
      صفحة التحميل.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'ﻉﺮﺿ ﻚﻟ ﺎﻠﺻﻼﺤﻳﺎﺗ', 'list_contains_no_access_docs' => '', @@ -1541,6 +1543,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => '', 'splash_invalid_searchterm' => '', +'splash_link_document' => '', 'splash_moved_clipboard' => '', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1571,6 +1574,7 @@ URL: [url]', 'splash_substituted_user' => '', 'splash_switched_back_user' => '', 'splash_toogle_group_manager' => '', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1660,6 +1664,7 @@ URL: [url]', 'toggle_manager' => 'رجح مدير', 'toggle_qrcode' => '', 'to_before_from' => '', +'transfer_content' => '', 'transfer_document' => 'ﺕﺮﺠﻣ ﺎﻠﻤﻠﻓ', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 63ee88dac..bce522960 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -266,6 +266,7 @@ $text = array( 'confirm_rm_user' => 'Изтрий потребител "[username]"?
      Действието е перманентно', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => 'Изтрий версия на [version] документ "[documentname]"?
      Действието е перманентно', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '', 'content' => 'Съдържание', @@ -631,6 +632,7 @@ $text = array( 'linked_to_document' => '', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Ако искате да качите файлове над текущия лимит, използвайте друг начин.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Списък на права', 'list_contains_no_access_docs' => '', @@ -1404,6 +1406,7 @@ $text = array( 'splash_inherit_access' => '', 'splash_invalid_folder_id' => '', 'splash_invalid_searchterm' => '', +'splash_link_document' => '', 'splash_moved_clipboard' => '', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1434,6 +1437,7 @@ $text = array( 'splash_substituted_user' => '', 'splash_switched_back_user' => '', 'splash_toogle_group_manager' => '', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1523,6 +1527,7 @@ $text = array( 'toggle_manager' => 'Превключи мениджър', 'toggle_qrcode' => '', 'to_before_from' => '', +'transfer_content' => '', 'transfer_document' => 'Прехвърли документ', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 5a6b43e65..7408761fe 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -271,6 +271,7 @@ URL: [url]', 'confirm_rm_user' => '¿Vol realment eliminar l\'usuari "[username]"?
      Atenció: aquesta acció no es pot desfer.', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => '¿Vol realment eliminar la versió [version] del document "[documentname]"?
      Atenció: aquesta acció no es pot desfer.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '', 'content' => 'Contingut', @@ -636,6 +637,7 @@ URL: [url]', 'linked_to_document' => '', 'linked_to_this_version' => '', 'link_alt_updatedocument' => '', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Llista tots els tipus d\'accés...', 'list_contains_no_access_docs' => '', @@ -1409,6 +1411,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => '', 'splash_invalid_searchterm' => '', +'splash_link_document' => '', 'splash_moved_clipboard' => '', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1439,6 +1442,7 @@ URL: [url]', 'splash_substituted_user' => '', 'splash_switched_back_user' => '', 'splash_toogle_group_manager' => '', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1528,6 +1532,7 @@ URL: [url]', 'toggle_manager' => 'Intercanviar manager', 'toggle_qrcode' => '', 'to_before_from' => '', +'transfer_content' => '', 'transfer_document' => 'transferir document', 'transfer_no_read_access' => '', 'transfer_no_write_access' => 'transferir sense poder escriure', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 432689409..1c8c0b91c 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'confirm_rm_user' => 'Opravdu chcete odstranit uživatele "[username]"?
      Pozor: Akce je nevratná.', 'confirm_rm_user_from_processes' => 'Opravdu chcete odstranit uživatele "[username]" ze všech procesů?
      Pozor: Tato akce může vést k uvolnění dokumentů, pokud byl uživatel jediným nebo posledním schvalujícím.', 'confirm_rm_version' => 'Opravdu chcete odstranit verzi [version] dokumentu "[documentname]"?
      Buďte opatrní: Tuto činnost není možné vrátit zpět.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => 'Opravdu chcete přenést dokumenty, složky atd. Uživatele "[username]"?
      Pozor: Tuto akci nelze vrátit zpět.', 'confirm_update_transmittalitem' => 'Potvrďte aktualizaci', 'content' => 'Domů', @@ -740,6 +741,7 @@ URL: [url]', 'linked_to_document' => 'Provázáno s dokumentem', 'linked_to_this_version' => 'Provázáno odkazem s touto verzí', 'link_alt_updatedocument' => 'Chcete-li nahrát soubory větší než je maximální velikost pro nahrávání, použijte prosím alternativní stránku.', +'link_document' => '', '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í.', @@ -1620,6 +1622,7 @@ Jméno: [username] 'splash_inherit_access' => 'Přístupové právo bude zděděno', 'splash_invalid_folder_id' => 'Neplatné ID složky', 'splash_invalid_searchterm' => 'Neplatný vyhledávací dotaz', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Schránka přenesena do aktuální složky', 'splash_move_document' => 'Dokument přesunut', 'splash_move_folder' => 'Složka přesunuta', @@ -1650,6 +1653,7 @@ Jméno: [username] 'splash_substituted_user' => 'Zaměněný uživatel', 'splash_switched_back_user' => 'Přepnuto zpět na původního uživatele', 'splash_toogle_group_manager' => 'Manažer skupiny přepnut', +'splash_transfer_content' => '', 'splash_transfer_document' => 'Dokument přenesen', 'splash_transfer_objects' => 'Objekt přenesen', 'splash_trigger_workflow' => 'Spuštěn přechod workflow', @@ -1739,6 +1743,7 @@ Jméno: [username] 'toggle_manager' => 'Přepnout správce', 'toggle_qrcode' => 'Zobrazit / skrýt QR kód', 'to_before_from' => 'Datum ukončení nesmí být před datem zahájení', +'transfer_content' => '', 'transfer_document' => 'Přenést dokument', 'transfer_no_read_access' => 'Uživatel nemá přístup ke čtení ve složce', 'transfer_no_write_access' => 'Uživatel nemá přístup k zápisu do složky', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 92217c35b..72afed2d7 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 (2688), dgrutsch (22) +// Translators: Admin (2694), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -295,6 +295,7 @@ URL: [url]', 'confirm_rm_user' => 'Möchten Sie wirklich den Benutzer "[username]" löschen?
      Beachten Sie, dass diese Operation nicht rückgängig gemacht werden kann.', 'confirm_rm_user_from_processes' => 'Möchten Sie wirklich den Benutzer "[username]" aus allen Prozessen löschen?
      Beachten Sie, dass dies möglicherweise in der Freigabe von Dokumenten resultiert, wenn der Benutzer der einzige oder letzte Prüfer ist.', 'confirm_rm_version' => 'Wollen Sie die Version [version] des Dokumentes "[documentname]" wirklich löschen?
      Achtung: Dieser Vorgang kann nicht rückgängig gemacht werden.', +'confirm_transfer_link_document' => 'Möchten Sie das Dokument verlinken oder dessen Inhalt auf das Zieldokument als neue Version übertragen. Der Inhalt kann nur übertragen werden, wenn das Ursprungsdokument lediglich eine Version hat. Das Ursprungsdokument wird danach gelöscht.', 'confirm_transfer_objects' => 'Möchten Sie wirklich die Dokumente, Ordner, etc. des Benutzer "[username]" übertragen?
      Beachten Sie, dass diese Operation nicht rückgängig gemacht werden kann.', 'confirm_update_transmittalitem' => 'Aktualisierung bestätigen', 'content' => 'Inhalt', @@ -739,6 +740,7 @@ URL: [url]', 'linked_to_document' => 'Mit dem Dokument verknüpft', 'linked_to_this_version' => 'Mit dieser Version verknüpft', 'link_alt_updatedocument' => 'Wenn Sie ein Dokument hochladen möchten, das größer als die maximale Dateigröße ist, dann benutzen Sie bitte die alternative Upload-Seite.', +'link_document' => 'Dokument verlinken', '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.', @@ -1630,6 +1632,7 @@ Name: [username] 'splash_inherit_access' => 'Zugriffsrechte werden geerbt', 'splash_invalid_folder_id' => 'Ungültige Ordner-ID', 'splash_invalid_searchterm' => 'Ungültiger Suchbegriff', +'splash_link_document' => 'Link hinzugefügt', 'splash_moved_clipboard' => 'Inhalt der Zwischenablage in aktuellen Ordner verschoben', 'splash_move_document' => 'Dokument verschoben', 'splash_move_folder' => 'Ordner verschoben', @@ -1660,6 +1663,7 @@ Name: [username] 'splash_substituted_user' => 'Benutzer gewechselt', 'splash_switched_back_user' => 'Zum ursprünglichen Benutzer zurückgekehrt', 'splash_toogle_group_manager' => 'Gruppenverwalter gewechselt', +'splash_transfer_content' => 'Dokumenteninhalt übertragen', 'splash_transfer_document' => 'Dokument übertragen', 'splash_transfer_objects' => 'Objekte übertragen', 'splash_trigger_workflow' => '', @@ -1749,6 +1753,7 @@ Name: [username] 'toggle_manager' => 'Managerstatus wechseln', 'toggle_qrcode' => 'Zeige/verberge QR-Code', 'to_before_from' => 'Endedatum darf nicht vor dem Startdatum liegen', +'transfer_content' => 'Inhalt übertragen', 'transfer_document' => 'Dokument übertragen', 'transfer_no_read_access' => 'Der Benutzer hat in dem Ordner keine Schreibrechte', 'transfer_no_write_access' => 'Der Benutzer hat in dem Ordner keine Schreibrechte', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index b1484434b..91e74cb03 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -266,6 +266,7 @@ $text = array( 'confirm_rm_user' => '', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => '', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '', 'content' => 'Περιεχόμενο', @@ -631,6 +632,7 @@ $text = array( 'linked_to_document' => '', 'linked_to_this_version' => '', 'link_alt_updatedocument' => '', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => '', 'list_contains_no_access_docs' => '', @@ -1415,6 +1417,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => '', 'splash_invalid_searchterm' => '', +'splash_link_document' => '', 'splash_moved_clipboard' => '', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1445,6 +1448,7 @@ URL: [url]', 'splash_substituted_user' => '', 'splash_switched_back_user' => '', 'splash_toogle_group_manager' => '', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1534,6 +1538,7 @@ URL: [url]', 'toggle_manager' => '', 'toggle_qrcode' => '', 'to_before_from' => '', +'transfer_content' => '', 'transfer_document' => '', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 282accc17..e03f8dbff 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 (1780), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1786), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -295,6 +295,7 @@ URL: [url]', 'confirm_rm_user' => 'Do you really want to remove the user "[username]"?
      Be careful: This action cannot be undone.', 'confirm_rm_user_from_processes' => 'Do you really want to remove the user "[username]" from all processes?
      Be careful: This action can lead to the release of documents if the user was the only or last approver.', 'confirm_rm_version' => 'Do you really want to remove version [version] of document "[documentname]"?
      Be careful: This action cannot be undone.', +'confirm_transfer_link_document' => 'Select if you like to link the dragged document or transfer its content to the target document as a new version. Only documents with one version can be transferred. The dragged document will be removed afterwards.', 'confirm_transfer_objects' => 'Do you really want to transfer the documents, folders, etc. of the user "[username]"?
      Be careful: This action cannot be undone.', 'confirm_update_transmittalitem' => 'Confirm update', 'content' => 'Content', @@ -740,6 +741,7 @@ URL: [url]', 'linked_to_document' => 'Linked to document', 'linked_to_this_version' => 'Linked to this version', 'link_alt_updatedocument' => 'If you would like to upload files bigger than the current maximum upload size, please use the alternative upload page.', +'link_document' => 'Link document', '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.', @@ -1625,6 +1627,7 @@ Name: [username] 'splash_inherit_access' => 'Access right will be inherited', 'splash_invalid_folder_id' => 'Invalid folder ID', 'splash_invalid_searchterm' => 'Invalid search term', +'splash_link_document' => 'Link added', 'splash_moved_clipboard' => 'Clipboard moved into current folder', 'splash_move_document' => 'Document moved', 'splash_move_folder' => 'Folder moved', @@ -1655,6 +1658,7 @@ Name: [username] 'splash_substituted_user' => 'Substituted user', 'splash_switched_back_user' => 'Switched back to original user', 'splash_toogle_group_manager' => 'Group manager toogled', +'splash_transfer_content' => 'Content transfered', 'splash_transfer_document' => 'Document transfered', 'splash_transfer_objects' => 'Objects transfered', 'splash_trigger_workflow' => 'Triggered transition of workflow', @@ -1744,6 +1748,7 @@ Name: [username] 'toggle_manager' => 'Toggle manager', 'toggle_qrcode' => 'Show/hide QR code', 'to_before_from' => 'End date may not be before start date', +'transfer_content' => 'Transfer content', 'transfer_document' => 'Transfer document', 'transfer_no_read_access' => 'The user does not have read access in the folder', 'transfer_no_write_access' => 'The user does not have write access in the folder', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 4e93f1ff4..aef6cca48 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -290,6 +290,7 @@ URL: [url]', 'confirm_rm_user' => '¿Desea realmente eliminar el usuario "[username]"?
      Atención: Esta acción no se puede deshacer.', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => '¿Desea realmente eliminar la versión [version] del documento "[documentname]"?
      Atención: esta acción no se puede deshacer.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '', 'content' => 'Contenido', @@ -709,6 +710,7 @@ URL: [url]', 'linked_to_document' => 'Enlazado al documento', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Si desea subir archivos mayores que el tamaño máximo actualmente permitido, por favor, utilice la página de subida alternativa.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Listar los derechos de acceso', 'list_contains_no_access_docs' => '', @@ -1556,6 +1558,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'ID de carpeta inválido', 'splash_invalid_searchterm' => 'Término de búsqueda inválido', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Portapapeles movido a la carpeta actual', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1586,6 +1589,7 @@ URL: [url]', 'splash_substituted_user' => 'Usuario sustituido', 'splash_switched_back_user' => 'Cambió de nuevo al usuario original', 'splash_toogle_group_manager' => 'Administrador de grupo activado', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1675,6 +1679,7 @@ URL: [url]', 'toggle_manager' => 'Intercambiar mánager', 'toggle_qrcode' => '', 'to_before_from' => 'La fecha de finalización no debe ser anterior a la de inicio', +'transfer_content' => '', 'transfer_document' => 'Transferir documento', 'transfer_no_read_access' => 'El usuario no tiene acceso de lectura en la carpeta', 'transfer_no_write_access' => 'El usuario no tiene acceso de escritura en la carpeta', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index ccd3831e8..8fbefcd99 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'confirm_rm_user' => 'Voulez-vous vraiment supprimer l’utilisateur « [username] » ?
      Attention : Cette action est irréversible.', 'confirm_rm_user_from_processes' => 'Voulez-vous vraiment retirer l’utilisateur « [username] » de tous les processus ?
      Attention : Cette action peut entrainer la publication des documents si l’utilisateur était le seul (ou dernier) approbateur.', 'confirm_rm_version' => 'Voulez-vous vraiment supprimer la version [version] du document « [documentname] » ?
      Attention : Cette action est irréversible.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => 'Voulez-vous vraiment transférer les documents, dossiers, etc. de l’utilisateur « [username] » ?
      Attention : Cette action est irréversible.', 'confirm_update_transmittalitem' => 'Confirmer la mise à jour', 'content' => 'Contenu', @@ -740,6 +741,7 @@ URL: [url]', 'linked_to_document' => 'Lié au document', 'linked_to_this_version' => 'Lié à cette version', 'link_alt_updatedocument' => 'Pour déposer des fichiers de taille supérieure, utilisez la page d\'ajout multiple.', +'link_document' => '', '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.', @@ -1609,6 +1611,7 @@ Nom : [username] 'splash_inherit_access' => 'Droits d’accès hérités', 'splash_invalid_folder_id' => 'Identifiant de répertoire invalide', 'splash_invalid_searchterm' => 'Recherche invalide', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Contenu du presse-papier déplacé vers le dossier courant', 'splash_move_document' => 'Document déplacé', 'splash_move_folder' => 'Dossier déplacé', @@ -1639,6 +1642,7 @@ Nom : [username] 'splash_substituted_user' => 'Utilisateur de substitution', 'splash_switched_back_user' => 'Revenu à l\'utilisateur initial', 'splash_toogle_group_manager' => 'Responsable de groupe changé', +'splash_transfer_content' => '', 'splash_transfer_document' => 'Document transféré', 'splash_transfer_objects' => 'Objets transférés', 'splash_trigger_workflow' => 'Transition de workflow déclenchée', @@ -1728,6 +1732,7 @@ Nom : [username] 'toggle_manager' => 'Basculer \'Responsable\'', 'toggle_qrcode' => 'Afficher/masquer le QR code', 'to_before_from' => 'La date de fin ne peut pas être avant la date de début.', +'transfer_content' => '', 'transfer_document' => 'Transférer le document', 'transfer_no_read_access' => 'L’utilisateur n’a pas le droit de lecture dans ce dossier', 'transfer_no_write_access' => 'L’utilisateur n’a pas le droit d’écriture dans ce dossier', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index fe53bb654..44a8362c3 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -295,6 +295,7 @@ Internet poveznica: [url]', 'confirm_rm_user' => 'Da li zaista želite ukloniti korisnika "[username]"?
      Oprez: ova radnja nije povratna.', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => 'Da li zaista želite ukloniti verziju [version] dokumenta "[documentname]"?
      Oprez: ova radnja nije povratna.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => 'Potvrdi izmjenu', 'content' => 'Sadržaj', @@ -714,6 +715,7 @@ Internet poveznica: [url]', 'linked_to_document' => '', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Ako želite prenijeti datoteke veće od trenutne maksimalne veličine prijenosa, molimo koristite alternativu upload page.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Izlistaj sve dozvole pristupa', 'list_contains_no_access_docs' => '', @@ -1577,6 +1579,7 @@ Internet poveznica: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'Nevažeći ID mape', 'splash_invalid_searchterm' => 'Nevažeći traženi pojam', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Međuspremnik je premješten u trenutnu mapu', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1607,6 +1610,7 @@ Internet poveznica: [url]', 'splash_substituted_user' => 'Zamjenski korisnik', 'splash_switched_back_user' => 'Prebačeno nazad na izvornog korisnika', 'splash_toogle_group_manager' => 'Zamjenjen upravitelj grupe', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1696,6 +1700,7 @@ Internet poveznica: [url]', 'toggle_manager' => 'Zamjeni upravitelja', 'toggle_qrcode' => '', 'to_before_from' => 'Datum završetka ne može biti prije datuma početka', +'transfer_content' => '', 'transfer_document' => 'Prijenos dokumenta', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index b6b681de3..d310578fd 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -290,6 +290,7 @@ URL: [url]', 'confirm_rm_user' => 'Biztosan el kívánja távolítani ezt a felhasználót "[username]"?
      Legyen óvatos: Ez a művelet nem vonható vissza.', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => 'Biztosan el kívánaj távolítani a dokumentum "[documentname]" [version] verzióját?
      Legyen óvatos: Ez a művelet nem vonható vissza.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '', 'content' => 'Tartalom', @@ -709,6 +710,7 @@ URL: [url]', 'linked_to_document' => '', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Ha a jelenlegi maximális feltöltési méretnél nagyobb állományokat szeretne feltölteni, akkor használja az alternatív feltöltő oldalt.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Összes jogosultság felsorolása...', 'list_contains_no_access_docs' => '', @@ -1555,6 +1557,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'Érvénytelen mappa azonosító', 'splash_invalid_searchterm' => 'Érvénytelen keresési feltétel', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Vágólap tartalom áthelyezve az aktuális mappába', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1585,6 +1588,7 @@ URL: [url]', 'splash_substituted_user' => 'Helyettesített felhasználó', 'splash_switched_back_user' => 'Visszaváltva az eredeti felhasználóra', 'splash_toogle_group_manager' => 'Csoport kezelő kiválasztva', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1674,6 +1678,7 @@ URL: [url]', 'toggle_manager' => 'Kulcs kezelő', 'toggle_qrcode' => '', 'to_before_from' => 'A lejárati dátum nem előzheti meg a kezdési dátumot', +'transfer_content' => '', 'transfer_document' => 'Tulajdonos váltás', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 55f2ee3de..228260ea4 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -296,6 +296,7 @@ URL: [url]', 'confirm_rm_user' => 'Vuoi davvero rimuovere l\'utente "[username]"? Attenzione: questa operazione non può essere annullata.', 'confirm_rm_user_from_processes' => 'Processo', 'confirm_rm_version' => 'Vuoi veramente eliminare la versione [version] del documento "[documentname]"? Attenzione: questa operazione non può essere annullata.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => 'Conferma aggiornamento', 'content' => 'Contenuto', @@ -715,6 +716,7 @@ URL: [url]', 'linked_to_document' => 'Collegato al documento', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Se vuoi caricare file più grandi del limite massimo attuale, usa la pagina alternativa di upload.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Elenca tutti i diritti di accesso...', 'list_contains_no_access_docs' => '', @@ -1589,6 +1591,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'ID cartella non valido', 'splash_invalid_searchterm' => 'Termine di ricerca non valido', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Appunti trasferiti nella cartella corrente', 'splash_move_document' => 'Documento spostato', 'splash_move_folder' => 'Cartella spostato', @@ -1619,6 +1622,7 @@ URL: [url]', 'splash_substituted_user' => 'Utente sostituito', 'splash_switched_back_user' => 'Ritorno all\'utente originale', 'splash_toogle_group_manager' => 'Amministratore di gruppo invertito', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1708,6 +1712,7 @@ URL: [url]', 'toggle_manager' => 'Gestore', 'toggle_qrcode' => 'Mostri / nascondi codice QR', 'to_before_from' => 'La data di fine non può essere antecedente a quella di inizio', +'transfer_content' => '', 'transfer_document' => 'Trasferisci Documento', 'transfer_no_read_access' => 'L`utente non ha i permessi in lettura per la cartella', 'transfer_no_write_access' => 'L`utente non ha i permessi in scrittura per la cartella', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index b97af1366..f515ed3f6 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -298,6 +298,7 @@ URL: [url]', 'confirm_rm_user' => '사용자 "[username]"을 정말 삭제 하시겠습니까?
      주의: 취소가 불가능 합니다.', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => '문서 "[documentname]"의 버젼 [version]을 정말 삭제 하시겠습니까?
      주의: 취소가 불가능 합니다.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '업데이트 확인', 'content' => '콘텐츠', @@ -715,6 +716,7 @@ URL: [url]', 'linked_to_document' => '', 'linked_to_this_version' => '', 'link_alt_updatedocument' => '최대 업로드 크기보다 큰 파일을 업로드하려는 경우, 대체 업로드 페이지를 upload page 사용하십시오.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => '모든 접근 권한 나열', 'list_contains_no_access_docs' => '', @@ -1571,6 +1573,7 @@ URL : [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => '잘못된 폴더 ID', 'splash_invalid_searchterm' => '잘못된 검색 범위', +'splash_link_document' => '', 'splash_moved_clipboard' => '클립 보드가 현재 폴더로 이동', 'splash_move_document' => '문서 옮겨짐', 'splash_move_folder' => '폴더 옮겨짐', @@ -1601,6 +1604,7 @@ URL : [url]', 'splash_substituted_user' => '전환된 사용자', 'splash_switched_back_user' => '원래 사용자로 전환', 'splash_toogle_group_manager' => '그룹 관리자 전환', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1690,6 +1694,7 @@ URL : [url]', 'toggle_manager' => '전환 매니저', 'toggle_qrcode' => 'QR code 보이기/숨기기', 'to_before_from' => '종료일은 시작일 전이 될수 없습니다', +'transfer_content' => '', 'transfer_document' => '', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index 84965ef76..0e881a928 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -293,6 +293,7 @@ URL: [url]', 'confirm_rm_user' => 'ເຈົ້າຄ້ອງການລົບຜູ້ໄຊ້ "[username]"?
      ລະວັງ: ການກະທຳນີ້ບໍ່ສາມາດຍົກເລີກໄດ້', 'confirm_rm_user_from_processes' => 'ເຈົ້າຕ້ອງການລົບຜູ້ໄຊ້ "[username] ອອກຈາກກະບວນການທັງຫມົດຫຼືບໍ
      ກະລຸນາໄຊ້ຄວາມລະມັດລະວັງ: ການດຳເນີນການນີ້ສາມາດນຳໄປສູ້ການເຜີຍແຜ່ເອກະສານໄດ້ຫາກຜູ້ໄຊ້ເປັນຜູ້ອະນຸມັດຜູ້ດຽວຫຼືເປັນຄົນສຸດທ້າຍເທົ່ານັ້ນ', 'confirm_rm_version' => 'ເຈົ້າຕ້ອງການລົບເອກະສານ [version] ເວີຊັນ [documentname] ລະວັງ: ເຈົ້າາບໍ່ສາມາດຍົກເລີກການດຳເນີນການນີ້ໄດ້', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => 'ເຈົ້າຕ້ອງການໂອນເອກະສານໂຟລເດີ ແລະອື່ນໆ ຂອງຜູ້ໄຊ້ "[username]"?
      ລະວັງ ການກະທໍານີ້ບໍ່ສາມາດຍົກເລີກໄດ້', 'confirm_update_transmittalitem' => 'ຢືນຢັນການອັບເດດ', 'content' => 'ເນື້ອຫາ', @@ -719,6 +720,7 @@ URL: [url]', 'linked_to_document' => 'ເຊື່ອມໂຍງກັລເອກະສານ', 'linked_to_this_version' => 'ເຊື່ອມໂຍງກັບເວີຊັນນີ້ແລ້ວ', 'link_alt_updatedocument' => 'ຖ້າເຈົ້າຕ້ອງການອັບໂຫລດໄຟລທີ່ໄຫ່ຍກວ່າຂະໜາດອັບໂຫລດສູງສຸດໃນປັດຈຸບັນກະລຸນາໄຊ້ ອັບໂຫລດຢູ່ຫ້າເຟສ ', +'link_document' => '', 'link_to_version' => 'ແນບໄປພ້ອມກັບເວີຊັນ', 'list_access_rights' => 'ສະແດງສິດທິການເຂົ້າເຖິງທັງໝົດ ...', 'list_contains_no_access_docs' => 'ລິດລາຍການປະກອບດ້ວຍເອກະສານເພີ່ມເຕີມທີ່ເຈົ້າບໍ່ສາມາດເຂົ້າເຖິງໄດ້ ແລະບໍ່ສະແດງ', @@ -1604,6 +1606,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'ID ໂຟລເດີບໍ່ຖືກຕ້ອງ', 'splash_invalid_searchterm' => 'ຄຳຄົນຫາບໍ່ຖືກຕ້ອງ', +'splash_link_document' => '', 'splash_moved_clipboard' => 'ຍ້າຍຄິບບອດໄປທີ່ໂຟລເດີປັດຈຸບັນແລ້ວ', 'splash_move_document' => 'ຍ້າຍເອກະສານແລ້ວ', 'splash_move_folder' => 'ຍ້າຍໂຟລເດີແລ້ວ', @@ -1634,6 +1637,7 @@ URL: [url]', 'splash_substituted_user' => 'ຜູ້ນຳໄຊ້ທີຖືກແທນທີ', 'splash_switched_back_user' => 'ປ່ຽນກັບໄປເປັນຜູ້ໄຊ້ເດີມ', 'splash_toogle_group_manager' => 'ການດູແລກຸ່ມ', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => 'ຖ່າຍໂອນວັດຖຸຮຽບຮ້ອຍແລ້ວ', 'splash_trigger_workflow' => '', @@ -1723,6 +1727,7 @@ URL: [url]', 'toggle_manager' => 'ສຳລັບຜູ້ຈັດການ', 'toggle_qrcode' => 'ສະແດງ/ ຊ້ອນລະຫັດ QR', 'to_before_from' => 'ວັນເລີ້ມຕົ້ນຈະບໍ່ຄືກັບວັນສຸດທ້າຍ', +'transfer_content' => '', 'transfer_document' => '', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index d2f34f932..d7cfb6de7 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -288,6 +288,7 @@ URL: [url]', 'confirm_rm_user' => 'Weet U zeker dat U de Gebruiker "[username]" wilt verwijderen?
      Let op: deze handeling kan niet ongedaan worden gemaakt.', 'confirm_rm_user_from_processes' => 'Weet U zeker dat U de Gebruiker "[username]" wilt verwijderen uit dit proces?
      Let op: deze handeling kan niet ongedaan worden gemaakt.', 'confirm_rm_version' => 'Weet U zeker dat U deze versie van het document "[documentname]" wilt verwijderen?
      Pas op: deze handeling kan niet ongedaan worden gemaakt.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => 'Weet U zeker dat U de documenten, mappen etc. van gebruiker "[username]" wilt overzetten?
      Let op: deze handeling kan niet ongedaan worden gemaakt.', 'confirm_update_transmittalitem' => 'Bevestig verandering van te verzenden item', 'content' => 'Welkomstpagina', @@ -714,6 +715,7 @@ URL: [url]', 'linked_to_document' => 'Bijlage(n) bij document', 'linked_to_this_version' => 'Bijlage bij deze versie', 'link_alt_updatedocument' => 'Als u bestanden wilt uploaden groter dan het huidige maximum, gebruik aub de alternatieve upload pagina.', +'link_document' => '', 'link_to_version' => 'Bijlage(n) bij versie', 'list_access_rights' => 'Toegangsrechten', 'list_contains_no_access_docs' => 'Geen toegankelijke documenten', @@ -1601,6 +1603,7 @@ Name: [username] 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'Ongeldige map ID', 'splash_invalid_searchterm' => 'Ongeldige zoekterm', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Klembord verplaatst naar de huidige map', 'splash_move_document' => 'Document verplaatst', 'splash_move_folder' => 'Map verplaatst', @@ -1631,6 +1634,7 @@ Name: [username] 'splash_substituted_user' => 'Invallers gebruiker', 'splash_switched_back_user' => 'Teruggeschakeld naar de oorspronkelijke gebruiker', 'splash_toogle_group_manager' => 'Group manager toogled', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => 'Objecten overgedragen', 'splash_trigger_workflow' => '', @@ -1720,6 +1724,7 @@ Name: [username] 'toggle_manager' => 'Wijzig Beheerder', 'toggle_qrcode' => 'Tonen/Verbergen QR-code', 'to_before_from' => 'De einddatum mag niet voor de startdatum liggen', +'transfer_content' => '', 'transfer_document' => 'Document overdragen', 'transfer_no_read_access' => '', 'transfer_no_write_access' => 'De gebruiker heeft geen schrijfrechten in deze map', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 46fc1324a..ae4184483 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -283,6 +283,7 @@ URL: [url]', 'confirm_rm_user' => 'Czy rzeczywiście chcesz usunąć użytkownika "[username]"?
      Ostrożnie: Ta operacja nie może być cofnięta.', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => 'Czy rzeczywiście chcesz usunąć wersję [version] dokumentu "[documentname]"?
      Ostrożnie: Ta operacja nie może być cofnięta.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '', 'content' => 'Zawartość', @@ -702,6 +703,7 @@ URL: [url]', 'linked_to_document' => 'Połączony z dokumentem', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Jeśli chcesz wczytać pliki większe niż bieżące maksimum, użyj alternatywnej strony wczytywania.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Pokaż uprawnienia dostępu', 'list_contains_no_access_docs' => '', @@ -1535,6 +1537,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'Nieprawidłowy identyfikator folderu', 'splash_invalid_searchterm' => 'Nieprawidłowa wartość wyszukiwania', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Schowek został przeniesiony do bieżącego folderu', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1565,6 +1568,7 @@ URL: [url]', 'splash_substituted_user' => 'Zmieniono użytkownika', 'splash_switched_back_user' => 'Przełączono z powrotem do oryginalnego użytkownika', 'splash_toogle_group_manager' => 'Przełączono grupę menadżerów', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1654,6 +1658,7 @@ URL: [url]', 'toggle_manager' => 'Przełączanie zarządcy', 'toggle_qrcode' => '', 'to_before_from' => '', +'transfer_content' => '', 'transfer_document' => 'Transfer dokumentu', 'transfer_no_read_access' => 'Użytkownik nie ma prawa do odczytu w tym folderze', 'transfer_no_write_access' => 'Użytkownik nie ma prawa do zapisu w tym folderze', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index c34c3a96f..07729ae35 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'confirm_rm_user' => 'Você realmente deseja remover o usuário "[username]"?
      Tenha cuidado: esta ação não pode ser desfeita.', 'confirm_rm_user_from_processes' => 'Você realmente deseja remover o usuário "[username]" de todos os processos?
      Tenha cuidado: essa ação pode levar à liberação de documentos se o usuário for o único ou o último aprovador.', 'confirm_rm_version' => 'Deseja realmente remover versão [version] do documento "[documentname]"?
      Por favor, tenha cuidado porque esta ação não poderá ser desfeita.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => 'Você realmente quer transferir os documentos, pastas etc. do usuário "[username]"?
      Tenha cuidado: Esta ação não pode ser desfeita.', 'confirm_update_transmittalitem' => 'Confirme a atualização', 'content' => 'Conteúdo', @@ -740,6 +741,7 @@ URL: [url]', 'linked_to_document' => 'Vinculado ao documento', 'linked_to_this_version' => 'Vinculado a esta versão', 'link_alt_updatedocument' => 'Se você gostaria de fazer envio de arquivos maiores que o tamanho permitido, por favor use a página alternativa de envio.', +'link_document' => '', '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.', @@ -1623,6 +1625,7 @@ Nome: [username] 'splash_inherit_access' => 'O direito de acesso será herdado', 'splash_invalid_folder_id' => 'ID de pasta inválida', 'splash_invalid_searchterm' => 'Termo de pesquisa inválido', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Área de transferência movida para a pasta corrente', 'splash_move_document' => 'Documento movido', 'splash_move_folder' => 'Pasta movida', @@ -1653,6 +1656,7 @@ Nome: [username] 'splash_substituted_user' => 'Usuário substituido', 'splash_switched_back_user' => 'Comutada de volta ao usuário original', 'splash_toogle_group_manager' => 'Gerente Grupo alternado', +'splash_transfer_content' => '', 'splash_transfer_document' => 'Documento transferido', 'splash_transfer_objects' => 'Objetos transferidos', 'splash_trigger_workflow' => 'Acionada transição do fluxo de trabalho', @@ -1742,6 +1746,7 @@ Nome: [username] 'toggle_manager' => 'Alternar gerente', 'toggle_qrcode' => 'Mostrar / ocultar o código QR', 'to_before_from' => 'A data de término não pode ser anterior a data de início', +'transfer_content' => '', 'transfer_document' => 'Transferir documento', 'transfer_no_read_access' => 'O usuário não possui acesso de leitura na pasta', 'transfer_no_write_access' => 'O usuário não possui acesso de escrita na pasta', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index cf81b7c97..cac87904d 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'confirm_rm_user' => 'Sigur doriți să eliminați utilizatorul "[username]"?
      Fiți atenți: Această acțiune nu poate fi anulată.', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => 'Sigur doriți să eliminați versiunea [version] a documentului "[documentname]"?
      Fiți atenți: Această acțiune nu poate fi anulată.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '', 'content' => 'Conținut', @@ -714,6 +715,7 @@ URL: [url]', 'linked_to_document' => 'Atasat documentului', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Dacă doriți să încărcați fișiere mai mari decât dimensiunea maximă curentă de încărcare, vă rugăm să folosiți alternativa pagină de încărcare.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Listeaza toate drepturile de acces', 'list_contains_no_access_docs' => '', @@ -1578,6 +1580,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'ID folder invalid', 'splash_invalid_searchterm' => 'Termen de căutare invalid', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Clipboard mutat în folderul curent', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1608,6 +1611,7 @@ URL: [url]', 'splash_substituted_user' => 'Utilizator substituit', 'splash_switched_back_user' => 'Comutat înapoi la utilizatorul original', 'splash_toogle_group_manager' => 'Comută Managerul de grup', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1697,6 +1701,7 @@ URL: [url]', 'toggle_manager' => 'Comută Manager', 'toggle_qrcode' => '', 'to_before_from' => 'Data de încheiere nu poate fi înainte de data de începere', +'transfer_content' => '', 'transfer_document' => 'Transfer document', 'transfer_no_read_access' => '', 'transfer_no_write_access' => 'Utilizatorul nu are drepturi de scriere pe acest dosar', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 0471d460b..49917e420 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'confirm_rm_user' => 'Удалить пользователя «[username]»?
      Действие необратимо', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => 'Удалить версию [version] документа «[documentname]»?
      Действие необратимо', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => 'Подтвердите обновление', 'content' => 'Содержимое', @@ -714,6 +715,7 @@ URL: [url]', 'linked_to_document' => 'Связан с документом', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Для загрузки файлов, превышающих ограничение размера, используйте другой способ.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Показать все права доступа', 'list_contains_no_access_docs' => '', @@ -1585,6 +1587,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'Неверный идентификатор каталога', 'splash_invalid_searchterm' => 'Неверный поисковый запрос', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Буфер обмена перенесён в текущий каталог', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1615,6 +1618,7 @@ URL: [url]', 'splash_substituted_user' => 'Пользователь переключён', 'splash_switched_back_user' => 'Переключён на исходного пользователя', 'splash_toogle_group_manager' => 'Изменён менеджер группы', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1704,6 +1708,7 @@ URL: [url]', 'toggle_manager' => 'Изменить как менеджера', 'toggle_qrcode' => '', 'to_before_from' => 'Конечная дата не может быть меньше начальной даты', +'transfer_content' => '', 'transfer_document' => 'Передать документ', 'transfer_no_read_access' => 'Пользователь не имеет доступа на чтение в этой папке', 'transfer_no_write_access' => 'Пользователь не имеет доступа на запись в этой папке', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 838324151..741df4153 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'confirm_rm_user' => 'Skutočne si prajete odstrániť používateľa "[username]"?
      Buďte opatrní, táto akcia je nezvratná.', 'confirm_rm_user_from_processes' => 'Do you really want to remove the user "[username]" from all processes?
      Be careful: This action can lead to the release of documents if the user was the only or last approver.', 'confirm_rm_version' => 'Naozaj chcete odstrániť verziu [version] dokumentu "[documentname]"?
      Buďte opatrní: Túto operáciu nemožno vrátiť späť.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => 'Do you really want to transfer the documents, folders, etc. of the user "[username]"?
      Be careful: This action cannot be undone.', 'confirm_update_transmittalitem' => 'Potvrdiť aktualizáciu', 'content' => 'Obsah', @@ -740,6 +741,7 @@ URL: [url]', 'linked_to_document' => 'Prepojené s dokumentom', 'linked_to_this_version' => 'Prepojené s touto verziou', 'link_alt_updatedocument' => 'If you would like to upload files bigger than the current maximum upload size, please use the alternative upload page.', +'link_document' => '', '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é.', @@ -1625,6 +1627,7 @@ Meno: [username] 'splash_inherit_access' => 'Access right will be inherited', 'splash_invalid_folder_id' => 'Neplatné ID zložky', 'splash_invalid_searchterm' => 'Invalid search term', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Schránka sa presunula do aktuálnej zložky', 'splash_move_document' => 'Dokument bol presunutý', 'splash_move_folder' => 'Zložka bola presunutá', @@ -1655,6 +1658,7 @@ Meno: [username] 'splash_substituted_user' => 'Substituted user', 'splash_switched_back_user' => 'Switched back to original user', 'splash_toogle_group_manager' => 'Group manager toogled', +'splash_transfer_content' => '', 'splash_transfer_document' => 'Document transfered', 'splash_transfer_objects' => 'Objects transfered', 'splash_trigger_workflow' => '', @@ -1744,6 +1748,7 @@ Meno: [username] 'toggle_manager' => 'Prepnúť stav manager', 'toggle_qrcode' => 'Ukázať/skryť QR kód', 'to_before_from' => 'End date may not be before start date', +'transfer_content' => '', 'transfer_document' => 'Zmeniť vlastníka', 'transfer_no_read_access' => 'Používateľ nemá práva na čítanie v adresári', 'transfer_no_write_access' => 'Používateľ nemá práva na zapisovanie v adresári', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index f362ad09a..542705239 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -296,6 +296,7 @@ URL: [url]', 'confirm_rm_user' => 'Vill du verkligen ta bort användaren "[username]"?
      OBS! Åtgärden kan inte ångras!', 'confirm_rm_user_from_processes' => 'Vill du verkligen ta bort användaren "[username]" från alla arbetsflöden?
      Var försiktig! Denna åtgärd kan innebära oönskad publicering om användaren är den sista eller enda godkännaren i ett arbetsflöde.', 'confirm_rm_version' => 'Vill du verkligen ta bort versionen [version] av dokumentet "[documentname]"?
      OBS! Åtgärden kan inte ångras!', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => 'Vill du verkligen flytta dokument, kataloger m m tillhörande användaren "[username]"? OBS! Åtgärden kan inte ångras!', 'confirm_update_transmittalitem' => 'Bekräfta uppdatering', 'content' => 'Innehåll', @@ -727,6 +728,7 @@ URL: [url]', 'linked_to_document' => 'Länkad till dokument', 'linked_to_this_version' => 'Länkad till denna version', 'link_alt_updatedocument' => 'Om du vill ladda upp filer som är större än den aktuella största tillåtna storleken, använd dig av den alternativa metoden att ladda upp filer Alternativ uppladdning.', +'link_document' => '', '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.', @@ -1598,6 +1600,7 @@ Kommentar: [comment]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'Ogiltigt katalog-ID', 'splash_invalid_searchterm' => 'Ogiltigt sökord', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Urklipp flyttades till aktuell katalog', 'splash_move_document' => 'Dokumentet flyttat', 'splash_move_folder' => 'Katalogen flyttad', @@ -1628,6 +1631,7 @@ Kommentar: [comment]', 'splash_substituted_user' => 'Bytt användare', 'splash_switched_back_user' => 'Byt tillbaka till original användare', 'splash_toogle_group_manager' => 'Gruppmanager har ändrats', +'splash_transfer_content' => '', 'splash_transfer_document' => 'Dokument överfört', 'splash_transfer_objects' => 'Objekt överförda', 'splash_trigger_workflow' => '', @@ -1717,6 +1721,7 @@ Kommentar: [comment]', 'toggle_manager' => 'Byt manager', 'toggle_qrcode' => 'Visa/göm QR-kod', 'to_before_from' => 'Slutdatum får inte vara innan startdatum', +'transfer_content' => '', 'transfer_document' => 'Överför dokument', 'transfer_no_read_access' => 'Användaren har inte läsrättigheter i katalogen', 'transfer_no_write_access' => 'Användaren har inte skrivrättigheter i katalogen', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index b8b53939a..669122685 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -289,6 +289,7 @@ URL: [url]', 'confirm_rm_user' => '"[username]" kullanıcısını silmeyi onaylıyor musunuz?
      Dikkatli olun: Bu eylemin geri dönüşü yoktur.', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => '"[documentname]" dokümanının [version] versiyonunu silmek istiyor musunuz?
      Dikkatli olun: Bu eylemin geri dönüşü yoktur.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '', 'content' => 'İçerik', @@ -708,6 +709,7 @@ URL: [url]', 'linked_to_document' => '', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Mevcut maksimum yükleme boyutundan daha büyük dosya yüklemek istiyorsanız alternatif yükleme sayfası için tıklayın.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Tüm erişim haklarini listele', 'list_contains_no_access_docs' => '', @@ -1557,6 +1559,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'Hatalı klasör ID', 'splash_invalid_searchterm' => 'Hatalı arama terimi', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Pano mevcut klasöre taşındı', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1587,6 +1590,7 @@ URL: [url]', 'splash_substituted_user' => 'Yerine geçilen kullanıcı', 'splash_switched_back_user' => 'Orijinal kullanıcıya geri dönüldü', 'splash_toogle_group_manager' => 'Grup yöneticisi değişti', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1676,6 +1680,7 @@ URL: [url]', 'toggle_manager' => 'Değişim yönetimi', 'toggle_qrcode' => '', 'to_before_from' => 'Bitiş tarihi başlama tarihinden önce olamaz', +'transfer_content' => '', 'transfer_document' => 'Dokumanı gönder', 'transfer_no_read_access' => 'Kullanıcının klasörde okuma erişimi yok.', 'transfer_no_write_access' => 'Kullanıcının klasör üzerinde yazma hakkı yok', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index be3385893..ccc5a7c0e 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'confirm_rm_user' => 'Видалити користувача «[username]»?
      Дія незворотня', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => 'Видалити версію [version] документа «[documentname]»?
      Дія незворотня', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => 'Підтвердити оновлення', 'content' => 'Вміст', @@ -714,6 +715,7 @@ URL: [url]', 'linked_to_document' => '', 'linked_to_this_version' => '', 'link_alt_updatedocument' => 'Для завантаження файлів, які перевищують обмеження розміру, використовуйте інший метод.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => 'Повний список прав...', 'list_contains_no_access_docs' => '', @@ -1578,6 +1580,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => 'Невірний ідентифікатор каталогу', 'splash_invalid_searchterm' => 'Невірний пошуковий запит', +'splash_link_document' => '', 'splash_moved_clipboard' => 'Буфер обміну перенесено в поточний каталог', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1608,6 +1611,7 @@ URL: [url]', 'splash_substituted_user' => 'Користувача переключено', 'splash_switched_back_user' => 'Переключено на початкового користувача', 'splash_toogle_group_manager' => 'Змінено менеджера групи', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1697,6 +1701,7 @@ URL: [url]', 'toggle_manager' => 'Змінити ознаку менеджера', 'toggle_qrcode' => '', 'to_before_from' => 'Кінцева дата не може бути меншою початкової дати', +'transfer_content' => '', 'transfer_document' => '', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 72d351a6f..06fe3aa4b 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -287,6 +287,7 @@ URL: [url]', 'confirm_rm_user' => '您确定要删除"[username]"用户?
      请注意:此动作执行后不能撤销.', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => '您确定要删除"[documentname]文档的[version]版本文件?
      请注意:此动作执行后不能撤销.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '确认更新', 'content' => '内容', @@ -710,6 +711,7 @@ URL: [url]', 'linked_to_document' => '链接到文档', 'linked_to_this_version' => '链接到版本', 'link_alt_updatedocument' => '超过20M大文件,请选择上传大文件.', +'link_document' => '', 'link_to_version' => '附加到版本', 'list_access_rights' => '列出所有的访问权限', 'list_contains_no_access_docs' => '', @@ -1559,6 +1561,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => '非法的文件夹 ID', 'splash_invalid_searchterm' => '无效的搜索项', +'splash_link_document' => '', 'splash_moved_clipboard' => '', 'splash_move_document' => '文档已迁移', 'splash_move_folder' => '文件夹已迁移', @@ -1589,6 +1592,7 @@ URL: [url]', 'splash_substituted_user' => '', 'splash_switched_back_user' => '', 'splash_toogle_group_manager' => '', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1678,6 +1682,7 @@ URL: [url]', 'toggle_manager' => '角色切换', 'toggle_qrcode' => '显示/隐藏 QR 码', 'to_before_from' => '结束日期不能早于开始日期', +'transfer_content' => '', 'transfer_document' => '共享文档', 'transfer_no_read_access' => '用户没有该文件夹的读权限', 'transfer_no_write_access' => '当前用户没有文件夹写入权限', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index a8af9e3b4..1decac6ff 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -270,6 +270,7 @@ URL: [url]', 'confirm_rm_user' => '您確定要刪除"[username]"用戶?
      請注意:此動作執行後不能撤銷.', 'confirm_rm_user_from_processes' => '', 'confirm_rm_version' => '您確定要刪除"[documentname]文檔的[version]版本檔?
      請注意:此動作執行後不能撤銷.', +'confirm_transfer_link_document' => '', 'confirm_transfer_objects' => '', 'confirm_update_transmittalitem' => '', 'content' => '內容', @@ -635,6 +636,7 @@ URL: [url]', 'linked_to_document' => '', 'linked_to_this_version' => '', 'link_alt_updatedocument' => '超過20M大檔,請選擇上傳大檔.', +'link_document' => '', 'link_to_version' => '', 'list_access_rights' => '列出權限', 'list_contains_no_access_docs' => '', @@ -1408,6 +1410,7 @@ URL: [url]', 'splash_inherit_access' => '', 'splash_invalid_folder_id' => '', 'splash_invalid_searchterm' => '', +'splash_link_document' => '', 'splash_moved_clipboard' => '', 'splash_move_document' => '', 'splash_move_folder' => '', @@ -1438,6 +1441,7 @@ URL: [url]', 'splash_substituted_user' => '', 'splash_switched_back_user' => '', 'splash_toogle_group_manager' => '', +'splash_transfer_content' => '', 'splash_transfer_document' => '', 'splash_transfer_objects' => '', 'splash_trigger_workflow' => '', @@ -1527,6 +1531,7 @@ URL: [url]', 'toggle_manager' => '角色切換', 'toggle_qrcode' => '', 'to_before_from' => '', +'transfer_content' => '', 'transfer_document' => '', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', From c5e6131c141684438a4ed8f2230527c8339c6b80 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Jul 2019 16:39:44 +0200 Subject: [PATCH 118/467] use getVersion() instead of accessing _version which is now protected --- SeedDMS_Core/Core/inc.ClassDocument.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index cbf26d2ab..96b2355c7 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -1813,7 +1813,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ $status = $version->getStatus(); $stID = $status["statusID"]; - $queryStr = "DELETE FROM `tblDocumentContent` WHERE `document` = " . $this->getID() . " AND `version` = " . $version->_version; + $queryStr = "DELETE FROM `tblDocumentContent` WHERE `document` = " . $this->getID() . " AND `version` = " . $version->getVersion(); if (!$db->getResult($queryStr)) { $db->rollbackTransaction(); return false; @@ -1831,7 +1831,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ return false; } - $queryStr = "DELETE FROM `tblDocumentStatus` WHERE `documentID` = '". $this->getID() ."' AND `version` = '" . $version->_version."'"; + $queryStr = "DELETE FROM `tblDocumentStatus` WHERE `documentID` = '". $this->getID() ."' AND `version` = '" . $version->getVersion()."'"; if (!$db->getResult($queryStr)) { $db->rollbackTransaction(); return false; @@ -1861,7 +1861,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ return false; } } - $queryStr = "DELETE FROM `tblDocumentReviewers` WHERE `documentID` = '". $this->getID() ."' AND `version` = '" . $version->_version."'"; + $queryStr = "DELETE FROM `tblDocumentReviewers` WHERE `documentID` = '". $this->getID() ."' AND `version` = '" . $version->getVersion()."'"; if (!$db->getResult($queryStr)) { $db->rollbackTransaction(); return false; @@ -1890,26 +1890,26 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ return false; } } - $queryStr = "DELETE FROM `tblDocumentApprovers` WHERE `documentID` = '". $this->getID() ."' AND `version` = '" . $version->_version."'"; + $queryStr = "DELETE FROM `tblDocumentApprovers` WHERE `documentID` = '". $this->getID() ."' AND `version` = '" . $version->getVersion()."'"; if (!$db->getResult($queryStr)) { $db->rollbackTransaction(); return false; } - $queryStr = "DELETE FROM `tblWorkflowDocumentContent` WHERE `document` = '". $this->getID() ."' AND `version` = '" . $version->_version."'"; + $queryStr = "DELETE FROM `tblWorkflowDocumentContent` WHERE `document` = '". $this->getID() ."' AND `version` = '" . $version->getVersion()."'"; if (!$db->getResult($queryStr)) { $db->rollbackTransaction(); return false; } - $queryStr = "DELETE FROM `tblWorkflowLog` WHERE `document` = '". $this->getID() ."' AND `version` = '" . $version->_version."'"; + $queryStr = "DELETE FROM `tblWorkflowLog` WHERE `document` = '". $this->getID() ."' AND `version` = '" . $version->getVersion()."'"; if (!$db->getResult($queryStr)) { $db->rollbackTransaction(); return false; } // remove document files attached to version - $res = $this->getDocumentFiles($version->_version); + $res = $this->getDocumentFiles($version->getVersion()); if (is_bool($res) && !$res) { $db->rollbackTransaction(); return false; From e79e9de1cfea3271609f0c1bca98120506801dc8 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Jul 2019 16:40:38 +0200 Subject: [PATCH 119/467] add new class SeedDMS_CSRF for creating time base tokens (currently not used) --- inc/inc.Utils.php | 74 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/inc/inc.Utils.php b/inc/inc.Utils.php index 15e9a7452..82bc8c0fc 100644 --- a/inc/inc.Utils.php +++ b/inc/inc.Utils.php @@ -480,21 +480,35 @@ function checkQuota($user) { /* {{{ */ return ($quota - $user->getUsedDiskSpace()); } /* }}} */ -function encryptData($key, $value){ +/** + * Encrypt any data with a key + * + * @param string $key + * @param string $value plain text data + * @return string encrypted data + */ +function encryptData($key, $value) { /* {{{ */ $text = $value; $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv); return $crypttext; -} +} /* }}} */ -function decryptData($key, $value){ +/** + * Decrypt data previously encrypted by encrypt + * + * @param string $key + * @param string $value encrypted data + * @return string plain text data + */ +function decryptData($key, $value) { /* {{{ */ $crypttext = $value; $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv); return trim($decrypttext); -} +} /* }}} */ /** * Return file extension for a give mimetype @@ -574,4 +588,56 @@ function sendFile($filename) { /* {{{ */ readfile($filename); } } /* }}} */ + +class SeedDMS_CSRF { + + protected $secret; + + public function __construct($secret) { + $this->secret = $secret; + } + + public function create_api_key() { + return base64_encode($this->encrypt(time().'|'.$_SERVER['REMOTE_ADDR'])); // !change if you dont want IP check + } + + public function check_api_key($key, $timeout = 5) { + if (empty($key)) exit('Invalid Key'); + + $keys = explode('|', $this->decrypt(base64_decode($key))); + + return ( + isset($key, $keys[0], $keys[1]) && + $keys[0] >= (time() - $timeout) && + $keys[1] == $_SERVER['REMOTE_ADDR'] // !change if you dont want IP check + ); + } + + public function encrypt($string, $key = 'PrivateKey', $method = 'AES-256-CBC') { + // hash + $key = hash('sha256', $key); + // create iv - encrypt method AES-256-CBC expects 16 bytes + $iv = substr(hash('sha256', $this->secret), 0, 16); + // encrypt + $output = openssl_encrypt($string, $method, $key, 0, $iv); + // encode + return base64_encode($output); + } + + public function decrypt($string, $key = 'PrivateKey', $method = 'AES-256-CBC') { + // hash + $key = hash('sha256', $key); + // create iv - encrypt method AES-256-CBC expects 16 bytes + $iv = substr(hash('sha256', $this->secret), 0, 16); + // decode + $string = base64_decode($string); + // decrypt + return openssl_decrypt($string, $method, $key, 0, $iv); + } +} + +//$CSRF = new SeedDMS_CSRF($settings->_encryptionKey); +//$kkk = $CSRF->create_api_key(); +//echo $kkk; +//echo $CSRF->check_api_key($kkk) ? 'valid' : 'invalid'; ?> From a115cb30f20081390c6915151931d12208583bd0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Jul 2019 16:41:40 +0200 Subject: [PATCH 120/467] add style for div.statusbar-container --- styles/bootstrap/application.css | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/styles/bootstrap/application.css b/styles/bootstrap/application.css index 6a02e1153..4740d89f9 100644 --- a/styles/bootstrap/application.css +++ b/styles/bootstrap/application.css @@ -152,6 +152,25 @@ div.splash { display: none; } +div.statusbar-container { + display: none; + position: fixed; + right:10px; + top:60px; + width:300px; + padding:10px; + background-color: white; + border: 1px solid #E0E0E0; + border-radius: 4px; + z-index: 10; +} +div.statusbar-container h1 { + font-size: 21px; + line-height: 40px; + color: #333333; + font-weight: normal; +} + ul.jqtree-tree li.jqtree_common > .jqtree-element:hover { background-color: #E0E0E0; } From 9579c0480b03ac530a2a1285388c4a6a508b8a0d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Jul 2019 16:42:29 +0200 Subject: [PATCH 121/467] add code for bootbox, make drag&drop work --- views/bootstrap/class.ApprovalSummary.php | 17 +++++++++++++---- views/bootstrap/class.ReviewSummary.php | 16 +++++++++++++--- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/views/bootstrap/class.ApprovalSummary.php b/views/bootstrap/class.ApprovalSummary.php index f3f0d809c..bff1f59dc 100644 --- a/views/bootstrap/class.ApprovalSummary.php +++ b/views/bootstrap/class.ApprovalSummary.php @@ -36,6 +36,13 @@ require_once("SeedDMS/Preview.php"); */ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style { + function js() { /* {{{ */ + header('Content-Type: application/javascript; charset=UTF-8'); + parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); + + $this->printDeleteDocumentButtonJs(); + } /* }}} */ + function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; @@ -46,6 +53,8 @@ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style { $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); + $this->htmlAddHeader(''."\n", 'js'); + $this->htmlStartPage(getMLText("approval_summary")); $this->globalNavigation(); $this->contentStart(); @@ -84,10 +93,10 @@ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style { } $class = $st['status'] == 1 ? ' success' : ($st['status'] == -1 ? ' error' : ( $st['status'] == -2 ? ' info' : '')); - print ""; + echo $this->documentListRowStart($document, $class); echo $this->documentListRow($document, $previewer, true, $st['version']); print "".getApprovalStatusText($st['status'])."
      ".$st["date"]."
      ". htmlspecialchars($moduser->getFullName()) ."
      "; - print "\n"; + echo $this->documentListRowEnd($document); } if ($st["status"]!=-2) { $iRev[] = $st["documentID"]; @@ -126,10 +135,10 @@ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style { } $class = $st['status'] == 1 ? ' success' : ($st['status'] == -1 ? ' error' : ( $st['status'] == -2 ? ' info' : '')); - print ""; + echo $this->documentListRowStart($document, $class); echo $this->documentListRow($document, $previewer, true, $st['version']); print "".getApprovalStatusText($st["status"])."
      ".$st["date"]."
      ". htmlspecialchars($moduser->getFullName()) ."
      "; - print "\n"; + echo $this->documentListRowEnd($document); } } if (!$printheader) { diff --git a/views/bootstrap/class.ReviewSummary.php b/views/bootstrap/class.ReviewSummary.php index 56a94973c..19e23496b 100644 --- a/views/bootstrap/class.ReviewSummary.php +++ b/views/bootstrap/class.ReviewSummary.php @@ -36,6 +36,13 @@ require_once("SeedDMS/Preview.php"); */ class SeedDMS_View_ReviewSummary extends SeedDMS_Bootstrap_Style { + function js() { /* {{{ */ + header('Content-Type: application/javascript; charset=UTF-8'); + parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); + + $this->printDeleteDocumentButtonJs(); + } /* }}} */ + function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; @@ -46,6 +53,8 @@ class SeedDMS_View_ReviewSummary extends SeedDMS_Bootstrap_Style { $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); + $this->htmlAddHeader(''."\n", 'js'); + $this->htmlStartPage(getMLText("my_documents")); $this->globalNavigation(); $this->contentStart(); @@ -87,10 +96,10 @@ class SeedDMS_View_ReviewSummary extends SeedDMS_Bootstrap_Style { } $class = $st['status'] == 1 ? ' success' : ($st['status'] == -1 ? ' error' : ( $st['status'] == -2 ? ' info' : '')); - print ""; + echo $this->documentListRowStart($document, $class); echo $this->documentListRow($document, $previewer, true, $st['version']); print "".getReviewStatusText($st['status'])."
      ".$st["date"]."
      ". htmlspecialchars($moduser->getFullName()) ."
      "; - print "\n"; + echo $this->documentListRowEnd($document); } if ($st["status"]!=-2) { $iRev[] = $st["documentID"]; @@ -130,7 +139,8 @@ class SeedDMS_View_ReviewSummary extends SeedDMS_Bootstrap_Style { } $class = $st['status'] == 1 ? ' success' : ($st['status'] == -1 ? ' error' : ( $st['status'] == -2 ? ' info' : '')); - print ""; +// print ""; + echo $this->documentListRowStart($document, $class); echo $this->documentListRow($document, $previewer, true, $st['version']); print "".getReviewStatusText($st['status'])."
      ".$st["date"]."
      ". htmlspecialchars($moduser->getFullName()) ."
      "; print "\n"; From 19f599008048bb7e7135f9a3443195e7c3d20858 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Jul 2019 16:43:34 +0200 Subject: [PATCH 122/467] add div.statusbar-container, remove old code, make drag&drop work --- views/bootstrap/class.Bootstrap.php | 51 +++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 792e8960d..1eb5703c7 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -128,6 +128,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $this->params['session']->clearSplashMsg(); echo "
      ".$flashmsg['msg']."
      \n"; } + echo "

      ".getMLText('recent_uploads')."

      \n"; foreach($hookObjs as $hookObj) { if (method_exists($hookObj, 'startBody')) { $hookObj->startBody($this); @@ -398,7 +399,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; for ($i = 0; $i < count($path); $i++) { $txtpath .= "
    • "; if ($i +1 < count($path)) { - $txtpath .= "getID()."&showtree=".showtree()."\" data-droptarget=\"folder_".$path[$i]->getID()."\" rel=\"folder_".$path[$i]->getID()."\" class=\"table-row-folder droptarget\" formtoken=\"".createFormKey('movefolder')."\">". + $txtpath .= "getID()."&showtree=".showtree()."\" data-droptarget=\"folder_".$path[$i]->getID()."\" rel=\"folder_".$path[$i]->getID()."\" class=\"table-row-folder droptarget\" data-uploadformtoken=\"".createFormKey('')."\" formtoken=\"".createFormKey('')."\">". htmlspecialchars($path[$i]->getName()).""; } else { @@ -1675,7 +1676,7 @@ $(function() { onCreateLi: function(node, $li) { // Add 'icon' span before title if(node.is_folder) - $li.find('.jqtree-title').before(' ').attr('rel', 'folder_' + node.id).attr('formtoken', '').attr('data-uploadformtoken', ''); + $li.find('.jqtree-title').before(' ').attr('rel', 'folder_' + node.id).attr('formtoken', '').attr('data-uploadformtoken', ''); else $li.find('.jqtree-title').before(' '); } @@ -2174,9 +2175,15 @@ $(document).ready( function() { "; } /* }}} */ - function documentListRowStart($document) { /* {{{ */ + /** + * Start the row for a folder in list of documents and folders + * + * For a detailed description see + * {@link SeedDMS_Bootstrap_Style::folderListRowStart()} + */ + function documentListRowStart($document, $class='') { /* {{{ */ $docID = $document->getID(); - return ""; + return ""; } /* }}} */ function documentListRowEnd($document) { /* {{{ */ @@ -2316,8 +2323,40 @@ $(document).ready( function() { return $content; } /* }}} */ - function folderListRowStart($folder) { /* {{{ */ - return "getID()."\" draggable=\"true\" data-droptarget=\"folder_".$folder->getID()."\" rel=\"folder_".$folder->getID()."\" class=\"folder table-row-folder droptarget\" data-uploadformtoken=\"".createFormKey('adddocument')."\" formtoken=\"".createFormKey('movefolder')."\">"; + /** + * Start the row for a folder in list of documents and folders + * + * This method creates the starting tr tag for a new table row containing + * a folder list entry. The tr tag contains various attributes which are + * used for removing the table line and to make drap&drop work. + * + * id=table-row-folder- : used for identifying the row when removing the table + * row after deletion of the folder by clicking on the delete button in that table + * row. + * data-droptarget=folder_ : identifies the folder represented by this row + * when it used as a target of the drag&drop operation. + * If an element (either a file or a dragged item) is dropped on this row, the + * data-droptarget will be evaluated to identify the underlying dms object. + * Dropping a file on a folder will upload that file into the folder. Droping + * an item (which is currently either a document or a folder) from the page will + * move that item into the folder. + * rel=folder_ : This data is put into drag data when a drag starts. When the + * item is dropped on some other item this data will identify the source object. + * The attributes data-droptarget and rel are usually equal. At least there is + * currently no scenario where they are different. + * formtoken= : token made of key 'movefolder' + * formtoken is also placed in the drag data just like the value of attibute 'rel'. + * This is always set to a value made of 'movefolder'. + * data-uploadformtoken= : token made of key 'adddocument' + * class=table-row-folder : The class must have a class named 'table-row-folder' in + * order to be draggable and to extract the drag data from the attributes 'rel' and + * 'formtoken' + * + * @param object $folder + * @return string starting tr tag for a table + */ + function folderListRowStart($folder, $class='') { /* {{{ */ + return "getID()."\" draggable=\"true\" data-droptarget=\"folder_".$folder->getID()."\" rel=\"folder_".$folder->getID()."\" class=\"folder table-row-folder droptarget".($class ? ' '.$class : '')."\" data-uploadformtoken=\"".createFormKey('')."\" formtoken=\"".createFormKey('')."\">"; } /* }}} */ function folderListRowEnd($folder) { /* {{{ */ From 08ecb9829e6fd5eaab62322209a8c28dd5806ffb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Jul 2019 16:44:23 +0200 Subject: [PATCH 123/467] make drag&drop work --- views/bootstrap/class.Clipboard.php | 4 +- views/bootstrap/class.Search.php | 139 ---------------------------- 2 files changed, 2 insertions(+), 141 deletions(-) diff --git a/views/bootstrap/class.Clipboard.php b/views/bootstrap/class.Clipboard.php index 13dafe1fa..136431e21 100644 --- a/views/bootstrap/class.Clipboard.php +++ b/views/bootstrap/class.Clipboard.php @@ -57,11 +57,11 @@ class SeedDMS_View_Clipboard extends SeedDMS_Bootstrap_Style { $content .= "
        \n"; foreach($clipboard['folders'] as $folderid) { if($folder = $this->params['dms']->getFolder($folderid)) - $content .= "
      • getID()."\"> ".htmlspecialchars($folder->getName())."
      • \n"; + $content .= "
      • getID()."\" class=\"table-row-folder droptarget\" data-droptarget=\"folder_".$folder->getID()."\" rel=\"folder_".$folder->getID()."\" data-uploadformtoken=\"".createFormKey('')."\" formtoken=\"".createFormKey('')."\"> ".htmlspecialchars($folder->getName())."
      • \n"; } foreach($clipboard['docs'] as $docid) { if($document = $this->params['dms']->getDocument($docid)) - $content .= "
      • getID()."\"> ".htmlspecialchars($document->getName())."
      • \n"; + $content .= "
      • getID()."\" class=\"table-row-document droptarget\" data-droptarget=\"document_".$document->getID()."\" rel=\"document_".$document->getID()."\"> ".htmlspecialchars($document->getName())."
      • \n"; } $content .= "
      • \n"; if(isset($this->params['folder']) && $this->params['folder']->getAccessMode($this->params['user']) >= M_READWRITE) { diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index 73415eaea..c5e1e4e2f 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -532,87 +532,6 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { if($attrstr) $extracontent['bottom_title'] = '
        '.$this->printPopupBox(''.getMLText('attributes').'', $attrstr, true); print $this->documentListRow($document, $previewer, false, 0, $extracontent); - - if(0) { - print "getID()."\" class=\"table-row-document\" rel=\"document_".$document->getID()."\" formtoken=\"".createFormKey('movedocument')."\" draggable=\"true\">"; - if (in_array(2, $searchin)) { - $docName = $this->markQuery(htmlspecialchars($document->getName()), "i"); - } else { - $docName = htmlspecialchars($document->getName()); - } - print "getID()."\">"; - if($previewer->hasPreview($lc)) { - print "getID()."&version=".$lc->getVersion()."&width=".$previewwidth."\" title=\"".htmlspecialchars($lc->getMimeType())."\">"; - } else { - print "getMimeIcon($lc->getFileType())."\" title=\"".htmlspecialchars($lc->getMimeType())."\">"; - } - print ""; - print "getID()."\">"; - print $docName; - print ""; - print "
        ".getMLText('in_folder').": /"; - $folder = $document->getFolder(); - $path = $folder->getPath(); - for ($i = 1; $i < count($path); $i++) { - print htmlspecialchars($path[$i]->getName())."/"; - } - print ""; - print "
        ".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".date('Y-m-d', $document->getDate()).", ".getMLText('version')." ".$version." - ".date('Y-m-d', $lc->getDate()).""; - if($comment) { - print "
        ".htmlspecialchars($comment).""; - } - print ""; - - print ""; - print "
          \n"; - $lcattributes = $lc->getAttributes(); - if($lcattributes) { - foreach($lcattributes as $lcattribute) { - $attrdef = $lcattribute->getAttributeDefinition(); - print "
        • ".htmlspecialchars($attrdef->getName()).": ".htmlspecialchars(implode(', ', $lcattribute->getValueAsArray()))."
        • \n"; - } - } - print "
        \n"; - print "
          \n"; - $docttributes = $document->getAttributes(); - if($docttributes) { - foreach($docttributes as $docttribute) { - $attrdef = $docttribute->getAttributeDefinition(); - print "
        • ".htmlspecialchars($attrdef->getName()).": ".htmlspecialchars(implode(', ', $docttribute->getValueAsArray()))."
        • \n"; - } - } - print "
        \n"; - print ""; - - $display_status=$lc->getStatus(); - print "".getOverallStatusText($display_status["status"]). ""; - print ""; - print "
        "; - if($document->getAccessMode($user) >= M_ALL) { - $this->printDeleteDocumentButton($document, 'splash_rm_document'); - } else { - ?> - - getAccessMode($user) >= M_READWRITE) { - ?> - - - - - getID(); ?>" msg="" _href="../op/op.AddToClipboard.php?documentid=getID(); ?>&type=document&id=getID(); ?>&refferer=params['refferer']); ?>" title=""> -"; - print ""; - print "\n"; - } } } elseif(get_class($entry) == $dms->getClassname('folder')) { $folder = $entry; @@ -638,64 +557,6 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { if($attrstr) $extracontent['bottom_title'] = '
        '.$this->printPopupBox(''.getMLText('attributes').'', $attrstr, true); print $this->folderListRow($folder, $extracontent); - if(0) { - print "getID()."\" draggable=\"true\" rel=\"folder_".$folder->getID()."\" class=\"folder table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">"; - print "getID()."\">imgpath."folder.png\" width=\"24\" height=\"24\" border=0>"; - print "getID()."\">"; - print $folderName; - print ""; - print "
        ".getMLText('in_folder').": /"; - $path = $folder->getPath(); - for ($i = 1; $i < count($path)-1; $i++) { - print htmlspecialchars($path[$i]->getName())."/"; - } - print ""; - print "
        ".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".date('Y-m-d', $folder->getDate()).""; - if (in_array(3, $searchin)) $comment = $this->markQuery(htmlspecialchars($folder->getComment())); - else $comment = htmlspecialchars($folder->getComment()); - if (strlen($comment) > 50) $comment = substr($comment, 0, 47) . "..."; - if($comment) { - print "
        ".htmlspecialchars($comment).""; - } - print ""; - print ""; - print "
          \n"; - $folderattributes = $folder->getAttributes(); - if($folderattributes) { - foreach($folderattributes as $folderattribute) { - $attrdef = $folderattribute->getAttributeDefinition(); - print "
        • ".htmlspecialchars($attrdef->getName()).": ".htmlspecialchars(implode(', ', $folderattribute->getValueAsArray()))."
        • \n"; - } - } - print ""; - print ""; - print ""; - print "
          "; - if($folder->getAccessMode($user) >= M_ALL) { - $this->printDeleteFolderButton($folder, 'splash_rm_folder'); - } else { -?> - -getAccessMode($user) >= M_READWRITE) { -?> - - - - - getID(); ?>" msg="" _href="../op/op.AddToClipboard.php?folderid=getID(); ?>&type=folder&id=getID(); ?>&refferer=params['refferer']); ?>" title=""> -"; - print ""; - print "\n"; - } } } print "\n"; From ee732551c681e790e90eaa6d0680d6c72fd1f67f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Jul 2019 16:44:44 +0200 Subject: [PATCH 124/467] make drag&drop work --- views/bootstrap/class.Tasks.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/views/bootstrap/class.Tasks.php b/views/bootstrap/class.Tasks.php index 4f54348fe..4a8572366 100644 --- a/views/bootstrap/class.Tasks.php +++ b/views/bootstrap/class.Tasks.php @@ -159,7 +159,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style { $content .= " \n"; $content .= " \n"; @@ -170,7 +170,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style { $content .= " \n"; $content .= " \n"; @@ -181,7 +181,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style { $content .= " \n"; $content .= " \n"; @@ -258,7 +258,8 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style { if($folder = $dms->getFolder($folderid)) { $comment = $folder->getComment(); if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; - $content .= "getID()."\" class=\"folder table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">"; +// $content .= "getID()."\" class=\"folder table-row-folder\" formtoken=\"".createFormKey('movefolder')."\">"; + $content .= $this->folderListRowStart($folder); $content .= "getID()."&showtree=".showtree()."\">imgpath."folder.png\" width=\"24\" height=\"24\" border=0>\n"; $content .= "getID()."&showtree=".showtree()."\">" . htmlspecialchars($folder->getName()) . ""; if($comment) { @@ -268,7 +269,8 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style { $content .= "\n"; $content .= ""; $content .= "\n"; - $content .= "\n"; + //$content .= "\n"; + $content .= $this->folderListRowEnd($folder); $foldercount++; } } From 3471835d0af2cb7d7fd75eddbddf51e8e24fa63d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Jul 2019 16:45:28 +0200 Subject: [PATCH 125/467] do not check for named formtoken in op/op.Ajax.php anymore, use new statusbox-container for last file uploads --- op/op.Ajax.php | 10 +++++----- styles/bootstrap/application.js | 7 ++++--- views/bootstrap/class.ViewFolder.php | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 7146fe78e..80f51ea37 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -265,7 +265,7 @@ switch($command) { case 'movefolder': /* {{{ */ if($user) { - if(!checkFormKey('movefolder', 'GET')) { + if(!checkFormKey('', 'GET')) { header('Content-Type: application/json'); echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>'')); } else { @@ -304,7 +304,7 @@ switch($command) { case 'movedocument': /* {{{ */ if($user) { - if(!checkFormKey('movedocument', 'GET')) { + if(!checkFormKey('', 'GET')) { header('Content-Type: application/json'); echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>'')); } else { @@ -343,7 +343,7 @@ switch($command) { case 'transfercontent': /* {{{ */ if($user) { - if(!checkFormKey('movedocument', 'GET')) { + if(!checkFormKey('', 'GET')) { header('Content-Type: application/json'); echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>'')); } else { @@ -394,7 +394,7 @@ switch($command) { case 'linkdocument': /* {{{ */ if($user) { - if(!checkFormKey('movedocument', 'GET')) { + if(!checkFormKey('', 'GET')) { header('Content-Type: application/json'); echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>'')); } else { @@ -607,7 +607,7 @@ switch($command) { case 'uploaddocument': /* {{{ */ if($user) { - if(checkFormKey('adddocument')) { + if(checkFormKey('')) { if (!isset($_POST["folderid"]) || !is_numeric($_POST["folderid"]) || intval($_POST["folderid"])<1) { header('Content-Type: application/json'); echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_folder_id"))); diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index d1b5f96df..5d22b958a 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -661,6 +661,7 @@ function onAddClipboard(ev) { /* {{{ */ fd.append('command', 'uploaddocument'); // fd.append('path', files[i].webkitRelativePath); + statusbar.parent().show(); var status = new createStatusbar(statusbar); status.setFileNameSize(files[i].name,files[i].size); sendFileToServer(fd,status); @@ -725,7 +726,7 @@ $(document).ready(function() { /* {{{ */ var files = e.originalEvent.dataTransfer.files; //We need to send dropped files to Server - SeedDMSUpload.handleFileUpload(files,obj,obj); + SeedDMSUpload.handleFileUpload(files,obj, obj); }); $(document).on('dragenter', '.droptarget', function (e) { @@ -753,7 +754,7 @@ $(document).ready(function() { /* {{{ */ var files = e.originalEvent.dataTransfer.files; if(files.length > 0) { console.log('Drop '+files.length+' files on '+target_type+' '+target_id); - SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$(e.currentTarget).find("span")); + SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/); } else { var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); source_type = source_info.type; @@ -848,7 +849,7 @@ $(document).ready(function() { /* {{{ */ var files = e.originalEvent.dataTransfer.files; if(files.length > 0) { console.log('Drop '+files.length+' files on '+target_type+' '+target_id); - SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$(e.currentTarget).find("span")); + SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/); } else { var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); source_type = source_info.type; diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index cb9b409f3..c9d93165e 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -390,7 +390,7 @@ $('#loadmore').click(function(e) { // $this->addFooterJS("SeedDMSUpload.setMaxFileSize(".SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize")).");"); // $this->addFooterJS("SeedDMSUpload.setMaxFileSizeMsg('".getMLText("uploading_maxsize")."');"); ?> -
          +
          "; echo "
          "; From 2e78e446f16c68b0f1f1dae46d149f35296178f3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Jul 2019 16:47:20 +0200 Subject: [PATCH 126/467] new key recent_uploads --- languages/ar_EG/lang.inc | 1 + languages/bg_BG/lang.inc | 1 + languages/ca_ES/lang.inc | 1 + languages/cs_CZ/lang.inc | 1 + languages/de_DE/lang.inc | 3 ++- languages/el_GR/lang.inc | 1 + languages/en_GB/lang.inc | 3 ++- languages/es_ES/lang.inc | 1 + languages/fr_FR/lang.inc | 1 + languages/hr_HR/lang.inc | 1 + languages/hu_HU/lang.inc | 1 + languages/it_IT/lang.inc | 1 + languages/ko_KR/lang.inc | 1 + languages/lo_LA/lang.inc | 1 + languages/nl_NL/lang.inc | 1 + languages/pl_PL/lang.inc | 1 + languages/pt_BR/lang.inc | 1 + languages/ro_RO/lang.inc | 1 + languages/ru_RU/lang.inc | 1 + languages/sk_SK/lang.inc | 1 + languages/sv_SE/lang.inc | 1 + languages/tr_TR/lang.inc | 1 + languages/uk_UA/lang.inc | 1 + languages/zh_CN/lang.inc | 1 + languages/zh_TW/lang.inc | 1 + 25 files changed, 27 insertions(+), 2 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index fcc544ef2..7087609a4 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -924,6 +924,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index bce522960..a4e24c16e 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -823,6 +823,7 @@ $text = array( 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 7408761fe..c7d318204 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -828,6 +828,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 1c8c0b91c..f04091398 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -977,6 +977,7 @@ URL: [url]', 'receipt_status' => 'Status', 'receipt_summary' => 'Souhrn přijetí', 'receipt_update_failed' => 'Potvrzení že přijetí se nezdařilo', +'recent_uploads' => '', 'reception' => 'Přijetí', 'reception_acknowleged' => 'Přijetí potvrzeno', 'reception_noaction' => 'Žádná akce', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 72afed2d7..395deb3e1 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 (2694), dgrutsch (22) +// Translators: Admin (2695), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -979,6 +979,7 @@ URL: [url]', 'receipt_status' => 'Status', 'receipt_summary' => 'Übersicht Bestätigungen', 'receipt_update_failed' => 'Setzen der Empfangsbestätigung fehlgeschlagen', +'recent_uploads' => 'Letzte Uploads', 'reception' => 'Empfangsbestätigung', 'reception_acknowleged' => 'Empfang bestätigt', 'reception_noaction' => 'Keine Aktion', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index 91e74cb03..126ec6c4d 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -834,6 +834,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index e03f8dbff..1e513287d 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 (1786), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1787), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -981,6 +981,7 @@ URL: [url]', 'receipt_status' => 'Status', 'receipt_summary' => 'Receipt summary', 'receipt_update_failed' => 'Acknowledging reception failed', +'recent_uploads' => 'Recent Uploads', 'reception' => 'Reception', 'reception_acknowleged' => 'Reception acknowledged', 'reception_noaction' => 'No action', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index aef6cca48..7d2368c00 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -939,6 +939,7 @@ Si continua teniendo problemas de acceso, por favor contacte con el administrado 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 8fbefcd99..70f818ab9 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -979,6 +979,7 @@ URL : [url]', 'receipt_status' => 'Statut', 'receipt_summary' => 'Vue d’ensemble réception', 'receipt_update_failed' => 'La confirmation de réception a échoué', +'recent_uploads' => '', 'reception' => 'Réception', 'reception_acknowleged' => 'Réception confirmée', 'reception_noaction' => 'Aucune action', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 44a8362c3..125a66c62 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -943,6 +943,7 @@ Ako i dalje imate problema s prijavom, molimo kontaktirajte Vašeg administrator 'receipt_status' => '', 'receipt_summary' => 'Sažetak prijema', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index d310578fd..2f080ed58 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -939,6 +939,7 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 228260ea4..164cc2663 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -950,6 +950,7 @@ URL: [url]', 'receipt_status' => 'Status', 'receipt_summary' => 'Sommario ricezione', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index f515ed3f6..e70270c90 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -937,6 +937,7 @@ URL : [url]', 'receipt_status' => '', 'receipt_summary' => '접수증 요약', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index 0e881a928..5796aba51 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -960,6 +960,7 @@ URL: [url]', 'receipt_status' => 'ສະຖານະ', 'receipt_summary' => 'ສະຫຼູບໃບບິນ', 'receipt_update_failed' => 'ການຍອມຮັບສັນຍານບໍ່ສຳເລັດ', +'recent_uploads' => '', 'reception' => 'ພະແນກຕ້ອນຮັບ', 'reception_acknowleged' => 'ຄວາມຮັບຮູ້ກ່ຽວກັບການຕ້ອນຮັບ', 'reception_noaction' => 'ບໍ່ມີການຕອບສະຫນອງ', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index d7cfb6de7..0a58e0506 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -955,6 +955,7 @@ URL: [url]', 'receipt_status' => 'Status ontvangst', 'receipt_summary' => 'Samenvatting', 'receipt_update_failed' => 'Update ontvangst mislukt', +'recent_uploads' => '', 'reception' => 'bestemming', 'reception_acknowleged' => 'bestemming OK', 'reception_noaction' => 'Geen actie', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index ae4184483..4716d5be8 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -932,6 +932,7 @@ Jeśli nadal będą problemy z zalogowaniem, prosimy o kontakt z administratorem 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 07729ae35..790e080b6 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -980,6 +980,7 @@ URL: [url]', 'receipt_status' => 'Estado', 'receipt_summary' => 'Resumo da entrada', 'receipt_update_failed' => 'Confirmação de entrada falhou', +'recent_uploads' => '', 'reception' => 'Entrada', 'reception_acknowleged' => 'Entrada reconhecida', 'reception_noaction' => 'Nenhuma ação', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index cac87904d..fab5e2718 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -944,6 +944,7 @@ Dacă aveți în continuare probleme la autentificare, vă rugăm să contactaț 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 49917e420..164a90bb5 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -946,6 +946,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => 'Сводка по получению', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 741df4153..652190545 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -981,6 +981,7 @@ URL: [url]', 'receipt_status' => 'Stav', 'receipt_summary' => 'Receipt summary', 'receipt_update_failed' => 'Acknowledging reception failed', +'recent_uploads' => '', 'reception' => 'Reception', 'reception_acknowleged' => 'Reception acknowledged', 'reception_noaction' => 'Žiadna akcia', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index 542705239..1607dd21f 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -954,6 +954,7 @@ Om du fortfarande har problem med inloggningen, kontakta administratören.', 'receipt_status' => 'Status', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => 'Ingen åtgärd', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 669122685..fa3a9b4ca 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -940,6 +940,7 @@ Giriş yaparken halen sorun yaşıyorsanız lütfen sistem yöneticinizle görü 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index ccc5a7c0e..1379c1e32 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -946,6 +946,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => 'Підсумки отримання', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 06fe3aa4b..e688f1a7f 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -945,6 +945,7 @@ URL: [url]', 'receipt_status' => '状态', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 1decac6ff..207cfce69 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -827,6 +827,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', +'recent_uploads' => '', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', From b7417b4ea4a4c420452b5e201375eaa729e02543 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 12 Jul 2019 17:12:12 +0200 Subject: [PATCH 127/467] add scrollbar to statusbar-container --- styles/bootstrap/application.css | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/styles/bootstrap/application.css b/styles/bootstrap/application.css index 4740d89f9..d24cab1bd 100644 --- a/styles/bootstrap/application.css +++ b/styles/bootstrap/application.css @@ -163,7 +163,22 @@ div.statusbar-container { border: 1px solid #E0E0E0; border-radius: 4px; z-index: 10; + overflow-y: scroll; + max-height: calc(100% - 100px); } +div.statusbar-container::-webkit-scrollbar { + width: 5px; +} +div.statusbar-container::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + border-radius: 10px; +} + +div.statusbar-container::-webkit-scrollbar-thumb { + border-radius: 10px; + -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5); +} + div.statusbar-container h1 { font-size: 21px; line-height: 40px; From e71c9c2e4e26e4064e9498477f8afd04b1fd97be Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 16 Jul 2019 20:16:50 +0200 Subject: [PATCH 128/467] fix sql statement for searching when setting a limit --- SeedDMS_Core/Core/inc.ClassDMS.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index 5a8ca52c0..0538a4231 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -1441,9 +1441,6 @@ class SeedDMS_Core_DMS { // Prepare the complete search query, including the LIMIT clause. $searchQuery = "SELECT DISTINCT `tblFolders`.`id` ".$searchQuery." GROUP BY `tblFolders`.`id`"; - if($limit) { - $searchQuery .= " LIMIT ".$limit." OFFSET ".$offset; - } switch($orderby) { case 'dd': $searchQuery .= " ORDER BY `tblFolders`.`date` DESC"; @@ -1459,6 +1456,10 @@ class SeedDMS_Core_DMS { default: $searchQuery .= " ORDER BY `tblFolders`.`name`"; break; + } + + if($limit) { + $searchQuery .= " LIMIT ".$limit." OFFSET ".$offset; } // Send the complete search query to the database. @@ -1713,11 +1714,12 @@ class SeedDMS_Core_DMS { $offset -= $totalFolders; else $offset = 0; - if($limit) - $searchQuery .= " LIMIT ".$limit." OFFSET ".$offset; $searchQuery .= $orderbyQuery; + if($limit) + $searchQuery .= " LIMIT ".$limit." OFFSET ".$offset; + // Send the complete search query to the database. $resArr = $this->db->getResultArray($searchQuery); if($resArr === false) From 4271c40e91a50122e1be7f3a0bff3a07d0816c55 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 16 Jul 2019 20:17:23 +0200 Subject: [PATCH 129/467] expand tabs --- restapi/index.php | 68 +++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/restapi/index.php b/restapi/index.php index 7efc667bc..51d57a90c 100644 --- a/restapi/index.php +++ b/restapi/index.php @@ -390,17 +390,17 @@ function createFolder($request, $response, $args) { /* {{{ */ $params = $request->getParsedBody(); if(!empty($params['name'])) { $comment = isset($params['comment']) ? $params['comment'] : ''; - if(isset($params['sequence'])) { - $sequence = str_replace(',', '.', $params["sequence"]); - if (!is_numeric($sequence)) - return $response->withJson(array('success'=>false, 'message'=>getMLText("invalid_sequence"), 'data'=>''), 400); - } else { - $dd = $parent->getSubFolders('s'); - if(count($dd) > 1) - $sequence = $dd[count($dd)-1]->getSequence() + 1; - else - $sequence = 1.0; - } + if(isset($params['sequence'])) { + $sequence = str_replace(',', '.', $params["sequence"]); + if (!is_numeric($sequence)) + return $response->withJson(array('success'=>false, 'message'=>getMLText("invalid_sequence"), 'data'=>''), 400); + } else { + $dd = $parent->getSubFolders('s'); + if(count($dd) > 1) + $sequence = $dd[count($dd)-1]->getSequence() + 1; + else + $sequence = 1.0; + } $newattrs = array(); if(!empty($params['attributes'])) { foreach($params['attributes'] as $attrname=>$attrvalue) { @@ -410,12 +410,12 @@ function createFolder($request, $response, $args) { /* {{{ */ } } } - /* Check if name already exists in the folder */ - if(!$settings->_enableDuplicateSubFolderNames) { - if($folder->hasSubFolderByName($params['name'])) { - return $response->withJson(array('success'=>false, 'message'=>getMLText("subfolder_duplicate_name"), 'data'=>''), 400); - } - } + /* Check if name already exists in the folder */ + if(!$settings->_enableDuplicateSubFolderNames) { + if($folder->hasSubFolderByName($params['name'])) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("subfolder_duplicate_name"), 'data'=>''), 400); + } + } if($folder = $parent->addSubFolder($params['name'], $comment, $userobj, $sequence, $newattrs)) { $rec = __getFolderData($folder); @@ -577,12 +577,12 @@ function uploadDocument($request, $response, $args) { /* {{{ */ $origfilename = $file_info->getClientFilename(); if (trim($docname) == '') $docname = $origfilename; - /* Check if name already exists in the folder */ - if(!$settings->_enableDuplicateDocNames) { - if($mfolder->hasDocumentByName($docname)) { - return $response->withJson(array('success'=>false, 'message'=>getMLText("document_duplicate_name"), 'data'=>''), 400); - } - } + /* Check if name already exists in the folder */ + if(!$settings->_enableDuplicateDocNames) { + if($mfolder->hasDocumentByName($docname)) { + return $response->withJson(array('success'=>false, 'message'=>getMLText("document_duplicate_name"), 'data'=>''), 400); + } + } $temp = $file_info->file; $finfo = finfo_open(FILEINFO_MIME_TYPE); $userfiletype = finfo_file($finfo, $temp); @@ -699,12 +699,12 @@ function uploadDocumentPut($request, $response, $args) { /* {{{ */ $userfiletype = finfo_file($finfo, $temp); $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); finfo_close($finfo); - /* Check if name already exists in the folder */ - if(!$settings->_enableDuplicateDocNames) { - if($mfolder->hasDocumentByName($docname)) { + /* Check if name already exists in the folder */ + if(!$settings->_enableDuplicateDocNames) { + if($mfolder->hasDocumentByName($docname)) { return $response->withJson(array('success'=>false, 'message'=>getMLText("document_duplicate_name"), 'data'=>''), 400); - } - } + } + } $res = $mfolder->addDocument($docname, '', 0, $userobj, '', array(), $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, 0); unlink($temp); if($res) { @@ -796,13 +796,13 @@ function addDocumentLink($request, $response, $args) { /* {{{ */ $targetdoc = $dms->getDocument($args['documentid']); if($sourcedoc && $targetdoc) { if($sourcedoc->getAccessMode($userobj, 'addDocumentLink') >= M_READ) { - $params = $request->getParsedBody(); - $public = !isset($params['public']) ? true : false; - if ($sourcedoc->addDocumentLink($targetdoc->getId(), $userobj->getID(), $public)){ + $params = $request->getParsedBody(); + $public = !isset($params['public']) ? true : false; + if ($sourcedoc->addDocumentLink($targetdoc->getId(), $userobj->getID(), $public)){ return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 201); - } else { - return $response->withJson(array('success'=>false, 'message'=>'Could not create document link', 'data'=>''), 500); - } + } else { + return $response->withJson(array('success'=>false, 'message'=>'Could not create document link', 'data'=>''), 500); + } } else { return $response->withJson(array('success'=>false, 'message'=>'No access on source document', 'data'=>''), 403); } From ba9f4ba7493aae4c14f22bbf696f042f1ec0fade Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 17 Jul 2019 10:50:52 +0200 Subject: [PATCH 130/467] rename SeedDMS_Core_Folder::empty to emptyFolder --- SeedDMS_Core/Core/inc.ClassFolder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassFolder.php b/SeedDMS_Core/Core/inc.ClassFolder.php index a95856ea9..f0e1608a9 100644 --- a/SeedDMS_Core/Core/inc.ClassFolder.php +++ b/SeedDMS_Core/Core/inc.ClassFolder.php @@ -1112,7 +1112,7 @@ class SeedDMS_Core_Folder extends SeedDMS_Core_Object { * * @return boolean true on success, false in case of an error */ - function empty() { /* {{{ */ + function emptyFolder() { /* {{{ */ /** @noinspection PhpUnusedLocalVariableInspection */ $db = $this->_dms->getDB(); From 111a2beec6a68aa5953541b8676d72de39f72e0d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 17 Jul 2019 10:51:12 +0200 Subject: [PATCH 131/467] SeedDMS_Core_Folder::empty is now emptyFolder --- controllers/class.EmptyFolder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/class.EmptyFolder.php b/controllers/class.EmptyFolder.php index f31f64209..529fa9a74 100644 --- a/controllers/class.EmptyFolder.php +++ b/controllers/class.EmptyFolder.php @@ -58,7 +58,7 @@ class SeedDMS_Controller_EmptyFolder extends SeedDMS_Controller_Common { if($index) $dms->setCallback('onPreEmptyDocument', 'removeFromIndex', array($index, $indexconf)); - if (!$folder->empty()) { + if (!$folder->emptyFolder()) { $this->errormsg = 'error_occured'; return false; } From b83ef1dd661d0acecb844c61faaee3a7338d1712 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 19 Jul 2019 12:52:33 +0200 Subject: [PATCH 132/467] cancel drag&drop if source document equals target document --- styles/bootstrap/application.js | 136 ++++++++++++++++---------------- 1 file changed, 69 insertions(+), 67 deletions(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 5d22b958a..58a74605a 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -857,73 +857,75 @@ $(document).ready(function() { /* {{{ */ formtoken = source_info.formtoken; console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); if(source_type == 'document') { - bootbox.dialog(trans.confirm_transfer_link_document, [{ - "label" : " "+trans.transfer_content, - "class" : "btn-danger", - "callback": function() { - $.get('../op/op.Ajax.php', - { command: 'transfercontent', docid: source_id, targetdocumentid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - $('#table-row-document-'+source_id).hide('slow'); - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500, - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500, - }); - } - }, - 'json' - ); - } - }, { - "label" : trans.link_document, - "class" : "btn-danger", - "callback": function() { - $.get('../op/op.Ajax.php', - { command: 'linkdocument', docid: source_id, targetdocumentid: target_id, formtoken: formtoken }, - function(data) { - if(data.success) { - noty({ - text: data.message, - type: 'success', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 1500, - }); - } else { - noty({ - text: data.message, - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 3500, - }); - } - }, - 'json' - ); - } - }, { - "label" : trans.cancel, - "class" : "btn-cancel", - "callback": function() { - } - }]); + if(source_id != target_id) { + bootbox.dialog(trans.confirm_transfer_link_document, [{ + "label" : " "+trans.transfer_content, + "class" : "btn-danger", + "callback": function() { + $.get('../op/op.Ajax.php', + { command: 'transfercontent', docid: source_id, targetdocumentid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + $('#table-row-document-'+source_id).hide('slow'); + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500, + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500, + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.link_document, + "class" : "btn-danger", + "callback": function() { + $.get('../op/op.Ajax.php', + { command: 'linkdocument', docid: source_id, targetdocumentid: target_id, formtoken: formtoken }, + function(data) { + if(data.success) { + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500, + }); + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500, + }); + } + }, + 'json' + ); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); + } url = "../out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; // document.location = url; From 1de9ed37d514c9ab0a72386973dc71fbd7a40d41 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 30 Jul 2019 06:33:18 +0200 Subject: [PATCH 133/467] =?UTF-8?q?allow=20serveral=20instance=D1=95=20of?= =?UTF-8?q?=20drop=20folder=20chooser=20on=20one=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- views/bootstrap/class.AddDocument.php | 4 ++-- views/bootstrap/class.Bootstrap.php | 14 ++++++++------ views/bootstrap/class.DropFolderChooser.php | 16 +++++++++------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index e740e9651..7d4c25ee9 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -199,7 +199,7 @@ $(document).ready(function() { 'type'=>'text', 'id'=>'name', 'name'=>'name', - 'required'=>true + 'required'=>false ) ); $this->formField( @@ -310,7 +310,7 @@ $(document).ready(function() { ); $this->formField( getMLText("local_file"), - $enablelargefileupload ? $this->getFineUploaderHtml() : $this->getFileChooserHtml('userfile[]', false).($enablemultiupload ? '' : '') + $enablelargefileupload ? $this->getFineUploaderHtml() : $this->getFileChooserHtml('userfile[]', $enablemultiupload).($enablemultiupload ? '' : '') ); if($dropfolderdir) { $this->formField( diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 1eb5703c7..4f3f07054 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1039,7 +1039,7 @@ $(document).ready(function() {
          - '.getMLText("browse").'… + '.getMLText("browse").'…
        @@ -1422,7 +1422,7 @@ $(document).ready(function() { $content = "\n"; $content .= '
      \n"; echo "
      "; - if ($folder!=null && is_object($folder) && !strcasecmp(get_class($folder), $dms->getClassname('folder'))) { + if ($folder!=null && is_object($folder) && $folder->isType('folder')) { echo " getID()."\" />"; } echo " "; @@ -478,7 +478,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; private function folderNavigationBar($folder) { /* {{{ */ $dms = $this->params['dms']; - if (!is_object($folder) || strcasecmp(get_class($folder), $dms->getClassname('folder'))) { + if (!is_object($folder) || !$folder->isType('folder')) { echo "
        \n"; echo "
      \n"; return; @@ -1570,7 +1570,8 @@ $(document).ready(function() { } /* }}} */ function printNewTreeNavigationHtml($folderid=0, $accessmode=M_READ, $showdocs=0, $formid='form1', $expandtree=0, $orderby='') { /* {{{ */ - echo "
      \n"; + //echo "
      \n"; + echo "
      \n"; } /* }}} */ /** @@ -1731,6 +1732,39 @@ $(function() { params['dms']; + $user = $this->params['user']; + + $folder = $dms->getFolder($folderid); + if (!is_object($folder)) return ''; + + $subfolders = $folder->getSubFolders($orderby); + $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, M_READ); + $tree = array(); + foreach($subfolders as $subfolder) { + $loadondemand = $subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs); + $level = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>$loadondemand, 'is_folder'=>true); + if(!$subfolder->hasSubFolders()) + $level['children'] = array(); + $tree[] = $level; + } + if($showdocs) { + $documents = $folder->getDocuments($orderby); + $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ); + foreach($documents as $document) { + $level = array('label'=>$document->getName(), 'id'=>$document->getID(), 'load_on_demand'=>false, 'is_folder'=>false); + $tree[] = $level; + } + } + + header('Content-Type: application/json'); + echo json_encode($tree); + } /* }}} */ + function printTreeNavigation($folderid, $showtree){ /* {{{ */ if ($showtree==1){ $this->contentHeading("", true); diff --git a/views/bootstrap/class.DocumentChooser.php b/views/bootstrap/class.DocumentChooser.php index 0887c5c8d..a84fea876 100644 --- a/views/bootstrap/class.DocumentChooser.php +++ b/views/bootstrap/class.DocumentChooser.php @@ -31,6 +31,14 @@ require_once("class.Bootstrap.php"); */ class SeedDMS_View_DocumentChooser extends SeedDMS_Bootstrap_Style { + public function subtree() { /* {{{ */ + $user = $this->params['user']; + $node = $this->params['node']; + $orderby = $this->params['orderby']; + + $this->printNewTreeNavigationSubtree($node->getID(), 1, $orderby); + } /* }}} */ + function js() { /* {{{ */ $folder = $this->params['folder']; $form = $this->params['form']; diff --git a/views/bootstrap/class.FolderChooser.php b/views/bootstrap/class.FolderChooser.php index baf8778cc..73beaf5c4 100644 --- a/views/bootstrap/class.FolderChooser.php +++ b/views/bootstrap/class.FolderChooser.php @@ -31,6 +31,14 @@ require_once("class.Bootstrap.php"); */ class SeedDMS_View_FolderChooser extends SeedDMS_Bootstrap_Style { + public function subtree() { /* {{{ */ + $user = $this->params['user']; + $node = $this->params['node']; + $orderby = $this->params['orderby']; + + $this->printNewTreeNavigationSubtree($node->getID(), 0, $orderby); + } /* }}} */ + function js() { /* {{{ */ $rootfolderid = $this->params['rootfolderid']; $form = $this->params['form']; diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index c9d93165e..0909e7f87 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -83,7 +83,15 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style { } } /* }}} */ - function js() { /* {{{ */ + public function subtree() { /* {{{ */ + $user = $this->params['user']; + $node = $this->params['node']; + $orderby = $this->params['orderby']; + + $this->printNewTreeNavigationSubtree($node->getID(), 0, $orderby); + } /* }}} */ + + public function js() { /* {{{ */ $user = $this->params['user']; $folder = $this->params['folder']; $orderby = $this->params['orderby']; From 4767bf69d0d010f78fd771302c1a939491d8e12f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 8 Aug 2019 09:37:33 +0200 Subject: [PATCH 160/467] new version 5.1.13 --- SeedDMS_Core/Core/inc.ClassDMS.php | 2 +- inc/inc.Version.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index 0a15100b9..5692511d3 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -383,7 +383,7 @@ class SeedDMS_Core_DMS { $this->callbacks = array(); $this->version = '@package_version@'; if($this->version[0] == '@') - $this->version = '5.1.12'; + $this->version = '5.1.13'; } /* }}} */ /** diff --git a/inc/inc.Version.php b/inc/inc.Version.php index 9e1caf3d3..868cb1499 100644 --- a/inc/inc.Version.php +++ b/inc/inc.Version.php @@ -20,7 +20,7 @@ class SeedDMS_Version { - public $_number = "5.1.12"; + public $_number = "5.1.13"; private $_string = "SeedDMS"; function __construct() { From f378aeb013a49de19eefb82c0a59d8e8960fe9cc Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 8 Aug 2019 15:49:08 +0200 Subject: [PATCH 161/467] add new file class.Decorator.php --- SeedDMS_Core/package.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index f1ac24838..9b86dfc1b 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -78,6 +78,9 @@ + + +
    • From 5fc0d5667f0c67e1fa51e7ca54458e6ad9f7c5e8 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Aug 2019 08:09:53 +0200 Subject: [PATCH 162/467] do not send notification to owner other operations on documents don't do neither --- op/op.MoveFolder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/op/op.MoveFolder.php b/op/op.MoveFolder.php index 72afcf7bf..8a3c44d57 100644 --- a/op/op.MoveFolder.php +++ b/op/op.MoveFolder.php @@ -93,8 +93,8 @@ if ($folder->setParent($targetFolder)) { $notifier->toGroup($user, $grp, $subject, $message, $params); } // if user is not owner send notification to owner - if ($user->getID() != $folder->getOwner()->getID()) - $notifier->toIndividual($user, $folder->getOwner(), $subject, $message, $params); + //if ($user->getID() != $folder->getOwner()->getID()) + // $notifier->toIndividual($user, $folder->getOwner(), $subject, $message, $params); } } else { From 269fa309369847697db1f3a3abc13f61ffa8db04 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Aug 2019 08:10:40 +0200 Subject: [PATCH 163/467] remove extra containerStart --- views/bootstrap/class.FolderNotify.php | 1 - 1 file changed, 1 deletion(-) diff --git a/views/bootstrap/class.FolderNotify.php b/views/bootstrap/class.FolderNotify.php index 2ac72d76b..de62b5b7a 100644 --- a/views/bootstrap/class.FolderNotify.php +++ b/views/bootstrap/class.FolderNotify.php @@ -79,7 +79,6 @@ $(document).ready(function() { $this->pageNavigation($this->getFolderPathHTML($folder, true), "view_folder", $folder); $this->contentHeading(getMLText("edit_existing_notify")); - $this->contentContainerStart(); $userNotifyIDs = array(); foreach ($notifyList["users"] as $userNotify) { From 65703c18629efef3dd0f8cb0433d44ecc1da9dfa Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Aug 2019 08:11:12 +0200 Subject: [PATCH 164/467] add url to notification mail --- op/op.RemoveDocument.php | 1 + 1 file changed, 1 insertion(+) diff --git a/op/op.RemoveDocument.php b/op/op.RemoveDocument.php index cb9463b64..05cda0d28 100644 --- a/op/op.RemoveDocument.php +++ b/op/op.RemoveDocument.php @@ -106,6 +106,7 @@ if ($notifier){ $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; + $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { $notifier->toGroup($user, $grp, $subject, $message, $params); From 4b2b536fdbf04fab855c8e566ce42174e5736e08 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 17 Aug 2019 08:00:06 +0200 Subject: [PATCH 165/467] allow status override if the new status is 'obsoleted' --- op/op.OverrideContentStatus.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/op/op.OverrideContentStatus.php b/op/op.OverrideContentStatus.php index 46745bbb7..afee7561a 100644 --- a/op/op.OverrideContentStatus.php +++ b/op/op.OverrideContentStatus.php @@ -59,7 +59,8 @@ if (!isset($_POST["overrideStatus"]) || !is_numeric($_POST["overrideStatus"]) || $overallStatus = $content->getStatus(); -// status change control +// status change control, setting a status to obsolete is alwasy allowed +if(intval($_POST["overrideStatus"]) != S_OBSOLETE) if ($overallStatus["status"] == S_REJECTED || $overallStatus["status"] == S_EXPIRED || $overallStatus["status"] == S_DRAFT_REV || $overallStatus["status"] == S_DRAFT_APP || $overallStatus["status"] == S_IN_WORKFLOW) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("cannot_change_final_states")); } From e571fe38a5009b3efc8408da93241be5227c0fa3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 22 Aug 2019 07:47:04 +0200 Subject: [PATCH 166/467] send notifications, check for duplicate folder/document names if configured --- webdav/index.php | 29 +++- webdav/webdav.php | 343 +++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 351 insertions(+), 21 deletions(-) diff --git a/webdav/index.php b/webdav/index.php index 8d1cf3e92..7c3bac0ed 100644 --- a/webdav/index.php +++ b/webdav/index.php @@ -1,5 +1,7 @@ _logFileEnable) { if ($settings->_logFileRotation=="h") $logname=date("YmdH", time()); else if ($settings->_logFileRotation=="d") $logname=date("Ymd", time()); @@ -17,16 +20,38 @@ if($settings->_logFileEnable) { @mkdir($settings->_contentDir.'log'); if(file_exists($settings->_contentDir.'log') && is_dir($settings->_contentDir.'log')) { $log = Log::factory('file', $logname); - $log->setMask(Log::MAX(PEAR_LOG_INFO)); + $log->setMask(Log::MAX(PEAR_LOG_DEBUG)); } else $log = null; } else { $log = null; } +$notifier = new SeedDMS_NotificationService(); + +if(isset($GLOBALS['SEEDDMS_HOOKS']['notification'])) { + foreach($GLOBALS['SEEDDMS_HOOKS']['notification'] as $notificationObj) { + if(method_exists($notificationObj, 'preAddService')) { + $notificationObj->preAddService($dms, $notifier); + } + } +} + +if($settings->_enableEmail) { + $notifier->addService(new SeedDMS_EmailNotify($dms, $settings->_smtpSendFrom, $settings->_smtpServer, $settings->_smtpPort, $settings->_smtpUser, $settings->_smtpPassword)); +} + +if(isset($GLOBALS['SEEDDMS_HOOKS']['notification'])) { + foreach($GLOBALS['SEEDDMS_HOOKS']['notification'] as $notificationObj) { + if(method_exists($notificationObj, 'postAddService')) { + $notificationObj->postAddService($dms, $notifier); + } + } +} + include("webdav.php"); $server = new HTTP_WebDAV_Server_SeedDMS(); -$server->ServeRequest($dms, $log); +$server->ServeRequest($dms, $log, $notifier); //$files = array(); //$options = array('path'=>'/Test1/subdir', 'depth'=>1); //echo $server->MKCOL(&$options); diff --git a/webdav/webdav.php b/webdav/webdav.php index 12dab5244..ff08f71ee 100644 --- a/webdav/webdav.php +++ b/webdav/webdav.php @@ -31,6 +31,16 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server */ var $logger = null; + /** + * A reference to a notifier + * + * This is set by ServeRequest + * + * @access private + * @var object + */ + var $notifier = null; + /** * Currently logged in user * @@ -53,7 +63,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server * @access public * @param object $dms reference to DMS */ - function ServeRequest($dms = null, $logger = null) /* {{{ */ + function ServeRequest($dms = null, $logger = null, $notifier = null) /* {{{ */ { // set root directory, defaults to webserver document root if not set if ($dms) { @@ -65,6 +75,9 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server // set logger $this->logger = $logger; + // set notifier + $this->notifier = $notifier; + // special treatment for litmus compliance test // reply on its identifier header // not needed for the test itself but eases debugging @@ -93,6 +106,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server if($this->logger) { switch($methode) { case 'MOVE': + case 'COPY': $msg = $methode.': '.$options['path'].' -> '.$options['dest']; break; default: @@ -601,7 +615,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $document = $this->dms->getDocumentByName($name, $folder); if($document) { if($this->logger) - $this->logger->log('PUT: replacing document id='.$document->getID(), PEAR_LOG_INFO); + $this->logger->log('PUT: saving document id='.$document->getID(), PEAR_LOG_INFO); if ($document->getAccessMode($this->user, 'updateDocument') < M_READWRITE) { if($this->logger) $this->logger->log('PUT: no access on document', PEAR_LOG_ERR); @@ -633,13 +647,63 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server } else { if($this->logger) $this->logger->log('PUT: adding new version', PEAR_LOG_INFO); - if(!$document->addContent('', $this->user, $tmpFile, $name, $fileType, $mimetype, array(), array(), 0)) { + + if($settings->_enableFullSearch) { + $index = $indexconf['Indexer']::open($settings->_luceneDir); + $indexconf['Indexer']::init($settings->_stopWordsFile); + } else { + $index = null; + $indexconf = null; + } + + $controller = Controller::factory('UpdateDocument'); + $controller->setParam('dms', $this->dms); + $controller->setParam('user', $this->user); + $controller->setParam('documentsource', 'webdav'); + $controller->setParam('folder', $document->getFolder()); + $controller->setParam('document', $document); + $controller->setParam('index', $index); + $controller->setParam('indexconf', $indexconf); + $controller->setParam('comment', ''); + $controller->setParam('userfiletmp', $tmpFile); + $controller->setParam('userfilename', $name); + $controller->setParam('filetype', $fileType); + $controller->setParam('userfiletype', $mimetype); + $controller->setParam('reviewers', array()); + $controller->setParam('approvers', array()); + $controller->setParam('attributes', array()); + $controller->setParam('workflow', null); + + if(!$content = $controller->run()) { +// if(!$document->addContent('', $this->user, $tmpFile, $name, $fileType, $mimetype, array(), array(), 0)) { if($this->logger) $this->logger->log('PUT: error adding new version', PEAR_LOG_ERR); unlink($tmpFile); return "409 Conflict"; } } + if($this->notifier) { + if($this->logger) + $this->logger->log('PUT: Sending Notifications', PEAR_LOG_INFO); + $notifyList = $document->getNotifyList(); + $folder = $document->getFolder(); + + $subject = "document_updated_email_subject"; + $message = "document_updated_email_body"; + $params = array(); + $params['name'] = $document->getName(); + $params['folder_path'] = $folder->getFolderPathPlain(); + $params['username'] = $this->user->getFullName(); + $params['comment'] = $document->getComment(); + $params['version_comment'] = $content->getComment(); + $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['sitename'] = $settings->_siteName; + $params['http_root'] = $settings->_httpRoot; + $this->notifier->toList($this->user, $notifyList["users"], $subject, $message, $params); + foreach ($notifyList["groups"] as $grp) { + $this->notifier->toGroup($this->user, $grp, $subject, $message, $params); + } + } } } } else { @@ -651,6 +715,16 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server unlink($tmpFile); return "403 Forbidden"; } + + /* Check if name already exists in the folder */ + /* + if(!$settings->_enableDuplicateDocNames) { + if($folder->hasDocumentByName($name)) { + return "403 Forbidden"; + } + } + */ + if($settings->_enableFullSearch) { $index = $indexconf['Indexer']::open($settings->_luceneDir); $indexconf['Indexer']::init($settings->_stopWordsFile); @@ -699,6 +773,33 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $this->logger->log('PUT: error adding object: '.$controller->getErrorMsg(), PEAR_LOG_ERR); return "409 Conflict ".$controller->getErrorMsg(); } + if($this->notifier) { + if($this->logger) + $this->logger->log('PUT: Sending Notifications', PEAR_LOG_INFO); + $fnl = $folder->getNotifyList(); + $dnl = $document->getNotifyList(); + $nl = array( + 'users'=>array_unique(array_merge($dnl['users'], $fnl['users']), SORT_REGULAR), + 'groups'=>array_unique(array_merge($dnl['groups'], $fnl['groups']), SORT_REGULAR) + ); + + $subject = "new_document_email_subject"; + $message = "new_document_email_body"; + $params = array(); + $params['name'] = $name; + $params['folder_name'] = $folder->getName(); + $params['folder_path'] = $folder->getFolderPathPlain(); + $params['username'] = $this->user->getFullName(); + $params['comment'] = ''; + $params['version_comment'] = ''; + $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['sitename'] = $settings->_siteName; + $params['http_root'] = $settings->_httpRoot; + $this->notifier->toList($this->user, $nl["users"], $subject, $message, $params); + foreach ($nl["groups"] as $grp) { + $this->notifier->toGroup($this->user, $grp, $subject, $message, $params); + } + } } unlink($tmpFile); @@ -713,7 +814,9 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server * @return bool true on success */ function MKCOL($options) /* {{{ */ - { + { + global $settings; + $this->log_options('MKCOL', $options); $path = $options["path"]; @@ -774,6 +877,33 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server return "409 Conflict ".$controller->getErrorMsg(); } + if($this->notifier) { + if($this->logger) + $this->logger->log('MKCOL: Sending Notifications', PEAR_LOG_INFO); + $fnl = $folder->getNotifyList(); + $snl = $subFolder->getNotifyList(); + $nl = array( + 'users'=>array_unique(array_merge($snl['users'], $fnl['users']), SORT_REGULAR), + 'groups'=>array_unique(array_merge($snl['groups'], $fnl['groups']), SORT_REGULAR) + ); + + $subject = "new_subfolder_email_subject"; + $message = "new_subfolder_email_body"; + $params = array(); + $params['name'] = $subFolder->getName(); + $params['folder_name'] = $folder->getName(); + $params['folder_path'] = $folder->getFolderPathPlain(); + $params['username'] = $this->user->getFullName(); + $params['comment'] = ''; + $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$subFolder->getID(); + $params['sitename'] = $settings->_siteName; + $params['http_root'] = $settings->_httpRoot; + $this->notifier->toList($this->user, $nl["users"], $subject, $message, $params); + foreach ($nl["groups"] as $grp) { + $this->notifier->toGroup($this->user, $grp, $subject, $message, $params); + } + } + return ("201 Created"); } /* }}} */ @@ -820,6 +950,16 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $this->logger->log('DELETE: cannot delete, folder has children', PEAR_LOG_ERR); return "409 Conflict"; } + + $parent = $obj->getParent(); + $fnl = $obj->getNotifyList(); + $pnl = $parent->getNotifyList(); + $nl = array( + 'users'=>array_unique(array_merge($fnl['users'], $pnl['users']), SORT_REGULAR), + 'groups'=>array_unique(array_merge($fnl['groups'], $pnl['groups']), SORT_REGULAR) + ); + $foldername = $obj->getName(); + $controller = Controller::factory('RemoveFolder'); $controller->setParam('dms', $this->dms); $controller->setParam('user', $this->user); @@ -827,10 +967,39 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $controller->setParam('index', $index); $controller->setParam('indexconf', $indexconf); if(!$controller->run()) { -// if(!$obj->remove()) { return "409 Conflict ".$controller->getErrorMsg(); } + + if($this->notifier) { + if($this->logger) + $this->logger->log('DELETE: Sending Notifications', PEAR_LOG_INFO); + $subject = "folder_deleted_email_subject"; + $message = "folder_deleted_email_body"; + $params = array(); + $params['name'] = $foldername; + $params['folder_path'] = $parent->getFolderPathPlain(); + $params['username'] = $this->user->getFullName(); + $params['sitename'] = $settings->_siteName; + $params['http_root'] = $settings->_httpRoot; + $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$parent->getID(); + $this->notifier->toList($this->user, $nl["users"], $subject, $message, $params); + foreach ($nl["groups"] as $grp) { + $this->notifier->toGroup($this->user, $grp, $subject, $message, $params); + } + } } else { + /* Get the notify list before removing the document + * Also inform the users/groups of the parent folder + */ + $folder = $obj->getFolder(); + $dnl = $obj->getNotifyList(); + $fnl = $folder->getNotifyList(); + $nl = array( + 'users'=>array_unique(array_merge($dnl['users'], $fnl['users']), SORT_REGULAR), + 'groups'=>array_unique(array_merge($dnl['groups'], $fnl['groups']), SORT_REGULAR) + ); + $docname = $obj->getName(); + $controller = Controller::factory('RemoveDocument'); $controller->setParam('dms', $this->dms); $controller->setParam('user', $this->user); @@ -838,9 +1007,26 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $controller->setParam('index', $index); $controller->setParam('indexconf', $indexconf); if(!$controller->run()) { -// if(!$obj->remove()) { return "409 Conflict ".$controller->getErrorMsg(); } + + if($this->notifier){ + if($this->logger) + $this->logger->log('DELETE: Sending Notifications', PEAR_LOG_INFO); + $subject = "document_deleted_email_subject"; + $message = "document_deleted_email_body"; + $params = array(); + $params['name'] = $docname; + $params['folder_path'] = $folder->getFolderPathPlain(); + $params['username'] = $this->user->getFullName(); + $params['sitename'] = $settings->_siteName; + $params['http_root'] = $settings->_httpRoot; + $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $this->notifier->toList($this->user, $nl["users"], $subject, $message, $params); + foreach ($nl["groups"] as $grp) { + $this->notifier->toGroup($this->user, $grp, $subject, $message, $params); + } + } } return "204 No Content"; @@ -855,6 +1041,8 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server */ function MOVE($options) /* {{{ */ { + global $settings; + $this->log_options('MOVE', $options); // no copying to different WebDAV Servers yet @@ -908,13 +1096,13 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $fspath = $this->dms->contentDir.'/'.$content->getPath(); /* save the content as a new version in the destination document */ - if(!$objdest->addContent('', $this->user, $fspath, $content->getOriginalFileName(), $content->getFileType(), $content->getMimeType, array(), array(), 0)) { + if(!$objdest->addContent('', $this->user, $fspath, $content->getOriginalFileName(), $content->getFileType(), $content->getMimeType(), array(), array(), 0)) { unlink($tmpFile); return "409 Conflict"; } /* change the name of the destination object */ - $objdest->setName($objsource->getName()); + // $objdest->setName($objsource->getName()); /* delete the source object */ $objsource->remove(); @@ -922,11 +1110,84 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server return "204 No Content"; } elseif(get_class($objdest) == $this->dms->getClassname('folder')) { /* Set the new Folder of the source object */ - if(get_class($objsource) == $this->dms->getClassname('document')) - $objsource->setFolder($objdest); - elseif(get_class($objsource) == $this->dms->getClassname('folder')) - $objsource->setParent($objdest); - else + if(get_class($objsource) == $this->dms->getClassname('document')) { + /* Check if name already exists in the folder */ + /* + if(!$settings->_enableDuplicateDocNames) { + if($objdest->hasDocumentByName($objsource->getName())) { + return "403 Forbidden"; + } + } + */ + + $oldFolder = $objsource->getFolder(); + if($objsource->setFolder($objdest)) { + if($this->notifier) { + if($this->logger) + $this->logger->log('MOVE: Sending Notifications', PEAR_LOG_INFO); + $nl1 = $oldFolder->getNotifyList(); + $nl2 = $objsource->getNotifyList(); + $nl3 = $objdest->getNotifyList(); + $nl = array( + 'users'=>array_unique(array_merge($nl1['users'], $nl2['users'], $nl3['users']), SORT_REGULAR), + 'groups'=>array_unique(array_merge($nl1['groups'], $nl2['groups'], $nl3['groups']), SORT_REGULAR) + ); + $subject = "document_moved_email_subject"; + $message = "document_moved_email_body"; + $params = array(); + $params['name'] = $objsource->getName(); + $params['old_folder_path'] = $oldFolder->getFolderPathPlain(); + $params['new_folder_path'] = $objdest->getFolderPathPlain(); + $params['username'] = $this->user->getFullName(); + $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$objsource->getID(); + $params['sitename'] = $settings->_siteName; + $params['http_root'] = $settings->_httpRoot; + $this->notifier->toList($this->user, $nl["users"], $subject, $message, $params); + foreach ($nl["groups"] as $grp) { + $this->notifier->toGroup($this->user, $grp, $subject, $message, $params); + } + } + } else { + return "500 Internal server error"; + } + } elseif(get_class($objsource) == $this->dms->getClassname('folder')) { + /* Check if name already exists in the folder */ + if(!$settings->_enableDuplicateSubFolderNames) { + if($objdest->hasSubFolderByName($objsource->getName())) { + return "403 Forbidden"; + } + } + $oldFolder = $objsource->getParent(); + if($objsource->setParent($objdest)) { + if($this->notifier) { + if($this->logger) + $this->logger->log('MOVE: Sending Notifications', PEAR_LOG_INFO); + $nl1 = $oldFolder->getNotifyList(); + $nl2 = $objsource->getNotifyList(); + $nl3 = $objdest->getNotifyList(); + $nl = array( + 'users'=>array_unique(array_merge($nl1['users'], $nl2['users'], $nl3['users']), SORT_REGULAR), + 'groups'=>array_unique(array_merge($nl1['groups'], $nl2['groups'], $nl3['groups']), SORT_REGULAR) + ); + $subject = "folder_moved_email_subject"; + $message = "folder_moved_email_body"; + $params = array(); + $params['name'] = $objsource->getName(); + $params['old_folder_path'] = $oldFolder->getFolderPathPlain(); + $params['new_folder_path'] = $objdest->getFolderPathPlain(); + $params['username'] = $this->user->getFullName(); + $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['sitename'] = $settings->_siteName; + $params['http_root'] = $settings->_httpRoot; + $this->notifier->toList($this->user, $nl["users"], $subject, $message, $params); + foreach ($nl["groups"] as $grp) { + $this->notifier->toGroup($this->user, $grp, $subject, $message, $params); + } + } + } else { + return "500 Internal server error"; + } + } else return "500 Internal server error"; if($newdocname) $objsource->setName($newdocname); @@ -940,12 +1201,11 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server * @param array general parameter passing array * @return bool true on success */ - function COPY($options, $del=false) /* {{{ */ + function COPY($options) /* {{{ */ { global $settings, $indexconf; - if(!$del) - $this->log_options('COPY', $options); + $this->log_options('COPY', $options); // TODO Property updates still broken (Litmus should detect this?) @@ -974,6 +1234,8 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server // get dest folder or document $objdest = $this->reverseLookup($options["dest"]); + // If the destination doesn't exists, then check if the parent folder exists + // and set $newdocname, which is later used to create a new document $newdocname = ''; if(!$objdest) { /* check if at least the dest directory exists */ @@ -995,7 +1257,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server return "403 Forbidden"; } - /* If destination object is a document it must be overwritten */ + /* If destination object is a document the source document will create a new version */ if(get_class($objdest) == $this->dms->getClassname('document')) { if (!$options["overwrite"]) { return "412 precondition failed"; @@ -1009,13 +1271,19 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $content = $objsource->getLatestContent(); $fspath = $this->dms->contentDir.'/'.$content->getPath(); + /* If the checksum of source and destination are equal, then do not copy */ + if($content->getChecksum() == $objdest->getLatestContent()->getChecksum()) { + return "204 No Content"; + } + /* save the content as a new version in the destination document */ - if(!$objdest->addContent('', $this->user, $fspath, $content->getOriginalFileName(), $content->getFileType(), $content->getMimeType, array(), array(), 0)) { + if(!$objdest->addContent('', $this->user, $fspath, $content->getOriginalFileName(), $content->getFileType(), $content->getMimeType(), array(), array(), 0)) { unlink($tmpFile); return "409 Conflict"; } - $objdest->setName($objsource->getName()); + /* Since 5.1.13 do not overwrite the name anymore + $objdest->setName($objsource->getName()); */ return "204 No Content"; } elseif(get_class($objdest) == $this->dms->getClassname('folder')) { @@ -1033,6 +1301,15 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server if(!$newdocname) $newdocname = $objsource->getName(); + /* Check if name already exists in the folder */ + /* + if(!$settings->_enableDuplicateDocNames) { + if($objdest->hasDocumentByName($newdocname)) { + return "403 Forbidden"; + } + } + */ + /* get the latest content of the source object */ $content = $objsource->getLatestContent(); $fspath = $this->dms->contentDir.'/'.$content->getPath(); @@ -1084,6 +1361,34 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $this->logger->log('COPY: error copying object', PEAR_LOG_ERR); return "409 Conflict"; } + + if($this->notifier) { + if($this->logger) + $this->logger->log('COPY: Sending Notifications', PEAR_LOG_INFO); + $fnl = $objdest->getNotifyList(); + $dnl = $document->getNotifyList(); + $nl = array( + 'users'=>array_unique(array_merge($dnl['users'], $fnl['users']), SORT_REGULAR), + 'groups'=>array_unique(array_merge($dnl['groups'], $fnl['groups']), SORT_REGULAR) + ); + + $subject = "new_document_email_subject"; + $message = "new_document_email_body"; + $params = array(); + $params['name'] = $name; + $params['folder_name'] = $objdest->getName(); + $params['folder_path'] = $objdest->getFolderPathPlain(); + $params['username'] = $this->user->getFullName(); + $params['comment'] = ''; + $params['version_comment'] = ''; + $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$objdest->getID(); + $params['sitename'] = $settings->_siteName; + $params['http_root'] = $settings->_httpRoot; + $this->notifier->toList($this->user, $nl["users"], $subject, $message, $params); + foreach ($nl["groups"] as $grp) { + $this->notifier->toGroup($this->user, $grp, $subject, $message, $params); + } + } return "201 Created"; } } /* }}} */ From 712a504d9b50c6d6657ec2057f397a1bd3b869af Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 27 Aug 2019 14:13:03 +0200 Subject: [PATCH 167/467] remove debug output --- SeedDMS_Core/Core/inc.ClassDocument.php | 1 - 1 file changed, 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 1cd285cb0..fddc19954 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -1488,7 +1488,6 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ $db->rollbackTransaction(); return false; } - echo $tmpFile; if($this->_dms->forceRename) $err = SeedDMS_Core_File::renameFile($tmpFile, $this->_dms->contentDir . $dir . $version . $fileType); else From aed406b167f94bfe6e72cc7ef192e023e975f853 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 27 Aug 2019 14:13:26 +0200 Subject: [PATCH 168/467] check for data-no-spinner, make drag&drop work if loaded by ajax --- styles/bootstrap/application.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 58a74605a..294679d58 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -405,7 +405,8 @@ $(document).ready( function() { } else { url += "&"+param1; } - element.prepend('
      '); + if(!element.data('no-spinner')) + element.prepend('
      '); $.get(url, function(data) { element.html(data); $(".chzn-select").select2({ @@ -571,7 +572,7 @@ function onAddClipboard(ev) { /* {{{ */ processData: false, cache: false, data: formData, - success: function(data){ + success: function(data, textStatus) { status.setProgress(100); if(data.success) { noty({ @@ -707,26 +708,25 @@ function onAddClipboard(ev) { /* {{{ */ }( window.SeedDMSUpload = window.SeedDMSUpload || {}, jQuery )); /* }}} */ $(document).ready(function() { /* {{{ */ - var obj = $("#dragandrophandler"); - obj.on('dragenter', function (e) { + $(document).on('dragenter', "#dragandrophandler", function (e) { e.stopPropagation(); e.preventDefault(); $(this).css('border', '2px dashed #0B85A1'); }); - obj.on('dragleave', function (e) { + $(document).on('dragleave', "#dragandrophandler", function (e) { $(this).css('border', '0px solid white'); }); - obj.on('dragover', function (e) { + $(document).on('dragover', "#dragandrophandler", function (e) { e.stopPropagation(); e.preventDefault(); }); - obj.on('drop', function (e) { + $(document).on('drop', "#dragandrophandler", function (e) { $(this).css('border', '0px dotted #0B85A1'); e.preventDefault(); var files = e.originalEvent.dataTransfer.files; //We need to send dropped files to Server - SeedDMSUpload.handleFileUpload(files,obj, obj); + SeedDMSUpload.handleFileUpload(files, $(this), $(this)); }); $(document).on('dragenter', '.droptarget', function (e) { From bd99b078ca9de620e2f948687ca21ec72d74ccf5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 27 Aug 2019 14:35:22 +0200 Subject: [PATCH 169/467] split page into seperate views, click in tree just updates the views a page reload isn't needed anymore --- views/bootstrap/class.Bootstrap.php | 20 +- views/bootstrap/class.ViewFolder.php | 413 +++++++++++++++------------ 2 files changed, 245 insertions(+), 188 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 526ee5ebc..2c6f85dd2 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1593,11 +1593,11 @@ $(document).ready(function() { if($path || $expandtree>=$level) { if($path) $pathfolder = array_shift($path); + $children = array(); $subfolders = $folder->getSubFolders(isset($orderby[0]) ? $orderby[0] : '', $orderdir); $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); - $children = array(); foreach($subfolders as $subfolder) { - $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? true : false, 'is_folder'=>true); + $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? false : false, 'is_folder'=>true); if($expandtree>=$level || $pathfolder->getID() == $subfolder->getID()) { $node['children'] = jqtree($path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1); if($showdocs) { @@ -1617,7 +1617,7 @@ $(document).ready(function() { $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); $children = array(); foreach($subfolders as $subfolder) { - $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? true : false, 'is_folder'=>true); + $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? false : false, 'is_folder'=>true); $children[] = $node; } return $children; @@ -1636,7 +1636,7 @@ $(document).ready(function() { $node['load_on_demand'] = false; $node['children'] = array(); } else { - $node['children'] = jqtree($path, $folder, $this->params['user'], $accessmode, $showdocs, $expandtree, $orderby, 0); + $node['children'] = jqtree($path, $folder, $this->params['user'], $accessmode, $showdocs, 0 /*$expandtree*/, $orderby, 0); if($showdocs) { $documents = $folder->getDocuments(isset($orderby[0]) ? $orderby[0] : '', $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $this->params['user'], $accessmode); @@ -1656,14 +1656,14 @@ $(document).ready(function() { } else { $root = $this->params['dms']->getFolder($this->params['rootfolderid']); - $tree = array(array('label'=>$root->getName(), 'id'=>$root->getID(), 'load_on_demand'=>true, 'is_folder'=>true)); + $tree = array(array('label'=>$root->getName(), 'id'=>$root->getID(), 'load_on_demand'=>false, 'is_folder'=>true)); } - ?> var data = ; $(function() { $('#jqtree').tree({ // saveState: true, + selectable: false, data: data, saveState: 'jqtree', openedIcon: $(''), @@ -1687,17 +1687,19 @@ $(function() { // Unfold node for currently selected folder $('#jqtree').tree('openNode', $('#jqtree').tree('getNodeById', ), false); $('#jqtree').on( - 'tree.select', + 'tree.click', function(event) { var node = event.node; + if(!node) + return; $('#jqtree').tree('openNode', node); // event.preventDefault(); if(node.is_folder) { if(typeof node.fetched == 'undefined') { node.fetched = true; $(this).tree('loadDataFromUrl', node, function () { - $(this).tree('openNode', node);} - ); + $(this).tree('openNode', node); + }); } folderSelected(node.id, node.name); } else diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 0909e7f87..27b8bf985 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -105,7 +105,9 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style { parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); ?> function folderSelected(id, name) { - window.location = '../out/out.ViewFolder.php?folderid=' + id; +// window.location = '../out/out.ViewFolder.php?folderid=' + id; +console.log(id); + $('div.ajax').trigger('update', {folderid: id}); } function loadMoreObjects(element, limit) { @@ -159,6 +161,221 @@ $('#loadmore').click(function(e) { $this->printDeleteDocumentButtonJs(); } /* }}} */ + function folderInfos() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + + $txt = $this->callHook('folderInfo', $folder); + if(is_string($txt)) + echo $txt; + else { + + $owner = $folder->getOwner(); + $this->contentHeading(getMLText("folder_infos")); + $this->contentContainerStart(); + echo "\n"; + if($user->isAdmin()) { + echo ""; + echo "\n"; + echo "\n"; + echo ""; + } + echo ""; + echo "\n"; + echo "\n"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + if($folder->getComment()) { + echo ""; + echo "\n"; + echo "\n"; + echo ""; + } + + if($user->isAdmin()) { + echo ""; + echo ""; + echo ""; + echo ""; + if($folder->inheritsAccess()) { + echo ""; + echo "\n"; + echo ""; + } else { + echo ""; + echo ""; + echo ""; + echo ""; + } + } + $attributes = $folder->getAttributes(); + if($attributes) { + foreach($attributes as $attribute) { + $arr = $this->callHook('showFolderAttribute', $folder, $attribute); + if(is_array($arr)) { + echo $txt; + echo ""; + echo ""; + echo ""; + echo ""; + } else { + $attrdef = $attribute->getAttributeDefinition(); + ?> + + + + +\n"; + $this->contentContainerEnd(); + } + } /* }}} */ + + function folderList() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + $folderid = $folder->getId(); + $orderby = $this->params['orderby']; + $orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc'); + $cachedir = $this->params['cachedir']; + $maxItemsPerPage = $this->params['maxItemsPerPage']; + $incItemsPerPage = $this->params['incItemsPerPage']; + $previewwidth = $this->params['previewWidthList']; + $previewconverters = $this->params['previewConverters']; + $timeout = $this->params['timeout']; + $xsendfile = $this->params['xsendfile']; + + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); + $previewer->setConverters($previewconverters); + + $txt = $this->callHook('listHeader', $folder); + if(is_string($txt)) + echo $txt; + else + $this->contentHeading(getMLText("folder_contents")); + + $subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby[0], $orderdir); + if($subFolders === null) + $subFolders = $folder->getSubFolders($orderby[0], $orderdir); + $subFolders = SeedDMS_Core_DMS::filterAccess($subFolders, $user, M_READ); + $documents = $this->callHook('folderGetDocuments', $folder, $orderby[0], $orderdir); + if($documents === null) + $documents = $folder->getDocuments($orderby[0], $orderdir); + $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ); + + $txt = $this->callHook('folderListPreContent', $folder, $subFolders, $documents); + if(is_string($txt)) + echo $txt; + $i = 0; + if ((count($subFolders) > 0)||(count($documents) > 0)){ + $txt = $this->callHook('folderListHeader', $folder, $orderby, $orderdir); + if(is_string($txt)) + echo $txt; + else { + print "
      ".getMLText("id").":".htmlspecialchars($folder->getID())."
      ".getMLText("owner").":getEmail())."\">".htmlspecialchars($owner->getFullName())."
      ".getMLText("creation_date").":".getLongReadableDate($folder->getDate())."
      ".getMLText("comment").":".htmlspecialchars($folder->getComment())."
      ".getMLText('default_access').":".$this->getAccessModeText($folder->getDefaultAccess())."
      ".getMLText("access_mode").":"; + echo getMLText("inherited")."
      "; + $this->printAccessList($folder); + echo "
      ".getMLText('access_mode').":"; + $this->printAccessList($folder); + echo "
      ".$arr[0].":".$arr[1].":
      getName()); ?>:getValueAsArray())); ?>
      "; + print "\n\n"; + print "\n"; + print "\n"; + // print "\n"; + print "\n"; + // print "\n"; + print "\n"; + print "\n\n\n"; + } + + foreach($subFolders as $subFolder) { + if(!$maxItemsPerPage || $i < $maxItemsPerPage) { + $txt = $this->callHook('folderListItem', $subFolder, 'viewfolder'); + if(is_string($txt)) + echo $txt; + else { + echo $this->folderListRow($subFolder); + } + } + $i++; + } + + if($subFolders && $documents) { + if(!$maxItemsPerPage || $maxItemsPerPage > count($subFolders)) { + $txt = $this->callHook('folderListSeparator', $folder); + if(is_string($txt)) + echo $txt; + } + } + + foreach($documents as $document) { + if(!$maxItemsPerPage || $i < $maxItemsPerPage) { + $document->verifyLastestContentExpriry(); + $txt = $this->callHook('documentListItem', $document, $previewer, false, 'viewfolder'); + if(is_string($txt)) + echo $txt; + else { + echo $this->documentListRow($document, $previewer); + } + } + $i++; + } + + $txt = $this->callHook('folderListFooter', $folder); + if(is_string($txt)) + echo $txt; + else + echo "\n
      ".getMLText("name"); + print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; + print " ".($orderby=="s"||$orderby=="sa"?' ':($orderby=="sd"?' ':' ')).""; + print " ".($orderby=="d"||$orderby=="da"?' ':($orderby=="dd"?' ':' ')).""; + print "".getMLText("owner")."".getMLText("status")."".getMLText("version")."".getMLText("action")."
      \n"; + + if($maxItemsPerPage && $i > $maxItemsPerPage) + echo ""; + } + else printMLText("empty_folder_list"); + + $txt = $this->callHook('folderListPostContent', $folder, $subFolders, $documents); + if(is_string($txt)) + echo $txt; + + } /* }}} */ + + function navigation() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + + $txt = $this->callHook('folderMenu', $folder); + if(is_string($txt)) + echo $txt; + else { + $this->pageNavigation($this->getFolderPathHTML($folder), "view_folder", $folder); + } + + echo $this->callHook('preContent'); + } /* }}} */ + + function dropUpload() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + + $this->contentHeading(getMLText("dropupload"), true); +?> +
      +params['dms']; $user = $this->params['user']; @@ -254,25 +471,20 @@ $('#loadmore').click(function(e) { $xsendfile = $this->params['xsendfile']; $folderid = $folder->getId(); + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); + $previewer->setConverters($previewconverters); $this->htmlAddHeader(''."\n", 'js'); echo $this->callHook('startPage'); $this->htmlStartPage(getMLText("folder_title", array("foldername" => htmlspecialchars($folder->getName())))); - $this->globalNavigation($folder); $this->contentStart(); - $txt = $this->callHook('folderMenu', $folder); - if(is_string($txt)) - echo $txt; - else { - $this->pageNavigation($this->getFolderPathHTML($folder), "view_folder", $folder); - } - $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); - $previewer->setConverters($previewconverters); - - echo $this->callHook('preContent'); +// $this->navigation(); +?> +
      getID()."\"" : "") ?>>
      +\n"; @@ -313,184 +525,27 @@ $('#loadmore').click(function(e) { echo "
      "; echo "
      "; } - $txt = $this->callHook('folderInfo', $folder); - if(is_string($txt)) - echo $txt; - else { - $owner = $folder->getOwner(); - $this->contentHeading(getMLText("folder_infos")); - $this->contentContainerStart(); - echo "\n"; - if($user->isAdmin()) { - echo ""; - echo "\n"; - echo "\n"; - echo ""; - } - echo ""; - echo "\n"; - echo "\n"; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - if($folder->getComment()) { - echo ""; - echo "\n"; - echo "\n"; - echo ""; - } - - if($user->isAdmin()) { - echo ""; - echo ""; - echo ""; - echo ""; - if($folder->inheritsAccess()) { - echo ""; - echo "\n"; - echo ""; - } else { - echo ""; - echo ""; - echo ""; - echo ""; - } - } - $attributes = $folder->getAttributes(); - if($attributes) { - foreach($attributes as $attribute) { - $arr = $this->callHook('showFolderAttribute', $folder, $attribute); - if(is_array($arr)) { - echo $txt; - echo ""; - echo ""; - echo ""; - echo ""; - } else { - $attrdef = $attribute->getAttributeDefinition(); - ?> - - - - +// $this->folderInfos(); +?> +
      getID()."\"" : "") ?>>
      \n"; - $this->contentContainerEnd(); - } if ($enableDropUpload && $folder->getAccessMode($user) >= M_READWRITE) { echo ""; echo "
      "; - $this->contentHeading(getMLText("dropupload"), true); -// $this->addFooterJS("SeedDMSUpload.setUrl('../op/op.Ajax.php');"); -// $this->addFooterJS("SeedDMSUpload.setAbortBtnLabel('".getMLText("cancel")."');"); -// $this->addFooterJS("SeedDMSUpload.setEditBtnLabel('".getMLText("edit_document_props")."');"); -// $this->addFooterJS("SeedDMSUpload.setMaxFileSize(".SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize")).");"); -// $this->addFooterJS("SeedDMSUpload.setMaxFileSizeMsg('".getMLText("uploading_maxsize")."');"); +// $this->dropUpload(); ?> -
      +
      getID()."\"" : "") ?>>
      "; echo "
      "; } - $txt = $this->callHook('listHeader', $folder); - if(is_string($txt)) - echo $txt; - else - $this->contentHeading(getMLText("folder_contents")); - - $subFolders = $this->callHook('folderGetSubFolders', $folder, $orderby[0], $orderdir); - if($subFolders === null) - $subFolders = $folder->getSubFolders($orderby[0], $orderdir); - $subFolders = SeedDMS_Core_DMS::filterAccess($subFolders, $user, M_READ); - $documents = $this->callHook('folderGetDocuments', $folder, $orderby[0], $orderdir); - if($documents === null) - $documents = $folder->getDocuments($orderby[0], $orderdir); - $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ); - - $txt = $this->callHook('folderListPreContent', $folder, $subFolders, $documents); - if(is_string($txt)) - echo $txt; - $i = 0; - if ((count($subFolders) > 0)||(count($documents) > 0)){ - $txt = $this->callHook('folderListHeader', $folder, $orderby, $orderdir); - if(is_string($txt)) - echo $txt; - else { - print "
      ".getMLText("id").":".htmlspecialchars($folder->getID())."
      ".getMLText("owner").":getEmail())."\">".htmlspecialchars($owner->getFullName())."
      ".getMLText("creation_date").":".getLongReadableDate($folder->getDate())."
      ".getMLText("comment").":".htmlspecialchars($folder->getComment())."
      ".getMLText('default_access').":".$this->getAccessModeText($folder->getDefaultAccess())."
      ".getMLText("access_mode").":"; - echo getMLText("inherited")."
      "; - $this->printAccessList($folder); - echo "
      ".getMLText('access_mode').":"; - $this->printAccessList($folder); - echo "
      ".$arr[0].":".$arr[1].":
      getName()); ?>:getValueAsArray())); ?>
      "; - print "\n\n"; - print "\n"; - print "\n"; - // print "\n"; - print "\n"; - // print "\n"; - print "\n"; - print "\n\n\n"; - } - - foreach($subFolders as $subFolder) { - if(!$maxItemsPerPage || $i < $maxItemsPerPage) { - $txt = $this->callHook('folderListItem', $subFolder, 'viewfolder'); - if(is_string($txt)) - echo $txt; - else { - echo $this->folderListRow($subFolder); - } - } - $i++; - } - - if($subFolders && $documents) { - if(!$maxItemsPerPage || $maxItemsPerPage > count($subFolders)) { - $txt = $this->callHook('folderListSeparator', $folder); - if(is_string($txt)) - echo $txt; - } - } - - foreach($documents as $document) { - if(!$maxItemsPerPage || $i < $maxItemsPerPage) { - $document->verifyLastestContentExpriry(); - $txt = $this->callHook('documentListItem', $document, $previewer, false, 'viewfolder'); - if(is_string($txt)) - echo $txt; - else { - echo $this->documentListRow($document, $previewer); - } - } - $i++; - } - - $txt = $this->callHook('folderListFooter', $folder); - if(is_string($txt)) - echo $txt; - else - echo "\n
      ".getMLText("name"); - print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; - print " ".($orderby=="s"||$orderby=="sa"?' ':($orderby=="sd"?' ':' ')).""; - print " ".($orderby=="d"||$orderby=="da"?' ':($orderby=="dd"?' ':' ')).""; - print "".getMLText("owner")."".getMLText("status")."".getMLText("version")."".getMLText("action")."
      \n"; - - if($maxItemsPerPage && $i > $maxItemsPerPage) - echo ""; - } - else printMLText("empty_folder_list"); - - $txt = $this->callHook('folderListPostContent', $folder, $subFolders, $documents); - if(is_string($txt)) - echo $txt; - +// $this->folderList(); +?> +
      getID()."\"" : "") ?>>
      +\n"; // End of right column div echo "
      \n"; // End of div around left and right column From 4a22ed2ce7182e1740a8361ea4ee5faaff97a2d6 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 27 Aug 2019 21:46:19 +0200 Subject: [PATCH 170/467] pass on orderby to ajax calls --- views/bootstrap/class.ViewFolder.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 27b8bf985..b9e18fb4b 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -106,8 +106,7 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style { ?> function folderSelected(id, name) { // window.location = '../out/out.ViewFolder.php?folderid=' + id; -console.log(id); - $('div.ajax').trigger('update', {folderid: id}); + $('div.ajax').trigger('update', {folderid: id, orderby: ''}); } function loadMoreObjects(element, limit) { @@ -544,7 +543,7 @@ $('#loadmore').click(function(e) { // $this->folderList(); ?> -
      getID()."\"" : "") ?>>
      +
      getID()."&orderby=".$orderby."\"" : "") ?>>
      \n"; // End of right column div echo "
      \n"; // End of div around left and right column From 140926be96a0bfc2164317bbb9ba751b8ede2480 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 27 Aug 2019 21:46:40 +0200 Subject: [PATCH 171/467] log creation of preview files --- controllers/class.Preview.php | 2 ++ op/op.Preview.php | 1 + 2 files changed, 3 insertions(+) diff --git a/controllers/class.Preview.php b/controllers/class.Preview.php index 985d45dab..861668b08 100644 --- a/controllers/class.Preview.php +++ b/controllers/class.Preview.php @@ -57,7 +57,9 @@ class SeedDMS_Controller_Preview extends SeedDMS_Controller_Common { $previewer->setConverters($settings->_converters['preview']); $previewer->setXsendfile($settings->_enableXsendfile); if(!$previewer->hasPreview($content)) { + add_log_line(""); if(!$previewer->createPreview($content)) { + add_log_line("", PEAR_LOG_ERR); } } if(!$previewer->hasPreview($content)) { diff --git a/op/op.Preview.php b/op/op.Preview.php index ee6a3adf1..3b0903b84 100644 --- a/op/op.Preview.php +++ b/op/op.Preview.php @@ -85,6 +85,7 @@ else $previewer->setConverters($settings->_converters['preview']); $previewer->setXsendfile($settings->_enableXsendfile); if(!$previewer->hasPreview($object)) { + add_log_line(""); if(!$previewer->createPreview($object)) { } } From 4145b67dd6e18a71af64da2419c14fd089b80ca7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 27 Aug 2019 21:47:05 +0200 Subject: [PATCH 172/467] fix for determine fileType didn't work if the file didn't have a file extension but the path contains a dot. --- op/op.ImportFS.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/op/op.ImportFS.php b/op/op.ImportFS.php index 3f1b81ee9..de5f402c9 100644 --- a/op/op.ImportFS.php +++ b/op/op.ImportFS.php @@ -118,9 +118,9 @@ function import_folder($dirname, $folder, $setfiledate, $setfolderdate, $metadat $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimetype = finfo_file($finfo, $path); - $lastDotIndex = strrpos($path, "."); + $lastDotIndex = strrpos($name, "."); if (is_bool($lastDotIndex) && !$lastDotIndex) $filetype = "."; - else $filetype = substr($path, $lastDotIndex); + else $filetype = substr($name, $lastDotIndex); // echo $mimetype." - ".$filetype." - ".$path."\n"; if($res = $folder->addDocument($name, $comment, $expires, $user, $keywords, From 177e3c571a9a5a1b4fd0caaec8e257e8b67ca684 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 5 Sep 2019 08:34:11 +0200 Subject: [PATCH 173/467] fix php error when removing versions of a document --- op/op.RemoveVersion.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/op/op.RemoveVersion.php b/op/op.RemoveVersion.php index 95917380a..e8fb5f596 100644 --- a/op/op.RemoveVersion.php +++ b/op/op.RemoveVersion.php @@ -104,7 +104,7 @@ else { * be informed about the removal. */ $emailUserList = array(); - $emailUserList[] = $version->_userID; + $emailUserList[] = $version->getUser()->getID(); $emailGroupList = array(); $status = $version->getReviewStatus(); foreach ($status as $st) { @@ -150,12 +150,12 @@ else { $nl=$document->getNotifyList(); $userrecipients = array(); foreach ($emailUserList as $eID) { - $eU = $version->_document->_dms->getUser($eID); + $eU = $version->getDMS()->getUser($eID); $userrecipients[] = $eU; } $grouprecipients = array(); foreach ($emailGroupList as $eID) { - $eU = $version->_document->_dms->getGroup($eID); + $eU = $version->getDMS()->getGroup($eID); $grouprecipients[] = $eU; } From 4215eda96629381664775d176a15c7105661039e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 5 Sep 2019 12:53:45 +0200 Subject: [PATCH 174/467] remember current folder id on page, update drop folder list regulary --- CHANGELOG | 2 ++ controllers/class.Preview.php | 1 + styles/bootstrap/application.js | 6 ++++++ views/bootstrap/class.Bootstrap.php | 11 +++++++---- views/bootstrap/class.ViewFolder.php | 15 ++++++++++++++- 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b312d151e..d603823ca 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,8 @@ - Import from filesystem can read a file with metadata - drop folder chooser can be put multiple times on a page - add section in README.Install.md on how to secure the configuration +- fix php error when removing a version of a document +- major rework of ViewFolder page, most parts of the page are now loaded by ajax -------------------------------------------------------------------------------- Changes in version 5.1.12 diff --git a/controllers/class.Preview.php b/controllers/class.Preview.php index 861668b08..4ddd7b5cc 100644 --- a/controllers/class.Preview.php +++ b/controllers/class.Preview.php @@ -23,6 +23,7 @@ class SeedDMS_Controller_Preview extends SeedDMS_Controller_Common { public function run() { + global $theme; $dms = $this->params['dms']; $type = $this->params['type']; $settings = $this->params['settings']; diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 294679d58..9990acc73 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -1147,3 +1147,9 @@ $(document).ready(function() { /* {{{ */ timeOutId = setTimeout(checkTasks, 30000); } + var updateDropFolder = function() { + $('#menu-dropfolder > div.ajax').trigger('update', {folderid: seeddms_folder}); + console.log(seeddms_folder); + timeOutId = setTimeout(updateDropFolder, 60000); + } + diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 2c6f85dd2..cada9ac6c 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -166,6 +166,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo ''."\n"; if($this->params['enablemenutasks'] && isset($this->params['user']) && $this->params['user']) { $this->addFooterJS('checkTasks();'); + $this->addFooterJS('updateDropFolder();'); } if($this->footerjs) { $jscode = "$(document).ready(function () {\n"; @@ -196,6 +197,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; header('Content-Type: application/javascript'); echo "var seeddms_absbaseprefix=\"".$this->params['absbaseprefix']."\";\n"; echo "var seeddms_webroot=\"".$this->params['settings']->_httpRoot."\";\n"; + echo "var seeddms_folder=1;\n"; } /* }}} */ function footerjs() { /* {{{ */ @@ -1597,7 +1599,7 @@ $(document).ready(function() { $subfolders = $folder->getSubFolders(isset($orderby[0]) ? $orderby[0] : '', $orderdir); $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); foreach($subfolders as $subfolder) { - $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? false : false, 'is_folder'=>true); + $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? true : false, 'is_folder'=>true); if($expandtree>=$level || $pathfolder->getID() == $subfolder->getID()) { $node['children'] = jqtree($path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1); if($showdocs) { @@ -1617,7 +1619,7 @@ $(document).ready(function() { $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); $children = array(); foreach($subfolders as $subfolder) { - $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? false : false, 'is_folder'=>true); + $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? true : false, 'is_folder'=>true); $children[] = $node; } return $children; @@ -1633,7 +1635,7 @@ $(document).ready(function() { $folder = array_shift($path); $node = array('label'=>$folder->getName(), 'id'=>$folder->getID(), 'load_on_demand'=>false, 'is_folder'=>true); if(!$folder->hasSubFolders()) { - $node['load_on_demand'] = false; + $node['load_on_demand'] = true; $node['children'] = array(); } else { $node['children'] = jqtree($path, $folder, $this->params['user'], $accessmode, $showdocs, 0 /*$expandtree*/, $orderby, 0); @@ -1661,7 +1663,8 @@ $(document).ready(function() { ?> var data = ; $(function() { - $('#jqtree').tree({ + const $tree = $('#jqtree'); + $tree.tree({ // saveState: true, selectable: false, data: data, diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index b9e18fb4b..fc6122ddc 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -104,8 +104,10 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style { header('Content-Type: application/javascript; charset=UTF-8'); parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); ?> +seeddms_folder = getID() ?>; function folderSelected(id, name) { // window.location = '../out/out.ViewFolder.php?folderid=' + id; + seeddms_folder = id; $('div.ajax').trigger('update', {folderid: id, orderby: ''}); } @@ -143,7 +145,17 @@ $(window).scroll(function() { $('#loadmore').click(function(e) { loadMoreObjects($(this), $(this).data('all')); }); + +/* +$('body').on('click', '[id^=\"table-row-folder\"]', function(ev) { + attr_id = $(ev.currentTarget).attr('id').split('-')[3]; + folderSelected(attr_id, ''); + $([document.documentElement, document.body]).animate({ + scrollTop: 200 + }, 200); +}); +*/ printNewTreeNavigationJs($folder->getID(), M_READ, 0, '', ($expandFolderTree == 1) ? -1 : 3, $orderby); @@ -274,6 +286,7 @@ $('#loadmore').click(function(e) { if($documents === null) $documents = $folder->getDocuments($orderby[0], $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ); + $parent = null; //$folder->getParent(); $txt = $this->callHook('folderListPreContent', $folder, $subFolders, $documents); if(is_string($txt)) @@ -286,7 +299,7 @@ $('#loadmore').click(function(e) { else { print ""; print "\n\n"; - print "\n"; + print "\n"; print "
      ".($parent ? '' : '')."".getMLText("name"); print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; print " ".($orderby=="s"||$orderby=="sa"?' ':($orderby=="sd"?' ':' ')).""; From 88168d005ee9a7619c8853894223fcac7e9c4891 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 6 Sep 2019 14:32:14 +0200 Subject: [PATCH 175/467] take over some changes from 5.1.x --- CHANGELOG | 16 +- inc/inc.ClassAccessOperation.php | 36 ++--- inc/inc.ClassViewCommon.php | 17 +- inc/inc.Extension.php | 14 +- op/op.CreateDump.php | 9 +- op/op.CreateFolderArchive.php | 12 +- op/op.Download.php | 22 ++- out/out.DocumentChooser.php | 28 +++- views/bootstrap/class.BackupTools.php | 220 +++++++++++++------------- views/bootstrap/class.Bootstrap.php | 87 ++++++---- 10 files changed, 264 insertions(+), 197 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 4364a5903..91201f6d8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -116,6 +116,18 @@ - add document list which can be exported as an archive - search results can be exported +-------------------------------------------------------------------------------- + Changes in version 5.1.13 +-------------------------------------------------------------------------------- +- make use of backup dir, do not allow backup if backup dir is not set +- the referer parameter in op/op.Settings.php is turned into an url before used + for redirect +- Import from filesystem can read a file with metadata +- drop folder chooser can be put multiple times on a page +- add section in README.Install.md on how to secure the configuration +- fix php error when removing a version of a document +- major rework of ViewFolder page, most parts of the page are now loaded by ajax + -------------------------------------------------------------------------------- Changes in version 5.1.12 -------------------------------------------------------------------------------- @@ -145,10 +157,10 @@ -------------------------------------------------------------------------------- - fix for CVE-2019-12744 (Remote Command Execution through unvalidated file upload), add .htaccess file to data directory, better documentation - for installing seeddms + for installing seeddms - fix for CVE-2019-12745 (Persistent or Stored XSS in UsrMgr) and CVE-2019-12801 (Persistent or Stored XSS in GroupMgr), propperly escape - strings used in Select2 js library used by UsrMgr and GroupMgr + strings used in Select2 js library used by UsrMgr and GroupMgr - do not show attributes in search results in extra column anymore - fix setting language during login (Closes #437) - fix indexing documents even if no preIndexDocument hook is set (Closes #437) diff --git a/inc/inc.ClassAccessOperation.php b/inc/inc.ClassAccessOperation.php index 492be5f20..230a7ae74 100644 --- a/inc/inc.ClassAccessOperation.php +++ b/inc/inc.ClassAccessOperation.php @@ -27,7 +27,7 @@ class SeedDMS_AccessOperation { * @var object $dms reference to dms * @access protected */ - protected $dms; + private $dms; /** * @var object $user user requesting the access @@ -63,7 +63,7 @@ class SeedDMS_AccessOperation { * even if is disallowed in the settings. */ function mayEditVersion($document, $vno=0) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($vno) $version = $document->getContentByVersion($vno); else @@ -87,7 +87,7 @@ class SeedDMS_AccessOperation { * even if is disallowed in the settings. */ function mayRemoveVersion($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { $versions = $document->getContent(); if ((($this->settings->_enableVersionDeletion && ($document->getAccessMode($this->user) == M_ALL)) || $this->user->isAdmin() ) && (count($versions) > 1)) { return true; @@ -107,7 +107,7 @@ class SeedDMS_AccessOperation { * even if is disallowed in the settings. */ function mayOverrideStatus($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); if ((($this->settings->_enableVersionModification && ($document->getAccessMode($this->user) == M_ALL)) || $this->user->isAdmin()) && ($status["status"]==S_DRAFT || $status["status"]==S_RELEASED || $status["status"]==S_REJECTED || $status["status"]==S_OBSOLETE || $status["status"]==S_NEEDS_CORRECTION)) { @@ -130,7 +130,7 @@ class SeedDMS_AccessOperation { * explicitly allows it. */ function maySetReviewersApprovers($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); $reviewstatus = $latestContent->getReviewStatus(); @@ -163,7 +163,7 @@ class SeedDMS_AccessOperation { * settings. */ function maySetRecipients($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); if (($this->settings->_enableVersionModification && ($document->getAccessMode($this->user) >= M_READWRITE)) || $this->user->isAdmin()) { @@ -184,7 +184,7 @@ class SeedDMS_AccessOperation { * settings. */ function maySetRevisors($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); if ((($this->settings->_enableVersionModification && ($document->getAccessMode($this->user) >= M_READWRITE)) || $this->user->isAdmin()) && ($status["status"]==S_RELEASED || $status["status"]==S_IN_REVISION)) { @@ -205,7 +205,7 @@ class SeedDMS_AccessOperation { * settings. */ function maySetWorkflow($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $workflow = $latestContent->getWorkflow(); if ((($this->settings->_enableVersionModification && ($document->getAccessMode($this->user) == M_ALL)) || $this->user->isAdmin()) && (!$workflow || ($workflow->getInitState()->getID() == $latestContent->getWorkflowState()->getID()))) { @@ -223,7 +223,7 @@ class SeedDMS_AccessOperation { * expiration date is only allowed if the document has not been obsoleted. */ function maySetExpires($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); if ((($document->getAccessMode($this->user) >= M_READWRITE) || $this->user->isAdmin()) && ($status["status"]!=S_OBSOLETE)) { @@ -244,7 +244,7 @@ class SeedDMS_AccessOperation { * disallowed in the settings. */ function mayEditComment($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($document->isLocked()) { $lockingUser = $document->getLockingUser(); if (($lockingUser->getID() != $this->user->getID()) && ($document->getAccessMode($this->user) != M_ALL)) { @@ -271,7 +271,7 @@ class SeedDMS_AccessOperation { * disallowed in the settings. */ function mayEditAttributes($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); $workflow = $latestContent->getWorkflow(); @@ -291,7 +291,7 @@ class SeedDMS_AccessOperation { * account here. */ function mayReview($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); if ($document->getAccessMode($this->user) >= M_READ && $status["status"]==S_DRAFT_REV) { @@ -309,7 +309,7 @@ class SeedDMS_AccessOperation { * review and if it is allowed in the settings */ function mayUpdateReview($document, $updateUser) { /* {{{ */ - if(get_class($document) == 'SeedDMS_Core_Document') { + if($this->obj->isType('document')) { if($this->settings->_enableUpdateRevApp && ($updateUser == $this->user) && $document->getAccessMode($this->user) >= M_READ && !$document->hasExpired()) { return true; } @@ -324,7 +324,7 @@ class SeedDMS_AccessOperation { * approval and if it is allowed in the settings */ function mayUpdateApproval($document, $updateUser) { /* {{{ */ - if(get_class($document) == 'SeedDMS_Core_Document') { + if($this->obj->isType('document')) { if($this->settings->_enableUpdateRevApp && ($updateUser == $this->user) && $document->getAccessMode($this->user) >= M_READ && !$document->hasExpired()) { return true; } @@ -342,7 +342,7 @@ class SeedDMS_AccessOperation { * account here. */ function mayApprove($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); if ($document->getAccessMode($this->user) >= M_READ && $status["status"]==S_DRAFT_APP) { @@ -361,7 +361,7 @@ class SeedDMS_AccessOperation { * account here. */ function mayReceipt($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); if ($document->getAccessMode($this->user) >= M_READ && $status["status"]==S_RELEASED) { @@ -379,7 +379,7 @@ class SeedDMS_AccessOperation { * review and if it is allowed in the settings */ function mayUpdateReceipt($document, $updateUser) { /* {{{ */ - if(get_class($document) == 'SeedDMS_Core_Document') { + if($this->obj->isType('document')) { if($this->settings->_enableUpdateReceipt && ($updateUser == $this->user) && $document->getAccessMode($this->user) >= M_READ && !$document->hasExpired()) { return true; } @@ -395,7 +395,7 @@ class SeedDMS_AccessOperation { * account here. */ function mayRevise($document) { /* {{{ */ - if(get_class($document) == $this->dms->getClassname('document')) { + if($this->obj->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); if ($document->getAccessMode($this->user) >= M_READ && $status["status"]!=S_OBSOLETE) { diff --git a/inc/inc.ClassViewCommon.php b/inc/inc.ClassViewCommon.php index faf097541..73203d106 100644 --- a/inc/inc.ClassViewCommon.php +++ b/inc/inc.ClassViewCommon.php @@ -43,6 +43,7 @@ class SeedDMS_View_Common { } public function __invoke($get=array()) { + $this->callHook('preRun', isset($get['action']) ? $get['action'] : 'show'); if(isset($get['action']) && $get['action']) { if(method_exists($this, $get['action'])) { $this->{$get['action']}(); @@ -51,6 +52,7 @@ class SeedDMS_View_Common { } } else $this->show(); + $this->callHook('postRun', isset($get['action']) ? $get['action'] : 'show'); } public function setParams($params) { @@ -97,10 +99,17 @@ class SeedDMS_View_Common { * function returns */ public function callHook($hook) { /* {{{ */ + $tmps = array(); $tmp = explode('_', get_class($this)); + $tmps[] = $tmp[2]; + $tmp = explode('_', get_parent_class($this)); + $tmps[] = $tmp[2]; + /* Run array_unique() in case the parent class has the same suffix */ + $tmps = array_unique($tmps); $ret = null; - if(isset($GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp[2])])) { - foreach($GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp[2])] as $hookObj) { + foreach($tmps as $tmp) + if(isset($GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp)])) { + foreach($GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp)] as $hookObj) { if (method_exists($hookObj, $hook)) { switch(func_num_args()) { case 1: @@ -252,12 +261,12 @@ class SeedDMS_View_Common { return $tag; } /* }}} */ - public function jsTranslations($keys) { + public function jsTranslations($keys) { /* {{{ */ echo "var trans = {\n"; foreach($keys as $key) { echo " '".$key."': '".str_replace("'", "\\\'", getMLText($key))."',\n"; } echo "};\n"; - } + } /* }}} */ } ?> diff --git a/inc/inc.Extension.php b/inc/inc.Extension.php index b0e915333..f6fcc23f0 100644 --- a/inc/inc.Extension.php +++ b/inc/inc.Extension.php @@ -32,12 +32,14 @@ foreach($EXT_CONF as $extname=>$extconf) { } } if(!isset($extconf['disable']) || $extconf['disable'] == false) { - $classfile = $settings->_rootDir."/ext/".$extname."/".$extconf['class']['file']; - if(file_exists($classfile)) { - include($classfile); - $obj = new $extconf['class']['name']; - if(method_exists($obj, 'init')) - $obj->init(isset($settings->_extensions[$extname]) ? $settings->_extensions[$extname] : null); + if(isset($extconf['class']) && isset($extconf['class']['file']) && isset($extconf['class']['name'])) { + $classfile = $settings->_rootDir."/ext/".$extname."/".$extconf['class']['file']; + if(file_exists($classfile)) { + include($classfile); + $obj = new $extconf['class']['name']; + if(method_exists($obj, 'init')) + $obj->init(isset($settings->_extensions[$extname]) ? $settings->_extensions[$extname] : null); + } } if(isset($extconf['language']['file'])) { $langfile = $settings->_rootDir."/ext/".$extname."/".$extconf['language']['file']; diff --git a/op/op.CreateDump.php b/op/op.CreateDump.php index 4859d7f18..f96fe84af 100644 --- a/op/op.CreateDump.php +++ b/op/op.CreateDump.php @@ -31,13 +31,12 @@ if (!$user->isAdmin()) { UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); } -if($settings->_backupDir && file_exists($settings->_backupDir)) - $basedir = $settings->_backupDir; -else - $basedir = $settings->_contentDir; +if (!$settings->_backupDir) { + UI::exitError(getMLText("admin_tools"),getMLText("no_backup_dir")); +} $v = new SeedDMS_Version; -$dump_name = $basedir.date('Y-m-d\TH-i-s')."_".$v->_number.".sql"; +$dump_name = addDirSep($settings->_backupDir).date('Y-m-d\TH-i-s')."_".$v->_number.".sql"; if(!$dms->createDump($dump_name)) UI::exitError(getMLText("admin_tools"),getMLText("error_occured")); diff --git a/op/op.CreateFolderArchive.php b/op/op.CreateFolderArchive.php index 4877738ad..07c1cb112 100644 --- a/op/op.CreateFolderArchive.php +++ b/op/op.CreateFolderArchive.php @@ -167,14 +167,14 @@ if (!is_object($folder)) { UI::exitError(getMLText("admin_tools"),getMLText("invalid_folder_id")); } +if (!$settings->_backupDir) { + UI::exitError(getMLText("admin_tools"),getMLText("no_backup_dir")); +} + $human_readable = (isset($_GET["human_readable"]) && $_GET["human_readable"]==1 ? true : false); -if($settings->_backupDir && file_exists($settings->_backupDir)) - $basedir = $settings->_backupDir; -else - $basedir = $settings->_contentDir; -if ($human_readable)$ark_name = $basedir.time()."_".$folderid."_HR.tar"; -else $ark_name = $basedir.time()."_".$folderid.".tar"; +if ($human_readable)$ark_name = addDirSep($settings->_backupDir).time()."_".$folderid."_HR.tar"; +else $ark_name = addDirSep($settings->_backupDir).time()."_".$folderid.".tar"; $ark = fopen($ark_name,"w"); diff --git a/op/op.Download.php b/op/op.Download.php index 9124536c0..8451136e3 100644 --- a/op/op.Download.php +++ b/op/op.Download.php @@ -119,16 +119,12 @@ elseif (isset($_GET["arkname"])) { /* {{{ */ UI::exitError(getMLText("admin_tools"),getMLText("unknown_id")); } - if($settings->_backupDir && file_exists($settings->_backupDir)) - $basedir = $settings->_backupDir; - else - $basedir = $settings->_contentDir; - - if (!file_exists($basedir.$filename) ) { + $backupdir = addDirSep($settings->_backupDir); + if (!file_exists($backupdir.$filename) ) { UI::exitError(getMLText("admin_tools"),getMLText("missing_file")); } - $controller->setParam('basedir', $basedir); + $controller->setParam('basedir', $backupdir); $controller->setParam('file', $filename); $controller->archive(); } /* }}} */ @@ -192,16 +188,16 @@ elseif (isset($_GET["dumpname"])) { /* {{{ */ UI::exitError(getMLText("admin_tools"),getMLText("unknown_id")); } - if($settings->_backupDir && file_exists($settings->_backupDir)) - $basedir = $settings->_backupDir; - else - $basedir = $settings->_contentDir; + $backupdir = addDirSep($settings->_backupDir); + if (!$backupdir) { + UI::exitError(getMLText("admin_tools"),getMLText("no_backup_dir")); + } - if (!file_exists($basedir.$filename) ) { + if (!file_exists($backupdir.$filename) ) { UI::exitError(getMLText("admin_tools"),getMLText("missing_file")); } - $controller->setParam('basedir', $basedir); + $controller->setParam('basedir', $backupdir); $controller->setParam('file', $filename); $controller->sqldump(); } /* }}} */ diff --git a/out/out.DocumentChooser.php b/out/out.DocumentChooser.php index fe14f1042..ba9174ed5 100644 --- a/out/out.DocumentChooser.php +++ b/out/out.DocumentChooser.php @@ -29,19 +29,33 @@ require_once("inc/inc.DBInit.php"); require_once("inc/inc.ClassUI.php"); require_once("inc/inc.Authentication.php"); -$folderid = intval($_GET["folderid"]); -$form = preg_replace('/[^A-Za-z0-9_]+/', '', $_GET["form"]); +if(isset($_GET['action']) && $_GET['action'] == 'subtree') { + if (!isset($_GET["node"]) || !is_numeric($_GET["node"]) || intval($_GET["node"])<1) { + $nodeid = $settings->_rootFolderID; + } else { + $nodeid = intval($_GET["node"]); + } -if(isset($_GET['partialtree'])) { - $partialtree = intval($_GET['partialtree']); + $node = $dms->getFolder($nodeid); + if (!is_object($node)) { + UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_folder_id"))), getMLText("invalid_folder_id")); + } } else { - $partialtree = 0; + $folderid = intval($_GET["folderid"]); + $folder = $dms->getFolder($folderid); + $form = preg_replace('/[^A-Za-z0-9_]+/', '', $_GET["form"]); } -$folder = $dms->getFolder($folderid); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); -$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'folder'=>$folder, 'form'=>$form, 'partialtree'=>$partialtree)); +$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); if($view) { + if(isset($_GET['action']) && $_GET['action'] == 'subtree') { + $view->setParam('node', $node); + $view->setParam('orderby', $settings->_sortFoldersDefault); + } else { + $view->setParam('folder', $folder); + $view->setParam('form', $form); + } $view($_GET); exit; } diff --git a/views/bootstrap/class.BackupTools.php b/views/bootstrap/class.BackupTools.php index 2d28b42b0..62a31761c 100644 --- a/views/bootstrap/class.BackupTools.php +++ b/views/bootstrap/class.BackupTools.php @@ -75,124 +75,128 @@ class SeedDMS_View_BackupTools extends SeedDMS_Bootstrap_Style { // archive creation //////////////////////////////////////////////////////////// - $this->contentHeading(getMLText("archive_creation")); - print "

      ".getMLText("archive_creation_warning")."

      \n"; - $this->contentContainerStart(); - if($accessop->check_controller_access('CreateFolderArchive', array('action'=>'run'))) { - print ""; - $this->printFolderChooserHtml("form2",M_READWRITE); - print ""; - print ""; - print "\n"; - } - - // list backup files - - $handle = opendir($backupdir); - $entries = array(); - while ($e = readdir($handle)){ - if (is_dir($backupdir.$e)) continue; - if (strpos($e,".tar.gz")==FALSE) continue; - $entries[] = $e; - } - closedir($handle); - - sort($entries); - $entries = array_reverse($entries); - - if($entries) { - $this->contentSubHeading(getMLText("backup_list")); - print "\n"; - print "\n\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n\n\n"; - - foreach ($entries as $entry){ - - $folderid=substr($entry,strpos($entry,"_")+1); - $folder=$dms->getFolder((int)$folderid); - - print "\n"; - print "\n"; - if (is_object($folder)) print "\n"; - else print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; + if($this->params['hasbackupdir']) { + $this->contentHeading(getMLText("archive_creation")); + print "

      ".getMLText("archive_creation_warning")."

      \n"; + $this->contentContainerStart(); + if($accessop->check_controller_access('CreateFolderArchive', array('action'=>'run'))) { + print ""; + $this->printFolderChooserHtml("form2",M_READWRITE); + print ""; + print ""; + print "\n"; } - print "
      ".getMLText("folder")."".getMLText("creation_date")."".getMLText("file_size")."
      "; - if($accessop->check_controller_access('Download', array('action'=>'archive'))) - print "".$entry.""; - else - print $entry; - print "".htmlspecialchars($folder->getName())."".getMLText("unknown_id")."".getLongReadableDate(filectime($backupdir.$entry))."".SeedDMS_Core_File::format_filesize(filesize($backupdir.$entry)).""; - if($accessop->check_controller_access('RemoveArchive', array('action'=>'run'))) - print " ".getMLText("backup_remove").""; - print "
      \n"; - } - $this->contentContainerEnd(); + // list backup files - // dump creation /////////////////////////////////////////////////////////////// + $handle = opendir($backupdir); + $entries = array(); + while ($e = readdir($handle)){ + if (is_dir($backupdir.$e)) continue; + if (strpos($e,".tar.gz")==FALSE) continue; + $entries[] = $e; + } + closedir($handle); - $this->contentHeading(getMLText("dump_creation")); - print "

      ".getMLText("dump_creation_warning")."

      \n"; - $this->contentContainerStart(); + sort($entries); + $entries = array_reverse($entries); - if($accessop->check_controller_access('CreateDump', array('action'=>'run'))) { + if($entries) { + $this->contentSubHeading(getMLText("backup_list")); + print "\n"; + print "\n\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n\n\n"; + + foreach ($entries as $entry){ + + $folderid=substr($entry,strpos($entry,"_")+1); + $folder=$dms->getFolder((int)$folderid); + + print "\n"; + print "\n"; + if (is_object($folder)) print "\n"; + else print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + } + print "
      ".getMLText("folder")."".getMLText("creation_date")."".getMLText("file_size")."
      "; + if($accessop->check_controller_access('Download', array('action'=>'archive'))) + print "".$entry.""; + else + print $entry; + print "".htmlspecialchars($folder->getName())."".getMLText("unknown_id")."".getLongReadableDate(filectime($backupdir.$entry))."".SeedDMS_Core_File::format_filesize(filesize($backupdir.$entry)).""; + if($accessop->check_controller_access('RemoveArchive', array('action'=>'run'))) + print " ".getMLText("backup_remove").""; + print "
      \n"; + } + + $this->contentContainerEnd(); + + // dump creation /////////////////////////////////////////////////////////////// + + $this->contentHeading(getMLText("dump_creation")); + print "

      ".getMLText("dump_creation_warning")."

      \n"; + $this->contentContainerStart(); + + if($accessop->check_controller_access('CreateDump', array('action'=>'run'))) { print "
      "; print ""; print "
      \n"; - } - - // list backup files - $handle = opendir($backupdir); - $entries = array(); - while ($e = readdir($handle)){ - if (is_dir($backupdir.$e)) continue; - if (strpos($e,".sql.gz")==FALSE) continue; - $entries[] = $e; - } - closedir($handle); - - sort($entries); - $entries = array_reverse($entries); - - if($entries) { - $this->contentSubHeading(getMLText("dump_list")); - print "\n"; - print "\n\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n\n\n"; - - foreach ($entries as $entry){ - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; } - print "
      ".getMLText("creation_date")."".getMLText("file_size")."
      "; - if($accessop->check_controller_access('Download', array('action'=>'sqldump'))) - print "".$entry.""; - else - print $entry; - print "".getLongReadableDate(filectime($backupdir.$entry))."".SeedDMS_Core_File::format_filesize(filesize($backupdir.$entry)).""; - if($accessop->check_controller_access('RemoveDump', array('action'=>'run'))) - print " ".getMLText("dump_remove").""; - print "
      \n"; - } - $this->contentContainerEnd(); + // list backup files + $handle = opendir($backupdir); + $entries = array(); + while ($e = readdir($handle)){ + if (is_dir($backupdir.$e)) continue; + if (strpos($e,".sql.gz")==FALSE) continue; + $entries[] = $e; + } + closedir($handle); + + sort($entries); + $entries = array_reverse($entries); + + if($entries) { + $this->contentSubHeading(getMLText("dump_list")); + print "\n"; + print "\n\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n\n\n"; + + foreach ($entries as $entry){ + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + } + print "
      ".getMLText("creation_date")."".getMLText("file_size")."
      "; + if($accessop->check_controller_access('Download', array('action'=>'sqldump'))) + print "".$entry.""; + else + print $entry; + print "".getLongReadableDate(filectime($backupdir.$entry))."".SeedDMS_Core_File::format_filesize(filesize($backupdir.$entry)).""; + if($accessop->check_controller_access('RemoveDump', array('action'=>'run'))) + print " ".getMLText("dump_remove").""; + print "
      \n"; + } + + $this->contentContainerEnd(); + } else { + $this->warningMsg(getMLText('no_backup_dir')); + } // files deletion ////////////////////////////////////////////////////////////// /* diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 328f1e6f2..458d169ad 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -168,6 +168,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo ''."\n"; if($this->params['enablemenutasks'] && isset($this->params['user']) && $this->params['user']) { $this->addFooterJS('checkTasks();'); + $this->addFooterJS('updateDropFolder();'); } if($this->footerjs) { $jscode = "$(document).ready(function () {\n"; @@ -198,6 +199,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; header('Content-Type: application/javascript'); echo "var seeddms_absbaseprefix=\"".$this->params['absbaseprefix']."\";\n"; echo "var seeddms_webroot=\"".$this->params['settings']->_httpRoot."\";\n"; + echo "var seeddms_folder=1;\n"; } /* }}} */ function footerjs() { /* {{{ */ @@ -431,7 +433,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; if($this->params['dropfolderdir'] && $this->params['enabledropfolderlist']) { echo "
      "; echo "
      getClassname('folder'))) + if ($folder!=null && is_object($folder) && $folder->isType('folder')) echo " data-query=\"folderid=".$folder->getID()."\""; echo ">
      "; echo "
      "; @@ -458,7 +460,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } echo " \n"; echo "
      "; - if ($folder!=null && is_object($folder) && !strcasecmp(get_class($folder), $dms->getClassname('folder'))) { + if ($folder!=null && is_object($folder) && $folder->isType('folder')) { echo " getID()."\" />"; } echo " "; @@ -563,7 +565,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; private function folderNavigationBar($folder) { /* {{{ */ $dms = $this->params['dms']; - if (!is_object($folder) || strcasecmp(get_class($folder), $dms->getClassname('folder'))) { + if (!is_object($folder) || !$folder->isType('folder')) { echo "
        \n"; echo "
      \n"; return; @@ -1190,7 +1192,7 @@ $(document).ready(function() {
      - '.getMLText("browse").'… + '.getMLText("browse").'…
      @@ -1580,7 +1582,7 @@ $(document).ready(function() { $content = "\n"; $content .= '
      "; // $this->contentContainerEnd(); - print "
      "; + print "
      "; + } print "
      "; // $this->contentContainerStart(); print "".getMLText('approvers').""; From 875dea57082cdac4f4ea59d97a4bd521453af594 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 10 Sep 2019 17:43:32 +0200 Subject: [PATCH 181/467] do not set mandatory reviewer if workflow is traditional_no_review --- op/op.Ajax.php | 70 +++++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 21744e8ab..1f87a0728 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -683,46 +683,52 @@ switch($command) { $approvers["i"] = array(); $approvers["g"] = array(); - // add mandatory reviewers/approvers - $docAccess = $folder->getReadAccessList($settings->_enableAdminRevApp, $settings->_enableOwnerRevApp); - $res=$user->getMandatoryReviewers(); - foreach ($res as $r){ + if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'traditional_only_approval') { + // add mandatory reviewers/approvers + $docAccess = $folder->getReadAccessList($settings->_enableAdminRevApp, $settings->_enableOwnerRevApp); + if($settings->_workflowMode == 'traditional') { + $res=$user->getMandatoryReviewers(); + foreach ($res as $r){ - if ($r['reviewerUserID']!=0){ - foreach ($docAccess["users"] as $usr) - if ($usr->getID()==$r['reviewerUserID']){ - $reviewers["i"][] = $r['reviewerUserID']; - break; + if ($r['reviewerUserID']!=0){ + foreach ($docAccess["users"] as $usr) + if ($usr->getID()==$r['reviewerUserID']){ + $reviewers["i"][] = $r['reviewerUserID']; + break; + } } - } - else if ($r['reviewerGroupID']!=0){ - foreach ($docAccess["groups"] as $grp) - if ($grp->getID()==$r['reviewerGroupID']){ - $reviewers["g"][] = $r['reviewerGroupID']; - break; + else if ($r['reviewerGroupID']!=0){ + foreach ($docAccess["groups"] as $grp) + if ($grp->getID()==$r['reviewerGroupID']){ + $reviewers["g"][] = $r['reviewerGroupID']; + break; + } } + } } - } - $res=$user->getMandatoryApprovers(); - foreach ($res as $r){ + $res=$user->getMandatoryApprovers(); + foreach ($res as $r){ - if ($r['approverUserID']!=0){ - foreach ($docAccess["users"] as $usr) - if ($usr->getID()==$r['approverUserID']){ - $approvers["i"][] = $r['approverUserID']; - break; - } - } - else if ($r['approverGroupID']!=0){ - foreach ($docAccess["groups"] as $grp) - if ($grp->getID()==$r['approverGroupID']){ - $approvers["g"][] = $r['approverGroupID']; - break; - } + if ($r['approverUserID']!=0){ + foreach ($docAccess["users"] as $usr) + if ($usr->getID()==$r['approverUserID']){ + $approvers["i"][] = $r['approverUserID']; + break; + } + } + else if ($r['approverGroupID']!=0){ + foreach ($docAccess["groups"] as $grp) + if ($grp->getID()==$r['approverGroupID']){ + $approvers["g"][] = $r['approverGroupID']; + break; + } + } } + + } elseif($settings->_workflowMode == 'advanced') { + $workflow = $user->getMandatoryWorkflow(); } - $workflow = $user->getMandatoryWorkflow(); $expires = false; if($settings->_presetExpirationDate) { From d1691190f20decabe5c21361bf64a3ea688948a3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 11 Sep 2019 17:40:38 +0200 Subject: [PATCH 182/467] pass parameter 'onepage' to view used to enable/disable new behaviour with ajax request to update page --- out/out.ViewFolder.php | 1 + 1 file changed, 1 insertion(+) diff --git a/out/out.ViewFolder.php b/out/out.ViewFolder.php index 5fd88ca72..c7d2a4853 100644 --- a/out/out.ViewFolder.php +++ b/out/out.ViewFolder.php @@ -96,6 +96,7 @@ if($view) { $view->setParam('incItemsPerPage', $settings->_incItemsPerPage != 0 ? $settings->_incItemsPerPage : $settings->_maxItemsPerPage); $view->setParam('offset', $offset); $view->setParam('limit', $limit); + $view->setParam('onepage', true); // do most navigation by reloading areas of pages with ajax $view($_GET); exit; } From 7a76470c072ec7844e37810b0b567973ea54ac76 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 11 Sep 2019 17:41:45 +0200 Subject: [PATCH 183/467] take out var_dump --- SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php | 1 + 1 file changed, 1 insertion(+) diff --git a/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php b/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php index 1116616a6..7ca9663a3 100644 --- a/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php +++ b/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php @@ -99,6 +99,7 @@ class SeedDMS_SQLiteFTS_Indexer { $sql = "INSERT INTO docs (docid, title, comment, keywords, category, owner, content, mimetype, origfilename, created) VALUES(".$doc->getFieldValue('document_id').", ".$this->_conn->quote($doc->getFieldValue('title')).", ".$this->_conn->quote($doc->getFieldValue('comment')).", ".$this->_conn->quote($doc->getFieldValue('keywords')).", ".$this->_conn->quote($doc->getFieldValue('category')).", ".$this->_conn->quote($doc->getFieldValue('owner')).", ".$this->_conn->quote($doc->getFieldValue('content')).", ".$this->_conn->quote($doc->getFieldValue('mimetype')).", ".$this->_conn->quote($doc->getFieldValue('origfilename')).", ".time().")"; $res = $this->_conn->exec($sql); if($res === false) { + return false; var_dump($this->_conn->errorInfo()); } return $res; From 679fb1a349c69a70f91d8b3f0b387256720b0ed2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 11 Sep 2019 17:42:14 +0200 Subject: [PATCH 184/467] callback can be passed to sendFileToServer() --- styles/bootstrap/application.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 9990acc73..d07b8dd2c 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -545,7 +545,7 @@ function onAddClipboard(ev) { /* {{{ */ maxFileSizeMsg = msg; } - function sendFileToServer(formData,status) { + function sendFileToServer(formData,status,callback) { var uploadURL = ajaxurl; //Upload URL var extraData ={}; //Extra Data. var jqXHR=$.ajax({ @@ -584,6 +584,9 @@ function onAddClipboard(ev) { /* {{{ */ timeout: 1500, }); status.statusbar.after($('' + editBtnLabel + '')); + if(callback) { + callback(); + } } else { noty({ text: data.message, @@ -665,7 +668,10 @@ function onAddClipboard(ev) { /* {{{ */ statusbar.parent().show(); var status = new createStatusbar(statusbar); status.setFileNameSize(files[i].name,files[i].size); - sendFileToServer(fd,status); + sendFileToServer(fd,status,function(){ + if(target_id == seeddms_folder) + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); + }); } else { noty({ text: maxFileSizeMsg + '
      ' + files[i].name + ' (' + files[i].size + ' Bytes)', @@ -1149,7 +1155,6 @@ $(document).ready(function() { /* {{{ */ var updateDropFolder = function() { $('#menu-dropfolder > div.ajax').trigger('update', {folderid: seeddms_folder}); - console.log(seeddms_folder); timeOutId = setTimeout(updateDropFolder, 60000); } From 39217037b8c9e6f44d325e3278c633f9da708229 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 11 Sep 2019 17:43:50 +0200 Subject: [PATCH 185/467] fix tree behaviour, do not load all sub nodes --- views/bootstrap/class.Bootstrap.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 62217b86f..a5d3b4951 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1593,15 +1593,19 @@ $(document).ready(function() { function printNewTreeNavigationJs($folderid=0, $accessmode=M_READ, $showdocs=0, $formid='form1', $expandtree=0, $orderby='', $partialtree=false) { /* {{{ */ function jqtree($path, $folder, $user, $accessmode, $showdocs=1, $expandtree=0, $orderby='', $level=0) { $orderdir = (isset($orderby[1]) ? ($orderby[1] == 'd' ? 'desc' : 'asc') : 'asc'); - if($path || $expandtree>=$level) { + if($path/* || $expandtree>=$level*/) { if($path) $pathfolder = array_shift($path); $children = array(); - $subfolders = $folder->getSubFolders(isset($orderby[0]) ? $orderby[0] : '', $orderdir); - $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); + if($expandtree) { + $subfolders = $folder->getSubFolders(isset($orderby[0]) ? $orderby[0] : '', $orderdir); + $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $user, $accessmode); + } else { + $subfolders = array($pathfolder); + } foreach($subfolders as $subfolder) { $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? true : false, 'is_folder'=>true); - if($expandtree>=$level || $pathfolder->getID() == $subfolder->getID()) { + if(/*$expandtree>=$level ||*/ $pathfolder->getID() == $subfolder->getID()) { $node['children'] = jqtree($path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1); if($showdocs) { $documents = $subfolder->getDocuments(isset($orderby[0]) ? $orderby[0] : '', $orderdir); @@ -1669,7 +1673,7 @@ $(function() { const $tree = $('#jqtree'); $tree.tree({ // saveState: true, - selectable: false, + selectable: true, data: data, saveState: 'jqtree', openedIcon: $(''), @@ -1680,7 +1684,7 @@ $(function() { } else documentSelected(node.id, node.name); }, - autoOpen: true, + autoOpen: false, drapAndDrop: true, onCreateLi: function(node, $li) { // Add 'icon' span before title From 49f29d007b75aed4b5ce55426d5c6a629fad9aae Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 11 Sep 2019 17:44:40 +0200 Subject: [PATCH 186/467] new onepage mode can be turned off --- views/bootstrap/class.ViewFolder.php | 29 ++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index fc6122ddc..66fda3279 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -100,15 +100,19 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style { $enableDropUpload = $this->params['enableDropUpload']; $maxItemsPerPage = $this->params['maxItemsPerPage']; $showtree = $this->params['showtree']; + $onepage = $this->params['onepage']; header('Content-Type: application/javascript; charset=UTF-8'); parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); ?> seeddms_folder = getID() ?>; function folderSelected(id, name) { -// window.location = '../out/out.ViewFolder.php?folderid=' + id; + + window.location = '../out/out.ViewFolder.php?folderid=' + id; + seeddms_folder = id; $('div.ajax').trigger('update', {folderid: id, orderby: ''}); + } function loadMoreObjects(element, limit) { @@ -147,7 +151,9 @@ $('#loadmore').click(function(e) { }); -/* + $('body').on('click', '[id^=\"table-row-folder\"]', function(ev) { attr_id = $(ev.currentTarget).attr('id').split('-')[3]; folderSelected(attr_id, ''); @@ -155,7 +161,13 @@ $('body').on('click', '[id^=\"table-row-folder\"]', function(ev) { scrollTop: 200 }, 200); }); -*/ +$('body').on('click', '.order-btn', function(ev) { + ev.preventDefault(); + var element = $(this); + var orderby = element.data('orderby'); + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder, orderby: orderby}); +}); + printNewTreeNavigationJs($folder->getID(), M_READ, 0, '', ($expandFolderTree == 1) ? -1 : 3, $orderby); @@ -268,6 +280,7 @@ $('body').on('click', '[id^=\"table-row-folder\"]', function(ev) { $previewconverters = $this->params['previewConverters']; $timeout = $this->params['timeout']; $xsendfile = $this->params['xsendfile']; + $onepage = $this->params['onepage']; $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); $previewer->setConverters($previewconverters); @@ -286,7 +299,7 @@ $('body').on('click', '[id^=\"table-row-folder\"]', function(ev) { if($documents === null) $documents = $folder->getDocuments($orderby[0], $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ); - $parent = null; //$folder->getParent(); + $parent = $onepage ? $folder->getParent() : null; $txt = $this->callHook('folderListPreContent', $folder, $subFolders, $documents); if(is_string($txt)) @@ -301,9 +314,9 @@ $('body').on('click', '[id^=\"table-row-folder\"]', function(ev) { print "\n\n"; print "".($parent ? '' : '')."\n"; print "".getMLText("name"); - print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; - print " ".($orderby=="s"||$orderby=="sa"?' ':($orderby=="sd"?' ':' ')).""; - print " ".($orderby=="d"||$orderby=="da"?' ':($orderby=="dd"?' ':' ')).""; + print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; + print " ".($orderby=="s"||$orderby=="sa"?' ':($orderby=="sd"?' ':' ')).""; + print " ".($orderby=="d"||$orderby=="da"?' ':($orderby=="dd"?' ':' ')).""; print "\n"; // print "".getMLText("owner")."\n"; print "".getMLText("status")."\n"; @@ -547,7 +560,7 @@ $('body').on('click', '[id^=\"table-row-folder\"]', function(ev) { echo "
      "; // $this->dropUpload(); ?> -
      getID()."\"" : "") ?>>
      +
      getID()."\"" : "") ?>>
      "; From dfe50ca85b9d66e1811e88cae8e896d7a8fb4d5a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 11 Sep 2019 17:45:08 +0200 Subject: [PATCH 187/467] add changes for 5.1.13 --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index d603823ca..77e460ae1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -9,6 +9,8 @@ - add section in README.Install.md on how to secure the configuration - fix php error when removing a version of a document - major rework of ViewFolder page, most parts of the page are now loaded by ajax +- do not set mandatory reviewer when document is uploaded and workflow mode is + set to 'traditional without review'. -------------------------------------------------------------------------------- Changes in version 5.1.12 From 721aaed1c11a20fbdc90cd5c89b2d97200428c42 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 16 Sep 2019 08:32:50 +0200 Subject: [PATCH 188/467] init variable $workflow to prevent php warning --- op/op.Ajax.php | 1 + 1 file changed, 1 insertion(+) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 1f87a0728..727d0516e 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -682,6 +682,7 @@ switch($command) { $reviewers["g"] = array(); $approvers["i"] = array(); $approvers["g"] = array(); + $workflow = null; if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'traditional_only_approval') { // add mandatory reviewers/approvers From ae4a65e8bc5d9f3d4d4c43115ca1780966b1e6cd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 1 Oct 2019 14:05:29 +0200 Subject: [PATCH 189/467] discard fileType if just '.' --- SeedDMS_Core/Core/inc.ClassDocument.php | 16 +++++++++++++++- SeedDMS_Core/package.xml | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index fddc19954..96e9290c3 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -1470,6 +1470,8 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ $version = $resArr[0]['m']+1; } + if($fileType == '.') + $fileType = ''; $filesize = SeedDMS_Core_File::fileSize($tmpFile); $checksum = SeedDMS_Core_File::checksum($tmpFile); @@ -1639,6 +1641,9 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if(!$content) return false; + if($fileType == '.') + $fileType = ''; + /* Check if $user, $orgFileName, $fileType and $mimetype are the same */ if($user->getID() != $content->getUser()->getID()) { return false; @@ -2858,7 +2863,16 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ return $this->_user; } /* }}} */ - function getPath() { return $this->_document->getDir() . $this->_version . $this->_fileType; } + /** + * Return path of file on disk relative to the content directory + * + * Since version 5.1.13 a single '.' in the fileType will be skipped. + * On Windows a file named 'name.' will be saved as 'name' but the fileType + * will contain the a single '.'. + * + * @return string path of file on disc + */ + function getPath() { return $this->_document->getDir() . $this->_version . ($this->_fileType != '.' ? $this->_fileType : ''); } function setDate($date = false) { /* {{{ */ $db = $this->_document->_dms->getDB(); diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index 9b86dfc1b..2b4af3015 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -26,6 +26,7 @@ - add decorators - add new methods SeedDMS_Core_Document::isType(), SeedDMS_Core_Folder::isType(), SeedDMS_Core_DocumentContent::isType(). Use them instead of checking the class name. +- skip a fileType with just a '.' From 31697278d15c9c9b68d3d05c97f52c9077c61ef0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 1 Oct 2019 14:06:00 +0200 Subject: [PATCH 190/467] check for hook attached to parent class in hasHook() --- inc/inc.ClassViewCommon.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/inc/inc.ClassViewCommon.php b/inc/inc.ClassViewCommon.php index 95f3e5d09..8ec9f69bf 100644 --- a/inc/inc.ClassViewCommon.php +++ b/inc/inc.ClassViewCommon.php @@ -181,11 +181,20 @@ class SeedDMS_View_Common { * null if no hook was called */ public function hasHook($hook) { /* {{{ */ + $tmps = array(); $tmp = explode('_', get_class($this)); - if(isset($GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp[2])])) { - foreach($GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp[2])] as $hookObj) { - if (method_exists($hookObj, $hook)) { - return true; + $tmps[] = $tmp[2]; + $tmp = explode('_', get_parent_class($this)); + $tmps[] = $tmp[2]; + /* Run array_unique() in case the parent class has the same suffix */ + $tmps = array_unique($tmps); + $ret = null; + foreach($tmps as $tmp) { + if(isset($GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp)])) { + foreach($GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp)] as $hookObj) { + if (method_exists($hookObj, $hook)) { + return true; + } } } } From 1a23c659fefae2629cb83d9c96e9cebb35b34a8c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 1 Oct 2019 14:06:46 +0200 Subject: [PATCH 191/467] add hook pageNavigationBar, pass date format to getDateChooser() --- views/bootstrap/class.Bootstrap.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index a5d3b4951..30c362f47 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -449,6 +449,12 @@ background-image: linear-gradient(to bottom, #882222, #111111);; case "calendar"; $this->calendarNavigationBar($extra); break; + default: + if($this->hasHook('pageNavigationBar')) { + $menubar = $this->callHook('pageNavigationBar', $pageType, $extra); + if(is_string($menubar)) + echo $menubar; + } } echo "
      \n"; echo "
      \n"; @@ -1054,14 +1060,14 @@ $(document).ready(function() { echo self::getFileChooserHtml($varname, $multiple, $accept); } /* }}} */ - function printDateChooser($defDate = '', $varName) { /* {{{ */ - echo self::getDateChooser($defDate, $varName); + function printDateChooser($defDate = '', $varName, $lang='', $dateformat='yyyy-mm-dd') { /* {{{ */ + echo self::getDateChooser($defDate, $varName, $lang, $dateformat); } /* }}} */ - function getDateChooser($defDate = '', $varName, $lang='') { /* {{{ */ + function getDateChooser($defDate = '', $varName, $lang='', $dateformat='yyyy-mm-dd') { /* {{{ */ $content = ' - - + + '; return $content; From ec9ad497918edd32ff1fab69186109fbc156d059 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 1 Oct 2019 14:07:39 +0200 Subject: [PATCH 192/467] changes in 5.1.13 --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 77e460ae1..40fe3b4ea 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -11,6 +11,8 @@ - major rework of ViewFolder page, most parts of the page are now loaded by ajax - do not set mandatory reviewer when document is uploaded and workflow mode is set to 'traditional without review'. +- turn off auto complete for date fields +- new hook pageNavigationBar -------------------------------------------------------------------------------- Changes in version 5.1.12 From 459883748e114892520398b059a9ea64acd75d1c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 11 Oct 2019 16:29:53 +0200 Subject: [PATCH 193/467] remove left overs from last installation, check if renaming succeeded --- inc/inc.ClassExtensionMgr.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/inc/inc.ClassExtensionMgr.php b/inc/inc.ClassExtensionMgr.php index 6a4b56ac7..4a1a65f58 100644 --- a/inc/inc.ClassExtensionMgr.php +++ b/inc/inc.ClassExtensionMgr.php @@ -348,6 +348,10 @@ class SeedDMS_Extension_Mgr { public function updateExtension($file) { /* {{{ */ /* unzip the extension in a temporary directory */ $newdir = $this->cachedir ."/ext.new"; + /* First remove a left over from a previous extension */ + if(file_exists($newdir)) { + self::rrmdir($newdir); + } if(!mkdir($newdir, 0755)) { $this->errmsgs[] = "Cannot create temp. extension directory"; return false; @@ -375,7 +379,10 @@ class SeedDMS_Extension_Mgr { $this->rrmdir($this->extdir ."/". $extname); } /* Move the temp. created ext directory to the final location */ - rename($newdir, $this->extdir ."/". $extname); + if(!rename($newdir, $this->extdir ."/". $extname)) { + $this->rrmdir($this->extdir ."/". $extname); + return false; + } return true; } /* }}} */ From 0faef9cd18827c152b6d0aa657f21e082ef81514 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 11 Oct 2019 16:30:31 +0200 Subject: [PATCH 194/467] call new hook additionalTypes() --- views/bootstrap/class.AttributeMgr.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.AttributeMgr.php b/views/bootstrap/class.AttributeMgr.php index f6b37d321..25b8f95ce 100644 --- a/views/bootstrap/class.AttributeMgr.php +++ b/views/bootstrap/class.AttributeMgr.php @@ -213,7 +213,22 @@ $(document).ready( function() {
      - +
      Date: Fri, 11 Oct 2019 16:30:53 +0200 Subject: [PATCH 195/467] remove unneeded echo --- views/bootstrap/class.ViewFolder.php | 1 - 1 file changed, 1 deletion(-) diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 66fda3279..e9f999905 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -245,7 +245,6 @@ $('body').on('click', '.order-btn', function(ev) { foreach($attributes as $attribute) { $arr = $this->callHook('showFolderAttribute', $folder, $attribute); if(is_array($arr)) { - echo $txt; echo ""; echo "".$arr[0].":"; echo "".$arr[1].":"; From 297d5d139137f1428d11d6370d141bfcc12f454d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 16 Oct 2019 09:50:54 +0200 Subject: [PATCH 196/467] clicking on document table row will load document page, update browser history --- views/bootstrap/class.Bootstrap.php | 14 +++++++++++--- views/bootstrap/class.ViewFolder.php | 13 +++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 30c362f47..f1917c3f9 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -2258,6 +2258,7 @@ $(document).ready( function() { $workflowmode = $this->params['workflowmode']; $previewwidth = $this->params['previewWidthList']; $enableClipboard = $this->params['enableclipboard']; + $onepage = $this->params['onepage']; $content = ''; @@ -2316,8 +2317,11 @@ $(document).ready( function() { $content .= "getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"; $content .= ""; - $content .= ""; - $content .= "" . htmlspecialchars($document->getName()) . ""; + $content .= ""; + if($onepage) + $content .= "".htmlspecialchars($document->getName()) . ""; + else + $content .= "" . htmlspecialchars($document->getName()) . ""; if(isset($extracontent['below_title'])) $content .= $extracontent['below_title']; $content .= "
      ".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".date('Y-m-d', $document->getDate()).", ".getMLText('version')." ".$version." - ".date('Y-m-d', $latestContent->getDate())."".($document->expires() ? ", ".getMLText('expires').": ".getReadableDate($document->getExpires())."" : "").""; @@ -2425,6 +2429,7 @@ $(document).ready( function() { $enableRecursiveCount = $this->params['enableRecursiveCount']; $maxRecursiveCount = $this->params['maxRecursiveCount']; $enableClipboard = $this->params['enableclipboard']; + $onepage = $this->params['onepage']; $owner = $subFolder->getOwner(); $comment = $subFolder->getComment(); @@ -2433,7 +2438,10 @@ $(document).ready( function() { $content = ''; $content .= $this->folderListRowStart($subFolder); $content .= "getID()."&showtree=".$showtree."\">getMimeIcon(".folder")."\" width=\"24\" height=\"24\" border=0>\n"; - $content .= "getID()."&showtree=".$showtree."\">" . htmlspecialchars($subFolder->getName()) . ""; + if($onepage) + $content .= "" . "".htmlspecialchars($subFolder->getName()).""; + else + $content .= "getID()."&showtree=".$showtree."\">" . htmlspecialchars($subFolder->getName()) . ""; $content .= "
      ".getMLText('owner').": ".htmlspecialchars($owner->getFullName()).", ".getMLText('creation_date').": ".date('Y-m-d', $subFolder->getDate()).""; if($comment) { $content .= "
      ".htmlspecialchars($comment).""; diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index e9f999905..e1181202f 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -101,6 +101,7 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style { $maxItemsPerPage = $this->params['maxItemsPerPage']; $showtree = $this->params['showtree']; $onepage = $this->params['onepage']; + $sitename = trim(strip_tags($this->params['sitename'])); header('Content-Type: application/javascript; charset=UTF-8'); parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); @@ -111,7 +112,10 @@ function folderSelected(id, name) { window.location = '../out/out.ViewFolder.php?folderid=' + id; seeddms_folder = id; + title_prefix = "0 ? $sitename : "SeedDMS") ?>"; $('div.ajax').trigger('update', {folderid: id, orderby: ''}); + document.title = title_prefix+": "+name; + window.history.pushState({"html":"","pageTitle":title_prefix+": "+name},"", '../out/out.ViewFolder.php?folderid=' + id); } @@ -154,6 +158,11 @@ $('#loadmore').click(function(e) { +window.onpopstate = function(event) { +console.log("location: " + document.location + ", state: " + JSON.stringify(event.state)); +console.log(JSON.stringify(event.state)); + window.location = document.location; +}; $('body').on('click', '[id^=\"table-row-folder\"]', function(ev) { attr_id = $(ev.currentTarget).attr('id').split('-')[3]; folderSelected(attr_id, ''); @@ -161,6 +170,10 @@ $('body').on('click', '[id^=\"table-row-folder\"]', function(ev) { scrollTop: 200 }, 200); }); +$('body').on('click', '[id^=\"table-row-document\"]', function(ev) { + attr_id = $(ev.currentTarget).attr('id').split('-')[3]; + window.location = '../out/out.ViewDocument.php?documentid=' + attr_id; +}); $('body').on('click', '.order-btn', function(ev) { ev.preventDefault(); var element = $(this); From a6ef05b22b42c4f8d399e5aaf22167c7398876fd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 16 Oct 2019 17:57:56 +0200 Subject: [PATCH 197/467] stop event propagation when clicking the delete doc/folder button in the list view --- views/bootstrap/class.Bootstrap.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index f1917c3f9..ef79b702a 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1849,6 +1849,7 @@ $(function() { $(document).ready(function () { // $('.delete-document-btn').click(function(ev) { $('body').on('click', 'a.delete-document-btn', function(ev){ + ev.stopPropagation(); id = $(ev.currentTarget).attr('rel'); confirmmsg = $(ev.currentTarget).attr('confirmmsg'); msg = $(ev.currentTarget).attr('msg'); @@ -1922,6 +1923,7 @@ $(function() { $(document).ready(function () { // $('.delete-folder-btn').click(function(ev) { $('body').on('click', 'a.delete-folder-btn', function(ev){ + ev.stopPropagation(); id = $(ev.currentTarget).attr('rel'); confirmmsg = $(ev.currentTarget).attr('confirmmsg'); msg = $(ev.currentTarget).attr('msg'); From 4ac3dc005275df4efdd74bd3736e9b04cc419388 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 16 Oct 2019 17:58:52 +0200 Subject: [PATCH 198/467] stop event propagation after clicking on addtoclipboard button --- styles/bootstrap/application.js | 1 + 1 file changed, 1 insertion(+) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index d07b8dd2c..217d1c3a7 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -157,6 +157,7 @@ $(document).ready( function() { $('body').on('click', 'a.addtoclipboard', function(ev) { /* {{{ */ ev.preventDefault(); + ev.stopPropagation(); attr_rel = $(ev.currentTarget).attr('rel'); attr_msg = $(ev.currentTarget).attr('msg'); type = attr_rel.substring(0, 1) == 'F' ? 'folder' : 'document'; From 6ae87d4fe06c7f87f03a9d257cc3f46d3f7525f4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 16 Oct 2019 17:59:43 +0200 Subject: [PATCH 199/467] changing folder/document will require a click on the second child of a row --- views/bootstrap/class.ViewFolder.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index e1181202f..1e57d85c4 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -163,15 +163,15 @@ console.log("location: " + document.location + ", state: " + JSON.stringify(even console.log(JSON.stringify(event.state)); window.location = document.location; }; -$('body').on('click', '[id^=\"table-row-folder\"]', function(ev) { - attr_id = $(ev.currentTarget).attr('id').split('-')[3]; +$('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) { + attr_id = $(ev.currentTarget).parent().attr('id').split('-')[3]; folderSelected(attr_id, ''); $([document.documentElement, document.body]).animate({ scrollTop: 200 }, 200); }); -$('body').on('click', '[id^=\"table-row-document\"]', function(ev) { - attr_id = $(ev.currentTarget).attr('id').split('-')[3]; +$('body').on('click', '[id^=\"table-row-document\"] td:nth-child(2)', function(ev) { + attr_id = $(ev.currentTarget).parent().attr('id').split('-')[3]; window.location = '../out/out.ViewDocument.php?documentid=' + attr_id; }); $('body').on('click', '.order-btn', function(ev) { From f2e7063a564466281890f38900c29a4cf83bf9cb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 17 Oct 2019 07:09:08 +0200 Subject: [PATCH 200/467] better documentation of SeedDMS_Core_DocumentContent::verifyStatus --- SeedDMS_Core/Core/inc.ClassDocument.php | 26 +++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 96e9290c3..382de8d61 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -2752,20 +2752,31 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ /** * Recalculate the status of a document + * * The methods checks the review and approval status and sets the * status of the document accordingly. - * If status is S_RELEASED and version has workflow set status - * to S_IN_WORKFLOW - * If status is S_RELEASED and there are reviewers set status S_DRAFT_REV - * If status is S_RELEASED or S_DRAFT_REV and there are approvers set + * + * If status is S_RELEASED and the version has a workflow, then set + * the status to S_IN_WORKFLOW + * If status is S_RELEASED and there are reviewers => set status S_DRAFT_REV + * If status is S_RELEASED or S_DRAFT_REV and there are approvers => set * status S_DRAFT_APP - * If status is draft and there are no approver and no reviewers set + * If status is draft and there are no approver and no reviewers => set * status to S_RELEASED * The status of a document with the current status S_OBSOLETE, S_REJECTED, * or S_EXPIRED will not be changed unless the parameter * $ignorecurrentstatus is set to true. + * + * This method may not be called after a negative approval or review to + * recalculated the status, because + * it doesn't take a defeating approval or review into account. It will + * just check for a pending workflow, approval or review and set the status + * accordingly, e.g. after the list of reviewers or appovers has been + * modified. If there is not pending workflow, approval or review the + * status will be set to S_RELEASED. + * * This method will call {@see SeedDMS_Core_DocumentContent::setStatus()} - * which checks if the state has actually changed. This is, why this + * which checks if the status has actually changed. This is, why this * function can be called at any time without harm to the status log. * * @param boolean $ignorecurrentstatus ignore the current status and @@ -2806,8 +2817,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } } - unset($this->_workflow); // force to be reloaded from DB - if ($this->getWorkflow()) $this->setStatus(S_IN_WORKFLOW,$msg,$user); + if ($hasworkflow) $this->setStatus(S_IN_WORKFLOW,$msg,$user); elseif ($pendingReview) $this->setStatus(S_DRAFT_REV,$msg,$user); elseif ($pendingApproval) $this->setStatus(S_DRAFT_APP,$msg,$user); else $this->setStatus(S_RELEASED,$msg,$user); From d1a8546f1f560eb0cd3d8a488e74ba01be4f9ef7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 17 Oct 2019 07:18:51 +0200 Subject: [PATCH 201/467] fix comment --- SeedDMS_Core/Core/inc.ClassDocument.php | 1 + 1 file changed, 1 insertion(+) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 382de8d61..95be4c001 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -2817,6 +2817,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } } + /* First check for a running workflow, review, approval. */ if ($hasworkflow) $this->setStatus(S_IN_WORKFLOW,$msg,$user); elseif ($pendingReview) $this->setStatus(S_DRAFT_REV,$msg,$user); elseif ($pendingApproval) $this->setStatus(S_DRAFT_APP,$msg,$user); From c06ec0de2efa4abcf739bb833c7aab936f80a487 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 17 Oct 2019 07:40:01 +0200 Subject: [PATCH 202/467] more documentation in SeedDMS_Core_DocumentContent::verifyStatus() --- SeedDMS_Core/Core/inc.ClassDocument.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 95be4c001..f09510b61 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -2794,6 +2794,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ unset($this->_workflow); // force to be reloaded from DB $hasworkflow = $this->getWorkflow() ? true : false; + /* $pendingReview will be set when there are still open reviews */ $pendingReview=false; unset($this->_reviewStatus); // force to be reloaded from DB $reviewStatus=$this->getReviewStatus(); @@ -2805,6 +2806,8 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } } } + + /* $pendingApproval will be set when there are still open approvals */ $pendingApproval=false; unset($this->_approvalStatus); // force to be reloaded from DB $approvalStatus=$this->getApprovalStatus(); @@ -2817,7 +2820,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } } - /* First check for a running workflow, review, approval. */ + /* First check for a running workflow or open reviews or approvals. */ if ($hasworkflow) $this->setStatus(S_IN_WORKFLOW,$msg,$user); elseif ($pendingReview) $this->setStatus(S_DRAFT_REV,$msg,$user); elseif ($pendingApproval) $this->setStatus(S_DRAFT_APP,$msg,$user); From 95aede5c2b9c2ad101662a4de80b2b97b7ade212 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 18 Oct 2019 07:19:51 +0200 Subject: [PATCH 203/467] =?UTF-8?q?fix=20SeedDMS=5FCore=5FDocumentContent:?= =?UTF-8?q?:verify=D0=85tatus()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the method can now handle revisions with status==-1. Status will not change if status is already S_NEEDS_CORRECTION --- SeedDMS_Core/Core/inc.ClassDocument.php | 44 ++++++++++++++++++++----- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 183e7b872..799d3f243 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -3163,12 +3163,13 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * If status is draft and there are no approver and no reviewers => set * status to S_RELEASED * The status of a document with the current status S_OBSOLETE, S_REJECTED, - * or S_EXPIRED will not be changed unless the parameter + * S_NEEDS_CORRECTION or S_EXPIRED will not be changed unless the parameter * $ignorecurrentstatus is set to true. * * This method may not be called after a negative approval or review to * recalculated the status, because - * it doesn't take a defeating approval or review into account. It will + * it doesn't take a defeating approval or review into account. This method + * does not set the status to S_REJECTED! It will * just check for a pending workflow, approval or review and set the status * accordingly, e.g. after the list of reviewers or appovers has been * modified. If there is not pending workflow, approval or review the @@ -3192,15 +3193,19 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ $st=$this->getStatus(); /* Documents already obsoleted, rejected or expired will not change - * its status anymore, unless explicitly requested. + * its status anymore, unless explicitly requested. Be aware, that + * this method has an unsufficient check for negative reviews and + * approvals. A document in status S_REJECTED may become S_RELEASED + * if there is at least one positive review or approval. */ - if (!$ignorecurrentstatus && ($st["status"]==S_OBSOLETE || $st["status"]==S_REJECTED || $st["status"]==S_EXPIRED )) return; + if (!$ignorecurrentstatus && ($st["status"]==S_OBSOLETE || $st["status"]==S_REJECTED || $st["status"]==S_EXPIRED || $st["status"]==S_NEEDS_CORRECTION)) return; unset($this->_workflow); // force to be reloaded from DB $hasworkflow = $this->getWorkflow() ? true : false; /* $pendingReview will be set when there are still open reviews */ $pendingReview=false; + /* $hasReview will be set if there is at least one positiv review */ $hasReview=false; unset($this->_reviewStatus); // force to be reloaded from DB $reviewStatus=$this->getReviewStatus(); @@ -3217,6 +3222,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ /* $pendingApproval will be set when there are still open approvals */ $pendingApproval=false; + /* $hasApproval will be set if there is at least one positiv review */ $hasApproval=false; unset($this->_approvalStatus); // force to be reloaded from DB $approvalStatus=$this->getApprovalStatus(); @@ -3232,6 +3238,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } $pendingRevision=false; $hasRevision=false; + $needsCorrection=false; unset($this->_revisionStatus); // force to be reloaded from DB $revsisionStatus=$this->getRevisionStatus(); if (is_array($revsisionStatus) && count($revsisionStatus)>0) { @@ -3241,6 +3248,8 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ break; } elseif($a["status"]==1){ $hasRevision=true; + } elseif($a["status"]==-1){ + $needsCorrection=true; } } } @@ -3250,16 +3259,33 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ elseif ($pendingReview) $this->setStatus(S_DRAFT_REV,$msg,$user); elseif ($pendingApproval) $this->setStatus(S_DRAFT_APP,$msg,$user); elseif ($pendingRevision) $this->setStatus(S_IN_REVISION,$msg,$user); - /* Finally decide what to do if either no review, approval, revision was - * ever done or if one of them has been done. In the first case it will - * go to the initial status, in the second case, it will be released. + /* This point will only be reached if there is no pending workflow, review, + * approval or revision but the current status is one of S_DRAFT_REV, + * S_DRAFT_APP or S_IN_REVISION. This can happen if formely set reviewers, + * approvers, revisors are completly removed. In case of S_DRAFT_REV and + * S_DRAFT_APP the document will go back into its initial status. If a + * positive review or approval was found the document will be released. + * Be aware that negative reviews or approvals are not taken into account, + * because in that case the document must have been rejected before calling + * this function. FIXME: this is a problem if the parameter $ignorecurrentstatus + * was set, because an already rejected document may be released with just + * one positive review or approval disregarding any negative reviews or + * approvals. + * A document in status S_IN_REVISION will be treated differently. + * It takes negative revisions into account! + * * A document in status S_DRAFT will never go into S_RELEASED and document * already released will never go back at this point into the given * initial status, which can only by S_DRAFT or S_RELEASED */ elseif ($st["status"]!=S_DRAFT && $st["status"]!=S_RELEASED ) { - if($hasReview || $hasApproval || $hasRevision) $this->setStatus(S_RELEASED,$msg,$user); - else $this->setStatus($initialstatus,$msg,$user); + if($st["status"]==S_DRAFT_REV || $st["status"]==S_DRAFT_APP) { + if($hasReview || $hasApproval) $this->setStatus(S_RELEASED,$msg,$user); + else $this->setStatus($initialstatus,$msg,$user); + } elseif($st["status"]==S_IN_REVISION) { + if($needsCorrection) $this->setStatus(S_NEEDS_CORRECTION,$msg,$user); + else $this->setStatus(S_RELEASED,$msg,$user); + } } } /* }}} */ From 7e3f490b57c5006dac938ad4447cddf34fcdd34d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 18 Oct 2019 07:23:20 +0200 Subject: [PATCH 204/467] fix getting view parameter 'onevotereject' --- controllers/class.ReviseDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/class.ReviseDocument.php b/controllers/class.ReviseDocument.php index ccee171e5..94f085d6d 100644 --- a/controllers/class.ReviseDocument.php +++ b/controllers/class.ReviseDocument.php @@ -38,7 +38,7 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common { * if one has rejected it. So in the very end the doc is rejected, but * doc remainѕ in S_IN_REVISION until all have revised the doc */ - $onevotereject = $this->param['onevotereject']; + $onevotereject = $this->params['onevotereject']; /* Get the document id and name before removing the document */ $docname = $document->getName(); From 40ddfd3ea6c7be093294ef224dd07f20daa122f9 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 18 Oct 2019 07:24:33 +0200 Subject: [PATCH 205/467] allow to set status S_NEEDS_CORRECTION --- op/op.OverrideContentStatus.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op/op.OverrideContentStatus.php b/op/op.OverrideContentStatus.php index 172ab9e0f..2b21e45ca 100644 --- a/op/op.OverrideContentStatus.php +++ b/op/op.OverrideContentStatus.php @@ -59,7 +59,7 @@ if (!is_object($content)) { } if (!isset($_POST["overrideStatus"]) || !is_numeric($_POST["overrideStatus"]) || - (intval($_POST["overrideStatus"]) != S_RELEASED && intval($_POST["overrideStatus"]) != S_OBSOLETE && intval($_POST["overrideStatus"]) != S_DRAFT)) { + (intval($_POST["overrideStatus"]) != S_RELEASED && intval($_POST["overrideStatus"]) != S_OBSOLETE && intval($_POST["overrideStatus"]) != S_DRAFT && intval($_POST["overrideStatus"]) != S_NEEDS_CORRECTION)) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_status")); } From ffcc53408fbb882ead3352bb4214fde8da76dce3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 18 Oct 2019 07:24:58 +0200 Subject: [PATCH 206/467] fix typo in enableRevisionOnVoteReject (must be 'One') --- inc/inc.ClassSettings.php | 6 +++--- op/op.ReviseDocument.php | 2 +- views/bootstrap/class.Settings.php | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 908868998..3f3f8c11a 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -193,7 +193,7 @@ class Settings { /* {{{ */ // enable/disable revision workflow var $_enableRevisionWorkflow = true; // enable/disable revision on vote reject - var $_enableRevisionOnVoteReject = true; + var $_enableRevisionOneVoteReject = true; // Allow to set just a reviewer in tradional workflow var $_allowReviewerOnly = true; // Allow to change reviewer/approver after review/approval has started @@ -708,7 +708,7 @@ class Settings { /* {{{ */ $this->_enableReceiptWorkflow = Settings::boolval($tab["enableReceiptWorkflow"]); $this->_enableReceiptReject = Settings::boolval($tab["enableReceiptReject"]); $this->_enableRevisionWorkflow = Settings::boolval($tab["enableRevisionWorkflow"]); - $this->_enableRevisionOnVoteReject = Settings::boolval($tab["enableRevisionOnVoteReject"]); + $this->_enableRevisionOneVoteReject = Settings::boolval($tab["enableRevisionOneVoteReject"]); $this->_allowReviewerOnly = Settings::boolval($tab["allowReviewerOnly"]); $this->_allowChangeRevAppInProcess = Settings::boolval($tab["allowChangeRevAppInProcess"]); $this->_enableVersionDeletion = Settings::boolval($tab["enableVersionDeletion"]); @@ -1040,7 +1040,7 @@ class Settings { /* {{{ */ $this->setXMLAttributValue($node, "enableReceiptWorkflow", $this->_enableReceiptWorkflow); $this->setXMLAttributValue($node, "enableReceiptReject", $this->_enableReceiptReject); $this->setXMLAttributValue($node, "enableRevisionWorkflow", $this->_enableRevisionWorkflow); - $this->setXMLAttributValue($node, "enableRevisionOnVoteReject", $this->_enableRevisionOnVoteReject); + $this->setXMLAttributValue($node, "enableRevisionOneVoteReject", $this->_enableRevisionOneVoteReject); $this->setXMLAttributValue($node, "allowReviewerOnly", $this->_allowReviewerOnly); $this->setXMLAttributValue($node, "allowChangeRevAppInProcess", $this->_allowChangeRevAppInProcess); $this->setXMLAttributValue($node, "enableVersionDeletion", $this->_enableVersionDeletion); diff --git a/op/op.ReviseDocument.php b/op/op.ReviseDocument.php index 773da2979..d3fb84d2c 100644 --- a/op/op.ReviseDocument.php +++ b/op/op.ReviseDocument.php @@ -92,7 +92,7 @@ if ($_POST["revisionType"] == "grp") { } $controller->setParam('group', $group); $controller->setParam('comment', $_POST["comment"]); -$controller->setParam('onevotereject', $settings->_enableRevisionOnVoteReject); +$controller->setParam('onevotereject', $settings->_enableRevisionOneVoteReject); if(!$controller->run()) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($controller->getErrorMsg())); } diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 3c81166a0..3ccc53e2d 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -433,7 +433,7 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); showConfigCheckbox('settings_enableReceiptWorkflow', 'enableReceiptWorkflow'); ?> showConfigCheckbox('settings_enableReceiptReject', 'enableReceiptReject'); ?> showConfigCheckbox('settings_enableRevisionWorkflow', 'enableRevisionWorkflow'); ?> -showConfigCheckbox('settings_enableRevisionOnVoteReject', 'enableRevisionOnVoteReject'); ?> +showConfigCheckbox('settings_enableRevisionOneVoteReject', 'enableRevisionOneVoteReject'); ?> showConfigText('settings_versioningFileName', 'versioningFileName'); ?> showConfigText('settings_presetExpirationDate', 'presetExpirationDate'); ?> showConfigOption('settings_initialDocumentStatus', 'initialDocumentStatus', array(' '.S_RELEASED=>'settings_initialDocumentStatus_released', ' '.S_DRAFT=>'settings_initialDocumentStatus_draft'), false, true); ?> From 937f8a5678a52b4fe0acdfb002ed1e8fc68f4e3c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 18 Oct 2019 11:06:42 +0200 Subject: [PATCH 207/467] add hooks preContent, postContent --- views/bootstrap/class.ViewDocument.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 062556b80..06a2d4cff 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -447,6 +447,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { $this->contentStart(); $this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document); + echo $this->callHook('preContent'); if ($document->isLocked()) { $lockingUser = $document->getLockingUser(); $txt = $this->callHook('documentIsLocked', $document, $lockingUser); @@ -1504,6 +1505,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { callHook('postContent'); $this->contentEnd(); $this->htmlEndPage(); } /* }}} */ From 1144ee4500fa2d83382d8157a495ff92314dde93 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 18 Oct 2019 11:07:52 +0200 Subject: [PATCH 208/467] add entry for 5.1.13 --- CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 40fe3b4ea..b9d21eb00 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -12,7 +12,7 @@ - do not set mandatory reviewer when document is uploaded and workflow mode is set to 'traditional without review'. - turn off auto complete for date fields -- new hook pageNavigationBar +- new hook pageNavigationBar in bootstrap, preContent, postContent in ViewDocument -------------------------------------------------------------------------------- Changes in version 5.1.12 From a53cd4b0cd036dcf90a77169df6ee3889386d216 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 18 Oct 2019 12:21:40 +0200 Subject: [PATCH 209/467] add method successMsg() --- views/bootstrap/class.Bootstrap.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index ef79b702a..c933ea73d 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1524,6 +1524,12 @@ $(document).ready(function() { echo "\n"; } /* }}} */ + function successMsg($msg) { /* {{{ */ + echo "
      \n"; + echo $msg; + echo "
      \n"; + } /* }}} */ + function ___exitError($pagetitle, $error, $noexit=false, $plain=false) { /* {{{ */ /* This is just a hack to prevent creation of js files in an error From 0205e8a08e9338689a04aef1534a64f9ede308cb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 18 Oct 2019 12:55:03 +0200 Subject: [PATCH 210/467] create AccessOperation object --- out/out.AttributeMgr.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/out/out.AttributeMgr.php b/out/out.AttributeMgr.php index a455e6199..ef7960d13 100644 --- a/out/out.AttributeMgr.php +++ b/out/out.AttributeMgr.php @@ -27,6 +27,7 @@ require_once("inc/inc.Init.php"); require_once("inc/inc.Extension.php"); require_once("inc/inc.DBInit.php"); require_once("inc/inc.ClassUI.php"); +require_once("inc/inc.ClassAccessOperation.php"); require_once("inc/inc.Authentication.php"); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); @@ -35,6 +36,8 @@ if (!$user->isAdmin()) { UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); } +$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); + $attrdefs = $dms->getAllAttributeDefinitions(); if(isset($_GET['attrdefid']) && $_GET['attrdefid']) { @@ -44,6 +47,7 @@ if(isset($_GET['attrdefid']) && $_GET['attrdefid']) { } if($view) { + $view->setParam('accessobject', $accessop); $view->setParam('attrdefs', $attrdefs); $view->setParam('selattrdef', $selattrdef); $view->setParam('showtree', showtree()); From b8447b7d390b86c2d73e0fa7dfc6ca6219c68b65 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 19 Oct 2019 08:16:43 +0200 Subject: [PATCH 211/467] add more hooks (still incomplete) --- doc/README.Hooks | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/doc/README.Hooks b/doc/README.Hooks index 361a8e8c9..91f8de0a5 100644 --- a/doc/README.Hooks +++ b/doc/README.Hooks @@ -59,6 +59,22 @@ AddDocument::preIndexDocument are the document and the indexed document. Returning false will prevent the document from being indexed. +EditDocument::editDocumentAttribute + Called for each custom document attribute + + This hook will be called for each custom attribute to ouput the form entry. + The parameters passed are the document and the attribute definition. + Returning an empty array will prevent the attribute from being show. + Returning an array with two elements will pass those element to the formField + method. A returned string will be output as is. + +EditDocument::addDocumentAttributes + Called after all custom document attributes has been output + + This hook will be called right after the document attributes have been shown. + The return value is either an array with two elements or a string. + The string will be output as is, the array will be passed to the method formField. + UpdateDocument::preUpdateDocument Called before a new document will be updated @@ -70,10 +86,10 @@ UpdateDocument::preUpdateDocument UpdateDocument::updateDocument Called when the document is to be updated - This hook can be used to replace the code for updating a document. In - that case it must return a document content or false. If - the hook returns null, the original code for adding the - document will be executed. + This hook can be used to replace the code for updating a document. In + that case it must return a document content or false. If + the hook returns null, the original code for adding the + document will be executed. UpdateDocument::postUpdateDocument Called after a new document has been updated From dfa2d03cf9f942fb13fbe975747a2989a66d11fd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 19 Oct 2019 08:18:06 +0200 Subject: [PATCH 212/467] new and modified hooks add hook addDocumentContentAttributes, addDocumentContentAttributes and editDocumentContentAttribute can also return a string --- views/bootstrap/class.EditAttributes.php | 28 ++++++++++++++++-------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/views/bootstrap/class.EditAttributes.php b/views/bootstrap/class.EditAttributes.php index 1fa26e300..7401be445 100644 --- a/views/bootstrap/class.EditAttributes.php +++ b/views/bootstrap/class.EditAttributes.php @@ -53,18 +53,28 @@ class SeedDMS_View_EditAttributes extends SeedDMS_Bootstrap_Style { callHook('editDocumentContentAttribute', $version, $attrdef); - if(is_array($arr)) { - if($arr) { - $this->formField($arr[0], $arr[1]); - } - } else { - $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, $version->getAttribute($attrdef))); + if($attrdefs) { + foreach($attrdefs as $attrdef) { + $arr = $this->callHook('editDocumentContentAttribute', $version, $attrdef); + if(is_array($arr)) { + if($arr) { + $this->formField($arr[0], $arr[1]); } + } elseif(is_string($arr) { + echo $arr; + } else { + $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, $version->getAttribute($attrdef))); } } + } + $arrs = $this->callHook('addDocumentContentAttributes', $version); + if(is_array($arrs)) { + foreach($arrs as $arr) { + $this->formField($arr[0], $arr[1]); + } + } elseif(is_string($arr) { + echo $arr; + } $this->formSubmit(" ".getMLText('save')); ?> From 070af52849304fc185ce35790f7cd1ab4f6d9738 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 19 Oct 2019 08:19:09 +0200 Subject: [PATCH 213/467] add new hook addFolderAttributes, editFolderAttribute may return a string --- views/bootstrap/class.EditFolder.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/views/bootstrap/class.EditFolder.php b/views/bootstrap/class.EditFolder.php index 3168a08be..89bb50d4b 100644 --- a/views/bootstrap/class.EditFolder.php +++ b/views/bootstrap/class.EditFolder.php @@ -117,11 +117,21 @@ $(document).ready(function() { if($arr) { $this->formField($arr[0], $arr[1]); } + } elseif(is_string($arr) { + echo $arr; } else { $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, $folder->getAttribute($attrdef))); } } } + $arrs = $this->callHook('addFolderAttributes', $folder); + if(is_array($arrs)) { + foreach($arrs as $arr) { + $this->formField($arr[0], $arr[1]); + } + } elseif(is_string($arr) { + echo $arr; + } $this->formSubmit(" ".getMLText('save')); ?> From 0208d544094910988d80d944e4eb48693a9e7fb1 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 19 Oct 2019 08:19:51 +0200 Subject: [PATCH 214/467] fix parameter for addDocumentAttributes, editDocumentAttributes may return a string --- views/bootstrap/class.EditDocument.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.EditDocument.php b/views/bootstrap/class.EditDocument.php index 8e1ef93ae..c3fbbd1af 100644 --- a/views/bootstrap/class.EditDocument.php +++ b/views/bootstrap/class.EditDocument.php @@ -162,16 +162,20 @@ $(document).ready( function() { if($arr) { $this->formField($arr[0], $arr[1]); } + } elseif(is_string($arr) { + echo $arr; } else { $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, $document->getAttribute($attrdef))); } } } - $arrs = $this->callHook('addDocumentAttributes', $folder); + $arrs = $this->callHook('addDocumentAttributes', $document); if(is_array($arrs)) { foreach($arrs as $arr) { $this->formField($arr[0], $arr[1]); } + } elseif(is_string($arr) { + echo $arr; } $this->formSubmit(" ".getMLText('save')); ?> From da5fed35915e56b0adeb2f5524a440206926e9c4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 19 Oct 2019 08:27:38 +0200 Subject: [PATCH 215/467] fix syntax error --- views/bootstrap/class.EditAttributes.php | 4 ++-- views/bootstrap/class.EditDocument.php | 4 ++-- views/bootstrap/class.EditFolder.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/views/bootstrap/class.EditAttributes.php b/views/bootstrap/class.EditAttributes.php index 7401be445..ca64c9b98 100644 --- a/views/bootstrap/class.EditAttributes.php +++ b/views/bootstrap/class.EditAttributes.php @@ -60,7 +60,7 @@ class SeedDMS_View_EditAttributes extends SeedDMS_Bootstrap_Style { if($arr) { $this->formField($arr[0], $arr[1]); } - } elseif(is_string($arr) { + } elseif(is_string($arr)) { echo $arr; } else { $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, $version->getAttribute($attrdef))); @@ -72,7 +72,7 @@ class SeedDMS_View_EditAttributes extends SeedDMS_Bootstrap_Style { foreach($arrs as $arr) { $this->formField($arr[0], $arr[1]); } - } elseif(is_string($arr) { + } elseif(is_string($arr)) { echo $arr; } $this->formSubmit(" ".getMLText('save')); diff --git a/views/bootstrap/class.EditDocument.php b/views/bootstrap/class.EditDocument.php index c3fbbd1af..937245c4b 100644 --- a/views/bootstrap/class.EditDocument.php +++ b/views/bootstrap/class.EditDocument.php @@ -162,7 +162,7 @@ $(document).ready( function() { if($arr) { $this->formField($arr[0], $arr[1]); } - } elseif(is_string($arr) { + } elseif(is_string($arr)) { echo $arr; } else { $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, $document->getAttribute($attrdef))); @@ -174,7 +174,7 @@ $(document).ready( function() { foreach($arrs as $arr) { $this->formField($arr[0], $arr[1]); } - } elseif(is_string($arr) { + } elseif(is_string($arr)) { echo $arr; } $this->formSubmit(" ".getMLText('save')); diff --git a/views/bootstrap/class.EditFolder.php b/views/bootstrap/class.EditFolder.php index 89bb50d4b..e7bc756df 100644 --- a/views/bootstrap/class.EditFolder.php +++ b/views/bootstrap/class.EditFolder.php @@ -117,7 +117,7 @@ $(document).ready(function() { if($arr) { $this->formField($arr[0], $arr[1]); } - } elseif(is_string($arr) { + } elseif(is_string($arr)) { echo $arr; } else { $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, $folder->getAttribute($attrdef))); @@ -129,7 +129,7 @@ $(document).ready(function() { foreach($arrs as $arr) { $this->formField($arr[0], $arr[1]); } - } elseif(is_string($arr) { + } elseif(is_string($arr)) { echo $arr; } $this->formSubmit(" ".getMLText('save')); From 8c73f36151d9ce434343a3cfa0a84e5b8ba7488f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 19 Oct 2019 09:17:49 +0200 Subject: [PATCH 216/467] show[Document|Folder]Attribute may return a string --- views/bootstrap/class.ViewDocument.php | 2 ++ views/bootstrap/class.ViewFolder.php | 2 ++ 2 files changed, 4 insertions(+) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 06a2d4cff..ffb59411b 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -314,6 +314,8 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { echo "".$arr[0].":"; echo "".$arr[1].""; echo ""; + } elseif(is_string($arr)) { + echo $arr; } else { $this->printAttribute($attribute); } diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 1e57d85c4..b45acfff2 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -262,6 +262,8 @@ $('body').on('click', '.order-btn', function(ev) { echo "".$arr[0].":"; echo "".$arr[1].":"; echo ""; + } elseif(is_string($arr)) { + echo $arr; } else { $attrdef = $attribute->getAttributeDefinition(); ?> From e9b896ecf10e3296dbc7bc2669916cbec9e01c38 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 21 Oct 2019 09:32:07 +0200 Subject: [PATCH 217/467] fix errors related to new onepage mode --- out/out.AttributeMgr.php | 1 + out/out.Calendar.php | 5 +++++ out/out.Search.php | 4 ++++ out/out.Timeline.php | 5 +++++ 4 files changed, 15 insertions(+) diff --git a/out/out.AttributeMgr.php b/out/out.AttributeMgr.php index ef7960d13..445a69d60 100644 --- a/out/out.AttributeMgr.php +++ b/out/out.AttributeMgr.php @@ -48,6 +48,7 @@ if(isset($_GET['attrdefid']) && $_GET['attrdefid']) { if($view) { $view->setParam('accessobject', $accessop); + $view->setParam('onepage', false); // do most navigation by reloading areas of pages with ajax $view->setParam('attrdefs', $attrdefs); $view->setParam('selattrdef', $selattrdef); $view->setParam('showtree', showtree()); diff --git a/out/out.Calendar.php b/out/out.Calendar.php index 2622b4958..e8f1ad8e0 100644 --- a/out/out.Calendar.php +++ b/out/out.Calendar.php @@ -26,6 +26,7 @@ require_once("inc/inc.Init.php"); require_once("inc/inc.Extension.php"); require_once("inc/inc.DBInit.php"); require_once("inc/inc.ClassUI.php"); +require_once("inc/inc.ClassAccessOperation.php"); require_once("inc/inc.Authentication.php"); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); @@ -44,6 +45,8 @@ if(isset($_GET['documentid']) && $_GET['documentid'] && is_numeric($_GET['docume } else $document = null; +$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); + $calendar = new SeedDMS_Calendar($dms->getDB(), $user); if(isset($_GET['eventid']) && $_GET['eventid'] && is_numeric($_GET['eventid'])) { @@ -62,6 +65,8 @@ if(isset($_GET['eventtype']) && $_GET['eventtype']) { $eventtype = 'regular'; if($view) { + $view->setParam('accessobject', $accessop); + $view->setParam('onepage', false); // do most navigation by reloading areas of pages with ajax $view->setParam('calendar', $calendar); $view->setParam('start', $start); $view->setParam('end', $end); diff --git a/out/out.Search.php b/out/out.Search.php index 1dac3b46a..1a47098bf 100644 --- a/out/out.Search.php +++ b/out/out.Search.php @@ -58,6 +58,8 @@ if (isset($_GET["navBar"])) { */ } +$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); + if(isset($_GET["fullsearch"]) && $_GET["fullsearch"] && $settings->_enableFullSearch) { // Search in Fulltext {{{ if (isset($_GET["query"]) && is_string($_GET["query"])) { @@ -435,6 +437,8 @@ if($settings->_showSingleSearchHit && count($entries) == 1) { $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'query'=>$query, 'searchhits'=>$entries, 'totalpages'=>$totalPages, 'pagenumber'=>$pageNumber, 'searchtime'=>$searchTime, 'urlparams'=>$_GET, 'cachedir'=>$settings->_cacheDir)); if($view) { + $view->setParam('accessobject', $accessop); + $view->setParam('onepage', false); // do most navigation by reloading areas of pages with ajax $view->setParam('showtree', showtree()); $view->setParam('enableRecursiveCount', $settings->_enableRecursiveCount); $view->setParam('maxRecursiveCount', $settings->_maxRecursiveCount); diff --git a/out/out.Timeline.php b/out/out.Timeline.php index e124ab13b..0bbbca5eb 100644 --- a/out/out.Timeline.php +++ b/out/out.Timeline.php @@ -26,6 +26,7 @@ require_once("inc/inc.Init.php"); require_once("inc/inc.Extension.php"); require_once("inc/inc.DBInit.php"); require_once("inc/inc.ClassUI.php"); +require_once("inc/inc.ClassAccessOperation.php"); require_once("inc/inc.Authentication.php"); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); @@ -40,6 +41,8 @@ if(isset($_GET['skip'])) else $skip = array(); +$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); + $document = null; $content = null; if(isset($_GET['documentid']) && $_GET['documentid'] && is_numeric($_GET['documentid'])) { @@ -53,6 +56,8 @@ if(isset($_GET['documentid']) && $_GET['documentid'] && is_numeric($_GET['docume if($view) { $view->setParam('dms', $dms); $view->setParam('user', $user); + $view->setParam('accessobject', $accessop); + $view->setParam('onepage', false); // do most navigation by reloading areas of pages with ajax $view->setParam('showtree', showtree()); $view->setParam('fromdate', isset($_GET['fromdate']) ? $_GET['fromdate'] : ''); $view->setParam('todate', isset($_GET['todate']) ? $_GET['todate'] : ''); From badf336542fa8c9b0f3d08dd882b6f3481e6dd1c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 22 Oct 2019 06:45:23 +0200 Subject: [PATCH 218/467] translation updates, major rework of italian --- languages/ar_EG/lang.inc | 3 + languages/bg_BG/lang.inc | 7 +- languages/ca_ES/lang.inc | 3 + languages/cs_CZ/lang.inc | 11 +- languages/de_DE/lang.inc | 9 +- languages/el_GR/lang.inc | 3 + languages/en_GB/lang.inc | 13 +- languages/es_ES/lang.inc | 15 +- languages/fr_FR/lang.inc | 11 +- languages/hr_HR/lang.inc | 7 +- languages/hu_HU/lang.inc | 7 +- languages/it_IT/lang.inc | 813 ++++++++++++++++++++------------------- languages/ko_KR/lang.inc | 3 + languages/lo_LA/lang.inc | 3 + languages/nl_NL/lang.inc | 7 +- languages/pl_PL/lang.inc | 7 +- languages/pt_BR/lang.inc | 11 +- languages/ro_RO/lang.inc | 7 +- languages/ru_RU/lang.inc | 9 +- languages/sk_SK/lang.inc | 9 +- languages/sv_SE/lang.inc | 7 +- languages/tr_TR/lang.inc | 7 +- languages/uk_UA/lang.inc | 7 +- languages/zh_CN/lang.inc | 7 +- languages/zh_TW/lang.inc | 7 +- 25 files changed, 545 insertions(+), 448 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index 7087609a4..f0919a9e9 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -822,6 +822,7 @@ URL: [url]', 'no_action' => 'لايوجد اجراء مطلوب', 'no_approval_needed' => 'لايوجد موافقات منتظره', 'no_attached_files' => 'لا يوجد مرفقات', +'no_backup_dir' => '', 'no_current_version' => '', 'no_default_keywords' => 'لايوجد كلمات بحثية متاحة', 'no_docs_checked_out' => '', @@ -1276,6 +1277,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', 'settings_enableRecursiveCount_desc' => '', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index a4e24c16e..7cfe1f6ca 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (861) +// Translators: Admin (862) $text = array( '2_factor_auth' => '', @@ -727,6 +727,7 @@ $text = array( 'no_action' => 'Действие не е нужно', 'no_approval_needed' => 'Утвърждение не е нужно', 'no_attached_files' => 'Няма прикрачени файлове', +'no_backup_dir' => '', 'no_current_version' => '', 'no_default_keywords' => 'Няма ключови думи', 'no_docs_checked_out' => '', @@ -823,7 +824,7 @@ $text = array( 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'Последно Качени', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1139,6 +1140,8 @@ $text = array( 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', 'settings_enableRecursiveCount_desc' => '', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index c7d318204..0c8622a4b 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -732,6 +732,7 @@ URL: [url]', 'no_action' => 'No és necessària cap acció', 'no_approval_needed' => 'No hi ha aprovacions pendents.', 'no_attached_files' => 'No hi ha fitxers adjunts', +'no_backup_dir' => '', 'no_current_version' => '', 'no_default_keywords' => 'No hi ha mots clau disponibles', 'no_docs_checked_out' => '', @@ -1144,6 +1145,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', 'settings_enableRecursiveCount_desc' => '', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index f04091398..87cb4ae30 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/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 (1525), kreml (579) +// Translators: Admin (1527), kreml (579) $text = array( '2_factor_auth' => 'dvoufaktorové ověření', @@ -860,6 +860,7 @@ URL: [url]', 'no_action' => 'Nic se nevykoná', 'no_approval_needed' => 'Nic nečeká na schválení.', 'no_attached_files' => 'Žádné přiložené soubory', +'no_backup_dir' => '', 'no_current_version' => 'Používáte starou verzi SeedDMS. Nejnovější dostupná verze je [latestversion].', 'no_default_keywords' => 'Nejsou dostupná žádná klíčová slova.', 'no_docs_checked_out' => 'Nebyly odbaveny žádné dokumenty', @@ -977,7 +978,7 @@ URL: [url]', 'receipt_status' => 'Status', 'receipt_summary' => 'Souhrn přijetí', 'receipt_update_failed' => 'Potvrzení že přijetí se nezdařilo', -'recent_uploads' => '', +'recent_uploads' => 'Naposledy nahráno', 'reception' => 'Přijetí', 'reception_acknowleged' => 'Přijetí potvrzeno', 'reception_noaction' => 'Žádná akce', @@ -1355,8 +1356,10 @@ Jméno: [username] 'settings_enableReceiptWorkflow_desc' => 'Povolte, pro spuštění workflow při potvrzení příjmu dokumentu.', 'settings_enableRecursiveCount' => 'Povolit rekurzivní počítání dokumentů / složek', 'settings_enableRecursiveCount_desc' => 'Při zapnutí je počet dokumentů a složek v zobrazení složek určen počítáním všech objektů při rekurzivním zpracování složek a počítáním těch dokumentů a složek, ke kterým má uživatel přístup.', -'settings_enableRevisionOnVoteReject' => 'Odmítnutí jedním revizorem', -'settings_enableRevisionOnVoteReject_desc' => 'Pokud je nastaveno, tak dokument bude odmítnut, pokud jen jeden revizor odmítne dokument.', +'settings_enableRevisionOneVoteReject' => 'Odmítnutí jedním revizorem', +'settings_enableRevisionOneVoteReject_desc' => '', +'settings_enableRevisionOnVoteReject' => '', +'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Povolit revizi dokumentů', 'settings_enableRevisionWorkflow_desc' => 'Povolit, aby bylo možné spustit workflow pro revidování dokumentu po uplynutí dané doby.', 'settings_enableSelfReceipt' => 'Povolit příjem dokumentů pro přihlášeného uživatele', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 395deb3e1..21dcce1ca 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 (2695), dgrutsch (22) +// Translators: Admin (2697), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -858,6 +858,7 @@ URL: [url]', 'no_action' => 'Keine Aktion erforderlich.', 'no_approval_needed' => 'Keine offenen Freigaben.', 'no_attached_files' => 'Keine angehängten Dokumente', +'no_backup_dir' => 'Das Backup-Verzeichnis ist nicht gesetzt', 'no_current_version' => 'Sie verwenden eine ältere Version als die zur Zeit verfügbare Version [latestversion].', 'no_default_keywords' => 'Keine Vorlagen vorhanden', 'no_docs_checked_out' => 'Keine Dokumente ausgecheckt', @@ -1365,8 +1366,10 @@ Name: [username] 'settings_enableReceiptWorkflow_desc' => 'Anwählen, um den Workflow zur Kenntnisnahme von Dokumenten einzuschalten', 'settings_enableRecursiveCount' => 'Rekursive Dokumenten-/Ordner-Zählung', 'settings_enableRecursiveCount_desc' => 'Wenn diese Option eingeschaltet ist, wird die Anzahl der Dokumente und Ordner in der Ordner-Ansicht rekursiv, unter Berücksichtigung der Zugriffsrechte ermittelt.', -'settings_enableRevisionOnVoteReject' => 'Ablehnung durch einen Wiederholungsprüfer', -'settings_enableRevisionOnVoteReject_desc' => 'Diese Einstellung setzen, wenn die Ablehnung einer Wiederholungsprüfung zur Ablehnung des Dokuments führen soll und nicht den Status \'Korrektur erforderlich\' setzt.', +'settings_enableRevisionOneVoteReject' => 'Ablehnung durch einen Wiederholungsprüfer', +'settings_enableRevisionOneVoteReject_desc' => 'Diese Einstellung setzen, wenn die Ablehnung einer Wiederholungsprüfung durch einen einzelnen Prüfer den Status \'Korrektur erforderlich\' setzt und nicht erst alle Prüfungen abgewartet werden, bevor ein Statuswechsel vollzogen wird.', +'settings_enableRevisionOnVoteReject' => '', +'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Ermögliche Wiederholungsprüfung von Dokumenten', 'settings_enableRevisionWorkflow_desc' => 'Anwählen, um den Workflow der Wiederholungsprüfung von Dokumenten nach einer einstellbaren Zeit zu ermöglichen.', 'settings_enableSelfReceipt' => 'Erlaube Empfangsbestätigung durch angemeldeten Benutzer', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index 126ec6c4d..c72b6c47e 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -738,6 +738,7 @@ URL: [url]', 'no_action' => '', 'no_approval_needed' => '', 'no_attached_files' => '', +'no_backup_dir' => '', 'no_current_version' => '', 'no_default_keywords' => '', 'no_docs_checked_out' => '', @@ -1150,6 +1151,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', 'settings_enableRecursiveCount_desc' => '', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 1e513287d..c2c459f38 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 (1787), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1791), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -421,7 +421,7 @@ New owner: [newuser] Parent folder: [folder_path] User: [username] URL: [url]', -'document_transfered_email_subject' => '[sitename]: [name] - Transfer Dokument', +'document_transfered_email_subject' => '[sitename]: [name] - Transfer Document', 'document_updated_email' => 'Document updated', 'document_updated_email_body' => 'Document updated Document: [name] @@ -860,6 +860,7 @@ URL: [url]', 'no_action' => 'No action required', 'no_approval_needed' => 'No approval pending.', 'no_attached_files' => 'No attached files', +'no_backup_dir' => 'Backup directory is not set.', 'no_current_version' => 'You are running an old version of SeedDMS. The latest available version is [latestversion].', 'no_default_keywords' => 'No keywords available', 'no_docs_checked_out' => 'No documents checked out', @@ -1360,8 +1361,10 @@ Name: [username] 'settings_enableReceiptWorkflow_desc' => 'Enable, to turn on the workflow to acknowledge document reception.', 'settings_enableRecursiveCount' => 'Enable recursive document/folder count', 'settings_enableRecursiveCount_desc' => 'If turned on, the number of documents and folders in the folder view will be determined by counting all objects by recursively processing the folders and counting those documents and folders the user is allowed to access.', -'settings_enableRevisionOnVoteReject' => 'Reject by one revisor', -'settings_enableRevisionOnVoteReject_desc' => 'If set the document will be rejected if one revisor rejects the document.', +'settings_enableRevisionOneVoteReject' => 'Reject by one revisor', +'settings_enableRevisionOneVoteReject_desc' => 'If enabled, the document status will be set to \'needs correction\' once the first revisor rejects the document. If disabled, the document status will not change until all revisors have finished their revision.', +'settings_enableRevisionOnVoteReject' => '', +'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Enable revision of documents', 'settings_enableRevisionWorkflow_desc' => 'Enable, to be able to run the workflow for revising a document after a given period of time.', 'settings_enableSelfReceipt' => 'Allow reception of documents for logged in user', @@ -1620,7 +1623,7 @@ Name: [username] 'splash_error_rm_download_link' => 'Error when removing download link', 'splash_error_send_download_link' => 'Error while sending download link', 'splash_extension_getlist' => 'Updated list of extensions from repository', -'splash_extension_import' => 'Extensition installed', +'splash_extension_import' => 'Extension installed', 'splash_extension_refresh' => 'Refreshed list of extensions', 'splash_extension_upload' => 'Extension installed', 'splash_folder_edited' => 'Save folder changes', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 7d2368c00..bc2d627d9 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 (1118), angel (123), francisco (2), jaimem (14) +// Translators: acabello (20), Admin (1124), angel (123), francisco (2), jaimem (14) $text = array( '2_factor_auth' => '', @@ -829,6 +829,7 @@ URL: [url]', 'no_action' => 'No es necesaria ninguna acción', 'no_approval_needed' => 'No hay aprobaciones pendientes.', 'no_attached_files' => 'No hay ficheros adjuntos', +'no_backup_dir' => '', 'no_current_version' => 'Está utilizando una versión desactualizada de este producto. La última versión disponible es [latestversion].', 'no_default_keywords' => 'No hay palabras clave disponibles', 'no_docs_checked_out' => '', @@ -939,7 +940,7 @@ Si continua teniendo problemas de acceso, por favor contacte con el administrado 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'Subidas recientes', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1249,8 +1250,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => 'Habilite/Deshabilite el área de drop en la pagina \'\'Ver folder\' para subir archivos por Drag&Drop', 'settings_enableDuplicateDocNames' => 'Permite tener nombres de documento duplicados', 'settings_enableDuplicateDocNames_desc' => 'Permite tener un nombre de documento duplicado en una carpeta.', -'settings_enableDuplicateSubFolderNames' => '', -'settings_enableDuplicateSubFolderNames_desc' => '', +'settings_enableDuplicateSubFolderNames' => 'Permitir nombres de subcarpetas duplicados', +'settings_enableDuplicateSubFolderNames_desc' => 'Permite tener nombres duplicados de subcarpetas dentro de una carpeta', 'settings_enableEmail' => 'Habilitar E-mail', 'settings_enableEmail_desc' => 'Habilitar/Deshabilitar notificación automática por correo electrónico', 'settings_enableFilterReceipt' => '', @@ -1291,6 +1292,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Habilitar cuenta de documento/carpeta recursivo', 'settings_enableRecursiveCount_desc' => 'Si cambia a activado, el número de documentos y carpetas en la carpeta será determinado por la cuenta de todos los objetos recursivos procesados de la carpeta y una vez contados el usuarios tendrá permiso para acceder.', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '', @@ -1519,8 +1522,8 @@ URL: [url]', 'sign_out_user' => 'Desconectar usuario', 'sk_SK' => 'Slovaco', 'sort_by_date' => 'Ordenar por Fecha', -'sort_by_name' => 'Ordenar por Nombre', -'sort_by_sequence' => 'Ordenar por Secuencia', +'sort_by_name' => 'Ordenar por nombre', +'sort_by_sequence' => 'Ordenar por secuencia', 'space_used_on_data_folder' => 'Espacio usado en la carpeta de datos', 'splash_added_to_clipboard' => 'Agregado al portapapeles', 'splash_add_access' => '', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 70f818ab9..9cb33d667 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 (1091), jeromerobert (50), lonnnew (9), Oudiceval (755) +// Translators: Admin (1093), jeromerobert (50), lonnnew (9), Oudiceval (755) $text = array( '2_factor_auth' => 'Authentification forte', @@ -860,6 +860,7 @@ URL: [url]', 'no_action' => 'Aucune action n\'est nécessaire', 'no_approval_needed' => 'Aucune approbation en attente', 'no_attached_files' => 'Aucun fichier attaché', +'no_backup_dir' => '', 'no_current_version' => 'Vous utilisez une vieille version de SeedDMS. La dernière version disponible est la [latestversion].', 'no_default_keywords' => 'Aucun mot-clé disponible', 'no_docs_checked_out' => '', @@ -979,7 +980,7 @@ URL : [url]', 'receipt_status' => 'Statut', 'receipt_summary' => 'Vue d’ensemble réception', 'receipt_update_failed' => 'La confirmation de réception a échoué', -'recent_uploads' => '', +'recent_uploads' => 'Téléchargements récents', 'reception' => 'Réception', 'reception_acknowleged' => 'Réception confirmée', 'reception_noaction' => 'Aucune action', @@ -1344,8 +1345,10 @@ Nom : [username] 'settings_enableReceiptWorkflow_desc' => 'Activer cette option pour permettre de confirmer la réception de document dans le workflow.', 'settings_enableRecursiveCount' => 'Décompte récursif des documents/dossiers', 'settings_enableRecursiveCount_desc' => 'Si activé, le nombre de documents et répertoires dans un répertoire est calculé en comptant récursivement le contenu des sous-répertoires auxquels l\'utilisateur a accès.', -'settings_enableRevisionOnVoteReject' => 'Rejet par un réviseur', -'settings_enableRevisionOnVoteReject_desc' => 'Si activé, le document sera rejeté si un réviseur rejette le document.', +'settings_enableRevisionOneVoteReject' => 'Rejet par un réviseur', +'settings_enableRevisionOneVoteReject_desc' => '', +'settings_enableRevisionOnVoteReject' => '', +'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Activer la révision des documents', 'settings_enableRevisionWorkflow_desc' => 'Activer afin de pouvoir lancer un flux de travail pour réviser un document après une période donnée.', 'settings_enableSelfReceipt' => '', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 125a66c62..14b61726a 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1222), marbanas (16) +// Translators: Admin (1223), marbanas (16) $text = array( '2_factor_auth' => '', @@ -833,6 +833,7 @@ Internet poveznica: [url]', 'no_action' => 'Nema zahtjevane radnje', 'no_approval_needed' => 'Nema odobrenja na čekanju.', 'no_attached_files' => 'Nema priloženih datoteka', +'no_backup_dir' => '', 'no_current_version' => 'Koristite na staru verziju ProsperaDMS-a. Najnovija dostupna verzija je[latestversion].', 'no_default_keywords' => 'Nema dostupnih ključnih riječi', 'no_docs_checked_out' => 'Niti jedan dokument nije odjavljen', @@ -943,7 +944,7 @@ Ako i dalje imate problema s prijavom, molimo kontaktirajte Vašeg administrator 'receipt_status' => '', 'receipt_summary' => 'Sažetak prijema', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'Poslijedni Prenosi', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1312,6 +1313,8 @@ Internet poveznica: [url]', 'settings_enableReceiptWorkflow_desc' => 'Omogućite kako bi omogućili tok rada za potvrđivajne prijema dokumenta.', 'settings_enableRecursiveCount' => 'Omogući rekurzivno brojanje dokumenta/mape', 'settings_enableRecursiveCount_desc' => 'Ako je uključeno, broj dokumenata i mapa u pregledu mape će biti određen brojanjem svih objekata rekurzivnom obradom mapa i brojanjem tih dokumenata i mapa kojima je korisniku omogućen pristup.', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Omogućavanje revizije dokumenata', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 2f080ed58..6e68cf456 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (633), ribaz (1036) +// Translators: Admin (634), ribaz (1036) $text = array( '2_factor_auth' => 'Kétfaktoros azonosítás', @@ -829,6 +829,7 @@ URL: [url]', 'no_action' => 'Nincs teendő', 'no_approval_needed' => 'Nincs folyamatban lévő jóváhagyás.', 'no_attached_files' => 'Nincsenek csatolt állományok', +'no_backup_dir' => '', 'no_current_version' => 'Ön a SeedDMS régebbi változatát futtatja. A legutolsó elérhető verzió [latestversion].', 'no_default_keywords' => 'Nincsenek elérhető kulcsszavak', 'no_docs_checked_out' => '', @@ -939,7 +940,7 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'Legutóbbi feltöltések', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1290,6 +1291,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Engedélyezi a rekurzív dokumentum/mappa számot', 'settings_enableRecursiveCount_desc' => 'Ha be van kapcsolva a mappa nézetben a dokumentumok és mappák száma minden objektum rekurzív feldolgozásával kerül meghatározásra és a dokumentumok és mappák száma a felhasználó számára engedélyezett.', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 164cc2663..f4674863b 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -19,11 +19,11 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1628), rickr (144), s.pnt (26) +// Translators: Admin (2014), rickr (144), s.pnt (26) $text = array( '2_factor_auth' => 'Autorizzazione a due fattori', -'2_factor_auth_info' => 'Questo sistema usa autenticazione a due fattori. Sarà necessario il “Google Authenticator” sul tuo telephono cellulare. Qui potete vedere due codici QR. Quello di destra è il tuo segreto. è sulla sinistra chè un nuovo segreto. Se si imposta un nuovo segreto per assicurarsi si deve scansione con “Google Authenticator” di nouvo.', +'2_factor_auth_info' => 'Questo sistema usa autenticazione a due fattori. Sarà necessario il “Google Authenticator” sul tuo telephono cellulare. Qui potete vedere due codici QR. Quello di destra è il tuo segreto. è sulla sinistra chè un nuovo segreto. Se si imposta un nuovo segreto per assicurarsi si deve scansione con “Google Authenticator” di nuovo.', '2_fact_auth_secret' => 'Segreto', 'accept' => 'Accetta', 'access_control' => 'Il controllo degli accessi', @@ -50,53 +50,53 @@ URL: [url]', 'action_is_complete' => 'Completata', 'action_is_not_complete' => 'Non completata', 'action_reject' => 'Rifiuta', -'action_review' => 'Rivedi', -'action_revise' => 'Revisiona', +'action_review' => 'Revisiona', +'action_revise' => 'Riesamina', 'add' => 'Aggiungi', 'add_approval' => 'Invio approvazione', 'add_attrdefgroup' => 'Aggiungi nuovo gruppo attributo', 'add_document' => 'Aggiungi documento', 'add_document_link' => 'Aggiungi collegamento', 'add_document_notify' => 'Notifica a', -'add_doc_reviewer_approver_warning' => 'Nota: i documenti saranno automaticamente contrassegnati come rilasciati se non è stato assegnato un revisore o un approvatore.', -'add_doc_workflow_warning' => 'Nota: i documenti saranno automaticamente contrassegnati come rilasciati se non è stato istituito un flusso di lavoro.', +'add_doc_reviewer_approver_warning' => 'Nota: i documenti saranno automaticamente contrassegnati come pubblicati se non è stato assegnato un revisore o un approvatore.', +'add_doc_workflow_warning' => 'Nota: i documenti saranno automaticamente contrassegnati come pubblicati se non è stato istituito un flusso di lavoro.', 'add_event' => 'Aggiungi un evento', 'add_group' => 'Aggiungi un nuovo gruppo', 'add_member' => 'Aggiungi un membro', 'add_multiple_documents' => 'Aggiungi documenti multipli', 'add_multiple_files' => 'Aggiungi documenti multipli (il nome del file verrà usato come nome del documento)', -'add_receipt' => 'invio ricevuta', -'add_review' => 'Invio revisione', -'add_revision' => 'Aggiungi approvazione', +'add_receipt' => 'Conferma ricezione', +'add_review' => 'Aggiungi revisione', +'add_revision' => 'Aggiungi riesame', 'add_role' => 'Aggiungi nuova responsabilità', 'add_subfolder' => 'Aggiungi sottocartella', -'add_task' => '', +'add_task' => 'Aggiungi attività', 'add_to_clipboard' => 'Aggiungi agli appunti', 'add_to_transmittal' => 'Aggiungi alla trasmissione', 'add_transmittal' => 'Aggiungi trasmissione', 'add_user' => 'Aggiungi un nuovo utente', 'add_user_to_group' => 'Aggiungi un utente al gruppo', -'add_workflow' => 'Crea un flusso di lavoro', -'add_workflow_action' => 'Nuova azione del flusso di lavoro', -'add_workflow_state' => 'Nuovo stato del flusso di lavoro', +'add_workflow' => 'Aggiungi nuovo flusso di lavoro', +'add_workflow_action' => 'Aggiungi nuova azione flusso di lavoro', +'add_workflow_state' => 'Aggiungi nuovo stato flusso di lavoro', 'admin' => 'Amministratore', -'admin_tools' => 'Strumenti di Amministrazione', +'admin_tools' => 'Strumenti di amministrazione', 'all' => 'Tutto', -'all_categories' => 'Tutte le Categorie', -'all_documents' => 'Tutti i Documenti', -'all_pages' => 'Tutte le Pagine', -'all_users' => 'Tutti gli Utenti', +'all_categories' => 'Tutte le categorie', +'all_documents' => 'Tutti i documenti', +'all_pages' => 'Tutte le pagine', +'all_users' => 'Tutti gli utenti', 'already_subscribed' => 'L\'oggetto è già stato sottoscritto', 'and' => 'e', 'apply' => 'Applica', -'approvals_accepted' => '', -'approvals_and_reviews_accepted' => '', -'approvals_and_reviews_not_touched' => '', -'approvals_and_reviews_rejected' => '', -'approvals_not_touched' => '', -'approvals_rejected' => '', -'approvals_without_group' => '', -'approvals_without_user' => '', +'approvals_accepted' => '[no_approvals] approvazioni già accettate', +'approvals_and_reviews_accepted' => '[no_approvals] approvazioni e [no_reviews] revisioni già accettate', +'approvals_and_reviews_not_touched' => '[no_approvals] approvazioni e [no_reviews] revisioni non gestite', +'approvals_and_reviews_rejected' => '[no_approvals] approvazioni e [no_reviews] revisioni già rifiutate', +'approvals_not_touched' => '[no_approvals] approvazioni non gestite', +'approvals_rejected' => '[no_approvals] approvazioni già rifiutate', +'approvals_without_group' => 'Approvazioni senza gruppo', +'approvals_without_user' => 'Approvazioni senza utente', 'approval_deletion_email' => 'Richiesta di approvazione cancellata', 'approval_deletion_email_body' => 'Richiesta di approvazione cancellata. Documento: [name] @@ -133,15 +133,15 @@ URL: [url]', 'approver_already_assigned' => 'Utente già approvatore', 'approver_already_removed' => 'Utente già rimosso dal processo di approvazione o ha già approvato', 'april' => 'Aprile', -'archive' => '', -'archive_creation' => 'Creazione archivi', +'archive' => 'Archivio', +'archive_creation' => 'Creazione archivio', 'archive_creation_warning' => 'Con questa operazione è possibile creare archivi contenenti i file di intere cartelle del DMS. Dopo la creazione l\'archivio viene salvato nella cartella dati del server. Attenzione: un archivio creato per uso esterno non è utilizzabile come backup del server.', 'ar_EG' => 'Arabo', -'assign_approvers' => 'Assegna Approvatori', -'assign_recipients' => '', -'assign_reviewers' => 'Assegna Revisori', +'assign_approvers' => 'Assegna approvatori', +'assign_recipients' => 'Assegna destinatari', +'assign_reviewers' => 'Assegna revisori', 'assign_user_property_to' => 'Assegna le proprietà dell\'utente a', -'assumed_released' => 'Rilascio acquisito', +'assumed_released' => 'Pubblicazione acquisita', 'attrdefgroup_management' => 'Gestire gruppi di attributi', 'attrdefgrp_show_detail' => 'Dettagli', 'attrdefgrp_show_list' => 'Lista', @@ -149,16 +149,16 @@ URL: [url]', 'attrdefgrp_show_searchlist' => 'risultati trovati', 'attrdef_exists' => 'Definizione di Attributo già esistente', 'attrdef_info' => 'Informazione', -'attrdef_in_use' => 'Definizione di Attributo ancora in uso', -'attrdef_management' => 'Gestione Attributi', -'attrdef_maxvalues' => 'Numero di valori Max.', -'attrdef_minvalues' => 'Numero di valori Min.', +'attrdef_in_use' => 'Definizione di attributo ancora in uso', +'attrdef_management' => 'Gestione attributi', +'attrdef_maxvalues' => 'Numero di valori max.', +'attrdef_minvalues' => 'Numero di valori min.', 'attrdef_min_greater_max' => 'Il numero minimo di valori è maggiore del massimo', 'attrdef_multiple' => 'Permetti valori multipli', 'attrdef_multiple_needs_valueset' => 'Attributo definizione con i molteplici valori esigenze un valore impostato.', -'attrdef_must_be_multiple' => 'Gli Attributi devono avere più di un valore, ma non sono permessi valori multipli', +'attrdef_must_be_multiple' => 'Gli attributi devono avere più di un valore, ma non sono permessi valori multipli', 'attrdef_name' => 'Nome', -'attrdef_noname' => 'Nella definizione dell\'Attributo manca il nome', +'attrdef_noname' => 'Nella definizione dell\'attributo manca il nome', 'attrdef_objtype' => 'Tipo di oggetto', 'attrdef_regex' => 'Espressione regolare', 'attrdef_type' => 'Tipo', @@ -171,35 +171,34 @@ URL: [url]', 'attrdef_type_url' => 'URL', 'attrdef_valueset' => 'Set di valori', 'attributes' => 'Attributi', -'attribute_changed_email_body' => 'Attributo modificato -Documento: [name] -Versione: [version] -Attributo: [attribute_name] -Old value: [attribute_old_value] -New value: [attribute_new_value] -Cartella: [folder_path] -Utente: [username] +'attribute_changed_email_body' => 'Attributo modificato +Documento: [name] +Versione: [version] +Attributo: [attribute_name] +Old value: [attribute_old_value] +New value: [attribute_new_value] +Cartella: [folder_path] +Utente: [username] URL: [url]', 'attribute_changed_email_subject' => '[sitename]: [name] - Attributo modificato', 'attribute_count' => 'Numero di utilizzi', -'attribute_value' => 'Valore dell\'Attributo', -'attribute_value_not_in_valueset' => '', -'attr_malformed_boolean' => '', -'attr_malformed_date' => '', -'attr_malformed_email' => 'Il valore di \'[value]\' dell, - => attributo \'[attrname]\' non é un URL valido.', -'attr_malformed_float' => '', -'attr_malformed_int' => '', -'attr_malformed_url' => 'Il valore dell\'attributo \'[valore]\' di attributo \'[attrname]\' non è un URL valido.', +'attribute_value' => 'Valore dell\'attributo', +'attribute_value_not_in_valueset' => 'Valore non presente nel gruppo di valori', +'attr_malformed_boolean' => 'Il valore \'[valore]\' dell\'attributo \'[attrname]\' non è un valore booleano valido.', +'attr_malformed_date' => 'Il valore \'[valore]\' dell\'attributo \'[attrname]\' non è una data valida.', +'attr_malformed_email' => 'Il valore \'[value]\' dell\'attributo \'[attrname]\' non é un URL valido.', +'attr_malformed_float' => 'Il valore \'[valore]\' dell\'attributo \'[attrname]\' non è un numero in virgola mobile valido.', +'attr_malformed_int' => 'Il valore \'[valore]\' dell\'attributo \'[attrname]\' non è un intero valido.', +'attr_malformed_url' => 'Il valore \'[valore]\' dell\'attributo \'[attrname]\' non è un URL valido.', 'attr_max_values' => 'Il numero massimo dei valori richiesti per l\'Attributo [attrname] è superato.', 'attr_min_values' => 'Il numero minimo di valori richiesti per l\'Attributo [attrname] non è raggiunto.', -'attr_not_in_valueset' => '', -'attr_no_regex_match' => 'Il valore dell\'Attributo non è conforme ad un\'espressione regolare.', -'attr_validation_error' => '', +'attr_not_in_valueset' => 'Il valore \'[value]\' per l\'attributo \'[attrname]\' non è contenuto nel gruppo di valori.', +'attr_no_regex_match' => 'Il valore \'[value]\' dell\'attributo \'[attrname]\' non è conforme ad un\'espressione regolare.', +'attr_validation_error' => 'Il valore \'[value]\' dell\'attributo \'[attrname]\' non è valido', 'at_least_n_users_of_group' => 'Minimo [number_of_users] utenti del gruppo [group]', 'august' => 'Agosto', 'authentication' => 'Autenticazione', -'authentication_failed' => '', +'authentication_failed' => 'Autenticazione fallita', 'author' => 'Autore', 'automatic_status_update' => 'Modifica automatica dello stato', 'back' => 'Ritorna', @@ -211,7 +210,7 @@ URL: [url]', 'bg_BG' => 'Bulgaro', 'browse' => 'Scegli file', 'calendar' => 'Calendario', -'calendar_week' => 'Calendario Settimanale', +'calendar_week' => 'Calendario settimanale', 'cancel' => 'Annulla', 'cannot_assign_invalid_state' => 'Non è possibile modificare le assegnazioni di un documento obsoleto o rifiutato', 'cannot_change_final_states' => 'Attenzione: non si può modificare lo stato dei documenti rifiutati, scaduti o in attesa di revisione o approvazione', @@ -230,12 +229,12 @@ URL: [url]', 'category_in_use' => 'Questa categoria è attualmente in uso in alcuni documenti.', 'category_noname' => 'Non è stato attribuito un nome alla categoria.', 'ca_ES' => 'Catalano', -'change_assignments' => 'Modifica le Assegnazioni', +'change_assignments' => 'Modifica le assegnazioni', 'change_password' => 'Cambia la password', 'change_password_message' => 'La password è stata cambiata', 'change_recipients' => 'Cambia lista cartelle', 'change_revisors' => 'Cambia reimmissione', -'change_status' => 'Modifica lo Stato', +'change_status' => 'Modifica lo stato', 'charts' => 'Grafici', 'chart_docsaccumulated_title' => 'Numero di documenti', 'chart_docspercategory_title' => 'Documenti per categoria', @@ -249,7 +248,7 @@ URL: [url]', 'checkedout_file_has_disappeared' => 'File documento approvato non trovato. Impossibile caricare.', 'checkedout_file_is_unchanged' => 'La versione approvata è uguale alla versione corrente. Impossibile caricare.', 'checkin_document' => 'Da approvare', -'checkoutpath_does_not_exist' => '', +'checkoutpath_does_not_exist' => 'Il percorso di approvazione non esiste', 'checkout_document' => 'Approvato', 'checkout_is_disabled' => 'Approvazione dei documenti disabilitata', 'choose_attrdef' => 'Seleziona l\'Attributo', @@ -275,13 +274,13 @@ URL: [url]', 'comment' => 'Commento', 'comment_changed_email' => '', 'comment_for_current_version' => 'Commento per la versione', -'configure_extension' => '', +'configure_extension' => 'Configura estensione', 'confirm_clear_cache' => 'Vuoi davvero cancellare la cache? Questo eliminerà tutte le immagini di anteprima precalcolate.', 'confirm_create_fulltext_index' => 'Sì, desidero ricreare l\'indice fulltext!', 'confirm_move_document' => 'Conferma lo spostamento del documento.', 'confirm_move_folder' => 'Si prega di confermare lo spostamento della cartella.', 'confirm_pwd' => 'Conferma la password', -'confirm_rm_attr_value' => '', +'confirm_rm_attr_value' => 'Vuoi davvero rimuovere il valore dell\'attributo?', 'confirm_rm_backup' => 'Vuoi davvero rimuovere il file "[arkname]"? Attenzione: questa operazione non può essere annullata.', 'confirm_rm_document' => 'Vuoi veramente eliminare il documento "[documentname]"? Attenzione: questa operazione non può essere annullata.', 'confirm_rm_dump' => 'Vuoi davvero rimuovere il file "[dumpname]"? Attenzione: questa operazione non può essere annullata.', @@ -294,17 +293,17 @@ URL: [url]', 'confirm_rm_transmittal' => 'Si prega di confermare l\'eliminazione della trasmissione.', 'confirm_rm_transmittalitem' => 'Conferma rimozione', 'confirm_rm_user' => 'Vuoi davvero rimuovere l\'utente "[username]"? Attenzione: questa operazione non può essere annullata.', -'confirm_rm_user_from_processes' => 'Processo', +'confirm_rm_user_from_processes' => 'Vuoi veramente eliminare rimuovere l\'utente "[username]" da tutti i processi?
      Attenzione: questa azione può portare alla pubblicazione di documenti se l\'utente era l\'unico o l\'ultimo responsabile dell\'approvazione.', 'confirm_rm_version' => 'Vuoi veramente eliminare la versione [version] del documento "[documentname]"? Attenzione: questa operazione non può essere annullata.', -'confirm_transfer_link_document' => '', -'confirm_transfer_objects' => '', +'confirm_transfer_link_document' => 'Seleziona se vuoi collegare il documento trascinato o trasferire il suo contenuto al documento di destinazione come nuova versione. Solo i documenti con una versione possono essere trasferiti. Il documento trascinato verrà rimosso in seguito.', +'confirm_transfer_objects' => 'Vuoi veramente trasferire i documenti, le cartelle, ecc. dell\'utente "[username]"?
      Attenzione: questa operazione non può essere annullata', 'confirm_update_transmittalitem' => 'Conferma aggiornamento', 'content' => 'Contenuto', 'continue' => 'Continua', 'converter_new_cmd' => 'Comando', 'converter_new_mimetype' => 'Nuovo mimetype', 'copied_to_checkout_as' => 'File copiato come \'[filename]\'', -'create_download_link' => '', +'create_download_link' => 'Crea collegamento di scaricamento', 'create_fulltext_index' => 'Crea indice fulltext', 'create_fulltext_index_warning' => 'Stai creando un indice fulltext. Questo può occupare un tempo considerevole e ridurre le prestazioni del sistema. Sei sicuro di voler ricreare l\'indice? Prego conferma l\'operazione.', 'creation_date' => 'Data creazione', @@ -328,8 +327,8 @@ URL: [url]', 'de_DE' => 'Tedesco', 'disclaimer' => 'Questa è un\'area riservata. L\'accesso è consentito solo agli utenti autorizzati. Qualunque violazione sarà perseguita a norma delle leggi italiane ed internazionali.', 'discspace' => 'Spazio su disco', -'docs_in_reception_no_access' => '', -'docs_in_revision_no_access' => '', +'docs_in_reception_no_access' => 'Documenti con ricezione senza accesso dai destinatari', +'docs_in_revision_no_access' => 'Documenti in riesame senza accesso dai revisori', 'document' => 'Documento', 'documentcontent' => 'Contenuto documento', 'documents' => 'Documenti', @@ -340,25 +339,25 @@ URL: [url]', 'documents_locked_by_you' => 'Documenti bloccati da te', 'documents_only' => 'Solo documenti', 'documents_to_approve' => 'Documenti in attesa della tua approvazione', -'documents_to_correct' => '', +'documents_to_correct' => 'Documenti in attesa della tua correzione', 'documents_to_process' => 'I documenti che necessitano di trattamento', 'documents_to_receipt' => 'Documenti in attesa di conferma ricezione', 'documents_to_review' => 'Documenti in attesa della tua revisione', -'documents_to_revise' => 'Documenti da revisionare.', -'documents_to_trigger_workflow' => '', -'documents_user_draft' => '', -'documents_user_expiration' => '', -'documents_user_needs_correction' => '', -'documents_user_no_reception' => '', -'documents_user_obsolete' => '', -'documents_user_reception' => '', +'documents_to_revise' => 'Documenti da riesaminare.', +'documents_to_trigger_workflow' => 'Documenti nel flusso di lavoro', +'documents_user_draft' => 'Bozze', +'documents_user_expiration' => 'Scadenza documenti', +'documents_user_needs_correction' => 'Documenti che devono essere corretti', +'documents_user_no_reception' => 'Documenti senza ricezioni', +'documents_user_obsolete' => 'Documenti obsoleti', +'documents_user_reception' => 'Documenti in attesa di ricezione', 'documents_user_rejected' => 'Documenti rifiutati', 'documents_user_requiring_attention' => 'Tuoi documenti in attesa di revisione o approvazione', -'documents_with_notification' => '', +'documents_with_notification' => 'Documenti con notifica', 'document_already_checkedout' => 'Questo documento è già approvato', 'document_already_locked' => 'Questo documento è già bloccato', -'document_attribute_changed_email_body' => '', -'document_attribute_changed_email_subject' => '', +'document_attribute_changed_email_body' => 'Attributo modificato', +'document_attribute_changed_email_subject' => '[sitename]: [name] - Attributo modificato', 'document_comment_changed_email' => 'Commento modificato', 'document_comment_changed_email_body' => 'Commento modificato Documento: [name] @@ -409,8 +408,13 @@ Utente: [username] URL: [url]', 'document_status_changed_email_subject' => '[sitename]: [name] - Modificato lo stato di un documento', 'document_title' => 'Documento \'[documentname]\'', -'document_transfered_email_body' => '', -'document_transfered_email_subject' => '', +'document_transfered_email_body' => 'Documento trasferito ad altro utente +Documento: [name] +Nuovo proprietario: [newuser] +Cartella: [folder_path] +Utente: [username] +URL: [url]', +'document_transfered_email_subject' => '[sitename]: [name] - Documento trasferito', 'document_updated_email' => 'Documento aggiornato', 'document_updated_email_body' => 'Documento aggiornato Documento: [name] @@ -423,10 +427,17 @@ URL: [url]', 'does_not_expire' => 'Nessuna scadenza', 'does_not_inherit_access_msg' => 'Imposta permessi ereditari', 'download' => 'Scarica', -'download_extension' => '', -'download_links' => '', -'download_link_email_body' => '', -'download_link_email_subject' => '', +'download_extension' => 'Scarica estensione come file zip', +'download_links' => 'Collegamenti di scaricamento', +'download_link_email_body' => 'Fare clic sul collegamento sottostante per scaricare la versione [version] del documento +\'[docname]\'. + +[url] + +Il collegamento The link è ancora valido fino a [valid]. + +[comment]', +'download_link_email_subject' => 'Collegamento di scaricamento', 'do_object_repair' => 'Ripara tutte le cartelle e i documenti.', 'do_object_setchecksum' => 'Imposta il checksum', 'do_object_setfilesize' => 'Imposta la dimensione del file', @@ -438,14 +449,14 @@ URL: [url]', 'dropfolderdir_missing' => 'La vostra cartella di personale non esiste sul server! Si prega di chiedere all\'amministratore di creare per te.', 'dropfolder_file' => 'Scegli file dal server', 'dropfolder_folder' => 'Cartella per il cartella di ricezione', -'dropupload' => 'Caricamento Rapido', +'dropupload' => 'Caricamento rapido', 'drop_files_here' => 'Trascina qui il file', -'dump_creation' => 'Creazione del DB dump', +'dump_creation' => 'Creazione del dump del DB', 'dump_creation_warning' => 'Con questa operazione è possibile creare un file di dump del contenuto del database. Dopo la creazione il file viene salvato nella cartella dati del server.', 'dump_list' => 'List dei dump presenti', 'dump_remove' => 'Cancella il file di dump', 'duplicates' => 'Duplicati', -'duplicate_content' => 'Contenuto Duplicato', +'duplicate_content' => 'Contenuto duplicato', 'edit' => 'Modifica', 'edit_attributes' => 'Modifica gli attributi', 'edit_comment' => 'Modifica il commento', @@ -463,7 +474,7 @@ URL: [url]', 'edit_folder_props' => 'Modifica proprietà cartella', 'edit_group' => 'Modifica il gruppo', 'edit_online' => 'Modifica online', -'edit_task' => '', +'edit_task' => 'Modifica attività', 'edit_transmittal_props' => 'Modifica proprietà trasmissione', 'edit_user' => 'Modifica l\'utente', 'edit_user_details' => 'Modifica i dettagli utente', @@ -476,7 +487,7 @@ URL: [url]', 'email_not_given' => 'Inserisci un indirizzo email valido.', 'empty_attribute_group_list' => 'Nessun gruppo di attributi', 'empty_folder_list' => 'Cartella vuota', -'empty_list' => '', +'empty_list' => 'Nessuna voce', 'empty_notify_list' => 'Nessun record', 'en_GB' => 'Inglese (GB)', 'equal_transition_states' => 'Lo stato iniziale e quello finale sono identici', @@ -484,40 +495,40 @@ URL: [url]', 'error_add_aro' => 'Errore durante l\'accesso aggiungendo richiesta oggetto', 'error_add_permission' => 'Errore durante l\'aggiunta di permesso', 'error_cleared_cache' => 'Errore durante svuotare la cache', -'error_edit_task' => '', -'error_extension_getlist' => '', +'error_edit_task' => 'Modifica attività', +'error_extension_getlist' => 'Errore nel recuperare l\'elenco delle estensioni dal repository', 'error_importfs' => 'Errore durante l\'importazione dal file system', 'error_no_document_selected' => 'Nessun documento selezionato', 'error_no_folder_selected' => 'Nessuna cartella selezionata', 'error_occured' => 'Ooops... Si è verificato un errore', -'error_remove_document' => '', -'error_remove_folder' => '', +'error_remove_document' => 'Errore durante la rimozione del documento', +'error_remove_folder' => 'Errore durante la rimozione della cartella', 'error_remove_permission' => 'Errore durante la rimozione delle autorizzazioni', -'error_rm_workflow' => '', -'error_rm_workflow_action' => '', -'error_rm_workflow_state' => '', +'error_rm_workflow' => 'Errore durante la rimozione del flusso di lavoro', +'error_rm_workflow_action' => 'Errore durante la rimozione dell\'azione del flusso di lavoro', +'error_rm_workflow_state' => 'Errore durante la rimozione dello stato del flusso di lavoro', 'error_toogle_permission' => 'Errore durante la modifica permessi', -'error_transfer_document' => '', -'error_trigger_workflow' => '', -'error_update_document' => '', -'error_uploading_reviewer_only' => '', +'error_transfer_document' => 'Errore durante il trasferimento del documento', +'error_trigger_workflow' => 'Errore durante l\'esecuzione di una transizione del flusso di lavoro', +'error_update_document' => 'Errore durante l\'aggiornamento del documento', +'error_uploading_reviewer_only' => 'Errore durante la creazione del documento. Il documento ha un revisore, ma non un approvatore.', 'es_ES' => 'Spagnolo', 'event_details' => 'Dettagli evento', -'exclude_items' => 'Escludi Elementi', +'exclude_items' => 'Escludi elementi', 'expired' => 'Scaduto', -'expired_at_date' => '', +'expired_at_date' => 'Scadenza il [datetime]', 'expired_documents' => 'Documenti scaduti', 'expires' => 'Scadenza', -'expire_by_date' => 'Scadenza per Data', -'expire_in_1d' => '', -'expire_in_1h' => '', -'expire_in_1m' => '1 Mese', -'expire_in_1w' => '7 Giorni', -'expire_in_1y' => '1 Anno', -'expire_in_2h' => '', -'expire_in_2y' => '2 Anni', -'expire_today' => '', -'expire_tomorrow' => '', +'expire_by_date' => 'Scadenza per data', +'expire_in_1d' => 'Scade in 1 giorno', +'expire_in_1h' => 'Scade in 1 ora', +'expire_in_1m' => 'Scade in 1 mese', +'expire_in_1w' => 'Scade in 7 giorni', +'expire_in_1y' => 'Scade in 1 anno', +'expire_in_2h' => 'Scade in 2 ore', +'expire_in_2y' => 'Scade in 2 anni', +'expire_today' => 'Scade oggi', +'expire_tomorrow' => 'Scade domani', 'expiry_changed_email' => 'Scadenza cambiata', 'expiry_changed_email_body' => 'Data di scadenza cambiata Documento: [name] @@ -526,8 +537,8 @@ Utente: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - Scadenza cambiata', 'export' => 'Esporta', -'extension_archive' => '', -'extension_changelog' => '', +'extension_archive' => 'Archivio estensioni', +'extension_changelog' => 'Registro delle modifiche delle estensioni', 'extension_loading' => 'Caricamento estensioni...', 'extension_manager' => 'Gestisci le estensioni dei files', 'extension_mgr_installed' => 'Installato', @@ -546,9 +557,9 @@ URL: [url]', 'folder' => 'Cartella', 'folders' => 'Cartelle', 'folders_and_documents_statistic' => 'Visualizzazione generale', -'folders_with_notification' => '', -'folder_attribute_changed_email_body' => '', -'folder_attribute_changed_email_subject' => '', +'folders_with_notification' => 'Cartelle con notifica', +'folder_attribute_changed_email_body' => 'Attributo cartella modificato', +'folder_attribute_changed_email_subject' => 'Attributo cartella modificato', 'folder_comment_changed_email' => 'Commento modificato per la Cartella', 'folder_comment_changed_email_body' => 'Commento modificato per la Cartella Cartella: [name] @@ -591,7 +602,7 @@ URL: [url]', 'fr_FR' => 'Francese', 'fullsearch' => 'Ricerca Fulltext', 'fullsearch_hint' => 'Usa l\'indice fulltext', -'fulltextsearch_disabled' => '', +'fulltextsearch_disabled' => 'Ricerca Fulltext disabilitata', 'fulltext_converters' => 'Indice di conversione documenti', 'fulltext_info' => 'Info indice Fulltext', 'global_attributedefinitiongroups' => 'Attributo gruppi', @@ -612,7 +623,7 @@ URL: [url]', 'group_review_summary' => 'Dettaglio revisioni di gruppo', 'guest_login' => 'Login come Ospite', 'guest_login_disabled' => 'Il login come Ospite è disabilitato.', -'hash' => '', +'hash' => 'Hash', 'help' => 'Aiuto', 'home_folder' => 'Cartella Utente', 'hook_name' => 'Nome del gangio', @@ -624,28 +635,28 @@ URL: [url]', 'id' => 'ID', 'identical_version' => 'La nuova versione è identica a quella attuale.', 'import' => 'Importa', -'importfs' => 'Importa da File System / disco', -'import_extension' => '', +'importfs' => 'Importa da file system/disco', +'import_extension' => 'Importa estensione', 'import_fs' => 'Importa dalla cartella di sistema', -'import_fs_warning' => 'Questo funziona solo per le cartelle nella cartella per lasciare. L\'operazione importa in modo ricorsivo tutte le cartelle e file. I file saranno rilasciati immediatamente.', +'import_fs_warning' => 'Questo funziona solo per le cartelle nella cartella per lasciare. L\'operazione importa in modo ricorsivo tutte le cartelle e file. I file saranno pubblicati immediatamente.', 'include_content' => 'Includi contenuto', 'include_documents' => 'Includi documenti', 'include_subdirectories' => 'Includi sottocartelle', 'indexing_tasks_in_queue' => 'Operazione di indicizzazione in corso', 'index_converters' => '', -'index_done' => '', -'index_error' => '', +'index_done' => 'Eseguito', +'index_error' => 'Errore di indicizzazione', 'index_folder' => 'Indicizza cartella', -'index_no_content' => '', -'index_pending' => '', +'index_no_content' => 'Non indicizzare contenuti', +'index_pending' => 'Indicizzazione pendente', 'index_waiting' => 'Attendi', 'individuals' => 'Singoli', 'individuals_in_groups' => 'I membri de la gruppo', -'info_recipients_tab_not_released' => '', +'info_recipients_tab_not_released' => 'Non è possibile confermare la ricezione di questa versione del documento, poiché la versione non è stata rilasciata.', 'inherited' => 'ereditato', 'inherits_access_copy_msg' => 'Copia la lista degli accessi ereditati', 'inherits_access_empty_msg' => 'Reimposta una lista di permessi vuota', -'inherits_access_msg' => 'E\' impostato il permesso ereditario.', +'inherits_access_msg' => 'È impostato il permesso ereditario.', 'internal_error' => 'Errore interno', 'internal_error_exit' => 'Errore interno. Impossibile completare la richiesta.', 'invalid_access_mode' => 'Permessi non validi', @@ -654,7 +665,7 @@ URL: [url]', 'invalid_create_date_end' => 'Fine data non valida per la creazione di un intervallo temporale', 'invalid_create_date_start' => 'Inizio data non valida per la creazione di un intervallo temporale', 'invalid_doc_id' => 'ID del documento non valido', -'invalid_dropfolder_folder' => 'cartella non valido nella cartella goccia', +'invalid_dropfolder_folder' => 'cartella non valido nella cartella di pubblicazione', 'invalid_expiration_date_end' => 'Data di fine non è valida per l\'intervallo di data di scadenza.', 'invalid_expiration_date_start' => 'Data di inizio non valida per l\'intervallo di date di scadenza.', 'invalid_file_id' => 'ID del file non valido', @@ -670,25 +681,25 @@ URL: [url]', 'invalid_user_id' => 'ID utente non valido', 'invalid_version' => 'Versione del documento non valida', 'in_folder' => 'nella cartella', -'in_revision' => 'In fase di revisione', -'in_workflow' => 'In fase di lavorazione', -'is_disabled' => 'Account Disabilitato', +'in_revision' => 'In riesame', +'in_workflow' => 'In lavorazione', +'is_disabled' => 'Account disabilitato', 'is_hidden' => 'Nascondi dalla lista utenti', 'it_IT' => 'Italiano', 'january' => 'Gennaio', -'js_form_error' => '', -'js_form_errors' => '', -'js_invalid_email' => '', +'js_form_error' => 'Il modulo contiene ancora # errore.', +'js_form_errors' => 'Il modulo contiene ancora # errori.', +'js_invalid_email' => 'Indirizzo email non valido', 'js_no_approval_group' => 'Si prega di selezionare un gruppo di approvazione', 'js_no_approval_status' => 'Si prega di selezionare lo stato di approvazione', 'js_no_comment' => 'Non ci sono commenti', -'js_no_currentpwd' => '', -'js_no_email' => 'Scrivi il tuo indirizzo di Email', +'js_no_currentpwd' => 'Per favore inserire la propria password attuale', +'js_no_email' => 'Scrivi il tuo indirizzo di email', 'js_no_file' => 'Per favore seleziona un file', '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' => 'E\' necessario selezionare un nuovo [override] stato', +'js_no_override_status' => 'È necessario selezionare un nuovo [override] stato', 'js_no_pwd' => 'La password è necessaria', 'js_no_query' => 'Scrivi una query', 'js_no_review_group' => 'Per favore seleziona un gruppo di revisori', @@ -696,7 +707,7 @@ URL: [url]', 'js_pwd_not_conf' => 'La password inserita e quella di conferma non corrispondono', 'js_select_user' => 'Per favore seleziona un utente', 'js_select_user_or_group' => 'Selezionare almeno un utente o un gruppo', -'js_unequal_passwords' => '', +'js_unequal_passwords' => 'Le password non coincidono', 'july' => 'Luglio', 'june' => 'Giugno', 'keep' => 'Non cambiare', @@ -712,16 +723,16 @@ URL: [url]', 'librarydoc' => 'Documento da cartella', 'linked_documents' => 'Documenti collegati', 'linked_files' => 'Allegati', -'linked_to_current_version' => '', +'linked_to_current_version' => 'Collegato al documento attuale', 'linked_to_document' => 'Collegato al documento', -'linked_to_this_version' => '', +'linked_to_this_version' => 'Collegato a questa versione', 'link_alt_updatedocument' => 'Se vuoi caricare file più grandi del limite massimo attuale, usa la pagina alternativa di upload.', -'link_document' => '', -'link_to_version' => '', +'link_document' => 'Collegamento al documento', +'link_to_version' => 'Collega alla versione', 'list_access_rights' => 'Elenca tutti i diritti di accesso...', -'list_contains_no_access_docs' => '', -'list_hooks' => 'Lista ganci', -'list_tasks' => '', +'list_contains_no_access_docs' => 'L\'elenco contiene più documenti ai quali non si ha accesso e non vengono visualizzati.', +'list_hooks' => 'Elenco hooks', +'list_tasks' => 'Elenco attività', 'local_file' => 'File locale', 'locked_by' => 'Bloccato da', 'lock_document' => 'Blocca', @@ -729,45 +740,45 @@ URL: [url]', 'lock_status' => 'Stato bloccaggio', 'login' => 'Accesso', 'login_disabled_text' => 'Il tuo account è stato disabilitato: troppi login falliti.', -'login_disabled_title' => 'L\'Account è disabilitato', +'login_disabled_title' => 'L\'account è disabilitato', 'login_error_text' => 'Errore nel login. ID utente o password errati.', 'login_error_title' => 'Errore di login', 'login_not_given' => 'Non è stato inserito il nome utente', 'login_ok' => 'Login eseguito', -'login_restrictions_apply' => '', +'login_restrictions_apply' => 'Login fallito a causa di limitazioni', 'logout' => 'Logout', 'log_management' => 'Amministrazione file di log', 'lo_LA' => 'Laotiano', -'malformed_expiration_date' => '', +'malformed_expiration_date' => 'Data di scadenza con formato errato', 'manager' => 'Manager', -'manager_of_group' => 'Tu sei l\'Amministratore di questo gruppo', -'mandatory_approvergroups' => 'Gruppi di Approvatori necessari', -'mandatory_approvergroup_no_access' => 'Il Gruppo di Approvatori necessari \'[group]\' non ha sufficienti permessi d\'accesso.', +'manager_of_group' => 'Tu sei l\'amministratore di questo gruppo', +'mandatory_approvergroups' => 'Gruppi di approvatori necessari', +'mandatory_approvergroup_no_access' => 'Il gruppo di approvatori necessari \'[group]\' non ha sufficienti permessi d\'accesso.', 'mandatory_approvers' => 'Approvatori necessari', -'mandatory_approver_no_access' => 'L\'Approvatore necessario \'[user]\' non ha sufficienti permessi d\'accesso.', -'mandatory_reviewergroups' => 'Gruppi di Revisori necessari', -'mandatory_reviewergroup_no_access' => 'Il Gruppo di Revisori necessari \'[group]\' non ha sufficienti permessi d\'accesso.', +'mandatory_approver_no_access' => 'L\'approvatore necessario \'[user]\' non ha sufficienti permessi d\'accesso.', +'mandatory_reviewergroups' => 'Gruppi di revisori necessari', +'mandatory_reviewergroup_no_access' => 'Il gruppo di revisori necessari \'[group]\' non ha sufficienti permessi d\'accesso.', 'mandatory_reviewers' => 'Revisori necessari', -'mandatory_reviewer_no_access' => 'Il Revisore necessario \'[user]\' non ha sufficienti permessi d\'accesso.', +'mandatory_reviewer_no_access' => 'Il revisore necessario \'[user]\' non ha sufficienti permessi d\'accesso.', 'march' => 'Marzo', 'max_upload_size' => 'Dimensione massima caricabile per ogni file', 'may' => 'Maggio', -'menu_dropfolder' => '', -'menu_upload_from_dropfolder' => '', +'menu_dropfolder' => 'Cartella di pubblicazione', +'menu_upload_from_dropfolder' => 'Importa questo file', 'mimetype' => 'Tipo (MIME)', 'minutes' => 'minuti', 'misc' => 'Varie', 'missing_checksum' => 'Checksum mancante', 'missing_file' => 'File mancante', 'missing_filesize' => 'Dimensione mancante', -'missing_reception' => '', +'missing_reception' => 'Ricezione mancante', 'missing_request_object' => 'Manca oggetto di richiesta', 'missing_transition_user_group' => 'Utente/Gruppo per la transizione mancanti', 'monday' => 'Lunedì', 'monday_abbr' => 'Lun', 'monthly' => 'Mensile', 'month_view' => 'Vista mensile', -'more_objects_loading' => '', +'more_objects_loading' => 'Più oggetti in caricamento...', 'move' => 'Sposta', 'move_clipboard' => 'Sposta appunti', 'move_document' => 'Sposta documento', @@ -776,7 +787,7 @@ URL: [url]', 'my_documents' => 'Documenti personali', 'my_transmittals' => 'Mie trasmissioni', 'name' => 'Nome', -'needs_correction' => '', +'needs_correction' => 'Necessita correzioni', 'needs_workflow_action' => 'Il documento richiede attenzione. Prego controllare il flusso di lavoro.', 'network_drive' => 'Network drive', 'never' => 'Mai', @@ -835,17 +846,18 @@ URL: [url]', 'no_action' => 'Non è richiesto alcun intervento', 'no_approval_needed' => 'Non è richiesta approvazione.', 'no_attached_files' => 'Nessun file allegato', +'no_backup_dir' => '', 'no_current_version' => 'La corrente versione di SeedDMS non è aggiornata. La versione più recente disponibile è la [latestversion].', 'no_default_keywords' => 'Nessuna parola-chiave disponibile', 'no_docs_checked_out' => 'Nessun documento approvato', 'no_docs_locked' => 'Nessun documento bloccato.', -'no_docs_needs_correction' => '', +'no_docs_needs_correction' => 'Nessun documento che necessita di correzioni', 'no_docs_rejected' => 'Nessun documento rifiutato', 'no_docs_to_approve' => 'Non ci sono documenti che richiedano approvazione.', 'no_docs_to_look_at' => 'Non ci sono documenti che richiedano attenzione.', 'no_docs_to_receipt' => 'Nessuna cartella richiesta.', 'no_docs_to_review' => 'Non ci sono documenti che richiedano revisioni.', -'no_docs_to_revise' => 'Non ci sono documenti che richiedano approvazione.', +'no_docs_to_revise' => 'Non ci sono documenti che richiedano riesame.', 'no_email_or_login' => 'Login ed email devono essere digitate', 'no_fulltextindex' => 'Nessun indice fulltext disponibile', 'no_groups' => 'Nessun gruppo', @@ -853,17 +865,17 @@ URL: [url]', 'no_linked_files' => 'Nessun file collegato', 'no_previous_versions' => 'Nessun\'altra versione trovata', 'no_receipt_needed' => 'Rete disco', -'no_review_needed' => 'Nessuna revisione in sospeso.', -'no_revision_needed' => 'Nessuna revisione in corso.', -'no_revision_planed' => 'Nessuna revisione pianificata.', +'no_review_needed' => 'Nessuna revisione in corso.', +'no_revision_needed' => 'Nessun riesame in corso.', +'no_revision_planed' => 'Nessun riesame pianificato.', 'no_update_cause_locked' => 'Non è quindi possible aggiornare il documento. Prego contattare l\'utente che l\'ha bloccato.', 'no_user_image' => 'Nessuna immagine trovata', 'no_version_check' => 'Il controllo per una nuova versione di SeedDMS è fallito! Questo può essere causato da allow_url_fopen settato a 0 nella tua configurazione php.', 'no_version_modification' => 'Nessuna modifica versione', 'no_workflow_available' => 'Nessun flusso di lavoro disponibile', 'objectcheck' => 'Controllo cartelle o documenti', -'object_check_critical' => '', -'object_check_warning' => '', +'object_check_critical' => 'Errori critici', +'object_check_warning' => 'Avvertenze', 'obsolete' => 'Obsoleto', 'october' => 'Ottobre', 'old' => 'Vecchio', @@ -896,7 +908,7 @@ Per farlo cliccare sul seguente link: [url_prefix]out/out.ChangePassword.php?hash=[hash] -Dovessero esserci ancora problemi al login, prego contatta l\'Amministratore di Sistema.', +Dovessero esserci ancora problemi al login, prego contatta l\'amministratore di sistema.', 'password_forgotten_email_subject' => '[sitename]: Password dimenticata', 'password_forgotten_send_hash' => 'Le istruzioni su come procedere sono state inviate all\'indirizzo e-mail dell\'utente', 'password_forgotten_text' => 'Compilare i campi seguenti e seguire le istruzioni nell\'e-mail che sarà inviata a breve.', @@ -909,10 +921,10 @@ Dovessero esserci ancora problemi al login, prego contatta l\'Amministratore di 'password_wrong' => 'Password errata', 'pdf_converters' => 'Convertitore a PDF', 'pending_approvals' => 'Approvazioni in sospeso', -'pending_receipt' => '', -'pending_reviews' => 'In attesa di recensioni', -'pending_revision' => '', -'pending_workflows' => 'I flussi di lavoro in sospeso', +'pending_receipt' => 'In attesa di ricezione', +'pending_reviews' => 'In attesa di revisione', +'pending_revision' => 'In attesa di riesame', +'pending_workflows' => 'Flussi di lavoro in sospeso', 'personal_default_keywords' => 'Parole-chiave personali', 'pl_PL' => 'Polacco', 'possible_substitutes' => 'Sostituti', @@ -920,8 +932,8 @@ Dovessero esserci ancora problemi al login, prego contatta l\'Amministratore di 'preview' => 'Anteprima', 'preview_converters' => 'Anteprima convesione documento', 'preview_images' => 'Immagini di anteprima', -'preview_markdown' => 'Riduione ribasso', -'preview_pdf' => '', +'preview_markdown' => 'Riduzione ribasso', +'preview_pdf' => 'Anteprima come PDF', 'preview_plain' => 'Testo', 'previous_state' => 'Stato precedente', 'previous_versions' => 'Versioni precedenti', @@ -932,13 +944,19 @@ Dovessero esserci ancora problemi al login, prego contatta l\'Amministratore di 'quota_exceeded' => 'La quota-disco è stata superata di [bytes].', 'quota_is_disabled' => 'Il supporto per le quote è attualmente disattivato nelle impostazioni. L\'impostazione di una quota-utente non avrà alcun effetto finché tale funzionalità non verrà nuovamente attivata.', 'quota_warning' => 'Il vostro utilizzo massimo di spazio è stato superato di [bytes]. Si prega di rimuovere documenti o versioni obsolete.', -'receipts_accepted' => '', -'receipts_not_touched' => '', -'receipts_rejected' => '', -'receipts_without_group' => '', -'receipts_without_user' => '', -'receipt_deletion_email_body' => '', -'receipt_deletion_email_subject' => '', +'receipts_accepted' => '[no_receipts] ricevute già accettate', +'receipts_not_touched' => '[no_receipts] ricevute non gestite', +'receipts_rejected' => '[no_receipts] ricevute già rifiutate', +'receipts_without_group' => 'Ricevute senza gruppo', +'receipts_without_user' => 'Ricevute senza gruppo', +'receipt_deletion_email_body' => 'Utente rimosso dall\'elenco dei destinatari +Documento: [name] +Versione: [version] +Cartella: [folder_path] +Destinatario: [recipient] +Utente: [username] +URL: [url]', +'receipt_deletion_email_subject' => '[sitename]: [name] - Destinatario rimosso', 'receipt_log' => 'Ricezione Log', 'receipt_request_email_body' => 'Richiesta di ricezione Document: [name] @@ -949,18 +967,18 @@ URL: [url]', 'receipt_request_email_subject' => '[sitename]: [name] - Richiesta di ricezione', 'receipt_status' => 'Status', 'receipt_summary' => 'Sommario ricezione', -'receipt_update_failed' => '', -'recent_uploads' => '', -'reception' => '', -'reception_acknowleged' => '', -'reception_noaction' => '', -'reception_rejected' => '', +'receipt_update_failed' => 'Conferma della ricezione non riuscita', +'recent_uploads' => 'Caricamenti recenti', +'reception' => 'Ricezione', +'reception_acknowleged' => 'Ricezione confermata', +'reception_noaction' => 'Nessuna azione', +'reception_rejected' => 'Ricezione respinta', 'recipients' => 'Cartelle', -'recipient_already_removed' => '', -'redraw' => '', +'recipient_already_removed' => 'Il destinatario è già stato rimosso o riconosciuto come destinatario.', +'redraw' => 'Ridisegna', 'refresh' => 'Ricarica', 'rejected' => 'Rifiutato', -'released' => 'Rilasciato', +'released' => 'Pubblicato', 'removed_approver' => 'Rimosso dalla lista degli approvatori.', 'removed_file_email' => 'Allegato rimosso', 'removed_file_email_body' => 'Rimosso allegato @@ -979,7 +997,7 @@ Cartella: [folder_path] Utente: [username] URL: [url]', 'removed_workflow_email_subject' => '[sitename]: [name] - Flusso di lavoro rimosso dalla versione del documento', -'removeFolderFromDropFolder' => 'Rimuovi la cartella dopo l\'importazione', +'removeFolderFromDropFolder' => 'Rimuovi la cartella di pubblicazione dopo l\'importazione', 'remove_marked_files' => 'Rimuovi i files contrassegnati', 'repaired' => 'riparato', 'repairing_objects' => 'Riparazione documenti e cartelle in corso...', @@ -1009,11 +1027,11 @@ URL: [url]', 'reviewers' => 'Revisori', 'reviewer_already_assigned' => 'è già assegnato come revisore', 'reviewer_already_removed' => 'è già stato rimosso dal processo di revisione oppure ha già inserito una revisione.', -'reviews_accepted' => '', -'reviews_not_touched' => '', -'reviews_rejected' => '', -'reviews_without_group' => '', -'reviews_without_user' => '', +'reviews_accepted' => '[no_reviews] revisioni già accettate', +'reviews_not_touched' => '[no_reviews] revisioni non gestite', +'reviews_rejected' => '[no_reviews] revisioni già rifiutate', +'reviews_without_group' => 'Revisioni senza gruppo', +'reviews_without_user' => 'Revisioni senza utente', 'review_deletion_email' => 'Richiesta di revisione cancellata', 'review_deletion_email_body' => 'Richiesta di revisione cancellata. Documento: [name] @@ -1046,46 +1064,46 @@ URL: [url]', 'review_submit_email_subject' => '[sitename]: [name] - Sottoposta revisione', 'review_summary' => 'Dettaglio revisioni', 'review_update_failed' => 'Errore nella variazione dello stato di revisione. Aggiornamento fallito.', -'revise_document' => 'Rivedi documento', -'revise_document_on' => 'Prossima revisione del documento il [date]', -'revisions_accepted' => '', -'revisions_not_touched' => '', -'revisions_pending' => '', -'revisions_rejected' => '', -'revisions_without_group' => '', -'revisions_without_user' => '', -'revision_date' => 'data revisione', -'revision_log' => 'Log revisione', -'revision_request_email_body' => 'Richiesta di ricezione +'revise_document' => 'Riesamina documento', +'revise_document_on' => 'Prossimo riesame del documento il [date]', +'revisions_accepted' => '[no_reviews] riesami già accettati', +'revisions_not_touched' => '[no_reviews] riesami non gestiti', +'revisions_pending' => '[no_reviews] riesami pendenti', +'revisions_rejected' => '[no_reviews] riesami già rifiutati', +'revisions_without_group' => 'Riesami senza gruppo', +'revisions_without_user' => 'Riesami senza utente', +'revision_date' => 'data riesame', +'revision_log' => 'Log riesame', +'revision_request_email_body' => 'Richiesta di riesame Document: [name] Version: [version] Parent folder: [folder_path] User: [username] URL: [url]', -'revision_request_email_subject' => '[sitename]: [name] - Richiesta di revisione', +'revision_request_email_subject' => '[sitename]: [name] - Richiesta di riesame', 'revision_status' => 'Status', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', 'revisors' => 'Revisori', 'revisor_already_assigned' => 'Utente già assegnato al ruolo di revisore', -'revisor_already_removed' => 'Revisore già rimosso dal processo di revisione o ha già revisionato documento.', -'rewind_workflow' => 'Inverti il flusso di lavoro', -'rewind_workflow_email_body' => 'Il flusso di lavoro è stato invertito +'revisor_already_removed' => 'Revisore già rimosso dal processo di riesame o ha già riesaminato il documento.', +'rewind_workflow' => 'Fa ripartire il flusso di lavoro', +'rewind_workflow_email_body' => 'Il flusso di lavoro è stato fatto ripartire Document: [name] Version: [version] Workflow: [workflow] Parent folder: [folder_path] User: [username] URL: [url]', -'rewind_workflow_email_subject' => '[sitename]: [name] - Il flusso di lavoro è stato invertito', -'rewind_workflow_warning' => 'Se si inverte un flusso di lavoro al suo stato iniziale ogni traccia del flusso di lavoro originale per questo documento sarà cancellata permanentemente.', +'rewind_workflow_email_subject' => '[sitename]: [name] - Il flusso di lavoro è stato fatto ripartire', +'rewind_workflow_warning' => 'Se si fa ripartire un flusso di lavoro al suo stato iniziale ogni traccia del flusso di lavoro originale per questo documento sarà cancellata permanentemente.', 'rm_attrdef' => 'Rimuovi attributo', 'rm_attrdefgroup' => 'Rimuovere questo gruppo di attributi', -'rm_attr_value' => '', +'rm_attr_value' => 'Rimuovi valore attributo', 'rm_default_keyword_category' => 'Rimuovi categoria', 'rm_document' => 'Rimuovi documento', 'rm_document_category' => 'Rimuovi categoria', -'rm_event' => '', +'rm_event' => 'Rimuovi evento', 'rm_file' => 'Rimuovi file', 'rm_folder' => 'Rimuovi cartella', 'rm_from_clipboard' => 'Rimuovi dalla clipboard', @@ -1094,7 +1112,7 @@ URL: [url]', 'rm_transmittal' => 'Rimuovi trasmissione', 'rm_transmittalitem' => 'Rimuovi oggetto', 'rm_user' => 'Rimuovi questo utente', -'rm_user_from_processes' => '', +'rm_user_from_processes' => 'Rimuovi utente dai processi', 'rm_version' => 'Rimuovi versione', 'rm_workflow' => 'Rimuovi flusso di lavoro', 'rm_workflow_action' => 'Rimuovi azione del flusso di lavoro', @@ -1123,58 +1141,63 @@ URL: [url]', 'saturday' => 'Sabato', 'saturday_abbr' => 'Sab', 'save' => 'Salva', -'scheduler_class' => '', -'scheduler_class_description' => '', -'scheduler_class_parameter' => '', -'scheduler_class_tasks' => '', -'scheduler_task_mgr' => '', +'scheduler_class' => 'Classe', +'scheduler_class_description' => 'Descrizione', +'scheduler_class_parameter' => 'Parametro', +'scheduler_class_tasks' => 'Attività della classe', +'scheduler_task_mgr' => 'Pianificatore', 'search' => 'Ricerca', 'search_fulltext' => 'Ricerca fulltext', 'search_in' => 'Cerca in', 'search_mode_and' => 'tutte le parole', -'search_mode_documents' => 'Solo Documenti', -'search_mode_folders' => 'Solo Cartelle', +'search_mode_documents' => 'Solo documenti', +'search_mode_folders' => 'Solo cartelle', 'search_mode_or' => 'almeno una parola', 'search_no_results' => 'Non ci sono documenti che soddisfino la vostra ricerca', 'search_query' => 'Cerca per', 'search_report' => 'Trovati [doccount] documenti e [foldercount] cartelle in [searchtime] secondi.', 'search_report_fulltext' => 'Trovati [doccount] documenti', -'search_resultmode' => 'Risultato Ricerca', -'search_resultmode_both' => 'Documenti e Cartelle', +'search_resultmode' => 'Risultato ricerca', +'search_resultmode_both' => 'Documenti e cartelle', 'search_results' => 'Risultato ricerca', 'search_results_access_filtered' => 'La ricerca può produrre risultati al cui contenuto è negato l\'accesso.', 'search_time' => 'Tempo trascorso: [time] secondi.', 'seconds' => 'secondi', 'selection' => 'Selezione', 'select_attrdefgrp_show' => 'Scegli quando mostrare', -'select_attribute_value' => '', +'select_attribute_value' => 'Seleziona il valore dell\'attributo', 'select_category' => 'Clicca per selezionare la categoria', -'select_group' => 'Seleziona Gruppo', +'select_group' => 'Seleziona gruppo', 'select_groups' => 'Clicca per selezionare i gruppi', 'select_grp_approvers' => 'Seleziona gruppo approvatore', -'select_grp_ind_approvers' => 'Fare clic per scegliere il gruppo', -'select_grp_ind_notification' => 'Fare clic per scegliere il gruppo', -'select_grp_ind_recipients' => 'Fare clic per scegliere il gruppo', -'select_grp_ind_reviewers' => 'Fare clic per scegliere il gruppo', -'select_grp_ind_revisors' => '', -'select_grp_notification' => 'Seleziona Gruppo', -'select_grp_recipients' => 'Seleziona gruppo cartelle', -'select_grp_reviewers' => 'Seleziona gruppo revisore', -'select_grp_revisors' => 'Seleziona gruppo revisori', -'select_ind_approvers' => 'Seleziona approvatore', -'select_ind_notification' => 'Seleziona Utente', -'select_ind_recipients' => 'Seleziona singole cartelle', -'select_ind_reviewers' => 'Seleziona revisore', -'select_ind_revisors' => 'Seleziona singoli revisori', +'select_grp_ind_approvers' => 'Fare clic per selezionare il gruppo', +'select_grp_ind_notification' => 'Fare clic per selezionare il gruppo', +'select_grp_ind_recipients' => 'Fare clic per selezionare il gruppo', +'select_grp_ind_reviewers' => 'Fare clic per selezionare il gruppo', +'select_grp_ind_revisors' => 'Fare clic per selezionare il gruppo', +'select_grp_notification' => 'Fare clic per selezionare notifiche di gruppo', +'select_grp_recipients' => 'Fare clic per selezionare un gruppo di destinatari', +'select_grp_reviewers' => 'Fare clic per selezionare un gruppo di revisori', +'select_grp_revisors' => 'Fare clic per selezionare un gruppo di riesaminatori', +'select_ind_approvers' => 'Fare clic per selezionare un approvatore individuale', +'select_ind_notification' => 'Fare clic per selezionare la notifica individuale', +'select_ind_recipients' => 'Fare clic per selezionare un destinatario individuale', +'select_ind_reviewers' => 'Fare clic per selezionare un revisore individuale', +'select_ind_revisors' => 'Fare clic per selezionare un riesaminatore individuale', 'select_one' => 'Seleziona uno', -'select_user' => 'Seleziona Utente', +'select_user' => 'Seleziona utente', 'select_users' => 'Clicca per selezionare gli utenti', 'select_value' => 'Selezionare un valore', 'select_workflow' => 'Seleziona il flusso di lavoro', -'send_email' => '', -'send_login_data' => '', -'send_login_data_body' => '', -'send_login_data_subject' => '', +'send_email' => 'Invia messaggio', +'send_login_data' => 'Invia dati di login', +'send_login_data_body' => 'Dati di login + +Login: [login] +Name: [username] + +[comment]', +'send_login_data_subject' => '[sitename]: [login] - I tuoi dati di login', 'send_test_mail' => 'Invia messagio di prova', 'september' => 'Settembre', 'sequence' => 'Posizione', @@ -1182,21 +1205,21 @@ URL: [url]', 'seq_end' => 'Alla fine', 'seq_keep' => 'Mantieni la posizione', 'seq_start' => 'Prima posizione', -'sessions' => '', +'sessions' => 'Utenti online', 'setDateFromFile' => 'Prende la data dal file importato', 'setDateFromFolder' => 'Prende la data dalla cartella importata', 'settings' => 'Impostazioni', 'settings_activate_module' => 'Attivazione modulo', 'settings_activate_php_extension' => 'Attivazione estensione PHP', 'settings_adminIP' => 'IP Amministratore', -'settings_adminIP_desc' => 'Se attivato l\'Amministratore si può collegare solo da un IP specifico; lasciare vuoto per evitare il controllo. NOTA: funziona solo con autenticazione locale (no LDAP)', +'settings_adminIP_desc' => 'Se attivato l\'amministratore si può collegare solo da un IP specifico; lasciare vuoto per evitare il controllo. NOTA: funziona solo con autenticazione locale (no LDAP)', 'settings_Advanced' => 'Avanzate', 'settings_advancedAcl' => 'Avanzate controlo accesso', -'settings_advancedAcl_desc' => 'Avanzatoa controlo di accesso consente di attivare / diattivare alcuni moduli di software. Non può essere utilizzato per i diritti di accesso su documenti e cartelle.', -'settings_allowChangeRevAppInProcess' => '', -'settings_allowChangeRevAppInProcess_desc' => '', +'settings_advancedAcl_desc' => 'Avanzatoa controlo di accesso consente di attivare/diattivare alcuni moduli di software. Non può essere utilizzato per i diritti di accesso su documenti e cartelle.', +'settings_allowChangeRevAppInProcess' => 'Consenti modifica revisore/approvatore dopo l\'avvio del processo', +'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 workflow tradizionale', +'settings_allowReviewerOnly_desc' => 'Abilita se si vuole concedere di impostare solo un revisore ma non un apporvatore nel flusso di lavoro tradizionale', 'settings_apache_mod_rewrite' => 'Apache - Mod Rewrite', 'settings_Authentication' => 'Impostazioni di Autenticazione', 'settings_autoLoginUser' => 'Login automatico', @@ -1253,21 +1276,21 @@ URL: [url]', 'settings_defaultSearchMethod_valdatabase' => 'database', 'settings_defaultSearchMethod_valfulltext' => 'Testo intero', 'settings_delete_install_folder' => 'Per poter usare SeedDMS, devi cancellare il file ENABLE_INSTALL_TOOL nella cartella di configurazione.', -'settings_disableSelfEdit' => 'Disabilita Auto-Modifica', +'settings_disableSelfEdit' => 'Disabilita auto-modifica', 'settings_disableSelfEdit_desc' => 'Se selezionato l\'utente non può modificare il proprio profilo', 'settings_disable_install' => 'Prova ad eliminare il file ENABLE_INSTALL_TOOL se possibile', 'settings_Display' => 'Impostazioni di visualizzazione', -'settings_dropFolderDir' => 'Cartella per il drop', -'settings_dropFolderDir_desc' => 'Questa cartella viene utilizzata per rilasciare (drop) files sul server per importarli direttamente anziché caricarli attraverso il browser. La cartella deve contenere una sottocartella per ciascun utente autorizzato ad importare files in questo modo.', +'settings_dropFolderDir' => 'Cartella per la pubblicazione', +'settings_dropFolderDir_desc' => 'Questa cartella viene utilizzata per pubblicare file sul server, importarli direttamente anziché caricarli attraverso il browser. La cartella deve contenere una sottocartella per ciascun utente autorizzato ad importare file in questo modo.', 'settings_Edition' => 'Impostazioni di edizione', 'settings_editOnlineFileTypes' => 'Tipi di files modificabili Online', 'settings_editOnlineFileTypes_desc' => 'I file con uno dei seguenti terminali possono essere modificati on-line (usare solo caratteri minuscoli)', 'settings_enable2FactorAuthentication' => 'Permettere autenticazione a due fattori', -'settings_enable2FactorAuthentication_desc' => 'Abilitare / disabilitare autenticazione a due fattori. Gli utenti avranno bisogno di "Google Authenticator" sul tuo telefono cellulare.', -'settings_enableAcknowledgeWorkflow' => '', -'settings_enableAcknowledgeWorkflow_desc' => '', -'settings_enableAdminReceipt' => '', -'settings_enableAdminReceipt_desc' => '', +'settings_enable2FactorAuthentication_desc' => 'Abilitare/disabilitare autenticazione a due fattori. Gli utenti avranno bisogno di "Google Authenticator" sul tuo telefono cellulare.', +'settings_enableAcknowledgeWorkflow' => 'Consenti la ricezione di documenti per gli amministratori', +'settings_enableAcknowledgeWorkflow_desc' => 'Abilitare questa opzione se si desidera che gli amministratori vengano elencati come destinatari dei documenti.', +'settings_enableAdminReceipt' => 'Consenti revisione/approvazione per gli amministratori', +'settings_enableAdminReceipt_desc' => 'Abilitare questa opzione se si desidera che gli amministratori vengano elencati come revisori/approvatori e per le transizioni del flusso di lavoro.', 'settings_enableAdminRevApp' => 'Permetti la revisione/approvazione da parte degli amministratori', 'settings_enableAdminRevApp_desc' => 'Abilita per elencare gli amministratori tra i revisori/approvatori e per le transizioni del flusso di lavoro', 'settings_enableCalendar' => 'Abilita calendario', @@ -1276,23 +1299,23 @@ URL: [url]', 'settings_enableClipboard_desc' => 'Abilita/disabilita la clipboard sulla pagina \'Vista cartella\'', 'settings_enableConverting' => 'Abilita conversione', 'settings_enableConverting_desc' => 'Abilita/disabilita la conversione dei files', -'settings_enableDropFolderList' => 'Abilita lista dei file nella cartella di rilasco', -'settings_enableDropFolderList_desc' => 'Abilita la lista dei file nella cartella di rilascio. La lista viene mostrata nel menù principale.', -'settings_enableDropUpload' => 'Abilita upload veloce', -'settings_enableDropUpload_desc' => 'Abilita/disabilita l\'area di rilascio nella pagina \'Vista cartella\' per caricare i files con drag&drop (trascina e rilascia).', +'settings_enableDropFolderList' => 'Abilita lista dei file nella cartella di pubblicazione', +'settings_enableDropFolderList_desc' => 'Abilita la lista dei file nella cartella di pubblicazione. La lista viene mostrata nel menù principale.', +'settings_enableDropUpload' => 'Abilita caricamento veloce', +'settings_enableDropUpload_desc' => 'Abilita/disabilita l\'area di pubblicazione nella pagina \'Vista cartella\' per caricare i files con drag&drop (trascina e rilascia).', 'settings_enableDuplicateDocNames' => 'Permetti documenti con lo stesso nome', 'settings_enableDuplicateDocNames_desc' => 'Permetti documenti con lo stesso nome nella stessa cartella', -'settings_enableDuplicateSubFolderNames' => '', -'settings_enableDuplicateSubFolderNames_desc' => '', +'settings_enableDuplicateSubFolderNames' => 'Permetti nomi sottocartelle duplicati', +'settings_enableDuplicateSubFolderNames_desc' => 'Permetti di avere nomi duplicati di sottocartelle in una cartella.', 'settings_enableEmail' => 'Abilita l\'email', 'settings_enableEmail_desc' => 'Abilita/disabilita la notifica automatica via email', -'settings_enableFilterReceipt' => '', -'settings_enableFilterReceipt_desc' => '', +'settings_enableFilterReceipt' => 'Filtra per proprietario, revisore, ecc. dall\'elenco delle ricezioni', +'settings_enableFilterReceipt_desc' => 'Abilita, per poter filtrare dei destinatari da un elenco di ricezioni se i membri di un gruppo sono selezionati.', 'settings_enableFolderTree' => 'Visualizza la struttura ad albero', 'settings_enableFolderTree_desc' => 'Abilita/disabilita la visualizzaione della struttura ad albero nella pagina \'Vista cartella\'', 'settings_enableFullSearch' => 'Abilita ricerca fulltext', 'settings_enableFullSearch_desc' => 'Abilita/disabilita la ricerca fulltext', -'settings_enableGuestAutoLogin' => 'Activer la connexion automatique pour le compte invité', +'settings_enableGuestAutoLogin' => 'Abilita l\'auto login per gli ospiti', 'settings_enableGuestAutoLogin_desc' => 'Se il login ospite e il login automatico è abilitato, il login ospite sarà usato automaticamente.', 'settings_enableGuestLogin' => 'Permetti login come ospite', 'settings_enableGuestLogin_desc' => 'Per impedire il login come ospite, selezionare questa opzione. Nota bene: il login come ospite dovrebbe essere permesso soltanto in un ambiente fidato.', @@ -1303,7 +1326,7 @@ URL: [url]', 'settings_enableLargeFileUpload' => 'Abilita caricamento grandi files', 'settings_enableLargeFileUpload_desc' => 'Se selezionato, il caricamento (upload) dei files può essere effettuato anche attraverso un\'applet Java chiamata Jumploader evitando il limite di dimensioni file imposto dal browser; Jumploader permette anche il caricamento di diversi files contemporaneamente.', '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_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_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', @@ -1312,34 +1335,36 @@ URL: [url]', 'settings_enableNotificationWorkflow_desc' => 'Se questa opzione è selezionata, gli utenti o i gruppi che sono coinvolti nella successiva transizione del flusso di lavoro riceveranno un avviso, anche se non hanno impostato notifiche riguardanti il documento.', 'settings_enableOwnerNotification' => 'Abilita/disabilita notifica al proprietario', 'settings_enableOwnerNotification_desc' => 'Spuntare per inviare una notifica al proprietario del documento nel momento in cui questo viene aggiunto.', -'settings_enableOwnerReceipt' => '', -'settings_enableOwnerReceipt_desc' => '', +'settings_enableOwnerReceipt' => 'Consentire la ricezione di documenti da parte del proprietario', +'settings_enableOwnerReceipt_desc' => 'Abilitare questa opzione se si desidera che il proprietario di un documento sia elencato come destinatario.', 'settings_enableOwnerRevApp' => 'Permetti la revisione/approvazione per il proprietario', 'settings_enableOwnerRevApp_desc' => 'Spuntare per aggiungere il proprietario del documento alla lista dei revisori/approvatori e per le transizioni del flusso di lavoro.', 'settings_enablePasswordForgotten' => 'Abilita recupero password', 'settings_enablePasswordForgotten_desc' => 'Spuntare nel caso si desideri permettere all\'utente di re-impostare la password inviata per email.', -'settings_enableReceiptReject' => '', -'settings_enableReceiptReject_desc' => '', +'settings_enableReceiptReject' => 'Abilita il rifiuto dei ricevimenti', +'settings_enableReceiptReject_desc' => 'Abilita per attivare il rifiuto dei ricevimenti.', 'settings_enableReceiptWorkflow' => 'Abilitare per notifiche', -'settings_enableReceiptWorkflow_desc' => 'Abilitare per attivare sul workflow le ricevute di notifica.', +'settings_enableReceiptWorkflow_desc' => 'Abilitare per attivare le ricevute di notifica nel flusso di lavoro.', 'settings_enableRecursiveCount' => 'Abilita il conteggio ricursivo di documenti/cartelle', 'settings_enableRecursiveCount_desc' => 'Se selezionato il numero di documenti e sottocartelle accessibili all\'utente sarà calcolato con un conteggio ricursivo di tutti gli oggetti contenuti nella cartella.', -'settings_enableRevisionOnVoteReject' => '', -'settings_enableRevisionOnVoteReject_desc' => '', -'settings_enableRevisionWorkflow' => 'Abilita revisione documenti', -'settings_enableRevisionWorkflow_desc' => 'Abilita per attivare workflow su revisione documenti dopo scadenza.', -'settings_enableSelfReceipt' => '', -'settings_enableSelfReceipt_desc' => '', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', +'settings_enableRevisionOnVoteReject' => 'Rifiutato da un revisore', +'settings_enableRevisionOnVoteReject_desc' => 'Se impostato, il documento verrà rifiutato se un revisore rifiuta il documento.', +'settings_enableRevisionWorkflow' => 'Abilita riesame dei documenti', +'settings_enableRevisionWorkflow_desc' => 'Abilita per attivare flusso di lavoro su riesame documenti dopo scadenza.', +'settings_enableSelfReceipt' => 'Consenti la ricezione di documenti per l\'utente che ha effettuato l\'accesso', +'settings_enableSelfReceipt_desc' => 'Abilitare questa opzione se si desidera che l\'utente attualmente connesso sia elencato come destinatario di un documento.', 'settings_enableSelfRevApp' => 'Permetti revisione/approvazione all\'utente registrato', 'settings_enableSelfRevApp_desc' => 'Abilitare se si desidera aggiungere l\'utente attualmente registrato alla lista dei revisori/approvatori e per le transizioni del flusso di lavoro.', 'settings_enableSessionList' => 'Abilita lista utenti online nel menu', 'settings_enableSessionList_desc' => 'Abilita lista degli utenti loggati nel menu', 'settings_enableThemeSelector' => 'Selezione tema grafico', 'settings_enableThemeSelector_desc' => 'Abilita/disabilita il selettore di tema grafico nella finestra di login', -'settings_enableUpdateReceipt' => '', -'settings_enableUpdateReceipt_desc' => '', -'settings_enableUpdateRevApp' => 'Consenti la modifica della revisione / approvazione estesa', -'settings_enableUpdateRevApp_desc' => 'Abilita questo, se l\'utente che ha effettuato una revisione / approvazione può modificare la decisione finché il passaggio di flusso di lavoro corrente non è stato completato.', +'settings_enableUpdateReceipt' => 'Consenti modifica della ricezione esistente', +'settings_enableUpdateReceipt_desc' => 'Abilitare questa opzione se l\'utente che ha effettuato una ricezione può modificare la decisione.', +'settings_enableUpdateRevApp' => 'Consenti la modifica della revisione/approvazione estesa', +'settings_enableUpdateRevApp_desc' => 'Abilita questo, se l\'utente che ha effettuato una revisione/approvazione può modificare la decisione finché il passaggio di flusso di lavoro corrente non è stato completato.', 'settings_enableUserImage' => 'Abilita immagine utente', 'settings_enableUserImage_desc' => 'L\'opzione permette di attribuire un\'immagine a ciascun utente', 'settings_enableUsersView' => 'Abilita visualizzazione utenti', @@ -1349,9 +1374,9 @@ URL: [url]', 'settings_enableVersionModification' => 'Abilita modifica della versione', 'settings_enableVersionModification_desc' => 'Abilita/disabilita il permesso di modificare le versioni di un documento da parte di un qualsiasi utente. Gli Amministratori hanno sempre e comunque tale facoltà.', 'settings_enableWebdavReplaceDoc' => 'Sostituisci il documento durante il salvataggio', -'settings_enableWebdavReplaceDoc_desc' => 'Se abilitato, durante il salvataggio il documento verrà sostituito invece di crearne uno nuovo. Si applica solo se l\'utente, estensione e nome del file sono uguali all\'ultima versione. E\' utile per applicazioni che ad intervalli regolari salvano un documento.', +'settings_enableWebdavReplaceDoc_desc' => 'Se abilitato, durante il salvataggio il documento verrà sostituito invece di crearne uno nuovo. Si applica solo se l\'utente, estensione e nome del file sono uguali all\'ultima versione. È utile per applicazioni che ad intervalli regolari salvano un documento.', 'settings_enableXsendfile' => 'Usa il modulo apache xsendfile', -'settings_enableXsendfile_desc' => 'Se selezionato ed e\' installato il modulo apache xsendfile, questo puo\' essere usato per inviare immagini', +'settings_enableXsendfile_desc' => 'Se selezionato ed è installato il modulo apache xsendfile, questo puo\' essere usato per inviare immagini', 'settings_encryptionKey' => 'Chiave di criptazione', 'settings_encryptionKey_desc' => 'La chiave viene usata per creare un identificatore unico da aggiungere come campo nascosto ad un formulario per protezione da attacchi CSRF.', 'settings_error' => 'Errore', @@ -1380,7 +1405,7 @@ URL: [url]', 'settings_initialDocumentStatus' => 'Stato iniziale documento', 'settings_initialDocumentStatus_desc' => 'Stato assegnato quando si aggiunge documento', 'settings_initialDocumentStatus_draft' => 'Bozza', -'settings_initialDocumentStatus_released' => 'Rilasciato', +'settings_initialDocumentStatus_released' => 'Pubblicato', 'settings_installADOdb' => 'Installa ADOdb', 'settings_install_disabled' => 'Il file ENABLE_INSTALL_TOOL è stato cancellato. Ora puoi effettuare il login in SeedDMS e fare ulteriori configurazioni.', 'settings_install_pear_package_log' => 'Installa il registro del pacchetto Pear', @@ -1403,15 +1428,15 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'Cartella del pacchetto SeedDMS_Lucene (opzionale). Lasciare il campo vuoto se SeedDMS_Lucene è stato installato in una cartella localizzabile dal PHP, ad esempio quella indicata per gli include PHP addizionali.', 'settings_luceneDir' => 'Cartella di indicizzazione fulltext', 'settings_luceneDir_desc' => 'Cartella di memorizzazione dell\'indice utilizzato da Lucene', -'settings_maxDirID' => 'Max numero di ID-Cartella', +'settings_maxDirID' => 'Max numero di ID cartella', 'settings_maxDirID_desc' => 'Numero massimo di sottocartelle contenibili in una cartella. Default: 0.', -'settings_maxExecutionTime' => 'Tempo Max di esecuzione (s)', +'settings_maxExecutionTime' => 'Tempo massimo di esecuzione (s)', 'settings_maxExecutionTime_desc' => 'Imposta il tempo limite per l\'esecuzione di uno script prima che il parser lo termini.', 'settings_maxItemsPerPage' => 'Numero massimo di inserimenti per pagina', 'settings_maxItemsPerPage_desc' => 'Riduce numero di cartelle e documenti mostrati nell pagina di visualizzazione cartelle. Altri oggetti saranno caricati allo scorrimento verso la fine della pagina. Impostare 0 per visualizzare tutti gli elementi.', 'settings_maxRecursiveCount' => 'Conteggio ricursivo Max di files e cartelle', 'settings_maxRecursiveCount_desc' => 'Numero massimo di documenti e cartelle considerati dal conteggio ricursivo per il controllo dei diritti d\'accesso. Se tale valore dovesse essere superato, il risultato del conteggio sarà stimato.', -'settings_maxSizeForFullText' => 'La lungeza massima del file per l\'indicizzazione istantanea', +'settings_maxSizeForFullText' => 'La lunghezza massima del file per l\'indicizzazione istantanea', 'settings_maxSizeForFullText_desc' => 'Tutte le nuove versioni dei documenti più in basso della dimensione configurata saranno completamente indicizzati dopo il caricamento. In tutti gli altri casi sarà indicizzato solo i metadati.', 'settings_maxUploadSize' => 'Dimensiona massima dei file da caricare', 'settings_maxUploadSize_desc' => 'Questa è la dimensiona massima del file da caricare. Avrà impatto sulla versione del documento e sull\'allegato.', @@ -1445,17 +1470,17 @@ URL: [url]', 'settings_presetExpirationDate_desc' => 'Tutti i nuovi documenti caricati avranno la data di scadenza impostata su questo valore. La data inserita può essere specificata nel formato accettato dalla funzione strtotime() di PHP, ad esempio +5 settimane.', 'settings_previewWidthDetail' => 'Larghezza immagini di anteprima (dettagli)', 'settings_previewWidthDetail_desc' => 'Larghezza delle immagini di anteprima mostrate nella pagina dei dettagli', -'settings_previewWidthDropFolderList' => 'Larghezza immagine di anteprima (lista cartella rilascio)', -'settings_previewWidthDropFolderList_desc' => 'Larghezza immagine di anteprima mostrata nella lista, quando selezionato un file dalla cartella di rilascio', +'settings_previewWidthDropFolderList' => 'Larghezza immagine di anteprima (lista cartella di pubblicazione)', +'settings_previewWidthDropFolderList_desc' => 'Larghezza immagine di anteprima mostrata nella lista, quando selezionato un file dalla cartella di pubblicazione', 'settings_previewWidthList' => 'Larghezza delle immagini di anteprima (lista)', 'settings_previewWidthList_desc' => 'Larghezza delle immagini di anteprima mostrate nella lista', 'settings_previewWidthMenuList' => 'Larghezza immagine di anteprima (lista menu)', -'settings_previewWidthMenuList_desc' => 'Larghezza immagine di anteprima mostrata come articolo nel menu cartella di rilascio.', +'settings_previewWidthMenuList_desc' => 'Larghezza immagine di anteprima mostrata come articolo nel menu cartella di pubblicazione.', 'settings_printDisclaimer' => 'Mostra disclaimer', 'settings_printDisclaimer_desc' => 'Se abilitato il messaggio circa i termini e le condizioni d\'uso verrà mostrato nel pié di pagina.', 'settings_quota' => 'Quota utente', 'settings_quota_desc' => 'La quantità Max di spazio su disco che può essere occupata da ciascun utente. Impostare il valore 0 offre spazio illimitato.', -'settings_removeFromDropFolder' => 'Rimuovere file dalla cartella di ricezione dopo il successo di posto', +'settings_removeFromDropFolder' => 'Rimuovere file dalla cartella di ricezione dopo il caricamento', 'settings_removeFromDropFolder_desc' => 'Attivare questa, se un file è preso dalla cartella di ricezione, si è cancellata dopo il caricamento di successo.', 'settings_repositoryUrl' => 'URL del repository', 'settings_repositoryUrl_desc' => 'URL del repository per le estensioni', @@ -1509,14 +1534,14 @@ URL: [url]', 'settings_strictFormCheck_desc' => 'Rigido controllo sulla form. Se abilitato verrà richiesto che tutti i campi della form abbiano un valore. Se disabilitato la maggior parte dei commenti e dei campi parola-chiave diventano opzionali. NOTA: i commenti sono sempre necessari quando si carica una revisione o si scavalca lo stato di un documento.', 'settings_suggestionvalue' => 'Valore suggerito', 'settings_System' => 'Sistema', -'settings_tasksInMenu' => '', -'settings_tasksInMenu_approval' => '', -'settings_tasksInMenu_desc' => '', -'settings_tasksInMenu_needscorrection' => '', -'settings_tasksInMenu_receipt' => '', -'settings_tasksInMenu_review' => '', -'settings_tasksInMenu_revision' => '', -'settings_tasksInMenu_workflow' => '', +'settings_tasksInMenu' => 'Attività selezionate', +'settings_tasksInMenu_approval' => 'Approvazioni', +'settings_tasksInMenu_desc' => 'Seleziona le attività da conteggiare. Se non ne sono state selezionate, verranno conteggiate tutte le attività.', +'settings_tasksInMenu_needscorrection' => 'Correzioni necessarie', +'settings_tasksInMenu_receipt' => 'Ricevute', +'settings_tasksInMenu_review' => 'Revisioni', +'settings_tasksInMenu_revision' => 'Riesami', +'settings_tasksInMenu_workflow' => 'Flusso di lavoro', 'settings_theme' => 'Tema di default', 'settings_theme_desc' => 'Stile di default (nome della sottocartella nella cartella "styles")', 'settings_titleDisplayHack' => 'Visualizzazione titoli lunghi', @@ -1534,123 +1559,123 @@ URL: [url]', 'settings_viewOnlineFileTypes_desc' => 'Solo i files che terminano nella maniera seguente verranno visualizzati (UTILIZZARE SOLO IL MINUSCOLO)', 'settings_webdav' => 'WebDAV', 'settings_workflowMode' => 'Modalità flusso di lavoro', -'settings_workflowMode_desc' => 'Il flusso di lavoro \'avanzato\' permette di rilasciare un proprio flusso di lavoro per le versioni dei documenti', +'settings_workflowMode_desc' => 'Il flusso di lavoro \'avanzato\' permette di pubblicare un proprio flusso di lavoro per le versioni dei documenti', 'settings_workflowMode_valadvanced' => 'Avanzato', 'settings_workflowMode_valtraditional' => 'Tradizionale', -'settings_workflowMode_valtraditional_only_approval' => 'tradizionale (senza revisione)', +'settings_workflowMode_valtraditional_only_approval' => 'Tradizionale (senza revisione)', 'settings_zendframework' => 'Framework Zend', 'set_expiry' => 'Imposta scadenza', 'set_owner' => 'Conferma proprietario', 'set_owner_error' => 'Errore nell\'impostazione del proprietario', -'set_password' => 'Imposta Password', +'set_password' => 'Imposta password', 'set_workflow' => 'Imposta il flusso di lavoro', -'show_extension_changelog' => '', +'show_extension_changelog' => 'Registro delle modifiche dell\'estensione', 'show_extension_version_list' => 'Mostra lista delle versioni', 'signed_in_as' => 'Utente', 'sign_in' => 'Accesso', 'sign_out' => 'Disconnettiti', 'sign_out_user' => 'Disconnetti l\'utente', 'sk_SK' => 'Slovacco', -'sort_by_date' => 'Ordina per Data', -'sort_by_name' => 'Ordina per Nom', -'sort_by_sequence' => 'Ordina per Sequenza', +'sort_by_date' => 'Ordina per data', +'sort_by_name' => 'Ordina per nome', +'sort_by_sequence' => 'Ordina per sequenza', 'space_used_on_data_folder' => 'Spazio utilizzato dai dati', 'splash_added_to_clipboard' => 'Aggiunto agli appunti', -'splash_add_access' => '', +'splash_add_access' => 'Accesso aggiunto', 'splash_add_attribute' => 'Attributo aggiunto', 'splash_add_group' => 'Gruppo aggiunto', 'splash_add_group_member' => 'Membro aggiunto al gruppo', 'splash_add_role' => 'Aggiunto nuovo ruolo', 'splash_add_to_transmittal' => 'Aggiungere alla trasmissione', -'splash_add_transmittal' => '', +'splash_add_transmittal' => 'Aggiungere trasmissione', 'splash_add_user' => 'Utente aggiunto', 'splash_cleared_cache' => 'Cache cancellata', 'splash_cleared_clipboard' => 'Appunti cancellati', -'splash_delete_access' => '', +'splash_delete_access' => 'Diritto d\'accesso cancellato', 'splash_document_added' => 'Documento aggiunto', 'splash_document_checkedout' => 'Documento approvato', 'splash_document_edited' => 'Documento modificato', -'splash_document_indexed' => '', +'splash_document_indexed' => 'Documento indicizzato', 'splash_document_locked' => 'Documento bloccato', 'splash_document_unlocked' => 'Documento sbloccato', -'splash_edit_access' => '', +'splash_edit_access' => 'Accesso modificato', 'splash_edit_attribute' => 'Attributo modificato', -'splash_edit_event' => '', +'splash_edit_event' => 'Evento modificato', 'splash_edit_group' => 'Gruppo modificato', -'splash_edit_role' => 'Ruolo memorizzata', -'splash_edit_task' => '', +'splash_edit_role' => 'Ruolo memorizzato', +'splash_edit_task' => 'Attività modificata', 'splash_edit_user' => 'Utente modificato', 'splash_error_add_to_transmittal' => 'Errore durante l\'aggiunta di documento per la trasmissione', -'splash_error_rm_download_link' => '', -'splash_error_send_download_link' => '', -'splash_extension_getlist' => '', -'splash_extension_import' => '', -'splash_extension_refresh' => '', -'splash_extension_upload' => '', +'splash_error_rm_download_link' => 'Errore durante la rimozione del collegamento di scaricamento', +'splash_error_send_download_link' => 'Errore durante l\'invio del collegamento di scaricamento', +'splash_extension_getlist' => 'Elenco estensioni aggiornate dal repository', +'splash_extension_import' => 'Extensition installed', +'splash_extension_refresh' => 'Refreshed list of extensions', +'splash_extension_upload' => 'Extension installed', 'splash_folder_edited' => 'Cartella modificata', 'splash_importfs' => 'Importati [Documenti] documenti e cartelle [cartelle]', -'splash_inherit_access' => '', +'splash_inherit_access' => 'Il diritto di accesso verrà ereditato', 'splash_invalid_folder_id' => 'ID cartella non valido', 'splash_invalid_searchterm' => 'Termine di ricerca non valido', -'splash_link_document' => '', +'splash_link_document' => 'Collegamento aggiunto', 'splash_moved_clipboard' => 'Appunti trasferiti nella cartella corrente', 'splash_move_document' => 'Documento spostato', 'splash_move_folder' => 'Cartella spostato', -'splash_notinherit_access' => '', -'splash_receipt_update_success' => '', +'splash_notinherit_access' => 'I diritti di accesso non sono più ereditati', +'splash_receipt_update_success' => 'Ricevuta aggiunta con successo', 'splash_removed_from_clipboard' => 'Rimosso dagli appunti', 'splash_rm_attribute' => 'Attributo rimosso', -'splash_rm_attr_value' => '', +'splash_rm_attr_value' => 'Valore attributo rimosso', 'splash_rm_document' => 'Documento rimosso', -'splash_rm_download_link' => '', +'splash_rm_download_link' => 'Collegamento di scaricamento rimosso', 'splash_rm_folder' => 'Cartella eliminata', 'splash_rm_group' => 'Gruppo eliminato', 'splash_rm_group_member' => 'Membro del gruppo eliminato', 'splash_rm_role' => 'Ruolo cancellato', 'splash_rm_transmittal' => 'Trasmissione cancellato', 'splash_rm_user' => 'Utente eliminato', -'splash_rm_user_processes' => '', -'splash_rm_workflow' => '', -'splash_rm_workflow_action' => '', -'splash_rm_workflow_state' => '', -'splash_saved_file' => '', -'splash_save_user_data' => '', -'splash_send_download_link' => '', -'splash_send_login_data' => '', -'splash_setowner' => '', +'splash_rm_user_processes' => 'Utente rimosso da tutti i processi', +'splash_rm_workflow' => 'flusso di lavoro rimosso', +'splash_rm_workflow_action' => 'Azione del flusso di lavoro rimossa', +'splash_rm_workflow_state' => 'Stato del flusso di lavoro rimosso', +'splash_saved_file' => 'Versione salvata', +'splash_save_user_data' => 'Dati utente salvati', +'splash_send_download_link' => 'Collegamento di scaricamento inviato via email.', +'splash_send_login_data' => 'Dati di login inviati', +'splash_setowner' => 'Imposta nuovo proprietario', 'splash_settings_saved' => 'Impostazioni salvate', -'splash_set_default_access' => '', +'splash_set_default_access' => 'Imposta accesso predefinito', 'splash_substituted_user' => 'Utente sostituito', 'splash_switched_back_user' => 'Ritorno all\'utente originale', 'splash_toogle_group_manager' => 'Amministratore di gruppo invertito', -'splash_transfer_content' => '', -'splash_transfer_document' => '', -'splash_transfer_objects' => '', -'splash_trigger_workflow' => '', +'splash_transfer_content' => 'Contenuto trasferito', +'splash_transfer_document' => 'Documento trasferito', +'splash_transfer_objects' => 'Oggetti trasferito', +'splash_trigger_workflow' => 'Attivata transizione del flusso di lavoro', 'state_and_next_state' => 'Stato/Prossimo stato', 'statistic' => 'Statistiche', 'status' => 'Stato', 'status_approval_rejected' => 'Bozza rifiutata', 'status_approved' => 'Approvato', 'status_approver_removed' => 'Approvatore rimosso dal processo', -'status_needs_correction' => '', +'status_needs_correction' => 'Necessita correzioni', 'status_not_approved' => 'Non ancora approvato', 'status_not_receipted' => 'Non ancora ricevuto', -'status_not_reviewed' => 'Non ancora revisionato', -'status_not_revised' => 'Non revisionato', +'status_not_reviewed' => 'Non revisionato', +'status_not_revised' => 'Non riesaminato', 'status_receipted' => 'Ricevuto', -'status_receipt_rejected' => 'Rigettato', +'status_receipt_rejected' => 'Rifiutato', 'status_recipient_removed' => 'Cartella rimossa dalla lista', 'status_reviewed' => 'Revisionato', 'status_reviewer_rejected' => 'Bozza rifiutata', 'status_reviewer_removed' => 'Revisore rimosso dal processo', -'status_revised' => 'Revisionato', -'status_revision_rejected' => 'Rigettato', -'status_revision_sleeping' => 'In attesa', +'status_revised' => 'riesaminato', +'status_revision_rejected' => 'Rifiutato', +'status_revision_sleeping' => 'in attesa', 'status_revisor_removed' => 'Revisore rimosso dalla lista', 'status_unknown' => 'Sconosciuto', 'storage_size' => 'Spazio di archiviazione', -'subfolder_duplicate_name' => '', +'subfolder_duplicate_name' => 'Nome sottocartella duplicato', 'submit_2_fact_auth' => 'Salva segreto', 'submit_approval' => 'Invio approvazione', 'submit_login' => 'Accedi', @@ -1658,9 +1683,9 @@ URL: [url]', 'submit_password_forgotten' => 'Inizio processo di recupero', 'submit_receipt' => 'Invio ricevuta', 'submit_review' => 'Invio revisione', -'submit_revision' => 'Aggiungere Revisione', +'submit_revision' => 'Aggiungi riesame', 'submit_userinfo' => 'Invio info utente', -'subsribe_timelinefeed' => '', +'subsribe_timelinefeed' => 'Iscriviti al feed della linea temporale', 'substitute_to_user' => 'Cambia in \'[username]\'', 'substitute_user' => 'Impersona utente', 'success_add_aro' => 'Aggiunto richiesta di accesso oggetto', @@ -1671,55 +1696,55 @@ URL: [url]', 'sunday_abbr' => 'Dom', 'sv_SE' => 'Svedese', 'switched_to' => 'Passato a', -'takeOverAttributeValue' => '', +'takeOverAttributeValue' => 'Riprendi il valore dell\'attributo dall\'ultima versione', 'takeOverGrpApprover' => 'Riprendi il gruppo degli approvatori dall\'ultima versione.', 'takeOverGrpReviewer' => 'Riprendi il gruppo dei revisori dall\'ultima versione.', 'takeOverIndApprover' => 'Riprendi l\'approvatore dall\'ultima versione.', 'takeOverIndReviewer' => 'Riprendi il revisore dall\'ultima versione.', -'tasks' => 'Compiti', -'task_description' => '', -'task_disabled' => '', -'task_frequency' => '', -'task_last_run' => '', -'task_name' => '', -'task_next_run' => '', +'tasks' => 'Attività', +'task_description' => 'Descrizione', +'task_disabled' => 'Disabilitata', +'task_frequency' => 'Frequenza', +'task_last_run' => 'Ultima esecuzione', +'task_name' => 'Nome', +'task_next_run' => 'Prossima esecuzione', 'temp_jscode' => 'Codice javascript temporaneo', 'testmail_body' => 'Questo messaggio di posta elettronica è solo un test per verificare la configurazione del repository', 'testmail_subject' => 'Messaggio di test', 'theme' => 'Tema', 'thursday' => 'Giovedì', 'thursday_abbr' => 'Gio', -'timeline' => 'Linea del Tempo', +'timeline' => 'Linea temporale', 'timeline_add_file' => 'Nuovo allegato', 'timeline_add_version' => 'Nuova versione [version]', 'timeline_full_add_file' => '[document]
      Nuovo attacco', 'timeline_full_add_version' => '[document]
      Nuovo versione [version]', -'timeline_full_scheduled_revision' => '', +'timeline_full_scheduled_revision' => '[document]
      Riesame della versione [version]', 'timeline_full_status_change' => '[document]
      Versione [version]: [status]', -'timeline_scheduled_revision' => '', +'timeline_scheduled_revision' => 'Riesame della versione [version]', 'timeline_selected_item' => 'Documento selezionato', 'timeline_skip_add_file' => 'allegato aggiunto', -'timeline_skip_scheduled_revision' => '', +'timeline_skip_scheduled_revision' => 'Riesame programmato', 'timeline_skip_status_change_-1' => 'respinto', 'timeline_skip_status_change_-3' => 'scaduto', 'timeline_skip_status_change_0' => 'in attesa di revisione', 'timeline_skip_status_change_1' => 'in attesa di approvazione', -'timeline_skip_status_change_2' => 'rilasciato', -'timeline_skip_status_change_3' => 'nel workflow', -'timeline_skip_status_change_4' => '', -'timeline_skip_status_change_5' => '', +'timeline_skip_status_change_2' => 'pubblicato', +'timeline_skip_status_change_3' => 'nel flusso di lavoro', +'timeline_skip_status_change_4' => 'in riesame', +'timeline_skip_status_change_5' => 'bozza', 'timeline_status_change' => 'Versione [version]: Stato', 'to' => 'A', 'toggle_manager' => 'Gestore', -'toggle_qrcode' => 'Mostri / nascondi codice QR', +'toggle_qrcode' => 'Mostri/nascondi codice QR', 'to_before_from' => 'La data di fine non può essere antecedente a quella di inizio', -'transfer_content' => '', -'transfer_document' => 'Trasferisci Documento', -'transfer_no_read_access' => 'L`utente non ha i permessi in lettura per la cartella', -'transfer_no_write_access' => 'L`utente non ha i permessi in scrittura per la cartella', -'transfer_objects' => '', -'transfer_objects_to_user' => '', -'transfer_to_user' => 'Trasferisci all`utente', +'transfer_content' => 'Trasferisci contenuto', +'transfer_document' => 'Trasferisci documento', +'transfer_no_read_access' => 'L\'utente non ha i permessi in lettura per la cartella', +'transfer_no_write_access' => 'L\'utente non ha i permessi in scrittura per la cartella', +'transfer_objects' => 'Trasferisci oggetti', +'transfer_objects_to_user' => 'Trasferisci all\'utente', +'transfer_to_user' => 'Trasferisci all\'utente', 'transition_triggered_email' => 'Inizio transizione del flusso di lavoro', 'transition_triggered_email_body' => 'Transizione del flusso di lavoro iniziata Documento: [name] @@ -1734,7 +1759,7 @@ URL: [url]', 'transition_triggered_email_subject' => 'Transizione del flusso di lavoro iniziata', 'transmittal' => 'Trasmissione', 'transmittalitem_removed' => 'Oggetto trasmissione rimosso', -'transmittalitem_updated' => 'Documento aggiornato alla ultima versione', +'transmittalitem_updated' => 'Documento aggiornato all\'ultima versione', 'transmittal_comment' => 'Commento', 'transmittal_name' => 'Nome', 'transmittal_size' => 'Dimensione', @@ -1794,7 +1819,7 @@ URL: [url]', 'use_comment_of_document' => 'Utilizza il commento al documento', 'use_default_categories' => 'Usa categorie predefinite', 'use_default_keywords' => 'Usa parole-chiave predefinite', -'valid_till' => '', +'valid_till' => 'Valido fino a', 'version' => 'Versione', 'versioning_file_creation' => 'Creazione file di versione', 'versioning_file_creation_warning' => 'Con questa operazione è possibile creare un file di backup delle informazioni di versione dei documenti di un\'intera cartella. Dopo la creazione ogni file viene salvato nella cartella del relativo documento.', @@ -1817,30 +1842,30 @@ URL: [url]', 'weeks' => 'settimane', 'week_view' => 'Vista settimana', 'workflow' => 'Flusso di lavoro', -'workflows_involded' => '', +'workflows_involded' => 'Coinvolto nel flusso di lavoro', 'workflow_actions_management' => 'Gestione azioni del flusso di lavoro', 'workflow_action_in_use' => 'Questa azione è attualmente usata da alcuni flussi di lavoro', 'workflow_action_name' => 'Nome', 'workflow_editor' => 'Modifica flussi di lavoro', 'workflow_group_summary' => 'Sommario di gruppo', -'workflow_has_cycle' => '', +'workflow_has_cycle' => 'Il flusso di lavoro ha un ciclo', 'workflow_initstate' => 'Stato iniziale', 'workflow_in_use' => 'Questo flusso di lavoro è attualmente usato da alcuni documenti', -'workflow_layoutdata_saved' => '', +'workflow_layoutdata_saved' => 'Dati di layout salvati', 'workflow_management' => 'Gestione flusso di lavoro', 'workflow_name' => 'Nome', -'workflow_no_doc_rejected_state' => '', -'workflow_no_doc_released_state' => '', -'workflow_no_initial_state' => '', +'workflow_no_doc_rejected_state' => 'Il documento non verrà rifiutato in uno stato di flusso di lavoro!', +'workflow_no_doc_released_state' => 'Il documento non verrà rilasciato in uno stato di flusso di lavoro!', +'workflow_no_initial_state' => 'Nessuna delle transizioni inizia con lo stato iniziale del flusso di lavoro!', 'workflow_no_states' => 'Prima di aggiungere un flusso di lavoro occorre definirne prima gli stati.', -'workflow_save_layout' => '', +'workflow_save_layout' => 'Salva layout', 'workflow_state' => 'Stato del flusso di lavoro', 'workflow_states_management' => 'Gestione stati del flusso di lavoro', 'workflow_state_docstatus' => 'Stato del documento', 'workflow_state_in_use' => 'Questo stato è attualmente usato da alcuni flussi di lavoro', 'workflow_state_name' => 'Nome', 'workflow_summary' => 'Riepilogo flusso di lavoro', -'workflow_transition_without_user_group' => '', +'workflow_transition_without_user_group' => 'Almeno una delle transizioni non ha un utente o un gruppo!', 'workflow_user_summary' => 'Riepilogo utenti', 'x_more_objects' => '[number] altri oggetti', 'year_view' => 'Vista anno', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index e70270c90..ed9171373 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -835,6 +835,7 @@ URL : [url]', 'no_action' => '조치가 필요하지 않습니다', 'no_approval_needed' => '승인을 보류하지 않습니다', 'no_attached_files' => '첨부 파일 없음', +'no_backup_dir' => '', 'no_current_version' => '당신은 이전 버전의 SeedDMS를 사용하고 있습니다. 사용 가능한 최신 버전은 [latestversion] 입니다.', 'no_default_keywords' => '사용 가능한 키워드가 존재하지 않습니다.', 'no_docs_checked_out' => '체크아웃 문서가 없습니다.', @@ -1306,6 +1307,8 @@ URL : [url]', 'settings_enableReceiptWorkflow_desc' => '문서의 수신 확인을 위해 워크플로어를 선택하고 활성화 합니다.', 'settings_enableRecursiveCount' => '재귀적 문서 / 폴더 수 사용', 'settings_enableRecursiveCount_desc' => 'If turned on, the number of documents and folders in the folder view will be determined by counting all objects by recursively processing the folders and counting those documents and folders the user is allowed to access.', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '문서의 개정 허용', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index 5796aba51..e53d12553 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -839,6 +839,7 @@ URL: [url]', 'no_action' => 'ບໍ່ຕ້ອງດຳເນີນການໄດໆ', 'no_approval_needed' => 'ຍັງບໍ່ມີການອະນຸມັດ', 'no_attached_files' => 'ບໍ່ມີການແນບໄຟລມາ', +'no_backup_dir' => '', 'no_current_version' => 'ເຈົ້າກຳລັງນຳໄຊ້ເວີຊັນເກົ່າຄື ຊິສ DMS. ສວນເວີຊັນທີ່ມີຢູ່ລ້າສຸດຄື [latestversion]', 'no_default_keywords' => 'ບໍ່ມີຄຳຫລັກ', 'no_docs_checked_out' => 'ບໍ່ມີເອກະສານທີ່ເອົາອອກໄປ', @@ -1339,6 +1340,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'ເປີດໄຊ້ງານການນັບເອກະສານ/ໂຟລເດີນັບຊໍ້າ', 'settings_enableRecursiveCount_desc' => 'ຫາກເປີດໄຊ້ງານຈຳນວນເອກະສານແລະໂຟລເດີໃນມຸມມອງຂອງໂຟລເດີຈະຖືກກຳນົດໂດຍນັບວັດຖຸທັງໝົດໂດຍປະມວນຜົນໂຟລເດີໂຟລເດີຊຳ, ນັບເກະສານ ແລະໂຟລເດີທີຜູ້ໄຊ້ສາມາດເຂົ້າເຖິງໄດ້', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'ເປີກການໄຊ້ງານການແກ້ໄຂເອກະສານ', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 0a58e0506..20bc78f30 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 (770), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) +// Translators: Admin (772), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270) $text = array( '2_factor_auth' => '2-factor-authenticatie', @@ -833,6 +833,7 @@ URL: [url]', 'no_action' => 'Geen actie nodig', 'no_approval_needed' => 'Geen goedkeuring gaande.', 'no_attached_files' => 'Geen bijlagen', +'no_backup_dir' => '', 'no_current_version' => 'U werkt met een oude versie van SeedDMS. De laatste versie beschikbaar is [latestversion].', 'no_default_keywords' => 'Geen Sleutelwoorden beschikbaar', 'no_docs_checked_out' => 'Geen documenten in gebruik genomen', @@ -955,7 +956,7 @@ URL: [url]', 'receipt_status' => 'Status ontvangst', 'receipt_summary' => 'Samenvatting', 'receipt_update_failed' => 'Update ontvangst mislukt', -'recent_uploads' => '', +'recent_uploads' => 'Recent Uploads', 'reception' => 'bestemming', 'reception_acknowleged' => 'bestemming OK', 'reception_noaction' => 'Geen actie', @@ -1336,6 +1337,8 @@ Name: [username] 'settings_enableReceiptWorkflow_desc' => 'Aanzetten workflow-stappen', 'settings_enableRecursiveCount' => 'Document/ map teller herhalen toestaan', 'settings_enableRecursiveCount_desc' => 'If turned on, the number of documents and folders in the folder view will be determined by counting all objects by recursively processing the folders and counting those documents and folders the user is allowed to access.', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Herzieningsworkflow aanzetten', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 4716d5be8..75913e9ef 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/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 (831), netixw (84), romi (93), uGn (112) +// Translators: Admin (832), netixw (84), romi (93), uGn (112) $text = array( '2_factor_auth' => '', @@ -822,6 +822,7 @@ URL: [url]', 'no_action' => 'Żadne działanie nie jest wymagane', 'no_approval_needed' => 'Nie ma dokumentów oczekujących na akceptację.', 'no_attached_files' => 'Brak załączonych plików', +'no_backup_dir' => '', 'no_current_version' => '', 'no_default_keywords' => 'Nie ma słów kluczowych', 'no_docs_checked_out' => '', @@ -932,7 +933,7 @@ Jeśli nadal będą problemy z zalogowaniem, prosimy o kontakt z administratorem 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'Najnowsze dodania', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1270,6 +1271,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Włącz licznik rekurencji dokumentu/folderu', 'settings_enableRecursiveCount_desc' => 'Jeżeli jest włączone, to liczba dokumentów i folderów w widoku będzie ustalona poprzez zliczenie wszystkich obiektów przez rekurencyjnie przetwarzane foldery i policzenia tych dokumentów i folderów do których użytkownik ma dostęp', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 790e080b6..46e715528 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1719), flaviove (627), lfcristofoli (352) +// Translators: Admin (1721), flaviove (627), lfcristofoli (352) $text = array( '2_factor_auth' => 'Autenticação de dois fatores', @@ -859,6 +859,7 @@ URL: [url]', 'no_action' => 'Nenhuma ação é requerida', 'no_approval_needed' => 'Nenhuma aprovação pendente.', 'no_attached_files' => 'Não há arquivos anexados', +'no_backup_dir' => '', 'no_current_version' => 'Você está executando uma versão antiga do SeedDMS. A última versão disponível é [latestversion].', 'no_default_keywords' => 'não há palavras-chave disponíveis', 'no_docs_checked_out' => 'Nenhum documento retirado', @@ -980,7 +981,7 @@ URL: [url]', 'receipt_status' => 'Estado', 'receipt_summary' => 'Resumo da entrada', 'receipt_update_failed' => 'Confirmação de entrada falhou', -'recent_uploads' => '', +'recent_uploads' => 'Uploads recentes', 'reception' => 'Entrada', 'reception_acknowleged' => 'Entrada reconhecida', 'reception_noaction' => 'Nenhuma ação', @@ -1358,8 +1359,10 @@ Nome: [username] 'settings_enableReceiptWorkflow_desc' => 'Habilitar para ativar o fluxo de trabalho para confirmar a entrada do documento.', 'settings_enableRecursiveCount' => 'Ativar contagem de documentos/pasta recursiva', 'settings_enableRecursiveCount_desc' => 'Se estiver ativado, o número de documentos e pastas na exibição de pasta será determinada pela contagem de todos os objetos de forma recursiva proceáando as pastas e contando eáes documentos e pastas que o usuário tem permissão de acesso.', -'settings_enableRevisionOnVoteReject' => 'Rejeitar por um revisor', -'settings_enableRevisionOnVoteReject_desc' => 'Se definido, o documento será rejeitado se um revisor rejeitar o documento.', +'settings_enableRevisionOneVoteReject' => 'Rejeitar por um revisor', +'settings_enableRevisionOneVoteReject_desc' => '', +'settings_enableRevisionOnVoteReject' => '', +'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Habilitar revisão de documentos', 'settings_enableRevisionWorkflow_desc' => 'Habilitar para poder executar o fluxo de trabalho para revisar um documento após um determinado período de tempo.', 'settings_enableSelfReceipt' => 'Permitir a recepção de documentos para usuário conectado', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index fab5e2718..eae81c265 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 (1086), balan (87) +// Translators: Admin (1087), balan (87) $text = array( '2_factor_auth' => '', @@ -834,6 +834,7 @@ URL: [url]', 'no_action' => 'Nici o acțiune necesară', 'no_approval_needed' => 'Nici o aprobare în așteptare.', 'no_attached_files' => 'Nu sunt fișiere atașate', +'no_backup_dir' => '', 'no_current_version' => 'Utilizați o versiune veche de SeedDMS. Cea mai recentă versiune disponibilă este [latestversion].', 'no_default_keywords' => 'Nu există cuvinte cheie disponibile', 'no_docs_checked_out' => 'Nu exista documente verificate', @@ -944,7 +945,7 @@ Dacă aveți în continuare probleme la autentificare, vă rugăm să contactaț 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'Incarcari recente', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1313,6 +1314,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Activați numararea recursiva pentru documente/foldere', 'settings_enableRecursiveCount_desc' => 'Dacă este activată, numărul de documente și foldere din vizualizarea unui director va fi determinat prin numărarea tuturor obiectelor recursiv din folderele unde accesul utilizatorului este permis.', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 164a90bb5..94cc06907 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1669) +// Translators: Admin (1671) $text = array( '2_factor_auth' => 'Двухфакторная аутентификация', @@ -531,7 +531,7 @@ URL: [url]', 'extension_manager' => 'Управление расширениями', 'extension_mgr_installed' => '', 'extension_mgr_no_upload' => '', -'extension_mgr_repository' => '', +'extension_mgr_repository' => 'Установленные', 'extension_version_list' => '', 'february' => 'Февраль', 'file' => 'Файл', @@ -833,6 +833,7 @@ URL: [url]', 'no_action' => 'Действие не требуется', 'no_approval_needed' => 'Утверждение не требуется', 'no_attached_files' => 'Нет вложений', +'no_backup_dir' => '', 'no_current_version' => 'Вы используете старую версию SeedDMS. Последняя доступная версия [latestversion].', 'no_default_keywords' => 'Нет меток', 'no_docs_checked_out' => 'Нет документов на рассмотрении', @@ -946,7 +947,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => 'Сводка по получению', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'Последние загрузки', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1320,6 +1321,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => 'Включить для активации функции подтверждения получения документа', 'settings_enableRecursiveCount' => 'Рекурсивно подсчитывать
      документы и каталоги', 'settings_enableRecursiveCount_desc' => 'Если включено, количество документов и каталогов в виде каталога будет определятся рекурсивным подсчётом всех документов и каталогов разрешённых для доступа пользователя.', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Включить процесс ревизии', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 652190545..752d1e628 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/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 (1225), destinqo (19), pS2017 (508), ssebech (4) +// Translators: Admin (1226), destinqo (19), pS2017 (508), ssebech (4) $text = array( '2_factor_auth' => '2-faktorové overovanie', @@ -860,6 +860,7 @@ URL: [url]', 'no_action' => 'Nič sa nevykoná', 'no_approval_needed' => 'Neprebieha žiadne schvaľovanie.', 'no_attached_files' => 'Žiadne prílohy', +'no_backup_dir' => '', 'no_current_version' => 'Neaktualizovaná verzia', 'no_default_keywords' => 'Nie sú dostupné žiadne kľúčové slová.', 'no_docs_checked_out' => 'No documents checked out', @@ -1360,8 +1361,10 @@ Meno: [username] 'settings_enableReceiptWorkflow_desc' => 'Enable, to turn on the workflow to acknowledge document reception.', 'settings_enableRecursiveCount' => 'Enable recursive document/folder count', 'settings_enableRecursiveCount_desc' => 'If turned on, the number of documents and folders in the folder view will be determined by counting all objects by recursively processing the folders and counting those documents and folders the user is allowed to access.', -'settings_enableRevisionOnVoteReject' => 'Reject by one revisor', -'settings_enableRevisionOnVoteReject_desc' => 'If set the document will be reject if one revisor rejects the document.', +'settings_enableRevisionOneVoteReject' => 'Reject by one revisor', +'settings_enableRevisionOneVoteReject_desc' => '', +'settings_enableRevisionOnVoteReject' => '', +'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Povoliť revíziu dokumentov', 'settings_enableRevisionWorkflow_desc' => 'Enable, to be able to run the workflow for revising a document after a given period of time.', 'settings_enableSelfReceipt' => 'Allow reception of documents for logged in user', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index 1607dd21f..327b150f0 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 (1160), MagnusI (649), tmichelfelder (106) +// Translators: Admin (1161), MagnusI (649), tmichelfelder (106) $text = array( '2_factor_auth' => '2-faktors autentisering', @@ -847,6 +847,7 @@ URL: [url]', 'no_action' => 'Ingen åtgärd behövs.', 'no_approval_needed' => 'Inget godkännande behövs.', 'no_attached_files' => 'Inga filer har bifogats.', +'no_backup_dir' => '', 'no_current_version' => 'Du har en gammal version av SeedDMS. Senaste versionen är [latestversion].', 'no_default_keywords' => 'Inga nyckelord tillgängliga', 'no_docs_checked_out' => 'Inga utcheckade dokument', @@ -954,7 +955,7 @@ Om du fortfarande har problem med inloggningen, kontakta administratören.', 'receipt_status' => 'Status', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'Senast uppladdat', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => 'Ingen åtgärd', @@ -1333,6 +1334,8 @@ Kommentar: [comment]', 'settings_enableReceiptWorkflow_desc' => 'Aktivera notifiering av meddelanden i arbetsflödet.', 'settings_enableRecursiveCount' => 'Aktivera rekursiv räkning av dokument/katalog', 'settings_enableRecursiveCount_desc' => 'Om detta sätts på, kommer antal dokument och kataloger i katalogvyn fastställas genom att räkna alla objekter via rekursiv hantering av alla kataloger och räkna dessa dokument och kataloger som användaren har rättigheter till.', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Aktivera revidering av dokument', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index fa3a9b4ca..63b1ba7a3 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 (1087), aydin (83) +// Translators: Admin (1089), aydin (83) $text = array( '2_factor_auth' => '', @@ -828,6 +828,7 @@ URL: [url]', 'no_action' => 'İşlem gerekmiyor', 'no_approval_needed' => 'Onay bekleyen yok.', 'no_attached_files' => 'Ek dosya yok', +'no_backup_dir' => '', 'no_current_version' => 'Kullandığınız SeedDMS versiyonu eski görünüyor. Son versiyon [latestversion].', 'no_default_keywords' => 'Anahtar kelime yok', 'no_docs_checked_out' => '', @@ -940,7 +941,7 @@ Giriş yaparken halen sorun yaşıyorsanız lütfen sistem yöneticinizle görü 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'En son yüklenenler', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1292,6 +1293,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => 'Özyinelenen doküman/klasör sayımını etkinleştir', 'settings_enableRecursiveCount_desc' => 'Aktif hale getirildiğinde, klasör içindeki dokümanlar ve diğer klasörlerin sayısı kullanıcının erişim hakkı olan tüm nesnelerin özyinelemeli olarak sayılması yolu ile bulunur.', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 1379c1e32..2d6dc128c 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/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 (1338) +// Translators: Admin (1339) $text = array( '2_factor_auth' => '', @@ -833,6 +833,7 @@ URL: [url]', 'no_action' => 'Дій не потрібно', 'no_approval_needed' => 'Затвердження не потрібно', 'no_attached_files' => 'Немає додатків', +'no_backup_dir' => '', 'no_current_version' => 'Ви використовуєте застарілу версію SeedDMS. Остання версія [latestversion].', 'no_default_keywords' => 'Немає ключових слів', 'no_docs_checked_out' => 'Немає документів на опрацюванні', @@ -946,7 +947,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => 'Підсумки отримання', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'Останні завантаження', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1313,6 +1314,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => 'Включіть для активації функції підтвердження отримання документу', 'settings_enableRecursiveCount' => 'Рекурсивно підраховувати
      документи і каталоги', 'settings_enableRecursiveCount_desc' => 'Якщо увімкнено, кількість документів і каталогів при перегляді каталогу буде підраховано рекурсивно для всіх документів до яких користувач має доступ.', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => 'Увімкнути процес ревізії', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index e688f1a7f..6b1896a55 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (765), archonwang (469), fengjohn (5), yang86 (1) +// Translators: Admin (766), archonwang (469), fengjohn (5), yang86 (1) $text = array( '2_factor_auth' => '双重认证', @@ -830,6 +830,7 @@ URL: [url]', 'no_action' => '无动作请求', 'no_approval_needed' => '无待审核的文件', 'no_attached_files' => '无附件', +'no_backup_dir' => '', 'no_current_version' => '', 'no_default_keywords' => '无关键字', 'no_docs_checked_out' => '文档未签出', @@ -945,7 +946,7 @@ URL: [url]', 'receipt_status' => '状态', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => '最近上传', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1294,6 +1295,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', 'settings_enableRecursiveCount_desc' => '', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '启用文档修订记录', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 207cfce69..14e0e47e3 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/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 (2417) +// Translators: Admin (2418) $text = array( '2_factor_auth' => '', @@ -731,6 +731,7 @@ URL: [url]', 'no_action' => '無動作請求', 'no_approval_needed' => '無待審核的檔', 'no_attached_files' => '無附件', +'no_backup_dir' => '', 'no_current_version' => '', 'no_default_keywords' => '無關鍵字', 'no_docs_checked_out' => '', @@ -827,7 +828,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => '最近上傳', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -1143,6 +1144,8 @@ URL: [url]', 'settings_enableReceiptWorkflow_desc' => '', 'settings_enableRecursiveCount' => '', 'settings_enableRecursiveCount_desc' => '', +'settings_enableRevisionOneVoteReject' => '', +'settings_enableRevisionOneVoteReject_desc' => '', 'settings_enableRevisionOnVoteReject' => '', 'settings_enableRevisionOnVoteReject_desc' => '', 'settings_enableRevisionWorkflow' => '', From 296e55e4814bdcc0b0a4d71871f4be27b9547c63 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 22 Oct 2019 06:57:08 +0200 Subject: [PATCH 219/467] add update of italian translation to 5.1.13 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index b9d21eb00..66d9ed9b8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -13,6 +13,7 @@ set to 'traditional without review'. - turn off auto complete for date fields - new hook pageNavigationBar in bootstrap, preContent, postContent in ViewDocument +- major update of italian translation -------------------------------------------------------------------------------- Changes in version 5.1.12 From 40dee4b9d2f9b8910bc71899597134c8cc570187 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 23 Oct 2019 09:05:04 +0200 Subject: [PATCH 220/467] hook addDocumentContentAttribute and addDocumentAttribute may return a string --- views/bootstrap/class.AddDocument.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index 7d4c25ee9..156ba0904 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -285,6 +285,8 @@ $(document).ready(function() { if($arr) { $this->formField($arr[0], $arr[1]); } + } elseif(is_string($arr)) { + echo $arr; } else { $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, '')); } @@ -342,6 +344,8 @@ $(document).ready(function() { $arr = $this->callHook('addDocumentContentAttribute', null, $attrdef); if(is_array($arr)) { $this->formField($arr[0], $arr[1]); + } elseif(is_string($arr)) { + echo $arr; } else { $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, '', 'attributes_version')); } From 75f3afdc84d63d28f297ad6bcf2ecf8ee0f502f6 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 23 Oct 2019 09:06:19 +0200 Subject: [PATCH 221/467] new hooks processConfig and showConfig hook 'showConfig' is anly called for extension variables if the type is set to 'hook'. 'processConfig' is called after the extension configuration is read --- views/bootstrap/class.Settings.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index c627bf913..a83cdf384 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -474,6 +474,8 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); --> $extconf) { + if($this->hasHook('processConfig')) + $extconf = $this->callHook('processConfig', $extname, $extconf); if($extconf['config']) { $this->showRawConfigHeadline("".$extconf['title']); foreach($extconf['config'] as $confkey=>$conf) { @@ -565,11 +567,14 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); } } break; + case 'hook': + echo $this->callHook('showConfig', $confkey, $extname, $extconf); + break; default: $this->showTextField("extensions[".$extname."][".$confkey."]", isset($settings->_extensions[$extname][$confkey]) ? $settings->_extensions[$extname][$confkey] : '', isset($conf['type']) ? $conf['type'] : '', isset($conf['placeholder']) ? $conf['placeholder'] : ''); } $html = ob_get_clean(); - $this->showConfigPlain($conf['title'], isset($conf['help']) ? $conf['help'] : '', $html); + $this->showConfigPlain($conf['title'], isset($conf['help']) ? $conf['help'] : '', $html); } } } From 38f2759c5fcef1d7dfd3fe4f904fefb076c9d7eb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 23 Oct 2019 09:08:53 +0200 Subject: [PATCH 222/467] extension config vars are only save to settings.xml if a value is set previously even empty values has been saved, they just needed to be defined in the extension configuration. This may break extensions which do not check if a config var is set. --- inc/inc.ClassSettings.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 6eb59977d..5561d2fd4 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -1039,12 +1039,27 @@ class Settings { /* {{{ */ { // search XML node $extnode = $extnodes->addChild('extension'); - $this->setXMLAttributValue($extnode, 'name', $name); + $this->setXMLAttributValue($extnode, 'name', $name); + /* New code saves all parameters of the extension which have been set + * in configuration form. + */ + foreach($extension as $fieldname=>$confvalue) { + if($confvalue) { + $parameter = $extnode->addChild('parameter'); + $parameter[0] = isset($extension[$fieldname]) ? (is_array($extension[$fieldname]) ? implode(',', $extension[$fieldname]) : $extension[$fieldname]) : ''; + $this->setXMLAttributValue($parameter, 'name', $fieldname); + } + } + /* Old code saves those parameters listed in the configuration + * of the extension. + */ + /* foreach($GLOBALS['EXT_CONF'][$name]['config'] as $fieldname=>$conf) { $parameter = $extnode->addChild('parameter'); $parameter[0] = isset($extension[$fieldname]) ? (is_array($extension[$fieldname]) ? implode(',', $extension[$fieldname]) : $extension[$fieldname]) : ''; $this->setXMLAttributValue($parameter, 'name', $fieldname); } + */ } // foreach From 65212329a74909579110a6af01b71ed2c570c6db Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 28 Oct 2019 08:23:27 +0100 Subject: [PATCH 223/467] fix invaled xml --- SeedDMS_Core/package.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index a791f4370..9447260fe 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -1660,7 +1660,6 @@ fix php warning if workflow state doesn' have next transition add method SeedDMS_Core_DatabaseAccess::setLogFp() - 2019-05-03 From ee88f44693067944ad3f70075cc1cb4fa0fd2ddb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 28 Oct 2019 09:14:07 +0100 Subject: [PATCH 224/467] fix php warning $iRev is probably not needed anymore, but kept for now --- views/bootstrap/class.MyDocuments.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.MyDocuments.php b/views/bootstrap/class.MyDocuments.php index a3a25d66a..9e5da1249 100644 --- a/views/bootstrap/class.MyDocuments.php +++ b/views/bootstrap/class.MyDocuments.php @@ -143,12 +143,12 @@ class SeedDMS_View_MyDocuments extends SeedDMS_Bootstrap_Style { $docIdx[$res["id"]][$res["version"]] = $res; } + $iRev = array(); // List the documents where a review has been requested. if($workflowmode == 'traditional') { $this->contentHeading(getMLText("documents_to_review")); $this->contentContainerStart(); $printheader=true; - $iRev = array(); $dList = array(); foreach ($reviewStatus["indstatus"] as $st) { From b705fdab44f599b8838451f08642bb9bbd058b42 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 28 Oct 2019 09:26:35 +0100 Subject: [PATCH 225/467] fix up to parent button on ViewFolder page --- views/bootstrap/class.ViewFolder.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index b45acfff2..ab433cfeb 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -163,6 +163,15 @@ console.log("location: " + document.location + ", state: " + JSON.stringify(even console.log(JSON.stringify(event.state)); window.location = document.location; }; +/* catch click on 'goto parent button' */ +$('body').on('click', '#goto-parent', function(ev) { + attr_id = $(ev.currentTarget).data('parentid'); + folderSelected(attr_id, ''); + $([document.documentElement, document.body]).animate({ + scrollTop: 200 + }, 200); +}); +/* catch click on a folder row in the list folders and documents */ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) { attr_id = $(ev.currentTarget).parent().attr('id').split('-')[3]; folderSelected(attr_id, ''); @@ -170,6 +179,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) scrollTop: 200 }, 200); }); +/* catch click on a document row in the list folders and documents */ $('body').on('click', '[id^=\"table-row-document\"] td:nth-child(2)', function(ev) { attr_id = $(ev.currentTarget).parent().attr('id').split('-')[3]; window.location = '../out/out.ViewDocument.php?documentid=' + attr_id; @@ -326,7 +336,7 @@ $('body').on('click', '.order-btn', function(ev) { else { print ""; print "\n\n"; - print "\n"; + print "\n"; print ""; + return "getName(), ENT_QUOTES)."\">"; } /* }}} */ function documentListRowEnd($document) { /* {{{ */ @@ -2422,7 +2422,7 @@ $(document).ready( function() { * @return string starting tr tag for a table */ function folderListRowStart($folder, $class='') { /* {{{ */ - return "getID()."\" draggable=\"true\" data-droptarget=\"folder_".$folder->getID()."\" rel=\"folder_".$folder->getID()."\" class=\"folder table-row-folder droptarget".($class ? ' '.$class : '')."\" data-uploadformtoken=\"".createFormKey('')."\" formtoken=\"".createFormKey('')."\">"; + return "getID()."\" draggable=\"true\" data-droptarget=\"folder_".$folder->getID()."\" rel=\"folder_".$folder->getID()."\" class=\"folder table-row-folder droptarget".($class ? ' '.$class : '')."\" data-uploadformtoken=\"".createFormKey('')."\" formtoken=\"".createFormKey('')."\" data-name=\"".htmlspecialchars($folder->getName(), ENT_QUOTES)."\">"; } /* }}} */ function folderListRowEnd($folder) { /* {{{ */ From b9bbb8739f28ba53a26a6ac046693ac115d6c29c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 7 Nov 2019 19:55:55 +0100 Subject: [PATCH 231/467] add action data (currently not used) --- views/bootstrap/class.ViewFolder.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index ab433cfeb..3feed0202 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -36,6 +36,16 @@ require_once("SeedDMS/Preview.php"); */ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style { + function data() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + + $jsondata = array('name'=>$folder->getName()); + header('Content-Type: application/json'); + echo json_encode($jsondata); + } /* }}} */ + function getAccessModeText($defMode) { /* {{{ */ switch($defMode) { case M_NONE: From ff0d550144657874d506ca11789731fb86c4fec1 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 7 Nov 2019 19:56:43 +0100 Subject: [PATCH 232/467] show target and source document/folder when moving on object --- styles/bootstrap/application.js | 54 ++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 217d1c3a7..dfba97ef8 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -20,6 +20,17 @@ chzn_template_func = function (state) { var $newstate = $(html); return $newstate; }; +function escapeHtml(text) { + var map = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + return text.replace(/[&<>"']/g, function(m) { return map[m]; }); +} $(document).ready( function() { /* close popovers when clicking somewhere except in the popover or the * remove icon @@ -166,9 +177,7 @@ $(document).ready( function() { { command: 'addtoclipboard', type: type, id: id }, function(data) { if(data.success) { -// $("#main-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=mainclipboard') $("#main-clipboard").html('Loading').load('../out/out.Clipboard.php?action=mainclipboard') - //$("#menu-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=menuclipboard') $("#menu-clipboard").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard') noty({ text: attr_msg, @@ -203,9 +212,7 @@ $(document).ready( function() { { command: 'removefromclipboard', type: type, id: id }, function(data) { if(data.success) { -// $("#main-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=mainclipboard') $("#main-clipboard").html('Loading').load('../out/out.Clipboard.php?action=mainclipboard') - //$("#menu-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=menuclipboard') $("#menu-clipboard").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard') noty({ text: attr_msg, @@ -443,9 +450,7 @@ $(document).ready( function() { success: function(data){ if(data.success) { if(element.data('param1') == 'command=clearclipboard') { -// $("#main-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=mainclipboard') $("#main-clipboard").html('Loading').load('../out/out.Clipboard.php?action=mainclipboard') - //$("#menu-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=menuclipboard') $("#menu-clipboard").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard') } noty({ @@ -481,16 +486,12 @@ function onAddClipboard(ev) { /* {{{ */ source_type = source_info.type; source_id = source_info.id; formtoken = source_info.formtoken; -// source_type = ev.originalEvent.dataTransfer.getData("type"); -// source_id = ev.originalEvent.dataTransfer.getData("id"); if(source_type == 'document' || source_type == 'folder') { $.get('../op/op.Ajax.php', { command: 'addtoclipboard', type: source_type, id: source_id }, function(data) { if(data.success) { -// $("#main-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=mainclipboard') $("#main-clipboard").html('Loading').load('../out/out.Clipboard.php?action=mainclipboard') - //$("#menu-clipboard").html('Loading').load('../op/op.Ajax.php?command=view&view=menuclipboard') $("#menu-clipboard").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard') noty({ text: data.message, @@ -757,6 +758,7 @@ $(document).ready(function() { /* {{{ */ attr_rel = $(e.currentTarget).data('droptarget'); target_type = attr_rel.split("_")[0]; target_id = attr_rel.split("_")[1]; + target_name = $(e.currentTarget).data('name') if(target_type == 'folder') { var files = e.originalEvent.dataTransfer.files; if(files.length > 0) { @@ -769,7 +771,10 @@ $(document).ready(function() { /* {{{ */ formtoken = source_info.formtoken; console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id); if(source_type == 'document') { - bootbox.dialog(trans.confirm_move_document, [{ + var bootbox_message = trans.confirm_move_document; + if(source_info.name) + bootbox_message += "

      "+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

      "; + bootbox.dialog(bootbox_message, [{ "label" : " "+trans.move_document, "class" : "btn-danger", "callback": function() { @@ -810,7 +815,10 @@ $(document).ready(function() { /* {{{ */ url = "../out/out.MoveDocument.php?documentid="+source_id+"&targetid="+target_id; // document.location = url; } else if(source_type == 'folder' && source_id != target_id) { - bootbox.dialog(trans.confirm_move_folder, [{ + var bootbox_message = trans.confirm_move_folder; + if(source_info.name) + bootbox_message += "

      "+escapeHtml(source_info.name)+' '+escapeHtml(target_name)+"

      "; + bootbox.dialog(bootbox_message, [{ "label" : " "+trans.move_folder, "class" : "btn-danger", "callback": function() { @@ -947,8 +955,22 @@ $(document).ready(function() { /* {{{ */ var dragStartInfo = { id : attr_rel.split("_")[1], type : "folder", - formtoken : $(e.target).attr('formtoken') + formtoken : $(e.target).attr('formtoken'), + name: $(e.target).data('name') }; + /* Currently not used + $.ajax({url: '../out/out.ViewFolder.php', + type: 'GET', + dataType: "json", + data: {action: 'data', folderid: attr_rel.split("_")[1]}, + success: function(data) { + if(data) { + dragStartInfo.source = data; + } + }, + timeout: 3000 + }); + */ e.originalEvent.dataTransfer.setData("text", JSON.stringify(dragStartInfo)); }); @@ -959,7 +981,8 @@ $(document).ready(function() { /* {{{ */ var dragStartInfo = { id : attr_rel.split("_")[1], type : "document", - formtoken : $(e.target).attr('formtoken') + formtoken : $(e.target).attr('formtoken'), + name: $(e.target).data('name') }; e.originalEvent.dataTransfer.setData("text", JSON.stringify(dragStartInfo)); }); @@ -1014,9 +1037,6 @@ $(document).ready(function() { /* {{{ */ source_type = source_info.type; source_id = source_info.id; formtoken = source_info.formtoken; -// source_type = e.originalEvent.dataTransfer.getData("type"); -// source_id = e.originalEvent.dataTransfer.getData("id"); -// formtoken = e.originalEvent.dataTransfer.getData("formtoken"); if(source_type == 'document') { bootbox.dialog(trans.confirm_move_document, [{ "label" : " "+trans.move_document, From 1c08d8370421edc907febee773db9050cb21a2a2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 7 Nov 2019 21:59:02 +0100 Subject: [PATCH 233/467] need M_ALL to set revisor --- inc/inc.ClassAccessOperation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/inc.ClassAccessOperation.php b/inc/inc.ClassAccessOperation.php index 14dd07413..fca3e73b1 100644 --- a/inc/inc.ClassAccessOperation.php +++ b/inc/inc.ClassAccessOperation.php @@ -187,7 +187,7 @@ class SeedDMS_AccessOperation { if($document->isType('document')) { if($latestContent = $document->getLatestContent()) { $status = $latestContent->getStatus(); - if ((($this->settings->_enableVersionModification && ($document->getAccessMode($this->user) >= M_READWRITE)) || $this->user->isAdmin()) && ($status["status"]==S_RELEASED || $status["status"]==S_IN_REVISION)) { + if ((($this->settings->_enableVersionModification && ($document->getAccessMode($this->user) == M_ALL)) || $this->user->isAdmin()) && ($status["status"]==S_RELEASED || $status["status"]==S_IN_REVISION)) { return true; } } From 7362bf192b176345d7e909b0b952ee8af8221203 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 8 Nov 2019 08:03:02 +0100 Subject: [PATCH 234/467] add method check_access() just like in SeedDMS_View_Common --- inc/inc.ClassControllerCommon.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/inc/inc.ClassControllerCommon.php b/inc/inc.ClassControllerCommon.php index 618fc1ca3..8b465568c 100644 --- a/inc/inc.ClassControllerCommon.php +++ b/inc/inc.ClassControllerCommon.php @@ -246,4 +246,25 @@ class SeedDMS_Controller_Common { return false; } /* }}} */ + /** + * Check if the access on the contoller with given name or the current + * controller itself may be accessed. + * + * The function requires the parameter 'accessobject' to be available in the + * controller, because it calls SeedDMS_AccessOperation::check_controller_access() + * to check access rights. If the the optional $name is not set the + * current controller is used. + * + * @param string|array $name name of controller or list of controller names + * @return boolean true if access is allowed otherwise false + */ + protected function check_access($name='') { /* {{{ */ + if(!$name) + $name = $this; + if(!isset($this->params['accessobject'])) + return false; + $access = $this->params['accessobject']->check_controller_access($name); + return $access; + } /* }}} */ + } From 4f28cd19d14801daa5586434638ccc990d2201db Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 11 Nov 2019 15:39:47 +0100 Subject: [PATCH 235/467] show preview for all images supported by browser --- views/bootstrap/class.ViewDocument.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index ffb59411b..27461d1a1 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -384,6 +384,10 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { contentHeading(getMLText("preview")); ?> From 28e25498664faf90a3aabb4b8ad5653b87deb7e0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 12 Nov 2019 15:22:00 +0100 Subject: [PATCH 236/467] menuTasks returns complete menuItem --- styles/bootstrap/application.js | 2 +- views/bootstrap/class.Bootstrap.php | 9 +++++---- views/bootstrap/class.Tasks.php | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index dfba97ef8..55d587257 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -1162,7 +1162,7 @@ $(document).ready(function() { /* {{{ */ if((typeof data.data.approval != 'undefined' && approval_count != data.data.approval.length) || (typeof data.data.review != 'undefined' && review_count != data.data.review.length) || (typeof data.data.workflow != 'undefined' && workflow_count != data.data.workflow.length)) { - $("#menu-tasks > ul > li").html('Loading').hide().load('../out/out.Tasks.php?action=menutasks').fadeIn('500') + $("#menu-tasks").html('Loading').hide().load('../out/out.Tasks.php?action=menutasks').fadeIn('500') approval_count = typeof data.data.approval != 'undefined' ? data.data.approval.length : 0; review_count = typeof data.data.review != 'undefined' ? data.data.review.length : 0; workflow_count = typeof data.data.workflow != 'undefined' ? data.data.workflow.length : 0; diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 95b11d2ea..d8c148740 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -336,11 +336,12 @@ background-image: linear-gradient(to bottom, #882222, #111111);; if($this->params['enablemenutasks']) { echo "
      "; - echo "
        \n"; - echo "
      • \n"; + echo "
        "; +// echo "
          \n"; +// echo "
        • \n"; // echo $this->menuTasks(array('review'=>array(), 'approval'=>array(), 'receipt'=>array(), 'revision'=>array())); - echo "
        • \n"; - echo "
        \n"; +// echo "
      • \n"; +// echo "
      \n"; echo "
      "; //$this->addFooterJS('checkTasks();'); } diff --git a/views/bootstrap/class.Tasks.php b/views/bootstrap/class.Tasks.php index 4a8572366..8146e9beb 100644 --- a/views/bootstrap/class.Tasks.php +++ b/views/bootstrap/class.Tasks.php @@ -138,8 +138,8 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style { $tasks = $this->__myTasks(); $content = ''; -// $content .= " \n"; + $content .= " \n"; + $content .= " \n"; echo $content; } /* }}} */ From 05f7807b05c71ceae2fa693754816daf7e95ca57 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 12 Nov 2019 15:28:19 +0100 Subject: [PATCH 237/467] use update on div.ajax for updating tasks in menu --- styles/bootstrap/application.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/styles/bootstrap/application.js b/styles/bootstrap/application.js index 55d587257..da9d4e291 100644 --- a/styles/bootstrap/application.js +++ b/styles/bootstrap/application.js @@ -1162,7 +1162,8 @@ $(document).ready(function() { /* {{{ */ if((typeof data.data.approval != 'undefined' && approval_count != data.data.approval.length) || (typeof data.data.review != 'undefined' && review_count != data.data.review.length) || (typeof data.data.workflow != 'undefined' && workflow_count != data.data.workflow.length)) { - $("#menu-tasks").html('Loading').hide().load('../out/out.Tasks.php?action=menutasks').fadeIn('500') +// $("#menu-tasks").html('Loading').hide().load('../out/out.Tasks.php?action=menutasks').fadeIn('500') + $('#menu-tasks > div.ajax').trigger('update', {folderid: seeddms_folder}); approval_count = typeof data.data.approval != 'undefined' ? data.data.approval.length : 0; review_count = typeof data.data.review != 'undefined' ? data.data.review.length : 0; workflow_count = typeof data.data.workflow != 'undefined' ? data.data.workflow.length : 0; From 2b00423225e9263c0da0d72d7891e90bdc157d42 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 19 Nov 2019 07:25:53 +0100 Subject: [PATCH 238/467] get latest version for later checking could be used to filter out older documents --- views/bootstrap/class.RemoveUserFromProcesses.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/views/bootstrap/class.RemoveUserFromProcesses.php b/views/bootstrap/class.RemoveUserFromProcesses.php index f8cca27e3..0d1e7c5ca 100644 --- a/views/bootstrap/class.RemoveUserFromProcesses.php +++ b/views/bootstrap/class.RemoveUserFromProcesses.php @@ -54,6 +54,8 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { $reviewStatus = $rmuser->getReviewStatus(); $tmpr = array(); foreach($reviewStatus['indstatus'] as $ri) { + $doc = $dms->getDocument($ri['documentID']); + $ri['latest'] = $doc->getLatestContent()->getVersion(); if(isset($tmpr[$ri['status']])) $tmpr[$ri['status']][] = $ri; else @@ -63,6 +65,8 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { $approvalStatus = $rmuser->getApprovalStatus(); $tmpa = array(); foreach($approvalStatus['indstatus'] as $ai) { + $doc = $dms->getDocument($ri['documentID']); + $ai['latest'] = $doc->getLatestContent()->getVersion(); if(isset($tmpa[$ai['status']])) $tmpa[$ai['status']][] = $ai; else From 096b117e348fb2e7f4426591980d46c79f9f6e05 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 19 Nov 2019 08:46:43 +0100 Subject: [PATCH 239/467] create access object --- out/out.RemoveUser.php | 1 + out/out.RemoveUserFromProcesses.php | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/out/out.RemoveUser.php b/out/out.RemoveUser.php index f2289f49a..08b6b161c 100644 --- a/out/out.RemoveUser.php +++ b/out/out.RemoveUser.php @@ -57,6 +57,7 @@ $allusers = $dms->getAllUsers($settings->_sortUsersInList); if($view) { $view->setParam('rmuser', $rmuser); $view->setParam('allusers', $allusers); + $view->setParam('accessobject', $accessop); $view($_GET); exit; } diff --git a/out/out.RemoveUserFromProcesses.php b/out/out.RemoveUserFromProcesses.php index 61aedcbb3..682c84219 100644 --- a/out/out.RemoveUserFromProcesses.php +++ b/out/out.RemoveUserFromProcesses.php @@ -20,6 +20,7 @@ if(!isset($settings)) require_once("../inc/inc.Settings.php"); +require_once("inc/inc.LogInit.php"); require_once("inc/inc.Language.php"); require_once("inc/inc.Init.php"); require_once("inc/inc.Extension.php"); @@ -29,9 +30,9 @@ require_once("inc/inc.Authentication.php"); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); - -if (!$user->isAdmin()) { - UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); +$accessop = new SeedDMS_AccessOperation($dms, $user, $settings); +if (!$accessop->check_view_access($view, $_GET)) { + UI::exitError(getMLText("admin_tools"),getMLText("access_denied"), false, $isajax); } if (!isset($_GET["userid"]) || !is_numeric($_GET["userid"]) || intval($_GET["userid"])<1) { @@ -49,6 +50,7 @@ if ($rmuser->getID()==$user->getID()) { if($view) { $view->setParam('rmuser', $rmuser); + $view->setParam('accessobject', $accessop); $view($_GET); exit; } From 3a62afd084ee0ee4640770a515c33f3558b4d6e7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 19 Nov 2019 09:34:41 +0100 Subject: [PATCH 240/467] count processes in latest version --- .../class.RemoveUserFromProcesses.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/views/bootstrap/class.RemoveUserFromProcesses.php b/views/bootstrap/class.RemoveUserFromProcesses.php index 0d1e7c5ca..ab3d8d27a 100644 --- a/views/bootstrap/class.RemoveUserFromProcesses.php +++ b/views/bootstrap/class.RemoveUserFromProcesses.php @@ -53,9 +53,12 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { getReviewStatus(); $tmpr = array(); + $cr = array("-2"=>0, '-1'=>0, '0'=>0, '1'=>0); foreach($reviewStatus['indstatus'] as $ri) { $doc = $dms->getDocument($ri['documentID']); $ri['latest'] = $doc->getLatestContent()->getVersion(); + if($ri['latest'] == $ri['version']) + $cr[$ri['status']]++; if(isset($tmpr[$ri['status']])) $tmpr[$ri['status']][] = $ri; else @@ -64,9 +67,12 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { $approvalStatus = $rmuser->getApprovalStatus(); $tmpa = array(); + $ca = array("-2"=>0, '-1'=>0, '0'=>0, '1'=>0); foreach($approvalStatus['indstatus'] as $ai) { $doc = $dms->getDocument($ri['documentID']); $ai['latest'] = $doc->getLatestContent()->getVersion(); + if($ai['latest'] == $ai['version']) + $ca[$ai['status']]++; if(isset($tmpa[$ai['status']])) $tmpa[$ai['status']][] = $ai; else @@ -77,7 +83,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -86,7 +92,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -95,7 +101,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -105,7 +111,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -114,7 +120,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -123,7 +129,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      From e20d4e492f5dcee8847b13717639eb55182d22fb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 19 Nov 2019 10:03:55 +0100 Subject: [PATCH 241/467] output processes in old versions --- .../class.RemoveUserFromProcesses.php | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/views/bootstrap/class.RemoveUserFromProcesses.php b/views/bootstrap/class.RemoveUserFromProcesses.php index cf01299d1..db1f8ad60 100644 --- a/views/bootstrap/class.RemoveUserFromProcesses.php +++ b/views/bootstrap/class.RemoveUserFromProcesses.php @@ -81,7 +81,12 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { $receiptStatus = $rmuser->getReceiptStatus(); $tmpb = array(); + $cb = array("-2"=>0, '-1'=>0, '0'=>0, '1'=>0); foreach($receiptStatus['indstatus'] as $ai) { + $doc = $dms->getDocument($ai['documentID']); + $ai['latest'] = $doc->getLatestContent()->getVersion(); + if($ai['latest'] == $ai['version']) + $cb[$ai['status']]++; if(isset($tmpb[$ai['status']])) $tmpb[$ai['status']][] = $ai; else @@ -90,7 +95,12 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { $revisionStatus = $rmuser->getRevisionStatus(); $tmpc = array(); + $cc = array("-3"=>0, "-2"=>0, '-1'=>0, '0'=>0, '1'=>0); foreach($revisionStatus['indstatus'] as $ai) { + $doc = $dms->getDocument($ai['documentID']); + $ai['latest'] = $doc->getLatestContent()->getVersion(); + if($ai['latest'] == $ai['version']) + $cc[$ai['status']]++; if(isset($tmpc[$ai['status']])) $tmpc[$ai['status']][] = $ai; else @@ -157,7 +167,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -166,7 +176,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -175,7 +185,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -185,7 +195,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -194,7 +204,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -203,7 +213,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      @@ -212,7 +222,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style {
      From 4aef495c03c62e8585c70230ac3f78ac282dfd1b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 19 Nov 2019 10:04:49 +0100 Subject: [PATCH 242/467] fix wrong counting of documents --- views/bootstrap/class.RemoveUserFromProcesses.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.RemoveUserFromProcesses.php b/views/bootstrap/class.RemoveUserFromProcesses.php index ab3d8d27a..768f09c49 100644 --- a/views/bootstrap/class.RemoveUserFromProcesses.php +++ b/views/bootstrap/class.RemoveUserFromProcesses.php @@ -69,7 +69,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { $tmpa = array(); $ca = array("-2"=>0, '-1'=>0, '0'=>0, '1'=>0); foreach($approvalStatus['indstatus'] as $ai) { - $doc = $dms->getDocument($ri['documentID']); + $doc = $dms->getDocument($ai['documentID']); $ai['latest'] = $doc->getLatestContent()->getVersion(); if($ai['latest'] == $ai['version']) $ca[$ai['status']]++; From 5ab528af72aeb7a6a1747f61e7ad04ff4d7753c7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 19 Nov 2019 10:28:51 +0100 Subject: [PATCH 243/467] many more translation and new keys --- languages/ar_EG/lang.inc | 24 +++++++++++++++++++----- languages/bg_BG/lang.inc | 14 ++++++++++++++ languages/ca_ES/lang.inc | 14 ++++++++++++++ languages/cs_CZ/lang.inc | 14 ++++++++++++++ languages/de_DE/lang.inc | 16 +++++++++++++++- languages/el_GR/lang.inc | 14 ++++++++++++++ languages/en_GB/lang.inc | 16 +++++++++++++++- languages/es_ES/lang.inc | 28 +++++++++++++++++++++------- languages/fr_FR/lang.inc | 18 ++++++++++++++++-- languages/hr_HR/lang.inc | 14 ++++++++++++++ languages/hu_HU/lang.inc | 14 ++++++++++++++ languages/it_IT/lang.inc | 14 ++++++++++++++ languages/ko_KR/lang.inc | 14 ++++++++++++++ languages/lo_LA/lang.inc | 14 ++++++++++++++ languages/nl_NL/lang.inc | 14 ++++++++++++++ languages/pl_PL/lang.inc | 30 ++++++++++++++++++++++-------- languages/pt_BR/lang.inc | 14 ++++++++++++++ languages/ro_RO/lang.inc | 26 ++++++++++++++++++++------ languages/ru_RU/lang.inc | 28 +++++++++++++++++++++------- languages/sk_SK/lang.inc | 14 ++++++++++++++ languages/sv_SE/lang.inc | 14 ++++++++++++++ languages/tr_TR/lang.inc | 14 ++++++++++++++ languages/uk_UA/lang.inc | 14 ++++++++++++++ languages/zh_CN/lang.inc | 14 ++++++++++++++ languages/zh_TW/lang.inc | 14 ++++++++++++++ 25 files changed, 387 insertions(+), 37 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index 6a99a05a9..fe76d37c6 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1307) +// Translators: Admin (1311) $text = array( '2_factor_auth' => '', @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'و', 'apply' => 'تطبيق', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'طلب الموافقة تم الغاؤه', @@ -425,13 +428,14 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => 'ملف من مجلد التجميع', 'dropfolder_folder' => '', +'dropfolder_metadata' => '', 'dropupload' => 'رفع سريع', 'drop_files_here' => 'أفلت الملفات هنا!', 'dump_creation' => 'انشاء مستخرج من قاعدة البيانات', 'dump_creation_warning' => 'من خلال تلك العملية يمكنك انشاء ملف مستخرج من محتوى قاعدة البيانات. بعد انشاء الملف المستخرج سيتم حفظه في مجلد البيانات الخاص بسيرفرك', 'dump_list' => 'ملف مستخرج حالي', 'dump_remove' => 'ازالة الملف المستخرج', -'duplicates' => '', +'duplicates' => 'ﻢﻛﺭﺭﺓ', 'duplicate_content' => '', 'edit' => 'تعديل', 'edit_attributes' => 'تعديل السمات', @@ -913,8 +917,11 @@ URL: [url]', 'quota_is_disabled' => '', 'quota_warning' => 'اقصى مساحة للقرص الصلب تم تعديها بمقدار [bytes]. من فضلك قم بمسح بعض المستندات او اصدارات سابقة منها', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -925,7 +932,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'ﺂﺧﺭ ﺎﻠﻤﻠﻓﺎﺗ ﺎﻠﻣﺮﻓﻮﻋﺓ"', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -978,8 +985,11 @@ URL: [url]', 'reviewer_already_assigned' => 'بالفعل تم تخصيصة كمراجع', 'reviewer_already_removed' => 'بالفعل تم ازالته من عملية المراجعة او تم تقديمه للمراجعة', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'طلب المراجعة تم مسحه', @@ -1007,9 +1017,13 @@ URL: [url]', 'revise_document' => '', 'revise_document_on' => '', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', @@ -1657,8 +1671,8 @@ URL: [url]', 'timeline_selected_item' => '', 'timeline_skip_add_file' => '', 'timeline_skip_scheduled_revision' => '', -'timeline_skip_status_change_-1' => '', -'timeline_skip_status_change_-3' => '', +'timeline_skip_status_change_-1' => 'ﻡﺮﻓﻮﺿﺓ', +'timeline_skip_status_change_-3' => 'ﻢﻨﺘﻬﻳﺓ', 'timeline_skip_status_change_0' => '', 'timeline_skip_status_change_1' => '', 'timeline_skip_status_change_2' => '', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 83741c002..a35fb8e69 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -86,11 +86,14 @@ $text = array( 'and' => 'и', 'apply' => 'Приложи', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'Запитване за утвърждаване за изтрит', @@ -378,6 +381,7 @@ $text = array( 'dropfolderdir_missing' => '', 'dropfolder_file' => 'Файл от drop папка', 'dropfolder_folder' => '', +'dropfolder_metadata' => '', 'dropupload' => 'Бърз ъплоуд', 'drop_files_here' => 'Пусни файла тук!', 'dump_creation' => 'Създаване дъмп на БД', @@ -812,8 +816,11 @@ $text = array( 'quota_is_disabled' => '', 'quota_warning' => 'Вашето max. използуване на диска е превишена с [bytes]. Please remove documents or previous versions.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -861,8 +868,11 @@ $text = array( 'reviewer_already_assigned' => 'вече назначено за рецензиране', 'reviewer_already_removed' => 'вече премахнат от списъка с рецензиращи или вече е оставил рецензия', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'Запитване за рецензия премахнато', @@ -883,9 +893,13 @@ $text = array( 'revise_document' => '', 'revise_document_on' => '', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 01bcbb405..d7b84ca99 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -86,11 +86,14 @@ $text = array( 'and' => 'i', 'apply' => 'Apply', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'Demanda d\'aprovació esborrada', @@ -383,6 +386,7 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => '', 'dropfolder_folder' => 'Carpeta', +'dropfolder_metadata' => '', 'dropupload' => 'Pujada ràpida', 'drop_files_here' => 'Dugui arxius aquí', 'dump_creation' => 'Creació de bolcat de BDD', @@ -817,8 +821,11 @@ URL: [url]', 'quota_is_disabled' => '', 'quota_warning' => '', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -866,8 +873,11 @@ URL: [url]', 'reviewer_already_assigned' => 'Ja està asignat com revisor', 'reviewer_already_removed' => 'Ja ha estat eliminat del procés de revisió o ja ha enviat una revisió', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'Petició de revisió eliminada', @@ -888,9 +898,13 @@ URL: [url]', 'revise_document' => '', 'revise_document_on' => '', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index bc0faaec4..48e05feb7 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'a', 'apply' => 'Použít', 'approvals_accepted' => '[no_approvals] schválení již schváleno', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '[no_approvals] schválení a [no_reviews] recenzí již přijato', 'approvals_and_reviews_not_touched' => '[no_approvals] schválení a [no_reviews] recenzí nejsou dotčeny', 'approvals_and_reviews_rejected' => '[no_approvals] schválení a [no_reviews] recenzí již bylo zamítnuto', 'approvals_not_touched' => '[no_approvals] schválení nebylo dotčeno', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '[no_approvals] schválení bylo zamítnuto', +'approvals_rejected_latest' => '', 'approvals_without_group' => 'Schválení bez skupiny', 'approvals_without_user' => 'Schválení bez uživatele', 'approval_deletion_email' => 'Zrušení schválení požadavku', @@ -456,6 +459,7 @@ Odkaz je platný do [valid]. 'dropfolderdir_missing' => 'Váš osobní adresář pro drop neexistuje na serveru! Požádejte správce, aby jej vytvořil.', 'dropfolder_file' => 'Soubor z "přetažené" složky', 'dropfolder_folder' => 'Složka rychlého uploadu', +'dropfolder_metadata' => '', 'dropupload' => 'Rychlý upload', 'drop_files_here' => 'Soubory dát sem!', 'dump_creation' => 'Vytvoření zálohy databáze', @@ -955,8 +959,11 @@ Pokud budete mít problém s přihlášením i po změně hesla, kontaktujte Adm 'quota_is_disabled' => 'Podpora kvót je v současné době zakázána v nastavení. Nastavení uživatelských kvót nebude mít žádný vliv, dokud se znovu neaktivuje.', 'quota_warning' => 'Vaše maximální využití disku je překročeno o [bajtů]. Prosím, odstraňte dokumenty nebo předchozí verze.', 'receipts_accepted' => '[no_receipts] potvrzení přijetí již přijato', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '[no_receipts] potvrzení přijetí nebylo dotčeno', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '[no_receipts] potvrzení přijetí odmítnuto', +'receipts_rejected_latest' => '', 'receipts_without_group' => 'Potvrzení přijetí bez skupiny', 'receipts_without_user' => 'Potvrzení přijetí bez uživatele', 'receipt_deletion_email_body' => 'Uživatel byl ze seznamu příjemců odebrán @@ -1038,8 +1045,11 @@ URL: [url]', 'reviewer_already_assigned' => 'je už pověřen jako recenzent', 'reviewer_already_removed' => 'už byl odstraněn z procesu recenzí nebo poslal recenzi', 'reviews_accepted' => '[no_reviews] recenzí již přijato', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '[no_reviews] recenzí nebylo dotčeno', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '[no_reviews] recenzí již bylo zamítnuto', +'reviews_rejected_latest' => '', 'reviews_without_group' => 'Recenze bez skupiny', 'reviews_without_user' => 'Recenze bez uživatele', 'review_deletion_email' => 'Žádost na recenzi odstraněn', @@ -1076,9 +1086,13 @@ URL: [url]', 'revise_document' => 'Revize dokumentu', 'revise_document_on' => 'Další revize verze dokumentu v [date]', 'revisions_accepted' => '[no_revisions] již přijato', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '[no_revisions] revizí nebylo dotčeno', +'revisions_not_touched_latest' => '', 'revisions_pending' => '[no_revisions] revizí teprve proběhne', +'revisions_pending_latest' => '', 'revisions_rejected' => '[no_revisions] revizí bylo odmítnuto', +'revisions_rejected_latest' => '', 'revisions_without_group' => 'Revize bez skupiny', 'revisions_without_user' => 'Revize bez uživatele', 'revision_date' => 'Datum revize', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 0add1a8b1..ac3564de0 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 (2699), dgrutsch (22) +// Translators: Admin (2717), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'und', 'apply' => 'Anwenden', 'approvals_accepted' => '[no_approvals] Freigaben', +'approvals_accepted_latest' => '(davon [no_approvals] in letzter Version)', 'approvals_and_reviews_accepted' => '[no_approvals] Freigaben und [no_reviews] Prüfungen', 'approvals_and_reviews_not_touched' => '[no_approvals] offene Freigaben und [no_reviews] offene Prüfungen', 'approvals_and_reviews_rejected' => '[no_approvals] abgelehnte Freigaben und [no_reviews] abgelehnte Prüfungen', 'approvals_not_touched' => '[no_approvals] offene Freigaben', +'approvals_not_touched_latest' => '(davon [no_approvals] in letzter Version)', 'approvals_rejected' => '[no_approvals] abgelehnte Freigaben', +'approvals_rejected_latest' => '(davon [no_approvals] in letzter Version)', 'approvals_without_group' => 'Freigaben ohne Gruppe', 'approvals_without_user' => 'Freigaben ohne Benutzer', 'approval_deletion_email' => 'Freigabeaufforderung gelöscht', @@ -455,6 +458,7 @@ Der Link ist bis zum [valid] gültig. 'dropfolderdir_missing' => 'Ihr persönlicher Ablageordner auf dem Server existiert nicht! Kontaktieren Sie den Administrator, um in anlegen zu lassen.', 'dropfolder_file' => 'Datei aus Ablageordner', 'dropfolder_folder' => 'Ordner aus Ablageordner', +'dropfolder_metadata' => '', 'dropupload' => 'Direkt Hochladen', 'drop_files_here' => 'Dateien hier hin ziehen!', 'dump_creation' => 'DB dump erzeugen', @@ -957,8 +961,11 @@ Sollen Sie danach immer noch Probleme bei der Anmeldung haben, dann kontaktieren 'quota_is_disabled' => 'Quota-Unterstützung ist zur Zeit ausgeschaltet. Benutzer-Quota werden ignoriert bis Quota-Unterstützung in den Einstellungen eingeschaltet wird.', 'quota_warning' => 'Ihr maximal verfügbarer Plattenplatz wurde um [bytes] überschritten. Bitte löschen Sie Dokumente oder ältere Versionen.', 'receipts_accepted' => '[no_receipts] Empfangsbestätigungen', +'receipts_accepted_latest' => '(davon [no_receipts] in letzter Version)', 'receipts_not_touched' => '[no_receipts] offene Empfangsbestätigungen', +'receipts_not_touched_latest' => '(davon [no_receipts] in letzter Version)', 'receipts_rejected' => '[no_receipts] abgelehnte Empfangsbestätigungen', +'receipts_rejected_latest' => '(davon [no_receipts] in letzter Version)', 'receipts_without_group' => 'Empfangsbestätigungen ohne Gruppe', 'receipts_without_user' => 'Empfangsbestätigungen ohne Benutzer', 'receipt_deletion_email_body' => 'Benutzer von Liste der Empfänger gelöscht @@ -1040,8 +1047,11 @@ URL: [url]', 'reviewer_already_assigned' => 'Prüfer bereits zugewiesen', 'reviewer_already_removed' => 'Prüfer wurde bereits aus dem Prüfvorgang entfernt oder hat die Prüfung bereits abgeschlossen', 'reviews_accepted' => '[no_reviews] Prüfungen', +'reviews_accepted_latest' => '(davon [no_reviews] in letzter Version)', 'reviews_not_touched' => '[no_reviews] offene Prüfungen', +'reviews_not_touched_latest' => '(davon [no_reviews] in letzter Version)', 'reviews_rejected' => '[no_reviews] abgelehnte Prüfungen', +'reviews_rejected_latest' => '(davon [no_reviews] in letzter Version)', 'reviews_without_group' => 'Prüfungen ohne Gruppe', 'reviews_without_user' => 'Prüfungen ohne Benutzer', 'review_deletion_email' => 'Prüfungsaufforderung gelöscht', @@ -1079,9 +1089,13 @@ URL: [url]', 'revise_document' => 'Wiederholungsprüfung', 'revise_document_on' => 'Nächste Wiederholungsprüfung des Dokuments am [date]', 'revisions_accepted' => '[no_revisions] Wiederholungsprüfungen', +'revisions_accepted_latest' => '(davon [no_revisions] in letzter Version)', 'revisions_not_touched' => '[no_revisions] offene Wiederholungspüfungen', +'revisions_not_touched_latest' => '(davon [no_revisions] in letzter Version)', 'revisions_pending' => '[no_revisions] zukünftige Wiederholungsprüfungen', +'revisions_pending_latest' => '(davon [no_revisions] in letzter Version)', 'revisions_rejected' => '[no_revisions] abgelehnte Wiederholungsprüfungen', +'revisions_rejected_latest' => '(davon [no_revisions] in letzter Version)', 'revisions_without_group' => 'Wiederholungsprüfungen ohne Gruppe', 'revisions_without_user' => 'Wiederholungsprüfungen ohne Benutzer', 'revision_date' => 'Datum der Wiederholungsprüfung', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index 82a7b9a2b..8a12d392a 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -86,11 +86,14 @@ $text = array( 'and' => 'και', 'apply' => 'Apply', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => '', @@ -378,6 +381,7 @@ $text = array( 'dropfolderdir_missing' => '', 'dropfolder_file' => '', 'dropfolder_folder' => '', +'dropfolder_metadata' => '', 'dropupload' => 'Γρήγορη Προσθήκη', 'drop_files_here' => 'Προσθέστε έγγραφα εδώ!', 'dump_creation' => '', @@ -823,8 +827,11 @@ URL: [url]', 'quota_is_disabled' => '', 'quota_warning' => '', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -872,8 +879,11 @@ URL: [url]', 'reviewer_already_assigned' => '', 'reviewer_already_removed' => '', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => '', @@ -894,9 +904,13 @@ URL: [url]', 'revise_document' => '', 'revise_document_on' => '', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index b48452290..50e9f528f 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 (1793), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1813), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'and', 'apply' => 'Apply', 'approvals_accepted' => '[no_approvals] approvals already accepted', +'approvals_accepted_latest' => '(being [no_approvals] in latest version)', 'approvals_and_reviews_accepted' => '[no_approvals] approvals and [no_reviews] reviews already accepted', 'approvals_and_reviews_not_touched' => '[no_approvals] approvals and [no_reviews] reviews not being touched', 'approvals_and_reviews_rejected' => '[no_approvals] approvals and [no_reviews] reviews already rejected', 'approvals_not_touched' => '[no_approvals] approvals not being touched', +'approvals_not_touched_latest' => '(being [no_approvals] in latest version)', 'approvals_rejected' => '[no_approvals] approvals already rejected', +'approvals_rejected_latest' => '(being [no_approvals] in latest version)', 'approvals_without_group' => 'Approvals without group', 'approvals_without_user' => 'Approvals without user', 'approval_deletion_email' => 'Approval request deleted', @@ -456,6 +459,7 @@ The link is valid until [valid]. 'dropfolderdir_missing' => 'Your personal drop folder does not exist on the server! Please ask your administrator to create it.', 'dropfolder_file' => 'File from drop folder', 'dropfolder_folder' => 'Folder from drop folder', +'dropfolder_metadata' => 'Metadata of the drop folder', 'dropupload' => 'Fast upload', 'drop_files_here' => 'Drop files here!', 'dump_creation' => 'DB dump creation', @@ -959,8 +963,11 @@ If you have still problems to login, then please contact your administrator.', 'quota_is_disabled' => 'Quota support is currently disabled in the settings. Setting a user quota will have no effect until it is enabled again.', 'quota_warning' => 'Your maximum disc usage is exceeded by [bytes]. Please remove documents or previous versions.', 'receipts_accepted' => '[no_receipts] receipts already accepted', +'receipts_accepted_latest' => '(being [no_receipts] in latest version)', 'receipts_not_touched' => '[no_receipts] receipts not being touched', +'receipts_not_touched_latest' => '(being [no_receipts] in latest version)', 'receipts_rejected' => '[no_receipts] receipts already rejected', +'receipts_rejected_latest' => '(being [no_receipts] in latest version)', 'receipts_without_group' => 'Receipts without group', 'receipts_without_user' => 'Receipts without user', 'receipt_deletion_email_body' => 'User has been removed from the list of recipients @@ -1042,8 +1049,11 @@ URL: [url]', 'reviewer_already_assigned' => 'User is already assigned as a reviewer', 'reviewer_already_removed' => 'Reviewer has already been removed from review process or has already submitted a review', 'reviews_accepted' => '[no_reviews] reviews already accepted', +'reviews_accepted_latest' => '(being [no_reviews] in latest version)', 'reviews_not_touched' => '[no_reviews] reviews not being touched', +'reviews_not_touched_latest' => '(being [no_reviews] in latest version)', 'reviews_rejected' => '[no_reviews] reviews already rejected', +'reviews_rejected_latest' => '(being [no_reviews] in latest version)', 'reviews_without_group' => 'Reviews without group', 'reviews_without_user' => 'Reviews without user', 'review_deletion_email' => 'Review request deleted', @@ -1081,9 +1091,13 @@ URL: [url]', 'revise_document' => 'Revise document', 'revise_document_on' => 'Next revision of document version on [date]', 'revisions_accepted' => '[no_revisions] revisions already accepted', +'revisions_accepted_latest' => '(being [no_revisions] in latest version)', 'revisions_not_touched' => '[no_revisions] revisions not being touched', +'revisions_not_touched_latest' => '(being [no_revisions] in latest version)', 'revisions_pending' => '[no_revisions] revisions due in future', +'revisions_pending_latest' => '(being [no_revisions] in latest version)', 'revisions_rejected' => '[no_revisions] revisions already rejected', +'revisions_rejected_latest' => '(being [no_revisions] in latest version)', 'revisions_without_group' => 'Revisions without group', 'revisions_without_user' => 'Revisions without user', 'revision_date' => 'Date of revision', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 3aa3b6912..4a9d982fd 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 (1124), angel (123), francisco (2), jaimem (14) +// Translators: acabello (20), Admin (1130), angel (123), francisco (2), jaimem (14) $text = array( '2_factor_auth' => '', @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'y', 'apply' => 'Aplicar', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'Petición de aprobación eliminada', @@ -431,7 +434,8 @@ URL: [url]', 'drag_icon_here' => 'Arrastre carpeta o documento aquí!', 'dropfolderdir_missing' => '', 'dropfolder_file' => 'Fichero de la carpeta destino', -'dropfolder_folder' => '', +'dropfolder_folder' => 'Carpeta de la carpeta destino', +'dropfolder_metadata' => '', 'dropupload' => 'Carga Rapida', 'drop_files_here' => 'Arrastre archivos aquí!', 'dump_creation' => 'Creación de volcado de BDD', @@ -621,7 +625,7 @@ URL: [url]', 'importfs' => '', 'import_extension' => '', 'import_fs' => 'Importar desde sistema de archivos', -'import_fs_warning' => '', +'import_fs_warning' => 'Esto funciona únicamente con carpetas dentro de la carpeta destino. La operación importa recursivamente todos los archivos y carpetas. Los archivos serán liberados inmediatamente.', 'include_content' => '', 'include_documents' => 'Incluir documentos', 'include_subdirectories' => 'Incluir subcarpetas', @@ -928,8 +932,11 @@ Si continua teniendo problemas de acceso, por favor contacte con el administrado 'quota_is_disabled' => 'La cuota está actualmente deshabilitada en las opciones. Establecer una cuota de usuario no tendrá efecto hasta que sea habilitada de nuevo.', 'quota_warning' => 'El máximo de uso de disco se ha excedido en [bytes]. Por favor eliminar documentos o versiones anteriores.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -969,7 +976,7 @@ Carpeta principal: [folder_path] Usuario: [username] nURL: [url]', 'removed_workflow_email_subject' => '[sitename]: [name] - Eliminar flujo de trabajo de la versión del documento', -'removeFolderFromDropFolder' => '', +'removeFolderFromDropFolder' => 'Eliminar carpeta después de importar', 'remove_marked_files' => 'Eliminar ficheros marcados', 'repaired' => 'Reparado', 'repairing_objects' => 'Reparando documentos y carpetas.', @@ -993,8 +1000,11 @@ nURL: [url]', 'reviewer_already_assigned' => 'Ya está asignado como revisor', 'reviewer_already_removed' => 'Ya ha sido eliminado del proceso de revisión o ya ha enviado una revisión', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'Petición de revisión eliminada', @@ -1022,9 +1032,13 @@ URL: [url]', 'revise_document' => '', 'revise_document_on' => '', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', @@ -1151,8 +1165,8 @@ URL: [url]', 'seq_keep' => 'Mantener posición', 'seq_start' => 'Primera posición', 'sessions' => '', -'setDateFromFile' => '', -'setDateFromFolder' => '', +'setDateFromFile' => 'Obtiene la fecha del archivo importado', +'setDateFromFolder' => 'Obtiene la fecha de la carpeta importada', 'settings' => 'Configuración', 'settings_activate_module' => 'Activar módulo', 'settings_activate_php_extension' => 'Activar extensión PHP', @@ -1390,7 +1404,7 @@ URL: [url]', 'settings_Notification' => 'Parámetros de notificación', 'settings_notwritable' => 'La configuración no se puede guardar porque el fichero de configuración no es escribible.', 'settings_no_content_dir' => 'Carpeta de contenidos', -'settings_onePageMode' => '', +'settings_onePageMode' => 'Modo una página', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Anular MimeType', 'settings_overrideMimeType_desc' => 'Permitir que SeedDMS fije el tipo MIME sobreescribiendo el que haya definido el navegador durante el proceso de carga de un archivo.', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 0c8661165..dc223ee4a 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 (1093), jeromerobert (50), lonnnew (9), Oudiceval (755) +// Translators: Admin (1094), jeromerobert (50), lonnnew (9), Oudiceval (755) $text = array( '2_factor_auth' => 'Authentification forte', @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'et', 'apply' => 'Appliquer', 'approvals_accepted' => '[no_approvals] approbations déjà confirmées', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '[no_approvals] approbations et [no_reviews] vérifications déjà confirmées', 'approvals_and_reviews_not_touched' => '[no_approvals] approbations et [no_reviews] vérifications non amorcées', 'approvals_and_reviews_rejected' => '[no_approvals] approbations et [no_reviews] vérifications déjà rejetées', 'approvals_not_touched' => '[no_approvals] approbations non amorcées', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '[no_approvals] approbations déjà rejetées', +'approvals_rejected_latest' => '', 'approvals_without_group' => 'Approbations sans groupe', 'approvals_without_user' => 'Approbations sans utilisateur', 'approval_deletion_email' => 'Demande d\'approbation supprimée', @@ -456,6 +459,7 @@ Le lien est valide jusqu’au [valid]. 'dropfolderdir_missing' => 'Votre dossier de dépôt personnel n\'existe pas sur le serveur ! Veuillez faire une demande à l\'administrateur.', 'dropfolder_file' => 'Fichier du dossier de dépôt', 'dropfolder_folder' => 'Répertoire du dossier de dépôt', +'dropfolder_metadata' => '', 'dropupload' => 'Téléchargement rapide', 'drop_files_here' => 'Glissez les fichiers ici !', 'dump_creation' => 'Sauvegarder la base de données', @@ -957,8 +961,11 @@ En cas de problème persistant, veuillez contacter votre administrateur.', 'quota_is_disabled' => 'Le support des quotas est actuellement désactivé dans les réglages. Affecter un quota utilisateur n’aura pas d’effet jusqu’à ce qu’il soit de nouveau activé.', 'quota_warning' => 'Votre quota d’espace disque est dépassé de [bytes]. Veuillez supprimer des documents ou d\'anciennes versions.', 'receipts_accepted' => '[no_receipts] réceptions déjà confirmées', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '[no_receipts] réceptions non amorcées', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '[no_receipts] réceptions déjà rejetées', +'receipts_rejected_latest' => '', 'receipts_without_group' => 'Réceptions sans groupe', 'receipts_without_user' => 'Réceptions sans utilisateur', 'receipt_deletion_email_body' => 'L’utilisateur a été retiré de la liste des destinataires @@ -1032,8 +1039,11 @@ URL : [url]', 'reviewer_already_assigned' => 'est déjà déclaré en tant qu’examinateur', 'reviewer_already_removed' => 'L’examinateur a déjà été retiré du processus de vérification ou a déjà soumis la vérification.', 'reviews_accepted' => '[no_reviews] vérifications déjà confirmées', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '[no_reviews] vérifications non amorcées', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '[no_reviews] vérifications déjà rejetées', +'reviews_rejected_latest' => '', 'reviews_without_group' => 'Vérifications sans groupe', 'reviews_without_user' => 'Vérifications sans utilisateur', 'review_deletion_email' => 'Demande de vérification supprimée', @@ -1071,9 +1081,13 @@ URL : [url]', 'revise_document' => 'Réviser le document', 'revise_document_on' => 'Prochaine révision de la version du document le [date]', 'revisions_accepted' => '[no_revisions] révisions déjà confirmées', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '[no_revisions] révisions non amorcées', +'revisions_not_touched_latest' => '', 'revisions_pending' => '[no_revisions] révisions à venir en attente', +'revisions_pending_latest' => '', 'revisions_rejected' => '[no_revisions] révisions déjà rejetées', +'revisions_rejected_latest' => '', 'revisions_without_group' => 'Révisions sans groupe', 'revisions_without_user' => 'Révisions sans utilisateur', 'revision_date' => 'Date de révision', @@ -1443,7 +1457,7 @@ Nom : [username] 'settings_Notification' => 'Notifications', 'settings_notwritable' => 'La configuration ne peut pas être enregistrée car le fichier de configuration n’est pas accessible en écriture.', 'settings_no_content_dir' => 'Répertoire de contenu', -'settings_onePageMode' => '', +'settings_onePageMode' => 'Mode une page', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Passer outre le type MIME', 'settings_overrideMimeType_desc' => 'Ne pas tenir compte du type MIME envoyé par le navigateur quand un fichier est téléversé. Le type MIME sera déterminé par SeedDMS.', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index b806dde70..0ebfc4e25 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -90,11 +90,14 @@ Internet poveznica: [url]', 'and' => 'i', 'apply' => 'Primjeni', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'Izbrisan zahtjev za odobrenje', @@ -437,6 +440,7 @@ Internet poveznica: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => 'Datoteka iz padajuće mape', 'dropfolder_folder' => '', +'dropfolder_metadata' => '', 'dropupload' => 'Zona za brzo učitavanje', 'drop_files_here' => 'Ovdje ispusti datoteku!', 'dump_creation' => 'Izrada odlagališta baze podataka', @@ -932,8 +936,11 @@ Ako i dalje imate problema s prijavom, molimo kontaktirajte Vašeg administrator 'quota_is_disabled' => 'Podrška kvoti je trenutno onemogućena u postavkama. Postavka korisničke kvote neće imati utjecaja dok se ponovno ne omogući.', 'quota_warning' => 'Vaš maksimalni prostor na disku je premašen za [bytes]. Molimo uklonite dokumente ili prethodne verzije.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -1004,8 +1011,11 @@ Internet poveznica: [url]', 'reviewer_already_assigned' => 'je već dodijeljen kao recezent', 'reviewer_already_removed' => 'je već uklonjen iz postupka pregleda ili je već podnijet pregled.', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'Izbrisan zahtjev za pregled', @@ -1043,9 +1053,13 @@ Internet poveznica: [url]', 'revise_document' => 'Revidiraj dokument', 'revise_document_on' => 'Slijedeća revizija verzije dokumenta na dan [date]', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => 'Datum revizije', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index fbce10eaf..93408b6c4 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => '-', 'apply' => 'Elfogad', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'Jóváhagyási kérelem törölve', @@ -432,6 +435,7 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => 'Állomány a dropfolder-ből', 'dropfolder_folder' => '', +'dropfolder_metadata' => '', 'dropupload' => 'Gyors feltöltés', 'drop_files_here' => 'Húzz ide egy fájlt', 'dump_creation' => 'Adatbázis mentés létrehozása', @@ -928,8 +932,11 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a 'quota_is_disabled' => 'Kvóta támogatás jelenleg le van tiltva a beállításoknál. Felhasználói korlát beállítások nem kerülnek érvényesítésre amíg nincs újra engedélyezve.', 'quota_warning' => 'Túllépte lemez korlátot [bytes] bájttal. Kérjük távolítson el dokumentumokat vagy korábbi változatokat.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -993,8 +1000,11 @@ URL: [url]', 'reviewer_already_assigned' => 'már hozzá lett rendelve felülvizsgálóként', 'reviewer_already_removed' => 'már el lett távolítva a felülvizsgálati folyamatból vagy már el lett küldve egy felülvizsgálat', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'Felülvizsgálat kérés törölve', @@ -1022,9 +1032,13 @@ URL: [url]', 'revise_document' => '', 'revise_document_on' => '', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 4cdcff3f9..dc9d4d604 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'e', 'apply' => 'Applica', 'approvals_accepted' => '[no_approvals] approvazioni già accettate', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '[no_approvals] approvazioni e [no_reviews] revisioni già accettate', 'approvals_and_reviews_not_touched' => '[no_approvals] approvazioni e [no_reviews] revisioni non gestite', 'approvals_and_reviews_rejected' => '[no_approvals] approvazioni e [no_reviews] revisioni già rifiutate', 'approvals_not_touched' => '[no_approvals] approvazioni non gestite', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '[no_approvals] approvazioni già rifiutate', +'approvals_rejected_latest' => '', 'approvals_without_group' => 'Approvazioni senza gruppo', 'approvals_without_user' => 'Approvazioni senza utente', 'approval_deletion_email' => 'Richiesta di approvazione cancellata', @@ -449,6 +452,7 @@ Il collegamento The link è ancora valido fino a [valid]. 'dropfolderdir_missing' => 'La vostra cartella di personale non esiste sul server! Si prega di chiedere all\'amministratore di creare per te.', 'dropfolder_file' => 'Scegli file dal server', 'dropfolder_folder' => 'Cartella per il cartella di ricezione', +'dropfolder_metadata' => '', 'dropupload' => 'Caricamento rapido', 'drop_files_here' => 'Trascina qui il file', 'dump_creation' => 'Creazione del dump del DB', @@ -945,8 +949,11 @@ Dovessero esserci ancora problemi al login, prego contatta l\'amministratore di 'quota_is_disabled' => 'Il supporto per le quote è attualmente disattivato nelle impostazioni. L\'impostazione di una quota-utente non avrà alcun effetto finché tale funzionalità non verrà nuovamente attivata.', 'quota_warning' => 'Il vostro utilizzo massimo di spazio è stato superato di [bytes]. Si prega di rimuovere documenti o versioni obsolete.', 'receipts_accepted' => '[no_receipts] ricevute già accettate', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '[no_receipts] ricevute non gestite', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '[no_receipts] ricevute già rifiutate', +'receipts_rejected_latest' => '', 'receipts_without_group' => 'Ricevute senza gruppo', 'receipts_without_user' => 'Ricevute senza gruppo', 'receipt_deletion_email_body' => 'Utente rimosso dall\'elenco dei destinatari @@ -1028,8 +1035,11 @@ URL: [url]', 'reviewer_already_assigned' => 'è già assegnato come revisore', 'reviewer_already_removed' => 'è già stato rimosso dal processo di revisione oppure ha già inserito una revisione.', 'reviews_accepted' => '[no_reviews] revisioni già accettate', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '[no_reviews] revisioni non gestite', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '[no_reviews] revisioni già rifiutate', +'reviews_rejected_latest' => '', 'reviews_without_group' => 'Revisioni senza gruppo', 'reviews_without_user' => 'Revisioni senza utente', 'review_deletion_email' => 'Richiesta di revisione cancellata', @@ -1067,9 +1077,13 @@ URL: [url]', 'revise_document' => 'Riesamina documento', 'revise_document_on' => 'Prossimo riesame del documento il [date]', 'revisions_accepted' => '[no_reviews] riesami già accettati', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '[no_reviews] riesami non gestiti', +'revisions_not_touched_latest' => '', 'revisions_pending' => '[no_reviews] riesami pendenti', +'revisions_pending_latest' => '', 'revisions_rejected' => '[no_reviews] riesami già rifiutati', +'revisions_rejected_latest' => '', 'revisions_without_group' => 'Riesami senza gruppo', 'revisions_without_user' => 'Riesami senza utente', 'revision_date' => 'data riesame', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index 6f6c35321..794f3929f 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => '와', 'apply' => '적용', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '[no_approvals] 이미 승인 거부됨', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => '승인 요청 삭제', @@ -438,6 +441,7 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => '드롭 폴더 파일', 'dropfolder_folder' => '', +'dropfolder_metadata' => '', 'dropupload' => '빠른 업로드', 'drop_files_here' => '이곳에 파일을 올려놓으세요!', 'dump_creation' => 'DB 덤프 생성', @@ -926,8 +930,11 @@ URL : [url]', 'quota_is_disabled' => '할당량 지원이 설정에서 비활성화되어 있습니다. 다시 활성화 될 때까지 사용자의 할당량 설정은 적용되지 않습니다.', 'quota_warning' => '당신의 최대 디스크 사용량 [bytes] 초과됩니다. 문서 또는 이전 버전을 제거하십시오.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -998,8 +1005,11 @@ URL: [url]', 'reviewer_already_assigned' => '해 사용자는 리뷰어로 배정되었습니다.', 'reviewer_already_removed' => '이미 검토 과정에서 제거되었거나 리뷰로 제출', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => '검토 요청 삭제됨', @@ -1037,9 +1047,13 @@ URL: [url]', 'revise_document' => '개정 문서', 'revise_document_on' => '문서 버전의 다음 개정 [날짜]', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '개정 일자', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index bdd3107b9..514a4673b 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'ແລະ', 'apply' => 'ໃຊ້', 'approvals_accepted' => '[no_approvals] ອະນຸມັດໂດຍບໍ່ຕ້ອງສຳພັດ', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '[no_approvals] ອະນຸມັດແລ້ວ ແລະ [no_reviews] ອະນຸມັດແລ້ວ', 'approvals_and_reviews_not_touched' => '[no_approvals] ອະນຸມັດແລ້ວ ແລະ [no_reviews] ການກວດຄືນ ທີບໍ່ມີການສໍາຜັດ', 'approvals_and_reviews_rejected' => '[no_approvals] ອະນຸມັດແລ້ວ ແລະ [no_reviews] ການກວດຄືນໄດ້ຮັບການປະຕິເສດ', 'approvals_not_touched' => '[no_approvals] ອະນຸມັດໂດຍບໍ່ຕ້ອງສຳພັດ', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '[no_approvals] ບໍໄດ້ຮັບການອະນຸມັດ', +'approvals_rejected_latest' => '', 'approvals_without_group' => 'ການອະນຸມັດໂດຍບໍ່ຢູ່ໃນກຸ່ມ', 'approvals_without_user' => 'ການອະນຸມັດຍັງບໍ່ໄດ້ຮັບການນຳໄຊ້', 'approval_deletion_email' => 'ຄຳຂໍອະນຸມັດໄດ້ຖືກລົບແລ້ວ', @@ -442,6 +445,7 @@ URL: [url]', 'dropfolderdir_missing' => 'ໂຟລເດີສ່ວນບຸກຄົນຂອງທ່ານບໍໄດ້ຢູ່ໃນເຊີເວີ ກະລຸນາໃຫ້ຜູ້ດູແລລະບົບຂອງເຈົ້າສ້າງຂໍ້ມູນ', 'dropfolder_file' => 'ໄຟລຈາກໂຟລເດີແບບເລືອນລົງ', 'dropfolder_folder' => 'ໂຟລເດີຈາກໂຟລເດີວ່າງ', +'dropfolder_metadata' => '', 'dropupload' => 'ອັບໂຫລດຢ່າງວ່ອງໄວ', 'drop_files_here' => 'ວາງໄຟລທີນີ້!', 'dump_creation' => 'ການສ້າງຂໍ້ມູນ DB', @@ -938,8 +942,11 @@ URL: [url]', 'quota_is_disabled' => 'ຂະນະນີ້ການສະນັບສະໜູນໂຄຕ້າຖືກປິດໄຊ້ງານໃນການຕັ້ງຄ່າແລ້ວການກຳນົດໂຄຕ້າຜູ້ໄຊ້ຈະບໍ່ມີຜົນໄດໆ ຈົນກວ່າຈະເປີດໄຊ້ງານອີກຄັ້ງ', 'quota_warning' => 'ການໄຊ້ດິສສູງສຸດຂອງເຈົ້າເກີນ [ໄບຣ] ໂປດລົບເອກະສານຫຼືເວີຊັນກ່ອນໜ້າ', 'receipts_accepted' => 'ໃບບິນຮັບເງີນໄດ້ຮັບການຍອມຮັບແລ້ວ [ບໍມີໃບບິນຮັບເງິນ]', +'receipts_accepted_latest' => '', 'receipts_not_touched' => 'ບໍ່ມີໃບບິນຮັບເງິນ', +'receipts_not_touched_latest' => '', 'receipts_rejected' => 'ໃບຮັບເງີນ [ບໍ່ມີໃບບິນຮັບເງີນ] ຖືກປະຕິເສດແລ້ວ', +'receipts_rejected_latest' => '', 'receipts_without_group' => 'ບໍ່ມີກຸ່ມໃບບິນຮັບເງີນ', 'receipts_without_user' => 'ໃບບິນຮັບເງີນຍັງບໍ່ມີຜູ້ໄຊ້', 'receipt_deletion_email_body' => 'ຜູ້ໄຊ້ໄດ້ຖືກລົບອອກຈາກລາຍຊື່ຜູ້ຮັບ @@ -1021,8 +1028,11 @@ URL: [url]', 'reviewer_already_assigned' => 'ຜູ້ໄຊ້ໄດ້ຮັບມອບໝາຍໃຫ້ຜູ້ກວດສອບແລ້ວ', 'reviewer_already_removed' => 'ຜູ້ກວດສອບໄດ້ຍ້າຍອອກຈາກການກວດຄືນແລ້ວຫຼືໄດ້ສົ່ງຄຳເຫັນແລ້ວ', 'reviews_accepted' => 'ບໍ່ມີລິວິວ ຄວາມເຫັນທີຍອມຮັບໄດ້', +'reviews_accepted_latest' => '', 'reviews_not_touched' => 'ລີວິວ ບໍ່ມີລີວິວ ບໍ່ໄດ້ຮັບການສຳຜັດ', +'reviews_not_touched_latest' => '', 'reviews_rejected' => 'ບໍ່ມີລີວິວ ຄວາມເຫັນທີຖືກປະຕິເສດແລ້ວ', +'reviews_rejected_latest' => '', 'reviews_without_group' => 'ການທົບທວນໂດຍບໍ່ຢູ່ໃນກຸ່ມ', 'reviews_without_user' => 'ຄວາມເຫັນໂດຍບໍ່ມີຜູ້ໄຊ້', 'review_deletion_email' => 'ລົບຄຳຂໍການກວດກາແລ້ວ', @@ -1060,9 +1070,13 @@ URL: [url]', 'revise_document' => 'ແກ້ໄຂເອກະສານ', 'revise_document_on' => 'ແກ້ໄຂເອກະສານຮູບແບບໄຫມ່ ໃນ ວັນທີ', 'revisions_accepted' => 'ໄດ້ມີການແກ້ໄຂເອກະສານແລ້ວ ບໍ່ມີການແກ້ໄຂ', +'revisions_accepted_latest' => '', 'revisions_not_touched' => 'ບໍ່ມີການແກ້ໄຂ ການແກ້ໄຂບໍ່ຖືກຕ້ອງ', +'revisions_not_touched_latest' => '', 'revisions_pending' => 'ບໍ່ມີການແກ້ໄຂ ການແກ້ໄຂຈະເກີດຂື້ນໃນອານາຄົດ', +'revisions_pending_latest' => '', 'revisions_rejected' => 'ບໍ່ມີການແກ້ໄຂ ການແກ້ໄຂໄດ້ຖືກປະຕິເສດ', +'revisions_rejected_latest' => '', 'revisions_without_group' => 'ການປັບປຸງໂດຍບໍ່ຢູ່ໃນກຸ່ມ', 'revisions_without_user' => 'ການແກ້ໄຂໂດຍບໍ່ມີຜູ້ໄຊ້', 'revision_date' => 'ວັນທີ່ແກ້ໄຂ', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 980e33d72..ed3933853 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'en', 'apply' => 'Toepassen', 'approvals_accepted' => '[no_approvals] goedkeuringen', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '[no_approvals] goedkeuringen en [no_reviews] geaccepteerde reviews', 'approvals_and_reviews_not_touched' => '[no_approvals] goedkeuringen [no_reviews] reviews nog niet behandeld', 'approvals_and_reviews_rejected' => '[no_approvals] goedkeuringen en [no_reviews] reviews afgekeurd', 'approvals_not_touched' => '[no_approvals] goedkeuringen nog niet behandeld', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '[no_approvals] goedkeuringen afgekeurd', +'approvals_rejected_latest' => '', 'approvals_without_group' => 'Goedkeuringen zonder groep', 'approvals_without_user' => 'Goedkeuringen zonder gebruiker', 'approval_deletion_email' => 'Goedkeuringsverzoek verwijderd', @@ -437,6 +440,7 @@ De link is geldig tot [valid]. 'dropfolderdir_missing' => 'Uw persoonlijke map om files te droppen (dropfolder) bestaat niet op de server! Vraag de administrator om deze aan te maken.', 'dropfolder_file' => 'Bestand in dropfolder', 'dropfolder_folder' => 'Map in dropfolder', +'dropfolder_metadata' => '', 'dropupload' => 'Snel toevoegen', 'drop_files_here' => 'Sleep bestanden hierheen', 'dump_creation' => 'DB-dump aanmaken', @@ -933,8 +937,11 @@ Mocht u de komende minuten geen email ontvangen, probeer het dan nogmaals en con 'quota_is_disabled' => 'Quota support is momenteel niet actief in de eigenschappen. Een user-quotum instellen zal geen effect hebben tot quota actief zijn', 'quota_warning' => 'Uw maximale datagebruik is overschreden met [bytes]. Gelieve documenten of eerdere versies te verwijderen.', 'receipts_accepted' => '[no_receipts] ontvangen en geaccepteerd', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '[no_receipts] ontvangen, nog niet behandeld', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '[no_receipts] ontvangen, geweigerd', +'receipts_rejected_latest' => '', 'receipts_without_group' => '[no_receipts] ontvangen, geen groep', 'receipts_without_user' => '[no_receipts] ontvangen, geen gebruiker', 'receipt_deletion_email_body' => 'Gebruiker is verwijderd uit de lijst van ontvangers @@ -1015,8 +1022,11 @@ URL: [url]', 'reviewer_already_assigned' => 'is reeds aangewezen als beoordelaar', 'reviewer_already_removed' => 'is reeds verwijderd uit het beoordelingsproces of heeft reeds een beoordeling uitgevoerd', 'reviews_accepted' => '[no_reviews] reviews geaccepteerd', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '[no_reviews] reviews niet geopend', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '[no_reviews] reviews geweigerd', +'reviews_rejected_latest' => '', 'reviews_without_group' => 'reviews zonder groep', 'reviews_without_user' => 'reviews zonder gebruiker', 'review_deletion_email' => 'Beoordelingsverzoek verwijderd', @@ -1053,9 +1063,13 @@ URL: [url]', 'revise_document' => 'Document herzien', 'revise_document_on' => 'Volgende herziening van document op [date]', 'revisions_accepted' => '[no_revisions] revisies geaccepteerd', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '[no_revisions] revisies geopend', +'revisions_not_touched_latest' => '', 'revisions_pending' => '[no_revisions] revisies in afwachting', +'revisions_pending_latest' => '', 'revisions_rejected' => '[no_revisions] revisies geweigerd', +'revisions_rejected_latest' => '', 'revisions_without_group' => '[no_revisions] revisies zonder groep', 'revisions_without_user' => '[no_revisions] revisies zonder gebruiker', 'revision_date' => 'Datum revisie', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 12e0d82b8..c9bff7f10 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/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 (832), netixw (84), romi (93), uGn (112) +// Translators: Admin (840), netixw (84), romi (93), uGn (112) $text = array( '2_factor_auth' => '', @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'i', 'apply' => 'Zastosuj', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'Prośba o akceptację została usunięta', @@ -425,6 +428,7 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => 'Plik z folderu rozwijanego', 'dropfolder_folder' => 'Katalog ze strefy drop', +'dropfolder_metadata' => '', 'dropupload' => 'Szybki upload', 'drop_files_here' => 'Przeciągnij tu pliki!', 'dump_creation' => 'Utworzenie zrzutu bazy danych', @@ -906,7 +910,7 @@ Jeśli nadal będą problemy z zalogowaniem, prosimy o kontakt z administratorem 'possible_substitutes' => '', 'preset_expires' => 'Wygasa', 'preview' => 'Podgląd', -'preview_converters' => '', +'preview_converters' => 'Podgląd konwersji dokumentu', 'preview_images' => '', 'preview_markdown' => '', 'preview_pdf' => '', @@ -921,8 +925,11 @@ Jeśli nadal będą problemy z zalogowaniem, prosimy o kontakt z administratorem 'quota_is_disabled' => 'Wsparcie limitów dyskowych jest obecnie wyłączone w ustawieniach. Ustawiony limit dyskowy użytkownika nie będzie działał dopóki wparcie nie zostanie ponownie włączone.', 'quota_warning' => 'Przekroczono użycie dysku o [bytes]. Usuń dokumenty lub poprzednie wersje.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -962,7 +969,7 @@ Folder nadrzędny: [folder_path] Użytkownik: [username] URL: [url]', 'removed_workflow_email_subject' => '[sitename]: [name] - Usunięty workflow z wersji dokumentu', -'removeFolderFromDropFolder' => '', +'removeFolderFromDropFolder' => 'Usuń folder po imporcie', 'remove_marked_files' => 'Usuń zaznaczone pliki', 'repaired' => 'naprawiony', 'repairing_objects' => 'Naprawa dokumentów i katalogów.', @@ -979,8 +986,11 @@ URL: [url]', 'reviewer_already_assigned' => 'jest już przypisany jako recenzent', 'reviewer_already_removed' => 'został już usunięty z procesu opiniowania lub już wydał swoją opinię', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'Prośba o recenzję usunięta', @@ -1001,9 +1011,13 @@ URL: [url]', 'revise_document' => '', 'revise_document_on' => '', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', @@ -1229,8 +1243,8 @@ URL: [url]', 'settings_enableDropUpload_desc' => '', 'settings_enableDuplicateDocNames' => 'Zezwalaj na zduplikowane nazwy dokumentów', 'settings_enableDuplicateDocNames_desc' => 'Zezwala na tworzenie w folderze dokumentów o tej samej nazwie.', -'settings_enableDuplicateSubFolderNames' => '', -'settings_enableDuplicateSubFolderNames_desc' => '', +'settings_enableDuplicateSubFolderNames' => 'Zezwól na duplikaty nazw podfolderów', +'settings_enableDuplicateSubFolderNames_desc' => 'Zezwala na zduplikowane nazwy podfolderów w folderze', 'settings_enableEmail' => 'Włącz powiadomienia e-mail', 'settings_enableEmail_desc' => 'Włącz/Wyłącz automatyczne powiadomienia drogą mailową', 'settings_enableFilterReceipt' => '', @@ -1251,7 +1265,7 @@ URL: [url]', 'settings_enableLargeFileUpload_desc' => 'Jeśli zaznaczone, wczytywanie plików będzie możliwe również przez aplet javy nazywany jumploader bez limitu rozmiaru plików. Aplet ten pozwala również na wczytywanie wielu plików jednocześnie.', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', -'settings_enableMultiUpload' => '', +'settings_enableMultiUpload' => 'Zezwól na wysyłanie wielu plików', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => 'Włącz/Wyłącz powiadomienia dla zatwierdzających/recenzentów', 'settings_enableNotificationAppRev_desc' => 'Zaznacz aby wysyłać powiadomienia do zatwierdzających i recenzentów kiedy pojawi się nowa wersja dokumentu', @@ -1283,7 +1297,7 @@ URL: [url]', 'settings_enableSelfRevApp_desc' => 'Włącz tę opcję jeżeli zalogowany użytkownik ma prawo do recenzowania/zatwierdzania oraz do przepływu procesu', 'settings_enableSessionList' => '', 'settings_enableSessionList_desc' => '', -'settings_enableThemeSelector' => '', +'settings_enableThemeSelector' => 'Wybór motywu', 'settings_enableThemeSelector_desc' => '', 'settings_enableUpdateReceipt' => '', 'settings_enableUpdateReceipt_desc' => '', @@ -1371,7 +1385,7 @@ URL: [url]', 'settings_no_content_dir' => 'Katalog treści', 'settings_onePageMode' => '', 'settings_onePageMode_desc' => '', -'settings_overrideMimeType' => '', +'settings_overrideMimeType' => 'Nadpisz typ rozszerzenia', 'settings_overrideMimeType_desc' => '', 'settings_partitionSize' => 'Rozmiar części pliku', 'settings_partitionSize_desc' => 'Rozmiar części pliku, w bajtach, wczytywane przez jumploader. Nie wpisuj wartości większej niż maksymalna wartość wczytywanego pliku ustawiona na serwerze.', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 2f1f1609c..18980a55b 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'e', 'apply' => 'Aplicar', 'approvals_accepted' => '[no_approvals] aprovações já aceitas', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '[no_approvals] aprovações e [no_reviews] comentários já aceitos', 'approvals_and_reviews_not_touched' => '[no_approvals] aprovações e [no_reviews] comentários não tocados', 'approvals_and_reviews_rejected' => '[no_approvals] aprovações e [no_reviews] avaliações já rejeitadas', 'approvals_not_touched' => '[no_approvals] aprovações não sendo tocadas', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '[no_approvals] aprovações já rejeitadas', +'approvals_rejected_latest' => '', 'approvals_without_group' => 'Aprovações sem grupo', 'approvals_without_user' => 'Aprovações sem usuário', 'approval_deletion_email' => 'Solicitação de Aprovação eliminada', @@ -456,6 +459,7 @@ O link é válido até [valid]. 'dropfolderdir_missing' => 'Sua pasta suspensa pessoal não existe no servidor! Por favor, peça ao seu administrador para criá-lo.', 'dropfolder_file' => 'Arquivo de pasta suspensa', 'dropfolder_folder' => 'Pasta da pasta-alvo', +'dropfolder_metadata' => '', 'dropupload' => 'Envio rápido', 'drop_files_here' => 'Solte os arquivos aqui!', 'dump_creation' => 'Criação de despejo de banco de dados', @@ -958,8 +962,11 @@ Se você ainda tiver problemas para fazer o login, por favor, contate o administ 'quota_is_disabled' => 'Suporte a cota está desativado nas configurações. A definição de cota do usuário não terá efeito até que seja habilitada novamente.', 'quota_warning' => 'Seu uso máximo do disco foi ultrapassado em [bytes]. Por favor, remova documentos ou versões anteriores.', 'receipts_accepted' => '[no_receipts] recibos já aceitos', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '[no_receipts] recibos não tocados', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '[no_receipts] recibos já rejeitados', +'receipts_rejected_latest' => '', 'receipts_without_group' => 'Recibos sem grupo', 'receipts_without_user' => 'Recibos sem usuário', 'receipt_deletion_email_body' => 'O usuário foi removido da lista de destinatários @@ -1041,8 +1048,11 @@ URL: [url]', 'reviewer_already_assigned' => 'já está atribuído como avaliador', 'reviewer_already_removed' => 'já foi removido do processo de revisão ou já enviou um comentário', 'reviews_accepted' => '[no_reviews] avaliações já aceitas', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '[no_reviews] avaliações não tocadas', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '[no_reviews] avaliações já rejeitadas', +'reviews_rejected_latest' => '', 'reviews_without_group' => 'Avaliações sem grupo', 'reviews_without_user' => 'Avaliações sem usuário', 'review_deletion_email' => 'Pedido de revisão eliminado', @@ -1079,9 +1089,13 @@ URL: [url]', 'revise_document' => 'Revisar documento', 'revise_document_on' => 'Próxima revisão da versão do documento em [date]', 'revisions_accepted' => '[no_revisions] revisões já aceitas', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '[no_revisions] revisões não sendo tocadas', +'revisions_not_touched_latest' => '', 'revisions_pending' => '[no_revisions] revisões devidas no futuro', +'revisions_pending_latest' => '', 'revisions_rejected' => '[no_revisions] revisões já rejeitadas', +'revisions_rejected_latest' => '', 'revisions_without_group' => 'Revisões sem grupo', 'revisions_without_user' => 'Revisões sem usuário', 'revision_date' => 'Data da revisão', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index 98d53cc2a..e0726d0ef 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 (1087), balan (87) +// Translators: Admin (1092), balan (87) $text = array( '2_factor_auth' => '', @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'si', 'apply' => 'Aplică', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'Cerere de aprobare stearsă', @@ -437,6 +440,7 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => 'Fișiere din folderele aruncate (File from drop folder)', 'dropfolder_folder' => '', +'dropfolder_metadata' => '', 'dropupload' => 'Încărcare rapidă', 'drop_files_here' => 'Aruncă fișierele aici!', 'dump_creation' => 'Creare fisier imagine baza de date', @@ -933,8 +937,11 @@ Dacă aveți în continuare probleme la autentificare, vă rugăm să contactaț 'quota_is_disabled' => 'Spatiu alocat este dezactivată în setări. Stabilirea unui spatiu alocat pentru utilizator nu va avea nici un efect până când setarea este reactivată din nou.', 'quota_warning' => 'Dimensiunea dumneavoastră maximă este depasită cu [bytes]. Vă rugăm să eliminați documente sau versiuni anterioare.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -1005,8 +1012,11 @@ URL: [url]', 'reviewer_already_assigned' => 'este deja alocat ca un revizuitor', 'reviewer_already_removed' => 'a fost deja eliminat din procesul de revizuire sau a postat deja o revizuire', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'Cerere de revizuire eliminată', @@ -1044,9 +1054,13 @@ URL: [url]', 'revise_document' => 'Revizuiti documentul', 'revise_document_on' => 'Urmatoarea revizuire a versiunii document pe [data]', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', @@ -1192,7 +1206,7 @@ URL: [url]', 'settings_autoLoginUser' => 'Login automat', 'settings_autoLoginUser_desc' => '', 'settings_available_languages' => 'Limbi disponibile', -'settings_available_languages_desc' => '', +'settings_available_languages_desc' => 'Numai limbile selectate vor fii incarcate la accesare. Limba default va fii mereu incarcata', 'settings_backupDir' => '', 'settings_backupDir_desc' => '', 'settings_cacheDir' => 'Director Cache', @@ -1545,9 +1559,9 @@ URL: [url]', 'sign_out' => 'Sign out', 'sign_out_user' => 'Sign out utilizator', 'sk_SK' => 'Slovacă', -'sort_by_date' => '', -'sort_by_name' => '', -'sort_by_sequence' => '', +'sort_by_date' => 'Sortare dupa data', +'sort_by_name' => 'Sortare dupa nume', +'sort_by_sequence' => 'Sortare dupa numar', 'space_used_on_data_folder' => 'Spatiu folosit în folderul de date', 'splash_added_to_clipboard' => 'Adăugat la clipboard', 'splash_add_access' => '', @@ -1836,7 +1850,7 @@ URL: [url]', 'workflow_summary' => 'Sumar Workflow', 'workflow_transition_without_user_group' => '', 'workflow_user_summary' => 'Sumar Utilizator', -'x_more_objects' => '', +'x_more_objects' => 'Mai multe', 'year_view' => 'Vizualizare an', 'yes' => 'Da', 'zh_CN' => 'Chineză (CN)', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 9b1f3f640..25e863e17 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1671) +// Translators: Admin (1677) $text = array( '2_factor_auth' => 'Двухфакторная аутентификация', @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'и', 'apply' => 'Применить', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'Запрос на утверждение удалён', @@ -437,6 +440,7 @@ URL: [url]', 'dropfolderdir_missing' => 'Проходной каталог не существует', 'dropfolder_file' => 'Файл из проходного каталога', 'dropfolder_folder' => 'Путь к проходному каталогу', +'dropfolder_metadata' => '', 'dropupload' => 'Быстрая загрузка', 'drop_files_here' => 'Переместите файлы сюда', 'dump_creation' => 'Создать дамп БД', @@ -930,8 +934,11 @@ URL: [url]', 'quota_is_disabled' => 'Поддержка квот в настоящее время отключена в настройках.', 'quota_warning' => 'Ваша дисковая квота превышена на [bytes]. Удалите ненужные документы или их предыдущие версии.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -1007,8 +1014,11 @@ URL: [url]', 'reviewer_already_assigned' => 'уже назначен на рецензирование', 'reviewer_already_removed' => 'уже удалён из списка рецензирующих или уже оставил рецензию', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'Запрос на рецензию удалён', @@ -1046,9 +1056,13 @@ URL: [url]', 'revise_document' => 'Ревизировать документ', 'revise_document_on' => 'Следующий ревизия версии документа назначен на [date]', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => 'Дата ревизии', @@ -1279,7 +1293,7 @@ URL: [url]', 'settings_enableDropUpload_desc' => 'Включить/отключить область в "Просмотр папки" для загрузки при помощи Drag&Drop.', 'settings_enableDuplicateDocNames' => 'Разрешить документы
      с одинаковым названием', 'settings_enableDuplicateDocNames_desc' => 'Разрешить документы с одинаковым названием в каталоге.', -'settings_enableDuplicateSubFolderNames' => '', +'settings_enableDuplicateSubFolderNames' => 'Разрешить дублирующие имена подпапок', 'settings_enableDuplicateSubFolderNames_desc' => '', 'settings_enableEmail' => 'Включить e-mail', 'settings_enableEmail_desc' => 'Включить/отключить автоматическое уведомление по e-mail.', @@ -1413,7 +1427,7 @@ URL: [url]', 'settings_maxSizeForFullText' => 'Макс. размер документа для индексирования на лету', 'settings_maxSizeForFullText_desc' => 'Размер документа, который может быть индексирован срузу после добавления', 'settings_maxUploadSize' => 'Максимальный размер загружаемых файлов', -'settings_maxUploadSize_desc' => '', +'settings_maxUploadSize_desc' => 'Это максимальный размер загружаемых файлов. Он повлияет на версии документов и вложения.', 'settings_more_settings' => 'Прочие настройки. Логин по умолчанию: admin/admin', 'settings_notfound' => 'Не найден', 'settings_Notification' => 'Настройки извещения', @@ -1486,7 +1500,7 @@ URL: [url]', 'settings_smtpPort_desc' => 'Порт сервера SMTP, по умолчанию 25.', 'settings_smtpSendFrom' => 'От', 'settings_smtpSendFrom_desc' => 'Отправлять с указанного адреса.', -'settings_smtpSendTestMail' => '', +'settings_smtpSendTestMail' => 'Отправить тестовое письмо"', 'settings_smtpSendTestMail_desc' => '', 'settings_smtpServer' => 'Хост SMTP', 'settings_smtpServer_desc' => 'Хост сервера SMTP.', @@ -1552,9 +1566,9 @@ URL: [url]', 'sign_out' => 'Выйти', 'sign_out_user' => 'Пользовательский выход', 'sk_SK' => 'Slovak', -'sort_by_date' => '', -'sort_by_name' => '', -'sort_by_sequence' => '', +'sort_by_date' => 'Сортировка по дате', +'sort_by_name' => 'Сортировка по имени', +'sort_by_sequence' => 'Сортировка по порядку', 'space_used_on_data_folder' => 'Размер каталога данных', 'splash_added_to_clipboard' => 'Добавлено в буфер обмена', 'splash_add_access' => '', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 92b62ea7a..2a1376986 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'a', 'apply' => 'Použiť', 'approvals_accepted' => '[no_approvals] approvals already accepted', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '[no_approvals] approvals and [no_reviews] reviews already accepted', 'approvals_and_reviews_not_touched' => '[no_approvals] approvals and [no_reviews] reviews not being touched', 'approvals_and_reviews_rejected' => '[no_approvals] approvals and [no_reviews] reviews already rejected', 'approvals_not_touched' => '[no_approvals] approvals not being touched', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '[no_approvals] approvals already rejected', +'approvals_rejected_latest' => '', 'approvals_without_group' => 'Approvals without group', 'approvals_without_user' => 'Approvals without user', 'approval_deletion_email' => 'Požiadavka na schválenie zmazaná', @@ -456,6 +459,7 @@ Odkaz je platný do [valid]. 'dropfolderdir_missing' => 'Your personal drop folder does not exist on the server! Please ask your administrator to create it.', 'dropfolder_file' => 'Súbor z drop zložky', 'dropfolder_folder' => 'Zložka z drop zložky', +'dropfolder_metadata' => '', 'dropupload' => 'Rýchlo nahraj', 'drop_files_here' => 'Sem vložte súbory!', 'dump_creation' => 'Vytvorenie výstupu DB', @@ -959,8 +963,11 @@ If you have still problems to login, then please contact your administrator.', 'quota_is_disabled' => 'Podpora kvót je momentálne zakázaná v nastaveniach. Nastavenie kvóty používateľa nebude mať žiadny účinok, kým nebude znovu aktivovaná.', 'quota_warning' => 'Maximálne využitie disku je prekročené o [bytes]. Odstráňte dokumenty alebo predchádzajúce verzie.', 'receipts_accepted' => '[no_receipts] receipts already accepted', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '[no_receipts] receipts not being touched', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '[no_receipts] receipts already rejected', +'receipts_rejected_latest' => '', 'receipts_without_group' => 'Receipts without group', 'receipts_without_user' => 'Receipts without user', 'receipt_deletion_email_body' => 'Používateľ bol odstránený zo zoznamu recipientov @@ -1042,8 +1049,11 @@ URL: [url]', 'reviewer_already_assigned' => 'je už poverený ako recenzent', 'reviewer_already_removed' => 'už bol odstránený z procesu recenzie alebo už odoslal recenziu', 'reviews_accepted' => '[no_reviews] reviews already accepted', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '[no_reviews] reviews not being touched', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '[no_reviews] reviews already rejected', +'reviews_rejected_latest' => '', 'reviews_without_group' => 'Reviews without group', 'reviews_without_user' => 'Reviews without user', 'review_deletion_email' => 'Požiadavka na recenziu zmazaná', @@ -1081,9 +1091,13 @@ URL: [url]', 'revise_document' => 'Revidovať dokument', 'revise_document_on' => 'Next revision of document version on [date]', 'revisions_accepted' => '[no_revisions] revisions already accepted', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '[no_revisions] revisions not being touched', +'revisions_not_touched_latest' => '', 'revisions_pending' => '[no_revisions] revisions due in future', +'revisions_pending_latest' => '', 'revisions_rejected' => '[no_revisions] revisions already rejected', +'revisions_rejected_latest' => '', 'revisions_without_group' => 'Revízie bez skupiny', 'revisions_without_user' => 'Revízie bez používateľa', 'revision_date' => 'Dátum revízie', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index b8649998f..e829ce792 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -91,11 +91,14 @@ URL: [url]', 'and' => 'och', 'apply' => 'Använd', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => 'Godkännandet saknar grupp', 'approvals_without_user' => 'Godkännandet saknar användare', 'approval_deletion_email' => 'Begäran om godkännande har raderats', @@ -450,6 +453,7 @@ Länken är giltig t o m [valid]. 'dropfolderdir_missing' => 'Du saknar en personlig mapp för uppladdning till servern. Kontakta systemadminiustratören för att få hjälp att skapa den.', 'dropfolder_file' => 'Fil från mellanlagringsmappen', 'dropfolder_folder' => 'Katalog från mellanlagringsmappen', +'dropfolder_metadata' => '', 'dropupload' => 'Snabb uppladdning', 'drop_files_here' => 'Släpp filer här!', 'dump_creation' => 'Skapa DB-dump', @@ -943,8 +947,11 @@ Om du fortfarande har problem med inloggningen, kontakta administratören.', 'quota_is_disabled' => 'Kvotstöd är för närvarande inaktiverad i inställningarna. Ett värde för användarkvot kommer inte att ha någon effekt förrän den är aktiverad igen.', 'quota_warning' => 'Din maximala lagringskvot har överskridits med [bytes]. Ta bort dokument eller tidigare versioner.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -1015,8 +1022,11 @@ URL: [url]', 'reviewer_already_assigned' => 'Användaren har redan tilldelats rollen som granskare', 'reviewer_already_removed' => 'har redan tagits bort från granskningen eller har redan skickat en granskning', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => 'Granskningar som saknar användare', 'review_deletion_email' => 'Förfrågan om granskning borttagen', @@ -1054,9 +1064,13 @@ URL: [url]', 'revise_document' => 'Revidera dokument', 'revise_document_on' => 'Nästa revidering av dokumentversion [date]', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => 'Revisioner som saknar grupp', 'revisions_without_user' => 'Revisioner som saknar användare', 'revision_date' => 'Datum för revision', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 3d546bb16..da7ae9c06 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -89,11 +89,14 @@ URL: [url]', 'and' => 've', 'apply' => 'Uygula', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'Onay talebi silindi', @@ -431,6 +434,7 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => 'Sürüklenen klasörden dosya', 'dropfolder_folder' => '', +'dropfolder_metadata' => '', 'dropupload' => 'Hızlı yükleme', 'drop_files_here' => 'Dosyaları buraya sürükleyin!', 'dump_creation' => 'Veritabanı dump oluşturma', @@ -929,8 +933,11 @@ Giriş yaparken halen sorun yaşıyorsanız lütfen sistem yöneticinizle görü 'quota_is_disabled' => 'Kota desteği ayarlardan kapatılmış durumda. Açılana kadar kullanıcıya kota tanımlamanın bir etkisi olmaz.', 'quota_warning' => 'Size ayrılan disk kotası [bytes] aşıldı. Lütfen gereksiz olduğunu düşündüğünüz dokümanları veya eski versiyonları silin.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -994,8 +1001,11 @@ URL: [url]', 'reviewer_already_assigned' => 'zaten kontrol eden olarak tanımlı', 'reviewer_already_removed' => 'kontrol sürecinden silindi veya zaten kontrolü gönderdi', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'Kontrol talebi silindi', @@ -1023,9 +1033,13 @@ URL: [url]', 'revise_document' => '', 'revise_document_on' => '', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 90ee03d4d..a7463efb5 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'і', 'apply' => 'Застосувати', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => 'Запит на підтвердження скасовано', @@ -437,6 +440,7 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => 'Файл з прохідного каталогу', 'dropfolder_folder' => '', +'dropfolder_metadata' => '', 'dropupload' => 'Швидке завантаження', 'drop_files_here' => 'Перемістіть файли сюди', 'dump_creation' => 'Створити дамп БД', @@ -930,8 +934,11 @@ URL: [url]', 'quota_is_disabled' => 'Квотування відключено', 'quota_warning' => 'Ваша дискова квота перевищена на [bytes]. Видаліть непотрібні документи або їх попередні версії.', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -1000,8 +1007,11 @@ URL: [url]', 'reviewer_already_assigned' => 'вже призначений для рецензування', 'reviewer_already_removed' => 'вже видалено зі списку рецензентів або вже лишив рецензію', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => 'Запит на редагування видалено', @@ -1039,9 +1049,13 @@ URL: [url]', 'revise_document' => 'Ревізувати документ', 'revise_document_on' => 'Наступна ревізія документу [date]', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => 'Дата ревізії', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index b2e4a8ac8..4bb139c98 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => 'and', 'apply' => '应用', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '[no_approvals] 审核和 [no_reviews] 校对已通过', 'approvals_and_reviews_not_touched' => '[no_approvals] 审核和 [no_reviews] 校对暂未执行', 'approvals_and_reviews_rejected' => '[no_approvals] 审核和 [no_reviews] 校对未通过', 'approvals_not_touched' => '[no_approvals] 审核未执行', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '[no_approvals] 审核未通过', +'approvals_rejected_latest' => '', 'approvals_without_group' => '不含组的审核', 'approvals_without_user' => '不含用户的审核', 'approval_deletion_email' => '审核请求已被删除', @@ -437,6 +440,7 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => '所选文件夹的文件', 'dropfolder_folder' => '从下拉菜单中选择文件夹', +'dropfolder_metadata' => '', 'dropupload' => '快速上传', 'drop_files_here' => '拖入这里', 'dump_creation' => '转储数据', @@ -929,8 +933,11 @@ URL: [url]', 'quota_is_disabled' => '配额的支持', 'quota_warning' => '您的磁盘最大使用量已超过 [bytes]。请删除文档或以前的版本。', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -992,8 +999,11 @@ URL: [url]', 'reviewer_already_assigned' => '已经被指派为校对人', 'reviewer_already_removed' => '已经从校对队列中删除或者已经提交校对', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => '校对请求被删除', @@ -1021,9 +1031,13 @@ URL: [url]', 'revise_document' => '', 'revise_document_on' => '', 'revisions_accepted' => '[no_revisions] 修订已被接受', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '修订日期', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 7f878c1d1..576fcd0b2 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -90,11 +90,14 @@ URL: [url]', 'and' => '和', 'apply' => '接受', 'approvals_accepted' => '', +'approvals_accepted_latest' => '', 'approvals_and_reviews_accepted' => '', 'approvals_and_reviews_not_touched' => '', 'approvals_and_reviews_rejected' => '', 'approvals_not_touched' => '', +'approvals_not_touched_latest' => '', 'approvals_rejected' => '', +'approvals_rejected_latest' => '', 'approvals_without_group' => '', 'approvals_without_user' => '', 'approval_deletion_email' => '審核請求已被刪除', @@ -382,6 +385,7 @@ URL: [url]', 'dropfolderdir_missing' => '', 'dropfolder_file' => '檔案來源為 drop 目錄', 'dropfolder_folder' => '', +'dropfolder_metadata' => '', 'dropupload' => '快速上傳', 'drop_files_here' => '拖入這裡', 'dump_creation' => '轉儲數據', @@ -816,8 +820,11 @@ URL: [url]', 'quota_is_disabled' => '', 'quota_warning' => '', 'receipts_accepted' => '', +'receipts_accepted_latest' => '', 'receipts_not_touched' => '', +'receipts_not_touched_latest' => '', 'receipts_rejected' => '', +'receipts_rejected_latest' => '', 'receipts_without_group' => '', 'receipts_without_user' => '', 'receipt_deletion_email_body' => '', @@ -865,8 +872,11 @@ URL: [url]', 'reviewer_already_assigned' => '已經被指派為校對人', 'reviewer_already_removed' => '已經從校對佇列中刪除或者已經提交校對', 'reviews_accepted' => '', +'reviews_accepted_latest' => '', 'reviews_not_touched' => '', +'reviews_not_touched_latest' => '', 'reviews_rejected' => '', +'reviews_rejected_latest' => '', 'reviews_without_group' => '', 'reviews_without_user' => '', 'review_deletion_email' => '校對請求被刪除', @@ -887,9 +897,13 @@ URL: [url]', 'revise_document' => '', 'revise_document_on' => '', 'revisions_accepted' => '', +'revisions_accepted_latest' => '', 'revisions_not_touched' => '', +'revisions_not_touched_latest' => '', 'revisions_pending' => '', +'revisions_pending_latest' => '', 'revisions_rejected' => '', +'revisions_rejected_latest' => '', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', From ac0824ae37cd9afc12582c32229dee44ef80c6fb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 19 Nov 2019 16:07:27 +0100 Subject: [PATCH 244/467] set access object --- out/out.TransferObjects.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/out/out.TransferObjects.php b/out/out.TransferObjects.php index b2a0095c8..1118a1305 100644 --- a/out/out.TransferObjects.php +++ b/out/out.TransferObjects.php @@ -20,6 +20,7 @@ if(!isset($settings)) require_once("../inc/inc.Settings.php"); +require_once("inc/inc.LogInit.php"); require_once("inc/inc.Language.php"); require_once("inc/inc.Init.php"); require_once("inc/inc.Extension.php"); @@ -27,8 +28,11 @@ require_once("inc/inc.DBInit.php"); require_once("inc/inc.ClassUI.php"); require_once("inc/inc.Authentication.php"); -if (!$user->isAdmin()) { - UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); +$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); +$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); +$accessop = new SeedDMS_AccessOperation($dms, $user, $settings); +if (!$accessop->check_view_access($view, $_GET)) { + UI::exitError(getMLText("admin_tools"),getMLText("access_denied"), false, $isajax); } if (!isset($_GET["userid"]) || !is_numeric($_GET["userid"]) || intval($_GET["userid"])<1) { @@ -46,11 +50,10 @@ if ($rmuser->getID()==$user->getID()) { $allusers = $dms->getAllUsers($settings->_sortUsersInList); -$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); -$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); if($view) { $view->setParam('rmuser', $rmuser); $view->setParam('allusers', $allusers); + $view->setParam('accessobject', $accessop); $view($_GET); exit; } From b095c48ddd2a5ed43a930579f5fa81e56ecf7e0b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 19 Nov 2019 18:20:53 +0100 Subject: [PATCH 245/467] formField() treats a value == "0" as not empty --- views/bootstrap/class.Bootstrap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index d8c148740..478fecb97 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -906,7 +906,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; (!empty($value['type']) ? ' type="'.$value['type'].'"' : ''). (!empty($value['id']) ? ' id="'.$value['id'].'"' : ''). (!empty($value['name']) ? ' name="'.$value['name'].'"' : ''). - (!empty($value['value']) ? ' value="'.$value['value'].'"' : ''). + (is_string($value['value']) || !empty($value['value']) ? ' value="'.$value['value'].'"' : ''). (!empty($value['placeholder']) ? ' placeholder="'.$value['placeholder'].'"' : ''). (!empty($value['autocomplete']) ? ' autocomplete="'.$value['autocomplete'].'"' : ''). (!empty($value['checked']) ? ' checked' : ''). From b2715684a3b113564a121e42b61f12dd06179035 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 19 Nov 2019 18:21:34 +0100 Subject: [PATCH 246/467] use formField() instead of plain html --- .../class.RemoveUserFromProcesses.php | 159 ++++++++++++------ 1 file changed, 111 insertions(+), 48 deletions(-) diff --git a/views/bootstrap/class.RemoveUserFromProcesses.php b/views/bootstrap/class.RemoveUserFromProcesses.php index 768f09c49..ec202ce24 100644 --- a/views/bootstrap/class.RemoveUserFromProcesses.php +++ b/views/bootstrap/class.RemoveUserFromProcesses.php @@ -80,66 +80,129 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { } ?> -
      -
      - -
      -
      +formField( + getMLText('reviews_not_touched', array('no_reviews' => count($tmpr["0"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[review][]', + 'value'=>'0', + 'checked'=>true + ), + array( + 'field_wrap' => array('', ' '.getMLText('reviews_not_touched_latest', array('no_reviews' => $cr["0"]))) + ) + ); +?> -
      -
      - -
      -
      +formField( + getMLText('reviews_accepted', array('no_reviews' => count($tmpr["1"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[approval][]', + 'value'=>'1', + 'checked'=>true + ), + array( + 'field_wrap' => array('', ' '.getMLText('reviews_accepted_latest', array('no_reviews' => $cr["1"]))) + ) + ); +?> -
      -
      - -
      -
      +formField( + getMLText('reviews_rejected', array('no_reviews' => count($tmpr["-1"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[approval][]', + 'value'=>'-1', + 'checked'=>true + ), + array( + 'field_wrap' => array('', ' '.getMLText('reviews_rejected_latest', array('no_reviews' => $cr["-1"]))) + ) + ); +?> -
      -
      - -
      -
      +formField( + getMLText('approvals_not_touched', array('no_approvals' => count($tmpa["0"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[approval][]', + 'value'=>'0', + 'checked'=>true + ), + array( + 'field_wrap' => array('', ' '.getMLText('approvals_not_touched_latest', array('no_approvals' => $ca["0"]))) + ) + ); +?> -
      -
      - -
      -
      +formField( + getMLText('approvals_accepted', array('no_approvals' => count($tmpa["1"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[approval][]', + 'value'=>'1', + 'checked'=>true + ), + array( + 'field_wrap' => array('', ' '.getMLText('approvals_accepted_latest', array('no_approvals' => $ca["1"]))) + ) + ); +?> -
      -
      - -
      -
      +formField( + getMLText('approvals_rejected', array('no_approvals' => count($tmpa["-1"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[approval][]', + 'value'=>'-1', + 'checked'=>true + ), + array( + 'field_wrap' => array('', ' '.getMLText('approvals_rejected_latest', array('no_approvals' => $ca["-1"]))) + ) + ); +?> - -
      -
      - -
      -
      +getAllUsers($sortusersinlist); + foreach ($allUsers as $currUser) { + if (!$currUser->isGuest()) + $options[] = array($currUser->getID(), htmlspecialchars($currUser->getLogin()), ($currUser->getID()==$user->getID()), array(array('data-subtitle', htmlspecialchars($currUser->getFullName())))); + } + $this->formField( + getMLText("user"), + array( + 'element'=>'select', + 'id'=>'newuser', + 'name'=>'newuserid', + 'class'=>'chzn-select', + 'options'=>$options + ) + ); + */ + $this->formSubmit(" ".getMLText('rm_user_from_processes')); +?> Date: Tue, 19 Nov 2019 21:03:19 +0100 Subject: [PATCH 247/467] add scheduler to menu --- views/bootstrap/class.Bootstrap.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 6bf7b63db..e2ea94d18 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -831,6 +831,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['misc']['children']['charts'] = array('link'=>"../out/out.Charts.php", 'label'=>'charts'); if ($this->check_access('Timeline')) $menuitems['misc']['children']['timeline'] = array('link'=>"../out/out.Timeline.php", 'label'=>'timeline'); + if ($this->check_access('SchedulerTaskMgr')) + $menuitems['misc']['children']['schedulertaskmgr'] = array('link'=>"../out/out.SchedulerTaskMgr.php", 'label'=>'scheduler_task_mgr'); if ($this->check_access('ObjectCheck')) $menuitems['misc']['children']['objectcheck'] = array('link'=>"../out/out.ObjectCheck.php", 'label'=>'objectcheck'); if ($this->check_access('ExpiredDocuments')) From d9a4305fd7ef423421771c0c6e1b5c040e673e6e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 19 Nov 2019 21:03:44 +0100 Subject: [PATCH 248/467] remove second instance of SeedDMS_AccessOperation --- out/out.Calendar.php | 2 -- out/out.Timeline.php | 2 -- 2 files changed, 4 deletions(-) diff --git a/out/out.Calendar.php b/out/out.Calendar.php index 325a54066..2920c0c0a 100644 --- a/out/out.Calendar.php +++ b/out/out.Calendar.php @@ -49,8 +49,6 @@ if(isset($_GET['documentid']) && $_GET['documentid'] && is_numeric($_GET['docume } else $document = null; -$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); - $calendar = new SeedDMS_Calendar($dms->getDB(), $user); if(isset($_GET['eventid']) && $_GET['eventid'] && is_numeric($_GET['eventid'])) { diff --git a/out/out.Timeline.php b/out/out.Timeline.php index f71abdfa9..52c47ef03 100644 --- a/out/out.Timeline.php +++ b/out/out.Timeline.php @@ -42,8 +42,6 @@ if(isset($_GET['skip'])) else $skip = array(); -$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); - $document = null; $content = null; if(isset($_GET['documentid']) && $_GET['documentid'] && is_numeric($_GET['documentid'])) { From 270770782f2135aea1d2662a1d2ca53a876f7da9 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 13:11:24 +0100 Subject: [PATCH 249/467] verifyStatus() handles status change when S_EXPIRED is set --- SeedDMS_Core/Core/inc.ClassDocument.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 799d3f243..56603dba3 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -3285,7 +3285,10 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } elseif($st["status"]==S_IN_REVISION) { if($needsCorrection) $this->setStatus(S_NEEDS_CORRECTION,$msg,$user); else $this->setStatus(S_RELEASED,$msg,$user); + } elseif($st["status"]==S_EXPIRED) { + $this->setStatus(S_RELEASED,$msg,$user); } + } } /* }}} */ From 43f57637e794ab1468b02a54104ef2d76dec9481 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 13:12:11 +0100 Subject: [PATCH 250/467] add method check_view_lecacy_access() which does the legacy access checking if advanded acl is turned off --- inc/inc.ClassAccessOperation.php | 107 +++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 4 deletions(-) diff --git a/inc/inc.ClassAccessOperation.php b/inc/inc.ClassAccessOperation.php index fca3e73b1..b4d44aae4 100644 --- a/inc/inc.ClassAccessOperation.php +++ b/inc/inc.ClassAccessOperation.php @@ -406,6 +406,108 @@ class SeedDMS_AccessOperation { return false; } /* }}} */ + protected function check_view_lecacy_access($view, $get=array()) { /* {{{ */ + if($this->user->isAdmin()) + return true; + + if(is_string($view)) { + $scripts = array($view); + } elseif(is_array($view)) { + $scripts = $view; + } elseif(is_subclass_of($view, 'SeedDMS_View_Common')) { + $scripts = array($view->getParam('class')); + } else { + return false; + } + if(array_intersect($scripts, array( + 'AddDocument', + 'AddEvent', + 'AddFile', + 'AddSubFolder', + 'AddToTransmittal', + 'ApprovalSummary', + 'ApproveDocument', + 'Calendar', + 'CategoryChooser', + 'ChangePassword', + 'CheckInDocument', + 'Clipboard', + 'DocumentAccess', + 'DocumentChooser', + 'DocumentNotify', + 'DocumentVersionDetail', + 'DropFolderChooser', + 'EditAttributes', + 'EditComment', + 'EditDocumentFile', + 'EditDocument', + 'EditEvent', + 'EditFolder', + 'EditOnline', + 'EditUserData', + 'ErrorDlg', + 'FolderAccess', + 'FolderChooser', + 'FolderNotify', + 'ForcePasswordChange', + 'GroupView', + 'Help', + 'Info', + 'KeywordChooser', + 'Login', + 'ManageNotify', + 'MoveDocument', + 'MoveFolder', + 'MyAccount', + 'MyDocuments', + 'OpensearchDesc', + 'OverrideContentStatus', + 'PasswordForgotten', + 'PasswordSend', + 'ReceiptDocument', + 'ReceiptSummary', + 'RemoveDocumentFile', + 'RemoveDocument', + 'RemoveEvent', + 'RemoveFolderFiles', + 'RemoveFolder', + 'RemoveTransmittal', + 'RemoveVersion', + 'RemoveWorkflowFromDocument', + 'ReturnFromSubWorkflow', + 'ReviewDocument', + 'ReviewSummary', + 'ReviseDocument', + 'RewindWorkflow', + 'RunSubWorkflow', + 'SearchForm', + 'Search', + 'Session', + 'SetExpires', + 'SetRecipients', + 'SetReviewersApprovers', + 'SetRevisors', + 'SetWorkflow', + 'SubstituteUser', + 'TimelineFeed', + 'Timeline', + 'TransmittalMgr', + 'TriggerWorkflow', + 'UpdateDocument', + 'UserDefaultKeywords', + 'UserImage', + 'UserList', + 'UsrView', + 'ViewDocument', + 'ViewEvent', + 'ViewFolder', + 'WorkflowGraph', + 'WorkflowSummary'))) + return true; + + return false; + } /* }}} */ + /** * Check for access permission on view * @@ -426,10 +528,7 @@ class SeedDMS_AccessOperation { */ function check_view_access($view, $get=array()) { /* {{{ */ if(!$this->settings->_advancedAcl) { - if($this->user->isAdmin()) - return true; - else - return false; + return $this->check_view_lecacy_access($view, $get); } if(is_string($view)) { $scripts = array($view); From a493e7645dff0726989d787cfb5a9b1063055bdf Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 13:13:07 +0100 Subject: [PATCH 251/467] set accessobject already in factory --- inc/inc.ClassUI.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inc/inc.ClassUI.php b/inc/inc.ClassUI.php index 0b9efd8e9..d591e5062 100644 --- a/inc/inc.ClassUI.php +++ b/inc/inc.ClassUI.php @@ -45,7 +45,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, $session, $EXT_CONF; + global $settings, $dms, $user, $session, $EXT_CONF; if(!$class) { $class = 'Bootstrap'; $classname = "SeedDMS_Bootstrap_Style"; @@ -105,6 +105,7 @@ class UI extends UI_Default { require($filename); $view = new $classname($params, $theme); /* Set some configuration parameters */ + $view->setParam('accessobject', new SeedDMS_AccessOperation($dms, $user, $settings)); $view->setParam('refferer', $_SERVER['REQUEST_URI']); $view->setParam('absbaseprefix', $settings->_httpRoot.$httpbasedir); $view->setParam('class', $class); From 1b6a07b73e466d792d490941d2992d9ebbce2ab6 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 13:13:28 +0100 Subject: [PATCH 252/467] more documentation --- inc/inc.ClassViewCommon.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/inc/inc.ClassViewCommon.php b/inc/inc.ClassViewCommon.php index 7f52cd0fc..f32f43259 100644 --- a/inc/inc.ClassViewCommon.php +++ b/inc/inc.ClassViewCommon.php @@ -210,6 +210,9 @@ class SeedDMS_View_Common { * to check access rights. If the the optional $name is not set the * current view is used. * + * If $name is an array then just one of the passed objects in the array + * must be accessible for this function to return true. + * * @param string|array $name name of view or list of view names * @return boolean true if access is allowed otherwise false */ From ed32e8e2b2ea0c144e95ac12391874c678585651 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 13:13:51 +0100 Subject: [PATCH 253/467] call $accessobject->check_view_access() instead of $this->check_access() --- views/bootstrap/class.Bootstrap.php | 96 ++++++++++++++++------------- 1 file changed, 52 insertions(+), 44 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index e2ea94d18..abf9207fc 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -281,6 +281,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; */ function __menuTasks($tasks) { /* {{{ */ $dms = $this->params['dms']; + $accessobject = $this->params['accessobject']; $content = ''; // $content .= "
        \n"; // $content .= "
      • \n"; @@ -330,7 +331,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $content .= "
      \n"; $content .= " \n"; } - if ($this->check_access('MyDocuments')) { + if ($accessobject->check_view_access('MyDocuments')) { $content .= "
    • \n"; $content .= "
    • ".getMLText("my_documents")."
    • \n"; } @@ -342,6 +343,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; function globalNavigation($folder=null) { /* {{{ */ $dms = $this->params['dms']; + $accessobject = $this->params['accessobject']; echo "
      \n"; echo "
      \n"; echo "
      \n"; @@ -359,11 +361,11 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo "
        \n"; if (!$this->params['user']->isGuest()) { $menuitems = array(); - if ($this->check_access('MyDocuments')) + if ($accessobject->check_view_access('MyDocuments')) $menuitems['my_documents'] = array('link'=>"../out/out.MyDocuments.php", 'label'=>'my_documents'); - if ($this->check_access('MyAccount')) + if ($accessobject->check_view_access('MyAccount')) $menuitems['my_account'] = array('link'=>"../out/out.MyAccount.php", 'label'=>'my_account'); - if ($this->check_access('TransmittalMgr')) + if ($accessobject->check_view_access('TransmittalMgr')) $menuitems['my_transmittals'] = array('link'=>"../out/out.TransmittalMgr.php", 'label'=>'my_transmittals'); $hookObjs = $this->getHookObjects('SeedDMS_View_Bootstrap'); foreach($hookObjs as $hookObj) { @@ -453,8 +455,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo "
          \n"; // echo "
        • params['rootfolderid']."\">".getMLText("content")."
        • \n"; // echo "
        • params['rootfolderid']."\">".getMLText("search")."
        • \n"; - if ($this->params['enablecalendar'] && $this->check_access('Calendar')) echo "
        • params['calendardefaultview']."\">".getMLText("calendar")."
        • \n"; - if ($this->check_access('AdminTools')) echo "
        • ".getMLText("admin_tools")."
        • \n"; + if ($this->params['enablecalendar'] && $accessobject->check_view_access('Calendar')) echo "
        • params['calendardefaultview']."\">".getMLText("calendar")."
        • \n"; + if ($accessobject->check_view_access('AdminTools')) echo "
        • ".getMLText("admin_tools")."
        • \n"; if($this->params['enablehelp']) { $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); echo "
        • ".getMLText("help")."
        • \n"; @@ -572,6 +574,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; private function folderNavigationBar($folder) { /* {{{ */ $dms = $this->params['dms']; + $accessobject = $this->params['accessobject']; if (!is_object($folder) || !$folder->isType('folder')) { echo "
            \n"; echo "
          \n"; @@ -585,12 +588,13 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems = array(); if ($accessMode == M_READ && !$this->params['user']->isGuest()) { + if ($accessobject->check_view_access('FolderNotify')) $menuitems['edit_folder_notify'] = array('link'=>"../out/out.FolderNotify.php?folderid=".$folderID."&showtree=".showtree(), 'label'=>'edit_folder_notify'); } else if ($accessMode >= M_READWRITE) { - if ($this->check_access('AddSubFolder')) + if ($accessobject->check_view_access('AddSubFolder')) $menuitems['add_subfolder'] = array('link'=>"../out/out.AddSubFolder.php?folderid=". $folderID ."&showtree=".showtree(), 'label'=>'add_subfolder'); - if ($this->check_access('AddDocument')) + if ($accessobject->check_view_access('AddDocument')) $menuitems['add_document'] = array('link'=>"../out/out.AddDocument.php?folderid=". $folderID ."&showtree=".showtree(), 'label'=>'add_document'); if(0 && $this->params['enablelargefileupload']) $menuitems['add_multiple_documents'] = array('link'=>"../out/out.AddMultiDocument.php?folderid=". $folderID ."&showtree=".showtree(), 'label'=>'add_multiple_documents'); @@ -623,6 +627,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } /* }}} */ private function documentNavigationBar($document) { /* {{{ */ + $accessobject = $this->params['accessobject']; $accessMode = $document->getAccessMode($this->params['user']); $docid=".php?documentid=" . $document->getID(); echo "".getMLText("document")."\n"; @@ -667,7 +672,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } if ($accessMode == M_ALL) { $menuitems['rm_document'] = array('link'=>"../out/out.RemoveDocument".$docid, 'label'=>'rm_document'); - if ($this->check_access('DocumentAccess')) + if ($accessobject->check_view_access('DocumentAccess')) $menuitems['edit_document_access'] = array('link'=>"../out/out.DocumentAccess". $docid, 'label'=>'edit_document_access'); } if ($accessMode >= M_READ && !$this->params['user']->isGuest()) { @@ -701,6 +706,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } /* }}} */ private function accountNavigationBar() { /* {{{ */ + $accessobject = $this->params['accessobject']; echo "".getMLText("my_account")."\n"; echo "
          \n"; echo "
            \n"; @@ -717,9 +723,9 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['2_factor_auth'] = array('link'=>"../out/out.Setup2Factor.php", 'label'=>'edit_existing_notify'); if ($this->params['enableusersview']){ - if ($this->check_access('UsrView')) + if ($accessobject->check_view_access('UsrView')) $menuitems['users'] = array('link'=>"../out/out.UsrView.php", 'label'=>'users'); - if ($this->check_access('GroupView')) + if ($accessobject->check_view_access('GroupView')) $menuitems['groups'] = array('link'=>"../out/out.GroupView.php", 'label'=>'groups'); } @@ -735,6 +741,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } /* }}} */ private function myDocumentsNavigationBar() { /* {{{ */ + $accessobject = $this->params['accessobject']; echo "".getMLText("my_documents")."\n"; echo "
            \n"; @@ -763,91 +770,92 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } /* }}} */ private function adminToolsNavigationBar() { /* {{{ */ + $accessobject = $this->params['accessobject']; echo " ".getMLText("admin_tools")."\n"; echo "
            \n"; echo "
              \n"; - if($this->check_access(array('UsrMgr', 'RoleMgr', 'GroupMgr', 'UserList', 'Acl'))) { + if($accessobject->check_view_access(array('UsrMgr', 'RoleMgr', 'GroupMgr', 'UserList', 'Acl'))) { $menuitems = array(); $menuitems['user_group_management'] = array('link'=>"#", 'label'=>'user_group_management'); - if ($this->check_access('UsrMgr')) + if ($accessobject->check_view_access('UsrMgr')) $menuitems['user_group_management']['children']['user_management'] = array('link'=>"../out/out.UsrMgr.php", 'label'=>'user_management'); - if ($this->check_access('RoleMgr')) + if ($accessobject->check_view_access('RoleMgr')) $menuitems['user_group_management']['children']['role_management'] = array('link'=>"../out/out.RoleMgr.php", 'label'=>'role_management'); - if ($this->check_access('GroupMgr')) + if ($accessobject->check_view_access('GroupMgr')) $menuitems['user_group_management']['children']['group_management'] = array('link'=>"../out/out.GroupMgr.php", 'label'=>'group_management'); - if ($this->check_access('UserList')) + if ($accessobject->check_view_access('UserList')) $menuitems['user_group_management']['children']['user_list'] = array('link'=>"../out/out.UserList.php", 'label'=>'user_list'); - if ($this->check_access('Acl')) + if ($accessobject->check_view_access('Acl')) $menuitems['user_group_management']['children']['access_control'] = array('link'=>"../out/out.Acl.php", 'label'=>'access_control'); } - if($this->check_access(array('DefaultKeywords', 'Categories', 'AttributeMgr', 'WorkflowMgr', 'WorkflowStatesMgr', 'WorkflowActionsMgr'))) { + if($accessobject->check_view_access(array('DefaultKeywords', 'Categories', 'AttributeMgr', 'WorkflowMgr', 'WorkflowStatesMgr', 'WorkflowActionsMgr'))) { $menuitems['definitions'] = array('link'=>"#", 'label'=>'definitions'); - if ($this->check_access('DefaultKeywords')) + if ($accessobject->check_view_access('DefaultKeywords')) $menuitems['definitions']['children']['default_keywords'] = array('link'=>"../out/out.DefaultKeywords.php", 'label'=>'global_default_keywords'); - if ($this->check_access('Categories')) + if ($accessobject->check_view_access('Categories')) $menuitems['definitions']['children']['document_categories'] = array('link'=>"../out/out.Categories.php", 'label'=>'global_document_categories'); - if ($this->check_access('AttributeMgr')) + if ($accessobject->check_view_access('AttributeMgr')) $menuitems['definitions']['children']['attribute_definitions'] = array('link'=>"../out/out.AttributeMgr.php", 'label'=>'global_attributedefinitions'); if($this->params['workflowmode'] == 'advanced') { - if ($this->check_access('WorkflowMgr')) + if ($accessobject->check_view_access('WorkflowMgr')) $menuitems['definitions']['children']['workflows'] = array('link'=>"../out/out.WorkflowMgr.php", 'label'=>'global_workflows'); - if ($this->check_access('WorkflowStatesMgr')) + if ($accessobject->check_view_access('WorkflowStatesMgr')) $menuitems['definitions']['children']['workflow_states'] = array('link'=>"../out/out.WorkflowStatesMgr.php", 'label'=>'global_workflow_states'); - if ($this->check_access('WorkflowActionsMgr')) + if ($accessobject->check_view_access('WorkflowActionsMgr')) $menuitems['definitions']['children']['workflow_actions'] = array('link'=>"../out/out.WorkflowActionsMgr.php", 'label'=>'global_workflow_actions'); } } if($this->params['enablefullsearch']) { - if($this->check_access(array('Indexer', 'CreateIndex', 'IndexInfo'))) { + if($accessobject->check_view_access(array('Indexer', 'CreateIndex', 'IndexInfo'))) { $menuitems['fulltext'] = array('link'=>"#", 'label'=>'fullsearch'); - if ($this->check_access('Indexer')) + if ($accessobject->check_view_access('Indexer')) $menuitems['fulltext']['children']['update_fulltext_index'] = array('link'=>"../out/out.Indexer.php", 'label'=>'update_fulltext_index'); - if ($this->check_access('CreateIndex')) + if ($accessobject->check_view_access('CreateIndex')) $menuitems['fulltext']['children']['create_fulltext_index'] = array('link'=>"../out/out.CreateIndex.php", 'label'=>'create_fulltext_index'); - if ($this->check_access('IndexInfo')) + if ($accessobject->check_view_access('IndexInfo')) $menuitems['fulltext']['children']['fulltext_info'] = array('link'=>"../out/out.IndexInfo.php", 'label'=>'fulltext_info'); } } - if($this->check_access(array('BackupTools', 'LogManagement'))) { + if($accessobject->check_view_access(array('BackupTools', 'LogManagement'))) { $menuitems['backup_log_management'] = array('link'=>"#", 'label'=>'backup_log_management'); - if ($this->check_access('BackupTools')) + if ($accessobject->check_view_access('BackupTools')) $menuitems['backup_log_management']['children'][] = array('link'=>"../out/out.BackupTools.php", 'label'=>'backup_tools'); if ($this->params['logfileenable']) - if ($this->check_access('LogManagement')) + if ($accessobject->check_view_access('LogManagement')) $menuitems['backup_log_management']['children'][] = array('link'=>"../out/out.LogManagement.php", 'label'=>'log_management'); } - if($this->check_access(array('Statistic', 'Charts', 'Timeline', 'ObjectCheck', 'ExtensionMgr', 'Info'))) { + if($accessobject->check_view_access(array('Statistic', 'Charts', 'Timeline', 'ObjectCheck', 'ExtensionMgr', 'Info'))) { $menuitems['misc'] = array('link'=>"#", 'label'=>'misc'); - if ($this->check_access('ImportFS')) + if ($accessobject->check_view_access('ImportFS')) $menuitems['misc']['children']['import_fs'] = array('link'=>"../out/out.ImportFS.php", 'label'=>'import_fs'); - if ($this->check_access('Statistic')) + if ($accessobject->check_view_access('Statistic')) $menuitems['misc']['children']['folders_and_documents_statistic'] = array('link'=>"../out/out.Statistic.php", 'label'=>'folders_and_documents_statistic'); - if ($this->check_access('Charts')) + if ($accessobject->check_view_access('Charts')) $menuitems['misc']['children']['charts'] = array('link'=>"../out/out.Charts.php", 'label'=>'charts'); - if ($this->check_access('Timeline')) + if ($accessobject->check_view_access('Timeline')) $menuitems['misc']['children']['timeline'] = array('link'=>"../out/out.Timeline.php", 'label'=>'timeline'); - if ($this->check_access('SchedulerTaskMgr')) + if ($accessobject->check_view_access('SchedulerTaskMgr')) $menuitems['misc']['children']['schedulertaskmgr'] = array('link'=>"../out/out.SchedulerTaskMgr.php", 'label'=>'scheduler_task_mgr'); - if ($this->check_access('ObjectCheck')) + if ($accessobject->check_view_access('ObjectCheck')) $menuitems['misc']['children']['objectcheck'] = array('link'=>"../out/out.ObjectCheck.php", 'label'=>'objectcheck'); - if ($this->check_access('ExpiredDocuments')) + if ($accessobject->check_view_access('ExpiredDocuments')) $menuitems['misc']['children']['documents_expired'] = array('link'=>"../out/out.ExpiredDocuments.php", 'label'=>'documents_expired'); - if ($this->check_access('ExtensionMgr')) + if ($accessobject->check_view_access('ExtensionMgr')) $menuitems['misc']['children']['extension_manager'] = array('link'=>"../out/out.ExtensionMgr.php", 'label'=>'extension_manager'); - if ($this->check_access('ClearCache')) + if ($accessobject->check_view_access('ClearCache')) $menuitems['misc']['children']['clear_cache'] = array('link'=>"../out/out.ClearCache.php", 'label'=>'clear_cache'); - if ($this->check_access('Info')) + if ($accessobject->check_view_access('Info')) $menuitems['misc']['children']['version_info'] = array('link'=>"../out/out.Info.php", 'label'=>'version_info'); } - if($this->check_access(array('Hooks'))) { + if($accessobject->check_view_access(array('Hooks'))) { $menuitems['debug'] = array('link'=>"#", 'label'=>'debug'); - if ($this->check_access('Hooks')) + if ($accessobject->check_view_access('Hooks')) $menuitems['debug']['children']['hooks'] = array('link'=>"../out/out.Hooks.php", 'label'=>'list_hooks'); } From 4e0cf697cbb88d28e31a9a5187518bf56f110800 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 13:14:34 +0100 Subject: [PATCH 254/467] set 'onepage' in view --- out/out.MyDocuments.php | 1 + 1 file changed, 1 insertion(+) diff --git a/out/out.MyDocuments.php b/out/out.MyDocuments.php index d4f73fd67..26c564ae1 100644 --- a/out/out.MyDocuments.php +++ b/out/out.MyDocuments.php @@ -56,6 +56,7 @@ if($view) { $view->setParam('previewWidthList', $settings->_previewWidthList); $view->setParam('timeout', $settings->_cmdTimeout); $view->setParam('xsendfile', $settings->_enableXsendfile); + $view->setParam('onepage', $settings->_onePageMode); // do most navigation by reloading areas of pages with ajax $view($_GET); exit; } From 21e1efc1473d6a396fab1baf9261d2f3b0f9d19d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 13:17:04 +0100 Subject: [PATCH 255/467] set 'onepage' in view --- out/out.ApprovalSummary.php | 1 + out/out.ReviewSummary.php | 1 + 2 files changed, 2 insertions(+) diff --git a/out/out.ApprovalSummary.php b/out/out.ApprovalSummary.php index 370234205..6132b73e8 100644 --- a/out/out.ApprovalSummary.php +++ b/out/out.ApprovalSummary.php @@ -41,6 +41,7 @@ if($view) { $view->setParam('previewWidthList', $settings->_previewWidthList); $view->setParam('timeout', $settings->_cmdTimeout); $view->setParam('xsendfile', $settings->_enableXsendfile); + $view->setParam('onepage', $settings->_onePageMode); // do most navigation by reloading areas of pages with ajax $view($_GET); exit; } diff --git a/out/out.ReviewSummary.php b/out/out.ReviewSummary.php index 370234205..6132b73e8 100644 --- a/out/out.ReviewSummary.php +++ b/out/out.ReviewSummary.php @@ -41,6 +41,7 @@ if($view) { $view->setParam('previewWidthList', $settings->_previewWidthList); $view->setParam('timeout', $settings->_cmdTimeout); $view->setParam('xsendfile', $settings->_enableXsendfile); + $view->setParam('onepage', $settings->_onePageMode); // do most navigation by reloading areas of pages with ajax $view($_GET); exit; } From d2382f437ce1bc1dc7f1ce15928dfa180def60f5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 13:37:52 +0100 Subject: [PATCH 256/467] set 'onepage' for view --- out/out.ReceiptSummary.php | 1 + 1 file changed, 1 insertion(+) diff --git a/out/out.ReceiptSummary.php b/out/out.ReceiptSummary.php index 00d8ed5ae..2d51e49e8 100644 --- a/out/out.ReceiptSummary.php +++ b/out/out.ReceiptSummary.php @@ -46,6 +46,7 @@ if($view) { $view->setParam('previewconverters', $settings->_converters['preview']); $view->setParam('timeout', $settings->_cmdTimeout); $view->setParam('accessobject', $accessop); + $view->setParam('onepage', $settings->_onePageMode); // do most navigation by reloading areas of pages with ajax $view($_GET); exit; } From 55727bd1a23af7737c22b7b5e847ff426cd6f835 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 13:47:57 +0100 Subject: [PATCH 257/467] do not use $this->check_access() anymore --- views/bootstrap/class.Acl.php | 7 +- views/bootstrap/class.RoleMgr.php | 3 +- views/bootstrap/class.Tasks.php | 3 +- views/bootstrap/class.UserList.php | 3 +- views/bootstrap/class.UsrMgr.php | 12 +-- views/bootstrap/class.ViewDocument.php | 114 ++++++++++++------------- 6 files changed, 73 insertions(+), 69 deletions(-) diff --git a/views/bootstrap/class.Acl.php b/views/bootstrap/class.Acl.php index d20321f25..8ccd96601 100644 --- a/views/bootstrap/class.Acl.php +++ b/views/bootstrap/class.Acl.php @@ -133,6 +133,7 @@ $(document).ready( function() { $dms = $this->params['dms']; $user = $this->params['user']; $selrole = $this->params['selrole']; + $accessobject = $this->params['accessobject']; if($selrole) { $this->contentHeading(getMLText("role_info")); @@ -148,11 +149,11 @@ $(document).ready( function() { echo "
              ".htmlspecialchars($currUser->getComment()).""; echo ""; echo "
      "; echo ""; echo "\n"; @@ -682,69 +682,69 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print "
        "; if ($file_exists){ - if($accessop->check_controller_access('Download', array('action'=>'version'))) { + if($accessobject->check_controller_access('Download', array('action'=>'version'))) { print "
      • getVersion()."\">".getMLText("download")."
      • "; } - if($accessop->check_controller_access('ViewOnline', array('action'=>'run'))) { + if($accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) { if ($viewonlinefiletypes && (in_array(strtolower($latestContent->getFileType()), $viewonlinefiletypes) || in_array(strtolower($latestContent->getMimeType()), $viewonlinefiletypes))) print "
      • getVersion()."\">" . getMLText("view_online") . "
      • "; } } print "
      "; print "
        "; - if($this->check_access('EditOnline')) - if($accessop->mayEditVersion($document)) { + if($accessobject->check_view_access('EditOnline')) + if($accessobject->mayEditVersion($document)) { print "
      • ".$this->html_link('EditOnline', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "".getMLText("edit_version"), false, true)."
      • "; } /* Only admin has the right to remove version in any case or a regular * user if enableVersionDeletion is on */ - if($accessop->check_controller_access('RemoveVersion')) - if($accessop->mayRemoveVersion($document)) { + if($accessobject->check_controller_access('RemoveVersion')) + if($accessobject->mayRemoveVersion($document)) { print "
      • ".$this->html_link('RemoveVersion', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "".getMLText("rm_version"), false, true)."
      • "; } - if($accessop->check_controller_access('OverrideContentStatus')) - if($accessop->mayOverrideStatus($document)) { + if($accessobject->check_controller_access('OverrideContentStatus')) + if($accessobject->mayOverrideStatus($document)) { print "
      • ".$this->html_link('OverrideContentStatus', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "".getMLText("change_status"), false, true)."
      • "; } - if($enablereceiptworkflow && $accessop->check_controller_access('SetRecipients')) - if($accessop->maySetRecipients($document)) { + if($enablereceiptworkflow && $accessobject->check_controller_access('SetRecipients')) + if($accessobject->maySetRecipients($document)) { print "
      • ".$this->html_link('SetRecipients', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "".getMLText("change_recipients"), false, true)."
      • "; } - if($enablerevisionworkflow && $accessop->check_controller_access('SetRevisors')) - if($accessop->maySetRevisors($document)) { + if($enablerevisionworkflow && $accessobject->check_controller_access('SetRevisors')) + if($accessobject->maySetRevisors($document)) { print "
      • ".$this->html_link('SetRevisors', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "".getMLText("change_revisors"), false, true)."
      • "; } if($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { // Allow changing reviewers/approvals only if not reviewed - if($accessop->check_controller_access('SetReviewersApprovers')) - if($accessop->maySetReviewersApprovers($document)) { + if($accessobject->check_controller_access('SetReviewersApprovers')) + if($accessobject->maySetReviewersApprovers($document)) { print "
      • ".$this->html_link('SetReviewersApprovers', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "".getMLText("change_assignments"), false, true)."
      • "; } } else { - if($accessop->check_controller_access('SetWorkflow')) - if($accessop->maySetWorkflow($document)) { + if($accessobject->check_controller_access('SetWorkflow')) + if($accessobject->maySetWorkflow($document)) { if(!$workflow) { print "
      • ".$this->html_link('SetWorkflow', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "".getMLText("set_workflow"), false, true)."
      • "; } } } /* - if($accessop->maySetExpires($document)) { + if($accessobject->maySetExpires($document)) { print "
      • ".$this->html_link('SetExpires', array('documentid'=>$documentid), array(), "".getMLText("set_expiry"), false, true)."
      • "; } */ - if($accessop->check_controller_access('AddToTransmittal')) + if($accessobject->check_controller_access('AddToTransmittal')) if($dms->getAllTransmittals($user)) { - if($this->check_access('AddToTransmittal')) + if($accessobject->check_view_access('AddToTransmittal')) print "
      • ".$this->html_link('AddToTransmittal', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "".getMLText("add_to_transmittal"), false, true)."
      • "; } - if($accessop->check_controller_access('EditComment')) - if($accessop->mayEditComment($document)) { + if($accessobject->check_controller_access('EditComment')) + if($accessobject->mayEditComment($document)) { print "
      • ".$this->html_link('EditComment', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "".getMLText("edit_comment"), false, true)."
      • "; } - if($accessop->check_controller_access('EditAttributes')) - if($accessop->mayEditAttributes($document)) { + if($accessobject->check_controller_access('EditAttributes')) + if($accessobject->mayEditAttributes($document)) { print "
      • ".$this->html_link('EditAttributes', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion()), array(), "".getMLText("edit_attributes"), false, true)."
      • "; } @@ -881,7 +881,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print htmlspecialchars($r["comment"]); if($r['file']) { echo "
        "; - if($accessop->check_controller_access('Download', array('action'=>'run'))) { + if($accessobject->check_controller_access('Download', array('action'=>'run'))) { echo " ".getMLText('download').""; } } @@ -891,11 +891,11 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { if($accesserr) echo "
      • ".$accesserr."
      • "; - if($accessop->mayReview($document)) { + if($accessobject->mayReview($document)) { if ($is_reviewer) { if ($r["status"]==0) { print "
      • ".$this->html_link('ReviewDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'reviewid'=>$r['reviewID']), array('class'=>'btn btn-mini'), getMLText("add_review"), false, true)."
      • "; - } elseif ($accessop->mayUpdateReview($document, $updateUser) && (($r["status"]==1)||($r["status"]==-1))){ + } elseif ($accessobject->mayUpdateReview($document, $updateUser) && (($r["status"]==1)||($r["status"]==-1))){ print "
      • ".$this->html_link('ReviewDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'reviewid'=>$r['reviewID']), array('class'=>'btn btn-mini'), getMLText("edit"), false, true)."
      • "; } } @@ -973,7 +973,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print htmlspecialchars($a["comment"]); if($a['file']) { echo "
        "; - if($accessop->check_controller_access('Download', array('action'=>'run'))) { + if($accessobject->check_controller_access('Download', array('action'=>'run'))) { echo " ".getMLText('download').""; } } @@ -983,11 +983,11 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { if($accesserr) echo "
      • ".$accesserr."
      • "; - if($accessop->mayApprove($document)) { + if($accessobject->mayApprove($document)) { if ($is_approver) { if ($a['status'] == 0) { print "
      • ".$this->html_link('ApproveDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'approveid'=>$a['approveID']), array('class'=>'btn btn-mini'), getMLText("add_approval"), false, true)."
      • "; - } elseif ($accessop->mayUpdateApproval($document, $updateUser) && (($a["status"]==1)||($a["status"]==-1))){ + } elseif ($accessobject->mayUpdateApproval($document, $updateUser) && (($a["status"]==1)||($a["status"]==-1))){ print "
      • ".$this->html_link('ApproveDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'approveid'=>$a['approveID']), array('class'=>'btn btn-mini'), getMLText("edit"), false, true)."
      • "; } } @@ -1045,7 +1045,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
        "; - if ($user_is_involved && $this->check_access('WorkflowGraph')) + if ($user_is_involved && $accessobject->check_view_access('WorkflowGraph')) echo "
        "; else echo "
        "; @@ -1233,7 +1233,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { } $this->contentContainerEnd(); echo "
        "; - if ($user_is_involved && $this->check_access('WorkflowGraph')) { + if ($user_is_involved && $accessobject->check_view_access('WorkflowGraph')) { echo "
        "; ?> @@ -1322,11 +1322,11 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print "
      ".($parent ? '' : '')."".($parent ? '' : '')."".getMLText("name"); print " ".($orderby=="n"||$orderby=="na"?' ':($orderby=="nd"?' ':' ')).""; print " ".($orderby=="s"||$orderby=="sa"?' ':($orderby=="sd"?' ':' ')).""; From 120fd46bfd48d5c89f400533bb01bb096236aa15 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 28 Oct 2019 10:10:08 +0100 Subject: [PATCH 226/467] adding conf for editorconfig --- .editorconfig | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..9f5028851 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +trim_trailing_whitespaces = true +indent_style = tab +indent_size = 4 From 7932349bf66daab5c3f8c825183384404e975202 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 28 Oct 2019 10:11:06 +0100 Subject: [PATCH 227/467] set indent_size to 2 --- .editorconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.editorconfig b/.editorconfig index 9f5028851..072c0c22b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -5,4 +5,4 @@ charset = utf-8 end_of_line = lf trim_trailing_whitespaces = true indent_style = tab -indent_size = 4 +indent_size = 2 From 3c26142744de4f4c3bfb7747eec39730d3051776 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 28 Oct 2019 12:06:41 +0100 Subject: [PATCH 228/467] onePageMode can be turned on/off --- inc/inc.ClassSettings.php | 4 ++++ op/op.Settings.php | 1 + out/out.ViewFolder.php | 2 +- views/bootstrap/class.Settings.php | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 5561d2fd4..564f4adda 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -125,6 +125,8 @@ class Settings { /* {{{ */ var $_enableConverting = false; // default style var $_theme = "bootstrap"; + // experimental one page mode for ViewFolder page + var $_onePageMode = false; // Workaround for page titles that go over more than 2 lines. var $_titleDisplayHack = true; // enable/disable automatic email notification @@ -433,6 +435,7 @@ class Settings { /* {{{ */ if(trim(strval($tab["availablelanguages"]))) $this->_availablelanguages = explode(',',strval($tab["availablelanguages"])); $this->_theme = strval($tab["theme"]); + $this->_onePageMode = Settings::boolVal($tab["onePageMode"]); if(isset($tab["previewWidthList"])) $this->_previewWidthList = intval($tab["previewWidthList"]); if(isset($tab["previewWidthMenuList"])) @@ -786,6 +789,7 @@ class Settings { /* {{{ */ $this->setXMLAttributValue($node, "language", $this->_language); $this->setXMLAttributValue($node, "availablelanguages", implode(',', $this->_availablelanguages)); $this->setXMLAttributValue($node, "theme", $this->_theme); + $this->setXMLAttributValue($node, "onePageMode", $this->_onePageMode); $this->setXMLAttributValue($node, "previewWidthList", $this->_previewWidthList); $this->setXMLAttributValue($node, "previewWidthMenuList", $this->_previewWidthMenuList); $this->setXMLAttributValue($node, "previewWidthDetail", $this->_previewWidthDetail); diff --git a/op/op.Settings.php b/op/op.Settings.php index b02ee237c..ae396169a 100644 --- a/op/op.Settings.php +++ b/op/op.Settings.php @@ -64,6 +64,7 @@ if ($action == "saveSettings") else $settings->_availablelanguages = $_POST["availablelanguages"]; $settings->_theme = $_POST["theme"]; + $settings->_onePageMode = $_POST["onePageMode"]; $settings->_previewWidthList = $_POST["previewWidthList"]; $settings->_previewWidthMenuList = $_POST["previewWidthMenuList"]; $settings->_previewWidthDropFolderList = $_POST["previewWidthDropFolderList"]; diff --git a/out/out.ViewFolder.php b/out/out.ViewFolder.php index c7d2a4853..3ddf922ef 100644 --- a/out/out.ViewFolder.php +++ b/out/out.ViewFolder.php @@ -96,7 +96,7 @@ if($view) { $view->setParam('incItemsPerPage', $settings->_incItemsPerPage != 0 ? $settings->_incItemsPerPage : $settings->_maxItemsPerPage); $view->setParam('offset', $offset); $view->setParam('limit', $limit); - $view->setParam('onepage', true); // do most navigation by reloading areas of pages with ajax + $view->setParam('onepage', $settings->_onePageMode); // do most navigation by reloading areas of pages with ajax $view($_GET); exit; } diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index a83cdf384..5bf83d692 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -271,6 +271,7 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); showConfigOption('settings_available_languages', 'availablelanguages', getAvailableLanguages(), true, true); ?> showConfigOption('settings_language', 'language', getAvailableLanguages(), false, true); ?> showConfigOption('settings_theme', 'theme', UI::getStyles(), false, false); ?> +showConfigCheckbox('settings_onePageMode', 'onePageMode'); ?> showConfigText('settings_previewWidthList', 'previewWidthList'); ?> showConfigText('settings_previewWidthMenuList', 'previewWidthMenuList'); ?> showConfigText('settings_previewWidthDropFolderList', 'previewWidthDropFolderList'); ?> From 28b2c0249909a5ce870a94bb4991c158ab45a374 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 28 Oct 2019 12:07:37 +0100 Subject: [PATCH 229/467] add keys settings_onePageMode and settings_onePageMode_desc --- languages/ar_EG/lang.inc | 2 ++ languages/bg_BG/lang.inc | 2 ++ languages/ca_ES/lang.inc | 2 ++ languages/cs_CZ/lang.inc | 2 ++ languages/de_DE/lang.inc | 4 +++- languages/el_GR/lang.inc | 2 ++ languages/en_GB/lang.inc | 4 +++- languages/es_ES/lang.inc | 2 ++ languages/fr_FR/lang.inc | 2 ++ languages/hr_HR/lang.inc | 2 ++ languages/hu_HU/lang.inc | 2 ++ languages/it_IT/lang.inc | 2 ++ languages/ko_KR/lang.inc | 2 ++ languages/lo_LA/lang.inc | 2 ++ languages/nl_NL/lang.inc | 2 ++ languages/pl_PL/lang.inc | 2 ++ languages/pt_BR/lang.inc | 2 ++ languages/ro_RO/lang.inc | 2 ++ languages/ru_RU/lang.inc | 2 ++ languages/sk_SK/lang.inc | 2 ++ languages/sv_SE/lang.inc | 2 ++ languages/tr_TR/lang.inc | 2 ++ languages/uk_UA/lang.inc | 2 ++ languages/zh_CN/lang.inc | 2 ++ languages/zh_TW/lang.inc | 2 ++ 25 files changed, 52 insertions(+), 2 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index f0919a9e9..6a99a05a9 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -1375,6 +1375,8 @@ URL: [url]', 'settings_Notification' => '', 'settings_notwritable' => 'ﻻ ﻲﻤﻜﻧ ﺢﻔﻇ ﺎﻠﺘﻛﻮﻴﻧ ﻸﻧ ﻢﻠﻓ ﺎﻠﺘﻛﻮﻴﻧ ﻎﻳﺭ ﻕﺎﺒﻟ ﻞﻠﻜﺗﺎﺑﺓ', 'settings_no_content_dir' => '', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', 'settings_partitionSize' => '', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 7cfe1f6ca..83741c002 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -1238,6 +1238,8 @@ $text = array( 'settings_Notification' => 'Настройка за известяване', 'settings_notwritable' => 'Конфигурацията не може да бъде съхранена, защото файлът на конфигурацията е само за четене.', 'settings_no_content_dir' => 'Каталог със съдържанието', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', 'settings_partitionSize' => 'Частичен размер на файла', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 0c8622a4b..01bcbb405 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -1243,6 +1243,8 @@ URL: [url]', 'settings_Notification' => '', 'settings_notwritable' => '', 'settings_no_content_dir' => '', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', 'settings_partitionSize' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 87cb4ae30..bc0faaec4 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -1454,6 +1454,8 @@ Jméno: [username] 'settings_Notification' => 'Nastavení upozornění', 'settings_notwritable' => 'Konfigurace nemůže být uložena, protože se do konfiguračního souboru nedá zapsat.', 'settings_no_content_dir' => 'Content directory', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Přepsat typ MimeType', 'settings_overrideMimeType_desc' => 'Přepsat MimeType dodaný prohlížečem, pokud je nahrán soubor. Nový MimeType je určen samotným SeedDMS.', 'settings_partitionSize' => 'Částečná velikost souboru', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 21dcce1ca..0add1a8b1 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 (2697), dgrutsch (22) +// Translators: Admin (2699), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -1464,6 +1464,8 @@ Name: [username] 'settings_Notification' => 'Benachrichtigungen-Einstellungen', 'settings_notwritable' => 'Die Konfiguration kann nicht gespeichert werden, weil die Konfigurationsdatei nicht schreibbar ist.', 'settings_no_content_dir' => 'Content directory', +'settings_onePageMode' => 'Einseiten-Modus', +'settings_onePageMode_desc' => 'Der Einseiten-Modus schaltet javascript auf der ViewFolder-Seite ein, der die Ordner- und Dokumentenliste, die Navigation, etc. aktualisiert, wenn auf einen Ordner geklickt wird.', 'settings_overrideMimeType' => 'Überschreibe MimeType', 'settings_overrideMimeType_desc' => 'Überschreibe den MimeType, der vom Browser beim Hochladen einer Datei übertragen wird. Der neue MimeType wird von SeedDMS selbst ermittelt.', 'settings_partitionSize' => 'Partitionsgröße', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index c72b6c47e..82a7b9a2b 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -1249,6 +1249,8 @@ URL: [url]', 'settings_Notification' => '', 'settings_notwritable' => '', 'settings_no_content_dir' => '', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', 'settings_partitionSize' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index c2c459f38..b48452290 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 (1791), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1793), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -1459,6 +1459,8 @@ Name: [username] 'settings_Notification' => 'Notification settings', 'settings_notwritable' => 'The configuration cannot be saved because the configuration file is not writable.', 'settings_no_content_dir' => 'Content directory', +'settings_onePageMode' => 'One page mode', +'settings_onePageMode_desc' => 'One page mode will turn on javascript code on the ViewFolder page, which updates the folder/document list, navigation, etc. when clicking on a folder or changing the sort parameter.', 'settings_overrideMimeType' => 'Override MimeType', 'settings_overrideMimeType_desc' => 'Override the MimeType delivered by the browser, if a file is uploaded. The new MimeType is determined by SeedDMS itself.', 'settings_partitionSize' => 'Partial filesize', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index bc2d627d9..3aa3b6912 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -1390,6 +1390,8 @@ URL: [url]', 'settings_Notification' => 'Parámetros de notificación', 'settings_notwritable' => 'La configuración no se puede guardar porque el fichero de configuración no es escribible.', 'settings_no_content_dir' => 'Carpeta de contenidos', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Anular MimeType', 'settings_overrideMimeType_desc' => 'Permitir que SeedDMS fije el tipo MIME sobreescribiendo el que haya definido el navegador durante el proceso de carga de un archivo.', 'settings_partitionSize' => 'Tamaño de fichero parcial', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 9cb33d667..0c8661165 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -1443,6 +1443,8 @@ Nom : [username] 'settings_Notification' => 'Notifications', 'settings_notwritable' => 'La configuration ne peut pas être enregistrée car le fichier de configuration n’est pas accessible en écriture.', 'settings_no_content_dir' => 'Répertoire de contenu', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Passer outre le type MIME', 'settings_overrideMimeType_desc' => 'Ne pas tenir compte du type MIME envoyé par le navigateur quand un fichier est téléversé. Le type MIME sera déterminé par SeedDMS.', 'settings_partitionSize' => 'Taille des fichiers partiels téléchargées par jumploader', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 14b61726a..b806dde70 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -1411,6 +1411,8 @@ Internet poveznica: [url]', 'settings_Notification' => 'Postavke bilježenja', 'settings_notwritable' => 'Konfiguracija se ne može pohraniti jer datoteka konfiguracije nema mogućnost upisivanja.', 'settings_no_content_dir' => 'Mapa sadržaja', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Premosti tip datoteke', 'settings_overrideMimeType_desc' => 'Premošćivanje tipa datoteke određenog od strane pretraživača ako je datoteka učitana. Novi tip datoteke se određuje od strane DMS sustava.', 'settings_partitionSize' => 'Veličina djelomične datoteke', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 6e68cf456..fbce10eaf 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -1389,6 +1389,8 @@ URL: [url]', 'settings_Notification' => 'Értesítés beállításai', 'settings_notwritable' => 'A konfiguráció nem menthető, mert a konfigurációs állomány nem írható.', 'settings_no_content_dir' => 'Tartalom könyvtár', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', 'settings_partitionSize' => 'Részleges fájlméret', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index f4674863b..4cdcff3f9 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -1445,6 +1445,8 @@ Name: [username] 'settings_Notification' => 'Impostazioni di notifica', 'settings_notwritable' => 'La configurazione non può essere salvata perchè il file di configurazione non può essere sovrascritto.', 'settings_no_content_dir' => 'Cartella contenitore', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Ignora MimeType', 'settings_overrideMimeType_desc' => 'Ignora il MimeType impostato dal browser, se un file viene caricato. Il MimeType è determinato ed impostato dal DMS stesso.', 'settings_partitionSize' => 'Dimensione file parziale', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index ed9171373..6f6c35321 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -1405,6 +1405,8 @@ URL : [url]', 'settings_Notification' => '알림 설정', 'settings_notwritable' => '구성값을 저장할 수 없습니다 구성 파일에 쓰기 권한이 없습니다.', 'settings_no_content_dir' => '내용 디렉토리', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'MIME 타입 재정의', 'settings_overrideMimeType_desc' => '파일이 업로드 되는 경우, 브라우저에 의해 제공되는 MIME 타입을 재정의 합니다. 새로운 MIME 타입은 SeedDMS에 의해 결정 됩니다.', 'settings_partitionSize' => '조각 파일 크기', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index e53d12553..bdd3107b9 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -1438,6 +1438,8 @@ URL: [url]', 'settings_Notification' => 'ການຕັ້ງຄ່າການແຈ້ງເຕືອນ', 'settings_notwritable' => 'ການກຳນົດຄ່າທີ່ບໍ່ສາມາດບັນທືກໄດ້ຍ້ອນວ່າໄຟລກຳນົດຄ່າບໍ່ສາມາດຂຽນໄດ້', 'settings_no_content_dir' => 'ຜູ້ກຳກັບເນື້ອຫາ', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'ชนิดละครใบ้แทนที่', 'settings_overrideMimeType_desc' => 'แทนที่ ชนิดละครใบ้ ที่จัดส่งโดยเบราว์เซอร์ถ้าไฟล์ถูกอัปโหลด ชนิดละครใบ้ใหม่จะถูกกำหนดโดย SeedDMS เอง.', 'settings_partitionSize' => 'ໄຟລບາງສ່ວນ', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 20bc78f30..980e33d72 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -1435,6 +1435,8 @@ Name: [username] 'settings_Notification' => 'Notificatie instellingen', 'settings_notwritable' => 'De configuratie kan niet opgeslagen worden omdat het configuratiebestand niet beschrijfbaar is.', 'settings_no_content_dir' => 'Inhoud map', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Override MimeType', 'settings_overrideMimeType_desc' => 'Override MimeType', 'settings_partitionSize' => 'Partitie-grootte', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 75913e9ef..12e0d82b8 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -1369,6 +1369,8 @@ URL: [url]', 'settings_Notification' => 'Ustawienia powiadomień', 'settings_notwritable' => 'Konfiguracja nie może zostać zapisana ponieważ plik konfiguracyjny nie jest zapisywalny.', 'settings_no_content_dir' => 'Katalog treści', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', 'settings_partitionSize' => 'Rozmiar części pliku', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 46e715528..2f1f1609c 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -1457,6 +1457,8 @@ Nome: [username] 'settings_Notification' => 'Configurações de notificação', 'settings_notwritable' => 'A configuração não pode ser salva porque o arquivo de configuração não é gravável.', 'settings_no_content_dir' => 'Diretório de conteúdo', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Substituir MimeType', 'settings_overrideMimeType_desc' => 'Substitua o MimeType entregue pelo navegador, se um arquivo for carregado. O novo MimeType é determinado pelo próprio SeedDMS.', 'settings_partitionSize' => 'Tamanho de arquivo parcial', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index eae81c265..98d53cc2a 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -1412,6 +1412,8 @@ URL: [url]', 'settings_Notification' => 'Setările de notificare', 'settings_notwritable' => 'Configurația nu poate fi salvată deoarece fișierul de configurare nu poate fi scris.', 'settings_no_content_dir' => 'Director conținut', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Suprascrie MMimeType', 'settings_overrideMimeType_desc' => 'Suprascrie MimeType expus de browser, dacă un fișier este încărcat. MimeType este determinat de SeedDMS.', 'settings_partitionSize' => 'Dimensiune fișier parțială', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 94cc06907..9b1f3f640 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -1419,6 +1419,8 @@ URL: [url]', 'settings_Notification' => 'Настройки извещения', 'settings_notwritable' => 'Конфигурация не может быть сохранена, потому что файл конфигурации только для чтения.', 'settings_no_content_dir' => 'Каталог содержимого', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Переопределить mime тип', 'settings_overrideMimeType_desc' => 'Переопределение mime типа предоставленного браузером, если файл загружен. Новый mime тип определяется самой SeedDMS.', 'settings_partitionSize' => 'Частичный размер файла', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 752d1e628..92b62ea7a 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -1459,6 +1459,8 @@ Meno: [username] 'settings_Notification' => 'Nastavenia notifikácií', 'settings_notwritable' => 'The configuration cannot be saved because the configuration file is not writable.', 'settings_no_content_dir' => 'Content directory', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Override MimeType', 'settings_overrideMimeType_desc' => 'Override the MimeType delivered by the browser, if a file is uploaded. The new MimeType is determined by SeedDMS itself.', 'settings_partitionSize' => 'Čiastočná veľkosť súboru', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index 327b150f0..b8649998f 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -1432,6 +1432,8 @@ Kommentar: [comment]', 'settings_Notification' => 'Meddelandeinställningar', 'settings_notwritable' => 'Konfigurationen kunde inte sparas, eftersom konfigurationsfilen inte är skrivbar.', 'settings_no_content_dir' => 'Mapp för innehåll', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Åsido Mediatyp (Mime)', 'settings_overrideMimeType_desc' => 'Åsidosätta MimeType levererad av webbläsaren, om en fil överförs. Den nya Mediatyp bestäms av SeedDMS själv.', 'settings_partitionSize' => 'Uppdelad filstorlek', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 63b1ba7a3..3d546bb16 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -1391,6 +1391,8 @@ URL: [url]', 'settings_Notification' => 'Bildirim ayarları', 'settings_notwritable' => 'Konfigürasyon dosyası yazılabilir olmadığından ayarlar kaydedilmeyecek.', 'settings_no_content_dir' => 'İçerik dizini', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', 'settings_partitionSize' => 'Kısmi dosya boyutu', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 2d6dc128c..90ee03d4d 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -1412,6 +1412,8 @@ URL: [url]', 'settings_Notification' => 'Налаштування сповіщення', 'settings_notwritable' => 'Конфігурація не може бути збережена, тому що файл налаштувань доступний лише на читання.', 'settings_no_content_dir' => 'Каталог вмісту', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Перевизначити mime тип', 'settings_overrideMimeType_desc' => 'Перевизначення mime типу наданого браузером, якщо файл завантажений. Новий mime тип визначається самою SeedDMS.', 'settings_partitionSize' => 'Частковий розмір файлу', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 6b1896a55..b2e4a8ac8 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -1393,6 +1393,8 @@ URL: [url]', 'settings_Notification' => '通知设置', 'settings_notwritable' => '设置_不可写', 'settings_no_content_dir' => '内容目录', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '覆盖Mime Type', 'settings_overrideMimeType_desc' => '', 'settings_partitionSize' => '', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 14e0e47e3..7f878c1d1 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -1242,6 +1242,8 @@ URL: [url]', 'settings_Notification' => '通知設置', 'settings_notwritable' => '', 'settings_no_content_dir' => '', +'settings_onePageMode' => '', +'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', 'settings_partitionSize' => '', From 9820d9b7f3cdd87d05ae26a69d0dad05f1964279 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 7 Nov 2019 19:54:42 +0100 Subject: [PATCH 230/467] set data-name for folder/document table rows --- views/bootstrap/class.Bootstrap.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index c933ea73d..95b11d2ea 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -2245,7 +2245,7 @@ $(document).ready( function() { */ function documentListRowStart($document, $class='') { /* {{{ */ $docID = $document->getID(); - return "
      "; - if($this->check_access(array('UsrMgr', 'RemoveUser'))) { + if($accessobject->check_view_access(array('UsrMgr', 'RemoveUser'))) { echo "
      "; - if($this->check_access('UsrMgr')) + if($accessobject->check_view_access('UsrMgr')) echo "getID()."\"> "; - if($this->check_access('RemoveUser')) + if($accessobject->check_view_access('RemoveUser')) echo "getID()."\">"; echo "
      "; } diff --git a/views/bootstrap/class.RoleMgr.php b/views/bootstrap/class.RoleMgr.php index 9011f70e4..15c797e89 100644 --- a/views/bootstrap/class.RoleMgr.php +++ b/views/bootstrap/class.RoleMgr.php @@ -73,6 +73,7 @@ $(document).ready( function() { $user = $this->params['user']; $selrole = $this->params['selrole']; $settings = $this->params['settings']; + $accessobject = $this->params['accessobject']; if($selrole) { $this->contentHeading(getMLText("role_info")); @@ -88,7 +89,7 @@ $(document).ready( function() { echo "
      ".htmlspecialchars($currUser->getComment()).""; echo "
      "; - if($this->check_access(array('UsrMgr', 'RemoveUser'))) { + if($accessobject->check_view_access(array('UsrMgr', 'RemoveUser'))) { echo "
      "; echo $this->html_link('UsrMgr', array('userid'=>$currUser->getID()), array(), '', false); echo $this->html_link('RemoveUser', array('userid'=>$currUser->getID()), array(), '', false); diff --git a/views/bootstrap/class.Tasks.php b/views/bootstrap/class.Tasks.php index 53c8c6656..7f85f7556 100644 --- a/views/bootstrap/class.Tasks.php +++ b/views/bootstrap/class.Tasks.php @@ -227,6 +227,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style { function menuTasks() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; + $accessobject = $this->params['accessobject']; $tasks = $this->__myTasks(); if(!$tasks) @@ -320,7 +321,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style { $content .= " \n"; $content .= " \n"; } - if ($this->check_access('MyDocuments')) { + if ($accessobject->check_view_access('MyDocuments')) { $content .= "
    • \n"; $content .= "
    • ".getMLText("my_documents")."
    • \n"; } diff --git a/views/bootstrap/class.UserList.php b/views/bootstrap/class.UserList.php index 263922b07..e6dbb43fc 100644 --- a/views/bootstrap/class.UserList.php +++ b/views/bootstrap/class.UserList.php @@ -38,6 +38,7 @@ class SeedDMS_View_UserList extends SeedDMS_Bootstrap_Style { $httproot = $this->params['httproot']; $quota = $this->params['quota']; $pwdexpiration = $this->params['pwdexpiration']; + $accessobject = $this->params['accessobject']; $this->htmlStartPage(getMLText("admin_tools")); $this->globalNavigation(); @@ -104,7 +105,7 @@ class SeedDMS_View_UserList extends SeedDMS_Bootstrap_Style { } echo "
      "; - if($this->check_access(array('UsrMgr', 'RemoveUser'))) { + if($accessobject->check_view_access(array('UsrMgr', 'RemoveUser'))) { echo "
      "; echo $this->html_link('UsrMgr', array('userid'=>$currUser->getID()), array(), '', false); echo $this->html_link('RemoveUser', array('userid'=>$currUser->getID()), array(), '', false); diff --git a/views/bootstrap/class.UsrMgr.php b/views/bootstrap/class.UsrMgr.php index 89f39d80b..5257c23c6 100644 --- a/views/bootstrap/class.UsrMgr.php +++ b/views/bootstrap/class.UsrMgr.php @@ -194,6 +194,7 @@ $(document).ready( function() { $quota = $this->params['quota']; $undeluserids = $this->params['undeluserids']; $enableemail = $this->params['enableemail']; + $accessobject = $this->params['accessobject']; if($seluser) { ?> @@ -205,7 +206,7 @@ $(document).ready( function() {
      contentContainerStart(); ?> -check_view_access($this, array('action'=>'form'))) { ?> +check_view_access($this, array('action'=>'form'))) { ?>
      getID()."\"" : "") ?>>
      diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 365b02065..e1c733b18 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -359,8 +359,8 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { if(!$showfullpreview) return; - $accessop = $this->params['accessobject']; - if($accessop->check_controller_access('ViewOnline', array('action'=>'version'))) { + $accessobject = $this->params['accessobject']; + if($accessobject->check_controller_access('ViewOnline', array('action'=>'version'))) { $latestContent = $this->callHook('documentLatestContent', $document); if($latestContent === null) $latestContent = $document->getLatestContent(); @@ -444,7 +444,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { $user = $this->params['user']; $folder = $this->params['folder']; $document = $this->params['document']; - $accessop = $this->params['accessobject']; + $accessobject = $this->params['accessobject']; $viewonlinefiletypes = $this->params['viewonlinefiletypes']; $enableownerrevapp = $this->params['enableownerrevapp']; $enableownerreceipt = $this->params['enableownerreceipt']; @@ -535,7 +535,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { if(is_string($txt)) echo $txt; $this->documentInfos(); - if($accessop->check_controller_access('ViewOnline', array('action'=>'run'))) { + if($accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) { $this->preview(); } ?> @@ -614,11 +614,11 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { $previewer->createPreview($latestContent); if ($file_exists) { if ($viewonlinefiletypes && (in_array(strtolower($latestContent->getFileType()), $viewonlinefiletypes) || in_array(strtolower($latestContent->getMimeType()), $viewonlinefiletypes))) { - if($accessop->check_controller_access('ViewOnline', array('action'=>'run'))) { + if($accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) { print "getVersion()."\">"; } } else { - if($accessop->check_controller_access('Download', array('action'=>'version'))) { + if($accessobject->check_controller_access('Download', array('action'=>'version'))) { print "getVersion()."\">"; } } @@ -629,7 +629,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print "getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"; } if ($file_exists) { - if($accessop->check_controller_access('Download', array('action'=>'run')) || $accessop->check_controller_access('ViewOnline', array('action'=>'run'))) + if($accessobject->check_controller_access('Download', array('action'=>'run')) || $accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) print ""; } print "
        "; if($accesserr) echo "
      • ".$accesserr."
      • "; - if($accessop->mayReceipt($document)) { + if($accessobject->mayReceipt($document)) { if ($is_recipient) { if($r["status"]==0) { print "
      • ".$this->html_link('ReceiptDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'receiptid'=>$r['receiptID']), array('class'=>'btn btn-mini'), getMLText("add_receipt"), false, true)."
      • "; - } elseif ($accessop->mayUpdateReceipt($document, $updateUser) && (($r["status"]==1 && $enablereceiptreject)||($r["status"]==-1))) { + } elseif ($accessobject->mayUpdateReceipt($document, $updateUser) && (($r["status"]==1 && $enablereceiptreject)||($r["status"]==-1))) { print "
      • ".$this->html_link('ReceiptDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'receiptid'=>$r['receiptID']), array('class'=>'btn btn-mini'), getMLText("edit"), false, true)."
      • "; } } @@ -1340,7 +1340,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
      contentContainerEnd(); - if($accessop->check_view_access('ViewDocument', array('action'=>'receptionBar'))/* $user->isAdmin() || $user->getId() == $document->getOwner()->getId()*/) { + if($accessobject->check_view_access('ViewDocument', array('action'=>'receptionBar'))/* $user->isAdmin() || $user->getId() == $document->getOwner()->getId()*/) { /* Do not count entries '-2' as they are removed userѕ */ $totalreceipts = $stat['-1'] + $stat['0'] + $stat['1']; ?> @@ -1448,7 +1448,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print "
        "; if($accesserr) echo "
      • ".$accesserr."
      • "; - if($accessop->mayRevise($document)) { + if($accessobject->mayRevise($document)) { if ($is_recipient && $r["status"]==0) { print "
      • ".$this->html_link('ReviseDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'revisionid'=>$r['revisionID']), array('class'=>'btn btn-mini'), getMLText("add_revision"), false, true)."
      • "; } elseif (($updateUser==$user)&&(($r["status"]==1)||($r["status"]==-1))&&(!$document->hasExpired())){ @@ -1505,11 +1505,11 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print ""; if($file_exists) { if ($viewonlinefiletypes && (in_array(strtolower($version->getFileType()), $viewonlinefiletypes) || in_array(strtolower($version->getMimeType()), $viewonlinefiletypes))) { - if($accessop->check_controller_access('ViewOnline', array('action'=>'run'))) { + if($accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) { print "getVersion()."\">"; } } else { - if($accessop->check_controller_access('Download', array('action'=>'version'))) { + if($accessobject->check_controller_access('Download', array('action'=>'version'))) { print "getVersion()."\">"; } } @@ -1521,7 +1521,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print "getMimeIcon($version->getFileType())."\" title=\"".htmlspecialchars($version->getMimeType())."\">"; } if($file_exists) { - if($accessop->check_controller_access('Download', array('action'=>'run')) || $accessop->check_controller_access('ViewOnline', array('action'=>'run'))) + if($accessobject->check_controller_access('Download', array('action'=>'run')) || $accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) print "\n"; } print "\n"; @@ -1560,11 +1560,11 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print ""; print "
          "; if ($file_exists){ - if($accessop->check_controller_access('Download', array('action'=>'version'))) { + if($accessobject->check_controller_access('Download', array('action'=>'version'))) { print "
        • getVersion()."\">".getMLText("download").""; } if ($viewonlinefiletypes && (in_array(strtolower($version->getFileType()), $viewonlinefiletypes) || in_array(strtolower($version->getMimeType()), $viewonlinefiletypes))) - if($accessop->check_controller_access('ViewOnline', array('action'=>'run'))) { + if($accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) { print "
        • getVersion()."\">" . getMLText("view_online") . ""; } print "
        "; @@ -1573,15 +1573,15 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { /* Only admin has the right to remove version in any case or a regular * user if enableVersionDeletion is on */ - if($accessop->mayRemoveVersion($document)) { + if($accessobject->mayRemoveVersion($document)) { print "
      • ".$this->html_link('RemoveVersion', array('documentid'=>$documentid, 'version'=>$version->getVersion()), array(), "".getMLText("rm_version"), false, true)."
      • "; } - if($accessop->check_controller_access('AddToTransmittal')) + if($accessobject->check_controller_access('AddToTransmittal')) print "
      • ".$this->html_link('AddToTransmittal', array('documentid'=>$documentid, 'version'=>$version->getVersion()), array(), "".getMLText("add_to_transmittal"), false, true)."
      • "; - if($accessop->mayEditComment($document)) { + if($accessobject->mayEditComment($document)) { print "
      • ".$this->html_link('EditComment', array('documentid'=>$documentid, 'version'=>$version->getVersion()), array(), "".getMLText("edit_comment"), false, true)."
      • "; } - if($accessop->mayEditAttributes($document)) { + if($accessobject->mayEditAttributes($document)) { print "
      • ".$this->html_link('EditAttributes', array('documentid'=>$documentid, 'version'=>$version->getVersion()), array(), "".getMLText("edit_attributes"), false, true)."
      • "; } print "
      • ".$this->html_link('DocumentVersionDetail', array('documentid'=>$documentid, 'version'=>$version->getVersion()), array(), "".getMLText("details"), false, true)."
      • "; @@ -1630,11 +1630,11 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { $previewer->createPreview($file, $previewwidthdetail); if($file_exists) { if ($viewonlinefiletypes && (in_array(strtolower($file->getFileType()), $viewonlinefiletypes) || in_array(strtolower($file->getMimeType()), $viewonlinefiletypes))) { - if($accessop->check_controller_access('ViewOnline', array('action'=>'run'))) { + if($accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) { print "getID()."\">"; } } else { - if($accessop->check_controller_access('Download', array('action'=>'file'))) { + if($accessobject->check_controller_access('Download', array('action'=>'file'))) { print "getID()."\">"; } } @@ -1645,7 +1645,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print "getMimeIcon($file->getFileType())."\" title=\"".htmlspecialchars($file->getMimeType())."\">"; } if($file_exists) { - if($accessop->check_controller_access('Download', array('action'=>'run')) || $accessop->check_controller_access('ViewOnline', array('action'=>'run'))) + if($accessobject->check_controller_access('Download', array('action'=>'run')) || $accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) print ""; } print ""; @@ -1669,11 +1669,11 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { print "
          "; if ($file_exists) { - if($accessop->check_controller_access('Download', array('action'=>'file'))) { + if($accessobject->check_controller_access('Download', array('action'=>'file'))) { print "
        • getID()."\">".getMLText('download')."
        • "; } if ($viewonlinefiletypes && (in_array(strtolower($file->getFileType()), $viewonlinefiletypes) || in_array(strtolower($file->getMimeType()), $viewonlinefiletypes))) { - if($accessop->check_controller_access('ViewOnline', array('action'=>'run'))) { + if($accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) { print "
        • getID()."\">" . getMLText("view_online") . "
        • "; } } @@ -1692,7 +1692,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { } else printMLText("no_attached_files"); - if($accessop->check_controller_access('AddFile')) { + if($accessobject->check_controller_access('AddFile')) { if ($document->getAccessMode($user) >= M_READWRITE){ print "
          • ".$this->html_link('AddFile', array('documentid'=>$documentid), array('class'=>'btn'), getMLText("add"), false, true)."
          \n"; } From 3012fc52e5df5b8b6bea76ad5f38a0e407ce90ec Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 15:09:40 +0100 Subject: [PATCH 258/467] include "inc/inc.ClassAccessOperation.php" --- out/out.Login.php | 1 + 1 file changed, 1 insertion(+) diff --git a/out/out.Login.php b/out/out.Login.php index ca47cee0d..e1ee7d0df 100644 --- a/out/out.Login.php +++ b/out/out.Login.php @@ -26,6 +26,7 @@ require_once("inc/inc.Utils.php"); require_once("inc/inc.Language.php"); require_once("inc/inc.Init.php"); require_once("inc/inc.Extension.php"); +require_once("inc/inc.ClassAccessOperation.php"); require_once("inc/inc.ClassUI.php"); include $settings->_rootDir . "languages/" . $settings->_language . "/lang.inc"; From 84550836c8b7f67ff080f0865ad0191f5b79e6a1 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 17:17:51 +0100 Subject: [PATCH 259/467] started new version 5.1.14 --- CHANGELOG | 4 ++++ inc/inc.Version.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 66d9ed9b8..7eaa60ff3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +-------------------------------------------------------------------------------- + Changes in version 5.1.14 +-------------------------------------------------------------------------------- + -------------------------------------------------------------------------------- Changes in version 5.1.13 -------------------------------------------------------------------------------- diff --git a/inc/inc.Version.php b/inc/inc.Version.php index 868cb1499..bd2c1d827 100644 --- a/inc/inc.Version.php +++ b/inc/inc.Version.php @@ -20,7 +20,7 @@ class SeedDMS_Version { - public $_number = "5.1.13"; + public $_number = "5.1.14"; private $_string = "SeedDMS"; function __construct() { From 833ff8f7dac1f5f5d953eef08dc86034f7b42752 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 17:50:26 +0100 Subject: [PATCH 260/467] do not allow adding events and showing tasks --- views/bootstrap/class.Bootstrap.php | 2 +- views/bootstrap/class.Calendar.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 478fecb97..021f6f69d 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -334,7 +334,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo " \n"; echo "
        \n"; - if($this->params['enablemenutasks']) { + if($this->params['enablemenutasks'] && !$this->params['user']->isGuest()) { echo "
        "; echo "
        "; // echo "
          \n"; diff --git a/views/bootstrap/class.Calendar.php b/views/bootstrap/class.Calendar.php index 8e49920b6..381a904f7 100644 --- a/views/bootstrap/class.Calendar.php +++ b/views/bootstrap/class.Calendar.php @@ -224,6 +224,8 @@ class SeedDMS_View_Calendar extends SeedDMS_Bootstrap_Style { } /* }}} */ function js() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; $strictformcheck = $this->params['strictformcheck']; header('Content-Type: application/javascript'); ?> @@ -232,6 +234,7 @@ class SeedDMS_View_Calendar extends SeedDMS_Bootstrap_Style { $('#calendar').fullCalendar({ height: $(window).height()-210, locale: 'params['session']->getLanguage(), 0, 2); ?>', +isGuest()) { ?> customButtons: { addEventButton: { text: '', @@ -241,6 +244,7 @@ class SeedDMS_View_Calendar extends SeedDMS_Bootstrap_Style { } } }, + header: { left: 'prev,next today addEventButton', center: 'title', From 85157a8bfe1258ca5c7e5e6ac4c848cea526dbe2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 18:12:26 +0100 Subject: [PATCH 261/467] no access on some more scripts --- inc/inc.ClassAccessOperation.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/inc/inc.ClassAccessOperation.php b/inc/inc.ClassAccessOperation.php index b4d44aae4..51a53626a 100644 --- a/inc/inc.ClassAccessOperation.php +++ b/inc/inc.ClassAccessOperation.php @@ -452,7 +452,6 @@ class SeedDMS_AccessOperation { 'ForcePasswordChange', 'GroupView', 'Help', - 'Info', 'KeywordChooser', 'Login', 'ManageNotify', @@ -489,14 +488,11 @@ class SeedDMS_AccessOperation { 'SetRevisors', 'SetWorkflow', 'SubstituteUser', - 'TimelineFeed', - 'Timeline', 'TransmittalMgr', 'TriggerWorkflow', 'UpdateDocument', 'UserDefaultKeywords', 'UserImage', - 'UserList', 'UsrView', 'ViewDocument', 'ViewEvent', From 4b55bc4fd8edc91c80622e6c7b33212128b2db52 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 18:14:43 +0100 Subject: [PATCH 262/467] allow add to transmittals with only read access on document --- out/out.AddToTransmittal.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/out/out.AddToTransmittal.php b/out/out.AddToTransmittal.php index a8d528eff..a6602608e 100644 --- a/out/out.AddToTransmittal.php +++ b/out/out.AddToTransmittal.php @@ -45,7 +45,7 @@ if (!is_object($document)) { UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); } -if ($document->getAccessMode($user) < M_ALL) { +if ($document->getAccessMode($user) < M_READ) { UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("access_denied")); } From 89d5c988184543d9f84f26fb720b04d777eb2ab4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 18:15:10 +0100 Subject: [PATCH 263/467] set onepage for view --- out/out.TransmittalMgr.php | 1 + 1 file changed, 1 insertion(+) diff --git a/out/out.TransmittalMgr.php b/out/out.TransmittalMgr.php index b43453423..2e7c789ff 100644 --- a/out/out.TransmittalMgr.php +++ b/out/out.TransmittalMgr.php @@ -52,6 +52,7 @@ if($view) { $view->setParam('previewWidthList', $settings->_previewWidthList); $view->setParam('previewconverters', $settings->_converters['preview']); $view->setParam('accessobject', $accessop); + $view->setParam('onepage', $settings->_onePageMode); // do most navigation by reloading areas of pages with ajax $view($_GET); exit; } From 154c3c2118b701a327c869802fcac9efa2583d3c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 19:22:23 +0100 Subject: [PATCH 264/467] set 'onepage' in factory --- inc/inc.ClassUI.php | 1 + 1 file changed, 1 insertion(+) diff --git a/inc/inc.ClassUI.php b/inc/inc.ClassUI.php index c4ab1dd90..d22e1ec07 100644 --- a/inc/inc.ClassUI.php +++ b/inc/inc.ClassUI.php @@ -136,6 +136,7 @@ class UI extends UI_Default { $view->setParam('showmissingtranslations', $settings->_showMissingTranslations); $view->setParam('defaultsearchmethod', $settings->_defaultSearchMethod); $view->setParam('cachedir', $settings->_cacheDir); + $view->setParam('onepage', $settings->_onePageMode); foreach($decorators as $extname=>$decorator) { $filename = $settings->_rootDir.'ext/'.$extname.'/decorators/'.$theme."/".$decorator['file']; require($filename); From 04f9edbb39080be92ae46c6bd48f90d8ddc9e268 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Nov 2019 19:39:47 +0100 Subject: [PATCH 265/467] make download button primary --- views/bootstrap/class.TransmittalMgr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.TransmittalMgr.php b/views/bootstrap/class.TransmittalMgr.php index 6b38414f1..d966a2f62 100644 --- a/views/bootstrap/class.TransmittalMgr.php +++ b/views/bootstrap/class.TransmittalMgr.php @@ -301,7 +301,7 @@ $(document).ready( function() { } } print "\n\n"; - print "getID()."\">".getMLText('download').""; + print "getID()."\">".getMLText('download').""; } } } /* }}} */ From 5a877f959cfda3e37dd3fb120ec9c03fb2510dc0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 21 Nov 2019 10:50:59 +0100 Subject: [PATCH 266/467] edit warning because content is replaced --- views/bootstrap/class.EditOnline.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/views/bootstrap/class.EditOnline.php b/views/bootstrap/class.EditOnline.php index 80c316d35..04f3b3f06 100644 --- a/views/bootstrap/class.EditOnline.php +++ b/views/bootstrap/class.EditOnline.php @@ -123,6 +123,9 @@ $this->contentHeading(getMLText("content")); echo htmlspecialchars(file_get_contents($dms->contentDir . $version->getPath()), ENT_SUBSTITUTE); ?> +warningMsg(getMLText('edit_online_warning')); +?> Date: Thu, 21 Nov 2019 10:51:17 +0100 Subject: [PATCH 267/467] allow mimetype to specify documents which can be edited online --- inc/inc.ClassAccessOperation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/inc.ClassAccessOperation.php b/inc/inc.ClassAccessOperation.php index 43a30f2e8..af9dff37b 100644 --- a/inc/inc.ClassAccessOperation.php +++ b/inc/inc.ClassAccessOperation.php @@ -67,7 +67,7 @@ class SeedDMS_AccessOperation { $version = $this->obj->getContentByVersion($vno); else $version = $this->obj->getLatestContent(); - if (!isset($this->settings->_editOnlineFileTypes) || !is_array($this->settings->_editOnlineFileTypes) || !in_array(strtolower($version->getFileType()), $this->settings->_editOnlineFileTypes)) + if (!isset($this->settings->_editOnlineFileTypes) || !is_array($this->settings->_editOnlineFileTypes) || !in_array(strtolower($version->getFileType()), $this->settings->_editOnlineFileTypes) || !in_array(strtolower($version->getMimeType()), $this->settings->_editOnlineFileTypes)) return false; if ($this->obj->getAccessMode($this->user) == M_ALL || $this->user->isAdmin()) { return true; From 750d02e1e82bc152224a83a0c352e1ad4aaf37ca Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 21 Nov 2019 10:52:11 +0100 Subject: [PATCH 268/467] add note for 5.1.14 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 7eaa60ff3..cbdd42c47 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ -------------------------------------------------------------------------------- Changes in version 5.1.14 -------------------------------------------------------------------------------- +- allow mimetype to specify documents which can be edited online -------------------------------------------------------------------------------- Changes in version 5.1.13 From 7d9de047bdbfb76215953d23bc9104c35b09f6b2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 09:31:56 +0100 Subject: [PATCH 269/467] add legacy access rights for groups --- inc/inc.ClassAccessOperation.php | 178 +++++++++++++++++-------------- 1 file changed, 96 insertions(+), 82 deletions(-) diff --git a/inc/inc.ClassAccessOperation.php b/inc/inc.ClassAccessOperation.php index e03c3f3f4..0584f0a6e 100644 --- a/inc/inc.ClassAccessOperation.php +++ b/inc/inc.ClassAccessOperation.php @@ -406,7 +406,7 @@ class SeedDMS_AccessOperation { return false; } /* }}} */ - protected function check_view_lecacy_access($view, $get=array()) { /* {{{ */ + protected function check_view_legacy_access($view, $get=array()) { /* {{{ */ if($this->user->isAdmin()) return true; @@ -419,86 +419,100 @@ class SeedDMS_AccessOperation { } else { return false; } - if(array_intersect($scripts, array( - 'AddDocument', - 'AddEvent', - 'AddFile', - 'AddSubFolder', - 'AddToTransmittal', - 'ApprovalSummary', - 'ApproveDocument', - 'Calendar', - 'CategoryChooser', - 'ChangePassword', - 'CheckInDocument', - 'Clipboard', - 'DocumentAccess', - 'DocumentChooser', - 'DocumentNotify', - 'DocumentVersionDetail', - 'DropFolderChooser', - 'EditAttributes', - 'EditComment', - 'EditDocumentFile', - 'EditDocument', - 'EditEvent', - 'EditFolder', - 'EditOnline', - 'EditUserData', - 'ErrorDlg', - 'FolderAccess', - 'FolderChooser', - 'FolderNotify', - 'ForcePasswordChange', - 'GroupView', - 'Help', - 'KeywordChooser', - 'Login', - 'ManageNotify', - 'MoveDocument', - 'MoveFolder', - 'MyAccount', - 'MyDocuments', - 'OpensearchDesc', - 'OverrideContentStatus', - 'PasswordForgotten', - 'PasswordSend', - 'ReceiptDocument', - 'ReceiptSummary', - 'RemoveDocumentFile', - 'RemoveDocument', - 'RemoveEvent', - 'RemoveFolderFiles', - 'RemoveFolder', - 'RemoveTransmittal', - 'RemoveVersion', - 'RemoveWorkflowFromDocument', - 'ReturnFromSubWorkflow', - 'ReviewDocument', - 'ReviewSummary', - 'ReviseDocument', - 'RewindWorkflow', - 'RunSubWorkflow', - 'SearchForm', - 'Search', - 'Session', - 'SetExpires', - 'SetRecipients', - 'SetReviewersApprovers', - 'SetRevisors', - 'SetWorkflow', - 'SubstituteUser', - 'TransmittalMgr', - 'TriggerWorkflow', - 'UpdateDocument', - 'UserDefaultKeywords', - 'UserImage', - 'UsrView', - 'ViewDocument', - 'ViewEvent', - 'ViewFolder', - 'WorkflowGraph', - 'WorkflowSummary'))) + + if($this->user->isGuest()) { + $user_allowed = array( + 'Calendar', + 'ErrorDlg', + 'Help', + 'Login', + 'Search', + 'ViewDocument', + 'ViewFolder', + ); + } else { + $user_allowed = array( + 'AddDocument', + 'AddEvent', + 'AddFile', + 'AddSubFolder', + 'AddToTransmittal', + 'ApprovalSummary', + 'ApproveDocument', + 'Calendar', + 'CategoryChooser', + 'ChangePassword', + 'CheckInDocument', + 'Clipboard', + 'DocumentAccess', + 'DocumentChooser', + 'DocumentNotify', + 'DocumentVersionDetail', + 'DropFolderChooser', + 'EditAttributes', + 'EditComment', + 'EditDocumentFile', + 'EditDocument', + 'EditEvent', + 'EditFolder', + 'EditOnline', + 'EditUserData', + 'ErrorDlg', + 'FolderAccess', + 'FolderChooser', + 'FolderNotify', + 'ForcePasswordChange', + 'GroupView', + 'Help', + 'KeywordChooser', + 'Login', + 'ManageNotify', + 'MoveDocument', + 'MoveFolder', + 'MyAccount', + 'MyDocuments', + 'OpensearchDesc', + 'OverrideContentStatus', + 'PasswordForgotten', + 'PasswordSend', + 'ReceiptDocument', + 'ReceiptSummary', + 'RemoveDocumentFile', + 'RemoveDocument', + 'RemoveEvent', + 'RemoveFolderFiles', + 'RemoveFolder', + 'RemoveTransmittal', + 'RemoveVersion', + 'RemoveWorkflowFromDocument', + 'ReturnFromSubWorkflow', + 'ReviewDocument', + 'ReviewSummary', + 'ReviseDocument', + 'RewindWorkflow', + 'RunSubWorkflow', + 'Search', + 'Session', + 'SetExpires', + 'SetRecipients', + 'SetReviewersApprovers', + 'SetRevisors', + 'SetWorkflow', + 'SubstituteUser', + 'TransmittalMgr', + 'TriggerWorkflow', + 'UpdateDocument', + 'UserDefaultKeywords', + 'UserImage', + 'UsrView', + 'ViewDocument', + 'ViewEvent', + 'ViewFolder', + 'WorkflowGraph', + 'WorkflowSummary'); + } + + if(array_intersect($scripts, $user_allowed)) return true; return false; @@ -524,7 +538,7 @@ class SeedDMS_AccessOperation { */ function check_view_access($view, $get=array()) { /* {{{ */ if(!$this->settings->_advancedAcl) { - return $this->check_view_lecacy_access($view, $get); + return $this->check_view_legacy_access($view, $get); } if(is_string($view)) { $scripts = array($view); From 893a8d6d8dd099936ad253276b9d617bdff2d83b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 09:32:32 +0100 Subject: [PATCH 270/467] return json even in case of an error --- op/op.EditOnline.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/op/op.EditOnline.php b/op/op.EditOnline.php index b19eb420b..7277f5a1e 100644 --- a/op/op.EditOnline.php +++ b/op/op.EditOnline.php @@ -28,28 +28,38 @@ include("../inc/inc.DBInit.php"); include("../inc/inc.ClassUI.php"); include("../inc/inc.Authentication.php"); +$accessop = new SeedDMS_AccessOperation($dms, $user, $settings); +if (!$accessop->check_controller_access('EditOnline', $_POST)) { + echo json_encode(array('success'=>false, 'message'=>getMLText('access_denied'))); + exit; +} + if (!isset($_POST["documentid"]) || !is_numeric($_POST["documentid"]) || intval($_POST["documentid"])<1) { - UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_doc_id'))); + exit; } $documentid = $_POST["documentid"]; $document = $dms->getDocument($documentid); if (!is_object($document)) { - UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_doc_id'))); + exit; } $folder = $document->getFolder(); $docPathHTML = getFolderPathHTML($folder, true). " / ".$document->getName().""; if ($document->getAccessMode($user, 'editOnline') < M_READWRITE) { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); + echo json_encode(array('success'=>false, 'message'=>getMLText('access_denied'))); + exit; } if($document->isLocked()) { $lockingUser = $document->getLockingUser(); if (($lockingUser->getID() != $user->getID()) && ($document->getAccessMode($user, 'editOnline') != M_ALL)) { - UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("lock_message", array("email" => $lockingUser->getEmail(), "username" => htmlspecialchars($lockingUser->getFullName())))); + echo json_encode(array('success'=>false, 'message'=>getMLText("lock_message", array("email" => $lockingUser->getEmail(), "username" => htmlspecialchars($lockingUser->getFullName()))))); + exit; } } From b3cc272941e9316cea36c216de88b4ba6bde40be Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 09:33:13 +0100 Subject: [PATCH 271/467] check access --- op/op.LockDocument.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/op/op.LockDocument.php b/op/op.LockDocument.php index a72b873fa..b4937e706 100644 --- a/op/op.LockDocument.php +++ b/op/op.LockDocument.php @@ -40,6 +40,11 @@ if (!is_object($document)) { UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); } +$accessop = new SeedDMS_AccessOperation($dms, $user, $settings); +if (!$accessop->check_controller_access('LockDocument', $_POST)) { + UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("access_denied")); +} + $folder = $document->getFolder(); $docPathHTML = getFolderPathHTML($folder, true). " / ".$document->getName().""; From 684f27ef8790071d7513fb539620eab4e286d491 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 09:34:12 +0100 Subject: [PATCH 272/467] fix output of group name --- views/bootstrap/class.ApprovalSummary.php | 2 +- views/bootstrap/class.ReceiptSummary.php | 2 +- views/bootstrap/class.ReviewSummary.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/views/bootstrap/class.ApprovalSummary.php b/views/bootstrap/class.ApprovalSummary.php index e804fbe61..5a56c1748 100644 --- a/views/bootstrap/class.ApprovalSummary.php +++ b/views/bootstrap/class.ApprovalSummary.php @@ -148,7 +148,7 @@ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style { $class = $st['status'] == 1 ? ' success' : ($st['status'] == -1 ? ' error' : ( $st['status'] == -2 ? ' info' : '')); echo $this->documentListRowStart($document, $class); echo $this->documentListRow($document, $previewer, true, $st['version']); - print "".getApprovalStatusText($st["status"])."
          ".$st["date"]."
          ". htmlspecialchars($moduser->getFullName()) ."
          "; + print "".getApprovalStatusText($st["status"])."
          ".$st["date"]."
          ". htmlspecialchars($modgroup->getName()) ."
          "; echo $this->documentListRowEnd($document); } } diff --git a/views/bootstrap/class.ReceiptSummary.php b/views/bootstrap/class.ReceiptSummary.php index 6e7bd8df5..40305389d 100644 --- a/views/bootstrap/class.ReceiptSummary.php +++ b/views/bootstrap/class.ReceiptSummary.php @@ -140,7 +140,7 @@ class SeedDMS_View_ReceiptSummary extends SeedDMS_Bootstrap_Style { $class = $st['status'] == 1 ? ' success' : ($st['status'] == -1 ? ' error' : ( $st['status'] == -2 ? ' info' : '')); echo "getID()."\" class=\"table-row-document".$class."\" rel=\"document_".$document->getID()."\" formtoken=\"".createFormKey('movedocument')."\" draggable=\"true\">"; echo $this->documentListRow($document, $previewer, true, $st['version']); - print "".getReceiptStatusText($st['status'])."
          ".$st["date"]."
          ". htmlspecialchars($moduser->getFullName()) ."
          "; + print "".getReceiptStatusText($st['status'])."
          ".$st["date"]."
          ". htmlspecialchars($modgroup->getName()) ."
          "; echo ""; } } diff --git a/views/bootstrap/class.ReviewSummary.php b/views/bootstrap/class.ReviewSummary.php index 2d58207c5..41e6a3ea0 100644 --- a/views/bootstrap/class.ReviewSummary.php +++ b/views/bootstrap/class.ReviewSummary.php @@ -151,7 +151,7 @@ class SeedDMS_View_ReviewSummary extends SeedDMS_Bootstrap_Style { // print ""; echo $this->documentListRowStart($document, $class); echo $this->documentListRow($document, $previewer, true, $st['version']); - print "".getReviewStatusText($st['status'])."
          ".$st["date"]."
          ". htmlspecialchars($moduser->getFullName()) ."
          "; + print "".getReviewStatusText($st['status'])."
          ".$st["date"]."
          ". htmlspecialchars($modgroup->getName()) ."
          "; print "\n"; } } From 79aa6c079c3ee83d3344957c0944c67ed456a9c9 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 09:35:05 +0100 Subject: [PATCH 273/467] replace check for guest by generic acl check --- views/bootstrap/class.Bootstrap.php | 59 ++++++++++++++++------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 8bef887e2..38c64f423 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -359,7 +359,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo "
        • \n"; echo " ".($this->params['session']->getSu() ? getMLText("switched_to") : getMLText("signed_in_as"))." '".htmlspecialchars($this->params['user']->getFullName())."' \n"; echo "
            \n"; - if (!$this->params['user']->isGuest()) { +// if (!$this->params['user']->isGuest()) { $menuitems = array(); if ($accessobject->check_view_access('MyDocuments')) $menuitems['my_documents'] = array('link'=>"../out/out.MyDocuments.php", 'label'=>'my_documents'); @@ -379,7 +379,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } echo "
          • \n"; } - } +// } $showdivider = false; if($this->params['enablelanguageselector']) { $showdivider = true; @@ -421,16 +421,18 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo " \n"; echo "
          \n"; - if($this->params['enablemenutasks'] && !$this->params['user']->isGuest()) { - echo "
          "; - echo "
          "; -// echo "
            \n"; -// echo "
          • \n"; -// echo $this->menuTasks(array('review'=>array(), 'approval'=>array(), 'receipt'=>array(), 'revision'=>array())); -// echo "
          • \n"; -// echo "
          \n"; - echo "
          "; - //$this->addFooterJS('checkTasks();'); + if($this->params['enablemenutasks']) { + if($accessobject->check_view_access('Tasks', array('action'=>'menuTasks'))) { + echo "
          "; + echo "
          "; + // echo "
            \n"; + // echo "
          • \n"; + // echo $this->menuTasks(array('review'=>array(), 'approval'=>array(), 'receipt'=>array(), 'revision'=>array())); + // echo "
          • \n"; + // echo "
          \n"; + echo "
          "; + //$this->addFooterJS('checkTasks();'); + } } if($this->params['dropfolderdir'] && $this->params['enabledropfolderlist']) { @@ -587,7 +589,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo "
            \n"; $menuitems = array(); - if ($accessMode == M_READ && !$this->params['user']->isGuest()) { + if ($accessMode == M_READ) { if ($accessobject->check_view_access('FolderNotify')) $menuitems['edit_folder_notify'] = array('link'=>"../out/out.FolderNotify.php?folderid=".$folderID."&showtree=".showtree(), 'label'=>'edit_folder_notify'); } @@ -611,7 +613,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } $menuitems['edit_existing_notify'] = array('link'=>"../out/out.FolderNotify.php?folderid=". $folderID ."&showtree=". showtree(), 'label'=>'edit_existing_notify'); } - if ($this->params['user']->isAdmin() && $this->params['enablefullsearch']) { + if ($accessobject->check_view_access('Indexer') && $this->params['enablefullsearch']) { $menuitems['index_folder'] = array('link'=>"../out/out.Indexer.php?folderid=". $folderID."&showtree=".showtree(), 'label'=>'index_folder'); } @@ -638,7 +640,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; if ($accessMode >= M_READWRITE) { if (!$document->isLocked()) { $menuitems['update_document'] = array('link'=>"../out/out.UpdateDocument".$docid, 'label'=>'update_document'); - $menuitems['lock_document'] = array('link'=>"../op/op.LockDocument".$docid, 'label'=>'lock_document'); + if($accessobject->check_controller_access('LockDocument')) + $menuitems['lock_document'] = array('link'=>"../op/op.LockDocument".$docid, 'label'=>'lock_document'); if($document->isCheckedOut()) $menuitems['checkin_document'] = array('link'=>"../out/out.CheckInDocument".$docid, 'label'=>'checkin_document'); else { @@ -653,7 +656,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $lockingUser = $document->getLockingUser(); if (($lockingUser->getID() == $this->params['user']->getID()) || ($document->getAccessMode($this->params['user']) == M_ALL)) { $menuitems['update_document'] = array('link'=>"../out/out.UpdateDocument".$docid, 'label'=>'update_document'); - $menuitems['unlock_document'] = array('link'=>"../op/op.UnlockDocument".$docid, 'label'=>'unlock_document'); + if($accessobject->check_controller_access('UnlockDocument')) + $menuitems['unlock_document'] = array('link'=>"../op/op.UnlockDocument".$docid, 'label'=>'unlock_document'); if($document->isCheckedOut()) { $menuitems['checkin_document'] = array('link'=>"../out/out.CheckInDocument".$docid, 'label'=>'checkin_document'); } else { @@ -665,20 +669,22 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['move_document'] = array('link'=>"../out/out.MoveDocument".$docid, 'label'=>'move_document'); } } - if($this->params['accessobject']->maySetExpires($document)) { - $menuitems['expires'] = array('link'=>"../out/out.SetExpires".$docid, 'label'=>'expires'); - // $menuitems[''] = array('link'=>"", 'label'=>''); + if($accessobject->maySetExpires($document)) { + if ($accessobject->check_view_access('SetExpires')) + $menuitems['expires'] = array('link'=>"../out/out.SetExpires".$docid, 'label'=>'expires'); } } if ($accessMode == M_ALL) { - $menuitems['rm_document'] = array('link'=>"../out/out.RemoveDocument".$docid, 'label'=>'rm_document'); + if ($accessobject->check_view_access('RemoveDocument')) + $menuitems['rm_document'] = array('link'=>"../out/out.RemoveDocument".$docid, 'label'=>'rm_document'); if ($accessobject->check_view_access('DocumentAccess')) $menuitems['edit_document_access'] = array('link'=>"../out/out.DocumentAccess". $docid, 'label'=>'edit_document_access'); } - if ($accessMode >= M_READ && !$this->params['user']->isGuest()) { - $menuitems['edit_existing_notify'] = array('link'=>"../out/out.DocumentNotify". $docid, 'label'=>'edit_existing_notify'); + if ($accessMode >= M_READ) { + if ($accessobject->check_view_access('DocumentNotify')) + $menuitems['edit_existing_notify'] = array('link'=>"../out/out.DocumentNotify". $docid, 'label'=>'edit_existing_notify'); } - if ($this->params['user']->isAdmin()) { + if ($accessobject->check_view_access('TransferDocument')) { $menuitems['transfer_document'] = array('link'=>"../out/out.TransferDocument". $docid, 'label'=>'transfer_document'); } @@ -712,7 +718,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo "
              \n"; $menuitems = array(); - if ($this->params['user']->isAdmin() || !$this->params['disableselfedit']) + if ($accessobject->check_view_access('EditUserData') || !$this->params['disableselfedit']) $menuitems['edit_user_details'] = array('link'=>"../out/out.EditUserData.php", 'label'=>'edit_user_details'); if (!$this->params['user']->isAdmin()) @@ -881,7 +887,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo "
            • ".getMLText("week_view")."
            • \n"; echo "
            • ".getMLText("month_view")."
            • \n"; echo "
            • ".getMLText("year_view")."
            • \n"; - if (!$this->params['user']->isGuest()) echo "
            • ".getMLText("add_event")."
            • \n"; + if($accessobject->check_view_access(array('AddEvent'))) + echo "
            • ".getMLText("add_event")."
            • \n"; echo "
            \n"; echo "
        \n"; return; @@ -894,7 +901,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo "
          \n"; $menuitems = array(); - if (!$this->params['user']->isGuest()) + if($accessobject->check_view_access(array('AddEvent'))) $menuitems['addevent'] = array('link'=>"../out/out.AddEvent.php", 'label'=>'add_event'); /* Check if hook exists because otherwise callHook() will override $menuitems */ From 0d4c970029cc534ce110eb31a0b64884f68625c6 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 09:35:59 +0100 Subject: [PATCH 274/467] replace check for guest by generic acl check --- views/bootstrap/class.ViewDocument.php | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index e1c733b18..ab2675a66 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -1736,9 +1736,9 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { } print "\n\n"; } - else printMLText("no_linked_files"); + else $this->infoMsg(getMLText("no_linked_files")); - if (!$user->isGuest()){ + if ($accessobject->check_view_access('AddDocumentLink')){ $this->contentContainerStart(); ?>
          @@ -1818,28 +1818,6 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { if($user->isAdmin()) { $timeline = $latestContent->getDocument()->getTimeline(); if($timeline) { - /* - $this->contentHeading(getMLText("timeline")); - foreach($timeline as &$item) { - switch($item['type']) { - case 'add_version': - $msg = getMLText('timeline_'.$item['type'], array('document'=>$item['document']->getName(), 'version'=> $item['version'])); - break; - case 'add_file': - $msg = getMLText('timeline_'.$item['type'], array('document'=>$item['document']->getName())); - break; - case 'status_change': - $msg = getMLText('timeline_'.$item['type'], array('document'=>$item['document']->getName(), 'version'=> $item['version'], 'status'=> getOverallStatusText($item['status']))); - break; - default: - $msg = $this->callHook('getTimelineMsg', $latestContent->getDocument(), $item); - if(!is_string($msg)) - $msg = '???'; - } - $item['msg'] = $msg; - } - */ -// $this->printTimeline('out.ViewDocument.php?action=timelinedata&documentid='.$document->getID(), 300, '', date('Y-m-d')); $this->printTimelineHtml(300); } } From cbac16773da93af6b7fdcd63405831a34e84a7b2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 09:36:32 +0100 Subject: [PATCH 275/467] more checking for access rights --- op/op.UnlockDocument.php | 5 +++++ out/out.RemoveDocument.php | 4 ++++ out/out.SetExpires.php | 4 ++++ out/out.TransferDocument.php | 5 +++-- views/bootstrap/class.EditOnline.php | 7 ++++++- 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/op/op.UnlockDocument.php b/op/op.UnlockDocument.php index 7af019958..693fe3d02 100644 --- a/op/op.UnlockDocument.php +++ b/op/op.UnlockDocument.php @@ -38,6 +38,11 @@ if (!is_object($document)) { UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); } +$accessop = new SeedDMS_AccessOperation($dms, $user, $settings); +if (!$accessop->check_controller_access('LockDocument', $_POST)) { + UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("access_denied")); +} + $folder = $document->getFolder(); $docPathHTML = getFolderPathHTML($folder, true). " / ".$document->getName().""; diff --git a/out/out.RemoveDocument.php b/out/out.RemoveDocument.php index 4e36a1278..69cc1cc54 100644 --- a/out/out.RemoveDocument.php +++ b/out/out.RemoveDocument.php @@ -43,6 +43,10 @@ if (!is_object($document)) { UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); } +if (!$accessop->check_view_access($view, $_GET)) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); +} + if ($document->getAccessMode($user) < M_ALL) { UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("access_denied")); } diff --git a/out/out.SetExpires.php b/out/out.SetExpires.php index e829e3a10..91154de8f 100644 --- a/out/out.SetExpires.php +++ b/out/out.SetExpires.php @@ -44,6 +44,10 @@ if (!is_object($document)) { UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); } +if (!$accessop->check_view_access($view, $_GET)) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); +} + if(!$accessop->maySetExpires($document)) { UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("access_denied")); } diff --git a/out/out.TransferDocument.php b/out/out.TransferDocument.php index bfaea3b43..198d46330 100644 --- a/out/out.TransferDocument.php +++ b/out/out.TransferDocument.php @@ -32,8 +32,9 @@ require_once("inc/inc.Authentication.php"); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); -if (!$user->isAdmin()) { - UI::exitError(getMLText("document"),getMLText("access_denied")); +$accessop = new SeedDMS_AccessOperation($dms, $user, $settings); +if (!$accessop->check_view_access($view, $_GET)) { + UI::exitError(getMLText("admin_tools"),getMLText("access_denied"), false, $isajax); } if (!isset($_GET["documentid"]) || !is_numeric($_GET["documentid"]) || intval($_GET["documentid"])<1) { diff --git a/views/bootstrap/class.EditOnline.php b/views/bootstrap/class.EditOnline.php index 04f3b3f06..7c0ce25a4 100644 --- a/views/bootstrap/class.EditOnline.php +++ b/views/bootstrap/class.EditOnline.php @@ -95,6 +95,7 @@ $(document).ready(function() { $cachedir = $this->params['cachedir']; $previewwidthlist = $this->params['previewWidthList']; $previewwidthdetail = $this->params['previewWidthDetail']; + $accessobject = $this->params['accessobject']; $set = 'markdown'; //default or markdown $skin = 'simple'; // simple or markitup @@ -124,9 +125,13 @@ $this->contentHeading(getMLText("content")); ?> warningMsg(getMLText('edit_online_warning')); + if($accessobject->check_controller_access('EditOnline')) { + echo $this->warningMsg(getMLText('edit_online_warning')); ?> + \n"; From bf6490f9040beb8c3621ebd5695d4f6760e93058 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 09:38:41 +0100 Subject: [PATCH 276/467] fix output of group name --- views/bootstrap/class.ApprovalSummary.php | 2 +- views/bootstrap/class.ReviewSummary.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.ApprovalSummary.php b/views/bootstrap/class.ApprovalSummary.php index bff1f59dc..4bb77f2f7 100644 --- a/views/bootstrap/class.ApprovalSummary.php +++ b/views/bootstrap/class.ApprovalSummary.php @@ -137,7 +137,7 @@ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style { $class = $st['status'] == 1 ? ' success' : ($st['status'] == -1 ? ' error' : ( $st['status'] == -2 ? ' info' : '')); echo $this->documentListRowStart($document, $class); echo $this->documentListRow($document, $previewer, true, $st['version']); - print "".getApprovalStatusText($st["status"])."
          ".$st["date"]."
          ". htmlspecialchars($moduser->getFullName()) ."
          "; + print "".getApprovalStatusText($st["status"])."
          ".$st["date"]."
          ". htmlspecialchars($modgroup->getName()) ."
          "; echo $this->documentListRowEnd($document); } } diff --git a/views/bootstrap/class.ReviewSummary.php b/views/bootstrap/class.ReviewSummary.php index 19e23496b..b15fb03df 100644 --- a/views/bootstrap/class.ReviewSummary.php +++ b/views/bootstrap/class.ReviewSummary.php @@ -142,7 +142,7 @@ class SeedDMS_View_ReviewSummary extends SeedDMS_Bootstrap_Style { // print ""; echo $this->documentListRowStart($document, $class); echo $this->documentListRow($document, $previewer, true, $st['version']); - print "".getReviewStatusText($st['status'])."
          ".$st["date"]."
          ". htmlspecialchars($moduser->getFullName()) ."
          "; + print "".getReviewStatusText($st['status'])."
          ".$st["date"]."
          ". htmlspecialchars($modgroup->getName()) ."
          "; print "\n"; } } From 24f030f1c70f52197f40ae7f3c8104573ddf2e29 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 09:50:52 +0100 Subject: [PATCH 277/467] add method printClickDocumentJs() adds js for catching the event when clicking on a document row and onepage mode is on --- views/bootstrap/class.Bootstrap.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 021f6f69d..ac090e338 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -2238,6 +2238,19 @@ $(document).ready( function() { "; } /* }}} */ + function printClickDocumentJs() { /* {{{ */ + $onepage = $this->params['onepage']; + if($onepage) { +?> +/* catch click on a document row in the list folders and documents */ +$('body').on('click', '[id^=\"table-row-document\"] td:nth-child(2)', function(ev) { + attr_id = $(ev.currentTarget).parent().attr('id').split('-')[3]; + window.location = '../out/out.ViewDocument.php?documentid=' + attr_id; +}); + Date: Mon, 25 Nov 2019 09:51:39 +0100 Subject: [PATCH 278/467] use new method printClickDocumentJs() --- views/bootstrap/class.ApprovalSummary.php | 1 + views/bootstrap/class.ReviewSummary.php | 1 + views/bootstrap/class.ViewFolder.php | 8 +++----- views/bootstrap/class.WorkflowSummary.php | 8 ++++++++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/views/bootstrap/class.ApprovalSummary.php b/views/bootstrap/class.ApprovalSummary.php index 4bb77f2f7..8050aa283 100644 --- a/views/bootstrap/class.ApprovalSummary.php +++ b/views/bootstrap/class.ApprovalSummary.php @@ -41,6 +41,7 @@ class SeedDMS_View_ApprovalSummary extends SeedDMS_Bootstrap_Style { parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); $this->printDeleteDocumentButtonJs(); + $this->printClickDocumentJs(); } /* }}} */ function show() { /* {{{ */ diff --git a/views/bootstrap/class.ReviewSummary.php b/views/bootstrap/class.ReviewSummary.php index b15fb03df..de95a0646 100644 --- a/views/bootstrap/class.ReviewSummary.php +++ b/views/bootstrap/class.ReviewSummary.php @@ -41,6 +41,7 @@ class SeedDMS_View_ReviewSummary extends SeedDMS_Bootstrap_Style { parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); $this->printDeleteDocumentButtonJs(); + $this->printClickDocumentJs(); } /* }}} */ function show() { /* {{{ */ diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 3feed0202..307520b73 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -189,11 +189,9 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) scrollTop: 200 }, 200); }); -/* catch click on a document row in the list folders and documents */ -$('body').on('click', '[id^=\"table-row-document\"] td:nth-child(2)', function(ev) { - attr_id = $(ev.currentTarget).parent().attr('id').split('-')[3]; - window.location = '../out/out.ViewDocument.php?documentid=' + attr_id; -}); +printClickDocumentJs(); +?> $('body').on('click', '.order-btn', function(ev) { ev.preventDefault(); var element = $(this); diff --git a/views/bootstrap/class.WorkflowSummary.php b/views/bootstrap/class.WorkflowSummary.php index d0711044a..f013a8c1b 100644 --- a/views/bootstrap/class.WorkflowSummary.php +++ b/views/bootstrap/class.WorkflowSummary.php @@ -36,6 +36,14 @@ require_once("SeedDMS/Preview.php"); */ class SeedDMS_View_WorkflowSummary extends SeedDMS_Bootstrap_Style { + function js() { /* {{{ */ + header('Content-Type: application/javascript; charset=UTF-8'); + parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); + + $this->printDeleteDocumentButtonJs(); + $this->printClickDocumentJs(); + } /* }}} */ + function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; From 10f6606efaa510af72d6b1ddac23e5d1e86a2622 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 11:50:11 +0100 Subject: [PATCH 279/467] add RevisionSummary to list of lecacy access rights --- inc/inc.ClassAccessOperation.php | 1 + 1 file changed, 1 insertion(+) diff --git a/inc/inc.ClassAccessOperation.php b/inc/inc.ClassAccessOperation.php index 0584f0a6e..ae780d6fa 100644 --- a/inc/inc.ClassAccessOperation.php +++ b/inc/inc.ClassAccessOperation.php @@ -489,6 +489,7 @@ class SeedDMS_AccessOperation { 'ReviewDocument', 'ReviewSummary', 'ReviseDocument', + 'RevisionSummary', 'RewindWorkflow', 'RunSubWorkflow', 'Search', From e4b934ea76143358a680803bc63e23fbe6fc04f5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 11:51:08 +0100 Subject: [PATCH 280/467] add js code for one page mode --- views/bootstrap/class.MyDocuments.php | 1 + views/bootstrap/class.ReceiptSummary.php | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/views/bootstrap/class.MyDocuments.php b/views/bootstrap/class.MyDocuments.php index 2743deb94..a5cc83e5c 100644 --- a/views/bootstrap/class.MyDocuments.php +++ b/views/bootstrap/class.MyDocuments.php @@ -38,6 +38,7 @@ class SeedDMS_View_MyDocuments extends SeedDMS_Bootstrap_Style { function js() { /* {{{ */ header('Content-Type: application/javascript'); + $this->printClickDocumentJs(); ?> $(document).ready( function() { $('body').on('click', 'ul.bs-docs-sidenav li a', function(ev){ diff --git a/views/bootstrap/class.ReceiptSummary.php b/views/bootstrap/class.ReceiptSummary.php index 40305389d..0176d30fe 100644 --- a/views/bootstrap/class.ReceiptSummary.php +++ b/views/bootstrap/class.ReceiptSummary.php @@ -36,6 +36,14 @@ require_once("SeedDMS/Preview.php"); */ class SeedDMS_View_ReceiptSummary extends SeedDMS_Bootstrap_Style { + function js() { /* {{{ */ + header('Content-Type: application/javascript; charset=UTF-8'); + parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); + + $this->printDeleteDocumentButtonJs(); + $this->printClickDocumentJs(); + } /* }}} */ + function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; From 28676c8065990ac7e2f08c4faf48958121f63608 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 11:52:14 +0100 Subject: [PATCH 281/467] show empty pic if no access --- op/op.Preview.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/op/op.Preview.php b/op/op.Preview.php index 3b0903b84..5b1fed579 100644 --- a/op/op.Preview.php +++ b/op/op.Preview.php @@ -49,6 +49,8 @@ if (!is_object($document)) { } if ($document->getAccessMode($user) < M_READ) { + header('Content-Type: image/svg+xml'); + readfile('../views/'.$theme.'/images/empty.svg'); exit; } From 293e26c74715bc90d0ecb8521a436ab5026ee004 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Nov 2019 20:48:11 +0100 Subject: [PATCH 282/467] add access checks for summaries, add Revision summary --- out/out.RevisionSummary.php | 56 +++++++ views/bootstrap/class.Bootstrap.php | 6 + views/bootstrap/class.RevisionSummary.php | 176 ++++++++++++++++++++++ 3 files changed, 238 insertions(+) create mode 100644 out/out.RevisionSummary.php create mode 100644 views/bootstrap/class.RevisionSummary.php diff --git a/out/out.RevisionSummary.php b/out/out.RevisionSummary.php new file mode 100644 index 000000000..91140afd7 --- /dev/null +++ b/out/out.RevisionSummary.php @@ -0,0 +1,56 @@ +$dms, 'user'=>$user)); +$accessop = new SeedDMS_AccessOperation($dms, $user, $settings); +if (!$accessop->check_view_access($view, $_GET)) { + UI::exitError(getMLText("my_documents"),getMLText("access_denied")); +} + +if ($user->isGuest()) { + UI::exitError(getMLText("my_documents"),getMLText("access_denied")); +} + +if($view) { + $view->setParam('showtree', showtree()); + $view->setParam('cachedir', $settings->_cacheDir); + $view->setParam('previewWidthList', $settings->_previewWidthList); + $view->setParam('previewconverters', $settings->_converters['preview']); + $view->setParam('timeout', $settings->_cmdTimeout); + $view->setParam('accessobject', $accessop); + $view->setParam('xsendfile', $settings->_enableXsendfile); + $view->setParam('onepage', $settings->_onePageMode); // do most navigation by reloading areas of pages with ajax + $view($_GET); + exit; +} + +?> diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 990d8610a..6722eb165 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -757,12 +757,18 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['inprocess'] = array('link'=>"../out/out.MyDocuments.php?inProcess=1", 'label'=>'documents_in_process'); $menuitems['all_documents'] = array('link'=>"../out/out.MyDocuments.php", 'label'=>'all_documents'); if($this->params['workflowmode'] == 'traditional' || $this->params['workflowmode'] == 'traditional_only_approval') { + if ($accessobject->check_view_access('ReviewSummary')) $menuitems['review_summary'] = array('link'=>"../out/out.ReviewSummary.php", 'label'=>'review_summary'); + if ($accessobject->check_view_access('ApprovalSummary')) $menuitems['approval_summary'] = array('link'=>"../out/out.ApprovalSummary.php", 'label'=>'approval_summary'); } else { + if ($accessobject->check_view_access('WorkflowSummary')) $menuitems['workflow_summary'] = array('link'=>"../out/out.WorkflowSummary.php", 'label'=>'workflow_summary'); } + if ($accessobject->check_view_access('ReceiptSummary')) $menuitems['receipt_summary'] = array('link'=>"../out/out.ReceiptSummary.php", 'label'=>'receipt_summary'); + if ($accessobject->check_view_access('RevisionSummary')) + $menuitems['revision_summary'] = array('link'=>"../out/out.RevisionSummary.php", 'label'=>'revision_summary'); /* Check if hook exists because otherwise callHook() will override $menuitems */ if($this->hasHook('mydocumentsNavigationBar')) diff --git a/views/bootstrap/class.RevisionSummary.php b/views/bootstrap/class.RevisionSummary.php new file mode 100644 index 000000000..7fa86ebc5 --- /dev/null +++ b/views/bootstrap/class.RevisionSummary.php @@ -0,0 +1,176 @@ + + * @copyright Copyright (C) 2002-2005 Markus Westphal, + * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, + * 2010-2012 Uwe Steinmann + * @version Release: @package_version@ + */ + +/** + * Include parent class + */ +require_once("class.Bootstrap.php"); + +/** + * Include class to preview documents + */ +require_once("SeedDMS/Preview.php"); + +/** + * Class which outputs the html page for ReviewSummary view + * + * @category DMS + * @package SeedDMS + * @author Markus Westphal, Malcolm Cowe, Uwe Steinmann + * @copyright Copyright (C) 2002-2005 Markus Westphal, + * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, + * 2010-2012 Uwe Steinmann + * @version Release: @package_version@ + */ +class SeedDMS_View_RevisionSummary extends SeedDMS_Bootstrap_Style { + + function js() { /* {{{ */ + header('Content-Type: application/javascript; charset=UTF-8'); + parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); + + $this->printDeleteDocumentButtonJs(); + $this->printClickDocumentJs(); + } /* }}} */ + + function show() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $cachedir = $this->params['cachedir']; + $previewwidth = $this->params['previewWidthList']; + $previewconverters = $this->params['previewconverters']; + $timeout = $this->params['timeout']; + $xsendfile = $this->params['xsendfile']; + + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); + $previewer->setConverters($previewconverters); + + $this->htmlAddHeader(''."\n", 'js'); + + $this->htmlStartPage(getMLText("my_documents")); + $this->globalNavigation(); + $this->contentStart(); + $this->pageNavigation(getMLText("my_documents"), "my_documents"); + + echo "
          \n"; + echo "
          \n"; + $this->contentHeading(getMLText("revision_summary")); +// $this->contentContainerStart(); + + // TODO: verificare scadenza + + // Get document list for the current user. + $revisionStatus = $user->getRevisionStatus(); + + // reverse order + $revisionStatus["indstatus"]=array_reverse($revisionStatus["indstatus"],true); + $revisionStatus["grpstatus"]=array_reverse($revisionStatus["grpstatus"],true); + + $printheader=true; + $iRev = array(); + foreach ($revisionStatus["indstatus"] as $st) { + $document = $dms->getDocument($st['documentID']); + $version = $document->getContentByVersion($st['version']); + $moduser = $dms->getUser($st['required']); + + if ($document && $version) { + + if ($printheader){ + print ""; + print "\n\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n\n\n"; + $printheader=false; + } + $sammel[] = array($document->getID(), $version->getVersion); + $txt = $this->callHook('documentListItem', $document, $previewer); + if(is_string($txt)) + echo $txt; + else { + $class = $st['status'] == 1 ? ' success' : ($st['status'] == -1 ? ' error' : ( $st['status'] == -2 ? ' info' : '')); + echo $this->documentListRowStart($document, $class); + echo $this->documentListRow($document, $previewer, true, $st['version']); + print ""; + print ""; + echo $this->documentListRowEnd($document); + } + } + if ($st["status"]!=-2) { + $iRev[] = $st["documentID"]; + } + } + if (!$printheader) { + echo "\n
          ".getMLText("name")."".getMLText("status")."".getMLText("action")."".getMLText("last_update")."".getMLText("next_revision_abbr")."
          ".getRevisionStatusText($st['status'])."
          ".$st["date"]."
          ". htmlspecialchars($moduser->getFullName()) ."
          ".$version->getRevisionDate()."
          "; + } else { + printMLText("no_revision_needed"); + } + +// $this->contentContainerEnd(); + echo "
          \n"; + echo "
          \n"; + $this->contentHeading(getMLText("group_revision_summary")); +// $this->contentContainerStart(); + + $printheader=true; + foreach ($revisionStatus["grpstatus"] as $st) { + $document = $dms->getDocument($st['documentID']); + $version = $document->getContentByVersion($st['version']); + $modgroup = $dms->getGroup($st['required']); + + if (!in_array($st["documentID"], $iRev) && $document && $version) { + + if ($printheader){ + print ""; + print "\n\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n\n\n"; + $printheader=false; + } + + $txt = $this->callHook('documentListItem', $document, $previewer); + if(is_string($txt)) + echo $txt; + else { + $class = $st['status'] == 1 ? ' success' : ($st['status'] == -1 ? ' error' : ( $st['status'] == -2 ? ' info' : '')); +// print ""; + echo $this->documentListRowStart($document, $class); + echo $this->documentListRow($document, $previewer, true, $st['version']); + print ""; + print "\n"; + } + } + } + if (!$printheader) { + echo "\n
          ".getMLText("name")."".getMLText("status")."".getMLText("action")."".getMLText("last_update")."
          ".getReviewStatusText($st['status'])."
          ".$st["date"]."
          ". htmlspecialchars($modgroup->getName()) ."
          "; + }else{ + printMLText("no_revision_needed"); + } + +// $this->contentContainerEnd(); + echo "
          \n"; + echo "
          \n"; + $this->contentEnd(); + $this->htmlEndPage(); + } /* }}} */ +} +?> From 4775fdcd6c64259a97d1bb34e8402e44f8e10377 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 26 Nov 2019 07:32:39 +0100 Subject: [PATCH 283/467] save field 'created' instead of time() in addDocument() --- SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php b/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php index 7ca9663a3..7cac5d7e9 100644 --- a/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php +++ b/SeedDMS_SQLiteFTS/SQLiteFTS/Indexer.php @@ -96,7 +96,7 @@ class SeedDMS_SQLiteFTS_Indexer { if(!$this->_conn) return false; - $sql = "INSERT INTO docs (docid, title, comment, keywords, category, owner, content, mimetype, origfilename, created) VALUES(".$doc->getFieldValue('document_id').", ".$this->_conn->quote($doc->getFieldValue('title')).", ".$this->_conn->quote($doc->getFieldValue('comment')).", ".$this->_conn->quote($doc->getFieldValue('keywords')).", ".$this->_conn->quote($doc->getFieldValue('category')).", ".$this->_conn->quote($doc->getFieldValue('owner')).", ".$this->_conn->quote($doc->getFieldValue('content')).", ".$this->_conn->quote($doc->getFieldValue('mimetype')).", ".$this->_conn->quote($doc->getFieldValue('origfilename')).", ".time().")"; + $sql = "INSERT INTO docs (docid, title, comment, keywords, category, owner, content, mimetype, origfilename, created) VALUES(".$doc->getFieldValue('document_id').", ".$this->_conn->quote($doc->getFieldValue('title')).", ".$this->_conn->quote($doc->getFieldValue('comment')).", ".$this->_conn->quote($doc->getFieldValue('keywords')).", ".$this->_conn->quote($doc->getFieldValue('category')).", ".$this->_conn->quote($doc->getFieldValue('owner')).", ".$this->_conn->quote($doc->getFieldValue('content')).", ".$this->_conn->quote($doc->getFieldValue('mimetype')).", ".$this->_conn->quote($doc->getFieldValue('origfilename')).", ".$doc->getFieldValue('created')/*time()*/.")"; $res = $this->_conn->exec($sql); if($res === false) { return false; From 469d9c5759098278456c54d3d5e90e98a7e42414 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 26 Nov 2019 07:33:08 +0100 Subject: [PATCH 284/467] new version 1.0.11 --- SeedDMS_SQLiteFTS/package.xml | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/SeedDMS_SQLiteFTS/package.xml b/SeedDMS_SQLiteFTS/package.xml index ed2256393..fdac846ba 100644 --- a/SeedDMS_SQLiteFTS/package.xml +++ b/SeedDMS_SQLiteFTS/package.xml @@ -11,11 +11,11 @@ uwe@steinmann.cx yes - 2018-04-11 + 2019-11-28 - 1.0.10 - 1.0.10 + 1.0.11 + 1.0.11 stable @@ -23,7 +23,8 @@ GPL License -IndexedDocument() remembers cmd and mimetype +Set 'created' in index to creation date of indexed content (was set to current +timestamp) @@ -226,5 +227,21 @@ allow conversion commands for mimetypes with wildcards execWithTimeout() reads data from stderr and saves it into error msg + + 2018-04-11 + + + 1.0.10 + 1.0.10 + + + stable + stable + + GPL License + +IndexedDocument() remembers cmd and mimetype + + From 7bb511f8917db3d802737f1deb2262968e9b9c62 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 26 Nov 2019 07:33:37 +0100 Subject: [PATCH 285/467] fix comparison of creation date, show number of tasks in queue --- views/bootstrap/class.Indexer.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.Indexer.php b/views/bootstrap/class.Indexer.php index fc35be2bc..5fb16c326 100644 --- a/views/bootstrap/class.Indexer.php +++ b/views/bootstrap/class.Indexer.php @@ -63,6 +63,7 @@ function check_queue() { beforeSend: function() { queue_count++; // Add request to the counter $('.queue-bar').css('width', (queue_count*100/MAX_REQUESTS)+'%'); + $('.queue-bar').text(queue_count + '/' + MAX_REQUESTS); }, error: function(xhr, textstatus) { noty({ @@ -162,7 +163,7 @@ $(document).ready( function() { $created = 0; } $content = $document->getLatestContent(); - if($created > $content->getDate() && !$forceupdate) { + if($created >= $content->getDate() && !$forceupdate) { echo $indent."getID()."\" class=\"indexstatus\" data-docid=\"".$document->getID()."\">document unchanged"; } else { $index->delete($hit->id); From 413bbad19606139cecd24b54ec591eeaba91fef7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 26 Nov 2019 07:34:17 +0100 Subject: [PATCH 286/467] add entries for 5.1.14 --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index cbdd42c47..6fae41425 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ Changes in version 5.1.14 -------------------------------------------------------------------------------- - allow mimetype to specify documents which can be edited online +- show number of indexing tasks in bar +- fix comparison of last indexing time with creation date of document content -------------------------------------------------------------------------------- Changes in version 5.1.13 From 87d1df5d034495bef6b4212c8bf49deca6ffa8b4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 26 Nov 2019 11:20:46 +0100 Subject: [PATCH 287/467] propperly check for passed parameter 'node', pass orderby to view --- out/out.FolderChooser.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/out/out.FolderChooser.php b/out/out.FolderChooser.php index 8e764e5a9..ffea48194 100644 --- a/out/out.FolderChooser.php +++ b/out/out.FolderChooser.php @@ -29,7 +29,7 @@ require_once("inc/inc.ClassUI.php"); require_once("inc/inc.Authentication.php"); if(isset($_GET['action']) && $_GET['action'] == 'subtree') { - if (isset($_GET["node"]) || !is_numeric($_GET["node"]) || intval($_GET["node"])<1) { + if (!isset($_GET["node"]) || !is_numeric($_GET["node"]) || intval($_GET["node"])<1) { $nodeid = $settings->_rootFolderID; } else { $nodeid = intval($_GET["node"]); @@ -48,9 +48,9 @@ if(isset($_GET['action']) && $_GET['action'] == 'subtree') { $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'rootfolderid'=>$settings->_rootFolderID)); if($view) { + $view->setParam('orderby', $settings->_sortFoldersDefault); if(isset($_GET['action']) && $_GET['action'] == 'subtree') { $view->setParam('node', $node); - $view->setParam('orderby', $settings->_sortFoldersDefault); } else { $view->setParam('form', $form); $view->setParam('mode', $mode); From 1763bd1bae147e20457e5ffd7c9e121fc43190a0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 26 Nov 2019 11:21:40 +0100 Subject: [PATCH 288/467] take 'orderby' into account --- views/bootstrap/class.FolderChooser.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.FolderChooser.php b/views/bootstrap/class.FolderChooser.php index 73beaf5c4..ded83b32c 100644 --- a/views/bootstrap/class.FolderChooser.php +++ b/views/bootstrap/class.FolderChooser.php @@ -52,6 +52,7 @@ class SeedDMS_View_FolderChooser extends SeedDMS_Bootstrap_Style { $dms = $this->params['dms']; $user = $this->params['user']; $mode = $this->params['mode']; + $orderby = $this->params['orderby']; $exclude = $this->params['exclude']; $form = $this->params['form']; $rootfolderid = $this->params['rootfolderid']; @@ -59,7 +60,7 @@ class SeedDMS_View_FolderChooser extends SeedDMS_Bootstrap_Style { // $this->htmlStartPage(getMLText("choose_target_folder")); // $this->contentContainerStart(); if(1) { - $this->printNewTreeNavigationHtml($rootfolderid, $mode, 0, $form); + $this->printNewTreeNavigationHtml($rootfolderid, $mode, 0, $form, ($this->params['expandFolderTree'] == 1) ? -1 : 3, $orderby); echo ''."\n"; } else { $this->printNewTreeNavigation($rootfolderid, $mode, 0, $form); From fd4a821fa8ff4aeec5be98be69d0adb3e523d417 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 26 Nov 2019 17:07:47 +0100 Subject: [PATCH 289/467] better checking for existing value --- views/bootstrap/class.Bootstrap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index ac090e338..ef4d5adc0 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -906,7 +906,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; (!empty($value['type']) ? ' type="'.$value['type'].'"' : ''). (!empty($value['id']) ? ' id="'.$value['id'].'"' : ''). (!empty($value['name']) ? ' name="'.$value['name'].'"' : ''). - (is_string($value['value']) || !empty($value['value']) ? ' value="'.$value['value'].'"' : ''). + ((isset($value['value']) && is_string($value['value'])) || !empty($value['value']) ? ' value="'.$value['value'].'"' : ''). (!empty($value['placeholder']) ? ' placeholder="'.$value['placeholder'].'"' : ''). (!empty($value['autocomplete']) ? ' autocomplete="'.$value['autocomplete'].'"' : ''). (!empty($value['checked']) ? ' checked' : ''). From a75d337912d20d4a917be7a199d8240cd932b352 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 26 Nov 2019 17:48:54 +0100 Subject: [PATCH 290/467] fix menu item for 2 factor auth --- views/bootstrap/class.Bootstrap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 14d0fb5e2..b82fd9e02 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -726,7 +726,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['edit_notify'] = array('link'=>"../out/out.ManageNotify.php", 'label'=>'edit_existing_notify'); - $menuitems['2_factor_auth'] = array('link'=>"../out/out.Setup2Factor.php", 'label'=>'edit_existing_notify'); + $menuitems['2_factor_auth'] = array('link'=>"../out/out.Setup2Factor.php", 'label'=>'2_factor_auth'); if ($this->params['enableusersview']){ if ($accessobject->check_view_access('UsrView')) From d82b59f173d538705f1da0c8195dbf26d2057f05 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 26 Nov 2019 17:49:27 +0100 Subject: [PATCH 291/467] add filter field, placeholder in input filter field --- views/bootstrap/class.SubstituteUser.php | 2 +- views/bootstrap/class.UserList.php | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.SubstituteUser.php b/views/bootstrap/class.SubstituteUser.php index 7ac8a5f14..8cd982193 100644 --- a/views/bootstrap/class.SubstituteUser.php +++ b/views/bootstrap/class.SubstituteUser.php @@ -56,7 +56,7 @@ class SeedDMS_View_SubstituteUser extends SeedDMS_Bootstrap_Style { $this->contentHeading(getMLText("substitute_user")); ?> - + diff --git a/views/bootstrap/class.UserList.php b/views/bootstrap/class.UserList.php index e6dbb43fc..4cc9317f6 100644 --- a/views/bootstrap/class.UserList.php +++ b/views/bootstrap/class.UserList.php @@ -31,6 +31,19 @@ require_once("class.Bootstrap.php"); */ class SeedDMS_View_UserList extends SeedDMS_Bootstrap_Style { + function js() { /* {{{ */ +?> + $(document).ready(function(){ + $("#myInput").on("keyup", function() { + var value = $(this).val().toLowerCase(); + $("#myTable tbody tr").filter(function() { + $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1) + }); + }); + }); +params['dms']; $user = $this->params['user']; @@ -49,7 +62,8 @@ class SeedDMS_View_UserList extends SeedDMS_Bootstrap_Style { $sessionmgr = new SeedDMS_SessionMgr($dms->getDB()); ?> -
          + +
          Date: Thu, 28 Nov 2019 09:15:26 +0100 Subject: [PATCH 292/467] fix documentation for rewriteRevisionLog() --- SeedDMS_Core/Core/inc.ClassDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 56603dba3..826a0ca11 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -4272,7 +4272,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * This method was added for importing an xml dump. * * @param array $revisionlog new status log with the newest log entry first. - * @return boolean true on success, otherwise false + * @return boolean 0 on success, otherwise a negativ error number */ function rewriteRevisionLog($revisions) { /* {{{ */ $db = $this->_document->_dms->getDB(); From 3011f96372e20792720d7fa0379b436735c876f6 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 09:16:23 +0100 Subject: [PATCH 293/467] add optional parameter $newuser to removeFromProcesses() if set, the process will be transfered to a new user --- SeedDMS_Core/Core/inc.ClassUser.php | 31 +++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassUser.php b/SeedDMS_Core/Core/inc.ClassUser.php index 63714308a..9b3cab382 100644 --- a/SeedDMS_Core/Core/inc.ClassUser.php +++ b/SeedDMS_Core/Core/inc.ClassUser.php @@ -899,7 +899,8 @@ class SeedDMS_Core_User { /* {{{ */ * * This method adds another log entry to the reviews and approvals * which indicates the user has been deleted from the process. By default it will - * do so for each review/approval regardless of its current state. So even + * do so for each review/approval regardless of its current state unless + * the user has been removed already (status=-2). So even * reviews/approvals already processed by the user will be added the log * entry. Only if the last log entry was a removal already, it will not be * added a second time. @@ -907,24 +908,42 @@ class SeedDMS_Core_User { /* {{{ */ * @param object $user the user doing the removal (needed for entry in * review and approve log). * @param array $states remove user only from reviews/approvals in one of the states - * If passing array(0), the method will operate on reviews/approval which - * has not been touched. + * e.g. if passing array('review'=>array(0)), the method will operate on + * reviews which has not been touched yet. * @return boolean true on success or false in case of an error */ - private function __removeFromProcesses($user, $states = array()) { /* {{{ */ + private function __removeFromProcesses($user, $states = array(), $newuser=null) { /* {{{ */ $db = $this->_dms->getDB(); $reviewStatus = $this->getReviewStatus(); +// var_dump($newuser); +// print_r($reviewStatus);exit; + $db->startTransaction(); foreach ($reviewStatus["indstatus"] as $ri) { if($ri['status'] != -2 && (!isset($states['review']) || in_array($ri['status'], $states['review']))) { $queryStr = "INSERT INTO `tblDocumentReviewLog` (`reviewID`, `status`, `comment`, `date`, `userID`) ". "VALUES ('". $ri["reviewID"] ."', '-2', 'Reviewer removed from process', ".$db->getCurrentDatetime().", '". $user->getID() ."')"; $res=$db->getResult($queryStr); if(!$res) { + $db->rollbackTransaction(); return false; } + /* Only reviews not done already can be transferred to a new user */ + if($newuser && $ri['status'] == 0) { + if($doc = $this->_dms->getDocument($ri['documentID'])) { + if($version = $doc->getContentByVersion($ri['version'])) { + $ret = $version->addIndReviewer($newuser, $user); + /* returns -3 if the user is already a reviewer */ + if($ret != 0 && $ret != -3) { + $db->rollbackTransaction(); + return false; + } + } + } + } } } + $db->commitTransaction(); $approvalStatus = $this->getApprovalStatus(); foreach ($approvalStatus["indstatus"] as $ai) { @@ -975,11 +994,11 @@ class SeedDMS_Core_User { /* {{{ */ * @param array $states remove user only from reviews/approvals in one of the states * @return boolean true on success or false in case of an error */ - public function removeFromProcesses($user, $states=array()) { /* {{{ */ + public function removeFromProcesses($user, $states=array(), $newuser=null) { /* {{{ */ $db = $this->_dms->getDB(); $db->startTransaction(); - if(!$this->__removeFromProcesses($user, $states)) { + if(!$this->__removeFromProcesses($user, $states, $newuser)) { $db->rollbackTransaction(); return false; } From babba864a18893bcd70b285abe5218f3b8839635 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 09:17:32 +0100 Subject: [PATCH 294/467] fix error msg --- out/out.TransferObjects.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/out/out.TransferObjects.php b/out/out.TransferObjects.php index 1118a1305..37b6be1c2 100644 --- a/out/out.TransferObjects.php +++ b/out/out.TransferObjects.php @@ -45,7 +45,7 @@ if (!is_object($rmuser)) { } if ($rmuser->getID()==$user->getID()) { - UI::exitError(getMLText("transfer_objects"),getMLText("cannot_delete_yourself")); + UI::exitError(getMLText("transfer_objects"),getMLText("cannot_transfer_your_objects")); } $allusers = $dms->getAllUsers($settings->_sortUsersInList); From dabf821b6a0d9a368a70a3fa8be7cbbcc600d83d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 09:18:01 +0100 Subject: [PATCH 295/467] do not run documentListRow(Start|End) if lastContent is null --- views/bootstrap/class.Bootstrap.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index b82fd9e02..86cf25c6e 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -2477,9 +2477,6 @@ $('body').on('click', '[id^=\"table-row-document\"] td:nth-child(2)', function(e if (strlen($comment) > 150) $comment = substr($comment, 0, 147) . "..."; $docID = $document->getID(); - if(!$skipcont) - $content .= $this->documentListRowStart($document); - if($version) { $latestContent = $this->callHook('documentContent', $document, $version); if($latestContent === null) @@ -2491,6 +2488,9 @@ $('body').on('click', '[id^=\"table-row-document\"] td:nth-child(2)', function(e } if($latestContent) { + if(!$skipcont) + $content .= $this->documentListRowStart($document); + $previewer->createPreview($latestContent); $version = $latestContent->getVersion(); $status = $latestContent->getStatus(); @@ -2610,9 +2610,9 @@ $('body').on('click', '[id^=\"table-row-document\"] td:nth-child(2)', function(e } $content .= ""; $content .= ""; + if(!$skipcont) + $content .= $this->documentListRowEnd($document); } - if(!$skipcont) - $content .= $this->documentListRowEnd($document); return $content; } /* }}} */ From 809f224e7d36ed8eb8505b4d76849597ac431262 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 09:18:42 +0100 Subject: [PATCH 296/467] processes can be transfered to a new user currently only for reviews --- op/op.UsrMgr.php | 7 ++++++- out/out.RemoveUserFromProcesses.php | 3 +++ .../class.RemoveUserFromProcesses.php | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/op/op.UsrMgr.php b/op/op.UsrMgr.php index d5619115c..1fd903e1a 100644 --- a/op/op.UsrMgr.php +++ b/op/op.UsrMgr.php @@ -205,6 +205,11 @@ else if ($action == "removefromprocesses") { UI::exitError(getMLText("admin_tools"),getMLText("cannot_delete_yourself")); } + $userToAssign = $dms->getUser($_POST["assignTo"]); + if (!is_object($userToAssign)) { + UI::exitError(getMLText("admin_tools"),getMLText("invalid_user_id")); + } + $userToRemove = $dms->getUser($userid); if (!is_object($userToRemove)) { UI::exitError(getMLText("admin_tools"),getMLText("invalid_user_id")); @@ -219,7 +224,7 @@ else if ($action == "removefromprocesses") { $_POST["status"]["receipt"] = array(); if(!isset($_POST["status"]["revision"])) $_POST["status"]["revision"] = array(); - if (!$userToRemove->removeFromProcesses($user, $_POST['status'])) { + if (!$userToRemove->removeFromProcesses($user, $_POST['status'], $userToAssign)) { UI::exitError(getMLText("admin_tools"),getMLText("error_occured")); } diff --git a/out/out.RemoveUserFromProcesses.php b/out/out.RemoveUserFromProcesses.php index 682c84219..db093a08b 100644 --- a/out/out.RemoveUserFromProcesses.php +++ b/out/out.RemoveUserFromProcesses.php @@ -48,8 +48,11 @@ if ($rmuser->getID()==$user->getID()) { UI::exitError(getMLText("rm_user"),getMLText("cannot_delete_yourself")); } +$allusers = $dms->getAllUsers($settings->_sortUsersInList); + if($view) { $view->setParam('rmuser', $rmuser); + $view->setParam('allusers', $allusers); $view->setParam('accessobject', $accessop); $view($_GET); exit; diff --git a/views/bootstrap/class.RemoveUserFromProcesses.php b/views/bootstrap/class.RemoveUserFromProcesses.php index 23bfcd13d..abb541416 100644 --- a/views/bootstrap/class.RemoveUserFromProcesses.php +++ b/views/bootstrap/class.RemoveUserFromProcesses.php @@ -31,6 +31,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { $dms = $this->params['dms']; $user = $this->params['user']; $rmuser = $this->params['rmuser']; + $allusers = $this->params['allusers']; $this->htmlStartPage(getMLText("admin_tools")); $this->globalNavigation(); @@ -51,6 +52,23 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { isGuest() || ($currUser->getID() == $rmuser->getID()) ) + continue; + + if ($rmuser && $currUser->getID()==$rmuser->getID()) $selected=$count; + $options[] = array($currUser->getID(), htmlspecialchars($currUser->getLogin()." - ".$currUser->getFullName())); + } + $this->formField( + getMLText("transfer_process_to_user"), + array( + 'element'=>'select', + 'name'=>'assignTo', + 'class'=>'chzn-select', + 'options'=>$options + ) + ); $reviewStatus = $rmuser->getReviewStatus(); $tmpr = array(); $cr = array("-2"=>0, '-1'=>0, '0'=>0, '1'=>0); From 89c0ca9b886ddac508d216b23c13f5fba1405883 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 10:00:52 +0100 Subject: [PATCH 297/467] new function getBaseUrl() returns the protocol and host part of the url where seeddms is available --- inc/inc.Utils.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/inc/inc.Utils.php b/inc/inc.Utils.php index 82bc8c0fc..52b3102f2 100644 --- a/inc/inc.Utils.php +++ b/inc/inc.Utils.php @@ -589,6 +589,15 @@ function sendFile($filename) { /* {{{ */ } } /* }}} */ +/** + * Return protocol and host of url + * + * @return string + */ +function getBaseUrl() { /* {{{ */ + return "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST']; +} /* }}} */ + class SeedDMS_CSRF { protected $secret; From c3ab4648905da921e09939d0116101c156ffcffc Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 10:01:59 +0100 Subject: [PATCH 298/467] use new function getBaseUrl() --- op/op.AddDocument.php | 8 ++++---- op/op.AddFile.php | 2 +- op/op.AddFile2.php | 2 +- op/op.AddMultiDocument.php | 2 +- op/op.AddSubFolder.php | 2 +- op/op.Ajax.php | 10 +++++----- op/op.ApproveDocument.php | 8 ++++---- op/op.DocumentAccess.php | 8 ++++---- op/op.DocumentNotify.php | 6 +++--- op/op.EditAttributes.php | 4 ++-- op/op.EditComment.php | 2 +- op/op.EditDocument.php | 10 +++++----- op/op.EditFolder.php | 8 ++++---- op/op.EditOnline.php | 2 +- op/op.FolderAccess.php | 10 +++++----- op/op.FolderNotify.php | 6 +++--- op/op.ManageNotify.php | 2 +- op/op.MoveClipboard.php | 4 ++-- op/op.MoveDocument.php | 2 +- op/op.MoveFolder.php | 2 +- op/op.OverrideContentStatus.php | 2 +- op/op.PasswordForgotten.php | 4 ++-- op/op.RemoveDocument.php | 2 +- op/op.RemoveDocumentFile.php | 2 +- op/op.RemoveFolder.php | 2 +- op/op.RemoveVersion.php | 4 ++-- op/op.RemoveWorkflowFromDocument.php | 2 +- op/op.ReturnFromSubWorkflow.php | 2 +- op/op.ReviewDocument.php | 4 ++-- op/op.RewindWorkflow.php | 2 +- op/op.RunSubWorkflow.php | 2 +- op/op.SetReviewersApprovers.php | 16 ++++++++-------- op/op.SetWorkflow.php | 2 +- op/op.TransferDocument.php | 2 +- op/op.TriggerWorkflow.php | 4 ++-- op/op.UpdateDocument.php | 10 +++++----- op/op.UpdateDocument2.php | 4 ++-- op/op.UsrMgr.php | 2 +- 38 files changed, 84 insertions(+), 84 deletions(-) diff --git a/op/op.AddDocument.php b/op/op.AddDocument.php index 84176ecda..5cc09cc88 100644 --- a/op/op.AddDocument.php +++ b/op/op.AddDocument.php @@ -407,7 +407,7 @@ for ($file_num=0;$file_numgetFullName(); $params['comment'] = $comment; $params['version_comment'] = $version_comment; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); @@ -427,7 +427,7 @@ for ($file_num=0;$file_numgetFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); foreach($workflow->getNextTransitions($workflow->getInitState()) as $ntransition) { foreach($ntransition->getUsers() as $tuser) { @@ -450,7 +450,7 @@ for ($file_num=0;$file_numgetFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -471,7 +471,7 @@ for ($file_num=0;$file_numgetFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; diff --git a/op/op.AddFile.php b/op/op.AddFile.php index 944028eea..8b3a8022a 100644 --- a/op/op.AddFile.php +++ b/op/op.AddFile.php @@ -116,7 +116,7 @@ for ($file_num=0;$file_numgetName(); $params['username'] = $user->getFullName(); $params['comment'] = $comment; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.AddFile2.php b/op/op.AddFile2.php index 4774189ff..ae05026db 100644 --- a/op/op.AddFile2.php +++ b/op/op.AddFile2.php @@ -109,7 +109,7 @@ if( move_uploaded_file( $source_file_path, $target_file_path ) ) { $params['document'] = $document->getName(); $params['username'] = $user->getFullName(); $params['comment'] = $comment; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.AddMultiDocument.php b/op/op.AddMultiDocument.php index a4e843138..9bcbd0dcf 100644 --- a/op/op.AddMultiDocument.php +++ b/op/op.AddMultiDocument.php @@ -243,7 +243,7 @@ if( move_uploaded_file( $source_file_path, $target_file_path ) ) { $params['username'] = $user->getFullName(); $params['comment'] = $comment; $params['version_comment'] = $version_comment; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.AddSubFolder.php b/op/op.AddSubFolder.php index 3d3d42019..f0284d1cb 100644 --- a/op/op.AddSubFolder.php +++ b/op/op.AddSubFolder.php @@ -133,7 +133,7 @@ if(!$subFolder = $controller->run()) { $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); $params['comment'] = $comment; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$subFolder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$subFolder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 727d0516e..52362f4be 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -459,7 +459,7 @@ switch($command) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$parent->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$parent->getID(); $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { $notifier->toGroup($user, $grp, $subject, $message, $params); @@ -801,7 +801,7 @@ switch($command) { $params['username'] = $user->getFullName(); $params['comment'] = ''; $params['version_comment'] = ''; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); @@ -821,7 +821,7 @@ switch($command) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); foreach($workflow->getNextTransitions($workflow->getInitState()) as $ntransition) { foreach($ntransition->getUsers() as $tuser) { @@ -844,7 +844,7 @@ switch($command) { $params['version'] = 1; $params['comment'] = ''; $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -865,7 +865,7 @@ switch($command) { $params['version'] = 1; $params['comment'] = ''; $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; diff --git a/op/op.ApproveDocument.php b/op/op.ApproveDocument.php index eaceec753..597573814 100644 --- a/op/op.ApproveDocument.php +++ b/op/op.ApproveDocument.php @@ -113,7 +113,7 @@ if ($_POST["approvalType"] == "ind") { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $notifier->toIndividual($user, $content->getUser(), $subject, $message, $params); @@ -151,7 +151,7 @@ else if ($_POST["approvalType"] == "grp") { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $notifier->toIndividual($user, $content->getUser(), $subject, $message, $params); @@ -186,7 +186,7 @@ if ($_POST["approvalStatus"]==-1){ $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { @@ -238,7 +238,7 @@ if ($_POST["approvalStatus"]==-1){ $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { diff --git a/op/op.DocumentAccess.php b/op/op.DocumentAccess.php index eddf47ef1..76b48018f 100644 --- a/op/op.DocumentAccess.php +++ b/op/op.DocumentAccess.php @@ -157,7 +157,7 @@ if ($action == "setowner") { $params['username'] = $user->getFullName(); $params['old_owner'] = $oldowner->getFullName(); $params['new_owner'] = $newowner->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -182,7 +182,7 @@ else if ($action == "notinherit") { $params['name'] = $document->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -205,7 +205,7 @@ else if ($action == "inherit") { $params['name'] = $document->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -227,7 +227,7 @@ else if ($action == "setdefault") { $params['name'] = $document->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.DocumentNotify.php b/op/op.DocumentNotify.php index 0226ea7a3..eb546a241 100644 --- a/op/op.DocumentNotify.php +++ b/op/op.DocumentNotify.php @@ -107,7 +107,7 @@ if ($action == "delnotify"){ $params['name'] = $document->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -150,7 +150,7 @@ else if ($action == "addnotify") { $params['name'] = $document->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -184,7 +184,7 @@ else if ($action == "addnotify") { $params['name'] = $document->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; diff --git a/op/op.EditAttributes.php b/op/op.EditAttributes.php index dce009239..4397351a6 100644 --- a/op/op.EditAttributes.php +++ b/op/op.EditAttributes.php @@ -105,7 +105,7 @@ if($oldattributes) { $params['attribute_new_value'] = isset($newattributes[$attrdefid]) ? $newattributes[$attrdefid]->getValue() : ''; $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -133,7 +133,7 @@ if($newattributes) { $params['attribute_new_value'] = $attribute->getValue(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; diff --git a/op/op.EditComment.php b/op/op.EditComment.php index 1444cf63e..7dec214f7 100644 --- a/op/op.EditComment.php +++ b/op/op.EditComment.php @@ -100,7 +100,7 @@ if (($oldcomment = $version->getComment()) != $comment) { $params['username'] = $user->getFullName(); $params['new_comment'] = $comment; $params['old_comment'] = $oldcomment; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID()."&version=".$version->getVersion(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID()."&version=".$version->getVersion(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.EditDocument.php b/op/op.EditDocument.php index 3de8cb97a..5c3a66d4f 100644 --- a/op/op.EditDocument.php +++ b/op/op.EditDocument.php @@ -144,7 +144,7 @@ if ($oldname != $name) { $params['old_name'] = $oldname; $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -173,7 +173,7 @@ if ($oldcomment != $comment) { $params['old_comment'] = $oldcomment; $params['new_comment'] = $comment; $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -200,7 +200,7 @@ if ($expires != $oldexpires) { $params['name'] = $document->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -234,7 +234,7 @@ if($oldattributes) { $params['attribute_new_value'] = isset($newattributes[$attrdefid]) ? $newattributes[$attrdefid]->getValue() : ''; $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -261,7 +261,7 @@ if($newattributes) { $params['attribute_new_value'] = $attribute->getValue(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; diff --git a/op/op.EditFolder.php b/op/op.EditFolder.php index c2f2afc57..050d6b3f5 100644 --- a/op/op.EditFolder.php +++ b/op/op.EditFolder.php @@ -97,7 +97,7 @@ if($oldname != $name) { $params['old_name'] = $oldname; $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -123,7 +123,7 @@ if($oldcomment != $comment) { $params['old_comment'] = $oldcomment; $params['new_comment'] = $comment; $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -152,7 +152,7 @@ if($oldattributes) { $params['attribute_new_value'] = isset($newattributes[$attrdefid]) ? $newattributes[$attrdefid]->getValue() : ''; $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -179,7 +179,7 @@ if($newattributes) { $params['attribute_new_value'] = $attribute->getValue(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; diff --git a/op/op.EditOnline.php b/op/op.EditOnline.php index b19eb420b..c0dc2d401 100644 --- a/op/op.EditOnline.php +++ b/op/op.EditOnline.php @@ -75,7 +75,7 @@ if($lc->getChecksum() == SeedDMS_Core_File::checksum($tmpfname)) { $params['comment'] = $document->getComment(); $params['version'] = $lc->getVersion(); $params['version_comment'] = $lc->getComment(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.FolderAccess.php b/op/op.FolderAccess.php index f5ad80519..6ee5d3e8c 100644 --- a/op/op.FolderAccess.php +++ b/op/op.FolderAccess.php @@ -137,7 +137,7 @@ if ($action == "setowner") { $params['username'] = $user->getFullName(); $params['old_owner'] = $oldOwner->getFullName(); $params['new_owner'] = $newOwner->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -168,7 +168,7 @@ else if ($action == "notinherit") { else $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -191,7 +191,7 @@ else if ($action == "notinherit") { else $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -230,7 +230,7 @@ else if ($action == "inherit") { else $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -257,7 +257,7 @@ else if ($action == "setdefault") { else $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.FolderNotify.php b/op/op.FolderNotify.php index 67c7a75bd..aa9f235b5 100644 --- a/op/op.FolderNotify.php +++ b/op/op.FolderNotify.php @@ -102,7 +102,7 @@ if ($action == "delnotify") { $params['name'] = $folder->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -145,7 +145,7 @@ else if ($action == "addnotify") { $params['name'] = $folder->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -180,7 +180,7 @@ else if ($action == "addnotify") { $params['name'] = $folder->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; diff --git a/op/op.ManageNotify.php b/op/op.ManageNotify.php index c58d7d665..738b67530 100644 --- a/op/op.ManageNotify.php +++ b/op/op.ManageNotify.php @@ -119,7 +119,7 @@ if ($_GET["type"]=="document"){ $params['name'] = $folder->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; diff --git a/op/op.MoveClipboard.php b/op/op.MoveClipboard.php index cb93bf4b9..d675e5c6a 100644 --- a/op/op.MoveClipboard.php +++ b/op/op.MoveClipboard.php @@ -70,7 +70,7 @@ foreach($clipboard['docs'] as $documentid) { $params['old_folder_path'] = $oldFolder->getFolderPathPlain(); $params['new_folder_path'] = $targetFolder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); @@ -117,7 +117,7 @@ foreach($clipboard['folders'] as $folderid) { $params['old_folder_path'] = $oldFolder->getFolderPathPlain(); $params['new_folder_path'] = $targetFolder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); diff --git a/op/op.MoveDocument.php b/op/op.MoveDocument.php index 21682eb3d..54a93683f 100644 --- a/op/op.MoveDocument.php +++ b/op/op.MoveDocument.php @@ -87,7 +87,7 @@ if ($targetid != $oldFolder->getID()) { $params['old_folder_path'] = $oldFolder->getFolderPathPlain(); $params['new_folder_path'] = $targetFolder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); diff --git a/op/op.MoveFolder.php b/op/op.MoveFolder.php index 8a3c44d57..84090c704 100644 --- a/op/op.MoveFolder.php +++ b/op/op.MoveFolder.php @@ -85,7 +85,7 @@ if ($folder->setParent($targetFolder)) { $params['old_folder_path'] = $oldFolder->getFolderPathPlain(); $params['new_folder_path'] = $targetFolder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); diff --git a/op/op.OverrideContentStatus.php b/op/op.OverrideContentStatus.php index afee7561a..6f8dba701 100644 --- a/op/op.OverrideContentStatus.php +++ b/op/op.OverrideContentStatus.php @@ -86,7 +86,7 @@ if ($overrideStatus != $overallStatus["status"]) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { $notifier->toGroup($user, $grp, $subject, $message, $params); diff --git a/op/op.PasswordForgotten.php b/op/op.PasswordForgotten.php index 13da84f85..c51794fc1 100644 --- a/op/op.PasswordForgotten.php +++ b/op/op.PasswordForgotten.php @@ -62,8 +62,8 @@ if($user) { $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $params['hash'] = $hash; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ChangePassword.php?hash=".$hash; - $params['url_prefix'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot; + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ChangePassword.php?hash=".$hash; + $params['url_prefix'] = getBaseUrl().$settings->_httpRoot; $emailobj->toIndividual($settings->_smtpSendFrom, $user, $subject, $message, $params); } } diff --git a/op/op.RemoveDocument.php b/op/op.RemoveDocument.php index 05cda0d28..bfd19b701 100644 --- a/op/op.RemoveDocument.php +++ b/op/op.RemoveDocument.php @@ -106,7 +106,7 @@ if ($notifier){ $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { $notifier->toGroup($user, $grp, $subject, $message, $params); diff --git a/op/op.RemoveDocumentFile.php b/op/op.RemoveDocumentFile.php index 9887c5dd2..70dd02765 100644 --- a/op/op.RemoveDocumentFile.php +++ b/op/op.RemoveDocumentFile.php @@ -75,7 +75,7 @@ if (!$document->removeDocumentFile($fileid)) { $params = array(); $params['document'] = $document->getName(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.RemoveFolder.php b/op/op.RemoveFolder.php index 0f11fa0c1..86276b8f0 100644 --- a/op/op.RemoveFolder.php +++ b/op/op.RemoveFolder.php @@ -99,7 +99,7 @@ if ($notifier) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$parent->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$parent->getID(); $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { $notifier->toGroup($user, $grp, $subject, $message, $params); diff --git a/op/op.RemoveVersion.php b/op/op.RemoveVersion.php index e8fb5f596..41ce8d429 100644 --- a/op/op.RemoveVersion.php +++ b/op/op.RemoveVersion.php @@ -91,7 +91,7 @@ if (count($document->getContent())==1) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { $notifier->toGroup($user, $grp, $subject, $message, $params); @@ -168,7 +168,7 @@ else { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $notifier->toList($user, $userrecipients, $subject, $message, $params); $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach($grouprecipients as $grp) { diff --git a/op/op.RemoveWorkflowFromDocument.php b/op/op.RemoveWorkflowFromDocument.php index c42153f67..64a64eda5 100644 --- a/op/op.RemoveWorkflowFromDocument.php +++ b/op/op.RemoveWorkflowFromDocument.php @@ -84,7 +84,7 @@ if($version->removeWorkflow($user)) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); // Send notification to subscribers. $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { diff --git a/op/op.ReturnFromSubWorkflow.php b/op/op.ReturnFromSubWorkflow.php index 4d5837ba2..0fb7d377d 100644 --- a/op/op.ReturnFromSubWorkflow.php +++ b/op/op.ReturnFromSubWorkflow.php @@ -98,7 +98,7 @@ if($version->returnFromSubWorkflow($user, $transition, $_POST["comment"])) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); // Send notification to subscribers. $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { diff --git a/op/op.ReviewDocument.php b/op/op.ReviewDocument.php index 5b874370b..d41f07a39 100644 --- a/op/op.ReviewDocument.php +++ b/op/op.ReviewDocument.php @@ -111,7 +111,7 @@ if ($_POST["reviewType"] == "ind") { $params['status'] = getReviewStatusText($_POST["reviewStatus"]); $params['comment'] = $comment; $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); @@ -265,7 +265,7 @@ if ($_POST["reviewStatus"]==-1){ $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); foreach ($docApprovalStatus as $dastat) { if ($dastat["status"] == 0) { diff --git a/op/op.RewindWorkflow.php b/op/op.RewindWorkflow.php index 08b2a58c2..6b1648a89 100644 --- a/op/op.RewindWorkflow.php +++ b/op/op.RewindWorkflow.php @@ -83,7 +83,7 @@ if($version->rewindWorkflow()) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); // Send notification to subscribers. $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { diff --git a/op/op.RunSubWorkflow.php b/op/op.RunSubWorkflow.php index 9a968efcf..9775a5677 100644 --- a/op/op.RunSubWorkflow.php +++ b/op/op.RunSubWorkflow.php @@ -92,7 +92,7 @@ if($version->runSubWorkflow($subworkflow)) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); // Send notification to subscribers. $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { diff --git a/op/op.SetReviewersApprovers.php b/op/op.SetReviewersApprovers.php index d009b026d..353452b52 100644 --- a/op/op.SetReviewersApprovers.php +++ b/op/op.SetReviewersApprovers.php @@ -140,7 +140,7 @@ foreach ($pIndRev as $p) { $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -206,7 +206,7 @@ if (count($reviewIndex["i"]) > 0) { $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -252,7 +252,7 @@ foreach ($pGrpRev as $p) { $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -310,7 +310,7 @@ if (count($reviewIndex["g"]) > 0) { $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -372,7 +372,7 @@ foreach ($pIndApp as $p) { $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -430,7 +430,7 @@ if (count($approvalIndex["i"]) > 0) { $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -476,7 +476,7 @@ foreach ($pGrpApp as $p) { $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -534,7 +534,7 @@ if (count($approvalIndex["g"]) > 0) { $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; diff --git a/op/op.SetWorkflow.php b/op/op.SetWorkflow.php index f7219e577..006767a90 100644 --- a/op/op.SetWorkflow.php +++ b/op/op.SetWorkflow.php @@ -87,7 +87,7 @@ if ($notifier) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); foreach($workflow->getNextTransitions($workflow->getInitState()) as $ntransition) { foreach($ntransition->getUsers() as $tuser) { diff --git a/op/op.TransferDocument.php b/op/op.TransferDocument.php index 0bc50493e..9072c1f9f 100644 --- a/op/op.TransferDocument.php +++ b/op/op.TransferDocument.php @@ -80,7 +80,7 @@ if ($notifier){ $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $notifier->toList($user, $nl["users"], $subject, $message, $params); foreach ($nl["groups"] as $grp) { $notifier->toGroup($user, $grp, $subject, $message, $params); diff --git a/op/op.TriggerWorkflow.php b/op/op.TriggerWorkflow.php index 5c572f08d..330b525cc 100644 --- a/op/op.TriggerWorkflow.php +++ b/op/op.TriggerWorkflow.php @@ -94,7 +94,7 @@ if($version->triggerWorkflowTransition($user, $transition, $_POST["comment"])) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); // Send notification to subscribers. $notifier->toList($user, $nl["users"], $subject, $message, $params); @@ -114,7 +114,7 @@ if($version->triggerWorkflowTransition($user, $transition, $_POST["comment"])) { $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $usersinformed = array(); $groupsinformed = array(); diff --git a/op/op.UpdateDocument.php b/op/op.UpdateDocument.php index 654c192c2..c8fa1759b 100644 --- a/op/op.UpdateDocument.php +++ b/op/op.UpdateDocument.php @@ -314,7 +314,7 @@ default: $params['username'] = $user->getFullName(); $params['comment'] = $document->getComment(); $params['version_comment'] = $content->getComment(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -337,7 +337,7 @@ default: $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); foreach($workflow->getNextTransitions($workflow->getInitState()) as $ntransition) { foreach($ntransition->getUsers() as $tuser) { @@ -360,7 +360,7 @@ default: $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -381,7 +381,7 @@ default: $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -402,7 +402,7 @@ default: $params['name'] = $document->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.UpdateDocument2.php b/op/op.UpdateDocument2.php index 88aa4d3c5..342160127 100644 --- a/op/op.UpdateDocument2.php +++ b/op/op.UpdateDocument2.php @@ -184,7 +184,7 @@ if( move_uploaded_file( $source_file_path, $target_file_path ) ) { $params['username'] = $user->getFullName(); $params['comment'] = $document->getComment(); $params['version_comment'] = $contentResult->getContent()->getComment(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -209,7 +209,7 @@ if( move_uploaded_file( $source_file_path, $target_file_path ) ) { $params['name'] = $document->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.UsrMgr.php b/op/op.UsrMgr.php index e955f3a85..403c64cff 100644 --- a/op/op.UsrMgr.php +++ b/op/op.UsrMgr.php @@ -293,7 +293,7 @@ else if ($action == "sendlogindata" && $settings->_enableEmail) { $params['username'] = $newuser->getFullName(); $params['login'] = $newuser->getLogin(); $params['comment'] = $comment; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php"; + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewFolder.php"; $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toIndividual($user, $newuser, $subject, $message, $params); From df095c63a34fb16f4c37d29236d71bf0a5e6632c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 10:06:48 +0100 Subject: [PATCH 299/467] use getBaseUrl() --- op/op.CheckInDocument.php | 10 +++++----- op/op.ReviewDocument.php | 2 +- op/op.ReviseDocument.php | 4 ++-- op/op.SetRecipients.php | 8 ++++---- op/op.SetRevisors.php | 8 ++++---- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/op/op.CheckInDocument.php b/op/op.CheckInDocument.php index 37ee48e08..fd0e40ead 100644 --- a/op/op.CheckInDocument.php +++ b/op/op.CheckInDocument.php @@ -276,7 +276,7 @@ else $params['username'] = $user->getFullName(); $params['comment'] = $document->getComment(); $params['version_comment'] = $contentResult->getContent()->getComment(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); @@ -296,7 +296,7 @@ else $params['username'] = $user->getFullName(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); foreach($workflow->getNextTransitions($workflow->getInitState()) as $ntransition) { foreach($ntransition->getUsers() as $tuser) { @@ -319,7 +319,7 @@ else $params['version'] = $contentResult->getContent()->getVersion(); $params['comment'] = $comment; $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -340,7 +340,7 @@ else $params['version'] = $contentResult->getContent()->getVersion(); $params['comment'] = $comment; $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -410,7 +410,7 @@ else $params['name'] = $document->getName(); $params['folder_path'] = $folder->getFolderPathPlain(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $notifyList["users"], $subject, $message, $params); diff --git a/op/op.ReviewDocument.php b/op/op.ReviewDocument.php index fd4b9e050..d78d45ecd 100644 --- a/op/op.ReviewDocument.php +++ b/op/op.ReviewDocument.php @@ -144,7 +144,7 @@ if($olddocstatus['status'] != $newdocstatus['status']) { $params['folder_path'] = $folder->getFolderPathPlain(); $params['status'] = getReviewStatusText(S_REJECTED); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); diff --git a/op/op.ReviseDocument.php b/op/op.ReviseDocument.php index d3fb84d2c..5b43e6d0d 100644 --- a/op/op.ReviseDocument.php +++ b/op/op.ReviseDocument.php @@ -109,7 +109,7 @@ if ($_POST["revisionType"] == "ind" || $_POST["revisionType"] == "grp") { $params['status'] = getRevisionStatusText($_POST["revisionStatus"]); $params['comment'] = strip_tags($_POST['comment']); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); @@ -133,7 +133,7 @@ if($olddocstatus['status'] != $newdocstatus['status']) { $params['folder_path'] = $folder->getFolderPathPlain(); $params['status'] = getRevisionStatusText(S_REJECTED); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $notifier->toList($user, $nl["users"], $subject, $message, $params); diff --git a/op/op.SetRecipients.php b/op/op.SetRecipients.php index 3ccf5918e..70e10450e 100644 --- a/op/op.SetRecipients.php +++ b/op/op.SetRecipients.php @@ -137,7 +137,7 @@ foreach ($pIndRev as $p) { $params['comment'] = $content->getComment(); $params['recipient'] = $accessIndex["i"][$p]->getFullName(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -196,7 +196,7 @@ if (count($receiptIndex["i"]) > 0) { $params['comment'] = $content->getComment(); $params['recipient'] = $accessIndex["i"][$rx]->getFullName(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -244,7 +244,7 @@ foreach ($pGrpRev as $p) { $params['comment'] = $content->getComment(); $params['recipient'] = $accessIndex["g"][$p]->getName(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -299,7 +299,7 @@ if (count($receiptIndex["g"]) > 0) { $params['comment'] = $content->getComment(); $params['recipient'] = $accessIndex["g"][$rx]->getName(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; diff --git a/op/op.SetRevisors.php b/op/op.SetRevisors.php index 60f963da2..3c782d23f 100644 --- a/op/op.SetRevisors.php +++ b/op/op.SetRevisors.php @@ -135,7 +135,7 @@ foreach ($pIndRev as $p) { $params['comment'] = $content->getComment(); $params['revisor'] = $accessIndex["i"][$p]->getFullName(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -194,7 +194,7 @@ if (count($revisionIndex["i"]) > 0) { $params['comment'] = $content->getComment(); $params['revisor'] = $accessIndex["i"][$rx]->getFullName(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -242,7 +242,7 @@ foreach ($pGrpRev as $p) { $params['comment'] = $content->getComment(); $params['revisor'] = $accessIndex["g"][$p]->getName(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; @@ -297,7 +297,7 @@ if (count($revisionIndex["g"]) > 0) { $params['comment'] = $content->getComment(); $params['revisor'] = $accessIndex["g"][$rx]->getName(); $params['username'] = $user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; From 5fdae931b13aecfb742e4b83c7d10e661c8e730d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 10:22:47 +0100 Subject: [PATCH 300/467] use getBaseUrl() --- inc/inc.ClassEmailUtils.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/inc.ClassEmailUtils.php b/inc/inc.ClassEmailUtils.php index a36672304..e1882290b 100644 --- a/inc/inc.ClassEmailUtils.php +++ b/inc/inc.ClassEmailUtils.php @@ -42,7 +42,7 @@ class SeedDMS_EmailUtils { return(str_replace( array('###SITENAME###', '###HTTP_ROOT###', '###URL_PREFIX###'), - array($settings->_siteName, $settings->_httpRoot, "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot), + array($settings->_siteName, $settings->_httpRoot, getBaseUrl().$settings->_httpRoot), $text)); } /* }}} */ From 1593ca5f345ed4f0f2a9324003c1d73b9590acfe Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 13:48:50 +0100 Subject: [PATCH 301/467] removeFromProcess() can transfer to new user for all processes --- SeedDMS_Core/Core/inc.ClassUser.php | 68 ++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassUser.php b/SeedDMS_Core/Core/inc.ClassUser.php index 9b3cab382..5c0870e62 100644 --- a/SeedDMS_Core/Core/inc.ClassUser.php +++ b/SeedDMS_Core/Core/inc.ClassUser.php @@ -897,27 +897,34 @@ class SeedDMS_Core_User { /* {{{ */ /** * Remove user from all processes * - * This method adds another log entry to the reviews and approvals + * This method adds another log entry to the reviews, approvals, receptions, revisions, * which indicates the user has been deleted from the process. By default it will - * do so for each review/approval regardless of its current state unless + * do so for each review/approval/reception/revision regardless of its current state unless * the user has been removed already (status=-2). So even - * reviews/approvals already processed by the user will be added the log + * reviews/approvals/receptions/revisions already processed by the user will be added the log * entry. Only if the last log entry was a removal already, it will not be * added a second time. + * This behaviour can be changed by passing a list of states in the optional + * argument $states. Only reviews, etc. in the given state will be affected. + * This allows to remove the user only if the review, etc. has not been done + * (state = 0). + * + * The last optional parameter $newuser is for replacing the user currently in + * charge by another user. * * @param object $user the user doing the removal (needed for entry in * review and approve log). * @param array $states remove user only from reviews/approvals in one of the states * e.g. if passing array('review'=>array(0)), the method will operate on * reviews which has not been touched yet. + * @param object user who is take over the processes * @return boolean true on success or false in case of an error */ private function __removeFromProcesses($user, $states = array(), $newuser=null) { /* {{{ */ $db = $this->_dms->getDB(); + /* Get a list of all reviews, even those of older document versions */ $reviewStatus = $this->getReviewStatus(); -// var_dump($newuser); -// print_r($reviewStatus);exit; $db->startTransaction(); foreach ($reviewStatus["indstatus"] as $ri) { if($ri['status'] != -2 && (!isset($states['review']) || in_array($ri['status'], $states['review']))) { @@ -945,41 +952,92 @@ class SeedDMS_Core_User { /* {{{ */ } $db->commitTransaction(); + /* Get a list of all approvals, even those of older document versions */ $approvalStatus = $this->getApprovalStatus(); + $db->startTransaction(); foreach ($approvalStatus["indstatus"] as $ai) { if($ai['status'] != -2 && (!isset($states['approval']) || in_array($ai['status'], $states['approval']))) { $queryStr = "INSERT INTO `tblDocumentApproveLog` (`approveID`, `status`, `comment`, `date`, `userID`) ". "VALUES ('". $ai["approveID"] ."', '-2', 'Approver removed from process', ".$db->getCurrentDatetime().", '". $user->getID() ."')"; $res=$db->getResult($queryStr); if(!$res) { + $db->rollbackTransaction(); return false; } + /* Only approvals not done already can be transferred to a new user */ + if($newuser && $ai['status'] == 0) { + if($doc = $this->_dms->getDocument($ai['documentID'])) { + if($version = $doc->getContentByVersion($ai['version'])) { + $ret = $version->addIndReviewer($newuser, $user); + /* returns -3 if the user is already a reviewer */ + if($ret != 0 && $ret != -3) { + $db->rollbackTransaction(); + return false; + } + } + } + } } } + $db->commitTransaction(); + /* Get a list of all receptions, even those of older document versions */ $receiptStatus = $this->getReceiptStatus(); + $db->startTransaction(); foreach ($receiptStatus["indstatus"] as $ri) { if($ri['status'] != -2 && (!isset($states['receipt']) || in_array($ri['status'], $states['receipt']))) { $queryStr = "INSERT INTO `tblDocumentReceiptLog` (`receiptID`, `status`, `comment`, `date`, `userID`) ". "VALUES ('". $ri["receiptID"] ."', '-2', 'Recipient removed from process', ".$db->getCurrentDatetime().", '". $user->getID() ."')"; $res=$db->getResult($queryStr); if(!$res) { + $db->rollbackTransaction(); return false; } + /* Only receptions not done already can be transferred to a new user */ + if($newuser && $ri['status'] == 0) { + if($doc = $this->_dms->getDocument($ri['documentID'])) { + if($version = $doc->getContentByVersion($ri['version'])) { + $ret = $version->addIndRecipient($newuser, $user); + /* returns -3 if the user is already a recipient */ + if($ret != 0 && $ret != -3) { + $db->rollbackTransaction(); + return false; + } + } + } + } } } + $db->commitTransaction(); + /* Get a list of all revisions, even those of older document versions */ $revisionStatus = $this->getRevisionStatus(); + $db->startTransaction(); foreach ($revisionStatus["indstatus"] as $ri) { if($ri['status'] != -2 && (!isset($states['revision']) || in_array($ri['status'], $states['revision']))) { $queryStr = "INSERT INTO `tblDocumentRevisionLog` (`revisionID`, `status`, `comment`, `date`, `userID`) ". "VALUES ('". $ri["revisionID"] ."', '-2', 'Revisor removed from process', ".$db->getCurrentDatetime().", '". $user->getID() ."')"; $res=$db->getResult($queryStr); if(!$res) { + $db->rollbackTransaction(); return false; } + /* Only revisions not done already can be transferred to a new user */ + if($newuser && $ri['status'] == 0) { + if($doc = $this->_dms->getDocument($ri['documentID'])) { + if($version = $doc->getContentByVersion($ri['version'])) { + $ret = $version->addIndRevisor($newuser, $user); + /* returns -3 if the user is already a revisor */ + if($ret != 0 && $ret != -3) { + $db->rollbackTransaction(); + return false; + } + } + } + } } } + $db->commitTransaction(); return true; } /* }}} */ From 769b9e5beb7407234ab8dd6232cd20cdb0151be3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 14:07:19 +0100 Subject: [PATCH 302/467] add changes for 6.0.7 --- CHANGELOG | 3 ++- SeedDMS_Core/package.xml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 393743349..7665534b4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,13 +3,14 @@ -------------------------------------------------------------------------------- - fix editing of document attachments - make receipt summary look like approval/review summary -- merge changes up to 5.1.12 +- merge changes up to 5.1.14 - do not show the updating user in a revision workflow if the status is 0 this is misleading because the user starting the revision workflow is the one first accessing the document - rejection of document receipts are turned off by default, but can be turned on in the settings - documents in DocumentChooser are sorted by name +- instead of just removing a user from all processes it can be replace by a new user -------------------------------------------------------------------------------- Changes in version 6.0.6 diff --git a/SeedDMS_Core/package.xml b/SeedDMS_Core/package.xml index 9447260fe..da9eaf00c 100644 --- a/SeedDMS_Core/package.xml +++ b/SeedDMS_Core/package.xml @@ -28,6 +28,7 @@ SeedDMS_Core_Document::getTimeline() returns revision only for latest content add callback onSetStatus in SeedDMS_Core_DocumentContent::setStatus() add new list type 'DueRevision' in SeedDMS_Core_DMS::getDocumentList() a revision can also be started if some revisors have already reviewed the document +remove a user from all its process can also be used to set a new user From ca7bb77386a2ce3317e0358a7bf99cd40c8846a5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 14:27:30 +0100 Subject: [PATCH 303/467] better formating of checkboxes --- views/bootstrap/class.RemoveUserFromProcesses.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/views/bootstrap/class.RemoveUserFromProcesses.php b/views/bootstrap/class.RemoveUserFromProcesses.php index ec202ce24..c28dcdcfd 100644 --- a/views/bootstrap/class.RemoveUserFromProcesses.php +++ b/views/bootstrap/class.RemoveUserFromProcesses.php @@ -91,7 +91,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { 'checked'=>true ), array( - 'field_wrap' => array('', ' '.getMLText('reviews_not_touched_latest', array('no_reviews' => $cr["0"]))) + 'field_wrap' => array('") ) ); ?> @@ -108,7 +108,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { 'checked'=>true ), array( - 'field_wrap' => array('', ' '.getMLText('reviews_accepted_latest', array('no_reviews' => $cr["1"]))) + 'field_wrap' => array('") ) ); ?> @@ -125,7 +125,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { 'checked'=>true ), array( - 'field_wrap' => array('', ' '.getMLText('reviews_rejected_latest', array('no_reviews' => $cr["-1"]))) + 'field_wrap' => array('") ) ); ?> @@ -143,7 +143,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { 'checked'=>true ), array( - 'field_wrap' => array('', ' '.getMLText('approvals_not_touched_latest', array('no_approvals' => $ca["0"]))) + 'field_wrap' => array('") ) ); ?> @@ -160,7 +160,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { 'checked'=>true ), array( - 'field_wrap' => array('', ' '.getMLText('approvals_accepted_latest', array('no_approvals' => $ca["1"]))) + 'field_wrap' => array('") ) ); ?> @@ -177,7 +177,7 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { 'checked'=>true ), array( - 'field_wrap' => array('', ' '.getMLText('approvals_rejected_latest', array('no_approvals' => $ca["-1"]))) + 'field_wrap' => array('") ) ); ?> From cbaa038c55ad375093a360d56104ceaa4085603d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Nov 2019 15:01:36 +0100 Subject: [PATCH 304/467] use formField() instead of plain html --- .../class.RemoveUserFromProcesses.php | 154 ++++++++++++------ 1 file changed, 105 insertions(+), 49 deletions(-) diff --git a/views/bootstrap/class.RemoveUserFromProcesses.php b/views/bootstrap/class.RemoveUserFromProcesses.php index 1fd49ea71..fa0ef2c53 100644 --- a/views/bootstrap/class.RemoveUserFromProcesses.php +++ b/views/bootstrap/class.RemoveUserFromProcesses.php @@ -230,68 +230,124 @@ class SeedDMS_View_RemoveUserFromProcesses extends SeedDMS_Bootstrap_Style { -
          -
          - -
          -
          +formField( + getMLText('receipts_not_touched', array('no_receipts' => count($tmpb["0"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[receipt][]', + 'value'=>'0', + 'checked'=>true + ), + array( + 'field_wrap' => array('") + ) + ); +?> -
          -
          - -
          -
          +formField( + getMLText('receipts_accepted', array('no_receipts' => count($tmpb["1"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[receipt][]', + 'value'=>'1', + 'checked'=>true + ), + array( + 'field_wrap' => array('") + ) + ); +?> -
          -
          - -
          -
          +formField( + getMLText('receipts_rejected', array('no_receipts' => count($tmpb["-1"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[receipt][]', + 'value'=>'-1', + 'checked'=>true + ), + array( + 'field_wrap' => array('") + ) + ); +?> -
          -
          - -
          -
          +formField( + getMLText('revisions_not_touched', array('no_revisions' => count($tmpc["0"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[revision][]', + 'value'=>'0', + 'checked'=>true + ), + array( + 'field_wrap' => array('") + ) + ); +?> -
          -
          - -
          -
          +formField( + getMLText('revisions_pending', array('no_revisions' => count($tmpc["-3"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[revision][]', + 'value'=>'-3', + 'checked'=>true + ), + array( + 'field_wrap' => array('") + ) + ); +?> -
          -
          - -
          -
          +formField( + getMLText('revisions_accepted', array('no_revisions' => count($tmpc["1"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[revision][]', + 'value'=>'1', + 'checked'=>true + ), + array( + 'field_wrap' => array('") + ) + ); +?> -
          -
          - -
          -
          +formField( + getMLText('revisions_rejected', array('no_revisions' => count($tmpc["-1"]))), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'status[revision][]', + 'value'=>'-1', + 'checked'=>true + ), + array( + 'field_wrap' => array('") + ) + ); +?> Date: Wed, 4 Dec 2019 19:31:02 +0100 Subject: [PATCH 305/467] menu item does not need a href if it has children --- views/bootstrap/class.Bootstrap.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index ef4d5adc0..18fae8448 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -473,14 +473,14 @@ background-image: linear-gradient(to bottom, #882222, #111111);; foreach($menuitems as $menuitem) { if(!empty($menuitem['children'])) { echo "
        • \n"; - echo " ".getMLText($menuitem['label'])." \n"; + echo " ".getMLText($menuitem['label'])." \n"; echo " \n"; } else { - echo "
        • ".getMLText($menuitem['label'])."
        • "; + echo "
        • ".getMLText($menuitem['label'])."
        • "; } } } /* }}} */ From 6d604d2d60c468b95471492d293f70d78f3091dd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 6 Dec 2019 15:23:38 +0100 Subject: [PATCH 306/467] set icon for video/webm --- views/bootstrap/class.Bootstrap.php | 1 + 1 file changed, 1 insertion(+) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 18fae8448..7af9f1bb4 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -983,6 +983,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $icons["rar"] = "package.svg"; $icons["mpg"] = "video.svg"; $icons["avi"] = "video.svg"; + $icons["webm"] = "video.svg"; $icons["ods"] = "office-spreadsheet.svg"; $icons["ots"] = "office-spreadsheet.svg"; $icons["sxc"] = "office-spreadsheet.svg"; From 583ce13bfc778976c978d0e938a5a79177048af7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 10 Dec 2019 06:20:11 +0100 Subject: [PATCH 307/467] set video icon for .mkv files --- views/bootstrap/class.Bootstrap.php | 1 + 1 file changed, 1 insertion(+) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 7af9f1bb4..75f75ffa1 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -984,6 +984,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $icons["mpg"] = "video.svg"; $icons["avi"] = "video.svg"; $icons["webm"] = "video.svg"; + $icons["mkv"] = "video.svg"; $icons["ods"] = "office-spreadsheet.svg"; $icons["ots"] = "office-spreadsheet.svg"; $icons["sxc"] = "office-spreadsheet.svg"; From 658d00fe42d01f24d581e69e965c12a5aca4a008 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 10 Dec 2019 06:20:31 +0100 Subject: [PATCH 308/467] allow preview of video/x-matroska videos --- views/bootstrap/class.ViewDocument.php | 1 + 1 file changed, 1 insertion(+) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 27461d1a1..c77a156ea 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -370,6 +370,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { case 'video/avi': case 'video/msvideo': case 'video/x-msvideo': + case 'video/x-matroska': $this->contentHeading(getMLText("preview")); ?>
          "; $content .= "\n\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; print "\n"; $list = $extmgr->getExtensionList(); foreach($list as $re) { @@ -279,7 +316,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { echo ""; echo ""; echo ""; - } + } echo "
          "; $content .= "
          "; - if($subFolder->getAccessMode($user) >= M_ALL) { + $subFolderAccessMode = $subFolder->getAccessMode($user); + if($subFolderAccessMode >= M_ALL) { $content .= $this->printDeleteFolderButton($subFolder, 'splash_rm_folder', true); } else { $content .= ''; } - if($subFolder->getAccessMode($user) >= M_READWRITE) { + if($subFolderAccessMode >= M_READWRITE) { $content .= ''; } else { $content .= ''; From 167c8a41e3bf96da42a45a4dde776976beb40068 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 13 Dec 2019 14:27:58 +0100 Subject: [PATCH 314/467] allow 4 arguments passed to hook --- inc/inc.ClassControllerCommon.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/inc/inc.ClassControllerCommon.php b/inc/inc.ClassControllerCommon.php index 618fc1ca3..4c3749f54 100644 --- a/inc/inc.ClassControllerCommon.php +++ b/inc/inc.ClassControllerCommon.php @@ -203,6 +203,9 @@ class SeedDMS_Controller_Common { foreach($GLOBALS['SEEDDMS_HOOKS']['controller'][lcfirst($tmp)] as $hookObj) { if (method_exists($hookObj, $hook)) { switch(func_num_args()) { + case 4: + $result = $hookObj->$hook($this, func_get_arg(1), func_get_arg(2), func_get_arg(3)); + break; case 3: $result = $hookObj->$hook($this, func_get_arg(1), func_get_arg(2)); break; From d27d4f118d0cf6cb9021663801184d2c6bb643c1 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 13 Dec 2019 14:59:23 +0100 Subject: [PATCH 315/467] add entries for 5.1.14 --- CHANGELOG | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 6fae41425..91805b81b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,8 +2,11 @@ Changes in version 5.1.14 -------------------------------------------------------------------------------- - allow mimetype to specify documents which can be edited online -- show number of indexing tasks in bar +- show number of indexing tasks in progress bar - fix comparison of last indexing time with creation date of document content +- new hooks leftContentPre and leftContentPost +- minimize sql queries when fetching sub folders and documents of a folder +- custom attributes can be validated in a hook -------------------------------------------------------------------------------- Changes in version 5.1.13 From a0661536b331ff6f057722d5b3bf7a01c8407482 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 13 Dec 2019 15:00:04 +0100 Subject: [PATCH 316/467] move attribute validation into controller and call hook --- controllers/class.AddDocument.php | 29 +++++++++++++++++++++++++++ controllers/class.AddSubFolder.php | 16 +++++++++++++++ controllers/class.EditDocument.php | 32 ++++++++++++++++++------------ controllers/class.EditFolder.php | 5 +++++ op/op.AddDocument.php | 14 ++++++++++++- op/op.AddSubFolder.php | 2 ++ op/op.EditDocument.php | 10 ++++++++-- op/op.EditFolder.php | 10 ++++++++-- 8 files changed, 100 insertions(+), 18 deletions(-) diff --git a/controllers/class.AddDocument.php b/controllers/class.AddDocument.php index ff61cafaf..1d9b6393a 100644 --- a/controllers/class.AddDocument.php +++ b/controllers/class.AddDocument.php @@ -56,7 +56,36 @@ class SeedDMS_Controller_AddDocument extends SeedDMS_Controller_Common { $reqversion = $this->getParam('reqversion'); $version_comment = $this->getParam('versioncomment'); $attributes = $this->getParam('attributes'); + foreach($attributes as $attrdefid=>$attribute) { + if($attrdef = $dms->getAttributeDefinition($attrdefid)) { + if(false === $this->callHook('validateAttribute', $attrdef, $attribute)) { + return false; + } + if($attribute) { + if(!$attrdef->validate($attribute)) { + $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); + return false; + } + } elseif($attrdef->getMinValues() > 0) { + $this->errormsg = array("attr_min_values", array("attrname"=>$attrdef->getName())); + return false; + } + } + } $attributes_version = $this->getParam('attributesversion'); + foreach($attributes_version as $attrdefid=>$attribute) { + if($attrdef = $dms->getAttributeDefinition($attrdefid)) { + if(false === $this->callHook('validateAttribute', $attrdef, $attribute)) { + return false; + } + if($attribute) { + if(!$attrdef->validate($attribute)) { + $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); + return false; + } + } + } + } $workflow = $this->getParam('workflow'); $notificationgroups = $this->getParam('notificationgroups'); $notificationusers = $this->getParam('notificationusers'); diff --git a/controllers/class.AddSubFolder.php b/controllers/class.AddSubFolder.php index 0d6582855..71f86f5b6 100644 --- a/controllers/class.AddSubFolder.php +++ b/controllers/class.AddSubFolder.php @@ -40,6 +40,22 @@ class SeedDMS_Controller_AddSubFolder extends SeedDMS_Controller_Common { $comment = $this->getParam('comment'); $sequence = $this->getParam('sequence'); $attributes = $this->getParam('attributes'); + foreach($attributes as $attrdefid=>$attribute) { + if($attrdef = $dms->getAttributeDefinition($attrdefid)) { + if(false === $this->callHook('validateAttribute', $attrdef, $attribute)) { + return false; + } + if($attribute) { + if(!$attrdef->validate($attribute)) { + $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); + return false; + } + } elseif($attrdef->getMinValues() > 0) { + $this->errormsg = array("attr_min_values", array("attrname"=>$attrdef->getName())); + return false; + } + } + } $notificationgroups = $this->getParam('notificationgroups'); $notificationusers = $this->getParam('notificationusers'); diff --git a/controllers/class.EditDocument.php b/controllers/class.EditDocument.php index 6d8714df4..d84ceae8d 100644 --- a/controllers/class.EditDocument.php +++ b/controllers/class.EditDocument.php @@ -116,22 +116,28 @@ class SeedDMS_Controller_EditDocument extends SeedDMS_Controller_Common { $oldattributes = $document->getAttributes(); if($attributes) { foreach($attributes as $attrdefid=>$attribute) { - $attrdef = $dms->getAttributeDefinition($attrdefid); - if($attribute) { - if(!$attrdef->validate($attribute)) { - $this->errormsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute); - return false; - } + if($attrdef = $dms->getAttributeDefinition($attrdefid)) { + if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { + if($attribute) { + if(!$attrdef->validate($attribute)) { + $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); + return false; + } - if(!isset($oldattributes[$attrdefid]) || $attribute != $oldattributes[$attrdefid]->getValue()) { - if(!$document->setAttributeValue($dms->getAttributeDefinition($attrdefid), $attribute)) + if(!isset($oldattributes[$attrdefid]) || $attribute != $oldattributes[$attrdefid]->getValue()) { + if(!$document->setAttributeValue($dms->getAttributeDefinition($attrdefid), $attribute)) + return false; + } + } elseif($attrdef->getMinValues() > 0) { + $this->errormsg = array("attr_min_values", array("attrname"=>$attrdef->getName())); + } elseif(isset($oldattributes[$attrdefid])) { + if(!$document->removeAttribute($dms->getAttributeDefinition($attrdefid))) + return false; + } + } else { + if($ret === false) return false; } - } elseif($attrdef->getMinValues() > 0) { - $this->errormsg = getMLText("attr_min_values", array("attrname"=>$attrdef->getName())); - } elseif(isset($oldattributes[$attrdefid])) { - if(!$document->removeAttribute($dms->getAttributeDefinition($attrdefid))) - return false; } } } diff --git a/controllers/class.EditFolder.php b/controllers/class.EditFolder.php index f41399fe5..02c6d1163 100644 --- a/controllers/class.EditFolder.php +++ b/controllers/class.EditFolder.php @@ -51,6 +51,7 @@ class SeedDMS_Controller_EditFolder extends SeedDMS_Controller_Common { if($attributes) { foreach($attributes as $attrdefid=>$attribute) { $attrdef = $dms->getAttributeDefinition($attrdefid); + if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { if($attribute) { if(!$attrdef->validate($attribute)) { $this->errormsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute); @@ -67,6 +68,10 @@ class SeedDMS_Controller_EditFolder extends SeedDMS_Controller_Common { if(!$folder->removeAttribute($dms->getAttributeDefinition($attrdefid))) return false; } + } else { + if($ret === false) + return false; + } } } foreach($oldattributes as $attrdefid=>$oldattribute) { diff --git a/op/op.AddDocument.php b/op/op.AddDocument.php index 5cc09cc88..a82105aa5 100644 --- a/op/op.AddDocument.php +++ b/op/op.AddDocument.php @@ -93,6 +93,7 @@ if(isset($_POST["attributes"])) $attributes = $_POST["attributes"]; else $attributes = array(); +/* Has been moved to controller foreach($attributes as $attrdefid=>$attribute) { if($attrdef = $dms->getAttributeDefinition($attrdefid)) { if($attribute) { @@ -105,11 +106,13 @@ foreach($attributes as $attrdefid=>$attribute) { } } } + */ if(isset($_POST["attributes_version"])) $attributes_version = $_POST["attributes_version"]; else $attributes_version = array(); +/* Has been moved to controller foreach($attributes_version as $attrdefid=>$attribute) { $attrdef = $dms->getAttributeDefinition($attrdefid); if($attribute) { @@ -119,6 +122,7 @@ foreach($attributes_version as $attrdefid=>$attribute) { } } } + */ $reqversion = (int)$_POST["reqversion"]; if ($reqversion<1) $reqversion=1; @@ -387,7 +391,15 @@ for ($file_num=0;$file_numsetParam('defaultaccessdocs', $settings->_defaultAccessDocs); if(!$document = $controller->run()) { - UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText($controller->getErrorMsg())); + $err = $controller->getErrorMsg(); + if(is_string($err)) + $errmsg = getMLText($err); + elseif(is_array($err)) { + $errmsg = getMLText($err[0], $err[1]); + } else { + $errmsg = $err; + } + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),$errmsg); } else { // Send notification to subscribers of folder. if($notifier) { diff --git a/op/op.AddSubFolder.php b/op/op.AddSubFolder.php index f0284d1cb..19012dd46 100644 --- a/op/op.AddSubFolder.php +++ b/op/op.AddSubFolder.php @@ -67,6 +67,7 @@ if(isset($_POST["attributes"])) $attributes = $_POST["attributes"]; else $attributes = array(); +/* foreach($attributes as $attrdefid=>$attribute) { $attrdef = $dms->getAttributeDefinition($attrdefid); if($attribute) { @@ -78,6 +79,7 @@ foreach($attributes as $attrdefid=>$attribute) { UI::exitError(getMLText("folder_title", array("foldername" => $document->getName())),getMLText("attr_min_values", array("attrname"=>$attrdef->getName()))); } } + */ /* Check if additional notification shall be added */ $notusers = array(); diff --git a/op/op.EditDocument.php b/op/op.EditDocument.php index 5c3a66d4f..a8ef4fbc4 100644 --- a/op/op.EditDocument.php +++ b/op/op.EditDocument.php @@ -127,9 +127,15 @@ $controller->setParam('expires', $expires); $controller->setParam('sequence', $sequence); $controller->setParam('attributes', $attributes); if(!$controller->run()) { - if($controller->getErrorMsg()) { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())), $controller->getErrorMsg()); + $err = $controller->getErrorMsg(); + if(is_string($err)) + $errmsg = getMLText($err); + elseif(is_array($err)) { + $errmsg = getMLText($err[0], $err[1]); + } else { + $errmsg = $err; } + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())), $errmsg); } if ($oldname != $name) { diff --git a/op/op.EditFolder.php b/op/op.EditFolder.php index 050d6b3f5..6ea93f654 100644 --- a/op/op.EditFolder.php +++ b/op/op.EditFolder.php @@ -80,9 +80,15 @@ $controller->setParam('comment', $comment); $controller->setParam('sequence', $sequence); $controller->setParam('attributes', $attributes); if(!$controller->run()) { - if($controller->getErrorMsg()) { - UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())), $controller->getErrorMsg()); + $err = $controller->getErrorMsg(); + if(is_string($err)) + $errmsg = getMLText($err); + elseif(is_array($err)) { + $errmsg = getMLText($err[0], $err[1]); + } else { + $errmsg = $err; } + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())), $errmsg); } if($oldname != $name) { From 058fc1217e21263ed0d03295fd6548b6e46756f1 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 13 Dec 2019 17:39:05 +0100 Subject: [PATCH 317/467] fix validation of attributes --- controllers/class.AddDocument.php | 16 ++++++++++------ controllers/class.AddSubFolder.php | 8 +++++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/controllers/class.AddDocument.php b/controllers/class.AddDocument.php index 1d9b6393a..2b9942c86 100644 --- a/controllers/class.AddDocument.php +++ b/controllers/class.AddDocument.php @@ -58,9 +58,7 @@ class SeedDMS_Controller_AddDocument extends SeedDMS_Controller_Common { $attributes = $this->getParam('attributes'); foreach($attributes as $attrdefid=>$attribute) { if($attrdef = $dms->getAttributeDefinition($attrdefid)) { - if(false === $this->callHook('validateAttribute', $attrdef, $attribute)) { - return false; - } + if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { if($attribute) { if(!$attrdef->validate($attribute)) { $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); @@ -70,20 +68,26 @@ class SeedDMS_Controller_AddDocument extends SeedDMS_Controller_Common { $this->errormsg = array("attr_min_values", array("attrname"=>$attrdef->getName())); return false; } + } else { + if($ret === false) + return false; + } } } $attributes_version = $this->getParam('attributesversion'); foreach($attributes_version as $attrdefid=>$attribute) { if($attrdef = $dms->getAttributeDefinition($attrdefid)) { - if(false === $this->callHook('validateAttribute', $attrdef, $attribute)) { - return false; - } + if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { if($attribute) { if(!$attrdef->validate($attribute)) { $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); return false; } } + } else { + if($ret === false) + return false; + } } } $workflow = $this->getParam('workflow'); diff --git a/controllers/class.AddSubFolder.php b/controllers/class.AddSubFolder.php index 71f86f5b6..539dcec12 100644 --- a/controllers/class.AddSubFolder.php +++ b/controllers/class.AddSubFolder.php @@ -42,9 +42,7 @@ class SeedDMS_Controller_AddSubFolder extends SeedDMS_Controller_Common { $attributes = $this->getParam('attributes'); foreach($attributes as $attrdefid=>$attribute) { if($attrdef = $dms->getAttributeDefinition($attrdefid)) { - if(false === $this->callHook('validateAttribute', $attrdef, $attribute)) { - return false; - } + if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) { if($attribute) { if(!$attrdef->validate($attribute)) { $this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute); @@ -54,6 +52,10 @@ class SeedDMS_Controller_AddSubFolder extends SeedDMS_Controller_Common { $this->errormsg = array("attr_min_values", array("attrname"=>$attrdef->getName())); return false; } + } else { + if($ret === false) + return false; + } } } $notificationgroups = $this->getParam('notificationgroups'); From c332e0393b0591df1357b57c35d67c670aac5811 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 19 Dec 2019 09:03:59 +0100 Subject: [PATCH 318/467] add new config variable noDocumentFormFields used for hiding some fields like comment, keywords, categories, ... --- inc/inc.ClassSettings.php | 6 ++ op/op.Settings.php | 4 ++ out/out.AddDocument.php | 1 + out/out.EditDocument.php | 1 + views/bootstrap/class.AddDocument.php | 11 +++- views/bootstrap/class.EditDocument.php | 84 +++++++++++++++++++++----- views/bootstrap/class.Settings.php | 1 + 7 files changed, 92 insertions(+), 16 deletions(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 564f4adda..35ed72a4b 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -70,6 +70,9 @@ class Settings { /* {{{ */ var $_defaultAccessDocs = ''; // Strict form checking var $_strictFormCheck = false; + // list of form fields which are visible by default but can be explixitly + // turn off (comment, keywords, categories, sequence, expiration, owner + var $_noDocumentFormFields = array(); // Path to where SeedDMS is located var $_rootDir = null; // Path to SeedDMS_Core @@ -455,6 +458,8 @@ class Settings { /* {{{ */ $node = $xml->xpath('/configuration/site/edition'); $tab = $node[0]->attributes(); $this->_strictFormCheck = Settings::boolVal($tab["strictFormCheck"]); + if(trim(strval($tab["noDocumentFormFields"]))) + $this->_noDocumentFormFields = explode(',',strval($tab["noDocumentFormFields"])); $this->setViewOnlineFileTypesFromString(strval($tab["viewOnlineFileTypes"])); $this->setEditOnlineFileTypesFromString(strval($tab["editOnlineFileTypes"])); $this->_enableConverting = Settings::boolVal($tab["enableConverting"]); @@ -802,6 +807,7 @@ class Settings { /* {{{ */ // XML Path: /configuration/site/edition $node = $this->getXMLNode($xml, '/configuration/site', 'edition'); $this->setXMLAttributValue($node, "strictFormCheck", $this->_strictFormCheck); + $this->setXMLAttributValue($node, "noDocumentFormFields", implode(',', $this->_noDocumentFormFields)); $this->setXMLAttributValue($node, "viewOnlineFileTypes", $this->getViewOnlineFileTypesToString()); $this->setXMLAttributValue($node, "editOnlineFileTypes", $this->getEditOnlineFileTypesToString()); $this->setXMLAttributValue($node, "enableConverting", $this->_enableConverting); diff --git a/op/op.Settings.php b/op/op.Settings.php index ae396169a..be279b10f 100644 --- a/op/op.Settings.php +++ b/op/op.Settings.php @@ -76,6 +76,10 @@ if ($action == "saveSettings") // SETTINGS - SITE - EDITION $settings->_strictFormCheck = getBoolValue("strictFormCheck"); + if(empty($_POST["noDocumentFormFields"])) + $settings->_noDocumentFormFields = array(); + else + $settings->_noDocumentFormFields = $_POST["noDocumentFormFields"]; $settings->setViewOnlineFileTypesFromString($_POST["viewOnlineFileTypes"]); $settings->setEditOnlineFileTypesFromString($_POST["editOnlineFileTypes"]); $settings->_enableConverting = getBoolValue("enableConverting"); diff --git a/out/out.AddDocument.php b/out/out.AddDocument.php index 82a68ec8e..0cc16f138 100644 --- a/out/out.AddDocument.php +++ b/out/out.AddDocument.php @@ -56,6 +56,7 @@ if($settings->_quota > 0) { if($view) { $view->setParam('folder', $folder); $view->setParam('strictformcheck', $settings->_strictFormCheck); + $view->setParam('nodocumentformfields', $settings->_noDocumentFormFields); $view->setParam('enablelargefileupload', $settings->_enableLargeFileUpload); $view->setParam('enablemultiupload', $settings->_enableMultiUpload); $view->setParam('enableadminrevapp', $settings->_enableAdminRevApp); diff --git a/out/out.EditDocument.php b/out/out.EditDocument.php index a4cfd8e72..f7ffa2318 100644 --- a/out/out.EditDocument.php +++ b/out/out.EditDocument.php @@ -59,6 +59,7 @@ $accessop = new SeedDMS_AccessOperation($dms, $document, $user, $settings); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'folder'=>$folder, 'document'=>$document, 'attrdefs'=>$attrdefs, 'strictformcheck'=>$settings->_strictFormCheck, 'orderby'=>$settings->_sortFoldersDefault)); if($view) { + $view->setParam('nodocumentformfields', $settings->_noDocumentFormFields); $view->setParam('defaultposition', $settings->_defaultDocPosition); $view->setParam('accessobject', $accessop); $view($_GET); diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index 156ba0904..b97e45d08 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -154,6 +154,7 @@ $(document).ready(function() { $enableownerrevapp = $this->params['enableownerrevapp']; $enableselfrevapp = $this->params['enableselfrevapp']; $strictformcheck = $this->params['strictformcheck']; + $nodocumentformfields = $this->params['nodocumentformfields']; $dropfolderdir = $this->params['dropfolderdir']; $dropfolderfile = $this->params['dropfolderfile']; $workflowmode = $this->params['workflowmode']; @@ -202,6 +203,7 @@ $(document).ready(function() { 'required'=>false ) ); + if(!$nodocumentformfields || !in_array('comment', $nodocumentformfields)) $this->formField( getMLText("comment"), array( @@ -212,10 +214,12 @@ $(document).ready(function() { 'required'=>$strictformcheck ) ); + if(!$nodocumentformfields || !in_array('keywords', $nodocumentformfields)) $this->formField( getMLText("keywords"), $this->getKeywordChooserHtml('form1') ); + if(!$nodocumentformfields || !in_array('categories', $nodocumentformfields)) { $options = array(); $categories = $dms->getDocumentCategories(); foreach($categories as $category) { @@ -232,7 +236,11 @@ $(document).ready(function() { 'options'=>$options ) ); - $this->formField(getMLText("sequence"), $this->getSequenceChooser($folder->getDocuments('s')).($orderby != 's' ? "
          ".getMLText('order_by_sequence_off') : '')); + } + if(!$nodocumentformfields || !in_array('sequence', $nodocumentformfields)) { + $this->formField(getMLText("sequence"), $this->getSequenceChooser($folder->getDocuments('s')).($orderby != 's' ? "
          ".getMLText('order_by_sequence_off') : '')); + } + if(!$nodocumentformfields || !in_array('expires', $nodocumentformfields)) { if($presetexpiration) { if(!($expts = strtotime($presetexpiration))) $expts = false; @@ -259,6 +267,7 @@ $(document).ready(function() { getMLText("expires"), $this->getDateChooser(($expts ? date('Y-m-d', $expts) : ''), "expdate", $this->params['session']->getLanguage()) ); + } if($user->isAdmin()) { $options = array(); $allUsers = $dms->getAllUsers($sortusersinlist); diff --git a/views/bootstrap/class.EditDocument.php b/views/bootstrap/class.EditDocument.php index 937245c4b..c0a6977ca 100644 --- a/views/bootstrap/class.EditDocument.php +++ b/views/bootstrap/class.EditDocument.php @@ -71,6 +71,7 @@ $(document).ready( function() { $document = $this->params['document']; $attrdefs = $this->params['attrdefs']; $strictformcheck = $this->params['strictformcheck']; + $nodocumentformfields = $this->params['nodocumentformfields']; $orderby = $this->params['orderby']; $this->htmlAddHeader(''."\n", 'js'); @@ -101,21 +102,46 @@ $(document).ready( function() { 'required'=>true ) ); - $this->formField( - getMLText("comment"), - array( - 'element'=>'textarea', - 'name'=>'comment', - 'rows'=>4, - 'cols'=>80, - 'value'=>htmlspecialchars($document->getComment()), - 'required'=>$strictformcheck - ) - ); - $this->formField( - getMLText("keywords"), - $this->getKeywordChooserHtml('form1', $document->getKeywords()) - ); + if(!$nodocumentformfields || !in_array('comment', $nodocumentformfields)) { + $this->formField( + getMLText("comment"), + array( + 'element'=>'textarea', + 'name'=>'comment', + 'rows'=>4, + 'cols'=>80, + 'value'=>htmlspecialchars($document->getComment()), + 'required'=>$strictformcheck + ) + ); + } else { + $this->formField( + null, + array( + 'element'=>'input', + 'type'=>'hidden', + 'name'=>'comment', + 'value'=>htmlspecialchars($document->getComment()), + ) + ); + } + if(!$nodocumentformfields || !in_array('keywords', $nodocumentformfields)) { + $this->formField( + getMLText("keywords"), + $this->getKeywordChooserHtml('form1', $document->getKeywords()) + ); + } else { + $this->formField( + null, + array( + 'element'=>'input', + 'type'=>'hidden', + 'name'=>'keywords', + 'value'=>htmlspecialchars($document->getKeywords()), + ) + ); + } + if(!$nodocumentformfields || !in_array('categories', $nodocumentformfields)) { $options = array(); $categories = $dms->getDocumentCategories(); foreach($categories as $category) { @@ -132,6 +158,21 @@ $(document).ready( function() { 'options'=>$options ) ); + } else { + $categories = $document->getCategories(); + foreach($categories as $category) { + $this->formField( + null, + array( + 'element'=>'input', + 'type'=>'hidden', + 'name'=>'categories[]', + 'value'=>htmlspecialchars($category->getId()), + ) + ); + } + } + if(!$nodocumentformfields || !in_array('expires', $nodocumentformfields)) { $options = array(); $options[] = array('never', getMLText('does_not_expire')); $options[] = array('date', getMLText('expire_by_date'), $expdate != ''); @@ -152,9 +193,22 @@ $(document).ready( function() { getMLText("expires"), $this->getDateChooser($expdate, "expdate", $this->params['session']->getLanguage()) ); + } else { + $this->formField( + null, + array( + 'element'=>'input', + 'type'=>'hidden', + 'name'=>'expdate', + 'value'=>$expdate, + ) + ); + } + if(!$nodocumentformfields || !in_array('sequence', $nodocumentformfields)) { if ($folder->getAccessMode($user) > M_READ) { $this->formField(getMLText("sequence"), $this->getSequenceChooser($folder->getDocuments('s'), $document->getID()).($orderby != 's' ? "
          ".getMLText('order_by_sequence_off') : '')); } + } if($attrdefs) { foreach($attrdefs as $attrdef) { $arr = $this->callHook('editDocumentAttribute', $document, $attrdef); diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 5bf83d692..9ca469a16 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -286,6 +286,7 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); --> showConfigHeadline('settings_Edition'); ?> showConfigCheckbox('settings_strictFormCheck', 'strictFormCheck'); ?> +showConfigOption('settings_noDocumentFormFields', 'noDocumentFormFields', array('comment', 'keywords', 'categories', 'sequence', 'expires', 'version_comment'), true, true); ?> showConfigText('settings_viewOnlineFileTypes', 'viewOnlineFileTypes', 'array'); ?> showConfigText('settings_editOnlineFileTypes', 'editOnlineFileTypes', 'array'); ?> showConfigCheckbox('settings_enableConverting', 'enableConverting'); ?> From 223c44c96557720dea06b3a1585ef36f48b52e65 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 19 Dec 2019 09:07:02 +0100 Subject: [PATCH 319/467] various minor updates and new keys --- languages/ar_EG/lang.inc | 8 ++++++++ languages/bg_BG/lang.inc | 8 ++++++++ languages/ca_ES/lang.inc | 8 ++++++++ languages/cs_CZ/lang.inc | 12 ++++++++++-- languages/de_DE/lang.inc | 12 ++++++++++-- languages/el_GR/lang.inc | 12 ++++++++++-- languages/en_GB/lang.inc | 12 ++++++++++-- languages/es_ES/lang.inc | 8 ++++++++ languages/fr_FR/lang.inc | 8 ++++++++ languages/hr_HR/lang.inc | 14 +++++++++++--- languages/hu_HU/lang.inc | 12 ++++++++++-- languages/it_IT/lang.inc | 8 ++++++++ languages/ko_KR/lang.inc | 8 ++++++++ languages/lo_LA/lang.inc | 8 ++++++++ languages/nl_NL/lang.inc | 8 ++++++++ languages/pl_PL/lang.inc | 38 +++++++++++++++++++++++--------------- languages/pt_BR/lang.inc | 8 ++++++++ languages/ro_RO/lang.inc | 14 +++++++++++--- languages/ru_RU/lang.inc | 8 ++++++++ languages/sk_SK/lang.inc | 24 ++++++++++++++++-------- languages/sv_SE/lang.inc | 8 ++++++++ languages/tr_TR/lang.inc | 8 ++++++++ languages/uk_UA/lang.inc | 8 ++++++++ languages/zh_CN/lang.inc | 8 ++++++++ languages/zh_TW/lang.inc | 16 ++++++++++++---- 25 files changed, 243 insertions(+), 43 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index fe76d37c6..f5d76fb4b 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -454,6 +454,7 @@ URL: [url]', 'edit_folder_props' => 'تعديل مجلد', 'edit_group' => 'تعديل مجموعة', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '', 'edit_user' => 'تعديل المستخدم', @@ -601,6 +602,7 @@ URL: [url]', 'group_members' => 'أعضاء المجموعة', 'group_receipt_summary' => '', 'group_review_summary' => 'ملخص مراجعة المجموعة', +'group_revision_summary' => '', 'guest_login' => 'الدخول كضيف', 'guest_login_disabled' => 'دخول ضيف غير متاح.', 'hash' => '', @@ -804,6 +806,7 @@ Parent folder: [folder_path] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - مجلد جديد', 'new_user_image' => 'صورة جديدة', +'next_revision_abbr' => '', 'next_state' => 'حالة جديدة', 'nl_NL' => 'الهولندي', 'no' => 'لا', @@ -1033,6 +1036,7 @@ URL: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '', 'revisor_already_assigned' => '', 'revisor_already_removed' => '', @@ -1385,6 +1389,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => '', 'settings_Notification' => '', 'settings_notwritable' => 'ﻻ ﻲﻤﻜﻧ ﺢﻔﻇ ﺎﻠﺘﻛﻮﻴﻧ ﻸﻧ ﻢﻠﻓ ﺎﻠﺘﻛﻮﻴﻧ ﻎﻳﺭ ﻕﺎﺒﻟ ﻞﻠﻜﺗﺎﺑﺓ', @@ -1550,6 +1556,7 @@ URL: [url]', 'splash_edit_group' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => '', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1771,6 +1778,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'من خلال تلك العملية يمكنك انشاء ملف يحتوى معلومات الاصدار لمجمل مجلد النظام. بعد الانشاء كل ملف سيتم حفظه داخل المجلد الخاص به', 'versioning_info' => 'معلومات الاصدار', 'versiontolow' => '', +'version_comment' => '', 'version_deleted_email' => 'تم مسح الاصدار', 'version_deleted_email_body' => 'تم مسح الاصدار Document: [name] diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index a35fb8e69..5e6d58808 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -407,6 +407,7 @@ $text = array( 'edit_folder_props' => 'Редактирай папка', 'edit_group' => 'Редактирай група', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '', 'edit_user' => 'Редактирай потребител', @@ -530,6 +531,7 @@ $text = array( 'group_members' => 'Членове на групата', 'group_receipt_summary' => '', 'group_review_summary' => 'Сводка по рецензирането на групи', +'group_revision_summary' => '', 'guest_login' => 'Влез като гост', 'guest_login_disabled' => 'Входът като гост изключен', 'hash' => '', @@ -717,6 +719,7 @@ $text = array( 'new_subfolder_email_body' => '', 'new_subfolder_email_subject' => '', 'new_user_image' => 'Ново изображение', +'next_revision_abbr' => '', 'next_state' => 'Ново състояние', 'nl_NL' => 'Холандски', 'no' => 'Не', @@ -909,6 +912,7 @@ $text = array( 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '', 'revisor_already_assigned' => '', 'revisor_already_removed' => '', @@ -1248,6 +1252,8 @@ $text = array( 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'Още настройки. Логин по подразбиране: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Не е намерено', 'settings_Notification' => 'Настройка за известяване', 'settings_notwritable' => 'Конфигурацията не може да бъде съхранена, защото файлът на конфигурацията е само за четене.', @@ -1413,6 +1419,7 @@ $text = array( 'splash_edit_group' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => '', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1625,6 +1632,7 @@ $text = array( 'versioning_file_creation_warning' => 'Тази операция ще създаде файл с версия за всяка папка. След създаване файлът ще бъде съхранен в каталога на документите.', 'versioning_info' => 'Информация за версиите', 'versiontolow' => '', +'version_comment' => '', 'version_deleted_email' => 'Версията е премахната', 'version_deleted_email_body' => '', 'version_deleted_email_subject' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index d7b84ca99..6ade3b629 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -412,6 +412,7 @@ URL: [url]', 'edit_folder_props' => 'Editar directori', 'edit_group' => 'Editar grup...', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '', 'edit_user' => 'Editar usuari...', @@ -535,6 +536,7 @@ URL: [url]', 'group_members' => 'Membres del grup', 'group_receipt_summary' => '', 'group_review_summary' => 'Resum del grup revisor', +'group_revision_summary' => '', 'guest_login' => 'Accés com a invitat', 'guest_login_disabled' => 'El compte d\'invitat està deshabilitat.', 'hash' => '', @@ -722,6 +724,7 @@ URL: [url]', 'new_subfolder_email_body' => '', 'new_subfolder_email_subject' => '', 'new_user_image' => 'Nova imatge', +'next_revision_abbr' => '', 'next_state' => '', 'nl_NL' => 'Holandès', 'no' => 'No', @@ -914,6 +917,7 @@ URL: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '', 'revisor_already_assigned' => '', 'revisor_already_removed' => '', @@ -1253,6 +1257,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => '', 'settings_Notification' => '', 'settings_notwritable' => '', @@ -1418,6 +1424,7 @@ URL: [url]', 'splash_edit_group' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => '', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1630,6 +1637,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Amb aquesta operació podeu crear un fitxer que contingui la informació de versions d\'una carpeta del DMS completa. Després de la creació, tots els fitxers es guardaran a la carpeta de documents.', 'versioning_info' => 'Informació de versions', 'versiontolow' => '', +'version_comment' => '', 'version_deleted_email' => 'Versió eliminada', 'version_deleted_email_body' => '', 'version_deleted_email_subject' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 48e05feb7..93cbd0d66 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/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 (1527), kreml (579) +// Translators: Admin (1528), kreml (579) $text = array( '2_factor_auth' => 'dvoufaktorové ověření', @@ -485,6 +485,7 @@ Odkaz je platný do [valid]. 'edit_folder_props' => 'Upravit složku', 'edit_group' => 'Upravit skupinu', 'edit_online' => 'Upravit online', +'edit_online_warning' => '', 'edit_task' => 'Upravit úkol', 'edit_transmittal_props' => 'Upravit vlastnosti přenosu', 'edit_user' => 'Upravit uživatele', @@ -553,7 +554,7 @@ URL: [url]', 'extension_loading' => 'Načítání rozšíření', 'extension_manager' => 'Správa rozšíření', 'extension_mgr_installed' => 'Instalováno', -'extension_mgr_no_upload' => '', +'extension_mgr_no_upload' => 'Nahrání nového rozšíření není možné, jelikož do složky rozšíření nelze zapisovat.', 'extension_mgr_repository' => 'Dostupný', 'extension_version_list' => 'Verze', 'february' => 'Únor', @@ -639,6 +640,7 @@ URL: [url]', 'group_members' => 'Členové skupiny', 'group_receipt_summary' => 'Přehled potvrzení přijímání do skupiny', 'group_review_summary' => 'Souhrn recenzí skupiny', +'group_revision_summary' => '', 'guest_login' => 'Přihlásit se jako host', 'guest_login_disabled' => 'Přihlášení jako host je vypnuté.', 'hash' => 'Hash', @@ -842,6 +844,7 @@ Uživatel: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nová složka', 'new_user_image' => 'Nový obrázek', +'next_revision_abbr' => '', 'next_state' => 'Nový stav', 'nl_NL' => 'Holandština', 'no' => 'Ne', @@ -1107,6 +1110,7 @@ URL: [url]', 'revision_status' => 'Status revize', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Revizoři', 'revisor_already_assigned' => 'Uživatel je již přiřazen jako revizor.', 'revisor_already_removed' => 'Revizor byl již z revizního procesu odstraněn nebo již dokument revidoval.', @@ -1464,6 +1468,8 @@ Jméno: [username] 'settings_maxUploadSize' => 'Maximální velikost nahraných souborů', 'settings_maxUploadSize_desc' => 'Toto je maximální velikost nahraných souborů. Bude mít vliv na verze dokumentů a přílohy.', 'settings_more_settings' => 'Konfigurovat další nastavení. Výchozí přihlášení: admin / admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Nenalezeno', 'settings_Notification' => 'Nastavení upozornění', 'settings_notwritable' => 'Konfigurace nemůže být uložena, protože se do konfiguračního souboru nedá zapsat.', @@ -1629,6 +1635,7 @@ Jméno: [username] 'splash_edit_group' => 'Skupina uložena', 'splash_edit_role' => 'Role uložena', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Uživatel uložen', 'splash_error_add_to_transmittal' => 'Chyba při přidávání dokumentu k přenosu', 'splash_error_rm_download_link' => 'Chyba při odstranění odkazu ke stažení', @@ -1850,6 +1857,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Pomocí této operace můžete vytvořit soubor obsahující informace o verzování celé složky DMS. Po vytvoření bude každý soubor uložen uvnitř složky dokumentů.', 'versioning_info' => 'Info verzování', 'versiontolow' => 'Příliš nízká verze', +'version_comment' => '', 'version_deleted_email' => 'Verze smazána', 'version_deleted_email_body' => 'Verze smazána Dokument: [name] diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index ac3564de0..ab04466e2 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 (2717), dgrutsch (22) +// Translators: Admin (2726), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -484,6 +484,7 @@ Der Link ist bis zum [valid] gültig. 'edit_folder_props' => 'Bearbeiten', 'edit_group' => 'Gruppe bearbeiten', 'edit_online' => 'Online editieren', +'edit_online_warning' => 'Mit dem Speichern wird die aktuellen Version des Dokuments überschrieben. Es wird keine neue Version angelegt.', 'edit_task' => 'Task editieren', 'edit_transmittal_props' => 'Attribute der Dokumentenliste bearbeiten', 'edit_user' => 'Benutzer bearbeiten', @@ -638,6 +639,7 @@ URL: [url]', 'group_members' => 'Gruppenmitglieder', 'group_receipt_summary' => 'Übersicht Gruppenbestätigungen', 'group_review_summary' => 'Übersicht Gruppenprüfungen', +'group_revision_summary' => 'Übersicht Gruppenwiederholungsprüfungen', 'guest_login' => 'Als Gast anmelden', 'guest_login_disabled' => 'Anmeldung als Gast ist gesperrt.', 'hash' => 'Hash-Wert', @@ -840,6 +842,7 @@ Benutzer: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [folder_name] - Neuer Ordner', 'new_user_image' => 'Neues Bild', +'next_revision_abbr' => 'Nächste Wieder.-Prüf.', 'next_state' => 'Neuer Status', 'nl_NL' => 'Niederländisch', 'no' => 'Nein', @@ -1117,6 +1120,7 @@ Kommentar: [comment] Benutzer: [username] URL: [url]', 'revision_submit_email_subject' => '[sitename]: [name] - Erneute Freigabe erteilen', +'revision_summary' => 'Übersicht Wiederholungsprüfungen', 'revisors' => 'Wiederholungsprüfer', 'revisor_already_assigned' => 'Benutzer bereits als Wiederholungsprüfer eingetragen.', 'revisor_already_removed' => 'Wiederholungsprüfer wurde bereits vom Prozess ausgeschlossen oder hat das Dokument bereits geprüft.', @@ -1317,7 +1321,7 @@ Name: [username] 'settings_dropFolderDir_desc' => 'Dieses Verzeichnis kann dazu benutzt werden Dokumente auf dem Server abzulegen und von dort zu importieren anstatt sie über den Browser hochzuladen. Das Verzeichnis muss ein Unterverzeichnis mit dem Login-Namen des angemeldeten Benutzers beinhalten.', 'settings_Edition' => 'Funktions-Einstellungen', 'settings_editOnlineFileTypes' => 'Dateitypen für Online-Editieren', -'settings_editOnlineFileTypes_desc' => 'Dateien mit den angegebenen Endungen können Online editiert werden (benutzen Sie ausschließlich Kleinbuchstaben).', +'settings_editOnlineFileTypes_desc' => 'Dateien mit den angegebenen Endungen oder Mimetypes können Online editiert werden (benutzen Sie ausschließlich Kleinbuchstaben).', 'settings_enable2FactorAuthentication' => '2-Faktor Authentifizierung einschalten', 'settings_enable2FactorAuthentication_desc' => 'Schaltet die 2-Faktor Authentifizierung ein, welche den Google Authenticator auf dem Mobiltelefon erfordert.', 'settings_enableAcknowledgeWorkflow' => '', @@ -1474,6 +1478,8 @@ Name: [username] 'settings_maxUploadSize' => 'Maximale Größe hochzuladener Dateien', 'settings_maxUploadSize_desc' => 'Dies ist die maximale Größe einer hochzuladenen Datei. Es begrenzt sowohl Dokumentenversionen als auch Anhänge.', 'settings_more_settings' => 'Weitere Einstellungen. Login mit admin/admin', +'settings_noFormFields' => 'Diese Felder nicht zeigen', +'settings_noFormFields_desc' => 'Diese Felder werden bei der Neuanlage und beim Bearbeiten eines Dokuments nicht angezeigt. Bestehende Werte werden beibehalten.', 'settings_notfound' => 'Nicht gefunden', 'settings_Notification' => 'Benachrichtigungen-Einstellungen', 'settings_notwritable' => 'Die Konfiguration kann nicht gespeichert werden, weil die Konfigurationsdatei nicht schreibbar ist.', @@ -1639,6 +1645,7 @@ Name: [username] 'splash_edit_group' => 'Gruppe gespeichert', 'splash_edit_role' => 'Rolle gespeichert', 'splash_edit_task' => 'Task gespeichert', +'splash_edit_transmittal' => 'Dokumentenliste gespeichert', 'splash_edit_user' => 'Benutzer gespeichert', 'splash_error_add_to_transmittal' => 'Fehler beim Hinzufügen zur Dokumentenliste', 'splash_error_rm_download_link' => 'Fehler beim Löschen des Download-Links', @@ -1860,6 +1867,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Mit dieser Operation erzeugen Sie pro Dokument eine Datei, die sämtliche Versions-Informationen des Dokuments enthält. Nach Erstellung wird jede Datei im Dokumentenverzeichnis gespeichert. Die erzeugten Dateien sind für den regulären Betrieb nicht erforderlich. Sie können aber von Nutzen sein, wenn der Dokumentenbestand auf ein anderes System übertragen werden soll.', 'versioning_info' => 'Versionsinformationen', 'versiontolow' => 'Version zu niedrig', +'version_comment' => 'Kommentar der Version', 'version_deleted_email' => 'Version gelöscht', 'version_deleted_email_body' => 'Version gelöscht Dokument: [name] diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index 8a12d392a..04bdd53e8 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/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 (281) +// Translators: Admin (282) $text = array( '2_factor_auth' => '', @@ -407,6 +407,7 @@ $text = array( 'edit_folder_props' => 'Επεξεργασία φακέλου', 'edit_group' => '', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '', 'edit_user' => '', @@ -530,6 +531,7 @@ $text = array( 'group_members' => 'Μέλη ομάδας', 'group_receipt_summary' => '', 'group_review_summary' => '', +'group_revision_summary' => '', 'guest_login' => '', 'guest_login_disabled' => '', 'hash' => '', @@ -728,6 +730,7 @@ User: [username] URL: [url]', 'new_subfolder_email_subject' => '', 'new_user_image' => '', +'next_revision_abbr' => '', 'next_state' => '', 'nl_NL' => 'Δανέζικα', 'no' => 'Όχι', @@ -842,7 +845,7 @@ URL: [url]', 'receipt_status' => '', 'receipt_summary' => '', 'receipt_update_failed' => '', -'recent_uploads' => '', +'recent_uploads' => 'Πρόσφατες μεταφορτώσεις', 'reception' => '', 'reception_acknowleged' => '', 'reception_noaction' => '', @@ -920,6 +923,7 @@ URL: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '', 'revisor_already_assigned' => '', 'revisor_already_removed' => '', @@ -1259,6 +1263,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => '', 'settings_Notification' => '', 'settings_notwritable' => '', @@ -1424,6 +1430,7 @@ URL: [url]', 'splash_edit_group' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => '', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1636,6 +1643,7 @@ URL: [url]', 'versioning_file_creation_warning' => '', 'versioning_info' => '', 'versiontolow' => '', +'version_comment' => '', 'version_deleted_email' => '', 'version_deleted_email_body' => '', 'version_deleted_email_subject' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 50e9f528f..c720e74f2 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 (1813), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1822), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -485,6 +485,7 @@ The link is valid until [valid]. 'edit_folder_props' => 'Edit folder', 'edit_group' => 'Edit group', 'edit_online' => 'Edit online', +'edit_online_warning' => 'Saving your changes will overwrite the content of the current version, instead of creating a new version.', 'edit_task' => 'Edit task', 'edit_transmittal_props' => 'Edit transmittal properties', 'edit_user' => 'Edit user', @@ -639,6 +640,7 @@ URL: [url]', 'group_members' => 'Group members', 'group_receipt_summary' => 'Group receipt summary', 'group_review_summary' => 'Group review summary', +'group_revision_summary' => 'Group revision summary', 'guest_login' => 'Login as guest', 'guest_login_disabled' => 'Guest login is disabled.', 'hash' => 'Hash', @@ -842,6 +844,7 @@ User: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - New folder', 'new_user_image' => 'New image', +'next_revision_abbr' => 'Next Rev.', 'next_state' => 'New state', 'nl_NL' => 'Dutch', 'no' => 'No', @@ -1112,6 +1115,7 @@ URL: [url]', 'revision_status' => 'Status', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => 'Revision summary', 'revisors' => 'Revisors', 'revisor_already_assigned' => 'User is already assigned as an revisor.', 'revisor_already_removed' => 'Revisor has already been removed from revision process or has already revised the document.', @@ -1312,7 +1316,7 @@ Name: [username] 'settings_dropFolderDir_desc' => 'This directory can be used for dropping files on the server\'s file system and importing them from there instead of uploading via the browser. The directory must contain a sub directory for each user who is allowed to import files this way.', 'settings_Edition' => 'Edition settings', 'settings_editOnlineFileTypes' => 'Edit Online File Types', -'settings_editOnlineFileTypes_desc' => 'Files with one of the following endings can be edited online (USE ONLY LOWER CASE CHARACTERS)', +'settings_editOnlineFileTypes_desc' => 'Files with one of the following endings or mime types can be edited online (USE ONLY LOWER CASE CHARACTERS)', 'settings_enable2FactorAuthentication' => 'Enable 2-factor authentication', 'settings_enable2FactorAuthentication_desc' => 'Enable/disable 2 factor authentication. The users will need the Google Authenticator on its mobile phone.', 'settings_enableAcknowledgeWorkflow' => '', @@ -1469,6 +1473,8 @@ Name: [username] 'settings_maxUploadSize' => 'Maxium size for uploaded files', 'settings_maxUploadSize_desc' => 'This is the maximum size for uploaded files. It will take affect for document versions and attachments.', 'settings_more_settings' => 'Configure more settings. Default login: admin/admin', +'settings_noFormFields' => 'Do not show this fields', +'settings_noFormFields_desc' => 'This fields will not been show when adding or edition a document. Existing values will be kept.', 'settings_notfound' => 'Not found', 'settings_Notification' => 'Notification settings', 'settings_notwritable' => 'The configuration cannot be saved because the configuration file is not writable.', @@ -1634,6 +1640,7 @@ Name: [username] 'splash_edit_group' => 'Group saved', 'splash_edit_role' => 'Role saved', 'splash_edit_task' => 'Task saved', +'splash_edit_transmittal' => 'Transmittal saved', 'splash_edit_user' => 'User saved', 'splash_error_add_to_transmittal' => 'Error while adding document to transmittal', 'splash_error_rm_download_link' => 'Error when removing download link', @@ -1855,6 +1862,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'With this operation you can create a file for each document containing the versioning information of that document. After the creation every file will be saved inside the document folder. Those files are not needed for the regular operation of the dms, but could be of value if the complete repository shall be transferred to an other system.', 'versioning_info' => 'Versioning info', 'versiontolow' => 'Version to low', +'version_comment' => 'Comment of version', 'version_deleted_email' => 'Version deleted', 'version_deleted_email_body' => 'Version deleted Document: [name] diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 4a9d982fd..362cdd090 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -461,6 +461,7 @@ URL: [url]', 'edit_folder_props' => 'Editar carpeta', 'edit_group' => 'Editar grupo...', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '', 'edit_user' => 'Editar usuario...', @@ -608,6 +609,7 @@ URL: [url]', 'group_members' => 'Miembros de grupo', 'group_receipt_summary' => '', 'group_review_summary' => 'Resumen del grupo revisor', +'group_revision_summary' => '', 'guest_login' => 'Acceso como invitado', 'guest_login_disabled' => 'La cuenta de invitado está deshabilitada.', 'hash' => '', @@ -811,6 +813,7 @@ Usuario: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nueva carpeta', 'new_user_image' => 'Nueva imagen', +'next_revision_abbr' => '', 'next_state' => 'Nuevo estado', 'nl_NL' => 'Holandes', 'no' => 'No', @@ -1048,6 +1051,7 @@ URL: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '', 'revisor_already_assigned' => '', 'revisor_already_removed' => '', @@ -1400,6 +1404,8 @@ URL: [url]', 'settings_maxUploadSize' => 'Tamaño máximo de subida archivos', 'settings_maxUploadSize_desc' => 'Tamaño máximo de archivos a cargar. Se tomará en cuenta para versiones de documentos y anexos de correo electrónico', 'settings_more_settings' => 'Configure más parámetros. Acceso por defecto: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'No encontrado', 'settings_Notification' => 'Parámetros de notificación', 'settings_notwritable' => 'La configuración no se puede guardar porque el fichero de configuración no es escribible.', @@ -1565,6 +1571,7 @@ URL: [url]', 'splash_edit_group' => 'Grupo guardado', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Usuario guardado', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1786,6 +1793,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Con esta operación usted puede crear un fichero que contenga la información de versiones de una carpeta del DMS completa. Después de la creación todos los ficheros se guardarán en la carpeta de documentos.', 'versioning_info' => 'Información de versiones', 'versiontolow' => 'Versión', +'version_comment' => '', 'version_deleted_email' => 'Versión eliminada', 'version_deleted_email_body' => 'Versión eliminada Documento: [name] diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index dc223ee4a..7689bf37d 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -485,6 +485,7 @@ Le lien est valide jusqu’au [valid]. 'edit_folder_props' => 'Modifier le dossier', 'edit_group' => 'Modifier un groupe', 'edit_online' => 'Modification en ligne', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => 'Modifier les propriétés de la transmission', 'edit_user' => 'Modifier un utilisateur', @@ -639,6 +640,7 @@ URL: [url]', 'group_members' => 'Membres du groupe', 'group_receipt_summary' => 'Vue d’ensemble groupe réception', 'group_review_summary' => 'Vue d’ensemble groupe vérification', +'group_revision_summary' => '', 'guest_login' => 'Se connecter comme invité', 'guest_login_disabled' => 'Connexion d\'invité désactivée.', 'hash' => 'Hash', @@ -842,6 +844,7 @@ Utilisateur : [username] URL : [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nouveau dossier', 'new_user_image' => 'Nouvelle image', +'next_revision_abbr' => '', 'next_state' => 'Nouvel état', 'nl_NL' => 'Danois', 'no' => 'Non', @@ -1102,6 +1105,7 @@ URL : [url]', 'revision_status' => 'État', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Réviseurs', 'revisor_already_assigned' => 'L’utilisateur est déjà attribué en tant que réviseur.', 'revisor_already_removed' => 'Le réviseur a déjà été retiré du processus de révision ou a déjà révisé le document.', @@ -1453,6 +1457,8 @@ Nom : [username] 'settings_maxUploadSize' => 'Taille max. des fichiers', 'settings_maxUploadSize_desc' => 'Taille maximale (en octets) pour les fichiers téléversés. Concerne les versions d’un document et les fichiers attachés.', 'settings_more_settings' => 'Configurer d\'autres paramètres. Connexion par défaut: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Introuvable', 'settings_Notification' => 'Notifications', 'settings_notwritable' => 'La configuration ne peut pas être enregistrée car le fichier de configuration n’est pas accessible en écriture.', @@ -1618,6 +1624,7 @@ Nom : [username] 'splash_edit_group' => 'Groupe modifié', 'splash_edit_role' => 'Rôle modifié', 'splash_edit_task' => 'Tâche modifiée', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Utilisateur modifié', 'splash_error_add_to_transmittal' => 'Erreur lors de l’ajout du document à la transmission', 'splash_error_rm_download_link' => 'Erreur lors de la suppression du lien de téléchargement', @@ -1839,6 +1846,7 @@ URL : [url]', 'versioning_file_creation_warning' => 'Cette opération permet de créer, pour chaque document, un fichier texte contenant les informations générales et l’historique des versions du document. Chaque fichier sera enregistré dans le répertoire du document. Ces fichiers ne sont pas nécessaires au bon fonctionnement de SeedDMS, mais ils peuvent être utiles en cas de transfert des fichiers vers un autre système.', 'versioning_info' => 'Versions', 'versiontolow' => '', +'version_comment' => '', 'version_deleted_email' => 'Version supprimée', 'version_deleted_email_body' => 'Version supprimée Document: [name] diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 0ebfc4e25..87535ebb7 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1223), marbanas (16) +// Translators: Admin (1225), marbanas (16) $text = array( '2_factor_auth' => '', @@ -466,6 +466,7 @@ Internet poveznica: [url]', 'edit_folder_props' => 'Uredi mapu', 'edit_group' => 'Uredi mapu', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => 'Izmjena postavki proslijeđivanja', 'edit_user' => 'Uredi korisnika', @@ -613,6 +614,7 @@ Internet poveznica: [url]', 'group_members' => 'Članovi grupe', 'group_receipt_summary' => 'Sažetak prijema za grupu', 'group_review_summary' => 'Sažetak pregleda grupe', +'group_revision_summary' => '', 'guest_login' => 'Prijavite se kao gost', 'guest_login_disabled' => 'Prijava "kao gost" je onemogućena.', 'hash' => '', @@ -815,6 +817,7 @@ Korisnik: [username] Internet poveznica: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nova mapa', 'new_user_image' => 'Nova slika', +'next_revision_abbr' => '', 'next_state' => 'Slijedeći status', 'nl_NL' => 'Nizozemski', 'no' => 'Ne', @@ -1069,6 +1072,7 @@ Internet poveznica: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Revizori', 'revisor_already_assigned' => 'Korisnik je već dodijeljen kao revizor', 'revisor_already_removed' => 'Revizor je uklonjen iz procesa revizije ili je već revidirao dokument.', @@ -1421,6 +1425,8 @@ Internet poveznica: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'Konfiguriraj više postavki. Zadana prijava: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Nije pronađeno', 'settings_Notification' => 'Postavke bilježenja', 'settings_notwritable' => 'Konfiguracija se ne može pohraniti jer datoteka konfiguracije nema mogućnost upisivanja.', @@ -1586,6 +1592,7 @@ Internet poveznica: [url]', 'splash_edit_group' => 'Groupa pohranjena', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Korisnik pohranjen', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1722,8 +1729,8 @@ Internet poveznica: [url]', 'to_before_from' => 'Datum završetka ne može biti prije datuma početka', 'transfer_content' => '', 'transfer_document' => 'Prijenos dokumenta', -'transfer_no_read_access' => '', -'transfer_no_write_access' => '', +'transfer_no_read_access' => 'Korisnik nema pravo čitanja u ovom folderu', +'transfer_no_write_access' => 'Korisnik nema pravo pisanja u ovom folderu', 'transfer_objects' => '', 'transfer_objects_to_user' => '', 'transfer_to_user' => 'Prijenos korisniku', @@ -1807,6 +1814,7 @@ Internet poveznica: [url]', 'versioning_file_creation_warning' => 'Ovo radnjom možete izraditi datoteku koja sadrži informacije o verzijama cijele DMS mape. Nakon izrade, svaka datoteka će biti pohranjena unutar podatkovne mape.', 'versioning_info' => 'Info o verzijama', 'versiontolow' => 'Na nižu verziju', +'version_comment' => '', 'version_deleted_email' => 'Izbrisana verzija', 'version_deleted_email_body' => 'Izbrisana verzija Dokument: [name] diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 93408b6c4..de3034b48 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (634), ribaz (1036) +// Translators: Admin (635), ribaz (1036) $text = array( '2_factor_auth' => 'Kétfaktoros azonosítás', @@ -461,6 +461,7 @@ URL: [url]', 'edit_folder_props' => 'Mappa szerkesztése', 'edit_group' => 'Csoport szerkesztése', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '', 'edit_user' => 'Felhasználó szerkesztése', @@ -608,6 +609,7 @@ URL: [url]', 'group_members' => 'Csoporttagok', 'group_receipt_summary' => '', 'group_review_summary' => 'Csoport felülvizsgálat összefoglaló', +'group_revision_summary' => '', 'guest_login' => 'Bejelentkezés vendégként', 'guest_login_disabled' => 'Vendég bejelentkezés letiltva.', 'hash' => 'hash', @@ -811,6 +813,7 @@ Felhasználó: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Új mappa', 'new_user_image' => 'Új kép', +'next_revision_abbr' => '', 'next_state' => 'Új állapot', 'nl_NL' => 'Holland', 'no' => 'Nem', @@ -1048,6 +1051,7 @@ URL: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '', 'revisor_already_assigned' => '', 'revisor_already_removed' => '', @@ -1150,7 +1154,7 @@ URL: [url]', 'select_one' => 'Vßlasszon egyet', 'select_user' => 'Felhasználó kiválasztása', 'select_users' => 'Kattintson a felhasználó kiválasztásához', -'select_value' => '', +'select_value' => 'Érték kiválasztása', 'select_workflow' => 'Munkafolyamat választás', 'send_email' => 'email küldés', 'send_login_data' => '', @@ -1399,6 +1403,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'További beállítások konfigurálása. Alapértelmezett bejelentkezés: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Nem található', 'settings_Notification' => 'Értesítés beállításai', 'settings_notwritable' => 'A konfiguráció nem menthető, mert a konfigurációs állomány nem írható.', @@ -1564,6 +1570,7 @@ URL: [url]', 'splash_edit_group' => 'Csoport mentve', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Felhasználó mentve', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1785,6 +1792,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Ezzel a művelettel létrehozhat egy állományt ami tartalmazni fogja a változat információkat a teljes DMS mappáról. A létrehozás után minden állomány a dokumentum mappába lesz mentve.', 'versioning_info' => 'Változás információ', 'versiontolow' => 'Túl alacsony verzió', +'version_comment' => '', 'version_deleted_email' => 'Változat törölve', 'version_deleted_email_body' => 'Változat törölve Dokumentum: [name] diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index dc9d4d604..89127ad1d 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -478,6 +478,7 @@ Il collegamento The link è ancora valido fino a [valid]. 'edit_folder_props' => 'Modifica proprietà cartella', 'edit_group' => 'Modifica il gruppo', 'edit_online' => 'Modifica online', +'edit_online_warning' => '', 'edit_task' => 'Modifica attività', 'edit_transmittal_props' => 'Modifica proprietà trasmissione', 'edit_user' => 'Modifica l\'utente', @@ -625,6 +626,7 @@ URL: [url]', 'group_members' => 'Membri del gruppo', 'group_receipt_summary' => 'Panoramica delle conferme ricevute gruppo.', 'group_review_summary' => 'Dettaglio revisioni di gruppo', +'group_revision_summary' => '', 'guest_login' => 'Login come Ospite', 'guest_login_disabled' => 'Il login come Ospite è disabilitato.', 'hash' => 'Hash', @@ -828,6 +830,7 @@ Utente: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nuova sottocartella', 'new_user_image' => 'Nuova immagine', +'next_revision_abbr' => '', 'next_state' => 'Nuovo stato', 'nl_NL' => 'Olandese', 'no' => 'No', @@ -1098,6 +1101,7 @@ URL: [url]', 'revision_status' => 'Status', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Revisori', 'revisor_already_assigned' => 'Utente già assegnato al ruolo di revisore', 'revisor_already_removed' => 'Revisore già rimosso dal processo di riesame o ha già riesaminato il documento.', @@ -1455,6 +1459,8 @@ Name: [username] 'settings_maxUploadSize' => 'Dimensiona massima dei file da caricare', 'settings_maxUploadSize_desc' => 'Questa è la dimensiona massima del file da caricare. Avrà impatto sulla versione del documento e sull\'allegato.', 'settings_more_settings' => 'Ulteriori configurazioni. Login di default: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Non trovato', 'settings_Notification' => 'Impostazioni di notifica', 'settings_notwritable' => 'La configurazione non può essere salvata perchè il file di configurazione non può essere sovrascritto.', @@ -1620,6 +1626,7 @@ Name: [username] 'splash_edit_group' => 'Gruppo modificato', 'splash_edit_role' => 'Ruolo memorizzato', 'splash_edit_task' => 'Attività modificata', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Utente modificato', 'splash_error_add_to_transmittal' => 'Errore durante l\'aggiunta di documento per la trasmissione', 'splash_error_rm_download_link' => 'Errore durante la rimozione del collegamento di scaricamento', @@ -1841,6 +1848,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Con questa operazione è possibile creare un file di backup delle informazioni di versione dei documenti di un\'intera cartella. Dopo la creazione ogni file viene salvato nella cartella del relativo documento.', 'versioning_info' => 'Informazioni di versione', 'versiontolow' => 'Versione obsoleta', +'version_comment' => '', 'version_deleted_email' => 'Cancellazione versione', 'version_deleted_email_body' => 'Versione cancellata Documento: [name] diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index 794f3929f..bc7c0dc49 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -467,6 +467,7 @@ URL: [url]', 'edit_folder_props' => '폴더 편집', 'edit_group' => '편집 그룹', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '전송 속성 편집', 'edit_user' => '사용자 편집', @@ -614,6 +615,7 @@ URL: [url]', 'group_members' => '카페 회원', 'group_receipt_summary' => '그룹 접수 요약', 'group_review_summary' => '그룹 검토 요약', +'group_revision_summary' => '', 'guest_login' => '게스트로 로그인', 'guest_login_disabled' => '고객 로그인을 사용할 수 없습니다.', 'hash' => '해시', @@ -817,6 +819,7 @@ URL: [url]', URL [url]', 'new_subfolder_email_subject' => '[sitename] : [name] - 새 폴더', 'new_user_image' => '새로운 이미지', +'next_revision_abbr' => '', 'next_state' => '새 상태', 'nl_NL' => '네덜란드', 'no' => '아니오', @@ -1063,6 +1066,7 @@ URL: [url]', 'revision_status' => '상태', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '감사', 'revisor_already_assigned' => '이미 감사가 선임이 된 사용자.', 'revisor_already_removed' => '감사는 문서의 개정을 과정에서 삭제했거나 이미 개정을 완료 했습니다.', @@ -1415,6 +1419,8 @@ URL : [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '기타 설정을 구성합니다. 기본 로그인 : admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => '찾을 수 없음', 'settings_Notification' => '알림 설정', 'settings_notwritable' => '구성값을 저장할 수 없습니다 구성 파일에 쓰기 권한이 없습니다.', @@ -1580,6 +1586,7 @@ URL : [url]', 'splash_edit_group' => '그룹 저장', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => '사용자 저장', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1801,6 +1808,7 @@ URL : [url]', 'versioning_file_creation_warning' => '버전 정보가 포함 된 파일을 만들 수 있습니다. 이 작업은 전체 DMS 폴더를 작성 후 모든 파일이 문서 폴더 안에 저장됩니다.', 'versioning_info' => '버전 관리 정보', 'versiontolow' => '낮은 버전', +'version_comment' => '', 'version_deleted_email' => '버전 삭제', 'version_deleted_email_body' => '버전 삭제 문서: [name] diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index 514a4673b..f244c1de9 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -471,6 +471,7 @@ URL: [url]', 'edit_folder_props' => 'ແກ້ໄຂໂຟລເດີ', 'edit_group' => 'ແກ້ໄຂກຸ່ມ', 'edit_online' => 'ແກ້ໄຂອອນລາຍ', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => 'ແກ້ໄຂຄຸນສົມບັດໃນການຖ່າຍທອດ', 'edit_user' => 'ແກ້ໄຂຜູ້ໃຊ້', @@ -618,6 +619,7 @@ URL: [url]', 'group_members' => 'ສະມາຊິກກຸ່ມ', 'group_receipt_summary' => 'ພາບລວມການຢືນຢັນເນື້ອຫາຂອງກຸ່ມ', 'group_review_summary' => 'ສະຫຼຸບບົດວິຈານຂອງກຸ່ມ', +'group_revision_summary' => '', 'guest_login' => 'ເຂົ້າສູ້ລະບົບໃນຖານະແຂກ', 'guest_login_disabled' => 'ການເຂົ້າສູ້ລະບົບສຳລັບບຸກຄົນທົ່ວໄປຖຶກປິດການໄຊ້ງານ', 'hash' => 'ກັນຊາ', @@ -821,6 +823,7 @@ URL: [url]', URL: [url]', 'new_subfolder_email_subject' => '[sitename]:[name] - ໂຟລເດີໄຫມ່', 'new_user_image' => 'ຮູບໄຫມ່', +'next_revision_abbr' => '', 'next_state' => 'ລັດໄຫມ່', 'nl_NL' => 'ດັສ', 'no' => 'ບໍ່', @@ -1091,6 +1094,7 @@ URL: [url]', 'revision_status' => 'ສະຖານະ', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'ຜູ້ປະສານງານ', 'revisor_already_assigned' => 'ກຳນົດຜູ້ໄຊ້ເປັນຜູ້ກວດສອບແລ້ວ', 'revisor_already_removed' => 'ຜູ້ກວດສອບຖືກນຳອອກຈາກຂະບວນການແກ້ໄຂ ຫຼືໄດ້ແກ້ໄຂເອກະສານແລ້ວ', @@ -1448,6 +1452,8 @@ URL: [url]', 'settings_maxUploadSize' => 'ขนาดสูงสุดสำหรับไฟล์ที่อัปโหลด.', 'settings_maxUploadSize_desc' => 'ນີ້ຄືຂະໜາດສູງສຸດສຳລັບໄຟລທີອັບໂຫລດ ຈະມີຜົນຕໍ່ເວີຊັນເອກະສານແລະ ເອກະສານແນບ', 'settings_more_settings' => 'กำหนดค่าการตั้งค่าเพิ่มเติม ค่าเริ่มต้นการเข้าสู่ระบบ: ผู้ดูแลระบบ / ผู้ดูแลระบบ.', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'ເຂົ້າລະບົບ', 'settings_Notification' => 'ການຕັ້ງຄ່າການແຈ້ງເຕືອນ', 'settings_notwritable' => 'ການກຳນົດຄ່າທີ່ບໍ່ສາມາດບັນທືກໄດ້ຍ້ອນວ່າໄຟລກຳນົດຄ່າບໍ່ສາມາດຂຽນໄດ້', @@ -1613,6 +1619,7 @@ URL: [url]', 'splash_edit_group' => 'ບັນທຶກກຸ່ມແລ້ວ', 'splash_edit_role' => 'ບັນທຶກບົດບາດແລ້ວ', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'ບັນທຶກຜູ້ໄຊ້ແລ້ວ', 'splash_error_add_to_transmittal' => 'ເກີດຂໍ້ຜິດພາດໃນຂະນະທີ່ເພີ່ມເອກະສານເພື່ອຕິດຕໍ່', 'splash_error_rm_download_link' => 'ຂໍ້ຜິດພາດໃນການລົບລິງການດາວໂຫລດ', @@ -1834,6 +1841,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'ສຳລັບການດຳເນີນງານນີ້ເຈົ້າສາມາດສ້າງໄຟລສຳລັບແຕ່ລະເອກະສານທີມີຂໍ້ມູນການກຳນົດເວີຊັ້ນຂອງເອກະສານນັ້ນ', 'versioning_info' => 'ຂໍ້ມູນການກຳນົດລຸ້ນ', 'versiontolow' => 'ເວີຊັ້ນຕຳ', +'version_comment' => '', 'version_deleted_email' => 'ລົບເວີຊັ້ນແລ້ວ', 'version_deleted_email_body' => 'ລົບເວີຊັ້ນແລ້ວ ເອກະສານ: [name] diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index ed3933853..884849f29 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -466,6 +466,7 @@ De link is geldig tot [valid]. 'edit_folder_props' => 'Wijzig Map eigenschappen', 'edit_group' => 'Wijzig Groep', 'edit_online' => 'Online bewerken', +'edit_online_warning' => '', 'edit_task' => 'Taak bewerken', 'edit_transmittal_props' => 'Opmerkingen bij verzending', 'edit_user' => 'Wijzig gebruiker', @@ -613,6 +614,7 @@ URL: [url]', 'group_members' => 'Groepsleden', 'group_receipt_summary' => 'Overzicht van ontvangst per groep', 'group_review_summary' => 'Groep Beoordeling samenvatting', +'group_revision_summary' => '', 'guest_login' => 'Login als Gast', 'guest_login_disabled' => 'Gast login is uitgeschakeld.', 'hash' => 'Hashcode', @@ -815,6 +817,7 @@ Gebruikers: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nieuwe map', 'new_user_image' => 'Nieuwe afbeelding', +'next_revision_abbr' => '', 'next_state' => 'Nieuwe status', 'nl_NL' => 'Nederlands', 'no' => 'Nee', @@ -1084,6 +1087,7 @@ URL: [url]', 'revision_status' => 'Status revisie', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Herzieners', 'revisor_already_assigned' => 'Gebruiker is reeds herziener', 'revisor_already_removed' => 'Herziener reeds verwijderd', @@ -1445,6 +1449,8 @@ Name: [username] 'settings_maxUploadSize' => 'Maximale omvang voor uploaden', 'settings_maxUploadSize_desc' => 'Dit is de maximale omvang voor te uploaden bestanden. Dat geldt voor bestanden en bijlagen.', 'settings_more_settings' => 'Meer instellingen. Standaard login: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Niet gevonden', 'settings_Notification' => 'Notificatie instellingen', 'settings_notwritable' => 'De configuratie kan niet opgeslagen worden omdat het configuratiebestand niet beschrijfbaar is.', @@ -1610,6 +1616,7 @@ Name: [username] 'splash_edit_group' => 'Groep opgeslagen', 'splash_edit_role' => 'Rol opgeslagen', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Gebruiker opgeslagen', 'splash_error_add_to_transmittal' => 'Fout: toevoeging aan verzending', 'splash_error_rm_download_link' => 'Fout bij verwijderen download-link', @@ -1831,6 +1838,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Met deze handeling maakt U een bestand aan die de versie voortgang informatie van een compleet DMS bevat. Na het aanmaken wordt ieder bestand opgeslagen in de document map.', 'versioning_info' => 'Versie eigenschappen', 'versiontolow' => 'Versie voor laag', +'version_comment' => '', 'version_deleted_email' => 'Versie verwijderd', 'version_deleted_email_body' => 'Version deleted Document: [name] diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index c9bff7f10..89ab5e925 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/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 (840), netixw (84), romi (93), uGn (112) +// Translators: Admin (854), netixw (84), romi (93), uGn (112) $text = array( '2_factor_auth' => '', @@ -454,6 +454,7 @@ URL: [url]', 'edit_folder_props' => 'Edytuj folder', 'edit_group' => 'Edytuj grupę', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '', 'edit_user' => 'Edytuj użytkownika', @@ -601,6 +602,7 @@ URL: [url]', 'group_members' => 'Członkowie grupy', 'group_receipt_summary' => '', 'group_review_summary' => 'Podsumowanie opiniowania dla grupy', +'group_revision_summary' => '', 'guest_login' => 'Zalogowany jako gość', 'guest_login_disabled' => 'Logowanie dla gościa jest wyłączone.', 'hash' => '', @@ -614,7 +616,7 @@ URL: [url]', 'hu_HU' => 'Węgierski', 'id' => 'ID', 'identical_version' => 'Nowa wersja jest identyczna z obecną', -'import' => '', +'import' => 'Import', 'importfs' => '', 'import_extension' => '', 'import_fs' => 'Import z systemu plików', @@ -804,6 +806,7 @@ Użytkownik: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nowy folder', 'new_user_image' => 'Nowy obraz', +'next_revision_abbr' => '', 'next_state' => 'Nowy status', 'nl_NL' => 'holenderski', 'no' => 'Nie', @@ -1027,6 +1030,7 @@ URL: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '', 'revisor_already_assigned' => '', 'revisor_already_removed' => '', @@ -1164,7 +1168,7 @@ URL: [url]', 'settings_autoLoginUser_desc' => '', 'settings_available_languages' => 'Dostępne języki', 'settings_available_languages_desc' => 'Tylko wybrane języki zostaną załadowane i będą widoczne w kontrolce wyboru języka. Domyślny język zawsze jest ładowany.', -'settings_backupDir' => '', +'settings_backupDir' => 'Lokalizacja kopii zapasowej', 'settings_backupDir_desc' => '', 'settings_cacheDir' => 'Folder bufora', 'settings_cacheDir_desc' => 'Miejsce przechowywania obrazków podglądu (najlepiej wybrać katalog nie dostępny bezpośrednio dla web-serwera).', @@ -1203,8 +1207,8 @@ URL: [url]', 'settings_dbUser' => 'Nazwa użytkownika', 'settings_dbUser_desc' => 'Nazwa użytkownika uprawnionego do dostępu do bazy danych podana w procesie instalacji. Nie zmieniaj tego pola dopóki nie jest to absolutnie konieczne, na przykład podczas przenoszenia bazy danych na nowego hosta.', 'settings_dbVersion' => 'Schemat bazy danych jest za stary', -'settings_defaultAccessDocs' => '', -'settings_defaultAccessDocs_desc' => '', +'settings_defaultAccessDocs' => 'Domyślny dostęp do nowych dokumentów', +'settings_defaultAccessDocs_desc' => 'Kiedy zostanie utworzony nowy dokument, będzie to domyślne prawo dostępu.', 'settings_defaultDocPosition' => '', 'settings_defaultDocPosition_desc' => '', 'settings_defaultDocPosition_val_end' => 'koniec', @@ -1263,8 +1267,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => 'Pokaż selektor języka dla interfejsu użytkownika po zalogowaniu To nie ma wpływu na wybór języka na stronie logowania.', 'settings_enableLargeFileUpload' => 'Zezwól na wczytywanie dużych plików', 'settings_enableLargeFileUpload_desc' => 'Jeśli zaznaczone, wczytywanie plików będzie możliwe również przez aplet javy nazywany jumploader bez limitu rozmiaru plików. Aplet ten pozwala również na wczytywanie wielu plików jednocześnie.', -'settings_enableMenuTasks' => '', -'settings_enableMenuTasks_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, i.t.d.', 'settings_enableMultiUpload' => 'Zezwól na wysyłanie wielu plików', 'settings_enableMultiUpload_desc' => '', 'settings_enableNotificationAppRev' => 'Włącz/Wyłącz powiadomienia dla zatwierdzających/recenzentów', @@ -1295,8 +1299,8 @@ URL: [url]', 'settings_enableSelfReceipt_desc' => '', 'settings_enableSelfRevApp' => 'Pozwalaj przeglądać/zatwierdzać dla zalogowanych użytkowników', 'settings_enableSelfRevApp_desc' => 'Włącz tę opcję jeżeli zalogowany użytkownik ma prawo do recenzowania/zatwierdzania oraz do przepływu procesu', -'settings_enableSessionList' => '', -'settings_enableSessionList_desc' => '', +'settings_enableSessionList' => 'Włącz listę użytkowników online w menu', +'settings_enableSessionList_desc' => 'Włącza listę obecnie zalogowanych użytkowników w menu.', 'settings_enableThemeSelector' => 'Wybór motywu', 'settings_enableThemeSelector_desc' => '', 'settings_enableUpdateReceipt' => '', @@ -1338,7 +1342,7 @@ URL: [url]', 'settings_guestID_desc' => 'ID gościa używane kiedy gość jest zalogowany (zazwyczaj nie wymaga zmiany)', 'settings_httpRoot' => 'Http Root', 'settings_httpRoot_desc' => 'Relatywna ścieżka w URL, część za domeną. Nie dołączaj przedrostka http:// ani nazwy hosta. Np. Jeśli cały URL to http://www.example.com/letodms/, wpisz \'/letodms/\'. Jeśli URL to http://www.example.com/, set \'/\'', -'settings_incItemsPerPage' => '', +'settings_incItemsPerPage' => 'Liczba wpisów załadowana na dole strony', 'settings_incItemsPerPage_desc' => '', 'settings_initialDocumentStatus' => '', 'settings_initialDocumentStatus_desc' => '', @@ -1370,15 +1374,17 @@ URL: [url]', 'settings_maxDirID_desc' => 'Maksymalna liczba podkatalogów dla katalogu nadrzędnego. Domyślnie: 0.', 'settings_maxExecutionTime' => 'Maksymalny czas wykonywania (s)', 'settings_maxExecutionTime_desc' => 'Ustawia maksymalny czas, liczony w sekundach, jaki ma na wykonanie skrypt zanim zostanie zakończony.', -'settings_maxItemsPerPage' => '', +'settings_maxItemsPerPage' => 'Maksymalna liczba wpisów na stronę', 'settings_maxItemsPerPage_desc' => '', 'settings_maxRecursiveCount' => 'Max. liczba rekurencji dokumentów/folderów', 'settings_maxRecursiveCount_desc' => 'Jest to maksymalna liczba dokumentów i folderów, które będą sprawdzane pod kątem praw dostępu, gdy włączone jest rekurencyjnie liczenie obiektów. Jeżeli liczba ta zostanie przekroczona to ilości dokumentów i folderów w widoku zostaną oszacowane.', 'settings_maxSizeForFullText' => '', 'settings_maxSizeForFullText_desc' => '', -'settings_maxUploadSize' => '', -'settings_maxUploadSize_desc' => '', +'settings_maxUploadSize' => 'Maksymalny rozmiar wysyłanych plików', +'settings_maxUploadSize_desc' => 'To jest maksymalny rozmiar dla nadesłanych plików. To ustawienie wpływa również na wersje dokumentu i załączniki.', 'settings_more_settings' => 'Wykonaj dalszą konfigurację. Domyślny login/hasło: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Nie znaleziono', 'settings_Notification' => 'Ustawienia powiadomień', 'settings_notwritable' => 'Konfiguracja nie może zostać zapisana ponieważ plik konfiguracyjny nie jest zapisywalny.', @@ -1450,8 +1456,8 @@ URL: [url]', 'settings_smtpPort_desc' => 'Port serwera SMTP, domyślnie 25', 'settings_smtpSendFrom' => 'Wyślij od', 'settings_smtpSendFrom_desc' => 'Wyślij od', -'settings_smtpSendTestMail' => '', -'settings_smtpSendTestMail_desc' => '', +'settings_smtpSendTestMail' => 'Wyślij mail testowy', +'settings_smtpSendTestMail_desc' => 'Wysyła mail testowy w celu sprawdzenia obecnej konfiguracji e-mail', 'settings_smtpServer' => 'Nazwa serwera SMTP', 'settings_smtpServer_desc' => 'Nazwa hosta serwera SMTP', 'settings_smtpUser' => 'Użytkownik SMTP', @@ -1544,6 +1550,7 @@ URL: [url]', 'splash_edit_group' => 'Grupa zapisana', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Zapisano użytkownika', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1765,6 +1772,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Ta operacja utworzy plik zawierający informacje o wersjach plików z całego wskazanego folderu. Po utworzeniu, każdy plik będzie zapisany w folderze odpowiednim dla danego dokumentu.', 'versioning_info' => 'Informacje o wersjach', 'versiontolow' => 'Za niska wersja', +'version_comment' => '', 'version_deleted_email' => 'Wersja usunięta', 'version_deleted_email_body' => 'Wersja została usunięta Dokument: [name] diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 18980a55b..1ddfc6a75 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -485,6 +485,7 @@ O link é válido até [valid]. 'edit_folder_props' => 'Editar pasta', 'edit_group' => 'Editar grupo', 'edit_online' => 'Editar on-line', +'edit_online_warning' => '', 'edit_task' => 'Editar tarefa', 'edit_transmittal_props' => 'Editar propriedades de transmissão', 'edit_user' => 'Editar usuário', @@ -639,6 +640,7 @@ URL: [url]', 'group_members' => 'Membros do Grupo', 'group_receipt_summary' => 'Resumo de recebimento de grupo', 'group_review_summary' => 'Resumo da avaliação do grupo', +'group_revision_summary' => '', 'guest_login' => 'Entre como convidado', 'guest_login_disabled' => 'O login de convidado está desativado.', 'hash' => 'Hash', @@ -841,6 +843,7 @@ Usuário: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nova pasta', 'new_user_image' => 'Nova imagem', +'next_revision_abbr' => '', 'next_state' => 'Novo estado', 'nl_NL' => 'Holandês', 'no' => 'Não', @@ -1110,6 +1113,7 @@ URL: [url]', 'revision_status' => 'Estado', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Revisores', 'revisor_already_assigned' => 'O usuário já está designado como revisor.', 'revisor_already_removed' => 'Revisor já foi removido do processo de revisão ou já revisou o documento.', @@ -1467,6 +1471,8 @@ Nome: [username] 'settings_maxUploadSize' => 'Tamanho máximo para arquivos enviados.', 'settings_maxUploadSize_desc' => 'Esse é o tamanho máximo dos arquivos enviados. Ele terá efeito para versões de documentos e anexos.', 'settings_more_settings' => 'Configurar outras configurações. Login padrão: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Não encontrado', 'settings_Notification' => 'Configurações de notificação', 'settings_notwritable' => 'A configuração não pode ser salva porque o arquivo de configuração não é gravável.', @@ -1632,6 +1638,7 @@ Nome: [username] 'splash_edit_group' => 'Grupo salvo', 'splash_edit_role' => 'Papel salvo', 'splash_edit_task' => 'Tarefa salva', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Usuário salvo', 'splash_error_add_to_transmittal' => 'Erro ao adicionar documento à transmissão', 'splash_error_rm_download_link' => 'Erro ao remover o link de download', @@ -1853,6 +1860,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Com esta operação, você pode criar um arquivo contendo as informações de versão de uma pasta DMS inteira. Após a criação, todos os arquivos serão salvos dentro da pasta do documento.', 'versioning_info' => 'Informação de versionamento', 'versiontolow' => 'Versão para baixo', +'version_comment' => '', 'version_deleted_email' => 'Versão eliminado', 'version_deleted_email_body' => 'Versão apagada Documento: [name] diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index e0726d0ef..2651de592 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 (1092), balan (87) +// Translators: Admin (1094), balan (87) $text = array( '2_factor_auth' => '', @@ -466,6 +466,7 @@ URL: [url]', 'edit_folder_props' => 'Editează folder', 'edit_group' => 'Editează grup', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => 'Editeaza proprietatile de transmitere', 'edit_user' => 'Editează utilizator', @@ -613,6 +614,7 @@ URL: [url]', 'group_members' => 'Membrii grupului', 'group_receipt_summary' => '', 'group_review_summary' => 'Sumar revizuiri grup', +'group_revision_summary' => '', 'guest_login' => 'Login ca oaspete', 'guest_login_disabled' => 'Logarea ca oaspete este dezactivată.', 'hash' => '', @@ -641,7 +643,7 @@ URL: [url]', 'index_folder' => 'Index folder', 'index_no_content' => '', 'index_pending' => '', -'index_waiting' => '', +'index_waiting' => 'Așteptare', 'individuals' => 'Individuals', 'individuals_in_groups' => '', 'info_recipients_tab_not_released' => '', @@ -816,6 +818,7 @@ Utilizator: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Folder nou', 'new_user_image' => 'Imagine nouă', +'next_revision_abbr' => '', 'next_state' => 'Stare nouă', 'nl_NL' => 'Olandeză', 'no' => 'Nu', @@ -1070,6 +1073,7 @@ URL: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Revizuitori', 'revisor_already_assigned' => 'Utilizatorul este deja asignat ca retrimitor.', 'revisor_already_removed' => 'Retrimitorul a fost deja eliminat din procesul de revizuire sau a revizuit deja documentul.', @@ -1422,6 +1426,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'Configurare mai multe setări. Autentificare implicită: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Nu a fost găsit', 'settings_Notification' => 'Setările de notificare', 'settings_notwritable' => 'Configurația nu poate fi salvată deoarece fișierul de configurare nu poate fi scris.', @@ -1587,6 +1593,7 @@ URL: [url]', 'splash_edit_group' => 'Grup salvat', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Utilizator salvat', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1723,7 +1730,7 @@ URL: [url]', 'to_before_from' => 'Data de încheiere nu poate fi înainte de data de începere', 'transfer_content' => '', 'transfer_document' => 'Transfer document', -'transfer_no_read_access' => '', +'transfer_no_read_access' => 'Utilizatorul nu are acces de citire pentru acest folder', 'transfer_no_write_access' => 'Utilizatorul nu are drepturi de scriere pe acest dosar', 'transfer_objects' => '', 'transfer_objects_to_user' => '', @@ -1808,6 +1815,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Cu această operațiune puteți crea un fișier care conține informațiile versiunilor pentru un întreg folder DMS. După creare, fiecare fisier va fi salvat in folder-ul de documente.', 'versioning_info' => 'Informații versionare', 'versiontolow' => 'Versiunea e prea mică(veche)', +'version_comment' => '', 'version_deleted_email' => 'Versiune ștearsă', 'version_deleted_email_body' => 'Versiune ștearsă Document: [name] diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 25e863e17..ec0a04b9f 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -466,6 +466,7 @@ URL: [url]', 'edit_folder_props' => 'Изменить свойства', 'edit_group' => 'Изменить группу', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => 'Редактировать группы получателей', 'edit_user' => 'Редактировать пользователя', @@ -613,6 +614,7 @@ URL: [url]', 'group_members' => 'Члены группы', 'group_receipt_summary' => 'Обзор подтверждений получения группой', 'group_review_summary' => 'Сводка по рецензированию группы', +'group_revision_summary' => '', 'guest_login' => 'Войти как гость', 'guest_login_disabled' => 'Гостевой вход отключён', 'hash' => '', @@ -815,6 +817,7 @@ URL: [url]', URL: [url]', 'new_subfolder_email_subject' => '[sitename]: новый каталог «[name]»', 'new_user_image' => 'Новое изображение', +'next_revision_abbr' => '', 'next_state' => 'Новое состояние', 'nl_NL' => 'Dutch', 'no' => 'Нет', @@ -1077,6 +1080,7 @@ URL: [url]', 'revision_status' => 'Состояние ревизии', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Ревизор', 'revisor_already_assigned' => 'Пользователь уже назначен как ревизор', 'revisor_already_removed' => 'Ревизор уже удален из процесса ревизии, либо уже рассмотрел документ', @@ -1429,6 +1433,8 @@ URL: [url]', 'settings_maxUploadSize' => 'Максимальный размер загружаемых файлов', 'settings_maxUploadSize_desc' => 'Это максимальный размер загружаемых файлов. Он повлияет на версии документов и вложения.', 'settings_more_settings' => 'Прочие настройки. Логин по умолчанию: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Не найден', 'settings_Notification' => 'Настройки извещения', 'settings_notwritable' => 'Конфигурация не может быть сохранена, потому что файл конфигурации только для чтения.', @@ -1594,6 +1600,7 @@ URL: [url]', 'splash_edit_group' => 'Группа сохранена', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Пользователь сохранён', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1815,6 +1822,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Эта операция создаст файлы версий для всего каталога. После создания файлы версий будут сохранены в каталоге документов.', 'versioning_info' => 'Информация о версиях', 'versiontolow' => 'Версия слишком старая', +'version_comment' => '', 'version_deleted_email' => 'Версия удалена', 'version_deleted_email_body' => 'Версия удалена Документ: [name] diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 2a1376986..6b5a76835 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/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 (1226), destinqo (19), pS2017 (508), ssebech (4) +// Translators: Admin (1226), destinqo (26), pS2017 (508), ssebech (4) $text = array( '2_factor_auth' => '2-faktorové overovanie', @@ -201,7 +201,7 @@ URL: [url]', 'at_least_n_users_of_group' => 'At least [number_of_users] users of [group]', 'august' => 'August', 'authentication' => 'Autentizácia', -'authentication_failed' => '', +'authentication_failed' => 'Overenie zlyhalo', 'author' => 'Autor', 'automatic_status_update' => 'Automaticka zmena stavu', 'back' => 'Prejsť späť', @@ -485,6 +485,7 @@ Odkaz je platný do [valid]. 'edit_folder_props' => 'Upraviť zložku', 'edit_group' => 'Upraviť skupinu', 'edit_online' => 'Upraviť online', +'edit_online_warning' => '', 'edit_task' => 'Upraviť úlohu', 'edit_transmittal_props' => 'Edit transmittal properties', 'edit_user' => 'Upraviť používateľa', @@ -506,7 +507,7 @@ Odkaz je platný do [valid]. 'error_add_aro' => 'Error while adding access request object', 'error_add_permission' => 'Error while add permission', 'error_cleared_cache' => 'Chyba pri vymazaní vyrovnávacej pamäte', -'error_edit_task' => '', +'error_edit_task' => 'Chyba pri ukladaní úlohy', 'error_extension_getlist' => 'Error getting extension list from repository', 'error_importfs' => 'Chyba pri importe zo súborového systému', 'error_no_document_selected' => 'Nie je vybratý žiadny dokument', @@ -515,7 +516,7 @@ Odkaz je platný do [valid]. 'error_remove_document' => 'Pri odstraňovaní dokumentu sa vyskytla chyba', 'error_remove_folder' => 'Pri odstraňovaní zložky sa vyskytla chyba', 'error_remove_permission' => 'Chyba pri odstránení povolenia', -'error_rm_workflow' => '', +'error_rm_workflow' => 'Nastala chyba pri odstránovaní workflow', 'error_rm_workflow_action' => '', 'error_rm_workflow_state' => '', 'error_toogle_permission' => 'Chyba pri zmene povolenia', @@ -639,6 +640,7 @@ URL: [url]', 'group_members' => 'Členovia skupiny', 'group_receipt_summary' => 'Group receipt summary', 'group_review_summary' => 'Zhrnutie skupinovej recenzie', +'group_revision_summary' => '', 'guest_login' => 'Prihlásiť sa ako hosť', 'guest_login_disabled' => 'Prihlásenie ako hosť je vypnuté.', 'hash' => 'Hash', @@ -763,7 +765,7 @@ URL: [url]', 'login_error_title' => 'Chyba pri prihlasovaní', 'login_not_given' => 'Nebolo zadané používateľské meno', 'login_ok' => 'Prihlásenie prebehlo úspešne', -'login_restrictions_apply' => '', +'login_restrictions_apply' => 'Nepodarilo sa prihlásiť, kvôli obmedzeniam', 'logout' => 'Odhlásenie', 'log_management' => 'Správa protokolov', 'lo_LA' => 'Laoský', @@ -782,7 +784,7 @@ URL: [url]', 'max_upload_size' => 'Maximálna veľkosť každého súboru', 'may' => 'Máj', 'menu_dropfolder' => 'Drop zložka', -'menu_upload_from_dropfolder' => '', +'menu_upload_from_dropfolder' => 'Naimportovať zo súboru', 'mimetype' => 'Mime typ', 'minutes' => 'minúty', 'misc' => 'Rôzne', @@ -842,6 +844,7 @@ Používateľ: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Nová zložka', 'new_user_image' => 'Nový obrázok', +'next_revision_abbr' => '', 'next_state' => 'Nový stav', 'nl_NL' => 'Holandština', 'no' => 'Nie', @@ -989,7 +992,7 @@ URL: [url]', 'receipt_status' => 'Stav', 'receipt_summary' => 'Receipt summary', 'receipt_update_failed' => 'Acknowledging reception failed', -'recent_uploads' => '', +'recent_uploads' => 'Naposledy nahrané súbory', 'reception' => 'Reception', 'reception_acknowleged' => 'Reception acknowledged', 'reception_noaction' => 'Žiadna akcia', @@ -1112,6 +1115,7 @@ URL: [url]', 'revision_status' => 'Stav', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Revisors', 'revisor_already_assigned' => 'User is already assigned as an revisor.', 'revisor_already_removed' => 'Revisor has already been removed from revision process or has already revised the document.', @@ -1244,7 +1248,7 @@ Meno: [username] 'settings_Advanced' => 'Rozšírené', 'settings_advancedAcl' => 'Advanced Access control', 'settings_advancedAcl_desc' => 'Advanced access controll will allow to turn on/off certain modules of the software. It can not be used for access rights on documents and folders.', -'settings_allowChangeRevAppInProcess' => '', +'settings_allowChangeRevAppInProcess' => 'Povoliť zmenu schvaľovateľa, ak už bol proces začatý', '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.', @@ -1469,6 +1473,8 @@ Meno: [username] 'settings_maxUploadSize' => 'Maximálna veľkosť pre nahrávané súbory', 'settings_maxUploadSize_desc' => 'This is the maximum size for uploaded files. It will take affect for document versions and attachments.', 'settings_more_settings' => 'Configure more settings. Default login: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Nenájdené', 'settings_Notification' => 'Nastavenia notifikácií', 'settings_notwritable' => 'The configuration cannot be saved because the configuration file is not writable.', @@ -1634,6 +1640,7 @@ Meno: [username] 'splash_edit_group' => 'Skupina bola uložená', 'splash_edit_role' => 'Rola bola uložená', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Používateľ bol uložený', 'splash_error_add_to_transmittal' => 'Error while adding document to transmittal', 'splash_error_rm_download_link' => 'Error when removing download link', @@ -1855,6 +1862,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Touto operáciou môžete vytvoriť súbor pre každý dokument, obsahujúci verziovaciu informáciu toho dokumentu. Po vytvorení bude každý súbor uložený do zložky dokumentu. Those files are not needed for the regular operation of the dms, but could be of value if the complete repository shall be transferred to an other system.', 'versioning_info' => 'Informácie o verziách', 'versiontolow' => 'Verzia je nízka', +'version_comment' => '', 'version_deleted_email' => 'Verzia zmazana', 'version_deleted_email_body' => 'Verzia bola zmazaná Dokument: [name] diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index e829ce792..7c962fdc9 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -479,6 +479,7 @@ Länken är giltig t o m [valid]. 'edit_folder_props' => 'Ändra katalog', 'edit_group' => 'Ändra grupp', 'edit_online' => 'Uppdatera online', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => 'Ändra egenskaper för meddelande', 'edit_user' => 'Ändra användare', @@ -626,6 +627,7 @@ URL: [url]', 'group_members' => 'Gruppmedlemmar', 'group_receipt_summary' => 'Sammanfattning av mottagningsbevis för grupp', 'group_review_summary' => 'Sammanfattning av gruppgranskning', +'group_revision_summary' => '', 'guest_login' => 'Gästinloggning', 'guest_login_disabled' => 'Gästinloggningen är inaktiverad.', 'hash' => 'Hash', @@ -829,6 +831,7 @@ Användare: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Ny katalog', 'new_user_image' => 'Ny användarbild', +'next_revision_abbr' => '', 'next_state' => 'Ny status', 'nl_NL' => 'Holländska', 'no' => 'Nej', @@ -1085,6 +1088,7 @@ URL: [url]', 'revision_status' => 'Status', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Reviderare', 'revisor_already_assigned' => 'Användaren innehar redan rollen som reviderare', 'revisor_already_removed' => 'Dokumentet är redan reviderat alternativt användaren tillhör inte längre gruppen reviderare.', @@ -1442,6 +1446,8 @@ Kommentar: [comment]', 'settings_maxUploadSize' => 'Max storlek (bytes) för uppladdadning av fil', 'settings_maxUploadSize_desc' => 'Detta är den maximala storleken för uppladdning av filer. Begränsningen anges i bytes (1 GB = ca 1 000 000 000 bytes)', 'settings_more_settings' => 'Konfigurera flera inställningar. Standard-inloggning: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Hittades inte', 'settings_Notification' => 'Meddelandeinställningar', 'settings_notwritable' => 'Konfigurationen kunde inte sparas, eftersom konfigurationsfilen inte är skrivbar.', @@ -1607,6 +1613,7 @@ Kommentar: [comment]', 'splash_edit_group' => 'Grupp sparad', 'splash_edit_role' => 'Roll sparad', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Användare sparad', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => 'Fel vid borttagande av nedladdningslänk', @@ -1828,6 +1835,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Med denna funktion kan du skapa en fil som innehåller versionsinformationen för hela DMS-mappen. Efter skapandet kommer alla filer att sparas inom dokumentets mapp.', 'versioning_info' => 'Versionsinformation', 'versiontolow' => 'Version för låg', +'version_comment' => '', 'version_deleted_email' => 'Version borttagen', 'version_deleted_email_body' => 'Version borttagen Dokument: [name] diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index da7ae9c06..ec23b635a 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -460,6 +460,7 @@ URL: [url]', 'edit_folder_props' => 'Klasörü düzenle', 'edit_group' => 'Grubu düzenle', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '', 'edit_user' => 'Kullanıcıyı düzenle', @@ -607,6 +608,7 @@ URL: [url]', 'group_members' => 'Grup üyeleri', 'group_receipt_summary' => '', 'group_review_summary' => 'Grup gözden geçirme özeti', +'group_revision_summary' => '', 'guest_login' => 'Misafir olarak giriş yap', 'guest_login_disabled' => 'Misafir girişi devre dışı.', 'hash' => '', @@ -810,6 +812,7 @@ Kullanıcı: [username] URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - Yeni klasör', 'new_user_image' => 'Yeni resim', +'next_revision_abbr' => '', 'next_state' => 'Yeni durum', 'nl_NL' => 'Hollandaca', 'no' => 'Hayır', @@ -1049,6 +1052,7 @@ URL: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '', 'revisor_already_assigned' => '', 'revisor_already_removed' => '', @@ -1401,6 +1405,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'Daha fazla ayar yapın. Varsayılan kullanıcı adı/parola: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Bulunamadı', 'settings_Notification' => 'Bildirim ayarları', 'settings_notwritable' => 'Konfigürasyon dosyası yazılabilir olmadığından ayarlar kaydedilmeyecek.', @@ -1566,6 +1572,7 @@ URL: [url]', 'splash_edit_group' => 'Grup kaydedildi', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Kullanıcı kaydedildi', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1787,6 +1794,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Bu işlem ile tüm klasörlerdeki versiyon bilgisinin bulunduğu bir dosya oluşturursunuz. Her dosya oluşturulduğunda doküman klasörüne kaydedilir.', 'versioning_info' => 'Version bilgisi', 'versiontolow' => 'Versiyon düşük', +'version_comment' => '', 'version_deleted_email' => 'Versiyon silindi', 'version_deleted_email_body' => 'Versiyon silindi Doküman: [name] diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index a7463efb5..1e53e7a9b 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -466,6 +466,7 @@ URL: [url]', 'edit_folder_props' => 'Змінити каталог', 'edit_group' => 'Змінити групу', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => 'Редагувати налаштування перенесення', 'edit_user' => 'Редагувати користувача', @@ -613,6 +614,7 @@ URL: [url]', 'group_members' => 'Члени групи', 'group_receipt_summary' => 'Підсумки отримання групи', 'group_review_summary' => 'Підсумки рецензування групи', +'group_revision_summary' => '', 'guest_login' => 'Увійти як гість', 'guest_login_disabled' => 'Гостьовий вхід відключено', 'hash' => '', @@ -815,6 +817,7 @@ URL: [url]', URL: [url]', 'new_subfolder_email_subject' => '[sitename]: новий каталог «[name]»', 'new_user_image' => 'Нове зображення', +'next_revision_abbr' => '', 'next_state' => 'Новий стан', 'nl_NL' => 'Dutch', 'no' => 'Ні', @@ -1070,6 +1073,7 @@ URL: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => 'Ревізори', 'revisor_already_assigned' => 'Ревізор вже призначений', 'revisor_already_removed' => 'Ревізора вже видалено', @@ -1422,6 +1426,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'Інші налаштування. Логін по замовчуванню: admin/admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => 'Не знайдено', 'settings_Notification' => 'Налаштування сповіщення', 'settings_notwritable' => 'Конфігурація не може бути збережена, тому що файл налаштувань доступний лише на читання.', @@ -1587,6 +1593,7 @@ URL: [url]', 'splash_edit_group' => 'Групу збережено', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => 'Користувача збережено', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1808,6 +1815,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Ця операція створить файли версій для всього каталогу. Після створення файли версій будуть збережені в каталозі документів.', 'versioning_info' => 'Інформація про версії', 'versiontolow' => 'Версія надто стара', +'version_comment' => '', 'version_deleted_email' => 'Версію видалено', 'version_deleted_email_body' => 'Версію видалено Документ: [name] diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 4bb139c98..38b65440d 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -466,6 +466,7 @@ URL: [url]', 'edit_folder_props' => '编辑文件夹', 'edit_group' => '编辑组别', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '', 'edit_user' => '编辑用户', @@ -609,6 +610,7 @@ URL: [url]', 'group_members' => '组成员', 'group_receipt_summary' => '', 'group_review_summary' => '校对组汇总', +'group_revision_summary' => '', 'guest_login' => '来宾登录', 'guest_login_disabled' => '来宾登录被禁止', 'hash' => '哈希', @@ -812,6 +814,7 @@ URL: [url]', URL: [url]', 'new_subfolder_email_subject' => '[sitename]: [name] - 新建文件夹', 'new_user_image' => '新建图片', +'next_revision_abbr' => '', 'next_state' => '新建状态', 'nl_NL' => '荷兰语', 'no' => '否', @@ -1052,6 +1055,7 @@ URL: [url]', 'revision_status' => '修订状态', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '修订人', 'revisor_already_assigned' => '用户已被分配为修订人', 'revisor_already_removed' => '修订人已经从修订过程中删除,或者已经修改了文档。', @@ -1403,6 +1407,8 @@ URL: [url]', 'settings_maxUploadSize' => '上传文件尺寸上限', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '更多设置。默认登陆账户: admin / admin', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => '未找到', 'settings_Notification' => '通知设置', 'settings_notwritable' => '设置_不可写', @@ -1568,6 +1574,7 @@ URL: [url]', 'splash_edit_group' => '组已保存', 'splash_edit_role' => '角色已保存', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => '用户信息已保存', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '移除下载链接时报错', @@ -1780,6 +1787,7 @@ URL: [url]', 'versioning_file_creation_warning' => '通过此操作,您可以一个包含整个DMS文件夹的版本信息文件. 版本文件一经创建,每个文件都将保存到文件夹中.', 'versioning_info' => '版本信息', 'versiontolow' => '', +'version_comment' => '', 'version_deleted_email' => '版本已被删除', 'version_deleted_email_body' => '版本已删除 文档: [name] diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 576fcd0b2..22f75800c 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/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 (2418) +// Translators: Admin (2421) $text = array( '2_factor_auth' => '', @@ -252,7 +252,7 @@ URL: [url]', 'comment' => '說明', 'comment_changed_email' => '', 'comment_for_current_version' => '版本說明', -'configure_extension' => '', +'configure_extension' => '配置擴充套件', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => '確認已新增之全文索引', 'confirm_move_document' => '', @@ -411,6 +411,7 @@ URL: [url]', 'edit_folder_props' => '編輯資料夾', 'edit_group' => '編輯組別', 'edit_online' => '', +'edit_online_warning' => '', 'edit_task' => '', 'edit_transmittal_props' => '', 'edit_user' => '編輯用戶', @@ -472,7 +473,7 @@ URL: [url]', 'export' => '', 'extension_archive' => '', 'extension_changelog' => '修改紀錄', -'extension_loading' => '', +'extension_loading' => '擴充套件讀取中', 'extension_manager' => '整體索引進度', 'extension_mgr_installed' => '已安裝', 'extension_mgr_no_upload' => '無法上傳新的套件因為套件目錄無法寫入', @@ -534,6 +535,7 @@ URL: [url]', 'group_members' => '組成員', 'group_receipt_summary' => '', 'group_review_summary' => '校對組匯總', +'group_revision_summary' => '', 'guest_login' => '來賓登錄', 'guest_login_disabled' => '來賓登錄被禁止', 'hash' => '', @@ -661,7 +663,7 @@ URL: [url]', 'login_restrictions_apply' => '', 'logout' => '登出', 'log_management' => '日誌管理', -'lo_LA' => '', +'lo_LA' => '位置', 'malformed_expiration_date' => '', 'manager' => '管理員', 'manager_of_group' => '', @@ -721,6 +723,7 @@ URL: [url]', 'new_subfolder_email_body' => '', 'new_subfolder_email_subject' => '', 'new_user_image' => '新建圖片', +'next_revision_abbr' => '', 'next_state' => '', 'nl_NL' => '荷蘭語', 'no' => '否', @@ -913,6 +916,7 @@ URL: [url]', 'revision_status' => '', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', +'revision_summary' => '', 'revisors' => '', 'revisor_already_assigned' => '', 'revisor_already_removed' => '', @@ -1252,6 +1256,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '', +'settings_noFormFields' => '', +'settings_noFormFields_desc' => '', 'settings_notfound' => '', 'settings_Notification' => '通知設置', 'settings_notwritable' => '', @@ -1417,6 +1423,7 @@ URL: [url]', 'splash_edit_group' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', +'splash_edit_transmittal' => '', 'splash_edit_user' => '', 'splash_error_add_to_transmittal' => '', 'splash_error_rm_download_link' => '', @@ -1629,6 +1636,7 @@ URL: [url]', 'versioning_file_creation_warning' => '通過此操作,您可以一個包含整個DMS資料夾的版本資訊檔. 版本檔一經創建,每個檔都將保存到資料夾中.', 'versioning_info' => '版本資訊', 'versiontolow' => '', +'version_comment' => '', 'version_deleted_email' => '版本已被刪除', 'version_deleted_email_body' => '', 'version_deleted_email_subject' => '', From ed83d95e6da45d8cbcf0b5f44225c0e9703c5edb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 19 Dec 2019 09:44:18 +0100 Subject: [PATCH 320/467] minor change of two keys --- languages/ar_EG/lang.inc | 4 ++-- languages/bg_BG/lang.inc | 4 ++-- languages/ca_ES/lang.inc | 4 ++-- languages/cs_CZ/lang.inc | 4 ++-- languages/de_DE/lang.inc | 4 ++-- languages/el_GR/lang.inc | 4 ++-- languages/en_GB/lang.inc | 4 ++-- languages/es_ES/lang.inc | 4 ++-- languages/fr_FR/lang.inc | 4 ++-- languages/hr_HR/lang.inc | 4 ++-- languages/hu_HU/lang.inc | 4 ++-- languages/it_IT/lang.inc | 4 ++-- languages/ko_KR/lang.inc | 4 ++-- languages/lo_LA/lang.inc | 4 ++-- languages/nl_NL/lang.inc | 4 ++-- languages/pl_PL/lang.inc | 4 ++-- languages/pt_BR/lang.inc | 4 ++-- languages/ro_RO/lang.inc | 4 ++-- languages/ru_RU/lang.inc | 4 ++-- languages/sk_SK/lang.inc | 4 ++-- languages/sv_SE/lang.inc | 4 ++-- languages/tr_TR/lang.inc | 4 ++-- languages/uk_UA/lang.inc | 4 ++-- languages/zh_CN/lang.inc | 4 ++-- languages/zh_TW/lang.inc | 4 ++-- 25 files changed, 50 insertions(+), 50 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index f5d76fb4b..f9f241f31 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -1389,8 +1389,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => '', 'settings_Notification' => '', 'settings_notwritable' => 'ﻻ ﻲﻤﻜﻧ ﺢﻔﻇ ﺎﻠﺘﻛﻮﻴﻧ ﻸﻧ ﻢﻠﻓ ﺎﻠﺘﻛﻮﻴﻧ ﻎﻳﺭ ﻕﺎﺒﻟ ﻞﻠﻜﺗﺎﺑﺓ', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 5e6d58808..108636bd8 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -1252,8 +1252,8 @@ $text = array( 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'Още настройки. Логин по подразбиране: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Не е намерено', 'settings_Notification' => 'Настройка за известяване', 'settings_notwritable' => 'Конфигурацията не може да бъде съхранена, защото файлът на конфигурацията е само за четене.', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 6ade3b629..261339bad 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -1257,8 +1257,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => '', 'settings_Notification' => '', 'settings_notwritable' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 93cbd0d66..c22ed3ba1 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -1468,8 +1468,8 @@ Jméno: [username] 'settings_maxUploadSize' => 'Maximální velikost nahraných souborů', 'settings_maxUploadSize_desc' => 'Toto je maximální velikost nahraných souborů. Bude mít vliv na verze dokumentů a přílohy.', 'settings_more_settings' => 'Konfigurovat další nastavení. Výchozí přihlášení: admin / admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Nenalezeno', 'settings_Notification' => 'Nastavení upozornění', 'settings_notwritable' => 'Konfigurace nemůže být uložena, protože se do konfiguračního souboru nedá zapsat.', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index ab04466e2..ebf627712 100644 --- a/languages/de_DE/lang.inc +++ b/languages/de_DE/lang.inc @@ -1478,8 +1478,8 @@ Name: [username] 'settings_maxUploadSize' => 'Maximale Größe hochzuladener Dateien', 'settings_maxUploadSize_desc' => 'Dies ist die maximale Größe einer hochzuladenen Datei. Es begrenzt sowohl Dokumentenversionen als auch Anhänge.', 'settings_more_settings' => 'Weitere Einstellungen. Login mit admin/admin', -'settings_noFormFields' => 'Diese Felder nicht zeigen', -'settings_noFormFields_desc' => 'Diese Felder werden bei der Neuanlage und beim Bearbeiten eines Dokuments nicht angezeigt. Bestehende Werte werden beibehalten.', +'settings_noDocumentFormFields' => 'Diese Felder nicht zeigen', +'settings_noDocumentFormFields_desc' => 'Diese Felder werden bei der Neuanlage und beim Bearbeiten eines Dokuments nicht angezeigt. Bestehende Werte werden beibehalten.', 'settings_notfound' => 'Nicht gefunden', 'settings_Notification' => 'Benachrichtigungen-Einstellungen', 'settings_notwritable' => 'Die Konfiguration kann nicht gespeichert werden, weil die Konfigurationsdatei nicht schreibbar ist.', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index 04bdd53e8..f29395c96 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -1263,8 +1263,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => '', 'settings_Notification' => '', 'settings_notwritable' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index c720e74f2..d288ca3b4 100644 --- a/languages/en_GB/lang.inc +++ b/languages/en_GB/lang.inc @@ -1473,8 +1473,8 @@ Name: [username] 'settings_maxUploadSize' => 'Maxium size for uploaded files', 'settings_maxUploadSize_desc' => 'This is the maximum size for uploaded files. It will take affect for document versions and attachments.', 'settings_more_settings' => 'Configure more settings. Default login: admin/admin', -'settings_noFormFields' => 'Do not show this fields', -'settings_noFormFields_desc' => 'This fields will not been show when adding or edition a document. Existing values will be kept.', +'settings_noDocumentFormFields' => 'Do not show this fields', +'settings_noDocumentFormFields_desc' => 'This fields will not been show when adding or edition a document. Existing values will be kept.', 'settings_notfound' => 'Not found', 'settings_Notification' => 'Notification settings', 'settings_notwritable' => 'The configuration cannot be saved because the configuration file is not writable.', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 362cdd090..95a8113ed 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -1404,8 +1404,8 @@ URL: [url]', 'settings_maxUploadSize' => 'Tamaño máximo de subida archivos', 'settings_maxUploadSize_desc' => 'Tamaño máximo de archivos a cargar. Se tomará en cuenta para versiones de documentos y anexos de correo electrónico', 'settings_more_settings' => 'Configure más parámetros. Acceso por defecto: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'No encontrado', 'settings_Notification' => 'Parámetros de notificación', 'settings_notwritable' => 'La configuración no se puede guardar porque el fichero de configuración no es escribible.', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 7689bf37d..151063a97 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -1457,8 +1457,8 @@ Nom : [username] 'settings_maxUploadSize' => 'Taille max. des fichiers', 'settings_maxUploadSize_desc' => 'Taille maximale (en octets) pour les fichiers téléversés. Concerne les versions d’un document et les fichiers attachés.', 'settings_more_settings' => 'Configurer d\'autres paramètres. Connexion par défaut: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Introuvable', 'settings_Notification' => 'Notifications', 'settings_notwritable' => 'La configuration ne peut pas être enregistrée car le fichier de configuration n’est pas accessible en écriture.', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 87535ebb7..e9d99399d 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -1425,8 +1425,8 @@ Internet poveznica: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'Konfiguriraj više postavki. Zadana prijava: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Nije pronađeno', 'settings_Notification' => 'Postavke bilježenja', 'settings_notwritable' => 'Konfiguracija se ne može pohraniti jer datoteka konfiguracije nema mogućnost upisivanja.', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index de3034b48..3548c9f9c 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -1403,8 +1403,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'További beállítások konfigurálása. Alapértelmezett bejelentkezés: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Nem található', 'settings_Notification' => 'Értesítés beállításai', 'settings_notwritable' => 'A konfiguráció nem menthető, mert a konfigurációs állomány nem írható.', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 89127ad1d..9e8715e6f 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -1459,8 +1459,8 @@ Name: [username] 'settings_maxUploadSize' => 'Dimensiona massima dei file da caricare', 'settings_maxUploadSize_desc' => 'Questa è la dimensiona massima del file da caricare. Avrà impatto sulla versione del documento e sull\'allegato.', 'settings_more_settings' => 'Ulteriori configurazioni. Login di default: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Non trovato', 'settings_Notification' => 'Impostazioni di notifica', 'settings_notwritable' => 'La configurazione non può essere salvata perchè il file di configurazione non può essere sovrascritto.', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index bc7c0dc49..ede9add6d 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -1419,8 +1419,8 @@ URL : [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '기타 설정을 구성합니다. 기본 로그인 : admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => '찾을 수 없음', 'settings_Notification' => '알림 설정', 'settings_notwritable' => '구성값을 저장할 수 없습니다 구성 파일에 쓰기 권한이 없습니다.', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index f244c1de9..0d0a86ca5 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -1452,8 +1452,8 @@ URL: [url]', 'settings_maxUploadSize' => 'ขนาดสูงสุดสำหรับไฟล์ที่อัปโหลด.', 'settings_maxUploadSize_desc' => 'ນີ້ຄືຂະໜາດສູງສຸດສຳລັບໄຟລທີອັບໂຫລດ ຈະມີຜົນຕໍ່ເວີຊັນເອກະສານແລະ ເອກະສານແນບ', 'settings_more_settings' => 'กำหนดค่าการตั้งค่าเพิ่มเติม ค่าเริ่มต้นการเข้าสู่ระบบ: ผู้ดูแลระบบ / ผู้ดูแลระบบ.', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'ເຂົ້າລະບົບ', 'settings_Notification' => 'ການຕັ້ງຄ່າການແຈ້ງເຕືອນ', 'settings_notwritable' => 'ການກຳນົດຄ່າທີ່ບໍ່ສາມາດບັນທືກໄດ້ຍ້ອນວ່າໄຟລກຳນົດຄ່າບໍ່ສາມາດຂຽນໄດ້', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 884849f29..8b42c8adf 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -1449,8 +1449,8 @@ Name: [username] 'settings_maxUploadSize' => 'Maximale omvang voor uploaden', 'settings_maxUploadSize_desc' => 'Dit is de maximale omvang voor te uploaden bestanden. Dat geldt voor bestanden en bijlagen.', 'settings_more_settings' => 'Meer instellingen. Standaard login: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Niet gevonden', 'settings_Notification' => 'Notificatie instellingen', 'settings_notwritable' => 'De configuratie kan niet opgeslagen worden omdat het configuratiebestand niet beschrijfbaar is.', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 89ab5e925..e9f01958a 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -1383,8 +1383,8 @@ URL: [url]', 'settings_maxUploadSize' => 'Maksymalny rozmiar wysyłanych plików', 'settings_maxUploadSize_desc' => 'To jest maksymalny rozmiar dla nadesłanych plików. To ustawienie wpływa również na wersje dokumentu i załączniki.', 'settings_more_settings' => 'Wykonaj dalszą konfigurację. Domyślny login/hasło: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Nie znaleziono', 'settings_Notification' => 'Ustawienia powiadomień', 'settings_notwritable' => 'Konfiguracja nie może zostać zapisana ponieważ plik konfiguracyjny nie jest zapisywalny.', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 1ddfc6a75..9e264c39f 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -1471,8 +1471,8 @@ Nome: [username] 'settings_maxUploadSize' => 'Tamanho máximo para arquivos enviados.', 'settings_maxUploadSize_desc' => 'Esse é o tamanho máximo dos arquivos enviados. Ele terá efeito para versões de documentos e anexos.', 'settings_more_settings' => 'Configurar outras configurações. Login padrão: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Não encontrado', 'settings_Notification' => 'Configurações de notificação', 'settings_notwritable' => 'A configuração não pode ser salva porque o arquivo de configuração não é gravável.', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index 2651de592..f074695a5 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -1426,8 +1426,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'Configurare mai multe setări. Autentificare implicită: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Nu a fost găsit', 'settings_Notification' => 'Setările de notificare', 'settings_notwritable' => 'Configurația nu poate fi salvată deoarece fișierul de configurare nu poate fi scris.', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index ec0a04b9f..f8ea3b82c 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -1433,8 +1433,8 @@ URL: [url]', 'settings_maxUploadSize' => 'Максимальный размер загружаемых файлов', 'settings_maxUploadSize_desc' => 'Это максимальный размер загружаемых файлов. Он повлияет на версии документов и вложения.', 'settings_more_settings' => 'Прочие настройки. Логин по умолчанию: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Не найден', 'settings_Notification' => 'Настройки извещения', 'settings_notwritable' => 'Конфигурация не может быть сохранена, потому что файл конфигурации только для чтения.', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 6b5a76835..d85348683 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -1473,8 +1473,8 @@ Meno: [username] 'settings_maxUploadSize' => 'Maximálna veľkosť pre nahrávané súbory', 'settings_maxUploadSize_desc' => 'This is the maximum size for uploaded files. It will take affect for document versions and attachments.', 'settings_more_settings' => 'Configure more settings. Default login: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Nenájdené', 'settings_Notification' => 'Nastavenia notifikácií', 'settings_notwritable' => 'The configuration cannot be saved because the configuration file is not writable.', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index 7c962fdc9..9bb89509a 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -1446,8 +1446,8 @@ Kommentar: [comment]', 'settings_maxUploadSize' => 'Max storlek (bytes) för uppladdadning av fil', 'settings_maxUploadSize_desc' => 'Detta är den maximala storleken för uppladdning av filer. Begränsningen anges i bytes (1 GB = ca 1 000 000 000 bytes)', 'settings_more_settings' => 'Konfigurera flera inställningar. Standard-inloggning: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Hittades inte', 'settings_Notification' => 'Meddelandeinställningar', 'settings_notwritable' => 'Konfigurationen kunde inte sparas, eftersom konfigurationsfilen inte är skrivbar.', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index ec23b635a..290652111 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -1405,8 +1405,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'Daha fazla ayar yapın. Varsayılan kullanıcı adı/parola: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Bulunamadı', 'settings_Notification' => 'Bildirim ayarları', 'settings_notwritable' => 'Konfigürasyon dosyası yazılabilir olmadığından ayarlar kaydedilmeyecek.', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 1e53e7a9b..6358e0149 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -1426,8 +1426,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => 'Інші налаштування. Логін по замовчуванню: admin/admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Не знайдено', 'settings_Notification' => 'Налаштування сповіщення', 'settings_notwritable' => 'Конфігурація не може бути збережена, тому що файл налаштувань доступний лише на читання.', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 38b65440d..dfb71351d 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -1407,8 +1407,8 @@ URL: [url]', 'settings_maxUploadSize' => '上传文件尺寸上限', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '更多设置。默认登陆账户: admin / admin', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => '未找到', 'settings_Notification' => '通知设置', 'settings_notwritable' => '设置_不可写', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 22f75800c..02d6819c4 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -1256,8 +1256,8 @@ URL: [url]', 'settings_maxUploadSize' => '', 'settings_maxUploadSize_desc' => '', 'settings_more_settings' => '', -'settings_noFormFields' => '', -'settings_noFormFields_desc' => '', +'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => '', 'settings_Notification' => '通知設置', 'settings_notwritable' => '', From c9aaa689252565b5fe26acdac47c33523311a156 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 19 Dec 2019 10:03:24 +0100 Subject: [PATCH 321/467] preset value for sequence if sequenc cannot be edited --- views/bootstrap/class.AddDocument.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index b97e45d08..62f7b1b21 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -239,6 +239,22 @@ $(document).ready(function() { } if(!$nodocumentformfields || !in_array('sequence', $nodocumentformfields)) { $this->formField(getMLText("sequence"), $this->getSequenceChooser($folder->getDocuments('s')).($orderby != 's' ? "
          ".getMLText('order_by_sequence_off') : '')); + } else { + $minmax = $folder->getDocumentsMinMax(); + if($this->params['defaultposition'] == 'start') { + $seq = $minmax['min'] - 1; + } else { + $seq = $minmax['max'] + 1; + } + $this->formField( + null, + array( + 'element'=>'input', + 'type'=>'hidden', + 'name'=>'sequence', + 'value'=>$seq, + ) + ); } if(!$nodocumentformfields || !in_array('expires', $nodocumentformfields)) { if($presetexpiration) { From 1f8c5fe7c3532154033375f5f892f4cfa09cfaa3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 19 Dec 2019 16:08:10 +0100 Subject: [PATCH 322/467] workflows can be turned off completely --- CHANGELOG | 3 +++ out/out.UpdateDocument.php | 1 + views/bootstrap/class.AddDocument.php | 4 +++- views/bootstrap/class.Search.php | 2 +- views/bootstrap/class.Settings.php | 2 +- views/bootstrap/class.UpdateDocument.php | 5 +++++ views/bootstrap/class.UsrMgr.php | 2 +- views/bootstrap/class.ViewDocument.php | 8 ++++---- views/bootstrap/class.ViewFolder.php | 1 - 9 files changed, 19 insertions(+), 9 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 91805b81b..a0fda89eb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,9 @@ - new hooks leftContentPre and leftContentPost - minimize sql queries when fetching sub folders and documents of a folder - custom attributes can be validated in a hook +- document attributes comment, keywords, categories, expiration date, and sequence + can be turned of in the configuration +- workflows can be turned off completely -------------------------------------------------------------------------------- Changes in version 5.1.13 diff --git a/out/out.UpdateDocument.php b/out/out.UpdateDocument.php index 796c8852f..083103d65 100644 --- a/out/out.UpdateDocument.php +++ b/out/out.UpdateDocument.php @@ -69,6 +69,7 @@ if($view) { $view->setParam('folder', $folder); $view->setParam('document', $document); $view->setParam('strictformcheck', $settings->_strictFormCheck); + $view->setParam('nodocumentformfields', $settings->_noDocumentFormFields); $view->setParam('enablelargefileupload', $settings->_enableLargeFileUpload); $view->setParam('enableadminrevapp', $settings->_enableAdminRevApp); $view->setParam('enableownerrevapp', $settings->_enableOwnerRevApp); diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index 62f7b1b21..36ccdf1e6 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -345,6 +345,7 @@ $(document).ready(function() { $this->getDropFolderChooserHtml("form1", $dropfolderfile) ); } + if(!$nodocumentformfields || !in_array('version_comment', $nodocumentformfields)) { $this->formField( getMLText("comment_for_current_version"), array( @@ -363,6 +364,7 @@ $(document).ready(function() { 'value'=>1 ) ); + } $attrdefs = $dms->getAllAttributeDefinitions(array(SeedDMS_Core_AttributeDefinition::objtype_documentcontent, SeedDMS_Core_AttributeDefinition::objtype_all)); if($attrdefs) { foreach($attrdefs as $attrdef) { @@ -429,7 +431,7 @@ $(document).ready(function() { ); } $this->warningMsg(getMLText("add_doc_workflow_warning")); - } else { + } elseif($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { if($workflowmode == 'traditional') { $this->contentSubHeading(getMLText("assign_reviewers")); diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index f7d5ade23..f4d49f049 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -277,7 +277,7 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { - + diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 9ca469a16..6d43adc72 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -421,7 +421,7 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); -- SETTINGS - ADVANCED - EDITION --> showConfigHeadline('settings_Edition'); ?> -showConfigOption('settings_workflowMode', 'workflowMode', array('traditional'=>'settings_workflowMode_valtraditional', 'traditional_only_approval'=>'settings_workflowMode_valtraditional_only_approval', 'advanced'=>'settings_workflowMode_valadvanced'), false, true); ?> +showConfigOption('settings_workflowMode', 'workflowMode', array('traditional'=>'settings_workflowMode_valtraditional', 'traditional_only_approval'=>'settings_workflowMode_valtraditional_only_approval', 'advanced'=>'settings_workflowMode_valadvanced', 'none'=>'settings_workflowMode_valnone'), false, true); ?> showConfigText('settings_versioningFileName', 'versioningFileName'); ?> showConfigText('settings_presetExpirationDate', 'presetExpirationDate'); ?> showConfigCheckbox('settings_allowReviewerOnly', 'allowReviewerOnly'); ?> diff --git a/views/bootstrap/class.UpdateDocument.php b/views/bootstrap/class.UpdateDocument.php index a75e27de6..12ce32cb6 100644 --- a/views/bootstrap/class.UpdateDocument.php +++ b/views/bootstrap/class.UpdateDocument.php @@ -142,6 +142,7 @@ console.log(element); $folder = $this->params['folder']; $document = $this->params['document']; $strictformcheck = $this->params['strictformcheck']; + $nodocumentformfields = $this->params['nodocumentformfields']; $enablelargefileupload = $this->params['enablelargefileupload']; $maxuploadsize = $this->params['maxuploadsize']; $enableadminrevapp = $this->params['enableadminrevapp']; @@ -230,6 +231,7 @@ console.log(element); $this->getDropFolderChooserHtml("form1") ); } + if(!$nodocumentformfields || !in_array('version_comment', $nodocumentformfields)) { $this->formField( getMLText("comment"), array( @@ -239,6 +241,8 @@ console.log(element); 'cols'=>80 ) ); + } + if(!$nodocumentformfields || !in_array('expires', $nodocumentformfields)) { if($presetexpiration) { if(!($expts = strtotime($presetexpiration))) $expts = false; @@ -265,6 +269,7 @@ console.log(element); getMLText("expires"), $this->getDateChooser(($expts ? date('Y-m-d', $expts) : ''), "expdate", $this->params['session']->getLanguage()) ); + } $attrdefs = $dms->getAllAttributeDefinitions(array(SeedDMS_Core_AttributeDefinition::objtype_documentcontent, SeedDMS_Core_AttributeDefinition::objtype_all)); if($attrdefs) { foreach($attrdefs as $attrdef) { diff --git a/views/bootstrap/class.UsrMgr.php b/views/bootstrap/class.UsrMgr.php index 64a3a5d62..60bb7c63c 100644 --- a/views/bootstrap/class.UsrMgr.php +++ b/views/bootstrap/class.UsrMgr.php @@ -483,7 +483,7 @@ $(document).ready( function() { 'options'=>$options ) ); - } else { + } elseif($workflowmode == 'advanced') { $workflows = $dms->getAllWorkflows(); if($workflows) { $this->contentSubHeading(getMLText("workflow")); diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index c77a156ea..e5fa08219 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -486,7 +486,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { $needwkflaction = false; if($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { - } else { + } elseif($workflowmode == 'advanced') { $workflow = $latestContent->getWorkflow(); if($workflow) { $workflowstate = $latestContent->getWorkflowState(); @@ -528,7 +528,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
        • @@ -670,7 +670,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { if($accessop->maySetReviewersApprovers()) { print "
        • ".getMLText("change_assignments")."
        • "; } - } else { + } elseif($workflowmode == 'advanced') { if($accessop->maySetWorkflow()) { if(!$workflow) { print "
        • ".getMLText("set_workflow")."
        • "; @@ -961,7 +961,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
          params['expandFolderTree']; $showtree = $this->params['showtree']; $cachedir = $this->params['cachedir']; - $workflowmode = $this->params['workflowmode']; $enableRecursiveCount = $this->params['enableRecursiveCount']; $maxRecursiveCount = $this->params['maxRecursiveCount']; $maxItemsPerPage = $this->params['maxItemsPerPage']; From 849351e58bef68f1782f388ae8d705f761b9d76d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 20 Dec 2019 10:53:09 +0100 Subject: [PATCH 323/467] add js for updateDropFolder only if drop folder list is enabled --- views/bootstrap/class.Bootstrap.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 7ac878713..cc3b53689 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -166,6 +166,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; echo ''."\n"; if($this->params['enablemenutasks'] && isset($this->params['user']) && $this->params['user']) { $this->addFooterJS('checkTasks();'); + } + if($this->params['enabledropfolderlist'] && isset($this->params['user']) && $this->params['user']) { $this->addFooterJS('updateDropFolder();'); } if($this->footerjs) { From 16ca3dc96ae3d7f238db83b99946e28ad3d66148 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 20 Dec 2019 10:54:42 +0100 Subject: [PATCH 324/467] init $tasks to empty array --- views/bootstrap/class.Tasks.php | 1 + 1 file changed, 1 insertion(+) diff --git a/views/bootstrap/class.Tasks.php b/views/bootstrap/class.Tasks.php index 8146e9beb..7b1bcfe48 100644 --- a/views/bootstrap/class.Tasks.php +++ b/views/bootstrap/class.Tasks.php @@ -40,6 +40,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style { $dms = $this->params['dms']; $user = $this->params['user']; $workflowmode = $this->params['workflowmode']; + $tasks = array(); if($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { $tasks['approval'] = array(); if($workflowmode == 'traditional') From 3f14dcf4dbb4131785ebb4e356d7487e694bbe6e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 20 Dec 2019 14:17:00 +0100 Subject: [PATCH 325/467] get settings from view --- views/bootstrap/class.ExtensionMgr.php | 1 + 1 file changed, 1 insertion(+) diff --git a/views/bootstrap/class.ExtensionMgr.php b/views/bootstrap/class.ExtensionMgr.php index 18f607109..2357b6d25 100644 --- a/views/bootstrap/class.ExtensionMgr.php +++ b/views/bootstrap/class.ExtensionMgr.php @@ -135,6 +135,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; + $settings = $this->params['settings']; $httproot = $this->params['httproot']; $extdir = $this->params['extdir']; $version = $this->params['version']; From d5a937fbc865e9695cddff2102823bcf3f8746d7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 20 Dec 2019 14:17:48 +0100 Subject: [PATCH 326/467] minor modification of folder tree --- views/bootstrap/class.Bootstrap.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index cc3b53689..1bed85442 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1621,7 +1621,7 @@ $(document).ready(function() { $subfolders = array($pathfolder); } foreach($subfolders as $subfolder) { - $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs)) ? true : false, 'is_folder'=>true); + $node = array('label'=>$subfolder->getName(), 'id'=>$subfolder->getID(), 'load_on_demand'=>(0 && ($subfolder->hasSubFolders() || ($subfolder->hasDocuments() && $showdocs))) ? true : false, 'is_folder'=>true); if(/*$expandtree>=$level ||*/ $pathfolder->getID() == $subfolder->getID()) { $node['children'] = jqtree($path, $subfolder, $user, $accessmode, $showdocs, $expandtree, $orderby, $level+1); if($showdocs) { @@ -1662,7 +1662,7 @@ $(document).ready(function() { $node['load_on_demand'] = true; $node['children'] = array(); } else { - $node['children'] = jqtree($path, $folder, $this->params['user'], $accessmode, $showdocs, 0 /*$expandtree*/, $orderby, 0); + $node['children'] = jqtree($path, $folder, $this->params['user'], $accessmode, $showdocs, 1 /*$expandtree*/, $orderby, 0); if($showdocs) { $documents = $folder->getDocuments(isset($orderby[0]) ? $orderby[0] : '', $orderdir); $documents = SeedDMS_Core_DMS::filterAccess($documents, $this->params['user'], $accessmode); @@ -1712,7 +1712,7 @@ $(function() { } }); // Unfold node for currently selected folder - $('#jqtree').tree('openNode', $('#jqtree').tree('getNodeById', ), false); + $('#jqtree').tree('selectNode', $('#jqtree').tree('getNodeById', ), false); $('#jqtree').on( 'tree.click', function(event) { From cb9ce2a42fb778404ca0403ea75976ab3874823e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 20 Dec 2019 17:18:08 +0100 Subject: [PATCH 327/467] add methods for enabling/disabling an extension --- inc/inc.ClassSettings.php | 59 +++++++++++++++++++++++++++++++++------ 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 35ed72a4b..e63d0202b 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -418,7 +418,7 @@ class Settings { /* {{{ */ * * @return true/false */ - function load($configFilePath) { /* {{{ */ + public function load($configFilePath) { /* {{{ */ $contents = file_get_contents($configFilePath); if(!$contents) { return false; @@ -714,6 +714,9 @@ class Settings { /* {{{ */ foreach($extensions as $extension) { $tmp = $extension->attributes(); $extname = strval($tmp['name']); + if(isset($tmp['disable'])) + $disabled = strval($tmp['disable']); + $this->_extensions[$extname]['__disable__'] = $disabled=='1' || $disabled == 'true' ? true : false; foreach($extension->children() as $parameter) { $tmp2 = $parameter->attributes(); $this->_extensions[$extname][strval($tmp2['name'])] = strval($parameter); @@ -733,7 +736,7 @@ class Settings { /* {{{ */ * * @return true/false */ - function setXMLAttributValue($node, $attributName, $attributValue) { /* {{{ */ + protected function setXMLAttributValue($node, $attributName, $attributValue) { /* {{{ */ if (is_bool($attributValue)) { if ($attributValue) $attributValue = "true"; @@ -757,7 +760,7 @@ class Settings { /* {{{ */ * * @return SimpleXMLElement */ - function getXMLNode($rootNode, $parentNodeName, $name) { /* {{{ */ + protected function getXMLNode($rootNode, $parentNodeName, $name) { /* {{{ */ $node = $rootNode->xpath($parentNodeName . '/' . $name); if (empty($node)) { @@ -777,7 +780,7 @@ class Settings { /* {{{ */ * * @return true/false */ - function save($configFilePath=NULL) { /* {{{ */ + public function save($configFilePath=NULL) { /* {{{ */ if (is_null($configFilePath)) $configFilePath = $this->_configFilePath; @@ -1050,6 +1053,7 @@ class Settings { /* {{{ */ // search XML node $extnode = $extnodes->addChild('extension'); $this->setXMLAttributValue($extnode, 'name', $name); + $this->setXMLAttributValue($extnode, 'disable', $extension['__disable__'] ? 'true' : 'false'); /* New code saves all parameters of the extension which have been set * in configuration form. */ @@ -1082,7 +1086,7 @@ class Settings { /* {{{ */ * search and return Config File Path * @return NULL|string Config File Path */ - function searchConfigFilePath() { /* {{{ */ + protected function searchConfigFilePath() { /* {{{ */ $configFilePath = null; if($configDir = Settings::getConfigDir()) { @@ -1139,7 +1143,7 @@ class Settings { /* {{{ */ * * @return string */ - function curPageURL() { /* {{{ */ + protected function curPageURL() { /* {{{ */ $pageURL = 'http'; if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") { @@ -1164,7 +1168,7 @@ class Settings { /* {{{ */ * @param string $file name of file to search * @return string path where file was found */ - function findInIncPath($file) { /* {{{ */ + protected function findInIncPath($file) { /* {{{ */ $incarr = explode(PATH_SEPARATOR, ini_get('include_path')); $found = ''; foreach($incarr as $path) { @@ -1180,7 +1184,7 @@ class Settings { /* {{{ */ * * @return array */ - function check($minversion) { /* {{{ */ + public function check($minversion) { /* {{{ */ // suggestion rootdir if (file_exists("../inc/inc.Settings.php")) $rootDir = realpath ("../inc/inc.Settings.php"); @@ -1425,7 +1429,7 @@ class Settings { /* {{{ */ * @return array * */ - function checkSystem() { /* {{{ */ + public function checkSystem() { /* {{{ */ // result $result = array(); @@ -1512,6 +1516,43 @@ class Settings { /* {{{ */ return $result; } /* }}} */ + /** + * Check if extension is disabled + * + * @param string $extname name of extension + * @return true if extension is disabled + */ + public function extensionIsDisabled($extname) { /* {{{ */ + if(array_key_exists($extname, $this->_extensions)) + return $this->_extensions[$extname]['__disable__']; + + return false; + } /* }}} */ + + /** + * Set extension enabled + * + * @param string $extname name of extension + * @return + */ + public function enableExtension($extname) { /* {{{ */ + if(!array_key_exists($extname, $this->_extensions)) + $this->_extensions[$extname] = array(); + $this->_extensions[$extname]['__disable__'] = false; + } /* }}} */ + + /** + * Set extension enabled + * + * @param string $extname name of extension + * @return + */ + public function disableExtension($extname) { /* {{{ */ + if(!array_key_exists($extname, $this->_extensions)) + $this->_extensions[$extname] = array(); + $this->_extensions[$extname]['__disable__'] = true; + } /* }}} */ + } /* }}} */ ?> From b3ffdd3b7d1fd20d7e2078de337b70dbca40be38 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 20 Dec 2019 17:20:15 +0100 Subject: [PATCH 328/467] extension are disabled in the settings the configuration of the extension will no longer work for disabling an extension --- controllers/class.ExtensionMgr.php | 15 +++ inc/inc.ClassUI.php | 6 +- inc/inc.Extension.php | 8 +- op/op.ExtensionMgr.php | 19 ++- views/bootstrap/class.ExtensionMgr.php | 165 +++++++++++++++---------- 5 files changed, 142 insertions(+), 71 deletions(-) diff --git a/controllers/class.ExtensionMgr.php b/controllers/class.ExtensionMgr.php index 9cae083e4..efd4fbd94 100644 --- a/controllers/class.ExtensionMgr.php +++ b/controllers/class.ExtensionMgr.php @@ -78,4 +78,19 @@ class SeedDMS_Controller_ExtensionMgr extends SeedDMS_Controller_Common { return true; } /* }}} */ + public function toggle() { /* {{{ */ + $dms = $this->params['dms']; + $settings = $this->params['settings']; + $extmgr = $this->params['extmgr']; + $extname = $this->params['extname']; + + if($settings->extensionIsDisabled($extname)) + $settings->enableExtension($extname); + else + $settings->disableExtension($extname); + $settings->save(); + + return true; + } /* }}} */ + } diff --git a/inc/inc.ClassUI.php b/inc/inc.ClassUI.php index d22e1ec07..c671f19b4 100644 --- a/inc/inc.ClassUI.php +++ b/inc/inc.ClassUI.php @@ -55,7 +55,8 @@ class UI extends UI_Default { /* Collect all decorators */ $decorators = array(); foreach($EXT_CONF as $extname=>$extconf) { - if(!isset($extconf['disable']) || $extconf['disable'] == false) { + if(!$settings->extensionIsDisabled($extname)) { +// if(!isset($extconf['disable']) || $extconf['disable'] == false) { if(isset($extconf['decorators'][$class])) { $filename = $settings->_rootDir.'ext/'.$extname.'/decorators/'.$theme."/".$extconf['decorators'][$class]['file']; if(file_exists($filename)) { @@ -71,7 +72,8 @@ class UI extends UI_Default { $filename = ''; $httpbasedir = ''; foreach($EXT_CONF as $extname=>$extconf) { - if(!isset($extconf['disable']) || $extconf['disable'] == false) { + if(!$settings->extensionIsDisabled($extname)) { +// if(!isset($extconf['disable']) || $extconf['disable'] == false) { /* Setting the 'views' element in the configuration can be used to * replace an existing view in views/bootstrap/, e.g. class.ViewFolder.php * without providing an out/out.ViewFolder.php. In that case $httpbasedir diff --git a/inc/inc.Extension.php b/inc/inc.Extension.php index 5841c8038..8e74c0080 100644 --- a/inc/inc.Extension.php +++ b/inc/inc.Extension.php @@ -22,15 +22,17 @@ $EXT_CONF = $extMgr->getExtensionConfiguration(); $version = new SeedDMS_Version; foreach($EXT_CONF as $extname=>$extconf) { - if(!isset($extconf['disable']) || $extconf['disable'] == false) { + if(!$settings->extensionIsDisabled($extname)) { +// if(!isset($extconf['disable']) || $extconf['disable'] == false) { /* check for requirements */ if(!empty($extconf['constraints']['depends']['seeddms'])) { $t = explode('-', $extconf['constraints']['depends']['seeddms'], 2); if(SeedDMS_Extension_Mgr::cmpVersion($t[0], $version->version()) > 0 || ($t[1] && SeedDMS_Extension_Mgr::cmpVersion($t[1], $version->version()) < 0)) + continue; $extconf['disable'] = true; } - } - if(!isset($extconf['disable']) || $extconf['disable'] == false) { +// } +// if(!isset($extconf['disable']) || $extconf['disable'] == false) { if(isset($extconf['class']) && isset($extconf['class']['file']) && isset($extconf['class']['name'])) { $classfile = $settings->_rootDir."/ext/".$extname."/".$extconf['class']['file']; if(file_exists($classfile)) { diff --git a/op/op.ExtensionMgr.php b/op/op.ExtensionMgr.php index 55dcd0177..819c2ece3 100644 --- a/op/op.ExtensionMgr.php +++ b/op/op.ExtensionMgr.php @@ -56,7 +56,7 @@ if ($action == "download") { $controller->setParam('extmgr', $extMgr); $controller->setParam('extname', $extname); if (!$controller($_POST)) { - echo json_encode(array('success'=>false, 'error'=>'Could not download extension')); + echo json_encode(array('success'=>false, 'msg'=>'Could not download extension')); } add_log_line(); } /* }}} */ @@ -125,7 +125,22 @@ elseif ($action == "getlist") { /* {{{ */ } add_log_line(); header("Location:../out/out.ExtensionMgr.php?currenttab=".$currenttab); +} elseif ($action == "toggle") { /* {{{ */ + if (!isset($_POST["extname"])) { + echo json_encode(array('success'=>false, 'msg'=>'Could not toggle extension')); + } + $extname = trim($_POST["extname"]); + if (!file_exists($settings->_rootDir.'/ext/'.$extname) ) { + UI::exitError(getMLText("admin_tools"),getMLText("missing_extension")); + } + $controller->setParam('extmgr', $extMgr); + $controller->setParam('extname', $extname); + if (!$controller($_POST)) { + echo json_encode(array('success'=>false, 'msg'=>'Could not toggle extension')); + } else { + echo json_encode(array('success'=>true, 'msg'=>'Operation succeded')); + } + add_log_line(); } /* }}} */ -?> diff --git a/views/bootstrap/class.ExtensionMgr.php b/views/bootstrap/class.ExtensionMgr.php index 2357b6d25..9cc5d5c2b 100644 --- a/views/bootstrap/class.ExtensionMgr.php +++ b/views/bootstrap/class.ExtensionMgr.php @@ -31,7 +31,8 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { header('Content-Type: application/javascript'); ?> $(document).ready( function() { - $('a.download').click(function(ev){ + $('body').on('click', 'a.download', function(ev){ +// $('a.download').click(function(ev){ var element = $(this); $('#'+element.data('extname')+'-download').submit(); /* @@ -54,6 +55,27 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { }); */ }); + $('body').on('click', 'a.toggle', function(ev){ +// $('a.toggle').click(function(ev){ + var element = $(this); + ev.preventDefault(); + $.ajax({url: '../op/op.ExtensionMgr.php', + type: 'POST', + dataType: "json", + data: {action: 'toggle', 'formtoken': '', 'extname': element.data('extname')}, + success: function(data) { + noty({ + text: data.msg, + type: (data.error) ? 'error' : 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500, + }); + $('div.ajax').trigger('update'); + } + }); + }); $('a.import').click(function(ev){ var element = $(this); @@ -80,11 +102,11 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { echo "\n"; print "\n\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; print "\n"; $list = $extmgr->getExtensionListByName($extname); foreach($list as $re) { @@ -113,7 +135,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { echo ""; echo ""; echo ""; - } + } echo "
          ".getMLText('name')."".getMLText('version')."".getMLText('author')."".getMLText('name')."".getMLText('version')."".getMLText('author')."
          \n"; } /* }}} */ @@ -132,6 +154,69 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { } } /* }}} */ + function installedList() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $settings = $this->params['settings']; + $httproot = $this->params['httproot']; + $extmgr = $this->params['extmgr']; + $extdir = $this->params['extdir']; + + echo "\n"; + print "\n\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + $errmsgs = array(); + foreach($GLOBALS['EXT_CONF'] as $extname=>$extconf) { + $errmsgs = array(); + if(!$settings->extensionIsDisabled($extname)) { +// if(!isset($extconf['disable']) || $extconf['disable'] == false) { + $extmgr->checkExtension($extname); + $errmsgs = $extmgr->getErrorMsgs(); + if($errmsgs) + echo ""; + else + echo ""; + } else { + echo ""; + } + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "\n"; + } + echo "
          ".getMLText('name')."".getMLText('version')."".getMLText('author')."
          "; + if($extconf['icon']) + echo "\"".$extname."\""; + echo "".$extconf['title']; + echo "
          ".$extconf['description'].""; + if($errmsgs) + echo "
          getImgPath("attention.gif")."\"> ".implode('
          ', $errmsgs)."
          "; + echo "
          ".$extconf['version']; + echo "
          ".$extconf['releasedate'].""; + echo "
          ".$extconf['author']['name']."
          ".$extconf['author']['company']."
          "; + echo "
          "; + if(!empty($extconf['changelog']) && file_exists($extdir."/".$extname."/".$extconf['changelog'])) { + echo "\n"; + } + if($extconf['config']) + echo ""; + echo "
          ".createHiddenFieldWithKey('extensionmgr')."
          "; + if(!$settings->extensionIsDisabled($extname)) { + echo ' '; + } else { + echo ' '; + } + echo "
          "; + echo "
          \n"; + } /* }}} */ + function show() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; @@ -142,7 +227,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { $extmgr = $this->params['extmgr']; $currenttab = $this->params['currenttab']; $reposurl = $this->params['reposurl']; - + $this->htmlStartPage(getMLText("admin_tools")); $this->globalNavigation(); $this->contentStart(); @@ -179,74 +264,26 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style {
          +
          contentContainerStart(); - echo "\n"; - print "\n\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - $errmsgs = array(); - foreach($GLOBALS['EXT_CONF'] as $extname=>$extconf) { - $errmsgs = array(); - if(!isset($extconf['disable']) || $extconf['disable'] == false) { - $extmgr->checkExtension($extname); - $errmsgs = $extmgr->getErrorMsgs(); - if($errmsgs) - echo ""; - else - echo ""; - } else - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo "\n"; - } - echo "
          ".getMLText('name')."".getMLText('version')."".getMLText('author')."
          "; - if($extconf['icon']) - echo "\"".$extname."\""; - echo "".$extconf['title']; - echo "
          ".$extconf['description'].""; - if($errmsgs) - echo "
          getImgPath("attention.gif")."\"> ".implode('
          ', $errmsgs)."
          "; - echo "
          ".$extconf['version']; - echo "
          ".$extconf['releasedate'].""; - echo "
          ".$extconf['author']['name']."
          ".$extconf['author']['company']."
          "; - echo "
          "; - if(!empty($extconf['changelog']) && file_exists($extdir."/".$extname."/".$extconf['changelog'])) { - echo "\n"; - } - if($extconf['config']) - echo ""; - echo "
          ".createHiddenFieldWithKey('extensionmgr')."
          "; - echo "
          "; - echo "
          \n"; +// $this->installedList(); ?>

          -contentContainerEnd(); -?>
          \n"; print "
          ".getMLText('name')."".getMLText('version')."".getMLText('author')."".getMLText('name')."".getMLText('version')."".getMLText('author')."
          \n"; ?>
          From 8409b7e518ec9e993117d736436431493cf48fb6 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 20 Dec 2019 17:35:48 +0100 Subject: [PATCH 329/467] add entry for 5.1.14 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index a0fda89eb..8d43e51b8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,6 +10,9 @@ - document attributes comment, keywords, categories, expiration date, and sequence can be turned of in the configuration - workflows can be turned off completely +- Extension can be enabled/disabled in the extension manager, the previously + used method by setting a parameter in the extension's config file will no + longer work. -------------------------------------------------------------------------------- Changes in version 5.1.13 From b7deb8427939d1a7c30be50c13330df0e0be6922 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 31 Dec 2019 15:42:15 +0100 Subject: [PATCH 330/467] check if file to be indexed exists --- SeedDMS_Lucene/Lucene/IndexedDocument.php | 46 ++++++++++--------- .../SQLiteFTS/IndexedDocument.php | 46 ++++++++++--------- 2 files changed, 48 insertions(+), 44 deletions(-) diff --git a/SeedDMS_Lucene/Lucene/IndexedDocument.php b/SeedDMS_Lucene/Lucene/IndexedDocument.php index 237150097..df93e4a35 100644 --- a/SeedDMS_Lucene/Lucene/IndexedDocument.php +++ b/SeedDMS_Lucene/Lucene/IndexedDocument.php @@ -158,29 +158,31 @@ class SeedDMS_Lucene_IndexedDocument extends Zend_Search_Lucene_Document { } if($version && !$nocontent) { $path = $dms->contentDir . $version->getPath(); - $content = ''; - $mimetype = $version->getMimeType(); - $this->mimetype = $mimetype; - $cmd = ''; - $mimeparts = explode('/', $mimetype, 2); - if(isset($_convcmd[$mimetype])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } elseif(isset($_convcmd[$mimeparts[0].'/*'])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } elseif(isset($_convcmd['*'])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } - if($cmd) { - $this->cmd = $cmd; - try { - $content = self::execWithTimeout($cmd, $timeout); - if($content['stdout']) { - $this->addField(Zend_Search_Lucene_Field::UnStored('content', $content['stdout'], 'utf-8')); + if(file_exists($path)) { + $content = ''; + $mimetype = $version->getMimeType(); + $this->mimetype = $mimetype; + $cmd = ''; + $mimeparts = explode('/', $mimetype, 2); + if(isset($_convcmd[$mimetype])) { + $cmd = sprintf($_convcmd[$mimetype], $path); + } elseif(isset($_convcmd[$mimeparts[0].'/*'])) { + $cmd = sprintf($_convcmd[$mimetype], $path); + } elseif(isset($_convcmd['*'])) { + $cmd = sprintf($_convcmd[$mimetype], $path); + } + if($cmd) { + $this->cmd = $cmd; + try { + $content = self::execWithTimeout($cmd, $timeout); + if($content['stdout']) { + $this->addField(Zend_Search_Lucene_Field::UnStored('content', $content['stdout'], 'utf-8')); + } + if($content['stderr']) { + $this->errormsg = $content['stderr']; + } + } catch (Exception $e) { } - if($content['stderr']) { - $this->errormsg = $content['stderr']; - } - } catch (Exception $e) { } } } diff --git a/SeedDMS_SQLiteFTS/SQLiteFTS/IndexedDocument.php b/SeedDMS_SQLiteFTS/SQLiteFTS/IndexedDocument.php index fb87503b8..5e9fb08a1 100644 --- a/SeedDMS_SQLiteFTS/SQLiteFTS/IndexedDocument.php +++ b/SeedDMS_SQLiteFTS/SQLiteFTS/IndexedDocument.php @@ -152,29 +152,31 @@ class SeedDMS_SQLiteFTS_IndexedDocument extends SeedDMS_SQLiteFTS_Document { } if($version && !$nocontent) { $path = $dms->contentDir . $version->getPath(); - $content = ''; - $mimetype = $version->getMimeType(); - $this->mimetype = $mimetype; - $cmd = ''; - $mimeparts = explode('/', $mimetype, 2); - if(isset($_convcmd[$mimetype])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } elseif(isset($_convcmd[$mimeparts[0].'/*'])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } elseif(isset($_convcmd['*'])) { - $cmd = sprintf($_convcmd[$mimetype], $path); - } - if($cmd) { - $this->cmd = $cmd; - try { - $content = self::execWithTimeout($cmd, $timeout); - if($content['stdout']) { - $this->addField('content', $content['stdout'], 'unstored'); + if(file_exists($path)) { + $content = ''; + $mimetype = $version->getMimeType(); + $this->mimetype = $mimetype; + $cmd = ''; + $mimeparts = explode('/', $mimetype, 2); + if(isset($_convcmd[$mimetype])) { + $cmd = sprintf($_convcmd[$mimetype], $path); + } elseif(isset($_convcmd[$mimeparts[0].'/*'])) { + $cmd = sprintf($_convcmd[$mimetype], $path); + } elseif(isset($_convcmd['*'])) { + $cmd = sprintf($_convcmd[$mimetype], $path); + } + if($cmd) { + $this->cmd = $cmd; + try { + $content = self::execWithTimeout($cmd, $timeout); + if($content['stdout']) { + $this->addField('content', $content['stdout'], 'unstored'); + } + if($content['stderr']) { + $this->errormsg = $content['stderr']; + } + } catch (Exception $e) { } - if($content['stderr']) { - $this->errormsg = $content['stderr']; - } - } catch (Exception $e) { } } } From 36231f8cf3ee351965c845d7b06c6d2ee64cf6d3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 1 Jan 2020 09:17:45 +0100 Subject: [PATCH 331/467] do not include GoogleQRCodeProvider.php anymore --- views/bootstrap/class.Login.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.Login.php b/views/bootstrap/class.Login.php index 81fbcfcde..68aecf303 100644 --- a/views/bootstrap/class.Login.php +++ b/views/bootstrap/class.Login.php @@ -152,7 +152,7 @@ $(document).ready( function() { if($enable2factauth) { require "vendor/robthree/twofactorauth/lib/Providers/Qr/IQRCodeProvider.php"; require "vendor/robthree/twofactorauth/lib/Providers/Qr/BaseHTTPQRCodeProvider.php"; - require "vendor/robthree/twofactorauth/lib/Providers/Qr/GoogleQRCodeProvider.php"; +// require "vendor/robthree/twofactorauth/lib/Providers/Qr/GoogleQRCodeProvider.php"; require "vendor/robthree/twofactorauth/lib/Providers/Rng/IRNGProvider.php"; require "vendor/robthree/twofactorauth/lib/Providers/Rng/MCryptRNGProvider.php"; require "vendor/robthree/twofactorauth/lib/TwoFactorAuthException.php"; From 189e6da70eeac24e9163a3306f796777bad47107 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 1 Jan 2020 09:24:22 +0100 Subject: [PATCH 332/467] better checking for correct version had to be modified because extensions are new disabled in the settings.xml --- inc/inc.Extension.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/inc/inc.Extension.php b/inc/inc.Extension.php index 8e74c0080..5fb009398 100644 --- a/inc/inc.Extension.php +++ b/inc/inc.Extension.php @@ -23,16 +23,15 @@ $version = new SeedDMS_Version; foreach($EXT_CONF as $extname=>$extconf) { if(!$settings->extensionIsDisabled($extname)) { -// if(!isset($extconf['disable']) || $extconf['disable'] == false) { /* check for requirements */ + $disable = false; if(!empty($extconf['constraints']['depends']['seeddms'])) { $t = explode('-', $extconf['constraints']['depends']['seeddms'], 2); if(SeedDMS_Extension_Mgr::cmpVersion($t[0], $version->version()) > 0 || ($t[1] && SeedDMS_Extension_Mgr::cmpVersion($t[1], $version->version()) < 0)) continue; - $extconf['disable'] = true; + $disable = true; } -// } -// if(!isset($extconf['disable']) || $extconf['disable'] == false) { + if(!$disable) { if(isset($extconf['class']) && isset($extconf['class']['file']) && isset($extconf['class']['name'])) { $classfile = $settings->_rootDir."/ext/".$extname."/".$extconf['class']['file']; if(file_exists($classfile)) { @@ -57,5 +56,6 @@ foreach($EXT_CONF as $extname=>$extconf) { } } } + } } } From 8ae287436707826679776a50196ea372bd6fb8ea Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 3 Jan 2020 10:21:58 +0100 Subject: [PATCH 333/467] do not use global var EXT_CONF anymore --- CHANGELOG | 1 + controllers/class.ExtensionMgr.php | 2 +- inc/inc.ClassController.php | 4 +- inc/inc.ClassExtensionMgr.php | 6 +-- inc/inc.ClassUI.php | 61 +++++++++++++------------- inc/inc.Extension.php | 19 +++++--- out/out.Settings.php | 1 + views/bootstrap/class.ExtensionMgr.php | 18 +++++--- views/bootstrap/class.Settings.php | 6 ++- 9 files changed, 67 insertions(+), 51 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8d43e51b8..12166e154 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -13,6 +13,7 @@ - Extension can be enabled/disabled in the extension manager, the previously used method by setting a parameter in the extension's config file will no longer work. +- clean up code for managing extensions -------------------------------------------------------------------------------- Changes in version 5.1.13 diff --git a/controllers/class.ExtensionMgr.php b/controllers/class.ExtensionMgr.php index efd4fbd94..e28f4dab7 100644 --- a/controllers/class.ExtensionMgr.php +++ b/controllers/class.ExtensionMgr.php @@ -36,7 +36,7 @@ class SeedDMS_Controller_ExtensionMgr extends SeedDMS_Controller_Common { $extmgr = $this->params['extmgr']; $extname = $this->params['extname']; - $filename = $extmgr->createArchive($extname, $GLOBALS['EXT_CONF'][$extname]['version']); + $filename = $extmgr->createArchive($extname, $extmgr->getExtensionConfiguration()[$extname]['version']); if(null === $this->callHook('download')) { if(file_exists($filename)) { diff --git a/inc/inc.ClassController.php b/inc/inc.ClassController.php index 04e70dca7..2092d9313 100644 --- a/inc/inc.ClassController.php +++ b/inc/inc.ClassController.php @@ -30,14 +30,14 @@ class Controller { * @return object an object of a class implementing the view */ static function factory($class, $params=array()) { /* {{{ */ - global $settings, $session, $EXT_CONF; + global $settings, $session, $extMgr; if(!$class) { return null; } $classname = "SeedDMS_Controller_".$class; $filename = ''; - foreach($EXT_CONF as $extname=>$extconf) { + foreach($extMgr->getExtensionConfiguration() as $extname=>$extconf) { $filename = $settings->_rootDir.'ext/'.$extname.'/controllers/class.'.$class.".php"; if(file_exists($filename)) { break; diff --git a/inc/inc.ClassExtensionMgr.php b/inc/inc.ClassExtensionMgr.php index 7af12f2e2..2d000b21c 100644 --- a/inc/inc.ClassExtensionMgr.php +++ b/inc/inc.ClassExtensionMgr.php @@ -362,9 +362,9 @@ class SeedDMS_Extension_Mgr { break; default: $tmp = explode('-', $dval, 2); - if(isset($GLOBALS['EXT_CONF'][$dkey]['version'])) { - if(self::cmpVersion($tmp[0], $GLOBALS['EXT_CONF'][$dkey]['version']) > 0 || ($tmp[1] && self::cmpVersion($tmp[1], $GLOBALS['EXT_CONF'][$dkey]['version']) < 0)) - $this->errmsgs[] = sprintf("Incorrect version of extension '%s' (needs version '%s' but provides '%s')", $dkey, $dval, $GLOBALS['EXT_CONF'][$dkey]['version']); + if(isset($this->extconf[$dkey]['version'])) { + if(self::cmpVersion($tmp[0], $this->extconf[$dkey]['version']) > 0 || ($tmp[1] && self::cmpVersion($tmp[1], $this->extconf[$dkey]['version']) < 0)) + $this->errmsgs[] = sprintf("Incorrect version of extension '%s' (needs version '%s' but provides '%s')", $dkey, $dval, $this->extconf[$dkey]['version']); } else { $this->errmsgs[] = sprintf("Missing extension or version for '%s'", $dkey); } diff --git a/inc/inc.ClassUI.php b/inc/inc.ClassUI.php index c671f19b4..8f8ee5047 100644 --- a/inc/inc.ClassUI.php +++ b/inc/inc.ClassUI.php @@ -45,7 +45,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, $session, $EXT_CONF; + global $settings, $session, $extMgr; if(!$class) { $class = 'Bootstrap'; $classname = "SeedDMS_Bootstrap_Style"; @@ -54,14 +54,14 @@ class UI extends UI_Default { } /* Collect all decorators */ $decorators = array(); - foreach($EXT_CONF as $extname=>$extconf) { + foreach($extMgr->getExtensionConfiguration() as $extname=>$extconf) { if(!$settings->extensionIsDisabled($extname)) { -// if(!isset($extconf['disable']) || $extconf['disable'] == false) { - if(isset($extconf['decorators'][$class])) { - $filename = $settings->_rootDir.'ext/'.$extname.'/decorators/'.$theme."/".$extconf['decorators'][$class]['file']; - if(file_exists($filename)) { - $classname = $extconf['decorators'][$class]['name']; - $decorators[$extname] = $extconf['decorators'][$class]; + if($extMgr->checkExtension($extconf)) { + if(isset($extconf['decorators'][$class])) { + $filename = $settings->_rootDir.'ext/'.$extname.'/decorators/'.$theme."/".$extconf['decorators'][$class]['file']; + if(file_exists($filename)) { + $decorators[$extname] = $extconf['decorators'][$class]; + } } } } @@ -71,32 +71,33 @@ class UI extends UI_Default { */ $filename = ''; $httpbasedir = ''; - foreach($EXT_CONF as $extname=>$extconf) { + foreach($extMgr->getExtensionConfiguration() as $extname=>$extconf) { if(!$settings->extensionIsDisabled($extname)) { -// if(!isset($extconf['disable']) || $extconf['disable'] == false) { - /* Setting the 'views' element in the configuration can be used to - * replace an existing view in views/bootstrap/, e.g. class.ViewFolder.php - * without providing an out/out.ViewFolder.php. In that case $httpbasedir - * will not be set because out/out.xxx.php is still used. - */ - if(isset($extconf['views'][$class])) { - $filename = $settings->_rootDir.'ext/'.$extname.'/views/'.$theme."/".$extconf['views'][$class]['file']; + if($extMgr->checkExtension($extconf)) { + /* Setting the 'views' element in the configuration can be used to + * replace an existing view in views/bootstrap/, e.g. class.ViewFolder.php + * without providing an out/out.ViewFolder.php. In that case $httpbasedir + * will not be set because out/out.xxx.php is still used. + */ + if(isset($extconf['views'][$class])) { + $filename = $settings->_rootDir.'ext/'.$extname.'/views/'.$theme."/".$extconf['views'][$class]['file']; + if(file_exists($filename)) { + // $httpbasedir = 'ext/'.$extname.'/'; + $classname = $extconf['views'][$class]['name']; + break; + } + } + /* New views are added by creating a file out/out.xx.php and + * views/bootstrap/class.xx.php, without setting the 'views' element + * in the configuration + */ + $filename = $settings->_rootDir.'ext/'.$extname.'/views/'.$theme."/class.".$class.".php"; if(file_exists($filename)) { -// $httpbasedir = 'ext/'.$extname.'/'; - $classname = $extconf['views'][$class]['name']; + $httpbasedir = 'ext/'.$extname.'/'; break; } + $filename = ''; } - /* New views are added by creating a file out/out.xx.php and - * views/bootstrap/class.xx.php, without setting the 'views' element - * in the configuration - */ - $filename = $settings->_rootDir.'ext/'.$extname.'/views/'.$theme."/class.".$class.".php"; - if(file_exists($filename)) { - $httpbasedir = 'ext/'.$extname.'/'; - break; - } - $filename = ''; } } if(!$filename) @@ -141,7 +142,7 @@ class UI extends UI_Default { $view->setParam('onepage', $settings->_onePageMode); foreach($decorators as $extname=>$decorator) { $filename = $settings->_rootDir.'ext/'.$extname.'/decorators/'.$theme."/".$decorator['file']; - require($filename); + require_once($filename); $view = new $decorator['name']($view); } return $view; diff --git a/inc/inc.Extension.php b/inc/inc.Extension.php index 5fb009398..77f4b6eb6 100644 --- a/inc/inc.Extension.php +++ b/inc/inc.Extension.php @@ -17,21 +17,28 @@ require_once "inc.Version.php"; require_once "inc.Utils.php"; $extMgr = new SeedDMS_Extension_Mgr($settings->_rootDir."/ext", $settings->_cacheDir, $settings->_repositoryUrl); -$EXT_CONF = $extMgr->getExtensionConfiguration(); $version = new SeedDMS_Version; -foreach($EXT_CONF as $extname=>$extconf) { +foreach($extMgr->getExtensionConfiguration() as $extname=>$extconf) { if(!$settings->extensionIsDisabled($extname)) { + $disabled = true; + if($extMgr->checkExtension($extconf)) { + $disabled = false; + } else { + // echo $extMgr->getErrorMsg(); + } /* check for requirements */ - $disable = false; + /* if(!empty($extconf['constraints']['depends']['seeddms'])) { $t = explode('-', $extconf['constraints']['depends']['seeddms'], 2); if(SeedDMS_Extension_Mgr::cmpVersion($t[0], $version->version()) > 0 || ($t[1] && SeedDMS_Extension_Mgr::cmpVersion($t[1], $version->version()) < 0)) - continue; - $disable = true; + $disabled = true; + else + $disabled = false; } - if(!$disable) { + */ + if(!$disabled) { if(isset($extconf['class']) && isset($extconf['class']['file']) && isset($extconf['class']['name'])) { $classfile = $settings->_rootDir."/ext/".$extname."/".$extconf['class']['file']; if(file_exists($classfile)) { diff --git a/out/out.Settings.php b/out/out.Settings.php index 0c3718d3a..27833735d 100644 --- a/out/out.Settings.php +++ b/out/out.Settings.php @@ -42,6 +42,7 @@ $groups = $dms->getAllGroups(); if($view) { $view->setParam('settings', $settings); + $view->setParam('extmgr', $extMgr); $view->setParam('currenttab', (isset($_REQUEST['currenttab']) ? $_REQUEST['currenttab'] : '')); $view->setParam('allusers', $users); $view->setParam('allgroups', $groups); diff --git a/views/bootstrap/class.ExtensionMgr.php b/views/bootstrap/class.ExtensionMgr.php index 9cc5d5c2b..1a7f2909c 100644 --- a/views/bootstrap/class.ExtensionMgr.php +++ b/views/bootstrap/class.ExtensionMgr.php @@ -99,6 +99,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { $user = $this->params['user']; $extmgr = $this->params['extmgr']; $extname = $this->params['extname']; + $extconf = $extmgr->getExtensionConfiguration(); echo "\n"; print "\n\n"; @@ -112,9 +113,9 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { foreach($list as $re) { $extmgr->checkExtension($re); $checkmsgs = $extmgr->getErrorMsgs(); - $needsupdate = !isset($GLOBALS['EXT_CONF'][$re['name']]) || SeedDMS_Extension_Mgr::cmpVersion($re['version'], $GLOBALS['EXT_CONF'][$re['name']]['version']) > 0; + $needsupdate = !isset($extconf[$re['name']]) || SeedDMS_Extension_Mgr::cmpVersion($re['version'], $extconf[$re['name']]['version']) > 0; echo "params['extdir']; $extmgr = $this->params['extmgr']; $extname = $this->params['extname']; + $extconf = $extmgr->getExtensionConfiguration(); - if(isset($GLOBALS['EXT_CONF'][$extname])) { - $extconf = $GLOBALS['EXT_CONF'][$extname]; + if(isset($extconf[$extname])) { + $extconf = $extconf[$extname]; if(!empty($extconf['changelog']) && file_exists($extdir."/".$extname."/".$extconf['changelog'])) { echo '
          '.file_get_contents($extdir."/".$extname."/".$extconf['changelog'])."
          "; } @@ -161,6 +163,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { $httproot = $this->params['httproot']; $extmgr = $this->params['extmgr']; $extdir = $this->params['extdir']; + $extconf = $extmgr->getExtensionConfiguration(); echo "
          \n"; print "\n\n"; @@ -171,7 +174,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { print "\n"; print "\n"; $errmsgs = array(); - foreach($GLOBALS['EXT_CONF'] as $extname=>$extconf) { + foreach($extconf as $extname=>$extconf) { $errmsgs = array(); if(!$settings->extensionIsDisabled($extname)) { // if(!isset($extconf['disable']) || $extconf['disable'] == false) { @@ -225,6 +228,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { $extdir = $this->params['extdir']; $version = $this->params['version']; $extmgr = $this->params['extmgr']; + $extconf = $extmgr->getExtensionConfiguration(); $currenttab = $this->params['currenttab']; $reposurl = $this->params['reposurl']; @@ -291,9 +295,9 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style { continue; $extmgr->checkExtension($re); $checkmsgs = $extmgr->getErrorMsgs(); - $needsupdate = !isset($GLOBALS['EXT_CONF'][$re['name']]) || SeedDMS_Extension_Mgr::cmpVersion($re['version'], $GLOBALS['EXT_CONF'][$re['name']]['version']) > 0; + $needsupdate = !isset($extconf[$re['name']]) || SeedDMS_Extension_Mgr::cmpVersion($re['version'], $extconf[$re['name']]['version']) > 0; echo "params['extmgr']; header('Content-Type: application/javascript'); ?> @@ -207,7 +208,7 @@ class SeedDMS_View_Settings extends SeedDMS_Bootstrap_Style { }); }); $extconf) { + foreach($extmgr->getExtensionConfiguration() as $extname=>$extconf) { if($extconf['config']) { foreach($extconf['config'] as $confkey=>$conf) { switch($conf['type']) { @@ -230,6 +231,7 @@ class SeedDMS_View_Settings extends SeedDMS_Bootstrap_Style { $dms = $this->params['dms']; $user = $this->params['user']; $settings = $this->params['settings']; + $extmgr = $this->params['extmgr']; $currenttab = $this->params['currenttab']; $this->htmlStartPage(getMLText("admin_tools")); @@ -475,7 +477,7 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); -- SETTINGS - ADVANCED - DISPLAY --> $extconf) { + foreach($extmgr->getExtensionConfiguration() as $extname=>$extconf) { if($this->hasHook('processConfig')) $extconf = $this->callHook('processConfig', $extname, $extconf); if($extconf['config']) { From 481d01977b570a3ba1648b78cd632742093ae6d5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 6 Jan 2020 13:34:38 +0100 Subject: [PATCH 334/467] fix typo --- CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 39eb27b30..7e98bf6dd 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,7 +10,7 @@ - rejection of document receipts are turned off by default, but can be turned on in the settings - documents in DocumentChooser are sorted by name -- instead of just removing a user from all processes it can be replace by a new user +- instead of just removing a user from all processes it can be replaced by a new user -------------------------------------------------------------------------------- Changes in version 6.0.6 From 974ff603e1bf1bbfa9bd66bd312ce0620fd182f2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 7 Jan 2020 21:20:16 +0100 Subject: [PATCH 335/467] check if hooks return a user object because true also indicates a failed login --- controllers/class.Login.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/controllers/class.Login.php b/controllers/class.Login.php index 01cd4f21a..3a66568e1 100644 --- a/controllers/class.Login.php +++ b/controllers/class.Login.php @@ -85,30 +85,35 @@ class SeedDMS_Controller_Login extends SeedDMS_Controller_Common { } /* Deprecated: Run any additional authentication implemented in a hook */ - if(!$user && isset($GLOBALS['SEEDDMS_HOOKS']['authentication'])) { + if(!is_object($user) && isset($GLOBALS['SEEDDMS_HOOKS']['authentication'])) { foreach($GLOBALS['SEEDDMS_HOOKS']['authentication'] as $authObj) { if(!$user && method_exists($authObj, 'authenticate')) { $user = $authObj->authenticate($dms, $settings, $login, $pwd); + if(false === $user) { + if(empty($this->errormsg)) + $this->setErrorMsg("authentication_failed"); + return false; + } } } } /* Authenticate against LDAP server {{{ */ - if (!$user && isset($settings->_ldapHost) && strlen($settings->_ldapHost)>0) { + if (!is_object($user) && isset($settings->_ldapHost) && strlen($settings->_ldapHost)>0) { require_once("../inc/inc.ClassLdapAuthentication.php"); $authobj = new SeedDMS_LdapAuthentication($dms, $settings); $user = $authobj->authenticate($login, $pwd); } /* }}} */ /* Authenticate against SeedDMS database {{{ */ - if(!$user) { + if(!is_object($user)) { require_once("../inc/inc.ClassDbAuthentication.php"); $authobj = new SeedDMS_DbAuthentication($dms, $settings); $user = $authobj->authenticate($login, $pwd); } /* }}} */ /* If the user is still not authenticated, then exit with an error */ - if(!$user) { + if(!is_object($user)) { $this->callHook('loginFailed'); $this->setErrorMsg("login_error_text"); return false; From 9b6949a00a6b092200a3d65d6384456859a7f5a2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 7 Jan 2020 21:21:17 +0100 Subject: [PATCH 336/467] check if document content exists in hits of fulltext search --- views/bootstrap/class.Search.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index f4d49f049..27ae82db7 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -489,9 +489,8 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { else { $document = $entry; $owner = $document->getOwner(); - $lc = $document->getLatestContent(); - $version = $lc->getVersion(); - $previewer->createPreview($lc); + if($lc = $document->getLatestContent()) + $previewer->createPreview($lc); if (in_array(3, $searchin)) $comment = $this->markQuery(htmlspecialchars($document->getComment())); @@ -506,7 +505,7 @@ class SeedDMS_View_Search extends SeedDMS_Bootstrap_Style { $belowtitle .= htmlspecialchars($path[$i]->getName())."/"; } $belowtitle .= ""; - $lcattributes = $lc->getAttributes(); + $lcattributes = $lc ? $lc->getAttributes() : null; $attrstr = ''; if($lcattributes) { $attrstr .= "
          \n"; From 699152d95b7f7b6a996f1b46383608dd99761bc5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 10 Jan 2020 14:48:14 +0100 Subject: [PATCH 337/467] use getDMS() instead of accessing _dms --- SeedDMS_Core/Core/inc.ClassDocument.php | 117 ++++++++++++------------ 1 file changed, 59 insertions(+), 58 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 43056e7a0..e932e0ada 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -2896,7 +2896,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ function getUser() { /* {{{ */ if (!isset($this->_user)) - $this->_user = $this->_document->_dms->getUser($this->_userID); + $this->_user = $this->_document->getDMS()->getUser($this->_userID); return $this->_user; } /* }}} */ @@ -2912,7 +2912,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ function getPath() { return $this->_document->getDir() . $this->_version . ($this->_fileType != '.' ? $this->_fileType : ''); } function setDate($date = false) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if(!$date) $date = time(); @@ -2942,7 +2942,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ if($filesize === false) return false; - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $queryStr = "UPDATE `tblDocumentContent` SET `fileSize` = ".$filesize." where `document` = " . $this->_document->getID() . " AND `version` = " . $this->_version; if (!$db->getResult($queryStr)) return false; @@ -2963,7 +2963,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ if($checksum === false) return false; - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $queryStr = "UPDATE `tblDocumentContent` SET `checksum` = ".$db->qstr($checksum)." where `document` = " . $this->_document->getID() . " AND `version` = " . $this->_version; if (!$db->getResult($queryStr)) return false; @@ -2973,7 +2973,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ function setComment($newComment) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $queryStr = "UPDATE `tblDocumentContent` SET `comment` = ".$db->qstr($newComment)." WHERE `document` = " . $this->_document->getID() . " AND `version` = " . $this->_version; if (!$db->getResult($queryStr)) @@ -3007,7 +3007,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return array latest record from tblDocumentStatusLog */ function getStatus($limit=1) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if (!is_numeric($limit)) return false; @@ -3041,7 +3041,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return array list of status changes */ function getStatusLog($limit=0) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if (!is_numeric($limit)) return false; @@ -3076,7 +3076,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return boolean true on success, otherwise false */ function setStatus($status, $comment, $updateUser, $date='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if (!is_numeric($status)) return false; @@ -3123,7 +3123,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return boolean true on success, otherwise false */ function rewriteStatusLog($statuslog) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $queryStr= "SELECT `tblDocumentStatus`.* FROM `tblDocumentStatus` WHERE `tblDocumentStatus`.`documentID` = '". $this->_document->getID() ."' AND `tblDocumentStatus`.`version` = '". $this->_version ."' "; $res = $db->getResultArray($queryStr); @@ -3182,7 +3182,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return integer either M_NONE or M_READ */ function getAccessMode($u) { /* {{{ */ - $dms = $this->_document->_dms; + $dms = $this->_document->getDMS(); /* Check if 'onCheckAccessDocumentContent' callback is set */ if(isset($this->_dms->callbacks['onCheckAccessDocumentContent'])) { @@ -3292,7 +3292,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return array list of review status */ function getReviewStatus($limit=1) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if (!is_numeric($limit)) return false; @@ -3352,7 +3352,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return boolean true on success, otherwise false */ function rewriteReviewLog($reviewers) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $queryStr= "SELECT `tblDocumentReviewers`.* FROM `tblDocumentReviewers` WHERE `tblDocumentReviewers`.`documentID` = '". $this->_document->getID() ."' AND `tblDocumentReviewers`.`version` = '". $this->_version ."' "; $res = $db->getResultArray($queryStr); @@ -3420,7 +3420,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return array list of approval status */ function getApprovalStatus($limit=1) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if (!is_numeric($limit)) return false; @@ -3480,7 +3480,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return boolean true on success, otherwise false */ function rewriteApprovalLog($reviewers) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $queryStr= "SELECT `tblDocumentApprovers`.* FROM `tblDocumentApprovers` WHERE `tblDocumentApprovers`.`documentID` = '". $this->_document->getID() ."' AND `tblDocumentApprovers`.`version` = '". $this->_version ."' "; $res = $db->getResultArray($queryStr); @@ -3541,7 +3541,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ function addIndReviewer($user, $requestUser) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $userID = $user->getID(); @@ -3592,7 +3592,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ function addGrpReviewer($group, $requestUser) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $groupID = $group->getID(); @@ -3670,7 +3670,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return integer new review log id */ function setReviewByInd($user, $requestUser, $status, $comment, $file='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); // Check to see if the user can be removed from the review list. $reviewStatus = $user->getReviewStatus($this->_document->getID(), $this->_version); @@ -3722,7 +3722,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return integer new review log id */ function setReviewByGrp($group, $requestUser, $status, $comment, $file='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); // Check to see if the user can be removed from the review list. $reviewStatus = $group->getReviewStatus($this->_document->getID(), $this->_version); @@ -3761,7 +3761,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ function addIndApprover($user, $requestUser) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $userID = $user->getID(); @@ -3810,7 +3810,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ function addGrpApprover($group, $requestUser) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $groupID = $group->getID(); @@ -3892,7 +3892,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return integer 0 on success, < 0 in case of an error */ function setApprovalByInd($user, $requestUser, $status, $comment, $file='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); // Check to see if the user can be removed from the approval list. $approvalStatus = $user->getApprovalStatus($this->_document->getID(), $this->_version); @@ -3936,7 +3936,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * group instead of a user */ function setApprovalByGrp($group, $requestUser, $status, $comment, $file='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); // Check to see if the user can be removed from the approval list. $approvalStatus = $group->getApprovalStatus($this->_document->getID(), $this->_version); @@ -3974,7 +3974,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ function delIndReviewer($user, $requestUser, $msg='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); // Check to see if the user can be removed from the review list. $reviewStatus = $user->getReviewStatus($this->_document->getID(), $this->_version); @@ -4004,7 +4004,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ function delGrpReviewer($group, $requestUser, $msg='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $groupID = $group->getID(); @@ -4035,7 +4035,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ function delIndApprover($user, $requestUser, $msg='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $userID = $user->getID(); @@ -4067,7 +4067,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ } /* }}} */ function delGrpApprover($group, $requestUser, $msg='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $groupID = $group->getID(); @@ -4103,7 +4103,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @param object $state */ function setWorkflowState($state) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if($this->_workflow) { $queryStr = "UPDATE `tblWorkflowDocumentContent` set `state`=". $state->getID() ." WHERE `workflow`=". intval($this->_workflow->getID()). " AND `document`=". intval($this->_document->getID()) ." AND version=". intval($this->_version) .""; @@ -4123,7 +4123,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * or false in case of error, e.g. the version has not a workflow */ function getWorkflowState() { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if(!$this->_workflow) $this->getWorkflow(); @@ -4140,7 +4140,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ if (is_bool($recs) && !$recs) return false; $this->_workflowState = new SeedDMS_Core_Workflow_State($recs[0]['id'], $recs[0]['name'], $recs[0]['maxtime'], $recs[0]['precondfunc'], $recs[0]['documentstatus']); - $this->_workflowState->setDMS($this->_document->_dms); + $this->_workflowState->setDMS($this->_document->getDMS()); } return $this->_workflowState; } /* }}} */ @@ -4151,7 +4151,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @param object $workflow */ function setWorkflow($workflow, $user) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $this->getWorkflow(); if($workflow && is_object($workflow)) { @@ -4184,7 +4184,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * or false in case of error, e.g. the version has not a workflow */ function getWorkflow() { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if (!isset($this->_workflow)) { $queryStr= @@ -4196,8 +4196,8 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ return false; if(!$recs) return false; - $this->_workflow = new SeedDMS_Core_Workflow($recs[0]['id'], $recs[0]['name'], $this->_document->_dms->getWorkflowState($recs[0]['initstate'])); - $this->_workflow->setDMS($this->_document->_dms); + $this->_workflow = new SeedDMS_Core_Workflow($recs[0]['id'], $recs[0]['name'], $this->_document->getDMS()->getWorkflowState($recs[0]['initstate'])); + $this->_workflow->setDMS($this->_document->getDMS()); } return $this->_workflow; } /* }}} */ @@ -4213,7 +4213,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return boolean true on success, otherwise false */ function rewriteWorkflowLog($workflowlog) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $db->startTransaction(); @@ -4250,7 +4250,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * or false in case of error */ function rewindWorkflow() { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $this->getWorkflow(); @@ -4291,7 +4291,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * or false in case of error */ function removeWorkflow($user, $unlink=false) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $this->getWorkflow(); @@ -4336,7 +4336,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @param object $subworkflow */ function getParentWorkflow() { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); /* document content must be in a workflow */ $this->getWorkflow(); @@ -4355,7 +4355,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ return false; if($recs[0]['parentworkflow']) - return $this->_document->_dms->getWorkflow($recs[0]['parentworkflow']); + return $this->_document->getDMS()->getWorkflow($recs[0]['parentworkflow']); return false; } /* }}} */ @@ -4366,7 +4366,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @param object $subworkflow */ function runSubWorkflow($subworkflow) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); /* document content must be in a workflow */ $this->getWorkflow(); @@ -4400,7 +4400,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @param string comment for the transition trigger */ function returnFromSubWorkflow($user, $transition=null, $comment='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); /* document content must be in a workflow */ $this->getWorkflow(); @@ -4430,8 +4430,8 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ return false; } - $this->_workflow = $this->_document->_dms->getWorkflow($recs[0]['parentworkflow']); - $this->_workflow->setDMS($this->_document->_dms); + $this->_workflow = $this->_document->getDMS()->getWorkflow($recs[0]['parentworkflow']); + $this->_workflow->setDMS($this->_document->getDMS()); if($transition) { if(false === $this->triggerWorkflowTransition($user, $transition, $comment)) { @@ -4456,7 +4456,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return boolean true if user may trigger transaction */ function triggerWorkflowTransitionIsAllowed($user, $transition) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if(!$this->_workflow) $this->getWorkflow(); @@ -4598,7 +4598,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * false in case of an error */ function triggerWorkflowTransition($user, $transition, $comment='') { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if(!$this->_workflow) $this->getWorkflow(); @@ -4739,7 +4739,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return array list of operations */ function getWorkflowLog($transition = null) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); /* if(!$this->_workflow) @@ -4759,8 +4759,8 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ $workflowlogs = array(); for ($i = 0; $i < count($resArr); $i++) { - $workflow = $this->_document->_dms->getWorkflow($resArr[$i]["workflow"]); - $workflowlog = new SeedDMS_Core_Workflow_Log($resArr[$i]["id"], $this->_document->_dms->getDocument($resArr[$i]["document"]), $resArr[$i]["version"], $workflow, $this->_document->_dms->getUser($resArr[$i]["userid"]), $workflow->getTransition($resArr[$i]["transition"]), $resArr[$i]["date"], $resArr[$i]["comment"]); + $workflow = $this->_document->getDMS()->getWorkflow($resArr[$i]["workflow"]); + $workflowlog = new SeedDMS_Core_Workflow_Log($resArr[$i]["id"], $this->_document->getDMS()->getDocument($resArr[$i]["document"]), $resArr[$i]["version"], $workflow, $this->_document->getDMS()->getUser($resArr[$i]["userid"]), $workflow->getTransition($resArr[$i]["transition"]), $resArr[$i]["date"], $resArr[$i]["comment"]); $workflowlog->setDMS($this); $workflowlogs[$i] = $workflowlog; } @@ -4775,7 +4775,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * @return array list of operations */ function getLastWorkflowTransition() { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if(!$this->_workflow) $this->getWorkflow(); @@ -4792,7 +4792,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ $workflowlogs = array(); $i = 0; - $workflowlog = new SeedDMS_Core_Workflow_Log($resArr[$i]["id"], $this->_document->_dms->getDocument($resArr[$i]["document"]), $resArr[$i]["version"], $this->_workflow, $this->_document->_dms->getUser($resArr[$i]["userid"]), $this->_workflow->getTransition($resArr[$i]["transition"]), $resArr[$i]["date"], $resArr[$i]["comment"]); + $workflowlog = new SeedDMS_Core_Workflow_Log($resArr[$i]["id"], $this->_document->getDMS()->getDocument($resArr[$i]["document"]), $resArr[$i]["version"], $this->_workflow, $this->_document->getDMS()->getUser($resArr[$i]["userid"]), $this->_workflow->getTransition($resArr[$i]["transition"]), $resArr[$i]["date"], $resArr[$i]["comment"]); $workflowlog->setDMS($this); return $workflowlog; @@ -4910,8 +4910,9 @@ class SeedDMS_Core_DocumentLink { /* {{{ */ * @return bool|SeedDMS_Core_User */ function getUser() { - if (!isset($this->_user)) - $this->_user = $this->_document->_dms->getUser($this->_userID); + if (!isset($this->_user)) { + $this->_user = $this->_document->getDMS()->getUser($this->_userID); + } return $this->_user; } @@ -5087,7 +5088,7 @@ class SeedDMS_Core_DocumentFile { /* {{{ */ * @param string $newComment string new comment of document */ function setComment($newComment) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $queryStr = "UPDATE `tblDocumentFiles` SET `comment` = ".$db->qstr($newComment)." WHERE `document` = ".$this->_document->getId()." AND `id` = ". $this->_id; if (!$db->getResult($queryStr)) @@ -5110,7 +5111,7 @@ class SeedDMS_Core_DocumentFile { /* {{{ */ * @return boolean true on success */ function setDate($date) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if(!$date) $date = time(); @@ -5157,7 +5158,7 @@ class SeedDMS_Core_DocumentFile { /* {{{ */ * @param $newComment string new name of document */ function setName($newName) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $queryStr = "UPDATE `tblDocumentFiles` SET `name` = ".$db->qstr($newName)." WHERE `document` = ".$this->_document->getId()." AND `id` = ". $this->_id; if (!$db->getResult($queryStr)) @@ -5172,7 +5173,7 @@ class SeedDMS_Core_DocumentFile { /* {{{ */ */ function getUser() { if (!isset($this->_user)) - $this->_user = $this->_document->_dms->getUser($this->_userID); + $this->_user = $this->_document->getDMS()->getUser($this->_userID); return $this->_user; } @@ -5194,7 +5195,7 @@ class SeedDMS_Core_DocumentFile { /* {{{ */ * @param $newComment string new version of document */ function setVersion($newVersion) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); if(!is_numeric($newVersion) && $newVersion != '') return false; @@ -5218,7 +5219,7 @@ class SeedDMS_Core_DocumentFile { /* {{{ */ * @param $newComment string new comment of document */ function setPublic($newPublic) { /* {{{ */ - $db = $this->_document->_dms->getDB(); + $db = $this->_document->getDMS()->getDB(); $queryStr = "UPDATE `tblDocumentFiles` SET `public` = ".($newPublic ? 1 : 0)." WHERE `document` = ".$this->_document->getId()." AND `id` = ". $this->_id; if (!$db->getResult($queryStr)) @@ -5240,7 +5241,7 @@ class SeedDMS_Core_DocumentFile { /* {{{ */ * @return integer either M_NONE or M_READ */ function getAccessMode($u) { /* {{{ */ - $dms = $this->_document->_dms; + $dms = $this->_document->getDMS(); /* Check if 'onCheckAccessDocumentLink' callback is set */ if(isset($this->_dms->callbacks['onCheckAccessDocumentFile'])) { From bb38dc7b22352f32171175b1c31079ab602809d3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 13 Jan 2020 09:32:22 +0100 Subject: [PATCH 338/467] properly handle duplicate names when moving a document/folder --- webdav/webdav.php | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/webdav/webdav.php b/webdav/webdav.php index ff08f71ee..00c4e0d4f 100644 --- a/webdav/webdav.php +++ b/webdav/webdav.php @@ -1062,6 +1062,11 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $objdest = $this->reverseLookup($options["dest"]); $newdocname = ''; + /* if the destіnation could not be found, then a folder/document shall + * be renamed. In that case the source object is moved into the ѕame + * or different folder under a new name. + * $objdest will store the new destination folder afterwards + */ if(!$objdest) { /* check if at least the dest directory exists */ $dirname = dirname($options['dest']); @@ -1112,13 +1117,17 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server /* Set the new Folder of the source object */ if(get_class($objsource) == $this->dms->getClassname('document')) { /* Check if name already exists in the folder */ - /* if(!$settings->_enableDuplicateDocNames) { - if($objdest->hasDocumentByName($objsource->getName())) { - return "403 Forbidden"; + if($newdocname) { + if($objdest->hasDocumentByName($newdocname)) { + return "403 Forbidden"; + } + } else { + if($objdest->hasDocumentByName($objsource->getName())) { + return "403 Forbidden"; + } } } - */ $oldFolder = $objsource->getFolder(); if($objsource->setFolder($objdest)) { @@ -1153,8 +1162,14 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server } elseif(get_class($objsource) == $this->dms->getClassname('folder')) { /* Check if name already exists in the folder */ if(!$settings->_enableDuplicateSubFolderNames) { - if($objdest->hasSubFolderByName($objsource->getName())) { - return "403 Forbidden"; + if($newdocname) { + if($objdest->hasSubFolderByName($newdocname)) { + return "403 Forbidden"; + } + } else { + if($objdest->hasSubFolderByName($objsource->getName())) { + return "403 Forbidden"; + } } } $oldFolder = $objsource->getParent(); @@ -1176,7 +1191,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server $params['old_folder_path'] = $oldFolder->getFolderPathPlain(); $params['new_folder_path'] = $objdest->getFolderPathPlain(); $params['username'] = $this->user->getFullName(); - $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(); + $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$objsource->getID(); $params['sitename'] = $settings->_siteName; $params['http_root'] = $settings->_httpRoot; $this->notifier->toList($this->user, $nl["users"], $subject, $message, $params); From 61ce13d681d33bff94004bb74a0ebadd09169604 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 13 Jan 2020 09:32:48 +0100 Subject: [PATCH 339/467] add entry for 5.1.14 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 12166e154..15e10fdb6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -14,6 +14,7 @@ used method by setting a parameter in the extension's config file will no longer work. - clean up code for managing extensions +- fix renaming of folders via webdav -------------------------------------------------------------------------------- Changes in version 5.1.13 From 392a7e4a51690f2cbe6bffc024348a887186ded5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 13 Jan 2020 17:31:59 +0100 Subject: [PATCH 340/467] make getFileName() public --- SeedDMS_Preview/Preview/Previewer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SeedDMS_Preview/Preview/Previewer.php b/SeedDMS_Preview/Preview/Previewer.php index b8df0ca1c..9e2fe2a34 100644 --- a/SeedDMS_Preview/Preview/Previewer.php +++ b/SeedDMS_Preview/Preview/Previewer.php @@ -52,7 +52,7 @@ class SeedDMS_Preview_Previewer extends SeedDMS_Preview_Base { * @param integer $width width of preview image * @return string file name of preview image */ - protected function getFileName($object, $width) { /* {{{ */ + public function getFileName($object, $width) { /* {{{ */ if(!$object) return false; From b59f906f273859097a2c2a2605421543b7c1674b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 14 Jan 2020 08:31:43 +0100 Subject: [PATCH 341/467] fis saving of disable flag of extensions --- inc/inc.ClassSettings.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index e63d0202b..26206d127 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -716,10 +716,14 @@ class Settings { /* {{{ */ $extname = strval($tmp['name']); if(isset($tmp['disable'])) $disabled = strval($tmp['disable']); + else + $disabled = 0; $this->_extensions[$extname]['__disable__'] = $disabled=='1' || $disabled == 'true' ? true : false; foreach($extension->children() as $parameter) { $tmp2 = $parameter->attributes(); - $this->_extensions[$extname][strval($tmp2['name'])] = strval($parameter); + /* Do not read a parameter with the same name. Just a pre caution */ + if(strval($tmp2['name']) != '__disable__') + $this->_extensions[$extname][strval($tmp2['name'])] = strval($parameter); } } @@ -1058,7 +1062,7 @@ class Settings { /* {{{ */ * in configuration form. */ foreach($extension as $fieldname=>$confvalue) { - if($confvalue) { + if($fieldname != '___disable__' && $confvalue) { $parameter = $extnode->addChild('parameter'); $parameter[0] = isset($extension[$fieldname]) ? (is_array($extension[$fieldname]) ? implode(',', $extension[$fieldname]) : $extension[$fieldname]) : ''; $this->setXMLAttributValue($parameter, 'name', $fieldname); From daf08343e36cff408ef72bebae71d13513a9be01 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 14 Jan 2020 08:32:05 +0100 Subject: [PATCH 342/467] set disable flag of extension otherwise it will not be saved --- views/bootstrap/class.Settings.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 13492c439..14a48cb56 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -78,7 +78,7 @@ class SeedDMS_View_Settings extends SeedDMS_Bootstrap_Style { */ protected function showRawConfigHeadline($text) { /* {{{ */ ?> - + showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); if($this->hasHook('processConfig')) $extconf = $this->callHook('processConfig', $extname, $extconf); if($extconf['config']) { - $this->showRawConfigHeadline("".$extconf['title']); + $this->showRawConfigHeadline("".'_extensions[$extname]["__disable__"] ? '1' : '').'" />'.$extconf['title']); foreach($extconf['config'] as $confkey=>$conf) { ob_start(); switch($conf['type']) { From 0dbeebee802e9d4dfde686ee1501e9e438b395e9 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 16 Jan 2020 10:57:07 +0100 Subject: [PATCH 343/467] add config for apache 2.4 and 2.2 --- conf/.htaccess | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/conf/.htaccess b/conf/.htaccess index d774f51c9..2e473b4ba 100644 --- a/conf/.htaccess +++ b/conf/.htaccess @@ -1,6 +1,10 @@ # Make sure settings.xml can not be opened from outside! -#Redirect /conf/settings.xml /index.php - -Order allow,deny -Deny from all - +# Deny all requests from Apache 2.4+. + + Require all denied + + +# Deny all requests from Apache 2.0-2.2. + + Deny from all + From 827049ee9a89b03daac1b2db3cc0ba876a8ae7ea Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 16 Jan 2020 12:45:59 +0100 Subject: [PATCH 344/467] nofication field can be turned of when uploading a new document --- views/bootstrap/class.AddDocument.php | 2 ++ views/bootstrap/class.Settings.php | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index 36ccdf1e6..65e530ae7 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -635,6 +635,7 @@ $(document).ready(function() { } $this->warningMsg(getMLText("add_doc_reviewer_approver_warning")); } + if(!$nodocumentformfields || !in_array('notification', $nodocumentformfields)) { $this->contentSubHeading(getMLText("add_document_notify")); $options = array(); @@ -671,6 +672,7 @@ $(document).ready(function() { 'options'=>$options ) ); + } $this->formSubmit(" ".getMLText('add_document')); ?> diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 14a48cb56..31f5810e0 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -288,7 +288,7 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); --> showConfigHeadline('settings_Edition'); ?> showConfigCheckbox('settings_strictFormCheck', 'strictFormCheck'); ?> -showConfigOption('settings_noDocumentFormFields', 'noDocumentFormFields', array('comment', 'keywords', 'categories', 'sequence', 'expires', 'version_comment'), true, true); ?> +showConfigOption('settings_noDocumentFormFields', 'noDocumentFormFields', array('comment', 'keywords', 'categories', 'sequence', 'expires', 'version_comment', 'notification'), true, true); ?> showConfigText('settings_viewOnlineFileTypes', 'viewOnlineFileTypes', 'array'); ?> showConfigText('settings_editOnlineFileTypes', 'editOnlineFileTypes', 'array'); ?> showConfigCheckbox('settings_enableConverting', 'enableConverting'); ?> From f1599906d0d1e8fe4196c5412226aa5fe46233e8 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 16 Jan 2020 13:07:43 +0100 Subject: [PATCH 345/467] check if $_POST["reqversion"] is empty --- op/op.AddDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op/op.AddDocument.php b/op/op.AddDocument.php index a82105aa5..4c55beb66 100644 --- a/op/op.AddDocument.php +++ b/op/op.AddDocument.php @@ -124,7 +124,7 @@ foreach($attributes_version as $attrdefid=>$attribute) { } */ -$reqversion = (int)$_POST["reqversion"]; +$reqversion = !empty($_POST['reqversion']) ? (int)$_POST["reqversion"] : 0; if ($reqversion<1) $reqversion=1; $sequence = $_POST["sequence"]; From 905adbe6ba0a76055eb4d96491a6748f11cab04e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 16 Jan 2020 13:08:22 +0100 Subject: [PATCH 346/467] do not ask for approver/reviewer if workflow is turned of completely --- views/bootstrap/class.UpdateDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.UpdateDocument.php b/views/bootstrap/class.UpdateDocument.php index 12ce32cb6..b1c4b0815 100644 --- a/views/bootstrap/class.UpdateDocument.php +++ b/views/bootstrap/class.UpdateDocument.php @@ -349,7 +349,7 @@ console.log(element); ); } $this->warningMsg(getMLText("add_doc_workflow_warning")); - } else { + } elseif($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { $docAccess = $document->getReadAccessList($enableadminrevapp, $enableownerrevapp); if($workflowmode == 'traditional') { $this->contentSubHeading(getMLText("assign_reviewers")); From f0ab6af744864201aef8d116f00bf5cd2a1d26d1 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 16 Jan 2020 13:08:48 +0100 Subject: [PATCH 347/467] asking for version number can be turned of completely --- views/bootstrap/class.AddDocument.php | 2 ++ views/bootstrap/class.Settings.php | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index 65e530ae7..57162b071 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -325,6 +325,7 @@ $(document).ready(function() { } $this->contentSubHeading(getMLText("version_info")); + if(!$nodocumentformfields || !in_array('version', $nodocumentformfields)) { $this->formField( getMLText("version"), array( @@ -335,6 +336,7 @@ $(document).ready(function() { 'value'=>1 ) ); + } $this->formField( getMLText("local_file"), $enablelargefileupload ? $this->getFineUploaderHtml() : $this->getFileChooserHtml('userfile[]', $enablemultiupload).($enablemultiupload ? '' : '') diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 31f5810e0..3cf73e26f 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -288,7 +288,7 @@ $this->showStartPaneContent('site', (!$currenttab || $currenttab == 'site')); --> showConfigHeadline('settings_Edition'); ?> showConfigCheckbox('settings_strictFormCheck', 'strictFormCheck'); ?> -showConfigOption('settings_noDocumentFormFields', 'noDocumentFormFields', array('comment', 'keywords', 'categories', 'sequence', 'expires', 'version_comment', 'notification'), true, true); ?> +showConfigOption('settings_noDocumentFormFields', 'noDocumentFormFields', array('comment', 'keywords', 'categories', 'sequence', 'expires', 'version', 'version_comment', 'notification'), true, true); ?> showConfigText('settings_viewOnlineFileTypes', 'viewOnlineFileTypes', 'array'); ?> showConfigText('settings_editOnlineFileTypes', 'editOnlineFileTypes', 'array'); ?> showConfigCheckbox('settings_enableConverting', 'enableConverting'); ?> From 6e2dd6c159a1266fdca7d7ce879e8917a55a8481 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 16 Jan 2020 17:48:23 +0100 Subject: [PATCH 348/467] check for presetexpdate and sequence in $_POST --- op/op.EditDocument.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/op/op.EditDocument.php b/op/op.EditDocument.php index a8ef4fbc4..9854e28ca 100644 --- a/op/op.EditDocument.php +++ b/op/op.EditDocument.php @@ -67,8 +67,7 @@ if(isset($_POST['categoryidform1'])) { } else { $categories = array(); } -$sequence = isset($_POST["sequence"]) ? $_POST["sequence"] : "keep"; -$sequence = str_replace(',', '.', $_POST["sequence"]); +$sequence = isset($_POST["sequence"]) ? str_replace(',', '.', $_POST["sequence"]) : "keep"; if (!is_numeric($sequence)) { $sequence="keep"; } @@ -77,6 +76,7 @@ if(isset($_POST["attributes"])) else $attributes = array(); +if(isset($_POST['presetexpdate'])) { switch($_POST["presetexpdate"]) { case "date": $tmp = explode('-', $_POST["expdate"]); @@ -103,6 +103,9 @@ default: $expires = null; break; } +} else { + $expires = null; +} $oldname = $document->getName(); $oldcomment = $document->getComment(); From 13fcdf43ca8136b20ecf90b48dcfa2bff7de88d7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 20 Jan 2020 10:36:31 +0100 Subject: [PATCH 349/467] show list of expired documents newer shew any documents --- views/bootstrap/class.MyDocuments.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.MyDocuments.php b/views/bootstrap/class.MyDocuments.php index 9e5da1249..c05ec4bc2 100644 --- a/views/bootstrap/class.MyDocuments.php +++ b/views/bootstrap/class.MyDocuments.php @@ -821,7 +821,7 @@ class SeedDMS_View_MyDocuments extends SeedDMS_Bootstrap_Style { if($docs = $dms->getDocumentsExpired(-3*365, $user)) { $this->contentHeading(getMLText("documents_expired")); $this->contentContainerStart(); - if (count($resArr)>0) { + if (count($docs)>0) { print "
          "; print "\n\n"; @@ -863,7 +863,7 @@ class SeedDMS_View_MyDocuments extends SeedDMS_Bootstrap_Style { print "
          "; } - else printMLText("no_docs_locked"); + else printMLText("no_docs_expired"); $this->contentContainerEnd(); } From fbb2ba3180148620441845ad1c9ad8924895bc26 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 20 Jan 2020 10:38:58 +0100 Subject: [PATCH 350/467] fix list of expired documents --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 15e10fdb6..01f64b8b5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -15,6 +15,7 @@ longer work. - clean up code for managing extensions - fix renaming of folders via webdav +- fix list of expired documents on MyDocuments page -------------------------------------------------------------------------------- Changes in version 5.1.13 From 8362796339221fea9e1304b9543cd34698fc4653 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 20 Jan 2020 11:26:44 +0100 Subject: [PATCH 351/467] fix sql statement for adding a new primary key --- install/update-6.0.0/update.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/update-6.0.0/update.sql b/install/update-6.0.0/update.sql index 480415c4f..74d8eb548 100644 --- a/install/update-6.0.0/update.sql +++ b/install/update-6.0.0/update.sql @@ -6,7 +6,7 @@ ALTER TABLE `tblUsers` ADD COLUMN `secret` varchar(50) DEFAULT NULL AFTER `pwd`; ALTER TABLE `tblWorkflows` ADD COLUMN `layoutdata` text DEFAULT NULL AFTER `initstate`; -ALTER TABLE `tblWorkflowDocumentContent` ADD COLUMN `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; +ALTER TABLE `tblWorkflowDocumentContent` ADD COLUMN `id` int(11) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`); ALTER TABLE `tblWorkflowLog` ADD COLUMN `workflowdocumentcontent` int(11) NOT NULL DEFAULT '0' AFTER `id`; From 74300082fcfdf5f360c47bebd4387aa5b3588525 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 20 Jan 2020 11:53:38 +0100 Subject: [PATCH 352/467] fix bug #462, pass showtree to ViewDocument --- CHANGELOG | 1 + out/out.ViewDocument.php | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 01f64b8b5..6be2a45bc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -16,6 +16,7 @@ - clean up code for managing extensions - fix renaming of folders via webdav - fix list of expired documents on MyDocuments page +- pass showtree to ViewDocument (Closes: #462) -------------------------------------------------------------------------------- Changes in version 5.1.13 diff --git a/out/out.ViewDocument.php b/out/out.ViewDocument.php index fd0a7d234..af38db22a 100644 --- a/out/out.ViewDocument.php +++ b/out/out.ViewDocument.php @@ -77,6 +77,7 @@ if($view) { $view->setParam('previewConverters', isset($settings->_converters['preview']) ? $settings->_converters['preview'] : array()); $view->setParam('pdfConverters', isset($settings->_converters['pdf']) ? $settings->_converters['pdf'] : array()); $view->setParam('showFullPreview', $settings->_showFullPreview); + $view->setParam('showtree', showtree()); $view->setParam('convertToPdf', $settings->_convertToPdf); $view->setParam('currenttab', isset($_GET['currenttab']) ? $_GET['currenttab'] : ""); $view->setParam('timeout', $settings->_cmdTimeout); From e830477bf0101d67b1f35890ab08b3927fcd1a80 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 21 Jan 2020 08:11:03 +0100 Subject: [PATCH 353/467] new method getPreviewFile(), start version 1.13.0 --- SeedDMS_Preview/Preview/Base.php | 31 ++++++++++++++++++------ SeedDMS_Preview/Preview/PdfPreviewer.php | 2 ++ SeedDMS_Preview/Preview/Previewer.php | 2 ++ SeedDMS_Preview/package.xml | 26 ++++++++++++++++---- 4 files changed, 48 insertions(+), 13 deletions(-) diff --git a/SeedDMS_Preview/Preview/Base.php b/SeedDMS_Preview/Preview/Base.php index da153b305..f34359e7e 100644 --- a/SeedDMS_Preview/Preview/Base.php +++ b/SeedDMS_Preview/Preview/Base.php @@ -50,6 +50,12 @@ class SeedDMS_Preview_Base { */ protected $xsendfile; + /** + * @var string $lastpreviewfile will be set to the file name of the last preview + * @access protected + */ + protected $lastpreviewfile; + function __construct($previewDir, $timeout=5, $xsendfile=true) { /* {{{ */ if(!is_dir($previewDir)) { if (!SeedDMS_Core_File::makeDir($previewDir)) { @@ -154,14 +160,14 @@ class SeedDMS_Preview_Base { return array_key_exists($mimetype, $this->converters) && $this->converters[$mimetype]; } /* }}} */ -/** - * Send a file from disk to the browser - * - * This function uses either readfile() or the xѕendfile apache module if - * it is installed. - * - * @param string $filename - */ + /** + * Send a file from disk to the browser + * + * This function uses either readfile() or the xѕendfile apache module if + * it is installed. + * + * @param string $filename + */ protected function sendFile($filename) { /* {{{ */ if($this->xsendfile && function_exists('apache_get_modules') && in_array('mod_xsendfile',apache_get_modules())) { header("X-Sendfile: ".$filename); @@ -173,5 +179,14 @@ class SeedDMS_Preview_Base { readfile($filename); } } /* }}} */ + + /** + * Return path of last created preview file + * + * @return string + */ + public function getPreviewFile() { /* {{{ */ + return $this->lastpreviewfile; + } /* }}} */ } diff --git a/SeedDMS_Preview/Preview/PdfPreviewer.php b/SeedDMS_Preview/Preview/PdfPreviewer.php index daae6a4ed..d4cc0b477 100644 --- a/SeedDMS_Preview/Preview/PdfPreviewer.php +++ b/SeedDMS_Preview/Preview/PdfPreviewer.php @@ -96,6 +96,7 @@ class SeedDMS_Preview_PdfPreviewer extends SeedDMS_Preview_Base { return false; if(!$target) $target = $this->previewDir.$dir.md5($infile); + $this->lastpreviewfile = $target.'.png'; if($target != '' && (!file_exists($target.'.pdf') || filectime($target.'.pdf') < filectime($infile))) { $cmd = ''; $mimeparts = explode('/', $mimetype, 2); @@ -110,6 +111,7 @@ class SeedDMS_Preview_PdfPreviewer extends SeedDMS_Preview_Base { try { self::execWithTimeout($cmd, $this->timeout); } catch(Exception $e) { + $this->lastpreviewfile = ''; return false; } } diff --git a/SeedDMS_Preview/Preview/Previewer.php b/SeedDMS_Preview/Preview/Previewer.php index 9e2fe2a34..ba69b75a4 100644 --- a/SeedDMS_Preview/Preview/Previewer.php +++ b/SeedDMS_Preview/Preview/Previewer.php @@ -105,6 +105,7 @@ class SeedDMS_Preview_Previewer extends SeedDMS_Preview_Base { return false; if(!$target) $target = $this->previewDir.$dir.md5($infile).'-'.$width; + $this->lastpreviewfile = $target.'.png'; if($target != '' && (!file_exists($target.'.png') || filectime($target.'.png') < filectime($infile))) { $cmd = ''; $mimeparts = explode('/', $mimetype, 2); @@ -120,6 +121,7 @@ class SeedDMS_Preview_Previewer extends SeedDMS_Preview_Base { try { self::execWithTimeout($cmd, $this->timeout); } catch(Exception $e) { + $this->lastpreviewfile = ''; return false; } } diff --git a/SeedDMS_Preview/package.xml b/SeedDMS_Preview/package.xml index 753cf4768..aa4a3992f 100644 --- a/SeedDMS_Preview/package.xml +++ b/SeedDMS_Preview/package.xml @@ -11,11 +11,11 @@ uwe@steinmann.cx yes - 2019-02-11 + 2020-01-21 - 1.2.10 - 1.2.10 + 1.3.0 + 1.3.0 stable @@ -23,8 +23,7 @@ GPL License -new parameter for enabling/disabling xsendfile -fix creation of pdf preview if document content class is not SeedDMS_Core_DocumentContent +add new methode getPreviewFile() @@ -404,5 +403,22 @@ make sure list of converters is always an array usage of mod_sendfile can be configured + + 2019-02-11 + + + 1.2.10 + 1.2.10 + + + stable + stable + + GPL License + +new parameter for enabling/disabling xsendfile +fix creation of pdf preview if document content class is not SeedDMS_Core_DocumentContent + + From 069b0b2459625ea679bda8b0135345234e95c04f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 21 Jan 2020 18:26:18 +0100 Subject: [PATCH 354/467] fix text when loading changelog --- views/bootstrap/class.ExtensionMgr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.ExtensionMgr.php b/views/bootstrap/class.ExtensionMgr.php index 1a7f2909c..a7a79a062 100644 --- a/views/bootstrap/class.ExtensionMgr.php +++ b/views/bootstrap/class.ExtensionMgr.php @@ -354,7 +354,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Bootstrap_Style {

          From 2b685a835e5f6cc05ed3e31aa5e6cbd27fe5b996 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 Feb 2020 11:34:42 +0100 Subject: [PATCH 368/467] include new Iterator class --- SeedDMS_Core/Core.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/SeedDMS_Core/Core.php b/SeedDMS_Core/Core.php index ada1eb394..13cf1d142 100644 --- a/SeedDMS_Core/Core.php +++ b/SeedDMS_Core/Core.php @@ -95,3 +95,8 @@ require_once('Core/inc.AccessUtils.php'); * @uses SeedDMS_File */ require_once('Core/inc.FileUtils.php'); + +/** + * @uses SeedDMS_File + */ +require_once('Core/inc.ClassIterator.php'); From 8f041cb072efa353f493cab4cf4111569aae0a93 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 Feb 2020 12:02:02 +0100 Subject: [PATCH 369/467] add cmpVersion() function, make _number and _banner const --- inc/inc.Version.php | 75 +++++++++++++++++++++++++++++++++------------ 1 file changed, 55 insertions(+), 20 deletions(-) diff --git a/inc/inc.Version.php b/inc/inc.Version.php index bd2c1d827..c4a50edfa 100644 --- a/inc/inc.Version.php +++ b/inc/inc.Version.php @@ -18,34 +18,69 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -class SeedDMS_Version { +class SeedDMS_Version { /* {{{ */ - public $_number = "5.1.14"; - private $_string = "SeedDMS"; + const _number = "5.1.14"; + const _string = "SeedDMS"; function __construct() { } - function version() { - return $this->_number; - } + function version() { /* {{{ */ + return self::_number; + } /* }}} */ - function majorVersion() { - $tmp = explode('.', $this->_number, 3); + function majorVersion() { /* {{{ */ + $tmp = explode('.', self::_number, 3); return (int) $tmp[0]; - } + } /* }}} */ - function minorVersion() { - $tmp = explode('.', $this->_number, 3); + function minorVersion() { /* {{{ */ + $tmp = explode('.', self::_number, 3); return (int) $tmp[1]; + } /* }}} */ + + function subminorVersion() { /* {{{ */ + $tmp = explode('.', self::_number, 3); + return (int) $tmp[2]; + } /* }}} */ + + function banner() { /* {{{ */ + return self::_string .", ". self::_number; } - function subminorVersion() { - $tmp = explode('.', $this->_number, 3); - return (int) $tmp[2]; - } - function banner() { - return $this->_string .", ". $this->_number; - } -} -?> + /** + * Compare two version + * + * This functions compares the current version in the format x.x.x with + * the passed version + * + * @param string $ver + * @return int -1 if _number < $ver, 0 if _number == $ver, 1 if _number > $ver + */ + static public function cmpVersion($ver) { /* {{{ */ + $tmp1 = explode('.', self::_number); + $tmp2 = explode('.', $ver); + if(intval($tmp1[0]) < intval($tmp2[0])) { + return -1; + } elseif(intval($tmp1[0]) > intval($tmp2[0])) { + return 1; + } else { + if(intval($tmp1[1]) < intval($tmp2[1])) { + return -1; + } elseif(intval($tmp1[1]) > intval($tmp2[1])) { + return 1; + } else { + if(intval($tmp1[2]) < intval($tmp2[2])) { + return -1; + } elseif(intval($tmp1[2]) > intval($tmp2[2])) { + return 1; + } else { + return 0; + } + } + } + } /* }}} */ + +} /* }}} */ + From 3e9d2dc695bcd2032c64f0e8b4644a9b3cc9e554 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 Feb 2020 17:01:00 +0100 Subject: [PATCH 370/467] get read access list for receipt workflow --- views/bootstrap/class.CheckInDocument.php | 1 + 1 file changed, 1 insertion(+) diff --git a/views/bootstrap/class.CheckInDocument.php b/views/bootstrap/class.CheckInDocument.php index b912c24d7..8589abc45 100644 --- a/views/bootstrap/class.CheckInDocument.php +++ b/views/bootstrap/class.CheckInDocument.php @@ -608,6 +608,7 @@ $(document).ready(function() { getReadAccessList(); ?> From 9672f19bc40a894cb3d2d519561871c093a4d74f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 Feb 2020 17:01:26 +0100 Subject: [PATCH 371/467] call new hook checkOutInfo --- views/bootstrap/class.ViewDocument.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 554efc52d..b339eecf8 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -205,7 +205,10 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style { $checkoutdir = $this->params['checkOutDir']; $this->contentHeading(getMLText("document_infos")); - if($info = $document->getCheckOutInfo()) { + $txt = $this->callHook('checkOutInfo', $document); + if(is_string($txt)) { + echo $txt; + } elseif($info = $document->getCheckOutInfo()) { echo "
          "; $session = $this->params['session']; if($session->getSu()) { From 21ca19df3b379479712484d9da67d2719cd543b1 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 Feb 2020 18:40:03 +0100 Subject: [PATCH 372/467] fix update of sqlite3 the old code had various left overs --- install/update-5.1.0/update-sqlite3.sql | 100 ++++++++++++------------ 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/install/update-5.1.0/update-sqlite3.sql b/install/update-5.1.0/update-sqlite3.sql index ac2c192a7..ed9b14600 100644 --- a/install/update-5.1.0/update-sqlite3.sql +++ b/install/update-5.1.0/update-sqlite3.sql @@ -1,34 +1,32 @@ BEGIN; -ALTER TABLE `tblVersion` RENAME TO `__tblVersion`; - -CREATE TABLE `tblVersion` ( +CREATE TABLE `new_tblVersion` ( `date` TEXT default NULL, `major` INTEGER, `minor` INTEGER, `subminor` INTEGER ); -INSERT INTO `tblVersion` SELECT * FROM `__tblVersion`; +INSERT INTO `new_tblVersion` SELECT * FROM `tblVersion`; -DROP TABLE `__tblVersion`; +DROP TABLE `tblVersion`; -ALTER TABLE `tblUserImages` RENAME TO `__tblUserImages`; +ALTER TABLE `new_tblVersion` RENAME TO `tblVersion`; -CREATE TABLE `tblUserImages` ( +CREATE TABLE `new_tblUserImages` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, `image` blob NOT NULL, `mimeType` varchar(100) NOT NULL default '' ); -INSERT INTO `tblUserImages` SELECT * FROM `__tblUserImages`; +INSERT INTO `new_tblUserImages` SELECT * FROM `tblUserImages`; -DROP TABLE `__tblUserImages`; +DROP TABLE `tblUserImages`; -ALTER TABLE `tblDocumentContent` RENAME TO `__tblDocumentContent`; +ALTER TABLE `new_tblUserImages` RENAME TO `tblUserImages`; -CREATE TABLE `tblDocumentContent` ( +CREATE TABLE `new_tblDocumentContent` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `document` INTEGER NOT NULL default '0' REFERENCES `tblDocuments` (`id`), `version` INTEGER unsigned NOT NULL, @@ -44,13 +42,13 @@ CREATE TABLE `tblDocumentContent` ( UNIQUE (`document`,`version`) ); -INSERT INTO `tblDocumentContent` SELECT * FROM `__tblDocumentContent`; +INSERT INTO `new_tblDocumentContent` SELECT * FROM `tblDocumentContent`; -DROP TABLE `__tblDocumentContent`; +DROP TABLE `tblDocumentContent`; -ALTER TABLE `tblDocumentFiles` RENAME TO `__tblDocumentFiles`; +ALTER TABLE `new_tblDocumentContent` RENAME TO `tblDocumentContent`; -CREATE TABLE `tblDocumentFiles` ( +CREATE TABLE `new_tblDocumentFiles` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `document` INTEGER NOT NULL default 0 REFERENCES `tblDocuments` (`id`), `userID` INTEGER NOT NULL default 0 REFERENCES `tblUsers` (`id`), @@ -63,17 +61,17 @@ CREATE TABLE `tblDocumentFiles` ( `mimeType` varchar(100) NOT NULL default '' ) ; -INSERT INTO `tblDocumentFiles` SELECT * FROM `__tblDocumentFiles`; +INSERT INTO `new_tblDocumentFiles` SELECT * FROM `tblDocumentFiles`; -DROP TABLE `__tblDocumentFiles`; +DROP TABLE `tblDocumentFiles`; + +ALTER TABLE `new_tblDocumentFiles` RENAME TO `tblDocumentFiles`; ALTER TABLE `tblDocumentFiles` ADD COLUMN `version` INTEGER unsigned NOT NULL DEFAULT '0'; ALTER TABLE `tblDocumentFiles` ADD COLUMN `public` INTEGER unsigned NOT NULL DEFAULT '0'; -ALTER TABLE `tblUsers` RENAME TO `__tblUsers`; - -CREATE TABLE `tblUsers` ( +CREATE TABLE `new_tblUsers` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `login` varchar(50) default NULL, `pwd` varchar(50) default NULL, @@ -92,39 +90,39 @@ CREATE TABLE `tblUsers` ( UNIQUE (`login`) ); -INSERT INTO `tblUsers` SELECT * FROM `__tblUsers`; +INSERT INTO `new_tblUsers` SELECT * FROM `tblUsers`; -DROP TABLE `__tblUsers`; +DROP TABLE `tblUsers`; -ALTER TABLE `tblUserPasswordRequest` RENAME TO `__tblUserPasswordRequest`; +ALTER TABLE `new_tblUsers` RENAME TO `tblUsers`; -CREATE TABLE `tblUserPasswordRequest` ( +CREATE TABLE `new_tblUserPasswordRequest` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, `hash` varchar(50) default NULL, `date` TEXT NOT NULL ); -INSERT INTO `tblUserPasswordRequest` SELECT * FROM `__tblUserPasswordRequest`; +INSERT INTO `new_tblUserPasswordRequest` SELECT * FROM `tblUserPasswordRequest`; -DROP TABLE `__tblUserPasswordRequest`; +DROP TABLE `tblUserPasswordRequest`; -ALTER TABLE `tblUserPasswordHistory` RENAME TO `__tblUserPasswordHistory`; +ALTER TABLE `new_tblUserPasswordRequest` RENAME TO `tblUserPasswordRequest`; -CREATE TABLE `tblUserPasswordHistory` ( +CREATE TABLE `new_tblUserPasswordHistory` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, `pwd` varchar(50) default NULL, `date` TEXT NOT NULL ); -INSERT INTO `tblUserPasswordHistory` SELECT * FROM `__tblUserPasswordHistory`; +INSERT INTO `new_tblUserPasswordHistory` SELECT * FROM `tblUserPasswordHistory`; -DROP TABLE `__tblUserPasswordHistory`; +DROP TABLE `tblUserPasswordHistory`; -ALTER TABLE `tblDocumentReviewLog` RENAME TO `__tblDocumentReviewLog`; +ALTER TABLE `new_tblUserPasswordHistory` RENAME TO `tblUserPasswordHistory`; -CREATE TABLE `tblDocumentReviewLog` ( +CREATE TABLE `new_tblDocumentReviewLog` ( `reviewLogID` INTEGER PRIMARY KEY AUTOINCREMENT, `reviewID` INTEGER NOT NULL default 0 REFERENCES `tblDocumentReviewers` (`reviewID`) ON DELETE CASCADE, `status` INTEGER NOT NULL default 0, @@ -133,13 +131,13 @@ CREATE TABLE `tblDocumentReviewLog` ( `userID` INTEGER NOT NULL default 0 REFERENCES `tblUsers` (`id`) ON DELETE CASCADE ); -INSERT INTO `tblDocumentReviewLog` SELECT * FROM `__tblDocumentReviewLog`; +INSERT INTO `new_tblDocumentReviewLog` SELECT * FROM `tblDocumentReviewLog`; -DROP TABLE `__tblDocumentReviewLog`; +DROP TABLE `tblDocumentReviewLog`; -ALTER TABLE `tblDocumentStatusLog` RENAME TO `__tblDocumentStatusLog`; +ALTER TABLE `new_tblDocumentReviewLog` RENAME TO `tblDocumentReviewLog`; -CREATE TABLE `tblDocumentStatusLog` ( +CREATE TABLE `new_tblDocumentStatusLog` ( `statusLogID` INTEGER PRIMARY KEY AUTOINCREMENT, `statusID` INTEGER NOT NULL default '0' REFERENCES `tblDocumentStatus` (`statusID`) ON DELETE CASCADE, `status` INTEGER NOT NULL default '0', @@ -148,13 +146,13 @@ CREATE TABLE `tblDocumentStatusLog` ( `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE ) ; -INSERT INTO `tblDocumentStatusLog` SELECT * FROM `__tblDocumentStatusLog`; +INSERT INTO `new_tblDocumentStatusLog` SELECT * FROM `tblDocumentStatusLog`; -DROP TABLE `__tblDocumentStatusLog`; +DROP TABLE `tblDocumentStatusLog`; -ALTER TABLE `tblDocumentApproveLog` RENAME TO `__tblDocumentApproveLog`; +ALTER TABLE `new_tblDocumentStatusLog` RENAME TO `tblDocumentStatusLog`; -CREATE TABLE `tblDocumentApproveLog` ( +CREATE TABLE `new_tblDocumentApproveLog` ( `approveLogID` INTEGER PRIMARY KEY AUTOINCREMENT, `approveID` INTEGER NOT NULL default '0' REFERENCES `tblDocumentApprovers` (`approveID`) ON DELETE CASCADE, `status` INTEGER NOT NULL default '0', @@ -163,13 +161,13 @@ CREATE TABLE `tblDocumentApproveLog` ( `userID` INTEGER NOT NULL default '0' REFERENCES `tblUsers` (`id`) ON DELETE CASCADE ); -INSERT INTO `tblDocumentApproveLog` SELECT * FROM `__tblDocumentApproveLog`; +INSERT INTO `new_tblDocumentApproveLog` SELECT * FROM `tblDocumentApproveLog`; -DROP TABLE `__tblDocumentApproveLog`; +DROP TABLE `tblDocumentApproveLog`; -ALTER TABLE `tblWorkflowLog` RENAME TO `__tblWorkflowLog`; +ALTER TABLE `new_tblDocumentApproveLog` RENAME TO `tblDocumentApproveLog`; -CREATE TABLE `tblWorkflowLog` ( +CREATE TABLE `new_tblWorkflowLog` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `document` INTEGER default NULL REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, `version` INTEGER default NULL, @@ -180,13 +178,13 @@ CREATE TABLE `tblWorkflowLog` ( `comment` text ); -INSERT INTO `tblWorkflowLog` SELECT * FROM `__tblWorkflowLog`; +INSERT INTO `new_tblWorkflowLog` SELECT * FROM `tblWorkflowLog`; -DROP TABLE `__tblWorkflowLog`; +DROP TABLE `tblWorkflowLog`; -ALTER TABLE `tblWorkflowDocumentContent` RENAME TO `__tblWorkflowDocumentContent`; +ALTER TABLE `new_tblWorkflowLog` RENAME TO `tblWorkflowLog`; -CREATE TABLE `tblWorkflowDocumentContent` ( +CREATE TABLE `new_tblWorkflowDocumentContent` ( `parentworkflow` INTEGER DEFAULT 0, `workflow` INTEGER DEFAULT NULL REFERENCES `tblWorkflows` (`id`) ON DELETE CASCADE, `document` INTEGER DEFAULT NULL REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, @@ -195,9 +193,11 @@ CREATE TABLE `tblWorkflowDocumentContent` ( `date` datetime NOT NULL ); -INSERT INTO `tblWorkflowDocumentContent` SELECT * FROM `__tblWorkflowDocumentContent`; +INSERT INTO `new_tblWorkflowDocumentContent` SELECT * FROM `tblWorkflowDocumentContent`; -DROP TABLE `__tblWorkflowDocumentContent`; +DROP TABLE `tblWorkflowDocumentContent`; + +ALTER TABLE `new_tblWorkflowDocumentContent` RENAME TO `tblWorkflowDocumentContent`; UPDATE tblVersion set major=5, minor=1, subminor=0; From 7f5908bcf83e1b62e09769ca974c2c27df5ef5a6 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 Feb 2020 19:01:25 +0100 Subject: [PATCH 373/467] add missing ` around names --- install/create_tables-sqlite3.sql | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/install/create_tables-sqlite3.sql b/install/create_tables-sqlite3.sql index 2eff9a797..42be5dcee 100644 --- a/install/create_tables-sqlite3.sql +++ b/install/create_tables-sqlite3.sql @@ -163,7 +163,7 @@ CREATE TABLE `tblFolderAttributes` ( `folder` INTEGER default NULL REFERENCES `tblFolders` (`id`) ON DELETE CASCADE, `attrdef` INTEGER default NULL REFERENCES `tblAttributeDefinitions` (`id`), `value` text default NULL, - UNIQUE (folder, attrdef) + UNIQUE (`folder`, `attrdef`) ) ; -- -------------------------------------------------------- @@ -199,7 +199,7 @@ CREATE TABLE `tblDocumentAttributes` ( `document` INTEGER default NULL REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, `attrdef` INTEGER default NULL REFERENCES `tblAttributeDefinitions` (`id`), `value` text default NULL, - UNIQUE (document, attrdef) + UNIQUE (`document`, `attrdef`) ) ; -- -------------------------------------------------------- @@ -268,7 +268,7 @@ CREATE TABLE `tblDocumentContentAttributes` ( `content` INTEGER default NULL REFERENCES `tblDocumentContent` (`id`) ON DELETE CASCADE, `attrdef` INTEGER default NULL REFERENCES `tblAttributeDefinitions` (`id`), `value` text default NULL, - UNIQUE (content, attrdef) + UNIQUE (`content`, `attrdef`) ) ; -- -------------------------------------------------------- @@ -710,7 +710,7 @@ CREATE TABLE `tblWorkflowLog` ( CREATE TABLE `tblWorkflowMandatoryWorkflow` ( `userid` INTEGER default NULL REFERENCES `tblUsers` (`id`) ON DELETE CASCADE, `workflow` INTEGER default NULL REFERENCES `tblWorkflows` (`id`) ON DELETE CASCADE, - UNIQUE(userid, workflow) + UNIQUE(`userid`, `workflow`) ) ; -- -------------------------------------------------------- @@ -719,7 +719,7 @@ CREATE TABLE `tblWorkflowMandatoryWorkflow` ( -- Table structure for transmittal -- -CREATE TABLE tblTransmittals ( +CREATE TABLE `tblTransmittals` ( `id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` text NOT NULL, `comment` text NOT NULL, @@ -740,7 +740,7 @@ CREATE TABLE `tblTransmittalItems` ( `document` INTEGER default NULL REFERENCES `tblDocuments` (`id`) ON DELETE CASCADE, `version` INTEGER unsigned NOT NULL default '0', `date` TEXT default NULL, - UNIQUE (transmittal, document, version) + UNIQUE (`transmittal`, `document`, `version`) ); -- -------------------------------------------------------- @@ -786,7 +786,7 @@ CREATE TABLE `tblArosAcos` ( `read` INTEGER NOT NULL DEFAULT '-1', `update` INTEGER NOT NULL DEFAULT '-1', `delete` INTEGER NOT NULL DEFAULT '-1', - UNIQUE (aco, aro) + UNIQUE (`aco`, `aro`) ) ; -- -------------------------------------------------------- @@ -830,7 +830,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 VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', '', 'Administrator', 'address@server.com', '', '', '', 1, 0, '', 0, 0, 0, 0); -INSERT INTO tblUsers VALUES (2, 'guest', NULL, '', 'Guest User', NULL, '', '', '', 2, 0, '', 0, 0, 0, 0); -INSERT INTO tblFolders VALUES (1, 'DMS', 0, '', 'DMS root', strftime('%s','now'), 1, 0, 2, 0); -INSERT INTO tblVersion VALUES (DATETIME(), 6, 0, 0); +INSERT INTO `tblUsers` VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', '', 'Administrator', 'address@server.com', '', '', '', 1, 0, '', 0, 0, 0, 0); +INSERT INTO `tblUsers` VALUES (2, 'guest', NULL, '', 'Guest User', NULL, '', '', '', 2, 0, '', 0, 0, 0, 0); +INSERT INTO `tblFolders` VALUES (1, 'DMS', 0, '', 'DMS root', strftime('%s','now'), 1, 0, 2, 0); +INSERT INTO `tblVersion` VALUES (DATETIME(), 6, 0, 0); From a97114b77d3c8d2dc6c6bf67c7988e3702776559 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 Feb 2020 19:01:46 +0100 Subject: [PATCH 374/467] fix update --- install/update-6.0.0/update-sqlite3.sql | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/install/update-6.0.0/update-sqlite3.sql b/install/update-6.0.0/update-sqlite3.sql index 3c4996a3b..3bcaabe61 100644 --- a/install/update-6.0.0/update-sqlite3.sql +++ b/install/update-6.0.0/update-sqlite3.sql @@ -31,11 +31,11 @@ CREATE TABLE `new_tblWorkflowLog` ( INSERT INTO `new_tblWorkflowLog` (`id`, `workflowdocumentcontent`, `userid`, `transition`, `date`, `comment`) SELECT `a`.`id`, `b`.`id`, `a`.`userid`, `a`.`transition`, `a`.`date`, `a`.`comment` FROM `tblWorkflowLog` `a` LEFT JOIN `new_tblWorkflowDocumentContent` `b` ON `a`.`document`=`b`.`document` AND `a`.`version`=`b`.`version` AND `a`.`workflow`=`b`.`workflow` WHERE `b`.`document` IS NOT NULL; -ALTER TABLE `tblWorkflowLog` RENAME TO `old_tblWorkflowLog`; +DROP TABLE `tblWorkflowLog`; ALTER TABLE `new_tblWorkflowLog` RENAME TO `tblWorkflowLog`; -ALTER TABLE `tblWorkflowDocumentContent` RENAME TO `old_tblWorkflowDocumentContent`; +DROP TABLE `tblWorkflowDocumentContent`; ALTER TABLE `new_tblWorkflowDocumentContent` RENAME TO `tblWorkflowDocumentContent`; @@ -150,7 +150,7 @@ CREATE TABLE `new_tblUsers` ( INSERT INTO new_tblUsers SELECT * FROM tblUsers; -ALTER TABLE tblUsers RENAME TO old_tblUsers; +DROP TABLE tblUsers; ALTER TABLE new_tblUsers RENAME TO tblUsers; @@ -204,8 +204,3 @@ UPDATE tblVersion set major=6, minor=0, subminor=0; COMMIT; -DROP TABLE `old_tblUsers`; - -DROP TABLE `old_tblWorkflowLog`; - -DROP TABLE `old_tblWorkflowDocumentContent`; From cab1d128ca63fcf38c3c24ceefc237e5d12d373b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 7 Feb 2020 07:33:39 +0100 Subject: [PATCH 375/467] new item for 5.1.14 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 92cbb070f..d21cdff07 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -17,6 +17,7 @@ - fix renaming of folders via webdav - fix list of expired documents on MyDocuments page - pass showtree to ViewDocument (Closes: #462) +- fix upgrade script for sqlite3 -------------------------------------------------------------------------------- Changes in version 5.1.13 From d92c3afd5698a36fdbd98d2564f4c62f76a2fa5c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 7 Feb 2020 08:57:02 +0100 Subject: [PATCH 376/467] remove closing php tag --- ext/example/class.example.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/ext/example/class.example.php b/ext/example/class.example.php index af5b8eee9..7d19e4338 100644 --- a/ext/example/class.example.php +++ b/ext/example/class.example.php @@ -181,5 +181,3 @@ class SeedDMS_ExtExample_Task { public function execute() { } } - -?> From 30ca5c71cdfe8a28687a4bb88685e95ba686465d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 11 Feb 2020 07:45:30 +0100 Subject: [PATCH 377/467] new method SeedDMS_Document_Content::repair, restore old getPath() behaviour getPath() didn't return a single '.' in the fileType --- SeedDMS_Core/Core/inc.ClassDocument.php | 48 +++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index e932e0ada..492061637 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -1667,7 +1667,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */ if($fileType == '.') $fileType = ''; - /* Check if $user, $orgFileName, $fileType and $mimetype are the same */ + /* Check if $user, $orgFileName, $fileType and $mimeType are the same */ if($user->getID() != $content->getUser()->getID()) { return false; } @@ -2909,7 +2909,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ * * @return string path of file on disc */ - function getPath() { return $this->_document->getDir() . $this->_version . ($this->_fileType != '.' ? $this->_fileType : ''); } + function getPath() { return $this->_document->getDir() . $this->_version . $this->_fileType; } function setDate($date = false) { /* {{{ */ $db = $this->_document->getDMS()->getDB(); @@ -4824,6 +4824,50 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ return $needwkflaction; } /* }}} */ + /** + * Checks the internal data of the document version and repairs it. + * Currently, this function only repairs a missing filetype + * + * @return boolean true on success, otherwise false + */ + function repair() { /* {{{ */ + $dms = $this->_document->getDMS(); + $db = $this->_dms->getDB(); + + if(file_exists($this->_dms->contentDir.$this->_document->getDir() . $this->_version . $this->_fileType)) { + if(strlen($this->_fileType) < 2) { + switch($this->_mimeType) { + case "application/pdf": + case "image/png": + case "image/gif": + case "image/jpg": + $expect = substr($this->_mimeType, -3, 3); + if($this->_fileType != '.'.$expect) { + $db->startTransaction(); + $queryStr = "UPDATE `tblDocumentContent` SET `fileType`='.".$expect."' WHERE `id` = ". $this->_id; + echo $queryStr."
          "; + $res = $db->getResult($queryStr); + if ($res) { + if(!SeedDMS_Core_File::renameFile($this->_dms->contentDir.$this->_document->getDir() . $this->_version . $this->_fileType, $this->_dms->contentDir.$this->_document->getDir() . $this->_version . '.' . $expect)) { + $db->rollbackTransaction(); + } else { + $db->commitTransaction(); + } + } else { + $db->rollbackTransaction(); + } + } + break; + } + } + } elseif(file_exists($this->_document->getDir() . $this->_version . '.')) { + echo "no file"; + } else { + echo $this->_dms->contentDir.$this->_document->getDir() . $this->_version . $this->_fileType; + } + return true; + } /* }}} */ + } /* }}} */ From a5bf963bc59cc7f99515eab60dd7a0bf37878356 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 11 Feb 2020 07:47:33 +0100 Subject: [PATCH 378/467] add check for mismatch of fileType and mimeType works only for some common mimetypes --- out/out.ObjectCheck.php | 5 + views/bootstrap/class.ObjectCheck.php | 144 +++++++++++++------------- 2 files changed, 78 insertions(+), 71 deletions(-) diff --git a/out/out.ObjectCheck.php b/out/out.ObjectCheck.php index 37cad7348..5406f06fc 100644 --- a/out/out.ObjectCheck.php +++ b/out/out.ObjectCheck.php @@ -88,7 +88,12 @@ if($view) { $view->setParam('setfilesize', $setfilesize); $view->setParam('setchecksum', $setchecksum); $view->setParam('repair', $repair); + $view->setParam('showtree', showtree()); $view->setParam('rootfolder', $rootfolder); + $view->setParam('previewWidthList', $settings->_previewWidthList); + $view->setParam('previewConverters', isset($settings->_converters['preview']) ? $settings->_converters['preview'] : array()); + $view->setParam('timeout', $settings->_cmdTimeout); + $view->setParam('xsendfile', $settings->_enableXsendfile); $view($_GET); exit; } diff --git a/views/bootstrap/class.ObjectCheck.php b/views/bootstrap/class.ObjectCheck.php index eaede317c..5585f9c85 100644 --- a/views/bootstrap/class.ObjectCheck.php +++ b/views/bootstrap/class.ObjectCheck.php @@ -18,6 +18,11 @@ */ require_once("class.Bootstrap.php"); +/** + * Include class to preview documents + */ +require_once("SeedDMS/Preview.php"); + /** * Class which outputs the html page for ObjectCheck view * @@ -31,7 +36,7 @@ require_once("class.Bootstrap.php"); */ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { - function tree($dms, $folder, $repair, $path=':', $indent='') { /* {{{ */ + function tree($dms, $folder, $previewer, $repair, $path=':', $indent='') { /* {{{ */ global $user; /* Don't do folderlist check for root folder */ @@ -51,11 +56,11 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { $owner = $folder->getOwner(); print "".htmlspecialchars($owner->getFullName()).""; print "Folder path contains cyclic relation"; + echo ""; if($repair) { - print "".getMLText('repaired')."\n"; - } else { - print "\n"; + print "".getMLText('repaired')."\n"; } + echo ""; print "\n"; } $folderList = $folder->getFolderList(); @@ -74,19 +79,19 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { $owner = $folder->getOwner(); print "".htmlspecialchars($owner->getFullName()).""; print "Folderlist is '".$folderList."', should be '".$path."'"; + echo ""; if($repair) { $folder->repair(); - print "".getMLText('repaired')."\n"; - } else { - print "\n"; + print "".getMLText('repaired')."\n"; } + echo ""; print "\n"; } } $subfolders = $folder->getSubFolders(); foreach($subfolders as $subfolder) { - $this->tree($dms, $subfolder, $repair, $path.$folder->getId().':', $indent.' '); + $this->tree($dms, $subfolder, $previewer, $repair, $path.$folder->getId().':', $indent.' '); } $path .= $folder->getId().':'; $documents = $folder->getDocuments(); @@ -109,12 +114,12 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { $owner = $document->getOwner(); print "".htmlspecialchars($owner->getFullName()).""; print "Folderlist is '".$folderList."', should be '".$path."'"; + echo ""; if($repair) { $document->repair(); - print "".getMLText('repaired')."\n"; - } else { - print "\n"; + print "".getMLText('repaired')."\n"; } + echo ""; print "\n"; } @@ -124,63 +129,48 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { foreach($versions as $version) { $filepath = $dms->contentDir . $version->getPath(); if(!file_exists($filepath)) { - print "\n"; - print "getID()."\" class=\"table-row-document\" rel=\"document_".$document->getID()."\" formtoken=\"".createFormKey('movedocument')."\" draggable=\"true\">"; - print "getID()."\">getMimeIcon($version->getFileType())."\" title=\"".$version->getMimeType()."\">"; - print "getID()."\">/"; - $folder = $document->getFolder(); - $tmppath = $folder->getPath(); - for ($i = 1; $i < count($tmppath); $i++) { - print htmlspecialchars($tmppath[$i]->getName())."/"; + echo $this->documentListRowStart($document); + echo $this->documentListRow($document, $previewer, true, $version->getVersion()); + print "Document content of version ".$version->getVersion()." is missing ('".$path."')"; + echo ""; + if($repair) { + print "Cannot be repaired\n"; + } + echo ""; + echo $this->documentListRowEnd($document); } - print htmlspecialchars($document->getName()); - print ""; - $owner = $document->getOwner(); - print "".htmlspecialchars($owner->getFullName()).""; - print "Document content of version ".$version->getVersion()." is missing ('".$path."')"; - if($repair) { - print "Cannot repaired\n"; - } else { - print "\n"; - } - echo ""; - echo "
          "; - if($document->getAccessMode($user) >= M_ALL) { - echo $this->printDeleteDocumentButton($document, 'splash_rm_document', true); - } else { - echo ''; - } - if($document->getAccessMode($user) >= M_READWRITE) { - print ''; - } else { - print ''; - } - if($document->getAccessMode($user) >= M_READWRITE) { - print $this->printLockButton($document, 'splash_document_locked', 'splash_document_unlocked', true); - } - if($this->enableClipboard) { - print ''; - } - echo "
          "; - echo ""; - print "\n"; + $mimetype = $version->getMimeType(); + $filetype = $version->getFileType(); + if(strlen($filetype) < 2) { + switch($mimetype) { + case "application/pdf": + case "image/png": + case "image/gif": + case "image/jpg": + $expect = substr($mimetype, -3, 3); + if($filetype != '.'.$expect) { + $this->needsrepair = true; + echo $this->documentListRowStart($document); + echo $this->documentListRow($document, $previewer, true, $version->getVersion()); + echo ".".$expect." != ".$filetype.""; + echo ""; + if($repair) { + $version->repair(); + echo "".getMLText('repaired').""; + } + echo ""; + echo $this->documentListRowEnd($document); + } + break; + } } } } else { - print "\n"; - print "\n"; - print "getID()."\">/"; - $folder = $document->getFolder(); - $tmppath = $folder->getPath(); - for ($i = 1; $i < count($tmppath); $i++) { - print htmlspecialchars($tmppath[$i]->getName())."/"; - } - print htmlspecialchars($document->getName()); - print ""; - $owner = $document->getOwner(); - print "".htmlspecialchars($owner->getFullName()).""; - print "Document has no content! Delete the document manually."; - print "\n"; + echo $this->documentListRowStart($document); + echo $this->documentListRow($document, $previewer, true); + echo "Document has no content! Delete the document manually."; + echo ""; + echo $this->documentListRowEnd($document); } } } /* }}} */ @@ -212,6 +202,14 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { $setchecksum = $this->params['setchecksum']; $rootfolder = $this->params['rootfolder']; $this->enableClipboard = $this->params['enableclipboard']; + $cachedir = $this->params['cachedir']; + $previewwidth = $this->params['previewWidthList']; + $previewconverters = $this->params['previewConverters']; + $timeout = $this->params['timeout']; + $xsendfile = $this->params['xsendfile']; + + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); + $previewer->setConverters($previewconverters); $this->htmlAddHeader(''."\n", 'js'); @@ -230,17 +228,17 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { print "\n"; print "".getMLText("name")."\n"; print "".getMLText("owner")."\n"; - print "".getMLText("error")."\n"; print "\n"; + print "".getMLText("error")."\n"; print "\n\n\n"; $this->needsrepair = false; - $this->tree($dms, $folder, $repair); + $this->tree($dms, $folder, $previewer, $repair); print "\n"; + $this->contentContainerEnd(); if($this->needsrepair && $repair == 0) { - echo '

          '.getMLText('do_object_repair').'

          '; + echo '

          '.getMLText('do_object_repair').'

          '; } - $this->contentContainerEnd(); if($unlinkedfolders) { $this->contentHeading(getMLText("unlinked_folders")); @@ -250,8 +248,8 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { print "".getMLText("name")."\n"; print "".getMLText("id")."\n"; print "".getMLText("parent")."\n"; - print "".getMLText("error")."\n"; print "\n"; + print "".getMLText("error")."\n"; print "\n\n\n"; foreach($unlinkedfolders as $error) { echo ""; @@ -336,10 +334,12 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { foreach($nofilesizeversions as $version) { $doc = $version->getDocument(); print "".$doc->getId()."".$version->getVersion()."".$version->getOriginalFileName()."".$version->getMimeType().""; + echo ""; if($setfilesize) { if($version->setFileSize()) - echo "".getMLText('repaired').""; + echo getMLText('repaired'); } + echo ""; print "\n"; } print "\n"; @@ -365,10 +365,12 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { foreach($nochecksumversions as $version) { $doc = $version->getDocument(); print "".$doc->getId()."".$version->getVersion()."".$version->getOriginalFileName()."".$version->getMimeType().""; + echo ""; if($setchecksum) { if($version->setChecksum()) - echo "".getMLText('repaired').""; + echo getMLText('repaired'); } + echo ""; print "\n"; } print "\n"; From 8b6d070a98a2c3fb0c2c3b79cc63e1b845491d16 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 12 Feb 2020 17:21:02 +0100 Subject: [PATCH 379/467] set proper name of last preview file --- SeedDMS_Preview/Preview/PdfPreviewer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SeedDMS_Preview/Preview/PdfPreviewer.php b/SeedDMS_Preview/Preview/PdfPreviewer.php index d4cc0b477..6ce557810 100644 --- a/SeedDMS_Preview/Preview/PdfPreviewer.php +++ b/SeedDMS_Preview/Preview/PdfPreviewer.php @@ -96,7 +96,7 @@ class SeedDMS_Preview_PdfPreviewer extends SeedDMS_Preview_Base { return false; if(!$target) $target = $this->previewDir.$dir.md5($infile); - $this->lastpreviewfile = $target.'.png'; + $this->lastpreviewfile = $target.'.pdf'; if($target != '' && (!file_exists($target.'.pdf') || filectime($target.'.pdf') < filectime($infile))) { $cmd = ''; $mimeparts = explode('/', $mimetype, 2); From 3c3e814767a333b900d10f309809d525d9cdbbdc Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 12 Feb 2020 19:14:06 +0100 Subject: [PATCH 380/467] disallow directory index --- .htaccess | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.htaccess b/.htaccess index 42ab85d6c..d83443d97 100644 --- a/.htaccess +++ b/.htaccess @@ -1,3 +1,5 @@ +Options -Indexes + RewriteEngine On RewriteRule ^favicon.ico$ styles/bootstrap/favicon.ico [L] From b2067ba974bae9ae5afe3a466eb849f63156122e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Feb 2020 08:23:08 +0100 Subject: [PATCH 381/467] updated arabic updates, minor other updates --- languages/ar_EG/lang.inc | 1944 +++++++++++++++++++------------------- languages/bg_BG/lang.inc | 10 + languages/ca_ES/lang.inc | 10 + languages/cs_CZ/lang.inc | 16 +- languages/de_DE/lang.inc | 12 +- languages/el_GR/lang.inc | 32 +- languages/en_GB/lang.inc | 12 +- languages/es_ES/lang.inc | 10 + languages/fr_FR/lang.inc | 42 +- languages/hr_HR/lang.inc | 10 + languages/hu_HU/lang.inc | 14 +- languages/it_IT/lang.inc | 20 +- languages/ko_KR/lang.inc | 10 + languages/lo_LA/lang.inc | 10 + languages/nl_NL/lang.inc | 10 + languages/pl_PL/lang.inc | 10 + languages/pt_BR/lang.inc | 10 + languages/ro_RO/lang.inc | 10 + languages/ru_RU/lang.inc | 10 + languages/sk_SK/lang.inc | 10 + languages/sv_SE/lang.inc | 10 + languages/tr_TR/lang.inc | 16 +- languages/uk_UA/lang.inc | 10 + languages/zh_CN/lang.inc | 10 + languages/zh_TW/lang.inc | 16 +- 25 files changed, 1262 insertions(+), 1012 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index f9f241f31..48d54b046 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -19,22 +19,22 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1311) +// Translators: Admin (2262) $text = array( -'2_factor_auth' => '', -'2_factor_auth_info' => '', +'2_factor_auth' => 'توثيق ذو عاملين', +'2_factor_auth_info' => 'معلومات عن توثيق ذو عاملين', '2_fact_auth_secret' => '', 'accept' => 'وافق', -'access_control' => '', -'access_control_is_off' => '', +'access_control' => 'صلاحيات الدخول', +'access_control_is_off' => 'صلاحيات الدخول غير مفعلة', 'access_denied' => 'دخول غير مصرح به.', 'access_inheritance' => 'صلاحيات موروثة', 'access_mode' => 'نوع الدخول', 'access_mode_all' => 'كل الصلاحيات', 'access_mode_none' => 'ممنوع الدخول', -'access_mode_read' => 'صلاحيات قراءة فقط', -'access_mode_readwrite' => 'صلاحيات القراء والكتابة', +'access_mode_read' => 'صلاحية القراءة فقط', +'access_mode_readwrite' => 'صلاحية القراءة والكتابة', 'access_permission_changed_email' => 'تم تغيير الصلاحيات', 'access_permission_changed_email_body' => 'تم تغيير الصلاحيات Document: [name] @@ -45,36 +45,36 @@ URL: [url]', 'according_settings' => 'اعدادات خاصة', 'action' => 'اجراء', 'actions' => 'اجراءات', -'action_approve' => 'موافقة', -'action_complete' => 'انهاء', -'action_is_complete' => 'تم انهاؤه', -'action_is_not_complete' => 'لم ينتهى بعد', -'action_reject' => 'رفض', -'action_review' => 'مراجعة', -'action_revise' => 'تنقيح', +'action_approve' => 'موافقةعلى الإجراء', +'action_complete' => 'انهاءالإجراء', +'action_is_complete' => 'تم انهاء الإجراء', +'action_is_not_complete' => 'الإجراء لم ينتهى بعد', +'action_reject' => 'رفض الإجراء', +'action_review' => 'مراجعة الإجراء', +'action_revise' => 'تعديل الإجراء', 'add' => 'إضافة', 'add_approval' => 'ادخال موافقة', -'add_attrdefgroup' => '', +'add_attrdefgroup' => 'إضافة اسم معرف المجموعة', 'add_document' => 'إضافة مستند', 'add_document_link' => 'إضافة رابط', -'add_document_notify' => 'ﺖﺨﺼﻴﺻ ﺎﺸﻋﺍﺭ', +'add_document_notify' => 'إضافة وثيقة إشعار', 'add_doc_reviewer_approver_warning' => 'ملاحظة : يتم اعتبار المستندات نهائية اذا لم يتم تعيين مراجع او موافق للمستند', 'add_doc_workflow_warning' => 'ملاحظة : يتم اعتبار المستندات نهائية اذا لم يتم اختيار مسار عمل للمستند', 'add_event' => 'إضافة حدث', -'add_group' => 'إضافة مجموعة جديدة', +'add_group' => 'اضف مجموعة جديدة', 'add_member' => 'إضافة عضو', 'add_multiple_documents' => 'إضافة مستندات عديدة', 'add_multiple_files' => 'إضافة مستندات عديدة - سيتم استخدام اسم الملف كاسم المستند', -'add_receipt' => '', +'add_receipt' => 'إضافة وصل', 'add_review' => 'بدأ المراجعة', -'add_revision' => '', -'add_role' => '', +'add_revision' => 'إضافة المراجعة', +'add_role' => 'إضافة دور', 'add_subfolder' => 'إضافة مجلد فرعي', -'add_task' => '', +'add_task' => 'إضافة مهمة', 'add_to_clipboard' => 'اضف الى لوحة القصاصات', -'add_to_transmittal' => '', -'add_transmittal' => '', -'add_user' => 'إضافة مستخدم', +'add_to_transmittal' => 'إضافة إلى الإحالة', +'add_transmittal' => 'إضافة إحالة', +'add_user' => 'أضف مستخدم', 'add_user_to_group' => 'إضافة مستخدم لمجموعة', 'add_workflow' => 'اضف مسار عمل جديد', 'add_workflow_action' => 'اضف اجراء جديد لمسار العمل', @@ -84,194 +84,194 @@ URL: [url]', 'all' => 'الكل', 'all_categories' => 'كل الاقسام', 'all_documents' => 'كل المستندات', -'all_pages' => 'الكل', +'all_pages' => 'كل الصفحات', 'all_users' => 'كل المستخدمين', 'already_subscribed' => 'بالفعل مشترك', 'and' => 'و', 'apply' => 'تطبيق', -'approvals_accepted' => '', +'approvals_accepted' => 'موافقةالطلب', 'approvals_accepted_latest' => '', -'approvals_and_reviews_accepted' => '', -'approvals_and_reviews_not_touched' => '', -'approvals_and_reviews_rejected' => '', -'approvals_not_touched' => '', +'approvals_and_reviews_accepted' => 'موافقة الطلب و مراجعته', +'approvals_and_reviews_not_touched' => 'موافقة الطلب ومراجعته غير ملموس', +'approvals_and_reviews_rejected' => 'رفض الطلب ومراجعته', +'approvals_not_touched' => 'موافقة الطلب غير ملموس', 'approvals_not_touched_latest' => '', -'approvals_rejected' => '', +'approvals_rejected' => 'طلب الموافقة مرفوض', 'approvals_rejected_latest' => '', -'approvals_without_group' => '', -'approvals_without_user' => '', -'approval_deletion_email' => 'طلب الموافقة تم الغاؤه', -'approval_deletion_email_body' => '', -'approval_deletion_email_subject' => '', -'approval_file' => '', +'approvals_without_group' => 'طلب الموافقة بلا مجموعة', +'approvals_without_user' => 'طلب الموافقة بلا مستخدم', +'approval_deletion_email' => 'تم إلغاء طلب الموافقة', +'approval_deletion_email_body' => 'طلب موافقة حذف البريد الإلكتروني', +'approval_deletion_email_subject' => 'طلب موافقة حذف موضوع البريد الإلكتروني', +'approval_file' => 'طلب موافقة الملف', 'approval_group' => 'مجموعة الموافقة', -'approval_log' => 'ﺲﺠﻟ ﺎﻠﻣﻭﺎﻔﻗﺓ', -'approval_request_email' => 'طلب الموافقة', +'approval_log' => 'سجل الموافقات', +'approval_request_email' => 'طلب الموافقة البريد الإلكتروني', 'approval_request_email_body' => 'طلب الموافقة Document: [name] Version: [version] Parent folder: [folder_path] User: [username] URL: [url]', -'approval_request_email_subject' => '[sitename]: [name] - طلب الموافقة', +'approval_request_email_subject' => '[sitename]: [name] - طلب موافقة موضوع البريد الإلكتروني', 'approval_status' => 'حالة الموافقة', -'approval_submit_email' => '', -'approval_submit_email_body' => '', +'approval_submit_email' => 'موافقة تقديم البريد الإلكتروني', +'approval_submit_email_body' => 'موافقة تقديم البريد الإلكتروني', 'approval_submit_email_subject' => '[sitename]: [name] - تم ارسال الموافقة', 'approval_summary' => 'ملخص الموافقة', 'approval_update_failed' => 'خطأ في تحديث حالة الموافقة. فشل التحديث.', 'approvers' => 'الموافقون', -'approver_already_assigned' => '', -'approver_already_removed' => '', +'approver_already_assigned' => 'تم تحديد الموافق', +'approver_already_removed' => 'تم حذف الموافق', 'april' => 'ابريل', -'archive' => '', +'archive' => 'إرشيف', 'archive_creation' => 'انشاء ارشيف', 'archive_creation_warning' => 'من خلال العملية التالية يمكنك انشاء ارشيف يحتوي على كل ملفات النظام. بعد انشاء الارشيف سيتم حفظه في ملف البيانات على السيرفر.
          تحذير: الارشيف الذي تم انشاؤه ليكون مقروء بواسطة المستخدم لن يكون نافعا كملف نسخ احتياطي للسيرفر', 'ar_EG' => 'العربية', 'assign_approvers' => 'تخصيص موافقون', -'assign_recipients' => '', +'assign_recipients' => 'تخصيص المستلمين', 'assign_reviewers' => 'تخصيص مراجعون', 'assign_user_property_to' => 'تخصيص خصائص المستخدم الى', 'assumed_released' => 'يعتبر تم نشره', -'attrdefgroup_management' => '', -'attrdefgrp_show_detail' => '', -'attrdefgrp_show_list' => '', -'attrdefgrp_show_search' => '', -'attrdefgrp_show_searchlist' => '', +'attrdefgroup_management' => 'معرف الإدارة', +'attrdefgrp_show_detail' => 'معرف إظهار التفاصيل', +'attrdefgrp_show_list' => 'معرف إظهار اللوائح', +'attrdefgrp_show_search' => 'معرف إظهار البحث', +'attrdefgrp_show_searchlist' => 'معرف إضهار لائحة البحث', 'attrdef_exists' => 'تعريف السمة بالفعل موجود', -'attrdef_info' => '', +'attrdef_info' => 'معلومات', 'attrdef_in_use' => 'تعريف السمة مشغول حاليا', 'attrdef_management' => 'ادارة تعريف السمات', 'attrdef_maxvalues' => 'اكبر عدد من القيم', 'attrdef_minvalues' => 'اقل عدد من القيم', -'attrdef_min_greater_max' => '', +'attrdef_min_greater_max' => 'الأقل اكبر من الأكبر', 'attrdef_multiple' => 'السماح باكثر من قيمة', -'attrdef_multiple_needs_valueset' => '', -'attrdef_must_be_multiple' => '', +'attrdef_multiple_needs_valueset' => 'يحتاج أكثر من قيمة', +'attrdef_must_be_multiple' => 'يجب أن يكون متعدد القيم', 'attrdef_name' => 'اسم', -'attrdef_noname' => '', -'attrdef_objtype' => 'نوع الكائن', -'attrdef_regex' => '', +'attrdef_noname' => 'لا يوجد اسم', +'attrdef_objtype' => 'نوع الورقة', +'attrdef_regex' => 'attrdef_regex', 'attrdef_type' => 'نوع', -'attrdef_type_boolean' => '', -'attrdef_type_date' => 'التاريخ', -'attrdef_type_email' => '', -'attrdef_type_float' => 'ﺮﻘﻣ ﻢﻋ ﻑﻭﺎﺼﻟ', -'attrdef_type_int' => 'ﺮﻘﻣ ﺺﺤﻴﺣ', -'attrdef_type_string' => 'ﻦﺻ', -'attrdef_type_url' => '', +'attrdef_type_boolean' => 'boolean', +'attrdef_type_date' => 'تاريخ', +'attrdef_type_email' => 'بريد إلكتروني', +'attrdef_type_float' => 'رقم مع فواصل', +'attrdef_type_int' => 'رقم صحيح', +'attrdef_type_string' => 'نص', +'attrdef_type_url' => 'رابط', 'attrdef_valueset' => 'مجموعة القيم', 'attributes' => 'السمات', -'attribute_changed_email_body' => 'تم تغيير سمة -Document: [name] -Version: [version] -Attribute: [attribute_name] -Old value: [attribute_old_value] -New value: [attribute_new_value] -Parent folder: [folder_path] -User: [username] +'attribute_changed_email_body' => 'تم تغيير سمة +Document: [name] +Version: [version] +Attribute: [attribute_name] +Old value: [attribute_old_value] +New value: [attribute_new_value] +Parent folder: [folder_path] +User: [username] URL: [url]', 'attribute_changed_email_subject' => '[sitename]: [name] - تم تغيير سمة', -'attribute_count' => 'ﻉﺩﺩ ﻡﺭﺎﺗ ﺍﻸﺴﺘﺧﺩﺎﻣ', -'attribute_value' => 'ﻖﻴﻣﺓ ﺎﻠﺴﻣﺓ', -'attribute_value_not_in_valueset' => '', -'attr_malformed_boolean' => '', -'attr_malformed_date' => '', -'attr_malformed_email' => '', -'attr_malformed_float' => '', -'attr_malformed_int' => '', -'attr_malformed_url' => '', -'attr_max_values' => '', -'attr_min_values' => '', -'attr_not_in_valueset' => '', -'attr_no_regex_match' => '', -'attr_validation_error' => '', -'at_least_n_users_of_group' => '', +'attribute_count' => 'عدد مرات الإستخدام', +'attribute_value' => 'قيمة السمة', +'attribute_value_not_in_valueset' => 'القيمة غير موجودة في لائحة القيم', +'attr_malformed_boolean' => 'attr_malformed_boolean', +'attr_malformed_date' => 'تاريخ', +'attr_malformed_email' => 'البريد الإلكتروني', +'attr_malformed_float' => 'رقم مع فواصل', +'attr_malformed_int' => 'رقم صحيح', +'attr_malformed_url' => 'رابط', +'attr_max_values' => 'أكثر عدد من القيم', +'attr_min_values' => 'أقل عدد من القيم', +'attr_not_in_valueset' => 'المعرف غير موجود في لائحة القيم', +'attr_no_regex_match' => 'attr_no_regex_match', +'attr_validation_error' => 'خطأ في الموافقة', +'at_least_n_users_of_group' => 'على الأقل عدد من المستخدمين في المجموعة', 'august' => 'أغسطس', -'authentication' => '', -'authentication_failed' => '', -'author' => 'ﺎﻠﻤﻨﺸﺋ', +'authentication' => 'المصادقة', +'authentication_failed' => 'فشل في المصادقة', +'author' => 'المنشئ', 'automatic_status_update' => 'تغير الحالة تلقائيا', 'back' => 'العودة للخلف', 'backup_list' => 'قائمة نسخ احتياطي حالية', 'backup_log_management' => 'نسخ احتياطي/سجلات', 'backup_remove' => 'ازالة ملف النسخ الاحتياطي', -'backup_tools' => 'أدوات النسخ الاحتياطي', +'backup_tools' => 'أدوات النسخ الاحتياطية', 'between' => 'بين', -'bg_BG' => 'ﺐﻠﻏﺍﺮﻳﺓ', -'browse' => 'ﺖﺼﻔﺣ', -'calendar' => 'النتيجة', -'calendar_week' => '', +'bg_BG' => 'بلغارية', +'browse' => 'تصفح', +'calendar' => 'التقويم', +'calendar_week' => 'التقويم الأسبوعي', 'cancel' => 'الغاء', 'cannot_assign_invalid_state' => 'لايمكن تعديل ملف مرفوض او مهمل', 'cannot_change_final_states' => 'تحذير: لا يمكن تعديل حالة مستند مرفوض او منتهى صلاحيته او رهن المراجعة او الموافقة', -'cannot_delete_user' => '', +'cannot_delete_user' => 'لا يمكن حذف مستخدم', 'cannot_delete_yourself' => 'لايمكنك مسح نفسك', 'cannot_move_root' => 'خطأ: لايمكنك تحريك المجلد الرئيسي.', 'cannot_retrieve_approval_snapshot' => 'لا يمكن استدعاء لقطة حالة الموافقة لهذا الاصدار من المستند', 'cannot_retrieve_review_snapshot' => 'لا يمكن استدعاء لقطة حالة المراجعة لهذا الاصدار من المستند', 'cannot_rm_root' => 'خطأ: لايمكنك مسح المجلد الرئيسي.', 'categories' => 'اقسام', -'categories_loading' => '', +'categories_loading' => 'جار تحميل الأقسام', 'category' => 'قسم', 'category_exists' => '.القسم بالفعل موجود', 'category_filter' => 'اقسام فقط', -'category_info' => '', +'category_info' => 'معلومات عن الأقسام', 'category_in_use' => 'هذا القسم مستخدم حاليا بواسطة مستندات.', 'category_noname' => 'لم يتم كتابة اسم القسم.', 'ca_ES' => 'الكاتالونية', 'change_assignments' => 'تغيير التخصيصات', 'change_password' => 'تغيير كلمة السر', 'change_password_message' => 'تم تغيير كلمة السر.', -'change_recipients' => '', -'change_revisors' => '', +'change_recipients' => 'تغيير المستلمين', +'change_revisors' => 'تغيير المراجعين', 'change_status' => 'تغيير الحالة', -'charts' => 'ﺝﺩﺍﻮﻟ', -'chart_docsaccumulated_title' => '', -'chart_docspercategory_title' => '', -'chart_docspermimetype_title' => '', -'chart_docspermonth_title' => '', -'chart_docsperstatus_title' => '', -'chart_docsperuser_title' => '', -'chart_selection' => '', -'chart_sizeperuser_title' => '', -'checkedout_file_has_different_version' => '', -'checkedout_file_has_disappeared' => '', -'checkedout_file_is_unchanged' => '', -'checkin_document' => '', -'checkoutpath_does_not_exist' => '', -'checkout_document' => '', -'checkout_is_disabled' => '', +'charts' => 'جداول', +'chart_docsaccumulated_title' => 'عنوان الجدول', +'chart_docspercategory_title' => 'عنوان الجدول حسب القسم', +'chart_docspermimetype_title' => 'عنوان الجدول حسب النوع', +'chart_docspermonth_title' => 'عنوان الجدول حسب الشهر', +'chart_docsperstatus_title' => 'عنوان الجدول حسب الحالة', +'chart_docsperuser_title' => 'عنوان الجدول حسب المستخدم', +'chart_selection' => 'تحديد الجدول', +'chart_sizeperuser_title' => 'عنوان الجدول حسب حجم المستخدم', +'checkedout_file_has_different_version' => 'الملف المراجع لديه نسخة أخرى', +'checkedout_file_has_disappeared' => 'اختفى الملف المسحوب', +'checkedout_file_is_unchanged' => 'لم يتم تغيير سحب الملف', +'checkin_document' => 'ملف', +'checkoutpath_does_not_exist' => 'سير السحب غير موجود', +'checkout_document' => 'سحب الملف', +'checkout_is_disabled' => 'السحب معطل', 'choose_attrdef' => 'من فضلك اختر تعريف السمة', -'choose_attrdefgroup' => '', -'choose_category' => 'من فضلك اختر', +'choose_attrdefgroup' => 'من فضلك اختر تعريف سمة المجموعة', +'choose_category' => 'من فضلك اختر القسم', 'choose_group' => 'اختر المجموعة', -'choose_role' => '', +'choose_role' => 'اختر دور', 'choose_target_category' => 'اختر القسم', 'choose_target_document' => 'اختر المستند', 'choose_target_file' => 'اختر الملف', 'choose_target_folder' => 'اختر المجلد', -'choose_user' => 'اختر المستخدم', +'choose_user' => 'اختر مستخدم', 'choose_workflow' => 'اختر مسار عمل', 'choose_workflow_action' => 'اختر اجراء مسار عمل', 'choose_workflow_state' => 'اختر حالة مسار عمل', -'class_name' => '', -'clear_cache' => 'ﻢﺴﺣ ﺎﻠﻤﺤﻓﻮﻇﺎﺗ', -'clear_clipboard' => '', -'clear_password' => '', +'class_name' => 'اسم الصف', +'clear_cache' => 'مسح المحفوظات', +'clear_clipboard' => 'مسح الحافظة', +'clear_password' => 'مسح الرقم السري', 'clipboard' => 'لوحة القصاصات', 'close' => 'إغلاق', -'command' => '', +'command' => 'أمر', 'comment' => 'تعليق', -'comment_changed_email' => '', +'comment_changed_email' => 'تعليق تغيير البريد الإلكتروني', 'comment_for_current_version' => 'تعليق على الاصدار', -'configure_extension' => '', -'confirm_clear_cache' => '', +'configure_extension' => 'تعديل', +'confirm_clear_cache' => 'تعديل مسح المحفوظات', 'confirm_create_fulltext_index' => 'نعم: اود اعادة انشاء فهرس للنص الكامل !', -'confirm_move_document' => '', -'confirm_move_folder' => '', +'confirm_move_document' => 'تاكيد نقل الملف', +'confirm_move_folder' => 'تاكيد نقل الملف', 'confirm_pwd' => 'تأكيد كلمة السر', -'confirm_rm_attr_value' => '', +'confirm_rm_attr_value' => 'تاكيد معرف السمة', 'confirm_rm_backup' => 'هل تود حقا ازالة الملف "[arkname]"?
          كن حذرا: هذا الاجراء لايمكن التراجع فيه', 'confirm_rm_document' => 'هل تود حقا ازالة المستند \'[documentname]\'?
          كن حذرا: هذا الاجراء لايمكن التراجع فيه', 'confirm_rm_dump' => 'هل تود حقا ازالة الملف "[dumpname]"?
          كن حذرا: هذا الاجراء لايمكن التراجع فيه', @@ -281,33 +281,33 @@ URL: [url]', 'confirm_rm_folder_files' => 'هل تود حقا ازالة كل الملفات الموجودة بالمجلد "[foldername]" وكل مافي المجلدات الفرعية؟
          كن حذرا: هذا الاجراء لايمكن التراجع فيه', 'confirm_rm_group' => 'هل تود حقا ازالة المجموعة "[groupname]"?
          كن حذرا: هذا الاجراء لايمكن التراجع فيه', 'confirm_rm_log' => 'هل تود حقا ازالة ملف السجل "[logname]"?
          كن حذرا: هذا الاجراء لايمكن التراجع فيه', -'confirm_rm_transmittal' => '', -'confirm_rm_transmittalitem' => '', +'confirm_rm_transmittal' => 'تاكيد ازالة الإحالة', +'confirm_rm_transmittalitem' => 'تاكيد ازالة حاجة الإحالة', 'confirm_rm_user' => 'هل تود حقا ازالة المستخدم "[username]"?
          كن حذرا: هذا الاجراء لايمكن التراجع فيه', -'confirm_rm_user_from_processes' => '', +'confirm_rm_user_from_processes' => 'تاكيد ازالة مستخدمين من سير العمل', 'confirm_rm_version' => 'هل تود حقا ازالة الاصدار [version] الخاص بالمستند "[documentname]"?
          كن حذرا: هذا الاجراء لايمكن التراجع فيه', -'confirm_transfer_link_document' => '', -'confirm_transfer_objects' => '', -'confirm_update_transmittalitem' => '', +'confirm_transfer_link_document' => 'تاكيد تحويل رابط الملف', +'confirm_transfer_objects' => 'تاكيد تحويل اشياء', +'confirm_update_transmittalitem' => 'تاكيد تحديث إحالة الأشياء', 'content' => 'المحتوى', 'continue' => 'استمرار', -'converter_new_cmd' => '', -'converter_new_mimetype' => 'ﻥﻮﻋ ﺝﺪﻳﺩ ﻢﻧ ﺎﻟﻮﺛﺎﺌﻗ', -'copied_to_checkout_as' => '', -'create_download_link' => '', +'converter_new_cmd' => 'converter_new_cmd', +'converter_new_mimetype' => 'نوع جديد من الوثائق', +'copied_to_checkout_as' => 'نسخ الى السب مثل', +'create_download_link' => 'إنشاء رابط تنزيل', 'create_fulltext_index' => 'انشاء فهرس للنص الكامل', 'create_fulltext_index_warning' => 'انت على وشك اعادة انشاء فهرس النص الكامل.هذا سيتطلب وقت كافي وسيؤثر بشكل عام على كفاءة النظام. اذا كنت حقا تود اعادة انشاء الفهرس، من فضلك قم بتاكيد العملية.', -'creation_date' => 'تم انشاؤه', +'creation_date' => 'انشأ في تاريخ', 'cs_CZ' => 'التشيكية', 'current_password' => 'كلمة السر الحالية', -'current_quota' => '', -'current_state' => '', +'current_quota' => 'كوتا الحالية', +'current_state' => 'الحالة الحالية', 'current_version' => 'الإصدار الحالي', 'daily' => 'يومي', 'databasesearch' => 'بحث قاعدة البيانات', -'date' => 'التاريخ', +'date' => 'تاريخ', 'days' => 'أيام', -'debug' => '', +'debug' => 'debug', 'december' => 'ديسمبر', 'default_access' => 'حالة الدخول الافتراضية', 'default_keywords' => 'كلمات بحثية اساسية', @@ -317,38 +317,38 @@ URL: [url]', 'details_version' => 'تفاصيل هذا الاصدار: [version]', 'de_DE' => 'الألمانية', 'disclaimer' => 'هذه المنطقة محظورة. الدخول فقط مسموح للموظفين المعتمدين. اي اختراق سيتم التعامل معه وفقا للقوانين المحلية والدولية.', -'discspace' => '', -'docs_in_reception_no_access' => '', -'docs_in_revision_no_access' => '', -'document' => 'المستند', -'documentcontent' => '', -'documents' => 'المستندات', -'documents_checked_out_by_you' => '', -'documents_expired' => 'ﻮﺛﺎﺌﻗ ﻢﻨﺘﻬﻳﺓ', +'discspace' => 'مساحة القرص', +'docs_in_reception_no_access' => 'الدخول مرفوض الى المستندات في الإستقبال', +'docs_in_revision_no_access' => 'الدخول مرفوض الى المستندات قيد المراجعة', +'document' => 'مستند', +'documentcontent' => 'موضوع المستند', +'documents' => 'مستندات', +'documents_checked_out_by_you' => 'مستندات سحبت من قبلك', +'documents_expired' => 'وثائق منتهية', 'documents_in_process' => 'مستندات رهن المعالجة', -'documents_locked' => '', +'documents_locked' => 'مستندات مغلقة', 'documents_locked_by_you' => 'المستندات محمية من التعديل بواسطتك', 'documents_only' => 'مستندات فقط', 'documents_to_approve' => 'مستندات في انتظار الموافقة', -'documents_to_correct' => '', -'documents_to_process' => '', -'documents_to_receipt' => '', +'documents_to_correct' => 'مستندات للتصحيح', +'documents_to_process' => 'مستندات للمعالجة', +'documents_to_receipt' => 'مستندات للوصول', 'documents_to_review' => 'مستندات في انتظار المراجعة', -'documents_to_revise' => '', -'documents_to_trigger_workflow' => '', -'documents_user_draft' => '', -'documents_user_expiration' => '', -'documents_user_needs_correction' => '', -'documents_user_no_reception' => '', -'documents_user_obsolete' => '', -'documents_user_reception' => '', -'documents_user_rejected' => '', +'documents_to_revise' => 'مستندات للمراجعة', +'documents_to_trigger_workflow' => 'مستندات لتشغبل سير العمل', +'documents_user_draft' => 'مستندات مسودة للمستخدم', +'documents_user_expiration' => 'مستندات المستخدم منتهية صلاحيتها', +'documents_user_needs_correction' => 'مستندات المستخدم تحتاج الى تعديل', +'documents_user_no_reception' => 'مستندات المستخدم لا تحتاج الى الإستقبال', +'documents_user_obsolete' => 'مستندات المستخدم القديمة', +'documents_user_reception' => 'مستندات المستخدم تحتاج الى استقبال', +'documents_user_rejected' => 'مستندات المستخدم مرفوضة', 'documents_user_requiring_attention' => 'مستندات ملكك تستلزم انتباهك', -'documents_with_notification' => '', -'document_already_checkedout' => '', +'documents_with_notification' => 'مستندات مع اشعار', +'document_already_checkedout' => 'تم سحب الملف', 'document_already_locked' => 'هذا المستند محمي ضد التعديل', -'document_attribute_changed_email_body' => '', -'document_attribute_changed_email_subject' => '', +'document_attribute_changed_email_body' => 'معرف المستند غير موضوع البريد الإلكتروني', +'document_attribute_changed_email_subject' => 'معرف المستند غير موضوع البريد الإلكتروني', 'document_comment_changed_email' => 'تم تعديل التعليق', 'document_comment_changed_email_body' => 'تم تعديل التعليق المستند: [name] @@ -358,7 +358,7 @@ Parent folder: [folder_path] المستخدم: [username] URL: [url]', 'document_comment_changed_email_subject' => '[sitename]: [name] - تم تعديل التعليق', -'document_count' => '', +'document_count' => 'تعداد المستندات', 'document_deleted' => 'تم مسح المستند', 'document_deleted_email' => 'تم مسح المستند', 'document_deleted_email_body' => 'تم مسح المستند @@ -369,7 +369,7 @@ Parent folder: [folder_path] 'document_duplicate_name' => 'اسم المستند متكرر', 'document_has_no_workflow' => 'المستند لايحتوى مسار عمل', 'document_infos' => 'معلومات المستند', -'document_is_checked_out' => '', +'document_is_checked_out' => 'تم سحب المستند', 'document_is_not_locked' => 'هذا المستند غير محمي ضد التعديل', 'document_link_by' => 'مربوط بواسطة', 'document_link_public' => 'عام', @@ -381,7 +381,7 @@ Parent folder: [folder_path] المستخدم: [username] URL: [url]', 'document_moved_email_subject' => '[sitename]: [name] - تم تحريك المستند', -'document_not_checkedout' => '', +'document_not_checkedout' => 'لم يتب سحب المستند', 'document_renamed_email' => 'تم اعادة تسمية المستند', 'document_renamed_email_body' => 'تم اعادة تسمية المستند المستند: [name] @@ -398,36 +398,36 @@ Parent folder: [folder_path] المستخدم: [username] URL: [url]', 'document_status_changed_email_subject' => '[sitename]: [name] - تم تغيير حالةالمستند', -'document_title' => 'المستند \'[documentname]\'', -'document_transfered_email_body' => '', -'document_transfered_email_subject' => '', +'document_title' => 'المستند \'[documentname]\'عنوان السمتند', +'document_transfered_email_body' => 'المستند نقل موضوع البريد الإلكتروني', +'document_transfered_email_subject' => 'المستند نقل موضوع البريد الإلكتروني', 'document_updated_email' => 'تم تحديث المستند', -'document_updated_email_body' => 'تم تحديث المستند -المستند: [name] -Parent folder: [folder_path] -المستخدم: [username] -تعليق: [comment] -تعليق الاصدار: [version_comment] +'document_updated_email_body' => 'تم تحديث المستند +المستند: [name] +Parent folder: [folder_path] +المستخدم: [username] +تعليق: [comment] +تعليق الاصدار: [version_comment] URL: [url]', 'document_updated_email_subject' => '[sitename]: [name] - تم تحديث المستند', 'does_not_expire' => 'لا ينتهى صلاحيته', 'does_not_inherit_access_msg' => 'صلاحيات موروثة', 'download' => 'تنزيل', -'download_extension' => '', -'download_links' => '', -'download_link_email_body' => '', -'download_link_email_subject' => '', +'download_extension' => 'تنزيل طويل', +'download_links' => 'تنزيل روابط', +'download_link_email_body' => 'تنزيل رابط محتوى البريد الإلكتروني', +'download_link_email_subject' => 'تنزيل رابط موضوع البريد الإلكتروني', 'do_object_repair' => 'إصلاح كل المستندات والمجلدات.', 'do_object_setchecksum' => 'تحديد فحص اخطاء', 'do_object_setfilesize' => 'تحديد حجم الملف', 'do_object_unlink' => 'مسح اصدار مستند', -'draft' => '', +'draft' => 'مسودة', 'draft_pending_approval' => 'مسودة - قيد الموافقة', 'draft_pending_review' => 'مسودة - قيد المراجعة', 'drag_icon_here' => 'قم بسحب ايقونة المستند او المجلد الى هنا!', -'dropfolderdir_missing' => '', +'dropfolderdir_missing' => 'الملف من مجلد التجميع غير موجود', 'dropfolder_file' => 'ملف من مجلد التجميع', -'dropfolder_folder' => '', +'dropfolder_folder' => 'مجلد التجميع', 'dropfolder_metadata' => '', 'dropupload' => 'رفع سريع', 'drop_files_here' => 'أفلت الملفات هنا!', @@ -435,8 +435,8 @@ URL: [url]', 'dump_creation_warning' => 'من خلال تلك العملية يمكنك انشاء ملف مستخرج من محتوى قاعدة البيانات. بعد انشاء الملف المستخرج سيتم حفظه في مجلد البيانات الخاص بسيرفرك', 'dump_list' => 'ملف مستخرج حالي', 'dump_remove' => 'ازالة الملف المستخرج', -'duplicates' => 'ﻢﻛﺭﺭﺓ', -'duplicate_content' => '', +'duplicates' => 'تكرارات', +'duplicate_content' => 'المحتوى متكرر', 'edit' => 'تعديل', 'edit_attributes' => 'تعديل السمات', 'edit_comment' => 'تعديل تعليق', @@ -446,70 +446,70 @@ URL: [url]', 'edit_document_props' => 'تعديل مستند', 'edit_event' => 'تعديل الحدث', 'edit_existing_access' => 'تعديل قائمة الصلاحيات', -'edit_existing_attribute_groups' => '', +'edit_existing_attribute_groups' => 'تعديل معرف المجموعات الحالية', 'edit_existing_notify' => 'تعديل قائمة التنبيهات', 'edit_folder_access' => 'تعديل صلاحيات', -'edit_folder_attrdefgrp' => '', +'edit_folder_attrdefgrp' => 'تعديل معرف مجموعة الملفات', 'edit_folder_notify' => 'تعديل قائمة التنبيهات', 'edit_folder_props' => 'تعديل مجلد', 'edit_group' => 'تعديل مجموعة', -'edit_online' => '', +'edit_online' => 'تعديل عبر الإنترنت', 'edit_online_warning' => '', -'edit_task' => '', -'edit_transmittal_props' => '', +'edit_task' => 'تعديل المهمة', +'edit_transmittal_props' => 'تعديل الإحالة', 'edit_user' => 'تعديل المستخدم', 'edit_user_details' => 'تعديل بيانات المستخدم', -'edit_version' => '', -'el_GR' => 'ﺲﻴﺴﻴﺳ', -'email' => 'بريد الكتروني', +'edit_version' => 'تعديل الإصدار', +'el_GR' => 'الإنكليزية', +'email' => 'البريد الإلكتروني', 'email_error_title' => 'لمي يتم ادخال البريد الالكتروني', 'email_footer' => 'يمكنك دائما تغيير اعدادات بريدك الالكتروني من خلال خاصية - مستنداتي', 'email_header' => 'هذا رسالة تلقائية من نظام ادارة المستندات!', 'email_not_given' => 'من فضلك ادخل بريد الكتروني صحيح.', -'empty_attribute_group_list' => '', +'empty_attribute_group_list' => 'معرف لائحة المجموعات خالية', 'empty_folder_list' => 'لايوجد مستندات او مجلدات', -'empty_list' => '', +'empty_list' => 'الائحة خالية', 'empty_notify_list' => 'لايوجد مدخلات', 'en_GB' => 'الإنكليزية (GB)', 'equal_transition_states' => 'حالة البداية والنهاية متشابهة', 'error' => 'خطأ', -'error_add_aro' => '', -'error_add_permission' => '', -'error_cleared_cache' => '', -'error_edit_task' => '', -'error_extension_getlist' => '', -'error_importfs' => '', +'error_add_aro' => 'خطأ في الإضافة', +'error_add_permission' => 'خطأ في طلب السماح', +'error_cleared_cache' => 'خطأ في مسح المحفوظات', +'error_edit_task' => 'خطأ في تعديل المهمة', +'error_extension_getlist' => 'خطأ في أخذ الائحة', +'error_importfs' => 'خطأ في الإستيراد', 'error_no_document_selected' => 'لم يتم اختيار مستند', 'error_no_folder_selected' => 'لم يتم اختيار مجلد', 'error_occured' => 'حدث خطأ', -'error_remove_document' => '', -'error_remove_folder' => 'ﺡﺪﺛ ﺦﻃﺃ ﺎﺜﻧﺍﺀ ﺡﺬﻓ ﺎﻠﻤﺠﻟﺩ', -'error_remove_permission' => '', -'error_rm_workflow' => '', -'error_rm_workflow_action' => '', -'error_rm_workflow_state' => '', -'error_toogle_permission' => '', -'error_transfer_document' => '', -'error_trigger_workflow' => '', -'error_update_document' => '', -'error_uploading_reviewer_only' => '', +'error_remove_document' => 'خطأ في ازالة المستند', +'error_remove_folder' => 'حدث خطأ في ازالة ملف', +'error_remove_permission' => 'حدث خطأ في ازالة طلب السماح', +'error_rm_workflow' => 'خطأ في ازالة سير العمل', +'error_rm_workflow_action' => 'خطأ في ازالة دور سير العمل', +'error_rm_workflow_state' => 'خطأ في ازالة حالة سير العمل', +'error_toogle_permission' => 'خطأ في تفعيل طلب السماح', +'error_transfer_document' => 'خطأ في تحويل المستند', +'error_trigger_workflow' => 'خطأ في تفعيل سير العمل', +'error_update_document' => 'خطأ في تحديث المستند', +'error_uploading_reviewer_only' => 'خطأ في رفع المراجع فقط', 'es_ES' => 'الإسبانية', 'event_details' => 'تفاصيل الحدث', -'exclude_items' => '', +'exclude_items' => 'فصل الأشياء', 'expired' => 'انتهى صلاحيته', -'expired_at_date' => '', -'expired_documents' => '', +'expired_at_date' => 'تنتهي صلاحيته في التاريخ', +'expired_documents' => 'مستندات انتهت صلاحيتها', 'expires' => 'تنتهى صلاحيته', -'expire_by_date' => 'ﻲﻨﺘﻫﻯ ﻑﻯ ﺕﺍﺮﻴﺧ', -'expire_in_1d' => '', -'expire_in_1h' => '', -'expire_in_1m' => 'ﻲﻨﺘﻫﻯ ﻑﻯ 1 ﺶﻫﺭ', -'expire_in_1w' => 'ﻲﻨﺘﻫﻯ ﻑﻯ 1 ﺎﺴﺑﻮﻋ', -'expire_in_1y' => 'ﻲﻨﺘﻫﻯ ﻑﻯ 1 ﺲﻧﺓ', -'expire_in_2h' => '', -'expire_in_2y' => 'ﻲﻨﺘﻫﻯ ﻑﻯ 2 ﺲﻧﺓ', -'expire_today' => '', -'expire_tomorrow' => '', +'expire_by_date' => 'تنتهي صلاحيته في التاريخ', +'expire_in_1d' => 'تنتهي صلاحيته بعد يوم واحد', +'expire_in_1h' => 'تنتهي صلاحيته بعد ساعة', +'expire_in_1m' => 'تنتهي صلاحيته بعد دقيقة', +'expire_in_1w' => 'تنتهي صلاحيته بعد اسبوع', +'expire_in_1y' => 'تنتهي صلاحيته بعد سنة', +'expire_in_2h' => 'تنتهي صلاحيته بعد ساعتين', +'expire_in_2y' => 'تنتهي صلاحيته بعد سنتين', +'expire_today' => 'تنتهي صلاحيته اليوم', +'expire_tomorrow' => 'تنتهي صلاحيته غدا', 'expiry_changed_email' => 'تم تغيير تاريخ الصلاحية', 'expiry_changed_email_body' => 'تم تغيير تاريخ الصلاحية المستند: [name] @@ -517,37 +517,37 @@ Parent folder: [folder_path] المستخدم: [username] URL: [url]', 'expiry_changed_email_subject' => '[sitename]: [name] - تم تغيير تاريخ الصلاحية', -'export' => '', -'extension_archive' => '', -'extension_changelog' => 'ﺲﺠﻟ ﺎﻠﺘﻋﺪﻳﻼﺗ', -'extension_loading' => 'ﺖﺤﻤﻴﻟ ﺍﻼﺿﺎﻓﺎﺗ', -'extension_manager' => 'ﺇﺩﺍﺭﺓ ﺍﻼﻣﺩﺍﺩﺎﺗ', -'extension_mgr_installed' => 'ﻢﺜﺒﺗ', -'extension_mgr_no_upload' => '', -'extension_mgr_repository' => 'ﻢﺗﻮﻓﺭ', -'extension_version_list' => 'ﺍﻼﺻﺩﺍﺭ', +'export' => 'تصدير', +'extension_archive' => 'إرشيف أطول', +'extension_changelog' => 'سجل التعديلات', +'extension_loading' => 'تحميل الإضافات', +'extension_manager' => 'إدارة الإضافات', +'extension_mgr_installed' => 'تثبيت إدارة الإضافات', +'extension_mgr_no_upload' => 'لا يمكن تحميل إضافات جديدة لأن دليل الإضافات غير قابل للكتابة.', +'extension_mgr_repository' => 'مستودع إدارة الإضافات', +'extension_version_list' => 'لائحة الإضافات حسب الإصدار', 'february' => 'فبراير', 'file' => 'ملف', 'files' => 'ملفات', 'files_deletion' => 'مسح الملف', 'files_deletion_warning' => 'من خلال تلك الخاصية يمكنك مسح كل الملفات على مجلدات النظام. ملفات معلومات الاصدارات فقط ستظل متاحة للرؤية.', -'files_loading' => 'ﻒﺿﻻ ﺈﻨﺘﻇﺭ ﺢﺗﻯ ﻲﺘﻣ ﺖﺤﻤﻴﻟ ﻕﺎﺌﻣﺓ ﺎﻠﻤﻠﻓﺎﺗ', +'files_loading' => 'تحميل الملفات', 'file_size' => 'حجم الملف', -'filter_for_documents' => '', -'filter_for_folders' => '', +'filter_for_documents' => 'فلتر للمستندات', +'filter_for_folders' => 'فلتر للملفات', 'folder' => 'مجلد', 'folders' => 'مجلدات', 'folders_and_documents_statistic' => 'رؤية عامة للمحتوى', -'folders_with_notification' => '', -'folder_attribute_changed_email_body' => '', -'folder_attribute_changed_email_subject' => '', +'folders_with_notification' => 'ملفات مع اشعار', +'folder_attribute_changed_email_body' => 'معرف المجلد غير محتوى البريد الإلكتروني', +'folder_attribute_changed_email_subject' => 'معرف المجلد غير موضوع البريد الإلتكتروني', 'folder_comment_changed_email' => 'تم تعديل التعليق', -'folder_comment_changed_email_body' => 'تم تعديل التعليق -الملجلد: [name] -التعليق القديم: [old_comment] -التعليق الجديد: [new_comment] -Parent folder: [folder_path] -المستخدم: [username] +'folder_comment_changed_email_body' => 'تم تعديل التعليق +الملجلد: [name] +التعليق القديم: [old_comment] +التعليق الجديد: [new_comment] +Parent folder: [folder_path] +المستخدم: [username] URL: [url]', 'folder_comment_changed_email_subject' => '[sitename]: [name] - تم تعديل التعليق', 'folder_contents' => 'محتوى المجلدات', @@ -575,7 +575,8 @@ Parent folder: [folder_path] المستخدم: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - تم اعادة تسمية المجلد', -'folder_title' => 'مجلد \'[foldername]\'', +'folder_title' => 'مجلد \'[foldername]\'عنوان المجلد', +'foot_note' => 'مجلس النواب اللبناني', 'force_update' => 'ﺖﺣﺪﻴﺛ', 'friday' => 'الجمعة', 'friday_abbr' => 'ج', @@ -583,10 +584,10 @@ URL: [url]', 'fr_FR' => 'الفرنسية', 'fullsearch' => 'البحث النصي الكامل', 'fullsearch_hint' => 'استخدم فهرس النص الكامل', -'fulltextsearch_disabled' => '', +'fulltextsearch_disabled' => 'توقف البحث الكامل للنص', 'fulltext_converters' => 'فهرس تحويل المستند', 'fulltext_info' => 'معلومات فهرس النص الكامل', -'global_attributedefinitiongroups' => '', +'global_attributedefinitiongroups' => 'معرف تعريف المجموعات', 'global_attributedefinitions' => 'سمات', 'global_default_keywords' => 'كلمات بحثية عامة', 'global_document_categories' => 'اقسام', @@ -597,44 +598,44 @@ URL: [url]', 'groups' => 'المجموعات', 'group_approval_summary' => 'ملخص موافقة المجموعة', 'group_exists' => 'المجموعة موجودة بالفعل.', -'group_info' => '', +'group_info' => 'معلومات عن المجموعة', 'group_management' => 'إدارة المجموعات', 'group_members' => 'أعضاء المجموعة', -'group_receipt_summary' => '', +'group_receipt_summary' => 'ملخص وصل المجموعة', 'group_review_summary' => 'ملخص مراجعة المجموعة', 'group_revision_summary' => '', 'guest_login' => 'الدخول كضيف', 'guest_login_disabled' => 'دخول ضيف غير متاح.', -'hash' => '', +'hash' => 'مزيج', 'help' => 'المساعدة', -'home_folder' => '', -'hook_name' => '', +'home_folder' => 'مجلد الصفحة الرئيسية', +'hook_name' => 'دمج الاسم', 'hourly' => 'بالساعة', 'hours' => 'ساعات', -'hr_HR' => 'ﺎﻠﻛﺭﻭﺎﺘﻳﺓ', +'hr_HR' => 'الساعة', 'human_readable' => 'ارشيف مقروء', 'hu_HU' => 'مجرية', 'id' => 'معرف', 'identical_version' => 'الاصدار الجديد مماثل للاصدار الحالي.', -'import' => 'ﺎﺴﺘﺧﺭﺎﺟ', -'importfs' => '', -'import_extension' => '', -'import_fs' => 'ﻦﺴﺧ ﻢﻧ ﻢﻠﻓ ﺎﻠﻨﻇﺎﻣ', -'import_fs_warning' => '', -'include_content' => '', +'import' => 'استيراد', +'importfs' => 'استيرادات', +'import_extension' => 'استيراد إضافات', +'import_fs' => 'نسخ من ملف النظام', +'import_fs_warning' => 'تحذير النسخ من ملف النظام', +'include_content' => 'إضافة المحتوى', 'include_documents' => 'اشمل مستندات', 'include_subdirectories' => 'اشمل مجلدات فرعية', -'indexing_tasks_in_queue' => 'ﺍﻻﻭﺎﻣﺭ ﺎﻠﻤﻄﻟﻮﺑﺓ ﻒﻳ ﺍﻼﻨﺘﻇﺍﺭ', -'index_converters' => '', -'index_done' => '', -'index_error' => '', -'index_folder' => 'ﻒﻫﺮﺳﺓ ﺎﻠﻤﺠﻟﺩ', -'index_no_content' => '', -'index_pending' => '', -'index_waiting' => 'ﻲﻨﺘﻇﺭ', +'indexing_tasks_in_queue' => 'فهرسة المهات بالترتيب', +'index_converters' => 'تحويل الفهرسة', +'index_done' => 'تمت الفهرسة', +'index_error' => 'خطأ في الفهرسة', +'index_folder' => 'فهرسة المجلد', +'index_no_content' => 'فهرسة بلا محتوى', +'index_pending' => 'الفهرسة قيد الإنتظار', +'index_waiting' => 'الفهرسة قيد الإنتظار', 'individuals' => 'افراد', -'individuals_in_groups' => '', -'info_recipients_tab_not_released' => '', +'individuals_in_groups' => 'أفراد في المجموعات', +'info_recipients_tab_not_released' => 'رابط معلومات المستلمين لم يصدر بعد', 'inherited' => 'موروث', 'inherits_access_copy_msg' => 'نسخ قائمة صلاحيات موروثة.', 'inherits_access_empty_msg' => 'ابدأ بقائمة صلاحيات فارغة', @@ -647,9 +648,9 @@ URL: [url]', 'invalid_create_date_end' => 'تاريخ نهائي خاطىء لانشاء مدى تاريخي', 'invalid_create_date_start' => 'تاريخ ابتدائي خاطيء لانشاء مدى تاريخي', 'invalid_doc_id' => 'معرف مستند خاطىء', -'invalid_dropfolder_folder' => '', -'invalid_expiration_date_end' => '', -'invalid_expiration_date_start' => '', +'invalid_dropfolder_folder' => 'مجلد خاطئ', +'invalid_expiration_date_end' => 'تاريخ انتهاء صلاحية خاطئة', +'invalid_expiration_date_start' => 'تاريخ بدء انتهاء الصلاحية خاطئة', 'invalid_file_id' => 'معرف ملف خاطىء', 'invalid_folder_id' => 'معرف مجلد خاطىء', 'invalid_group_id' => 'معرف مجموعة خاطىء', @@ -662,20 +663,20 @@ URL: [url]', 'invalid_target_folder' => 'معرف خاطىء لمجلد الهدف', 'invalid_user_id' => 'معرف مستخدم خاطىء', 'invalid_version' => 'اصدار مستند خاطىء', -'in_folder' => '', -'in_revision' => '', +'in_folder' => 'مجلد خاطئ', +'in_revision' => 'مراجعة خاطئة', 'in_workflow' => 'رهن مسار عمل', 'is_disabled' => 'تعطيل الحساب', 'is_hidden' => 'اخفاء من قائمة المستخدمين', 'it_IT' => 'الإيطالية', 'january' => 'يناير', -'js_form_error' => '', -'js_form_errors' => '', -'js_invalid_email' => '', +'js_form_error' => 'خطأ في الائحة', +'js_form_errors' => 'أخطاء في الأشكال', +'js_invalid_email' => 'خطأ في البريد الإلكتروني', 'js_no_approval_group' => 'من فضلك اختر مجموعة الموافقة', 'js_no_approval_status' => 'من فضلك اختر حالة الموافقة', 'js_no_comment' => 'لايوجد تعليق', -'js_no_currentpwd' => '', +'js_no_currentpwd' => 'لا يوجد كلمة سر حالية', 'js_no_email' => 'اكتب بريدك الالكتروني', 'js_no_file' => 'من فضلك اختر ملف', 'js_no_keywords' => 'من فضلك اختر بعض الكلمات البحثية', @@ -689,37 +690,38 @@ URL: [url]', 'js_pwd_not_conf' => 'كلمة السر وتأكيدها غير متطابق', 'js_select_user' => 'من فضلك اختر مستخدم', 'js_select_user_or_group' => 'اختر على الاقل مستخدم او مجموعة', -'js_unequal_passwords' => '', +'js_unequal_passwords' => 'كلمات السر غير متساوية', 'july' => 'يوليو', 'june' => 'يونيو', -'keep' => '', +'keep' => 'إبقاء', 'keep_doc_status' => 'ابقاء حالة المستند', 'keywords' => 'كلمات البحث', 'keywords_loading' => 'ﻒﺿﻻ ﺎﻨﺘﻇﺭ ﺢﺗﻯ ﻲﺘﻣ ﺖﺤﻤﻴﻟ ﻚﻠﻣﺎﺗ ﺎﻟﺩﻼﻠﻳﺓ', 'keyword_exists' => 'كلمات البحث بالفعل موجودة', -'ko_KR' => 'ﺎﻠﻛﻭﺮﻳﺓ', +'ko_KR' => 'كوريا', 'language' => 'اللغة', -'lastaccess' => '', +'lastaccess' => 'آخر تسجيل دخول', 'last_update' => 'اخر تحديث', -'legend' => 'دليل', -'librarydoc' => '', +'legend' => 'الدليل', +'librarydoc' => 'مستندات المكتبة', 'linked_documents' => 'مستندات متعلقة', 'linked_files' => 'ملحقات', -'linked_to_current_version' => '', -'linked_to_document' => 'ﺮﺒﻃ ﺐﻤﻠﻓ ﺄﺧﺭ', -'linked_to_this_version' => '', +'linked_to_current_version' => 'متعلقة بالإصدار الحالي', +'linked_to_document' => 'متعلقة بالمستند', +'linked_to_this_version' => 'متعلقة بهذا الإصدار', 'link_alt_updatedocument' => 'اذا كنت تود تحميل ملفات اكبر من حجم الملفات المتاحة حاليا, من فضلك استخدم البديل صفحة التحميل.', -'link_document' => '', -'link_to_version' => '', -'list_access_rights' => 'ﻉﺮﺿ ﻚﻟ ﺎﻠﺻﻼﺤﻳﺎﺗ', -'list_contains_no_access_docs' => '', -'list_hooks' => '', -'list_tasks' => '', +'link_document' => 'رابط المستند', +'link_to_version' => 'رابط الإصدار', +'list_access_rights' => 'لائحة حقوق الدخول', +'list_contains_no_access_docs' => 'هذه الائحة لا تحتوي على مستندات للدخول', +'list_hooks' => 'لائحة الدمج', +'list_tasks' => 'لائحة المهمات', 'local_file' => 'ملف محلي', 'locked_by' => 'محمي بواسطة', 'lock_document' => 'حماية', 'lock_message' => 'هذا الملف محمي بواسطة [username]. فقط المستخدمين المصرح لهم يمكنهم تعديله.', 'lock_status' => 'حالة', +'logfile_loading' => '', 'login' => 'دخول', 'login_disabled_text' => 'حسابك معطل, غالبا بسبب المحاولات العديدة الخاطئة للدخول', 'login_disabled_title' => 'الحساب معطل', @@ -727,57 +729,57 @@ URL: [url]', 'login_error_title' => 'خطأ في الدخول', 'login_not_given' => 'لم يتم ادخال اسم المستخدم', 'login_ok' => 'دخول صحيح', -'login_restrictions_apply' => '', +'login_restrictions_apply' => 'تطبق لائحة القيود', 'logout' => 'خروج', -'log_management' => 'ادارة ملفات السجلات', -'lo_LA' => 'ﺎﻠﻤﻛﺎﻧ', -'malformed_expiration_date' => '', +'log_management' => 'ادارة سجلات الملفات', +'lo_LA' => 'لاوتاني', +'malformed_expiration_date' => 'خطأ في تاريخ انتهاء الصلاحية', 'manager' => 'مدير', -'manager_of_group' => '', -'mandatory_approvergroups' => '', -'mandatory_approvergroup_no_access' => '', -'mandatory_approvers' => '', -'mandatory_approver_no_access' => '', -'mandatory_reviewergroups' => '', -'mandatory_reviewergroup_no_access' => '', -'mandatory_reviewers' => '', -'mandatory_reviewer_no_access' => '', +'manager_of_group' => 'مدير المجموعة', +'mandatory_approvergroups' => 'موافقة المجموعة اجباري', +'mandatory_approvergroup_no_access' => 'ممنوع الدخول الى موافقة المجموعة الإجباري', +'mandatory_approvers' => 'موافقين اجباريين', +'mandatory_approver_no_access' => 'ممنوع دخول الموافق الإجباري', +'mandatory_reviewergroups' => 'مراجعة المجموعات اجباري', +'mandatory_reviewergroup_no_access' => 'ممنوع دخول مجموعة المراجعة الإجبارية', +'mandatory_reviewers' => 'مراجعين اجباريين', +'mandatory_reviewer_no_access' => 'ممنوع دخول المراجع الإجباري', 'march' => 'مارس', 'max_upload_size' => 'الحجم الاقصى للملف', 'may' => 'مايو', -'menu_dropfolder' => '', -'menu_upload_from_dropfolder' => '', -'mimetype' => 'Mime type', +'menu_dropfolder' => 'صفحة المجلد', +'menu_upload_from_dropfolder' => 'صفحة التحميل من المجلد', +'mimetype' => 'نوع الملف', 'minutes' => 'دقائق', 'misc' => 'متنوعات', -'missing_checksum' => 'فحص اخطاء مفقود', -'missing_file' => '', -'missing_filesize' => 'حجم ملف مفقود', -'missing_reception' => '', -'missing_request_object' => '', +'missing_checksum' => 'فحص الأخطاء مفقود', +'missing_file' => 'الملف غير موجود', +'missing_filesize' => 'حجم الملف مفقود', +'missing_reception' => 'الإستقبال غير موجود', +'missing_request_object' => 'طلب شيء غير موجود', 'missing_transition_user_group' => 'مستخدم/مجموعة مفقودة للتحول', 'monday' => 'الاثنين', 'monday_abbr' => 'ن', 'monthly' => 'شهريا', 'month_view' => 'عرض الشهر', -'more_objects_loading' => '', +'more_objects_loading' => 'يتم تحميل أشياء أخرى', 'move' => 'تحريك', -'move_clipboard' => '', +'move_clipboard' => 'تحريك القصاصة', 'move_document' => 'تحريك مستند', 'move_folder' => 'تحريك مجلد', 'my_account' => 'حسابي', 'my_documents' => 'مستنداتي', -'my_transmittals' => '', +'my_transmittals' => 'الإحالات الخاصة بي', 'name' => 'اسم', -'needs_correction' => '', +'needs_correction' => 'يحتاج الى تصحيح', 'needs_workflow_action' => 'هذا المستند يتطلب انتباهك . من فضلك تفقد زر مسار العمل', -'network_drive' => '', -'never' => '', +'network_drive' => 'قرص النترنت', +'never' => 'ابدا', 'new' => 'جديد', 'new_attrdef' => 'اضافة تعريف سمة', 'new_default_keywords' => 'اضافة كلمات بحث', -'new_default_keyword_category' => 'اضافة قسم', -'new_document_category' => 'اضافة قسم', +'new_default_keyword_category' => 'من فضلك اضف قسم', +'new_document_category' => 'من فضلك اضف قسم', 'new_document_email' => 'مستند جديد', 'new_document_email_body' => 'مستند جديد اسم: [name] @@ -810,6 +812,7 @@ URL: [url]', 'next_state' => 'حالة جديدة', 'nl_NL' => 'الهولندي', 'no' => 'لا', +'notification' => '', 'notify_added_email' => 'تم اضافتك الى قائمة التنبيهات', 'notify_added_email_body' => 'تم اضافتك الى قائمة التنبيهات اسم: [name] @@ -830,42 +833,43 @@ URL: [url]', 'no_approval_needed' => 'لايوجد موافقات منتظره', 'no_attached_files' => 'لا يوجد مرفقات', 'no_backup_dir' => '', -'no_current_version' => '', +'no_current_version' => 'لا يوجد اصدار جديد', 'no_default_keywords' => 'لايوجد كلمات بحثية متاحة', -'no_docs_checked_out' => '', +'no_docs_checked_out' => 'لم يتم سحب اي مستند', +'no_docs_expired' => '', 'no_docs_locked' => 'لايوجد مستندات حاليا مقفلة/محمية من التعديل', -'no_docs_needs_correction' => '', -'no_docs_rejected' => '', +'no_docs_needs_correction' => 'لا يوجد مستندات تحتاج الى تصحيح', +'no_docs_rejected' => 'لم يتم رفض اي مستند', 'no_docs_to_approve' => 'لايوجد مستندات حالية في انتظار الموافقة', 'no_docs_to_look_at' => 'لايوجد مستندات حاليا تستدعي انتباهك', -'no_docs_to_receipt' => '', +'no_docs_to_receipt' => 'لا يوجد مستندات للمستلم', 'no_docs_to_review' => 'لايوجد مستندات حاليا متاحة للمراجعة', -'no_docs_to_revise' => '', -'no_email_or_login' => '', +'no_docs_to_revise' => 'لا يوجد مستندات للمراجعة', +'no_email_or_login' => 'لا يوجد بريد الكتروني او تسجيل الدخول', 'no_fulltextindex' => 'لايوجد فهرس للنص الكامل متاح', 'no_groups' => 'لايوجد مجموعات', 'no_group_members' => 'هذه المجموعة لايوجد بها اعضاء', 'no_linked_files' => 'لايوجد ملفات مرتبطة', 'no_previous_versions' => 'لايوجد اصدارات سابقة', -'no_receipt_needed' => '', +'no_receipt_needed' => 'لا يحتاج لأي مستلم', 'no_review_needed' => 'لايوجد مراجعات في الانتظار', -'no_revision_needed' => '', -'no_revision_planed' => '', +'no_revision_needed' => 'لا يحتاج إلى مراجعة', +'no_revision_planed' => 'لم يخطط لأي مراجعة', 'no_update_cause_locked' => 'لايمكنك تعديل المستند. قم بمخاطبة المستخدم الذي قام بحمايته من التعديل', 'no_user_image' => 'لا يوجد صورة متاحة', -'no_version_check' => '', -'no_version_modification' => 'ﻻ ﺖﻋﺪﻴﻟ ﻊﻠﻳ ﺎﻠﻨﺴﺧﺓ', -'no_workflow_available' => '', +'no_version_check' => 'لم يتحقق من اي اصدار', +'no_version_modification' => 'لا تعديل على الإصدار', +'no_workflow_available' => 'لا يوجد سير عمل', 'objectcheck' => 'التحقق من مستند/مجلد', -'object_check_critical' => '', -'object_check_warning' => '', +'object_check_critical' => 'التحقق من الشيء في حالة حرجة', +'object_check_warning' => 'تحذير في التحقق من شيء', 'obsolete' => 'مهمل', 'october' => 'اكتوبر', 'old' => 'قديم', 'only_jpg_user_images' => 'فقط يمكنك استخدام ملفات من تنسيق jpg كصورة المستخدم', -'order_by_sequence_off' => '', +'order_by_sequence_off' => 'الترتيب بالتسلسل موقف', 'original_filename' => 'اسم الملف الاصلي', -'overall_indexing_progress' => '', +'overall_indexing_progress' => 'متابعة الفهرسة', 'owner' => 'المالك', 'ownership_changed_email' => 'تم تغيير المالك', 'ownership_changed_email_body' => 'تم تغيير المالك @@ -880,8 +884,8 @@ URL: [url]', 'password_already_used' => 'كلمة السر بالفعل تم ارسالها', 'password_expiration' => 'انتهاء صلاحية كلمة السر', 'password_expiration_text' => 'انتهت صلاحية كلمة السر. من فضلك قم باختيارها قبل ان تستكمل عملك بالنظام', -'password_expired' => '', -'password_expires_in_days' => '', +'password_expired' => 'انتهت صلاحية كلمة السر', +'password_expires_in_days' => 'كلمة السر نتهي صلاحيتها بعد أيام', 'password_forgotten' => 'نسيان كلمة السر', 'password_forgotten_email_body' => 'عزيزي مستخدم النظام,nnاستقبلنا طلبك لتغيير كلمة السر.nnيمكنك تغييرها عن طريق الرابط التالي:nn[url_prefix]out/out.ChangePassword.php?hash=[hash]nnIf you have still problems to login, then please contact your administrator.', 'password_forgotten_email_subject' => '[sitename]: نسيان كلمة السر', @@ -889,63 +893,63 @@ URL: [url]', 'password_forgotten_text' => 'قم بملء النموذج التالي واتبع التعليمات التى سيتم ارسالها اليك بالبريد الالكتروني', 'password_forgotten_title' => 'ارسال كلمة السر', 'password_repeat' => 'تكرار كلمة السر', -'password_send' => '', -'password_send_text' => '', +'password_send' => 'أرسل كلمة السر', +'password_send_text' => 'أرسل نموذج كلمة السر', 'password_strength' => 'قوة كلمة السر', 'password_strength_insuffient' => 'قوة كلمة السر غير كافية', 'password_wrong' => 'كلمة سر خاطئة', -'pdf_converters' => '', -'pending_approvals' => '', -'pending_receipt' => '', -'pending_reviews' => '', -'pending_revision' => '', -'pending_workflows' => '', +'pdf_converters' => 'تحويل إلى pdf', +'pending_approvals' => 'الموافقة قيد الإنتظار', +'pending_receipt' => 'إنتظار المستلمين', +'pending_reviews' => 'إنتظار الإستعراض', +'pending_revision' => 'إنتظار المراجعة', +'pending_workflows' => 'إنتظار سير العمل', 'personal_default_keywords' => 'قوائم الكلمات البحثية الشخصية', -'pl_PL' => 'ﺎﻠﺑﻮﻠﻧﺪﻳﺓ', -'possible_substitutes' => '', -'preset_expires' => 'ﺕﺍﺮﻴﺧ ﺍﻼﻨﺘﻫﺍﺀ', -'preview' => 'ﻢﻋﺎﻴﻧﺓ', -'preview_converters' => '', -'preview_images' => '', -'preview_markdown' => '', -'preview_pdf' => '', -'preview_plain' => '', +'pl_PL' => 'البولندية', +'possible_substitutes' => 'بدلاء متاحين', +'preset_expires' => 'تاريخ الإنتهاء', +'preview' => 'معاينة', +'preview_converters' => 'محول المعاينات', +'preview_images' => 'معاينة الصور', +'preview_markdown' => 'معاينة التخفيضات', +'preview_pdf' => 'معاينة ملف pdf', +'preview_plain' => 'معاينة سطحية', 'previous_state' => 'حالة سابقة', 'previous_versions' => 'اصدارات سابقة', -'process' => '', -'process_without_user_group' => '', +'process' => 'سير العمل', +'process_without_user_group' => 'معالجة دون استعمال مستخدم من المجموعة', 'pt_BR' => 'البرتغالية (BR)', 'quota' => 'المساحة المخصصة', 'quota_exceeded' => 'لقد قمت بتعدي المساحة المخصصة لك بمقدار [bytes].', -'quota_is_disabled' => '', +'quota_is_disabled' => 'الغيت الكوتا', 'quota_warning' => 'اقصى مساحة للقرص الصلب تم تعديها بمقدار [bytes]. من فضلك قم بمسح بعض المستندات او اصدارات سابقة منها', -'receipts_accepted' => '', +'receipts_accepted' => 'تم الموافقة على الوصول', 'receipts_accepted_latest' => '', -'receipts_not_touched' => '', +'receipts_not_touched' => 'الوصول غير ملموسة', 'receipts_not_touched_latest' => '', -'receipts_rejected' => '', +'receipts_rejected' => 'تم رفض الوصول', 'receipts_rejected_latest' => '', -'receipts_without_group' => '', -'receipts_without_user' => '', -'receipt_deletion_email_body' => '', -'receipt_deletion_email_subject' => '', -'receipt_log' => '', -'receipt_request_email_body' => '', -'receipt_request_email_subject' => '', -'receipt_status' => '', -'receipt_summary' => '', -'receipt_update_failed' => '', -'recent_uploads' => 'ﺂﺧﺭ ﺎﻠﻤﻠﻓﺎﺗ ﺎﻠﻣﺮﻓﻮﻋﺓ"', -'reception' => '', -'reception_acknowleged' => '', -'reception_noaction' => '', -'reception_rejected' => '', -'recipients' => '', -'recipient_already_removed' => '', -'redraw' => '', +'receipts_without_group' => 'وصل دون مجموعة', +'receipts_without_user' => 'وصل دون مستخدم', +'receipt_deletion_email_body' => 'إيصال لإلغاء محتوى البريد الإلكتروني', +'receipt_deletion_email_subject' => 'إيصال لإلغال موضوع البريد الإلكتروني', +'receipt_log' => 'إيصال سجل', +'receipt_request_email_body' => 'طلب إيصال من محتوى البريد الإلكتروني', +'receipt_request_email_subject' => 'طلب إيصال من موضوع البريد الإلكتروني', +'receipt_status' => 'حالة الإيصال', +'receipt_summary' => 'ملخص الإيصال', +'receipt_update_failed' => 'فشل في تحديث الإيصال', +'recent_uploads' => 'الإضافات الأخيرة', +'reception' => 'إستقبال', +'reception_acknowleged' => 'موافقة على الإستقبال', +'reception_noaction' => 'ابستقبال بلا نشاط', +'reception_rejected' => 'إستقبال مرفوض', +'recipients' => 'المستلمين', +'recipient_already_removed' => 'تم إيزال المستلم', +'redraw' => 'إعادة رسم', 'refresh' => 'اعادة تحميل', 'rejected' => 'مرفوض', -'released' => 'منشور', +'released' => 'صدر', 'removed_approver' => 'تم ازالته من قائمة الموافقون', 'removed_file_email' => 'تم ازالة المرفقات', 'removed_file_email_body' => 'تم ازالة المرفقات @@ -953,9 +957,9 @@ URL: [url]', المستخدم: [username] URL: [url]', 'removed_file_email_subject' => '[sitename]: [document] - تم ازالة المرفقات', -'removed_recipient' => '', +'removed_recipient' => 'إزالة المستلم', 'removed_reviewer' => 'تم ازالته من قائمة المراجعة', -'removed_revisor' => '', +'removed_revisor' => 'إزالة المراجع', 'removed_workflow_email_body' => 'تم ازالة مسار العمل من اصدار المستند مستند: [name] اصدار: [version] @@ -964,14 +968,14 @@ Parent folder: [folder_path] مستخدم: [username] URL: [url]', 'removed_workflow_email_subject' => '[sitename]: [name] - تم ازالة مسار العمل من اصدار المستند', -'removeFolderFromDropFolder' => '', +'removeFolderFromDropFolder' => 'إزالة مجلد من إسقاط لائحة', 'remove_marked_files' => 'ازالة الملفات المختارة', 'repaired' => 'تم اصلاحه', 'repairing_objects' => 'تحضير المستندات والمجلدات.', -'request_workflow_action_email_body' => '', -'request_workflow_action_email_subject' => '', -'reset_checkout' => '', -'restrict_access' => '', +'request_workflow_action_email_body' => 'طلب سير عمل في نشاط محتوى البريد الإلكتروني', +'request_workflow_action_email_subject' => 'طلب سير العمل في نشاط موضوع البريد الإلكتروني', +'reset_checkout' => 'إعادة تعيين الخروج', +'restrict_access' => 'الحد من تسجيل الدخول', 'results_page' => 'صفحة النتائج', 'return_from_subworkflow' => 'العودة من مسار العمل الفرعي', 'return_from_subworkflow_email_body' => 'عودة من مسار عمل فرعي @@ -983,27 +987,27 @@ Parent folder: [folder_path] مستخدم: [username] URL: [url]', 'return_from_subworkflow_email_subject' => '[sitename]: [name] - عودة من مسار عمل فرعي', -'reverse_links' => '', +'reverse_links' => 'الروابط العكسية', 'reviewers' => 'المراجعون', 'reviewer_already_assigned' => 'بالفعل تم تخصيصة كمراجع', 'reviewer_already_removed' => 'بالفعل تم ازالته من عملية المراجعة او تم تقديمه للمراجعة', -'reviews_accepted' => '', +'reviews_accepted' => 'تم الموافقة على المراجعات', 'reviews_accepted_latest' => '', -'reviews_not_touched' => '', +'reviews_not_touched' => 'مراجعات غير ملموسة', 'reviews_not_touched_latest' => '', -'reviews_rejected' => '', +'reviews_rejected' => 'تم رفض المراجعة', 'reviews_rejected_latest' => '', -'reviews_without_group' => '', -'reviews_without_user' => '', +'reviews_without_group' => 'مراجعات بلا مجموعة', +'reviews_without_user' => 'مراجعات بلا مستخدم', 'review_deletion_email' => 'طلب المراجعة تم مسحه', -'review_deletion_email_body' => '', -'review_deletion_email_subject' => '', -'review_file' => '', +'review_deletion_email_body' => 'مراجعة البريد الإلكتروني قبل مسحه', +'review_deletion_email_subject' => 'مراجعة موضوع البريد الإلكتروني قبل مسحه', +'review_file' => 'مراجعة ملف', 'review_group' => 'مجموعة المراجعة', -'review_log' => 'ﺲﺠﻟ ﺎﻠﻣﺭﺎﺠﻋﺓ', +'review_log' => 'سجل المراجعة', 'review_request_email' => 'طلب مراجعة', -'review_request_email_body' => '', -'review_request_email_subject' => '', +'review_request_email_body' => 'طلب مراجعة محتوى البريد الإلكتروني', +'review_request_email_subject' => 'طلب مراجعة موضوع البريد الإلكتروني', 'review_status' => 'حالة المراجعة:', 'review_submit_email' => 'تم تقديم المراجعة', 'review_submit_email_body' => 'تم تقديم المراجعة @@ -1017,29 +1021,29 @@ URL: [url]', 'review_submit_email_subject' => '[sitename]: [name] - تم تقديم المراجعة', 'review_summary' => 'ملخص المراجعة', 'review_update_failed' => 'خطأ في تحديث حالة المراجعة. التحديث فشل.', -'revise_document' => '', -'revise_document_on' => '', -'revisions_accepted' => '', +'revise_document' => 'راجع المستند', +'revise_document_on' => 'راجع المستند على', +'revisions_accepted' => 'تم الموافقة على المراجعات', 'revisions_accepted_latest' => '', -'revisions_not_touched' => '', +'revisions_not_touched' => 'المراجعات غير ملموسة', 'revisions_not_touched_latest' => '', -'revisions_pending' => '', +'revisions_pending' => 'المراجعات قيد الإنتظار', 'revisions_pending_latest' => '', -'revisions_rejected' => '', +'revisions_rejected' => 'تم رفض المراجعات', 'revisions_rejected_latest' => '', -'revisions_without_group' => '', -'revisions_without_user' => '', -'revision_date' => '', -'revision_log' => '', -'revision_request_email_body' => '', -'revision_request_email_subject' => '', -'revision_status' => '', -'revision_submit_email_body' => '', -'revision_submit_email_subject' => '', +'revisions_without_group' => 'مراجعات بلا مجموعة', +'revisions_without_user' => 'مراجعات بلا مستخدم', +'revision_date' => 'تاريخ المراجعة', +'revision_log' => 'سجل المراجعة', +'revision_request_email_body' => 'طلب مراجعة محتوى البريد الإلكتروني', +'revision_request_email_subject' => 'طلب مراجعة موضوع البريد الإلكتروني', +'revision_status' => 'حالة المراجعة', +'revision_submit_email_body' => 'تم تقديم مراجعة محتوى البريد الإلكتروني', +'revision_submit_email_subject' => 'تم تقديم مراجعة موضوع البريد الإلكتروني', 'revision_summary' => '', -'revisors' => '', -'revisor_already_assigned' => '', -'revisor_already_removed' => '', +'revisors' => 'المراجعين', +'revisor_already_assigned' => 'تم تعيين المراجع', +'revisor_already_removed' => 'تم إزالة المراجع', 'rewind_workflow' => 'اعادة بدء مسار العمل', 'rewind_workflow_email_body' => 'اعادة بدء مسار العمل المستند: [name] @@ -1051,21 +1055,21 @@ URL: [url]', 'rewind_workflow_email_subject' => '[sitename]: [name] - اعادة بدء مسار العمل', 'rewind_workflow_warning' => 'لو قمت باعادة تشغيل مسار العمل لحالته الاصلية، سيتم مسح سجلات مسار العمل للمستند ولايمكن استعادته', 'rm_attrdef' => 'ازالة تعريف سمة', -'rm_attrdefgroup' => '', -'rm_attr_value' => '', +'rm_attrdefgroup' => 'ازالة تعريف سمة المجموعة', +'rm_attr_value' => 'ازالة سمة الرقم', 'rm_default_keyword_category' => 'ازالة القسم', 'rm_document' => 'ازالة المستند', 'rm_document_category' => 'ازالة القسم', -'rm_event' => '', +'rm_event' => 'ازالة هدف', 'rm_file' => 'ازالة الملف', 'rm_folder' => 'ازالة المجلد', 'rm_from_clipboard' => 'ازالة من لوحة القصاصات', 'rm_group' => 'ازالة هذه المجموعة', -'rm_role' => '', -'rm_transmittal' => '', -'rm_transmittalitem' => '', +'rm_role' => 'ازالة دور', +'rm_transmittal' => 'ازالة محول', +'rm_transmittalitem' => 'ازالة حاجة المحول', 'rm_user' => 'ازالة هذا المستخدم', -'rm_user_from_processes' => '', +'rm_user_from_processes' => 'ازالة مستخدم من العمليات', 'rm_version' => 'ازالة اصدار', 'rm_workflow' => 'ازالة مسار عمل', 'rm_workflow_action' => 'ازالة اجراء مسار عمل', @@ -1074,12 +1078,12 @@ URL: [url]', 'role' => 'دور', 'role_admin' => 'مدير النظام', 'role_guest' => 'ضيف', -'role_info' => '', -'role_management' => '', -'role_name' => '', -'role_type' => '', +'role_info' => 'دور المعلومات', +'role_management' => 'دور الإدارة', +'role_name' => 'دور الإسم', +'role_type' => 'نوع الدور', 'role_user' => 'مستخدم', -'ro_RO' => 'ﺭﻮﻣﺎﻨﻳﺓ', +'ro_RO' => 'رومانية', 'run_subworkflow' => 'تشغيل مسار عمل فرعي', 'run_subworkflow_email_body' => 'مسار العمل الفرعي بدأ المستند: [name] @@ -1094,610 +1098,616 @@ URL: [url]', 'saturday' => 'السبت', 'saturday_abbr' => 'س', 'save' => 'حفظ', -'scheduler_class' => '', -'scheduler_class_description' => '', -'scheduler_class_parameter' => '', -'scheduler_class_tasks' => '', +'scheduler_class' => 'جدول الصف', +'scheduler_class_description' => 'تفصيل جدول الصف', +'scheduler_class_parameter' => 'معامل جدول الصف', +'scheduler_class_tasks' => 'مهام جدول الصف', 'scheduler_task_mgr' => '', 'search' => 'البحث', 'search_fulltext' => 'بحث في النص الكامل', 'search_in' => 'بحث في', 'search_mode_and' => 'كل الكلمات', -'search_mode_documents' => '', -'search_mode_folders' => '', +'search_mode_documents' => 'وضع البحث عن مستندات', +'search_mode_folders' => 'وضع البحث عن مجلدات', 'search_mode_or' => 'على الاقل كلمة واحدة', 'search_no_results' => 'لا يوجد مستند مطابق للبحث', 'search_query' => 'بحث عن', 'search_report' => 'وجد [doccount] مستند و [foldercount] مجلد في [searchtime] ثانية.', 'search_report_fulltext' => 'وجد [doccount] مستندات', -'search_resultmode' => '', -'search_resultmode_both' => '', +'search_resultmode' => 'وضع نتائج البحث', +'search_resultmode_both' => 'وضع نتائح البحث عن الإثنين', 'search_results' => 'نتائج البحث', 'search_results_access_filtered' => 'نتائج البحث من الممكن ان تحتوى بعد المستندات التى ليس لديك صلاحية اليها', 'search_time' => 'الوقت المتبقي: [time] sec.', 'seconds' => 'ثواني', 'selection' => 'اختيار', -'select_attrdefgrp_show' => '', -'select_attribute_value' => '', +'select_attrdefgrp_show' => 'حدد معرف سمة المجموعة', +'select_attribute_value' => 'اختيار سمة الرقم', 'select_category' => 'اضغط لاختيار قسم', -'select_group' => 'ﺎﺨﺘﻳﺍﺭ ﻢﺠﻣﻮﻋﺓ', +'select_group' => 'اختيار مجموعة', 'select_groups' => 'اضغط لاختيار مجموعة', 'select_grp_approvers' => 'اضغط لاختيار مجموعة الموافقون', -'select_grp_ind_approvers' => '', -'select_grp_ind_notification' => '', -'select_grp_ind_recipients' => '', -'select_grp_ind_reviewers' => '', -'select_grp_ind_revisors' => '', -'select_grp_notification' => 'ﺎﻨﻗﺭ ﻼﺨﺘﻳﺍﺭ ﺍﻼﺸﻋﺍﺭ ﻞﻤﺠﻣﻮﻋﺓ', -'select_grp_recipients' => '', +'select_grp_ind_approvers' => 'اختيار مجموعة موافقين', +'select_grp_ind_notification' => 'اختيار مجموعة اشعارات', +'select_grp_ind_recipients' => 'اختيار مجموعة مستلمين', +'select_grp_ind_reviewers' => 'اختيار مجموعة مراجعين', +'select_grp_ind_revisors' => 'اختيار مجموعة مراجعين', +'select_grp_notification' => 'اضغط لإختيار مجموعة الشعارات', +'select_grp_recipients' => 'اختيار مجموعة مستلمين', 'select_grp_reviewers' => 'اضغط لاختيار مجموعة المراجعون', -'select_grp_revisors' => '', +'select_grp_revisors' => 'اختيار مجموعة مراجعين', 'select_ind_approvers' => 'اضغط لاختيار موافق فردي', -'select_ind_notification' => 'ﺎﻨﻗﺭ ﻼﺨﺘﻳﺍﺭ ﺍﻼﺸﻋﺍﺭ ﻞﺸﺨﺻ', -'select_ind_recipients' => '', +'select_ind_notification' => 'اضغط لإختيار اشعار فردي', +'select_ind_recipients' => 'اختيار مستلم فردي', 'select_ind_reviewers' => 'اضغط لاختيار مراجع فردي', -'select_ind_revisors' => '', +'select_ind_revisors' => 'اضغط لإختيار مراجعين فرديين', 'select_one' => 'اختر واحد', -'select_user' => 'ﺎﺨﺗﺭ ﻢﺴﺘﺧﺪﻣ', +'select_user' => 'اختر مستخدم', 'select_users' => 'اضغط لاختيار المستخدم', -'select_value' => 'ﺎﺨﺗﺭ ﺎﻠﻘﻴﻣﺓ ﺮﺟﺍﺀً', +'select_value' => 'ًاختار قيمة', 'select_workflow' => 'اختر مسار العمل', -'send_email' => '', -'send_login_data' => '', -'send_login_data_body' => '', -'send_login_data_subject' => '', -'send_test_mail' => '', +'send_email' => 'بعث بريد الكتروني', +'send_login_data' => 'ارسل بيانات تسجيل الدخول', +'send_login_data_body' => 'ارسل محتوى بيانات تسجيل الدخول', +'send_login_data_subject' => 'ارسل موضوع بيانات تسجيل الدخول', +'send_test_mail' => 'ارسل رسالة تجريبية', 'september' => 'سبتمبر', 'sequence' => 'تتابع', 'seq_after' => 'بعد "[prevname]"', 'seq_end' => 'في الاخر', 'seq_keep' => 'حافظ على المرتبة', 'seq_start' => 'اول مرتبة', -'sessions' => '', -'setDateFromFile' => '', -'setDateFromFolder' => '', +'sessions' => 'صفوف', +'setDateFromFile' => 'وضع تاريخ من الملف', +'setDateFromFolder' => 'تحديد التاريخ من المجلد', 'settings' => 'الإعدادات', 'settings_activate_module' => 'Activate module', 'settings_activate_php_extension' => 'Activate PHP extension', 'settings_adminIP' => 'Admin IP', -'settings_adminIP_desc' => '', +'settings_adminIP_desc' => 'ِAdmin IP', 'settings_Advanced' => 'متقدم', -'settings_advancedAcl' => '', -'settings_advancedAcl_desc' => '', -'settings_allowChangeRevAppInProcess' => '', -'settings_allowChangeRevAppInProcess_desc' => '', -'settings_allowReviewerOnly' => '', -'settings_allowReviewerOnly_desc' => '', +'settings_advancedAcl' => 'متقدم', +'settings_advancedAcl_desc' => 'متقدم', +'settings_allowChangeRevAppInProcess' => 'السماح بتغيير التطبيق في العملية', +'settings_allowChangeRevAppInProcess_desc' => 'السماح بتغيير التطبيق في العملية', +'settings_allowReviewerOnly' => 'السماح بالمراجع فقط', +'settings_allowReviewerOnly_desc' => 'السماح بالمراجع فقط', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', -'settings_Authentication' => '', -'settings_autoLoginUser' => '', -'settings_autoLoginUser_desc' => '', -'settings_available_languages' => '', -'settings_available_languages_desc' => '', -'settings_backupDir' => '', -'settings_backupDir_desc' => '', -'settings_cacheDir' => '', -'settings_cacheDir_desc' => '', +'settings_Authentication' => 'المصادقة', +'settings_autoLoginUser' => 'تسجيل الدخول التلقائي', +'settings_autoLoginUser_desc' => 'تسجيل الدخول التلقائي', +'settings_available_languages' => 'اللغات الموجودة', +'settings_available_languages_desc' => 'اللغات الموجودة', +'settings_backupDir' => 'backupDir', +'settings_backupDir_desc' => 'backupDir', +'settings_cacheDir' => 'cacheDir', +'settings_cacheDir_desc' => 'cacheDir', 'settings_Calendar' => 'اعدادات التقويم', 'settings_calendarDefaultView' => 'العرض الافتراضي للتقويم', 'settings_calendarDefaultView_desc' => 'العرض الافتراضي للتقويم', -'settings_cannot_disable' => '', -'settings_checkOutDir' => '', -'settings_checkOutDir_desc' => '', -'settings_cmdTimeout' => '', -'settings_cmdTimeout_desc' => '', +'settings_cannot_disable' => 'لا يمكن التعطيل', +'settings_checkOutDir' => 'checkOutDir', +'settings_checkOutDir_desc' => 'checkOutDir', +'settings_cmdTimeout' => 'انتهاء مدة cmd', +'settings_cmdTimeout_desc' => 'انتهاء مدة cmd', 'settings_contentDir' => 'مجلد المحتوى', -'settings_contentDir_desc' => '', -'settings_contentOffsetDir' => '', -'settings_contentOffsetDir_desc' => '', -'settings_convertToPdf' => '', -'settings_convertToPdf_desc' => '', -'settings_cookieLifetime' => '', -'settings_cookieLifetime_desc' => '', -'settings_coreDir' => '', -'settings_coreDir_desc' => '', -'settings_createCheckOutDir' => '', -'settings_createCheckOutDir_desc' => '', -'settings_createdatabase' => '', -'settings_createdirectory' => '', -'settings_currentvalue' => '', -'settings_Database' => '', -'settings_dbDatabase' => '', -'settings_dbDatabase_desc' => '', -'settings_dbDriver' => '', -'settings_dbDriver_desc' => '', -'settings_dbHostname' => '', -'settings_dbHostname_desc' => '', -'settings_dbPass' => '', -'settings_dbPass_desc' => '', -'settings_dbUser' => '', -'settings_dbUser_desc' => '', -'settings_dbVersion' => '', -'settings_defaultAccessDocs' => '', -'settings_defaultAccessDocs_desc' => '', -'settings_defaultDocPosition' => '', -'settings_defaultDocPosition_desc' => '', -'settings_defaultDocPosition_val_end' => '', -'settings_defaultDocPosition_val_start' => '', -'settings_defaultSearchMethod' => '', -'settings_defaultSearchMethod_desc' => '', -'settings_defaultSearchMethod_valdatabase' => '', -'settings_defaultSearchMethod_valfulltext' => '', -'settings_delete_install_folder' => '', -'settings_disableSelfEdit' => '', -'settings_disableSelfEdit_desc' => '', -'settings_disable_install' => '', +'settings_contentDir_desc' => 'محتوى المجلد', +'settings_contentOffsetDir' => 'محتوى المجلد', +'settings_contentOffsetDir_desc' => 'محتوى المجلد', +'settings_convertToPdf' => 'تحويل الى pdf', +'settings_convertToPdf_desc' => 'تحويل الى pdf', +'settings_cookieLifetime' => 'ملف تعريف الارتباط', +'settings_cookieLifetime_desc' => 'ملف تعريف الارتباط', +'settings_coreDir' => 'coreDir', +'settings_coreDir_desc' => 'coreDir', +'settings_createCheckOutDir' => 'اختراع سحب', +'settings_createCheckOutDir_desc' => 'اختراع سحب', +'settings_createdatabase' => 'اختراح بيانات', +'settings_createdirectory' => 'انشاء دليل', +'settings_currentvalue' => 'القيمة الحالية', +'settings_Database' => 'قاعدة البيانات', +'settings_dbDatabase' => 'قاعدة البيانات', +'settings_dbDatabase_desc' => 'قاعدة البيانات', +'settings_dbDriver' => 'القرص', +'settings_dbDriver_desc' => 'القرص', +'settings_dbHostname' => 'اسم المضيف', +'settings_dbHostname_desc' => 'اسم المضيف', +'settings_dbPass' => 'كلمة السر', +'settings_dbPass_desc' => 'كلمة السر', +'settings_dbUser' => 'مستخدم', +'settings_dbUser_desc' => 'مستخدم', +'settings_dbVersion' => 'إصدار', +'settings_defaultAccessDocs' => 'مستندات الوصول الافتراضية', +'settings_defaultAccessDocs_desc' => 'مستندات الوصول الافتراضية', +'settings_defaultDocPosition' => 'الموقف الافتراضي للوثيقة', +'settings_defaultDocPosition_desc' => 'الموقف الافتراضي للوثيقة', +'settings_defaultDocPosition_val_end' => 'الموقف الافتراضي للوثيقة نهاية القيمة', +'settings_defaultDocPosition_val_start' => 'الموقف الافتراضي للوثيقة بداية القيمة', +'settings_defaultSearchMethod' => 'طريقة البحث الافتراضية', +'settings_defaultSearchMethod_desc' => 'طريقة البحث الافتراضية', +'settings_defaultSearchMethod_valdatabase' => 'طريقة البحث الافتراضية في قاعدة البيانات', +'settings_defaultSearchMethod_valfulltext' => 'طريقة البحث الافتراضية في جمل كاملة', +'settings_delete_install_folder' => 'مسح مثبت المجلد', +'settings_disableSelfEdit' => 'تعطيل التحرير الذاتي', +'settings_disableSelfEdit_desc' => 'تعطيل التحرير الذاتي', +'settings_disable_install' => 'تعطيل التثبيت', 'settings_Display' => 'اعدادات العرض', -'settings_dropFolderDir' => '', -'settings_dropFolderDir_desc' => '', +'settings_dropFolderDir' => 'dropFolderDir', +'settings_dropFolderDir_desc' => 'dropFolderDir', 'settings_Edition' => 'اعدادات التحرير', -'settings_editOnlineFileTypes' => '', -'settings_editOnlineFileTypes_desc' => '', -'settings_enable2FactorAuthentication' => '', -'settings_enable2FactorAuthentication_desc' => '', -'settings_enableAcknowledgeWorkflow' => '', -'settings_enableAcknowledgeWorkflow_desc' => '', -'settings_enableAdminReceipt' => '', -'settings_enableAdminReceipt_desc' => '', -'settings_enableAdminRevApp' => '', -'settings_enableAdminRevApp_desc' => '', -'settings_enableCalendar' => '', -'settings_enableCalendar_desc' => '', -'settings_enableClipboard' => '', -'settings_enableClipboard_desc' => '', -'settings_enableConverting' => '', -'settings_enableConverting_desc' => '', -'settings_enableDropFolderList' => '', -'settings_enableDropFolderList_desc' => '', -'settings_enableDropUpload' => '', -'settings_enableDropUpload_desc' => '', -'settings_enableDuplicateDocNames' => '', +'settings_editOnlineFileTypes' => 'تحرير أنواع الملفات على الإنترنت', +'settings_editOnlineFileTypes_desc' => 'تحرير أنواع الملفات على الإنترنت', +'settings_enable2FactorAuthentication' => 'تمكين عامل المصادقة الثنائي', +'settings_enable2FactorAuthentication_desc' => 'تمكين عامل المصادقة الثنائي', +'settings_enableAcknowledgeWorkflow' => 'تمكين سير العمل المعترف به', +'settings_enableAcknowledgeWorkflow_desc' => 'تمكين سير العمل المعترف به', +'settings_enableAdminReceipt' => 'تمكين استلام المسؤول', +'settings_enableAdminReceipt_desc' => 'تمكين استلام المسؤول', +'settings_enableAdminRevApp' => 'تمكين المسؤول من مراجعة التطبيق', +'settings_enableAdminRevApp_desc' => 'تمكين المسؤول من مراجعة التطبيق', +'settings_enableCalendar' => 'تمكين التقويم', +'settings_enableCalendar_desc' => 'تمكين التقويم', +'settings_enableClipboard' => 'تمكين الحافظة', +'settings_enableClipboard_desc' => 'تمكين الحافظة', +'settings_enableConverting' => 'تمكين التحويل', +'settings_enableConverting_desc' => 'تمكين التحويل', +'settings_enableDropFolderList' => 'تمكين إسقاط قائمة المجلدات', +'settings_enableDropFolderList_desc' => 'تمكين إسقاط قائمة المجلدات', +'settings_enableDropUpload' => 'تمكين التحميل السريع', +'settings_enableDropUpload_desc' => 'تمكين التحميل السريع', +'settings_enableDuplicateDocNames' => 'تمكين أسماء مكررة للوثيقة', 'settings_enableDuplicateDocNames_desc' => 'Allows to have duplicate document names in a folder.', -'settings_enableDuplicateSubFolderNames' => '', -'settings_enableDuplicateSubFolderNames_desc' => '', -'settings_enableEmail' => '', -'settings_enableEmail_desc' => 'Enable/disable automatic email notification', -'settings_enableFilterReceipt' => '', -'settings_enableFilterReceipt_desc' => '', -'settings_enableFolderTree' => '', -'settings_enableFolderTree_desc' => '', +'settings_enableDuplicateSubFolderNames' => 'تمكين أسماء مكررة للمجلدات الفرعية', +'settings_enableDuplicateSubFolderNames_desc' => 'تمكين أسماء مكررة للمجلدات الفرعية', +'settings_enableEmail' => 'تمكين البريد الإلكتروني', +'settings_enableEmail_desc' => 'تمكين البريد الإلكتروني', +'settings_enableFilterReceipt' => 'تمكين الاستلام حسب الفلتر', +'settings_enableFilterReceipt_desc' => 'تمكين الاستلام حسب الفلتر', +'settings_enableFolderTree' => 'تمكين شجرة المجلد', +'settings_enableFolderTree_desc' => 'تمكين شجرة المجلد', 'settings_enableFullSearch' => 'تفعيل البحث بالنص الكامل', 'settings_enableFullSearch_desc' => 'تفعيل البحث بالنص الكامل', -'settings_enableGuestAutoLogin' => '', -'settings_enableGuestAutoLogin_desc' => '', -'settings_enableGuestLogin' => '', -'settings_enableGuestLogin_desc' => '', -'settings_enableHelp' => '', -'settings_enableHelp_desc' => '', -'settings_enableLanguageSelector' => '', -'settings_enableLanguageSelector_desc' => 'Show selector for user interface language after being logged in.', -'settings_enableLargeFileUpload' => 'Enable large file upload', -'settings_enableLargeFileUpload_desc' => '', -'settings_enableMenuTasks' => '', -'settings_enableMenuTasks_desc' => '', -'settings_enableMultiUpload' => '', -'settings_enableMultiUpload_desc' => '', -'settings_enableNotificationAppRev' => '', -'settings_enableNotificationAppRev_desc' => '', -'settings_enableNotificationWorkflow' => '', -'settings_enableNotificationWorkflow_desc' => '', -'settings_enableOwnerNotification' => '', -'settings_enableOwnerNotification_desc' => '', -'settings_enableOwnerReceipt' => '', -'settings_enableOwnerReceipt_desc' => '', -'settings_enableOwnerRevApp' => '', -'settings_enableOwnerRevApp_desc' => '', -'settings_enablePasswordForgotten' => '', -'settings_enablePasswordForgotten_desc' => '', -'settings_enableReceiptReject' => '', -'settings_enableReceiptReject_desc' => '', -'settings_enableReceiptWorkflow' => '', -'settings_enableReceiptWorkflow_desc' => '', -'settings_enableRecursiveCount' => '', -'settings_enableRecursiveCount_desc' => '', +'settings_enableGuestAutoLogin' => 'تمكين تسجيل دخول ضيف تلقائي', +'settings_enableGuestAutoLogin_desc' => 'تمكين تسجيل دخول ضيف تلقائي', +'settings_enableGuestLogin' => 'تمكين دخول ضيف', +'settings_enableGuestLogin_desc' => 'تمكين دخول ضيف', +'settings_enableHelp' => 'تمكين المساعدة', +'settings_enableHelp_desc' => 'تمكين المساعدة', +'settings_enableLanguageSelector' => 'تمكين تحديد اللغة', +'settings_enableLanguageSelector_desc' => 'تمكين تحديد اللغة', +'settings_enableLargeFileUpload' => 'تمكين تحميل الملفات الكبيرة', +'settings_enableLargeFileUpload_desc' => 'تمكين تحميل الملفات الكبيرة', +'settings_enableMenuTasks' => 'تمكين مهام القائمة', +'settings_enableMenuTasks_desc' => 'تمكين مهام القائمة', +'settings_enableMultiUpload' => 'تمكين تحميل متعدد', +'settings_enableMultiUpload_desc' => 'تمكين تحميل متعدد', +'settings_enableNotificationAppRev' => 'تمكيين اشعارات لمراجعة التطبيق', +'settings_enableNotificationAppRev_desc' => 'تمكيين اشعارات لمراجعة التطبيق', +'settings_enableNotificationWorkflow' => 'تمكيين اشعار لسير العمل', +'settings_enableNotificationWorkflow_desc' => 'تمكيين اشعار لسير العمل', +'settings_enableOwnerNotification' => 'تمكين إشعار المالك', +'settings_enableOwnerNotification_desc' => 'تمكين إشعار المالك', +'settings_enableOwnerReceipt' => 'تمكين استلام المالك', +'settings_enableOwnerReceipt_desc' => 'تمكين استلام المالك', +'settings_enableOwnerRevApp' => 'تمكين المالك من مراجعة التطبيق', +'settings_enableOwnerRevApp_desc' => 'تمكين المالك من مراجعة التطبيق', +'settings_enablePasswordForgotten' => 'تمكين نسيان كلمة المرور', +'settings_enablePasswordForgotten_desc' => 'تمكين نسيان كلمة المرور', +'settings_enableReceiptReject' => 'تمكين رفض الاستلام', +'settings_enableReceiptReject_desc' => 'تمكين رفض الاستلام', +'settings_enableReceiptWorkflow' => 'تمكين استلام سير العمل', +'settings_enableReceiptWorkflow_desc' => 'تمكين استلام سير العمل', +'settings_enableRecursiveCount' => 'تمكين عدد المستندات / المجلدات العودية', +'settings_enableRecursiveCount_desc' => 'تمكين عدد المستندات / المجلدات العودية', 'settings_enableRevisionOneVoteReject' => '', 'settings_enableRevisionOneVoteReject_desc' => '', -'settings_enableRevisionOnVoteReject' => '', -'settings_enableRevisionOnVoteReject_desc' => '', -'settings_enableRevisionWorkflow' => '', -'settings_enableRevisionWorkflow_desc' => '', -'settings_enableSelfReceipt' => '', -'settings_enableSelfReceipt_desc' => '', -'settings_enableSelfRevApp' => '', -'settings_enableSelfRevApp_desc' => '', -'settings_enableSessionList' => '', -'settings_enableSessionList_desc' => '', -'settings_enableThemeSelector' => '', -'settings_enableThemeSelector_desc' => '', -'settings_enableUpdateReceipt' => '', -'settings_enableUpdateReceipt_desc' => '', -'settings_enableUpdateRevApp' => '', -'settings_enableUpdateRevApp_desc' => '', -'settings_enableUserImage' => '', -'settings_enableUserImage_desc' => '', -'settings_enableUsersView' => '', -'settings_enableUsersView_desc' => '', -'settings_enableVersionDeletion' => '', -'settings_enableVersionDeletion_desc' => '', -'settings_enableVersionModification' => '', -'settings_enableVersionModification_desc' => '', -'settings_enableWebdavReplaceDoc' => '', -'settings_enableWebdavReplaceDoc_desc' => '', -'settings_enableXsendfile' => '', -'settings_enableXsendfile_desc' => '', -'settings_encryptionKey' => '', -'settings_encryptionKey_desc' => '', +'settings_enableRevisionOnVoteReject' => 'تمكين رفض مراجعة التصويت', +'settings_enableRevisionOnVoteReject_desc' => 'تمكين رفض مراجعة التصويت', +'settings_enableRevisionWorkflow' => 'تمكين مراجعة سير العمل', +'settings_enableRevisionWorkflow_desc' => 'تمكين مراجعة سير العمل', +'settings_enableSelfReceipt' => 'تمكين الاستلام الذاتي', +'settings_enableSelfReceipt_desc' => 'تمكين الاستلام الذاتي', +'settings_enableSelfRevApp' => 'تمكيين المراجعة الذاتية للتطبيق', +'settings_enableSelfRevApp_desc' => 'تمكيين المراجعة الذاتية للتطبيق', +'settings_enableSessionList' => 'تمكين قائمة الجلسة', +'settings_enableSessionList_desc' => 'تمكين قائمة الجلسة', +'settings_enableThemeSelector' => 'تمكين سمة محددة', +'settings_enableThemeSelector_desc' => 'تمكين سمة محددة', +'settings_enableUpdateReceipt' => 'تمكين تحديث الاستلام', +'settings_enableUpdateReceipt_desc' => 'تمكين تحديث الاستلام', +'settings_enableUpdateRevApp' => 'تمكين تحديث مراجعة التطبيق', +'settings_enableUpdateRevApp_desc' => 'تمكين تحديث مراجعة التطبيق', +'settings_enableUserImage' => 'تمكين صورة المستخدم', +'settings_enableUserImage_desc' => 'تمكين صورة المستخدم', +'settings_enableUsersView' => 'تمكين واجهة المستخدم', +'settings_enableUsersView_desc' => 'تمكين واجهة المستخدم', +'settings_enableVersionDeletion' => 'تمكين حذف اصدارات مسبقة', +'settings_enableVersionDeletion_desc' => 'تمكين حذف اصدارات مسبقة', +'settings_enableVersionModification' => 'تمكين تعديل الإصدار', +'settings_enableVersionModification_desc' => 'تمكين تعديل الإصدار', +'settings_enableWebdavReplaceDoc' => 'webdav بالمستند تمكين استبدال', +'settings_enableWebdavReplaceDoc_desc' => 'webdav بالمستند تمكين استبدال', +'settings_enableXsendfile' => 'تمكين إرسال الملف', +'settings_enableXsendfile_desc' => 'تمكين إرسال الملف', +'settings_encryptionKey' => 'مفتاح التشفير', +'settings_encryptionKey_desc' => 'مفتاح التشفير', 'settings_error' => 'خطأ', -'settings_expandFolderTree' => '', -'settings_expandFolderTree_desc' => 'Expand Folder Tree', -'settings_expandFolderTree_val0' => '', -'settings_expandFolderTree_val1' => '', -'settings_expandFolderTree_val2' => '', -'settings_Extensions' => 'ﺎﻠﻤﻠﺤﻗﺎﺗ', -'settings_extraPath' => '', -'settings_extraPath_desc' => '', -'settings_firstDayOfWeek' => '', -'settings_firstDayOfWeek_desc' => '', -'settings_footNote' => '', -'settings_footNote_desc' => '', -'settings_fullSearchEngine' => '', -'settings_fullSearchEngine_desc' => '', +'settings_expandFolderTree' => 'قم بتوسيع شجرة المجلد', +'settings_expandFolderTree_desc' => 'قم بتوسيع شجرة المجلد', +'settings_expandFolderTree_val0' => 'قم بتوسيع شجرة المجلد قيمة0', +'settings_expandFolderTree_val1' => 'قم بتوسيع شجرة المجلد قيمة1', +'settings_expandFolderTree_val2' => 'قم بتوسيع شجرة المجلد قيمة2', +'settings_Extensions' => 'الملحقات', +'settings_extraPath' => 'مسار اضافي', +'settings_extraPath_desc' => 'مسار اضافي', +'settings_firstDayOfWeek' => 'اول يوم في الأسبوع', +'settings_firstDayOfWeek_desc' => 'اول يوم في الأسبوع', +'settings_footNote' => 'رابط', +'settings_footNote_desc' => 'رابط', +'settings_fullSearchEngine' => 'محرك البحث الكامل', +'settings_fullSearchEngine_desc' => 'محرك البحث الكامل', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', -'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', -'settings_guestID' => '', -'settings_guestID_desc' => '', -'settings_httpRoot' => '', -'settings_httpRoot_desc' => '', -'settings_incItemsPerPage' => '', -'settings_incItemsPerPage_desc' => '', -'settings_initialDocumentStatus' => '', -'settings_initialDocumentStatus_desc' => '', -'settings_initialDocumentStatus_draft' => '', -'settings_initialDocumentStatus_released' => '', -'settings_installADOdb' => '', -'settings_install_disabled' => '', -'settings_install_pear_package_log' => '', -'settings_install_pear_package_webdav' => '', -'settings_install_success' => '', -'settings_install_welcome_text' => '', -'settings_install_welcome_title' => '', -'settings_install_zendframework' => '', -'settings_language' => '', -'settings_language_desc' => '', -'settings_libraryFolder' => '', -'settings_libraryFolder_desc' => '', -'settings_logFileEnable' => '', -'settings_logFileEnable_desc' => '', -'settings_logFileRotation' => '', -'settings_logFileRotation_desc' => '', -'settings_loginFailure' => 'Login failure', -'settings_loginFailure_desc' => '', -'settings_luceneClassDir' => '', -'settings_luceneClassDir_desc' => '', -'settings_luceneDir' => '', -'settings_luceneDir_desc' => '', -'settings_maxDirID' => '', -'settings_maxDirID_desc' => '', -'settings_maxExecutionTime' => '', -'settings_maxExecutionTime_desc' => '', -'settings_maxItemsPerPage' => '', -'settings_maxItemsPerPage_desc' => '', -'settings_maxRecursiveCount' => '', -'settings_maxRecursiveCount_desc' => '', -'settings_maxSizeForFullText' => '', -'settings_maxSizeForFullText_desc' => '', -'settings_maxUploadSize' => '', -'settings_maxUploadSize_desc' => '', -'settings_more_settings' => '', +'settings_fullSearchEngine_valsqlitefts' => 'SQLITEFTS', +'settings_guestID' => 'معرف الضيف', +'settings_guestID_desc' => 'معرف الضيف', +'settings_httpRoot' => 'httpRoot', +'settings_httpRoot_desc' => 'httpRoot', +'settings_incItemsPerPage' => 'زيادة العناصر في الصفحة', +'settings_incItemsPerPage_desc' => 'زيادة العناصر في الصفحة', +'settings_initialDocumentStatus' => 'حالة المستند الأولي', +'settings_initialDocumentStatus_desc' => 'حالة المستند الأولي', +'settings_initialDocumentStatus_draft' => 'حالة المستند الأولي, المسودة', +'settings_initialDocumentStatus_released' => 'حالة المستند الأولي, صدر', +'settings_installADOdb' => 'تثبيت ADOdb', +'settings_install_disabled' => 'توقيف المثبت', +'settings_install_pear_package_log' => 'تثبيت سجل الحزمة', +'settings_install_pear_package_webdav' => 'تثبيت سجل الحزمة', +'settings_install_success' => 'تم التثبيت بنجاح', +'settings_install_welcome_text' => 'تثبيت نص الترحيب', +'settings_install_welcome_title' => 'تثبيت عنوان الترحيب', +'settings_install_zendframework' => 'تثبيت إطار زند', +'settings_language' => 'اللغة', +'settings_language_desc' => 'اللغة', +'settings_libraryFolder' => 'مجلد المكتبة', +'settings_libraryFolder_desc' => 'مجلد المكتبة', +'settings_logFileEnable' => 'تمكين سجل الملف', +'settings_logFileEnable_desc' => 'تمكين سجل الملف', +'settings_logFileRotation' => 'سجل ملف التناوب', +'settings_logFileRotation_desc' => 'سجل ملف التناوب', +'settings_loginFailure' => 'فشل في تسجيل الدخول', +'settings_loginFailure_desc' => 'فشل في تسجيل الدخول', +'settings_luceneClassDir' => 'luceneClassDir', +'settings_luceneClassDir_desc' => 'luceneClassDir', +'settings_luceneDir' => 'luceneDir', +'settings_luceneDir_desc' => 'luceneDir', +'settings_maxDirID' => 'maxDirID', +'settings_maxDirID_desc' => 'maxDirID', +'settings_maxExecutionTime' => 'الحد الأقصى لوقت التنفيذ', +'settings_maxExecutionTime_desc' => 'الحد الأقصى لوقت التنفيذ', +'settings_maxItemsPerPage' => 'الحد الأقصى للعناصر في كل صفحة', +'settings_maxItemsPerPage_desc' => 'الحد الأقصى للعناصر في كل صفحة', +'settings_maxRecursiveCount' => 'الحد الأقصى لتكرارية العد', +'settings_maxRecursiveCount_desc' => 'الحد الأقصى لتكرارية العد', +'settings_maxSizeForFullText' => 'الحد الأقصى لحجم النص الكامل', +'settings_maxSizeForFullText_desc' => 'الحد الأقصى لحجم النص الكامل', +'settings_maxUploadSize' => 'الحد الأقصى لتحميل الحجم', +'settings_maxUploadSize_desc' => 'الحد الأقصى لتحميل الحجم', +'settings_more_settings' => 'المزيد من الإعدادات', 'settings_noDocumentFormFields' => '', 'settings_noDocumentFormFields_desc' => '', -'settings_notfound' => '', -'settings_Notification' => '', -'settings_notwritable' => 'ﻻ ﻲﻤﻜﻧ ﺢﻔﻇ ﺎﻠﺘﻛﻮﻴﻧ ﻸﻧ ﻢﻠﻓ ﺎﻠﺘﻛﻮﻴﻧ ﻎﻳﺭ ﻕﺎﺒﻟ ﻞﻠﻜﺗﺎﺑﺓ', -'settings_no_content_dir' => '', +'settings_notfound' => 'غير موجود', +'settings_Notification' => 'اشعار', +'settings_notwritable' => 'غير قابل للكتابة', +'settings_no_content_dir' => 'no content dir', 'settings_onePageMode' => '', 'settings_onePageMode_desc' => '', -'settings_overrideMimeType' => '', -'settings_overrideMimeType_desc' => '', -'settings_partitionSize' => '', -'settings_partitionSize_desc' => '', -'settings_passwordExpiration' => 'Password expiration', -'settings_passwordExpiration_desc' => '', -'settings_passwordHistory' => '', -'settings_passwordHistory_desc' => '', -'settings_passwordStrength' => '', -'settings_passwordStrengthAlgorithm' => '', -'settings_passwordStrengthAlgorithm_desc' => '', -'settings_passwordStrengthAlgorithm_valadvanced' => '', -'settings_passwordStrengthAlgorithm_valsimple' => '', -'settings_passwordStrength_desc' => '', -'settings_pear_log' => '', -'settings_pear_webdav' => '', -'settings_perms' => '', +'settings_overrideMimeType' => 'تجاوز نوع الملف', +'settings_overrideMimeType_desc' => 'تجاوز نوع الملف', +'settings_partitionSize' => 'حجم القسم', +'settings_partitionSize_desc' => 'حجم القسم', +'settings_passwordExpiration' => 'انتهاء صلاحية كلمة المرور', +'settings_passwordExpiration_desc' => 'انتهاء صلاحية كلمة المرور', +'settings_passwordHistory' => 'تاريخ كلمة السر', +'settings_passwordHistory_desc' => 'تاريخ كلمة السر', +'settings_passwordStrength' => 'قوة كلمة السر', +'settings_passwordStrengthAlgorithm' => 'قوة كلمة السر الخوارزمية', +'settings_passwordStrengthAlgorithm_desc' => 'قوة كلمة السر الخوارزمية', +'settings_passwordStrengthAlgorithm_valadvanced' => 'قوة كلمة السر الخوارزمية, القيمة متطورة', +'settings_passwordStrengthAlgorithm_valsimple' => 'قوة كلمة السر الخوارزمية, القيمة عادية', +'settings_passwordStrength_desc' => 'قوة كلمة السر', +'settings_pear_log' => 'سجل', +'settings_pear_webdav' => 'webdav', +'settings_perms' => 'perms', 'settings_php_dbDriver' => 'PHP extension : php_\'see current value\'', 'settings_php_gd2' => 'PHP extension : php_gd2', 'settings_php_mbstring' => 'PHP extension : php_mbstring', -'settings_php_version' => '', -'settings_presetExpirationDate' => '', -'settings_presetExpirationDate_desc' => '', -'settings_previewWidthDetail' => '', -'settings_previewWidthDetail_desc' => '', -'settings_previewWidthDropFolderList' => '', -'settings_previewWidthDropFolderList_desc' => '', -'settings_previewWidthList' => '', -'settings_previewWidthList_desc' => '', -'settings_previewWidthMenuList' => '', -'settings_previewWidthMenuList_desc' => '', -'settings_printDisclaimer' => '', -'settings_printDisclaimer_desc' => '', -'settings_quota' => '', -'settings_quota_desc' => '', -'settings_removeFromDropFolder' => '', -'settings_removeFromDropFolder_desc' => '', -'settings_repositoryUrl' => '', -'settings_repositoryUrl_desc' => '', -'settings_restricted' => '', -'settings_restricted_desc' => '', -'settings_rootDir' => '', -'settings_rootDir_desc' => '', -'settings_rootFolderID' => '', -'settings_rootFolderID_desc' => '', -'settings_SaveError' => '', -'settings_Server' => '', -'settings_showFullPreview' => '', -'settings_showFullPreview_desc' => '', -'settings_showMissingTranslations' => '', -'settings_showMissingTranslations_desc' => '', -'settings_showSingleSearchHit' => '', -'settings_showSingleSearchHit_desc' => '', +'settings_php_version' => 'php version', +'settings_presetExpirationDate' => 'تاريخ انتهاء الصلاحية المسبقة', +'settings_presetExpirationDate_desc' => 'تاريخ انتهاء الصلاحية المسبقة', +'settings_previewWidthDetail' => 'عرض معاينة الصور (التفاصيل)', +'settings_previewWidthDetail_desc' => 'عرض معاينة الصور (التفاصيل)', +'settings_previewWidthDropFolderList' => 'عرض معاينة الصور (إسقاط قائمة المجلدات)', +'settings_previewWidthDropFolderList_desc' => 'عرض معاينة الصور (إسقاط قائمة المجلدات):', +'settings_previewWidthList' => 'عرض معاينة الصور (القائمة)', +'settings_previewWidthList_desc' => 'عرض معاينة الصور (القائمة)', +'settings_previewWidthMenuList' => 'عرض معاينة الصور (جدول القائمة)', +'settings_previewWidthMenuList_desc' => ':عرض معاينة الصور (جدول القائمة)', +'settings_printDisclaimer' => 'طباعة تنويه', +'settings_printDisclaimer_desc' => 'طباعة تنويه', +'settings_quota' => 'الحد الاقصى', +'settings_quota_desc' => 'الحد الاقصى', +'settings_removeFromDropFolder' => 'إزالة من مجلد الإسقاط', +'settings_removeFromDropFolder_desc' => 'إزالة من مجلد الإسقاط', +'settings_repositoryUrl' => 'مستودع الرابط', +'settings_repositoryUrl_desc' => 'مستودع الرابط', +'settings_restricted' => 'محدد', +'settings_restricted_desc' => 'محدد', +'settings_rootDir' => 'rootDir', +'settings_rootDir_desc' => 'rootDir', +'settings_rootFolderID' => 'rootFolderID', +'settings_rootFolderID_desc' => 'rootFolderID', +'settings_SaveError' => 'خطأ في الحفظ', +'settings_Server' => 'الخادم', +'settings_showFullPreview' => 'عرض معاينة كاملة', +'settings_showFullPreview_desc' => 'عرض معاينة كاملة', +'settings_showMissingTranslations' => 'اظهار الترجمات المفقودة', +'settings_showMissingTranslations_desc' => 'اظهار الترجمات المفقودة', +'settings_showSingleSearchHit' => 'عرض بحث مفرد', +'settings_showSingleSearchHit_desc' => 'عرض بحث مفرد', 'settings_Site' => 'الموقع', -'settings_siteDefaultPage' => '', -'settings_siteDefaultPage_desc' => '', +'settings_siteDefaultPage' => 'موقع الصفحة الافتراضية', +'settings_siteDefaultPage_desc' => 'موقع الصفحة الافتراضية', 'settings_siteName' => 'اسم الموقع', -'settings_siteName_desc' => '', +'settings_siteName_desc' => 'اسم الموقع', 'settings_SMTP' => 'SMTP Server settings', -'settings_smtpPassword' => '', -'settings_smtpPassword_desc' => '', +'settings_smtpPassword' => 'smtp Password', +'settings_smtpPassword_desc' => 'smtp Password', 'settings_smtpPort' => 'SMTP Server port', -'settings_smtpPort_desc' => '', -'settings_smtpSendFrom' => '', -'settings_smtpSendFrom_desc' => '', -'settings_smtpSendTestMail' => '', -'settings_smtpSendTestMail_desc' => '', -'settings_smtpServer' => '', -'settings_smtpServer_desc' => '', -'settings_smtpUser' => '', -'settings_smtpUser_desc' => '', -'settings_sortFoldersDefault' => '', -'settings_sortFoldersDefault_desc' => '', -'settings_sortFoldersDefault_val_name' => '', -'settings_sortFoldersDefault_val_sequence' => '', -'settings_sortFoldersDefault_val_unsorted' => '', +'settings_smtpPort_desc' => 'SMTP Server port', +'settings_smtpSendFrom' => 'smtp Send From', +'settings_smtpSendFrom_desc' => 'smtp Send From', +'settings_smtpSendTestMail' => 'smtp Send Test Mail', +'settings_smtpSendTestMail_desc' => 'smtp Send Test Mail', +'settings_smtpServer' => 'smtp Server', +'settings_smtpServer_desc' => 'smtp Server', +'settings_smtpUser' => 'smtp User', +'settings_smtpUser_desc' => 'smtp User', +'settings_sortFoldersDefault' => 'فرز المجلدات الافتراضية', +'settings_sortFoldersDefault_desc' => 'فرز المجلدات الافتراضية', +'settings_sortFoldersDefault_val_name' => 'فرز المجلدات الافتراضية, قيمة الإسم', +'settings_sortFoldersDefault_val_sequence' => 'فرز المجلدات الافتراضية, قيمة التراتبية', +'settings_sortFoldersDefault_val_unsorted' => 'فرز المجلدات الافتراضية, غير مرتب', 'settings_sortUsersInList' => 'ترتيب المستخدمين في القائمة', -'settings_sortUsersInList_desc' => '', +'settings_sortUsersInList_desc' => 'ترتيب المستخدمين في القائمة', 'settings_sortUsersInList_val_fullname' => 'ترتيب بالاسم الكامل', 'settings_sortUsersInList_val_login' => 'ترتيب بواسطة الدخول', -'settings_stagingDir' => '', -'settings_stagingDir_desc' => '', -'settings_start_install' => '', -'settings_stopWordsFile' => '', -'settings_stopWordsFile_desc' => '', -'settings_strictFormCheck' => '', -'settings_strictFormCheck_desc' => '', -'settings_suggestionvalue' => '', +'settings_stagingDir' => 'staging Dir', +'settings_stagingDir_desc' => 'staging Dir', +'settings_start_install' => 'بدء التثبيت', +'settings_stopWordsFile' => 'مسار لإيقاف ملف الكلمات', +'settings_stopWordsFile_desc' => 'مسار لإيقاف ملف الكلمات', +'settings_strictFormCheck' => 'فحص نموذج صارم', +'settings_strictFormCheck_desc' => 'فحص نموذج صارم', +'settings_suggestionvalue' => 'قيمة الاقتراح', 'settings_System' => 'نظام', -'settings_tasksInMenu' => '', -'settings_tasksInMenu_approval' => '', -'settings_tasksInMenu_desc' => '', -'settings_tasksInMenu_needscorrection' => '', -'settings_tasksInMenu_receipt' => '', -'settings_tasksInMenu_review' => '', -'settings_tasksInMenu_revision' => '', -'settings_tasksInMenu_workflow' => '', +'settings_tasksInMenu' => 'قائمة المهام', +'settings_tasksInMenu_approval' => 'موافقة قائمة المهام', +'settings_tasksInMenu_desc' => 'قائمة المهام', +'settings_tasksInMenu_needscorrection' => 'قائمة المهام تحتاج إلى تصحيح', +'settings_tasksInMenu_receipt' => 'مستلم قائمة المهام', +'settings_tasksInMenu_review' => 'مراجعة قائمة المهام', +'settings_tasksInMenu_revision' => 'مراجعة قائمة المهام', +'settings_tasksInMenu_workflow' => 'سير عمل قائمة المهام', 'settings_theme' => 'الشكل الافتراضي', -'settings_theme_desc' => '', -'settings_titleDisplayHack' => '', -'settings_titleDisplayHack_desc' => '', -'settings_undelUserIds' => '', -'settings_undelUserIds_desc' => '', -'settings_updateDatabase' => '', +'settings_theme_desc' => 'الشكل الافتراضي', +'settings_titleDisplayHack' => 'عرض العنوان', +'settings_titleDisplayHack_desc' => 'عرض العنوان', +'settings_undelUserIds' => 'undelUserIds', +'settings_undelUserIds_desc' => 'undelUserIds', +'settings_updateDatabase' => 'تطوير قاعدة البيانات', 'settings_updateNotifyTime' => 'تحديث وقت التنبيه', -'settings_updateNotifyTime_desc' => '', -'settings_upgrade_php' => '', +'settings_updateNotifyTime_desc' => 'تحديث وقت التنبيه', +'settings_upgrade_php' => 'تطوير php', 'settings_versioningFileName' => 'اسم ملف الاصدار', -'settings_versioningFileName_desc' => '', -'settings_versiontolow' => '', +'settings_versioningFileName_desc' => 'اسم ملف الاصدار', +'settings_versiontolow' => 'نسخة منخفضة الجودة', 'settings_viewOnlineFileTypes' => 'الملفات التى يمكن عرضها اونلاين', -'settings_viewOnlineFileTypes_desc' => '', -'settings_webdav' => '', +'settings_viewOnlineFileTypes_desc' => 'الملفات التى يمكن عرضها اونلاين', +'settings_webdav' => 'webdav', 'settings_workflowMode' => 'حالة مسار العمل', -'settings_workflowMode_desc' => '', +'settings_workflowMode_desc' => 'حالة مسار العمل', 'settings_workflowMode_valadvanced' => 'متقدم', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'تقليدي', -'settings_workflowMode_valtraditional_only_approval' => '', +'settings_workflowMode_valtraditional_only_approval' => 'تقليدي', 'settings_zendframework' => 'Zend Framework', 'set_expiry' => 'تحديد انتهاء الصلاحية', 'set_owner' => 'تحديد المالك', 'set_owner_error' => 'خطأ في تحديد المالك', 'set_password' => 'تحديد كلمة السر', 'set_workflow' => 'تحديد مسار العمل', -'show_extension_changelog' => '', -'show_extension_version_list' => 'ﺎﻀﻫﺍﺭ ﻕﺎﺌﻣﺓ ﺍﻼﺻﺩﺍﺭﺎﺗ', +'show_extension_changelog' => 'تغيير سجل', +'show_extension_version_list' => 'لائحة الإصدارات', 'signed_in_as' => 'تسجيل الدخول بإسم', 'sign_in' => 'تسجيل الدخول', 'sign_out' => 'تسجيل الخروج', 'sign_out_user' => 'تسجيل خروج مستخدم', +'site_brand' => 'مجلس النواب اللبناني', 'sk_SK' => 'السلوفاكية', -'sort_by_date' => '', -'sort_by_name' => '', -'sort_by_sequence' => '', +'sort_by_date' => 'رتب حسب التاريخ', +'sort_by_name' => 'رتب حسب الإسم', +'sort_by_sequence' => 'رتب حسب التراتبية', 'space_used_on_data_folder' => 'المساحة المستخدمة لمجلد البيانات', -'splash_added_to_clipboard' => 'ﺖﻣ ﺎﻠﻨﺴﺧ ﻒﻳ ﺎﻠﺣﺎﻔﻇﺓ', -'splash_add_access' => '', -'splash_add_attribute' => '', -'splash_add_group' => '', -'splash_add_group_member' => '', -'splash_add_role' => '', -'splash_add_to_transmittal' => '', -'splash_add_transmittal' => '', -'splash_add_user' => '', -'splash_cleared_cache' => '', -'splash_cleared_clipboard' => '', -'splash_delete_access' => '', -'splash_document_added' => '', -'splash_document_checkedout' => '', -'splash_document_edited' => '', -'splash_document_indexed' => '', +'splash_added_to_clipboard' => 'تم النسخ في الحافظة', +'splash_add_access' => 'دفقة إضافة الوصول', +'splash_add_attribute' => 'اضافة سمة', +'splash_add_group' => 'اضافة مجموعة', +'splash_add_group_member' => 'اضافة مستخدم الى المجموعة', +'splash_add_role' => 'اضافة دور', +'splash_add_to_transmittal' => 'اضافة إلى الإحالة', +'splash_add_transmittal' => 'إضافة إحالة', +'splash_add_user' => 'اضافة مستخدم', +'splash_cleared_cache' => 'مسح ذاكرة التخزين المؤقت', +'splash_cleared_clipboard' => 'مسح الحافظة', +'splash_delete_access' => 'حذف الوصول', +'splash_document_added' => 'الوثيقة المضافة', +'splash_document_checkedout' => 'تم سحب المستند', +'splash_document_edited' => 'تم تحرير المستند', +'splash_document_indexed' => 'تم فهرسة المستند', 'splash_document_locked' => 'تم قفل المستند', 'splash_document_unlocked' => 'تم الغاء قفل المستند', -'splash_edit_access' => '', -'splash_edit_attribute' => '', -'splash_edit_event' => '', -'splash_edit_group' => '', -'splash_edit_role' => '', -'splash_edit_task' => '', +'splash_edit_access' => 'تحرير الدخول', +'splash_edit_attribute' => 'تحرير السمة', +'splash_edit_event' => 'تحرير الحدث', +'splash_edit_group' => 'تحرير المجموعة', +'splash_edit_role' => 'تحرير الدور', +'splash_edit_task' => 'تحرير المهمة', 'splash_edit_transmittal' => '', -'splash_edit_user' => '', -'splash_error_add_to_transmittal' => '', -'splash_error_rm_download_link' => '', -'splash_error_send_download_link' => '', -'splash_extension_getlist' => '', -'splash_extension_import' => '', -'splash_extension_refresh' => '', -'splash_extension_upload' => '', -'splash_folder_edited' => '', -'splash_importfs' => '', -'splash_inherit_access' => '', -'splash_invalid_folder_id' => '', -'splash_invalid_searchterm' => '', -'splash_link_document' => '', -'splash_moved_clipboard' => '', -'splash_move_document' => '', -'splash_move_folder' => '', -'splash_notinherit_access' => '', -'splash_receipt_update_success' => '', -'splash_removed_from_clipboard' => '', -'splash_rm_attribute' => '', -'splash_rm_attr_value' => '', +'splash_edit_user' => 'تحرير المستخدم', +'splash_error_add_to_transmittal' => 'خطأ الإضافة إلى الإحالة', +'splash_error_rm_download_link' => 'خطأ في إزالة رابط التنزيل', +'splash_error_send_download_link' => 'خطأ في إرسال رابط التنزيل', +'splash_extension_getlist' => 'قائمة التمديد', +'splash_extension_import' => 'استيراد', +'splash_extension_refresh' => 'تحديث', +'splash_extension_upload' => 'تحميل', +'splash_folder_edited' => 'تحرير مجلد', +'splash_importfs' => 'استيراد', +'splash_inherit_access' => 'يرث الوصول', +'splash_invalid_folder_id' => 'معرف المجلد غير صالح', +'splash_invalid_searchterm' => 'بحث غير صالح', +'splash_link_document' => 'رابط المستند', +'splash_moved_clipboard' => 'انتقلت الحافظة', +'splash_move_document' => 'نقل المستند', +'splash_move_folder' => 'نقل الملف', +'splash_notinherit_access' => 'لا يرث الوصول', +'splash_receipt_update_success' => 'استلام التحديث بنجاح', +'splash_removed_from_clipboard' => 'ازيل من الحافظة', +'splash_rm_attribute' => 'إزالة السمة', +'splash_rm_attr_value' => 'إزالة سمة القيمة', 'splash_rm_document' => 'تم حذف المستند', -'splash_rm_download_link' => '', +'splash_rm_download_link' => 'تم حذف رابط التنزيل', 'splash_rm_folder' => 'تم حذف المجلد', -'splash_rm_group' => '', -'splash_rm_group_member' => '', -'splash_rm_role' => '', -'splash_rm_transmittal' => '', -'splash_rm_user' => '', -'splash_rm_user_processes' => '', -'splash_rm_workflow' => '', -'splash_rm_workflow_action' => '', -'splash_rm_workflow_state' => '', -'splash_saved_file' => '', -'splash_save_user_data' => '', -'splash_send_download_link' => '', -'splash_send_login_data' => '', -'splash_setowner' => '', -'splash_settings_saved' => '', -'splash_set_default_access' => '', -'splash_substituted_user' => '', -'splash_switched_back_user' => '', -'splash_toogle_group_manager' => '', -'splash_transfer_content' => '', -'splash_transfer_document' => '', -'splash_transfer_objects' => '', -'splash_trigger_workflow' => '', -'state_and_next_state' => '', -'statistic' => '', +'splash_rm_group' => 'تم حذف المجموعة', +'splash_rm_group_member' => 'تم حذف مستخدم من المجموعة', +'splash_rm_role' => 'تم حذف دور', +'splash_rm_transmittal' => 'تم حذف إحالة', +'splash_rm_user' => 'تم حذف مستخدم', +'splash_rm_user_processes' => 'تم حذف عملية مستخدم', +'splash_rm_workflow' => 'تم حذف سير عمل', +'splash_rm_workflow_action' => 'تم حذف عمل سير العمل', +'splash_rm_workflow_state' => 'تم حذف حالة سير العمل', +'splash_saved_file' => 'ملف محفظ', +'splash_save_user_data' => 'حفظ بيانات المستخدم', +'splash_send_download_link' => 'ارسال رابط التنزيل', +'splash_send_login_data' => 'ارسل بيانات تسجيل الدخول', +'splash_setowner' => 'تحديد المدير', +'splash_settings_saved' => 'تم حفظ الإعدادات', +'splash_set_default_access' => 'حدد الدخول الإفتراضي', +'splash_substituted_user' => 'مستخدم احتياطي', +'splash_switched_back_user' => 'تحويل الى مستخدم آخر', +'splash_toogle_group_manager' => 'تحديد مدير المجموعة', +'splash_transfer_content' => 'نقل المحتوى', +'splash_transfer_document' => 'نقل المستند', +'splash_transfer_objects' => 'نقل الأشياء', +'splash_trigger_workflow' => 'تفعيل سير العمل', +'state_and_next_state' => 'الحالة الحالية والحالة المقبلة', +'statistic' => 'إحصائيات', 'status' => 'الحالة', 'status_approval_rejected' => 'مسودة مرفوضة', 'status_approved' => 'تمت الموافقة', 'status_approver_removed' => 'تم ازالة موافق من العملية', -'status_needs_correction' => '', +'status_needs_correction' => 'الوضع يحتاج إلى تصحيح', 'status_not_approved' => 'لم تتم الموافقة بعد', -'status_not_receipted' => '', +'status_not_receipted' => 'الوضع غير مستلم', 'status_not_reviewed' => 'لم تتم مراجعته بعد', -'status_not_revised' => '', -'status_receipted' => '', -'status_receipt_rejected' => '', -'status_recipient_removed' => '', +'status_not_revised' => 'لم تتم مراجعته بعد', +'status_receipted' => 'تم استلامه', +'status_receipt_rejected' => 'تم رفض الإستلام', +'status_recipient_removed' => 'تم ازالة استلام الحالة', 'status_reviewed' => 'تمت المراجعة', 'status_reviewer_rejected' => 'مسودة مرفوضة', 'status_reviewer_removed' => 'تم ازالة مراجع من العملية', -'status_revised' => '', -'status_revision_rejected' => '', -'status_revision_sleeping' => '', -'status_revisor_removed' => '', +'status_revised' => 'تم مراجعة الحالة', +'status_revision_rejected' => 'تم رفض مراجعة الحالة', +'status_revision_sleeping' => 'مراجعة الوضع في حالة النوم', +'status_revisor_removed' => 'تم ازالة حالة المراجع', 'status_unknown' => 'مجهول', 'storage_size' => 'حجم التخزين', -'subfolder_duplicate_name' => '', -'submit_2_fact_auth' => '', +'subfolder_duplicate_name' => 'اسم مجلد فرعي مكرر', +'submit_2_fact_auth' => 'قدم ثنائي عامل التوثيق', 'submit_approval' => 'ادخال موافقة', 'submit_login' => 'تسجيل الدخول', 'submit_password' => 'تحديد كلمة سر جديدة', 'submit_password_forgotten' => 'بدء العملية', -'submit_receipt' => '', +'submit_receipt' => 'تقديم إيصال', 'submit_review' => 'بدأ المراجعة', -'submit_revision' => '', +'submit_revision' => 'تقديم مراجعة', 'submit_userinfo' => 'ادخال بيانات', -'subsribe_timelinefeed' => '', -'substitute_to_user' => '', +'subsribe_timelinefeed' => 'تغذية الجدول الزمني', +'substitute_to_user' => 'بديلا للمستخدم', 'substitute_user' => 'استبدال المستخدم', -'success_add_aro' => '', -'success_add_permission' => '', -'success_remove_permission' => '', -'success_toogle_permission' => '', +'success_add_aro' => 'نجاح إضافة الموالية', +'success_add_permission' => 'إذن إضافة النجاح', +'success_remove_permission' => 'اذن ازالة النجاح', +'success_toogle_permission' => 'اذن تفعيل النجاح', 'sunday' => 'الأحد', 'sunday_abbr' => 'ح', 'sv_SE' => 'السويدية', 'switched_to' => 'تحويل الى', -'takeOverAttributeValue' => '', -'takeOverGrpApprover' => '', -'takeOverGrpReviewer' => '', -'takeOverIndApprover' => '', -'takeOverIndReviewer' => '', -'tasks' => '', -'task_description' => '', -'task_disabled' => '', -'task_frequency' => '', -'task_last_run' => '', -'task_name' => '', -'task_next_run' => '', -'temp_jscode' => '', -'testmail_body' => '', -'testmail_subject' => '', +'takeOverAttributeValue' => 'اخذ قيمة السمة', +'takeOverGrpApprover' => 'اخذ موافقة المجموعة', +'takeOverGrpApprovers' => '', +'takeOverGrpReviewer' => 'اخذ مراجع المجموعة', +'takeOverGrpReviewers' => '', +'takeOverIndApprover' => 'اخذ فهرسة المجموعة', +'takeOverIndApprovers' => '', +'takeOverIndReviewer' => 'اخذ فهرسة المراجع', +'takeOverIndReviewers' => '', +'tasks' => 'مهمات', +'task_description' => 'تفصيل المهام', +'task_disabled' => 'تم توقيف المهمة', +'task_frequency' => 'تردد المهمة', +'task_last_run' => 'مهمة المدى الماضي', +'task_name' => 'اسم المهمة', +'task_next_run' => 'مدى المهمة القادمة', +'temp_jscode' => 'temp jscode', +'testmail_body' => 'محتوى البريد الإلكتروني التجريبي', +'testmail_subject' => 'موضوع البريد الإلكتروني التجريبي', 'theme' => 'شكل', 'thursday' => 'الخميس', 'thursday_abbr' => 'خ', -'timeline' => 'ﺎﻠﺨﻃ ﺎﻟﺰﻤﻨﻳ', -'timeline_add_file' => 'ﻡﺮﻔﻗ ﺝﺪﻳﺩ', -'timeline_add_version' => '', -'timeline_full_add_file' => '', -'timeline_full_add_version' => '', -'timeline_full_scheduled_revision' => '', -'timeline_full_status_change' => '', -'timeline_scheduled_revision' => '', -'timeline_selected_item' => '', -'timeline_skip_add_file' => '', -'timeline_skip_scheduled_revision' => '', -'timeline_skip_status_change_-1' => 'ﻡﺮﻓﻮﺿﺓ', -'timeline_skip_status_change_-3' => 'ﻢﻨﺘﻬﻳﺓ', -'timeline_skip_status_change_0' => '', -'timeline_skip_status_change_1' => '', -'timeline_skip_status_change_2' => '', -'timeline_skip_status_change_3' => '', -'timeline_skip_status_change_4' => '', -'timeline_skip_status_change_5' => '', -'timeline_status_change' => 'ﺖﻐﻳﺭ ﺎﻠﺣﺎﻟﺓ ﻢﻋ ﺎﻟﺰﻤﻧ', +'timeline' => 'الخط الزمني', +'timeline_add_file' => 'أضف ملف', +'timeline_add_version' => 'أضف اصدار', +'timeline_full_add_file' => 'أضف ملف كامل', +'timeline_full_add_version' => 'أضف اصدار كامل', +'timeline_full_scheduled_revision' => 'تحديد مراجعة كاملة في التاريخ', +'timeline_full_status_change' => 'تغيير كامل للحالة', +'timeline_scheduled_revision' => 'مراجعة في التاريخ', +'timeline_selected_item' => 'اشياء محددة', +'timeline_skip_add_file' => 'تخطى وأضف ملف', +'timeline_skip_scheduled_revision' => 'تخطي المراجعة المحددة في التاريخ', +'timeline_skip_status_change_-1' => 'تخطي تغيير الحالة -1', +'timeline_skip_status_change_-3' => 'تخطي تغيير الحالة -3', +'timeline_skip_status_change_0' => 'تخطي تغيير الحالة 0', +'timeline_skip_status_change_1' => 'تخطي تغيير الحالة 1', +'timeline_skip_status_change_2' => 'تخطي تغيير الحالة 2', +'timeline_skip_status_change_3' => 'تخطي تغيير الحالة 3', +'timeline_skip_status_change_4' => 'تخطي تغيير الحالة 4', +'timeline_skip_status_change_5' => 'تخطي تغيير الحالة 5', +'timeline_status_change' => 'تغير الحالة', 'to' => 'الى', 'toggle_manager' => 'رجح مدير', -'toggle_qrcode' => '', -'to_before_from' => '', -'transfer_content' => '', -'transfer_document' => 'ﺕﺮﺠﻣ ﺎﻠﻤﻠﻓ', -'transfer_no_read_access' => '', -'transfer_no_write_access' => '', -'transfer_objects' => '', -'transfer_objects_to_user' => '', -'transfer_to_user' => '', +'toggle_qrcode' => 'toggle toggle', +'to_before_from' => 'إلى قبل من', +'transfer_content' => 'تحويل المحتوى', +'transfer_document' => 'تحويل مستند', +'transfer_no_read_access' => 'تحويل بلا دخول للقراءة', +'transfer_no_write_access' => 'تحويل بلا دخول للكتابة', +'transfer_objects' => 'تحويل أشياء', +'transfer_objects_to_user' => 'تحويل شيء إلى مستخدم', +'transfer_to_user' => 'تحويل إلى مستخدم', 'transition_triggered_email' => 'تم تحريك انتقال مسار العمل', 'transition_triggered_email_body' => 'تم تحريك انتقال مسار العمل المستند: [name] @@ -1710,22 +1720,22 @@ Parent folder: [folder_path] المستخدم: [username] URL: [url]', 'transition_triggered_email_subject' => '[sitename]: [name] - تم تحريك انتقال مسار العمل', -'transmittal' => '', -'transmittalitem_removed' => '', -'transmittalitem_updated' => '', -'transmittal_comment' => '', -'transmittal_name' => '', -'transmittal_size' => '', -'tree_loading' => 'ﻱﺮﺟﻯ ﺍﻼﻨﺘﻇﺍﺭ، ﺢﺗﻯ ﻲﺘﻣ ﻉﺮﺿ ﻕﺎﺌﻣﺓ ﺎﻠﻤﻠﻓﺎﺗ ...', +'transmittal' => 'الإحالة', +'transmittalitem_removed' => 'تم إزالة الإحالة', +'transmittalitem_updated' => 'تم تحديث الإحالة', +'transmittal_comment' => 'تعليق الإحالة', +'transmittal_name' => 'اسم الإحالة', +'transmittal_size' => 'حجم الإحالة', +'tree_loading' => 'تحميل الشجرة', 'trigger_workflow' => 'مسار العمل', -'tr_TR' => 'ﺕﺮﻜﻳﺓ', +'tr_TR' => 'التركية', 'tuesday' => 'الثلاثاء', 'tuesday_abbr' => 'ث', -'type_of_hook' => '', +'type_of_hook' => 'نوع المسار', 'type_to_search' => 'اكتب لتبحث', 'uk_UA' => 'ﺍﻮﻛﺭﺎﻨﻳ', 'under_folder' => 'في المجلد', -'unknown_attrdef' => '', +'unknown_attrdef' => 'تعريف سمة غير معروفة', 'unknown_command' => 'لم يتم التعرف على الأمر.', 'unknown_document_category' => 'قسم مجهول', 'unknown_group' => 'معرف قسم مجهول', @@ -1734,8 +1744,8 @@ URL: [url]', 'unknown_owner' => 'معرف مالك مجهول', 'unknown_user' => 'معرف مستخدم مجهول', 'unlinked_content' => 'محتوى غير مربوط', -'unlinked_documents' => '', -'unlinked_folders' => '', +'unlinked_documents' => 'مستندات غير مربوطة', +'unlinked_folders' => 'مجلدات غير مربوطة', 'unlinking_objects' => 'محتوى غير مربوط', 'unlock_cause_access_mode_all' => 'يمكنك تحديثه لانك تملك الصلاحيات. سيتم ازالة الحماية تلقائية', 'unlock_cause_locking_user' => 'يمكنك تحديثه لانك من قمت بحمايته. سيتم ازالة الحماية تلقائية.', @@ -1746,38 +1756,38 @@ URL: [url]', 'update_fulltext_index' => 'تحديث فهرس النص الكامل', 'update_info' => 'تحديث المعلومات', 'update_locked_msg' => 'هذا المستند محمي من التعديل.', -'update_recipients' => '', +'update_recipients' => 'تطوير المستلم', 'update_reviewers' => 'تحيث قائمة المراجعين', -'update_revisors' => '', -'update_transmittalitem' => '', +'update_revisors' => 'تحديث المراجعين', +'update_transmittalitem' => 'تحديث الإحالة', 'uploaded_by' => 'تم الرفع بواسطة', 'uploading_failed' => 'عملية رفع واحد من ملفاتك فشلت . من فضلك قم بالتأكد من اقصى ملف يمكن تحميله', 'uploading_maxsize' => 'الملف المرفوع يتخطى حجم الملف القياسي المسموح', 'uploading_zerosize' => 'تحميل ملف فارغ. عملية التحميل الغيت', 'used_discspace' => 'المساحة المستخدمة', 'user' => 'مستخدم', -'userid_groupid' => '', +'userid_groupid' => 'هوية المجموعة', 'users' => 'مستخدمين', -'users_and_groups' => '', -'users_done_work' => '', +'users_and_groups' => 'مستخدمين ومجموعات', +'users_done_work' => 'المستخدمين انجزو العمل', 'user_exists' => 'المستخدم موجود بالفعل.', -'user_group' => '', +'user_group' => 'مستخدممجموعة', 'user_group_management' => 'إدارة المستخدمين/المجموعات', 'user_image' => 'صورة', 'user_info' => 'بيانات المستخدمين', -'user_list' => 'قائمة بالمستخدمين', -'user_login' => 'اسم المستخدم', +'user_list' => 'قائمة المستخدمين', +'user_login' => 'الإسم', 'user_management' => 'إدارة المستخدمين', -'user_name' => 'الاسم بالكامل', -'use_comment_of_document' => 'ﺎﺴﺘﺧﺪﻣ ﺎﻠﺘﻌﻠﻴﻗﺎﺗ ﻞﻟﻮﺜﻴﻗﺓ', +'user_name' => 'الاسم المستعار', +'use_comment_of_document' => 'استخدم التعليقات للوثيقة', 'use_default_categories' => 'استخدم اقسام سابقة التعريف', 'use_default_keywords' => 'استخدام كلمات بحثية معدة مسبقا', -'valid_till' => '', +'valid_till' => 'صالح ل', 'version' => 'اصدار', 'versioning_file_creation' => 'انشاء ملف الاصدارات', 'versioning_file_creation_warning' => 'من خلال تلك العملية يمكنك انشاء ملف يحتوى معلومات الاصدار لمجمل مجلد النظام. بعد الانشاء كل ملف سيتم حفظه داخل المجلد الخاص به', 'versioning_info' => 'معلومات الاصدار', -'versiontolow' => '', +'versiontolow' => 'الإصدار خفيف الجودة', 'version_comment' => '', 'version_deleted_email' => 'تم مسح الاصدار', 'version_deleted_email_body' => 'تم مسح الاصدار @@ -1796,32 +1806,32 @@ URL: [url]', 'weeks' => 'اسابيع', 'week_view' => 'عرض الاسبوع', 'workflow' => 'مسار عمل', -'workflows_involded' => '', +'workflows_involded' => 'اشراك سير العمل', 'workflow_actions_management' => 'ادارة اجراءات مسار العمل', 'workflow_action_in_use' => 'هذا الاجراء مستخدم حاليا في مسار عمل', 'workflow_action_name' => 'اسم', 'workflow_editor' => 'محرر مسارات العمل', 'workflow_group_summary' => 'ملخص المجموعة', -'workflow_has_cycle' => '', -'workflow_initstate' => 'الحالة الابتدائية', +'workflow_has_cycle' => 'لدى سير العمل دورة', +'workflow_initstate' => 'الحالة الأولية', 'workflow_in_use' => 'مسار العمل هذا مستخدم حاليا لمستندات', -'workflow_layoutdata_saved' => '', +'workflow_layoutdata_saved' => 'تم حفظ بيانات تخطيط سير العمل', 'workflow_management' => 'ادارة مسار العمل', 'workflow_name' => 'اسم', -'workflow_no_doc_rejected_state' => '', -'workflow_no_doc_released_state' => '', -'workflow_no_initial_state' => '', +'workflow_no_doc_rejected_state' => 'حالة الوثيقة مرفوضة', +'workflow_no_doc_released_state' => 'حالة الوثيقة مرفوضة', +'workflow_no_initial_state' => 'لا يوجد حالة بدائية في سير العمل', 'workflow_no_states' => 'يجب تحديد حالات مسار العمل قبل تحديد مسار العمل.', -'workflow_save_layout' => '', -'workflow_state' => '', +'workflow_save_layout' => 'حفظ تخطيط سير العمل', +'workflow_state' => 'حالة سير العمل', 'workflow_states_management' => 'ادارة حالات مسار العمل', 'workflow_state_docstatus' => 'حالة المستند', 'workflow_state_in_use' => 'هذه الحالة مستخدمة من قبل مسار عمل', 'workflow_state_name' => 'اسم', 'workflow_summary' => 'ملخص مسار العمل', -'workflow_transition_without_user_group' => '', +'workflow_transition_without_user_group' => 'تحويل سير العمل بدون استخدام مستخدم من المجموعة', 'workflow_user_summary' => 'ملخص المستخدم', -'x_more_objects' => 'ﺎﻟﺮﻘﻣ', +'x_more_objects' => 'اشياء أكثر', 'year_view' => 'عرض السنة', 'yes' => 'نعم', 'zh_CN' => 'الصينية (CN)', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 108636bd8..6e52f26aa 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -505,6 +505,7 @@ $text = array( 'folder_renamed_email_body' => '', 'folder_renamed_email_subject' => '', 'folder_title' => 'Папка \'[foldername]\'', +'foot_note' => '', 'force_update' => '', 'friday' => 'петък', 'friday_abbr' => '', @@ -649,6 +650,7 @@ $text = array( 'lock_document' => 'Блокирай', 'lock_message' => 'Документът е блокиран [username]. Само имащите права могат да го разблокират.', 'lock_status' => 'Статус', +'logfile_loading' => '', 'login' => 'Име', 'login_disabled_text' => 'Вашия акаунт е забранен, вероятно заради прекалено много погрешни опити за влизане.', 'login_disabled_title' => 'Вашия акаунт е забранен', @@ -723,6 +725,7 @@ $text = array( 'next_state' => 'Ново състояние', 'nl_NL' => 'Холандски', 'no' => 'Не', +'notification' => '', 'notify_added_email' => 'Вие сте добавен в списъка с уведомявани', 'notify_added_email_body' => '', 'notify_added_email_subject' => '', @@ -738,6 +741,7 @@ $text = array( 'no_current_version' => '', 'no_default_keywords' => 'Няма ключови думи', 'no_docs_checked_out' => '', +'no_docs_expired' => '', 'no_docs_locked' => 'Няма блокирани документи', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1376,6 +1380,7 @@ $text = array( 'settings_workflowMode' => 'Вид процес', 'settings_workflowMode_desc' => 'Специален/advanced процес позволява да зададете Ваш специфичен процес за версия на документ.', 'settings_workflowMode_valadvanced' => 'advanced', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'traditional', 'settings_workflowMode_valtraditional_only_approval' => '', 'settings_zendframework' => 'Zend Framework', @@ -1390,6 +1395,7 @@ $text = array( 'sign_in' => 'вход', 'sign_out' => 'изход', 'sign_out_user' => '', +'site_brand' => '', 'sk_SK' => 'Словашки', 'sort_by_date' => 'Сортирай по дата"', 'sort_by_name' => 'Сортирай по име', @@ -1514,9 +1520,13 @@ $text = array( 'switched_to' => '', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => '', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => '', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => '', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => '', +'takeOverIndReviewers' => '', 'tasks' => '', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 261339bad..768c872ee 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -510,6 +510,7 @@ URL: [url]', 'folder_renamed_email_body' => '', 'folder_renamed_email_subject' => '', 'folder_title' => 'Carpeta \'[foldername]\'', +'foot_note' => '', 'force_update' => '', 'friday' => 'Divendres', 'friday_abbr' => '', @@ -654,6 +655,7 @@ URL: [url]', 'lock_document' => 'Bloquejar', 'lock_message' => 'Aquest document ha estat bloquejat per [username]. Només els usuaris autoritzats poden desbloquejar aquest document (vegeu al final de la pàgina).', 'lock_status' => 'Estat', +'logfile_loading' => '', 'login' => '', 'login_disabled_text' => '', 'login_disabled_title' => '', @@ -728,6 +730,7 @@ URL: [url]', 'next_state' => '', 'nl_NL' => 'Holandès', 'no' => 'No', +'notification' => '', 'notify_added_email' => 'Se us ha afegit a la llista de notificació', 'notify_added_email_body' => '', 'notify_added_email_subject' => '', @@ -743,6 +746,7 @@ URL: [url]', 'no_current_version' => '', 'no_default_keywords' => 'No hi ha mots clau disponibles', 'no_docs_checked_out' => '', +'no_docs_expired' => '', 'no_docs_locked' => 'No hi ha documents bloquejats.', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1381,6 +1385,7 @@ URL: [url]', 'settings_workflowMode' => '', 'settings_workflowMode_desc' => '', 'settings_workflowMode_valadvanced' => '', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => '', 'settings_workflowMode_valtraditional_only_approval' => '', 'settings_zendframework' => '', @@ -1395,6 +1400,7 @@ URL: [url]', 'sign_in' => 'sign in', 'sign_out' => 'desconnectar', 'sign_out_user' => '', +'site_brand' => '', 'sk_SK' => 'Eslovac', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1519,9 +1525,13 @@ URL: [url]', 'switched_to' => '', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => '', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => '', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => '', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => '', +'takeOverIndReviewers' => '', 'tasks' => '', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index c22ed3ba1..080990069 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/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 (1528), kreml (579) +// Translators: Admin (1530), kreml (579) $text = array( '2_factor_auth' => 'dvoufaktorové ověření', @@ -614,6 +614,7 @@ Uživatel: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Složka přejmenována', 'folder_title' => 'Složka \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Aktualizace', 'friday' => 'Pátek', 'friday_abbr' => 'Pá', @@ -758,6 +759,7 @@ URL: [url]', 'lock_document' => 'Zamknout', 'lock_message' => 'Tento dokument zamknul [username]. Pouze oprávnění uživatelé ho mohou odemknout (viz konec stránky).', 'lock_status' => 'Stav', +'logfile_loading' => '', 'login' => 'Přihlášení', 'login_disabled_text' => 'Váš účet je zakázán, pravděpodobně z důvodu příliš mnoha neúspěšných přihlášení.', 'login_disabled_title' => 'Účet je zakázaný.', @@ -848,6 +850,7 @@ URL: [url]', 'next_state' => 'Nový stav', 'nl_NL' => 'Holandština', 'no' => 'Ne', +'notification' => '', 'notify_added_email' => 'Byl/a jste přidán/a do seznamu pro oznámení', 'notify_added_email_body' => 'Přidáno do seznamu oznámení Název: [name] @@ -871,6 +874,7 @@ URL: [url]', 'no_current_version' => 'Používáte starou verzi SeedDMS. Nejnovější dostupná verze je [latestversion].', 'no_default_keywords' => 'Nejsou dostupná žádná klíčová slova.', 'no_docs_checked_out' => 'Nebyly odbaveny žádné dokumenty', +'no_docs_expired' => '', 'no_docs_locked' => 'Žádné uzamčené dokumenty', 'no_docs_needs_correction' => 'Nejsou žádné dokumenty, které je třeba opravit', 'no_docs_rejected' => 'Nebyly zamítnuty žádné dokumenty.', @@ -1468,7 +1472,7 @@ Jméno: [username] 'settings_maxUploadSize' => 'Maximální velikost nahraných souborů', 'settings_maxUploadSize_desc' => 'Toto je maximální velikost nahraných souborů. Bude mít vliv na verze dokumentů a přílohy.', 'settings_more_settings' => 'Konfigurovat další nastavení. Výchozí přihlášení: admin / admin', -'settings_noDocumentFormFields' => '', +'settings_noDocumentFormFields' => 'Nezobrazovat tato pole', 'settings_noDocumentFormFields_desc' => '', 'settings_notfound' => 'Nenalezeno', 'settings_Notification' => 'Nastavení upozornění', @@ -1592,6 +1596,7 @@ Jméno: [username] 'settings_workflowMode' => 'Režím workflow', 'settings_workflowMode_desc' => 'Pokročilé workflow umožňuje definovat vlastní workflow pro uvolňování verzí dokumentů.', 'settings_workflowMode_valadvanced' => 'pokročilý', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'tradiční', 'settings_workflowMode_valtraditional_only_approval' => 'tradiční (bez recenzí)', 'settings_zendframework' => 'Zend Framework', @@ -1606,6 +1611,7 @@ Jméno: [username] 'sign_in' => 'Přihlásit', 'sign_out' => 'Odhlásit', 'sign_out_user' => 'Odhlášení uživatele', +'site_brand' => '', 'sk_SK' => 'Slovenština', 'sort_by_date' => '', 'sort_by_name' => 'Třídit podle jména', @@ -1730,9 +1736,13 @@ Jméno: [username] 'switched_to' => 'Přepnuto na', 'takeOverAttributeValue' => 'Převzít hodnotu atributu z poslední verze', 'takeOverGrpApprover' => 'Převzít skupinu schvalovatelů od poslední verze.', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Převzít skupinu recenzentů z poslední verze.', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Převzít individuální schvalující osobu od poslední verze.', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Převzít jednotlivého recenzenta z poslední verze.', +'takeOverIndReviewers' => '', 'tasks' => 'Úkoly', 'task_description' => 'Popis', 'task_disabled' => 'Vypnuto', @@ -1857,7 +1867,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Pomocí této operace můžete vytvořit soubor obsahující informace o verzování celé složky DMS. Po vytvoření bude každý soubor uložen uvnitř složky dokumentů.', 'versioning_info' => 'Info verzování', 'versiontolow' => 'Příliš nízká verze', -'version_comment' => '', +'version_comment' => 'Poznámka k verzi', 'version_deleted_email' => 'Verze smazána', 'version_deleted_email_body' => 'Verze smazána Dokument: [name] diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index ebf627712..2f7f60151 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 (2726), dgrutsch (22) +// Translators: Admin (2735), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -613,6 +613,7 @@ Benutzer: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Ordner umbenannt', 'folder_title' => 'SeedDMS - Ordner: [foldername]', +'foot_note' => '', 'force_update' => 'Aktualisieren', 'friday' => 'Freitag', 'friday_abbr' => 'Fr', @@ -757,6 +758,7 @@ URL: [url]', 'lock_document' => 'Sperren', 'lock_message' => 'Dieses Dokument ist durch [username] gesperrt. Nur authorisierte Benutzer können diese Sperrung aufheben.', 'lock_status' => 'Status', +'logfile_loading' => 'Bitte warten, bis die Log-Datei geladen ist …', 'login' => 'Login', 'login_disabled_text' => 'Ihr Konto ist gesperrt. Der Grund sind möglicherweise zu viele gescheiterte Anmeldeversuche.', 'login_disabled_title' => 'Konto gesperrt', @@ -846,6 +848,7 @@ URL: [url]', 'next_state' => 'Neuer Status', 'nl_NL' => 'Niederländisch', 'no' => 'Nein', +'notification' => 'Beobachter', 'notify_added_email' => 'Benachrichtigung per Mail wurde eingerichtet', 'notify_added_email_body' => 'Added to notification list Name: [name] @@ -869,6 +872,7 @@ URL: [url]', 'no_current_version' => 'Sie verwenden eine ältere Version als die zur Zeit verfügbare Version [latestversion].', 'no_default_keywords' => 'Keine Vorlagen vorhanden', 'no_docs_checked_out' => 'Keine Dokumente ausgecheckt', +'no_docs_expired' => 'Keine abgelaufenen Dokumente', 'no_docs_locked' => 'Keine Dokumente gesperrt.', 'no_docs_needs_correction' => 'Keine Dokumente, die korrigiert werden müssen', 'no_docs_rejected' => 'Keine Dokumente abgelehnt.', @@ -1602,6 +1606,7 @@ Name: [username] 'settings_workflowMode' => 'Workflow mode', 'settings_workflowMode_desc' => 'Der erweiterte Workflow-Modes erlaubt es eigene Workflows zu erstellen.', 'settings_workflowMode_valadvanced' => 'erweitert', +'settings_workflowMode_valnone' => 'keiner', 'settings_workflowMode_valtraditional' => 'traditionell', 'settings_workflowMode_valtraditional_only_approval' => 'traditional (ohne Prüfung)', 'settings_zendframework' => 'Zend Framework', @@ -1616,6 +1621,7 @@ Name: [username] 'sign_in' => 'Anmelden', 'sign_out' => 'Abmelden', 'sign_out_user' => 'Benutzer abmelden', +'site_brand' => '', 'sk_SK' => 'Slovakisch', 'sort_by_date' => 'Nach Datum sortieren', 'sort_by_name' => 'Nach Name sortieren', @@ -1740,9 +1746,13 @@ Name: [username] 'switched_to' => 'Gewechselt zu', 'takeOverAttributeValue' => 'Attributwert von vorheriger Version übernehmen', 'takeOverGrpApprover' => 'Übernehme Gruppe von Freigebenden von letzter Version.', +'takeOverGrpApprovers' => 'Gruppenfreigeber übernehmen', 'takeOverGrpReviewer' => 'Übernehme Gruppe von Prüfern von letzter Version.', +'takeOverGrpReviewers' => 'Gruppenprüfer übernehmen', 'takeOverIndApprover' => 'Übernehme Einzelfreigebende von letzter Version.', +'takeOverIndApprovers' => 'Einzelfreigeber übernehmen', 'takeOverIndReviewer' => 'Übernehme die Einzelprüfer von der letzten Version.', +'takeOverIndReviewers' => 'Einzelprüfer übernehmen', 'tasks' => 'Aufgaben', 'task_description' => 'Beschreibung', 'task_disabled' => 'Deaktiviert', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index f29395c96..0a98fa212 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/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 (282) +// Translators: Admin (292) $text = array( '2_factor_auth' => '', @@ -52,7 +52,7 @@ $text = array( 'add_approval' => '', 'add_attrdefgroup' => '', 'add_document' => 'Νέο έγγραφο', -'add_document_link' => '', +'add_document_link' => 'Προσθήκη σύνδεσης', 'add_document_notify' => '', 'add_doc_reviewer_approver_warning' => '', 'add_doc_workflow_warning' => '', @@ -208,7 +208,7 @@ $text = array( 'change_password_message' => 'Ο κωδικός σας έχει αλλάξει.', 'change_recipients' => '', 'change_revisors' => '', -'change_status' => '', +'change_status' => 'Αλλαγή κατάστασης', 'charts' => 'Διαγράμματα', 'chart_docsaccumulated_title' => 'Αριθμός Εγγράφων', 'chart_docspercategory_title' => 'Έγγραφα κατά κατηγορία', @@ -239,7 +239,7 @@ $text = array( 'choose_workflow_action' => '', 'choose_workflow_state' => '', 'class_name' => '', -'clear_cache' => '', +'clear_cache' => 'Εκκαθάριση στιγμιαίας μνήμης', 'clear_clipboard' => '', 'clear_password' => '', 'clipboard' => 'Πρόχειρο', @@ -357,7 +357,7 @@ $text = array( 'document_status_changed_email' => '', 'document_status_changed_email_body' => '', 'document_status_changed_email_subject' => '', -'document_title' => '', +'document_title' => 'Τίτλος εγγράφου', 'document_transfered_email_body' => '', 'document_transfered_email_subject' => '', 'document_updated_email' => '', @@ -392,9 +392,9 @@ $text = array( 'duplicate_content' => '', 'edit' => '', 'edit_attributes' => '', -'edit_comment' => '', +'edit_comment' => 'Επεξερασία σχόλιου', 'edit_default_keywords' => '', -'edit_document_access' => '', +'edit_document_access' => 'Επεξεργασία πρόσβασης', 'edit_document_notify' => '', 'edit_document_props' => 'Επεξεργασία εγγράφου', 'edit_event' => '', @@ -505,6 +505,7 @@ $text = array( 'folder_renamed_email_body' => '', 'folder_renamed_email_subject' => '', 'folder_title' => 'Όνομα Φακέλου', +'foot_note' => '', 'force_update' => '', 'friday' => 'Παρασκευή', 'friday_abbr' => 'Πα', @@ -633,7 +634,7 @@ $text = array( 'legend' => 'Ιστορικό', 'librarydoc' => '', 'linked_documents' => 'Σχετικά Έγγραφα', -'linked_files' => '', +'linked_files' => 'Συνδεμένα αρχεία', 'linked_to_current_version' => '', 'linked_to_document' => '', 'linked_to_this_version' => '', @@ -649,6 +650,7 @@ $text = array( 'lock_document' => 'Κλείδωμα', 'lock_message' => '', 'lock_status' => 'Κατάσταση', +'logfile_loading' => '', 'login' => 'Είσοδος', 'login_disabled_text' => '', 'login_disabled_title' => '', @@ -734,6 +736,7 @@ URL: [url]', 'next_state' => '', 'nl_NL' => 'Δανέζικα', 'no' => 'Όχι', +'notification' => '', 'notify_added_email' => '', 'notify_added_email_body' => '', 'notify_added_email_subject' => '', @@ -749,6 +752,7 @@ URL: [url]', 'no_current_version' => '', 'no_default_keywords' => '', 'no_docs_checked_out' => '', +'no_docs_expired' => '', 'no_docs_locked' => '', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -772,7 +776,7 @@ URL: [url]', 'no_version_check' => '', 'no_version_modification' => '', 'no_workflow_available' => '', -'objectcheck' => '', +'objectcheck' => 'Αναζήτηση σε αρχεία και φακέλους', 'object_check_critical' => '', 'object_check_warning' => '', 'obsolete' => '', @@ -855,7 +859,7 @@ URL: [url]', 'redraw' => '', 'refresh' => '', 'rejected' => '', -'released' => '', +'released' => 'Εκδόθηκε', 'removed_approver' => '', 'removed_file_email' => '', 'removed_file_email_body' => '', @@ -1387,6 +1391,7 @@ URL: [url]', 'settings_workflowMode' => '', 'settings_workflowMode_desc' => '', 'settings_workflowMode_valadvanced' => '', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => '', 'settings_workflowMode_valtraditional_only_approval' => '', 'settings_zendframework' => '', @@ -1401,6 +1406,7 @@ URL: [url]', 'sign_in' => 'Σύνδεση', 'sign_out' => 'Αποσύνδεση', 'sign_out_user' => 'Αποσύνδεση χρήστη', +'site_brand' => '', 'sk_SK' => 'Σλοβάκικα', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1525,9 +1531,13 @@ URL: [url]', 'switched_to' => '', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => '', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => '', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => '', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => '', +'takeOverIndReviewers' => '', 'tasks' => '', 'task_description' => '', 'task_disabled' => '', @@ -1566,7 +1576,7 @@ URL: [url]', 'toggle_qrcode' => '', 'to_before_from' => '', 'transfer_content' => '', -'transfer_document' => '', +'transfer_document' => 'Μεταφορά εγγράφου', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', 'transfer_objects' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index d288ca3b4..800fe6daa 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 (1822), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (1830), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -614,6 +614,7 @@ User: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Folder renamed', 'folder_title' => 'Folder \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Update', 'friday' => 'Friday', 'friday_abbr' => 'Fr', @@ -758,6 +759,7 @@ URL: [url]', 'lock_document' => 'Lock', 'lock_message' => 'This document is locked by [username]. Only authorized users can unlock this document.', 'lock_status' => 'Status', +'logfile_loading' => 'Pleae wait, until log file is loaded …', 'login' => 'Login', 'login_disabled_text' => 'Your account is disabled, probably because of too many failed logins.', 'login_disabled_title' => 'Account is disabled', @@ -848,6 +850,7 @@ URL: [url]', 'next_state' => 'New state', 'nl_NL' => 'Dutch', 'no' => 'No', +'notification' => 'Notification', 'notify_added_email' => 'You\'ve been added to notify list', 'notify_added_email_body' => 'Added to notification list Name: [name] @@ -871,6 +874,7 @@ URL: [url]', 'no_current_version' => 'You are running an old version of SeedDMS. The latest available version is [latestversion].', 'no_default_keywords' => 'No keywords available', 'no_docs_checked_out' => 'No documents checked out', +'no_docs_expired' => 'No expired documents', 'no_docs_locked' => 'No documents locked.', 'no_docs_needs_correction' => 'No documents, that need to be corrected', 'no_docs_rejected' => 'No documents rejected.', @@ -1597,6 +1601,7 @@ Name: [username] 'settings_workflowMode' => 'Workflow mode', 'settings_workflowMode_desc' => 'The advanced workflow allows to specify your own release workflow for document versions.', 'settings_workflowMode_valadvanced' => 'advanced', +'settings_workflowMode_valnone' => 'none', 'settings_workflowMode_valtraditional' => 'traditional', 'settings_workflowMode_valtraditional_only_approval' => 'traditional (without review)', 'settings_zendframework' => 'Zend Framework', @@ -1611,6 +1616,7 @@ Name: [username] 'sign_in' => 'Sign in', 'sign_out' => 'Sign out', 'sign_out_user' => 'Sign out user', +'site_brand' => '', 'sk_SK' => 'Slovak', 'sort_by_date' => 'Sort by date', 'sort_by_name' => 'Sort by name', @@ -1735,9 +1741,13 @@ Name: [username] 'switched_to' => 'Switched to', 'takeOverAttributeValue' => 'Take over attribute value from last version', 'takeOverGrpApprover' => 'Take over group of approvers from last version.', +'takeOverGrpApprovers' => 'Take Over Group Approvers', 'takeOverGrpReviewer' => 'Take over group of reviewers from last version.', +'takeOverGrpReviewers' => 'Take Over Group Reviewers', 'takeOverIndApprover' => 'Take over individual approver from last version.', +'takeOverIndApprovers' => 'Take Over Individual Approvers', 'takeOverIndReviewer' => 'Take over individual reviewer from last version.', +'takeOverIndReviewers' => 'Take Over Individual Reviewers', 'tasks' => 'Tasks', 'task_description' => 'Description', 'task_disabled' => 'Disabled', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 95a8113ed..c5e1df873 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -583,6 +583,7 @@ Usuario: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Carpeta renombrada', 'folder_title' => 'Carpeta \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Actualizar', 'friday' => 'Viernes', 'friday_abbr' => 'V', @@ -727,6 +728,7 @@ URL: [url]', 'lock_document' => 'Bloquear', 'lock_message' => 'Este documento ha sido bloqueado por [username]. Sólo usuarios autorizados pueden desbloquear este documento (vea el final de la página).', 'lock_status' => 'Estado', +'logfile_loading' => '', 'login' => 'Iniciar sesión', 'login_disabled_text' => 'Su cuenta está deshabilitada, probablemente es debido a demasiados intentos de acceso fallidos.', 'login_disabled_title' => 'La cuenta está deshabilitada', @@ -817,6 +819,7 @@ URL: [url]', 'next_state' => 'Nuevo estado', 'nl_NL' => 'Holandes', 'no' => 'No', +'notification' => '', 'notify_added_email' => 'Ha sido añadido a la lista de notificación', 'notify_added_email_body' => 'Añadido a la lista de notificación Nombre: [name] @@ -840,6 +843,7 @@ URL: [url]', 'no_current_version' => 'Está utilizando una versión desactualizada de este producto. La última versión disponible es [latestversion].', 'no_default_keywords' => 'No hay palabras clave disponibles', 'no_docs_checked_out' => '', +'no_docs_expired' => '', 'no_docs_locked' => 'No hay documentos bloqueados.', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1528,6 +1532,7 @@ URL: [url]', 'settings_workflowMode' => 'Workflow mode', 'settings_workflowMode_desc' => 'El flujo de trabajo avanzado permite especificar su propia versión de flujo para las versiones de documento.', 'settings_workflowMode_valadvanced' => 'avanzado', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'tradicional', 'settings_workflowMode_valtraditional_only_approval' => 'Tradicional(sin revisión)', 'settings_zendframework' => 'Zend Framework', @@ -1542,6 +1547,7 @@ URL: [url]', 'sign_in' => 'Conectar', 'sign_out' => 'Salir', 'sign_out_user' => 'Desconectar usuario', +'site_brand' => '', 'sk_SK' => 'Slovaco', 'sort_by_date' => 'Ordenar por Fecha', 'sort_by_name' => 'Ordenar por nombre', @@ -1666,9 +1672,13 @@ URL: [url]', 'switched_to' => 'Cambiar a', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => '', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => '', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => '', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Tomar control de la revisión de la última versión', +'takeOverIndReviewers' => '', 'tasks' => '', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 151063a97..0d27a2fc3 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 (1094), jeromerobert (50), lonnnew (9), Oudiceval (755) +// Translators: Admin (1099), jeromerobert (50), lonnnew (9), Oudiceval (767) $text = array( '2_factor_auth' => 'Authentification forte', @@ -130,7 +130,7 @@ Commentaire : [comment] Utilisateur : [username] URL : [url]', 'approval_submit_email_subject' => '[sitename]: [name] - Approbation soumise', -'approval_summary' => 'Vue d’ensemble approbation', +'approval_summary' => 'Récapitulatif approbation', 'approval_update_failed' => 'Erreur de la mise à jour du statut d\'approbation. Echec de la mise à jour.', 'approvers' => 'Approbateurs', 'approver_already_assigned' => 'L’utilisateur est déjà affecté comme approbateur.', @@ -614,6 +614,7 @@ Utilisateur: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Dossier renommé', 'folder_title' => 'Dossier \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Mettre à jour', 'friday' => 'Vendredi', 'friday_abbr' => 'Ven.', @@ -633,14 +634,14 @@ URL: [url]', 'global_workflow_states' => 'États de Workflow', 'group' => 'Groupe', 'groups' => 'Groupes', -'group_approval_summary' => 'Vue d’ensemble groupe approbation', +'group_approval_summary' => 'Récapitulatif groupe approbation', 'group_exists' => 'Ce groupe existe déjà.', 'group_info' => 'Informations du groupe', 'group_management' => 'Gestion des groupes', 'group_members' => 'Membres du groupe', -'group_receipt_summary' => 'Vue d’ensemble groupe réception', -'group_review_summary' => 'Vue d’ensemble groupe vérification', -'group_revision_summary' => '', +'group_receipt_summary' => 'Récapitulatif groupe réception', +'group_review_summary' => 'Récapitulatif groupe vérification', +'group_revision_summary' => 'Récapitulatif groupe révision', 'guest_login' => 'Se connecter comme invité', 'guest_login_disabled' => 'Connexion d\'invité désactivée.', 'hash' => 'Hash', @@ -758,6 +759,7 @@ URL: [url]', 'lock_document' => 'Verrouiller', 'lock_message' => 'Ce document a été verrouillé par [username]. Seuls les utilisateurs autorisés peuvent déverrouiller ce document.', 'lock_status' => 'Statut', +'logfile_loading' => '', 'login' => 'Identification', 'login_disabled_text' => 'Votre compte est désactivé, sans doute à cause de trop nombreuses connexions qui ont échoué.', 'login_disabled_title' => 'Compte désactivé', @@ -848,6 +850,7 @@ URL : [url]', 'next_state' => 'Nouvel état', 'nl_NL' => 'Danois', 'no' => 'Non', +'notification' => 'Alerte', 'notify_added_email' => 'Vous avez été ajouté à la liste des notifications.', 'notify_added_email_body' => 'Ajouté à la liste des notifications Nom : [name] @@ -871,6 +874,7 @@ URL: [url]', 'no_current_version' => 'Vous utilisez une vieille version de SeedDMS. La dernière version disponible est la [latestversion].', 'no_default_keywords' => 'Aucun mot-clé disponible', 'no_docs_checked_out' => '', +'no_docs_expired' => '', 'no_docs_locked' => 'Aucun document verrouillé', 'no_docs_needs_correction' => 'Aucun document ne nécessite de correction', 'no_docs_rejected' => 'Aucun document rejeté.', @@ -988,7 +992,7 @@ Utilisateur : [username] URL : [url]', 'receipt_request_email_subject' => '[sitename] : [name] - Demande de réception', 'receipt_status' => 'Statut', -'receipt_summary' => 'Vue d’ensemble réception', +'receipt_summary' => 'Récapitulatif réception', 'receipt_update_failed' => 'La confirmation de réception a échoué', 'recent_uploads' => 'Téléchargements récents', 'reception' => 'Réception', @@ -1079,7 +1083,7 @@ Dossier parent : [folder_path] Utilisateur : [username] URL : [url]', 'review_submit_email_subject' => '[sitename] : [name] - Vérification faite', -'review_summary' => 'Vue d’ensemble vérification', +'review_summary' => 'Récapitulatif vérification', 'review_update_failed' => 'Erreur lors de la mise à jour du statut de vérification. Échec de la mise à jour.', 'revise_document' => 'Réviser le document', 'revise_document_on' => 'Prochaine révision de la version du document le [date]', @@ -1105,7 +1109,7 @@ URL : [url]', 'revision_status' => 'État', 'revision_submit_email_body' => '', 'revision_submit_email_subject' => '', -'revision_summary' => '', +'revision_summary' => 'Récapitulatif révision', 'revisors' => 'Réviseurs', 'revisor_already_assigned' => 'L’utilisateur est déjà attribué en tant que réviseur.', 'revisor_already_removed' => 'Le réviseur a déjà été retiré du processus de révision ou a déjà révisé le document.', @@ -1457,14 +1461,14 @@ Nom : [username] 'settings_maxUploadSize' => 'Taille max. des fichiers', 'settings_maxUploadSize_desc' => 'Taille maximale (en octets) pour les fichiers téléversés. Concerne les versions d’un document et les fichiers attachés.', 'settings_more_settings' => 'Configurer d\'autres paramètres. Connexion par défaut: admin/admin', -'settings_noDocumentFormFields' => '', -'settings_noDocumentFormFields_desc' => '', +'settings_noDocumentFormFields' => 'N\'afficher pas ce champ', +'settings_noDocumentFormFields_desc' => 'Ce champ ne sera pas visible quand vous ajoutez ou éditez un document. Les valeurs existantes seront retenues.', 'settings_notfound' => 'Introuvable', 'settings_Notification' => 'Notifications', 'settings_notwritable' => 'La configuration ne peut pas être enregistrée car le fichier de configuration n’est pas accessible en écriture.', 'settings_no_content_dir' => 'Répertoire de contenu', 'settings_onePageMode' => 'Mode une page', -'settings_onePageMode_desc' => '', +'settings_onePageMode_desc' => 'Le mode Page unique activera le code javascript dans la page AfficherDossier, qui va mettre à jour la liste Dossier/Document, navigation, etc quand vous cliquez sur un dossier ou vous changer le parametre de l\'ordre d\'affichage.', 'settings_overrideMimeType' => 'Passer outre le type MIME', 'settings_overrideMimeType_desc' => 'Ne pas tenir compte du type MIME envoyé par le navigateur quand un fichier est téléversé. Le type MIME sera déterminé par SeedDMS.', 'settings_partitionSize' => 'Taille des fichiers partiels téléchargées par jumploader', @@ -1581,6 +1585,7 @@ Nom : [username] 'settings_workflowMode' => 'Mode workflow', 'settings_workflowMode_desc' => 'Le workflow avancé permet de définir son propre workflow de parution pour les versions de documents.', 'settings_workflowMode_valadvanced' => 'avancé', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'traditionnel', 'settings_workflowMode_valtraditional_only_approval' => 'traditionnel (sans revue)', 'settings_zendframework' => 'Zend Framework', @@ -1595,6 +1600,7 @@ Nom : [username] 'sign_in' => 'Connexion', 'sign_out' => 'Déconnexion', 'sign_out_user' => 'Déconnecter l\'utilisateur', +'site_brand' => '', 'sk_SK' => 'Slovaque', 'sort_by_date' => 'Trier par date', 'sort_by_name' => 'Trier par nom', @@ -1719,9 +1725,13 @@ Nom : [username] 'switched_to' => 'Connexion provisoire sous', 'takeOverAttributeValue' => 'Récupérer la valeur de la dernière version', 'takeOverGrpApprover' => 'Récupérer le groupe d\'approbateurs de la dernière version.', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Récupérer le groupe d\'examinateurs de la dernière version.', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Récupérer les approbateurs de la dernière version.', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Récupérer les examinateurs de la dernière version.', +'takeOverIndReviewers' => '', 'tasks' => 'Tâches', 'task_description' => 'Description', 'task_disabled' => 'Désactivée', @@ -1846,7 +1856,7 @@ URL : [url]', 'versioning_file_creation_warning' => 'Cette opération permet de créer, pour chaque document, un fichier texte contenant les informations générales et l’historique des versions du document. Chaque fichier sera enregistré dans le répertoire du document. Ces fichiers ne sont pas nécessaires au bon fonctionnement de SeedDMS, mais ils peuvent être utiles en cas de transfert des fichiers vers un autre système.', 'versioning_info' => 'Versions', 'versiontolow' => '', -'version_comment' => '', +'version_comment' => 'commentaire de la version', 'version_deleted_email' => 'Version supprimée', 'version_deleted_email_body' => 'Version supprimée Document: [name] @@ -1869,7 +1879,7 @@ URL: [url]', 'workflow_action_in_use' => 'Cette action est actuellement utilisée par des workflows.', 'workflow_action_name' => 'Nom', 'workflow_editor' => 'Editeur de Workflow', -'workflow_group_summary' => 'Vue d’ensemble du groupe', +'workflow_group_summary' => 'Récapitulatif groupe workflow', 'workflow_has_cycle' => '', 'workflow_initstate' => 'Etat initial', 'workflow_in_use' => 'Ce workflow est actuellement utilisé par des documents.', @@ -1886,9 +1896,9 @@ URL: [url]', 'workflow_state_docstatus' => 'Etat du document', 'workflow_state_in_use' => 'Cet état est actuellement utilisé par des workflows.', 'workflow_state_name' => 'Nom', -'workflow_summary' => 'Vue d’ensemble du workflow', +'workflow_summary' => 'Récapitulatif workflow', 'workflow_transition_without_user_group' => 'Au moins une transition a ni utilisateur, ni groupe !', -'workflow_user_summary' => 'Vue d’ensemble de l’utilisateur', +'workflow_user_summary' => 'Récapitulatif utilisateur', 'x_more_objects' => '[number] objets supplémentaires', 'year_view' => 'Vue annuelle', 'yes' => 'Oui', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index e9d99399d..7df14ae1a 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -588,6 +588,7 @@ Korisnik: [username] Internet poveznica: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Preimenovana mapa', 'folder_title' => 'Mapa \'[foldername]\'', +'foot_note' => '', 'force_update' => '', 'friday' => 'Petak', 'friday_abbr' => 'Pe', @@ -732,6 +733,7 @@ Internet poveznica: [url]', 'lock_document' => 'Zaključaj', 'lock_message' => 'Ovaj dokument je zaključao [username]. Samo ovlašteni korisnici mogu otključati ovaj dokument.', 'lock_status' => 'Status', +'logfile_loading' => '', 'login' => 'Prijava', 'login_disabled_text' => 'Vaš korisnički račun je onemogućen, vjerojatno zbog previše neispravnih prijava.', 'login_disabled_title' => 'Korisnički račun je onemogućen', @@ -821,6 +823,7 @@ Internet poveznica: [url]', 'next_state' => 'Slijedeći status', 'nl_NL' => 'Nizozemski', 'no' => 'Ne', +'notification' => '', 'notify_added_email' => 'Dodani ste na popis obavijesti', 'notify_added_email_body' => 'Dodano na popis obavijesti Naziv: [name] @@ -844,6 +847,7 @@ Internet poveznica: [url]', 'no_current_version' => 'Koristite na staru verziju ProsperaDMS-a. Najnovija dostupna verzija je[latestversion].', 'no_default_keywords' => 'Nema dostupnih ključnih riječi', 'no_docs_checked_out' => 'Niti jedan dokument nije odjavljen', +'no_docs_expired' => '', 'no_docs_locked' => 'Nema zaključanih dokumenata.', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1549,6 +1553,7 @@ Internet poveznica: [url]', 'settings_workflowMode' => 'Način rada toka rada', 'settings_workflowMode_desc' => 'Napredni tok rada vam omogućuje da odredite vaše vlastito izdanje toka rada za verzije dokumenta.', 'settings_workflowMode_valadvanced' => 'napredno', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'tradicionalno', 'settings_workflowMode_valtraditional_only_approval' => 'uobičajeno (bez revizije)', 'settings_zendframework' => 'Zend okruženje', @@ -1563,6 +1568,7 @@ Internet poveznica: [url]', 'sign_in' => 'Prijava u sustav', 'sign_out' => 'Odjava', 'sign_out_user' => 'Odjavi korisnika', +'site_brand' => '', 'sk_SK' => 'Slovački', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1687,9 +1693,13 @@ Internet poveznica: [url]', 'switched_to' => 'Promjenjeno u', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => 'Preuzimanje grupe odobravatelja iz zadnje verzije.', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Preuzimanje grupe revizora iz zadnje verzije.', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Preuzimanje pojedinačnog odobravatelja iz zadnje verzije.', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Preuzimanje pojedinačnog revizora iz zadnje verzije.', +'takeOverIndReviewers' => '', 'tasks' => 'Zadaci', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 3548c9f9c..76cd8dac8 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (635), ribaz (1036) +// Translators: Admin (636), ribaz (1036) $text = array( '2_factor_auth' => 'Kétfaktoros azonosítás', @@ -349,7 +349,7 @@ URL: [url]', 'documents_user_no_reception' => '', 'documents_user_obsolete' => '', 'documents_user_reception' => '', -'documents_user_rejected' => '', +'documents_user_rejected' => 'Felhasználó által visszautasított dokumentumok', 'documents_user_requiring_attention' => 'Az Ön tulajdonában álló dokumentumok, amelyekre figyelmet kell fordítani', 'documents_with_notification' => '', 'document_already_checkedout' => '', @@ -583,6 +583,7 @@ Felhasználó: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Mappa átnevezve', 'folder_title' => 'Mappa \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Frissít', 'friday' => 'Péntek', 'friday_abbr' => 'Pé', @@ -727,6 +728,7 @@ URL: [url]', 'lock_document' => 'Zárol', 'lock_message' => 'Ezt a dokumentumot [username] zárolta. Csak az arra jogosult felhasználó törölheti a zárolást (Lásd: lap alja).', 'lock_status' => 'Állapot', +'logfile_loading' => '', 'login' => 'Bejelentkezés', 'login_disabled_text' => 'Fiókja letiltásra került, valószínűleg a túl sok érvénytelen bejelentkezési kísérlet miatt.', 'login_disabled_title' => 'Hozzáférés letiltva', @@ -817,6 +819,7 @@ URL: [url]', 'next_state' => 'Új állapot', 'nl_NL' => 'Holland', 'no' => 'Nem', +'notification' => '', 'notify_added_email' => 'Ön felkerült az értesítési listára', 'notify_added_email_body' => 'Hozzáadva az értesítési listához Név: [name] @@ -840,6 +843,7 @@ URL: [url]', 'no_current_version' => 'Ön a SeedDMS régebbi változatát futtatja. A legutolsó elérhető verzió [latestversion].', 'no_default_keywords' => 'Nincsenek elérhető kulcsszavak', 'no_docs_checked_out' => '', +'no_docs_expired' => '', 'no_docs_locked' => 'Nincsenek zárolt dokumentumok.', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1527,6 +1531,7 @@ URL: [url]', 'settings_workflowMode' => 'Munkafolyamat mód', 'settings_workflowMode_desc' => 'A részletes munkafolyamat engedélyezi saját kiadási munkafolyamat megadását a dokumentum változatokhoz.', 'settings_workflowMode_valadvanced' => 'részletes', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'hagyományos', 'settings_workflowMode_valtraditional_only_approval' => 'hagyományos (áttekintés nélkül)', 'settings_zendframework' => 'Zend keretrendszer', @@ -1541,6 +1546,7 @@ URL: [url]', 'sign_in' => 'Bejelentkezés', 'sign_out' => 'Kijelentkezés', 'sign_out_user' => 'Kijelentkezés', +'site_brand' => '', 'sk_SK' => 'Szlovák', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1665,9 +1671,13 @@ URL: [url]', 'switched_to' => 'Felhasználó váltás', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => '', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => '', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => '', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => '', +'takeOverIndReviewers' => '', 'tasks' => '', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 9e8715e6f..bd03282a9 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 (2014), rickr (144), s.pnt (26) +// Translators: Admin (2018), rickr (144), s.pnt (26) $text = array( '2_factor_auth' => 'Autorizzazione a due fattori', @@ -600,6 +600,7 @@ Utente: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Cartella rinominata', 'folder_title' => 'Cartella \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Aggiona', 'friday' => 'Venerdì', 'friday_abbr' => 'Ven', @@ -744,6 +745,7 @@ URL: [url]', 'lock_document' => 'Blocca', 'lock_message' => 'Questo documento è bloccato da [username]. Solo gli utenti autorizzati possono sbloccare questo documento.', 'lock_status' => 'Stato bloccaggio', +'logfile_loading' => '', 'login' => 'Accesso', 'login_disabled_text' => 'Il tuo account è stato disabilitato: troppi login falliti.', 'login_disabled_title' => 'L\'account è disabilitato', @@ -834,6 +836,7 @@ URL: [url]', 'next_state' => 'Nuovo stato', 'nl_NL' => 'Olandese', 'no' => 'No', +'notification' => '', 'notify_added_email' => 'Sei stato aggiunto alla lista di notifica', 'notify_added_email_body' => 'Aggiunto alla lista di notifica Nome: [name] @@ -857,6 +860,7 @@ URL: [url]', 'no_current_version' => 'La corrente versione di SeedDMS non è aggiornata. La versione più recente disponibile è la [latestversion].', 'no_default_keywords' => 'Nessuna parola-chiave disponibile', 'no_docs_checked_out' => 'Nessun documento approvato', +'no_docs_expired' => '', 'no_docs_locked' => 'Nessun documento bloccato.', 'no_docs_needs_correction' => 'Nessun documento che necessita di correzioni', 'no_docs_rejected' => 'Nessun documento rifiutato', @@ -1459,13 +1463,13 @@ Name: [username] 'settings_maxUploadSize' => 'Dimensiona massima dei file da caricare', 'settings_maxUploadSize_desc' => 'Questa è la dimensiona massima del file da caricare. Avrà impatto sulla versione del documento e sull\'allegato.', 'settings_more_settings' => 'Ulteriori configurazioni. Login di default: admin/admin', -'settings_noDocumentFormFields' => '', -'settings_noDocumentFormFields_desc' => '', +'settings_noDocumentFormFields' => 'Non mostrare questi campi', +'settings_noDocumentFormFields_desc' => 'Questo campo non verrà mostrato quando aggiungi o modifichi un documento. Il valore esistente verrà conservato.', 'settings_notfound' => 'Non trovato', 'settings_Notification' => 'Impostazioni di notifica', 'settings_notwritable' => 'La configurazione non può essere salvata perchè il file di configurazione non può essere sovrascritto.', 'settings_no_content_dir' => 'Cartella contenitore', -'settings_onePageMode' => '', +'settings_onePageMode' => 'Modalità ad una pagina', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => 'Ignora MimeType', 'settings_overrideMimeType_desc' => 'Ignora il MimeType impostato dal browser, se un file viene caricato. Il MimeType è determinato ed impostato dal DMS stesso.', @@ -1583,6 +1587,7 @@ Name: [username] 'settings_workflowMode' => 'Modalità flusso di lavoro', 'settings_workflowMode_desc' => 'Il flusso di lavoro \'avanzato\' permette di pubblicare un proprio flusso di lavoro per le versioni dei documenti', 'settings_workflowMode_valadvanced' => 'Avanzato', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'Tradizionale', 'settings_workflowMode_valtraditional_only_approval' => 'Tradizionale (senza revisione)', 'settings_zendframework' => 'Framework Zend', @@ -1597,6 +1602,7 @@ Name: [username] 'sign_in' => 'Accesso', 'sign_out' => 'Disconnettiti', 'sign_out_user' => 'Disconnetti l\'utente', +'site_brand' => '', 'sk_SK' => 'Slovacco', 'sort_by_date' => 'Ordina per data', 'sort_by_name' => 'Ordina per nome', @@ -1721,9 +1727,13 @@ Name: [username] 'switched_to' => 'Passato a', 'takeOverAttributeValue' => 'Riprendi il valore dell\'attributo dall\'ultima versione', 'takeOverGrpApprover' => 'Riprendi il gruppo degli approvatori dall\'ultima versione.', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Riprendi il gruppo dei revisori dall\'ultima versione.', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Riprendi l\'approvatore dall\'ultima versione.', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Riprendi il revisore dall\'ultima versione.', +'takeOverIndReviewers' => '', 'tasks' => 'Attività', 'task_description' => 'Descrizione', 'task_disabled' => 'Disabilitata', @@ -1848,7 +1858,7 @@ URL: [url]', 'versioning_file_creation_warning' => 'Con questa operazione è possibile creare un file di backup delle informazioni di versione dei documenti di un\'intera cartella. Dopo la creazione ogni file viene salvato nella cartella del relativo documento.', 'versioning_info' => 'Informazioni di versione', 'versiontolow' => 'Versione obsoleta', -'version_comment' => '', +'version_comment' => 'Commento alla versione', 'version_deleted_email' => 'Cancellazione versione', 'version_deleted_email_body' => 'Versione cancellata Documento: [name] diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index ede9add6d..9fd264e16 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -589,6 +589,7 @@ URL : [url]', URL: [url]', 'folder_renamed_email_subject' => '[sitename] : [name] - 폴더 이름', 'folder_title' => '폴더 \'[foldername]\'', +'foot_note' => '', 'force_update' => '', 'friday' => '금요일', 'friday_abbr' => '금', @@ -733,6 +734,7 @@ URL: [url]', 'lock_document' => '잠그기', 'lock_message' => '이 문서는 [username].에 의해 잠겨 있습니다. 허가 된 사용자 만이 문서를 잠금을 해제 할 수 있습니다.', 'lock_status' => '상태', +'logfile_loading' => '', 'login' => '로그인', 'login_disabled_text' => '귀정 이상 로그인 실패로 당신의 계정을사용할 수 없습니다.', 'login_disabled_title' => '계정 비활성화', @@ -823,6 +825,7 @@ URL [url]', 'next_state' => '새 상태', 'nl_NL' => '네덜란드', 'no' => '아니오', +'notification' => '', 'notify_added_email' => '귀하는 알림목록에 추가되었습니다.', 'notify_added_email_body' => '알림 목록에 추가 이름: [name] @@ -846,6 +849,7 @@ URL : [url]', 'no_current_version' => '당신은 이전 버전의 SeedDMS를 사용하고 있습니다. 사용 가능한 최신 버전은 [latestversion] 입니다.', 'no_default_keywords' => '사용 가능한 키워드가 존재하지 않습니다.', 'no_docs_checked_out' => '체크아웃 문서가 없습니다.', +'no_docs_expired' => '', 'no_docs_locked' => '잠긴 문서가 없습니다.', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1543,6 +1547,7 @@ URL : [url]', 'settings_workflowMode' => '워크플로우 모드', 'settings_workflowMode_desc' => '문서 버전에 대한 자신의 릴리스 워크플로우 지정하실 수 있습니다 .', 'settings_workflowMode_valadvanced' => '고급', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => '관습적', 'settings_workflowMode_valtraditional_only_approval' => '관습적 (리뷰 없음)', 'settings_zendframework' => '젠드 프레임 워크', @@ -1557,6 +1562,7 @@ URL : [url]', 'sign_in' => '로그인', 'sign_out' => '로그 아웃', 'sign_out_user' => '사용자가 로그 아웃', +'site_brand' => '', 'sk_SK' => '슬로바키아어', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1681,9 +1687,13 @@ URL : [url]', 'switched_to' => '전환', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => '마지막 버전의 승인자의 그룹를 인수 합니다.', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => '최종 버전의 리뷰 그룹을 상속합니다.', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => '마지막 버전의 개별 승인자를 인수 합니다.', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => '최종 버전의 개인별 검수자를 상속합니다.', +'takeOverIndReviewers' => '', 'tasks' => '작업', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index 0d0a86ca5..a221e6682 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -593,6 +593,7 @@ URL: [url]', URL: [url]', 'folder_renamed_email_subject' => '[sitename]:[name] - ປ່ຽນຊື່ໂຟລເດີ', 'folder_title' => 'ໂຟລເດີ "[foldername] "', +'foot_note' => '', 'force_update' => '', 'friday' => 'ວັນສຸກ', 'friday_abbr' => 'ວັນສຸກ', @@ -737,6 +738,7 @@ URL: [url]', 'lock_document' => 'ລັອກ', 'lock_message' => 'ເອກະສານນີ້ຖືກລັອກໂດຍ [username] ສະເພາະຜູ້ໄຊ້ທີ່ໄດ້ຮັບອະນຸຍາດເທົ່ານັ້ນທີ່ສາມາດປົດລັອກເອກະສານນີ້ໄດ້', 'lock_status' => 'ສະຖານະ', +'logfile_loading' => '', 'login' => 'ເຂົ້າສຸ່ລະບົບ', 'login_disabled_text' => 'ບັນຊີຂອງເຈົ້າໄດ້ຖືກປິດໄຊ້ງານອາດເປັນເພາະການລັອກອິນເຂົ້າລະບົບລົ້ມເຫຼວຫລາຍຄັ້ງເກີນໄປ', 'login_disabled_title' => 'ບັນຊີຖືກປິດໄຊ້ງານ', @@ -827,6 +829,7 @@ URL: [url]', 'next_state' => 'ລັດໄຫມ່', 'nl_NL' => 'ດັສ', 'no' => 'ບໍ່', +'notification' => '', 'notify_added_email' => 'ເຈົ້າໄດ້ຮັບການເພີ່ມລາຍຊື່ລົງໃນການແຈ້ງເຕືອນແລ້ວ', 'notify_added_email_body' => 'ເພີ່ມລົງໃນລາຍການແຈ້ງເຕືອນແລ້ວ ຊື່: [name] @@ -850,6 +853,7 @@ URL: [url]', 'no_current_version' => 'ເຈົ້າກຳລັງນຳໄຊ້ເວີຊັນເກົ່າຄື ຊິສ DMS. ສວນເວີຊັນທີ່ມີຢູ່ລ້າສຸດຄື [latestversion]', 'no_default_keywords' => 'ບໍ່ມີຄຳຫລັກ', 'no_docs_checked_out' => 'ບໍ່ມີເອກະສານທີ່ເອົາອອກໄປ', +'no_docs_expired' => '', 'no_docs_locked' => 'ເອກະສານທີ່ບໍຖືກລັອກ', 'no_docs_needs_correction' => '', 'no_docs_rejected' => 'ບໍ່ມີເອກະສານທີຖືກປະຕິເສດ', @@ -1576,6 +1580,7 @@ URL: [url]', 'settings_workflowMode' => 'ໂຫມດການເຮັດວຽກ', 'settings_workflowMode_desc' => 'ເວີກໂຟລຂັນສູງຊ່ວຍໃນການລະບຸເວີກໂຟລການເປີດຕົວຂອງເຈົ້າເອງສຳລັບເວີຊັນຂອງເອກະສານ', 'settings_workflowMode_valadvanced' => 'ຕຳແຫນ່ງສູງ', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'ແບບດັງເດີມ', 'settings_workflowMode_valtraditional_only_approval' => 'ແບບດັງເດີມ ບໍ່ມີການກວດກາ', 'settings_zendframework' => 'ເຊັນກອບຂອງງງານ', @@ -1590,6 +1595,7 @@ URL: [url]', 'sign_in' => 'ລົງຊື່ເຂົາໄຊ້', 'sign_out' => 'ອອກຈາກລະບົບ', 'sign_out_user' => 'ອອກຈາກລະບົບຜູ້ໄຊ້', +'site_brand' => '', 'sk_SK' => 'ສະໂລວາເກຍ', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1714,9 +1720,13 @@ URL: [url]', 'switched_to' => 'ປ່ຽນເປັນ', 'takeOverAttributeValue' => 'ໄຊ້ແອັດທີບິວຈາກເວີຊັ້ນລາສຸດ', 'takeOverGrpApprover' => 'ກຸ່ມຜູ້ອະນຸມັກຈາກເວີຊັ້ນລ່າສຸດ', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'ໄຊ້ກຸ່ມຜູ້ກວດສອບຈາກເວີຊັນລ້າສຸດ', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'ຮັບອານຸມັດຈາກເວີຊັນລ່າສຸດ', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'ການກວດສອບແຕ່ລະບຸກຄົນຈາກເວີຊັ້ນລ່າສຸດ', +'takeOverIndReviewers' => '', 'tasks' => 'ງານ', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 8b42c8adf..d347f9f6e 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -588,6 +588,7 @@ Gebruiker: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Folder hernoemd', 'folder_title' => 'Map naam \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Bijwerken', 'friday' => 'Vrijdag', 'friday_abbr' => 'FR', @@ -732,6 +733,7 @@ URL: [url]', 'lock_document' => 'Blokkeer', 'lock_message' => 'Dit document is geblokkeerd door [username]. Alleen geautoriseerde Gebruikers kunnen het de-blokeren.', 'lock_status' => 'Status', +'logfile_loading' => '', 'login' => 'Login', 'login_disabled_text' => 'Uw account is gedeactiveerd, mogelijk door teveel foutieve inlogpogingen.', 'login_disabled_title' => 'Account is gedeactiveerd', @@ -821,6 +823,7 @@ URL: [url]', 'next_state' => 'Nieuwe status', 'nl_NL' => 'Nederlands', 'no' => 'Nee', +'notification' => '', 'notify_added_email' => 'U bent toegevoegd aan de [notificatie lijst]', 'notify_added_email_body' => 'Toegevoegd aan notificatielijst Naam: [name] @@ -844,6 +847,7 @@ URL: [url]', 'no_current_version' => 'U werkt met een oude versie van SeedDMS. De laatste versie beschikbaar is [latestversion].', 'no_default_keywords' => 'Geen Sleutelwoorden beschikbaar', 'no_docs_checked_out' => 'Geen documenten in gebruik genomen', +'no_docs_expired' => '', 'no_docs_locked' => 'Geen documenten in gebruik.', 'no_docs_needs_correction' => '', 'no_docs_rejected' => 'Geen documenten geweigerd', @@ -1573,6 +1577,7 @@ Name: [username] 'settings_workflowMode' => 'Workflow mode', 'settings_workflowMode_desc' => 'De uitgebreide workflow maakt het mogelijk om uw eigen workflow op te geven voor documentversies.', 'settings_workflowMode_valadvanced' => 'geavanceerd', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'Traditioneel', 'settings_workflowMode_valtraditional_only_approval' => 'Traditioneel (zonder beoordeling)', 'settings_zendframework' => 'Zend-Framework', @@ -1587,6 +1592,7 @@ Name: [username] 'sign_in' => 'Log in', 'sign_out' => 'Log uit', 'sign_out_user' => 'Log gebruiker uit', +'site_brand' => '', 'sk_SK' => 'Slowaaks', 'sort_by_date' => 'Sorteren op datum', 'sort_by_name' => 'Sorteren op naam', @@ -1711,9 +1717,13 @@ Name: [username] 'switched_to' => 'Overgeschakeld naar', 'takeOverAttributeValue' => 'Onthoud de waarde van het attribuut', 'takeOverGrpApprover' => 'Onthoud de laatste groep goedkeurders', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Onthoud de laatste groep herzieners', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Onthoud de laatste groep individuele goedkeurders', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Onthoud de laatste groep individuele herzieners', +'takeOverIndReviewers' => '', 'tasks' => 'taken', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index e9f01958a..9ee4f19af 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -576,6 +576,7 @@ Użytkownik: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Zmiana nazwy folderu', 'folder_title' => 'Folder \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Aktualizacja', 'friday' => 'Piątek', 'friday_abbr' => 'Fr', @@ -720,6 +721,7 @@ URL: [url]', 'lock_document' => 'Zablokuj', 'lock_message' => 'Ten dokument jest zablokowany przez [username]. Tylko uprawnieni użytkownicy mogą odblokować dokument.', 'lock_status' => 'Status', +'logfile_loading' => '', 'login' => 'Login', 'login_disabled_text' => 'Twoje konto jest zablokowane. Prawdopodobnie z powodu zbyt wielu nieudanych prób logowania.', 'login_disabled_title' => 'Konto jest zablokowane', @@ -810,6 +812,7 @@ URL: [url]', 'next_state' => 'Nowy status', 'nl_NL' => 'holenderski', 'no' => 'Nie', +'notification' => '', 'notify_added_email' => 'Twoje konto zostało dodane do listy powiadomień', 'notify_added_email_body' => 'Dodano do listy powiadomień Nazwa: [name] @@ -833,6 +836,7 @@ URL: [url]', 'no_current_version' => '', 'no_default_keywords' => 'Nie ma słów kluczowych', 'no_docs_checked_out' => '', +'no_docs_expired' => '', 'no_docs_locked' => 'Brak zablokowanych dokumentów.', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1507,6 +1511,7 @@ URL: [url]', 'settings_workflowMode' => 'Tryb procesu', 'settings_workflowMode_desc' => 'Zaawansowany proces pozwala określić własne release procesu zwalniający dla wersji dokumentu.', 'settings_workflowMode_valadvanced' => 'zaawansowane', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'tradycyjny', 'settings_workflowMode_valtraditional_only_approval' => '', 'settings_zendframework' => 'Zend Framework', @@ -1521,6 +1526,7 @@ URL: [url]', 'sign_in' => 'Zaloguj się', 'sign_out' => 'Wyloguj', 'sign_out_user' => 'Wyloguj użytkownika', +'site_brand' => '', 'sk_SK' => 'słowacki', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1645,9 +1651,13 @@ URL: [url]', 'switched_to' => 'Przełączone na', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => '', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => '', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => '', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => '', +'takeOverIndReviewers' => '', 'tasks' => '', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 9e264c39f..42934534f 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -614,6 +614,7 @@ Usuário: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Pasta renomeada', 'folder_title' => 'Pasta [foldername]', +'foot_note' => '', 'force_update' => 'Atualizar', 'friday' => 'Sexta-feira', 'friday_abbr' => 'Se', @@ -758,6 +759,7 @@ URL: [url]', 'lock_document' => 'Travar', 'lock_message' => 'Este documento foi travado por [username]. Somente usuários autorizados podem remover a trava deste documento (veja no final da página).', 'lock_status' => 'Estado', +'logfile_loading' => '', 'login' => 'Login', 'login_disabled_text' => 'Sua conta está desativada, provavelmente por causa de muitos logins falhos.', 'login_disabled_title' => 'Conta desativada', @@ -847,6 +849,7 @@ URL: [url]', 'next_state' => 'Novo estado', 'nl_NL' => 'Holandês', 'no' => 'Não', +'notification' => '', 'notify_added_email' => 'Você foi adicionado a lista de notificação', 'notify_added_email_body' => 'Adicionado a lista de notificação Nome: [name] @@ -870,6 +873,7 @@ URL: [url]', 'no_current_version' => 'Você está executando uma versão antiga do SeedDMS. A última versão disponível é [latestversion].', 'no_default_keywords' => 'não há palavras-chave disponíveis', 'no_docs_checked_out' => 'Nenhum documento retirado', +'no_docs_expired' => '', 'no_docs_locked' => 'Nenhum documento bloqueado.', 'no_docs_needs_correction' => 'Nenhum documento que precise ser corrigido', 'no_docs_rejected' => 'Nenhum documento rejeitado.', @@ -1595,6 +1599,7 @@ Nome: [username] 'settings_workflowMode' => 'Modo de fluxo de trabalho', 'settings_workflowMode_desc' => 'O fluxo de trabalho avançado permite especificar seu próprio fluxo de trabalho de liberação de versões de documentos.', 'settings_workflowMode_valadvanced' => 'avançado', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'tradicional', 'settings_workflowMode_valtraditional_only_approval' => 'tradicional (sem revisão)', 'settings_zendframework' => 'Zend Framework', @@ -1609,6 +1614,7 @@ Nome: [username] 'sign_in' => 'Entrar', 'sign_out' => 'Sair', 'sign_out_user' => 'Sair usuário', +'site_brand' => '', 'sk_SK' => 'Eslovaco', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1733,9 +1739,13 @@ Nome: [username] 'switched_to' => 'Comutado para', 'takeOverAttributeValue' => 'Assuma o valor do atributo da última versão', 'takeOverGrpApprover' => 'Assuma o grupo de aprovadores da última versão.', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Assuma o grupo de revisores da última versão.', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Assumir o aprovador individual da última versão.', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Assuma o revisor individual da última versão.', +'takeOverIndReviewers' => '', 'tasks' => 'Tarefas', 'task_description' => 'Descrição', 'task_disabled' => 'Desativado', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index f074695a5..71bc8d059 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -588,6 +588,7 @@ Utilizator: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Folder redenumit', 'folder_title' => 'Folder \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Actualizeaza', 'friday' => 'Vineri', 'friday_abbr' => 'Vi', @@ -732,6 +733,7 @@ URL: [url]', 'lock_document' => 'Blocare', 'lock_message' => 'Acest document este blocat de [username]. Numai utilizatorii autorizați pot debloca acest document.', 'lock_status' => 'Status', +'logfile_loading' => '', 'login' => 'Login', 'login_disabled_text' => 'Contul dumneavoastră este dezactivat, probabil din cauza prea multor login-uri eșuate.', 'login_disabled_title' => 'Contul este dezactivat', @@ -822,6 +824,7 @@ URL: [url]', 'next_state' => 'Stare nouă', 'nl_NL' => 'Olandeză', 'no' => 'Nu', +'notification' => '', 'notify_added_email' => 'Ai fost adăugat la lista de notificări', 'notify_added_email_body' => 'Adăugat la lista de notificări Nume: [name] @@ -845,6 +848,7 @@ URL: [url]', 'no_current_version' => 'Utilizați o versiune veche de SeedDMS. Cea mai recentă versiune disponibilă este [latestversion].', 'no_default_keywords' => 'Nu există cuvinte cheie disponibile', 'no_docs_checked_out' => 'Nu exista documente verificate', +'no_docs_expired' => '', 'no_docs_locked' => 'Nici un document blocat.', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1550,6 +1554,7 @@ URL: [url]', 'settings_workflowMode' => 'Mod Workflow', 'settings_workflowMode_desc' => 'Workflow-ul avansat permite să specificați propriul flux de lucru(workflow) pentru versiunile de documente.', 'settings_workflowMode_valadvanced' => 'avansat', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'traditional', 'settings_workflowMode_valtraditional_only_approval' => 'traditional (fara revizuire)', 'settings_zendframework' => 'Zend Framework', @@ -1564,6 +1569,7 @@ URL: [url]', 'sign_in' => 'Sign in', 'sign_out' => 'Sign out', 'sign_out_user' => 'Sign out utilizator', +'site_brand' => '', 'sk_SK' => 'Slovacă', 'sort_by_date' => 'Sortare dupa data', 'sort_by_name' => 'Sortare dupa nume', @@ -1688,9 +1694,13 @@ URL: [url]', 'switched_to' => 'Comutat pe', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => 'Preia grupul de aprobatori din ultima versiune.', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Preia grupul de revizuitori din ultima versiune.', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Preia aprobatorul individual din ultima versiune.', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Preia revizuitorul individual din ultima versiune.', +'takeOverIndReviewers' => '', 'tasks' => '', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index f8ea3b82c..90054b316 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -588,6 +588,7 @@ URL: [url]', URL: [url]', 'folder_renamed_email_subject' => '[sitename]: переименован каталог «[name]»', 'folder_title' => 'Каталог [foldername]', +'foot_note' => '', 'force_update' => '', 'friday' => 'Пятница', 'friday_abbr' => 'Пт', @@ -732,6 +733,7 @@ URL: [url]', 'lock_document' => 'Заблокировать', 'lock_message' => 'Документ заблокировал(а) [username]. Только имеющие права могут его разблокировать.', 'lock_status' => 'Статус', +'logfile_loading' => '', 'login' => 'Логин', 'login_disabled_text' => 'Ваша учётная запись заблокирована, возможно, из-за нескольких неудачных попыток входа.', 'login_disabled_title' => 'Учётная запись заблокирована', @@ -821,6 +823,7 @@ URL: [url]', 'next_state' => 'Новое состояние', 'nl_NL' => 'Dutch', 'no' => 'Нет', +'notification' => '', 'notify_added_email' => 'Вы добавлены в список уведомлений', 'notify_added_email_body' => 'Вы добавлены в список уведомлений Имя: [name] @@ -844,6 +847,7 @@ URL: [url]', 'no_current_version' => 'Вы используете старую версию SeedDMS. Последняя доступная версия [latestversion].', 'no_default_keywords' => 'Нет меток', 'no_docs_checked_out' => 'Нет документов на рассмотрении', +'no_docs_expired' => '', 'no_docs_locked' => 'Нет заблокированных документов', 'no_docs_needs_correction' => '', 'no_docs_rejected' => 'Нет отклоненных докуметов', @@ -1557,6 +1561,7 @@ URL: [url]', 'settings_workflowMode' => 'Режим процесса', 'settings_workflowMode_desc' => 'Улучшенный режим позволяет указать ваш собственный процесс для документа.', 'settings_workflowMode_valadvanced' => 'улучшенный', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'традиционный', 'settings_workflowMode_valtraditional_only_approval' => 'традиционный (без рецензирования)', 'settings_zendframework' => 'Инфраструктура Zend', @@ -1571,6 +1576,7 @@ URL: [url]', 'sign_in' => 'Войти', 'sign_out' => 'Выйти', 'sign_out_user' => 'Пользовательский выход', +'site_brand' => '', 'sk_SK' => 'Slovak', 'sort_by_date' => 'Сортировка по дате', 'sort_by_name' => 'Сортировка по имени', @@ -1695,9 +1701,13 @@ URL: [url]', 'switched_to' => 'Переключён как', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => 'Использовать группу утверждающих из прошлой версии', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Использовать группу рецензентов из прошлой версии', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Использовать утверждающих из прошлой версии', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Использовать рецензентов из прошлой версии', +'takeOverIndReviewers' => '', 'tasks' => 'Задания', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index d85348683..6e1071be1 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -614,6 +614,7 @@ Používateľ: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Zložka bola premenovaná', 'folder_title' => 'Zložka \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Aktualizovať', 'friday' => 'Piatok', 'friday_abbr' => 'Pia', @@ -758,6 +759,7 @@ URL: [url]', 'lock_document' => 'Zamknúť', 'lock_message' => 'Tento dokument zamkol [username]. Iba oprávnení používatelia ho môžu odomknúť.', 'lock_status' => 'Stav', +'logfile_loading' => '', 'login' => 'Prihlásiť sa', 'login_disabled_text' => 'Váš účet bol zablokovaný, pravdepodobne veľa pokusov o prihlásenie zlyhalo.', 'login_disabled_title' => 'Účet je zablokovaný', @@ -848,6 +850,7 @@ URL: [url]', 'next_state' => 'Nový stav', 'nl_NL' => 'Holandština', 'no' => 'Nie', +'notification' => '', 'notify_added_email' => 'Boli ste pridaní do notifikačného zoznamu', 'notify_added_email_body' => 'Pridanie do notifikačného zoznamu Meno: [name] @@ -871,6 +874,7 @@ URL: [url]', 'no_current_version' => 'Neaktualizovaná verzia', 'no_default_keywords' => 'Nie sú dostupné žiadne kľúčové slová.', 'no_docs_checked_out' => 'No documents checked out', +'no_docs_expired' => '', 'no_docs_locked' => 'Žiadne uzamknuté dokumenty.', 'no_docs_needs_correction' => 'Žiadne dokumenty potrebné opraviť', 'no_docs_rejected' => 'Žiadne dokumenty neboli zamietnuté.', @@ -1597,6 +1601,7 @@ Meno: [username] 'settings_workflowMode' => 'Workflow mode', 'settings_workflowMode_desc' => 'The advanced workflow allows to specify your own release workflow for document versions.', 'settings_workflowMode_valadvanced' => 'pokročilý', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'traditional', 'settings_workflowMode_valtraditional_only_approval' => 'traditional (without review)', 'settings_zendframework' => 'Zend Framework', @@ -1611,6 +1616,7 @@ Meno: [username] 'sign_in' => 'Prihlásiť sa', 'sign_out' => 'odhlásiť', 'sign_out_user' => 'Odhlásiť používateľa', +'site_brand' => '', 'sk_SK' => 'Slovenčina', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1735,9 +1741,13 @@ Meno: [username] 'switched_to' => 'Prepnúť na', 'takeOverAttributeValue' => 'Take over attribute value from last version', 'takeOverGrpApprover' => 'Take over group of approvers from last version.', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Take over group of reviewers from last version.', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Take over individual approver from last version.', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Take over individual reviewer from last version.', +'takeOverIndReviewers' => '', 'tasks' => 'Úlohy', 'task_description' => 'Description', 'task_disabled' => 'Disabled', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index 9bb89509a..2993cc3f7 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -601,6 +601,7 @@ User: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Katalog har bytt namn', 'folder_title' => 'Katalog \'[foldername]\'', +'foot_note' => '', 'force_update' => '', 'friday' => 'Fredag', 'friday_abbr' => 'Fr', @@ -745,6 +746,7 @@ URL: [url]', 'lock_document' => 'Lås', 'lock_message' => 'Detta dokument har låsts av [username]. Bara auktoriserade användare kan låsa upp dokumentet.', 'lock_status' => 'Status', +'logfile_loading' => '', 'login' => 'Inloggning', 'login_disabled_text' => 'Ditt konto är inaktivt, förmodligen för att du har överskridit antalet tillåtna inloggningsförsök.', 'login_disabled_title' => 'Kontot är inaktivt', @@ -835,6 +837,7 @@ URL: [url]', 'next_state' => 'Ny status', 'nl_NL' => 'Holländska', 'no' => 'Nej', +'notification' => '', 'notify_added_email' => 'Du har lagts till för att få meddelanden', 'notify_added_email_body' => 'Tillägg för att få meddelanden Namn: [name] @@ -858,6 +861,7 @@ URL: [url]', 'no_current_version' => 'Du har en gammal version av SeedDMS. Senaste versionen är [latestversion].', 'no_default_keywords' => 'Inga nyckelord tillgängliga', 'no_docs_checked_out' => 'Inga utcheckade dokument', +'no_docs_expired' => '', 'no_docs_locked' => 'Inga låsta dokument.', 'no_docs_needs_correction' => '', 'no_docs_rejected' => 'Det finns inga avvisade dokument.', @@ -1570,6 +1574,7 @@ Kommentar: [comment]', 'settings_workflowMode' => 'Typ av arbetsflöde', 'settings_workflowMode_desc' => 'Det avancerade arbetsflödet gör det möjligt att lägga upp ett eget definerat gransknings- och godkännandeflöde för dokumentversioner.', 'settings_workflowMode_valadvanced' => 'avancerat', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'traditionellt', 'settings_workflowMode_valtraditional_only_approval' => 'traditionellt (utan granskning)', 'settings_zendframework' => 'Zend Framework', @@ -1584,6 +1589,7 @@ Kommentar: [comment]', 'sign_in' => 'Logga in', 'sign_out' => 'Logga ut', 'sign_out_user' => 'Logga ut användare', +'site_brand' => '', 'sk_SK' => 'Slovakiska', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1708,9 +1714,13 @@ Kommentar: [comment]', 'switched_to' => 'Bytt till', 'takeOverAttributeValue' => 'Ta över attributvärde från senaste version', 'takeOverGrpApprover' => 'Ta över godkännandegrupp från senaste version', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Ta över granskningsgrupp från senaste version', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Ta över individuell godkännare från senaste version', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Ta över individuell granskare från senaste version', +'takeOverIndReviewers' => '', 'tasks' => 'Uppgifter', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 290652111..0269e842c 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 (1089), aydin (83) +// Translators: Admin (1091), aydin (83) $text = array( '2_factor_auth' => '', @@ -582,6 +582,7 @@ Kullanıcı: [username] URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - Klasörün adı değişti', 'folder_title' => 'Klasör \'[foldername]\'', +'foot_note' => '', 'force_update' => 'Güncelendi', 'friday' => 'Cuma', 'friday_abbr' => 'Cu', @@ -726,6 +727,7 @@ URL: [url]', 'lock_document' => 'Kilitle', 'lock_message' => 'Bu doküman [username] tarafından kilitlenmiştir. Sadece yetkilendirilmiş kişiler bu dokümanı açabilirler.', 'lock_status' => 'Durum', +'logfile_loading' => '', 'login' => 'Giriş', 'login_disabled_text' => 'Hesabınız devre dışı. Muhtemelen çok fazla hatalı giriş denemesi yapıldı.', 'login_disabled_title' => 'Hesap devre dışı', @@ -816,6 +818,7 @@ URL: [url]', 'next_state' => 'Yeni durum', 'nl_NL' => 'Hollandaca', 'no' => 'Hayır', +'notification' => '', 'notify_added_email' => 'Bildirim listesine eklendiniz', 'notify_added_email_body' => 'Bildirim listesine eklendiniz İsim: [name] @@ -839,6 +842,7 @@ URL: [url]', 'no_current_version' => 'Kullandığınız SeedDMS versiyonu eski görünüyor. Son versiyon [latestversion].', 'no_default_keywords' => 'Anahtar kelime yok', 'no_docs_checked_out' => '', +'no_docs_expired' => '', 'no_docs_locked' => 'Kilitli doküman yok.', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1189,7 +1193,7 @@ URL: [url]', 'settings_autoLoginUser' => 'otomatik giriş', 'settings_autoLoginUser_desc' => '', 'settings_available_languages' => 'kullanılabilir diller', -'settings_available_languages_desc' => '', +'settings_available_languages_desc' => 'Sil seçim kutucuğunda yalnızca seçili diller yüklenecek ve görüntülenecektir.', 'settings_backupDir' => '', 'settings_backupDir_desc' => '', 'settings_cacheDir' => 'Cache klasörü', @@ -1411,7 +1415,7 @@ URL: [url]', 'settings_Notification' => 'Bildirim ayarları', 'settings_notwritable' => 'Konfigürasyon dosyası yazılabilir olmadığından ayarlar kaydedilmeyecek.', 'settings_no_content_dir' => 'İçerik dizini', -'settings_onePageMode' => '', +'settings_onePageMode' => 'Tek sayfa modu', 'settings_onePageMode_desc' => '', 'settings_overrideMimeType' => '', 'settings_overrideMimeType_desc' => '', @@ -1529,6 +1533,7 @@ URL: [url]', 'settings_workflowMode' => 'İş Akış Modu', 'settings_workflowMode_desc' => 'Gelişmiş İş Akışı, dokümün versiyonları için kendi sürümlerinizi belirlemenizi sağlar.', 'settings_workflowMode_valadvanced' => 'gelişmiş', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'geleneksel', 'settings_workflowMode_valtraditional_only_approval' => 'Geleneksel(Ödülsüz)', 'settings_zendframework' => 'Zend Framework', @@ -1543,6 +1548,7 @@ URL: [url]', 'sign_in' => 'Giriş', 'sign_out' => 'Çıkış', 'sign_out_user' => 'Kullanıcı hesabından çıkış', +'site_brand' => '', 'sk_SK' => 'Slovakça', 'sort_by_date' => 'Tarihe göre sırala', 'sort_by_name' => 'Ada göre sırala', @@ -1667,9 +1673,13 @@ URL: [url]', 'switched_to' => 'Yerine geçilen', 'takeOverAttributeValue' => 'Son versiyondaki özellikleri devral', 'takeOverGrpApprover' => 'Bir önceki versiyon onayını yapan grubu al.', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Bir önceki versiyon kontrolünü yapan grubu al.', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Bir önceki versiyonu onaylayanı al.', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Bir önceki versiyonu kontrol edeni al.', +'takeOverIndReviewers' => '', 'tasks' => '', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 6358e0149..65a340b61 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -588,6 +588,7 @@ URL: [url]', URL: [url]', 'folder_renamed_email_subject' => '[sitename]: перейменовано каталог «[name]»', 'folder_title' => 'Каталог [foldername]', +'foot_note' => '', 'force_update' => '', 'friday' => 'П\'ятниця', 'friday_abbr' => 'Пт', @@ -732,6 +733,7 @@ URL: [url]', 'lock_document' => 'Заблокувати', 'lock_message' => 'Документ заблокував користувач [username]. Тільки користувачі, які мають відповідні права, можуть його розблокувати.', 'lock_status' => 'Статус', +'logfile_loading' => '', 'login' => 'Логін', 'login_disabled_text' => 'Ваш обліковий запис заблоковано, можливо, через кілька невдалих спроб входу.', 'login_disabled_title' => 'Обліковий запис заблоковано', @@ -821,6 +823,7 @@ URL: [url]', 'next_state' => 'Новий стан', 'nl_NL' => 'Dutch', 'no' => 'Ні', +'notification' => '', 'notify_added_email' => 'Вас додали до списку сповіщення', 'notify_added_email_body' => 'Вас додали до списку сповіщення Назва: [name] @@ -844,6 +847,7 @@ URL: [url]', 'no_current_version' => 'Ви використовуєте застарілу версію SeedDMS. Остання версія [latestversion].', 'no_default_keywords' => 'Немає ключових слів', 'no_docs_checked_out' => 'Немає документів на опрацюванні', +'no_docs_expired' => '', 'no_docs_locked' => 'Немає заблокованих документів', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1550,6 +1554,7 @@ URL: [url]', 'settings_workflowMode' => 'Режим процесу', 'settings_workflowMode_desc' => 'Покращений режим дозволяє вказати ваш власний процес для документа.', 'settings_workflowMode_valadvanced' => 'покращений', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => 'традиційний', 'settings_workflowMode_valtraditional_only_approval' => 'традиційний (без рецензування)', 'settings_zendframework' => 'Інфраструктура Zend', @@ -1564,6 +1569,7 @@ URL: [url]', 'sign_in' => 'Увійти', 'sign_out' => 'Вийти', 'sign_out_user' => 'Вихід користувача', +'site_brand' => '', 'sk_SK' => 'Slovak', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1688,9 +1694,13 @@ URL: [url]', 'switched_to' => 'Переключено на', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => 'Використати групу затверджувачів з попередньої версії', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => 'Використати групу рецензентів з попередньої версії', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => 'Використати затверджувачів з попередньої версії', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => 'Використати рецензентів з попередньої версії', +'takeOverIndReviewers' => '', 'tasks' => 'Завдання', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index dfb71351d..b7997a58e 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -584,6 +584,7 @@ URL: [url]', URL: [url]', 'folder_renamed_email_subject' => '[sitename]: [name] - 文件夹已重命名', 'folder_title' => '文件夹 \'[foldername]\'', +'foot_note' => '', 'force_update' => '强制更新', 'friday' => 'Friday', 'friday_abbr' => '', @@ -728,6 +729,7 @@ URL: [url]', 'lock_document' => '锁定', 'lock_message' => '此文档已被 [username] 锁定. 只有授权用户才能解锁.', 'lock_status' => '锁定状态', +'logfile_loading' => '', 'login' => '登录', 'login_disabled_text' => '', 'login_disabled_title' => '账号已禁用', @@ -818,6 +820,7 @@ URL: [url]', 'next_state' => '新建状态', 'nl_NL' => '荷兰语', 'no' => '否', +'notification' => '', 'notify_added_email' => '您已被添加到了通知名单中', 'notify_added_email_body' => '添加到通知列表 名称: [name] @@ -841,6 +844,7 @@ URL: [url]', 'no_current_version' => '', 'no_default_keywords' => '无关键字', 'no_docs_checked_out' => '文档未签出', +'no_docs_expired' => '', 'no_docs_locked' => '无锁定的文档', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -1531,6 +1535,7 @@ URL: [url]', 'settings_workflowMode' => '工作流模式', 'settings_workflowMode_desc' => '', 'settings_workflowMode_valadvanced' => '先进...', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => '传统', 'settings_workflowMode_valtraditional_only_approval' => '', 'settings_zendframework' => '', @@ -1545,6 +1550,7 @@ URL: [url]', 'sign_in' => '登录', 'sign_out' => '登出', 'sign_out_user' => '退出登录', +'site_brand' => '', 'sk_SK' => '斯洛伐克语', 'sort_by_date' => '日期排序', 'sort_by_name' => '文件名排序', @@ -1669,9 +1675,13 @@ URL: [url]', 'switched_to' => '登录为', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => '继承上一版本的审核人', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => '继承上一版本的校对人', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => '', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => '', +'takeOverIndReviewers' => '', 'tasks' => '任务', 'task_description' => '', 'task_disabled' => '', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 02d6819c4..5667b8aa7 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/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 (2421) +// Translators: Admin (2423) $text = array( '2_factor_auth' => '', @@ -509,6 +509,7 @@ URL: [url]', 'folder_renamed_email_body' => '', 'folder_renamed_email_subject' => '', 'folder_title' => '資料夾 \'[foldername]\'', +'foot_note' => '', 'force_update' => '更新', 'friday' => 'Friday', 'friday_abbr' => '', @@ -653,6 +654,7 @@ URL: [url]', 'lock_document' => '鎖定', 'lock_message' => '此文檔已被 [username] 鎖定. 只有授權使用者才能解鎖.', 'lock_status' => '鎖定狀態', +'logfile_loading' => '', 'login' => '', 'login_disabled_text' => '', 'login_disabled_title' => '', @@ -727,6 +729,7 @@ URL: [url]', 'next_state' => '', 'nl_NL' => '荷蘭語', 'no' => '否', +'notification' => '', 'notify_added_email' => '您已被添加到了通知名單中', 'notify_added_email_body' => '', 'notify_added_email_subject' => '', @@ -742,6 +745,7 @@ URL: [url]', 'no_current_version' => '', 'no_default_keywords' => '無關鍵字', 'no_docs_checked_out' => '', +'no_docs_expired' => '', 'no_docs_locked' => '無鎖定的文檔', 'no_docs_needs_correction' => '', 'no_docs_rejected' => '', @@ -807,7 +811,7 @@ URL: [url]', 'pl_PL' => '波蘭語', 'possible_substitutes' => '', 'preset_expires' => '', -'preview' => '', +'preview' => '預覽', 'preview_converters' => '', 'preview_images' => '', 'preview_markdown' => '', @@ -1380,6 +1384,7 @@ URL: [url]', 'settings_workflowMode' => '', 'settings_workflowMode_desc' => '', 'settings_workflowMode_valadvanced' => '先進...', +'settings_workflowMode_valnone' => '', 'settings_workflowMode_valtraditional' => '傳統', 'settings_workflowMode_valtraditional_only_approval' => '', 'settings_zendframework' => '', @@ -1394,6 +1399,7 @@ URL: [url]', 'sign_in' => '', 'sign_out' => '登出', 'sign_out_user' => '', +'site_brand' => '', 'sk_SK' => '斯洛伐克語', 'sort_by_date' => '', 'sort_by_name' => '', @@ -1518,9 +1524,13 @@ URL: [url]', 'switched_to' => '', 'takeOverAttributeValue' => '', 'takeOverGrpApprover' => '', +'takeOverGrpApprovers' => '', 'takeOverGrpReviewer' => '', +'takeOverGrpReviewers' => '', 'takeOverIndApprover' => '', +'takeOverIndApprovers' => '', 'takeOverIndReviewer' => '從上個版本接管個別審稿人', +'takeOverIndReviewers' => '', 'tasks' => '', 'task_description' => '', 'task_disabled' => '', @@ -1559,7 +1569,7 @@ URL: [url]', 'toggle_qrcode' => '', 'to_before_from' => '', 'transfer_content' => '', -'transfer_document' => '', +'transfer_document' => '傳送檔案', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', 'transfer_objects' => '', From efec0c36bf98193a75cc5f7e1078f5faa28aa923 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Feb 2020 12:19:16 +0100 Subject: [PATCH 382/467] add method getWrongFiletypeDocumentContent() --- SeedDMS_Core/Core/inc.ClassDMS.php | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index 58720b1a7..ed6e10995 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -3567,6 +3567,46 @@ class SeedDMS_Core_DMS { } /* }}} */ + /** + * Returns document content which has the incorrect file type + * + * This method is for finding document content with an incorrect + * or missing file type. It just checks documents contents + * with a certain mime type. + * @return bool|SeedDMS_Core_Document[] + */ + function getWrongFiletypeDocumentContent() { /* {{{ */ + $queryStr = "SELECT * FROM `tblDocumentContent` WHERE `mimeType` in ('application/pdf', 'image/png', 'image/gif', 'image/jpg')"; + $resArr = $this->db->getResultArray($queryStr); + if ($resArr === false) + return false; + + /** @var SeedDMS_Core_Document[] $versions */ + $versions = array(); + foreach($resArr as $row) { + $expect = ''; + switch($row['mimeType']) { + case "application/pdf": + case "image/png": + case "image/gif": + case "image/jpg": + $expect = substr($row['mimeType'], -3, 3); + break; + } + if($expect) { + if($row['fileType'] != '.'.$expect) { + /** @var SeedDMS_Core_Document $document */ + $document = new $this->classnames['document']($row['document'], '', '', '', '', '', '', '', '', '', '', ''); + $document->setDMS($this); + $version = new $this->classnames['documentcontent']($row['id'], $document, $row['version'], $row['comment'], $row['date'], $row['createdBy'], $row['dir'], $row['orgFileName'], $row['fileType'], $row['mimeType'], $row['fileSize'], $row['checksum']); + $versions[] = $version; + } + } + } + return $versions; + + } /* }}} */ + /** * Returns document content which is duplicated * From 9b2482759897d6bfe6ebbb7aebd9c7b90e14e751 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Feb 2020 12:19:43 +0100 Subject: [PATCH 383/467] add new method setFileType() --- SeedDMS_Core/Core/inc.ClassDocument.php | 34 +++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php index 56b2c86bc..513c4af71 100644 --- a/SeedDMS_Core/Core/inc.ClassDocument.php +++ b/SeedDMS_Core/Core/inc.ClassDocument.php @@ -3491,6 +3491,40 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */ return true; } /* }}} */ + /** + * Set file type by evaluating the mime type + */ + function setFileType() { /* {{{ */ + $mimetype = $this->getMimeType(); + + switch($this->_mimeType) { + case "application/pdf": + case "image/png": + case "image/gif": + case "image/jpg": + $expect = substr($this->_mimeType, -3, 3); + break; + } + if($expect && '.'.$expect != $this->_fileType) { + $db = $this->_document->getDMS()->getDB(); + $db->startTransaction(); + $queryStr = "UPDATE `tblDocumentContent` SET `fileType`='.".$expect."' WHERE `id` = ". $this->_id; + $res = $db->getResult($queryStr); + if ($res) { + if(!SeedDMS_Core_File::renameFile($this->_dms->contentDir.$this->_document->getDir() . $this->_version . $this->_fileType, $this->_dms->contentDir.$this->_document->getDir() . $this->_version . '.' . $expect)) { + $db->rollbackTransaction(); + } else { + $db->commitTransaction(); + return true; + } + } else { + $db->rollbackTransaction(); + } + } + + return false; + } /* }}} */ + function setComment($newComment) { /* {{{ */ $db = $this->_document->getDMS()->getDB(); From 450bdc0b7f4ba64bd0b93c0b13e000ecc6a1f575 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 13 Feb 2020 12:20:16 +0100 Subject: [PATCH 384/467] add check for wrong file type, fix repairing of checksum and filesize --- out/out.ObjectCheck.php | 12 ++++ views/bootstrap/class.ObjectCheck.php | 98 +++++++++++++++++++++------ 2 files changed, 91 insertions(+), 19 deletions(-) diff --git a/out/out.ObjectCheck.php b/out/out.ObjectCheck.php index 4fb1235b9..2d69e2b6a 100644 --- a/out/out.ObjectCheck.php +++ b/out/out.ObjectCheck.php @@ -66,6 +66,12 @@ if(isset($_GET['setchecksum']) && $_GET['setchecksum'] == 1) { $setchecksum = 0; } +if(isset($_GET['setfiletype']) && $_GET['setfiletype'] == 1) { + $setfiletype = 1; +} else { + $setfiletype = 0; +} + $folder = $dms->getFolder($settings->_rootFolderID); $unlinkedversions = $dms->getUnlinkedDocumentContent(); if(!isset($_GET['action']) || $_GET['action'] == 'listUnlinkedFolders') @@ -84,6 +90,10 @@ if(!isset($_GET['action']) || $_GET['action'] == 'listMissingChecksum') $nochecksumversions = $dms->getNoChecksumDocumentContent(); else $nochecksumversions = null; +if(!isset($_GET['action']) || $_GET['action'] == 'listWrongFiletype') + $wrongfiletypeversions = $dms->getWrongFiletypeDocumentContent(); +else + $wrongfiletypeversions = null; if(!isset($_GET['action']) || $_GET['action'] == 'listDuplicateContent') $duplicateversions = $dms->getDuplicateDocumentContent(); else @@ -215,6 +225,7 @@ if($view) { $view->setParam('unlinkeddocuments', $unlinkeddocuments); $view->setParam('nofilesizeversions', $nofilesizeversions); $view->setParam('nochecksumversions', $nochecksumversions); + $view->setParam('wrongfiletypeversions', $wrongfiletypeversions); $view->setParam('duplicateversions', $duplicateversions); $view->setParam('docsinrevision', $docsinrevision); $view->setParam('docsinreception', $docsinreception); @@ -222,6 +233,7 @@ if($view) { $view->setParam('unlink', $unlink); $view->setParam('setfilesize', $setfilesize); $view->setParam('setchecksum', $setchecksum); + $view->setParam('setfiletype', $setfiletype); $view->setParam('repair', $repair); $view->setParam('showtree', showtree()); $view->setParam('rootfolder', $rootfolder); diff --git a/views/bootstrap/class.ObjectCheck.php b/views/bootstrap/class.ObjectCheck.php index 53c637779..89271526f 100644 --- a/views/bootstrap/class.ObjectCheck.php +++ b/views/bootstrap/class.ObjectCheck.php @@ -152,7 +152,7 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { $this->contentHeading(getMLText("unlinked_documents")); if($unlinkeddocuments) { - print ""; + print "
          "; print "\n\n"; print "\n"; print "\n"; @@ -186,7 +186,7 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { } if($unlinkedcontent) { - print "
          ".getMLText("name")."".getMLText("id")."
          "; + print "
          "; print "\n\n"; print "\n"; print "\n"; @@ -215,11 +215,11 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { $user = $this->params['user']; $folder = $this->params['folder']; $nofilesizeversions = $this->params['nofilesizeversions']; - $setfilesize = $this->params['setfilesize']; + $repair = $this->params['repair']; $this->contentHeading(getMLText("missing_filesize")); if($nofilesizeversions) { - print "
          ".getMLText("document")."".getMLText("version")."
          "; + print "
          "; print "\n\n"; print "\n"; print "\n"; @@ -229,18 +229,25 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { print "\n\n\n"; foreach($nofilesizeversions as $version) { $doc = $version->getDocument(); - print ""; - echo ""; + echo ""; print "\n"; } print "
          ".getMLText("document")."".getMLText("version")."
          ".$doc->getId()."".$version->getVersion()."".$version->getOriginalFileName()."".$version->getMimeType().""; - if($setfilesize) { - if($version->setFileSize()) - echo getMLText('repaired'); + $class = $msg = ''; + if($repair) { + if($version->setFileSize()) { + $msg = getMLText('repaired'); + $class = ' class="success"'; + } else { + $msg = getMLText('not_repaired'); + $class = ' class="error"'; + } } + print "".$doc->getId()."".$version->getVersion()."".$version->getOriginalFileName()."".$version->getMimeType().""; + echo $msg; echo "
          \n"; - if($setfilesize == 0) { - echo '

          '.getMLText('do_object_setfilesize').'

          '; + if($repair == 0) { + echo ''; } } @@ -251,11 +258,12 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { $user = $this->params['user']; $folder = $this->params['folder']; $nochecksumversions = $this->params['nochecksumversions']; + $repair = $this->params['repair']; $this->contentHeading(getMLText("missing_checksum")); if($nochecksumversions) { - print ""; + print "
          "; print "\n\n"; print "\n"; print "\n"; @@ -265,18 +273,69 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Bootstrap_Style { print "\n\n\n"; foreach($nochecksumversions as $version) { $doc = $version->getDocument(); - print ""; - echo ""; + echo ""; print "\n"; } print "
          ".getMLText("document")."".getMLText("version")."
          ".$doc->getId()."".$version->getVersion()."".$version->getOriginalFileName()."".$version->getMimeType().""; - if($setchecksum) { - if($version->setChecksum()) - echo getMLText('repaired'); + $class = $msg = ''; + if($repair) { + if($version->setChecksum()) { + $msg = getMLText('repaired'); + $class = ' class="success"'; + } else { + $msg = getMLText('not_repaired'); + $class = ' class="error"'; + } } + print "".$doc->getId()."".$version->getVersion()."".$version->getOriginalFileName()."".$version->getMimeType().""; + echo $msg; echo "
          \n"; - if($setchecksum == 0) { - echo '

          '.getMLText('do_object_setchecksum').'

          '; + if($repair == 0) { + echo ''; + } + } + } /* }}} */ + + function listWrongFiletype() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + $wrongfiletypeversions = $this->params['wrongfiletypeversions']; + $repair = $this->params['repair']; + + $this->contentHeading(getMLText("wrong_filetype")); + + if($wrongfiletypeversions) { + print ""; + print "\n\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n\n\n"; + foreach($wrongfiletypeversions as $version) { + $doc = $version->getDocument(); + $class = $msg = ''; + if($repair) { + if($version->setFiletype()) { + $msg = getMLText('repaired'); + $class = ' class="success"'; + } else { + $msg = getMLText('not_repaired'); + $class = ' class="error"'; + } + } + print ""; + echo ""; + print "\n"; + } + print "
          ".getMLText("document")."".getMLText("version")."".getMLText("original_filename")."".getMLText("mimetype")."".getMLText("filetype")."
          ".$doc->getId()."".$version->getVersion()."".$version->getOriginalFileName()."".$version->getMimeType()."".$version->getFileType().""; + echo $msg; + echo "
          \n"; + if($repair == 0) { + echo ''; } } } /* }}} */ @@ -504,6 +563,7 @@ $(document).ready( function() { echo '
        • '.count($unlinkedcontent).''.getMLText("unlinked_content").'
        • '; echo '
        • '.count($nofilesizeversions).''.getMLText("missing_filesize").'
        • '; echo '
        • '.count($nochecksumversions).''.getMLText("missing_checksum").'
        • '; + echo '
        • '.count($wrongfiletypeversions).''.getMLText("wrong_filetype").'
        • '; echo '
        '; $this->contentHeading(getMLText("object_check_warning")); echo '