mirror of
https://git.code.sf.net/p/seeddms/code
synced 2024-11-26 07:22:11 +00:00
Merge branch 'seeddms-5.1.x' into seeddms-6.0.x
This commit is contained in:
commit
0fd0293f35
|
@ -267,6 +267,10 @@
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
- check error msg after calling AddDocument and UpdateDocument controller
|
- check error msg after calling AddDocument and UpdateDocument controller
|
||||||
in webdav module
|
in webdav module
|
||||||
|
- more verbose log messages
|
||||||
|
- show errors of none activated extensions and do not allow to activate it,
|
||||||
|
if there are errors (e.g. missing php extensions)
|
||||||
|
- move Approve/ReviewDocument in a controller
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
Changes in version 5.1.31
|
Changes in version 5.1.31
|
||||||
|
|
|
@ -7,36 +7,38 @@
|
||||||
* @license GPL 2
|
* @license GPL 2
|
||||||
* @version @version@
|
* @version @version@
|
||||||
* @author Uwe Steinmann <uwe@steinmann.cx>
|
* @author Uwe Steinmann <uwe@steinmann.cx>
|
||||||
* @copyright Copyright (C) 2010-2013 Uwe Steinmann
|
* @copyright Copyright (C) 2010-2023 Uwe Steinmann
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class which does the busines logic for downloading a document
|
* Class which does the busines logic for approving a document
|
||||||
*
|
*
|
||||||
* @category DMS
|
* @category DMS
|
||||||
* @package SeedDMS
|
* @package SeedDMS
|
||||||
* @author Uwe Steinmann <uwe@steinmann.cx>
|
* @author Uwe Steinmann <uwe@steinmann.cx>
|
||||||
* @copyright Copyright (C) 2010-2013 Uwe Steinmann
|
* @copyright Copyright (C) 2010-2023 Uwe Steinmann
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
*/
|
*/
|
||||||
class SeedDMS_Controller_ApproveDocument extends SeedDMS_Controller_Common {
|
class SeedDMS_Controller_ApproveDocument extends SeedDMS_Controller_Common {
|
||||||
|
|
||||||
public function run() {
|
public $oldstatus;
|
||||||
|
|
||||||
|
public $newstatus;
|
||||||
|
|
||||||
|
public function run() { /* {{{ */
|
||||||
$dms = $this->params['dms'];
|
$dms = $this->params['dms'];
|
||||||
$user = $this->params['user'];
|
$user = $this->params['user'];
|
||||||
$settings = $this->params['settings'];
|
$settings = $this->params['settings'];
|
||||||
$document = $this->params['document'];
|
|
||||||
$content = $this->params['content'];
|
$content = $this->params['content'];
|
||||||
$approvalstatus = $this->params['approvalstatus'];
|
$approvaltype = $this->params['type'];
|
||||||
$approvaltype = $this->params['approvaltype'];
|
$approvalstatus = $this->params['status'];
|
||||||
$group = $this->params['group'];
|
$approvalcomment = $this->params['comment'];
|
||||||
$comment = $this->params['comment'];
|
$approvalfile = $this->params['file'];
|
||||||
$file = $this->params['file'];
|
$approvalgroup = $this->params['group'];
|
||||||
|
$overallStatus = $content->getStatus();
|
||||||
/* Get the document id and name before removing the document */
|
$this->oldstatus = $overallStatus['status'];
|
||||||
$docname = $document->getName();
|
$this->newstatus = $this->oldstatus;
|
||||||
$documentid = $document->getID();
|
|
||||||
|
|
||||||
if(!$this->callHook('preApproveDocument', $content)) {
|
if(!$this->callHook('preApproveDocument', $content)) {
|
||||||
}
|
}
|
||||||
|
@ -44,36 +46,35 @@ class SeedDMS_Controller_ApproveDocument extends SeedDMS_Controller_Common {
|
||||||
$result = $this->callHook('approveDocument', $content);
|
$result = $this->callHook('approveDocument', $content);
|
||||||
if($result === null) {
|
if($result === null) {
|
||||||
if ($approvaltype == "ind") {
|
if ($approvaltype == "ind") {
|
||||||
$approvalLogID = $content->setApprovalByInd($user, $user, $approvalstatus, $comment, $file);
|
$approvalLogID = $content->setApprovalByInd($user, $user, $approvalstatus, $approvalcomment, $approvalfile);
|
||||||
if($approvalLogID === false || 0 > $approvalLogID) {
|
|
||||||
$this->error = 1;
|
|
||||||
$this->errormsg = "approval_update_failed";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} elseif ($approvaltype == "grp") {
|
} elseif ($approvaltype == "grp") {
|
||||||
$approvalLogID = $content->setApprovalByGrp($group, $user, $approvalstatus, $comment, $file);
|
$approvalLogID = $content->setApprovalByGrp($approvalgroup, $user, $approvalstatus, $approvalcomment, $approvalfile);
|
||||||
if($approvalLogID === false || 0 > $approvalLogID) {
|
} else {
|
||||||
$this->error = 1;
|
$this->errormsg = "approval_wrong_type";
|
||||||
$this->errormsg = "approval_update_failed";
|
return false;
|
||||||
return false;
|
}
|
||||||
}
|
if($approvalLogID === false || 0 > $approvalLogID) {
|
||||||
|
$this->errormsg = "approval_update_failed";
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check to see if the overall status for the document version needs to be
|
|
||||||
* updated.
|
|
||||||
*/
|
|
||||||
$result = $this->callHook('approveUpdateDocumentStatus', $content);
|
$result = $this->callHook('approveUpdateDocumentStatus', $content);
|
||||||
if($result === null) {
|
if($result === null) {
|
||||||
/* If document was rejected, set the document status to S_REJECTED right away */
|
if($approvalstatus == -1) {
|
||||||
if ($approvalstatus == -1){
|
$this->newstatus = S_REJECTED;
|
||||||
if($content->setStatus(S_REJECTED,$comment,$user)) {
|
if($content->setStatus(S_REJECTED, $approvalcomment, $user)) {
|
||||||
$this->callHook('postApproveDocument', $content, S_REJECTED);
|
if(isset($GLOBALS['SEEDDMS_HOOKS']['approveDocument'])) {
|
||||||
|
foreach($GLOBALS['SEEDDMS_HOOKS']['approveDocument'] as $hookObj) {
|
||||||
|
if (method_exists($hookObj, 'postApproveDocument')) {
|
||||||
|
$hookObj->postApproveDocument(null, $content, S_REJECTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$docApprovalStatus = $content->getApprovalStatus();
|
$docApprovalStatus = $content->getApprovalStatus();
|
||||||
if (is_bool($docApprovalStatus) && !$docApprovalStatus) {
|
if (is_bool($docApprovalStatus) && !$docApprovalStatus) {
|
||||||
$this->error = 1;
|
|
||||||
$this->errormsg = "cannot_retrieve_approval_snapshot";
|
$this->errormsg = "cannot_retrieve_approval_snapshot";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -91,8 +92,15 @@ class SeedDMS_Controller_ApproveDocument extends SeedDMS_Controller_Common {
|
||||||
// count of the approvals required for this document.
|
// count of the approvals required for this document.
|
||||||
if ($approvalCT == $approvalTotal) {
|
if ($approvalCT == $approvalTotal) {
|
||||||
// Change the status to released.
|
// Change the status to released.
|
||||||
if($content->setStatus(S_RELEASED, getMLText("automatic_status_update"), $user)) {
|
$this->newstatus=S_RELEASED;
|
||||||
$this->callHook('postApproveDocument', $content, S_RELEASED);
|
if($content->setStatus($this->newstatus, getMLText("automatic_status_update"), $user)) {
|
||||||
|
if(isset($GLOBALS['SEEDDMS_HOOKS']['approveDocument'])) {
|
||||||
|
foreach($GLOBALS['SEEDDMS_HOOKS']['approveDocument'] as $hookObj) {
|
||||||
|
if (method_exists($hookObj, 'postApproveDocument')) {
|
||||||
|
$hookObj->postApproveDocument(null, $content, S_RELEASED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,6 +110,6 @@ class SeedDMS_Controller_ApproveDocument extends SeedDMS_Controller_Common {
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
} /* }}} */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,72 +7,70 @@
|
||||||
* @license GPL 2
|
* @license GPL 2
|
||||||
* @version @version@
|
* @version @version@
|
||||||
* @author Uwe Steinmann <uwe@steinmann.cx>
|
* @author Uwe Steinmann <uwe@steinmann.cx>
|
||||||
* @copyright Copyright (C) 2010-2013 Uwe Steinmann
|
* @copyright Copyright (C) 2010-2023 Uwe Steinmann
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class which does the busines logic for downloading a document
|
* Class which does the busines logic for reviewing a document
|
||||||
*
|
*
|
||||||
* @category DMS
|
* @category DMS
|
||||||
* @package SeedDMS
|
* @package SeedDMS
|
||||||
* @author Uwe Steinmann <uwe@steinmann.cx>
|
* @author Uwe Steinmann <uwe@steinmann.cx>
|
||||||
* @copyright Copyright (C) 2010-2013 Uwe Steinmann
|
* @copyright Copyright (C) 2010-2023 Uwe Steinmann
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
*/
|
*/
|
||||||
class SeedDMS_Controller_ReviewDocument extends SeedDMS_Controller_Common {
|
class SeedDMS_Controller_ReviewDocument extends SeedDMS_Controller_Common {
|
||||||
|
|
||||||
public function run() {
|
public function run() { /* {{{ */
|
||||||
$dms = $this->params['dms'];
|
$dms = $this->params['dms'];
|
||||||
$user = $this->params['user'];
|
$user = $this->params['user'];
|
||||||
$settings = $this->params['settings'];
|
$settings = $this->params['settings'];
|
||||||
$document = $this->params['document'];
|
|
||||||
$content = $this->params['content'];
|
$content = $this->params['content'];
|
||||||
$reviewstatus = $this->params['reviewstatus'];
|
$reviewtype = $this->params['type'];
|
||||||
$reviewtype = $this->params['reviewtype'];
|
$reviewstatus = $this->params['status'];
|
||||||
$group = $this->params['group'];
|
$reviewcomment = $this->params['comment'];
|
||||||
$comment = $this->params['comment'];
|
$reviewfile = $this->params['file'];
|
||||||
$file = $this->params['file'];
|
$reviewgroup = $this->params['group'];
|
||||||
|
$overallStatus = $content->getStatus();
|
||||||
/* Get the document id and name before removing the document */
|
$this->oldstatus = $overallStatus['status'];
|
||||||
$docname = $document->getName();
|
$this->newstatus = $this->oldstatus;
|
||||||
$documentid = $document->getID();
|
|
||||||
|
|
||||||
if(!$this->callHook('preReviewDocument', $content)) {
|
if(!$this->callHook('preReviewDocument', $content)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $this->callHook('reviewDocument', $content);
|
$result = $this->callHook('reviewDocument', $content);
|
||||||
if($result === null) {
|
if($result === null) {
|
||||||
|
|
||||||
if ($reviewtype == "ind") {
|
if ($reviewtype == "ind") {
|
||||||
$reviewLogID = $content->setReviewByInd($user, $user, $reviewstatus, $comment, $file);
|
$reviewLogID = $content->setReviewByInd($user, $user, $reviewstatus, $reviewcomment, $reviewfile);
|
||||||
if($reviewLogID === false || 0 > $reviewLogID) {
|
} elseif($reviewtype == "grp") {
|
||||||
$this->error = 1;
|
$reviewLogID = $content->setReviewByGrp($reviewgroup, $user, $reviewstatus, $reviewcomment, $reviewfile);
|
||||||
$this->errormsg = "review_update_failed";
|
} else {
|
||||||
return false;
|
$this->errormsg = "review_wrong_type";
|
||||||
}
|
return false;
|
||||||
} elseif ($reviewtype == "grp") {
|
}
|
||||||
$reviewLogID = $content->setReviewByGrp($group, $user, $reviewstatus, $comment, $file);
|
if($reviewLogID === false || 0 > $reviewLogID) {
|
||||||
if($reviewLogID === false || 0 > $reviewLogID) {
|
$this->errormsg = "review_update_failed";
|
||||||
$this->error = 1;
|
return false;
|
||||||
$this->errormsg = "review_update_failed";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check to see if the overall status for the document version needs to be
|
|
||||||
* updated.
|
|
||||||
*/
|
|
||||||
$result = $this->callHook('reviewUpdateDocumentStatus', $content);
|
$result = $this->callHook('reviewUpdateDocumentStatus', $content);
|
||||||
if($result === null) {
|
if($result === null) {
|
||||||
if ($reviewstatus == -1){
|
if($reviewstatus == -1) {
|
||||||
if($content->setStatus(S_REJECTED,$comment,$user)) {
|
$this->newstatus = S_REJECTED;
|
||||||
|
if($content->setStatus(S_REJECTED, $reviewcomment, $user)) {
|
||||||
|
if(isset($GLOBALS['SEEDDMS_HOOKS']['reviewDocument'])) {
|
||||||
|
foreach($GLOBALS['SEEDDMS_HOOKS']['reviewDocument'] as $hookObj) {
|
||||||
|
if (method_exists($hookObj, 'postReviewDocument')) {
|
||||||
|
$hookObj->postReviewDocument(null, $content, S_REJECTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$docReviewStatus = $content->getReviewStatus();
|
$docReviewStatus = $content->getReviewStatus();
|
||||||
if (is_bool($docReviewStatus) && !$docReviewStatus) {
|
if (is_bool($docReviewStatus) && !$docReviewStatus) {
|
||||||
$this->error = 1;
|
|
||||||
$this->errormsg = "cannot_retrieve_review_snapshot";
|
$this->errormsg = "cannot_retrieve_review_snapshot";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -91,32 +89,35 @@ class SeedDMS_Controller_ReviewDocument extends SeedDMS_Controller_Common {
|
||||||
if ($reviewCT == $reviewTotal) {
|
if ($reviewCT == $reviewTotal) {
|
||||||
$docApprovalStatus = $content->getApprovalStatus();
|
$docApprovalStatus = $content->getApprovalStatus();
|
||||||
if (is_bool($docApprovalStatus) && !$docApprovalStatus) {
|
if (is_bool($docApprovalStatus) && !$docApprovalStatus) {
|
||||||
$this->error = 1;
|
|
||||||
$this->errormsg = "cannot_retrieve_approval_snapshot";
|
$this->errormsg = "cannot_retrieve_approval_snapshot";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$approvalCT = 0;
|
$approvalCT = 0;
|
||||||
$approvalTotal = 0;
|
$approvalTotal = 0;
|
||||||
foreach ($docApprovalStatus as $dastat) {
|
foreach($docApprovalStatus as $dastat) {
|
||||||
if ($dastat["status"] == 1) {
|
if($dastat["status"] == 1) {
|
||||||
$approvalCT++;
|
$approvalCT++;
|
||||||
}
|
}
|
||||||
if ($dastat["status"] != -2) {
|
if($dastat["status"] != -2) {
|
||||||
$approvalTotal++;
|
$approvalTotal++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If the approvals received is less than the approvals total, then
|
// If the approvals received is less than the approvals total, then
|
||||||
// change status to pending approval.
|
// change status to pending approval.
|
||||||
if ($approvalCT<$approvalTotal) {
|
if($approvalCT < $approvalTotal) {
|
||||||
$newStatus=S_DRAFT_APP;
|
$this->newstatus = S_DRAFT_APP;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Otherwise, change the status to released.
|
// Otherwise, change the status to released.
|
||||||
$newStatus=S_RELEASED;
|
$this->newstatus = S_RELEASED;
|
||||||
}
|
}
|
||||||
if ($content->setStatus($newStatus, getMLText("automatic_status_update"), $user)) {
|
if($content->setStatus($this->newstatus, getMLText("automatic_status_update"), $user)) {
|
||||||
// Send notification to subscribers.
|
if(isset($GLOBALS['SEEDDMS_HOOKS']['reviewDocument'])) {
|
||||||
|
foreach($GLOBALS['SEEDDMS_HOOKS']['reviewDocument'] as $hookObj) {
|
||||||
|
if (method_exists($hookObj, 'postReviewDocument')) {
|
||||||
|
$hookObj->postReviewDocument(null, $content, $this->newstatus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,6 +127,5 @@ class SeedDMS_Controller_ReviewDocument extends SeedDMS_Controller_Common {
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
} /* }}} */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,14 +14,14 @@ apache.
|
||||||
|
|
||||||
Here is a detailed list of requirements:
|
Here is a detailed list of requirements:
|
||||||
|
|
||||||
1. A web server with at least php 7.3
|
1. A web server with at least php 7.4
|
||||||
2. A mysql database, unless you use SQLite
|
2. A mysql database, unless you use SQLite
|
||||||
3. The php installation must have support for `pdo_mysql`, `pdo_pgsql` or `pdo_sqlite`,
|
3. The php installation must have support for `pdo_mysql`, `pdo_pgsql` or `pdo_sqlite`,
|
||||||
`php_gd2`, `php_mbstring`, `php_xml`
|
`php_gd2`, `php_mbstring`, `php_xml`
|
||||||
4. Depending on the configuration the extensions `php_ldap`, `php_mycrypt`,
|
4. Depending on the configuration the extensions `php_ldap`, `php_mycrypt`,
|
||||||
`php_gmp`, `php_libsodium` must be installed
|
`php_gmp`, `php_libsodium`, `php_imagick` must be installed
|
||||||
5. Various command line programms to convert files into text for indexing
|
5. Various command line programms to convert files into text for indexing
|
||||||
pdftotext, catdoc, xls2csv or scconvert, cat, id3 (optional, only needed
|
pdftotext, catdoc, xls2csv or scconvert, cat, id3 (all optional, only needed
|
||||||
for fulltext search)
|
for fulltext search)
|
||||||
6. ImageMagic (the convert program) is needed for creating preview images
|
6. ImageMagic (the convert program) is needed for creating preview images
|
||||||
7. A bunch of packages from Packagist which all ship with the seeddms-quickstart
|
7. A bunch of packages from Packagist which all ship with the seeddms-quickstart
|
||||||
|
@ -29,7 +29,7 @@ Here is a detailed list of requirements:
|
||||||
|
|
||||||
It is highly recommended to use the quickstart archive
|
It is highly recommended to use the quickstart archive
|
||||||
(seeddms-quickstart-x.y.z.tar.gz) because it includes all software packages
|
(seeddms-quickstart-x.y.z.tar.gz) because it includes all software packages
|
||||||
(excluding those listing above in item 1. to 6.) for running SeedDMS. Hence,
|
(excluding those listed above in item 1. to 6.) for running SeedDMS. Hence,
|
||||||
you still need a working web server with PHP and in addition a mysql or
|
you still need a working web server with PHP and in addition a mysql or
|
||||||
PostgreSQL database unless you intend to use SQLite.
|
PostgreSQL database unless you intend to use SQLite.
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ SECURITY CONSIDERATIONS
|
||||||
|
|
||||||
You should always access your SeedDMS installation through
|
You should always access your SeedDMS installation through
|
||||||
a secured https connection, unless you precisly know what you are doing.
|
a secured https connection, unless you precisly know what you are doing.
|
||||||
SeedDMS ships an .htaccess file which already has some common security
|
SeedDMS ships an `.htaccess` file which already has some common security
|
||||||
http headers set. In order for them to apply you need to activate the
|
http headers set. In order for them to apply you need to activate the
|
||||||
headers module. On Debian/GNU Linux this can be done with
|
headers module. On Debian/GNU Linux this can be done with
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,7 @@ smtp port: 465
|
||||||
|
|
||||||
Gmail
|
Gmail
|
||||||
---------
|
---------
|
||||||
smtp server: smtp.gmail.com
|
smtp server: ssl://smtp.gmail.com
|
||||||
smtp port: 587
|
smtp port: 465
|
||||||
note: you have to turn on 'Less secure app access' in your google account,
|
note: since June, 2022 you will no longer be able to turn on 'Less secure app access' in your google account. Instead you need to turn on 2-Step Verification first and than
|
||||||
otherwise you will not be able to send mail. It will quit with an error
|
create an App Password (https://support.google.com/accounts/answer/185833)
|
||||||
complaining about wrong credentials
|
|
||||||
|
|
|
@ -159,6 +159,7 @@ class SeedDMS_ConversionServiceExec extends SeedDMS_ConversionServiceBase {
|
||||||
/* %s was just added because the commands to convert to text/plain used
|
/* %s was just added because the commands to convert to text/plain used
|
||||||
* it instead of %f for the input file
|
* it instead of %f for the input file
|
||||||
* %f = input file
|
* %f = input file
|
||||||
|
* %if = format (jpg, png, pdf, gif)
|
||||||
* %o = output file
|
* %o = output file
|
||||||
* %m = mime type
|
* %m = mime type
|
||||||
* %w = width
|
* %w = width
|
||||||
|
@ -175,6 +176,12 @@ class SeedDMS_ConversionServiceExec extends SeedDMS_ConversionServiceBase {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if(!empty($ret['stderr'])) {
|
||||||
|
if($this->logger) {
|
||||||
|
$this->logger->log('Conversion from '.$this->from.' to '.$this->to.' with cmd "'.$this->cmd.'" failed: '.$ret['stderr'], PEAR_LOG_ERR);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
$end = microtime(true);
|
$end = microtime(true);
|
||||||
if($this->logger) {
|
if($this->logger) {
|
||||||
$this->logger->log('Conversion from '.$this->from.' to '.$this->to.' with cmd "'.$this->cmd.'" took '.($end-$start).' sec.', PEAR_LOG_DEBUG);
|
$this->logger->log('Conversion from '.$this->from.' to '.$this->to.' with cmd "'.$this->cmd.'" took '.($end-$start).' sec.', PEAR_LOG_DEBUG);
|
||||||
|
|
|
@ -287,6 +287,8 @@ class Settings { /* {{{ */
|
||||||
var $_enableRecursiveCount = false;
|
var $_enableRecursiveCount = false;
|
||||||
// maximum number of documents or folders when counted recursively
|
// maximum number of documents or folders when counted recursively
|
||||||
var $_maxRecursiveCount = 10000;
|
var $_maxRecursiveCount = 10000;
|
||||||
|
// number of days in the past of the dashboard
|
||||||
|
var $_daysPastDashboard = 7;
|
||||||
// enable/disable help
|
// enable/disable help
|
||||||
var $_enableHelp = true;
|
var $_enableHelp = true;
|
||||||
// enable/disable language selection menu
|
// enable/disable language selection menu
|
||||||
|
@ -578,6 +580,7 @@ class Settings { /* {{{ */
|
||||||
$this->_enableFolderTree = Settings::boolVal($tab["enableFolderTree"]);
|
$this->_enableFolderTree = Settings::boolVal($tab["enableFolderTree"]);
|
||||||
$this->_enableRecursiveCount = Settings::boolVal($tab["enableRecursiveCount"]);
|
$this->_enableRecursiveCount = Settings::boolVal($tab["enableRecursiveCount"]);
|
||||||
$this->_maxRecursiveCount = intval($tab["maxRecursiveCount"]);
|
$this->_maxRecursiveCount = intval($tab["maxRecursiveCount"]);
|
||||||
|
$this->_daysPastDashboard = intval($tab["daysPastDashboard"]);
|
||||||
$this->_enableHelp = Settings::boolVal($tab["enableHelp"]);
|
$this->_enableHelp = Settings::boolVal($tab["enableHelp"]);
|
||||||
$this->_enableLanguageSelector = Settings::boolVal($tab["enableLanguageSelector"]);
|
$this->_enableLanguageSelector = Settings::boolVal($tab["enableLanguageSelector"]);
|
||||||
$this->_enableThemeSelector = Settings::boolVal($tab["enableThemeSelector"]);
|
$this->_enableThemeSelector = Settings::boolVal($tab["enableThemeSelector"]);
|
||||||
|
@ -981,6 +984,7 @@ class Settings { /* {{{ */
|
||||||
$this->setXMLAttributValue($node, "enableFolderTree", $this->_enableFolderTree);
|
$this->setXMLAttributValue($node, "enableFolderTree", $this->_enableFolderTree);
|
||||||
$this->setXMLAttributValue($node, "enableRecursiveCount", $this->_enableRecursiveCount);
|
$this->setXMLAttributValue($node, "enableRecursiveCount", $this->_enableRecursiveCount);
|
||||||
$this->setXMLAttributValue($node, "maxRecursiveCount", $this->_maxRecursiveCount);
|
$this->setXMLAttributValue($node, "maxRecursiveCount", $this->_maxRecursiveCount);
|
||||||
|
$this->setXMLAttributValue($node, "daysPastDashboard", $this->_daysPastDashboard);
|
||||||
$this->setXMLAttributValue($node, "enableHelp", $this->_enableHelp);
|
$this->setXMLAttributValue($node, "enableHelp", $this->_enableHelp);
|
||||||
$this->setXMLAttributValue($node, "enableLanguageSelector", $this->_enableLanguageSelector);
|
$this->setXMLAttributValue($node, "enableLanguageSelector", $this->_enableLanguageSelector);
|
||||||
$this->setXMLAttributValue($node, "enableThemeSelector", $this->_enableThemeSelector);
|
$this->setXMLAttributValue($node, "enableThemeSelector", $this->_enableThemeSelector);
|
||||||
|
|
|
@ -335,7 +335,7 @@ class SeedDMS_View_Common {
|
||||||
* @param boolean $hsc set to false if htmlspecialchars() shall not be called
|
* @param boolean $hsc set to false if htmlspecialchars() shall not be called
|
||||||
* @return string link
|
* @return string link
|
||||||
*/
|
*/
|
||||||
protected function html_link($view='', $urlparams=array(), $linkparams=array(), $link, $hsc=true, $nocheck=false, $wrap=array()) { /* {{{ */
|
protected function html_link($view, $urlparams, $linkparams, $link, $hsc=true, $nocheck=false, $wrap=array()) { /* {{{ */
|
||||||
if(!$nocheck)
|
if(!$nocheck)
|
||||||
if(!$this->check_view_access($view))
|
if(!$this->check_view_access($view))
|
||||||
return '';
|
return '';
|
||||||
|
|
|
@ -484,7 +484,7 @@ foreach($file_ary as $file) {
|
||||||
$controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText);
|
$controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText);
|
||||||
$controller->setParam('defaultaccessdocs', $settings->_defaultAccessDocs);
|
$controller->setParam('defaultaccessdocs', $settings->_defaultAccessDocs);
|
||||||
|
|
||||||
if(!$document = $controller()) {
|
if(!($document = $controller())) {
|
||||||
$err = $controller->getErrorMsg();
|
$err = $controller->getErrorMsg();
|
||||||
if(is_string($err))
|
if(is_string($err))
|
||||||
$errmsg = getMLText($err);
|
$errmsg = getMLText($err);
|
||||||
|
@ -509,7 +509,7 @@ foreach($file_ary as $file) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
add_log_line("?name=".$name."&folderid=".$folderid);
|
add_log_line("add document ".$document->getId()." in folder ".$folder->getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
header("Location:../out/out.ViewFolder.php?folderid=".$folderid."&showtree=".$_POST["showtree"]);
|
header("Location:../out/out.ViewFolder.php?folderid=".$folderid."&showtree=".$_POST["showtree"]);
|
||||||
|
|
|
@ -123,7 +123,7 @@ for ($file_num=0;$file_num<count($_FILES["userfile"]["tmp_name"]);$file_num++){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
add_log_line("?name=".$name."&documentid=".$documentid);
|
add_log_line("add file '".$name."' to document ".$documentid);
|
||||||
|
|
||||||
header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=attachments");
|
header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=attachments");
|
||||||
|
|
||||||
|
|
|
@ -316,7 +316,7 @@ switch($command) {
|
||||||
}
|
}
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_move_folder'), 'data'=>''));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_move_folder'), 'data'=>''));
|
||||||
add_log_line();
|
add_log_line("move folder ".$mfolder->getId()." to ".$folder->getId());
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>false, 'message'=>'Error moving folder', 'data'=>''));
|
echo json_encode(array('success'=>false, 'message'=>'Error moving folder', 'data'=>''));
|
||||||
|
@ -362,7 +362,7 @@ switch($command) {
|
||||||
}
|
}
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_move_document'), 'data'=>''));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_move_document'), 'data'=>''));
|
||||||
add_log_line();
|
add_log_line("move document ".$mdocument->getId()." to folder ".$folder->getId());
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>false, 'message'=>'Error moving document', 'data'=>''));
|
echo json_encode(array('success'=>false, 'message'=>'Error moving document', 'data'=>''));
|
||||||
|
@ -405,7 +405,7 @@ switch($command) {
|
||||||
if($mdocument->remove()) {
|
if($mdocument->remove()) {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_transfer_content'), 'data'=>''));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_transfer_content'), 'data'=>''));
|
||||||
add_log_line();
|
add_log_line("transfer content of document ".$mdocument->getId()." to document ".$targetdoc->getId());
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>false, 'message'=>'Error removing source document', 'data'=>''));
|
echo json_encode(array('success'=>false, 'message'=>'Error removing source document', 'data'=>''));
|
||||||
|
@ -452,7 +452,7 @@ switch($command) {
|
||||||
if($targetdoc->addDocumentLink($mdocument->getID(), $user->getID(), false)) {
|
if($targetdoc->addDocumentLink($mdocument->getID(), $user->getID(), false)) {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_link_document'), 'data'=>''));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_link_document'), 'data'=>''));
|
||||||
add_log_line();
|
add_log_line("link document ".$mdocument->getId()." to ".$targetdoc->getId());
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>false, 'message'=>'Error linking document', 'data'=>''));
|
echo json_encode(array('success'=>false, 'message'=>'Error linking document', 'data'=>''));
|
||||||
|
@ -509,7 +509,7 @@ switch($command) {
|
||||||
}
|
}
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_folder_deleted'), 'data'=>''));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_folder_deleted'), 'data'=>''));
|
||||||
add_log_line();
|
add_log_line("delete folder ".$folder->getId());
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>false, 'message'=>getMLText('error_remove_folder'), 'data'=>''));
|
echo json_encode(array('success'=>false, 'message'=>getMLText('error_remove_folder'), 'data'=>''));
|
||||||
|
@ -554,7 +554,7 @@ switch($command) {
|
||||||
|
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_deleted'), 'data'=>''));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_deleted'), 'data'=>''));
|
||||||
add_log_line();
|
add_log_line("delete document ".$document->getId());
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>false, 'message'=>getMLText('error_remove_document')."<br />".getMLText($controller->getErrorMsg()), 'data'=>''));
|
echo json_encode(array('success'=>false, 'message'=>getMLText('error_remove_document')."<br />".getMLText($controller->getErrorMsg()), 'data'=>''));
|
||||||
|
@ -586,6 +586,7 @@ switch($command) {
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_unlocked'), 'data'=>''));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_unlocked'), 'data'=>''));
|
||||||
|
add_log_line("unlock document ".$document->getId());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
|
@ -598,7 +599,7 @@ switch($command) {
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_locked'), 'data'=>''));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_locked'), 'data'=>''));
|
||||||
add_log_line();
|
add_log_line("lock document ".$document->getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -632,7 +633,7 @@ switch($command) {
|
||||||
}
|
}
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_name_changed'), 'data'=>''));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_name_changed'), 'data'=>''));
|
||||||
add_log_line();
|
add_log_line("set name '".$_REQUEST['name']."' of document ".$document->getId());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
|
@ -663,7 +664,7 @@ switch($command) {
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_mimetype_changed'), 'data'=>''));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_mimetype_changed'), 'data'=>''));
|
||||||
add_log_line();
|
add_log_line("set mimetype '".$realmimetype."' of document ".$document->getId().":".$content->getVersion());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
|
@ -878,7 +879,7 @@ switch($command) {
|
||||||
}
|
}
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_added'), 'data'=>$document->getID()));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_added'), 'data'=>$document->getID()));
|
||||||
add_log_line();
|
add_log_line("add document ".$document->getId()." in folder ".$folder->getId());
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>''));
|
echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>''));
|
||||||
|
@ -1027,7 +1028,7 @@ switch($command) {
|
||||||
}
|
}
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_added'), 'data'=>$document->getID()));
|
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_added'), 'data'=>$document->getID()));
|
||||||
add_log_line();
|
add_log_line("add file '".$name."' to document ".$document->getId());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
|
|
|
@ -87,64 +87,31 @@ if($_FILES["approvalfile"]["tmp_name"]) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$controller->setParam('document', $document);
|
$controller->setParam('comment', $_POST['comment']);
|
||||||
$controller->setParam('content', $content);
|
$controller->setParam('type', $_POST['approvalType']);
|
||||||
$controller->setParam('approvalstatus', $_POST["approvalStatus"]);
|
$controller->setParam('status', $_POST['approvalStatus']);
|
||||||
$controller->setParam('approvaltype', $_POST["approvalType"]);
|
$controller->setParam('content', $latestContent);
|
||||||
if ($_POST["approvalType"] == "grp") {
|
$controller->setParam('file', !empty($_FILES["approvalfile"]["tmp_name"]) ? $_FILES["approvalfile"]["tmp_name"] : '');
|
||||||
$group = $dms->getGroup($_POST['approvalGroup']);
|
$controller->setParam('group', !empty($_POST['approvalGroup']) ? $dms->getGroup($_POST['approvalGroup']) : null);
|
||||||
|
if(!$controller()) {
|
||||||
|
$err = $controller->getErrorMsg();
|
||||||
|
if(is_string($err))
|
||||||
|
$errmsg = getMLText($err);
|
||||||
|
elseif(is_array($err)) {
|
||||||
|
$errmsg = getMLText($err[0], $err[1]);
|
||||||
|
} else {
|
||||||
|
$errmsg = $err;
|
||||||
|
}
|
||||||
|
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),$errmsg);
|
||||||
} else {
|
} else {
|
||||||
$group = null;
|
|
||||||
}
|
|
||||||
if($_FILES["approvalfile"]["tmp_name"])
|
|
||||||
$file = $_FILES["approvalfile"]["tmp_name"];
|
|
||||||
else
|
|
||||||
$file = '';
|
|
||||||
$controller->setParam('group', $group);
|
|
||||||
$controller->setParam('comment', $_POST["comment"]);
|
|
||||||
$controller->setParam('file', $file);
|
|
||||||
if(!$controller->run()) {
|
|
||||||
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($controller->getErrorMsg()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($_POST["approvalType"] == "ind" || $_POST["approvalType"] == "grp") {
|
|
||||||
// Send an email notification to the document updater.
|
|
||||||
if($notifier) {
|
if($notifier) {
|
||||||
$approvelog = $latestContent->getApproveLog();
|
$approvelog = $latestContent->getApproveLog();
|
||||||
$notifier->sendSubmittedApprovalMail($latestContent, $user, $approvelog ? $approvelog[0] : false);
|
$notifier->sendSubmittedApprovalMail($latestContent, $user, $approvelog ? $approvelog[0] : false);
|
||||||
|
if($controller->oldstatus != $controller->newstatus)
|
||||||
|
$notifier->sendChangedDocumentStatusMail($latestContent, $user, $controller->oldstatus);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Send notification about status change only if status has actually changed */
|
|
||||||
$newdocstatus = $content->getStatus();
|
|
||||||
if($olddocstatus['status'] != $newdocstatus['status']) {
|
|
||||||
// Send notification to subscribers.
|
|
||||||
if($notifier) {
|
|
||||||
$nl=$document->getNotifyList();
|
|
||||||
$folder = $document->getFolder();
|
|
||||||
$subject = "document_status_changed_email_subject";
|
|
||||||
$message = "document_status_changed_email_body";
|
|
||||||
$params = array();
|
|
||||||
$params['name'] = $document->getName();
|
|
||||||
$params['folder_path'] = $folder->getFolderPathPlain();
|
|
||||||
$params['status'] = getOverallStatusText($olddocstatus['status']).' → '.getOverallStatusText($newdocstatus['status']);
|
|
||||||
$params['new_status_code'] = $newdocstatus['status'];
|
|
||||||
$params['old_status_code'] = $olddocstatus['status'];
|
|
||||||
$params['comment'] = $document->getComment();
|
|
||||||
$params['username'] = $user->getFullName();
|
|
||||||
$params['sitename'] = $settings->_siteName;
|
|
||||||
$params['http_root'] = $settings->_httpRoot;
|
|
||||||
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
|
|
||||||
|
|
||||||
$notifier->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
|
||||||
foreach ($nl["groups"] as $grp) {
|
|
||||||
$notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: if user os not owner send notification to owner
|
|
||||||
}
|
|
||||||
|
|
||||||
add_log_line("?documentid=".$_POST['documentid']."&version=".$_POST['version']."&approvalType=".$_POST['approvalType']."&approvalStatus=".$_POST['approvalStatus']);
|
add_log_line("?documentid=".$_POST['documentid']."&version=".$_POST['version']."&approvalType=".$_POST['approvalType']."&approvalStatus=".$_POST['approvalStatus']);
|
||||||
|
|
||||||
header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=revapp");
|
header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=revapp");
|
||||||
|
|
|
@ -99,7 +99,7 @@ if ($notifier){
|
||||||
|
|
||||||
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_rm_document')));
|
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_rm_document')));
|
||||||
|
|
||||||
add_log_line("?documentid=".$documentid);
|
add_log_line("delete document ".$documentid);
|
||||||
|
|
||||||
header("Location:../out/out.ViewFolder.php?folderid=".$folder->getID());
|
header("Location:../out/out.ViewFolder.php?folderid=".$folder->getID());
|
||||||
|
|
||||||
|
|
|
@ -87,30 +87,33 @@ if($_FILES["reviewfile"]["tmp_name"]) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$controller->setParam('document', $document);
|
$controller->setParam('comment', $_POST['comment']);
|
||||||
$controller->setParam('content', $content);
|
$controller->setParam('type', $_POST['reviewType']);
|
||||||
$controller->setParam('reviewstatus', $_POST["reviewStatus"]);
|
$controller->setParam('status', $_POST['reviewStatus']);
|
||||||
$controller->setParam('reviewtype', $_POST["reviewType"]);
|
$controller->setParam('content', $latestContent);
|
||||||
if ($_POST["reviewType"] == "grp") {
|
$controller->setParam('file', !empty($_FILES["reviewfile"]["tmp_name"]) ? $_FILES["reviewfile"]["tmp_name"] : '');
|
||||||
$group = $dms->getGroup($_POST['reviewGroup']);
|
$controller->setParam('group', !empty($_POST['reviewGroup']) ? $dms->getGroup($_POST['reviewGroup']) : null);
|
||||||
|
if(!$controller()) {
|
||||||
|
$err = $controller->getErrorMsg();
|
||||||
|
if(is_string($err))
|
||||||
|
$errmsg = getMLText($err);
|
||||||
|
elseif(is_array($err)) {
|
||||||
|
$errmsg = getMLText($err[0], $err[1]);
|
||||||
|
} else {
|
||||||
|
$errmsg = $err;
|
||||||
|
}
|
||||||
|
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),$errmsg);
|
||||||
} else {
|
} else {
|
||||||
$group = null;
|
|
||||||
}
|
|
||||||
if($_FILES["reviewfile"]["tmp_name"])
|
|
||||||
$file = $_FILES["reviewfile"]["tmp_name"];
|
|
||||||
else
|
|
||||||
$file = '';
|
|
||||||
$controller->setParam('group', $group);
|
|
||||||
$controller->setParam('comment', $_POST["comment"]);
|
|
||||||
$controller->setParam('file', $file);
|
|
||||||
if(!$controller->run()) {
|
|
||||||
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($controller->getErrorMsg()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($_POST["reviewType"] == "ind" || $_POST["reviewType"] == "grp") {
|
|
||||||
if($notifier) {
|
if($notifier) {
|
||||||
$reviewlog = $latestContent->getReviewLog();
|
$reviewlog = $latestContent->getReviewLog();
|
||||||
$notifier->sendSubmittedReviewMail($latestContent, $user, $reviewlog ? $reviewlog[0] : false);
|
$notifier->sendSubmittedReviewMail($latestContent, $user, $reviewlog ? $reviewlog[0] : false);
|
||||||
|
if($controller->oldstatus != $controller->newstatus)
|
||||||
|
$notifier->sendChangedDocumentStatusMail($latestContent, $user, $controller->oldstatus);
|
||||||
|
|
||||||
|
// Notify approvers, if necessary.
|
||||||
|
if ($controller->newstatus == S_DRAFT_APP) {
|
||||||
|
$notifier->sendApprovalRequestMail($latestContent, $user);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -145,6 +145,7 @@ if ($action == "saveSettings")
|
||||||
setBoolValue("enableFolderTree");
|
setBoolValue("enableFolderTree");
|
||||||
setBoolValue("enableRecursiveCount");
|
setBoolValue("enableRecursiveCount");
|
||||||
setIntValue("maxRecursiveCount");
|
setIntValue("maxRecursiveCount");
|
||||||
|
setIntValue("daysPastDashboard");
|
||||||
setBoolValue("enableLanguageSelector");
|
setBoolValue("enableLanguageSelector");
|
||||||
setBoolValue("enableHelp");
|
setBoolValue("enableHelp");
|
||||||
setBoolValue("enableThemeSelector");
|
setBoolValue("enableThemeSelector");
|
||||||
|
|
|
@ -409,7 +409,7 @@ default:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
add_log_line("?documentid=".$documentid);
|
add_log_line("update document ".$documentid." with version ".$content->getVersion());
|
||||||
header("Location:../out/out.ViewDocument.php?documentid=".$documentid);
|
header("Location:../out/out.ViewDocument.php?documentid=".$documentid);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -24,6 +24,7 @@ if($view) {
|
||||||
$view->setParam('previewConverters', isset($settings->_converters['preview']) ? $settings->_converters['preview'] : array());
|
$view->setParam('previewConverters', isset($settings->_converters['preview']) ? $settings->_converters['preview'] : array());
|
||||||
$view->setParam('convertToPdf', $settings->_convertToPdf);
|
$view->setParam('convertToPdf', $settings->_convertToPdf);
|
||||||
$view->setParam('timeout', $settings->_cmdTimeout);
|
$view->setParam('timeout', $settings->_cmdTimeout);
|
||||||
|
$view->setParam('dayspastdashboard', (int) $settings->_daysPastDashboard);
|
||||||
$view->setParam('accessobject', $accessop);
|
$view->setParam('accessobject', $accessop);
|
||||||
$view->setParam('xsendfile', $settings->_enableXsendfile);
|
$view->setParam('xsendfile', $settings->_enableXsendfile);
|
||||||
$view($_GET);
|
$view($_GET);
|
||||||
|
|
|
@ -80,6 +80,7 @@ if($view) {
|
||||||
$view->setParam('folder', $folder);
|
$view->setParam('folder', $folder);
|
||||||
$view->setParam('document', $document);
|
$view->setParam('document', $document);
|
||||||
$view->setParam('version', $content);
|
$view->setParam('version', $content);
|
||||||
|
$view->setParam('reviewid', (int) $_GET['reviewid']);
|
||||||
$view->setParam('accessobject', $accessop);
|
$view->setParam('accessobject', $accessop);
|
||||||
$view($_GET);
|
$view($_GET);
|
||||||
exit;
|
exit;
|
||||||
|
|
|
@ -13,11 +13,6 @@
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* Include parent class
|
|
||||||
*/
|
|
||||||
//require_once("class.Bootstrap.php");
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class which outputs the html page for ApproveDocument view
|
* Class which outputs the html page for ApproveDocument view
|
||||||
*
|
*
|
||||||
|
@ -31,7 +26,7 @@
|
||||||
*/
|
*/
|
||||||
class SeedDMS_View_ApproveDocument extends SeedDMS_Theme_Style {
|
class SeedDMS_View_ApproveDocument extends SeedDMS_Theme_Style {
|
||||||
|
|
||||||
function js() { /* {{{ */
|
public function js() { /* {{{ */
|
||||||
header('Content-Type: application/javascript; charset=UTF-8');
|
header('Content-Type: application/javascript; charset=UTF-8');
|
||||||
parent::jsTranslations(array('js_form_error', 'js_form_errors'));
|
parent::jsTranslations(array('js_form_error', 'js_form_errors'));
|
||||||
?>
|
?>
|
||||||
|
@ -69,48 +64,10 @@ $(document).ready(function() {
|
||||||
$this->printFileChooserJs();
|
$this->printFileChooserJs();
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function show() { /* {{{ */
|
protected function showForm($approvalStatus) { /* {{{ */
|
||||||
$dms = $this->params['dms'];
|
|
||||||
$user = $this->params['user'];
|
|
||||||
$folder = $this->params['folder'];
|
|
||||||
$document = $this->params['document'];
|
$document = $this->params['document'];
|
||||||
$content = $this->params['version'];
|
$content = $this->params['version'];
|
||||||
$approveid = $this->params['approveid'];
|
|
||||||
|
|
||||||
$approvals = $content->getApprovalStatus();
|
|
||||||
foreach($approvals as $approval) {
|
|
||||||
if($approval['approveID'] == $approveid) {
|
|
||||||
$approvalStatus = $approval;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->htmlAddHeader('<script type="text/javascript" src="../views/'.$this->theme.'/vendors/jquery-validation/jquery.validate.js"></script>'."\n", 'js');
|
|
||||||
$this->htmlAddHeader('<script type="text/javascript" src="../views/'.$this->theme.'/styles/validation-default.js"></script>'."\n", 'js');
|
|
||||||
|
|
||||||
$this->htmlStartPage(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))));
|
|
||||||
$this->globalNavigation($folder);
|
|
||||||
$this->contentStart();
|
|
||||||
$this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document);
|
|
||||||
$this->contentHeading(getMLText("add_approval"));
|
|
||||||
|
|
||||||
// Display the Approval form.
|
|
||||||
$approvaltype = ($approvalStatus['type'] == 0) ? 'ind' : 'grp';
|
$approvaltype = ($approvalStatus['type'] == 0) ? 'ind' : 'grp';
|
||||||
if($approvalStatus["status"]!=0) {
|
|
||||||
|
|
||||||
print "<table class=\"table table-condensed table-sm\"><thead><tr>";
|
|
||||||
print "<th>".getMLText("status")."</th>";
|
|
||||||
print "<th>".getMLText("comment")."</th>";
|
|
||||||
print "<th>".getMLText("last_update")."</th>";
|
|
||||||
print "</tr></thead><tbody><tr>";
|
|
||||||
print "<td>";
|
|
||||||
printApprovalStatusText($approvalStatus["status"]);
|
|
||||||
print "</td>";
|
|
||||||
print "<td>".htmlspecialchars($approvalStatus["comment"])."</td>";
|
|
||||||
$indUser = $dms->getUser($approvalStatus["userID"]);
|
|
||||||
print "<td>".$approvalStatus["date"]." - ". htmlspecialchars($indUser->getFullname()) ."</td>";
|
|
||||||
print "</tr></tbody></table><br>\n";
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
<form class="form-horizontal" method="post" action="../op/op.ApproveDocument.php" id="form<?= $approvaltype ?>" name="form<?= $approvaltype ?>" enctype="multipart/form-data">
|
<form class="form-horizontal" method="post" action="../op/op.ApproveDocument.php" id="form<?= $approvaltype ?>" name="form<?= $approvaltype ?>" enctype="multipart/form-data">
|
||||||
<?php echo createHiddenFieldWithKey('approvedocument'); ?>
|
<?php echo createHiddenFieldWithKey('approvedocument'); ?>
|
||||||
|
@ -155,6 +112,50 @@ $(document).ready(function() {
|
||||||
<input type='hidden' name='version' value='<?php echo $content->getVersion(); ?>'/>
|
<input type='hidden' name='version' value='<?php echo $content->getVersion(); ?>'/>
|
||||||
</form>
|
</form>
|
||||||
<?php
|
<?php
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
public function show() { /* {{{ */
|
||||||
|
$dms = $this->params['dms'];
|
||||||
|
$user = $this->params['user'];
|
||||||
|
$folder = $this->params['folder'];
|
||||||
|
$document = $this->params['document'];
|
||||||
|
$content = $this->params['version'];
|
||||||
|
$approveid = $this->params['approveid'];
|
||||||
|
|
||||||
|
$approvals = $content->getApprovalStatus();
|
||||||
|
foreach($approvals as $approval) {
|
||||||
|
if($approval['approveID'] == $approveid) {
|
||||||
|
$approvalStatus = $approval;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->htmlAddHeader('<script type="text/javascript" src="../views/'.$this->theme.'/vendors/jquery-validation/jquery.validate.js"></script>'."\n", 'js');
|
||||||
|
$this->htmlAddHeader('<script type="text/javascript" src="../views/'.$this->theme.'/styles/validation-default.js"></script>'."\n", 'js');
|
||||||
|
|
||||||
|
$this->htmlStartPage(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))));
|
||||||
|
$this->globalNavigation($folder);
|
||||||
|
$this->contentStart();
|
||||||
|
$this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document);
|
||||||
|
$this->contentHeading(getMLText("add_approval"));
|
||||||
|
|
||||||
|
// Display the Approval form.
|
||||||
|
if($approvalStatus["status"]!=0) {
|
||||||
|
|
||||||
|
print "<table class=\"table table-condensed table-sm\"><thead><tr>";
|
||||||
|
print "<th>".getMLText("status")."</th>";
|
||||||
|
print "<th>".getMLText("comment")."</th>";
|
||||||
|
print "<th>".getMLText("last_update")."</th>";
|
||||||
|
print "</tr></thead><tbody><tr>";
|
||||||
|
print "<td>";
|
||||||
|
printApprovalStatusText($approvalStatus["status"]);
|
||||||
|
print "</td>";
|
||||||
|
print "<td>".htmlspecialchars($approvalStatus["comment"])."</td>";
|
||||||
|
$indUser = $dms->getUser($approvalStatus["userID"]);
|
||||||
|
print "<td>".$approvalStatus["date"]." - ". htmlspecialchars($indUser->getFullname()) ."</td>";
|
||||||
|
print "</tr></tbody></table><br>\n";
|
||||||
|
}
|
||||||
|
$this->showForm($approvalStatus);
|
||||||
$this->contentEnd();
|
$this->contentEnd();
|
||||||
$this->htmlEndPage();
|
$this->htmlEndPage();
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
|
@ -1638,11 +1638,11 @@ $(document).ready(function() {
|
||||||
echo self::getFileChooserHtml($varname, $multiple, $accept);
|
echo self::getFileChooserHtml($varname, $multiple, $accept);
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function printDateChooser($defDate = '', $varName, $lang='', $dateformat='', $startdate='', $enddate='', $weekstart=null) { /* {{{ */
|
function printDateChooser($defDate, $varName, $lang='', $dateformat='', $startdate='', $enddate='', $weekstart=null) { /* {{{ */
|
||||||
echo self::getDateChooser($defDate, $varName, $lang, $dateformat, $startdate, $enddate, $weekstart);
|
echo self::getDateChooser($defDate, $varName, $lang, $dateformat, $startdate, $enddate, $weekstart);
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function getDateChooser($defDate = '', $varName, $lang='', $dateformat='', $startdate='', $enddate='', $weekstart=null, $placeholder='', $nogroup=false) { /* {{{ */
|
function getDateChooser($defDate, $varName, $lang='', $dateformat='', $startdate='', $enddate='', $weekstart=null, $placeholder='', $nogroup=false) { /* {{{ */
|
||||||
if(!$dateformat)
|
if(!$dateformat)
|
||||||
$dateformat = getConvertDateFormat();
|
$dateformat = getConvertDateFormat();
|
||||||
$content = '';
|
$content = '';
|
||||||
|
@ -1659,7 +1659,7 @@ $(document).ready(function() {
|
||||||
return $content;
|
return $content;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function __printDateChooser($defDate = -1, $varName) { /* {{{ */
|
function __printDateChooser($defDate, $varName) { /* {{{ */
|
||||||
|
|
||||||
if ($defDate == -1)
|
if ($defDate == -1)
|
||||||
$defDate = mktime();
|
$defDate = mktime();
|
||||||
|
|
|
@ -53,6 +53,7 @@ class SeedDMS_View_Calendar extends SeedDMS_Theme_Style {
|
||||||
$previewer->setConversionMgr($conversionmgr);
|
$previewer->setConversionMgr($conversionmgr);
|
||||||
else
|
else
|
||||||
$previewer->setConverters($previewconverters);
|
$previewer->setConverters($previewconverters);
|
||||||
|
$document->verifyLastestContentExpriry();
|
||||||
echo $this->documentListRow($document, $previewer);
|
echo $this->documentListRow($document, $previewer);
|
||||||
echo "</tbody>\n</table>\n";
|
echo "</tbody>\n</table>\n";
|
||||||
}
|
}
|
||||||
|
@ -264,7 +265,7 @@ class SeedDMS_View_Calendar extends SeedDMS_Theme_Style {
|
||||||
if ($item['document']->getAccessMode($user) >= M_READ)
|
if ($item['document']->getAccessMode($user) >= M_READ)
|
||||||
$arr[] = array(
|
$arr[] = array(
|
||||||
'start'=>$item['date'],
|
'start'=>$item['date'],
|
||||||
'title'=>$item['document']->getName()." (".$item['version'].")\n".getOverallStatusText($item['status']), //$item['msg'],
|
'title'=>$item['document']->getName().(isset($item['version']) ? " (".$item['version'].")" : "").(isset($item['status']) ? "\n".getOverallStatusText($item['status']) : ''),
|
||||||
'allDay'=>isset($item['allday']) ? $item['allday'] : false,
|
'allDay'=>isset($item['allday']) ? $item['allday'] : false,
|
||||||
'color'=>$color,
|
'color'=>$color,
|
||||||
'type'=>$item['type'],
|
'type'=>$item['type'],
|
||||||
|
@ -472,6 +473,21 @@ $(document).ready(function() {
|
||||||
$this->columnStart(8);
|
$this->columnStart(8);
|
||||||
?>
|
?>
|
||||||
<div id="calendar" style="margin-bottom: 20px;"></div>
|
<div id="calendar" style="margin-bottom: 20px;"></div>
|
||||||
|
<div id="cal_legend">
|
||||||
|
<?php
|
||||||
|
$legend = [];
|
||||||
|
$legend[] = ['color'=>'ff4455', 'text'=>'expired'];
|
||||||
|
$legend[] = ['color'=>'20a820', 'text'=>'updated'];
|
||||||
|
$legend[] = ['color'=>'c3bf00', 'text'=>'timeline_add_file'];
|
||||||
|
$legend[] = ['color'=>'129a02', 'text'=>'released'];
|
||||||
|
$legend[] = ['color'=>'a8a8a8', 'text'=>'status_change'];
|
||||||
|
$legend[] = ['color'=>'20a8a8', 'text'=>'undefined'];
|
||||||
|
$legend[] = ['color'=>'3a87ad', 'text'=>'event'];
|
||||||
|
foreach($legend as $item) {
|
||||||
|
echo "<span style='margin-right: 1em;'><i class='fa fa-circle' style='color: #".$item['color'].";'></i> ".getMLText($item['text'])."</span>";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
<?php
|
<?php
|
||||||
$this->columnEnd();
|
$this->columnEnd();
|
||||||
$this->columnStart(4);
|
$this->columnStart(4);
|
||||||
|
|
|
@ -66,6 +66,7 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
$previewwidth = $this->params['previewWidthList'];
|
$previewwidth = $this->params['previewWidthList'];
|
||||||
$previewconverters = $this->params['previewConverters'];
|
$previewconverters = $this->params['previewConverters'];
|
||||||
$timeout = $this->params['timeout'];
|
$timeout = $this->params['timeout'];
|
||||||
|
$dayspastdashboard = $this->params['dayspastdashboard'];
|
||||||
$xsendfile = $this->params['xsendfile'];
|
$xsendfile = $this->params['xsendfile'];
|
||||||
|
|
||||||
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
|
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
|
||||||
|
@ -75,7 +76,7 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
$previewer->setConverters($previewconverters);
|
$previewer->setConverters($previewconverters);
|
||||||
|
|
||||||
echo $this->contentHeading(getMLText('new_documents'));
|
echo $this->contentHeading(getMLText('new_documents'));
|
||||||
$documents = $dms->getLatestChanges('newdocuments', mktime(0, 0, 0)-7*86400, time());
|
$documents = $dms->getLatestChanges('newdocuments', mktime(0, 0, 0)-$dayspastdashboard*86400, time());
|
||||||
if (count($documents) > 0) {
|
if (count($documents) > 0) {
|
||||||
$this->printList($documents, $previewer);
|
$this->printList($documents, $previewer);
|
||||||
}
|
}
|
||||||
|
@ -89,6 +90,7 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
$previewwidth = $this->params['previewWidthList'];
|
$previewwidth = $this->params['previewWidthList'];
|
||||||
$previewconverters = $this->params['previewConverters'];
|
$previewconverters = $this->params['previewConverters'];
|
||||||
$timeout = $this->params['timeout'];
|
$timeout = $this->params['timeout'];
|
||||||
|
$dayspastdashboard = $this->params['dayspastdashboard'];
|
||||||
$xsendfile = $this->params['xsendfile'];
|
$xsendfile = $this->params['xsendfile'];
|
||||||
|
|
||||||
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
|
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
|
||||||
|
@ -98,7 +100,7 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
$previewer->setConverters($previewconverters);
|
$previewer->setConverters($previewconverters);
|
||||||
|
|
||||||
echo $this->contentHeading(getMLText('updated_documents'));
|
echo $this->contentHeading(getMLText('updated_documents'));
|
||||||
$documents = $dms->getLatestChanges('updateddocuments', mktime(0, 0, 0)-7*86400, time());
|
$documents = $dms->getLatestChanges('updateddocuments', mktime(0, 0, 0)-$dayspastdashboard*86400, time());
|
||||||
if (count($documents) > 0) {
|
if (count($documents) > 0) {
|
||||||
$this->printList($documents, $previewer);
|
$this->printList($documents, $previewer);
|
||||||
}
|
}
|
||||||
|
@ -112,6 +114,7 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
$previewwidth = $this->params['previewWidthList'];
|
$previewwidth = $this->params['previewWidthList'];
|
||||||
$previewconverters = $this->params['previewConverters'];
|
$previewconverters = $this->params['previewConverters'];
|
||||||
$timeout = $this->params['timeout'];
|
$timeout = $this->params['timeout'];
|
||||||
|
$dayspastdashboard = $this->params['dayspastdashboard'];
|
||||||
$xsendfile = $this->params['xsendfile'];
|
$xsendfile = $this->params['xsendfile'];
|
||||||
|
|
||||||
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
|
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
|
||||||
|
@ -121,7 +124,7 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
$previewer->setConverters($previewconverters);
|
$previewer->setConverters($previewconverters);
|
||||||
|
|
||||||
echo $this->contentHeading(getMLText('status_change'));
|
echo $this->contentHeading(getMLText('status_change'));
|
||||||
$documents = $dms->getLatestChanges('statuschange', mktime(0, 0, 0)-7*86400, time());
|
$documents = $dms->getLatestChanges('statuschange', mktime(0, 0, 0)-$dayspastdashboard*86400, time());
|
||||||
if (count($documents) > 0) {
|
if (count($documents) > 0) {
|
||||||
$this->printList($documents, $previewer);
|
$this->printList($documents, $previewer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -215,9 +215,10 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Theme_Style {
|
||||||
$errmsgs = array();
|
$errmsgs = array();
|
||||||
foreach($extconf as $extname=>$extconf) {
|
foreach($extconf as $extname=>$extconf) {
|
||||||
$errmsgs = array();
|
$errmsgs = array();
|
||||||
|
$check = $extmgr->checkExtensionByDir($extname);
|
||||||
if(!$settings->extensionIsDisabled($extname)) {
|
if(!$settings->extensionIsDisabled($extname)) {
|
||||||
// if(!isset($extconf['disable']) || $extconf['disable'] == false) {
|
// if(!isset($extconf['disable']) || $extconf['disable'] == false) {
|
||||||
if(!$extmgr->checkExtensionByDir($extname))
|
if(!$check)
|
||||||
echo "<tr class=\"table-danger error\" ref=\"".$extname."\">";
|
echo "<tr class=\"table-danger error\" ref=\"".$extname."\">";
|
||||||
else
|
else
|
||||||
echo "<tr class=\"table-success success\" ref=\"".$extname."\">";
|
echo "<tr class=\"table-success success\" ref=\"".$extname."\">";
|
||||||
|
@ -250,7 +251,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Theme_Style {
|
||||||
echo "<a href=\"../out/out.Settings.php?currenttab=extensions#".$extname."\" title=\"".getMLText('configure_extension')."\"><i class=\"fa fa-cogs\"></i></a>";
|
echo "<a href=\"../out/out.Settings.php?currenttab=extensions#".$extname."\" title=\"".getMLText('configure_extension')."\"><i class=\"fa fa-cogs\"></i></a>";
|
||||||
if($settings->_enableExtensionDownload)
|
if($settings->_enableExtensionDownload)
|
||||||
echo "<form style=\"display: inline-block; margin: 0px;\" method=\"post\" action=\"../op/op.ExtensionMgr.php\" id=\"".$extname."-download\">".createHiddenFieldWithKey('extensionmgr')."<input type=\"hidden\" name=\"action\" value=\"download\" /><input type=\"hidden\" name=\"extname\" value=\"".$extname."\" /><a class=\"download\" data-extname=\"".$extname."\" title=\"".getMLText('download_extension')."\"><i class=\"fa fa-download\"></i></a></form>";
|
echo "<form style=\"display: inline-block; margin: 0px;\" method=\"post\" action=\"../op/op.ExtensionMgr.php\" id=\"".$extname."-download\">".createHiddenFieldWithKey('extensionmgr')."<input type=\"hidden\" name=\"action\" value=\"download\" /><input type=\"hidden\" name=\"extname\" value=\"".$extname."\" /><a class=\"download\" data-extname=\"".$extname."\" title=\"".getMLText('download_extension')."\"><i class=\"fa fa-download\"></i></a></form>";
|
||||||
if(is_writeable($settings->_configFilePath)) {
|
if(is_writeable($settings->_configFilePath) && $check) {
|
||||||
if(!$settings->extensionIsDisabled($extname)) {
|
if(!$settings->extensionIsDisabled($extname)) {
|
||||||
echo ' <a href="#" class="toggle" data-extname="'.$extname.'" title="'.getMLText('disable_extension').'"><i class="fa fa-check"</i></a>';
|
echo ' <a href="#" class="toggle" data-extname="'.$extname.'" title="'.getMLText('disable_extension').'"><i class="fa fa-check"</i></a>';
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -61,6 +61,7 @@ document.form1.email.focus();
|
||||||
$this->htmlStartPage(getMLText("password_forgotten"), "passwordforgotten");
|
$this->htmlStartPage(getMLText("password_forgotten"), "passwordforgotten");
|
||||||
$this->globalBanner();
|
$this->globalBanner();
|
||||||
$this->contentStart();
|
$this->contentStart();
|
||||||
|
echo "<div id=\"login_wrapper\">\n";
|
||||||
$this->pageNavigation(getMLText("password_forgotten"));
|
$this->pageNavigation(getMLText("password_forgotten"));
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
@ -101,6 +102,7 @@ document.form1.email.focus();
|
||||||
</form>
|
</form>
|
||||||
<p><a href="../out/out.Login.php"><?php echo getMLText("login"); ?></a></p>
|
<p><a href="../out/out.Login.php"><?php echo getMLText("login"); ?></a></p>
|
||||||
<?php
|
<?php
|
||||||
|
echo "</div>\n";
|
||||||
$this->contentEnd();
|
$this->contentEnd();
|
||||||
$this->htmlEndPage();
|
$this->htmlEndPage();
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
|
@ -69,47 +69,10 @@ $(document).ready(function() {
|
||||||
$this->printFileChooserJs();
|
$this->printFileChooserJs();
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function show() { /* {{{ */
|
protected function showForm($reviewStatus) { /* {{{ */
|
||||||
$dms = $this->params['dms'];
|
|
||||||
$user = $this->params['user'];
|
|
||||||
$folder = $this->params['folder'];
|
|
||||||
$document = $this->params['document'];
|
$document = $this->params['document'];
|
||||||
$content = $this->params['version'];
|
$content = $this->params['version'];
|
||||||
|
|
||||||
$reviews = $content->getReviewStatus();
|
|
||||||
foreach($reviews as $review) {
|
|
||||||
if($review['reviewID'] == $_GET['reviewid']) {
|
|
||||||
$reviewStatus = $review;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->htmlAddHeader('<script type="text/javascript" src="../views/'.$this->theme.'/vendors/jquery-validation/jquery.validate.js"></script>'."\n", 'js');
|
|
||||||
$this->htmlAddHeader('<script type="text/javascript" src="../views/'.$this->theme.'/styles/validation-default.js"></script>'."\n", 'js');
|
|
||||||
|
|
||||||
$this->htmlStartPage(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))));
|
|
||||||
$this->globalNavigation($folder);
|
|
||||||
$this->contentStart();
|
|
||||||
$this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document);
|
|
||||||
$this->contentHeading(getMLText("submit_review"));
|
|
||||||
|
|
||||||
// Display the Review form.
|
|
||||||
$reviewtype = ($reviewStatus['type'] == 0) ? 'ind' : 'grp';
|
$reviewtype = ($reviewStatus['type'] == 0) ? 'ind' : 'grp';
|
||||||
if($reviewStatus["status"]!=0) {
|
|
||||||
|
|
||||||
print "<table class=\"table table-condensed table-sm\"><thead><tr>";
|
|
||||||
print "<th>".getMLText("status")."</th>";
|
|
||||||
print "<th>".getMLText("comment")."</th>";
|
|
||||||
print "<th>".getMLText("last_update")."</th>";
|
|
||||||
print "</tr></thead><tbody><tr>";
|
|
||||||
print "<td>";
|
|
||||||
printReviewStatusText($reviewStatus["status"]);
|
|
||||||
print "</td>";
|
|
||||||
print "<td>".htmlspecialchars($reviewStatus["comment"])."</td>";
|
|
||||||
$indUser = $dms->getUser($reviewStatus["userID"]);
|
|
||||||
print "<td>".$reviewStatus["date"]." - ". htmlspecialchars($indUser->getFullname()) ."</td>";
|
|
||||||
print "</tr></tbody></table><br>\n";
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
<form class="form-horizontal" method="post" action="../op/op.ReviewDocument.php" id="form<?= $reviewtype ?>" name="form<?= $reviewtype ?>" enctype="multipart/form-data">
|
<form class="form-horizontal" method="post" action="../op/op.ReviewDocument.php" id="form<?= $reviewtype ?>" name="form<?= $reviewtype ?>" enctype="multipart/form-data">
|
||||||
<?php echo createHiddenFieldWithKey('reviewdocument'); ?>
|
<?php echo createHiddenFieldWithKey('reviewdocument'); ?>
|
||||||
|
@ -154,6 +117,50 @@ $(document).ready(function() {
|
||||||
<input type='hidden' name='version' value='<?php echo $content->getVersion() ?>'/>
|
<input type='hidden' name='version' value='<?php echo $content->getVersion() ?>'/>
|
||||||
</form>
|
</form>
|
||||||
<?php
|
<?php
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
public function show() { /* {{{ */
|
||||||
|
$dms = $this->params['dms'];
|
||||||
|
$user = $this->params['user'];
|
||||||
|
$folder = $this->params['folder'];
|
||||||
|
$document = $this->params['document'];
|
||||||
|
$content = $this->params['version'];
|
||||||
|
$reviewid = $this->params['reviewid'];
|
||||||
|
|
||||||
|
$reviews = $content->getReviewStatus();
|
||||||
|
foreach($reviews as $review) {
|
||||||
|
if($review['reviewID'] == $reviewid) {
|
||||||
|
$reviewStatus = $review;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->htmlAddHeader('<script type="text/javascript" src="../views/'.$this->theme.'/vendors/jquery-validation/jquery.validate.js"></script>'."\n", 'js');
|
||||||
|
$this->htmlAddHeader('<script type="text/javascript" src="../views/'.$this->theme.'/styles/validation-default.js"></script>'."\n", 'js');
|
||||||
|
|
||||||
|
$this->htmlStartPage(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))));
|
||||||
|
$this->globalNavigation($folder);
|
||||||
|
$this->contentStart();
|
||||||
|
$this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document);
|
||||||
|
$this->contentHeading(getMLText("submit_review"));
|
||||||
|
|
||||||
|
if($reviewStatus["status"]!=0) {
|
||||||
|
|
||||||
|
print "<table class=\"table table-condensed table-sm\"><thead><tr>";
|
||||||
|
print "<th>".getMLText("status")."</th>";
|
||||||
|
print "<th>".getMLText("comment")."</th>";
|
||||||
|
print "<th>".getMLText("last_update")."</th>";
|
||||||
|
print "</tr></thead><tbody><tr>";
|
||||||
|
print "<td>";
|
||||||
|
printReviewStatusText($reviewStatus["status"]);
|
||||||
|
print "</td>";
|
||||||
|
print "<td>".htmlspecialchars($reviewStatus["comment"])."</td>";
|
||||||
|
$indUser = $dms->getUser($reviewStatus["userID"]);
|
||||||
|
print "<td>".$reviewStatus["date"]." - ". htmlspecialchars($indUser->getFullname()) ."</td>";
|
||||||
|
print "</tr></tbody></table><br>\n";
|
||||||
|
}
|
||||||
|
// Display the Review form.
|
||||||
|
$this->showForm($reviewStatus);
|
||||||
$this->contentEnd();
|
$this->contentEnd();
|
||||||
$this->htmlEndPage();
|
$this->htmlEndPage();
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
|
@ -386,6 +386,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk))
|
||||||
<?php $this->showConfigOption('settings_expandFolderTree', 'expandFolderTree', array(' 0'=>'settings_expandFolderTree_val0', ' 1'=>'settings_expandFolderTree_val1', ' 2'=>'settings_expandFolderTree_val2'), false, true); ?>
|
<?php $this->showConfigOption('settings_expandFolderTree', 'expandFolderTree', array(' 0'=>'settings_expandFolderTree_val0', ' 1'=>'settings_expandFolderTree_val1', ' 2'=>'settings_expandFolderTree_val2'), false, true); ?>
|
||||||
<?php $this->showConfigCheckbox('settings_enableRecursiveCount', 'enableRecursiveCount'); ?>
|
<?php $this->showConfigCheckbox('settings_enableRecursiveCount', 'enableRecursiveCount'); ?>
|
||||||
<?php $this->showConfigText('settings_maxRecursiveCount', 'maxRecursiveCount'); ?>
|
<?php $this->showConfigText('settings_maxRecursiveCount', 'maxRecursiveCount'); ?>
|
||||||
|
<?php $this->showConfigText('settings_daysPastDashboard', 'daysPastDashboard'); ?>
|
||||||
<?php $this->showConfigCheckbox('settings_enableLanguageSelector', 'enableLanguageSelector'); ?>
|
<?php $this->showConfigCheckbox('settings_enableLanguageSelector', 'enableLanguageSelector'); ?>
|
||||||
<?php $this->showConfigCheckbox('settings_enableHelp', 'enableHelp'); ?>
|
<?php $this->showConfigCheckbox('settings_enableHelp', 'enableHelp'); ?>
|
||||||
<?php $this->showConfigCheckbox('settings_enableThemeSelector', 'enableThemeSelector'); ?>
|
<?php $this->showConfigCheckbox('settings_enableThemeSelector', 'enableThemeSelector'); ?>
|
||||||
|
|
|
@ -692,7 +692,7 @@ $(document).ready( function() {
|
||||||
if(is_string($item))
|
if(is_string($item))
|
||||||
echo "<li class=\"nav-item\">".$item."</li>";
|
echo "<li class=\"nav-item\">".$item."</li>";
|
||||||
elseif(is_array($item)) {
|
elseif(is_array($item)) {
|
||||||
echo "<li class=\"nav-item m-1\"><a class=\"_nav-link btn btn-mini btn-outline-primary btn-sm".(!empty($item['class']) ? ' '. $item['class'] : '')."\"".(isset($item['link']) ? " href=\"".$item['link']."\"" : '').(!empty($item['target']) ? ' target="'.$item['target'].'"' : '');
|
echo "<li class=\"nav-item m-1\"><a class=\"_nav-link btn btn-mini btn-outline-primary btn-sm".(!empty($item['class']) ? ' '. $item['class'] : '')."\"".(isset($item['link']) ? " href=\"".$item['link']."\"" : '').(!empty($item['target']) ? ' target="'.$item['target'].'"' : '').(!empty($item['title']) ? ' title="'.getMLText($item['title']).'"' : '');
|
||||||
if(!empty($item['attributes'])) {
|
if(!empty($item['attributes'])) {
|
||||||
foreach($item['attributes'] as $attr) {
|
foreach($item['attributes'] as $attr) {
|
||||||
echo ' '.$attr[0].'="'.$attr[1].'"';
|
echo ' '.$attr[0].'="'.$attr[1].'"';
|
||||||
|
|
|
@ -819,7 +819,7 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SeedDMSUpload.handleFileUpload = function(files,obj,statusbar) {
|
SeedDMSUpload.handleFileUpload = function(items,obj,statusbar) {
|
||||||
/* target is set for the quick upload area */
|
/* target is set for the quick upload area */
|
||||||
var target_id = obj.data('target');
|
var target_id = obj.data('target');
|
||||||
var target_type = 'folder';
|
var target_type = 'folder';
|
||||||
|
@ -839,31 +839,45 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(target_type == 'folder' && target_id) {
|
if(target_type == 'folder' && target_id) {
|
||||||
for (var i = 0; i < files.length; i++) {
|
for (var i = 0; i < items.length; i++) {
|
||||||
if(files[i].size <= maxFileSize) {
|
var item = items[i].webkitGetAsEntry();
|
||||||
var fd = new FormData();
|
if (item.isFile) {
|
||||||
fd.append('targettype', target_type);
|
item.file(function(file) {
|
||||||
fd.append('folderid', target_id);
|
if(file.size <= maxFileSize) {
|
||||||
fd.append('formtoken', obj.data('uploadformtoken'));
|
var fd = new FormData();
|
||||||
if (typeof obj.data('comment') !== 'undefined') {
|
fd.append('targettype', target_type);
|
||||||
fd.append('comment', obj.data('comment'));
|
fd.append('folderid', target_id);
|
||||||
}
|
fd.append('formtoken', obj.data('uploadformtoken'));
|
||||||
if (typeof obj.data('keywords') !== 'undefined') {
|
if (typeof obj.data('comment') !== 'undefined') {
|
||||||
fd.append('keywords', obj.data('keywords'));
|
fd.append('comment', obj.data('comment'));
|
||||||
}
|
}
|
||||||
fd.append('userfile', files[i]);
|
if (typeof obj.data('keywords') !== 'undefined') {
|
||||||
fd.append('command', 'uploaddocument');
|
fd.append('keywords', obj.data('keywords'));
|
||||||
this.getFormData(fd, obj.data('attributes'), 'attributes');
|
}
|
||||||
this.getFormData(fd, obj.data('categories'), 'categories');
|
fd.append('userfile', file);
|
||||||
// fd.append('path', files[i].webkitRelativePath);
|
fd.append('command', 'uploaddocument');
|
||||||
|
SeedDMSUpload.getFormData(fd, obj.data('attributes'), 'attributes');
|
||||||
|
SeedDMSUpload.getFormData(fd, obj.data('categories'), 'categories');
|
||||||
|
// fd.append('path', file.webkitRelativePath);
|
||||||
|
|
||||||
statusbar.parent().show();
|
statusbar.parent().show();
|
||||||
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
||||||
status.setFileNameSize(files[i].name,files[i].size);
|
status.setFileNameSize(file.name,file.size);
|
||||||
SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc);
|
SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc);
|
||||||
} else {
|
} else {
|
||||||
|
noty({
|
||||||
|
text: maxFileSizeMsg + '<br /><em>' + file.name + ' (' + file.size + ' Bytes)</em>',
|
||||||
|
type: 'error',
|
||||||
|
dismissQueue: true,
|
||||||
|
layout: 'topRight',
|
||||||
|
theme: 'defaultTheme',
|
||||||
|
timeout: 5000
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if(item.isDirectory) {
|
||||||
noty({
|
noty({
|
||||||
text: maxFileSizeMsg + '<br /><em>' + files[i].name + ' (' + files[i].size + ' Bytes)</em>',
|
text: 'Folders currently not supported',
|
||||||
type: 'error',
|
type: 'error',
|
||||||
dismissQueue: true,
|
dismissQueue: true,
|
||||||
layout: 'topRight',
|
layout: 'topRight',
|
||||||
|
@ -945,9 +959,12 @@ $(document).ready(function() { /* {{{ */
|
||||||
$(this).css('border', '0px dotted #0B85A1');
|
$(this).css('border', '0px dotted #0B85A1');
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
|
||||||
//We need to send dropped files to Server
|
//We need to send dropped files to Server
|
||||||
SeedDMSUpload.handleFileUpload(files, $(this), $(this));
|
if(items.length > 0) {
|
||||||
|
SeedDMSUpload.handleFileUpload(items, $(this), $(this));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('dragenter', '.droptarget', function (e) {
|
$(document).on('dragenter', '.droptarget', function (e) {
|
||||||
|
@ -974,9 +991,10 @@ $(document).ready(function() { /* {{{ */
|
||||||
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
|
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
|
||||||
if(target_type == 'folder') {
|
if(target_type == 'folder') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
if(items.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")*/);
|
SeedDMSUpload.handleFileUpload(items,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
} else {
|
} else {
|
||||||
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
||||||
source_type = source_info.type;
|
source_type = source_info.type;
|
||||||
|
@ -1075,9 +1093,10 @@ $(document).ready(function() { /* {{{ */
|
||||||
}
|
}
|
||||||
} else if(target_type == 'document') {
|
} else if(target_type == 'document') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
if(items.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")*/);
|
SeedDMSUpload.handleFileUpload(items,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
} else {
|
} else {
|
||||||
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
||||||
source_type = source_info.type;
|
source_type = source_info.type;
|
||||||
|
@ -1160,8 +1179,9 @@ $(document).ready(function() { /* {{{ */
|
||||||
}
|
}
|
||||||
} else if(target_type == 'attachment') {
|
} else if(target_type == 'attachment') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
if(items.length > 0) {
|
||||||
|
SeedDMSUpload.handleFileUpload(items,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -1590,11 +1590,11 @@ $(document).ready(function() {
|
||||||
echo self::getFileChooserHtml($varname, $multiple, $accept);
|
echo self::getFileChooserHtml($varname, $multiple, $accept);
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function printDateChooser($defDate = '', $varName, $lang='', $dateformat='', $startdate='', $enddate='', $weekstart=null) { /* {{{ */
|
function printDateChooser($defDate, $varName, $lang='', $dateformat='', $startdate='', $enddate='', $weekstart=null) { /* {{{ */
|
||||||
echo self::getDateChooser($defDate, $varName, $lang, $dateformat, $startdate, $enddate, $weekstart);
|
echo self::getDateChooser($defDate, $varName, $lang, $dateformat, $startdate, $enddate, $weekstart);
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function getDateChooser($defDate = '', $varName, $lang='', $dateformat='', $startdate='', $enddate='', $weekstart=null, $placeholder='', $nogroup=false) { /* {{{ */
|
function getDateChooser($defDate, $varName, $lang='', $dateformat='', $startdate='', $enddate='', $weekstart=null, $placeholder='', $nogroup=false) { /* {{{ */
|
||||||
if(!$dateformat)
|
if(!$dateformat)
|
||||||
$dateformat = getConvertDateFormat();
|
$dateformat = getConvertDateFormat();
|
||||||
$content = '';
|
$content = '';
|
||||||
|
@ -1610,7 +1610,7 @@ $(document).ready(function() {
|
||||||
return $content;
|
return $content;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function __printDateChooser($defDate = -1, $varName) { /* {{{ */
|
function __printDateChooser($defDate, $varName) { /* {{{ */
|
||||||
|
|
||||||
if ($defDate == -1)
|
if ($defDate == -1)
|
||||||
$defDate = mktime();
|
$defDate = mktime();
|
||||||
|
|
|
@ -3,7 +3,7 @@ body { /* Add top padding for full-width layout */
|
||||||
}
|
}
|
||||||
#login_wrapper {
|
#login_wrapper {
|
||||||
margin: auto auto;
|
margin: auto auto;
|
||||||
width: 360px;
|
width: 460px;
|
||||||
}
|
}
|
||||||
@media (max-width: 575px) {
|
@media (max-width: 575px) {
|
||||||
#login_wrapper {
|
#login_wrapper {
|
||||||
|
|
|
@ -763,7 +763,7 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
timeout: 1500
|
timeout: 1500
|
||||||
});
|
});
|
||||||
if(editBtnLabel)
|
if(editBtnLabel)
|
||||||
status.statusbar.after($('<a href="'+seeddms_webroot+'out/out.EditDocument.php?documentid=' + data.data + '" class="btn btn-mini btn-primary">' + editBtnLabel + '</a>'));
|
status.statusbar.after($('<a href="'+seeddms_webroot+'out/out.EditDocument.php?documentid=' + data.data + '" class="btn btn-mini btn-sm btn-primary">' + editBtnLabel + '</a>'));
|
||||||
if(callback) {
|
if(callback) {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
@ -793,7 +793,7 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
this.filename = $("<div class='filename'></div>").appendTo(this.statusbar);
|
this.filename = $("<div class='filename'></div>").appendTo(this.statusbar);
|
||||||
this.size = $("<div class='filesize'></div>").appendTo(this.statusbar);
|
this.size = $("<div class='filesize'></div>").appendTo(this.statusbar);
|
||||||
this.progressBar = $("<div class='progress'><div class='bar bg-success'></div></div>").appendTo(this.statusbar);
|
this.progressBar = $("<div class='progress'><div class='bar bg-success'></div></div>").appendTo(this.statusbar);
|
||||||
this.abort = $("<div class='btn btn-mini btn-danger'>" + abortBtnLabel + "</div>").appendTo(this.statusbar);
|
this.abort = $("<div class='btn btn-mini btn-sm btn-danger'>" + abortBtnLabel + "</div>").appendTo(this.statusbar);
|
||||||
// $('.statusbar').empty();
|
// $('.statusbar').empty();
|
||||||
obj.after(this.statusbar);
|
obj.after(this.statusbar);
|
||||||
this.setFileNameSize = function(name,size) {
|
this.setFileNameSize = function(name,size) {
|
||||||
|
@ -850,7 +850,7 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SeedDMSUpload.handleFileUpload = function(files,obj,statusbar) {
|
SeedDMSUpload.handleFileUpload = function(items,obj,statusbar) {
|
||||||
/* target is set for the quick upload area */
|
/* target is set for the quick upload area */
|
||||||
var target_id = obj.data('target');
|
var target_id = obj.data('target');
|
||||||
var target_type = 'folder';
|
var target_type = 'folder';
|
||||||
|
@ -870,37 +870,57 @@ function onAddClipboard(ev) { /* {{{ */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(target_type == 'folder' && target_id) {
|
if(target_type == 'folder' && target_id) {
|
||||||
for (var i = 0; i < files.length; i++) {
|
for (var i = 0; i < items.length; i++) {
|
||||||
if(files[i].size <= maxFileSize) {
|
var item = items[i]; //.webkitGetAsEntry();
|
||||||
var fd = new FormData();
|
if (item.isFile) {
|
||||||
fd.append('targettype', target_type);
|
item.file(function(file) {
|
||||||
fd.append('folderid', target_id);
|
if(file.size <= maxFileSize) {
|
||||||
fd.append('formtoken', obj.data('uploadformtoken'));
|
var fd = new FormData();
|
||||||
if (typeof obj.data('comment') !== 'undefined') {
|
fd.append('targettype', target_type);
|
||||||
fd.append('comment', obj.data('comment'));
|
fd.append('folderid', target_id);
|
||||||
}
|
fd.append('formtoken', obj.data('uploadformtoken'));
|
||||||
if (typeof obj.data('keywords') !== 'undefined') {
|
if (typeof obj.data('comment') !== 'undefined') {
|
||||||
fd.append('keywords', obj.data('keywords'));
|
fd.append('comment', obj.data('comment'));
|
||||||
}
|
}
|
||||||
fd.append('userfile', files[i]);
|
if (typeof obj.data('keywords') !== 'undefined') {
|
||||||
fd.append('command', 'uploaddocument');
|
fd.append('keywords', obj.data('keywords'));
|
||||||
this.getFormData(fd, obj.data('attributes'), 'attributes');
|
}
|
||||||
this.getFormData(fd, obj.data('categories'), 'categories');
|
fd.append('userfile', file);
|
||||||
// fd.append('path', files[i].webkitRelativePath);
|
fd.append('command', 'uploaddocument');
|
||||||
|
SeedDMSUpload.getFormData(fd, obj.data('attributes'), 'attributes');
|
||||||
|
SeedDMSUpload.getFormData(fd, obj.data('categories'), 'categories');
|
||||||
|
// fd.append('path', file.webkitRelativePath);
|
||||||
|
|
||||||
statusbar.parent().show();
|
statusbar.parent().show();
|
||||||
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
var status = new SeedDMSUpload.createStatusbar(statusbar);
|
||||||
status.setFileNameSize(files[i].name,files[i].size);
|
status.setFileNameSize(file.name,file.size);
|
||||||
SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc);
|
SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc);
|
||||||
} else {
|
} else {
|
||||||
|
noty({
|
||||||
|
text: maxFileSizeMsg + '<br /><em>' + file.name + ' (' + file.size + ' Bytes)</em>',
|
||||||
|
type: 'error',
|
||||||
|
dismissQueue: true,
|
||||||
|
layout: 'topRight',
|
||||||
|
theme: 'defaultTheme',
|
||||||
|
timeout: 5000
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if(item.isDirectory) {
|
||||||
|
var dirReader = item.createReader();
|
||||||
|
dirReader.readEntries(function(entries) {
|
||||||
|
SeedDMSUpload.handleFileUpload(entries, obj, statusbar);
|
||||||
|
});
|
||||||
|
/*
|
||||||
noty({
|
noty({
|
||||||
text: maxFileSizeMsg + '<br /><em>' + files[i].name + ' (' + files[i].size + ' Bytes)</em>',
|
text: 'Folders currently not supported',
|
||||||
type: 'error',
|
type: 'error',
|
||||||
dismissQueue: true,
|
dismissQueue: true,
|
||||||
layout: 'topRight',
|
layout: 'topRight',
|
||||||
theme: 'defaultTheme',
|
theme: 'defaultTheme',
|
||||||
timeout: 5000
|
timeout: 5000
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(target_type == 'document' && target_id) {
|
} else if(target_type == 'document' && target_id) {
|
||||||
|
@ -976,9 +996,20 @@ $(document).ready(function() { /* {{{ */
|
||||||
$(this).css('border', '0px dotted #0B85A1');
|
$(this).css('border', '0px dotted #0B85A1');
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
|
||||||
//We need to send dropped files to Server
|
//We need to send dropped files to Server
|
||||||
SeedDMSUpload.handleFileUpload(files, $(this), $(this));
|
console.log(items[0]);
|
||||||
|
console.log(items[0].webkitGetAsEntry());
|
||||||
|
|
||||||
|
newitems = [];
|
||||||
|
if(items.length > 0) {
|
||||||
|
for (var i=0; i<items.length; i++) {
|
||||||
|
newitems.push(items[i].webkitGetAsEntry());
|
||||||
|
}
|
||||||
|
console.log(newitems);
|
||||||
|
SeedDMSUpload.handleFileUpload(newitems, $(this), $(this));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('dragenter', '.droptarget', function (e) {
|
$(document).on('dragenter', '.droptarget', function (e) {
|
||||||
|
@ -1005,9 +1036,14 @@ $(document).ready(function() { /* {{{ */
|
||||||
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
|
target_name = $(e.currentTarget).data('name')+''; // Force this to be a string
|
||||||
if(target_type == 'folder') {
|
if(target_type == 'folder') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
if(items.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")*/);
|
newitems = [];
|
||||||
|
for (var i=0; i<items.length; i++) {
|
||||||
|
newitems.push(items[i].webkitGetAsEntry());
|
||||||
|
}
|
||||||
|
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
} else {
|
} else {
|
||||||
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
||||||
source_type = source_info.type;
|
source_type = source_info.type;
|
||||||
|
@ -1118,9 +1154,14 @@ $(document).ready(function() { /* {{{ */
|
||||||
}
|
}
|
||||||
} else if(target_type == 'document') {
|
} else if(target_type == 'document') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
|
if(items.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")*/);
|
newitems = [];
|
||||||
|
for (var i=0; i<items.length; i++) {
|
||||||
|
newitems.push(items[i].webkitGetAsEntry());
|
||||||
|
}
|
||||||
|
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
} else {
|
} else {
|
||||||
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
|
||||||
source_type = source_info.type;
|
source_type = source_info.type;
|
||||||
|
@ -1210,8 +1251,13 @@ $(document).ready(function() { /* {{{ */
|
||||||
}
|
}
|
||||||
} else if(target_type == 'attachment') {
|
} else if(target_type == 'attachment') {
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files;
|
||||||
if(files.length > 0) {
|
var items = e.originalEvent.dataTransfer.items;
|
||||||
SeedDMSUpload.handleFileUpload(files,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
if(items.length > 0) {
|
||||||
|
newitems = [];
|
||||||
|
for (var i=0; i<items.length; i++) {
|
||||||
|
newitems.push(items[i].webkitGetAsEntry());
|
||||||
|
}
|
||||||
|
SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1')/*$(e.currentTarget).find("span")*/);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue
Block a user