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

This commit is contained in:
Uwe Steinmann 2022-08-12 10:53:32 +02:00
commit a0db4bcc6d
41 changed files with 476 additions and 331 deletions

View File

@ -234,7 +234,11 @@
Changes in version 5.1.27
--------------------------------------------------------------------------------
- fix adding new attribute definition if object type is 'all'
- EmptyFolder runs callbacks to remove objects from index and remove preview images
- skip internal conversion service for images if imagick extension is missing
- running the controller will always call the hooks preRun and postRun
- add tabs on ViewFolder page
- link behind logo in header can be set in extension
--------------------------------------------------------------------------------
Changes in version 5.1.26

View File

@ -89,7 +89,7 @@ class SeedDMS_Controller_AddDocument extends SeedDMS_Controller_Common {
$attribute = date('Y-m-d', makeTsFromDate($attribute));
break;
}
if(!$attrdef->validate($attribute)) {
if(!$attrdef->validate($attribute, null, true)) {
$this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute);
return false;
}

View File

@ -30,119 +30,180 @@ class SeedDMS_Controller_DocumentAccess extends SeedDMS_Controller_Common {
$settings = $this->params['settings'];
$action = $this->params['action'];
// Change owner -----------------------------------------------------------
if ($action == "setowner") {
if(false === $this->callHook('preSetOwner', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_preSetOwner_failed';
return null;
}
$newowner = $this->params['newowner'];
$oldowner = $document->getOwner();
if($document->setOwner($newowner)) {
if(false === $this->callHook('postSetOwner', $document, $oldowner)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_postSetOwner_failed';
return null;
}
}
} elseif ($action == "notinherit") {
if(false === $this->callHook('preSetNotInherit', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_preSetNotInherit_failed';
return null;
}
return null;
}
/* Get default access before access is not longer inherited. This
* will return the default access from the parent folder.
*/
$defAccess = $document->getDefaultAccess();
if(!$document->setInheritAccess(false)) {
return false;
}
// Change owner -----------------------------------------------------------
public function setowner() {
$dms = $this->params['dms'];
$user = $this->params['user'];
$folder = $this->params['folder'];
$document = $this->params['document'];
$settings = $this->params['settings'];
if(!$document->setDefaultAccess($defAccess)) {
return false;
}
//copy ACL of parent folder
$mode = $this->params['mode'];
if ($mode == "copy") {
$accessList = $folder->getAccessList();
foreach ($accessList["users"] as $userAccess)
$document->addAccess($userAccess->getMode(), $userAccess->getUserID(), true);
foreach ($accessList["groups"] as $groupAccess)
$document->addAccess($groupAccess->getMode(), $groupAccess->getGroupID(), false);
}
if(false === $this->callHook('postSetNotInherit', $document)) {
if(false === $this->callHook('preSetOwner', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_preSetOwner_failed';
return null;
}
$newowner = $this->params['newowner'];
$oldowner = $document->getOwner();
if($document->setOwner($newowner)) {
if(false === $this->callHook('postSetOwner', $document, $oldowner)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_postSetNotInherit_failed';
$this->errormsg = 'hook_postSetOwner_failed';
return null;
}
} elseif ($action == "inherit") {
if(false === $this->callHook('preSetInherit', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_preSetInherit_failed';
return null;
}
if(!$document->clearAccessList() || !$document->setInheritAccess(true)) {
return false;
}
if(false === $this->callHook('postSetInherit', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_postSetInherit_failed';
return null;
}
} elseif ($action == "setdefault") {
if(false === $this->callHook('preSetDefault', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_preSetDefault_failed';
return null;
}
$mode = $this->params['mode'];
if(!$document->setDefaultAccess($mode)) {
return false;
}
if(false === $this->callHook('postSetDefault', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_postSetDefault_failed';
return null;
}
} elseif ($action == "editaccess") {
$mode = $this->params['mode'];
$userid = $this->params['userid'];
$groupid = $this->params['groupid'];
if ($userid) {
$document->changeAccess($mode, $userid, true);
}
elseif ($groupid) {
$document->changeAccess($mode, $groupid, false);
}
} elseif ($action == "delaccess") {
$userid = $this->params['userid'];
$groupid = $this->params['groupid'];
if ($userid) {
$document->removeAccess($userid, true);
}
elseif ($groupid) {
$document->removeAccess($groupid, false);
}
} elseif ($action == "addaccess") {
$mode = $this->params['mode'];
$userid = $this->params['userid'];
$groupid = $this->params['groupid'];
if ($userid && $userid != -1) {
$document->addAccess($mode, $userid, true);
}
elseif ($groupid && $groupid != -1) {
$document->addAccess($mode, $groupid, false);
}
}
return true;
}
public function notinherit() {
$dms = $this->params['dms'];
$user = $this->params['user'];
$folder = $this->params['folder'];
$document = $this->params['document'];
$settings = $this->params['settings'];
if(false === $this->callHook('preSetNotInherit', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_preSetNotInherit_failed';
return null;
}
/* Get default access before access is not longer inherited. This
* will return the default access from the parent folder.
*/
$defAccess = $document->getDefaultAccess();
if(!$document->setInheritAccess(false)) {
return false;
}
if(!$document->setDefaultAccess($defAccess)) {
return false;
}
//copy ACL of parent folder
$mode = $this->params['mode'];
if ($mode == "copy") {
$accessList = $folder->getAccessList();
foreach ($accessList["users"] as $userAccess)
$document->addAccess($userAccess->getMode(), $userAccess->getUserID(), true);
foreach ($accessList["groups"] as $groupAccess)
$document->addAccess($groupAccess->getMode(), $groupAccess->getGroupID(), false);
}
if(false === $this->callHook('postSetNotInherit', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_postSetNotInherit_failed';
return null;
}
return true;
}
public function inherit() {
$dms = $this->params['dms'];
$user = $this->params['user'];
$folder = $this->params['folder'];
$document = $this->params['document'];
$settings = $this->params['settings'];
if(false === $this->callHook('preSetInherit', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_preSetInherit_failed';
return null;
}
if(!$document->clearAccessList() || !$document->setInheritAccess(true)) {
return false;
}
if(false === $this->callHook('postSetInherit', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_postSetInherit_failed';
return null;
}
return true;
}
public function setdefault() {
$dms = $this->params['dms'];
$user = $this->params['user'];
$folder = $this->params['folder'];
$document = $this->params['document'];
$settings = $this->params['settings'];
if(false === $this->callHook('preSetDefault', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_preSetDefault_failed';
return null;
}
$mode = $this->params['mode'];
if(!$document->setDefaultAccess($mode)) {
return false;
}
if(false === $this->callHook('postSetDefault', $document)) {
if(empty($this->errormsg))
$this->errormsg = 'hook_postSetDefault_failed';
return null;
}
return true;
}
public function editaccess() {
$dms = $this->params['dms'];
$user = $this->params['user'];
$folder = $this->params['folder'];
$document = $this->params['document'];
$settings = $this->params['settings'];
$mode = $this->params['mode'];
$userid = $this->params['userid'];
$groupid = $this->params['groupid'];
if ($userid) {
$document->changeAccess($mode, $userid, true);
}
elseif ($groupid) {
$document->changeAccess($mode, $groupid, false);
}
return true;
}
public function delaccess() {
$dms = $this->params['dms'];
$user = $this->params['user'];
$folder = $this->params['folder'];
$document = $this->params['document'];
$settings = $this->params['settings'];
$userid = $this->params['userid'];
$groupid = $this->params['groupid'];
if ($userid) {
$document->removeAccess($userid, true);
}
elseif ($groupid) {
$document->removeAccess($groupid, false);
}
return true;
}
public function addaccess() {
$dms = $this->params['dms'];
$user = $this->params['user'];
$folder = $this->params['folder'];
$document = $this->params['document'];
$settings = $this->params['settings'];
$mode = $this->params['mode'];
$userid = $this->params['userid'];
$groupid = $this->params['groupid'];
if ($userid && $userid != -1) {
$document->addAccess($mode, $userid, true);
}
elseif ($groupid && $groupid != -1) {
$document->addAccess($mode, $groupid, false);
}
return true;
}
}

View File

@ -125,7 +125,7 @@ class SeedDMS_Controller_EditDocument extends SeedDMS_Controller_Common {
$attribute = date('Y-m-d', makeTsFromDate($attribute));
break;
}
if(!$attrdef->validate($attribute, $document, true)) {
if(!$attrdef->validate($attribute, $document, false)) {
$this->errormsg = getAttributeValidationError($attrdef->getValidationError(), $attrdef->getName(), $attribute);
return false;
}

View File

@ -59,7 +59,7 @@ class SeedDMS_Controller_EditFolder extends SeedDMS_Controller_Common {
$attribute = date('Y-m-d', makeTsFromDate($attribute));
break;
}
if(!$attrdef->validate($attribute, $folder, true)) {
if(!$attrdef->validate($attribute, $folder, false)) {
$this->errormsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute);
return false;
}

View File

@ -22,96 +22,93 @@
*/
class SeedDMS_Controller_Preview extends SeedDMS_Controller_Common {
public function run() {
global $theme;
public function version() {
$dms = $this->params['dms'];
$type = $this->params['type'];
$settings = $this->params['settings'];
$conversionmgr = $this->params['conversionmgr'];
switch($type) {
case "version":
$version = $this->params['version'];
$document = $this->params['document'];
$width = $this->params['width'];
if($version < 1) {
$content = $this->callHook('documentLatestContent', $document);
if($content === null)
$content = $document->getLatestContent();
} else {
$content = $this->callHook('documentContent', $document, $version);
if($content === null)
$content = $document->getContentByVersion($version);
}
if (!is_object($content)) {
$this->errormsg = 'invalid_version';
return false;
}
/* set params['content'] for compatiblity with older extensions which
* expect the content in the controller
*/
$this->params['content'] = $content;
if(null === $this->callHook('version')) {
if($width)
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $width, $settings->_cmdTimeout);
else
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir);
if($conversionmgr)
$previewer->setConversionMgr($conversionmgr);
else
$previewer->setConverters($settings->_converters['preview']);
$previewer->setXsendfile($settings->_enableXsendfile);
if(!$previewer->hasPreview($content)) {
add_log_line("");
if(!$previewer->createPreview($content)) {
add_log_line("", PEAR_LOG_ERR);
}
}
if(!$previewer->hasPreview($content)) {
header('Content-Type: image/svg+xml');
readfile('../views/'.$theme.'/images/empty.svg');
exit;
}
header('Content-Type: image/png');
$previewer->getPreview($content);
}
break;
case "file":
$object = $this->params['object'];
$document = $this->params['document'];
$width = $this->params['width'];
if (!is_object($object)) {
$this->errormsg = 'invalid_version';
return false;
}
if(null === $this->callHook('file')) {
if($width)
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $width, $settings->_cmdTimeout);
else
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir);
if($conversionmgr)
$previewer->setConversionMgr($conversionmgr);
else
$previewer->setConverters($settings->_converters['preview']);
$previewer->setXsendfile($settings->_enableXsendfile);
if(!$previewer->hasPreview($object)) {
add_log_line("");
if(!$previewer->createPreview($object)) {
add_log_line("", PEAR_LOG_ERR);
}
}
if(!$previewer->hasPreview($object)) {
header('Content-Type: image/svg+xml');
readfile('../views/'.$theme.'/images/empty.svg');
exit;
}
header('Content-Type: image/png');
$previewer->getPreview($object);
}
break;
$version = $this->params['version'];
$document = $this->params['document'];
$width = $this->params['width'];
if($version < 1) {
$content = $this->callHook('documentLatestContent', $document);
if($content === null)
$content = $document->getLatestContent();
} else {
$content = $this->callHook('documentContent', $document, $version);
if($content === null)
$content = $document->getContentByVersion($version);
}
return true;
}
if (!is_object($content)) {
$this->errormsg = 'invalid_version';
return false;
}
/* set params['content'] for compatiblity with older extensions which
* expect the content in the controller
*/
$this->params['content'] = $content;
if(null === $this->callHook('version')) {
if($width)
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $width, $settings->_cmdTimeout);
else
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir);
if($conversionmgr)
$previewer->setConversionMgr($conversionmgr);
else
$previewer->setConverters($settings->_converters['preview']);
$previewer->setXsendfile($settings->_enableXsendfile);
if(!$previewer->hasPreview($content)) {
add_log_line("");
if(!$previewer->createPreview($content)) {
add_log_line("", PEAR_LOG_ERR);
}
}
if(!$previewer->hasPreview($content)) {
return false;
}
header('Content-Type: image/png');
$previewer->getPreview($content);
return true;
}
} /* }}} */
public function file() {
$dms = $this->params['dms'];
$settings = $this->params['settings'];
$conversionmgr = $this->params['conversionmgr'];
$object = $this->params['object'];
$document = $this->params['document'];
$width = $this->params['width'];
if (!is_object($object)) {
$this->errormsg = 'invalid_version';
return false;
}
if(null === $this->callHook('file')) {
if($width)
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $width, $settings->_cmdTimeout);
else
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir);
if($conversionmgr)
$previewer->setConversionMgr($conversionmgr);
else
$previewer->setConverters($settings->_converters['preview']);
$previewer->setXsendfile($settings->_enableXsendfile);
if(!$previewer->hasPreview($object)) {
add_log_line("");
if(!$previewer->createPreview($object)) {
add_log_line("", PEAR_LOG_ERR);
}
}
if(!$previewer->hasPreview($object)) {
return false;
}
header('Content-Type: image/png');
$previewer->getPreview($object);
return true;
}
} /* }}} */
}

View File

@ -30,7 +30,7 @@ class Controller {
* @return object an object of a class implementing the view
*/
static function factory($class, $params=array()) { /* {{{ */
global $settings, $session, $extMgr;
global $settings, $session, $extMgr, $request;
if(!$class) {
return null;
}
@ -57,6 +57,7 @@ class Controller {
$controller->setParam('getVars', $_GET);
$controller->setParam('requestVars', $_REQUEST);
$controller->setParam('session', $session);
$controller->setParam('request', $request);
$controller->setParam('settings', $settings);
return $controller;
}

View File

@ -41,38 +41,56 @@ class SeedDMS_Controller_Common {
*/
protected $lasthookresult;
function __construct($params) {
public function __construct($params) {
$this->params = $params;
$this->error = 0;
$this->errormsg = '';
}
/**
* Call methods with name in $get['action']
* Call method with name in $get['action']
*
* @params array $get $_GET or $_POST variables
* Until 5.1.26 (6.0.19) this method took the name of the
* controller method to run from the element 'action' passed
* in the array $get. Since 5.1.27 (6.0.20) a PSR7 Request
* object is available in the controller and used to get the
* action.
*
* @params array $get $_GET or $_POST variables (since 5.1.27 this is no longer used)
* @return mixed return value of called method
*/
function __invoke($get=array()) {
if(!$this->callHook('preRun', get_class($this), isset($get['action']) ? $get['action'] : 'run', $get)) {
if(isset($get['action']) && $get['action']) {
if(method_exists($this, $get['action'])) {
return $this->{$get['action']}();
public function __invoke($get=array()) {
$action = null;
if(!$action = $this->getParam('action')) {
$request = $this->getParam('request');
if($request) {
if($request->isMethod('get'))
$action = $request->query->get('action');
elseif($request->isMethod('post'))
$action = $request->request->get('action');
}
}
if(!$this->callHook('preRun', get_class($this), $action ? $action : 'run')) {
if($action) {
if(method_exists($this, $action)) {
return $this->{$action}();
} else {
echo "Missing action '".$get['action']."'";
echo "Missing action '".$action."'";
return false;
}
} else
return $this->run();
} else {
return false;
}
$this->callHook('postRun', get_class($this), isset($get['action']) ? $get['action'] : 'run', $get);
$this->callHook('postRun', get_class($this), $action ? $action : 'run');
}
function setParams($params) {
public function setParams($params) {
$this->params = $params;
}
function setParam($name, $value) {
public function setParam($name, $value) {
$this->params[$name] = $value;
}
@ -86,7 +104,7 @@ class SeedDMS_Controller_Common {
* @param string $name name of parameter
* @return mixed value of parameter or null if parameter does not exist
*/
function getParam($name) {
public function getParam($name) {
return isset($this->params[$name]) ? $this->params[$name] : null;
}
@ -96,7 +114,7 @@ class SeedDMS_Controller_Common {
* @param string $name name of parameter
* @return boolean true if parameter exists otherwise false
*/
function hasParam($name) {
public function hasParam($name) {
return isset($this->params[$name]) ? true : false;
}
@ -105,12 +123,12 @@ class SeedDMS_Controller_Common {
*
* @param string $name name of parameter
*/
function unsetParam($name) {
public function unsetParam($name) {
if(isset($this->params[$name]))
unset($this->params[$name]);
}
function run() {
public function run() {
}
/**

View File

@ -46,7 +46,7 @@ class UI extends UI_Default {
* @return object an object of a class implementing the view
*/
static function factory($theme, $class='', $params=array()) { /* {{{ */
global $settings, $dms, $user, $session, $extMgr;
global $settings, $dms, $user, $session, $extMgr, $request;
if(!$class) {
$class = 'Bootstrap';
$class = 'Style';
@ -128,6 +128,7 @@ class UI extends UI_Default {
$view->setParam('theme', $theme);
$view->setParam('class', $class);
$view->setParam('session', $session);
$view->setParam('request', $request);
// $view->setParam('settings', $settings);
$view->setParam('sitename', $settings->_siteName);
$view->setParam('rootfolderid', $settings->_rootFolderID);

View File

@ -45,17 +45,40 @@ class SeedDMS_View_Common {
$this->imgpath = '../views/'.$theme.'/images/';
}
/**
* Call method with name in $get['action']
*
* Until 5.1.26 (6.0.19) this method took the name of the
* controller method to run from the element 'action' passed
* in the array $get. Since 5.1.27 (6.0.20) a PSR7 Request
* object is available in the controller and used to get the
* action.
*
* @params array $get $_GET or $_POST variables (since 5.1.27 this is no longer used)
* @return mixed return value of called method
*/
public function __invoke($get=array()) {
$this->callHook('preRun', isset($get['action']) ? $get['action'] : 'show');
if(isset($get['action']) && $get['action']) {
if(method_exists($this, $get['action'])) {
$this->{$get['action']}();
} else {
echo "Missing action '".htmlspecialchars($get['action'])."'";
}
} else
$this->show();
$this->callHook('postRun', isset($get['action']) ? $get['action'] : 'show');
$action = null;
$request = $this->getParam('request');
if($request) {
if($request->isMethod('get'))
$action = $request->query->get('action');
elseif($request->isMethod('post'))
$action = $request->request->get('action');
}
if(!$this->callHook('preRun', get_class($this), $action ? $action : 'show')) {
if($action) {
if(method_exists($this, $action)) {
$this->{$action}();
} else {
echo "Missing action '".htmlspecialchars($action)."'";
}
} else
$this->show();
} else {
return false;
}
$this->callHook('postRun', $action ? $action : 'show');
}
public function setParams($params) {
@ -78,7 +101,7 @@ class SeedDMS_View_Common {
* @param string $name name of parameter
* @return boolean true if parameter exists otherwise false
*/
function hasParam($name) {
public function hasParam($name) {
return isset($this->params[$name]) ? true : false;
}

View File

@ -18,8 +18,11 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
use Symfony\Component\HttpFoundation\Request;
if(!empty($settings->_coreDir))
require_once($settings->_coreDir.'/Core.php');
else
require_once('SeedDMS/Core.php');
$request = Request::createFromGlobals();

View File

@ -315,7 +315,7 @@ function reArrayFiles(&$file_post) {
return $file_ary;
}
if ($_FILES['userfile']) {
if(!empty($_FILES['userfile'])) {
$file_ary = reArrayFiles($_FILES['userfile']);
} else {
$file_ary = array();
@ -479,7 +479,7 @@ foreach($file_ary as $file) {
$controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText);
$controller->setParam('defaultaccessdocs', $settings->_defaultAccessDocs);
if(!$document = $controller->run()) {
if(!$document = $controller()) {
$err = $controller->getErrorMsg();
if(is_string($err))
$errmsg = getMLText($err);

View File

@ -116,7 +116,7 @@ $controller->setParam('sequence', $sequence);
$controller->setParam('attributes', $attributes);
$controller->setParam('notificationgroups', $notgroups);
$controller->setParam('notificationusers', $notusers);
if(!$subFolder = $controller->run()) {
if(!$subFolder = $controller()) {
UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText($controller->getErrorMsg()));
} else {
// Send notification to subscribers.

View File

@ -558,7 +558,7 @@ switch($command) {
$controller = Controller::factory('RemoveDocument', array('dms'=>$dms, 'user'=>$user));
$controller->setParam('document', $document);
$controller->setParam('fulltextservice', $fulltextservice);
if($controller->run()) {
if($controller()) {
if ($notifier){
/* $document still has the data from the just deleted document,
* which is just enough to send the email.
@ -840,7 +840,7 @@ switch($command) {
$controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText);
$controller->setParam('defaultaccessdocs', $settings->_defaultAccessDocs);
if(!$document = $controller->run()) {
if(!$document = $controller()) {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText($controller->getErrorMsg())));
exit;

View File

@ -84,7 +84,7 @@ if ($action == "addattrdef") {
$controller->setParam('maxvalues', $maxvalues);
$controller->setParam('valueset', $valueset);
$controller->setParam('regex', $regex);
if (!($newAttrdef = $controller($_POST))) {
if (!($newAttrdef = $controller())) {
UI::exitError(getMLText("admin_tools"),getMLText("error_occured"));
}

View File

@ -43,7 +43,7 @@ if(!is_dir($settings->_cacheDir)) {
}
$controller->setParam('post', $_POST);
if(!$controller->run())
if(!$controller())
$session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_cleared_cache')));
else
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_cleared_cache')));

View File

@ -138,7 +138,7 @@ $controller->setParam('mode', $mode);
$controller->setParam('userid', $userid);
$controller->setParam('groupid', $groupid);
$controller->setParam('newowner', $newowner);
if(!$controller->run()) {
if(!$controller()) {
UI::exitError(getMLText("folder_title", array("foldername" => htmlspecialchars($foldername))),getMLText("error_change_access"));
}

View File

@ -66,7 +66,7 @@ if (isset($_GET["version"])) { /* {{{ */
$controller->setParam('document', $document);
$controller->setParam('version', $version);
$controller->setParam('type', 'version');
if(!$controller->run()) {
if(!$controller()) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version"));
}
} /* }}} */

View File

@ -82,7 +82,7 @@ if($attributes) {
$attribute = date('Y-m-d', makeTsFromDate($attribute));
break;
}
if(!$attrdef->validate($attribute, $version, true)) {
if(!$attrdef->validate($attribute, $version, false)) {
$errmsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute);
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())), $errmsg);
}

View File

@ -140,7 +140,7 @@ $controller->setParam('categories', $categories);
$controller->setParam('expires', $expires);
$controller->setParam('sequence', $sequence);
$controller->setParam('attributes', $attributes);
if(!$controller->run()) {
if(!$controller()) {
$err = $controller->getErrorMsg();
if(is_string($err))
$errmsg = getMLText($err);

View File

@ -73,7 +73,7 @@ $controller->setParam('name', isset($_POST['name']) ? $_POST['name'] : '');
$controller->setParam('comment', isset($_POST['comment']) ? $_POST['comment'] : '');
$controller->setParam('version', isset($_POST['version']) ? $_POST['version'] : '');
$controller->setParam('public', isset($_POST['public']) ? $_POST['public'] : '');
if(!$controller->run()) {
if(!$controller()) {
if($controller->getErrorMsg()) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())), $controller->getErrorMsg());
}

View File

@ -89,7 +89,7 @@ $controller->setParam('name', $name);
$controller->setParam('comment', $comment);
$controller->setParam('sequence', $sequence);
$controller->setParam('attributes', $attributes);
if(!$controller->run()) {
if(!$controller()) {
$err = $controller->getErrorMsg();
if(is_string($err))
$errmsg = getMLText($err);

View File

@ -58,7 +58,7 @@ if ($action == "download") { /* {{{ */
// $extMgr = new SeedDMS_Extension_Mgr($settings->_rootDir."/ext", $settings->_cacheDir);
$controller->setParam('extmgr', $extMgr);
$controller->setParam('extname', $extname);
if (!$controller($_POST)) {
if (!$controller()) {
echo json_encode(array('success'=>false, 'msg'=>'Could not download extension'));
}
add_log_line();
@ -67,7 +67,7 @@ elseif ($action == "refresh") { /* {{{ */
// $extMgr = new SeedDMS_Extension_Mgr($settings->_rootDir."/ext", $settings->_cacheDir);
$extMgr->createExtensionConf();
$controller->setParam('extmgr', $extMgr);
if (!$controller($_POST)) {
if (!$controller()) {
UI::exitError(getMLText("admin_tools"),$extMgr->getErrorMsg());
}
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_extension_refresh')));
@ -90,7 +90,7 @@ elseif ($action == "upload") { /* {{{ */
// $extMgr = new SeedDMS_Extension_Mgr($settings->_rootDir."/ext", $settings->_cacheDir);
$controller->setParam('extmgr', $extMgr);
$controller->setParam('file', $_FILES['userfile']['tmp_name']);
if (!$controller($_POST)) {
if (!$controller()) {
UI::exitError(getMLText("admin_tools"),$controller->getErrorMsg());
}
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_extension_import')));
@ -116,7 +116,7 @@ elseif ($action == "import") { /* {{{ */
$controller->setParam('extmgr', $extMgr);
$controller->setParam('file', $file);
$_POST['action'] = 'upload';
if (!$controller($_POST)) {
if (!$controller()) {
unlink($file);
UI::exitError(getMLText("admin_tools"),getMLText("error_occured"));
}
@ -130,7 +130,7 @@ elseif ($action == "getlist") { /* {{{ */
$controller->setParam('extmgr', $extMgr);
$controller->setParam('forceupdate', (isset($_POST['forceupdate']) && $_POST['forceupdate']) ? true : false);
$controller->setParam('version', $v->version());
if (!$controller($_POST)) {
if (!$controller()) {
$session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_extension_getlist').": ".$controller->getErrorMsg(), 'timeout'=>5000));
} else {
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_extension_getlist')));
@ -148,7 +148,7 @@ elseif ($action == "toggle") { /* {{{ */
}
$controller->setParam('extmgr', $extMgr);
$controller->setParam('extname', $extname);
if (!$controller($_POST)) {
if (!$controller()) {
echo json_encode(array('success'=>false, 'msg'=>getMLText('extinsion_toggle_error')));
} else {
if($settings->extensionIsDisabled($extname))

View File

@ -88,7 +88,7 @@ $controller->setParam('lang', $lang);
$controller->setParam('sesstheme', $sesstheme);
$controller->setParam('referuri', $referuri);
$controller->setParam('session', $session);
if(!$controller->run()) {
if(!$controller()) {
$session = null;
add_log_line("login failed", PEAR_LOG_ERR);
_printMessage(getMLText($controller->getErrorMsg()), getMLText($controller->getErrorMsg())."\n");

View File

@ -53,7 +53,7 @@ if(isset($_COOKIE['mydms_session'])) {
$controller->setParam('user', $user);
$controller->setParam('session', $session);
$controller->run();
$controller();
}
//Forward to Login-page

View File

@ -60,7 +60,7 @@ if(isset($_GET['version'])) {
$controller->setParam('version', $version);
$controller->setParam('type', 'version');
$controller->setParam('conversionmgr', $conversionmgr);
if(!$controller->run()) {
if(!$controller()) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version"));
}
exit;

View File

@ -55,16 +55,16 @@ if ($document->getAccessMode($user) < M_READ) {
}
$controller->setParam('conversionmgr', $conversionmgr);
$controller->setParam('width', !empty($_GET["width"]) ? $_GET["width"] : null);
$controller->setParam('document', $document);
if(isset($_GET['version'])) {
$version = $_GET["version"];
if (!is_numeric($version))
exit;
$controller->setParam('width', !empty($_GET["width"]) ? $_GET["width"] : null);
$controller->setParam('document', $document);
$controller->setParam('action', 'version');
$controller->setParam('version', $version);
$controller->setParam('type', 'version');
if(!$controller->run()) {
if(!$controller()) {
header('Content-Type: image/svg+xml');
readfile('../views/'.$theme.'/images/empty.svg');
exit;
@ -75,11 +75,9 @@ if(isset($_GET['version'])) {
if (!is_numeric($file) || intval($file)<1)
exit;
$object = $document->getDocumentFile($file);
$controller->setParam('width', !empty($_GET["width"]) ? $_GET["width"] : null);
$controller->setParam('document', $document);
$controller->setParam('action', 'file');
$controller->setParam('object', $object);
$controller->setParam('type', 'file');
if(!$controller->run()) {
if(!$controller()) {
header('Content-Type: image/svg+xml');
readfile('../views/'.$theme.'/images/empty.svg');
exit;
@ -88,29 +86,3 @@ if(isset($_GET['version'])) {
} else {
exit;
}
/* From here on old code which isn't used anymore
if (!is_object($object)) {
exit;
}
if(!empty($_GET["width"]))
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $_GET["width"]);
else
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir);
$previewer->setConverters($settings->_converters['preview']);
$previewer->setXsendfile($settings->_enableXsendfile);
if(!$previewer->hasPreview($object)) {
add_log_line("");
if(!$previewer->createPreview($object)) {
}
}
if(!$previewer->hasPreview($object)) {
header('Content-Type: image/svg+xml');
readfile('../views/'.$theme.'/images/empty.svg');
exit;
}
header('Content-Type: image/png');
$previewer->getPreview($object);
*/
?>

View File

@ -82,7 +82,7 @@ $docname = $document->getName();
$controller->setParam('document', $document);
$controller->setParam('fulltextservice', $fulltextservice);
if(!$controller($_POST)) {
if(!$controller()) {
if ($controller->getErrorMsg() != '')
$errormsg = $controller->getErrorMsg();
else

View File

@ -80,7 +80,7 @@ $nl = array(
$controller->setParam('folder', $folder);
$controller->setParam('fulltextservice', $fulltextservice);
if(!$controller->run()) {
if(!$controller()) {
UI::exitError(getMLText("folder_title", array("foldername" => htmlspecialchars($foldername))),getMLText("error_remove_folder"));
}

View File

@ -79,7 +79,7 @@ if (count($document->getContent())==1) {
$controller->setParam('document', $document);
$controller->setParam('fulltextservice', $fulltextservice);
if(!$controller->run()) {
if(!$controller()) {
if ($controller->getErrorMsg() != '')
$errormsg = $controller->getErrorMsg();
else

View File

@ -66,7 +66,7 @@ $oldowner = $document->getOwner();
$controller->setParam('document', $document);
$controller->setParam('newuser', $newuser);
if(!$controller->run()) {
if(!$controller()) {
UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("error_transfer_document"));
}

View File

@ -349,7 +349,7 @@ default:
$attribute = date('Y-m-d', makeTsFromDate($attribute));
break;
}
if(!$attrdef->validate($attribute)) {
if(!$attrdef->validate($attribute, null, true)) {
$errmsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute);
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())), $errmsg);
}
@ -380,7 +380,7 @@ default:
$controller->setParam('workflow', $workflow);
$controller->setParam('initialdocumentstatus', $settings->_initialDocumentStatus);
if(!$content = $controller->run()) {
if(!$content = $controller()) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($controller->getErrorMsg()));
} else {
if($controller->hasHook('cleanUpDocument')) {

View File

@ -43,7 +43,7 @@ $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$controller = Controller::factory($tmp[1], array('dms'=>$dms, 'user'=>$user));
$controller->setParam('group', $group);
if(!$controller->run()) {
if(!$controller()) {
if ($controller->getErrorMsg() != '')
$errormsg = $controller->getErrorMsg();
else

View File

@ -60,7 +60,7 @@ if(isset($_GET["version"])) { /* {{{ */
$controller->setParam('document', $document);
$controller->setParam('version', intval($version));
$controller->setParam('type', 'version');
if(!$controller->run()) {
if(!$controller()) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version"));
}
} /* }}} */

View File

@ -99,6 +99,7 @@ if($view) {
$view->setParam('offset', $offset);
$view->setParam('limit', $limit);
$view->setParam('onepage', $settings->_onePageMode); // do most navigation by reloading areas of pages with ajax
$view->setParam('currenttab', 'folderinfo');
$view($_GET);
exit;
}

View File

@ -12,7 +12,7 @@ function usage() { /* {{{ */
echo " seeddms-indexer [-h] [-v] [-c] [--config <file>]".PHP_EOL;
echo PHP_EOL;
echo "Description:".PHP_EOL;
echo " This program recreates the full text index of SeedDMS.".PHP_EOL;
echo " This program recreates or updates the full text index of SeedDMS.".PHP_EOL;
echo PHP_EOL;
echo "Options:".PHP_EOL;
echo " -h, --help: print usage information and exit.".PHP_EOL;
@ -42,6 +42,10 @@ if(isset($options['v']) || isset($options['verѕion'])) {
exit(0);
}
$config['log'] = true;
$config['verbosity'] = 3;
$config['stats'] = true;
/* Set alternative config file */
if(isset($options['config'])) {
define('SEEDDMS_CONFIG_FILE', $options['config']);
@ -56,20 +60,21 @@ if(isset($options['c'])) {
}
include($myincpath."/inc/inc.Settings.php");
if(empty($options['no-log']))
if(empty($options['no-log'])) {
$config['log'] = false;
include($myincpath."/inc/inc.LogInit.php");
}
include($myincpath."/inc/inc.Init.php");
include($myincpath."/inc/inc.Extension.php");
include($myincpath."/inc/inc.DBInit.php");
function tree($dms, $fulltextservice, $folder, $indent='', $numdocs) { /* {{{ */
global $settings, $themes;
global $settings, $themes, $config, $stats;
$index = $fulltextservice->Indexer();
$lucenesearch = $fulltextservice->Search();
// echo $themes->black($indent."D ".$folder->getName()).PHP_EOL;
echo $themes->black($indent."D ".$folder->getId().":".$folder->getName()." ");
$prefix = $themes->black(($config['verbosity'] >= 3 ? $indent : '')."D ".$folder->getId().":".$folder->getName()." ");
if(($numdocs == 0) || !($hit = $lucenesearch->getFolder($folder->getId()))) {
try {
$idoc = $fulltextservice->IndexedDocument($folder, true);
@ -81,9 +86,10 @@ function tree($dms, $fulltextservice, $folder, $indent='', $numdocs) { /* {{{ */
}
}
$index->addDocument($idoc);
echo $themes->green(" (Folder added)").PHP_EOL;
echo $prefix.$themes->green(" (Folder added)").PHP_EOL;
$stats['folder']['add']++;
} catch(Exception $e) {
echo $themes->error(" (Timeout)").PHP_EOL;
echo $prefix.$themes->error(" (Timeout)").PHP_EOL;
}
} else {
try {
@ -92,7 +98,9 @@ function tree($dms, $fulltextservice, $folder, $indent='', $numdocs) { /* {{{ */
$created = 0;
}
if($created >= $folder->getDate()) {
echo $themes->italic(" (Folder unchanged)").PHP_EOL;
if($config['verbosity'] >= 3)
echo $prefix.$themes->italic(" (Folder unchanged)").PHP_EOL;
$stats['folder']['unchanged']++;
} else {
$index->delete($hit->id);
try {
@ -105,9 +113,10 @@ function tree($dms, $fulltextservice, $folder, $indent='', $numdocs) { /* {{{ */
}
}
$index->addDocument($idoc);
echo $themes->green(" (Folder updated)").PHP_EOL;
echo $prefix.$themes->green(" (Folder updated)").PHP_EOL;
$stats['folder']['update']++;
} catch(Exception $e) {
echo $themes->error(" (Timeout)").PHP_EOL;
echo $prefix.$themes->error(" (Timeout)").PHP_EOL;
}
}
}
@ -119,7 +128,7 @@ function tree($dms, $fulltextservice, $folder, $indent='', $numdocs) { /* {{{ */
$documents = $folder->getDocuments();
foreach($documents as $document) {
echo $themes->black($indent." ".$document->getId().":".$document->getName()." ");
$prefix = $themes->black(($config['verbosity'] >= 3 ? $indent : '')." ".$document->getId().":".$document->getName()." ");
if(($numdocs == 0) || !($hit = $lucenesearch->getDocument($document->getId()))) {
try {
$idoc = $fulltextservice->IndexedDocument($document, true);
@ -131,9 +140,10 @@ function tree($dms, $fulltextservice, $folder, $indent='', $numdocs) { /* {{{ */
}
}
$index->addDocument($idoc);
echo $themes->green(" (Document added)").PHP_EOL;
echo $prefix.$themes->green(" (Document added)").PHP_EOL;
$stats['document']['add']++;
} catch(Exception $e) {
echo $themes->error(" (Timeout)").PHP_EOL;
echo $prefix.$themes->error(" (Timeout)").PHP_EOL;
}
} else {
try {
@ -143,7 +153,9 @@ function tree($dms, $fulltextservice, $folder, $indent='', $numdocs) { /* {{{ */
}
$content = $document->getLatestContent();
if($created >= $content->getDate()) {
echo $themes->italic(" (Document unchanged)").PHP_EOL;
if($config['verbosity'] >= 3)
echo $prefix.$themes->italic(" (Document unchanged)").PHP_EOL;
$stats['document']['unchanged']++;
} else {
$index->delete($hit->id);
try {
@ -156,9 +168,10 @@ function tree($dms, $fulltextservice, $folder, $indent='', $numdocs) { /* {{{ */
}
}
$index->addDocument($idoc);
echo $themes->green(" (Document updated)").PHP_EOL;
echo $prefix.$themes->green(" (Document updated)").PHP_EOL;
$stats['document']['update']++;
} catch(Exception $e) {
echo $themes->error(" (Timeout)").PHP_EOL;
echo $prefix.$themes->error(" (Timeout)").PHP_EOL;
}
}
}
@ -173,6 +186,12 @@ if(!$index) {
exit(1);
}
$stats['folder']['add'] = 0;
$stats['folder']['unchanged'] = 0;
$stats['folder']['update'] = 0;
$stats['document']['add'] = 0;
$stats['document']['unchanged'] = 0;
$stats['document']['update'] = 0;
$numdocs = $fulltextservice->Indexer()->count();
$folder = $dms->getFolder($settings->_rootFolderID);
/* if numdocs is 0, then there is no need to check if a document/folder is already
@ -182,3 +201,13 @@ tree($dms, $fulltextservice, $folder,'', $numdocs);
$index->commit();
$index->optimize();
echo PHP_EOL;
echo $themes->black("Documents").PHP_EOL;
echo $themes->black(" added: ".$stats['document']['add']).PHP_EOL;
echo $themes->black(" updated: ".$stats['document']['update']).PHP_EOL;
echo $themes->black(" unchanged: ".$stats['document']['unchanged']).PHP_EOL;
echo $themes->black("Folders").PHP_EOL;
echo $themes->black(" added: ".$stats['folder']['add']).PHP_EOL;
echo $themes->black(" updated: ".$stats['folder']['update']).PHP_EOL;
echo $themes->black(" unchanged: ".$stats['folder']['unchanged']).PHP_EOL;

View File

@ -31,7 +31,7 @@ class SeedDMS_Theme_Style extends SeedDMS_View_Common {
function __construct($params, $theme='bootstrap') {
parent::__construct($params, $theme);
$this->extraheader = array('js'=>'', 'css'=>'', 'favicon'=>'', 'logo'=>'');
$this->extraheader = array('js'=>'', 'css'=>'', 'favicon'=>'', 'logo'=>'', 'logolink'=>'');
$this->footerjs = array();
$this->nonces = array();
}
@ -151,7 +151,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
} /* }}} */
function htmlAddHeader($head, $type='js') { /* {{{ */
if($type == 'logo' || $type == 'favicon')
if($type == 'logo' || $type == 'favicon' || $type == 'logolink')
$this->extraheader[$type] = $head;
else
$this->extraheader[$type] .= $head;
@ -294,8 +294,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
echo "<div class=\"navbar navbar-inverse navbar-fixed-top\">\n";
echo " <div class=\"navbar-inner\">\n";
echo " <div class=\"container-fluid\">\n";
echo " <a href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".(!empty($this->params['dms']) ? $this->params['dms']->getRootFolder()->getId() : '1')."\">".(!empty($this->extraheader['logo']) ? '<img id="navbar-logo" src="'.$this->extraheader['logo'].'"/>' : '<img id="navbar-logo" src="'.$this->params['settings']->_httpRoot.'views/bootstrap/images/seeddms-logo.svg"/>')."</a>";
echo " <a class=\"brand\" href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</a>\n";
echo " <a href=\"".(!empty($this->extraheader['logolink']) ? $this->extraheader['logolink'] : $this->params['settings']->_httpRoot."out/out.ViewFolder.php")."\">".(!empty($this->extraheader['logo']) ? '<img id="navbar-logo" src="'.$this->extraheader['logo'].'"/>' : '<img id="navbar-logo" src="'.$this->params['settings']->_httpRoot.'views/bootstrap/images/seeddms-logo.svg"/>')."</a>";
echo " <a class=\"brand\" href=\"".(!empty($this->extraheader['logolink']) ? $this->extraheader['logolink'] : $this->params['settings']->_httpRoot."out/out.ViewFolder.php")."\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</a>\n";
echo " </div>\n";
echo " </div>\n";
echo "</div>\n";
@ -385,8 +385,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
echo " <a class=\"btn btn-navbar\" href=\"".$this->params['settings']->_httpRoot."op/op.Logout.php\">\n";
echo " <span class=\"fa fa-sign-out\"></span>\n";
echo " </a>\n";
echo " <a href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$this->params['dms']->getRootFolder()->getId()."\">".(!empty($this->extraheader['logo']) ? '<img id="navbar-logo" src="'.$this->extraheader['logo'].'">' : '<img id="navbar-logo" src="'.$this->params['settings']->_httpRoot.'views/bootstrap/images/seeddms-logo.svg">')."</a>";
echo " <a class=\"brand\" href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$this->params['dms']->getRootFolder()->getId()."\"><span class=\"hidden-phone\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</span></a>\n";
echo " <a href=\"".(!empty($this->extraheader['logolink']) ? $this->extraheader['logolink'] : $this->params['settings']->_httpRoot."out/out.ViewFolder.php")."\">".(!empty($this->extraheader['logo']) ? '<img id="navbar-logo" src="'.$this->extraheader['logo'].'">' : '<img id="navbar-logo" src="'.$this->params['settings']->_httpRoot.'views/bootstrap/images/seeddms-logo.svg">')."</a>";
echo " <a class=\"brand\" href=\"".(!empty($this->extraheader['logolink']) ? $this->extraheader['logolink'] : $this->params['settings']->_httpRoot."out/out.ViewFolder.php")."\"><span class=\"hidden-phone\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</span></a>\n";
/* user profile menu {{{ */
if(isset($this->params['session']) && isset($this->params['user']) && $this->params['user']) {
@ -2551,7 +2551,7 @@ $(function() {
function printDeleteDocumentButton($document, $msg, $return=false){ /* {{{ */
$docid = $document->getID();
$content = '';
$content .= '<a class="delete-document-btn" rel="'.$docid.'" msg="'.getMLText($msg).'" confirmmsg="'.htmlspecialchars(getMLText("confirm_rm_document", array ("documentname" => $document->getName())), ENT_QUOTES).'"><i class="fa fa-remove"></i></a>';
$content .= '<a class="delete-document-btn" rel="'.$docid.'" msg="'.getMLText($msg).'" confirmmsg="'.htmlspecialchars(getMLText("confirm_rm_document", array ("documentname" => $document->getName())), ENT_QUOTES).'" title="'.getMLText("delete").'"><i class="fa fa-remove"></i></a>';
if($return)
return $content;
else
@ -2625,7 +2625,7 @@ $(function() {
function printDeleteFolderButton($folder, $msg, $return=false){ /* {{{ */
$folderid = $folder->getID();
$content = '';
$content .= '<a class="delete-folder-btn" rel="'.$folderid.'" msg="'.getMLText($msg).'" confirmmsg="'.htmlspecialchars(getMLText("confirm_rm_folder", array ("foldername" => $folder->getName())), ENT_QUOTES).'"><i class="fa fa-remove"></i></a>';
$content .= '<a class="delete-folder-btn" rel="'.$folderid.'" msg="'.getMLText($msg).'" confirmmsg="'.htmlspecialchars(getMLText("confirm_rm_folder", array ("foldername" => $folder->getName())), ENT_QUOTES).'" title="'.getMLText("delete").'"><i class="fa fa-remove"></i></a>';
if($return)
return $content;
else

View File

@ -333,7 +333,8 @@ $('body').on('click', '.order-btn', function(ev) {
}
echo "</table>\n";
$infos = ob_get_clean();
$this->printAccordion2(getMLText("folder_infos"), $infos);
echo $infos;
// $this->printAccordion2(getMLText("folder_infos"), $infos);
$txt = $this->callHook('postFolderInfos', $folder);
if(is_string($txt))
echo $txt;
@ -575,6 +576,7 @@ $('body').on('click', '.order-btn', function(ev) {
$previewconverters = $this->params['previewConverters'];
$timeout = $this->params['timeout'];
$xsendfile = $this->params['xsendfile'];
$currenttab = $this->params['currenttab'];
$folderid = $folder->getId();
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
@ -634,15 +636,36 @@ $('body').on('click', '.order-btn', function(ev) {
$this->rowStart();
$this->columnStart(8);
}
// $this->folderInfos();
?>
<ul class="nav nav-pills" id="folderinfotab" role="tablist">
<li class="nav-item <?php if(!$currenttab || $currenttab == 'folderinfo') echo 'active'; ?>"><a class="nav-link <?php if(!$currenttab || $currenttab == 'folderinfo') echo 'active'; ?>" data-target="#folderinfo" data-toggle="tab" role="button"><?php printMLText('folder_infos'); ?></a></li>
<?php
$tabs = $this->callHook('extraTabs', $folder);
if($tabs) {
foreach($tabs as $tabid=>$tab) {
echo '<li class="nav-item '.($currenttab == $tabid ? 'active' : '').'"><a class="nav-link '.($currenttab == $tabid ? 'active' : '').'" data-target="#'.$tabid.'" data-toggle="tab" role="button">'.$tab['title'].'</a></li>';
}
}
?>
</ul>
<div class="tab-content">
<div class="tab-pane <?php if(!$currenttab || $currenttab == 'folderinfo') echo 'active'; ?>" id="folderinfo" role="tabpanel">
<div class="ajax" data-view="ViewFolder" data-action="folderInfos" data-no-spinner="true" <?php echo ($folder ? "data-query=\"folderid=".$folder->getID()."\"" : "") ?>></div>
</div>
<?php
if($tabs) {
foreach($tabs as $tabid=>$tab) {
echo '<div class="tab-pane '.($currenttab == $tabid ? 'active' : '').'" id="'.$tabid.'" role="tabpanel">';
echo $tab['content'];
echo "</div>\n";
}
}
?>
</div>
<?php
if ($enableDropUpload/* && $folder->getAccessMode($user) >= M_READWRITE*/) {
$this->columnEnd();
$this->columnStart(4);
// $this->dropUpload();
?>
<div class="ajax" data-view="ViewFolder" data-action="dropUpload" data-no-spinner="true" <?php echo ($folder ? "data-query=\"folderid=".$folder->getID()."\"" : "") ?>></div>
<?php

View File

@ -822,6 +822,15 @@ function onAddClipboard(ev) { /* {{{ */
target_type = droptarget.split("_")[0];
target_id = droptarget.split("_")[1];
}
var afterupload = obj.data('afterupload');
if(afterupload) {
afteruploadfunc = eval(afterupload);
} else {
afteruploadfunc = function() {
if(target_id == seeddms_folder)
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
}
}
if(target_type == 'folder' && target_id) {
for (var i = 0; i < files.length; i++) {
if(files[i].size <= maxFileSize) {
@ -844,10 +853,7 @@ function onAddClipboard(ev) { /* {{{ */
statusbar.parent().show();
var status = new SeedDMSUpload.createStatusbar(statusbar);
status.setFileNameSize(files[i].name,files[i].size);
SeedDMSUpload.sendFileToServer(fd,status,function(){
if(target_id == seeddms_folder)
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
});
SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc);
} else {
noty({
text: maxFileSizeMsg + '<br /><em>' + files[i].name + ' (' + files[i].size + ' Bytes)</em>',

View File

@ -31,7 +31,7 @@ class SeedDMS_Theme_Style extends SeedDMS_View_Common {
function __construct($params, $theme='bootstrap') {
parent::__construct($params, $theme);
$this->extraheader = array('js'=>'', 'css'=>'', 'favicon'=>'', 'logo'=>'');
$this->extraheader = array('js'=>'', 'css'=>'', 'favicon'=>'', 'logo'=>'', 'logolink'=>'');
$this->footerjs = array();
$this->nonces = array();
}
@ -151,7 +151,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
} /* }}} */
function htmlAddHeader($head, $type='js') { /* {{{ */
if($type == 'logo' || $type == 'favicon')
if($type == 'logo' || $type == 'favicon' || $type == 'logolink')
$this->extraheader[$type] = $head;
else
$this->extraheader[$type] .= $head;
@ -306,7 +306,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
function globalBanner() { /* {{{ */
echo "<nav class=\"navbar navbar-expand-lg navbar-dark bg-dark fixed-top\">\n";
echo " <a class=\"navbar-brand\" href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php\">".(!empty($this->extraheader['logo']) ? '<img id="navbar-logo" src="'.$this->extraheader['logo'].'"/>' : '<img id="navbar-logo" src="'.$this->params['settings']->_httpRoot.'views/bootstrap4/images/seeddms-logo.svg"/>')." <span class=\"d-none d-md-inline-block ml-4\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</span></a>\n";
echo " <a class=\"navbar-brand\" href=\"".(!empty($this->extraheader['logolink']) ? $this->extraheader['logolink'] : $this->params['settings']->_httpRoot."out/out.ViewFolder.php")."\">".(!empty($this->extraheader['logo']) ? '<img id="navbar-logo" src="'.$this->extraheader['logo'].'"/>' : '<img id="navbar-logo" src="'.$this->params['settings']->_httpRoot.'views/bootstrap4/images/seeddms-logo.svg"/>')." <span class=\"d-none d-md-inline-block ml-4\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</span></a>\n";
echo "</nav>\n";
} /* }}} */
@ -314,7 +314,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
$dms = $this->params['dms'];
$accessobject = $this->params['accessobject'];
echo "<nav class=\"navbar navbar-expand-lg navbar-dark bg-dark border-bottom fixed-top\">\n";
echo " <a class=\"navbar-brand\" href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$this->params['dms']->getRootFolder()->getId()."\">".(!empty($this->extraheader['logo']) ? '<img id="navbar-logo" src="'.$this->extraheader['logo'].'">' : '<img id="navbar-logo" src="'.$this->params['settings']->_httpRoot.'views/bootstrap4/images/seeddms-logo.svg">')." <span class=\"d-none d-md-inline-block ml-4\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</span></a>\n";
echo " <a class=\"navbar-brand\" href=\"".(!empty($this->extraheader['logolink']) ? $this->extraheader['logolink'] : $this->params['settings']->_httpRoot."out/out.ViewFolder.php")."\">".(!empty($this->extraheader['logo']) ? '<img id="navbar-logo" src="'.$this->extraheader['logo'].'">' : '<img id="navbar-logo" src="'.$this->params['settings']->_httpRoot.'views/bootstrap4/images/seeddms-logo.svg">')." <span class=\"d-none d-md-inline-block ml-4\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</span></a>\n";
if(isset($this->params['user']) && $this->params['user']) {
/* search form {{{ */
@ -2520,7 +2520,7 @@ $(function() {
function printDeleteDocumentButton($document, $msg, $return=false){ /* {{{ */
$docid = $document->getID();
$content = '';
$content .= '<a class="delete-document-btn" rel="'.$docid.'" msg="'.getMLText($msg).'" confirmmsg="'.htmlspecialchars(getMLText("confirm_rm_document", array ("documentname" => $document->getName())), ENT_QUOTES).'"><i class="fa fa-remove"></i></a>';
$content .= '<a class="delete-document-btn" rel="'.$docid.'" msg="'.getMLText($msg).'" confirmmsg="'.htmlspecialchars(getMLText("confirm_rm_document", array ("documentname" => $document->getName())), ENT_QUOTES).'" title="'.getMLText("delete").'"><i class="fa fa-remove"></i></a>';
if($return)
return $content;
else
@ -2600,7 +2600,7 @@ $(function() {
function printDeleteFolderButton($folder, $msg, $return=false){ /* {{{ */
$folderid = $folder->getID();
$content = '';
$content .= '<a class="delete-folder-btn" rel="'.$folderid.'" msg="'.getMLText($msg).'" confirmmsg="'.htmlspecialchars(getMLText("confirm_rm_folder", array ("foldername" => $folder->getName())), ENT_QUOTES).'"><i class="fa fa-remove"></i></a>';
$content .= '<a class="delete-folder-btn" rel="'.$folderid.'" msg="'.getMLText($msg).'" confirmmsg="'.htmlspecialchars(getMLText("confirm_rm_folder", array ("foldername" => $folder->getName())), ENT_QUOTES).'" title="'.getMLText("delete").'"><i class="fa fa-remove"></i></a>';
if($return)
return $content;
else

View File

@ -853,6 +853,15 @@ function onAddClipboard(ev) { /* {{{ */
target_type = droptarget.split("_")[0];
target_id = droptarget.split("_")[1];
}
var afterupload = obj.data('afterupload');
if(afterupload) {
afteruploadfunc = eval(afterupload);
} else {
afteruploadfunc = function() {
if(target_id == seeddms_folder)
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
}
}
if(target_type == 'folder' && target_id) {
for (var i = 0; i < files.length; i++) {
if(files[i].size <= maxFileSize) {
@ -875,10 +884,7 @@ function onAddClipboard(ev) { /* {{{ */
statusbar.parent().show();
var status = new SeedDMSUpload.createStatusbar(statusbar);
status.setFileNameSize(files[i].name,files[i].size);
SeedDMSUpload.sendFileToServer(fd,status,function(){
if(target_id == seeddms_folder)
$("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder});
});
SeedDMSUpload.sendFileToServer(fd,status,afteruploadfunc);
} else {
noty({
text: maxFileSizeMsg + '<br /><em>' + files[i].name + ' (' + files[i].size + ' Bytes)</em>',