Merge branch 'seeddms-6.0.x' into seeddms-6.1.x

This commit is contained in:
Uwe Steinmann 2020-05-19 11:12:49 +02:00
commit dc0d452afe
75 changed files with 1973 additions and 811 deletions

View File

@ -1,15 +1,25 @@
--------------------------------------------------------------------------------
Changes in version 6.1.0
--------------------------------------------------------------------------------
- merge changes up to 6.0.9
- merge changes up to 6.0.10
- add attribute groups and selective output of attributes
- add support for WebAuthn
- do not use md5 password hashing anymore, hashes will be updated automatically
when passwords are reset
--------------------------------------------------------------------------------
Changes in version 6.0.10
--------------------------------------------------------------------------------
- merge changes up to 5.1.17
- fix list of previous document versions (Closes: #471)
- fix uploading files with fine uploader (Closes: #472)
- clear revision date when all revisors have been deleted
- improve scheduler task management, tasks can be deleted, fix setting parameters
--------------------------------------------------------------------------------
Changes in version 6.0.9
--------------------------------------------------------------------------------
- merge changes up to 5.1.16
- fix removal of roles (Closes: #465)
- fix password forgotten process
- fix setting role of new user and retrieving role of existing user
@ -147,6 +157,19 @@
- add document list which can be exported as an archive
- search results can be exported
--------------------------------------------------------------------------------
Changes in version 5.1.17
--------------------------------------------------------------------------------
- new version 5.16.2 of fine uploader
- obey max_upload_size whenever a file is uploaded
- do not list documents in task list, if a previous version is still in workflow.
Take only the lastest version into account (Closes: #405)
- fix moving documents in clipboard into folder by drag&drop
- clipboard can be pinned to fixed position
- use standard output for document rows on MyDocuments page
- new seeddms logo
- fix moving clipboard (Closes: #473)
--------------------------------------------------------------------------------
Changes in version 5.1.16
--------------------------------------------------------------------------------

View File

@ -906,7 +906,7 @@ class SeedDMS_Core_DMS {
foreach($tmp as $group)
$groups[] = $group->getID();
}
$selectStr = "SELECT count(*) c ";
$selectStr = "count(distinct ttcontentid.document) c ";
$queryStr =
"FROM `ttcontentid` ".
"LEFT JOIN `tblDocumentStatus` ON `tblDocumentStatus`.`documentID`=`ttcontentid`.`document` AND `tblDocumentStatus`.`version`=`ttcontentid`.`maxVersion` ".
@ -938,10 +938,12 @@ class SeedDMS_Core_DMS {
"LEFT JOIN `ttapproveid` ON `ttapproveid`.`approveID` = `tblDocumentApprovers`.`approveID` ".
"LEFT JOIN `tblDocumentApproveLog` ON `tblDocumentApproveLog`.`approveLogID`=`ttapproveid`.`maxLogID` ";
$queryStr .= "WHERE (`tblDocumentApprovers`.`type` = 0 AND `tblDocumentApprovers`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentApprovers`.`type` = 1 AND `tblDocumentApprovers`.`required` IN (".implode(',', $groups).") ";
$queryStr .= ") ";
if($user) {
$queryStr .= "WHERE (`tblDocumentApprovers`.`type` = 0 AND `tblDocumentApprovers`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentApprovers`.`type` = 1 AND `tblDocumentApprovers`.`required` IN (".implode(',', $groups).") ";
$queryStr .= ") ";
}
$queryStr .= "AND `tblDocumentApproveLog`.`status` = 0 ";
$queryStr .= "AND `tblDocumentStatusLog`.`status` IN (".S_DRAFT_APP.", ".S_EXPIRED.") ";
break; /* }}} */
@ -954,10 +956,12 @@ class SeedDMS_Core_DMS {
"LEFT JOIN `ttreceiptid` ON `ttreceiptid`.`receiptID` = `tblDocumentRecipients`.`receiptID` ".
"LEFT JOIN `tblDocumentReceiptLog` ON `tblDocumentReceiptLog`.`receiptLogID`=`ttreceiptid`.`maxLogID` ";
$queryStr .= "WHERE (`tblDocumentRecipients`.`type` = 0 AND `tblDocumentRecipients`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentRecipients`.`type` = 1 AND `tblDocumentRecipients`.`required` IN (".implode(',', $groups).") ";
$queryStr .= ") ";
if($user) {
$queryStr .= "WHERE (`tblDocumentRecipients`.`type` = 0 AND `tblDocumentRecipients`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentRecipients`.`type` = 1 AND `tblDocumentRecipients`.`required` IN (".implode(',', $groups).") ";
$queryStr .= ") ";
}
$queryStr .= "AND `tblDocumentReceiptLog`.`status` = 0 ";
$queryStr .= "AND `tblDocumentStatusLog`.`status` IN (".S_RELEASED.") ";
break; /* }}} */
@ -970,51 +974,40 @@ class SeedDMS_Core_DMS {
"LEFT JOIN `ttrevisionid` ON `ttrevisionid`.`revisionID` = `tblDocumentRevisors`.`revisionID` ".
"LEFT JOIN `tblDocumentRevisionLog` ON `tblDocumentRevisionLog`.`revisionLogID`=`ttrevisionid`.`maxLogID` ";
$queryStr .= "WHERE (`tblDocumentRevisors`.`type` = 0 AND `tblDocumentRevisors`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentRevisors`.`type` = 1 AND `tblDocumentRevisors`.`required` IN (".implode(',', $groups).") ";
$queryStr .= ") ";
if($user) {
$queryStr .= "WHERE (`tblDocumentRevisors`.`type` = 0 AND `tblDocumentRevisors`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentRevisors`.`type` = 1 AND `tblDocumentRevisors`.`required` IN (".implode(',', $groups).") ";
$queryStr .= ") ";
}
$queryStr .= "AND `tblDocumentRevisionLog`.`status` = 0 ";
$queryStr .= "AND `tblDocumentStatusLog`.`status` IN (".S_IN_REVISION.") ";
break; /* }}} */
case 'NeedsCorrectionOwner':
case 'NeedsCorrectionOwner': // Documents that need to be corrected {{{
$queryStr .=
"LEFT JOIN `tblDocuments` ON `tblDocuments`.`id` = `ttcontentid`.`document` ";
$queryStr .= "WHERE `tblDocuments`.`owner` = '".$user->getID()."' ".
"AND `tblDocumentStatusLog`.`status` IN (".S_NEEDS_CORRECTION.") ";
break; /* }}} */
case 'WorkflowByMe':
// Get document list for the current user.
$workflowStatus = $user->getWorkflowStatus();
case 'WorkflowByMe': // Documents which need my workflow action {{{
// Create a comma separated list of all the documentIDs whose information is
// required.
$dList = array();
foreach ($workflowStatus["u"] as $st) {
if (!in_array($st["document"], $dList)) {
$dList[] = $st["document"];
}
}
foreach ($workflowStatus["g"] as $st) {
if (!in_array($st["document"], $dList)) {
$dList[] = $st["document"];
}
}
$docCSV = "";
foreach ($dList as $d) {
$docCSV .= (strlen($docCSV)==0 ? "" : ", ")."'".$d."'";
}
$queryStr .=
"LEFT JOIN `tblWorkflowDocumentContent` on `ttcontentid`.`document`=`tblWorkflowDocumentContent`.`document` AND `ttcontentid`.`maxVersion`=`tblWorkflowDocumentContent`.`version` ".
"LEFT JOIN `tblWorkflowTransitions` on `tblWorkflowDocumentContent`.`workflow`=`tblWorkflowTransitions`.`workflow` AND `tblWorkflowDocumentContent`.`state`=`tblWorkflowTransitions`.`state` ".
"LEFT JOIN `tblWorkflowTransitionUsers` on `tblWorkflowTransitionUsers`.`transition` = `tblWorkflowTransitions`.`id` ".
"LEFT JOIN `tblWorkflowTransitionGroups` on `tblWorkflowTransitionGroups`.`transition` = `tblWorkflowTransitions`.`id` ";
if ($dList) {
$queryStr .=
"WHERE `ttcontentid`.`document` IN (" . implode(',', $dList) . ")";
} else {
$queryStr = '';
if($user) {
$queryStr .= "WHERE (`tblWorkflowTransitionUsers`.`userid` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblWorkflowTransitionGroups`.`groupid` IN (".implode(',', $groups).")";
$queryStr .= ") ";
}
break;
$queryStr .= "AND `tblDocumentStatusLog`.`status` = ".S_IN_WORKFLOW." ";
break; // }}}
}
if($queryStr) {
$resArr = $this->db->getResultArray($selectStr.$queryStr);
$resArr = $this->db->getResultArray('SELECT '.$selectStr.$queryStr);
if (is_bool($resArr) && !$resArr) {
return false;
}
@ -1064,8 +1057,8 @@ class SeedDMS_Core_DMS {
* 'AppRevOwner', 'ReceiptByMe', 'ReviseByMe', 'LockedByMe', 'MyDocs'
* @param SeedDMS_Core_User $param1 user
* @param bool $param2 set to true
* if 'AppRevByMe', 'ReviseByMe', 'ReceiptByMe' shall return even documents
* І have already taken care of.
* if 'ReviewByMe', 'ApproveByMe', 'AppRevByMe', 'ReviseByMe', 'ReceiptByMe'
* shall return even documents І have already taken care of.
* @param string $param3 sort list by this field
* @param string $param4 order direction
* @return array|bool
@ -1103,7 +1096,7 @@ class SeedDMS_Core_DMS {
* It doesn't need the where clause anymore. Hence the statement could be
* extended with further left joins.
*/
$selectStr = "SELECT `tblDocuments`.*, `tblDocumentLocks`.`userID` as `lockUser`, ".
$selectStr = "`tblDocuments`.*, `tblDocumentLocks`.`userID` as `lockUser`, ".
"`tblDocumentContent`.`version`, `tblDocumentStatus`.*, `tblDocumentStatusLog`.`status`, ".
"`tblDocumentStatusLog`.`comment` AS `statusComment`, `tblDocumentStatusLog`.`date` as `statusDate`, ".
"`tblDocumentStatusLog`.`userID`, `oTbl`.`fullName` AS `ownerName`, `sTbl`.`fullName` AS `statusName` ";
@ -1178,9 +1171,11 @@ class SeedDMS_Core_DMS {
$orderdir = 'ASC';
$groups = array();
$tmp = $user->getGroups();
foreach($tmp as $group)
$groups[] = $group->getID();
if($user) {
$tmp = $user->getGroups();
foreach($tmp as $group)
$groups[] = $group->getID();
}
$selectStr .= ", `tblDocumentReviewLog`.`date` as `duedate` ";
$queryStr .=
@ -1189,10 +1184,12 @@ class SeedDMS_Core_DMS {
"LEFT JOIN `tblDocumentReviewLog` ON `tblDocumentReviewLog`.`reviewLogID`=`ttreviewid`.`maxLogID` ";
if(1) {
$queryStr .= "WHERE (`tblDocumentReviewers`.`type` = 0 AND `tblDocumentReviewers`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentReviewers`.`type` = 1 AND `tblDocumentReviewers`.`required` IN (".implode(',', $groups).") ";
$queryStr .= ") ";
if($user) {
$queryStr .= "WHERE (`tblDocumentReviewers`.`type` = 0 AND `tblDocumentReviewers`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentReviewers`.`type` = 1 AND `tblDocumentReviewers`.`required` IN (".implode(',', $groups).") ";
$queryStr .= ") ";
}
$queryStr .= "AND `tblDocumentStatusLog`.`status` IN (".S_DRAFT_REV.", ".S_EXPIRED.") ";
if(!$param2)
$queryStr .= " AND `tblDocumentReviewLog`.`status` = 0 ";
@ -1253,9 +1250,11 @@ class SeedDMS_Core_DMS {
$orderdir = 'ASC';
$groups = array();
$tmp = $user->getGroups();
foreach($tmp as $group)
$groups[] = $group->getID();
if($user) {
$tmp = $user->getGroups();
foreach($tmp as $group)
$groups[] = $group->getID();
}
$selectStr .= ", `tblDocumentApproveLog`.`date` as `duedate` ";
$queryStr .=
@ -1264,10 +1263,12 @@ class SeedDMS_Core_DMS {
"LEFT JOIN `tblDocumentApproveLog` ON `tblDocumentApproveLog`.`approveLogID`=`ttapproveid`.`maxLogID` ";
if(1) {
if($user) {
$queryStr .= "WHERE (`tblDocumentApprovers`.`type` = 0 AND `tblDocumentApprovers`.`required` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblDocumentApprovers`.`type` = 1 AND `tblDocumentApprovers`.`required` IN (".implode(',', $groups).")";
$queryStr .= ") ";
}
$queryStr .= "AND `tblDocumentStatusLog`.`status` IN (".S_DRAFT_APP.", ".S_EXPIRED.") ";
if(!$param2)
$queryStr .= " AND `tblDocumentApproveLog`.`status` = 0 ";
@ -1485,9 +1486,40 @@ class SeedDMS_Core_DMS {
$queryStr .= ", `tblDocumentContent`.`revisiondate` ASC";
break; // }}}
case 'WorkflowByMe': // Documents I to trigger in Worklflow {{{
$queryStr .= "WHERE 1=1 ";
$user = $param1;
$orderby = $param3;
if($param4 == 'desc')
$orderdir = 'DESC';
else
$orderdir = 'ASC';
if(1) {
$groups = array();
if($user) {
$tmp = $user->getGroups();
foreach($tmp as $group)
$groups[] = $group->getID();
}
$selectStr = 'distinct '.$selectStr;
$queryStr .=
"LEFT JOIN `tblWorkflowDocumentContent` on `ttcontentid`.`document`=`tblWorkflowDocumentContent`.`document` AND `ttcontentid`.`maxVersion`=`tblWorkflowDocumentContent`.`version` ".
"LEFT JOIN `tblWorkflowTransitions` on `tblWorkflowDocumentContent`.`workflow`=`tblWorkflowTransitions`.`workflow` AND `tblWorkflowDocumentContent`.`state`=`tblWorkflowTransitions`.`state` ".
"LEFT JOIN `tblWorkflowTransitionUsers` on `tblWorkflowTransitionUsers`.`transition` = `tblWorkflowTransitions`.`id` ".
"LEFT JOIN `tblWorkflowTransitionGroups` on `tblWorkflowTransitionGroups`.`transition` = `tblWorkflowTransitions`.`id` ";
if($user) {
$queryStr .= "WHERE (`tblWorkflowTransitionUsers`.`userid` = ".$user->getID()." ";
if($groups)
$queryStr .= "OR `tblWorkflowTransitionGroups`.`groupid` IN (".implode(',', $groups).")";
$queryStr .= ") ";
}
$queryStr .= "AND `tblDocumentStatusLog`.`status` = ".S_IN_WORKFLOW." ";
// echo 'SELECT '.$selectStr." ".$queryStr;
if ($orderby=='e') $queryStr .= "ORDER BY `expires`";
else if ($orderby=='u') $queryStr .= "ORDER BY `statusDate`";
else $queryStr .= "ORDER BY `name`";
} else {
$queryStr .= "WHERE 1=1 ";
// Get document list for the current user.
$workflowStatus = $user->getWorkflowStatus();
@ -1517,6 +1549,7 @@ class SeedDMS_Core_DMS {
} else {
$queryStr = '';
}
}
break; // }}}
case 'AppRevOwner': // Documents waiting for review/approval/revision I'm owning {{{
$queryStr .= "WHERE 1=1 ";
@ -1806,7 +1839,7 @@ class SeedDMS_Core_DMS {
}
if($queryStr) {
$resArr = $this->db->getResultArray($selectStr.$queryStr);
$resArr = $this->db->getResultArray('SELECT '.$selectStr.$queryStr);
if (is_bool($resArr) && !$resArr) {
return false;
}

View File

@ -879,10 +879,13 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
* Check if latest content of the document has a scheduled
* revision workflow.
* The method will update the document status log database table
* if needed.
* if needed and set the revisiondate of the content to $next.
*
* FIXME: This method does not check if there are any revisors left. Even
* if all revisors have been removed, it will still start the revision workflow!
* NOTE: This seems not the case anymore. The status of each revision is
* checked. Only if at least one status is S_LOG_SLEEPING the revision will be
* started. This wouldn't be the case if all revisors had been removed.
*
* @param object $user user requesting the possible automatic change
* @param string $next next date for review
@ -3321,7 +3324,10 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
else $this->setStatus($initialstatus,$msg,$user);
} elseif($st["status"]==S_IN_REVISION) {
if($needsCorrection) $this->setStatus(S_NEEDS_CORRECTION,$msg,$user);
else $this->setStatus(S_RELEASED,$msg,$user);
else {
$this->finishRevision($user, S_RELEASED, 'Finished revision workflow', $msg);
// $this->setStatus(S_RELEASED,$msg,$user);
}
} elseif($st["status"]==S_EXPIRED) {
$this->setStatus(S_RELEASED,$msg,$user);
}
@ -3670,21 +3676,31 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
$ddate = $db->qstr($date);
else
$ddate = $db->getCurrentDatetime();
$db->startTransaction();
$queryStr = "INSERT INTO `tblDocumentStatusLog` (`statusID`, `status`, `comment`, `date`, `userID`) ".
"VALUES ('". $this->_status["statusID"] ."', '". (int) $status ."', ".$db->qstr($comment).", ".$ddate.", '". $updateUser->getID() ."')";
$res = $db->getResult($queryStr);
if (is_bool($res) && !$res)
if (is_bool($res) && !$res) {
$db->rollbackTransaction();
return false;
}
/* Check if 'onSetStatus' callback is set */
if(isset($this->_dms->callbacks['onSetStatus'])) {
foreach($this->_dms->callbacks['onSetStatus'] as $callback) {
$ret = call_user_func($callback[0], $callback[1], $this, $this->_status["status"], $status);
if(is_bool($ret))
$ret = call_user_func($callback[0], $callback[1], $this, $updateUser, $this->_status["status"], $status);
if(is_bool($ret)) {
unset($this->_status);
if($ret)
$db->commitTransaction();
else
$db->rollbackTransaction();
return $ret;
}
}
}
$db->commitTransaction();
unset($this->_status);
return true;
} /* }}} */
@ -5495,7 +5511,10 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
if ($indstatus["status"] != S_LOG_WAITING && $indstatus["status"] != S_LOG_SLEEPING) {
// User has already submitted a revision or has already been deleted;
// return an error.
return -3;
if($indstatus["status"] == S_LOG_USER_REMOVED)
return -3;
else
return -4;
}
$queryStr = "INSERT INTO `tblDocumentRevisionLog` (`revisionID`, `status`, `comment`, `date`, `userID`) ".

View File

@ -12,11 +12,11 @@
<email>uwe@steinmann.cx</email>
<active>yes</active>
</lead>
<date>2020-04-14</date>
<date>2020-05-14</date>
<time>09:43:12</time>
<version>
<release>6.0.9</release>
<api>6.0.9</api>
<release>6.0.10</release>
<api>6.0.10</api>
</version>
<stability>
<release>stable</release>
@ -24,7 +24,7 @@
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
- no changes, just keep same version as seeddms application
SeedDMS_Core_DocumentContent::delRevisor() returns -4 if user has already made a revision
</notes>
<contents>
<dir baseinstalldir="SeedDMS" name="/">
@ -1748,7 +1748,7 @@ add method SeedDMS_Core_DatabaseAccess::setLogFp()
</notes>
</release>
<release>
<date>2020-04-02</date>
<date>2020-04-14</date>
<time>09:43:12</time>
<version>
<release>5.1.16</release>
@ -1797,6 +1797,22 @@ log entry first
- add new method SeedDMS_Core_DMS::getDocumentsExpired()
</notes>
</release>
<release>
<date>2020-05-14</date>
<time>09:43:12</time>
<version>
<release>5.1.17</release>
<api>5.1.17</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
- add new callback onSetStatus
</notes>
</release>
<release>
<date>2017-05-28</date>
<time>06:34:50</time>
@ -1949,6 +1965,22 @@ remove a user from all its process can also be used to set a new user
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
- no changes, just keep same version as seeddms application
</notes>
</release>
<release>
<date>2020-05-14</date>
<time>09:43:12</time>
<version>
<release>6.0.9</release>
<api>6.0.9</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
- no changes, just keep same version as seeddms application
</notes>
</release>

View File

@ -186,7 +186,7 @@ class SeedDMS_ExtExample_Task extends SeedDMS_SchedulerTaskBase {
* @param $dms dms
* @return boolean true if task was executed succesfully, otherwise false
*/
public function execute($task, $dms) {
public function execute($task, $dms, $user) {
$taskparams = $task->getParameter();
return true;
}

View File

@ -583,7 +583,7 @@ class SeedDMS_Extension_Mgr {
public function updateExtensionList($version='', $force=false) { /* {{{ */
if($this->reposurl) {
if(!file_exists($this->cachedir."/".self::repos_list_file) || $force) {
if($file = @file_get_contents($this->reposurl.($version ? '?seeddms_version='.$version : ''), false, $this->getStreamContext())) {
if(false !== ($file = @file_get_contents($this->reposurl.($version ? '?seeddms_version='.$version : ''), false, $this->getStreamContext()))) {
if(is_array($http_response_header)) {
$parts=explode(' ',$http_response_header[0]);
if(count($parts)>1) //HTTP/1.0 <code> <text>
@ -592,6 +592,10 @@ class SeedDMS_Extension_Mgr {
return false;
}
}
if(!$file) {
$this->errmsgs[] = 'Extension list is empty';
return false;
}
file_put_contents($this->cachedir."/".self::repos_list_file, $file);
} else {
return false;

View File

@ -232,14 +232,14 @@ class SeedDMS_SchedulerTask {
if (!$res)
return false;
$this->_disabled = $newDisable;
$this->_disabled = $newDisabled;
return true;
} /* }}} */
public function setParameter($newParams) { /* {{{ */
$db = $this->db;
$queryStr = "UPDATE `tblSchedulerTask` SET `parameter` =".json_encode($newParams)." WHERE `id` = " . $this->_id;
$queryStr = "UPDATE `tblSchedulerTask` SET `params` =".$db->qstr(json_encode($newParams))." WHERE `id` = " . $this->_id;
$res = $db->getResult($queryStr);
if (!$res)
return false;
@ -248,7 +248,9 @@ class SeedDMS_SchedulerTask {
return true;
} /* }}} */
public function getParameter() {
public function getParameter($name = '') {
if($name)
return isset($this->_params[$name]) ? $this->_params[$name] : null;
return $this->_params;
}
@ -275,4 +277,21 @@ class SeedDMS_SchedulerTask {
$this->_lastrun = $lastrun;
$this->_nextrun = $nextrun;
}
/**
* Delete task
*
* @return boolean true on success or false in case of an error
*/
function remove() { /* {{{ */
$db = $this->db;
$queryStr = "DELETE FROM `tblSchedulerTask` WHERE `id` = " . $this->_id;
if (!$db->getResult($queryStr)) {
return false;
}
return true;
} /* }}} */
}

View File

@ -29,7 +29,7 @@
* @package SeedDMS
*/
class SeedDMS_SchedulerTaskBase {
public function execute($task, $dms) {
public function execute($task, $dms, $user) {
return true;
}
}

View File

@ -294,7 +294,7 @@ class SeedDMS_Session {
function addToClipboard($object) { /* {{{ */
/* id is only set if load() was called before */
if($this->id) {
$dms = $object->_dms;
$dms = $object->getDMS();
if($object->isType('document')) {
if(!in_array($object->getID(), $this->data['clipboard']['docs']))
array_push($this->data['clipboard']['docs'], $object->getID());
@ -317,7 +317,7 @@ class SeedDMS_Session {
function removeFromClipboard($object) { /* {{{ */
/* id is only set if load() was called before */
if($this->id) {
$dms = $object->_dms;
$dms = $object->getDMS();
if($object->isType('document')) {
$key = array_search($object->getID(), $this->data['clipboard']['docs']);
if($key !== false)

View File

@ -137,8 +137,8 @@ class UI extends UI_Default {
$view->setParam('enablesessionlist', $settings->_enableSessionList);
$view->setParam('workflowmode', $settings->_workflowMode);
$view->setParam('checkoutdir', $settings->_checkOutDir);
$view->setParam('partitionsize', (int) $settings->_partitionSize);
$view->setParam('maxuploadsize', (int) $settings->_maxUploadSize);
$view->setParam('partitionsize', SeedDMS_Core_File::parse_filesize( $settings->_partitionSize));
$view->setParam('maxuploadsize', SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize));
$view->setParam('showmissingtranslations', $settings->_showMissingTranslations);
$view->setParam('defaultsearchmethod', $settings->_defaultSearchMethod);
$view->setParam('cachedir', $settings->_cacheDir);

View File

@ -69,6 +69,16 @@ class SeedDMS_View_Common {
return null;
}
/**
* Check if the view has a parameter with the given name
*
* @param string $name name of parameter
* @return boolean true if parameter exists otherwise false
*/
function hasParam($name) {
return isset($this->params[$name]) ? true : false;
}
public function unsetParam($name) {
if(isset($this->params[$name]))
unset($this->params[$name]);

View File

@ -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 (2765), dgrutsch (22)
// Translators: Admin (2767), dgrutsch (22)
$text = array(
'2_factor_auth' => '2-Faktor Authentifizierung',

View File

@ -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 (311)
// Translators: Admin (322)
$text = array(
'2_factor_auth' => '',
@ -347,7 +347,7 @@ $text = array(
'document_is_checked_out' => '',
'document_is_not_locked' => '',
'document_link_by' => '',
'document_link_public' => '',
'document_link_public' => 'Δημόσιο',
'document_moved_email' => 'Το έγγραφα μετακινήθηκε',
'document_moved_email_body' => '',
'document_moved_email_subject' => '',
@ -364,7 +364,7 @@ $text = array(
'document_updated_email' => '',
'document_updated_email_body' => '',
'document_updated_email_subject' => '',
'does_not_expire' => '',
'does_not_expire' => 'Δεν λήγει',
'does_not_inherit_access_msg' => '',
'download' => 'Λήψη',
'download_extension' => '',
@ -467,7 +467,7 @@ $text = array(
'expired_at_date' => '',
'expired_documents' => '',
'expires' => 'Λήγει',
'expire_by_date' => '',
'expire_by_date' => 'Λήγει στην ημερομηνία',
'expire_in_1d' => '',
'expire_in_1h' => '',
'expire_in_1m' => 'Λήγει σε 1 μήνα',
@ -660,7 +660,7 @@ $text = array(
'list_contains_no_access_docs' => '',
'list_hooks' => '',
'list_tasks' => '',
'local_file' => '',
'local_file' => 'Τοπικό αρχείο',
'locked_by' => '',
'lock_document' => 'Κλείδωμα',
'lock_message' => '',
@ -689,7 +689,7 @@ $text = array(
'mandatory_reviewers' => '',
'mandatory_reviewer_no_access' => '',
'march' => 'Μάρτιος',
'max_upload_size' => '',
'max_upload_size' => 'Μέγιστο μέγεθος μεταφόρτωσης',
'may' => 'Μάϊος',
'menu_dropfolder' => '',
'menu_upload_from_dropfolder' => '',
@ -715,7 +715,7 @@ $text = array(
'my_documents' => 'Τα έγγραφα μου',
'my_transmittals' => '',
'name' => 'Όνομα',
'nb_NO' => '',
'nb_NO' => 'Νορβηγικά',
'needs_correction' => '',
'needs_workflow_action' => '',
'network_drive' => '',
@ -833,7 +833,7 @@ URL: [url]',
'personal_default_keywords' => '',
'pl_PL' => 'Πολωνικά',
'possible_substitutes' => '',
'preset_expires' => '',
'preset_expires' => 'Λήξη προκαθορισμένης τιμής',
'preview' => 'προεπισκόπηση',
'preview_converters' => '',
'preview_images' => '',
@ -1014,7 +1014,7 @@ URL: [url]',
'select_attrdefgrp_show' => '',
'select_attribute_value' => '',
'select_category' => 'Επιλογή κατηγορίας',
'select_group' => '',
'select_group' => 'Επιλογή ομάδας',
'select_groups' => '',
'select_grp_approvers' => '',
'select_grp_ind_approvers' => '',
@ -1420,7 +1420,7 @@ URL: [url]',
'settings_workflowMode_valtraditional_only_approval' => '',
'settings_zendframework' => '',
'set_expiry' => '',
'set_owner' => '',
'set_owner' => 'Θέσε Ιδιοκτήτη',
'set_owner_error' => '',
'set_password' => '',
'set_workflow' => '',
@ -1672,9 +1672,9 @@ URL: [url]',
'user_login' => '',
'user_management' => 'Διαχείριση χρηστών',
'user_name' => 'Πλήρες Όνομα',
'use_comment_of_document' => '',
'use_comment_of_document' => 'Χρήση σχολίου εγγράφου',
'use_default_categories' => '',
'use_default_keywords' => '',
'use_default_keywords' => 'Χρήση προκαθορισμένων λέξεων κλειδιών',
'valid_till' => '',
'version' => 'Έκδοση',
'versioning_file_creation' => '',

View File

@ -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 (1871), archonwang (3), dgrutsch (9), netixw (14)
// Translators: Admin (1873), archonwang (3), dgrutsch (9), netixw (14)
$text = array(
'2_factor_auth' => '2-factor authentication',

View File

@ -19,7 +19,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// Translators: acabello (20), Admin (1151), angel (123), francisco (2), jaimem (14)
// Translators: acabello (20), Admin (1171), angel (123), francisco (2), jaimem (14)
$text = array(
'2_factor_auth' => '',
@ -68,11 +68,11 @@ URL: [url]',
'add_receipt' => '',
'add_review' => 'Enviar revisión',
'add_revision' => '',
'add_role' => '',
'add_role' => 'Agregar Usuario',
'add_subfolder' => 'Añadir subcarpeta',
'add_task' => '',
'add_to_clipboard' => 'Añadir al portapapeles',
'add_to_transmittal' => '',
'add_to_transmittal' => 'Añadir a transmisión',
'add_transmittal' => '',
'add_user' => 'Añadir nuevo usuario',
'add_user_to_group' => 'Añadir usuario a grupo',
@ -136,7 +136,7 @@ URL: [url]',
'archive_creation_warning' => 'Con esta operación usted puede crear un archivo que contenga los ficheros de las carpetas del DMS completo. Después de crearlo el archivo se guardará en la carpeta de datos de su servidor.<br>CUIDADO: un fichero creado como legible por humanos no podrá usarse como copia de seguridad del servidor.',
'ar_EG' => 'Arabe',
'assign_approvers' => 'Asignar aprobadores',
'assign_recipients' => '',
'assign_recipients' => 'Asignar Receptores',
'assign_reviewers' => 'Asignar revisores',
'assign_user_property_to' => 'Asignar propiedades de usuario a',
'assumed_released' => 'Supuestamente publicado',
@ -231,8 +231,8 @@ URL: [url]',
'change_assignments' => 'cambiar asignaciones',
'change_password' => 'cambiar contraseña',
'change_password_message' => 'Su contraseña se ha modificado.',
'change_recipients' => '',
'change_revisors' => '',
'change_recipients' => 'Definir destinatarios',
'change_revisors' => 'Definir revisores',
'change_status' => 'cambiar estado',
'charts' => 'Gráficos',
'chart_docsaccumulated_title' => 'Cantidad de documentos',
@ -254,7 +254,7 @@ URL: [url]',
'choose_attrdefgroup' => '',
'choose_category' => 'Seleccione categoría',
'choose_group' => 'Seleccione grupo',
'choose_role' => '',
'choose_role' => 'Seleccione Usuario',
'choose_target_category' => 'Seleccione categoría',
'choose_target_document' => 'Seleccione documento',
'choose_target_file' => 'Seleccione fichero destino',
@ -442,7 +442,7 @@ URL: [url]',
'do_object_setfilesize' => 'Asignar tamaño de fichero',
'do_object_setfiletype' => '',
'do_object_unlink' => 'Borrar versión del documento',
'draft' => '',
'draft' => 'Borrador',
'draft_pending_approval' => 'Borador - pendiente de aprobación',
'draft_pending_review' => 'Borrador - pendiente de revisión',
'drag_icon_here' => 'Arrastre carpeta o documento aquí!',
@ -656,7 +656,7 @@ URL: [url]',
'index_pending' => '',
'index_waiting' => 'Esperando',
'individuals' => 'Individuales',
'individuals_in_groups' => '',
'individuals_in_groups' => 'Miembros del grupo',
'info_recipients_tab_not_released' => '',
'inherited' => 'heredado',
'inherits_access_copy_msg' => 'Copiar lista de acceso heredado',
@ -686,7 +686,7 @@ URL: [url]',
'invalid_user_id' => 'ID de usuario no válido',
'invalid_version' => 'Versión de documento no válida',
'in_folder' => 'En el directorio',
'in_revision' => '',
'in_revision' => 'En revisión',
'in_workflow' => 'En flujo de trabajo',
'is_disabled' => 'Deshabilitar cuenta',
'is_hidden' => 'Ocultar de la lista de usuarios',
@ -794,7 +794,7 @@ URL: [url]',
'my_transmittals' => 'Mi transmision',
'name' => 'Nombre',
'nb_NO' => 'Noruego (Bokmål)',
'needs_correction' => '',
'needs_correction' => 'Necesita corrección',
'needs_workflow_action' => 'Este documento requiere su atención. Por favor chequee la pestaña de flujo de trabajo.',
'network_drive' => '',
'never' => 'nunca',
@ -855,7 +855,7 @@ URL: [url]',
'no_action' => 'No es necesaria ninguna acción',
'no_approval_needed' => 'No hay aprobaciones pendientes.',
'no_attached_files' => 'No hay ficheros adjuntos',
'no_backup_dir' => '',
'no_backup_dir' => 'El directorio de backup no está definido',
'no_current_version' => 'Está utilizando una versión desactualizada de este producto. La última versión disponible es [latestversion].',
'no_default_keywords' => 'No hay palabras clave disponibles',
'no_docs_checked_out' => '',
@ -971,7 +971,7 @@ Si continua teniendo problemas de acceso, por favor contacte con el administrado
'receipt_summary' => 'Resumen de recepción',
'receipt_update_failed' => '',
'recent_uploads' => 'Subidas recientes',
'reception' => '',
'reception' => 'Recepción',
'reception_acknowleged' => '',
'reception_noaction' => '',
'reception_rejected' => '',
@ -1052,7 +1052,7 @@ URL: [url]',
'review_submit_email_subject' => '[sitename]: [name] - Revisión enviada',
'review_summary' => 'Resumen de revisión',
'review_update_failed' => 'Error actualizando el estado de la revisión. La actualización ha fallado.',
'revise_document' => '',
'revise_document' => 'Revisar documento',
'revise_document_on' => '',
'revisions_accepted' => '',
'revisions_accepted_latest' => '',
@ -1065,14 +1065,14 @@ URL: [url]',
'revisions_without_group' => '',
'revisions_without_user' => '',
'revision_date' => '',
'revision_log' => '',
'revision_log' => 'Histórico de revisiones',
'revision_request_email_body' => '',
'revision_request_email_subject' => '',
'revision_status' => '',
'revision_submit_email_body' => '',
'revision_submit_email_subject' => '',
'revision_summary' => 'Resumen de revisión',
'revisors' => '',
'revisors' => 'Revisores',
'revisor_already_assigned' => '',
'revisor_already_removed' => '',
'rewind_workflow' => 'Retroceso del flujo de trabajo',
@ -1160,16 +1160,16 @@ URL: [url]',
'select_grp_approvers' => 'Haga Click para seleccionar grupo de aprobadores',
'select_grp_ind_approvers' => '',
'select_grp_ind_notification' => '',
'select_grp_ind_recipients' => '',
'select_grp_ind_reviewers' => '',
'select_grp_ind_recipients' => 'Seleccione grupo',
'select_grp_ind_reviewers' => 'Dar click para seleccionar el grupo',
'select_grp_ind_revisors' => '',
'select_grp_notification' => 'Clic para seleccionar la notificación grupal',
'select_grp_recipients' => '',
'select_grp_recipients' => 'Dar click para selecionar el grupo',
'select_grp_reviewers' => 'Haga Click para seleccionar grupo de revisores',
'select_grp_revisors' => '',
'select_ind_approvers' => 'Haga Click para seleccionar aprobador individual',
'select_ind_notification' => 'Clic para seleccionar la notificación individual',
'select_ind_recipients' => '',
'select_ind_recipients' => 'Dar click para asignar los receptores',
'select_ind_reviewers' => 'Haga Click para seleccionar revisor individual',
'select_ind_revisors' => '',
'select_one' => 'Seleccionar uno',
@ -1660,7 +1660,7 @@ URL: [url]',
'status_not_approved' => 'Sin aprobar',
'status_not_receipted' => '',
'status_not_reviewed' => 'Sin revisar',
'status_not_revised' => '',
'status_not_revised' => 'No revisado',
'status_receipted' => '',
'status_receipt_rejected' => '',
'status_recipient_removed' => '',

View File

@ -19,7 +19,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// Translators: Admin (1102), jeromerobert (50), lonnnew (9), Oudiceval (922)
// Translators: Admin (1102), jeromerobert (50), lonnnew (9), Oudiceval (929)
$text = array(
'2_factor_auth' => 'Authentification forte',
@ -1666,7 +1666,7 @@ Nom : [username]
'splash_error_add_to_transmittal' => 'Erreur lors de lajout du document à la transmission',
'splash_error_rm_download_link' => 'Erreur lors de la suppression du lien de téléchargement',
'splash_error_send_download_link' => 'Erreur lors de lenvoi du lien de téléchargement',
'splash_extension_getlist' => 'Liste des extensions mises à jour depuis le dépôt',
'splash_extension_getlist' => 'Liste des extensions du dépôt actualisée',
'splash_extension_import' => 'Extension installée',
'splash_extension_refresh' => 'Liste des extensions actualisée',
'splash_extension_upload' => 'Extension installée',
@ -1743,8 +1743,8 @@ Nom : [username]
'submit_review' => 'Soumettre la vérification',
'submit_revision' => 'Soumettre la révision',
'submit_userinfo' => 'Soumettre info',
'submit_webauthn_login' => '',
'submit_webauthn_register' => '',
'submit_webauthn_login' => 'Identification',
'submit_webauthn_register' => 'Inscription',
'subsribe_timelinefeed' => 'Sabonner au flux RSS',
'substitute_to_user' => 'Basculer sur \'[username]\'',
'substitute_user' => 'Utilisateur de substitution',
@ -1904,10 +1904,10 @@ URL: [url]',
'view' => 'Aperçu',
'view_online' => 'Aperçu en ligne',
'warning' => 'Avertissement',
'webauthn_auth' => '',
'webauthn_crossplatform_info' => '',
'webauthn_info' => '',
'webauth_crossplatform' => '',
'webauthn_auth' => 'Authentification WebAuthn',
'webauthn_crossplatform_info' => 'Choisissez « Oui » lorsque vous avez un périphérique amovible, comme une clé Yubico, que vous souhaitez utiliser pour vous connecter sur différents ordinateurs ; choisissez « Non » lorsque votre appareil est connecté à l\'ordinateur. Le choix affecte le ou les appareils proposés par le navigateur et / ou le système de sécurité informatique.',
'webauthn_info' => 'WebAuthn est une authentification sans mot de passe utilisant la cryptographie à clé publique. Une paire de clés privée-publique (connue sous le nom de certificat) est créée pour un site Web. La clé privée est stockée en toute sécurité sur lappareil de lutilisateur ; une clé publique et un identifiant généré de manière aléatoire sont envoyés au serveur pour stockage. Le serveur peut ensuite utiliser cette clé publique pour prouver lidentité de lutilisateur. La clé privée est généralement stockée sur un jeton matériel. Le jeton doit être enregistré avant de pouvoir être utilisé pour lauthentification.',
'webauth_crossplatform' => 'Multiplateforme',
'wednesday' => 'Mercredi',
'wednesday_abbr' => 'Mer.',
'weeks' => 'semaines',

View File

@ -23,11 +23,11 @@
$text = array(
'2_factor_auth' => 'Kétfaktoros azonosítás',
'2_factor_auth_info' => '',
'2_factor_auth_info' => 'A rendszernek két faktoros hitelesítése van. Szükséged lesz a Google Authenticator-ra a mobil telefonodon. Lejebb látható két QR kód. A jobb oldali a saját jelszavát, a baloldali egy új titkos jelszót tartalmaz. Ha új jelszót szeretne beállítani, szkennelje be újra a Goolge Authenticator-al.',
'2_fact_auth_secret' => 'Titkos',
'accept' => 'Elfogad',
'access_control' => '',
'access_control_is_off' => '',
'access_control' => 'Hozzáférés vezérlés',
'access_control_is_off' => 'A speciális vezérlés hozzáférése ki van kapcsolva',
'access_denied' => 'Hozzáférés megtagadva.',
'access_inheritance' => 'Hozzáférés öröklés',
'access_mode' => 'Hozzáférési mód',
@ -54,7 +54,7 @@ URL: [url]',
'action_revise' => 'Felülvizsgálat',
'add' => 'Hozzáad',
'add_approval' => 'Jóváhagyás küldése',
'add_attrdefgroup' => '',
'add_attrdefgroup' => 'Új tulajdonságcsoport hozzáadása',
'add_document' => 'Dokumentum hozzáadása',
'add_document_link' => 'Hivatkozás hozzáadása',
'add_document_notify' => 'Hozzárendelés értesítés',
@ -67,7 +67,7 @@ URL: [url]',
'add_multiple_files' => 'Több állomány hozzáadása (az állomány nevét használja dokumentum névként)',
'add_receipt' => '',
'add_review' => 'Felülvizsgálat küldése',
'add_revision' => '',
'add_revision' => 'Felülvizsgálat hozzáadása',
'add_role' => 'szerepkör hozzáadása',
'add_subfolder' => 'Alkönyvtár hozzáadása',
'add_task' => 'Feladat hozzáadása',
@ -103,7 +103,7 @@ URL: [url]',
'approval_deletion_email' => 'Jóváhagyási kérelem törölve',
'approval_deletion_email_body' => '',
'approval_deletion_email_subject' => '',
'approval_file' => '',
'approval_file' => 'Fájl',
'approval_group' => 'Jóváhagyó csoport',
'approval_log' => 'Jóváhagyási napló',
'approval_request_email' => 'Jóváhagyási kérelem',
@ -115,7 +115,7 @@ Felhasználó: [username]
URL: [url]',
'approval_request_email_subject' => '[sitename]: [name] - Jóváhagyási kérelem',
'approval_status' => 'Jóváhagyási állapot',
'approval_submit_email' => '',
'approval_submit_email' => 'Fordítás hiányzik',
'approval_submit_email_body' => 'Dokumentum jóváhagyása
Documentum: [name]
Verzió: [version]
@ -143,10 +143,10 @@ URL: [url]',
'attrdefgroup_management' => '',
'attrdefgrp_show_detail' => '',
'attrdefgrp_show_list' => '',
'attrdefgrp_show_search' => '',
'attrdefgrp_show_search' => 'Keresés',
'attrdefgrp_show_searchlist' => '',
'attrdef_exists' => 'Jellemző meghatározás már létezik',
'attrdef_info' => '',
'attrdef_info' => 'Információ',
'attrdef_in_use' => 'Jellemző meghatározás még használatban van',
'attrdef_management' => 'Jellemző meghatározás kezelése',
'attrdef_maxvalues' => 'Legnagyobb érték',
@ -162,11 +162,11 @@ URL: [url]',
'attrdef_type' => 'Típus',
'attrdef_type_boolean' => 'Logikai',
'attrdef_type_date' => 'Dátum',
'attrdef_type_email' => '',
'attrdef_type_email' => 'Email',
'attrdef_type_float' => 'Szám tizedesjeggyel',
'attrdef_type_int' => 'Egész szám',
'attrdef_type_string' => 'Szöveg',
'attrdef_type_url' => '',
'attrdef_type_url' => 'URL',
'attrdef_valueset' => 'Értékek beállítása',
'attributes' => 'Jellemzők',
'attribute_changed_email_body' => 'Jellemző módosult
@ -223,7 +223,7 @@ URL: [url]',
'category' => 'Kategória',
'category_exists' => 'Kategória már létezik',
'category_filter' => 'Kizárólag kategóriák',
'category_info' => '',
'category_info' => 'Információk',
'category_in_use' => 'Dokumentumok használják ezt a kategóriát',
'category_noname' => 'Nem adott meg kategória nevet.',
'ca_ES' => 'Katalán',
@ -299,8 +299,8 @@ URL: [url]',
'confirm_update_transmittalitem' => '',
'content' => 'Tartalom',
'continue' => 'Folytatás',
'converter_new_cmd' => '',
'converter_new_mimetype' => '',
'converter_new_cmd' => 'Új parancs',
'converter_new_mimetype' => 'Új mime típus',
'copied_to_checkout_as' => '',
'create_download_link' => '',
'create_fulltext_index' => 'Teljes szöveg index létrehozása',
@ -366,7 +366,7 @@ Szülő mappa: [folder_path]
Felhasználó: [username]
URL: [url]',
'document_comment_changed_email_subject' => '[sitename]: [name] - Megjegyzés módosult',
'document_count' => '',
'document_count' => 'Dokumentumok száma',
'document_deleted' => 'Dokumentum törölve',
'document_deleted_email' => 'Dokumentum törölve',
'document_deleted_email_body' => 'Dokumentum törölve
@ -457,7 +457,7 @@ URL: [url]',
'dump_list' => 'Meglévő adatbázis metések',
'dump_remove' => 'Adatbázis mentés eltávolítása',
'duplicates' => '',
'duplicate_content' => '',
'duplicate_content' => 'Duplikált tartalom',
'edit' => 'Szerkesztés',
'edit_attributes' => 'Jellemzők szerkesztése',
'edit_comment' => 'Megjegyzés szerkesztése',
@ -539,7 +539,7 @@ Felhasználó: [username]
URL: [url]',
'expiry_changed_email_subject' => '[sitename]: [name] - Lejárati dátum módosítva',
'export' => 'exportálás',
'extension_archive' => '',
'extension_archive' => 'Bővítmények',
'extension_changelog' => 'Változásnapló',
'extension_loading' => 'Kiterjesztések betöltése ...',
'extension_manager' => 'Bővítmények kezelése',
@ -630,7 +630,7 @@ URL: [url]',
'guest_login_disabled' => 'Vendég bejelentkezés letiltva.',
'hash' => 'hash',
'help' => 'Segítség',
'home_folder' => '',
'home_folder' => 'Saját mappa',
'hook_name' => '',
'hourly' => 'Óra',
'hours' => 'óra',
@ -641,14 +641,14 @@ URL: [url]',
'identical_version' => 'Az új verzió megegyezik az eredetivel.',
'import' => 'Import',
'importfs' => '',
'import_extension' => '',
'import_extension' => 'Kiterjesztés import',
'import_fs' => 'Importálás fájlrendszerből',
'import_fs_warning' => '',
'include_content' => '',
'include_documents' => 'Tartalmazó dokumentumok',
'include_subdirectories' => 'Tartalmazó alkönyvtárak',
'indexing_tasks_in_queue' => 'Indexelés folyamatban',
'index_converters' => '',
'index_converters' => 'Index konvertáló',
'index_done' => '',
'index_error' => '',
'index_folder' => 'Mappa indexelése',
@ -784,7 +784,7 @@ URL: [url]',
'monday_abbr' => 'Hé',
'monthly' => 'Havi',
'month_view' => 'Havi nézet',
'more_objects_loading' => '',
'more_objects_loading' => 'További sorok betöltése...',
'move' => 'Áthelyez',
'move_clipboard' => 'Vágólapra helyez',
'move_document' => 'Dokumentum áthelyezése',
@ -929,10 +929,10 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a
'password_strength' => 'Jelszó erősség',
'password_strength_insuffient' => 'Jelszó erőssége elégtelen',
'password_wrong' => 'Hibás jelszó',
'pdf_converters' => '',
'pending_approvals' => '',
'pdf_converters' => 'PDF konvertáló',
'pending_approvals' => 'Függőben lévő jóváhagyások',
'pending_receipt' => '',
'pending_reviews' => '',
'pending_reviews' => 'Függőben lévő feladatok',
'pending_revision' => '',
'pending_workflows' => '',
'personal_default_keywords' => 'Személyes kulcsszó lista',
@ -940,7 +940,7 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a
'possible_substitutes' => '',
'preset_expires' => 'Érvényesség beállítása',
'preview' => 'Előnézet',
'preview_converters' => '',
'preview_converters' => 'A dokumentum átalakításának előnézete',
'preview_images' => 'előnézeti képek',
'preview_markdown' => '',
'preview_pdf' => '',
@ -948,7 +948,7 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a
'previous_state' => 'Előző állapot',
'previous_versions' => 'Előző változatok',
'process' => 'Folyamat',
'process_without_user_group' => '',
'process_without_user_group' => 'Felhasználó / csoport nélküli folyamatok',
'pt_BR' => 'Portugál (BR)',
'quota' => 'Kvóta',
'quota_exceeded' => 'Túllépte a lemezterület korlátot [bytes].',
@ -1171,7 +1171,7 @@ URL: [url]',
'select_ind_recipients' => '',
'select_ind_reviewers' => 'Kattintson az önálló felülvizsgáló kijelöléséhez',
'select_ind_revisors' => '',
'select_one' => 'Vßlasszon egyet',
'select_one' => 'Válasszon egyet',
'select_user' => 'Felhasználó kiválasztása',
'select_users' => 'Kattintson a felhasználó kiválasztásához',
'select_value' => 'Érték kiválasztása',
@ -1180,13 +1180,13 @@ URL: [url]',
'send_login_data' => '',
'send_login_data_body' => '',
'send_login_data_subject' => '',
'send_test_mail' => 'teszt email küldése',
'send_test_mail' => 'Teszt e-mail küldése',
'september' => 'September',
'sequence' => 'Sorrend',
'seq_after' => '"[prevname]" utßn',
'seq_end' => 'V‰g‰re',
'seq_keep' => 'Pozci megtartßsa',
'seq_start' => 'Elej‰re',
'seq_start' => 'Elejé‰re',
'sessions' => '',
'setDateFromFile' => '',
'setDateFromFolder' => '',
@ -1200,16 +1200,16 @@ URL: [url]',
'settings_advancedAcl_desc' => '',
'settings_allowChangeRevAppInProcess' => '',
'settings_allowChangeRevAppInProcess_desc' => '',
'settings_allowReviewerOnly' => '',
'settings_allowReviewerOnly_desc' => '',
'settings_allowReviewerOnly' => 'Engedélyezi, hogy csak az ellenört állítsa be',
'settings_allowReviewerOnly_desc' => 'Ha ezt engedélyez, akkor lehetővé válik, hogy a hagyományos munkafolyamat módban csak ellenört állítson be, ne jóváhagyót.',
'settings_apache_mod_rewrite' => 'Apache - Rewrite modul',
'settings_Authentication' => 'Hitelesítési beállítások',
'settings_autoLoginUser' => '',
'settings_autoLoginUser_desc' => '',
'settings_autoLoginUser' => 'Automatikus bejelentkezés',
'settings_autoLoginUser_desc' => 'Használja ezt a felhasználói azonosítót a hozzáférésekhez, ha a felhasználó még nincs bejelentkezve. Az ilyen hozzáférés nem hoz létre munkamenetet.',
'settings_available_languages' => 'Elérhető nyelvek',
'settings_available_languages_desc' => '',
'settings_backupDir' => '',
'settings_backupDir_desc' => '',
'settings_backupDir' => 'Mentés könyvtára',
'settings_backupDir_desc' => 'Könyvtár, ahol a biztonsági mentési eszköz mentéseket készít. Ha ez a könyvtár nincs beállítva vagy nem érhető el, akkor a biztonsági másolatot a tartalom könyvtárba menti.',
'settings_cacheDir' => 'Átmeneti állományok könyvtára',
'settings_cacheDir_desc' => 'Ahol az előnézeti képek tárolódnak (legjobb olyan könyvtárat választani, amit a web-kiszolgálón keresztül nem lehet elérni)',
'settings_Calendar' => 'Naptár beállítások',
@ -1218,14 +1218,14 @@ URL: [url]',
'settings_cannot_disable' => 'ENABLE_INSTALL_TOOL állomány nem került törlésre',
'settings_checkOutDir' => '',
'settings_checkOutDir_desc' => '',
'settings_cmdTimeout' => '',
'settings_cmdTimeout_desc' => '',
'settings_cmdTimeout' => 'Külső parancsok időtúllépése',
'settings_cmdTimeout_desc' => 'Ez az időtartam másodpercben határozza meg, hogy mikor fejezik be a külső parancsot (például a teljes szöveg index létrehozásához).',
'settings_contentDir' => 'Tartalom könyvtár',
'settings_contentDir_desc' => 'Feltöltött állományok tárolási helye (olyan könyvtárat érdemes választani, amelyhez nem lehet a webszerveren keresztül hozzáférni)',
'settings_contentOffsetDir' => 'Tartalom eltérési könyvtár',
'settings_contentOffsetDir_desc' => 'Az alapul szolgáló fájlrendszer korlátozásainak kikerülésére új könyvtár struktúra került kialakításra amely úgy lett tervezve, hogy létezzen a tároló könyvtárban (Content Directory). Ehhez szükséges egy alap könyvtár ahonnan indul. Általában meg lehet hagyni az alapértelmezett értéket ami 1048576, de megadható bármilyen szám vagy karaktersorozat amely nem létezik a tartalom könyvtárban (Content Directory)',
'settings_convertToPdf' => '',
'settings_convertToPdf_desc' => '',
'settings_convertToPdf' => 'A dokumentum konvertálása PDF-be előnézet céljából',
'settings_convertToPdf_desc' => 'Ha a dokumentumot nem tudja megjeleníteni a böngészőben, akkor megjelenik egy pdf-formátumra konvertált változat.',
'settings_cookieLifetime' => 'Süti élettartam',
'settings_cookieLifetime_desc' => 'A süti élettartama másodpercben. Ha az értéke 0 akkor a süti a böngésző bezárásakor lesz törölve.',
'settings_coreDir' => 'Alap SeedDMS könyvtár',
@ -1247,12 +1247,12 @@ URL: [url]',
'settings_dbUser' => 'Felhasználónév',
'settings_dbUser_desc' => 'Az adatbázis eléréséhez tartozó felhasználónevet a telepítési eljárás során kell megadni. Ne szerkessze ezt a mezőt, csak ha nagyon szükséges, például, ha az adatbázist át kell helyezni egy másik gépre.',
'settings_dbVersion' => 'Adatbázis séma túl régi',
'settings_defaultAccessDocs' => '',
'settings_defaultAccessDocs_desc' => '',
'settings_defaultDocPosition' => '',
'settings_defaultDocPosition_desc' => '',
'settings_defaultDocPosition_val_end' => '',
'settings_defaultDocPosition_val_start' => '',
'settings_defaultAccessDocs' => 'Alapértelmezett hozzáférés az új dokumentumokhoz',
'settings_defaultAccessDocs_desc' => 'Új dokumentum létrehozásakor ez lesz az alapértelmezett hozzáférési jog.',
'settings_defaultDocPosition' => 'A dokumentum elhelyezése létrehozáskor',
'settings_defaultDocPosition_desc' => 'Ez az alapértelmezett hely egy mappában egy dokumentum létrehozásakor.',
'settings_defaultDocPosition_val_end' => 'vége',
'settings_defaultDocPosition_val_start' => 'eleje',
'settings_defaultSearchMethod' => 'Alapértelmezett keresési módszer',
'settings_defaultSearchMethod_desc' => '',
'settings_defaultSearchMethod_valdatabase' => 'adatbázis',
@ -1265,8 +1265,8 @@ URL: [url]',
'settings_dropFolderDir' => 'Drop mappa könyvtára',
'settings_dropFolderDir_desc' => 'Ez a könyvtár használható az importálandó állományok elhelyezésére a fájlrendszeren a böngészővel történő feltöltés helyett. A könyvtárnak tartalmaznia kell alkönyvtárakat minden felhasználóhoz akinek engedélyezett az állományok ilyen módon történő importálása.',
'settings_Edition' => 'Kiadás beállítások',
'settings_editOnlineFileTypes' => '',
'settings_editOnlineFileTypes_desc' => '',
'settings_editOnlineFileTypes' => 'Online fájltípusok szerkesztése',
'settings_editOnlineFileTypes_desc' => 'Az alábbi végződésekkel vagy mime-típusokkal rendelkező fájlok online szerkeszthetők (CSAK KISBETÜK HASZNÁLHTÓAK!)',
'settings_enable2FactorAuthentication' => '',
'settings_enable2FactorAuthentication_desc' => '',
'settings_enableAcknowledgeWorkflow' => '',
@ -1283,8 +1283,8 @@ URL: [url]',
'settings_enableConverting_desc' => 'Engedélyezi/tiltja az állományok konverzióját',
'settings_enableDebugMode' => '',
'settings_enableDebugMode_desc' => '',
'settings_enableDropFolderList' => '',
'settings_enableDropFolderList_desc' => '',
'settings_enableDropFolderList' => 'Engedélyezzi a fájlok listáját a drop mappa menüben',
'settings_enableDropFolderList_desc' => 'Kapcsolja be a Drop mappa-ban lévő fájlok listáját. A lista megjelenik a főmenüben.',
'settings_enableDropUpload' => 'Gyorsfeltöltés engedélyezése',
'settings_enableDropUpload_desc' => 'Be/Ki kapcsolja a \'Mappa nézet\' oldalon a fogd és vidd feltöltéshez tartozó területetet',
'settings_enableDuplicateDocNames' => 'Azonos dokumentum név engedélyezése',
@ -1299,8 +1299,8 @@ URL: [url]',
'settings_enableFolderTree_desc' => 'Hamis hogy ne jelenjen meg a mappa fastruktúra',
'settings_enableFullSearch' => 'Teljes szöveg keresés engedélyezése',
'settings_enableFullSearch_desc' => 'Engedélyezi a teljes szöveg keresést',
'settings_enableGuestAutoLogin' => '',
'settings_enableGuestAutoLogin_desc' => '',
'settings_enableGuestAutoLogin' => 'Engedélyezi az automatikus belépést a Vendég felhasználónak',
'settings_enableGuestAutoLogin_desc' => 'Ha a vendég bejelentkezés és az automatikus bejelentkezés engedélyezve van, a vendég automatikusan be lesz jelentkezve.',
'settings_enableGuestLogin' => 'Vendég belépésének engedélyezése',
'settings_enableGuestLogin_desc' => 'Ha azt szeretné, hogy bárki be tudjon jelentkezni vendégként, jelölje be ezt a lehetőséget. Megjegyzés: vendég bejelentkezés megbízható környezetben használható',
'settings_enableHelp' => 'Súgó engedélyezése',
@ -1309,10 +1309,10 @@ URL: [url]',
'settings_enableLanguageSelector_desc' => 'Megjelenít egy választást a felhasználói felületen a bejelentkezést követően.',
'settings_enableLargeFileUpload' => 'Nagy méretű állományok feltöltésének engedélyezése',
'settings_enableLargeFileUpload_desc' => 'Ha beállítja az állományok feltöltése elérhető lesz egy jumploadernek hívott java appleten keresztül a böngészőprogram állomány méret korlátja nélkül. Ez engedélyezi több állomány feltöltését egy lépésben.',
'settings_enableMenuTasks' => '',
'settings_enableMenuTasks_desc' => '',
'settings_enableMultiUpload' => '',
'settings_enableMultiUpload_desc' => '',
'settings_enableMenuTasks' => 'Feladatok menüpont engedélyezése',
'settings_enableMenuTasks_desc' => 'Engedélyezi / letiltja a menüelemet, amely a felhasználó összes feladatát tartalmazza. Ez olyan dokumentumokat tartalmaz, amelyeket felül kell vizsgálni, jóvá kell hagyni stb.',
'settings_enableMultiUpload' => 'Több fájl feltöltésének engedélyezése',
'settings_enableMultiUpload_desc' => 'Új dokumentum létrehozásakor több fájl feltölthető. Mindegyik létrehoz egy új dokumentumot.',
'settings_enableNotificationAppRev' => 'A felülvizsgáló/jóváhagyó értesítés engedélyezése',
'settings_enableNotificationAppRev_desc' => 'Ellenőrzi az értesítés küldését a felülvizsgálónak/jóváhagyónak új dokumentum változat hozzáadásakor',
'settings_enableNotificationWorkflow' => 'A felhasználó értesítése a következő munkafolyamatnál',
@ -1341,14 +1341,14 @@ URL: [url]',
'settings_enableSelfReceipt_desc' => '',
'settings_enableSelfRevApp' => 'Engedélyezi a felülvizsgálatot/jóváhagyást a bejelentkezett felhasználó számára',
'settings_enableSelfRevApp_desc' => 'Engedélyezze, a azt szeretné, hogy a bejelentkezett felhasználó listázásra kerüljön felülvizsgálóként/jóváhagyóként és a munkamenet átmeneteknél.',
'settings_enableSessionList' => '',
'settings_enableSessionList_desc' => '',
'settings_enableSessionList' => 'Engedélyezi a Felhasználók menüpont megjelenítését',
'settings_enableSessionList_desc' => 'Bejelentkezett felhasználók megjelenítése a főmenü / felhasználók menüjében.',
'settings_enableThemeSelector' => 'Téma választása',
'settings_enableThemeSelector_desc' => 'Kapcsolja be/ki a témaválasztót a bejelentkező oldalon',
'settings_enableUpdateReceipt' => '',
'settings_enableUpdateReceipt_desc' => '',
'settings_enableUpdateRevApp' => '',
'settings_enableUpdateRevApp_desc' => '',
'settings_enableUpdateRevApp_desc' => 'Engedélyezze ezt, ha a felülvizsgálatot / jóváhagyást megadó felhasználó megváltoztathatja a döntést, amíg a jelenlegi munkafolyamat még nem fejeződött be.',
'settings_enableUserImage' => 'Felhasználói kép engedélyezése',
'settings_enableUserImage_desc' => 'Engedélyezi a felhasználók képeit',
'settings_enableUsersView' => 'Felhasználók nézetének engedélyezése',
@ -1357,10 +1357,10 @@ URL: [url]',
'settings_enableVersionDeletion_desc' => 'Engedélyezi/tiltja a korábbi dokumentum verziók törlését az általános felhasználóknak. Adminisztrátor mindig törölheti a korábbi változatokat.',
'settings_enableVersionModification' => 'Engedélyezi a verziók módosítását',
'settings_enableVersionModification_desc' => 'Engedélyezi/tiltja a dokumentum verziók módosítását az általános felhasználóknak miután a verzió feltöltésre került. Adminisztrátor mindig módosíthatja a verziót feltöltés után.',
'settings_enableWebdavReplaceDoc' => '',
'settings_enableWebdavReplaceDoc_desc' => '',
'settings_enableXsendfile' => '',
'settings_enableXsendfile_desc' => '',
'settings_enableWebdavReplaceDoc' => 'Dokumentum cseréje mentés után',
'settings_enableWebdavReplaceDoc_desc' => 'Ha engedélyezve van, egy dokumentum új verziójának mentése az új verzió létrehozása helyett a régi dokumentumot váltja fel. Ez csak akkor lesz érvényes, ha a felhasználó, a típustípus és a fájlnév megegyezik az utolsó verzióval. Ez hasznos lehet, ha az alkalmazások automatikusan menti a dokumentumot meghatározott időközönként.',
'settings_enableXsendfile' => 'Apache xsendfile module használata',
'settings_enableXsendfile_desc' => 'Ha ez az opció be van állítva, és az xsendfile apache modul telepítve van, akkor a képeket továbbítja.',
'settings_encryptionKey' => 'Titkosító kulcs',
'settings_encryptionKey_desc' => 'Ez a karaktersorozat használható egyedi azonosító létrehozásához amely rejtett mezőként lesz hozzáadva az űrlapokhoz a CSRF támadások megelőzésére.',
'settings_error' => 'Hiba',
@ -1376,16 +1376,16 @@ URL: [url]',
'settings_firstDayOfWeek_desc' => 'A hét első napja',
'settings_footNote' => 'Lábjegyzet',
'settings_footNote_desc' => 'Minden oldal alján megjelenő üzenet',
'settings_fullSearchEngine' => '',
'settings_fullSearchEngine_desc' => '',
'settings_fullSearchEngine_vallucene' => 'Zend Lucene',
'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS',
'settings_fullSearchEngine' => 'Szöveg keresési mód',
'settings_fullSearchEngine_desc' => 'Állítsa be a kereséséhez használt módot.',
'settings_fullSearchEngine_vallucene' => 'Dokumentum tartalom keresés',
'settings_fullSearchEngine_valsqlitefts' => 'Adatbázis keresés',
'settings_guestID' => 'Vendég azonosító',
'settings_guestID_desc' => 'A vendég felhasználó azonosítója ami a vendégként történő bejelentkezéskor lesz használva (általában nem szükséges módosítani)',
'settings_httpRoot' => 'Http gyökér',
'settings_httpRoot_desc' => 'A relatív elérési út az URL-ben a tartomány rész után. Ne tartalmazza a http:// előtagot vag a web szerver nevét. Pl.: ha a teljes URL http://www.example.com/seeddms/, adja meg \'/seeddms/\'. Ha az URL http://www.example.com/, adja meg \'/\'',
'settings_incItemsPerPage' => '',
'settings_incItemsPerPage_desc' => '',
'settings_incItemsPerPage' => 'Az oldal végén betöltött bejegyzések száma',
'settings_incItemsPerPage_desc' => 'Ha a mappák és a dokumentumok száma korlátozott, akkor ez beállítja a kiegészítőként betöltött tételek számát, amikor a nézetmappa oldal aljára görget. Ha ezt 0-ra állítja, akkor nincs megjelenítési korlátozás.',
'settings_initialDocumentStatus' => '',
'settings_initialDocumentStatus_desc' => '',
'settings_initialDocumentStatus_draft' => '',
@ -1416,14 +1416,14 @@ URL: [url]',
'settings_maxDirID_desc' => 'Szülő könyvtárban lévő alkönyvtárak maximális mennyisége, Alapérték: 0.',
'settings_maxExecutionTime' => 'Maximális végrehajtási idő (s)',
'settings_maxExecutionTime_desc' => 'Beállítja a szkript maximális engedélyezett futási idejét másodpercben mielőtt megszakítja az értelmező',
'settings_maxItemsPerPage' => '',
'settings_maxItemsPerPage_desc' => '',
'settings_maxItemsPerPage' => 'Egy oldalon megjeleníthető tételek maximális száma',
'settings_maxItemsPerPage_desc' => 'Korlátozza a nézetlistában megjelenő mappák és dokumentumok számát. További tételeket tölt be, amikor az oldal végére görgeti. 0-ra állítva az összes tétel mindig megjelenik.',
'settings_maxRecursiveCount' => 'Rekurzív dokumentum/mappa számláló legnagyobb értéke',
'settings_maxRecursiveCount_desc' => 'A dokumentumok és mappák maximális mennyisége amelyeken ellenőrizni fogják a hozzáférési jogokat, ha rekurzívan számláló tárgyakat. Ha ezt az értéket túllépik, a dokumentumok számát és mappák a Mappa nézetben is becsülhetők.',
'settings_maxSizeForFullText' => '',
'settings_maxSizeForFullText_desc' => '',
'settings_maxUploadSize' => '',
'settings_maxUploadSize_desc' => '',
'settings_maxSizeForFullText' => 'Maximális fájlméret az azonnali indexeléshez',
'settings_maxSizeForFullText_desc' => 'A beállított méretnél kisebb minden új dokumentum verziót a feltöltés után azonnal teljesen indexeli. Minden más esetben csak a metaadatok kerülnek indexelésre.',
'settings_maxUploadSize' => 'Feltölthető állományok maximális mérete',
'settings_maxUploadSize_desc' => 'Ez a feltöltött fájlok maximális mérete. A dokumentum verziókra és a mellékletekre is vonatkozik.',
'settings_more_settings' => 'További beállítások konfigurálása. Alapértelmezett bejelentkezés: admin/admin',
'settings_noDocumentFormFields' => '',
'settings_noDocumentFormFields_desc' => '',
@ -1433,8 +1433,8 @@ URL: [url]',
'settings_no_content_dir' => 'Tartalom könyvtár',
'settings_onePageMode' => '',
'settings_onePageMode_desc' => '',
'settings_overrideMimeType' => '',
'settings_overrideMimeType_desc' => '',
'settings_overrideMimeType' => 'A Mime típus felülbírálása',
'settings_overrideMimeType_desc' => 'A fájl feltöltése esetén felülbírálja a böngésző által szállított Mime típust. Az új Mime típust maga a SeedDMS határozza meg.',
'settings_partitionSize' => 'Részleges fájlméret',
'settings_partitionSize_desc' => 'A részleges állományok mérete, amelyek a jumploader segítségével lesznek feltöltve. Ne adjon meg magasabb értéket, mint a szerveren beállított legnagyobb feltölthető állomány méret.',
'settings_passwordExpiration' => 'Jelszó lejárat',
@ -1458,14 +1458,14 @@ URL: [url]',
'settings_presetExpirationDate_desc' => 'Minden feltöltött dokumentumhoz ezt a lejárati dátumot rendeli hozzá. A PHP strtotime() függvényének formátuma használható, pl.: +5 weeks.',
'settings_previewWidthDetail' => 'Előnézeti képek szélessége (részletek)',
'settings_previewWidthDetail_desc' => 'A részletek oldalon megjelenő előnézeti képek szélessége',
'settings_previewWidthDropFolderList' => '',
'settings_previewWidthDropFolderList_desc' => '',
'settings_previewWidthDropFolderList' => 'Az előnézeti képek szélessége (drop mappa listában)',
'settings_previewWidthDropFolderList_desc' => 'A listában szereplő előnézeti képek szélessége, amikor a fájlt kiválasztja a drop mappából.',
'settings_previewWidthList' => 'Előnézeti képek szélessége (lista)',
'settings_previewWidthList_desc' => 'A listában megjelenő előnézeti képek szélessége',
'settings_previewWidthMenuList' => '',
'settings_previewWidthMenuList_desc' => '',
'settings_previewWidthMenuList' => 'Az előnézeti képek szélessége (menülista)',
'settings_previewWidthMenuList_desc' => 'Az előnézeti képek szélessége, amelyeket tételekként jelennek meg a Drop mappa menüben.',
'settings_printDisclaimer' => 'Nyilatkozat nyomtatása',
'settings_printDisclaimer_desc' => 'Ha igaz a nyilatkozat üzenet a lang.inc állományok lesznek kiíratva a lap alján',
'settings_printDisclaimer_desc' => 'Ha igaz ez a beállítás, akkor s lang.inc-ben a Disclaimer tartalma kerül megjelenítésre a lap alján',
'settings_proxyUPassword' => '',
'settings_proxyUPassword_desc' => '',
'settings_proxyUrl' => '',
@ -1474,10 +1474,10 @@ URL: [url]',
'settings_proxyUser_desc' => '',
'settings_quota' => 'Felhasználói kvóta',
'settings_quota_desc' => 'A felhasználó által a lemezen használható bájtok legnagyobb száma. Állítsa 0-ra a korlátlan lemezterülethez. Ez az érték felülírható valamennyi felhasználó saját profiljában.',
'settings_removeFromDropFolder' => '',
'settings_removeFromDropFolder_desc' => '',
'settings_repositoryUrl' => '',
'settings_repositoryUrl_desc' => '',
'settings_removeFromDropFolder' => 'A sikeres feltöltés után távolítsa el a fájlt a drop mappából',
'settings_removeFromDropFolder_desc' => 'Engedélyezze ezt, ha a drop mappából vett fájlt a sikeres feltöltés után törölhető.',
'settings_repositoryUrl' => 'Bővítmények URL-je',
'settings_repositoryUrl_desc' => 'A bővítmények tárházának URL-je',
'settings_restricted' => 'Korlátozott hozzáférés',
'settings_restricted_desc' => 'Kizárólag azok a felhasználók jelentkezhetnek be, akik a helyi adatbázisban vannak (függetlenül a sikeres LDAP azonosítástól)',
'settings_rootDir' => 'Gyökérkönyvtár',
@ -1490,8 +1490,8 @@ URL: [url]',
'settings_showFullPreview_desc' => '',
'settings_showMissingTranslations' => 'Jelenítse meg a hiányzó fordításokat',
'settings_showMissingTranslations_desc' => 'Felsorolja az összes hiányzó fordítást a lap alján. A bejelentkezett felhasználó képes lesz arra, hogy javaslatot nyújtson be a hiányzó fordításokra, amelyek egy csv állományba kerülnek mentésre. Ne kapcsolja be ezt a funkciót élse környezetben!',
'settings_showSingleSearchHit' => '',
'settings_showSingleSearchHit_desc' => '',
'settings_showSingleSearchHit' => 'Ugrás egyenesen egyetlen keresési találatra',
'settings_showSingleSearchHit_desc' => 'Ha a keresésnek egy találata van, akkor ugorjon a dokumentum tartalmára.',
'settings_Site' => 'Webhely',
'settings_siteDefaultPage' => 'Webhely kezdőlap',
'settings_siteDefaultPage_desc' => 'Alapértelmezett oldal a bejelentkezést követően. Ha üres, akkor az alapértelmezett out/out.ViewFolder.php',
@ -1504,8 +1504,8 @@ URL: [url]',
'settings_smtpPort_desc' => 'SMTP kiszolgáló port, alapértelmezett 25',
'settings_smtpSendFrom' => 'Feladó',
'settings_smtpSendFrom_desc' => 'A levél feladója',
'settings_smtpSendTestMail' => '',
'settings_smtpSendTestMail_desc' => '',
'settings_smtpSendTestMail' => 'Teszt e-mail küldése',
'settings_smtpSendTestMail_desc' => 'Tesztlevelet küld az aktuális e-mail konfiguráció ellenőrzéséhez.',
'settings_smtpServer' => 'SMTP kiszolgáló gépnév',
'settings_smtpServer_desc' => 'SMTP kiszolgáló gépnév',
'settings_smtpUser' => 'SMTP kiszolgáló felhasználó',
@ -1551,7 +1551,7 @@ URL: [url]',
'settings_versiontolow' => 'túl alacsony verzió',
'settings_viewOnlineFileTypes' => 'Online állománytípus nézet',
'settings_viewOnlineFileTypes_desc' => 'A következő végződéssel rendelkező állományok megtekinthetők online (KIZÁRÓLAG KISBETŰS KARAKTEREKET HASZNÁLJON)',
'settings_webdav' => '',
'settings_webdav' => 'WebDAV',
'settings_workflowMode' => 'Munkafolyamat mód',
'settings_workflowMode_desc' => 'A részletes munkafolyamat engedélyezi saját kiadási munkafolyamat megadását a dokumentum változatokhoz.',
'settings_workflowMode_valadvanced' => 'részletes',
@ -1723,7 +1723,7 @@ URL: [url]',
'timeline_full_add_file' => '',
'timeline_full_add_version' => '',
'timeline_full_scheduled_revision' => '',
'timeline_full_status_change' => '',
'timeline_full_status_change' => '[document]<br />Verzió [version]: [status]',
'timeline_scheduled_revision' => '',
'timeline_selected_item' => '',
'timeline_skip_add_file' => 'melléklet hozzáadva',
@ -1839,7 +1839,7 @@ Szülő mappa: [folder_path]
Felhasználó: [username]
URL: [url]',
'version_deleted_email_subject' => '[sitename]: [name] - Változat törölve',
'version_info' => 'Változat információ',
'version_info' => 'Verzió információ',
'view' => 'Nézet',
'view_online' => 'Online megtekintés',
'warning' => 'Figyelmeztetés',
@ -1878,7 +1878,7 @@ URL: [url]',
'workflow_transition_without_user_group' => '',
'workflow_user_summary' => 'Felhasználó áttekintés',
'wrong_filetype' => '',
'x_more_objects' => '',
'x_more_objects' => '[number] további tétel',
'year_view' => 'Éves nézet',
'yes' => 'Igen',
'zh_CN' => 'Kínai (CN)',

View File

@ -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 (2020), rickr (144), s.pnt (26)
// Translators: Admin (2021), rickr (144), s.pnt (26)
$text = array(
'2_factor_auth' => 'Autorizzazione a due fattori',
@ -803,7 +803,7 @@ URL: [url]',
'my_documents' => 'Documenti personali',
'my_transmittals' => 'Mie trasmissioni',
'name' => 'Nome',
'nb_NO' => 'Norvegese',
'nb_NO' => 'Norvegiese (Bokmål)',
'needs_correction' => 'Necessita correzioni',
'needs_workflow_action' => 'Il documento richiede attenzione. Prego controllare il flusso di lavoro.',
'network_drive' => 'Network drive',

View File

@ -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 (778), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270)
// Translators: Admin (779), gijsbertush (651), pepijn (45), reinoutdijkstra@hotmail.com (270)
$text = array(
'2_factor_auth' => '2-factor-authenticatie',
@ -1100,7 +1100,7 @@ URL: [url]',
'revision_status' => 'Status revisie',
'revision_submit_email_body' => '',
'revision_submit_email_subject' => '',
'revision_summary' => '',
'revision_summary' => 'Revisie samenvatting',
'revisors' => 'Herzieners',
'revisor_already_assigned' => 'Gebruiker is reeds herziener',
'revisor_already_removed' => 'Herziener reeds verwijderd',

View File

@ -19,14 +19,14 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// Translators: Admin (867), netixw (84), romi (93), uGn (112)
// Translators: Admin (871), netixw (84), romi (93), uGn (112)
$text = array(
'2_factor_auth' => '',
'2_factor_auth_info' => '',
'2_fact_auth_secret' => '',
'accept' => 'Akceptuj',
'access_control' => '',
'access_control' => 'Kontrola dostępu',
'access_control_is_off' => '',
'access_denied' => 'Dostęp zabroniony.',
'access_inheritance' => 'Dziedziczenie dostępu',
@ -1089,7 +1089,7 @@ URL: [url]',
'role_admin' => 'Administrator',
'role_guest' => 'Gość',
'role_info' => '',
'role_management' => '',
'role_management' => 'Zarządzanie rolam',
'role_name' => '',
'role_type' => '',
'role_user' => 'Użytkownik',
@ -1112,7 +1112,7 @@ URL: [url]',
'scheduler_class_description' => '',
'scheduler_class_parameter' => '',
'scheduler_class_tasks' => '',
'scheduler_task_mgr' => '',
'scheduler_task_mgr' => 'Zadania',
'search' => 'Szukaj',
'search_fulltext' => 'Przeszukaj całe teksty',
'search_in' => 'Szukaj w',
@ -1810,7 +1810,7 @@ URL: [url]',
'versioning_file_creation_warning' => 'Ta operacja utworzy plik zawierający informacje o wersjach plików z całego wskazanego folderu. Po utworzeniu, każdy plik będzie zapisany w folderze odpowiednim dla danego dokumentu.',
'versioning_info' => 'Informacje o wersjach',
'versiontolow' => 'Za niska wersja',
'version_comment' => '',
'version_comment' => 'Opis wersji',
'version_deleted_email' => 'Wersja usunięta',
'version_deleted_email_body' => 'Wersja została usunięta
Dokument: [name]

View File

@ -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 (1097), balan (87)
// Translators: Admin (1099), balan (87)
$text = array(
'2_factor_auth' => '',
@ -798,7 +798,7 @@ URL: [url]',
'my_documents' => 'Documentele Mele',
'my_transmittals' => 'Trimiterile mele',
'name' => 'Nume',
'nb_NO' => '',
'nb_NO' => 'Norvegiana',
'needs_correction' => '',
'needs_workflow_action' => 'Acest document necesită atenția dumneavoastră. Vă rugăm să verificați tab-ul workflow.',
'network_drive' => '',
@ -1195,7 +1195,7 @@ URL: [url]',
'select_ind_reviewers' => 'Click pentru a selecta un revizuitor individual',
'select_ind_revisors' => 'Faceti click pentru a selecta retrimitori individuali',
'select_one' => 'Selectați unul',
'select_user' => '',
'select_user' => 'Selecteaza utilizator',
'select_users' => 'Click pentru a selecta utilizatori',
'select_value' => 'Valoare selectata',
'select_workflow' => 'Selectați workflow',

View File

@ -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 (1678)
// Translators: Admin (1681)
$text = array(
'2_factor_auth' => 'Двухфакторная аутентификация',
@ -141,7 +141,7 @@ URL: [url]',
'archive_creation_warning' => 'Эта операция создаст архив, содержащий все каталоги. После создания архив будет сохранен в каталоге данных сервера.<br><b>Внимание:</b> архив созданный как понятный человеку, будет непригоден в качестве резервной копии для восстановления!',
'ar_EG' => 'Arabic',
'assign_approvers' => 'Назначить утверждающих',
'assign_recipients' => '',
'assign_recipients' => 'Указать получателей',
'assign_reviewers' => 'Назначить рецензентов',
'assign_user_property_to' => 'Назначить свойства пользователя',
'assumed_released' => 'Утверждён',
@ -799,7 +799,7 @@ URL: [url]',
'my_transmittals' => 'Мои пересылки',
'name' => 'Имя',
'nb_NO' => 'Норвежский',
'needs_correction' => '',
'needs_correction' => 'Нужны правки',
'needs_workflow_action' => 'Этот документ требует вашего внимания. См. вкладку «Процесс».',
'network_drive' => 'Сетевой диск',
'never' => 'никогда',
@ -1189,7 +1189,7 @@ URL: [url]',
'select_grp_approvers' => 'Выберите утверждающую группу',
'select_grp_ind_approvers' => 'Выберите группу',
'select_grp_ind_notification' => 'Выберите группу',
'select_grp_ind_recipients' => '',
'select_grp_ind_recipients' => 'Щелкните для выбора группы',
'select_grp_ind_reviewers' => 'Выберите группу',
'select_grp_ind_revisors' => '',
'select_grp_notification' => 'Выберите группу для уведомления',

View File

@ -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 (1161), MagnusI (649), tmichelfelder (106)
// Translators: Admin (1162), MagnusI (649), tmichelfelder (106)
$text = array(
'2_factor_auth' => '2-faktors autentisering',
@ -804,7 +804,7 @@ URL: [url]',
'my_documents' => 'Mina dokument',
'my_transmittals' => 'Mina överföringar',
'name' => 'Namn',
'nb_NO' => '',
'nb_NO' => 'Norska (Bokmål)',
'needs_correction' => '',
'needs_workflow_action' => 'Detta dokument behöver din uppmärksamhet. Kontrollera inställningarna för arbetsflödet.',
'network_drive' => 'Nätverkslagring',

View File

@ -19,7 +19,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// Translators: Admin (1094), aydin (83)
// Translators: Admin (1095), aydin (83)
$text = array(
'2_factor_auth' => '',
@ -792,7 +792,7 @@ URL: [url]',
'my_documents' => 'Dokümanlarım',
'my_transmittals' => '',
'name' => 'İsim',
'nb_NO' => '',
'nb_NO' => 'Norveç Havayolları',
'needs_correction' => '',
'needs_workflow_action' => 'Bu doküman dikkatinizi gerektiriyor. Lütfen iş akış sekmesini kontrol ediniz.',
'network_drive' => '',

View File

@ -19,7 +19,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// Translators: Admin (766), archonwang (469), fengjohn (5), yang86 (1)
// Translators: Admin (770), archonwang (469), fengjohn (5), yang86 (1)
$text = array(
'2_factor_auth' => '双重认证',
@ -517,7 +517,7 @@ URL: [url]',
'event_details' => '错误详情',
'exclude_items' => '排除项目',
'expired' => '过期',
'expired_at_date' => '',
'expired_at_date' => '过期时间',
'expired_documents' => '过期文档',
'expires' => '有效限期',
'expire_by_date' => '指定过期时间',
@ -786,9 +786,9 @@ URL: [url]',
'move_folder' => '移动文件夹',
'my_account' => '我的账户',
'my_documents' => '我的文档',
'my_transmittals' => '',
'my_transmittals' => '我的送达函',
'name' => '名称',
'nb_NO' => '',
'nb_NO' => '挪威语(书面挪威语)',
'needs_correction' => '',
'needs_workflow_action' => '',
'network_drive' => '网络驱动器',
@ -1125,7 +1125,7 @@ URL: [url]',
'scheduler_class_description' => '',
'scheduler_class_parameter' => '',
'scheduler_class_tasks' => '',
'scheduler_task_mgr' => '',
'scheduler_task_mgr' => '排程表',
'search' => '搜索',
'search_fulltext' => '全文检索',
'search_in' => '搜索于',

View File

@ -76,7 +76,7 @@ if ($accessop->check_controller_access($controller, array('action'=>'setOwner'))
$owner = $user;
}
$comment = trim($_POST["comment"]);
$version_comment = trim($_POST["version_comment"]);
$version_comment = !empty($_POST["version_comment"]) ? trim($_POST["version_comment"]) : '';
if($version_comment == "" && isset($_POST["use_comment"]))
$version_comment = $comment;
@ -408,10 +408,14 @@ if(!empty($_POST['notification_groups'])) {
}
/* Check files for Errors first */
$maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize);
for ($file_num=0;$file_num<count($_FILES["userfile"]["tmp_name"]);$file_num++){
if ($_FILES["userfile"]["size"][$file_num]==0) {
UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("uploading_zerosize"));
}
if ($maxuploadsize && $_FILES["userfile"]["size"][$file_num] > $maxuploadsize) {
UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("uploading_maxsize"));
}
if (/* is_uploaded_file($_FILES["userfile"]["tmp_name"][$file_num]) && */$_FILES['userfile']['error'][$file_num]!=0){
UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("uploading_failed"));
}

View File

@ -62,10 +62,14 @@ if(isset($_POST[$prefix.'-fine-uploader-uuids']) && $_POST[$prefix.'-fine-upload
}
}
$maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize);
for ($file_num=0;$file_num<count($_FILES["userfile"]["tmp_name"]);$file_num++){
if ($_FILES["userfile"]["size"][$file_num]==0) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_zerosize"));
}
if ($maxuploadsize && $_FILES["userfile"]["size"][$file_num] > $maxuploadsize) {
UI::exitError(getMLText("folder_title", array("documentname" => $document->getName())),getMLText("uploading_maxsize"));
}
if (is_uploaded_file($_FILES["userfile"]["tmp_name"][$file_num]) && $_FILES['userfile']['error'][$file_num] != 0){
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_failed"));
}

View File

@ -666,6 +666,13 @@ switch($command) {
exit;
}
$maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize);
if ($maxuploadsize && $_FILES["userfile"]["size"] > $maxuploadsize) {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText("uploading_maxsize")));
exit;
}
$userfiletmp = $_FILES["userfile"]["tmp_name"];
$userfiletype = $_FILES["userfile"]["type"];
$userfilename = $_FILES["userfile"]["name"];

View File

@ -66,7 +66,7 @@ if ($action == "addtask") { /* {{{ */
add_log_line(".php&action=addtask&name=".$name);
} /* }}} */
// modify transmittal ----------------------------------------------------
// modify task ----------------------------------------------------
else if ($action == "edittask") { /* {{{ */
/* Check if the form data comes for a trusted request */
@ -90,7 +90,7 @@ else if ($action == "edittask") { /* {{{ */
$frequency = $_POST["frequency"];
$disabled = isset($_POST["disabled"]) ? $_POST["disabled"] : 0;
$params = $_POST["params"];
if ($editedtask->getName() != $name)
$editedtask->setName($name);
if ($editedtask->getDescription() != $description)
@ -104,5 +104,40 @@ else if ($action == "edittask") { /* {{{ */
add_log_line(".php&action=edittask&taskid=".$taskid);
} /* }}} */
// delete task -------------------------------------------------------------
else if ($action == "removetask") { /* {{{ */
header('Content-Type: application/json');
/* Check if the form data comes from a trusted request */
if(!checkFormKey('removetask')) {
echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_request_token")));
exit;
}
if (!isset($_POST["taskid"]) || !is_numeric($_POST["taskid"]) || intval($_POST["taskid"])<1) {
echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_task")));
exit;
}
$taskid=$_POST["taskid"];
$task = $scheduler->getTask($taskid);
if (!is_object($task)) {
echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_task")));
exit;
}
if (!$task->remove()) {
echo json_encode(array('success'=>false, 'message'=>getMLText("error_occured")));
exit;
}
add_log_line("?taskid=".$_POST["taskid"]."&action=removetask");
echo json_encode(array('success'=>true, 'message'=>getMLText("task_removed")));
exit;
} /* }}} */
header("Location:../out/out.SchedulerTaskMgr.php");

View File

@ -212,7 +212,7 @@ if (count($revisionIndex["i"]) > 0) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("recipient_already_removed"));
break;
case -4:
// email error
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("recipient_was_active"));
break;
}
}
@ -315,7 +315,7 @@ if (count($revisionIndex["g"]) > 0) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("recipient_already_removed"));
break;
case -4:
// email error
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("recipient_was_active"));
break;
}
}
@ -323,6 +323,11 @@ if (count($revisionIndex["g"]) > 0) {
}
}
/* If all revisors has been removed, then clear the next revision date */
if(!$pIndRev && !$pGrpRev) {
$content->setRevisionDate(false);
}
/* Recheck status, because all revisors could have been removed */
$content->verifyStatus(false, $user, getMLText('automatic_status_update'), $settings->_initialDocumentStatus);

View File

@ -91,6 +91,11 @@ if (isset($_FILES['userfile']) && $_FILES['userfile']['error'] == 0) {
if($_FILES["userfile"]["size"] == 0)
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_zerosize"));
$maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize);
if ($maxuploadsize && $_FILES["userfile"]["size"] > $maxuploadsize) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_maxsize"));
}
$userfiletmp = $_FILES["userfile"]["tmp_name"];
$userfiletype = $_FILES["userfile"]["type"];
$userfilename = $_FILES["userfile"]["name"];

View File

@ -91,7 +91,6 @@ if($view) {
$view->setParam('presetexpiration', $settings->_presetExpirationDate);
$view->setParam('sortusersinlist', $settings->_sortUsersInList);
$view->setParam('defaultposition', $settings->_defaultDocPosition);
$view->setParam('maxuploadsize', $settings->_maxUploadSize);
$view->setParam('orderby', $settings->_sortFoldersDefault);
$view->setParam('accessobject', $accessop);
$view($_GET);

View File

@ -47,6 +47,7 @@ if(isset($_GET['transmittalid']) && $_GET['transmittalid']) {
if($view) {
$view->setParam('seltransmittal', $seltransmittal);
$view->setParam('showtree', showtree());
$view->setParam('cachedir', $settings->_cacheDir);
$view->setParam('timeout', $settings->_cmdTimeout);
$view->setParam('previewWidthList', $settings->_previewWidthList);

View File

@ -60,6 +60,10 @@ ul.jqtree-tree li.jqtree-selected > .jqtree-element:hover {
font-weight: bold;
}
legend > span {
float: right;
}
td.today {
background-color: rgb(255, 200, 0);
}
@ -158,6 +162,21 @@ div.splash {
display: none;
}
div.clipboard-container {
position: fixed;
left: 10px;
top: 40px;
width: 29.8%;
background: white;
border: 1px solid #d4d4d4;
border-radius: 5px;
padding: 10px;
height: 500px;
margin: 10px;
overflow-y: auto;
overflow-x: hidden;
}
div.statusbar-container {
display: none;
position: fixed;

View File

@ -166,6 +166,12 @@ $(document).ready( function() {
}
}); /* }}} */
$('body').on('click', '#clipboard-float', function(ev) { /* {{{ */
ev.preventDefault();
ev.stopPropagation();
$('#clipboard-container').toggleClass('clipboard-container');
}); /* }}} */
$('body').on('click', 'a.addtoclipboard', function(ev) { /* {{{ */
ev.preventDefault();
ev.stopPropagation();
@ -178,7 +184,7 @@ $(document).ready( function() {
function(data) {
if(data.success) {
$("#main-clipboard").html('Loading').load('../out/out.Clipboard.php?action=mainclipboard')
$("#menu-clipboard").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard')
$("#menu-clipboard div").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard')
noty({
text: attr_msg,
type: 'success',
@ -213,7 +219,7 @@ $(document).ready( function() {
function(data) {
if(data.success) {
$("#main-clipboard").html('Loading').load('../out/out.Clipboard.php?action=mainclipboard')
$("#menu-clipboard").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard')
$("#menu-clipboard div").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard')
noty({
text: attr_msg,
type: 'success',
@ -451,7 +457,7 @@ $(document).ready( function() {
if(data.success) {
if(element.data('param1') == 'command=clearclipboard') {
$("#main-clipboard").html('Loading').load('../out/out.Clipboard.php?action=mainclipboard')
$("#menu-clipboard").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard')
$("#menu-clipboard div").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard')
}
noty({
text: data.message,
@ -492,7 +498,7 @@ function onAddClipboard(ev) { /* {{{ */
function(data) {
if(data.success) {
$("#main-clipboard").html('Loading').load('../out/out.Clipboard.php?action=mainclipboard')
$("#menu-clipboard").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard')
$("#menu-clipboard div").html('Loading').load('../out/out.Clipboard.php?action=menuclipboard')
noty({
text: data.message,
type: 'success',
@ -758,18 +764,18 @@ $(document).ready(function() { /* {{{ */
attr_rel = $(e.currentTarget).data('droptarget');
target_type = attr_rel.split("_")[0];
target_id = attr_rel.split("_")[1];
target_name = $(e.currentTarget).data('name')
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
if(target_type == 'folder') {
var files = e.originalEvent.dataTransfer.files;
if(files.length > 0) {
console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
// console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
} else {
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
source_type = source_info.type;
source_id = source_info.id;
formtoken = source_info.formtoken;
console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id);
// console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id);
if(source_type == 'document') {
var bootbox_message = trans.confirm_move_document;
if(source_info.name)
@ -863,14 +869,14 @@ $(document).ready(function() { /* {{{ */
} else if(target_type == 'document') {
var files = e.originalEvent.dataTransfer.files;
if(files.length > 0) {
console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
// console.log('Drop '+files.length+' files on '+target_type+' '+target_id);
SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
} else {
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
source_type = source_info.type;
source_id = source_info.id;
formtoken = source_info.formtoken;
console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id);
// console.log('Drop '+source_type+' '+source_id+' on '+target_type+' '+target_id);
if(source_type == 'document') {
if(source_id != target_id) {
bootbox.dialog(trans.confirm_transfer_link_document, [{
@ -956,7 +962,7 @@ $(document).ready(function() { /* {{{ */
id : attr_rel.split("_")[1],
type : "folder",
formtoken : $(e.target).attr('formtoken'),
name: $(e.target).data('name')
name: $(e.target).data('name')+''
};
/* Currently not used
$.ajax({url: '../out/out.ViewFolder.php',
@ -982,7 +988,7 @@ $(document).ready(function() { /* {{{ */
id : attr_rel.split("_")[1],
type : "document",
formtoken : $(e.target).attr('formtoken'),
name: $(e.target).data('name')
name: $(e.target).data('name')+''
};
e.originalEvent.dataTransfer.setData("text", JSON.stringify(dragStartInfo));
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -1,5 +1,7 @@
The MIT License (MIT)
Copyright (c) 2010-2012, Andrew Valums
Copyright (c) 2012-2013, Andrew Valums and Raymond S. Nicholus, III
Copyright (c) 2013-present, Widen Enterprises, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy

View File

@ -1,4 +1,4 @@
// Fine Uploader 5.12.0 - (c) 2013-present Widen Enterprises, Inc. MIT licensed. http://fineuploader.com
// Fine Uploader 5.16.2 - MIT licensed. http://fineuploader.com
(function(global) {
var qq = function(element) {
"use strict";
@ -578,7 +578,7 @@
global.qq = qq;
}
})();
qq.version = "5.12.0";
qq.version = "5.16.2";
qq.supportedFeatures = function() {
"use strict";
var supportsUploading, supportsUploadingBlobs, supportsFileDrop, supportsAjaxFileUploading, supportsFolderDrop, supportsChunking, supportsResume, supportsUploadViaPaste, supportsUploadCors, supportsDeleteFileXdr, supportsDeleteFileCorsXhr, supportsDeleteFileCors, supportsFolderSelection, supportsImagePreviews, supportsUploadProgress;
@ -596,9 +596,6 @@
}
return supported;
}
function isChrome21OrHigher() {
return (qq.chrome() || qq.opera()) && navigator.userAgent.match(/Chrome\/[2][1-9]|Chrome\/[3-9][0-9]/) !== undefined;
}
function isChrome14OrHigher() {
return (qq.chrome() || qq.opera()) && navigator.userAgent.match(/Chrome\/[1][4-9]|Chrome\/[2-9][0-9]/) !== undefined;
}
@ -636,7 +633,11 @@
supportsAjaxFileUploading = supportsUploading && qq.isXhrUploadSupported();
supportsUploadingBlobs = supportsAjaxFileUploading && !qq.androidStock();
supportsFileDrop = supportsAjaxFileUploading && isDragAndDropSupported();
supportsFolderDrop = supportsFileDrop && isChrome21OrHigher();
supportsFolderDrop = supportsFileDrop && function() {
var input = document.createElement("input");
input.type = "file";
return !!("webkitdirectory" in (input || document.querySelectorAll("input[type=file]")[0]));
}();
supportsChunking = supportsAjaxFileUploading && qq.isFileChunkingSupported();
supportsResume = supportsAjaxFileUploading && supportsChunking && isLocalStorageSupported();
supportsUploadViaPaste = supportsAjaxFileUploading && isChrome14OrHigher();
@ -765,12 +766,7 @@
var parseEntryPromise = new qq.Promise();
if (entry.isFile) {
entry.file(function(file) {
var name = entry.name, fullPath = entry.fullPath, indexOfNameInFullPath = fullPath.indexOf(name);
fullPath = fullPath.substr(0, indexOfNameInFullPath);
if (fullPath.charAt(0) === "/") {
fullPath = fullPath.substr(1);
}
file.qqPath = fullPath;
file.qqPath = extractDirectoryPath(entry);
droppedFiles.push(file);
parseEntryPromise.success();
}, function(fileError) {
@ -798,6 +794,14 @@
}
return parseEntryPromise;
}
function extractDirectoryPath(entry) {
var name = entry.name, fullPath = entry.fullPath, indexOfNameInFullPath = fullPath.lastIndexOf(name);
fullPath = fullPath.substr(0, indexOfNameInFullPath);
if (fullPath.charAt(0) === "/") {
fullPath = fullPath.substr(1);
}
return fullPath;
}
function getFilesInDirectory(entry, reader, accumEntries, existingPromise) {
var promise = existingPromise || new qq.Promise(), dirReader = reader || entry.createReader();
dirReader.readEntries(function readSuccess(entries) {
@ -885,9 +889,6 @@
return fileDrag;
}
function leavingDocumentOut(e) {
if (qq.firefox()) {
return !e.relatedTarget;
}
if (qq.safari()) {
return e.x < 0 || e.y < 0;
}
@ -927,8 +928,10 @@
maybeHideDropZones();
});
disposeSupport.attach(document, "drop", function(e) {
e.preventDefault();
maybeHideDropZones();
if (isFileDrag(e)) {
e.preventDefault();
maybeHideDropZones();
}
});
disposeSupport.attach(document, HIDE_ZONES_EVENT_NAME, maybeHideDropZones);
}
@ -953,6 +956,8 @@
});
}
});
this._testing = {};
this._testing.extractDirectoryPath = extractDirectoryPath;
};
qq.DragAndDrop.callbacks = function() {
"use strict";
@ -1005,7 +1010,7 @@
}
var effectTest, dt = e.dataTransfer, isSafari = qq.safari();
effectTest = qq.ie() && qq.supportedFeatures.fileDrop ? true : dt.effectAllowed !== "none";
return dt && effectTest && (dt.files || !isSafari && dt.types.contains && dt.types.contains("Files"));
return dt && effectTest && (dt.files && dt.files.length || !isSafari && dt.types.contains && dt.types.contains("Files") || dt.types.includes && dt.types.includes("Files"));
}
function isOrSetDropDisabled(isDisabled) {
if (isDisabled !== undefined) {
@ -1088,6 +1093,8 @@
return element;
}
});
this._testing = {};
this._testing.isValidFileDrag = isValidFileDrag;
};
})(window);
//# sourceMappingURL=dnd.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":3,"sources":["_build/fine-uploader-gallery.css"],"names":[],"mappings":"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"}
{"version":3,"sources":["_build/fine-uploader-gallery.css"],"names":[],"mappings":"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"}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":3,"sources":["_build/fine-uploader-new.css"],"names":[],"mappings":"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"}
{"version":3,"sources":["_build/fine-uploader-new.css"],"names":[],"mappings":"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"}

View File

@ -1,4 +1,4 @@
// Fine Uploader 5.12.0 - (c) 2013-present Widen Enterprises, Inc. MIT licensed. http://fineuploader.com
// Fine Uploader 5.16.2 - MIT licensed. http://fineuploader.com
(function(global) {
var qq = function(element) {
"use strict";
@ -585,7 +585,7 @@
};
qq.Error.prototype = new Error();
})();
qq.version = "5.12.0";
qq.version = "5.16.2";
qq.supportedFeatures = function() {
"use strict";
var supportsUploading, supportsUploadingBlobs, supportsFileDrop, supportsAjaxFileUploading, supportsFolderDrop, supportsChunking, supportsResume, supportsUploadViaPaste, supportsUploadCors, supportsDeleteFileXdr, supportsDeleteFileCorsXhr, supportsDeleteFileCors, supportsFolderSelection, supportsImagePreviews, supportsUploadProgress;
@ -603,9 +603,6 @@
}
return supported;
}
function isChrome21OrHigher() {
return (qq.chrome() || qq.opera()) && navigator.userAgent.match(/Chrome\/[2][1-9]|Chrome\/[3-9][0-9]/) !== undefined;
}
function isChrome14OrHigher() {
return (qq.chrome() || qq.opera()) && navigator.userAgent.match(/Chrome\/[1][4-9]|Chrome\/[2-9][0-9]/) !== undefined;
}
@ -643,7 +640,11 @@
supportsAjaxFileUploading = supportsUploading && qq.isXhrUploadSupported();
supportsUploadingBlobs = supportsAjaxFileUploading && !qq.androidStock();
supportsFileDrop = supportsAjaxFileUploading && isDragAndDropSupported();
supportsFolderDrop = supportsFileDrop && isChrome21OrHigher();
supportsFolderDrop = supportsFileDrop && function() {
var input = document.createElement("input");
input.type = "file";
return !!("webkitdirectory" in (input || document.querySelectorAll("input[type=file]")[0]));
}();
supportsChunking = supportsAjaxFileUploading && qq.isFileChunkingSupported();
supportsResume = supportsAjaxFileUploading && supportsChunking && isLocalStorageSupported();
supportsUploadViaPaste = supportsAjaxFileUploading && isChrome14OrHigher();
@ -903,7 +904,8 @@
originalName: spec.name,
uuid: spec.uuid,
size: spec.size == null ? -1 : spec.size,
status: status
status: status,
file: spec.file
}) - 1;
if (spec.batchId) {
data[id].batchId = spec.batchId;
@ -925,6 +927,7 @@
byStatus[status] = [];
}
byStatus[status].push(id);
spec.onBeforeStatusChange && spec.onBeforeStatusChange(id);
uploaderProxy.onStatusChange(id, null, status);
return id;
},
@ -941,6 +944,12 @@
return qq.extend([], data, true);
}
},
removeFileRef: function(id) {
var record = getDataByIds(id);
if (record) {
delete record.file;
}
},
reset: function() {
data = [];
byUuid = {};
@ -993,6 +1002,7 @@
CANCELED: "canceled",
PAUSED: "paused",
UPLOADING: "uploading",
UPLOAD_FINALIZING: "upload finalizing",
UPLOAD_RETRYING: "retrying upload",
UPLOAD_SUCCESSFUL: "upload successful",
UPLOAD_FAILED: "upload failed",
@ -1073,7 +1083,14 @@
}
},
cancel: function(id) {
this._handler.cancel(id);
var uploadData = this._uploadData.retrieve({
id: id
});
if (uploadData && uploadData.status === qq.status.UPLOAD_FINALIZING) {
this.log(qq.format("Ignoring cancel for file ID {} ({}). Finalizing upload.", id, this.getName(id)), "error");
} else {
this._handler.cancel(id);
}
},
cancelAll: function() {
var storedIdsCopy = [], self = this;
@ -1150,7 +1167,17 @@
return this._endpointStore.get(fileId);
},
getFile: function(fileOrBlobId) {
return this._handler.getFile(fileOrBlobId) || null;
var file = this._handler.getFile(fileOrBlobId);
var uploadDataRecord;
if (!file) {
uploadDataRecord = this._uploadData.retrieve({
id: fileOrBlobId
});
if (uploadDataRecord) {
file = uploadDataRecord.file;
}
}
return file || null;
},
getInProgress: function() {
return this._uploadData.retrieve({
@ -1199,6 +1226,9 @@
id: id
}).uuid;
},
isResumable: function(id) {
return this._handler.hasResumeRecord(id);
},
log: function(str, level) {
if (this._options.debug && (!level || level === "info")) {
qq.log("[Fine Uploader " + qq.version + "] " + str);
@ -1225,6 +1255,10 @@
}
return false;
},
removeFileRef: function(id) {
this._handler.expunge(id);
this._uploadData.removeFileRef(id);
},
reset: function() {
this.log("Resetting uploader...");
this._handler.reset();
@ -1247,6 +1281,7 @@
this._succeededSinceLastAllComplete = [];
this._failedSinceLastAllComplete = [];
this._totalProgress && this._totalProgress.reset();
this._customResumeDataStore.reset();
},
retry: function(id) {
return this._manualRetry(id);
@ -1262,6 +1297,9 @@
setCustomHeaders: function(headers, id) {
this._customHeadersStore.set(headers, id);
},
setCustomResumeData: function(id, data) {
this._customResumeDataStore.set(data, id);
},
setDeleteFileCustomHeaders: function(headers, id) {
this._deleteFileCustomHeadersStore.set(headers, id);
},
@ -1289,6 +1327,28 @@
setUuid: function(id, newUuid) {
return this._uploadData.uuidChanged(id, newUuid);
},
setStatus: function(id, newStatus) {
var fileRecord = this.getUploads({
id: id
});
if (!fileRecord) {
throw new qq.Error(id + " is not a valid file ID.");
}
switch (newStatus) {
case qq.status.DELETED:
this._onDeleteComplete(id, null, false);
break;
case qq.status.DELETE_FAILED:
this._onDeleteComplete(id, null, true);
break;
default:
var errorMessage = "Method setStatus called on '" + name + "' not implemented yet for " + newStatus;
this.log(errorMessage);
throw new qq.Error(errorMessage);
}
},
uploadStoredFiles: function() {
if (this._storedIds.length === 0) {
this._itemError("noFilesError");
@ -1299,20 +1359,22 @@
};
qq.basePrivateApi = {
_addCannedFile: function(sessionData) {
var id = this._uploadData.addFile({
var self = this;
return this._uploadData.addFile({
uuid: sessionData.uuid,
name: sessionData.name,
size: sessionData.size,
status: qq.status.UPLOAD_SUCCESSFUL
status: qq.status.UPLOAD_SUCCESSFUL,
onBeforeStatusChange: function(id) {
sessionData.deleteFileEndpoint && self.setDeleteFileEndpoint(sessionData.deleteFileEndpoint, id);
sessionData.deleteFileParams && self.setDeleteFileParams(sessionData.deleteFileParams, id);
if (sessionData.thumbnailUrl) {
self._thumbnailUrls[id] = sessionData.thumbnailUrl;
}
self._netUploaded++;
self._netUploadedOrQueued++;
}
});
sessionData.deleteFileEndpoint && this.setDeleteFileEndpoint(sessionData.deleteFileEndpoint, id);
sessionData.deleteFileParams && this.setDeleteFileParams(sessionData.deleteFileParams, id);
if (sessionData.thumbnailUrl) {
this._thumbnailUrls[id] = sessionData.thumbnailUrl;
}
this._netUploaded++;
this._netUploadedOrQueued++;
return id;
},
_annotateWithButtonId: function(file, associatedInput) {
if (qq.isFile(file)) {
@ -1547,17 +1609,28 @@
onUploadPrep: qq.bind(this._onUploadPrep, this),
onUpload: function(id, name) {
self._onUpload(id, name);
self._options.callbacks.onUpload(id, name);
var onUploadResult = self._options.callbacks.onUpload(id, name);
if (qq.isGenericPromise(onUploadResult)) {
self.log(qq.format("onUpload for {} returned a Promise - waiting for resolution.", id));
return onUploadResult;
}
return new qq.Promise().success();
},
onUploadChunk: function(id, name, chunkData) {
self._onUploadChunk(id, chunkData);
self._options.callbacks.onUploadChunk(id, name, chunkData);
var onUploadChunkResult = self._options.callbacks.onUploadChunk(id, name, chunkData);
if (qq.isGenericPromise(onUploadChunkResult)) {
self.log(qq.format("onUploadChunk for {}.{} returned a Promise - waiting for resolution.", id, chunkData.partIndex));
return onUploadChunkResult;
}
return new qq.Promise().success();
},
onUploadChunkSuccess: function(id, chunkData, result, xhr) {
self._onUploadChunkSuccess(id, chunkData);
self._options.callbacks.onUploadChunkSuccess.apply(self, arguments);
},
onResume: function(id, name, chunkData) {
return self._options.callbacks.onResume(id, name, chunkData);
onResume: function(id, name, chunkData, customResumeData) {
return self._options.callbacks.onResume(id, name, chunkData, customResumeData);
},
onAutoRetry: function(id, name, responseJSON, xhr) {
return self._onAutoRetry.apply(self, arguments);
@ -1582,7 +1655,16 @@
return status === qq.status.QUEUED || status === qq.status.SUBMITTED || status === qq.status.UPLOAD_RETRYING || status === qq.status.PAUSED;
},
getIdsInProxyGroup: self._uploadData.getIdsInProxyGroup,
getIdsInBatch: self._uploadData.getIdsInBatch
getIdsInBatch: self._uploadData.getIdsInBatch,
isInProgress: function(id) {
return self.getUploads({
id: id
}).status === qq.status.UPLOADING;
},
getCustomResumeData: qq.bind(self._getCustomResumeData, self),
setStatus: function(id, status) {
self._uploadData.setStatus(id, status);
}
};
qq.each(this._options.request, function(prop, val) {
options[prop] = val;
@ -1659,6 +1741,9 @@
}
}
},
_getCustomResumeData: function(fileId) {
return this._customResumeDataStore.get(fileId);
},
_getNotFinished: function() {
return this._uploadData.retrieve({
status: [ qq.status.UPLOADING, qq.status.UPLOAD_RETRYING, qq.status.QUEUED, qq.status.SUBMITTING, qq.status.SUBMITTED, qq.status.PAUSED ]
@ -1760,7 +1845,8 @@
uuid: uuid,
name: name,
size: size,
batchId: batchId
batchId: batchId,
file: file
});
this._handler.add(id, file);
this._trackButton(id);
@ -1781,6 +1867,28 @@
blob: blob
});
},
_handleDeleteSuccess: function(id) {
if (this.getUploads({
id: id
}).status !== qq.status.DELETED) {
var name = this.getName(id);
this._netUploadedOrQueued--;
this._netUploaded--;
this._handler.expunge(id);
this._uploadData.setStatus(id, qq.status.DELETED);
this.log("Delete request for '" + name + "' has succeeded.");
}
},
_handleDeleteFailed: function(id, xhrOrXdr) {
var name = this.getName(id);
this._uploadData.setStatus(id, qq.status.DELETE_FAILED);
this.log("Delete request for '" + name + "' has failed.", "error");
if (!xhrOrXdr || xhrOrXdr.withCredentials === undefined) {
this._options.callbacks.onError(id, name, "Delete request failed", xhrOrXdr);
} else {
this._options.callbacks.onError(id, name, "Delete request failed with response code " + xhrOrXdr.status, xhrOrXdr);
}
},
_initExtraButton: function(spec) {
var button = this._createUploadButton({
accept: spec.validation.acceptFiles,
@ -1933,7 +2041,7 @@
_onAutoRetry: function(id, name, responseJSON, xhr, callback) {
var self = this;
self._preventRetries[id] = responseJSON[self._options.retry.preventRetryResponseProperty];
if (self._shouldAutoRetry(id, name, responseJSON)) {
if (self._shouldAutoRetry(id)) {
var retryWaitPeriod = self._options.retry.autoAttemptDelay * 1e3;
self._maybeParseAndSendUploadError.apply(self, arguments);
self._options.callbacks.onAutoRetry(id, name, self._autoRetries[id]);
@ -2006,19 +2114,9 @@
_onDeleteComplete: function(id, xhrOrXdr, isError) {
var name = this.getName(id);
if (isError) {
this._uploadData.setStatus(id, qq.status.DELETE_FAILED);
this.log("Delete request for '" + name + "' has failed.", "error");
if (xhrOrXdr.withCredentials === undefined) {
this._options.callbacks.onError(id, name, "Delete request failed", xhrOrXdr);
} else {
this._options.callbacks.onError(id, name, "Delete request failed with response code " + xhrOrXdr.status, xhrOrXdr);
}
this._handleDeleteFailed(id, xhrOrXdr);
} else {
this._netUploadedOrQueued--;
this._netUploaded--;
this._handler.expunge(id);
this._uploadData.setStatus(id, qq.status.DELETED);
this.log("Delete request for '" + name + "' has succeeded.");
this._handleDeleteSuccess(id);
}
},
_onInputChange: function(input) {
@ -2078,6 +2176,11 @@
this._uploadData.setStatus(id, qq.status.UPLOADING);
},
_onUploadChunk: function(id, chunkData) {},
_onUploadChunkSuccess: function(id, chunkData) {
if (!this._preventRetries[id] && this._options.retry.enableAuto) {
this._autoRetries[id] = 0;
}
},
_onUploadStatusChange: function(id, oldStatus, newStatus) {
if (newStatus === qq.status.PAUSED) {
clearTimeout(this._retryTimeouts[id]);
@ -2173,7 +2276,7 @@
this._uploadData.updateSize(id, newSize);
this._totalProgress && this._totalProgress.onNewSize(id);
},
_shouldAutoRetry: function(id, name, responseJSON) {
_shouldAutoRetry: function(id) {
var uploadData = this._uploadData.retrieve({
id: id
});
@ -2322,6 +2425,7 @@
maxConnections: 3,
disableCancelForFormUploads: false,
autoUpload: true,
warnBeforeUnload: true,
request: {
customHeaders: {},
endpoint: "/server/upload",
@ -2329,8 +2433,10 @@
forceMultipart: true,
inputName: "qqfile",
method: "POST",
omitDefaultParams: false,
params: {},
paramsInBody: true,
requireSuccessJson: true,
totalFileSizeName: "qqtotalfilesize",
uuidName: "qquuid"
},
@ -2358,7 +2464,7 @@
onUpload: function(id, name) {},
onUploadChunk: function(id, name, chunkData) {},
onUploadChunkSuccess: function(id, chunkData, responseJSON, xhr) {},
onResume: function(id, fileName, chunkData) {},
onResume: function(id, fileName, chunkData, customResumeData) {},
onProgress: function(id, name, loaded, total) {},
onTotalProgress: function(loaded, total) {},
onError: function(id, name, reason, maybeXhrOrXdr) {},
@ -2411,9 +2517,20 @@
totalFileSize: "qqtotalfilesize",
totalParts: "qqtotalparts"
},
partSize: 2e6,
partSize: function(id) {
return 2e6;
},
success: {
endpoint: null
endpoint: null,
headers: function(id) {
return null;
},
jsonPayload: false,
method: "POST",
params: function(id) {
return null;
},
resetOnStatus: []
}
},
resume: {
@ -2421,6 +2538,9 @@
recordsExpireIn: 7,
paramNames: {
resuming: "qqresume"
},
customKeys: function(fileId) {
return [];
}
},
formatFileName: function(fileOrBlobName) {
@ -2519,7 +2639,7 @@
this.log("Paste support module not found", "error");
}
}
this._preventLeaveInProgress();
this._options.warnBeforeUnload && this._preventLeaveInProgress();
this._imageGenerator = qq.ImageGenerator && new qq.ImageGenerator(qq.bind(this.log, this));
this._refreshSessionData();
this._succeededSinceLastAllComplete = [];
@ -2537,6 +2657,7 @@
});
}
this._currentItemLimit = this._options.validation.itemLimit;
this._customResumeDataStore = this._createStore();
};
qq.FineUploaderBasic.prototype = qq.basePublicApi;
qq.extend(qq.FineUploaderBasic.prototype, qq.basePrivateApi);
@ -2606,7 +2727,7 @@
return xhrOrXdr;
}
function getXhrOrXdr(id, suppliedXhr) {
var xhrOrXdr = requestData[id].xhr;
var xhrOrXdr = requestData[id] && requestData[id].xhr;
if (!xhrOrXdr) {
if (suppliedXhr) {
xhrOrXdr = suppliedXhr;
@ -2869,13 +2990,14 @@
onUploadChunk: function(id, fileName, chunkData) {},
onUploadChunkSuccess: function(id, chunkData, response, xhr) {},
onAutoRetry: function(id, fileName, response, xhr) {},
onResume: function(id, fileName, chunkData) {},
onResume: function(id, fileName, chunkData, customResumeData) {},
onUuidChanged: function(id, newUuid) {},
getName: function(id) {},
setSize: function(id, newSize) {},
isQueued: function(id) {},
getIdsInProxyGroup: function(id) {},
getIdsInBatch: function(id) {}
getIdsInBatch: function(id) {},
isInProgress: function(id) {}
}, chunked = {
done: function(id, chunkIdx, response, xhr) {
var chunkData = handler._getChunkData(id, chunkIdx);
@ -2894,13 +3016,13 @@
handler._maybeDeletePersistedChunkData(id);
upload.cleanup(id, normaizedResponse, xhr);
}, function(response, xhr) {
var normaizedResponse = upload.normalizeResponse(response, false);
log("Problem finalizing chunks for file ID " + id + " - " + normaizedResponse.error, "error");
if (normaizedResponse.reset) {
var normalizedResponse = upload.normalizeResponse(response, false);
log("Problem finalizing chunks for file ID " + id + " - " + normalizedResponse.error, "error");
if (normalizedResponse.reset || xhr && options.chunking.success.resetOnStatus.indexOf(xhr.status) >= 0) {
chunked.reset(id);
}
if (!options.onAutoRetry(id, name, normaizedResponse, xhr)) {
upload.cleanup(id, normaizedResponse, xhr);
if (!options.onAutoRetry(id, name, normalizedResponse, xhr)) {
upload.cleanup(id, normalizedResponse, xhr);
}
});
},
@ -2912,7 +3034,8 @@
if (responseToReport.reset) {
chunked.reset(id);
} else {
inProgressIdx = qq.indexOf(handler._getFileState(id).chunking.inProgress, chunkIdx);
var inProgressChunksArray = handler._getFileState(id).chunking.inProgress;
inProgressIdx = inProgressChunksArray ? qq.indexOf(inProgressChunksArray, chunkIdx) : -1;
if (inProgressIdx >= 0) {
handler._getFileState(id).chunking.inProgress.splice(inProgressIdx, 1);
handler._getFileState(id).chunking.remaining.unshift(chunkIdx);
@ -2950,13 +3073,14 @@
handler._maybeDeletePersistedChunkData(id);
handler.reevaluateChunking(id);
handler._getFileState(id).loaded = 0;
handler._getFileState(id).attemptingResume = false;
},
sendNext: function(id) {
var size = options.getSize(id), name = options.getName(id), chunkIdx = chunked.nextPart(id), chunkData = handler._getChunkData(id, chunkIdx), resuming = handler._getFileState(id).attemptingResume, inProgressChunks = handler._getFileState(id).chunking.inProgress || [];
if (handler._getFileState(id).loaded == null) {
handler._getFileState(id).loaded = 0;
var size = options.getSize(id), name = options.getName(id), chunkIdx = chunked.nextPart(id), chunkData = handler._getChunkData(id, chunkIdx), fileState = handler._getFileState(id), resuming = fileState.attemptingResume, inProgressChunks = fileState.chunking.inProgress || [];
if (fileState.loaded == null) {
fileState.loaded = 0;
}
if (resuming && options.onResume(id, name, chunkData) === false) {
if (resuming && options.onResume(id, name, chunkData, fileState.customResumeData) === false) {
chunked.reset(id);
chunkIdx = chunked.nextPart(id);
chunkData = handler._getChunkData(id, chunkIdx);
@ -2965,8 +3089,6 @@
if (chunkIdx == null && inProgressChunks.length === 0) {
chunked.finalize(id);
} else {
log(qq.format("Sending chunked upload request for item {}.{}, bytes {}-{} of {}.", id, chunkIdx, chunkData.start + 1, chunkData.end, size));
options.onUploadChunk(id, name, handler._getChunkDataForCallback(chunkData));
inProgressChunks.push(chunkIdx);
handler._getFileState(id).chunking.inProgress = inProgressChunks;
if (concurrentChunkingPossible) {
@ -2978,30 +3100,45 @@
if (chunkData.blob.size === 0) {
log(qq.format("Chunk {} for file {} will not be uploaded, zero sized chunk.", chunkIdx, id), "error");
chunked.handleFailure(chunkIdx, id, "File is no longer available", null);
} else {
handler.uploadChunk(id, chunkIdx, resuming).then(function success(response, xhr) {
log("Chunked upload request succeeded for " + id + ", chunk " + chunkIdx);
handler.clearCachedChunk(id, chunkIdx);
var inProgressChunks = handler._getFileState(id).chunking.inProgress || [], responseToReport = upload.normalizeResponse(response, true), inProgressChunkIdx = qq.indexOf(inProgressChunks, chunkIdx);
log(qq.format("Chunk {} for file {} uploaded successfully.", chunkIdx, id));
chunked.done(id, chunkIdx, responseToReport, xhr);
if (inProgressChunkIdx >= 0) {
inProgressChunks.splice(inProgressChunkIdx, 1);
}
handler._maybePersistChunkedState(id);
if (!chunked.hasMoreParts(id) && inProgressChunks.length === 0) {
chunked.finalize(id);
} else if (chunked.hasMoreParts(id)) {
chunked.sendNext(id);
} else {
log(qq.format("File ID {} has no more chunks to send and these chunk indexes are still marked as in-progress: {}", id, JSON.stringify(inProgressChunks)));
}
}, function failure(response, xhr) {
chunked.handleFailure(chunkIdx, id, response, xhr);
}).done(function() {
handler.clearXhr(id, chunkIdx);
});
}
var onUploadChunkPromise = options.onUploadChunk(id, name, handler._getChunkDataForCallback(chunkData));
onUploadChunkPromise.then(function(requestOverrides) {
if (!options.isInProgress(id)) {
log(qq.format("Not sending chunked upload request for item {}.{} - no longer in progress.", id, chunkIdx));
} else {
log(qq.format("Sending chunked upload request for item {}.{}, bytes {}-{} of {}.", id, chunkIdx, chunkData.start + 1, chunkData.end, size));
var uploadChunkData = {
chunkIdx: chunkIdx,
id: id,
overrides: requestOverrides,
resuming: resuming
};
handler.uploadChunk(uploadChunkData).then(function success(response, xhr) {
log("Chunked upload request succeeded for " + id + ", chunk " + chunkIdx);
handler.clearCachedChunk(id, chunkIdx);
var inProgressChunks = handler._getFileState(id).chunking.inProgress || [], responseToReport = upload.normalizeResponse(response, true), inProgressChunkIdx = qq.indexOf(inProgressChunks, chunkIdx);
log(qq.format("Chunk {} for file {} uploaded successfully.", chunkIdx, id));
chunked.done(id, chunkIdx, responseToReport, xhr);
if (inProgressChunkIdx >= 0) {
inProgressChunks.splice(inProgressChunkIdx, 1);
}
handler._maybePersistChunkedState(id);
if (!chunked.hasMoreParts(id) && inProgressChunks.length === 0) {
chunked.finalize(id);
} else if (chunked.hasMoreParts(id)) {
chunked.sendNext(id);
} else {
log(qq.format("File ID {} has no more chunks to send and these chunk indexes are still marked as in-progress: {}", id, JSON.stringify(inProgressChunks)));
}
}, function failure(response, xhr) {
chunked.handleFailure(chunkIdx, id, response, xhr);
}).done(function() {
handler.clearXhr(id, chunkIdx);
});
}
}, function(error) {
chunked.handleFailure(chunkIdx, id, error, null);
});
}
}
}, connectionManager = {
@ -3077,7 +3214,12 @@
}
}, simple = {
send: function(id, name) {
handler._getFileState(id).loaded = 0;
var fileState = handler._getFileState(id);
if (!fileState) {
log("Ignoring send request as this upload may have been cancelled, File ID " + id, "warn");
return;
}
fileState.loaded = 0;
log("Sending simple upload request for " + id);
handler.uploadFile(id).then(function(response, optXhr) {
log("Simple upload request succeeded for " + id);
@ -3113,6 +3255,7 @@
initHandler: function() {
var handlerType = namespace ? qq[namespace] : qq.traditional, handlerModuleSubtype = qq.supportedFeatures.ajaxUploading ? "Xhr" : "Form";
handler = new handlerType[handlerModuleSubtype + "UploadHandler"](options, {
getCustomResumeData: options.getCustomResumeData,
getDataByUuid: options.getDataByUuid,
getName: options.getName,
getSize: options.getSize,
@ -3120,7 +3263,10 @@
log: log,
onCancel: options.onCancel,
onProgress: options.onProgress,
onUuidChanged: options.onUuidChanged
onUuidChanged: options.onUuidChanged,
onFinalizing: function(id) {
options.setStatus(id, qq.status.UPLOAD_FINALIZING);
}
});
if (handler._removeExpiredChunkingRecords) {
handler._removeExpiredChunkingRecords();
@ -3193,12 +3339,26 @@
if (!controller.isValid(id)) {
throw new qq.Error(id + " is not a valid file ID to upload!");
}
options.onUpload(id, name);
if (chunkingPossible && handler._shouldChunkThisFile(id)) {
chunked.sendNext(id);
} else {
simple.send(id, name);
}
options.onUpload(id, name).then(function(response) {
if (response && response.pause) {
options.setStatus(id, qq.status.PAUSED);
handler.pause(id);
connectionManager.free(id);
} else {
if (chunkingPossible && handler._shouldChunkThisFile(id)) {
chunked.sendNext(id);
} else {
simple.send(id, name);
}
}
}, function(error) {
error = error || {};
log(id + " upload start aborted due to rejected onUpload Promise - details: " + error, "error");
if (!options.onAutoRetry(id, name, error.responseJSON || {})) {
var response = upload.normalizeResponse(error.responseJSON, false);
upload.cleanup(id, response);
}
});
},
start: function(id) {
var blobToUpload = upload.getProxyOrBlob(id);
@ -3277,6 +3437,13 @@
isValid: function(id) {
return handler.isValid(id);
},
hasResumeRecord: function(id) {
var key = handler.isValid(id) && handler._getLocalStorageId && handler._getLocalStorageId(id);
if (key) {
return !!localStorage.getItem(key);
}
return false;
},
getResumableFilesData: function() {
if (handler.getResumableFilesData) {
return handler.getResumableFilesData();
@ -3296,6 +3463,9 @@
}
return false;
},
isAttemptingResume: function(id) {
return !!handler.isAttemptingResume && handler.isAttemptingResume(id);
},
isResumable: function(id) {
return !!handler.isResumable && handler.isResumable(id);
}
@ -3486,7 +3656,19 @@
};
qq.XhrUploadHandler = function(spec) {
"use strict";
var handler = this, namespace = spec.options.namespace, proxy = spec.proxy, chunking = spec.options.chunking, resume = spec.options.resume, chunkFiles = chunking && spec.options.chunking.enabled && qq.supportedFeatures.chunking, resumeEnabled = resume && spec.options.resume.enabled && chunkFiles && qq.supportedFeatures.resume, getName = proxy.getName, getSize = proxy.getSize, getUuid = proxy.getUuid, getEndpoint = proxy.getEndpoint, getDataByUuid = proxy.getDataByUuid, onUuidChanged = proxy.onUuidChanged, onProgress = proxy.onProgress, log = proxy.log;
var handler = this, namespace = spec.options.namespace, proxy = spec.proxy, chunking = spec.options.chunking, getChunkSize = function(id) {
var fileState = handler._getFileState(id);
if (fileState.chunkSize) {
return fileState.chunkSize;
} else {
var chunkSize = chunking.partSize;
if (qq.isFunction(chunkSize)) {
chunkSize = chunkSize(id, getSize(id));
}
fileState.chunkSize = chunkSize;
return chunkSize;
}
}, resume = spec.options.resume, chunkFiles = chunking && spec.options.chunking.enabled && qq.supportedFeatures.chunking, resumeEnabled = resume && spec.options.resume.enabled && chunkFiles && qq.supportedFeatures.resume, getName = proxy.getName, getSize = proxy.getSize, getUuid = proxy.getUuid, getEndpoint = proxy.getEndpoint, getDataByUuid = proxy.getDataByUuid, onUuidChanged = proxy.onUuidChanged, onProgress = proxy.onProgress, log = proxy.log, getCustomResumeData = proxy.getCustomResumeData;
function abort(id) {
qq.each(handler._getXhrs(id), function(xhrId, xhr) {
var ajaxRequester = handler._getAjaxRequester(id, xhrId);
@ -3524,7 +3706,10 @@
});
qq.extend(this, {
clearCachedChunk: function(id, chunkIdx) {
delete handler._getFileState(id).temp.cachedChunks[chunkIdx];
var fileState = handler._getFileState(id);
if (fileState) {
delete fileState.temp.cachedChunks[chunkIdx];
}
},
clearXhr: function(id, chunkIdx) {
var tempState = handler._getFileState(id).temp;
@ -3561,15 +3746,21 @@
if (uploadData.key) {
data.key = uploadData.key;
}
if (uploadData.customResumeData) {
data.customResumeData = uploadData.customResumeData;
}
resumableFilesData.push(data);
});
return resumableFilesData;
},
isAttemptingResume: function(id) {
return handler._getFileState(id).attemptingResume;
},
isResumable: function(id) {
return !!chunking && handler.isValid(id) && !handler._getFileState(id).notResumable;
},
moveInProgressToRemaining: function(id, optInProgress, optRemaining) {
var inProgress = optInProgress || handler._getFileState(id).chunking.inProgress, remaining = optRemaining || handler._getFileState(id).chunking.remaining;
var fileState = handler._getFileState(id) || {}, chunkingState = fileState.chunking || {}, inProgress = optInProgress || chunkingState.inProgress, remaining = optRemaining || chunkingState.remaining;
if (inProgress) {
log(qq.format("Moving these chunks from in-progress {}, to remaining.", JSON.stringify(inProgress)));
inProgress.reverse();
@ -3628,7 +3819,7 @@
return handler._getFileState(id).temp.ajaxRequesters[chunkIdx];
},
_getChunkData: function(id, chunkIndex) {
var chunkSize = chunking.partSize, fileSize = getSize(id), fileOrBlob = handler.getFile(id), startBytes = chunkSize * chunkIndex, endBytes = startBytes + chunkSize >= fileSize ? fileSize : startBytes + chunkSize, totalChunks = handler._getTotalChunks(id), cachedChunks = this._getFileState(id).temp.cachedChunks, blob = cachedChunks[chunkIndex] || qq.sliceBlob(fileOrBlob, startBytes, endBytes);
var chunkSize = getChunkSize(id), fileSize = getSize(id), fileOrBlob = handler.getFile(id), startBytes = chunkSize * chunkIndex, endBytes = startBytes + chunkSize >= fileSize ? fileSize : startBytes + chunkSize, totalChunks = handler._getTotalChunks(id), cachedChunks = this._getFileState(id).temp.cachedChunks, blob = cachedChunks[chunkIndex] || qq.sliceBlob(fileOrBlob, startBytes, endBytes);
cachedChunks[chunkIndex] = blob;
return {
part: chunkIndex,
@ -3648,8 +3839,11 @@
};
},
_getLocalStorageId: function(id) {
var formatVersion = "5.0", name = getName(id), size = getSize(id), chunkSize = chunking.partSize, endpoint = getEndpoint(id);
return qq.format("qq{}resume{}-{}-{}-{}-{}", namespace, formatVersion, name, size, chunkSize, endpoint);
var formatVersion = "5.0", name = getName(id), size = getSize(id), chunkSize = getChunkSize(id), endpoint = getEndpoint(id), customKeys = resume.customKeys(id), localStorageId = qq.format("qq{}resume{}-{}-{}-{}-{}", namespace, formatVersion, name, size, chunkSize, endpoint);
customKeys.forEach(function(key) {
localStorageId += "-" + key;
});
return localStorageId;
},
_getMimeType: function(id) {
return handler.getFile(id).type;
@ -3659,7 +3853,7 @@
},
_getTotalChunks: function(id) {
if (chunking) {
var fileSize = getSize(id), chunkSize = chunking.partSize;
var fileSize = getSize(id), chunkSize = getChunkSize(id);
return Math.ceil(fileSize / chunkSize);
}
},
@ -3717,6 +3911,7 @@
state.key = persistedData.key;
state.chunking = persistedData.chunking;
state.loaded = persistedData.loaded;
state.customResumeData = persistedData.customResumeData;
state.attemptingResume = true;
handler.moveInProgressToRemaining(id);
}
@ -3726,6 +3921,7 @@
_maybePersistChunkedState: function(id) {
var state = handler._getFileState(id), localStorageId, persistedData;
if (resumeEnabled && handler.isResumable(id)) {
var customResumeData = getCustomResumeData(id);
localStorageId = handler._getLocalStorageId(id);
persistedData = {
name: getName(id),
@ -3736,6 +3932,9 @@
loaded: state.loaded,
lastUpdated: Date.now()
};
if (customResumeData) {
persistedData.customResumeData = customResumeData;
}
try {
localStorage.setItem(localStorageId, JSON.stringify(persistedData));
} catch (error) {
@ -3792,10 +3991,12 @@
},
_shouldChunkThisFile: function(id) {
var state = handler._getFileState(id);
if (!state.chunking) {
handler.reevaluateChunking(id);
if (state) {
if (!state.chunking) {
handler.reevaluateChunking(id);
}
return state.chunking.enabled;
}
return state.chunking.enabled;
}
});
};
@ -5322,18 +5523,24 @@
"use strict";
var handler = this, getName = proxy.getName, getSize = proxy.getSize, getUuid = proxy.getUuid, log = proxy.log, multipart = spec.forceMultipart || spec.paramsInBody, addChunkingSpecificParams = function(id, params, chunkData) {
var size = getSize(id), name = getName(id);
params[spec.chunking.paramNames.partIndex] = chunkData.part;
params[spec.chunking.paramNames.partByteOffset] = chunkData.start;
params[spec.chunking.paramNames.chunkSize] = chunkData.size;
params[spec.chunking.paramNames.totalParts] = chunkData.count;
params[spec.totalFileSizeName] = size;
if (multipart) {
if (!spec.omitDefaultParams) {
params[spec.chunking.paramNames.partIndex] = chunkData.part;
params[spec.chunking.paramNames.partByteOffset] = chunkData.start;
params[spec.chunking.paramNames.chunkSize] = chunkData.size;
params[spec.chunking.paramNames.totalParts] = chunkData.count;
params[spec.totalFileSizeName] = size;
}
if (multipart && !spec.omitDefaultParams) {
params[spec.filenameParam] = name;
}
}, allChunksDoneRequester = new qq.traditional.AllChunksDoneAjaxRequester({
cors: spec.cors,
endpoint: spec.chunking.success.endpoint,
log: log
headers: spec.chunking.success.headers,
jsonPayload: spec.chunking.success.jsonPayload,
log: log,
method: spec.chunking.success.method,
params: spec.chunking.success.params
}), createReadyStateChangedHandler = function(id, xhr) {
var promise = new qq.Promise();
xhr.onreadystatechange = function() {
@ -5355,7 +5562,7 @@
params[spec.chunking.paramNames.totalParts] = handler._getTotalChunks(id);
return params;
}, isErrorUploadResponse = function(xhr, response) {
return qq.indexOf([ 200, 201, 202, 203, 204 ], xhr.status) < 0 || !response.success || response.reset;
return qq.indexOf([ 200, 201, 202, 203, 204 ], xhr.status) < 0 || spec.requireSuccessJson && !response.success || response.reset;
}, onUploadOrChunkComplete = function(id, xhr) {
var response;
log("xhr - server response received for " + id);
@ -5371,7 +5578,7 @@
log(qq.format("Received response status {} with body: {}", xhr.status, xhr.responseText));
response = qq.parseJson(xhr.responseText);
} catch (error) {
upload && log("Error when attempting to parse xhr response text (" + error.message + ")", "error");
upload && spec.requireSuccessJson && log("Error when attempting to parse xhr response text (" + error.message + ")", "error");
}
return response;
}, sendChunksCompleteRequest = function(id) {
@ -5382,17 +5589,32 @@
promise.failure(parseResponse(false, xhr), xhr);
});
return promise;
}, setParamsAndGetEntityToSend = function(params, xhr, fileOrBlob, id) {
var formData = new FormData(), method = spec.method, endpoint = spec.endpointStore.get(id), name = getName(id), size = getSize(id);
params[spec.uuidName] = getUuid(id);
params[spec.filenameParam] = name;
if (multipart) {
params[spec.totalFileSizeName] = size;
}
if (!spec.paramsInBody) {
if (!multipart) {
}, setParamsAndGetEntityToSend = function(entityToSendParams) {
var fileOrBlob = entityToSendParams.fileOrBlob;
var id = entityToSendParams.id;
var xhr = entityToSendParams.xhr;
var xhrOverrides = entityToSendParams.xhrOverrides || {};
var customParams = entityToSendParams.customParams || {};
var defaultParams = entityToSendParams.params || {};
var xhrOverrideParams = xhrOverrides.params || {};
var params;
var formData = multipart ? new FormData() : null, method = xhrOverrides.method || spec.method, endpoint = xhrOverrides.endpoint || spec.endpointStore.get(id), name = getName(id), size = getSize(id);
if (spec.omitDefaultParams) {
params = qq.extend({}, customParams);
qq.extend(params, xhrOverrideParams);
} else {
params = qq.extend({}, customParams);
qq.extend(params, xhrOverrideParams);
qq.extend(params, defaultParams);
params[spec.uuidName] = getUuid(id);
params[spec.filenameParam] = name;
if (multipart) {
params[spec.totalFileSizeName] = size;
} else if (!spec.paramsInBody) {
params[spec.inputName] = name;
}
}
if (!spec.paramsInBody) {
endpoint = qq.obj2url(params, endpoint);
}
xhr.open(method, endpoint, true);
@ -5407,42 +5629,74 @@
return formData;
}
return fileOrBlob;
}, setUploadHeaders = function(id, xhr) {
var extraHeaders = spec.customHeaders.get(id), fileOrBlob = handler.getFile(id);
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("Cache-Control", "no-cache");
if (!multipart) {
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.setRequestHeader("X-Mime-Type", fileOrBlob.type);
}, setUploadHeaders = function(headersOptions) {
var headerOverrides = headersOptions.headerOverrides;
var id = headersOptions.id;
var xhr = headersOptions.xhr;
if (headerOverrides) {
qq.each(headerOverrides, function(headerName, headerValue) {
xhr.setRequestHeader(headerName, headerValue);
});
} else {
var extraHeaders = spec.customHeaders.get(id), fileOrBlob = handler.getFile(id);
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("Cache-Control", "no-cache");
if (!multipart) {
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.setRequestHeader("X-Mime-Type", fileOrBlob.type);
}
qq.each(extraHeaders, function(name, val) {
xhr.setRequestHeader(name, val);
});
}
qq.each(extraHeaders, function(name, val) {
xhr.setRequestHeader(name, val);
});
};
qq.extend(this, {
uploadChunk: function(id, chunkIdx, resuming) {
var chunkData = handler._getChunkData(id, chunkIdx), xhr = handler._createXhr(id, chunkIdx), size = getSize(id), promise, toSend, params;
uploadChunk: function(uploadChunkParams) {
var id = uploadChunkParams.id;
var chunkIdx = uploadChunkParams.chunkIdx;
var overrides = uploadChunkParams.overrides || {};
var resuming = uploadChunkParams.resuming;
var chunkData = handler._getChunkData(id, chunkIdx), xhr = handler._createXhr(id, chunkIdx), promise, toSend, customParams, params = {};
promise = createReadyStateChangedHandler(id, xhr);
handler._registerProgressHandler(id, chunkIdx, chunkData.size);
params = spec.paramsStore.get(id);
customParams = spec.paramsStore.get(id);
addChunkingSpecificParams(id, params, chunkData);
if (resuming) {
params[spec.resume.paramNames.resuming] = true;
}
toSend = setParamsAndGetEntityToSend(params, xhr, chunkData.blob, id);
setUploadHeaders(id, xhr);
toSend = setParamsAndGetEntityToSend({
fileOrBlob: chunkData.blob,
id: id,
customParams: customParams,
params: params,
xhr: xhr,
xhrOverrides: overrides
});
setUploadHeaders({
headerOverrides: overrides.headers,
id: id,
xhr: xhr
});
xhr.send(toSend);
return promise;
},
uploadFile: function(id) {
var fileOrBlob = handler.getFile(id), promise, xhr, params, toSend;
var fileOrBlob = handler.getFile(id), promise, xhr, customParams, toSend;
xhr = handler._createXhr(id);
handler._registerProgressHandler(id);
promise = createReadyStateChangedHandler(id, xhr);
params = spec.paramsStore.get(id);
toSend = setParamsAndGetEntityToSend(params, xhr, fileOrBlob, id);
setUploadHeaders(id, xhr);
customParams = spec.paramsStore.get(id);
toSend = setParamsAndGetEntityToSend({
fileOrBlob: fileOrBlob,
id: id,
customParams: customParams,
xhr: xhr
});
setUploadHeaders({
id: id,
xhr: xhr
});
xhr.send(toSend);
return promise;
}
@ -5458,6 +5712,7 @@
qq.override(this, function(super_) {
return {
finalizeChunks: function(id) {
proxy.onFinalizing(id);
if (spec.chunking.success.endpoint) {
return sendChunksCompleteRequest(id);
} else {
@ -5469,24 +5724,29 @@
};
qq.traditional.AllChunksDoneAjaxRequester = function(o) {
"use strict";
var requester, method = "POST", options = {
var requester, options = {
cors: {
allowXdr: false,
expected: false,
sendCredentials: false
},
endpoint: null,
log: function(str, level) {}
log: function(str, level) {},
method: "POST"
}, promises = {}, endpointHandler = {
get: function(id) {
if (qq.isFunction(options.endpoint)) {
return options.endpoint(id);
}
return options.endpoint;
}
};
qq.extend(options, o);
requester = qq.extend(this, new qq.AjaxRequester({
acceptHeader: "application/json",
validMethods: [ method ],
method: method,
contentType: options.jsonPayload ? "application/json" : "application/x-www-form-urlencoded",
validMethods: [ options.method ],
method: options.method,
endpointStore: endpointHandler,
allowXRequestedWithAndCacheControl: false,
cors: options.cors,
@ -5506,7 +5766,7 @@
var promise = new qq.Promise();
options.log("Submitting All Chunks Done request for " + id);
promises[id] = promise;
requester.initTransport(id).withParams(params).withHeaders(headers).send(xhr);
requester.initTransport(id).withParams(options.params(id) || params).withHeaders(options.headers(id) || headers).send(xhr);
return promise;
}
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
.qq-uploader{position:relative;width:100%}.qq-upload-button{display:block;width:105px;padding:7px 0;text-align:center;background:#800;border-bottom:1px solid #DDD;color:#FFF}.qq-upload-button-hover{background:#C00}.qq-upload-button-focus{outline:#000 dotted 1px}.qq-upload-drop-area,.qq-upload-extra-drop-area{position:absolute;top:0;left:0;width:100%;height:100%;min-height:30px;z-index:2;background:#FF9797;text-align:center}.qq-upload-drop-area span{display:block;position:absolute;top:50%;width:100%;margin-top:-8px;font-size:16px}.qq-upload-extra-drop-area{position:relative;margin-top:50px;font-size:16px;padding-top:30px;height:20px;min-height:40px}.qq-upload-drop-area-active{background:#FF7171}.qq-upload-list{margin:0;padding:0;list-style:none}.qq-upload-list li{margin:0;padding:9px;line-height:15px;font-size:16px;background-color:#FFF0BD}.qq-upload-cancel,.qq-upload-continue,.qq-upload-delete,.qq-upload-failed-text,.qq-upload-file,.qq-upload-pause,.qq-upload-retry,.qq-upload-size,.qq-upload-spinner{margin-right:12px;display:inline}.qq-upload-spinner{display:inline-block;background:url(loading.gif);width:15px;height:15px;vertical-align:text-bottom}.qq-drop-processing{display:block}.qq-drop-processing-spinner{display:inline-block;background:url(processing.gif);width:24px;height:24px;vertical-align:text-bottom}.qq-upload-continue,.qq-upload-delete,.qq-upload-pause{display:inline}.qq-upload-cancel,.qq-upload-continue,.qq-upload-delete,.qq-upload-pause,.qq-upload-retry{color:#000}.qq-upload-cancel,.qq-upload-continue,.qq-upload-delete,.qq-upload-pause,.qq-upload-retry,.qq-upload-size{font-size:12px;font-weight:400}.qq-upload-failed-text{display:none;font-style:italic;font-weight:700}.qq-upload-failed-icon{display:none;width:15px;height:15px;vertical-align:text-bottom}.qq-upload-fail .qq-upload-failed-text{display:inline}.qq-upload-retrying .qq-upload-failed-text{display:inline;color:#D60000}.qq-upload-list li.qq-upload-success{background-color:#5DA30C;color:#FFF}.qq-upload-list li.qq-upload-fail{background-color:#D60000;color:#FFF}.qq-progress-bar{display:block;background:-moz-linear-gradient(top,rgba(30,87,153,1) 0,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(30,87,153,1)),color-stop(50%,rgba(41,137,216,1)),color-stop(51%,rgba(32,124,202,1)),color-stop(100%,rgba(125,185,232,1)));background:-webkit-linear-gradient(top,rgba(30,87,153,1) 0,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%);background:-o-linear-gradient(top,rgba(30,87,153,1) 0,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%);background:-ms-linear-gradient(top,rgba(30,87,153,1) 0,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%);background:linear-gradient(to bottom,rgba(30,87,153,1) 0,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%);width:0;height:15px;border-radius:6px;margin-bottom:3px}.qq-total-progress-bar{height:25px;border-radius:9px}.qq-total-progress-bar-container{margin:9px}INPUT.qq-edit-filename{position:absolute;opacity:0;filter:alpha(opacity=0);z-index:-1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.qq-upload-file.qq-editable{cursor:pointer}.qq-edit-filename-icon.qq-editable{display:inline-block;cursor:pointer}.qq-hide,.qq-uploader DIALOG{display:none}INPUT.qq-edit-filename.qq-editing{position:static;margin-top:-5px;margin-right:10px;margin-bottom:-5px;opacity:1;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.qq-edit-filename-icon{display:none;background:url(edit.gif);width:15px;height:15px;vertical-align:text-bottom;margin-right:5px}.qq-uploader DIALOG[open]{display:block}.qq-uploader DIALOG .qq-dialog-buttons{text-align:center;padding-top:10px}.qq-uploader DIALOG .qq-dialog-buttons BUTTON{margin-left:5px;margin-right:5px}.qq-uploader DIALOG .qq-dialog-message-selector{padding-bottom:10px}.qq-uploader DIALOG::backdrop{background-color:rgba(0,0,0,.7)}/*# sourceMappingURL=fine-uploader.min.css.map */
.qq-uploader{position:relative;width:100%}.qq-upload-button{display:block;width:105px;padding:7px 0;text-align:center;background:#800;border-bottom:1px solid #ddd;color:#fff}.qq-upload-button-hover{background:#c00}.qq-upload-button-focus{outline:1px dotted #000}.qq-upload-drop-area,.qq-upload-extra-drop-area{position:absolute;top:0;left:0;width:100%;height:100%;min-height:30px;z-index:2;background:#ff9797;text-align:center}.qq-upload-drop-area span{display:block;position:absolute;top:50%;width:100%;margin-top:-8px;font-size:16px}.qq-upload-extra-drop-area{position:relative;margin-top:50px;font-size:16px;padding-top:30px;height:20px;min-height:40px}.qq-upload-drop-area-active{background:#ff7171}.qq-upload-list{margin:0;padding:0;list-style:none}.qq-upload-list li{margin:0;padding:9px;line-height:15px;font-size:16px;background-color:#fff0bd}.qq-upload-cancel,.qq-upload-continue,.qq-upload-delete,.qq-upload-failed-text,.qq-upload-file,.qq-upload-pause,.qq-upload-retry,.qq-upload-size,.qq-upload-spinner{margin-right:12px;display:inline}.qq-upload-spinner{display:inline-block;background:url(loading.gif);width:15px;height:15px;vertical-align:text-bottom}.qq-drop-processing{display:block}.qq-drop-processing-spinner{display:inline-block;background:url(processing.gif);width:24px;height:24px;vertical-align:text-bottom}.qq-upload-continue,.qq-upload-delete,.qq-upload-pause{display:inline}.qq-upload-cancel,.qq-upload-continue,.qq-upload-delete,.qq-upload-pause,.qq-upload-retry{color:#000}.qq-upload-cancel,.qq-upload-continue,.qq-upload-delete,.qq-upload-pause,.qq-upload-retry,.qq-upload-size{font-size:12px;font-weight:400}.qq-upload-failed-text{display:none;font-style:italic;font-weight:700}.qq-upload-failed-icon{display:none;width:15px;height:15px;vertical-align:text-bottom}.qq-upload-fail .qq-upload-failed-text{display:inline}.qq-upload-retrying .qq-upload-failed-text{display:inline;color:#d60000}.qq-upload-list li.qq-upload-success{background-color:#5da30c;color:#fff}.qq-upload-list li.qq-upload-fail{background-color:#d60000;color:#fff}.qq-progress-bar{display:block;background:-moz-linear-gradient(top,rgba(30,87,153,1) 0,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(30,87,153,1)),color-stop(50%,rgba(41,137,216,1)),color-stop(51%,rgba(32,124,202,1)),color-stop(100%,rgba(125,185,232,1)));background:-webkit-linear-gradient(top,rgba(30,87,153,1) 0,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%);background:-o-linear-gradient(top,rgba(30,87,153,1) 0,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%);background:-ms-linear-gradient(top,rgba(30,87,153,1) 0,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%);background:linear-gradient(to bottom,rgba(30,87,153,1) 0,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%);width:0;height:15px;border-radius:6px;margin-bottom:3px}.qq-total-progress-bar{height:25px;border-radius:9px}.qq-total-progress-bar-container{margin:9px}INPUT.qq-edit-filename{position:absolute;opacity:0;z-index:-1}.qq-upload-file.qq-editable{cursor:pointer}.qq-edit-filename-icon.qq-editable{display:inline-block;cursor:pointer}INPUT.qq-edit-filename.qq-editing{position:static;margin-top:-5px;margin-right:10px;margin-bottom:-5px;opacity:1}.qq-edit-filename-icon{display:none;background:url(edit.gif);width:15px;height:15px;vertical-align:text-bottom;margin-right:5px}.qq-hide{display:none}.qq-uploader DIALOG{display:none}.qq-uploader DIALOG[open]{display:block}.qq-uploader DIALOG{display:none}.qq-uploader DIALOG[open]{display:block}.qq-uploader DIALOG .qq-dialog-buttons{text-align:center;padding-top:10px}.qq-uploader DIALOG .qq-dialog-buttons BUTTON{margin-left:5px;margin-right:5px}.qq-uploader DIALOG .qq-dialog-message-selector{padding-bottom:10px}.qq-uploader DIALOG::backdrop{background-color:rgba(0,0,0,.7)}/*# sourceMappingURL=fine-uploader.min.css.map */

View File

@ -1 +1 @@
{"version":3,"sources":["_build/fine-uploader.css"],"names":[],"mappings":"AAAA,aACI,SAAU,SACV,MAAO,KAEX,kBACI,QAAS,MACT,MAAO,MACP,QAAS,IAAI,EACb,WAAY,OACZ,WAAY,KACZ,cAAe,IAAI,MAAM,KACzB,MAAO,KAEX,wBACI,WAAY,KAEhB,wBACI,QAAoB,KAAP,OAAJ,IAEb,qBAAsB,2BAClB,SAAU,SACV,IAAK,EACL,KAAM,EACN,MAAO,KACP,OAAQ,KACR,WAAY,KACZ,QAAS,EACT,WAAY,QACZ,WAAY,OAEhB,0BACI,QAAS,MACT,SAAU,SACV,IAAK,IACL,MAAO,KACP,WAAY,KACZ,UAAW,KAEf,2BACI,SAAU,SACV,WAAY,KACZ,UAAW,KACX,YAAa,KACb,OAAQ,KACR,WAAY,KAEhB,4BACI,WAAY,QAEhB,gBACI,OAAQ,EACR,QAAS,EACT,WAAY,KAEhB,mBACI,OAAQ,EACR,QAAS,IACT,YAAa,KACb,UAAW,KACX,iBAAkB,QAGtB,kBACqC,oBAArC,kBADqC,uBADrC,gBAEmB,iBADA,iBADkB,gBAApB,mBAGb,aAAc,KACd,QAAS,OAIb,mBACI,QAAS,aACT,WAAY,iBACZ,MAAO,KACP,OAAQ,KACR,eAAgB,YAEpB,oBACI,QAAS,MAEb,4BACI,QAAS,aACT,WAAY,oBACZ,MAAO,KACP,OAAQ,KACR,eAAgB,YAGiB,oBAArC,kBAAmB,iBACf,QAAS,OAGwB,kBACnB,oBADA,kBAClB,iBADA,iBAEI,MAAO,KAGM,kBACoB,oBAArC,kBAAmB,iBADiB,iBAApC,gBAEI,UAAW,KACX,YAAa,IAEjB,uBACI,QAAS,KACT,WAAY,OACZ,YAAa,IAEjB,uBACI,QAAQ,KACR,MAAM,KACN,OAAO,KACP,eAAe,YAEnB,uCACI,QAAS,OAEb,2CACI,QAAS,OACT,MAAO,QAEX,qCACI,iBAAkB,QAClB,MAAO,KAEX,kCACI,iBAAkB,QAClB,MAAO,KAEX,iBACI,QAAS,MACT,WAAY,qHACZ,WAAwB,yLACxB,WAA8C,wHAC9C,WAAyE,mHACzE,WAA4F,oHAC5F,WAAwG,sHACxG,MAA6G,EAC7G,OAAQ,KACR,cAAe,IACf,cAAe,IAGnB,uBACI,OAAQ,KACR,cAAe,IAGnB,iCACI,OAAQ,IAGZ,uBACI,SAAU,SACV,QAAS,EACT,OAAQ,iBACR,QAAS,GACT,WAAY,qDAGhB,4BACI,OAAQ,QAGZ,mCACI,QAAS,aACT,OAAQ,QAuBZ,SAaA,oBACI,QAAS,KAlCb,kCACI,SAAU,OACV,WAAY,KACZ,aAAc,KACd,cAAe,KAEf,QAAS,EACT,OAAQ,mBACR,WAAY,uDAGhB,uBACI,QAAS,KACT,WAAY,cACZ,MAAO,KACP,OAAQ,KACR,eAAgB,YAChB,aAAc,IAoBlB,0BACI,QAAS,MAGb,uCACI,WAAY,OACZ,YAAa,KAGjB,8CACI,YAAa,IACb,aAAc,IAGlB,gDACI,eAAgB,KAGpB,8BACI,iBAAkB"}
{"version":3,"sources":["_build/fine-uploader.css"],"names":[],"mappings":"AAAA,aACI,SAAU,SACV,MAAO,KAEX,kBACI,QAAS,MACT,MAAO,MACP,QAAS,IAAI,EACb,WAAY,OACZ,WAAY,KACZ,cAAe,IAAI,MAAM,KACzB,MAAO,KAEX,wBACI,WAAY,KAEhB,wBACI,QAAS,IAAI,OAAO,KAExB,qBAAsB,2BAClB,SAAU,SACV,IAAK,EACL,KAAM,EACN,MAAO,KACP,OAAQ,KACR,WAAY,KACZ,QAAS,EACT,WAAY,QACZ,WAAY,OAEhB,0BACI,QAAS,MACT,SAAU,SACV,IAAK,IACL,MAAO,KACP,WAAY,KACZ,UAAW,KAEf,2BACI,SAAU,SACV,WAAY,KACZ,UAAW,KACX,YAAa,KACb,OAAQ,KACR,WAAY,KAEhB,4BACI,WAAY,QAEhB,gBACI,OAAQ,EACR,QAAS,EACT,WAAY,KAEhB,mBACI,OAAQ,EACR,QAAS,IACT,YAAa,KACb,UAAW,KACX,iBAAkB,QAGtB,kBACqC,oBAArC,kBADqC,uBADrC,gBAEmB,iBADA,iBADkB,gBAApB,mBAGb,aAAc,KACd,QAAS,OAIb,mBACI,QAAS,aACT,WAAY,iBACZ,MAAO,KACP,OAAQ,KACR,eAAgB,YAEpB,oBACI,QAAS,MAEb,4BACI,QAAS,aACT,WAAY,oBACZ,MAAO,KACP,OAAQ,KACR,eAAgB,YAGiB,oBAArC,kBAAmB,iBACf,QAAS,OAGwB,kBACnB,oBADA,kBAClB,iBADA,iBAEI,MAAO,KAGM,kBACoB,oBAArC,kBAAmB,iBADiB,iBAApC,gBAEI,UAAW,KACX,YAAa,IAEjB,uBACI,QAAS,KACT,WAAY,OACZ,YAAa,IAEjB,uBACI,QAAQ,KACR,MAAM,KACN,OAAO,KACP,eAAe,YAEnB,uCACI,QAAS,OAEb,2CACI,QAAS,OACT,MAAO,QAEX,qCACI,iBAAkB,QAClB,MAAO,KAEX,kCACI,iBAAkB,QAClB,MAAO,KAEX,iBACI,QAAS,MACT,WAAY,qHACZ,WAAY,yLACZ,WAAY,wHACZ,WAAY,mHACZ,WAAY,oHACZ,WAAY,sHACZ,MAAO,EACP,OAAQ,KACR,cAAe,IACf,cAAe,IAGnB,uBACI,OAAQ,KACR,cAAe,IAGnB,iCACI,OAAQ,IAGZ,uBACI,SAAU,SACV,QAAS,EAET,QAAS,GAIb,4BACI,OAAQ,QAGZ,mCACI,QAAS,aACT,OAAQ,QAGZ,kCACI,SAAU,OACV,WAAY,KACZ,aAAc,KACd,cAAe,KAEf,QAAS,EAKb,uBACI,QAAS,KACT,WAAY,cACZ,MAAO,KACP,OAAQ,KACR,eAAgB,YAChB,aAAc,IAGlB,SACI,QAAS,KAIb,oBACI,QAAS,KAGb,0BACI,QAAS,MAGb,oBACI,QAAS,KAGb,0BACI,QAAS,MAGb,uCACI,WAAY,OACZ,YAAa,KAGjB,8CACI,YAAa,IACb,aAAc,IAGlB,gDACI,eAAgB,KAGpB,8BACI,iBAAkB"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -68,16 +68,21 @@ $scheduler = new SeedDMS_Scheduler($db);
$tasks = $scheduler->getTasks();
foreach($tasks as $task) {
if(is_object($taskobj = $GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()])) {
if(isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()]) && is_object($taskobj = $GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()])) {
switch($mode) {
case "run":
if(method_exists($taskobj, 'execute')) {
if(!$task->getDisabled()) {
if($taskobj->execute($task, $dms)) {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." successful.");
$task->updateLastNextRun();
if($user = $dms->getUserByLogin('cli_scheduler')) {
if($taskobj->execute($task, $dms, $user)) {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." successful.");
$task->updateLastNextRun();
} else {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." failed, task has been disabled.", PEAR_LOG_ERR);
$task->setDisabled(1);
}
} else {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." failed, task has been disabled.", PEAR_LOG_ERR);
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." failed because of missing user 'cli_scheduler'. Task has been disabled.", PEAR_LOG_ERR);
$task->setDisabled(1);
}
}

View File

@ -41,7 +41,7 @@ class SeedDMS_View_AddDocument extends SeedDMS_Bootstrap_Style {
header('Content-Type: application/javascript; charset=UTF-8');
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() {
@ -158,6 +158,7 @@ $(document).ready(function() {
$folder = $this->params['folder'];
$enablelargefileupload = $this->params['enablelargefileupload'];
$enablemultiupload = $this->params['enablemultiupload'];
$maxuploadsize = $this->params['maxuploadsize'];
$enableadminrevapp = $this->params['enableadminrevapp'];
$enableownerrevapp = $this->params['enableownerrevapp'];
$enableselfrevapp = $this->params['enableselfrevapp'];
@ -188,7 +189,11 @@ $(document).ready(function() {
$this->contentStart();
$this->pageNavigation($this->getFolderPathHTML($folder, true), "view_folder", $folder);
$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);
$this->warningMsg($msg);
$this->contentHeading(getMLText("add_document"));

View File

@ -126,6 +126,7 @@ $(document).ready( function() {
$document = $this->params['document'];
$strictformcheck = $this->params['strictformcheck'];
$enablelargefileupload = $this->params['enablelargefileupload'];
$maxuploadsize = $this->params['maxuploadsize'];
$this->htmlAddHeader('<script type="text/javascript" src="../styles/'.$this->theme.'/validate/jquery.validate.js"></script>'."\n", 'js');
if($enablelargefileupload) {
@ -139,16 +140,13 @@ $(document).ready( function() {
$this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document);
$this->contentHeading(getMLText("linked_files"));
?>
<div class="alert alert-warning">
<?php echo getMLText("max_upload_size").": ".ini_get( "upload_max_filesize"); ?>
<?php
if(0 && $enablelargefileupload) {
printf('<p>'.getMLText('link_alt_updatedocument').'</p>', "out.AddFile2.php?documentid=".$document->getId());
}
?>
</div>
<?php
$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);
$this->warningMsg($msg);
$this->contentContainerStart();
?>

View File

@ -39,6 +39,7 @@ class SeedDMS_View_AttributeMgr extends SeedDMS_Bootstrap_Style {
function js() { /* {{{ */
$selattrdef = $this->params['selattrdef'];
header('Content-Type: application/javascript');
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder'));
?>
$(document).ready( function() {

View File

@ -464,7 +464,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
}
if($this->params['enableclipboard']) {
echo " <div id=\"menu-clipboard\">";
echo " <div class=\"ajax\" data-no-spinner=\"true\" data-view=\"Clipboard\" data-action=\"menuClipboard\" data-query=\"folderid=23\"></div>";
echo " <div class=\"ajax\" data-no-spinner=\"true\" data-view=\"Clipboard\" data-action=\"menuClipboard\" data-query=\"folderid=".($folder != null ? $folder->getID() : 0)."\"></div>";
echo " </div>";
}
@ -2092,12 +2092,14 @@ $(function() {
* @param array clipboard
*/
function printClipboard($clipboard, $previewer){ /* {{{ */
$this->contentHeading(getMLText("clipboard"), true);
echo "<div id=\"clipboard-container\" class=\"_clipboard-container\">\n";
$this->contentHeading(getMLText("clipboard").'<span id="clipboard-float"><i class="icon-sort"></i></span>', true);
echo "<div id=\"main-clipboard\">\n";
?>
<div class="ajax" data-view="Clipboard" data-action="mainClipboard"></div>
<?php
echo "</div>\n";
echo "</div>\n";
} /* }}} */
/**
@ -3047,7 +3049,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
* @param integer $maxfiles maximum number of files allowed to upload
* @param array $fields list of post fields
*/
function printFineUploaderJs($uploadurl, $partsize=0, $maxuploadsize=0, $multiple=true, $prefix='userfile') { /* {{{ */
function printFineUploaderJs($uploadurl, $partsize=0, $maxuploadsize=0, $multiple=true, $prefix='userfile', $formname='form1') { /* {{{ */
?>
$(document).ready(function() {
<?php echo $prefix; ?>uploader = new qq.FineUploader({
@ -3086,7 +3088,7 @@ $(document).ready(function() {
$('#<?php echo $prefix; ?>-fine-uploader-names').val(names.join(';'));
/* Run upload only if all files could be uploaded */
if(succeeded.length > 0 && failed.length == 0)
document.getElementById('form1').submit();
document.getElementById('<?= $formname ?>').submit();
},
onError: function(id, name, reason, xhr) {
noty({

View File

@ -39,6 +39,7 @@ class SeedDMS_View_Categories extends SeedDMS_Bootstrap_Style {
function js() { /* {{{ */
$selcat = $this->params['selcategory'];
header('Content-Type: application/javascript');
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder'));
?>
$(document).ready( function() {
$( "#selector" ).change(function() {

View File

@ -57,15 +57,15 @@ class SeedDMS_View_Clipboard extends SeedDMS_Bootstrap_Style {
$content .= " <ul class=\"dropdown-menu\" role=\"menu\">\n";
foreach($clipboard['folders'] as $folderid) {
if($folder = $this->params['dms']->getFolder($folderid))
$content .= " <li><a href=\"../out/out.ViewFolder.php?folderid=".$folder->getID()."\" class=\"table-row-folder droptarget\" data-droptarget=\"folder_".$folder->getID()."\" rel=\"folder_".$folder->getID()."\" data-uploadformtoken=\"".createFormKey('')."\" formtoken=\"".createFormKey('')."\"><i class=\"icon-folder-close-alt\"></i> ".htmlspecialchars($folder->getName())."</a></li>\n";
$content .= " <li><a href=\"../out/out.ViewFolder.php?folderid=".$folder->getID()."\" class=\"table-row-folder droptarget\" data-droptarget=\"folder_".$folder->getID()."\" rel=\"folder_".$folder->getID()."\" data-name=\"".htmlspecialchars($folder->getName(), ENT_QUOTES)."\" data-uploadformtoken=\"".createFormKey('')."\" formtoken=\"".createFormKey('')."\"><i class=\"icon-folder-close-alt\"></i> ".htmlspecialchars($folder->getName())."</a></li>\n";
}
foreach($clipboard['docs'] as $docid) {
if($document = $this->params['dms']->getDocument($docid))
$content .= " <li><a href=\"../out/out.ViewDocument.php?documentid=".$document->getID()."\" class=\"table-row-document droptarget\" data-droptarget=\"document_".$document->getID()."\" rel=\"document_".$document->getID()."\"><i class=\"icon-file\"></i> ".htmlspecialchars($document->getName())."</a></li>\n";
$content .= " <li><a href=\"../out/out.ViewDocument.php?documentid=".$document->getID()."\" class=\"table-row-document droptarget\" data-droptarget=\"document_".$document->getID()."\" rel=\"document_".$document->getID()."\" data-name=\"".htmlspecialchars($document->getName(), ENT_QUOTES)."\" formtoken=\"".createFormKey('')."\"><i class=\"icon-file\"></i> ".htmlspecialchars($document->getName())."</a></li>\n";
}
$content .= " <li class=\"divider\"></li>\n";
if(isset($this->params['folder']) && $this->params['folder']->getAccessMode($this->params['user']) >= M_READWRITE) {
$content .= " <li><a href=\"../op/op.MoveClipboard.php?targetid=".$this->params['folder']->getID()."&refferer=".urlencode($this->params['refferer'])."\">".getMLText("move_clipboard")."</a></li>\n";
$content .= " <li><a href=\"../op/op.MoveClipboard.php?targetid=".$this->params['folder']->getID()."&refferer=".urlencode('../out/out.ViewFolder.php?folderid='.$this->params['folder']->getID())."\">".getMLText("move_clipboard")."</a></li>\n";
}
// $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";
@ -181,6 +181,9 @@ class SeedDMS_View_Clipboard extends SeedDMS_Bootstrap_Style {
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
$content = '';
$txt = $this->callHook('preClipboard', $clipboard);
if(is_string($txt))
$content .= $txt;
$foldercount = $doccount = 0;
if($clipboard['folders']) {
foreach($clipboard['folders'] as $folderid) {
@ -223,6 +226,9 @@ class SeedDMS_View_Clipboard extends SeedDMS_Bootstrap_Style {
} else {
}
$content .= "<div class=\"alert add-clipboard-area\">".getMLText("drag_icon_here")."</div>";
$txt = $this->callHook('postClipboard', $clipboard);
if(is_string($txt))
$content .= $txt;
echo $content;
} /* }}} */

View File

@ -37,6 +37,7 @@ class SeedDMS_View_ErrorDlg extends SeedDMS_Bootstrap_Style {
$pagetitle = $this->params['pagetitle'];
$errormsg = $this->params['errormsg'];
$plain = $this->params['plain'];
$showbutton = $this->hasParam('nobackbutton') === false || $this->getParam('nobackbutton') === false;
$settings = $this->params['settings'];
if(!$plain) {
@ -49,7 +50,8 @@ class SeedDMS_View_ErrorDlg extends SeedDMS_Bootstrap_Style {
print "<h4>".getMLText('error')."!</h4>";
print htmlspecialchars($errormsg);
print "</div>";
print "<div><button class=\"btn history-back\">".getMLText('back')."</button></div>";
if($showbutton)
print "<div><button class=\"btn history-back\">".getMLText('back')."</button></div>";
$this->contentEnd();
$this->htmlEndPage();

View File

@ -38,6 +38,7 @@ class SeedDMS_View_MyDocuments extends SeedDMS_Bootstrap_Style {
function js() { /* {{{ */
header('Content-Type: application/javascript');
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder'));
$this->printClickDocumentJs();
?>
$(document).ready( function() {
@ -116,6 +117,7 @@ $(document).ready( function() {
$timeout = $this->params['timeout'];
$xsendfile = $this->params['xsendfile'];
$db = $dms->getDB();
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
$previewer->setConverters($previewconverters);
@ -709,6 +711,8 @@ $(document).ready( function() {
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
$previewer->setConverters($previewconverters);
$this->htmlAddHeader('<script type="text/javascript" src="../styles/'.$this->theme.'/bootbox/bootbox.min.js"></script>'."\n", 'js');
$this->htmlStartPage(getMLText("my_documents"));
$this->globalNavigation();
$this->contentStart();

View File

@ -55,6 +55,8 @@ class SeedDMS_View_ReceiptSummary extends SeedDMS_Bootstrap_Style {
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
$previewer->setConverters($previewconverters);
$this->htmlAddHeader('<script type="text/javascript" src="../styles/'.$this->theme.'/bootbox/bootbox.min.js"></script>'."\n", 'js');
$this->htmlStartPage(getMLText("my_documents"));
$this->globalNavigation();
$this->contentStart();

View File

@ -44,6 +44,52 @@ $(document).ready( function() {
$('#editaddtask.ajax').trigger('update', {taskid: $(this).data('id'), action: $(this).data('action')});
});
$('#listtasks.ajax').trigger('update', {});
$('body').on('click', '.removetask', function(ev){
ev.preventDefault();
ev.stopPropagation();
id = $(ev.currentTarget).attr('rel');
confirmmsg = $(ev.currentTarget).attr('confirmmsg');
msg = $(ev.currentTarget).attr('msg');
formtoken = '<?= createFormKey('removetask') ?>';
bootbox.dialog(confirmmsg, [{
"label" : "<i class='icon-remove'></i> <?= getMLText("rm_task") ?>",
"class" : "btn-danger",
"callback": function() {
$.post('../op/op.SchedulerTaskMgr.php',
{ action: 'removetask', taskid: id, formtoken: formtoken },
function(data) {
if(data.success) {
$('#table-row-task-'+id).hide('slow');
noty({
text: msg,
type: 'success',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
} else {
noty({
text: data.message,
type: 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 3500,
});
}
},
'json'
);
}
}, {
"label" : "<?= getMLText("cancel") ?>",
"class" : "btn-cancel",
"callback": function() {
}
}]);
});
});
<?php
} /* }}} */
@ -93,6 +139,19 @@ $(document).ready( function() {
if($additionalparams) {
foreach($additionalparams as $param) {
switch($param['type']) {
case 'boolean':
$this->formField(
getMLText("task_".$extname."_".$taskname."_".$param['name']),
array(
'element'=>'input',
'type'=>'checkbox',
'id'=>'params_'.$param['name'],
'name'=>'params['.$param['name'].']',
'value'=>'1',
'checked'=>false,
)
);
break;
default:
?>
<div class="control-group">
@ -125,6 +184,11 @@ $(document).ready( function() {
$taskid = $this->params['taskid'];
$task = $scheduler->getTask($taskid);
if(!isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()])) {
$this->errorMsg(getMLText('scheduler_extension_not_available'));
return;
}
$taskobj = $GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()][$task->getTask()];
?>
<form action="../op/op.SchedulerTaskMgr.php" method="post" class="form-horizontal">
@ -168,6 +232,19 @@ $(document).ready( function() {
if($additionalparams = $taskobj->getAdditionalParams()) {
foreach($additionalparams as $param) {
switch($param['type']) {
case 'boolean':
$this->formField(
getMLText("task_".$task->getExtension()."_".$task->getTask()."_".$param['name']),
array(
'element'=>'input',
'type'=>'checkbox',
'id'=>'params_'.$param['name'],
'name'=>'params['.$param['name'].']',
'value'=>'1',
'checked'=>$task->getParameter($param['name']) == 1,
)
);
break;
default:
?>
<div class="control-group">
@ -218,7 +295,11 @@ $(document).ready( function() {
print "<th></th>\n";
print "</tr></thead><tbody>\n";
foreach($tasks as $task) {
echo "<tr".(!$task->getDisabled() ? " class=\"success\"" : "").">";
if(!isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()]))
$class = 'error';
else
$class = 'success';
echo "<tr id=\"table-row-task-".$task->getID()."\" class=\"".(!$task->getDisabled() ? " ".$class : "")."\">";
echo "<td>";
echo $task->getExtension()."::".$task->getTask();
echo "</td>";
@ -237,9 +318,12 @@ $(document).ready( function() {
echo "<td>";
echo $task->getLastRun();
echo "</td>";
echo "<td>";
echo "<td nowrap>";
print "<div class=\"list-action\">";
print "<a class=\"edittask\" data-action=\"edittask\" data-id=\"".$task->getID()."\" href=\"../out/out.SchedulerTaskMgr.php?action=edittask\" title=\"".getMLText("edit_task")."\"><i class=\"icon-edit\"></i></a>";
print "<a class=\"removetask\" rel=\"".$task->getID()."\" msg=\"".getMLText('remove_task')."\" confirmmsg=\"".htmlspecialchars(getMLText("confirm_rm_task"), ENT_QUOTES)."\" title=\"".getMLText("remove_task")."\"><i class=\"icon-remove\"></i></a>";
if(isset($GLOBALS['SEEDDMS_SCHEDULER']['tasks'][$task->getExtension()])) {
print "<a class=\"edittask\" data-action=\"edittask\" data-id=\"".$task->getID()."\" href=\"../out/out.SchedulerTaskMgr.php?action=edittask\" title=\"".getMLText("edit_task")."\"><i class=\"icon-edit\"></i></a>";
}
print "</div>";
echo "</td>";
echo "</tr>";
@ -254,6 +338,8 @@ $(document).ready( function() {
$taskname = $this->params['taskname'];
$scheduler = $this->params['scheduler'];
$this->htmlAddHeader('<script type="text/javascript" src="../styles/'.$this->theme.'/bootbox/bootbox.min.js"></script>'."\n", 'js');
$this->htmlStartPage(getMLText("admin_tools"));
$this->globalNavigation();
$this->contentStart();
@ -283,6 +369,7 @@ $(document).ready( function() {
echo "</td>";
echo "<td>";
$params = $task->getAdditionalParams();
$k = array();
foreach($params as $param)
$k[] = $param['name'];
echo implode(', ', $k);

View File

@ -144,6 +144,7 @@ class SeedDMS_View_Timeline extends SeedDMS_Bootstrap_Style {
}
header('Content-Type: application/javascript');
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder'));
?>
$(document).ready(function () {
$('#update').click(function(ev){

View File

@ -32,15 +32,22 @@ require_once("class.Bootstrap.php");
class SeedDMS_View_TransmittalMgr extends SeedDMS_Bootstrap_Style {
function js() { /* {{{ */
$showtree = $this->params['showtree'];
$onepage = $this->params['onepage'];
header('Content-Type: application/javascript; charset=UTF-8');
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder'));
$this->printDeleteDocumentButtonJs();
$this->printDeleteItemButtonJs();
$this->printUpdateItemButtonJs();
if($onepage)
$this->printClickDocumentJs();
?>
$(document).ready( function() {
$('body').on('click', '.selecttransmittal', function(ev){
ev.preventDefault();
$('div.ajax').trigger('update', {transmittalid: $(ev.currentTarget).data('transmittalid')});
window.history.pushState({"html":"","pageTitle":""},"", '../out/out.TransmittalMgr.php?transmittalid=' + $(ev.currentTarget).data('transmittalid'));
});
});
<?php
@ -285,14 +292,15 @@ $(document).ready( function() {
$document = $content->getDocument();
$latestcontent = $document->getLatestContent();
if ($document->getAccessMode($user) >= M_READ) {
echo "<tr id=\"table-row-transmittalitem-".$item->getID()."\">";
// echo "<tr id=\"table-row-transmittalitem-".$item->getID()."\">";
echo $this->documentListRowStart($document);
echo $this->documentListRow($document, $previewer, true, $content->getVersion());
echo "<td><div class=\"list-action\">";
$this->printDeleteItemButton($item, getMLText('transmittalitem_removed'));
if($latestcontent->getVersion() != $content->getVersion())
$this->printUpdateItemButton($item, getMLText('transmittalitem_updated', array('prevversion'=>$content->getVersion(), 'newversion'=>$latestcontent->getVersion())));
echo "</div></td>";
echo "</tr>";
echo $this->documentListRowEnd($document);
}
} else {
echo "<tr id=\"table-row-transmittalitem-".$item->getID()."\">";

View File

@ -212,6 +212,12 @@ console.log(element);
} 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>";
}

View File

@ -192,6 +192,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
$document = $this->params['document'];
header('Content-Type: application/javascript');
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder'));
if($user->isAdmin()) {
$latestContent = $this->callHook('documentLatestContent', $document);
if($latestContent === null)
@ -1179,7 +1180,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
echo "<td>";
if($latestContent->triggerWorkflowTransitionIsAllowed($user, $transition)) {
$action = $transition->getAction();
print "<form action=\"../out/out.TriggerWorkflow.php\" method=\"get\"><input type=\"hidden\" name=\"documentid\" value=\"".$latestContent->getDocument()->getId()."\" /><input type=\"hidden\" name=\"version\" value=\"".$latestContent->getVersion()."\" /><input type=\"hidden\" name=\"transition\" value=\"".$transition->getID()."\" /><input type=\"submit\" class=\"btn\" value=\"".getMLText('action_'.strtolower($action->getName()), array(), $action->getName())."\" /></form>";
print "<form action=\"../out/out.TriggerWorkflow.php\" method=\"get\"><input type=\"hidden\" name=\"documentid\" value=\"".$latestContent->getDocument()->getId()."\" /><input type=\"hidden\" name=\"version\" value=\"".$latestContent->getVersion()."\" /><input type=\"hidden\" name=\"transition\" value=\"".$transition->getID()."\" /><input type=\"submit\" class=\"btn\" value=\"".getMLText('action_'.strtolower($action->getName()), array(), htmlspecialchars($action->getName()))."\" /></form>";
$allowedtransitions[] = $transition;
}
echo "</td>";
@ -1731,7 +1732,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
$responsibleUser = $link->getUser();
$targetDoc = $link->getTarget();
echo "<tr id=\"table-row-document-".$targetDoc->getId()."\" class=\"table-row-document\" rel=\"document_".$targetDoc->getId()."\" formtoken=\"".createFormKey('movedocument')."\" draggable=\"true\">";
echo $this->documentListRowStart($targetDoc);
$targetDoc->verifyLastestContentExpriry();
$txt = $this->callHook('documentListItem', $targetDoc, $previewer, false, 'reverselinks');
if(is_string($txt))
@ -1746,7 +1747,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
if (($user->getID() == $responsibleUser->getID()) || ($document->getAccessMode($user) == M_ALL ))
print "<form action=\"../op/op.RemoveDocumentLink.php\" method=\"post\">".createHiddenFieldWithKey('removedocumentlink')."<input type=\"hidden\" name=\"documentid\" value=\"".$documentid."\" /><input type=\"hidden\" name=\"linkid\" value=\"".$link->getID()."\" /><button type=\"submit\" class=\"btn btn-mini\"><i class=\"icon-remove\"></i> ".getMLText("delete")."</button></form>";
print "</span></td>";
print "</tr>";
echo $this->documentListRowEnd($targetDoc);
}
print "</tbody>\n</table>\n";
}
@ -1796,7 +1797,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
$responsibleUser = $link->getUser();
$sourceDoc = $link->getDocument();
echo "<tr id=\"table-row-document-".$sourceDoc->getId()."\" class=\"table-row-document\" rel=\"document_".$sourceDoc->getId()."\" formtoken=\"".createFormKey('movedocument')."\" draggable=\"true\">";
echo $this->documentListRowStart($sourceDoc);
$sourceDoc->verifyLastestContentExpriry();
$txt = $this->callHook('documentListItem', $sourceDoc, $previewer, false, 'reverselinks');
if(is_string($txt))
@ -1811,7 +1812,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
print "<br />".getMLText("document_link_public").": ".(($link->isPublic()) ? getMLText("yes") : getMLText("no"));
print "<form action=\"../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-mini\"><i class=\"icon-remove\"></i> ".getMLText("delete")."</button></form>";
print "</span></td>";
print "</tr>";
echo $this->documentListRowEnd($sourceDoc);
}
print "</tbody>\n</table>\n";
// $this->contentContainerEnd();

View File

@ -109,6 +109,7 @@ class SeedDMS_View_ViewFolder extends SeedDMS_Bootstrap_Style {
$expandFolderTree = $this->params['expandFolderTree'];
$enableDropUpload = $this->params['enableDropUpload'];
$maxItemsPerPage = $this->params['maxItemsPerPage'];
$maxuploadsize = $this->params['maxuploadsize'];
$showtree = $this->params['showtree'];
$onepage = $this->params['onepage'];
$sitename = trim(strip_tags($this->params['sitename']));
@ -214,7 +215,11 @@ $('body').on('click', '.order-btn', function(ev) {
echo "SeedDMSUpload.setUrl('../op/op.Ajax.php');";
echo "SeedDMSUpload.setAbortBtnLabel('".getMLText("cancel")."');";
echo "SeedDMSUpload.setEditBtnLabel('".getMLText("edit_document_props")."');";
echo "SeedDMSUpload.setMaxFileSize(".SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize")).");";
$mus2 = SeedDMS_Core_File::parse_filesize(ini_get("upload_max_filesize"));
if($maxuploadsize && $maxuploadsize < $mus2)
echo "SeedDMSUpload.setMaxFileSize($maxuploadsize);";
else
echo "SeedDMSUpload.setMaxFileSize($mus2);";
echo "SeedDMSUpload.setMaxFileSizeMsg('".getMLText("uploading_maxsize")."');";
}