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

This commit is contained in:
Uwe Steinmann 2017-09-27 07:02:38 +02:00
commit 5b2da28edd
16 changed files with 90 additions and 34 deletions

View File

@ -43,6 +43,8 @@
--------------------------------------------------------------------------------
Changes in version 5.1.4
--------------------------------------------------------------------------------
- fix javascript error when indexing document, because the indexer was also
created when the js-code was requested (Closes #340)
--------------------------------------------------------------------------------
Changes in version 5.1.3
@ -89,6 +91,7 @@
--------------------------------------------------------------------------------
Changes in version 5.0.14
--------------------------------------------------------------------------------
- use cmd timeout when indexing documents (Closes #344)
--------------------------------------------------------------------------------
Changes in version 5.0.13
@ -192,6 +195,7 @@
--------------------------------------------------------------------------------
Changes in version 4.3.37
--------------------------------------------------------------------------------
- fix label in password forgotten form (Closes #346)
--------------------------------------------------------------------------------
Changes in version 4.3.36

View File

@ -64,13 +64,13 @@ class SeedDMS_Preview_Base {
2 => array("pipe", "w")
);
$pipes = array();
$timeout += time();
$process = proc_open($cmd, $descriptorspec, $pipes);
if (!is_resource($process)) {
throw new Exception("proc_open failed on: " . $cmd);
}
$output = '';
$timeleft = $timeout - time();
$read = array($pipes[1]);
@ -78,13 +78,13 @@ class SeedDMS_Preview_Base {
$exeptions = NULL;
do {
stream_select($read, $write, $exeptions, $timeleft, 200000);
if (!empty($read)) {
$output .= fread($pipes[1], 8192);
}
$timeleft = $timeout - time();
} while (!feof($pipes[1]) && $timeleft > 0);
if ($timeleft <= 0) {
proc_terminate($process);
throw new Exception("command timeout on: " . $cmd);
@ -109,7 +109,7 @@ class SeedDMS_Preview_Base {
/**
* Check if converter for a given mimetype is set
*
* @param string $mimetype
* @param string $mimetype
* @return boolean true if converter exists, otherwise false
*/
function hasConverter($mimetype) { /* {{{ */

View File

@ -101,6 +101,7 @@ class SeedDMS_Preview_PdfPreviewer extends SeedDMS_Preview_Base {
try {
self::execWithTimeout($cmd, $this->timeout);
} catch(Exception $e) {
return false;
}
}
return true;

View File

@ -140,6 +140,7 @@ class SeedDMS_Preview_Previewer extends SeedDMS_Preview_Base {
try {
self::execWithTimeout($cmd, $this->timeout);
} catch(Exception $e) {
return false;
}
}
return true;

View File

@ -11,10 +11,10 @@
<email>uwe@steinmann.cx</email>
<active>yes</active>
</lead>
<date>2017-03-02</date>
<time>07:14:59</time>
<date>2017-09-18</date>
<time>07:14:32</time>
<version>
<release>1.2.2</release>
<release>1.2.3</release>
<api>1.2.0</api>
</version>
<stability>
@ -23,8 +23,7 @@
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
commands can be set for mimetypes 'xxxx/*' and '*'
pass mimetype as parameter '%m' to converter
createPreview() returns false if running the converter command fails
</notes>
<contents>
<dir baseinstalldir="SeedDMS" name="/">
@ -271,5 +270,22 @@ add new previewer which converts document to pdf instead of png
setConverters() overrides exiting converters
</notes>
</release>
<release>
<date>2017-03-02</date>
<time>07:14:59</time>
<version>
<release>1.2.2</release>
<api>1.2.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
commands can be set for mimetypes 'xxxx/*' and '*'
pass mimetype as parameter '%m' to converter
</notes>
</release>
</changelog>
</package>

View File

@ -241,8 +241,12 @@ class Settings { /* {{{ */
var $_cmdTimeout = 5;
// Preview image width in lists
var $_previewWidthList = 40;
// Preview image width in menu lists
var $_previewWidthMenuList = 40;
// Preview image width on document details page
var $_previewWidthDetail = 100;
// Preview image width in drop folder list
var $_previewWidthDropFolderList = 100;
// show full preview on document details page
var $_showFullPreview = false;
// convert to pdf for preview on document details page
@ -428,8 +432,12 @@ class Settings { /* {{{ */
$this->_theme = strval($tab["theme"]);
if(isset($tab["previewWidthList"]))
$this->_previewWidthList = intval($tab["previewWidthList"]);
if(isset($tab["previewWidthMenuList"]))
$this->_previewWidthMenuList = intval($tab["previewWidthMenuList"]);
if(isset($tab["previewWidthDetail"]))
$this->_previewWidthDetail = intval($tab["previewWidthDetail"]);
if(isset($tab["previewWidthDropFolderList"]))
$this->_previewWidthDropFolderList = intval($tab["previewWidthDropFolderList"]);
$this->_showFullPreview = Settings::boolVal($tab["showFullPreview"]);
$this->_convertToPdf = Settings::boolVal($tab["convertToPdf"]);
@ -755,7 +763,9 @@ class Settings { /* {{{ */
$this->setXMLAttributValue($node, "availablelanguages", implode(',', $this->_availablelanguages));
$this->setXMLAttributValue($node, "theme", $this->_theme);
$this->setXMLAttributValue($node, "previewWidthList", $this->_previewWidthList);
$this->setXMLAttributValue($node, "previewWidthMenuList", $this->_previewWidthMenuList);
$this->setXMLAttributValue($node, "previewWidthDetail", $this->_previewWidthDetail);
$this->setXMLAttributValue($node, "previewWidthDropFolderList", $this->_previewWidthDropFolderList);
$this->setXMLAttributValue($node, "showFullPreview", $this->_showFullPreview);
$this->setXMLAttributValue($node, "convertToPdf", $this->_convertToPdf);

View File

@ -863,7 +863,7 @@ switch($command) {
$index = $indexconf['Indexer']::open($settings->_luceneDir);
if($index) {
$indexconf['Indexer']::init($settings->_stopWordsFile);
$idoc = new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, false);
$idoc = new $indexconf['IndexedDocument']($dms, $document, isset($settings->_converters['fulltext']) ? $settings->_converters['fulltext'] : null, false, $settings->_cmdTimeout);
if(isset($GLOBALS['SEEDDMS_HOOKS']['indexDocument'])) {
foreach($GLOBALS['SEEDDMS_HOOKS']['indexDocument'] as $hookObj) {
if (method_exists($hookObj, 'preIndexDocument')) {

View File

@ -74,8 +74,15 @@ if(!empty($_GET["width"]))
else
$previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir);
$previewer->setConverters($settings->_converters['preview']);
if(!$previewer->hasPreview($object))
$previewer->createPreview($object);
if(!$previewer->hasPreview($object)) {
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

@ -65,6 +65,8 @@ if ($action == "saveSettings")
$settings->_availablelanguages = $_POST["availablelanguages"];
$settings->_theme = $_POST["theme"];
$settings->_previewWidthList = $_POST["previewWidthList"];
$settings->_previewWidthMenuList = $_POST["previewWidthMenuList"];
$settings->_previewWidthDropFolderList = $_POST["previewWidthDropFolderList"];
$settings->_previewWidthDetail = $_POST["previewWidthDetail"];
$settings->_showFullPreview = getBoolValue("showFullPreview");
$settings->_convertToPdf = getBoolValue("convertToPdf");

View File

@ -49,7 +49,8 @@ if($view) {
$view->setParam('dropfolderfile', isset($_GET["dropfolderfile"]) ? $_GET["dropfolderfile"] : '');
$view->setParam('form', $form);
$view->setParam('cachedir', $settings->_cacheDir);
$view->setParam('previewWidthList', $settings->_previewWidthList);
$view->setParam('previewWidthMenuList', $settings->_previewWidthMenuList);
$view->setParam('previewWidthList', $settings->_previewWidthDropFolderList);
$view->setParam('timeout', $settings->_cmdTimeout);
$view->setParam('showfolders', $showfolders);
$view($_GET);

View File

@ -40,23 +40,27 @@ if(!$settings->_enableFullSearch) {
UI::exitError(getMLText("admin_tools"),getMLText("fulltextsearch_disabled"));
}
if(isset($_GET['create']) && $_GET['create'] == 1) {
if(isset($_GET['confirm']) && $_GET['confirm'] == 1) {
$index = $indexconf['Indexer']::create($settings->_luceneDir);
if(!isset($_GET['action']) || $_GET['action'] == 'show') {
if(isset($_GET['create']) && $_GET['create'] == 1) {
if(isset($_GET['confirm']) && $_GET['confirm'] == 1) {
$index = $indexconf['Indexer']::create($settings->_luceneDir);
if(!$index) {
UI::exitError(getMLText("admin_tools"),getMLText("no_fulltextindex"));
}
$indexconf['Indexer']::init($settings->_stopWordsFile);
} else {
header('Location: out.CreateIndex.php');
exit;
}
} else {
$index = $indexconf['Indexer']::open($settings->_luceneDir);
if(!$index) {
UI::exitError(getMLText("admin_tools"),getMLText("no_fulltextindex"));
}
$indexconf['Indexer']::init($settings->_stopWordsFile);
} else {
header('Location: out.CreateIndex.php');
exit;
}
} else {
$index = $indexconf['Indexer']::open($settings->_luceneDir);
if(!$index) {
UI::exitError(getMLText("admin_tools"),getMLText("no_fulltextindex"));
}
$indexconf['Indexer']::init($settings->_stopWordsFile);
$index = null;
}
if (!isset($_GET["folderid"]) || !is_numeric($_GET["folderid"]) || intval($_GET["folderid"])<1) {

View File

@ -116,7 +116,7 @@ $(document).ready(function() {
alternatives: [$('#dropfolderfileform1'), $('#choosedocsearchform1')]
},
dropfolderfileform1: {
alternatives: [$(".btn-file input"), $('#choosedocsearchform1')]
alternatives: [$("#userfile"), $('#choosedocsearchform1')]
}
<?php
}

View File

@ -1053,7 +1053,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
<div class="input-append">
<input type="text" class="form-control" readonly>
<span class="btn btn-default btn-file">
'.getMLText("browse").'&hellip; <input _id="'.$id.'" type="file" name="'.$varname.'"'.($multiple ? " multiple" : "").($accept ? ' accept="'.$accept.'"' : "").'">
'.getMLText("browse").'&hellip; <input id="'.$id.'" type="file" name="'.$varname.'"'.($multiple ? " multiple" : "").($accept ? ' accept="'.$accept.'"' : "").'">
</span>
</div>
</div>
@ -1407,7 +1407,7 @@ $(document).ready(function() {
print "<div class=\"input-append\">\n";
print "<input readonly type=\"text\" id=\"dropfolderfile".$formName."\" name=\"dropfolderfile".$formName."\" value=\"".$dropfolderfile."\">";
print "<button type=\"button\" class=\"btn\" id=\"clearfilename".$formName."\"><i class=\"icon-remove\"></i></button>";
print "<a data-target=\"#dropfolderChooser\" href=\"../out/out.DropFolderChooser.php?form=form1&dropfolderfile=".$dropfolderfile."&showfolders=".$showfolders."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".($showfolders ? getMLText("choose_target_folder"): getMLText("choose_target_file"))."…</a>\n";
print "<a data-target=\"#dropfolderChooser\" href=\"../out/out.DropFolderChooser.php?form=form1&dropfolderfile=".urlencode($dropfolderfile)."&showfolders=".$showfolders."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".($showfolders ? getMLText("choose_target_folder"): getMLText("choose_target_file"))."…</a>\n";
print "</div>\n";
?>
<div class="modal hide" id="dropfolderChooser" tabindex="-1" role="dialog" aria-labelledby="dropfolderChooserLabel" aria-hidden="true">

View File

@ -56,10 +56,10 @@ $('.folderselect').click(function(ev) {
$dropfolderdir = $this->params['dropfolderdir'];
$showfolders = $this->params['showfolders'];
$cachedir = $this->params['cachedir'];
$previewwidth = $this->params['previewWidthMenuList'];
$timeout = $this->params['timeout'];
$folderid = isset($_GET['folderid']) ? $_GET['folderid'] : 0;
$previewwidth = 40;
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
$c = 0; // count files
@ -78,10 +78,12 @@ $('.folderselect').click(function(ev) {
if($showfolders == 0 && !is_dir($dir.'/'.$entry)) {
$c++;
$mimetype = finfo_file($finfo, $dir.'/'.$entry);
$previewer->createRawPreview($dir.'/'.$entry, 'dropfolder/', $mimetype);
$filecontent .= "<li><a".($folderid ? " href=\"../out/out.AddDocument.php?folderid=".$folderid."&dropfolderfileform1=".urldecode($entry)."\"" : "").">";
if($previewer->hasRawPreview($dir.'/'.$entry, 'dropfolder/')) {
$filecontent .= "<div style=\"float: left; display:inline; width:40px; max-height:40px;overflow:hidden;\"><img filename=\"".$entry."\" width=\"".$previewwidth."\" src=\"../op/op.DropFolderPreview.php?filename=".$entry."&width=".$previewwidth."\" title=\"".htmlspecialchars($mimetype)."\"></div>";
$filecontent .= "<li><a".($folderid ? " href=\"../out/out.AddDocument.php?folderid=".$folderid."&dropfolderfileform1=".urldecode($entry)."\" title=\"".getMLText('menu_upload_from_dropfolder')."\"" : "").">";
if($previewwidth) {
$previewer->createRawPreview($dir.'/'.$entry, 'dropfolder/', $mimetype);
if($previewer->hasRawPreview($dir.'/'.$entry, 'dropfolder/')) {
$filecontent .= "<div style=\"float: left; display:inline; width:40px; max-height:40px;overflow:hidden;\"><img filename=\"".$entry."\" width=\"".$previewwidth."\" src=\"../op/op.DropFolderPreview.php?filename=".$entry."&width=".$previewwidth."\" title=\"".htmlspecialchars($mimetype)."\"></div>";
}
}
$filecontent .= "<div style=\"margin-left:10px; margin-right: 40px; display:inline-block;\">".$entry."<br /><span style=\"font-size: 85%;\">".SeedDMS_Core_File::format_filesize(filesize($dir.'/'.$entry)).", ".date('Y-m-d H:i:s', filectime($dir.'/'.$entry))."</span></div></a></li>\n";
} elseif($showfolders && is_dir($dir.'/'.$entry)) {

View File

@ -82,7 +82,7 @@ document.form1.email.focus();
<p><?php printMLText("password_forgotten_text"); ?></p>
<div class="control-group">
<label class="control-label"><?php printMLText("login");?>:</label>
<label class="control-label"><?php printMLText("user_login");?>:</label>
<div class="controls">
<input type="text" name="login" id="login">
</div>

View File

@ -190,6 +190,14 @@ if(!is_writeable($settings->_configFilePath)) {
<td><?php printMLText("settings_previewWidthList");?>:</td>
<td><?php $this->showTextField("previewWidthList", $settings->_previewWidthList); ?></td>
</tr>
<tr title="<?php printMLText("settings_previewWidthMenuList_desc");?>">
<td><?php printMLText("settings_previewWidthMenuList");?>:</td>
<td><?php $this->showTextField("previewWidthMenuList", $settings->_previewWidthMenuList); ?></td>
</tr>
<tr title="<?php printMLText("settings_previewWidthDropFolderList_desc");?>">
<td><?php printMLText("settings_previewWidthDropFolderList");?>:</td>
<td><?php $this->showTextField("previewWidthDropFolderList", $settings->_previewWidthDropFolderList); ?></td>
</tr>
<tr title="<?php printMLText("settings_previewWidthDetail_desc");?>">
<td><?php printMLText("settings_previewWidthDetail");?>:</td>
<td><?php $this->showTextField("previewWidthDetail", $settings->_previewWidthDetail); ?></td>