mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-05-11 12:11:19 +00:00
Merge branch 'seeddms-5.1.x' into seeddms-6.0.x
This commit is contained in:
commit
ab5411c44f
|
@ -305,6 +305,9 @@
|
||||||
Changes in version 5.1.37
|
Changes in version 5.1.37
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
- do not show chart by category if there are no categories
|
- do not show chart by category if there are no categories
|
||||||
|
- documents in certain folders can be excluded from dashboard, could be useful
|
||||||
|
for folders containing archived documents
|
||||||
|
- migrate from Slim 3 to Slim 4 (check for extension updates)
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
Changes in version 5.1.36
|
Changes in version 5.1.36
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
"robthree/twofactorauth": "^1.5",
|
"robthree/twofactorauth": "^1.5",
|
||||||
"sabre/dav": "^4.",
|
"sabre/dav": "^4.",
|
||||||
"sabre/xml": "*",
|
"sabre/xml": "*",
|
||||||
"slim/slim": "^3.0",
|
"slim/slim": "^4.0",
|
||||||
"erusev/parsedown": "*",
|
"erusev/parsedown": "*",
|
||||||
"erusev/parsedown-extra": "*",
|
"erusev/parsedown-extra": "*",
|
||||||
"mibe/feedwriter": "^1.1",
|
"mibe/feedwriter": "^1.1",
|
||||||
|
@ -23,6 +23,7 @@
|
||||||
"dragonmantank/cron-expression": "^3",
|
"dragonmantank/cron-expression": "^3",
|
||||||
"zf1/zend-search-lucene": "*",
|
"zf1/zend-search-lucene": "*",
|
||||||
"symfony/http-foundation": "^5.4",
|
"symfony/http-foundation": "^5.4",
|
||||||
|
"php-di/php-di": "^6.4",
|
||||||
"seeddms/core": "dev-master",
|
"seeddms/core": "dev-master",
|
||||||
"seeddms/lucene": "dev-master",
|
"seeddms/lucene": "dev-master",
|
||||||
"seeddms/preview": "dev-master",
|
"seeddms/preview": "dev-master",
|
||||||
|
@ -69,5 +70,4 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ class SeedDMS_Controller_UpdateDocument extends SeedDMS_Controller_Common {
|
||||||
$content = $this->callHook('updateDocument');
|
$content = $this->callHook('updateDocument');
|
||||||
if($content === null) {
|
if($content === null) {
|
||||||
$filesize = SeedDMS_Core_File::fileSize($userfiletmp);
|
$filesize = SeedDMS_Core_File::fileSize($userfiletmp);
|
||||||
if($contentResult=$document->addContent($comment, $user, $userfiletmp, utf8_basename($userfilename), $filetype, $userfiletype, $reviewers, $approvers, $version=0, $attributes, $workflow, $initialdocumentstatus)) {
|
if($contentResult=$document->addContent($comment, $user, $userfiletmp, utf8_basename($userfilename), $filetype, $userfiletype, $reviewers, $approvers, 0, $attributes, $workflow, $initialdocumentstatus)) {
|
||||||
|
|
||||||
if ($this->hasParam('expires')) {
|
if ($this->hasParam('expires')) {
|
||||||
if($document->setExpires($this->getParam('expires'))) {
|
if($document->setExpires($this->getParam('expires'))) {
|
||||||
|
|
|
@ -48,18 +48,18 @@ class SeedDMS_Auth_Middleware_Session { /* {{{ */
|
||||||
*
|
*
|
||||||
* @return \Psr\Http\Message\ResponseInterface
|
* @return \Psr\Http\Message\ResponseInterface
|
||||||
*/
|
*/
|
||||||
public function __invoke($request, $response, $next) {
|
public function __invoke($request, $handler) {
|
||||||
// $this->container has the DI
|
// $this->container has the DI
|
||||||
$dms = $this->container->dms;
|
$dms = $this->container->get('dms');
|
||||||
$settings = $this->container->config;
|
$settings = $this->container->get('config');
|
||||||
$logger = $this->container->logger;
|
$logger = $this->container->get('logger');
|
||||||
$userobj = null;
|
$userobj = null;
|
||||||
if ($this->container->has('userobj')) {
|
if ($this->container->has('userobj')) {
|
||||||
$userobj = $this->container->userobj;
|
$userobj = $this->container->get('userobj');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($userobj) {
|
if ($userobj) {
|
||||||
$response = $next($request, $response);
|
$response = $handler->handle($request);
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,9 +100,9 @@ class SeedDMS_Auth_Middleware_Session { /* {{{ */
|
||||||
} else {
|
} else {
|
||||||
return $response->withStatus(403);
|
return $response->withStatus(403);
|
||||||
}
|
}
|
||||||
$this->container['userobj'] = $userobj;
|
$this->container->set('userobj', $userobj);
|
||||||
|
|
||||||
$response = $next($request, $response);
|
$response = $handler->handle($request);
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
|
@ -35,7 +35,9 @@ class SeedDMS_ConversionServiceHtmlToText extends SeedDMS_ConversionServiceBase
|
||||||
|
|
||||||
public function convert($infile, $target = null, $params = array()) {
|
public function convert($infile, $target = null, $params = array()) {
|
||||||
$d = new DOMDocument;
|
$d = new DOMDocument;
|
||||||
|
libxml_use_internal_errors(true);
|
||||||
$d->loadHTMLFile($infile);
|
$d->loadHTMLFile($infile);
|
||||||
|
libxml_clear_errors();
|
||||||
$body = $d->getElementsByTagName('body')->item(0);
|
$body = $d->getElementsByTagName('body')->item(0);
|
||||||
$str = '';
|
$str = '';
|
||||||
foreach($body->childNodes as $childNode) {
|
foreach($body->childNodes as $childNode) {
|
||||||
|
|
|
@ -94,6 +94,12 @@ class SeedDMS_ConversionServiceImageToImage extends SeedDMS_ConversionServiceBas
|
||||||
case 'image/gif':
|
case 'image/gif':
|
||||||
$im = @imagecreatefromgif($infile);
|
$im = @imagecreatefromgif($infile);
|
||||||
break;
|
break;
|
||||||
|
case 'image/webp':
|
||||||
|
$im = @imagecreatefromwebp($infile);
|
||||||
|
break;
|
||||||
|
case 'image/avif':
|
||||||
|
$im = @imagecreatefromavif($infile);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if($im) {
|
if($im) {
|
||||||
$width = imagesx($im);
|
$width = imagesx($im);
|
||||||
|
|
|
@ -209,7 +209,7 @@ class SeedDMS_FulltextService {
|
||||||
if($this->index)
|
if($this->index)
|
||||||
return $this->index;
|
return $this->index;
|
||||||
|
|
||||||
if($this->services[0]) {
|
if($this->services) {
|
||||||
if($recreate)
|
if($recreate)
|
||||||
$this->index = $this->services[0]['Indexer']::create($this->services[0]['Conf']);
|
$this->index = $this->services[0]['Indexer']::create($this->services[0]['Conf']);
|
||||||
else
|
else
|
||||||
|
@ -222,7 +222,7 @@ class SeedDMS_FulltextService {
|
||||||
public function Search() { /* {{{ */
|
public function Search() { /* {{{ */
|
||||||
if($this->search)
|
if($this->search)
|
||||||
return $this->search;
|
return $this->search;
|
||||||
if($this->services[0]) {
|
if($this->services) {
|
||||||
$this->search = new $this->services[0]['Search']($this->index);
|
$this->search = new $this->services[0]['Search']($this->index);
|
||||||
return $this->search;
|
return $this->search;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -321,6 +321,8 @@ class Settings { /* {{{ */
|
||||||
var $_maxRecursiveCount = 10000;
|
var $_maxRecursiveCount = 10000;
|
||||||
// number of days in the past of the dashboard
|
// number of days in the past of the dashboard
|
||||||
var $_daysPastDashboard = 7;
|
var $_daysPastDashboard = 7;
|
||||||
|
// list of folders not considered for dashboard
|
||||||
|
var $_excludeFoldersDashboard = '';
|
||||||
// enable/disable help
|
// enable/disable help
|
||||||
var $_enableHelp = true;
|
var $_enableHelp = true;
|
||||||
// enable/disable language selection menu
|
// enable/disable language selection menu
|
||||||
|
@ -622,6 +624,8 @@ class Settings { /* {{{ */
|
||||||
$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->_daysPastDashboard = intval($tab["daysPastDashboard"]);
|
||||||
|
if(trim(strval($tab["excludeFoldersDashboard"])))
|
||||||
|
$this->_excludeFoldersDashboard = explode(',',strval($tab["excludeFoldersDashboard"]));
|
||||||
$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"]);
|
||||||
|
@ -1052,6 +1056,7 @@ class Settings { /* {{{ */
|
||||||
$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, "daysPastDashboard", $this->_daysPastDashboard);
|
||||||
|
$this->setXMLAttributValue($node, "excludeFoldersDashboard", implode(',', $this->_excludeFoldersDashboard));
|
||||||
$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);
|
||||||
|
|
|
@ -63,6 +63,8 @@ if (extension_loaded('gd') || extension_loaded('imagick')) {
|
||||||
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/png', 'image/png'))->setLogger($logger);
|
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/png', 'image/png'))->setLogger($logger);
|
||||||
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/jpg', 'image/png'))->setLogger($logger);
|
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/jpg', 'image/png'))->setLogger($logger);
|
||||||
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/gif', 'image/png'))->setLogger($logger);
|
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/gif', 'image/png'))->setLogger($logger);
|
||||||
|
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/webp', 'image/png'))->setLogger($logger);
|
||||||
|
$conversionmgr->addService(new SeedDMS_ConversionServiceImageToImage('image/avif', 'image/png'))->setLogger($logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extension_loaded('imagick')) {
|
if (extension_loaded('imagick')) {
|
||||||
|
|
50
index.php
50
index.php
|
@ -31,6 +31,9 @@
|
||||||
|
|
||||||
require "inc/inc.Settings.php";
|
require "inc/inc.Settings.php";
|
||||||
|
|
||||||
|
use DI\ContainerBuilder;
|
||||||
|
use Slim\Factory\AppFactory;
|
||||||
|
|
||||||
if(true) {
|
if(true) {
|
||||||
require_once("inc/inc.Utils.php");
|
require_once("inc/inc.Utils.php");
|
||||||
require_once("inc/inc.LogInit.php");
|
require_once("inc/inc.LogInit.php");
|
||||||
|
@ -39,7 +42,9 @@ if(true) {
|
||||||
require_once("inc/inc.Extension.php");
|
require_once("inc/inc.Extension.php");
|
||||||
require_once("inc/inc.DBInit.php");
|
require_once("inc/inc.DBInit.php");
|
||||||
|
|
||||||
$c = new \Slim\Container(); //Create Your container
|
$containerBuilder = new \DI\ContainerBuilder();
|
||||||
|
$c = $containerBuilder->build();
|
||||||
|
/*
|
||||||
$c['notFoundHandler'] = function ($c) use ($settings, $dms) {
|
$c['notFoundHandler'] = function ($c) use ($settings, $dms) {
|
||||||
return function ($request, $response) use ($c, $settings, $dms) {
|
return function ($request, $response) use ($c, $settings, $dms) {
|
||||||
$uri = $request->getUri();
|
$uri = $request->getUri();
|
||||||
|
@ -62,25 +67,42 @@ if(true) {
|
||||||
->withHeader('Location', isset($settings->_siteDefaultPage) && strlen($settings->_siteDefaultPage)>0 ? $settings->_httpRoot.$settings->_siteDefaultPage : $settings->_httpRoot."out/out.ViewFolder.php");
|
->withHeader('Location', isset($settings->_siteDefaultPage) && strlen($settings->_siteDefaultPage)>0 ? $settings->_httpRoot.$settings->_siteDefaultPage : $settings->_httpRoot."out/out.ViewFolder.php");
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
$app = new \Slim\App($c);
|
*/
|
||||||
|
AppFactory::setContainer($c);
|
||||||
|
$app = AppFactory::create();
|
||||||
|
/* put lots of data into the container, because if slim instanciates
|
||||||
|
* a class by itself (with the help from the DI container), it will
|
||||||
|
* pass the container to the constructor of the instanciated class.
|
||||||
|
*/
|
||||||
$container = $app->getContainer();
|
$container = $app->getContainer();
|
||||||
$container['dms'] = $dms;
|
$container->set('dms', $dms);
|
||||||
$container['config'] = $settings;
|
$container->set('config', $settings);
|
||||||
$container['conversionmgr'] = $conversionmgr;
|
$container->set('conversionmgr', $conversionmgr);
|
||||||
$container['logger'] = $logger;
|
$container->set('logger', $logger);
|
||||||
$container['fulltextservice'] = $fulltextservice;
|
$container->set('fulltextservice', $fulltextservice);
|
||||||
$container['notifier'] = $notifier;
|
$container->set('notifier', $notifier);
|
||||||
$container['authenticator'] = $authenticator;
|
$container->set('authenticator', $authenticator);
|
||||||
|
|
||||||
|
if(isset($GLOBALS['SEEDDMS_HOOKS']['initDMS'])) {
|
||||||
|
foreach($GLOBALS['SEEDDMS_HOOKS']['initDMS'] as $hookObj) {
|
||||||
|
if (method_exists($hookObj, 'addMiddleware')) {
|
||||||
|
$hookObj->addMiddleware($app);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$app->get('/', function($request, $response) {
|
||||||
|
return $response
|
||||||
|
->withHeader('Location', '/out/out.ViewFolder.php')
|
||||||
|
->withStatus(302);
|
||||||
|
|
||||||
|
});
|
||||||
if(isset($GLOBALS['SEEDDMS_HOOKS']['initDMS'])) {
|
if(isset($GLOBALS['SEEDDMS_HOOKS']['initDMS'])) {
|
||||||
foreach($GLOBALS['SEEDDMS_HOOKS']['initDMS'] as $hookObj) {
|
foreach($GLOBALS['SEEDDMS_HOOKS']['initDMS'] as $hookObj) {
|
||||||
if (method_exists($hookObj, 'addRoute')) {
|
if (method_exists($hookObj, 'addRoute')) {
|
||||||
|
// FIXME: pass $app only just like initRestAPI. $app has a container
|
||||||
|
// which contains all other objects
|
||||||
$hookObj->addRoute(array('dms'=>$dms, 'app'=>$app, 'settings'=>$settings, 'conversionmgr'=>$conversionmgr, 'authenticator'=>$authenticator, 'fulltextservice'=>$fulltextservice, 'logger'=>$logger));
|
$hookObj->addRoute(array('dms'=>$dms, 'app'=>$app, 'settings'=>$settings, 'conversionmgr'=>$conversionmgr, 'authenticator'=>$authenticator, 'fulltextservice'=>$fulltextservice, 'logger'=>$logger));
|
||||||
// } else {
|
|
||||||
// include("inc/inc.Authentication.php");
|
|
||||||
// if (method_exists($hookObj, 'addRouteAfterAuthentication')) {
|
|
||||||
// $hookObj->addRouteAfterAuthentication(array('dms'=>$dms, 'app'=>$app, 'settings'=>$settings, 'user'=>$user));
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,47 @@ if ($document->getAccessMode($user, 'addDocumentFile') < M_READWRITE) {
|
||||||
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied"));
|
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function reArrayFiles(&$file_post) {
|
||||||
|
$file_ary = array();
|
||||||
|
$file_count = count($file_post['name']);
|
||||||
|
$file_keys = array_keys($file_post);
|
||||||
|
|
||||||
|
for ($i=0; $i<$file_count; $i++) {
|
||||||
|
if($file_post['error'][$i] != 4) { // no file uploaded
|
||||||
|
foreach ($file_keys as $key) {
|
||||||
|
$file_ary[$i][$key] = $file_post[$key][$i];
|
||||||
|
}
|
||||||
|
$file_ary[$i]['source'] = 'upload';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $file_ary;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!empty($_FILES['userfile'])) {
|
||||||
|
$file_ary = reArrayFiles($_FILES['userfile']);
|
||||||
|
} else {
|
||||||
|
$file_ary = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
if($settings->_dropFolderDir) {
|
||||||
|
if(isset($_POST["dropfolderfileaddfileform"]) && $_POST["dropfolderfileaddfileform"]) {
|
||||||
|
$fullfile = $settings->_dropFolderDir.'/'.$user->getLogin().'/'.$_POST["dropfolderfileaddfileform"];
|
||||||
|
if(file_exists($fullfile)) {
|
||||||
|
$finfo = finfo_open(FILEINFO_MIME_TYPE);
|
||||||
|
$mimetype = finfo_file($finfo, $fullfile);
|
||||||
|
$file_ary[] = array(
|
||||||
|
'tmp_name' => $fullfile,
|
||||||
|
'type' => $mimetype,
|
||||||
|
'name' => $_POST["dropfolderfileaddfileform"],
|
||||||
|
'size' => filesize($fullfile),
|
||||||
|
'error' => 0,
|
||||||
|
'source' => 'dropfolder'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$prefix = 'userfile';
|
$prefix = 'userfile';
|
||||||
if(isset($_POST[$prefix.'-fine-uploader-uuids']) && $_POST[$prefix.'-fine-uploader-uuids']) {
|
if(isset($_POST[$prefix.'-fine-uploader-uuids']) && $_POST[$prefix.'-fine-uploader-uuids']) {
|
||||||
$uuids = explode(';', $_POST[$prefix.'-fine-uploader-uuids']);
|
$uuids = explode(';', $_POST[$prefix.'-fine-uploader-uuids']);
|
||||||
|
@ -60,34 +101,43 @@ if(isset($_POST[$prefix.'-fine-uploader-uuids']) && $_POST[$prefix.'-fine-upload
|
||||||
if(file_exists($fullfile)) {
|
if(file_exists($fullfile)) {
|
||||||
$finfo = finfo_open(FILEINFO_MIME_TYPE);
|
$finfo = finfo_open(FILEINFO_MIME_TYPE);
|
||||||
$mimetype = finfo_file($finfo, $fullfile);
|
$mimetype = finfo_file($finfo, $fullfile);
|
||||||
$_FILES["userfile"]['tmp_name'][] = $fullfile;
|
$file_ary[] = array(
|
||||||
$_FILES["userfile"]['type'][] = $mimetype;
|
'tmp_name' => $fullfile,
|
||||||
$_FILES["userfile"]['name'][] = isset($names[$i]) ? $names[$i] : $uuid;
|
'type' => $mimetype,
|
||||||
$_FILES["userfile"]['size'][] = filesize($fullfile);
|
'name' => isset($names[$i]) ? $names[$i] : $uuid,
|
||||||
$_FILES["userfile"]['error'][] = 0;
|
'size' => filesize($fullfile),
|
||||||
|
'error' => 0,
|
||||||
|
'source' => 'upload',
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!$file_ary) {
|
||||||
|
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_failed"));
|
||||||
|
}
|
||||||
|
|
||||||
$maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize);
|
$maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize);
|
||||||
for ($file_num=0;$file_num<count($_FILES["userfile"]["tmp_name"]);$file_num++){
|
foreach($file_ary as $file) {
|
||||||
if ($_FILES["userfile"]["size"][$file_num]==0) {
|
if($file['error']==1) {
|
||||||
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_zerosize"));
|
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_maxsize"));
|
||||||
}
|
}
|
||||||
if ($maxuploadsize && $_FILES["userfile"]["size"][$file_num] > $maxuploadsize) {
|
if($file['error']!=0) {
|
||||||
UI::exitError(getMLText("folder_title", array("documentname" => $document->getName())),getMLText("uploading_maxsize"));
|
|
||||||
}
|
|
||||||
if (is_uploaded_file($_FILES["userfile"]["tmp_name"][$file_num]) && $_FILES['userfile']['error'][$file_num] != 0){
|
|
||||||
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_failed"));
|
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_failed"));
|
||||||
}
|
}
|
||||||
if($_FILES["userfile"]["error"][$file_num]) {
|
if ($file["size"]==0) {
|
||||||
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured"));
|
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_zerosize"));
|
||||||
}
|
}
|
||||||
|
if ($maxuploadsize && $file["size"] > $maxuploadsize) {
|
||||||
|
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("uploading_maxsize"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(count($_FILES["userfile"]["tmp_name"]) == 1 && !empty($_POST['name']))
|
foreach($file_ary as $file) {
|
||||||
|
if(count($file_ary) == 1 && !empty($_POST['name']))
|
||||||
$name = $_POST["name"];
|
$name = $_POST["name"];
|
||||||
else
|
else
|
||||||
$name = $_FILES["userfile"]['name'][$file_num];
|
$name = $file['name'];
|
||||||
$comment = $_POST["comment"];
|
$comment = $_POST["comment"];
|
||||||
$version = (int) $_POST["version"];
|
$version = (int) $_POST["version"];
|
||||||
$public = (isset($_POST["public"]) && $_POST["public"] == 'true') ? 1 : 0;
|
$public = (isset($_POST["public"]) && $_POST["public"] == 'true') ? 1 : 0;
|
||||||
|
@ -99,9 +149,9 @@ for ($file_num=0;$file_num<count($_FILES["userfile"]["tmp_name"]);$file_num++){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$userfiletmp = $_FILES["userfile"]["tmp_name"][$file_num];
|
$userfiletmp = $file["tmp_name"];
|
||||||
$userfiletype = $_FILES["userfile"]["type"][$file_num];
|
$userfiletype = $file["type"];
|
||||||
$userfilename = $_FILES["userfile"]["name"][$file_num];
|
$userfilename = $file["name"];
|
||||||
|
|
||||||
$fileType = ".".pathinfo($userfilename, PATHINFO_EXTENSION);
|
$fileType = ".".pathinfo($userfilename, PATHINFO_EXTENSION);
|
||||||
|
|
||||||
|
|
|
@ -150,6 +150,7 @@ if ($action == "saveSettings")
|
||||||
setBoolValue("enableRecursiveCount");
|
setBoolValue("enableRecursiveCount");
|
||||||
setIntValue("maxRecursiveCount");
|
setIntValue("maxRecursiveCount");
|
||||||
setIntValue("daysPastDashboard");
|
setIntValue("daysPastDashboard");
|
||||||
|
setArrayValue("excludeFoldersDashboard");
|
||||||
setBoolValue("enableLanguageSelector");
|
setBoolValue("enableLanguageSelector");
|
||||||
setBoolValue("enableHelp");
|
setBoolValue("enableHelp");
|
||||||
setBoolValue("enableThemeSelector");
|
setBoolValue("enableThemeSelector");
|
||||||
|
|
|
@ -25,6 +25,7 @@ if($view) {
|
||||||
$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('dayspastdashboard', (int) $settings->_daysPastDashboard);
|
||||||
|
$view->setParam('excludedfolders', $settings->_excludeFoldersDashboard);
|
||||||
$view->setParam('accessobject', $accessop);
|
$view->setParam('accessobject', $accessop);
|
||||||
$view->setParam('xsendfile', $settings->_enableXsendfile);
|
$view->setParam('xsendfile', $settings->_enableXsendfile);
|
||||||
$view($_GET);
|
$view($_GET);
|
||||||
|
|
1366
restapi/index.php
1366
restapi/index.php
File diff suppressed because it is too large
Load Diff
|
@ -35,11 +35,16 @@ class SeedDMS_View_AddFile extends SeedDMS_Theme_Style {
|
||||||
$enablelargefileupload = $this->params['enablelargefileupload'];
|
$enablelargefileupload = $this->params['enablelargefileupload'];
|
||||||
$partitionsize = $this->params['partitionsize'];
|
$partitionsize = $this->params['partitionsize'];
|
||||||
$maxuploadsize = $this->params['maxuploadsize'];
|
$maxuploadsize = $this->params['maxuploadsize'];
|
||||||
|
$dropfolderdir = $this->params['dropfolderdir'];
|
||||||
|
|
||||||
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'));
|
||||||
if($enablelargefileupload)
|
if($enablelargefileupload)
|
||||||
$this->printFineUploaderJs($this->params['settings']->_httpRoot.'op/op.UploadChunks.php', $partitionsize, $maxuploadsize);
|
$this->printFineUploaderJs($this->params['settings']->_httpRoot.'op/op.UploadChunks.php', $partitionsize, $maxuploadsize);
|
||||||
|
|
||||||
|
if($dropfolderdir) {
|
||||||
|
$this->printDropFolderChooserJs("addfileform");
|
||||||
|
}
|
||||||
$this->printFileChooserJs();
|
$this->printFileChooserJs();
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
@ -58,14 +63,18 @@ $(document).ready( function() {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}, "<?php printMLText("js_no_file");?>");
|
}, "<?php printMLText("js_no_file");?>");
|
||||||
$("#form1").validate({
|
$("#addfileform").validate({
|
||||||
debug: false,
|
debug: false,
|
||||||
ignore: ":hidden:not(.do_validate)",
|
ignore: ":hidden:not(.do_validate)",
|
||||||
<?php
|
<?php
|
||||||
if($enablelargefileupload) {
|
if($enablelargefileupload) {
|
||||||
?>
|
?>
|
||||||
submitHandler: function(form) {
|
submitHandler: function(form) {
|
||||||
userfileuploader.uploadStoredFiles();
|
/* fileuploader may not have any files if drop folder is used */
|
||||||
|
if(userfileuploader.getUploads().length)
|
||||||
|
userfileuploader.uploadStoredFiles();
|
||||||
|
else
|
||||||
|
form.submit();
|
||||||
},
|
},
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
@ -74,14 +83,18 @@ $(document).ready( function() {
|
||||||
<?php
|
<?php
|
||||||
if($enablelargefileupload) {
|
if($enablelargefileupload) {
|
||||||
?>
|
?>
|
||||||
fineuploaderuuids: {
|
'userfile-fine-uploader-uuids': {
|
||||||
fineuploader: [ userfileuploader ]
|
fineuploader: [ userfileuploader, $('#dropfolderfileaddfileform') ]
|
||||||
}
|
}
|
||||||
<?php
|
<?php
|
||||||
} else {
|
} else {
|
||||||
?>
|
?>
|
||||||
'userfile[]': {
|
'userfile[]': {
|
||||||
required: true
|
require_from_group: [1, ".fileupload-group"],
|
||||||
|
maxsize: <?= $maxuploadsize ?>
|
||||||
|
},
|
||||||
|
dropfolderfileaddfileform: {
|
||||||
|
require_from_group: [1, ".fileupload-group"]
|
||||||
}
|
}
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
@ -113,6 +126,7 @@ $(document).ready( function() {
|
||||||
$enablelargefileupload = $this->params['enablelargefileupload'];
|
$enablelargefileupload = $this->params['enablelargefileupload'];
|
||||||
$uploadedattachmentispublic = $this->params['uploadedattachmentispublic'];
|
$uploadedattachmentispublic = $this->params['uploadedattachmentispublic'];
|
||||||
$maxuploadsize = $this->params['maxuploadsize'];
|
$maxuploadsize = $this->params['maxuploadsize'];
|
||||||
|
$dropfolderdir = $this->params['dropfolderdir'];
|
||||||
|
|
||||||
$this->htmlAddHeader('<script type="text/javascript" src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/jquery-validation/jquery.validate.js"></script>'."\n", 'js');
|
$this->htmlAddHeader('<script type="text/javascript" src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/vendors/jquery-validation/jquery.validate.js"></script>'."\n", 'js');
|
||||||
$this->htmlAddHeader('<script type="text/javascript" src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/validation-default.js"></script>'."\n", 'js');
|
$this->htmlAddHeader('<script type="text/javascript" src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/validation-default.js"></script>'."\n", 'js');
|
||||||
|
@ -132,7 +146,7 @@ $(document).ready( function() {
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<form class="form-horizontal" action="../op/op.AddFile.php" enctype="multipart/form-data" method="post" name="form1" id="form1">
|
<form class="form-horizontal" action="../op/op.AddFile.php" enctype="multipart/form-data" method="post" name="addfileform" id="addfileform">
|
||||||
<input type="hidden" name="documentid" value="<?php print $document->getId(); ?>">
|
<input type="hidden" name="documentid" value="<?php print $document->getId(); ?>">
|
||||||
<?php
|
<?php
|
||||||
$this->contentContainerStart();
|
$this->contentContainerStart();
|
||||||
|
@ -140,6 +154,12 @@ $(document).ready( function() {
|
||||||
getMLText("local_file"),
|
getMLText("local_file"),
|
||||||
($enablelargefileupload ? $this->getFineUploaderHtml() : $this->getFileChooserHtml('userfile[]', false))
|
($enablelargefileupload ? $this->getFineUploaderHtml() : $this->getFileChooserHtml('userfile[]', false))
|
||||||
);
|
);
|
||||||
|
if($dropfolderdir) {
|
||||||
|
$this->formField(
|
||||||
|
getMLText("dropfolder_file"),
|
||||||
|
$this->getDropFolderChooserHtml("addfileform")
|
||||||
|
);
|
||||||
|
}
|
||||||
$options = array();
|
$options = array();
|
||||||
$options[] = array("", getMLText('document'));
|
$options[] = array("", getMLText('document'));
|
||||||
$versions = $document->getContent();
|
$versions = $document->getContent();
|
||||||
|
@ -198,4 +218,3 @@ $(document).ready( function() {
|
||||||
|
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
}
|
}
|
||||||
?>
|
|
||||||
|
|
|
@ -1868,7 +1868,7 @@ $(document).ready(function() {
|
||||||
/**
|
/**
|
||||||
* This function is deprecated. Don't use it anymore. There is a generic
|
* This function is deprecated. Don't use it anymore. There is a generic
|
||||||
* folderSelected and documentSelected function in application.js
|
* folderSelected and documentSelected function in application.js
|
||||||
* If you extra functions to be called then define them in your own js code
|
* If you need extra functions to be called then define them in your own js code
|
||||||
*/
|
*/
|
||||||
function printDocumentChooserJs($form, $formname='') { /* {{{ */
|
function printDocumentChooserJs($form, $formname='') { /* {{{ */
|
||||||
if(!$formname)
|
if(!$formname)
|
||||||
|
@ -1935,7 +1935,7 @@ function folderSelected<?php echo $formid ?>(id, name) {
|
||||||
/**
|
/**
|
||||||
* This function is deprecated. Don't use it anymore. There is a generic
|
* This function is deprecated. Don't use it anymore. There is a generic
|
||||||
* folderSelected and documentSelected function in application.js
|
* folderSelected and documentSelected function in application.js
|
||||||
* If you extra functions to be called then define them in your own js code
|
* If you need extra functions to be called then define them in your own js code
|
||||||
*/
|
*/
|
||||||
function printFolderChooserJs($form, $formname='') { /* {{{ */
|
function printFolderChooserJs($form, $formname='') { /* {{{ */
|
||||||
if(!$formname)
|
if(!$formname)
|
||||||
|
|
|
@ -69,6 +69,7 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
$previewconverters = $this->params['previewConverters'];
|
$previewconverters = $this->params['previewConverters'];
|
||||||
$timeout = $this->params['timeout'];
|
$timeout = $this->params['timeout'];
|
||||||
$dayspastdashboard = $this->params['dayspastdashboard'];
|
$dayspastdashboard = $this->params['dayspastdashboard'];
|
||||||
|
$excludedfolders = $this->params['excludedfolders'];
|
||||||
$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);
|
||||||
|
@ -80,6 +81,11 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
echo $this->contentHeading(getMLText('new_documents'));
|
echo $this->contentHeading(getMLText('new_documents'));
|
||||||
$documents = $dms->getLatestChanges('newdocuments', mktime(0, 0, 0)-$dayspastdashboard*86400, time());
|
$documents = $dms->getLatestChanges('newdocuments', mktime(0, 0, 0)-$dayspastdashboard*86400, time());
|
||||||
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ);
|
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ);
|
||||||
|
foreach($documents as $i=>$doc) {
|
||||||
|
$fl = explode(':', $doc->getFolderList());
|
||||||
|
if(array_diff($fl, $excludedfolders))
|
||||||
|
unset($documents[$i]);
|
||||||
|
}
|
||||||
if (count($documents) > 0) {
|
if (count($documents) > 0) {
|
||||||
$this->printList($documents, $previewer);
|
$this->printList($documents, $previewer);
|
||||||
}
|
}
|
||||||
|
@ -94,6 +100,7 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
$previewconverters = $this->params['previewConverters'];
|
$previewconverters = $this->params['previewConverters'];
|
||||||
$timeout = $this->params['timeout'];
|
$timeout = $this->params['timeout'];
|
||||||
$dayspastdashboard = $this->params['dayspastdashboard'];
|
$dayspastdashboard = $this->params['dayspastdashboard'];
|
||||||
|
$excludedfolders = $this->params['excludedfolders'];
|
||||||
$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);
|
||||||
|
@ -105,6 +112,11 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
echo $this->contentHeading(getMLText('updated_documents'));
|
echo $this->contentHeading(getMLText('updated_documents'));
|
||||||
$documents = $dms->getLatestChanges('updateddocuments', mktime(0, 0, 0)-$dayspastdashboard*86400, time());
|
$documents = $dms->getLatestChanges('updateddocuments', mktime(0, 0, 0)-$dayspastdashboard*86400, time());
|
||||||
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ);
|
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ);
|
||||||
|
foreach($documents as $i=>$doc) {
|
||||||
|
$fl = explode(':', $doc->getFolderList());
|
||||||
|
if(array_diff($fl, $excludedfolders))
|
||||||
|
unset($documents[$i]);
|
||||||
|
}
|
||||||
if (count($documents) > 0) {
|
if (count($documents) > 0) {
|
||||||
$this->printList($documents, $previewer);
|
$this->printList($documents, $previewer);
|
||||||
}
|
}
|
||||||
|
@ -119,6 +131,7 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
$previewconverters = $this->params['previewConverters'];
|
$previewconverters = $this->params['previewConverters'];
|
||||||
$timeout = $this->params['timeout'];
|
$timeout = $this->params['timeout'];
|
||||||
$dayspastdashboard = $this->params['dayspastdashboard'];
|
$dayspastdashboard = $this->params['dayspastdashboard'];
|
||||||
|
$excludedfolders = $this->params['excludedfolders'];
|
||||||
$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);
|
||||||
|
@ -130,6 +143,11 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style {
|
||||||
echo $this->contentHeading(getMLText('status_change'));
|
echo $this->contentHeading(getMLText('status_change'));
|
||||||
$documents = $dms->getLatestChanges('statuschange', mktime(0, 0, 0)-$dayspastdashboard*86400, time());
|
$documents = $dms->getLatestChanges('statuschange', mktime(0, 0, 0)-$dayspastdashboard*86400, time());
|
||||||
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ);
|
$documents = SeedDMS_Core_DMS::filterAccess($documents, $user, M_READ);
|
||||||
|
foreach($documents as $i=>$doc) {
|
||||||
|
$fl = explode(':', $doc->getFolderList());
|
||||||
|
if(array_diff($fl, $excludedfolders))
|
||||||
|
unset($documents[$i]);
|
||||||
|
}
|
||||||
if (count($documents) > 0) {
|
if (count($documents) > 0) {
|
||||||
$this->printList($documents, $previewer);
|
$this->printList($documents, $previewer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -258,6 +258,35 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style {
|
||||||
<?php
|
<?php
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
|
protected function showConfigFolder($title, $name, $allowempty=true, $multiple=true, $size=0) { /* {{{ */
|
||||||
|
$settings = $this->params['settings'];
|
||||||
|
$dms = $this->params['dms'];
|
||||||
|
?>
|
||||||
|
<tr title="<?= getMLText($title."_desc") ?>">
|
||||||
|
<td><?= getMLText($title) ?></td>
|
||||||
|
<td>
|
||||||
|
<?php
|
||||||
|
if(is_array($settings->{"_".$name}))
|
||||||
|
$selections = $settings->{"_".$name};
|
||||||
|
else
|
||||||
|
$selections = explode(',', $settings->{"_".$name});
|
||||||
|
echo "<select class=\"chzn-select-folder\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"".$name.($multiple ? "[]" : "")."\"".($multiple ? " multiple" : "").($size ? " size=\"".$size."\"" : "")." data-placeholder=\"".getMLText("select_folder")."\" style=\"width: 100%;\">";
|
||||||
|
if($allowempty)
|
||||||
|
echo "<option value=\"\"></option>";
|
||||||
|
foreach($selections as $selid) {
|
||||||
|
if ($f = $dms->getFolder($selid)) {
|
||||||
|
echo "<option value=\"".$selid."\"";
|
||||||
|
echo " selected";
|
||||||
|
echo ">".htmlspecialchars($f->getName())."</option>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo "</select>";
|
||||||
|
?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
protected function showConfigGroup($title, $name, $allowempty=false, $multiple=false, $size=0) { /* {{{ */
|
protected function showConfigGroup($title, $name, $allowempty=false, $multiple=false, $size=0) { /* {{{ */
|
||||||
$settings = $this->params['settings'];
|
$settings = $this->params['settings'];
|
||||||
$dms = $this->params['dms'];
|
$dms = $this->params['dms'];
|
||||||
|
@ -455,6 +484,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk))
|
||||||
<?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->showConfigText('settings_daysPastDashboard', 'daysPastDashboard'); ?>
|
||||||
|
<?php $this->showConfigFolder('settings_excludeFoldersDashboard', 'excludeFoldersDashboard'); ?>
|
||||||
<?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'); ?>
|
||||||
|
|
|
@ -1808,7 +1808,7 @@ $(document).ready(function() {
|
||||||
/**
|
/**
|
||||||
* This function is deprecated. Don't use it anymore. There is a generic
|
* This function is deprecated. Don't use it anymore. There is a generic
|
||||||
* folderSelected and documentSelected function in application.js
|
* folderSelected and documentSelected function in application.js
|
||||||
* If you extra functions to be called then define them in your own js code
|
* If you need extra functions to be called then define them in your own js code
|
||||||
*/
|
*/
|
||||||
function printDocumentChooserJs($form, $formname='') { /* {{{ */
|
function printDocumentChooserJs($form, $formname='') { /* {{{ */
|
||||||
if(!$formname)
|
if(!$formname)
|
||||||
|
@ -1877,7 +1877,7 @@ function folderSelected<?php echo $formid ?>(id, name) {
|
||||||
/**
|
/**
|
||||||
* This function is deprecated. Don't use it anymore. There is a generic
|
* This function is deprecated. Don't use it anymore. There is a generic
|
||||||
* folderSelected and documentSelected function in application.js
|
* folderSelected and documentSelected function in application.js
|
||||||
* If you extra functions to be called then define them in your own js code
|
* If you need extra functions to be called then define them in your own js code
|
||||||
*/
|
*/
|
||||||
function printFolderChooserJs($form, $formname='') { /* {{{ */
|
function printFolderChooserJs($form, $formname='') { /* {{{ */
|
||||||
if(!$formname)
|
if(!$formname)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user