mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-07-15 17:08:11 +00:00
Merge branch 'seeddms-5.1.x'
This commit is contained in:
commit
40bd123fe3
|
@ -30,7 +30,7 @@ RewriteRule "^styles/.*$" "-" [L]
|
|||
# Added for old extensions which do not use routes
|
||||
RewriteRule ^ext/[^/]+/icon.(?:png|svg)$ - [L]
|
||||
RewriteCond %{REQUEST_URI} "ext/[^/]+/"
|
||||
RewriteRule !^ext/[^/]+/.*(?:op|out|res) - [F]
|
||||
RewriteRule !^ext/[^/]+/.*(?:op|out|res|node_modules) - [F]
|
||||
RewriteCond %{REQUEST_URI} "ext/[^/]+/res/.*$" [NC]
|
||||
RewriteRule !^ext/[^/]+/res/.*\.(?:css|js|png|svg) - [F]
|
||||
RewriteCond %{REQUEST_FILENAME} -f
|
||||
|
|
22
CHANGELOG
22
CHANGELOG
|
@ -1,3 +1,20 @@
|
|||
--------------------------------------------------------------------------------
|
||||
Changes in version 5.1.26
|
||||
--------------------------------------------------------------------------------
|
||||
- add hook additionalDocumentContentInfo
|
||||
- add restapi function 'statstotal'
|
||||
- custom attributes of type 'date' regard the date format
|
||||
- check extension dependency on shell commands
|
||||
- log reason for notification
|
||||
- add list of notification services
|
||||
- clicking on the file selection button no longer submits the form in firefox
|
||||
- fix clear clipboard link in menu
|
||||
- add conversion service from tiff, gif to png
|
||||
- do not use logger in notification service if it was not initialized
|
||||
- fix editing of custom date fields
|
||||
- fix listing files/folders with umlauts when using webdav
|
||||
- fix upload with fine-uploader
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Changes in version 5.1.25
|
||||
--------------------------------------------------------------------------------
|
||||
|
@ -9,8 +26,8 @@
|
|||
- various improvements for workflows
|
||||
- output splash message when removing, editing, adding a category or keyword
|
||||
- extensions cannot be disabled/enabled if configuration file is not writeable
|
||||
- prevent cross site scripting in views/bootstrap/class.DefaultKeywords.php
|
||||
- fix possible DoS in op/op.RemoveLog.php
|
||||
- prevent cross site scripting in views/bootstrap/class.DefaultKeywords.php (CVE-2022-28051)
|
||||
- fix possible DoS in op/op.RemoveLog.php (CVE-2022-28478)
|
||||
- show only calendar events of logged in user
|
||||
- show expired documents in calendar
|
||||
- call new hook 'cleanUpDocument' after uploading or updating a document
|
||||
|
@ -229,6 +246,7 @@
|
|||
- pass configuration to init() of extension (backport from 6.0.x)
|
||||
- place comment of version below version data (remove extra column, backport from 6.0.x)
|
||||
- fix creating folders via restapi (Closes: #469)
|
||||
- custom attributes of type date show up in the calendar
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Changes in version 5.1.15
|
||||
|
|
|
@ -1066,18 +1066,21 @@ class SeedDMS_Core_AttributeDefinition { /* {{{ */
|
|||
* @param integer $limit limit number of documents/folders
|
||||
* @return array array containing list of documents and folders
|
||||
*/
|
||||
public function getObjects($attrvalue, $limit=0) { /* {{{ */
|
||||
public function getObjects($attrvalue, $limit=0, $op=O_EQ) { /* {{{ */
|
||||
$db = $this->_dms->getDB();
|
||||
|
||||
$result = array('docs'=>array(), 'folders'=>array(), 'contents'=>array());
|
||||
if($this->_objtype == SeedDMS_Core_AttributeDefinition::objtype_all ||
|
||||
$this->_objtype == SeedDMS_Core_AttributeDefinition::objtype_document) {
|
||||
$queryStr = "SELECT * FROM `tblDocumentAttributes` WHERE `attrdef`=".$this->_id." AND ";
|
||||
if($this->getMultipleValues()) {
|
||||
$sep = $this->getValueSetSeparator();
|
||||
$queryStr .= "(`value` like ".$db->qstr($sep.$attrvalue.'%')." OR `value` like ".$db->qstr('%'.$sep.$attrvalue.$sep.'%')." OR `value` like ".$db->qstr('%'.$sep.$attrvalue).")";
|
||||
} else {
|
||||
$queryStr .= "`value`=".$db->qstr($attrvalue);
|
||||
$this->_objtype == SeedDMS_Core_AttributeDefinition::objtype_document) {
|
||||
$queryStr = "SELECT * FROM `tblDocumentAttributes` WHERE `attrdef`=".$this->_id;
|
||||
if($attrvalue != null) {
|
||||
$queryStr .= " AND ";
|
||||
if($this->getMultipleValues()) {
|
||||
$sep = $this->getValueSetSeparator();
|
||||
$queryStr .= "(`value` like ".$db->qstr($sep.$attrvalue.'%')." OR `value` like ".$db->qstr('%'.$sep.$attrvalue.$sep.'%')." OR `value` like ".$db->qstr('%'.$sep.$attrvalue).")";
|
||||
} else {
|
||||
$queryStr .= "`value`".$op.$db->qstr($attrvalue);
|
||||
}
|
||||
}
|
||||
if($limit)
|
||||
$queryStr .= " limit ".(int) $limit;
|
||||
|
@ -1227,6 +1230,8 @@ class SeedDMS_Core_AttributeDefinition { /* {{{ */
|
|||
$values = explode($attrvalue[0], substr($attrvalue, 1));
|
||||
else
|
||||
$values = array($attrvalue);
|
||||
} elseif(is_array($attrvalue)) {
|
||||
$values = $attrvalue;
|
||||
} elseif(is_string($attrvalue) && !$attrvalue) {
|
||||
$values = array();
|
||||
} else
|
||||
|
|
|
@ -387,7 +387,7 @@ class SeedDMS_Core_DMS {
|
|||
$this->lasterror = '';
|
||||
$this->version = '@package_version@';
|
||||
if($this->version[0] == '@')
|
||||
$this->version = '5.1.25';
|
||||
$this->version = '5.1.26';
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
|
@ -2640,17 +2640,30 @@ class SeedDMS_Core_DMS {
|
|||
/**
|
||||
* Return list of all attributes definitions
|
||||
*
|
||||
* @param integer $objtype select those attributes defined for an object type
|
||||
* @param integer|array $objtype select those attributes defined for an object type
|
||||
* @param integer|array $type select those attributes defined for a type
|
||||
* @return bool|SeedDMS_Core_AttributeDefinition[] of instances of <a href='psi_element://SeedDMS_Core_AttributeDefinition'>SeedDMS_Core_AttributeDefinition</a> or false
|
||||
* or false
|
||||
*/
|
||||
function getAllAttributeDefinitions($objtype=0) { /* {{{ */
|
||||
function getAllAttributeDefinitions($objtype=0, $type=0) { /* {{{ */
|
||||
$queryStr = "SELECT * FROM `tblAttributeDefinitions`";
|
||||
if($objtype) {
|
||||
if(is_array($objtype))
|
||||
$queryStr .= ' WHERE `objtype` in (\''.implode("','", $objtype).'\')';
|
||||
else
|
||||
$queryStr .= ' WHERE `objtype`='.intval($objtype);
|
||||
if($objtype || $type) {
|
||||
$queryStr .= ' WHERE ';
|
||||
if($objtype) {
|
||||
if(is_array($objtype))
|
||||
$queryStr .= '`objtype` in (\''.implode("','", $objtype).'\')';
|
||||
else
|
||||
$queryStr .= '`objtype`='.intval($objtype);
|
||||
}
|
||||
if($objtype && $type) {
|
||||
$queryStr .= ' AND ';
|
||||
}
|
||||
if($type) {
|
||||
if(is_array($type))
|
||||
$queryStr .= '`type` in (\''.implode("','", $type).'\')';
|
||||
else
|
||||
$queryStr .= '`type`='.intval($type);
|
||||
}
|
||||
}
|
||||
$queryStr .= ' ORDER BY `name`';
|
||||
$resArr = $this->db->getResultArray($queryStr);
|
||||
|
@ -3318,6 +3331,24 @@ class SeedDMS_Core_DMS {
|
|||
$res['total'] = $sum;
|
||||
}
|
||||
return $resArr;
|
||||
case 'docstotal':
|
||||
$queryStr = "SELECT count(*) AS total FROM `tblDocuments`";
|
||||
$resArr = $this->db->getResultArray($queryStr);
|
||||
if(is_bool($resArr) && $resArr == false)
|
||||
return false;
|
||||
return (int) $resArr[0]['total'];
|
||||
case 'folderstotal':
|
||||
$queryStr = "SELECT count(*) AS total FROM `tblFolders`";
|
||||
$resArr = $this->db->getResultArray($queryStr);
|
||||
if(is_bool($resArr) && $resArr == false)
|
||||
return false;
|
||||
return (int) $resArr[0]['total'];
|
||||
case 'userstotal':
|
||||
$queryStr = "SELECT count(*) AS total FROM `tblUsers`";
|
||||
$resArr = $this->db->getResultArray($queryStr);
|
||||
if(is_bool($resArr) && $resArr == false)
|
||||
return false;
|
||||
return (int) $resArr[0]['total'];
|
||||
case 'sizeperuser':
|
||||
$queryStr = "SELECT ".$this->db->concat(array('c.`fullName`', "' ('", 'c.`login`', "')'"))." AS `key`, sum(`fileSize`) AS total FROM `tblDocuments` a LEFT JOIN `tblDocumentContent` b ON a.id=b.`document` LEFT JOIN `tblUsers` c ON a.`owner`=c.`id` GROUP BY a.`owner`, c.`fullName`";
|
||||
$resArr = $this->db->getResultArray($queryStr);
|
||||
|
|
|
@ -662,44 +662,117 @@ 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 unles
|
||||
* 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
|
||||
* entry. Only, if the last log entry was a removal already, it will not be
|
||||
* added a second time.
|
||||
*
|
||||
* This removal from processes will also take place for older versions of a document.
|
||||
*
|
||||
* This methode was initialy added to remove a user (which is going to be deleted
|
||||
* afterwards) from all processes he or she is still involved in.
|
||||
*
|
||||
* If a new user is passed, then this user will be added as a new reviewer, approver, etc.
|
||||
* Hence, this method does not replace the old user but actually deletes the old user and
|
||||
* adds a new one. Adding the new reviewer, approver, etc. will also be done for old versions
|
||||
* of a document. The same operation could be archieved by first calling
|
||||
* SeedDMS_Core_DocumentVersion::delIndReviewer() followed by SeedDMS_Core_DocumentVersion::addIndReviewer()
|
||||
* but this would require to do for each version of a document and the operation would not
|
||||
* be in a single transaction.
|
||||
*
|
||||
* A new user is only added if the process (review, approval, etc.) is still in its initial
|
||||
* state (have not been reviewed/approved or rejected). Unlike the removal of the user (see above).
|
||||
*
|
||||
* If a new user is given but has no read access on the document the transfer for that
|
||||
* particular document will be skipped. Not even the removal of the user will take place.
|
||||
*
|
||||
* @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.
|
||||
* @param object $newuser user who takes over the processes
|
||||
* @param array $docs remove only processes from docs with the given document ids
|
||||
* @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, $docs=null) { /* {{{ */
|
||||
$db = $this->_dms->getDB();
|
||||
|
||||
/* Get a list of all reviews, even those of older document versions */
|
||||
$reviewStatus = $this->getReviewStatus();
|
||||
$db->startTransaction();
|
||||
foreach ($reviewStatus["indstatus"] as $ri) {
|
||||
if(!($doc = $this->_dms->getDocument($ri['documentID'])))
|
||||
continue;
|
||||
if($docs) {
|
||||
if(!in_array($doc->getID(), $docs))
|
||||
continue;
|
||||
if(!$doc->isLatestContent($ri['version']))
|
||||
continue;
|
||||
}
|
||||
if($newuser && $doc->getAccessMode($newuser) < M_READ)
|
||||
continue;
|
||||
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() ."')";
|
||||
"VALUES ('". $ri["reviewID"] ."', '-2', '".(($newuser && $ri['status'] == 0) ? 'Reviewer replaced by '.$newuser->getLogin() : '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($version = $doc->getContentByVersion($ri['version'])) {
|
||||
$ret = $version->addIndReviewer($newuser, $user);
|
||||
/* returns -3 if the user is already a reviewer */
|
||||
if($ret === false || ($ret < 0 && $ret != -3)) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$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(!($doc = $this->_dms->getDocument($ai['documentID'])))
|
||||
continue;
|
||||
if($docs) {
|
||||
if(!in_array($doc->getID(), $docs))
|
||||
continue;
|
||||
if(!$doc->isLatestContent($ai['version']))
|
||||
continue;
|
||||
}
|
||||
if($newuser && $doc->getAccessMode($newuser) < M_READ)
|
||||
continue;
|
||||
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() ."')";
|
||||
"VALUES ('". $ai["approveID"] ."', '-2', '".(($newuser && $ai['status'] == 0)? 'Approver replaced by '.$newuser->getLogin() : '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($version = $doc->getContentByVersion($ai['version'])) {
|
||||
$ret = $version->addIndReviewer($newuser, $user);
|
||||
/* returns -3 if the user is already a reviewer */
|
||||
if($ret === false || ($ret < 0 && $ret != -3)) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$db->commitTransaction();
|
||||
|
||||
return true;
|
||||
} /* }}} */
|
||||
|
||||
|
@ -711,13 +784,14 @@ 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
|
||||
* @param object $newuser user who takes over the processes
|
||||
* @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, $docs=null) { /* {{{ */
|
||||
$db = $this->_dms->getDB();
|
||||
|
||||
$db->startTransaction();
|
||||
if(!$this->__removeFromProcesses($user, $states)) {
|
||||
if(!$this->__removeFromProcesses($user, $states, $newuser, $docs)) {
|
||||
$db->rollbackTransaction();
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -217,7 +217,7 @@ class SeedDMS_Core_DatabaseAccess {
|
|||
if($this->_logfile) {
|
||||
$this->_logfp = fopen($this->_logfile, 'a+');
|
||||
if($this->_logfp)
|
||||
fwrite($this->_logfp, microtime()." BEGIN ------------------------------------------\n");
|
||||
fwrite($this->_logfp, microtime()." BEGIN ".$_SERVER['REQUEST_URI']." ------------------------------------------\n");
|
||||
} else
|
||||
$this->_logfp = null;
|
||||
// $tt*****id is a hack to ensure that we do not try to create the
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
<email>uwe@steinmann.cx</email>
|
||||
<active>yes</active>
|
||||
</lead>
|
||||
<date>2022-02-18</date>
|
||||
<date>2022-04-25</date>
|
||||
<time>13:44:55</time>
|
||||
<version>
|
||||
<release>5.1.25</release>
|
||||
<api>5.1.25</api>
|
||||
<release>5.1.26</release>
|
||||
<api>5.1.26</api>
|
||||
</version>
|
||||
<stability>
|
||||
<release>stable</release>
|
||||
|
@ -24,12 +24,12 @@
|
|||
</stability>
|
||||
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
|
||||
<notes>
|
||||
- rename getLastWorkflowTransition() to getLastWorkflowLog()
|
||||
- getLastWorkflowLog() returns a workflow entry even if the workflow has ended
|
||||
- backport setFileType() from 6.0.x
|
||||
- add SeedDMS_Core_File::fileExtension()
|
||||
- add callbacks on onPostUpdateAttribute, onPostRemoveAttribute, onPostAddAttribute
|
||||
- fix searching for document content with a custom attribute having a value set
|
||||
- fix validating multi value attributes
|
||||
- SeedDMS_Core_User::removeFromProcesses() can be limited to a list of documents. In that case only the last version will be modified.
|
||||
- add more types to getStatisticalData()
|
||||
- add optional parameter $op to SeedDMS_Core_AttributeDefinition::getObjects()
|
||||
- SeedDMS_Core_AttributeDefinition::getObjects() will not filter by value if null is passed
|
||||
- SeedDMS_Core_DMS::getAllAttributeDefinitions() has second parameter to filter attributes by type
|
||||
</notes>
|
||||
<contents>
|
||||
<dir baseinstalldir="SeedDMS" name="/">
|
||||
|
@ -1953,5 +1953,26 @@ add method SeedDMS_Core_DatabaseAccess::setLogFp()
|
|||
- more checks whether an id > 0 when getting a database record
|
||||
</notes>
|
||||
</release>
|
||||
<release>
|
||||
<date>2022-04-22</date>
|
||||
<time>13:44:55</time>
|
||||
<version>
|
||||
<release>5.1.25</release>
|
||||
<api>5.1.25</api>
|
||||
</version>
|
||||
<stability>
|
||||
<release>stable</release>
|
||||
<api>stable</api>
|
||||
</stability>
|
||||
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
|
||||
<notes>
|
||||
- rename getLastWorkflowTransition() to getLastWorkflowLog()
|
||||
- getLastWorkflowLog() returns a workflow entry even if the workflow has ended
|
||||
- backport setFileType() from 6.0.x
|
||||
- add SeedDMS_Core_File::fileExtension()
|
||||
- add callbacks on onPostUpdateAttribute, onPostRemoveAttribute, onPostAddAttribute
|
||||
- fix searching for document content with a custom attribute having a value set
|
||||
</notes>
|
||||
</release>
|
||||
</changelog>
|
||||
</package>
|
||||
|
|
|
@ -130,14 +130,14 @@ class SeedDMS_SQliteFTS_Search {
|
|||
$querystr .= ' AND ';
|
||||
$querystr .= '(path:';
|
||||
$querystr .= str_replace(':', 'x', $fields['rootFolder']->getFolderList().$fields['rootFolder']->getID().':');
|
||||
$querystr .= ')';
|
||||
$querystr .= '*)';
|
||||
}
|
||||
if(!empty($fields['startFolder']) && $fields['startFolder']->getFolderList()) {
|
||||
if($querystr)
|
||||
$querystr .= ' AND ';
|
||||
$querystr .= '(path:';
|
||||
$querystr .= str_replace(':', 'x', $fields['startFolder']->getFolderList().$fields['startFolder']->getID().':');
|
||||
$querystr .= ')';
|
||||
$querystr .= '*)';
|
||||
}
|
||||
try {
|
||||
$result = $this->index->find($querystr, $limit);
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
|
||||
<notes>
|
||||
- throw exeption in find() instead of returning false
|
||||
- fix query if rootFolder or startFolder is set
|
||||
</notes>
|
||||
<contents>
|
||||
<dir baseinstalldir="SeedDMS" name="/">
|
||||
|
|
|
@ -54,6 +54,11 @@ class SeedDMS_Controller_EditFolder extends SeedDMS_Controller_Common {
|
|||
$attrdef = $dms->getAttributeDefinition($attrdefid);
|
||||
if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) {
|
||||
if($attribute) {
|
||||
switch($attrdef->getType()) {
|
||||
case SeedDMS_Core_AttributeDefinition::type_date:
|
||||
$attribute = date('Y-m-d', makeTsFromDate($attribute));
|
||||
break;
|
||||
}
|
||||
if(!$attrdef->validate($attribute, $folder, true)) {
|
||||
$this->errormsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute);
|
||||
return false;
|
||||
|
|
|
@ -441,6 +441,14 @@ class SeedDMS_Extension_Mgr {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 'cmd':
|
||||
if(is_array($dval) && $dval) {
|
||||
foreach($dval as $d) {
|
||||
if(!commandExists($d))
|
||||
$this->errmsgs[] = sprintf("Missing command '%s'", $d);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$tmp = explode('-', $dval, 2);
|
||||
if(isset($this->extconf[$dkey]['version'])) {
|
||||
|
|
|
@ -36,6 +36,11 @@ class SeedDMS_FulltextService {
|
|||
*/
|
||||
protected $conversionmgr;
|
||||
|
||||
/**
|
||||
* @var logger
|
||||
*/
|
||||
protected $logger;
|
||||
|
||||
/**
|
||||
* Max file size for imediate indexing
|
||||
*/
|
||||
|
@ -49,6 +54,7 @@ class SeedDMS_FulltextService {
|
|||
$this->services = array();
|
||||
$this->converters = array();
|
||||
$this->conversionmgr = null;
|
||||
$this->logger = null;
|
||||
$this->maxsize = 0;
|
||||
$this->index = null;
|
||||
$this->search = null;
|
||||
|
@ -63,6 +69,10 @@ class SeedDMS_FulltextService {
|
|||
$this->converters = $converters;
|
||||
}
|
||||
|
||||
public function setLogger($logger) {
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set conversion service manager
|
||||
*
|
||||
|
|
|
@ -93,13 +93,16 @@ class SeedDMS_NotificationService {
|
|||
if(!$service->toIndividual($sender, $recipient, $subject, $message, $params)) {
|
||||
$error = false;
|
||||
$this->errors[$name] = false;
|
||||
$this->logger->log('Notification service \''.$name.'\': Sending notification \''.$subject.'\' to user \''.$to.'\' ('.$recvtype.') failed.', PEAR_LOG_ERR);
|
||||
if($this->logger)
|
||||
$this->logger->log('Notification service \''.$name.'\': Sending notification \''.$subject.'\' to user \''.$to.'\' ('.$recvtype.') failed.', PEAR_LOG_ERR);
|
||||
} else {
|
||||
$this->logger->log('Notification service \''.$name.'\': Sending notification \''.$subject.'\' to user \''.$to.'\' ('.$recvtype.') successful.', PEAR_LOG_INFO);
|
||||
if($this->logger)
|
||||
$this->logger->log('Notification service \''.$name.'\': Sending notification \''.$subject.'\' to user \''.$to.'\' ('.$recvtype.') successful (reason for notification: '.$recvtype.').', PEAR_LOG_INFO);
|
||||
$this->errors[$name] = true;
|
||||
}
|
||||
} else {
|
||||
$this->logger->log('Notification service \''.$name.'\': Notification \''.$subject.'\' to user \''.$to.'\' ('.$recvtype.') filtered out.', PEAR_LOG_INFO);
|
||||
if($this->logger)
|
||||
$this->logger->log('Notification service \''.$name.'\': Notification \''.$subject.'\' to user \''.$to.'\' ('.$recvtype.') filtered out (reason for notification: '.$recvtype.').', PEAR_LOG_INFO);
|
||||
}
|
||||
}
|
||||
return $error;
|
||||
|
|
|
@ -376,7 +376,7 @@ class Settings { /* {{{ */
|
|||
* @param string $var value
|
||||
* @return true/false
|
||||
*/
|
||||
function boolVal($var) { /* {{{ */
|
||||
protected static function boolVal($var) { /* {{{ */
|
||||
$var = strtolower(strval($var));
|
||||
switch ($var) {
|
||||
case 'true':
|
||||
|
@ -417,7 +417,7 @@ class Settings { /* {{{ */
|
|||
* @param string $stringValue string value
|
||||
*
|
||||
*/
|
||||
function setViewOnlineFileTypesFromString($stringValue) { /* {{{ */
|
||||
public function setViewOnlineFileTypesFromString($stringValue) { /* {{{ */
|
||||
$this->_viewOnlineFileTypes = explode(";", $stringValue);
|
||||
} /* }}} */
|
||||
|
||||
|
@ -427,7 +427,7 @@ class Settings { /* {{{ */
|
|||
* @return string value
|
||||
*
|
||||
*/
|
||||
function getViewOnlineFileTypesToString() { /* {{{ */
|
||||
protected function getViewOnlineFileTypesToString() { /* {{{ */
|
||||
return implode(";", $this->_viewOnlineFileTypes);
|
||||
} /* }}} */
|
||||
|
||||
|
@ -437,7 +437,7 @@ class Settings { /* {{{ */
|
|||
* @param string $stringValue string value
|
||||
*
|
||||
*/
|
||||
function setEditOnlineFileTypesFromString($stringValue) { /* {{{ */
|
||||
public function setEditOnlineFileTypesFromString($stringValue) { /* {{{ */
|
||||
$this->_editOnlineFileTypes = explode(";", $stringValue);
|
||||
} /* }}} */
|
||||
|
||||
|
@ -447,7 +447,7 @@ class Settings { /* {{{ */
|
|||
* @return string value
|
||||
*
|
||||
*/
|
||||
function getEditOnlineFileTypesToString() { /* {{{ */
|
||||
protected function getEditOnlineFileTypesToString() { /* {{{ */
|
||||
return implode(";", $this->_editOnlineFileTypes);
|
||||
} /* }}} */
|
||||
|
||||
|
@ -1196,7 +1196,7 @@ class Settings { /* {{{ */
|
|||
* If none was found a final try will be made checking /etc/seeddms
|
||||
* @return NULL|string config directory
|
||||
*/
|
||||
static function getConfigDir() { /* {{{ */
|
||||
public static function getConfigDir() { /* {{{ */
|
||||
if(defined("SEEDDMS_CONFIG_FILE"))
|
||||
return dirname(SEEDDMS_CONFIG_FILE);
|
||||
elseif(getenv("SEEDDMS_CONFIG_FILE"))
|
||||
|
@ -1698,5 +1698,22 @@ class Settings { /* {{{ */
|
|||
$this->_extensions[$extname]['__disable__'] = true;
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
* Get maximum upload size
|
||||
*
|
||||
* Determine the maximum upload size by checking the php config
|
||||
* variables upload_max_filesize, post_max_size and the seeddms
|
||||
* setting maxUploadSize
|
||||
* @return int
|
||||
*/
|
||||
public function getMaximumUploadSize() { /* {{{ */
|
||||
$mus = [];
|
||||
$mus[] = SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize"));
|
||||
$mus[] = SeedDMS_Core_File::parse_filesize(ini_get("post_max_size"));
|
||||
if(is_numeric($this->_maxUploadSize) && $this->_maxUploadSize > 0)
|
||||
$mus[] = SeedDMS_Core_File::parse_filesize($this->_maxUploadSize);
|
||||
return min($mus);
|
||||
} /* }}} */
|
||||
|
||||
} /* }}} */
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@ class UI extends UI_Default {
|
|||
global $settings, $session, $extMgr;
|
||||
if(!$class) {
|
||||
$class = 'Bootstrap';
|
||||
$class = 'Style';
|
||||
$classname = "SeedDMS_Bootstrap_Style";
|
||||
} else {
|
||||
$classname = "SeedDMS_View_".$class;
|
||||
|
@ -148,7 +149,7 @@ class UI extends UI_Default {
|
|||
$view->setParam('enablesessionlist', $settings->_enableSessionList);
|
||||
$view->setParam('workflowmode', $settings->_workflowMode);
|
||||
$view->setParam('partitionsize', SeedDMS_Core_File::parse_filesize( $settings->_partitionSize));
|
||||
$view->setParam('maxuploadsize', SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize));
|
||||
$view->setParam('maxuploadsize', $settings->getMaximumUploadSize());
|
||||
$view->setParam('showmissingtranslations', $settings->_showMissingTranslations);
|
||||
$view->setParam('defaultsearchmethod', $settings->_defaultSearchMethod);
|
||||
$view->setParam('cachedir', $settings->_cacheDir);
|
||||
|
|
|
@ -217,13 +217,16 @@ class SeedDMS_View_Common {
|
|||
*/
|
||||
public function getHookObjects($classname='') { /* {{{ */
|
||||
if($classname)
|
||||
$tmp = explode('_', $classname);
|
||||
$tmps = array(explode('_', $classname)[2]);
|
||||
else
|
||||
$tmp = explode('_', get_class($this));
|
||||
if(isset($GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp[2])])) {
|
||||
return $GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp[2])];
|
||||
$tmps = $this->getHookClassNames();
|
||||
$hooks = [];
|
||||
foreach($tmps as $tmp) {
|
||||
if(isset($GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp)])) {
|
||||
$hooks = array_merge($hooks, $GLOBALS['SEEDDMS_HOOKS']['view'][lcfirst($tmp)]);
|
||||
}
|
||||
}
|
||||
return array();
|
||||
return $hooks;
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
|
|
|
@ -26,6 +26,8 @@ $conversionmgr->addService(new SeedDMS_ConversionServicePdfToImage('application/
|
|||
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/jpeg', 'image/png'))->setLogger($logger);
|
||||
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/png', 'image/png'))->setLogger($logger);
|
||||
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/jpg', 'image/png'))->setLogger($logger);
|
||||
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/gif', 'image/png'))->setLogger($logger);
|
||||
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/tiff', 'image/png'))->setLogger($logger);
|
||||
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/svg+xml', 'image/png'))->setLogger($logger);
|
||||
|
||||
$conversionmgr->addService(new SeedDMS_ConversionServiceTextToText('text/plain', 'text/plain'))->setLogger($logger);
|
||||
|
|
|
@ -41,22 +41,46 @@ function getConvertDateFormat() { /* {{{ */
|
|||
return 'yyyy-mm-dd';
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
* Return a human readable date string
|
||||
*
|
||||
* This function formats a timestamp according to the date format
|
||||
* settings. If no timestamp is passed the current date is used.
|
||||
* If null or an empty string is passed, then an empty string
|
||||
* is returned. If $timestamp is numeric it will be taken as a unix
|
||||
* timestamp. If $timestamp is a string it will be parѕed with strtotime().
|
||||
*/
|
||||
function getReadableDate($timestamp=0) { /* {{{ */
|
||||
global $settings;
|
||||
if(!$timestamp)
|
||||
if($timestamp === 0)
|
||||
$timestamp = time();
|
||||
elseif(!is_numeric($timestamp))
|
||||
elseif($timestamp && is_numeric($timestamp))
|
||||
;
|
||||
elseif($timestamp && is_string($timestamp))
|
||||
$timestamp = strtotime($timestamp);
|
||||
elseif(!is_numeric($timestamp))
|
||||
return '';
|
||||
if($settings->_dateformat)
|
||||
return date($settings->_dateformat, $timestamp);
|
||||
else
|
||||
return date("Y-m-d", $timestamp);
|
||||
} /* }}} */
|
||||
|
||||
function getLongReadableDate($timestamp) { /* {{{ */
|
||||
/**
|
||||
* Return a human readable date and time string
|
||||
*
|
||||
* See note for getReadableDate()
|
||||
*/
|
||||
function getLongReadableDate($timestamp=0) { /* {{{ */
|
||||
global $settings;
|
||||
if(!is_numeric($timestamp))
|
||||
if($timestamp === 0)
|
||||
$timestamp = time();
|
||||
elseif($timestamp && is_numeric($timestamp))
|
||||
;
|
||||
elseif($timestamp && is_string($timestamp))
|
||||
$timestamp = strtotime($timestamp);
|
||||
elseif(!is_numeric($timestamp))
|
||||
return '';
|
||||
if($settings->_datetimeformat)
|
||||
return date($settings->_datetimeformat, $timestamp);
|
||||
else
|
||||
|
@ -672,6 +696,37 @@ function addDirSep($str) { /* {{{ */
|
|||
return trim($str);
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
* Determines if a command exists on the current environment
|
||||
*
|
||||
* @param string $command The command to check
|
||||
* @return bool True if the command has been found ; otherwise, false.
|
||||
*/
|
||||
function commandExists ($command) {
|
||||
$whereIsCommand = (PHP_OS == 'WINNT') ? 'where' : 'command -v';
|
||||
|
||||
$process = proc_open(
|
||||
"$whereIsCommand $command",
|
||||
array(
|
||||
0 => array("pipe", "r"), //STDIN
|
||||
1 => array("pipe", "w"), //STDOUT
|
||||
2 => array("pipe", "w"), //STDERR
|
||||
),
|
||||
$pipes
|
||||
);
|
||||
if ($process !== false) {
|
||||
$stdout = stream_get_contents($pipes[1]);
|
||||
$stderr = stream_get_contents($pipes[2]);
|
||||
fclose($pipes[1]);
|
||||
fclose($pipes[2]);
|
||||
proc_close($process);
|
||||
|
||||
return $stdout != '';
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a file from disk to the browser
|
||||
*
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
class SeedDMS_Version { /* {{{ */
|
||||
|
||||
const _number = "5.1.25";
|
||||
const _number = "5.1.26";
|
||||
const _string = "SeedDMS";
|
||||
|
||||
function __construct() {
|
||||
|
|
|
@ -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 (2273)
|
||||
// Translators: Admin (2274)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => 'توثيق ذو عاملين',
|
||||
|
@ -557,6 +557,8 @@ URL: [url]',
|
|||
'error_remove_document' => 'خطأ في ازالة المستند',
|
||||
'error_remove_folder' => 'حدث خطأ في ازالة ملف',
|
||||
'error_remove_permission' => 'حدث خطأ في ازالة طلب السماح',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => 'خطأ في ازالة سير العمل',
|
||||
'error_rm_workflow_action' => 'خطأ في ازالة دور سير العمل',
|
||||
'error_rm_workflow_state' => 'خطأ في ازالة حالة سير العمل',
|
||||
|
@ -666,7 +668,7 @@ URL: [url]',
|
|||
'folder_renamed_email_body_html' => '',
|
||||
'folder_renamed_email_subject' => '[sitename]: [name] - تم اعادة تسمية المجلد',
|
||||
'folder_title' => 'مجلد \'[foldername]\'عنوان المجلد',
|
||||
'foot_note' => '<a href=\'http://www.lp.gov.lb\'>مجلس النواب اللبناني</a>',
|
||||
'foot_note' => '',
|
||||
'force_update' => 'ﺖﺣﺪﻴﺛ',
|
||||
'friday' => 'الجمعة',
|
||||
'friday_abbr' => 'ج',
|
||||
|
@ -823,6 +825,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'لائحة حقوق الدخول',
|
||||
'list_contains_no_access_docs' => 'هذه الائحة لا تحتوي على مستندات للدخول',
|
||||
'list_hooks' => 'لائحة الدمج',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => 'لائحة المهمات',
|
||||
'local_file' => 'ملف محلي',
|
||||
'locked_by' => 'محمي بواسطة',
|
||||
|
@ -1127,6 +1130,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'ازالة الملفات المختارة',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'تم اصلاحه',
|
||||
'repairing_objects' => 'تحضير المستندات والمجلدات.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1336,6 +1340,8 @@ URL: [url]',
|
|||
'seq_end' => 'في الاخر',
|
||||
'seq_keep' => 'حافظ على المرتبة',
|
||||
'seq_start' => 'اول مرتبة',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'صفوف',
|
||||
'setDateFromFile' => 'وضع تاريخ من الملف',
|
||||
'setDateFromFolder' => 'تحديد التاريخ من المجلد',
|
||||
|
|
|
@ -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 (872)
|
||||
// Translators: Admin (877)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '',
|
||||
|
@ -322,7 +322,7 @@ $text = array(
|
|||
'daily' => 'Ежедневно',
|
||||
'databasesearch' => 'Търсене по БД',
|
||||
'database_schema_version' => '',
|
||||
'data_loading' => '',
|
||||
'data_loading' => 'Моля, изчакайте докато документа се зареди ...',
|
||||
'date' => 'Дата',
|
||||
'days' => 'дни',
|
||||
'debug' => '',
|
||||
|
@ -450,7 +450,7 @@ $text = array(
|
|||
'dropfolder_metadata' => '',
|
||||
'dropupload' => 'Бърз ъплоуд',
|
||||
'drop_files_here' => 'Пусни файла тук!',
|
||||
'drop_files_here_or_click' => '',
|
||||
'drop_files_here_or_click' => 'Пуснете файловете тук или кликнете',
|
||||
'dump_creation' => 'Създаване дъмп на БД',
|
||||
'dump_creation_warning' => 'Тази операция шъ създаде дамп на базата данни. След създаването, файлът ще бъде съхранен в папката с данни на сървъра.',
|
||||
'dump_list' => 'Съществуващи дъмпове',
|
||||
|
@ -510,6 +510,8 @@ $text = array(
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => '',
|
||||
'error_remove_permission' => '',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -638,7 +640,7 @@ $text = array(
|
|||
'hu_HU' => 'Унгарски',
|
||||
'id' => 'ID',
|
||||
'identical_version' => 'Новата версия е идентична с текущата.',
|
||||
'id_ID' => '',
|
||||
'id_ID' => 'Индонезийски',
|
||||
'import' => '',
|
||||
'importfs' => '',
|
||||
'import_extension' => '',
|
||||
|
@ -752,6 +754,7 @@ $text = array(
|
|||
'list_access_rights' => 'Списък на права',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => '',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Локален файл',
|
||||
'locked_by' => 'Блокиран',
|
||||
|
@ -1017,6 +1020,7 @@ $text = array(
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => '',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => '',
|
||||
'repairing_objects' => 'Поправка на папки и документи',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1032,7 +1036,7 @@ $text = array(
|
|||
'return_from_subworkflow_email_body' => '',
|
||||
'return_from_subworkflow_email_body_html' => '',
|
||||
'return_from_subworkflow_email_subject' => '',
|
||||
'reverse_links' => '',
|
||||
'reverse_links' => 'Документи които имат връзка с този документ',
|
||||
'reviewers' => 'Рецензиращи',
|
||||
'reviewer_already_assigned' => 'вече назначено за рецензиране',
|
||||
'reviewer_already_removed' => 'вече премахнат от списъка с рецензиращи или вече е оставил рецензия',
|
||||
|
@ -1199,6 +1203,8 @@ $text = array(
|
|||
'seq_end' => 'В края',
|
||||
'seq_keep' => 'Съхрани позицията',
|
||||
'seq_start' => 'Първа позиция',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
@ -1913,7 +1919,7 @@ $text = array(
|
|||
'version_deleted_email_subject' => '',
|
||||
'version_info' => 'Информация за версията',
|
||||
'view' => 'Преглед',
|
||||
'view_document' => '',
|
||||
'view_document' => 'Подробна информация за документа',
|
||||
'view_folder' => '',
|
||||
'view_online' => 'Преглед онлайн',
|
||||
'warning' => 'Внимание',
|
||||
|
|
|
@ -515,6 +515,8 @@ URL: [url]',
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => '',
|
||||
'error_remove_permission' => '',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -757,6 +759,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Llista tots els tipus d\'accés...',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => '',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Arxiu local',
|
||||
'locked_by' => 'Locked by',
|
||||
|
@ -1022,6 +1025,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => '',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => '',
|
||||
'repairing_objects' => '',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1204,6 +1208,8 @@ URL: [url]',
|
|||
'seq_end' => 'Al final',
|
||||
'seq_keep' => 'Mantenir posició',
|
||||
'seq_start' => 'Primera posició',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
|
|
@ -581,6 +581,8 @@ URL: [url]',
|
|||
'error_remove_document' => 'Při mazání dokumentu došlo k chybě',
|
||||
'error_remove_folder' => 'Při mazání složky došlo k chybě',
|
||||
'error_remove_permission' => 'Chyba při odebrání oprávnění',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => 'Chyba při odstraňování workflow',
|
||||
'error_rm_workflow_action' => 'Chyba pří odstraňování akce workflow',
|
||||
'error_rm_workflow_state' => 'Chyba pří odstraňování stavu workflow',
|
||||
|
@ -854,6 +856,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Seznam všech přístupových práv ...',
|
||||
'list_contains_no_access_docs' => 'Seznam obsahuje více dokumentů, ke kterým nemáte přístup a které se nezobrazují.',
|
||||
'list_hooks' => 'Seznam hooks',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => 'Seznam úkolů',
|
||||
'local_file' => 'Lokální soubor',
|
||||
'locked_by' => 'Zamčeno kým',
|
||||
|
@ -1173,6 +1176,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Odstranit označené soubory',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'opraveno',
|
||||
'repairing_objects' => 'Opravuji dokumenty a složky.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1408,6 +1412,8 @@ Jméno: [username]
|
|||
'seq_end' => 'Na konec',
|
||||
'seq_keep' => 'Ponechat pozici',
|
||||
'seq_start' => 'První pozice',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'seance',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
|
|
@ -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 (3102), dgrutsch (22)
|
||||
// Translators: Admin (3113), dgrutsch (22)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '2-Faktor Authentifizierung',
|
||||
'2_factor_auth_info' => 'Dieses System erfordert 2-Faktor-Authentifikation. Dazu brauchen Sie den Google Authenticator auf Ihrem Mobiltelefon. Unten sehen Sie zwei QR-Codes. Der rechte Code beinhaltet Ihren aktuellen geheimen Schlüssel. Auf der linken Seite wird ein neuer Schlüssel angezeigt. Wenn Sie den neuen Schlüssel speichern, dann stellen Sie zuvor sicher, dass sie ihn mit dem Google Authenticator zuvor eingescant haben.',
|
||||
'2_factor_auth_info' => 'Dieses System erfordert 2-Faktor-Authentifikation. Dazu brauchen Sie den Google Authenticator auf Ihrem Mobiltelefon. Unten sehen Sie zwei QR-Codes. Der rechte Code beinhaltet Ihren aktuellen geheimen Schlüssel. Auf der linken Seite wird ein neuer Schlüssel angezeigt. Wenn Sie den neuen Schlüssel speichern, dann stellen Sie zuvor sicher, dass sie ihn mit Ihrem bevorzugten Authenticator (z.B. andOTP) zuvor eingescant haben.',
|
||||
'2_fact_auth_current_secret' => 'Aktuelles Geheimnis',
|
||||
'2_fact_auth_new_secret' => 'Neues Geheimnis',
|
||||
'2_fact_auth_secret' => 'Schlüssel',
|
||||
|
@ -349,7 +349,7 @@ URL: [url]</p>',
|
|||
'comment_changed_email' => '',
|
||||
'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_clear_cache' => 'Wollen Sie wirklich den Cache löschen? Dies entfernt alle vorberechneten Vorschaubilder, Javascript und andere Dateien.',
|
||||
'confirm_create_fulltext_index' => 'Ja, Ich möchte den Volltext-Index neu erzeugen!.',
|
||||
'confirm_move_document' => 'Dokument wirklich verschieben?',
|
||||
'confirm_move_folder' => 'Ordner wirklich verschieben?',
|
||||
|
@ -682,6 +682,8 @@ URL: [url]</p>',
|
|||
'error_remove_document' => 'Fehler beim Löschen des Dokuments',
|
||||
'error_remove_folder' => 'Fehler beim Löschen des Ordners',
|
||||
'error_remove_permission' => 'Fehler beim Entfernen der Berechtigung',
|
||||
'error_rm_user_processes' => 'Fehler beim Löschen des Benutzers aus allen Prozessen',
|
||||
'error_rm_user_processes_no_docs' => 'Keine Dokumente ausgewählt',
|
||||
'error_rm_workflow' => 'Fehler beim Löschen des Workflows',
|
||||
'error_rm_workflow_action' => 'Fehler beim Löschen der Workflow-Aktion',
|
||||
'error_rm_workflow_state' => 'Fehler beim Löschen des Workflows-Status',
|
||||
|
@ -846,7 +848,7 @@ URL: [url]</p>',
|
|||
'friday_abbr' => 'Fr',
|
||||
'from' => 'von',
|
||||
'fr_FR' => 'Französisch',
|
||||
'fullsearch' => 'Volltext',
|
||||
'fullsearch' => 'Volltextsuche',
|
||||
'fullsearch_hint' => 'Volltext-Index benutzen',
|
||||
'fulltextsearch_disabled' => 'Volltext-Index ist ausgeschaltet',
|
||||
'fulltext_converters' => 'Index Dokumentenumwandlung',
|
||||
|
@ -996,7 +998,8 @@ URL: [url]</p>',
|
|||
'link_to_version' => 'An Version hängen',
|
||||
'list_access_rights' => 'Alle Zugriffsrechte auflisten ...',
|
||||
'list_contains_no_access_docs' => 'Die Liste enthält weitere Dokumente auf die Sie keinen Zugriff haben und deshalb nicht angezeigt werden.',
|
||||
'list_hooks' => 'Liste interne Aufrufe',
|
||||
'list_hooks' => 'Liste der interne Aufrufe',
|
||||
'list_notification_services' => 'Liste der Benachrichtigungsdienste',
|
||||
'list_tasks' => 'Tasks auflisten',
|
||||
'local_file' => 'Lokale Datei',
|
||||
'locked_by' => 'Gesperrt von',
|
||||
|
@ -1409,6 +1412,7 @@ URL: [url]</p>',
|
|||
'remove_approval_log' => 'Einzelne Freigabe entfernen',
|
||||
'remove_marked_files' => 'Markierte Dateien löschen',
|
||||
'remove_review_log' => 'Einzelne Prüfung entfernen',
|
||||
'remove_task' => 'Task entfernen',
|
||||
'repaired' => 'repariert',
|
||||
'repairing_objects' => 'Repariere Dokumente und Ordner.',
|
||||
'replace_content_email_body' => 'Die letzte Version des Dokuments wurde ersetzt.
|
||||
|
@ -1740,6 +1744,8 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver
|
|||
'seq_end' => 'Ans Ende',
|
||||
'seq_keep' => 'Beibehalten',
|
||||
'seq_start' => 'An den Anfang',
|
||||
'service_has_filter' => 'Service hat Filter',
|
||||
'service_name' => 'Service-Name',
|
||||
'sessions' => 'Benutzer Online',
|
||||
'setDateFromFile' => 'Datum von importierter Datei übernehmen',
|
||||
'setDateFromFolder' => 'Datum von importierten Verzeichnis übernehmen',
|
||||
|
@ -2002,7 +2008,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver
|
|||
'settings_maxItemsPerPage_desc' => 'Begrenzt die Anzahl der Ordner und Dokumente auf der View-Folder Seite. Weitere Objekte werden geladen, wenn man an das Ende der Seite rollt. Setze diesen Wert auf 0, um immer alle Objekte anzuzeigen.',
|
||||
'settings_maxRecursiveCount' => 'Max. Anzahl Anzahl rekursiver Dokumente/Ordner.',
|
||||
'settings_maxRecursiveCount_desc' => 'Dies ist die maximale Anzahl der Dokumente und Ordner die auf Zugriffsrechte geprüft werden, wenn rekursiv gezählt wird. Wenn diese Anzahl überschritten wird, wird die Anzahl der Dokumente und Unterordner in der Ordner Ansicht geschätzt.',
|
||||
'settings_maxSizeForFullText' => 'Maximale Dateigröße für sofortige Indezierung',
|
||||
'settings_maxSizeForFullText' => 'Maximale Dateigröße für sofortige Indizierung',
|
||||
'settings_maxSizeForFullText_desc' => 'Alle neuen Versionen eines Dokuments, die kleiner als die konfigurierte Dateigröße in Bytes sind, werden sofort indiziert. In allen anderen Fällen werden nur die Metadaten erfasst.',
|
||||
'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.',
|
||||
|
|
|
@ -510,6 +510,8 @@ $text = array(
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => '',
|
||||
'error_remove_permission' => '',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -752,6 +754,7 @@ $text = array(
|
|||
'list_access_rights' => 'Εμφάνισε όλα τα δικαιώματα πρόσβασης',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => '',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Τοπικό αρχείο',
|
||||
'locked_by' => '',
|
||||
|
@ -1028,6 +1031,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => '',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => '',
|
||||
'repairing_objects' => '',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1210,6 +1214,8 @@ URL: [url]',
|
|||
'seq_end' => 'Στο τέλος',
|
||||
'seq_keep' => 'Διατήρηση θέσης',
|
||||
'seq_start' => 'Τοποθέτηση στην αρχή',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
|
|
@ -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 (2197), archonwang (3), dgrutsch (9), netixw (14)
|
||||
// Translators: Admin (2207), archonwang (3), dgrutsch (9), netixw (14)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '2-factor authentication',
|
||||
'2_factor_auth_info' => 'This system enforces 2 factor authentication. You will need the Google Authenticator on your mobile phone. Below you see two QR codes. The right one is your current secret. On the left you can set a new secret. If you set a new secret make sure to rescan it with Google Authenticator.',
|
||||
'2_factor_auth_info' => 'This system enforces 2 factor authentication. You will need the Google Authenticator on your mobile phone. Below you see two QR codes. The right one is your current secret. On the left you can set a new secret. If you set a new secret make sure to rescan it with your preffered authenticator, e.g. andOTP.',
|
||||
'2_fact_auth_current_secret' => 'Current secret',
|
||||
'2_fact_auth_new_secret' => 'New secret',
|
||||
'2_fact_auth_secret' => 'Secret',
|
||||
|
@ -349,7 +349,7 @@ URL: [url]</p>',
|
|||
'comment_changed_email' => '',
|
||||
'comment_for_current_version' => 'Version comment',
|
||||
'configure_extension' => 'Configure extension',
|
||||
'confirm_clear_cache' => 'Would you really like to clear the cache? This will remove all precalculated preview images.',
|
||||
'confirm_clear_cache' => 'Would you really like to clear the cache? This will remove all precalculated preview images, javascript and other files.',
|
||||
'confirm_create_fulltext_index' => 'Yes, I would like to recreate the fulltext index!',
|
||||
'confirm_move_document' => 'Please confirm moving the document.',
|
||||
'confirm_move_folder' => 'Please confirm moving the folder.',
|
||||
|
@ -682,6 +682,8 @@ URL: [url]</p>',
|
|||
'error_remove_document' => 'Error while deleting document',
|
||||
'error_remove_folder' => 'Error while deleting folder',
|
||||
'error_remove_permission' => 'Error while remove permission',
|
||||
'error_rm_user_processes' => 'Error when removing user from all processes',
|
||||
'error_rm_user_processes_no_docs' => 'No documents selected',
|
||||
'error_rm_workflow' => 'Error when removing workflow',
|
||||
'error_rm_workflow_action' => 'Error when removing workflow action',
|
||||
'error_rm_workflow_state' => 'Error when removing workflow state',
|
||||
|
@ -997,7 +999,8 @@ URL: [url]</p>',
|
|||
'link_to_version' => 'Attach to version',
|
||||
'list_access_rights' => 'List all access rights ...',
|
||||
'list_contains_no_access_docs' => 'The list contains more documents you have no access to and are not displayed.',
|
||||
'list_hooks' => 'List hooks',
|
||||
'list_hooks' => 'List of hooks',
|
||||
'list_notification_services' => 'List of notification services',
|
||||
'list_tasks' => 'List tasks',
|
||||
'local_file' => 'Local file',
|
||||
'locked_by' => 'Locked by',
|
||||
|
@ -1412,6 +1415,7 @@ URL: [url]</p>',
|
|||
'remove_approval_log' => 'Remove approval',
|
||||
'remove_marked_files' => 'Remove marked files',
|
||||
'remove_review_log' => 'Remove review',
|
||||
'remove_task' => 'Remove task',
|
||||
'repaired' => 'repaired',
|
||||
'repairing_objects' => 'Repairing documents and folders.',
|
||||
'replace_content_email_body' => 'The last version of the document has been replaced.
|
||||
|
@ -1743,6 +1747,8 @@ If you did not receive a password, please use the password forgotten function on
|
|||
'seq_end' => 'At the end',
|
||||
'seq_keep' => 'Keep Position',
|
||||
'seq_start' => 'First position',
|
||||
'service_has_filter' => 'Service has filter',
|
||||
'service_name' => 'Name of service',
|
||||
'sessions' => 'Users online',
|
||||
'setDateFromFile' => 'Take over date from imported file',
|
||||
'setDateFromFolder' => 'Take over date from imported folder',
|
||||
|
@ -1860,7 +1866,7 @@ If you did not receive a password, please use the password forgotten function on
|
|||
'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' => 'Allow duplicate subfolder names',
|
||||
'settings_enableDuplicateSubFolderNames_desc' => 'Allows to have duplicate subfolder names in a folder.',
|
||||
'settings_enableEmail' => 'Enable E-mail Notification',
|
||||
'settings_enableEmail_desc' => 'Enable/disable automatic email notification',
|
||||
|
|
|
@ -570,6 +570,8 @@ URL: [url]',
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => 'Error al eliminar la carpeta',
|
||||
'error_remove_permission' => '',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -842,6 +844,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Listar los derechos de acceso',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => 'Mis bloques',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Fichero local',
|
||||
'locked_by' => 'Bloqueado por',
|
||||
|
@ -1154,6 +1157,7 @@ nURL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Eliminar ficheros marcados',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'Reparado',
|
||||
'repairing_objects' => 'Reparando documentos y carpetas.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1363,6 +1367,8 @@ URL: [url]',
|
|||
'seq_end' => 'Al final',
|
||||
'seq_keep' => 'Mantener posición',
|
||||
'seq_start' => 'Primera posición',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => 'Obtiene la fecha del archivo importado',
|
||||
'setDateFromFolder' => 'Obtiene la fecha de la carpeta importada',
|
||||
|
|
|
@ -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 (1126), jeromerobert (50), lonnnew (9), Oudiceval (1171)
|
||||
// Translators: Admin (1155), jeromerobert (50), lonnnew (9), Oudiceval (1171)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => 'Authentification forte',
|
||||
|
@ -185,7 +185,7 @@ URL : [url]</p>',
|
|||
'attrdefgrp_show_searchlist' => 'Résultats de recherche',
|
||||
'attrdef_exists' => 'La définition d\'attribut existe déjà',
|
||||
'attrdef_info' => 'Information',
|
||||
'attrdef_invalid_regex' => '',
|
||||
'attrdef_invalid_regex' => 'L\'expression régulière n\'est pas valide',
|
||||
'attrdef_in_use' => 'La définition d\'attribut est en cours d\'utilisation',
|
||||
'attrdef_management' => 'Gestion des définitions d\'attributs',
|
||||
'attrdef_maxvalues' => 'Nombre maximum de valeurs',
|
||||
|
@ -336,7 +336,7 @@ URL : [url]</p>',
|
|||
'color' => 'Couleur',
|
||||
'command' => 'Commande',
|
||||
'comment' => 'Commentaire',
|
||||
'comment_changed_email' => '',
|
||||
'comment_changed_email' => 'Commentaire lors du changement d\'adresse mail',
|
||||
'comment_for_current_version' => 'Commentaires pour la version actuelle',
|
||||
'configure_extension' => 'Configurer l’extension',
|
||||
'confirm_clear_cache' => 'Voulez-vous vraiment vider le cache ? Cela va effacer toutes les miniatures.',
|
||||
|
@ -480,7 +480,7 @@ Utilisateur : [username]</p>',
|
|||
'document_files' => 'Fichiers attachés',
|
||||
'document_has_no_workflow' => 'Le document n\'a pas de workflow',
|
||||
'document_infos' => 'Informations sur le document',
|
||||
'document_is_checked_out' => '',
|
||||
'document_is_checked_out' => 'Ce document est vérifié',
|
||||
'document_is_checked_out_remove' => 'Le document est actuellement vérifié. Si vous supprimez le document, la version vérifiée ne pourra plus être ajoutée et restera dans la zone de vérification.',
|
||||
'document_is_checked_out_update' => 'Le document est actuellement vérifié. Si vous ajoutez une nouvelle version, la version vérifiée ne pourra plus être vérifiée à nouveau.',
|
||||
'document_is_not_locked' => 'Ce document n\'est pas verrouillé',
|
||||
|
@ -668,6 +668,8 @@ URL : [url]</p>',
|
|||
'error_remove_document' => 'Erreur lors de la suppression du document',
|
||||
'error_remove_folder' => 'Erreur lors de la suppression du dossier',
|
||||
'error_remove_permission' => 'Erreur lors de la suppression de permission',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => 'Erreur lors de la suppression du workflow',
|
||||
'error_rm_workflow_action' => 'Erreur lors de la suppression de l’action de workflow',
|
||||
'error_rm_workflow_state' => 'Erreur lors de la suppression de l’état de workflow',
|
||||
|
@ -719,11 +721,11 @@ URL : [url]</p>',
|
|||
'extension_manager' => 'Gestionnaire d\'extensions',
|
||||
'extension_mgr_error_upload' => 'Erreur lors du chargement de l’extension',
|
||||
'extension_mgr_installed' => 'Installées',
|
||||
'extension_mgr_no_toggle' => '',
|
||||
'extension_mgr_no_toggle' => 'Les extensions ne peuvent pas être activées/désactivées car le fichier de configuration n\'est pas accessible en écriture.',
|
||||
'extension_mgr_no_upload' => 'L’ajout de nouvelles extensions n’est pas possible car le répertoire des extensions n’est pas accessible en écriture.',
|
||||
'extension_mgr_no_zipfile' => 'L’extension chargée n’est pas un dossier zip',
|
||||
'extension_mgr_repository' => 'Disponibles',
|
||||
'extension_mgr_upload_disabled' => '',
|
||||
'extension_mgr_upload_disabled' => 'Le chargement d\'extension n\'est pas activé',
|
||||
'extension_missing_name' => 'Nom d’extension manquant',
|
||||
'extension_toggle_error' => 'Impossible d’activer/désactiver l’extension',
|
||||
'extension_version_list' => 'Versions',
|
||||
|
@ -827,7 +829,7 @@ Utilisateur : [username]<br />
|
|||
URL : [url]</p>',
|
||||
'folder_renamed_email_subject' => '[sitename] : [name] - Dossier renommé',
|
||||
'folder_title' => 'Dossier \'[foldername]\'',
|
||||
'foot_note' => '',
|
||||
'foot_note' => 'Note de pied de page',
|
||||
'force_update' => 'Mettre à jour',
|
||||
'friday' => 'Vendredi',
|
||||
'friday_abbr' => 'Ven.',
|
||||
|
@ -984,6 +986,7 @@ URL : [url]</p>',
|
|||
'list_access_rights' => 'Liste des droits d’accès…',
|
||||
'list_contains_no_access_docs' => 'La liste contient des documents auxquels vous n’avez pas accès et qui ne sont donc pas affichés.',
|
||||
'list_hooks' => 'Liste des appels internes',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => 'Liste des tâches',
|
||||
'local_file' => 'Fichier local',
|
||||
'locked_by' => 'Verrouillé par',
|
||||
|
@ -1192,14 +1195,14 @@ URL : [url]</p>',
|
|||
'old' => 'Ancien',
|
||||
'only_jpg_user_images' => 'Images d\'utilisateur au format .jpg seulement',
|
||||
'operation_disallowed' => 'Opération non autorisée',
|
||||
'orderby' => '',
|
||||
'orderby_date_asc' => '',
|
||||
'orderby_date_desc' => '',
|
||||
'orderby_id_asc' => '',
|
||||
'orderby_id_desc' => '',
|
||||
'orderby_name_asc' => '',
|
||||
'orderby_name_desc' => '',
|
||||
'orderby_unsorted' => '',
|
||||
'orderby' => 'Trier par',
|
||||
'orderby_date_asc' => 'Trier par date croissante',
|
||||
'orderby_date_desc' => 'Trier par date décroissante',
|
||||
'orderby_id_asc' => 'Trier par ID croissant',
|
||||
'orderby_id_desc' => 'Trier par ID décroissant',
|
||||
'orderby_name_asc' => 'Trier par nom croissant',
|
||||
'orderby_name_desc' => 'Trier par nom décroissant',
|
||||
'orderby_unsorted' => 'Non trié',
|
||||
'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',
|
||||
|
@ -1397,6 +1400,7 @@ URL : [url]</p>',
|
|||
'remove_approval_log' => 'Approbation retirée',
|
||||
'remove_marked_files' => 'Supprimer les fichiers sélectionnés',
|
||||
'remove_review_log' => 'Vérification retirée',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'réparé',
|
||||
'repairing_objects' => 'Réparation des documents et des dossiers.',
|
||||
'replace_content_email_body' => 'La dernière version du document a été remplacée.
|
||||
|
@ -1726,6 +1730,8 @@ Nom : [username]
|
|||
'seq_end' => 'À la fin',
|
||||
'seq_keep' => 'Conserver la position',
|
||||
'seq_start' => 'Première position',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'Utilisateurs en ligne',
|
||||
'setDateFromFile' => 'Reprendre la date du fichier importé',
|
||||
'setDateFromFolder' => 'Reprendre la date du dossier importé',
|
||||
|
@ -1799,12 +1805,12 @@ Nom : [username]
|
|||
'settings_dbVersion' => 'Schéma de base de données trop ancien',
|
||||
'settings_defaultAccessDocs' => 'Accès par défaut des nouveaux documents',
|
||||
'settings_defaultAccessDocs_desc' => 'Lors de la création d’un nouveau document, ce droit d’accès sera appliqué par défaut.',
|
||||
'settings_defaultDocPosition' => 'Position du document à la création',
|
||||
'settings_defaultDocPosition_desc' => 'C\'est la position par défaut dans un dossier lors de la création d\'un document.',
|
||||
'settings_defaultDocPosition' => 'Position du document à sa création',
|
||||
'settings_defaultDocPosition_desc' => 'Position par défaut lors de la création d\'un document dans un dossier.',
|
||||
'settings_defaultDocPosition_val_end' => 'fin',
|
||||
'settings_defaultDocPosition_val_start' => 'début',
|
||||
'settings_defaultFolderPosition' => 'Position du dossier à sa création',
|
||||
'settings_defaultFolderPosition_desc' => 'Position par défaut dans un dossier lorsqu\'un nouveau dossier est créé.',
|
||||
'settings_defaultFolderPosition_desc' => 'Position par défaut lors de la création d\'un dossier.',
|
||||
'settings_defaultSearchMethod' => 'Méthode de recherche par défaut',
|
||||
'settings_defaultSearchMethod_desc' => 'Méthode de recherche par défaut, lorsque la recherche est exécutée depuis le moteur de recherche du menu principal',
|
||||
'settings_defaultSearchMethod_valdatabase' => 'base de données',
|
||||
|
@ -1827,8 +1833,8 @@ Nom : [username]
|
|||
'settings_enableAdminReceipt_desc' => 'Activer cette option pour permettre aux administrateurs d’être listés en tant que destinataires.',
|
||||
'settings_enableAdminRevApp' => 'Autoriser vérification/approbation par les administrateurs',
|
||||
'settings_enableAdminRevApp_desc' => 'Activer cette option pour ajouter les administrateurs à la liste des examinateurs/approbateurs et pour les transitions de workflow.',
|
||||
'settings_enableCalendar' => 'Activer agenda',
|
||||
'settings_enableCalendar_desc' => 'Active/désactive l’agenda',
|
||||
'settings_enableCalendar' => 'Activer l\'agenda',
|
||||
'settings_enableCalendar_desc' => 'Active/désactive l\'agenda',
|
||||
'settings_enableCancelCheckout' => 'Autoriser l’annulation des vérifications',
|
||||
'settings_enableCancelCheckout_desc' => 'Si coché, un document vérifié qui a déjà été modifié pourra être abandonné.',
|
||||
'settings_enableClipboard' => 'Activer le presse-papier',
|
||||
|
@ -1847,12 +1853,12 @@ Nom : [username]
|
|||
'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_enableExtensionDownload' => 'Autoriser le téléchargement des extensions',
|
||||
'settings_enableExtensionDownload_desc' => 'Dans le gestionnaire d\'extensions, activez cette option pour autoriser le téléchargement d\'extensions.',
|
||||
'settings_enableExtensionImport' => 'Autoriser l\'import d\'exensions',
|
||||
'settings_enableExtensionImportFromRepository' => 'Autoriser l\'import d\'extension depuis le dossier de dépôt',
|
||||
'settings_enableExtensionImportFromRepository_desc' => 'Activer si cette extension peut être importée depuis le dossier de dépôt',
|
||||
'settings_enableExtensionImport_desc' => 'Si activé, l\'extension sera uploadée dans le gestionnaire d\'extensions',
|
||||
'settings_enableExtensionDownload' => 'Autoriser le téléchargement d\'extensions',
|
||||
'settings_enableExtensionDownload_desc' => 'Activez cette option pour autoriser le téléchargement des extensions.',
|
||||
'settings_enableExtensionImport' => 'Autoriser l\'import d\'extensions',
|
||||
'settings_enableExtensionImportFromRepository' => 'Autoriser l\'import d\'extensions depuis le dépôt',
|
||||
'settings_enableExtensionImportFromRepository_desc' => 'Activez cette option pour autoriser l\'importation des extensions depuis le dépôt.',
|
||||
'settings_enableExtensionImport_desc' => 'Activez cette option pour autoriser l\'importation des extensions.',
|
||||
'settings_enableFilterReceipt' => 'Éliminer des propriétaires, examinateurs… d’une liste de destinataires',
|
||||
'settings_enableFilterReceipt_desc' => 'Activez cette option pour éliminer certains destinataires d’une liste s’ils sont entrés en tant que membres d’un groupe.',
|
||||
'settings_enableFolderTree' => 'Activer l\'arborescence des dossiers',
|
||||
|
@ -1931,7 +1937,7 @@ Nom : [username]
|
|||
'settings_expandFolderTree_val0' => 'Démarrer avec l\'arborescence cachée',
|
||||
'settings_expandFolderTree_val1' => 'Démarrer avec le premier niveau déroulé',
|
||||
'settings_expandFolderTree_val2' => 'Démarrer avec l\'arborescence déroulée',
|
||||
'settings_ExtensionMgr' => 'Paramètres du gestionnaire d\'extensions',
|
||||
'settings_ExtensionMgr' => 'Paramètres des extensions',
|
||||
'settings_Extensions' => 'Extensions',
|
||||
'settings_extraPath' => 'Chemin d’inclusion supplémentaire PHP',
|
||||
'settings_extraPath_desc' => 'Chemin vers des logiciels supplémentaires. Il s’agit du répertoire contenant par exemple le répertoire ADOdb ou des paquets PEAR supplémentaires.',
|
||||
|
@ -1993,10 +1999,10 @@ 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' => 'Ne pas afficher ces champs',
|
||||
'settings_noDocumentFormFields' => 'Ne pas afficher ces champs (documents)',
|
||||
'settings_noDocumentFormFields_desc' => 'Ces champs ne seront pas visibles à l’ajout et à la modification d’un document. Les valeurs existantes seront conservées.',
|
||||
'settings_noFolderFormFields' => 'Ne pas montrer les champs (dossier)',
|
||||
'settings_noFolderFormFields_desc' => 'Ces champs ne s\'afficheront pas lors de l\'addition ou la modification d\'un dossier. Les valeurs déjà existantes seront conservées.',
|
||||
'settings_noFolderFormFields' => 'Ne pas afficher ces champs (dossiers)',
|
||||
'settings_noFolderFormFields_desc' => 'Ces champs ne seront pas visibles à l\'ajout et à la modification d\'un dossier. Les valeurs existantes seront conservées.',
|
||||
'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.',
|
||||
|
|
|
@ -569,6 +569,8 @@ Internet poveznica: [url]',
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => '',
|
||||
'error_remove_permission' => '',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -835,6 +837,7 @@ Internet poveznica: [url]',
|
|||
'list_access_rights' => 'Izlistaj sve dozvole pristupa',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => 'Kuke za popise',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Lokalna datoteka',
|
||||
'locked_by' => 'Zaključao',
|
||||
|
@ -1146,6 +1149,7 @@ Internet poveznica: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Ukloni označene datoteke',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'popravljeno',
|
||||
'repairing_objects' => 'Popravljanje dokumenata ili mapa.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1372,6 +1376,8 @@ Internet poveznica: [url]',
|
|||
'seq_end' => 'Na kraju',
|
||||
'seq_keep' => 'Zadrži poziciju',
|
||||
'seq_start' => 'Na početak',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
|
|
@ -564,6 +564,8 @@ URL: [url]',
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => '',
|
||||
'error_remove_permission' => '',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -830,6 +832,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Összes jogosultság felsorolása...',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => 'Hook lista',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Helyi állomány',
|
||||
'locked_by' => 'Zárolta',
|
||||
|
@ -1142,6 +1145,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Megjelölt állományok eltávolítása',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'javított',
|
||||
'repairing_objects' => 'Dokumentumok és mappák helyreállítása',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1350,6 +1354,8 @@ URL: [url]',
|
|||
'seq_end' => 'Vgre',
|
||||
'seq_keep' => 'Pozci megtartßsa',
|
||||
'seq_start' => 'Elejére',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
|
|
@ -574,6 +574,8 @@ URL: [url]',
|
|||
'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_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'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',
|
||||
|
@ -840,6 +842,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Elenca tutti i diritti di accesso...',
|
||||
'list_contains_no_access_docs' => 'L\'elenco contiene più documenti ai quali non si ha accesso e non vengono visualizzati.',
|
||||
'list_hooks' => 'Elenco hooks',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => 'Elenco attività',
|
||||
'local_file' => 'File locale',
|
||||
'locked_by' => 'Bloccato da',
|
||||
|
@ -1163,6 +1166,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Rimuovi i files contrassegnati',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'riparato',
|
||||
'repairing_objects' => 'Riparazione documenti e cartelle in corso...',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1399,6 +1403,8 @@ Name: [username]
|
|||
'seq_end' => 'Alla fine',
|
||||
'seq_keep' => 'Mantieni la posizione',
|
||||
'seq_start' => 'Prima posizione',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'Utenti online',
|
||||
'setDateFromFile' => 'Prende la data dal file importato',
|
||||
'setDateFromFolder' => 'Prende la data dalla cartella importata',
|
||||
|
|
|
@ -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 (945), daivoc (421), fofwisdom (166)
|
||||
// Translators: Admin (951), daivoc (421), fofwisdom (166)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '이중 인증',
|
||||
|
@ -375,7 +375,7 @@ URL: [url]',
|
|||
'documentcontent' => '',
|
||||
'documents' => '문서',
|
||||
'documents_checked_out_by_you' => '당신으로 부터 문서가 체크아웃 되었습니다.',
|
||||
'documents_expired' => '',
|
||||
'documents_expired' => '만료된 문서들',
|
||||
'documents_in_process' => '진행중인 문서',
|
||||
'documents_locked' => '잠긴 문서',
|
||||
'documents_locked_by_you' => '당신에 의해 잠긴 문서',
|
||||
|
@ -570,6 +570,8 @@ URL: [url]',
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => '',
|
||||
'error_remove_permission' => '',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -722,7 +724,7 @@ URL: [url]',
|
|||
'hu_HU' => '헝가리어',
|
||||
'id' => 'ID',
|
||||
'identical_version' => '새 버전은 최신 버전으로 동일하다.',
|
||||
'id_ID' => '',
|
||||
'id_ID' => '인도네시아어',
|
||||
'import' => '가져오기',
|
||||
'importfs' => '파일시스템으로부터 가져오기',
|
||||
'import_extension' => '',
|
||||
|
@ -836,6 +838,7 @@ URL: [url]',
|
|||
'list_access_rights' => '모든 접근 권한 나열',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => '',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => '로컬 파일',
|
||||
'locked_by' => '잠근이',
|
||||
|
@ -854,7 +857,7 @@ URL: [url]',
|
|||
'login_restrictions_apply' => '',
|
||||
'logout' => '로그 아웃',
|
||||
'log_management' => '파일 관리 로그',
|
||||
'lo_LA' => '',
|
||||
'lo_LA' => '라오스어',
|
||||
'malformed_expiration_date' => '',
|
||||
'manager' => '관리자',
|
||||
'manager_of_group' => '당신은 이 그룹의 관리자 입니다.',
|
||||
|
@ -903,7 +906,7 @@ URL: [url]',
|
|||
'nav_brand_my_documents' => '',
|
||||
'nav_brand_view_document' => '',
|
||||
'nav_brand_view_folder' => '',
|
||||
'nb_NO' => '',
|
||||
'nb_NO' => '노르웨이어',
|
||||
'needs_correction' => '',
|
||||
'needs_workflow_action' => '이 문서는 당신의주의가 필요합니다. 워크플로우 탭을 확인하시기 바랍니다.',
|
||||
'network_drive' => '네트워크 드라이브',
|
||||
|
@ -1104,7 +1107,7 @@ URL : [url]',
|
|||
'receipt_submit_email_subject' => '',
|
||||
'receipt_summary' => '접수증 요약',
|
||||
'receipt_update_failed' => '',
|
||||
'recent_uploads' => '',
|
||||
'recent_uploads' => '최근 업로드들',
|
||||
'reception' => '',
|
||||
'reception_acknowleged' => '',
|
||||
'reception_noaction' => '',
|
||||
|
@ -1140,6 +1143,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => '마크 파일을 제거',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => '복구',
|
||||
'repairing_objects' => '문서 및 폴더 복구',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1366,6 +1370,8 @@ URL : [url]',
|
|||
'seq_end' => '마지막 위치',
|
||||
'seq_keep' => '위치 유지',
|
||||
'seq_start' => '첫 번째 위치',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
@ -2094,7 +2100,7 @@ URL : [url]',
|
|||
'version_deleted_email_subject' => '[sitename] : [name] - 버전 삭제',
|
||||
'version_info' => '버전 정보',
|
||||
'view' => '보기',
|
||||
'view_document' => '',
|
||||
'view_document' => '문서 자세히 보기',
|
||||
'view_folder' => '',
|
||||
'view_online' => '온라인으로 보기',
|
||||
'warning' => '경고',
|
||||
|
|
|
@ -567,6 +567,8 @@ URL: [url]',
|
|||
'error_remove_document' => 'ເກີດຂໍ້ຜິດພາດຂະນະລົບເອກະສານ',
|
||||
'error_remove_folder' => 'ເກີດຂໍ້ຜິດພາດຂະນະລົບໂຟລເດີ',
|
||||
'error_remove_permission' => 'ເກີດຂໍ້ຜິດພາດໃນຂະນະລົບສິດ',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -833,6 +835,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'ສະແດງສິດທິການເຂົ້າເຖິງທັງໝົດ ...',
|
||||
'list_contains_no_access_docs' => 'ລິດລາຍການປະກອບດ້ວຍເອກະສານເພີ່ມເຕີມທີ່ເຈົ້າບໍ່ສາມາດເຂົ້າເຖິງໄດ້ ແລະບໍ່ສະແດງ',
|
||||
'list_hooks' => 'ລາບການ hooks',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'ໄຟລທ້ອງຖິນ',
|
||||
'locked_by' => 'ຖູກລັອກໂດຍ',
|
||||
|
@ -1156,6 +1159,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'ລົບໄຟລທີມີເຄື່ອງໝາຍໄວ້',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'ການສ້ອມແປງ',
|
||||
'repairing_objects' => 'ການສ້ອມແປງເອກະສານແລະໂຟລເດີ',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1392,6 +1396,8 @@ URL: [url]',
|
|||
'seq_end' => 'ໃນຕອນທ້າຍ',
|
||||
'seq_keep' => 'ເກັບຕຳແໜ່ງໄວ້',
|
||||
'seq_start' => 'ອັນດັບທຳອິດ',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'ຜູ້ໄຊ້ອອນລາຍ',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
|
|
@ -581,6 +581,8 @@ URL: [url]',
|
|||
'error_remove_document' => 'Feil ved sletting av dokument',
|
||||
'error_remove_folder' => 'Feil ved sletting av katalog',
|
||||
'error_remove_permission' => 'Feil ved sletting av tillatelse',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => 'Feil ved fjerning av arbeidsflyt',
|
||||
'error_rm_workflow_action' => 'Feil ved fjerning av arbeidsflythandling',
|
||||
'error_rm_workflow_state' => 'Feil ved fjerning av arbeidsflyttilstand',
|
||||
|
@ -854,6 +856,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Liste over alle rettigheter...',
|
||||
'list_contains_no_access_docs' => 'Listen inneholder flere dokumenter du ikke har tilgang til og ikke vises.',
|
||||
'list_hooks' => 'Liste hooks',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => 'Liste oppgaver',
|
||||
'local_file' => 'Lokal fil',
|
||||
'locked_by' => 'Låst av',
|
||||
|
@ -1171,6 +1174,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Fjern markerte filer',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'reparert',
|
||||
'repairing_objects' => 'Reparere dokumenter og mapper.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1405,6 +1409,8 @@ Bruker: [username]
|
|||
'seq_end' => 'På slutten',
|
||||
'seq_keep' => 'Hold posisjon',
|
||||
'seq_start' => 'Første possisjon',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'Brukere innlogget',
|
||||
'setDateFromFile' => 'Overta dato fra importert fil',
|
||||
'setDateFromFolder' => 'Overta dato fra importert mappe',
|
||||
|
|
|
@ -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 (1169), gijsbertush (673), pepijn (45), reinoutdijkstra@hotmail.com (270)
|
||||
// Translators: Admin (1176), gijsbertush (673), pepijn (45), reinoutdijkstra@hotmail.com (270)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '2-factor-authenticatie',
|
||||
|
@ -574,6 +574,8 @@ URL: [url]',
|
|||
'error_remove_document' => 'Fout bij het verwijderen van document',
|
||||
'error_remove_folder' => 'Fout bij het verwijderen van map',
|
||||
'error_remove_permission' => 'Verwijder permissie',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => 'Fout bij het verwijderen van de workflow',
|
||||
'error_rm_workflow_action' => 'Fout bij het verwijderen van een handeling uit de workflow',
|
||||
'error_rm_workflow_state' => 'Fout bij het verwijderen van de workflow-status',
|
||||
|
@ -847,6 +849,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Toegangsrechten',
|
||||
'list_contains_no_access_docs' => 'Geen toegankelijke documenten',
|
||||
'list_hooks' => 'Hooks',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => 'Taken',
|
||||
'local_file' => 'Lokaal bestand',
|
||||
'locked_by' => 'In gebruik door',
|
||||
|
@ -1169,6 +1172,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Geselecteerde bestanden worden verwijderd',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'Gerepareerd',
|
||||
'repairing_objects' => 'Documenten en mappen repareren.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1404,6 +1408,8 @@ Name: [username]
|
|||
'seq_end' => 'Op het einde',
|
||||
'seq_keep' => 'Behoud Positie',
|
||||
'seq_start' => 'Eerste positie',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'sessies',
|
||||
'setDateFromFile' => 'Gebruik de datum van de geïmporteerde file',
|
||||
'setDateFromFolder' => 'Gebruik de datum van de geïmporteerde map',
|
||||
|
@ -1462,8 +1468,8 @@ Name: [username]
|
|||
'settings_Database' => 'Database instellingen',
|
||||
'settings_dateformat' => 'Datum formaat',
|
||||
'settings_dateformat_desc' => '',
|
||||
'settings_datetimeformat' => '',
|
||||
'settings_datetimeformat_desc' => '',
|
||||
'settings_datetimeformat' => 'Datum/Tijd formaat',
|
||||
'settings_datetimeformat_desc' => 'Dit datum formaat gebruikt de syntax van de php\'s date() functie',
|
||||
'settings_dbDatabase' => 'Database',
|
||||
'settings_dbDatabase_desc' => 'De naam van de database ingevoerd tijdens het installatie proces. Verander de waarde niet tenzij noodzakelijk, als bijvoorbeeld de database is verplaatst.',
|
||||
'settings_dbDriver' => 'Database Type',
|
||||
|
@ -1481,7 +1487,7 @@ Name: [username]
|
|||
'settings_defaultDocPosition_desc' => 'Dit is de standaardplaats binnen een map waar een document wordt gecreëerd.',
|
||||
'settings_defaultDocPosition_val_end' => 'aan het einde',
|
||||
'settings_defaultDocPosition_val_start' => 'aan het begin',
|
||||
'settings_defaultFolderPosition' => '',
|
||||
'settings_defaultFolderPosition' => 'Positie van de map als deze aangemaakt wordt',
|
||||
'settings_defaultFolderPosition_desc' => '',
|
||||
'settings_defaultSearchMethod' => 'Standaard zoekmethode',
|
||||
'settings_defaultSearchMethod_desc' => 'Default zoekmethode = op documentnaam / fulltext-search',
|
||||
|
@ -1525,7 +1531,7 @@ Name: [username]
|
|||
'settings_enableDuplicateSubFolderNames_desc' => 'Staat het toe om mapnamen te dupliceren in een map.',
|
||||
'settings_enableEmail' => 'E-mail inschakelen',
|
||||
'settings_enableEmail_desc' => 'Inschakelen/uitschakelen automatische email notificatie',
|
||||
'settings_enableExtensionDownload' => '',
|
||||
'settings_enableExtensionDownload' => 'Toestaan van het downloaden van extensies',
|
||||
'settings_enableExtensionDownload_desc' => '',
|
||||
'settings_enableExtensionImport' => '',
|
||||
'settings_enableExtensionImportFromRepository' => '',
|
||||
|
@ -1609,7 +1615,7 @@ Name: [username]
|
|||
'settings_expandFolderTree_val0' => 'begin met verborgen structuur',
|
||||
'settings_expandFolderTree_val1' => 'begin met structuur eerste niveau uitgevouwen',
|
||||
'settings_expandFolderTree_val2' => 'begin met structuur volledig uitgevouwen',
|
||||
'settings_ExtensionMgr' => '',
|
||||
'settings_ExtensionMgr' => 'Extensie manager instellingen',
|
||||
'settings_Extensions' => 'Uitbreidingen',
|
||||
'settings_extraPath' => 'Extra PHP include Path',
|
||||
'settings_extraPath_desc' => 'Pad naar extra software. Dit pad bevat bv. het adodb pad of de extra pear packages.',
|
||||
|
@ -1673,7 +1679,7 @@ Name: [username]
|
|||
'settings_more_settings' => 'Meer instellingen. Standaardlogin: admin/admin',
|
||||
'settings_noDocumentFormFields' => 'Deze velden niet tonen',
|
||||
'settings_noDocumentFormFields_desc' => 'Deze velden niet laten zien bij toevoegen of bewerken van een document. Bestaande waardes worden bewaard.',
|
||||
'settings_noFolderFormFields' => '',
|
||||
'settings_noFolderFormFields' => 'Deze velden niet tonen (map)',
|
||||
'settings_noFolderFormFields_desc' => '',
|
||||
'settings_notfound' => 'nietgevonden',
|
||||
'settings_Notification' => 'Notificatie-instellingen',
|
||||
|
|
|
@ -557,6 +557,8 @@ URL: [url]',
|
|||
'error_remove_document' => 'Błąd podczas usuwania dokumentu',
|
||||
'error_remove_folder' => 'Błąd podczas usuwania folderu',
|
||||
'error_remove_permission' => 'Błąd podczas usuwania uprawnienia',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => 'Błąd podczas usuwania przepływu pracy',
|
||||
'error_rm_workflow_action' => 'Błąd podczas usuwania akcji przepływu pracy',
|
||||
'error_rm_workflow_state' => 'Błąd podczas usuwania stanu przepływu pracy',
|
||||
|
@ -823,6 +825,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Pokaż uprawnienia dostępu',
|
||||
'list_contains_no_access_docs' => 'Lista zawiera więcej dokumentów, do których nie masz dostępu i nie są wyświetlane.',
|
||||
'list_hooks' => 'Lista błędów',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => 'Lista zadań',
|
||||
'local_file' => 'Lokalny plik',
|
||||
'locked_by' => 'Zablokowane przez',
|
||||
|
@ -1135,6 +1138,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Usuń zaznaczone pliki',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'naprawiony',
|
||||
'repairing_objects' => 'Naprawa dokumentów i katalogów.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1335,6 +1339,8 @@ Name: [username]
|
|||
'seq_end' => 'Na końcu',
|
||||
'seq_keep' => 'Na tej samej pozycji',
|
||||
'seq_start' => 'Na początku',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'Sesja',
|
||||
'setDateFromFile' => 'Przejmij datę z importowanego pliku',
|
||||
'setDateFromFolder' => 'Przejmij datę z importowanego folderu',
|
||||
|
|
|
@ -581,6 +581,8 @@ URL: [url]',
|
|||
'error_remove_document' => 'Erro ao excluir o documento',
|
||||
'error_remove_folder' => 'Erro na exclusão da pasta',
|
||||
'error_remove_permission' => 'Erro ao remover permissão',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'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',
|
||||
|
@ -854,6 +856,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Listar todos os direitos de acesso...',
|
||||
'list_contains_no_access_docs' => 'A lista contém mais documentos aos quais você não tem acesso e não são exibidos.',
|
||||
'list_hooks' => 'Listar ganchos',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => 'Listar tarefas',
|
||||
'local_file' => 'Arquivo local',
|
||||
'locked_by' => 'Bloqueado por',
|
||||
|
@ -1176,6 +1179,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Remover arquivos marcados',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'reparado',
|
||||
'repairing_objects' => 'Reparando documentos e pastas',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1411,6 +1415,8 @@ Nome: [username]
|
|||
'seq_end' => 'No final',
|
||||
'seq_keep' => 'Manter posição',
|
||||
'seq_start' => 'Primeira posição',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'Online',
|
||||
'setDateFromFile' => 'Assumir a data do arquivo importado',
|
||||
'setDateFromFolder' => 'Assumir a data da pasta importada',
|
||||
|
|
|
@ -569,6 +569,8 @@ URL: [url]',
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => '',
|
||||
'error_remove_permission' => '',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -835,6 +837,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Listeaza toate drepturile de acces',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => '',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Fișier local',
|
||||
'locked_by' => 'Blocat de',
|
||||
|
@ -1147,6 +1150,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Eliminați fișierele marcate',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'reparat',
|
||||
'repairing_objects' => 'Reparare documente și foldere.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1373,6 +1377,8 @@ URL: [url]',
|
|||
'seq_end' => 'La sfârșit',
|
||||
'seq_keep' => 'Păstrați poziția',
|
||||
'seq_start' => 'Prima poziție',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
|
|
@ -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)
|
||||
// Translators: Admin (1721)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => 'Двухфакторная аутентификация',
|
||||
|
@ -273,7 +273,7 @@ URL: [url]',
|
|||
'chart_docspermonth_title' => 'Новые документы за месяц',
|
||||
'chart_docsperstatus_title' => 'Документы по статусу',
|
||||
'chart_docsperuser_title' => 'Документы на пользователя',
|
||||
'chart_foldersperuser_title' => '',
|
||||
'chart_foldersperuser_title' => 'Каталоги по пользователям',
|
||||
'chart_selection' => 'Выбор графика',
|
||||
'chart_sizeperuser_title' => 'Занятое дисковое пространство по пользователям',
|
||||
'checkedout_file_has_different_version' => 'Полученная версия не совпадает с текущей версией. Загрузка не обновит документ',
|
||||
|
@ -569,6 +569,8 @@ URL: [url]',
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => '',
|
||||
'error_remove_permission' => 'Ошибка снятия разрешения',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -721,7 +723,7 @@ URL: [url]',
|
|||
'hu_HU' => 'Hungarian',
|
||||
'id' => 'Идентификатор',
|
||||
'identical_version' => 'Новая версия идентична текущей.',
|
||||
'id_ID' => '',
|
||||
'id_ID' => 'Индонезийский',
|
||||
'import' => 'Импорт',
|
||||
'importfs' => 'Импорт из файлов',
|
||||
'import_extension' => '',
|
||||
|
@ -835,6 +837,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Показать все права доступа',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => 'Список хуков',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Локальный файл',
|
||||
'locked_by' => 'Заблокирован',
|
||||
|
@ -1149,6 +1152,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Удалить выбранные файлы',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'исправлено',
|
||||
'repairing_objects' => 'Восстановление каталогов и документов',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1380,6 +1384,8 @@ URL: [url]',
|
|||
'seq_end' => 'В конце',
|
||||
'seq_keep' => 'Не изменять',
|
||||
'seq_start' => 'В начале',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
@ -1996,7 +2002,7 @@ URL: [url]',
|
|||
'to' => 'До',
|
||||
'toggle_manager' => 'Изменить как менеджера',
|
||||
'toggle_qrcode' => '',
|
||||
'total' => '',
|
||||
'total' => 'Всего',
|
||||
'to_before_from' => 'Конечная дата не может быть меньше начальной даты',
|
||||
'transfer_content' => '',
|
||||
'transfer_document' => 'Передать документ',
|
||||
|
|
|
@ -581,6 +581,8 @@ URL: [url]',
|
|||
'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_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => 'Nastala chyba pri odstránovaní workflow',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -854,6 +856,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Zobraziť všetky prístupové práva',
|
||||
'list_contains_no_access_docs' => 'Zoznam obsahuje viac dokumentov, ku ktorým nemáte prístup a nie sú zobrazené.',
|
||||
'list_hooks' => 'List hooks',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => 'List tasks',
|
||||
'local_file' => 'Lokálny súbor',
|
||||
'locked_by' => 'Uzamkol',
|
||||
|
@ -1177,6 +1180,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Odstrániť označené súbory',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'opravené',
|
||||
'repairing_objects' => 'Oprava dokumentov a zložiek.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1413,6 +1417,8 @@ Meno: [username]
|
|||
'seq_end' => 'Nakoniec',
|
||||
'seq_keep' => 'Ponechať pozíciu',
|
||||
'seq_start' => 'Prvá pozícia',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'Používatelia online',
|
||||
'setDateFromFile' => 'Prebrať dátumy z importovaných súborov',
|
||||
'setDateFromFolder' => 'Prebrať dátumy z importovaných zložiek',
|
||||
|
|
|
@ -575,6 +575,8 @@ URL: [url]',
|
|||
'error_remove_document' => 'Fel vid radering av dokument',
|
||||
'error_remove_folder' => 'Fel vid radering av katalog',
|
||||
'error_remove_permission' => 'Fel vid borttagen behörighet',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -841,6 +843,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Lista alla rättigheter...',
|
||||
'list_contains_no_access_docs' => 'Listan innehåller fler dokument som inte visas då du saknar rättigheter till dessa.',
|
||||
'list_hooks' => 'Lista hooks',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Lokal fil',
|
||||
'locked_by' => 'Låst av',
|
||||
|
@ -1150,6 +1153,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Ta bort markerade filer',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'reparerat',
|
||||
'repairing_objects' => 'Reparerar dokument och kataloger.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1386,6 +1390,8 @@ Kommentar: [comment]',
|
|||
'seq_end' => 'På slutet',
|
||||
'seq_keep' => 'Behåll positionen',
|
||||
'seq_start' => 'Första positionen',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => 'Användare online',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
|
|
@ -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 (1129), aydin (83)
|
||||
// Translators: Admin (1131), aydin (83)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => 'İki faktörlü yetkilendirme',
|
||||
|
@ -149,7 +149,7 @@ URL: [url]',
|
|||
'archive_creation_warning' => 'Bu işlemle tüm DYS içeriğindeki dosyaların arşivini oluşturabilirsiniz. Arşiv oluşturulduktan sonra sunucudaki data klasörüne kaydedilecektir.<br>DİKKAT: Okunabilir olarak oluşturulan arşiv, sunucu yedeği olarak kullanılamaz.',
|
||||
'ar_EG' => 'Arapça',
|
||||
'assign_approvers' => 'Onaylayıcı Tanımla',
|
||||
'assign_recipients' => '',
|
||||
'assign_recipients' => 'Alıcı ata',
|
||||
'assign_reviewers' => 'Kontrol Eden Tanımla',
|
||||
'assign_user_property_to' => 'Kullanıcının özelliklerini ata',
|
||||
'assumed_released' => 'Yayınlandı kabul edilmekte',
|
||||
|
@ -563,6 +563,8 @@ URL: [url]',
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => 'Klasörü Silerken Hata!',
|
||||
'error_remove_permission' => '',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -742,7 +744,7 @@ URL: [url]',
|
|||
'index_pending' => '',
|
||||
'index_waiting' => 'Bekliyor',
|
||||
'individuals' => 'Bireysel',
|
||||
'individuals_in_groups' => '',
|
||||
'individuals_in_groups' => 'Ekip Üyeleri',
|
||||
'ind_review_removed' => '',
|
||||
'info_recipients_tab_not_released' => '',
|
||||
'info_rm_user_from_processes_user' => '',
|
||||
|
@ -829,6 +831,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Tüm erişim haklarini listele',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => '',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Yerel dosya',
|
||||
'locked_by' => 'Kilitleyen',
|
||||
|
@ -1143,6 +1146,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'İşaretli dosyaları sil',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'onarıldı',
|
||||
'repairing_objects' => 'Doküman ve klasörler onarılıyor.',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1352,6 +1356,8 @@ URL: [url]',
|
|||
'seq_end' => 'En sona',
|
||||
'seq_keep' => 'Sırayı Koru',
|
||||
'seq_start' => 'İlk sıra',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
|
|
@ -569,6 +569,8 @@ URL: [url]',
|
|||
'error_remove_document' => '',
|
||||
'error_remove_folder' => '',
|
||||
'error_remove_permission' => '',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '',
|
||||
'error_rm_workflow_action' => '',
|
||||
'error_rm_workflow_state' => '',
|
||||
|
@ -835,6 +837,7 @@ URL: [url]',
|
|||
'list_access_rights' => 'Повний список прав...',
|
||||
'list_contains_no_access_docs' => '',
|
||||
'list_hooks' => '',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '',
|
||||
'local_file' => 'Локальний файл',
|
||||
'locked_by' => 'Заблоковано',
|
||||
|
@ -1149,6 +1152,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => 'Видалити обрані файли',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => 'виправлено',
|
||||
'repairing_objects' => 'Відновлення каталогів і документів',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1373,6 +1377,8 @@ URL: [url]',
|
|||
'seq_end' => 'В кінці',
|
||||
'seq_keep' => 'Не змінювати',
|
||||
'seq_start' => 'На початку',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '',
|
||||
'setDateFromFile' => '',
|
||||
'setDateFromFolder' => '',
|
||||
|
|
|
@ -569,6 +569,8 @@ URL: [url]',
|
|||
'error_remove_document' => '删除文档时出错',
|
||||
'error_remove_folder' => '删除文件夹时出错',
|
||||
'error_remove_permission' => '移除权限时报错',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '删除工作流时报错',
|
||||
'error_rm_workflow_action' => '删除工作流报错',
|
||||
'error_rm_workflow_state' => '删除工作流状态时报错',
|
||||
|
@ -837,6 +839,7 @@ URL: [url]',
|
|||
'list_access_rights' => '列出所有的访问权限',
|
||||
'list_contains_no_access_docs' => '这个列表包含了更多你无法访问的文件也没有显示出来。',
|
||||
'list_hooks' => '钩子列表',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '任务列表',
|
||||
'local_file' => '本地文件',
|
||||
'locked_by' => '锁定人',
|
||||
|
@ -1154,6 +1157,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => '删除选中的文件',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => '已修复',
|
||||
'repairing_objects' => '修复文件和文件夹',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1360,6 +1364,8 @@ URL: [url]',
|
|||
'seq_end' => '末尾',
|
||||
'seq_keep' => '当前',
|
||||
'seq_start' => '首位',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '在线用户',
|
||||
'setDateFromFile' => '导入文件接收日期',
|
||||
'setDateFromFolder' => '导入文件夹接收日期',
|
||||
|
|
|
@ -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 (2429)
|
||||
// Translators: Admin (2431)
|
||||
|
||||
$text = array(
|
||||
'2_factor_auth' => '2階段認證',
|
||||
|
@ -581,6 +581,8 @@ URL: [url]',
|
|||
'error_remove_document' => '刪除文件時出錯',
|
||||
'error_remove_folder' => '刪除文件夾時出錯',
|
||||
'error_remove_permission' => '刪除權限時出錯',
|
||||
'error_rm_user_processes' => '',
|
||||
'error_rm_user_processes_no_docs' => '',
|
||||
'error_rm_workflow' => '刪除工作流程時出錯',
|
||||
'error_rm_workflow_action' => '刪除工作流程操作時出錯',
|
||||
'error_rm_workflow_state' => '刪除工作流程狀態時出錯',
|
||||
|
@ -740,7 +742,7 @@ URL: [url]',
|
|||
'hu_HU' => '匈牙利語',
|
||||
'id' => '序號',
|
||||
'identical_version' => '新版本的內容與舊版本完全相同',
|
||||
'id_ID' => '',
|
||||
'id_ID' => '印度',
|
||||
'import' => '匯入',
|
||||
'importfs' => '從檔案系統匯入',
|
||||
'import_extension' => '匯入擴充',
|
||||
|
@ -854,6 +856,7 @@ URL: [url]',
|
|||
'list_access_rights' => '列出權限',
|
||||
'list_contains_no_access_docs' => '該列表包含更多您無法訪問且不會顯示的文檔。',
|
||||
'list_hooks' => '掛勾列表',
|
||||
'list_notification_services' => '',
|
||||
'list_tasks' => '工作列表',
|
||||
'local_file' => '選擇檔案',
|
||||
'locked_by' => '鎖定人',
|
||||
|
@ -921,7 +924,7 @@ URL: [url]',
|
|||
'nav_brand_my_documents' => '',
|
||||
'nav_brand_view_document' => '',
|
||||
'nav_brand_view_folder' => '',
|
||||
'nb_NO' => '',
|
||||
'nb_NO' => '嚕知',
|
||||
'needs_correction' => '需要糾正',
|
||||
'needs_workflow_action' => '本文檔需要您注意。請檢查工作流程標籤。',
|
||||
'network_drive' => '網路磁碟機',
|
||||
|
@ -1175,6 +1178,7 @@ URL: [url]',
|
|||
'remove_approval_log' => '',
|
||||
'remove_marked_files' => '刪除勾選的檔案',
|
||||
'remove_review_log' => '',
|
||||
'remove_task' => '',
|
||||
'repaired' => '修復',
|
||||
'repairing_objects' => '修復文檔和文件夾。',
|
||||
'replace_content_email_body' => '',
|
||||
|
@ -1411,6 +1415,8 @@ URL: [url]',
|
|||
'seq_end' => '末尾',
|
||||
'seq_keep' => '當前',
|
||||
'seq_start' => '首位',
|
||||
'service_has_filter' => '',
|
||||
'service_name' => '',
|
||||
'sessions' => '在線用戶',
|
||||
'setDateFromFile' => '從導入的文件接管日期',
|
||||
'setDateFromFolder' => '從導入的文件夾接管日期',
|
||||
|
|
|
@ -958,7 +958,7 @@ switch($command) {
|
|||
$ires = $index->addDocument($idoc);
|
||||
header('Content-Type: application/json');
|
||||
if(false === $ires) {
|
||||
echo json_encode(array('success'=>false, 'message'=>getMLText('error_document_indexed'), 'data'=>$prefix.$object->getID()));
|
||||
echo json_encode(array('success'=>false, 'message'=>getMLText('error_document_indexed'), 'data'=>$prefix.$object->getID(), 'mimetype'=>$idoc->getMimeType(), 'cmd'=>$idoc->getCmd()));
|
||||
} else {
|
||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_indexed'), 'data'=>$prefix.$object->getID(), 'cmd'=>$idoc->getCmd()));
|
||||
}
|
||||
|
|
|
@ -209,6 +209,15 @@ else if ($action == "removefromprocesses") {
|
|||
UI::exitError(getMLText("admin_tools"),getMLText("cannot_delete_yourself"));
|
||||
}
|
||||
|
||||
if(!empty($_POST["assignTo"])) {
|
||||
$userToAssign = $dms->getUser($_POST["assignTo"]);
|
||||
if (!is_object($userToAssign)) {
|
||||
UI::exitError(getMLText("admin_tools"),getMLText("invalid_user_id"));
|
||||
}
|
||||
} else {
|
||||
$userToAssign = null;
|
||||
}
|
||||
|
||||
$userToRemove = $dms->getUser($userid);
|
||||
if (!is_object($userToRemove)) {
|
||||
UI::exitError(getMLText("admin_tools"),getMLText("invalid_user_id"));
|
||||
|
@ -219,13 +228,15 @@ else if ($action == "removefromprocesses") {
|
|||
$_POST["status"]["review"] = array();
|
||||
if(!isset($_POST["status"]["approval"]))
|
||||
$_POST["status"]["approval"] = array();
|
||||
if (!$userToRemove->removeFromProcesses($user, $_POST['status'])) {
|
||||
UI::exitError(getMLText("admin_tools"),getMLText("error_occured"));
|
||||
if(!empty($_POST['needsdocs']) && empty($_POST['docs'])) {
|
||||
$session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_rm_user_processes_no_docs')));
|
||||
} else {
|
||||
if (!$userToRemove->removeFromProcesses($user, $_POST['status'], $userToAssign, $_POST['docs'])) {
|
||||
UI::exitError(getMLText("admin_tools"),getMLText("error_rm_user_processes"));
|
||||
}
|
||||
add_log_line(".php&action=removefromprocesses&userid=".$userid);
|
||||
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_rm_user_processes')));
|
||||
}
|
||||
|
||||
add_log_line(".php&action=removefromprocesses&userid=".$userid);
|
||||
|
||||
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_rm_user_processes')));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -55,7 +55,9 @@ if($view) {
|
|||
$view->setParam('showinprocess', $showInProcess);
|
||||
$view->setParam('workflowmode', $settings->_workflowMode);
|
||||
$view->setParam('cachedir', $settings->_cacheDir);
|
||||
$view->setParam('conversionmgr', $conversionmgr);
|
||||
$view->setParam('previewWidthList', $settings->_previewWidthList);
|
||||
$view->setParam('previewConverters', isset($settings->_converters['preview']) ? $settings->_converters['preview'] : array());
|
||||
$view->setParam('timeout', $settings->_cmdTimeout);
|
||||
$view->setParam('accessobject', $accessop);
|
||||
$view->setParam('xsendfile', $settings->_enableXsendfile);
|
||||
|
|
46
out/out.NotificationServices.php
Normal file
46
out/out.NotificationServices.php
Normal file
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
// MyDMS. Document Management System
|
||||
// Copyright (C) 2010 Matteo Lucarelli
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
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");
|
||||
require_once("inc/inc.Authentication.php");
|
||||
|
||||
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
|
||||
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user));
|
||||
$accessop = new SeedDMS_AccessOperation($dms, $user, $settings);
|
||||
if (!$settings->_enableDebugMode) {
|
||||
UI::exitError(getMLText("admin_tools"),getMLText("access_denied"));
|
||||
}
|
||||
if (!$accessop->check_view_access($view, $_GET)) {
|
||||
UI::exitError(getMLText("admin_tools"),getMLText("access_denied"));
|
||||
}
|
||||
|
||||
if($view) {
|
||||
$view->setParam('settings', $settings);
|
||||
$view->setParam('accessobject', $accessop);
|
||||
$view->setParam('notifier', $notifier);
|
||||
$view($_GET);
|
||||
exit;
|
||||
}
|
||||
|
|
@ -93,6 +93,7 @@ if($view) {
|
|||
$view->setParam('enableRecursiveCount', $settings->_enableRecursiveCount);
|
||||
$view->setParam('maxRecursiveCount', $settings->_maxRecursiveCount);
|
||||
$view->setParam('accessobject', $accessop);
|
||||
$view->setParam('conversionmgr', $conversionmgr);
|
||||
$view->setParam('previewWidthList', $settings->_previewWidthList);
|
||||
$view->setParam('previewConverters', isset($settings->_converters['preview']) ? $settings->_converters['preview'] : array());
|
||||
$view->setParam('timeout', $settings->_cmdTimeout);
|
||||
|
|
|
@ -53,6 +53,11 @@ if (isset($_GET["task"])) {
|
|||
$task = $_GET['task'];
|
||||
}
|
||||
|
||||
$type = null;
|
||||
if (isset($_GET["type"])) {
|
||||
$type = $_GET['type'];
|
||||
}
|
||||
|
||||
$allusers = $dms->getAllUsers($settings->_sortUsersInList);
|
||||
|
||||
if($view) {
|
||||
|
@ -60,8 +65,10 @@ if($view) {
|
|||
$view->setParam('rmuser', $rmuser);
|
||||
$view->setParam('allusers', $allusers);
|
||||
$view->setParam('task', $task);
|
||||
$view->setParam('type', $type);
|
||||
$view->setParam('cachedir', $settings->_cacheDir);
|
||||
$view->setParam('rootfolder', $dms->getFolder($settings->_rootFolderID));
|
||||
$view->setParam('conversionmgr', $conversionmgr);
|
||||
$view->setParam('previewWidthList', $settings->_previewWidthList);
|
||||
$view->setParam('previewconverters', $settings->_converters['preview']);
|
||||
$view->setParam('timeout', $settings->_cmdTimeout);
|
||||
|
|
|
@ -596,12 +596,12 @@ class RestapiController { /* {{{ */
|
|||
return $response->withJson(array('success'=>false, 'message'=>'No parent folder id given', 'data'=>''), 400);
|
||||
}
|
||||
|
||||
if($settings->_quota > 0) {
|
||||
$remain = checkQuota($userobj);
|
||||
if ($remain < 0) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'Quota exceeded', 'data'=>''), 400);
|
||||
}
|
||||
}
|
||||
if($settings->_quota > 0) {
|
||||
$remain = checkQuota($userobj);
|
||||
if ($remain < 0) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'Quota exceeded', 'data'=>''), 400);
|
||||
}
|
||||
}
|
||||
|
||||
$mfolder = $dms->getFolder($args['id']);
|
||||
if($mfolder) {
|
||||
|
@ -637,11 +637,11 @@ class RestapiController { /* {{{ */
|
|||
foreach($categories as $catid) {
|
||||
if($cat = $dms->getDocumentCategory($catid))
|
||||
$cats[] = $cat;
|
||||
}
|
||||
$owner = null;
|
||||
if($userobj->isAdmin() && isset($params["owner"]) && ctype_digit($params['owner'])) {
|
||||
$owner = $dms->getUser($params["owner"]);
|
||||
}
|
||||
}
|
||||
$owner = null;
|
||||
if($userobj->isAdmin() && isset($params["owner"]) && ctype_digit($params['owner'])) {
|
||||
$owner = $dms->getUser($params["owner"]);
|
||||
}
|
||||
$attributes = isset($params["attributes"]) ? $params["attributes"] : array();
|
||||
foreach($attributes as $attrdefid=>$attribute) {
|
||||
if($attrdef = $dms->getAttributeDefinition($attrdefid)) {
|
||||
|
@ -710,12 +710,12 @@ class RestapiController { /* {{{ */
|
|||
return $response->withJson(array('success'=>false, 'message'=>'No document id given', 'data'=>''), 400);
|
||||
}
|
||||
|
||||
if($settings->_quota > 0) {
|
||||
$remain = checkQuota($userobj);
|
||||
if ($remain < 0) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'Quota exceeded', 'data'=>''), 400);
|
||||
}
|
||||
}
|
||||
if($settings->_quota > 0) {
|
||||
$remain = checkQuota($userobj);
|
||||
if ($remain < 0) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'Quota exceeded', 'data'=>''), 400);
|
||||
}
|
||||
}
|
||||
|
||||
$document = $dms->getDocument($args['id']);
|
||||
if($document) {
|
||||
|
@ -742,13 +742,13 @@ class RestapiController { /* {{{ */
|
|||
$file_info = array_pop($uploadedFiles);
|
||||
if ($origfilename == null)
|
||||
$origfilename = $file_info->getClientFilename();
|
||||
$temp = $file_info->file;
|
||||
$temp = $file_info->file;
|
||||
|
||||
/* Check if the uploaded file is identical to last version */
|
||||
$lc = $document->getLatestContent();
|
||||
if($lc->getChecksum() == SeedDMS_Core_File::checksum($temp)) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'Uploaded file identical to last version', 'data'=>''), 400);
|
||||
}
|
||||
/* Check if the uploaded file is identical to last version */
|
||||
$lc = $document->getLatestContent();
|
||||
if($lc->getChecksum() == SeedDMS_Core_File::checksum($temp)) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'Uploaded file identical to last version', 'data'=>''), 400);
|
||||
}
|
||||
$finfo = finfo_open(FILEINFO_MIME_TYPE);
|
||||
$userfiletype = finfo_file($finfo, $temp);
|
||||
$fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION);
|
||||
|
@ -784,14 +784,14 @@ class RestapiController { /* {{{ */
|
|||
|
||||
if(!ctype_digit($args['id']) || $args['id'] == 0) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'No document id given', 'data'=>''), 400);
|
||||
}
|
||||
}
|
||||
|
||||
if($settings->_quota > 0) {
|
||||
$remain = checkQuota($userobj);
|
||||
if ($remain < 0) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'Quota exceeded', 'data'=>''), 400);
|
||||
}
|
||||
}
|
||||
if($settings->_quota > 0) {
|
||||
$remain = checkQuota($userobj);
|
||||
if ($remain < 0) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'Quota exceeded', 'data'=>''), 400);
|
||||
}
|
||||
}
|
||||
|
||||
$mfolder = $dms->getFolder($args['id']);
|
||||
if($mfolder) {
|
||||
|
@ -1462,10 +1462,10 @@ class RestapiController { /* {{{ */
|
|||
|
||||
if(!$userobj) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'Not logged in', 'data'=>''), 403);
|
||||
}
|
||||
if(!$userobj->isAdmin()) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'No access on document', 'data'=>''), 403);
|
||||
}
|
||||
}
|
||||
if(!$userobj->isAdmin()) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'No access on document', 'data'=>''), 403);
|
||||
}
|
||||
|
||||
if(!ctype_digit($args['id']) || $args['id'] == 0) {
|
||||
return $response->withJson(array('success'=>false, 'message'=>'No document given', 'data'=>''), 400);
|
||||
|
@ -1527,16 +1527,16 @@ class RestapiController { /* {{{ */
|
|||
if(!isset($params['searchin']) || !$searchin = explode(",",$params['searchin']))
|
||||
$searchin = array();
|
||||
if(!isset($params['objects']) || !$objects = $params['objects'])
|
||||
$objects = 0x3;
|
||||
$sparams = array(
|
||||
'query'=>$querystr,
|
||||
'limit'=>$limit,
|
||||
'offset'=>$offset,
|
||||
'logicalmode'=>'AND',
|
||||
'searchin'=>$searchin,
|
||||
'mode'=>$objects,
|
||||
// 'creationstartdate'=>array('hour'=>1, 'minute'=>0, 'second'=>0, 'year'=>date('Y')-1, 'month'=>date('m'), 'day'=>date('d')),
|
||||
);
|
||||
$objects = 0x3;
|
||||
$sparams = array(
|
||||
'query'=>$querystr,
|
||||
'limit'=>$limit,
|
||||
'offset'=>$offset,
|
||||
'logicalmode'=>'AND',
|
||||
'searchin'=>$searchin,
|
||||
'mode'=>$objects,
|
||||
// 'creationstartdate'=>array('hour'=>1, 'minute'=>0, 'second'=>0, 'year'=>date('Y')-1, 'month'=>date('m'), 'day'=>date('d')),
|
||||
);
|
||||
$resArr = $dms->search($sparams);
|
||||
// $resArr = $dms->search($querystr, $limit, $offset, 'AND', $searchin, null, null, array(), array('hour'=>1, 'minute'=>0, 'second'=>0, 'year'=>date('Y')-1, 'month'=>date('m'), 'day'=>date('d')), array(), array(), array(), array(), array(), $objects);
|
||||
if($resArr === false) {
|
||||
|
@ -2324,6 +2324,22 @@ class RestapiController { /* {{{ */
|
|||
return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>''), 200);
|
||||
} /* }}} */
|
||||
|
||||
function getStatsTotal($request, $response) { /* {{{ */
|
||||
$dms = $this->container->dms;
|
||||
$userobj = $this->container->userobj;
|
||||
$check = $this->checkIfAdmin($request, $response);
|
||||
if($check !== true)
|
||||
return $check;
|
||||
|
||||
$data = [];
|
||||
foreach(array('docstotal', 'folderstotal', 'userstotal') as $type) {
|
||||
$total = $dms->getStatisticalData($type);
|
||||
$data[$type] = $total;
|
||||
}
|
||||
|
||||
return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200);
|
||||
} /* }}} */
|
||||
|
||||
} /* }}} */
|
||||
|
||||
class TestController { /* {{{ */
|
||||
|
@ -2373,9 +2389,9 @@ class Auth { /* {{{ */
|
|||
}
|
||||
/* The preflight options request doesn't have authorization in the header. So
|
||||
* don't even try to authorize.
|
||||
*/
|
||||
*/
|
||||
if($request->getMethod() == 'OPTIONS') {
|
||||
} elseif(!in_array($request->getUri()->getPath(), array('login')) && substr($request->getUri()->getPath(), 0, 5) != 'echo/') {
|
||||
} elseif(!in_array($request->getUri()->getPath(), array('login')) && substr($request->getUri()->getPath(), 0, 5) != 'echo/') {
|
||||
$userobj = null;
|
||||
if(!empty($this->container->environment['HTTP_AUTHORIZATION']) && !empty($settings->_apiKey) && !empty($settings->_apiUserId)) {
|
||||
if($settings->_apiKey == $this->container->environment['HTTP_AUTHORIZATION']) {
|
||||
|
@ -2512,6 +2528,7 @@ $app->put('/categories/{id}/name', \RestapiController::class.':changeCategoryNam
|
|||
$app->get('/attributedefinitions', \RestapiController::class.':getAttributeDefinitions');
|
||||
$app->put('/attributedefinitions/{id}/name', \RestapiController::class.':changeAttributeDefinitionName');
|
||||
$app->get('/echo/{data}', \TestController::class.':echoData');
|
||||
$app->get('/statstotal', \RestapiController::class.':getStatsTotal');
|
||||
$app->run();
|
||||
|
||||
?>
|
||||
|
|
|
@ -18,12 +18,13 @@ function usage() { /* {{{ */
|
|||
echo " -h, --help: print usage information and exit.".PHP_EOL;
|
||||
echo " -v, --version: print version and exit.".PHP_EOL;
|
||||
echo " -c: recreate index.".PHP_EOL;
|
||||
echo " --no-log: do not log.".PHP_EOL;
|
||||
echo " --config: set alternative config file.".PHP_EOL;
|
||||
} /* }}} */
|
||||
|
||||
$version = "0.0.2";
|
||||
$version = "0.0.3";
|
||||
$shortoptions = "hvc";
|
||||
$longoptions = array('help', 'version', 'config:');
|
||||
$longoptions = array('help', 'version', 'config:', 'no-log');
|
||||
if(false === ($options = getopt($shortoptions, $longoptions))) {
|
||||
usage();
|
||||
exit(0);
|
||||
|
@ -55,6 +56,8 @@ if(isset($options['c'])) {
|
|||
}
|
||||
|
||||
include($myincpath."/inc/inc.Settings.php");
|
||||
if(empty($options['no-log']))
|
||||
include($myincpath."/inc/inc.LogInit.php");
|
||||
include($myincpath."/inc/inc.Init.php");
|
||||
include($myincpath."/inc/inc.Extension.php");
|
||||
include($myincpath."/inc/inc.DBInit.php");
|
||||
|
|
|
@ -41,7 +41,7 @@ class SeedDMS_View_AddDocument extends SeedDMS_Theme_Style {
|
|||
|
||||
parent::jsTranslations(array('js_form_error', 'js_form_errors'));
|
||||
if($enablelargefileupload) {
|
||||
$this->printFineUploaderJs('../op/op.UploadChunks.php', $partitionsize, $maxuploadsize, $enablemultiupload);
|
||||
$this->printFineUploaderJs('../op/op.UploadChunks.php', $partitionsize, $maxuploadsize, $enablemultiupload, 'userfile', 'adddocform');
|
||||
}
|
||||
?>
|
||||
$(document).ready(function() {
|
||||
|
@ -172,11 +172,7 @@ console.log(params);
|
|||
$this->contentStart();
|
||||
$this->pageNavigation($this->getFolderPathHTML($folder, true), "view_folder", $folder);
|
||||
|
||||
$mus2 = SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize"));
|
||||
if($maxuploadsize && $maxuploadsize < $mus2)
|
||||
$msg = getMLText("max_upload_size").": ".SeedDMS_Core_File::format_filesize($maxuploadsize);
|
||||
else
|
||||
$msg = getMLText("max_upload_size").": ".SeedDMS_Core_File::format_filesize($mus2);
|
||||
$msg = getMLText("max_upload_size").": ".SeedDMS_Core_File::format_filesize($maxuploadsize);
|
||||
$this->warningMsg($msg);
|
||||
$this->contentHeading(getMLText("add_document"));
|
||||
|
||||
|
|
|
@ -126,11 +126,7 @@ $(document).ready( function() {
|
|||
$this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document);
|
||||
|
||||
$this->contentHeading(getMLText("linked_files"));
|
||||
$mus2 = SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize"));
|
||||
if($maxuploadsize && $maxuploadsize < $mus2)
|
||||
$msg = getMLText("max_upload_size").": ".SeedDMS_Core_File::format_filesize($maxuploadsize);
|
||||
else
|
||||
$msg = getMLText("max_upload_size").": ".SeedDMS_Core_File::format_filesize($mus2);
|
||||
$msg = getMLText("max_upload_size").": ".SeedDMS_Core_File::format_filesize($maxuploadsize);
|
||||
$this->warningMsg($msg);
|
||||
|
||||
?>
|
||||
|
|
|
@ -473,8 +473,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
htmlspecialchars($path[$i]->getName())."</a>";
|
||||
}
|
||||
else {
|
||||
$txtpath .= ($tagAll ? "<a href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$path[$i]->getID()."&showtree=".showtree()."\">".
|
||||
htmlspecialchars($path[$i]->getName())."</a>" : htmlspecialchars($path[$i]->getName()));
|
||||
$txtpath .= ($tagAll ? "<a href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$path[$i]->getID()."&showtree=".showtree()."\">".htmlspecialchars($path[$i]->getName())."</a>" : htmlspecialchars($path[$i]->getName()));
|
||||
}
|
||||
$txtpath .= " <span class=\"divider\">/</span></li>";
|
||||
}
|
||||
|
@ -483,7 +482,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
|
||||
return '<ul class="breadcrumb">'.$txtpath.'</ul>';
|
||||
} /* }}} */
|
||||
|
||||
|
||||
function pageNavigation($pageTitle, $pageType=null, $extra=null) { /* {{{ */
|
||||
|
||||
if ($pageType!=null && strcasecmp($pageType, "noNav")) {
|
||||
|
@ -639,7 +638,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
} /* }}} */
|
||||
|
||||
protected function showPaneHeader($name, $title, $isactive) { /* {{{ */
|
||||
echo '<li class="nav-item '.($isactive ? 'active' : '').'"><a class="nav-link '.($isactive ? 'active' : '').'" data-target="#'.$name.'" data-toggle="tab" role="tab">'.$title.'</a></li>'."\n";
|
||||
echo '<li class="nav-item '.($isactive ? 'active' : '').'"><a class="nav-link '.($isactive ? 'active' : '').'" data-target="#'.$name.'" data-toggle="tab" role="button">'.$title.'</a></li>'."\n";
|
||||
} /* }}} */
|
||||
|
||||
protected function showStartPaneContent($name, $isactive) { /* {{{ */
|
||||
|
@ -752,21 +751,16 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
$menuitems['transfer_document'] = array('link'=>$this->params['settings']->_httpRoot."out/out.TransferDocument". $docid, 'label'=>getMLText('transfer_document'));
|
||||
}
|
||||
|
||||
/* Check if hook exists because otherwise callHook() will override $menuitems */
|
||||
if($this->hasHook('documentNavigationBar'))
|
||||
$menuitems = $this->callHook('documentNavigationBar', $document, $menuitems);
|
||||
|
||||
/* Do not use $this->callHook() because $menuitems must be returned by the hook
|
||||
* or left unchanged
|
||||
/* Do not use $this->callHook() because $menuitems must be returned by the the
|
||||
* first hook and passed to next hook. $this->callHook() will just pass
|
||||
* the menuitems to each single hook. Hence, the last hook will win.
|
||||
*/
|
||||
/*
|
||||
$hookObjs = $this->getHookObjects();
|
||||
foreach($hookObjs as $hookObj) {
|
||||
if (method_exists($hookObj, 'documentNavigationBar')) {
|
||||
$menuitems = $hookObj->documentNavigationBar($this, $document, $menuitems);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
self::showNavigationBar($menuitems);
|
||||
|
||||
|
@ -1277,6 +1271,42 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
}
|
||||
} /* }}} */
|
||||
|
||||
function getOverallStatusIcon($status) { /* {{{ */
|
||||
if (is_null($status)) {
|
||||
return '';
|
||||
} else {
|
||||
$icon = '';
|
||||
$color = '';
|
||||
switch($status) {
|
||||
case S_IN_WORKFLOW:
|
||||
$icon = 'fa fa-circle in-workflow';
|
||||
break;
|
||||
case S_DRAFT_REV:
|
||||
$icon = 'fa fa-circle in-workflow';
|
||||
break;
|
||||
case S_DRAFT_APP:
|
||||
$icon = 'fa fa-circle in-workflow';
|
||||
break;
|
||||
case S_RELEASED:
|
||||
$icon = 'fa-circle released';
|
||||
break;
|
||||
case S_REJECTED:
|
||||
$icon = 'fa-circle rejected';
|
||||
break;
|
||||
case S_OBSOLETE:
|
||||
$icon = 'fa-circle obsolete';
|
||||
break;
|
||||
case S_EXPIRED:
|
||||
$icon = 'fa-circle expired';
|
||||
break;
|
||||
default:
|
||||
$icon = 'fa fa-question';
|
||||
break;
|
||||
}
|
||||
return '<i class="fa '.$icon.'"'.($color ? ' style="color: '.$color.';"' : '').' title="'.getOverallStatusText($status).'"></i>';
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
* Get attributes for a button opening a modal box
|
||||
*
|
||||
|
@ -1779,10 +1809,10 @@ $(document).ready(function() {
|
|||
$content .= "<input type=\"checkbox\" id=\"".$fieldname."_".$attrdef->getId()."\" name=\"".$fieldname."[".$attrdef->getId()."]\" value=\"1\" ".($objvalue ? 'checked' : '')." />";
|
||||
break;
|
||||
case SeedDMS_Core_AttributeDefinition::type_date:
|
||||
$objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : '';
|
||||
$dateformat = getConvertDateFormat($this->params['settings']->_dateformat);
|
||||
$content .= '<span class="input-append date span12 datepicker" data-date="'.getReadableDate().'" data-date-format="'.$dateformat.'" data-date-language="'.str_replace('_', '-', $this->params['session']->getLanguage()).'">
|
||||
<input id="'.$fieldname.'_'.$attrdef->getId().($namepostfix ? '_'.$namepostfix : '').'" class="span6" size="16" name="'.$fieldname.'['.$attrdef->getId().']'.($namepostfix ? '['.$namepostfix.']' : '').'" type="text" value="'.($objvalue ? $objvalue : '').'">
|
||||
$objvalue = $attribute ? getReadableDate((is_object($attribute) ? $attribute->getValue() : $attribute)) : '';
|
||||
$dateformat = getConvertDateFormat($this->params['settings']->_dateformat);
|
||||
$content .= '<span class="input-append date span12 datepicker" data-date="'.getReadableDate().'" data-date-format="'.$dateformat.'" data-date-language="'.str_replace('_', '-', $this->params['session']->getLanguage()).'">
|
||||
<input id="'.$fieldname.'_'.$attrdef->getId().($namepostfix ? '_'.$namepostfix : '').'" class="span6" size="16" name="'.$fieldname.'['.$attrdef->getId().']'.($namepostfix ? '['.$namepostfix.']' : '').'" type="text" value="'.($objvalue ? getReadableDate($objvalue) : '').'">
|
||||
<span class="add-on"><i class="fa fa-calendar"></i></span>
|
||||
</span>';
|
||||
break;
|
||||
|
@ -2899,22 +2929,18 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
|
|||
$status = $latestContent->getStatus();
|
||||
$attentionstr = '';
|
||||
if ( $document->isLocked() ) {
|
||||
$attentionstr .= "<img src=\"".$this->getImgPath("lock.png")."\" title=\"". getMLText("locked_by").": ".htmlspecialchars($document->getLockingUser()->getFullName())."\"> ";
|
||||
$attentionstr .= "<i class=\"fa fa-lock\" title=\"". getMLText("locked_by").": ".htmlspecialchars($document->getLockingUser()->getFullName())."\"></i> ";
|
||||
}
|
||||
$needwkflaction = false;
|
||||
if($workflowmode == 'advanced') {
|
||||
$workflow = $latestContent->getWorkflow();
|
||||
if($workflow) {
|
||||
$needwkflaction = $latestContent->needsWorkflowAction($user);
|
||||
if($workflow && $latestContent->needsWorkflowAction($user)) {
|
||||
$attentionstr .= "<i class=\"fa fa-exclamation-triangle\" title=\"". getMLText("workflow").": ".htmlspecialchars($workflow->getName())."\"></i> ";
|
||||
}
|
||||
}
|
||||
if ( $needwkflaction ) {
|
||||
$attentionstr .= "<img src=\"".$this->getImgPath("attention.gif")."\" title=\"". getMLText("workflow").": ".htmlspecialchars($workflow->getName())."\"> ";
|
||||
}
|
||||
$content = '';
|
||||
if($attentionstr)
|
||||
$content .= $attentionstr."<br />";
|
||||
$content .= "<small>";
|
||||
|
||||
/* Retrieve attacheѕ files */
|
||||
$files = $document->getDocumentFiles($latestContent->getVersion());
|
||||
$files = SeedDMS_Core_DMS::filterDocumentFiles($user, $files);
|
||||
|
@ -2927,17 +2953,18 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
|
|||
$revlinks = $document->getReverseDocumentLinks();
|
||||
$revlinks = SeedDMS_Core_DMS::filterDocumentLinks($user, $revlinks);
|
||||
|
||||
$content .= "<div style=\"font-size: 85%;\">";
|
||||
if(count($files))
|
||||
$content .= count($files)." ".getMLText("linked_files")."<br />";
|
||||
$content .= '<i class="fa fa-paperclip" title="'.getMLText("linked_files").'"></i> '.count($files)."<br />";
|
||||
if(count($links) || count($revlinks))
|
||||
$content .= count($links)."/".count($revlinks)." ".getMLText("linked_documents")."<br />";
|
||||
$content .= '<i class="fa fa-link" title="'.getMLText("linked_documents").'"></i> '.count($links)."/".count($revlinks)."<br />";
|
||||
if($status["status"] == S_IN_WORKFLOW && $workflowmode == 'advanced') {
|
||||
if($workflowstate = $latestContent->getWorkflowState())
|
||||
$content .= '<span title="'.getOverallStatusText($status["status"]).': '.($workflow ? htmlspecialchars($workflow->getName()) : '').'">'.($workflowstate ? htmlspecialchars($workflowstate->getName()) : '').'</span>';
|
||||
} else {
|
||||
$content .= getOverallStatusText($status["status"]);
|
||||
$content .= $this->getOverallStatusIcon($status['status']);
|
||||
}
|
||||
$content .= "</small>";
|
||||
$content .= "</div>";
|
||||
return $content;
|
||||
} /* }}} */
|
||||
|
||||
|
@ -3168,6 +3195,53 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
|
|||
return $content;
|
||||
} /* }}} */
|
||||
|
||||
function folderListRowStatus($subFolder) { /* {{{ */
|
||||
$dms = $this->params['dms'];
|
||||
$user = $this->params['user'];
|
||||
$showtree = $this->params['showtree'];
|
||||
$enableRecursiveCount = $this->params['enableRecursiveCount'];
|
||||
$maxRecursiveCount = $this->params['maxRecursiveCount'];
|
||||
|
||||
$content = "<div style=\"font-size: 85%;\">";
|
||||
if($enableRecursiveCount) {
|
||||
if($user->isAdmin()) {
|
||||
/* No need to check for access rights in countChildren() for
|
||||
* admin. So pass 0 as the limit.
|
||||
*/
|
||||
$cc = $subFolder->countChildren($user, 0);
|
||||
if($cc['folder_count'])
|
||||
$content .= '<i class="fa fa-folder" title="'.getMLText("folders").'"></i> '.$cc['folder_count']."<br />";
|
||||
if($cc['document_count'])
|
||||
$content .= '<i class="fa fa-file" title="'.getMLText("documents").'"></i> '.$cc['document_count'];
|
||||
} else {
|
||||
$cc = $subFolder->countChildren($user, $maxRecursiveCount);
|
||||
if($maxRecursiveCount > 5000)
|
||||
$rr = 100.0;
|
||||
else
|
||||
$rr = 10.0;
|
||||
if($cc['folder_count'])
|
||||
$content .= '<i class="fa fa-folder" title="'.getMLText("folders").'"></i> '.(!$cc['folder_precise'] ? '~'.(round($cc['folder_count']/$rr)*$rr) : $cc['folder_count'])."<br />";
|
||||
if($cc['document_count'])
|
||||
$content .= '<i class="fa fa-file" title="'.getMLText("documents").'"></i> '.(!$cc['document_precise'] ? '~'.(round($cc['document_count']/$rr)*$rr) : $cc['document_count']);
|
||||
}
|
||||
} else {
|
||||
/* FIXME: the following is very inefficient for just getting the number of
|
||||
* subfolders and documents. Making it more efficient is difficult, because
|
||||
* the access rights need to be checked.
|
||||
*/
|
||||
$subsub = $subFolder->getSubFolders();
|
||||
$subsub = SeedDMS_Core_DMS::filterAccess($subsub, $user, M_READ);
|
||||
$subdoc = $subFolder->getDocuments();
|
||||
$subdoc = SeedDMS_Core_DMS::filterAccess($subdoc, $user, M_READ);
|
||||
if(count($subsub))
|
||||
$content .= '<i class="fa fa-folder" title="'.getMLText("folders").'"></i> '.count($subsub)."<br />";
|
||||
if(count($subdoc))
|
||||
$content .= '<i class="fa fa-file" title="'.getMLText("documents").'"></i> '.count($subdoc);
|
||||
}
|
||||
$content .= "</div>";
|
||||
return $content;
|
||||
} /* }}} */
|
||||
|
||||
function folderListRow($subFolder, $skipcont=false, $extracontent=array()) { /* {{{ */
|
||||
$dms = $this->params['dms'];
|
||||
$user = $this->params['user'];
|
||||
|
@ -3207,34 +3281,9 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
|
|||
$content .= $extracontent['bottom_title'];
|
||||
$content .= "</td>\n";
|
||||
// $content .= "<td>".htmlspecialchars($owner->getFullName())."</td>";
|
||||
$content .= "<td colspan=\"1\" nowrap><small>";
|
||||
if($enableRecursiveCount) {
|
||||
if($user->isAdmin()) {
|
||||
/* No need to check for access rights in countChildren() for
|
||||
* admin. So pass 0 as the limit.
|
||||
*/
|
||||
$cc = $subFolder->countChildren($user, 0);
|
||||
$content .= $cc['folder_count']." ".getMLText("folders")."<br />".$cc['document_count']." ".getMLText("documents");
|
||||
} else {
|
||||
$cc = $subFolder->countChildren($user, $maxRecursiveCount);
|
||||
if($maxRecursiveCount > 5000)
|
||||
$rr = 100.0;
|
||||
else
|
||||
$rr = 10.0;
|
||||
$content .= (!$cc['folder_precise'] ? '~'.(round($cc['folder_count']/$rr)*$rr) : $cc['folder_count'])." ".getMLText("folders")."<br />".(!$cc['document_precise'] ? '~'.(round($cc['document_count']/$rr)*$rr) : $cc['document_count'])." ".getMLText("documents");
|
||||
}
|
||||
} else {
|
||||
/* FIXME: the following is very inefficient for just getting the number of
|
||||
* subfolders and documents. Making it more efficient is difficult, because
|
||||
* the access rights need to be checked.
|
||||
*/
|
||||
$subsub = $subFolder->getSubFolders();
|
||||
$subsub = SeedDMS_Core_DMS::filterAccess($subsub, $user, M_READ);
|
||||
$subdoc = $subFolder->getDocuments();
|
||||
$subdoc = SeedDMS_Core_DMS::filterAccess($subdoc, $user, M_READ);
|
||||
$content .= count($subsub)." ".getMLText("folders")."<br />".count($subdoc)." ".getMLText("documents");
|
||||
}
|
||||
$content .= "</small></td>";
|
||||
$content .= "<td colspan=\"1\" nowrap>";
|
||||
$content .= $this->folderListRowStatus($subFolder);
|
||||
$content .= "</td>";
|
||||
$content .= "<td>";
|
||||
$content .= $this->folderListRowAction($subFolder, $skipcont, $extracontent);
|
||||
$content .= "</td>";
|
||||
|
@ -3665,6 +3714,24 @@ $("body").on("click", "span.openpopupbox", function(e) {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
} /* }}} */
|
||||
|
||||
public function printAccordion2($title, $content) { /* {{{ */
|
||||
$id = substr(md5(uniqid()), 0, 4);
|
||||
?>
|
||||
<div class="accordion2" id="accordion<?php echo $id; ?>">
|
||||
<a class="accordion2-toggle" data-toggle="collapse" data-parent="#accordion<?php echo $id; ?>" href="#collapse<?php echo $id; ?>">
|
||||
<?php
|
||||
$this->contentHeading($title);
|
||||
?>
|
||||
</a>
|
||||
<div id="collapse<?php echo $id; ?>" class="collapse" style="height: 0px;">
|
||||
<?php
|
||||
echo $content;
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
} /* }}} */
|
||||
}
|
||||
|
|
|
@ -196,7 +196,30 @@ class SeedDMS_View_Calendar extends SeedDMS_Theme_Style {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case 'attrdate':
|
||||
if(mktime(23,59,59, $end[1], $end[2], $end[0]) > time()) {
|
||||
$attrdefs = $dms->getAllAttributeDefinitions(\SeedDMS_Core_AttributeDefinition::objtype_document);
|
||||
foreach($attrdefs as $attrdef) {
|
||||
if($attrdef->getType() == \SeedDMS_Core_AttributeDefinition::type_date) {
|
||||
$documents = $attrdef->getObjects($this->params['start'], 0, O_GTEQ);
|
||||
foreach ($documents['docs'] as $document){
|
||||
$arr[] = array(
|
||||
'start'=>$document->getAttribute($attrdef)->getValue(),
|
||||
'allDay'=>true,
|
||||
'color'=>'#4455ff',
|
||||
'title'=>$document->getName()."\n".$attrdef->getName(),
|
||||
'documentid'=> $document->getID(),
|
||||
'eventtype'=> $eventtype,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'action':
|
||||
/* These are all operations which added a new version, an attachment
|
||||
* or any kind of status change
|
||||
*/
|
||||
if($this->params['start']) {
|
||||
$from = makeTsFromLongDate($this->params['start'].' 00:00:00');
|
||||
} else {
|
||||
|
@ -325,6 +348,10 @@ class SeedDMS_View_Calendar extends SeedDMS_Theme_Style {
|
|||
url: 'out.Calendar.php?action=events&eventtype=action',
|
||||
editable: false
|
||||
},
|
||||
{
|
||||
url: 'out.Calendar.php?action=events&eventtype=attrdate',
|
||||
editable: false
|
||||
},
|
||||
{
|
||||
url: 'out.Calendar.php?action=events&eventtype=expires',
|
||||
editable: true
|
||||
|
|
|
@ -41,15 +41,13 @@ class SeedDMS_View_ClearCache extends SeedDMS_Theme_Style {
|
|||
$this->contentStart();
|
||||
$this->pageNavigation(getMLText("admin_tools"), "admin_tools");
|
||||
$this->contentHeading(getMLText("clear_cache"));
|
||||
$this->contentContainerStart('warning');
|
||||
|
||||
$this->warningMsg(getMLText("confirm_clear_cache", array('cache_dir'=>$cachedir)));
|
||||
?>
|
||||
<form action="../op/op.ClearCache.php" name="form1" method="post">
|
||||
<?php echo createHiddenFieldWithKey('clearcache'); ?>
|
||||
<p>
|
||||
<?php printMLText("confirm_clear_cache", array('cache_dir'=>$cachedir));?>
|
||||
</p>
|
||||
<p>
|
||||
<?php
|
||||
$this->contentContainerStart('warning');
|
||||
?>
|
||||
<input type="checkbox" name="preview" value="1" checked> <?php printMLText('preview_images'); ?>
|
||||
</p>
|
||||
<p>
|
||||
|
@ -60,11 +58,11 @@ class SeedDMS_View_ClearCache extends SeedDMS_Theme_Style {
|
|||
foreach($addcache as $c)
|
||||
echo "<p><input type=\"checkbox\" name=\"".$c[0]."\" value=\"1\" checked> ".$c[1]."</p>";
|
||||
}
|
||||
$this->contentContainerEnd();
|
||||
$this->formSubmit("<i class=\"fa fa-remove\"></i> ".getMLText('clear_cache'), '', '', 'danger');
|
||||
?>
|
||||
<p><button type="submit" class="btn btn-danger"><i class="fa fa-remove"></i> <?php printMLText("clear_cache");?></button></p>
|
||||
</form>
|
||||
<?php
|
||||
$this->contentContainerEnd();
|
||||
$this->contentEnd();
|
||||
$this->htmlEndPage();
|
||||
} /* }}} */
|
||||
|
|
|
@ -78,7 +78,7 @@ class SeedDMS_View_Clipboard extends SeedDMS_Theme_Style {
|
|||
}
|
||||
// $content .= " <li><a href=\"../op/op.ClearClipboard.php?refferer=".urlencode($this->params['refferer'])."\">".getMLText("clear_clipboard")."</a><a class=\"ajax-click\" data-href=\"../op/op.Ajax.php\" data-param1=\"command=clearclipboard\">kkk</a> </li>\n";
|
||||
// $content .= " <li><a class=\"ajax-click\" data-href=\"../op/op.Ajax.php\" data-param1=\"command=clearclipboard\">".getMLText("clear_clipboard")."</a></li>\n";
|
||||
$subitems[] = array('label'=>getMLText('clear_clipboard'), 'attributes'=>array(array('class', 'ajax-click'), array('data-href', $this->params['settings']->_httpRoot.'op/op.Ajax.php'), array('data-param1', 'command=clearclipboard')));
|
||||
$subitems[] = array('label'=>getMLText('clear_clipboard'), 'class'=>'ajax-click', 'attributes'=>array(array('data-href', $this->params['settings']->_httpRoot.'op/op.Ajax.php'), array('data-param1', 'command=clearclipboard')));
|
||||
if($this->hasHook('clipboardMenuItems'))
|
||||
$subitems = $this->callHook('clipboardMenuItems', $clipboard, $subitems);
|
||||
/*
|
||||
|
|
|
@ -97,8 +97,8 @@ $(document).ready(function() {
|
|||
$version = $this->params['version'];
|
||||
?>
|
||||
<ul class="nav nav-pills" id="preview-tab" role="tablist">
|
||||
<li class="active"><a data-target="#preview_markdown" data-toggle="tab" role="tab"><?php printMLText('preview_markdown'); ?></a></li>
|
||||
<li><a data-target="#preview_plain" data-toggle="tab" role="tab"><?php printMLText('preview_plain'); ?></a></li>
|
||||
<li class="nav-item active"><a class="nav-link active" data-target="#preview_markdown" data-toggle="tab" role="button"><?php printMLText('preview_markdown'); ?></a></li>
|
||||
<li class="nav-item"><a class="nav-link" data-target="#preview_plain" data-toggle="tab" role="button"><?php printMLText('preview_plain'); ?></a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="preview_markdown" role="tabpanel">
|
||||
|
|
|
@ -286,8 +286,8 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Theme_Style {
|
|||
$this->columnStart(8);
|
||||
?>
|
||||
<ul class="nav nav-pills" id="extensionstab" role="tablist">
|
||||
<li class="nav-item <?php if(!$currenttab || $currenttab == 'installed') echo 'active'; ?>"><a class="nav-link <?php if(!$currenttab || $currenttab == 'installed') echo 'active'; ?>" data-target="#installed" data-toggle="tab" role="tab"><?= getMLText('extension_mgr_installed'); ?></a></li>
|
||||
<li class="nav-item <?php if($currenttab == 'repository') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'repository') echo 'active'; ?>" data-target="#repository" data-toggle="tab" role="tab"><?= getMLText('extension_mgr_repository'); ?></a></li>
|
||||
<li class="nav-item <?php if(!$currenttab || $currenttab == 'installed') echo 'active'; ?>"><a class="nav-link <?php if(!$currenttab || $currenttab == 'installed') echo 'active'; ?>" data-target="#installed" data-toggle="tab" role="button"><?= getMLText('extension_mgr_installed'); ?></a></li>
|
||||
<li class="nav-item <?php if($currenttab == 'repository') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'repository') echo 'active'; ?>" data-target="#repository" data-toggle="tab" role="button"><?= getMLText('extension_mgr_repository'); ?></a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane <?php if(!$currenttab || $currenttab == 'installed') echo 'active'; ?>" id="installed" role="tabpanel">
|
||||
|
|
|
@ -85,8 +85,8 @@ $(document).ready( function() {
|
|||
foreach($managers as $manager)
|
||||
if($manager->getId() == $member->getId())
|
||||
echo ", ".getMLText("manager");
|
||||
if($ismanager) {
|
||||
echo ' <a href="../op/op.GroupView.php?action=del&groupid='.$group->getId().'&userid='.$member->getId().'" class="btn btn-mini"><i class="fa fa-remove"></i> '.getMLText("rm_user").'</a>';
|
||||
if($ismanager && $member->getId() != $user->getId()) {
|
||||
echo ' <a href="../op/op.GroupView.php?action=del&groupid='.$group->getId().'&userid='.$member->getId().'" class="btn btn-mini btn-sm"><i class="fa fa-remove"></i> '.getMLText("rm_user").'</a>';
|
||||
}
|
||||
echo "</li>";
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ $(document).ready( function() {
|
|||
echo "<li>".getMLText("add_user_to_group").":";
|
||||
echo "<form id=\"form\" action=\"../op/op.GroupView.php\">";
|
||||
echo "<input type=\"hidden\" name=\"action\" value=\"add\" /><input type=\"hidden\" name=\"groupid\" value=\"".$group->getId()."\" />";
|
||||
echo "<select id=\"selector\" name=\"userid\" _onChange=\"javascript: submit();\">";
|
||||
echo "<select id=\"selector\" name=\"userid\" class=\"chzn-select\">";
|
||||
echo "<option value=\"\"></option>";
|
||||
foreach($allUsers as $u) {
|
||||
if(!$u->isAdmin() && !$u->isGuest() && !in_array($u->getId(), $memberids))
|
||||
|
|
|
@ -52,8 +52,8 @@ class SeedDMS_View_ImportFS extends SeedDMS_Theme_Style {
|
|||
|
||||
if($dropfolderdir && file_exists($dropfolderdir.'/'.$user->getLogin())) {
|
||||
$this->warningMsg(getMLText("import_fs_warning"));
|
||||
$this->contentContainerStart();
|
||||
print "<form class=\"form-horizontal\" action=\"../op/op.ImportFS.php\" name=\"form1\">";
|
||||
$this->contentContainerStart();
|
||||
$this->formField(getMLText("choose_target_folder"), $this->getFolderChooserHtml("form1", M_READWRITE));
|
||||
$this->formField(
|
||||
getMLText("dropfolder_folder"),
|
||||
|
@ -90,9 +90,9 @@ class SeedDMS_View_ImportFS extends SeedDMS_Theme_Style {
|
|||
'value'=>'1'
|
||||
)
|
||||
);
|
||||
$this->contentContainerEnd();
|
||||
$this->formSubmit("<i class=\"fa fa-save\"></i> ".getMLText('import'));
|
||||
print "</form>\n";
|
||||
$this->contentContainerEnd();
|
||||
} else {
|
||||
$this->warningMsg(getMLText("dropfolderdir_missing"));
|
||||
}
|
||||
|
|
|
@ -53,8 +53,8 @@ class SeedDMS_View_ImportUsers extends SeedDMS_Theme_Style {
|
|||
|
||||
$this->rowStart();
|
||||
$this->columnStart(4);
|
||||
$this->contentContainerStart();
|
||||
print "<form class=\"form-horizontal\" action=\"../op/op.ImportUsers.php\" name=\"form1\" enctype=\"multipart/form-data\" method=\"post\">";
|
||||
$this->contentContainerStart();
|
||||
$this->formField(
|
||||
getMLText("userdata_file"),
|
||||
$this->getFileChooserHtml('userdata', false)
|
||||
|
@ -77,9 +77,9 @@ class SeedDMS_View_ImportUsers extends SeedDMS_Theme_Style {
|
|||
'value'=>'1'
|
||||
)
|
||||
);
|
||||
$this->contentContainerEnd();
|
||||
$this->formSubmit("<i class=\"fa fa-save\"></i> ".getMLText('import'));
|
||||
print "</form>\n";
|
||||
$this->contentContainerEnd();
|
||||
|
||||
$this->columnEnd();
|
||||
$this->columnStart(8);
|
||||
|
|
|
@ -111,7 +111,7 @@ class SeedDMS_View_Info extends SeedDMS_Theme_Style {
|
|||
echo "<th>".getMLText("name");
|
||||
echo "</th>\n";
|
||||
echo "</tr>\n</thead>\n<tbody>\n";
|
||||
$requiredext = array('zip', 'xml', 'xsl', 'json', 'intl', 'fileinfo', 'mbstring', 'curl');
|
||||
$requiredext = array('zip', 'xml', 'xsl', 'json', 'intl', 'fileinfo', 'mbstring', 'curl', 'sqlite3', 'imagick');
|
||||
foreach(array_diff($requiredext, $phpextensions) as $extname)
|
||||
echo "<tr><td>".$extname."</td><td>"."</td></tr>\n";
|
||||
echo "</tbody>\n</table>\n";
|
||||
|
|
|
@ -53,13 +53,19 @@ class SeedDMS_View_MyDocuments extends SeedDMS_Theme_Style {
|
|||
$orderby = $this->params['orderby'];
|
||||
$showInProcess = $this->params['showinprocess'];
|
||||
$cachedir = $this->params['cachedir'];
|
||||
$conversionmgr = $this->params['conversionmgr'];
|
||||
$workflowmode = $this->params['workflowmode'];
|
||||
$previewwidth = $this->params['previewWidthList'];
|
||||
$previewconverters = $this->params['previewConverters'];
|
||||
$timeout = $this->params['timeout'];
|
||||
$xsendfile = $this->params['xsendfile'];
|
||||
|
||||
$db = $dms->getDB();
|
||||
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
|
||||
if($conversionmgr)
|
||||
$previewer->setConversionMgr($conversionmgr);
|
||||
else
|
||||
$previewer->setConverters($previewconverters);
|
||||
|
||||
$this->htmlStartPage(getMLText("my_documents"));
|
||||
$this->globalNavigation();
|
||||
|
@ -951,7 +957,6 @@ class SeedDMS_View_MyDocuments extends SeedDMS_Theme_Style {
|
|||
print "<th>".getMLText("action")."</th>\n";
|
||||
print "</tr>\n</thead>\n<tbody>\n";
|
||||
|
||||
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
|
||||
foreach ($resArr as $res) {
|
||||
$document = $dms->getDocument($res["documentID"]);
|
||||
$document->verifyLastestContentExpriry();
|
||||
|
|
71
views/bootstrap/class.NotificationServices.php
Normal file
71
views/bootstrap/class.NotificationServices.php
Normal file
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
/**
|
||||
* Implementation of Notification Services view
|
||||
*
|
||||
* @category DMS
|
||||
* @package SeedDMS
|
||||
* @license GPL 2
|
||||
* @version @version@
|
||||
* @author Uwe Steinmann <uwe@steinmann.cx>
|
||||
* @copyright Copyright (C) 2002-2005 Markus Westphal,
|
||||
* 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli,
|
||||
* 2010-2012 Uwe Steinmann
|
||||
* @version Release: @package_version@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Include parent class
|
||||
*/
|
||||
//require_once("class.Bootstrap.php");
|
||||
|
||||
/**
|
||||
* Class which outputs the html page for Notification Services view
|
||||
*
|
||||
* @category DMS
|
||||
* @package SeedDMS
|
||||
* @author Uwe Steinmann <uwe@steinmann.cx>
|
||||
* @copyright Copyright (C) 2016 Uwe Steinmann
|
||||
* @version Release: @package_version@
|
||||
*/
|
||||
class SeedDMS_View_NotificationServices extends SeedDMS_Theme_Style {
|
||||
|
||||
/**
|
||||
* List all registered hooks
|
||||
*
|
||||
*/
|
||||
function list_notification_services($notifier) { /* {{{ */
|
||||
if(!$notifier)
|
||||
return;
|
||||
|
||||
$services = $notifier->getServices();
|
||||
|
||||
echo "<table class=\"table table-condensed table-sm\">\n";
|
||||
echo "<thead>";
|
||||
echo "<tr><th>".getMLText('service_name')."</th><th>".getMLText('class_name')."</th><th>".getMLText('service_has_filter')."</th></tr>\n";
|
||||
echo "</thead>";
|
||||
echo "<tbody>";
|
||||
foreach($services as $name=>$service) {
|
||||
echo "<tr><td>".$name."</td><td>".get_class($service)."</td><td>".(is_callable([$service, 'filter']) ? '<i class="fa fa-check"></i>' : '')."</td></tr>";
|
||||
}
|
||||
echo "</tbody>";
|
||||
echo "</table>\n";
|
||||
} /* }}} */
|
||||
|
||||
function show() { /* {{{ */
|
||||
$dms = $this->params['dms'];
|
||||
$user = $this->params['user'];
|
||||
$notifier = $this->params['notifier'];
|
||||
|
||||
$this->htmlStartPage(getMLText("admin_tools"));
|
||||
$this->globalNavigation();
|
||||
$this->contentStart();
|
||||
$this->pageNavigation(getMLText("admin_tools"), "admin_tools");
|
||||
$this->contentHeading(getMLText("list_notification_services"));
|
||||
|
||||
self::list_notification_services($notifier);
|
||||
|
||||
$this->contentEnd();
|
||||
$this->htmlEndPage();
|
||||
} /* }}} */
|
||||
}
|
||||
|
|
@ -188,6 +188,7 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style {
|
|||
$setchecksum = $this->params['setchecksum'];
|
||||
$rootfolder = $this->params['rootfolder'];
|
||||
$this->enableClipboard = $this->params['enableclipboard'];
|
||||
$conversionmgr = $this->params['conversionmgr'];
|
||||
$cachedir = $this->params['cachedir'];
|
||||
$previewwidth = $this->params['previewWidthList'];
|
||||
$previewconverters = $this->params['previewConverters'];
|
||||
|
@ -195,7 +196,10 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style {
|
|||
$xsendfile = $this->params['xsendfile'];
|
||||
|
||||
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
|
||||
$previewer->setConverters($previewconverters);
|
||||
if($conversionmgr)
|
||||
$previewer->setConversionMgr($conversionmgr);
|
||||
else
|
||||
$previewer->setConverters($previewconverters);
|
||||
|
||||
$this->htmlStartPage(getMLText("admin_tools"));
|
||||
$this->globalNavigation();
|
||||
|
|
|
@ -43,8 +43,12 @@ $(document).ready( function() {
|
|||
$('body').on('click', 'label.checkbox, td span', function(ev){
|
||||
ev.preventDefault();
|
||||
$('#kkkk.ajax').data('action', $(this).data('action'));
|
||||
$('#kkkk.ajax').trigger('update', {userid: $(this).data('userid'), task: $(this).data('task')});
|
||||
$('#kkkk.ajax').trigger('update', {userid: $(this).data('userid'), task: $(this).data('task'), type: $(this).data('type')});
|
||||
});
|
||||
$('body').on('click', '#selectall', function(ev){
|
||||
$("input.markforprocess").each(function () { this.checked = !this.checked; });
|
||||
ev.preventDefault();
|
||||
});
|
||||
});
|
||||
<?php
|
||||
} /* }}} */
|
||||
|
@ -52,20 +56,26 @@ $(document).ready( function() {
|
|||
function printList() { /* {{{ */
|
||||
$dms = $this->params['dms'];
|
||||
$user = $this->params['user'];
|
||||
$settings = $this->params['settings'];
|
||||
$cachedir = $this->params['cachedir'];
|
||||
$rootfolder = $this->params['rootfolder'];
|
||||
$previewwidth = $this->params['previewWidthList'];
|
||||
$previewconverters = $this->params['previewconverters'];
|
||||
$timeout = $this->params['timeout'];
|
||||
$settings = $this->params['settings'];
|
||||
$cachedir = $this->params['cachedir'];
|
||||
$rootfolder = $this->params['rootfolder'];
|
||||
$conversionmgr = $this->params['conversionmgr'];
|
||||
$previewwidth = $this->params['previewWidthList'];
|
||||
$previewconverters = $this->params['previewconverters'];
|
||||
$timeout = $this->params['timeout'];
|
||||
$rmuser = $this->params['rmuser'];
|
||||
$allusers = $this->params['allusers'];
|
||||
$task = $this->params['task'];
|
||||
$type = $this->params['type'];
|
||||
|
||||
if(!$task)
|
||||
return;
|
||||
|
||||
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
|
||||
$previewer->setConverters($previewconverters);
|
||||
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
|
||||
if($conversionmgr)
|
||||
$previewer->setConversionMgr($conversionmgr);
|
||||
else
|
||||
$previewer->setConverters($previewconverters);
|
||||
|
||||
$docs = array();
|
||||
switch($task) {
|
||||
|
@ -151,12 +161,23 @@ $(document).ready( function() {
|
|||
break;
|
||||
}
|
||||
if($docs) {
|
||||
echo '<form id="processform" action="../op/op.UsrMgr.php" method="post">';
|
||||
echo '<input type="hidden" name="userid" value="'.$rmuser->getID().'">';
|
||||
if($type) {
|
||||
$kk = explode('_', $type, 2);
|
||||
echo '<input type="hidden" name="status['.$kk[0].'][]" value="'.$kk[1].'">';
|
||||
}
|
||||
echo '<input type="hidden" name="task" value="'.$task.'">';
|
||||
echo '<input type="hidden" name="action" value="removefromprocesses">';
|
||||
echo '<input type="hidden" name="needsdocs" value="1">';
|
||||
echo createHiddenFieldWithKey('removefromprocesses');
|
||||
print "<table class=\"table table-condensed table-sm\">";
|
||||
print "<thead>\n<tr>\n";
|
||||
print "<th></th>\n";
|
||||
print "<th>".getMLText("name")."</th>\n";
|
||||
print "<th>".getMLText("status")."</th>\n";
|
||||
print "<th>".getMLText("action")."</th>\n";
|
||||
print "<th><span id=\"selectall\"><i class=\"fa fa-arrows-h\" title=\"".getMLText('object_cleaner_toggle_checkboxes')."\"></i></span></th>\n";
|
||||
print "</tr>\n</thead>\n<tbody>\n";
|
||||
foreach($docs as $document) {
|
||||
$document->verifyLastestContentExpriry();
|
||||
|
@ -170,11 +191,33 @@ $(document).ready( function() {
|
|||
$extracontent['below_title'] = $this->getListRowPath($document);
|
||||
echo $this->documentListRowStart($document);
|
||||
echo $this->documentListRow($document, $previewer, true, 0, $extracontent);
|
||||
echo '<td>';
|
||||
echo '<input type="checkbox" class="markforprocess" value="'.$document->getId().'" name="docs['.$document->getId().']">';
|
||||
echo '</td>';
|
||||
echo $this->documentListRowEnd($document);
|
||||
}
|
||||
}
|
||||
}
|
||||
echo "</tbody>\n</table>";
|
||||
$options = array(array(0, getMLText('do_no_transfer_to_user')));
|
||||
foreach ($allusers as $currUser) {
|
||||
if ($currUser->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
|
||||
)
|
||||
);
|
||||
echo '<p><button type="submit" class="btn btn-primary"><i class="fa fa-remove"></i> '.getMLText('transfer').'</button>';
|
||||
echo '</form>';
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
|
@ -182,6 +225,7 @@ $(document).ready( function() {
|
|||
$dms = $this->params['dms'];
|
||||
$user = $this->params['user'];
|
||||
$rmuser = $this->params['rmuser'];
|
||||
$allusers = $this->params['allusers'];
|
||||
|
||||
$this->htmlStartPage(getMLText("admin_tools"));
|
||||
$this->globalNavigation();
|
||||
|
@ -189,9 +233,9 @@ $(document).ready( function() {
|
|||
$this->pageNavigation(getMLText("admin_tools"), "admin_tools");
|
||||
$this->contentHeading(getMLText("rm_user_from_processes"));
|
||||
|
||||
$this->warningMsg(getMLText("confirm_rm_user_from_processes", array ("username" => htmlspecialchars($rmuser->getFullName()))));
|
||||
$this->rowStart();
|
||||
$this->columnStart(4);
|
||||
$this->warningMsg(getMLText("confirm_rm_user_from_processes", array ("username" => htmlspecialchars($rmuser->getFullName()))));
|
||||
|
||||
$reviewStatus = $rmuser->getReviewStatus();
|
||||
$tmpr = array();
|
||||
|
@ -287,28 +331,30 @@ $(document).ready( function() {
|
|||
<?php
|
||||
echo "<table class=\"table table-condensed table-sm\">";
|
||||
foreach($out as $o) {
|
||||
echo "<tr><td>".$o[3]."</td><td>".$o[4]."</td><td><input style=\"margin-top: 0px;\" type=\"checkbox\" name=\"status[".$o[1]."][]\" value=\"".$o[0]."\"></td><td><span data-action=\"printList\" data-userid=\"".$rmuser->getId()."\" data-task=\"".$o[1]."s_".$o[2]."\"><i class=\"fa fa-list\"></i></span></td></tr>";
|
||||
echo "<tr><td>".$o[3]."</td><td>".$o[4]."</td><td><input style=\"margin-top: 0px;\" type=\"checkbox\" name=\"status[".$o[1]."][]\" value=\"".$o[0]."\"></td><td><span data-action=\"printList\" data-userid=\"".$rmuser->getId()."\" data-task=\"".$o[1]."s_".$o[2]."\" data-type=\"".$o[1]."_".$o[0]."\"><i class=\"fa fa-list\"></i></span></td></tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
|
||||
/*
|
||||
$options = array();
|
||||
$allUsers = $dms->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->infoMsg(getMLText("info_rm_user_from_processes_user"));
|
||||
|
||||
$options = array(array(0, getMLText('do_no_transfer_to_user')));
|
||||
foreach ($allusers as $currUser) {
|
||||
if ($currUser->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("user"),
|
||||
getMLText("transfer_process_to_user"),
|
||||
array(
|
||||
'element'=>'select',
|
||||
'id'=>'newuser',
|
||||
'name'=>'newuserid',
|
||||
'name'=>'assignTo',
|
||||
'class'=>'chzn-select',
|
||||
'options'=>$options
|
||||
)
|
||||
);
|
||||
*/
|
||||
|
||||
$this->formSubmit("<i class=\"fa fa-remove\"></i> ".getMLText('rm_user_from_processes'));
|
||||
?>
|
||||
|
||||
|
|
|
@ -197,11 +197,11 @@ function typeahead() { /* {{{ */
|
|||
}
|
||||
?>
|
||||
<ul class="nav nav-pills" id="searchtab">
|
||||
<li class="nav-item <?php echo ($fullsearch == false) ? 'active' : ''; ?>"><a class="nav-link <?php echo ($fullsearch == false) ? 'active' : ''; ?>" data-target="#database" data-toggle="tab"><?php printMLText('databasesearch'); ?></a></li>
|
||||
<li class="nav-item <?php echo ($fullsearch == false) ? 'active' : ''; ?>"><a class="nav-link <?php echo ($fullsearch == false) ? 'active' : ''; ?>" data-target="#database" data-toggle="tab" role="button"><?php printMLText('databasesearch'); ?></a></li>
|
||||
<?php
|
||||
if($enablefullsearch) {
|
||||
?>
|
||||
<li class="nav-item <?php echo ($fullsearch == true) ? 'active' : ''; ?>"><a class="nav-link <?php echo ($fullsearch == true) ? 'active' : ''; ?>" data-target="#fulltext" data-toggle="tab"><?php printMLText('fullsearch'); ?></a></li>
|
||||
<li class="nav-item <?php echo ($fullsearch == true) ? 'active' : ''; ?>"><a class="nav-link <?php echo ($fullsearch == true) ? 'active' : ''; ?>" data-target="#fulltext" data-toggle="tab" role="button"><?php printMLText('fullsearch'); ?></a></li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -117,7 +117,7 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style {
|
|||
$settings = $this->params['settings'];
|
||||
?>
|
||||
<tr title="<?= getMLText($title."_desc") ?>">
|
||||
<td><?= getMLText($title) ?>:</td>
|
||||
<td><?= getMLText($title) ?></td>
|
||||
<?php
|
||||
if($type === 'array')
|
||||
$value = $settings->arrayToString($settings->{"_".$name});
|
||||
|
@ -144,7 +144,7 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style {
|
|||
$settings = $this->params['settings'];
|
||||
?>
|
||||
<tr title="<?= htmlspecialchars($title_desc) ?>">
|
||||
<td><?= $title ?>:</td>
|
||||
<td><?= $title ?></td>
|
||||
<td><?= $rawdata ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
@ -160,7 +160,7 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style {
|
|||
$settings = $this->params['settings'];
|
||||
?>
|
||||
<tr title="<?= getMLText($title."_desc") ?>">
|
||||
<td><?= getMLText($title) ?>:</td>
|
||||
<td><?= getMLText($title) ?></td>
|
||||
<td><input name="<?= $name ?>" type="checkbox" <?php if ($settings->{"_".$name}) echo "checked" ?> /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
@ -173,7 +173,7 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style {
|
|||
// echo $isass ? 'asso' : 'indexed';
|
||||
?>
|
||||
<tr title="<?= getMLText($title."_desc") ?>">
|
||||
<td><?= getMLText($title) ?>:</td>
|
||||
<td><?= getMLText($title) ?></td>
|
||||
<td>
|
||||
<?php if($multiple) { ?>
|
||||
<select class="form-control" name="<?= $name ?>[]" multiple>
|
||||
|
@ -199,7 +199,7 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style {
|
|||
$dms = $this->params['dms'];
|
||||
?>
|
||||
<tr title="<?= getMLText($title."_desc") ?>">
|
||||
<td><?= getMLText($title) ?>:</td>
|
||||
<td><?= getMLText($title) ?></td>
|
||||
<td>
|
||||
<?php
|
||||
$users = $dms->getAllUsers();
|
||||
|
@ -613,10 +613,9 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk))
|
|||
}
|
||||
break;
|
||||
case "attributedefinitions":
|
||||
if(empty($conf['objtype']))
|
||||
$recs = $dms->getAllAttributeDefinitions();
|
||||
else
|
||||
$recs = $dms->getAllAttributeDefinitions(explode(',', $conf['objtype']));
|
||||
$objtype = empty($conf['objtype']) ? 0 : $conf['objtype'];
|
||||
$attrtype = empty($conf['attrtype']) ? 0 : $conf['attrtype'];
|
||||
$recs = $dms->getAllAttributeDefinitions(explode(',', $objtype), explode(',', $attrtype));
|
||||
if($recs) {
|
||||
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")."\" name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_attribute_value")."\">";
|
||||
if($allowempty)
|
||||
|
|
|
@ -194,26 +194,8 @@ console.log(element);
|
|||
}
|
||||
}
|
||||
|
||||
if($enablelargefileupload) {
|
||||
if($maxuploadsize) {
|
||||
$msg = getMLText("max_upload_size").": ".SeedDMS_Core_File::format_filesize($maxuploadsize);
|
||||
} else {
|
||||
$msg = '';
|
||||
}
|
||||
} else {
|
||||
$msg = getMLText("max_upload_size").": ".ini_get( "upload_max_filesize");
|
||||
}
|
||||
$mus2 = SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize"));
|
||||
if($maxuploadsize && $maxuploadsize < $mus2)
|
||||
$msg = getMLText("max_upload_size").": ".SeedDMS_Core_File::format_filesize($maxuploadsize);
|
||||
else
|
||||
$msg = getMLText("max_upload_size").": ".SeedDMS_Core_File::format_filesize($mus2);
|
||||
|
||||
if(0 && $enablelargefileupload) {
|
||||
$msg .= "<p>".sprintf(getMLText('link_alt_updatedocument'), "out.AddMultiDocument.php?folderid=".$folder->getID()."&showtree=".showtree())."</p>";
|
||||
}
|
||||
if($msg)
|
||||
$this->warningMsg($msg);
|
||||
$msg = getMLText("max_upload_size").": ".SeedDMS_Core_File::format_filesize($maxuploadsize);
|
||||
$this->warningMsg($msg);
|
||||
?>
|
||||
|
||||
<form class="form-horizontal" action="../op/op.UpdateDocument.php" enctype="multipart/form-data" method="post" name="form1" id="form1">
|
||||
|
|
|
@ -209,6 +209,8 @@ $(document).ready( function() {
|
|||
if($accessobject->check_controller_access('UsrMgr', ['action'=>'sendlogindata']))
|
||||
if($enableemail)
|
||||
$button['menuitems'][] = array('label'=>'<i class="fa fa-envelope-o"></i> '.getMLText("send_login_data"), 'link'=>'../out/out.SendLoginData.php?userid='.$seluser->getID());
|
||||
if($this->hasHook('actionMenu'))
|
||||
$button['menuitems'] = $this->callHook('actionMenu', $seluser, $button['menuitems']);
|
||||
self::showButtonwithMenu($button);
|
||||
}
|
||||
} /* }}} */
|
||||
|
|
|
@ -113,6 +113,14 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style {
|
|||
}
|
||||
}
|
||||
}
|
||||
$arrarr = $this->callHook('additionalDocumentContentInfo', $version);
|
||||
if(is_array($arrarr)) {
|
||||
foreach($arrarr as $arr) {
|
||||
print "<li>".$arr[0].": ".$arr[1]."</li>\n";
|
||||
}
|
||||
} elseif(is_string($arrarr)) {
|
||||
echo $arrarr;
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
function documentListItem() { /* {{{ */
|
||||
|
@ -204,11 +212,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style {
|
|||
echo "SeedDMSUpload.setUrl('".$this->params['settings']->_httpRoot."op/op.Ajax.php');";
|
||||
echo "SeedDMSUpload.setAbortBtnLabel('".getMLText("cancel")."');";
|
||||
echo "SeedDMSUpload.setEditBtnLabel('');";
|
||||
$mus2 = SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize"));
|
||||
if($maxuploadsize && $maxuploadsize < $mus2)
|
||||
echo "SeedDMSUpload.setMaxFileSize($maxuploadsize);\n";
|
||||
else
|
||||
echo "SeedDMSUpload.setMaxFileSize($mus2);\n";
|
||||
echo "SeedDMSUpload.setMaxFileSize($maxuploadsize);\n";
|
||||
echo "SeedDMSUpload.setMaxFileSizeMsg('".getMLText("uploading_maxsize")."');";
|
||||
}
|
||||
?>
|
||||
|
@ -555,7 +559,9 @@ $(document).ready( function() {
|
|||
case 'application/pdf':
|
||||
$this->contentHeading(getMLText("preview"));
|
||||
?>
|
||||
<iframe src="<?= $settings->_httpRoot ?>pdfviewer/web/viewer.html?file=<?php echo urlencode($settings->_httpRoot.'op/op.ViewOnline.php?documentid='.$latestContent->getDocument()->getID().'&version='.$latestContent->getVersion()); ?>" width="100%" height="700px"></iframe>
|
||||
<div style="width:100%; height: 0; position:relative; padding-top: 141%;">
|
||||
<iframe src="<?= $settings->_httpRoot ?>pdfviewer/web/viewer.html?file=<?php echo urlencode($settings->_httpRoot.'op/op.ViewOnline.php?documentid='.$latestContent->getDocument()->getID().'&version='.$latestContent->getVersion()); ?>" _width="100%" _height="100%" style="position: absolute; top: 0; left: 0; bottom: 0; right: 0; width: 100%; height: 100%"></iframe>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
case 'image/svg+xml':
|
||||
|
@ -590,7 +596,9 @@ $(document).ready( function() {
|
|||
if($pdfpreviewer->hasConverter($latestContent->getMimeType())) {
|
||||
$this->contentHeading(getMLText("preview_pdf"));
|
||||
?>
|
||||
<iframe src="<?= $settings->_httpRoot ?>pdfviewer/web/viewer.html?file=<?php echo urlencode($settings->_httpRoot.'op/op.PdfPreview.php?documentid='.$latestContent->getDocument()->getID().'&version='.$latestContent->getVersion()); ?>" width="100%" height="700px"></iframe>
|
||||
<div style="width:100%; height: 0; position:relative; padding-top: 141%;">
|
||||
<iframe src="<?= $settings->_httpRoot ?>pdfviewer/web/viewer.html?file=<?php echo urlencode($settings->_httpRoot.'op/op.PdfPreview.php?documentid='.$latestContent->getDocument()->getID().'&version='.$latestContent->getVersion()); ?>" _width="100%" _height="700px" style="position: absolute; top: 0; left: 0; bottom: 0; right: 0; width: 100%; height: 100%"></iframe>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
@ -883,33 +891,33 @@ $(document).ready( function() {
|
|||
echo $txt;
|
||||
?>
|
||||
<ul class="nav nav-pills" id="docinfotab" role="tablist">
|
||||
<li class="nav-item <?php if(!$currenttab || $currenttab == 'docinfo') echo 'active'; ?>"><a class="nav-link <?php if(!$currenttab || $currenttab == 'docinfo') echo 'active'; ?>" data-target="#docinfo" data-toggle="tab" role="tab"><?php printMLText('current_version'); ?></a></li>
|
||||
<li class="nav-item <?php if(!$currenttab || $currenttab == 'docinfo') echo 'active'; ?>"><a class="nav-link <?php if(!$currenttab || $currenttab == 'docinfo') echo 'active'; ?>" data-target="#docinfo" data-toggle="tab" role="button"><?php printMLText('current_version'); ?></a></li>
|
||||
<?php if (count($versions)>1) { ?>
|
||||
<li class="nav-item <?php if($currenttab == 'previous') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'previous') echo 'active'; ?>" data-target="#previous" data-toggle="tab" role="tab"><?php printMLText('previous_versions'); ?></a></li>
|
||||
<li class="nav-item <?php if($currenttab == 'previous') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'previous') echo 'active'; ?>" data-target="#previous" data-toggle="tab" role="button"><?php printMLText('previous_versions'); ?></a></li>
|
||||
<?php
|
||||
}
|
||||
if($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') {
|
||||
if((is_array($reviewStatus) && count($reviewStatus)>0) ||
|
||||
(is_array($approvalStatus) && count($approvalStatus)>0)) {
|
||||
?>
|
||||
<li class="nav-item <?php if($currenttab == 'revapp') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'revapp') echo 'active'; ?>" data-target="#revapp" data-toggle="tab" role="tab"><?php if($workflowmode == 'traditional') echo getMLText('reviewers')."/"; echo getMLText('approvers'); ?></a></li>
|
||||
<li class="nav-item <?php if($currenttab == 'revapp') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'revapp') echo 'active'; ?>" data-target="#revapp" data-toggle="tab" role="button"><?php if($workflowmode == 'traditional') echo getMLText('reviewers')."/"; echo getMLText('approvers'); ?></a></li>
|
||||
<?php
|
||||
}
|
||||
} elseif($workflowmode == 'advanced') {
|
||||
if($workflow) {
|
||||
?>
|
||||
<li class="nav-item <?php if($currenttab == 'workflow') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'workflow') echo 'active'; ?>" data-target="#workflow" data-toggle="tab" role="tab"><?php echo getMLText('workflow'); ?></a></li>
|
||||
<li class="nav-item <?php if($currenttab == 'workflow') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'workflow') echo 'active'; ?>" data-target="#workflow" data-toggle="tab" role="button"><?php echo getMLText('workflow'); ?></a></li>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
<li class="nav-item <?php if($currenttab == 'attachments') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'attachments') echo 'active'; ?>" data-target="#attachments" data-toggle="tab" role="tab"><?php printMLText('linked_files'); echo (count($files)) ? " (".count($files).")" : ""; ?></a></li>
|
||||
<li class="nav-item <?php if($currenttab == 'links') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'links') echo 'active'; ?>" data-target="#links" data-toggle="tab" role="tab"><?php printMLText('linked_documents'); echo (count($links) || count($reverselinks)) ? " (".count($links)."/".count($reverselinks).")" : ""; ?></a></li>
|
||||
<li class="nav-item <?php if($currenttab == 'attachments') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'attachments') echo 'active'; ?>" data-target="#attachments" data-toggle="tab" role="button"><?php printMLText('linked_files'); echo (count($files)) ? " (".count($files).")" : ""; ?></a></li>
|
||||
<li class="nav-item <?php if($currenttab == 'links') echo 'active'; ?>"><a class="nav-link <?php if($currenttab == 'links') echo 'active'; ?>" data-target="#links" data-toggle="tab" role="button"><?php printMLText('linked_documents'); echo (count($links) || count($reverselinks)) ? " (".count($links)."/".count($reverselinks).")" : ""; ?></a></li>
|
||||
<?php
|
||||
$tabs = $this->callHook('extraTabs', $document);
|
||||
if($tabs) {
|
||||
foreach($tabs as $tabid=>$tab) {
|
||||
echo '<li class="nav-item '.($currenttab == $tabid ? 'active' : '').'"><a class="nav-link '.($currenttab == $tabid ? 'active' : '').'" data-target="#'.$tabid.'" data-toggle="tab" role="tab">'.$tab['title'].'</a></li>';
|
||||
echo '<li class="nav-item '.($currenttab == $tabid ? 'active' : '').'"><a class="nav-link '.($currenttab == $tabid ? 'active' : '').'" data-target="#'.$tabid.'" data-toggle="tab" role="button">'.$tab['title'].'</a></li>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -1592,7 +1600,7 @@ $(document).ready( function() {
|
|||
print getMLText("document_link_by")." ".htmlspecialchars($responsibleUser->getFullName());
|
||||
if (($user->getID() == $responsibleUser->getID()) || ($document->getAccessMode($user) == M_ALL )) {
|
||||
print "<br />".getMLText("document_link_public").": ".(($link->isPublic()) ? getMLText("yes") : getMLText("no"));
|
||||
print "<form action=\"".$this->params['settings']->_httpRoot."op/op.RemoveDocumentLink.php\" method=\"post\">".createHiddenFieldWithKey('removedocumentlink')."<input type=\"hidden\" name=\"documentid\" value=\"".$sourceDoc->getId()."\" /><input type=\"hidden\" name=\"linkid\" value=\"".$link->getID()."\" /><button type=\"submit\" class=\"btn btn-danger btn-mini\"><i class=\"fa fa-remove\"></i> ".getMLText("delete")."</button></form>";
|
||||
print "<form action=\"".$this->params['settings']->_httpRoot."op/op.RemoveDocumentLink.php\" method=\"post\">".createHiddenFieldWithKey('removedocumentlink')."<input type=\"hidden\" name=\"documentid\" value=\"".$sourceDoc->getId()."\" /><input type=\"hidden\" name=\"linkid\" value=\"".$link->getID()."\" /><button type=\"submit\" class=\"btn btn-danger btn-mini btn-sm\"><i class=\"fa fa-remove\"></i> ".getMLText("delete")."</button></form>";
|
||||
}
|
||||
print "</span></td>";
|
||||
echo $this->documentListRowEnd($sourceDoc);
|
||||
|
|
|
@ -239,11 +239,7 @@ $('body').on('click', '.order-btn', function(ev) {
|
|||
echo "SeedDMSUpload.setUrl('".$this->params['settings']->_httpRoot."op/op.Ajax.php');";
|
||||
echo "SeedDMSUpload.setAbortBtnLabel('".getMLText("cancel")."');";
|
||||
echo "SeedDMSUpload.setEditBtnLabel('".getMLText("edit_document_props")."');";
|
||||
$mus2 = SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize"));
|
||||
if($maxuploadsize && $maxuploadsize < $mus2)
|
||||
echo "SeedDMSUpload.setMaxFileSize($maxuploadsize);\n";
|
||||
else
|
||||
echo "SeedDMSUpload.setMaxFileSize($mus2);\n";
|
||||
echo "SeedDMSUpload.setMaxFileSize($maxuploadsize);\n";
|
||||
echo "SeedDMSUpload.setMaxFileSizeMsg('".getMLText("uploading_maxsize")."');";
|
||||
}
|
||||
|
||||
|
@ -260,13 +256,11 @@ $('body').on('click', '.order-btn', function(ev) {
|
|||
if(is_string($txt))
|
||||
echo $txt;
|
||||
else {
|
||||
|
||||
$owner = $folder->getOwner();
|
||||
$this->contentHeading(getMLText("folder_infos"));
|
||||
// $this->contentContainerStart();
|
||||
$txt = $this->callHook('preFolderInfos', $folder);
|
||||
if(is_string($txt))
|
||||
echo $txt;
|
||||
ob_start();
|
||||
echo "<table class=\"table table-condensed table-sm\">\n";
|
||||
if($user->isAdmin()) {
|
||||
echo "<tr>";
|
||||
|
@ -338,10 +332,11 @@ $('body').on('click', '.order-btn', function(ev) {
|
|||
echo $arrarr;
|
||||
}
|
||||
echo "</table>\n";
|
||||
$infos = ob_get_clean();
|
||||
$this->printAccordion2(getMLText("folder_infos"), $infos);
|
||||
$txt = $this->callHook('postFolderInfos', $folder);
|
||||
if(is_string($txt))
|
||||
echo $txt;
|
||||
// $this->contentContainerEnd();
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
|
@ -471,11 +466,12 @@ $('body').on('click', '.order-btn', function(ev) {
|
|||
$dms = $this->params['dms'];
|
||||
$user = $this->params['user'];
|
||||
$folder = $this->params['folder'];
|
||||
$maxuploadsize = $this->params['maxuploadsize'];
|
||||
|
||||
$this->contentHeading(getMLText("dropupload"), true);
|
||||
if ($folder->getAccessMode($user) >= M_READWRITE) {
|
||||
?>
|
||||
<div id="draganddrophandler" class="well alert alert-warning" data-droptarget="folder_<?php echo $folder->getID(); ?>" data-target="<?php echo $folder->getID(); ?>" data-uploadformtoken="<?php echo createFormKey(''); ?>"><?php printMLText('drop_files_here'); ?></div>
|
||||
<div id="draganddrophandler" class="well alert alert-warning" data-droptarget="folder_<?php echo $folder->getID(); ?>" data-target="<?php echo $folder->getID(); ?>" data-uploadformtoken="<?php echo createFormKey(''); ?>"><?php printMLText('drop_files_here', ['maxuploadsize'=>SeedDMS_Core_File::format_filesize($maxuploadsize)]); ?></div>
|
||||
<?php
|
||||
} else {
|
||||
$this->errorMsg(getMLText('access_denied'));
|
||||
|
@ -591,12 +587,9 @@ $('body').on('click', '.order-btn', function(ev) {
|
|||
$this->htmlStartPage(getMLText("folder_title", array("foldername" => htmlspecialchars($folder->getName()))));
|
||||
$this->globalNavigation($folder);
|
||||
$this->contentStart();
|
||||
|
||||
// $this->navigation();
|
||||
?>
|
||||
<div class="ajax" data-view="ViewFolder" data-action="navigation" data-no-spinner="true" <?php echo ($folder ? "data-query=\"folderid=".$folder->getID()."\"" : "") ?>></div>
|
||||
<?php
|
||||
|
||||
$this->rowStart();
|
||||
|
||||
// dynamic columns - left column removed if no content and right column then fills span12.
|
||||
|
|
|
@ -20,6 +20,9 @@
|
|||
#login_wrapper {
|
||||
width: 100%;
|
||||
}
|
||||
legend { /* to prevent overlong filenames from cause horiz. scroll */
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
img.mimeicon {
|
||||
-moz-border-bottom-colors: none;
|
||||
|
@ -252,6 +255,10 @@ div.statusbar-container h1 {
|
|||
font-weight: normal;
|
||||
}
|
||||
|
||||
a.accordion2-toggle:focus, a.accordion2-toggle:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
span.datepicker {
|
||||
padding: 0px;
|
||||
}
|
||||
|
@ -334,6 +341,8 @@ i.warning {color: #ff9900;}
|
|||
i.initstate {color: #ff9900;}
|
||||
i.released {color: #00b000;}
|
||||
i.rejected {color: #b00000;}
|
||||
i.expired {color: #b0b0b0;}
|
||||
i.obsolete {color: #9e5d42;}
|
||||
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);}
|
||||
|
|
|
@ -673,11 +673,20 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
maxFileSize = size;
|
||||
}
|
||||
|
||||
SeedDMSUpload.getMaxFileSize = function() {
|
||||
return maxFileSize;
|
||||
}
|
||||
|
||||
SeedDMSUpload.setMaxFileSizeMsg = function(msg) {
|
||||
maxFileSizeMsg = msg;
|
||||
}
|
||||
|
||||
function sendFileToServer(formData,status,callback) {
|
||||
SeedDMSUpload.getMaxFileSizeMsg = function() {
|
||||
return maxFileSizeMsg;
|
||||
}
|
||||
|
||||
// function sendFileToServer(formData,status,callback) {
|
||||
SeedDMSUpload.sendFileToServer = function(formData,status,callback) {
|
||||
var uploadURL = ajaxurl; //Upload URL
|
||||
var extraData ={}; //Extra Data.
|
||||
var jqXHR=$.ajax({
|
||||
|
@ -736,7 +745,8 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
status.setAbort(jqXHR);
|
||||
}
|
||||
|
||||
function createStatusbar(obj) {
|
||||
//function createStatusbar(obj) {
|
||||
SeedDMSUpload.createStatusbar = function(obj) {
|
||||
rowCount++;
|
||||
var row="odd";
|
||||
this.obj = obj;
|
||||
|
@ -762,8 +772,8 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
this.size.html(sizeStr);
|
||||
}
|
||||
this.setProgress = function(progress) {
|
||||
var progressBarWidth =progress*this.progressBar.width()/ 100;
|
||||
this.progressBar.find('div').animate({ width: progressBarWidth }, 10).html(progress + "% ");
|
||||
// var progressBarWidth =progress*this.progressBar.width()/ 100;
|
||||
this.progressBar.find('div').animate({ width: progress+"%" }, 10).html(progress + "% ");
|
||||
if(parseInt(progress) >= 100) {
|
||||
this.abort.hide();
|
||||
}
|
||||
|
@ -797,7 +807,7 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
formData.append(key, value);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
} else if(typeof data !== 'undefined') {
|
||||
formData.append(previousKey, data);
|
||||
}
|
||||
}
|
||||
|
@ -832,9 +842,9 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
// fd.append('path', files[i].webkitRelativePath);
|
||||
|
||||
statusbar.parent().show();
|
||||
var status = new createStatusbar(statusbar);
|
||||
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
||||
status.setFileNameSize(files[i].name,files[i].size);
|
||||
sendFileToServer(fd,status,function(){
|
||||
SeedDMSUpload.sendFileToServer(fd,status,function(){
|
||||
if(target_id == seeddms_folder)
|
||||
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
|
||||
});
|
||||
|
@ -860,9 +870,9 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
fd.append('userfile', files[i]);
|
||||
fd.append('command', 'uploaddocument');
|
||||
|
||||
var status = new createStatusbar(statusbar);
|
||||
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
||||
status.setFileNameSize(files[i].name,files[i].size);
|
||||
sendFileToServer(fd,status);
|
||||
SeedDMSUpload.sendFileToServer(fd,status);
|
||||
} else {
|
||||
noty({
|
||||
text: maxFileSizeMsg + '<br /><em>' + files[i].name + ' (' + files[i].size + ' Bytes)</em>',
|
||||
|
@ -885,9 +895,9 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
fd.append('userfile', files[i]);
|
||||
fd.append('command', 'addfile');
|
||||
|
||||
var status = new createStatusbar(statusbar);
|
||||
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
||||
status.setFileNameSize(files[i].name,files[i].size);
|
||||
sendFileToServer(fd,status, function(){
|
||||
SeedDMSUpload.sendFileToServer(fd,status, function(){
|
||||
$("div.ajax[data-action='documentFiles']").trigger('update', {documentid: target_id});
|
||||
});
|
||||
} else {
|
||||
|
|
|
@ -474,8 +474,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
htmlspecialchars($path[$i]->getName())."</a>";
|
||||
}
|
||||
else {
|
||||
$txtpath .= ($tagAll ? "<a href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$path[$i]->getID()."&showtree=".showtree()."\">".
|
||||
htmlspecialchars($path[$i]->getName())."</a>" : htmlspecialchars($path[$i]->getName()));
|
||||
$txtpath .= ($tagAll ? "<a href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$path[$i]->getID()."&showtree=".showtree()."\">".htmlspecialchars($path[$i]->getName())."</a>" : htmlspecialchars($path[$i]->getName()));
|
||||
}
|
||||
}
|
||||
if($document)
|
||||
|
@ -483,10 +482,11 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
|
||||
return '<nav aria-label="breadcrumb"><ol class="breadcrumb">'.$txtpath.'</ol></nav>';
|
||||
} /* }}} */
|
||||
|
||||
|
||||
function pageNavigation($pageTitle, $pageType=null, $extra=null) { /* {{{ */
|
||||
|
||||
if ($pageType!=null && strcasecmp($pageType, "noNav")) {
|
||||
// echo "<div class=\"fixed-top\" style=\"z-index: 1029; margin-top: 51px;\">";
|
||||
echo "<nav class=\"navbar navbar-expand-lg mb-4 bg-light navbar-light\">\n";
|
||||
echo '<a class="navbar-brand">'.getMLText('nav_brand_'.$pageType).'</a>';
|
||||
echo "<button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarPageContent\" aria-controls=\"navbarMain\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n";
|
||||
|
@ -526,6 +526,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
echo "</nav>\n";
|
||||
if($pageType == "view_folder" || $pageType == "view_document")
|
||||
echo $pageTitle."\n";
|
||||
// echo "</div>";
|
||||
} else {
|
||||
echo "<legend>".$pageTitle."</legend>\n";
|
||||
}
|
||||
|
@ -640,7 +641,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
} /* }}} */
|
||||
|
||||
protected function showPaneHeader($name, $title, $isactive) { /* {{{ */
|
||||
echo '<li class="nav-item '.($isactive ? 'active' : '').'"><a class="nav-link '.($isactive ? 'active' : '').'" data-target="#'.$name.'" data-toggle="tab" role="tab">'.$title.'</a></li>'."\n";
|
||||
echo '<li class="nav-item '.($isactive ? 'active' : '').'"><a class="nav-link '.($isactive ? 'active' : '').'" data-target="#'.$name.'" data-toggle="tab" role="button">'.$title.'</a></li>'."\n";
|
||||
} /* }}} */
|
||||
|
||||
protected function showStartPaneContent($name, $isactive) { /* {{{ */
|
||||
|
@ -747,21 +748,16 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
$menuitems['transfer_document'] = array('link'=>$this->params['settings']->_httpRoot."out/out.TransferDocument". $docid, 'label'=>getMLText('transfer_document'));
|
||||
}
|
||||
|
||||
/* Check if hook exists because otherwise callHook() will override $menuitems */
|
||||
if($this->hasHook('documentNavigationBar'))
|
||||
$menuitems = $this->callHook('documentNavigationBar', $document, $menuitems);
|
||||
|
||||
/* Do not use $this->callHook() because $menuitems must be returned by the hook
|
||||
* or left unchanged
|
||||
/* Do not use $this->callHook() because $menuitems must be returned by the the
|
||||
* first hook and passed to next hook. $this->callHook() will just pass
|
||||
* the menuitems to each single hook. Hence, the last hook will win.
|
||||
*/
|
||||
/*
|
||||
$hookObjs = $this->getHookObjects();
|
||||
foreach($hookObjs as $hookObj) {
|
||||
if (method_exists($hookObj, 'documentNavigationBar')) {
|
||||
$menuitems = $hookObj->documentNavigationBar($this, $document, $menuitems);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
self::showNavigationBar($menuitems);
|
||||
} /* }}} */
|
||||
|
@ -1277,6 +1273,42 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
|
|||
}
|
||||
} /* }}} */
|
||||
|
||||
function getOverallStatusIcon($status) { /* {{{ */
|
||||
if (is_null($status)) {
|
||||
return '';
|
||||
} else {
|
||||
$icon = '';
|
||||
$color = '';
|
||||
switch($status) {
|
||||
case S_IN_WORKFLOW:
|
||||
$icon = 'fa fa-circle in-workflow';
|
||||
break;
|
||||
case S_DRAFT_REV:
|
||||
$icon = 'fa fa-circle in-workflow';
|
||||
break;
|
||||
case S_DRAFT_APP:
|
||||
$icon = 'fa fa-circle in-workflow';
|
||||
break;
|
||||
case S_RELEASED:
|
||||
$icon = 'fa-circle released';
|
||||
break;
|
||||
case S_REJECTED:
|
||||
$icon = 'fa-circle rejected';
|
||||
break;
|
||||
case S_OBSOLETE:
|
||||
$icon = 'fa-circle obsolete';
|
||||
break;
|
||||
case S_EXPIRED:
|
||||
$icon = 'fa-circle expired';
|
||||
break;
|
||||
default:
|
||||
$icon = 'fa fa-question';
|
||||
break;
|
||||
}
|
||||
return '<i class="fa '.$icon.'"'.($color ? ' style="color: '.$color.';"' : '').' title="'.getOverallStatusText($status).'"></i>';
|
||||
}
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
* Get attributes for a button opening a modal box
|
||||
*
|
||||
|
@ -1421,9 +1453,9 @@ $(document).ready(function() {
|
|||
<div class="input-group">
|
||||
<input type="text" class="form-control fileupload-group" id="kkll'.$id.'" readonly>
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-secondary btn-file">
|
||||
<a class="btn btn-secondary btn-file">
|
||||
'.getMLText("browse").'… <input id="'.$id.'" type="file" name="'.$varname.'"'.($multiple ? " multiple" : "").($accept ? ' accept="'.$accept.'"' : "").' data-target-highlight="kkll'.$id.'">
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1825,7 +1857,7 @@ $(document).ready(function() {
|
|||
*/
|
||||
$content = '
|
||||
<div class="input-group date">
|
||||
<input type="text" class="form-control" id="'.$fieldname.'_'.$attrdef->getId().($namepostfix ? '_'.$namepostfix : '').'" name="'.$fieldname.'['.$attrdef->getId().']'.($namepostfix ? '['.$namepostfix.']' : '').'" value="'.($objvalue ? $objvalue : '').'" data-date="'.getReadableDate().'" data-date-format="'.$dateformat.'" data-date-language="'.str_replace('_', '-', $this->params['session']->getLanguage()).'" data-date-autoclose="true" data-provide="datepicker">
|
||||
<input type="text" class="form-control" id="'.$fieldname.'_'.$attrdef->getId().($namepostfix ? '_'.$namepostfix : '').'" name="'.$fieldname.'['.$attrdef->getId().']'.($namepostfix ? '['.$namepostfix.']' : '').'" value="'.($objvalue ? getReadableDate($objvalue) : '').'" data-date="'.getReadableDate().'" data-date-format="'.$dateformat.'" data-date-language="'.str_replace('_', '-', $this->params['session']->getLanguage()).'" data-date-autoclose="true" data-provide="datepicker">
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text"><i class="fa fa-calendar"></i></span>
|
||||
</div>
|
||||
|
@ -2972,22 +3004,18 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
|
|||
$status = $latestContent->getStatus();
|
||||
$attentionstr = '';
|
||||
if ( $document->isLocked() ) {
|
||||
$attentionstr .= "<img src=\"".$this->getImgPath("lock.png")."\" title=\"". getMLText("locked_by").": ".htmlspecialchars($document->getLockingUser()->getFullName())."\"> ";
|
||||
$attentionstr .= "<i class=\"fa fa-lock\" title=\"". getMLText("locked_by").": ".htmlspecialchars($document->getLockingUser()->getFullName())."\"></i> ";
|
||||
}
|
||||
$needwkflaction = false;
|
||||
if($workflowmode == 'advanced') {
|
||||
$workflow = $latestContent->getWorkflow();
|
||||
if($workflow) {
|
||||
$needwkflaction = $latestContent->needsWorkflowAction($user);
|
||||
if($workflow && $latestContent->needsWorkflowAction($user)) {
|
||||
$attentionstr .= "<i class=\"fa fa-exclamation-triangle\" title=\"". getMLText("workflow").": ".htmlspecialchars($workflow->getName())."\"></i> ";
|
||||
}
|
||||
}
|
||||
if ( $needwkflaction ) {
|
||||
$attentionstr .= "<img src=\"".$this->getImgPath("attention.gif")."\" title=\"". getMLText("workflow").": ".htmlspecialchars($workflow->getName())."\"> ";
|
||||
}
|
||||
$content = '';
|
||||
if($attentionstr)
|
||||
$content .= $attentionstr."<br />";
|
||||
$content .= "<small>";
|
||||
|
||||
/* Retrieve attacheѕ files */
|
||||
$files = $document->getDocumentFiles($latestContent->getVersion());
|
||||
$files = SeedDMS_Core_DMS::filterDocumentFiles($user, $files);
|
||||
|
@ -3000,17 +3028,18 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
|
|||
$revlinks = $document->getReverseDocumentLinks();
|
||||
$revlinks = SeedDMS_Core_DMS::filterDocumentLinks($user, $revlinks);
|
||||
|
||||
$content .= "<div style=\"font-size: 85%;\">";
|
||||
if(count($files))
|
||||
$content .= count($files)." ".getMLText("linked_files")."<br />";
|
||||
$content .= '<i class="fa fa-paperclip" title="'.getMLText("linked_files").'"></i> '.count($files)."<br />";
|
||||
if(count($links) || count($revlinks))
|
||||
$content .= count($links)."/".count($revlinks)." ".getMLText("linked_documents")."<br />";
|
||||
$content .= '<i class="fa fa-link" title="'.getMLText("linked_documents").'"></i> '.count($links)."/".count($revlinks)."<br />";
|
||||
if($status["status"] == S_IN_WORKFLOW && $workflowmode == 'advanced') {
|
||||
if($workflowstate = $latestContent->getWorkflowState())
|
||||
$content .= '<span title="'.getOverallStatusText($status["status"]).': '.($workflow ? htmlspecialchars($workflow->getName()) : '').'">'.($workflowstate ? htmlspecialchars($workflowstate->getName()) : '').'</span>';
|
||||
} else {
|
||||
$content .= getOverallStatusText($status["status"]);
|
||||
$content .= $this->getOverallStatusIcon($status['status']);
|
||||
}
|
||||
$content .= "</small>";
|
||||
$content .= "</div>";
|
||||
return $content;
|
||||
} /* }}} */
|
||||
|
||||
|
@ -3199,6 +3228,53 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
|
|||
return "</tr>\n";
|
||||
} /* }}} */
|
||||
|
||||
function folderListRowStatus($subFolder) { /* {{{ */
|
||||
$dms = $this->params['dms'];
|
||||
$user = $this->params['user'];
|
||||
$showtree = $this->params['showtree'];
|
||||
$enableRecursiveCount = $this->params['enableRecursiveCount'];
|
||||
$maxRecursiveCount = $this->params['maxRecursiveCount'];
|
||||
|
||||
$content = "<div style=\"font-size: 85%;\">";
|
||||
if($enableRecursiveCount) {
|
||||
if($user->isAdmin()) {
|
||||
/* No need to check for access rights in countChildren() for
|
||||
* admin. So pass 0 as the limit.
|
||||
*/
|
||||
$cc = $subFolder->countChildren($user, 0);
|
||||
if($cc['folder_count'])
|
||||
$content .= '<i class="fa fa-folder" title="'.getMLText("folders").'"></i> '.$cc['folder_count']."<br />";
|
||||
if($cc['document_count'])
|
||||
$content .= '<i class="fa fa-file" title="'.getMLText("documents").'"></i> '.$cc['document_count'];
|
||||
} else {
|
||||
$cc = $subFolder->countChildren($user, $maxRecursiveCount);
|
||||
if($maxRecursiveCount > 5000)
|
||||
$rr = 100.0;
|
||||
else
|
||||
$rr = 10.0;
|
||||
if($cc['folder_count'])
|
||||
$content .= '<i class="fa fa-folder" title="'.getMLText("folders").'"></i> '.(!$cc['folder_precise'] ? '~'.(round($cc['folder_count']/$rr)*$rr) : $cc['folder_count'])."<br />";
|
||||
if($cc['document_count'])
|
||||
$content .= '<i class="fa fa-file" title="'.getMLText("documents").'"></i> '.(!$cc['document_precise'] ? '~'.(round($cc['document_count']/$rr)*$rr) : $cc['document_count']);
|
||||
}
|
||||
} else {
|
||||
/* FIXME: the following is very inefficient for just getting the number of
|
||||
* subfolders and documents. Making it more efficient is difficult, because
|
||||
* the access rights need to be checked.
|
||||
*/
|
||||
$subsub = $subFolder->getSubFolders();
|
||||
$subsub = SeedDMS_Core_DMS::filterAccess($subsub, $user, M_READ);
|
||||
$subdoc = $subFolder->getDocuments();
|
||||
$subdoc = SeedDMS_Core_DMS::filterAccess($subdoc, $user, M_READ);
|
||||
if(count($subsub))
|
||||
$content .= '<i class="fa fa-folder" title="'.getMLText("folders").'"></i> '.count($subsub)."<br />";
|
||||
if(count($subdoc))
|
||||
$content .= '<i class="fa fa-file" title="'.getMLText("documents").'"></i> '.count($subdoc);
|
||||
}
|
||||
$content .= "</div>";
|
||||
return $content;
|
||||
} /* }}} */
|
||||
|
||||
function folderListRowAction($subFolder, $skipcont=false, $extracontent=array()) { /* {{{ */
|
||||
$dms = $this->params['dms'];
|
||||
$user = $this->params['user'];
|
||||
|
@ -3280,34 +3356,9 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
|
|||
$content .= $extracontent['bottom_title'];
|
||||
$content .= "</td>\n";
|
||||
// $content .= "<td>".htmlspecialchars($owner->getFullName())."</td>";
|
||||
$content .= "<td colspan=\"1\" nowrap><small>";
|
||||
if($enableRecursiveCount) {
|
||||
if($user->isAdmin()) {
|
||||
/* No need to check for access rights in countChildren() for
|
||||
* admin. So pass 0 as the limit.
|
||||
*/
|
||||
$cc = $subFolder->countChildren($user, 0);
|
||||
$content .= $cc['folder_count']." ".getMLText("folders")."<br />".$cc['document_count']." ".getMLText("documents");
|
||||
} else {
|
||||
$cc = $subFolder->countChildren($user, $maxRecursiveCount);
|
||||
if($maxRecursiveCount > 5000)
|
||||
$rr = 100.0;
|
||||
else
|
||||
$rr = 10.0;
|
||||
$content .= (!$cc['folder_precise'] ? '~'.(round($cc['folder_count']/$rr)*$rr) : $cc['folder_count'])." ".getMLText("folders")."<br />".(!$cc['document_precise'] ? '~'.(round($cc['document_count']/$rr)*$rr) : $cc['document_count'])." ".getMLText("documents");
|
||||
}
|
||||
} else {
|
||||
/* FIXME: the following is very inefficient for just getting the number of
|
||||
* subfolders and documents. Making it more efficient is difficult, because
|
||||
* the access rights need to be checked.
|
||||
*/
|
||||
$subsub = $subFolder->getSubFolders();
|
||||
$subsub = SeedDMS_Core_DMS::filterAccess($subsub, $user, M_READ);
|
||||
$subdoc = $subFolder->getDocuments();
|
||||
$subdoc = SeedDMS_Core_DMS::filterAccess($subdoc, $user, M_READ);
|
||||
$content .= count($subsub)." ".getMLText("folders")."<br />".count($subdoc)." ".getMLText("documents");
|
||||
}
|
||||
$content .= "</small></td>";
|
||||
$content .= "<td colspan=\"1\" nowrap>";
|
||||
$content .= $this->folderListRowStatus($subFolder);
|
||||
$content .= "</td>";
|
||||
$content .= "<td>";
|
||||
$content .= $this->folderListRowAction($subFolder, $skipcont, $extracontent);
|
||||
$content .= "</td>";
|
||||
|
@ -3367,11 +3418,13 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
|
|||
<div class="qq-total-progress-bar-container-selector qq-total-progress-bar-container">
|
||||
<div role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" class="qq-total-progress-bar-selector qq-progress-bar qq-total-progress-bar"></div>
|
||||
</div>
|
||||
<div class="input-append">
|
||||
<div class="qq-upload-drop-area-selector qq-upload-drop-area" _qq-hide-dropzone>
|
||||
<div class="input-group">
|
||||
<div class="form-control qq-upload-drop-area-selector qq-upload-drop-area" _qq-hide-dropzone>
|
||||
<span class="qq-upload-drop-area-text-selector"></span>
|
||||
</div>
|
||||
<span class="btn qq-upload-button-selector qq-upload-button">'.getMLText('browse').'…</span>
|
||||
<div class="input-group-append">
|
||||
<span class="btn btn-secondary qq-upload-button-selector qq-upload-button">'.getMLText('choose_target_file').'…</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="qq-drop-processing-selector qq-drop-processing">
|
||||
<span class="qq-drop-processing-spinner-selector qq-drop-processing-spinner"></span>
|
||||
|
@ -3385,22 +3438,22 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
|
|||
<img class="qq-thumbnail-selector" qq-max-size="100" qq-server-scale>
|
||||
<span class="qq-upload-file-selector qq-upload-file"></span>
|
||||
<span class="qq-upload-size-selector qq-upload-size"></span>
|
||||
<button class="btn btn-mini qq-btn qq-upload-cancel-selector qq-upload-cancel">Cancel</button>
|
||||
<button class="btn btn-sm btn-danger qq-btn qq-upload-cancel-selector qq-upload-cancel">Cancel</button>
|
||||
<span role="status" class="qq-upload-status-text-selector qq-upload-status-text"></span>
|
||||
</li>
|
||||
</ul>
|
||||
<dialog class="qq-alert-dialog-selector">
|
||||
<div class="qq-dialog-message-selector"></div>
|
||||
<div class="qq-dialog-buttons">
|
||||
<button class="btn qq-cancel-button-selector">Cancel</button>
|
||||
<button class="btn btn-sm btn-secondary qq-cancel-button-selector">Cancel</button>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<dialog class="qq-confirm-dialog-selector">
|
||||
<div class="qq-dialog-message-selector"></div>
|
||||
<div class="qq-dialog-buttons">
|
||||
<button class="btn qq-cancel-button-selector">Cancel</button>
|
||||
<button class="btn qq-ok-button-selector">Ok</button>
|
||||
<button class="btn btn-sm btn-secondary qq-cancel-button-selector">Cancel</button>
|
||||
<button class="btn btn-sm btn-primary qq-ok-button-selector">Ok</button>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
|
@ -3709,9 +3762,7 @@ $("body").on("click", "span.openpopupbox", function(e) {
|
|||
*/
|
||||
$html = '
|
||||
<span class="openpopupbox" data-href="#'.$id.'">'.$title.'</span>
|
||||
<div id="'.$id.'" class="popupbox" style="display: none;">
|
||||
'.$content.'
|
||||
<span class="closepopupbox"><i class="fa fa-remove"></i></span>
|
||||
<div id="'.$id.'" class="popupbox" style="display: none;">'.$content.'<span class="closepopupbox"><i class="fa fa-remove"></i></span>
|
||||
</div>';
|
||||
if($ret)
|
||||
return $html;
|
||||
|
@ -3738,6 +3789,24 @@ $("body").on("click", "span.openpopupbox", function(e) {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
} /* }}} */
|
||||
|
||||
public function printAccordion2($title, $content) { /* {{{ */
|
||||
$id = substr(md5(uniqid()), 0, 4);
|
||||
?>
|
||||
<div class="accordion2" id="accordion<?php echo $id; ?>">
|
||||
<a class="accordion2-toggle" data-toggle="collapse" data-parent="#accordion<?php echo $id; ?>" data-target="#collapse<?php echo $id; ?>">
|
||||
<?php
|
||||
$this->contentHeading($title);
|
||||
?>
|
||||
</a>
|
||||
<div id="collapse<?php echo $id; ?>" class="collapse" data-parent="accordion<?php echo $id; ?>">
|
||||
<?php
|
||||
echo $content;
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
} /* }}} */
|
||||
}
|
||||
|
|
|
@ -9,6 +9,9 @@ body { /* Add top padding for full-width layout */
|
|||
#login_wrapper {
|
||||
width: 100%;
|
||||
}
|
||||
legend { /* to prevent overlong filenames from cause horiz. scroll */
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
a.navbar-brand img {
|
||||
|
@ -171,6 +174,7 @@ div.statusbar div.filesize {
|
|||
}
|
||||
div.statusbar div.progress {
|
||||
margin-bottom: 10px;
|
||||
line-height: 1rem;
|
||||
}
|
||||
div.statusbar a.btn {
|
||||
margin-bottom: 10px;
|
||||
|
@ -260,6 +264,10 @@ div.statusbar-container h1 {
|
|||
font-weight: normal;
|
||||
}
|
||||
|
||||
a.accordion2-toggle:focus, a.accordion2-toggle:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
span.datepicker {
|
||||
padding: 0px;
|
||||
}
|
||||
|
@ -339,6 +347,8 @@ i.warning {color: #ff9900;}
|
|||
i.initstate {color: #ff9900;}
|
||||
i.released {color: #00b000;}
|
||||
i.rejected {color: #b00000;}
|
||||
i.expired {color: #b0b0b0;}
|
||||
i.obsolete {color: #9e5d42;}
|
||||
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);}
|
||||
|
@ -359,11 +369,14 @@ div.popupbox {
|
|||
color: black;
|
||||
text-align: left;
|
||||
text-shadow: none;
|
||||
line-height: 1.4em;
|
||||
border: 1px solid #ccc;
|
||||
padding: 25px 15px 15px 15px;
|
||||
display: none;
|
||||
position: absolute;
|
||||
min-width: 230px;
|
||||
max-width: 280px;
|
||||
white-space: break-spaces;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
|
@ -412,15 +425,6 @@ ul.qq-upload-list li span {
|
|||
display: inline-block;
|
||||
}
|
||||
|
||||
.qq-upload-drop-area {
|
||||
display: inline-block;
|
||||
width: 200px;
|
||||
height: 22px;
|
||||
padding: 3px;
|
||||
background-color: #fff;
|
||||
border: 1px solid #cccccc;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.qq-hide, .qq-uploader dialog {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -704,11 +704,20 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
maxFileSize = size;
|
||||
}
|
||||
|
||||
SeedDMSUpload.getMaxFileSize = function() {
|
||||
return maxFileSize;
|
||||
}
|
||||
|
||||
SeedDMSUpload.setMaxFileSizeMsg = function(msg) {
|
||||
maxFileSizeMsg = msg;
|
||||
}
|
||||
|
||||
function sendFileToServer(formData,status,callback) {
|
||||
SeedDMSUpload.getMaxFileSizeMsg = function() {
|
||||
return maxFileSizeMsg;
|
||||
}
|
||||
|
||||
// function sendFileToServer(formData,status,callback) {
|
||||
SeedDMSUpload.sendFileToServer = function(formData,status,callback) {
|
||||
var uploadURL = ajaxurl; //Upload URL
|
||||
var extraData ={}; //Extra Data.
|
||||
var jqXHR=$.ajax({
|
||||
|
@ -767,7 +776,8 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
status.setAbort(jqXHR);
|
||||
}
|
||||
|
||||
function createStatusbar(obj) {
|
||||
//function createStatusbar(obj) {
|
||||
SeedDMSUpload.createStatusbar = function(obj) {
|
||||
rowCount++;
|
||||
var row="odd";
|
||||
this.obj = obj;
|
||||
|
@ -793,8 +803,8 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
this.size.html(sizeStr);
|
||||
}
|
||||
this.setProgress = function(progress) {
|
||||
var progressBarWidth =progress*this.progressBar.width()/ 100;
|
||||
this.progressBar.find('div').animate({ width: progressBarWidth }, 10).html(progress + "% ");
|
||||
// var progressBarWidth =progress*this.progressBar.width()/ 100;
|
||||
this.progressBar.find('div').animate({ width: progress+"%" }, 10).html(progress + "% ");
|
||||
if(parseInt(progress) >= 100) {
|
||||
this.abort.hide();
|
||||
}
|
||||
|
@ -828,7 +838,7 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
formData.append(key, value);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
} else if(typeof data !== 'undefined') {
|
||||
formData.append(previousKey, data);
|
||||
}
|
||||
}
|
||||
|
@ -863,9 +873,9 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
// fd.append('path', files[i].webkitRelativePath);
|
||||
|
||||
statusbar.parent().show();
|
||||
var status = new createStatusbar(statusbar);
|
||||
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
||||
status.setFileNameSize(files[i].name,files[i].size);
|
||||
sendFileToServer(fd,status,function(){
|
||||
SeedDMSUpload.sendFileToServer(fd,status,function(){
|
||||
if(target_id == seeddms_folder)
|
||||
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
|
||||
});
|
||||
|
@ -891,9 +901,9 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
fd.append('userfile', files[i]);
|
||||
fd.append('command', 'uploaddocument');
|
||||
|
||||
var status = new createStatusbar(statusbar);
|
||||
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
||||
status.setFileNameSize(files[i].name,files[i].size);
|
||||
sendFileToServer(fd,status);
|
||||
SeedDMSUpload.sendFileToServer(fd,status);
|
||||
} else {
|
||||
noty({
|
||||
text: maxFileSizeMsg + '<br /><em>' + files[i].name + ' (' + files[i].size + ' Bytes)</em>',
|
||||
|
@ -916,9 +926,9 @@ function onAddClipboard(ev) { /* {{{ */
|
|||
fd.append('userfile', files[i]);
|
||||
fd.append('command', 'addfile');
|
||||
|
||||
var status = new createStatusbar(statusbar);
|
||||
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
||||
status.setFileNameSize(files[i].name,files[i].size);
|
||||
sendFileToServer(fd,status, function(){
|
||||
SeedDMSUpload.sendFileToServer(fd,status, function(){
|
||||
$("div.ajax[data-action='documentFiles']").trigger('update', {documentid: target_id});
|
||||
});
|
||||
} else {
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -25,9 +25,6 @@ body {
|
|||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
/* Set the fixed height of the footer here */
|
||||
height: 68px;
|
||||
_line-height: 17px; /* Vertically center the text there */
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
@media (max-width: 991px) {
|
||||
|
@ -45,9 +42,9 @@ body {
|
|||
}
|
||||
.footer .disclaimer {
|
||||
display: inline-block;
|
||||
padding: 15px 0px 0px 0px;
|
||||
padding: 7px 0px 7px 0px;
|
||||
}
|
||||
.footer .footNote {
|
||||
display: inline-block;
|
||||
padding: 0px 0px 15px 0px;
|
||||
padding: 7px 0px 7px 0px;
|
||||
}
|
||||
|
|
|
@ -384,8 +384,8 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
|||
array_shift($patharr);
|
||||
$path = '';
|
||||
foreach($patharr as $pathseg)
|
||||
// $path .= '/'.rawurlencode($pathseg->getName());
|
||||
$path .= '/'.$pathseg->getName();
|
||||
$path .= '/'.rawurlencode($pathseg->getName());
|
||||
// $path .= '/'.$pathseg->getName();
|
||||
if(!$path) {
|
||||
$path = '/';
|
||||
$info["props"][] = $this->mkprop("isroot", "true");
|
||||
|
@ -407,8 +407,8 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
|||
array_shift($patharr);
|
||||
$path = '/';
|
||||
foreach($patharr as $pathseg)
|
||||
// $path .= rawurlencode($pathseg->getName()).'/';
|
||||
$path .= $pathseg->getName().'/';
|
||||
$path .= rawurlencode($pathseg->getName()).'/';
|
||||
// $path .= $pathseg->getName().'/';
|
||||
// $info["path"] = htmlspecialchars($path.rawurlencode($obj->getName()));
|
||||
if($this->useorgfilename) {
|
||||
/* Add the document id and version to the display name.
|
||||
|
@ -572,6 +572,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
|||
$displayname = $obj->getName().'/';
|
||||
$filesize = 0;
|
||||
$mtime = $obj->getDate();
|
||||
$mimetype = '';
|
||||
} else {
|
||||
$content = $obj->getLatestContent();
|
||||
|
||||
|
@ -604,7 +605,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
|||
printf($format,
|
||||
number_format($filesize),
|
||||
strftime("%Y-%m-%d %H:%M:%S", $mtime),
|
||||
"<a href=\"".$_SERVER['SCRIPT_NAME'].htmlspecialchars($fullpath)."\">".htmlspecialchars($displayname, ENT_QUOTES)."</a>");
|
||||
"<a href=\"".$_SERVER['SCRIPT_NAME'].htmlspecialchars($fullpath)."\"".($mimetype ? " title=\"".$mimetype."\"" : "").">".htmlspecialchars($displayname, ENT_QUOTES)."</a>");
|
||||
}
|
||||
|
||||
echo "</pre>";
|
||||
|
|
Loading…
Reference in New Issue
Block a user