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

This commit is contained in:
Uwe Steinmann 2018-11-16 19:17:19 +01:00
commit 046d07bbf1
11 changed files with 61 additions and 17 deletions

View File

@ -110,6 +110,17 @@
- add document list which can be exported as an archive - add document list which can be exported as an archive
- search results can be exported - search results can be exported
--------------------------------------------------------------------------------
Changes in version 5.1.10
--------------------------------------------------------------------------------
- set configured command timeout when creating pdf preview
- show numbers of reviews in main menu again
- do not send multiple emails after triggering a workflow transition, if a user
is involved in more than one of the following transitions
- fix javascript errors in out/out.TriggerWorkflow.php
- minor corrections in worklflow manager
- show splash messages after triggering a workflow transition
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
Changes in version 5.1.9 Changes in version 5.1.9
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

View File

@ -1,4 +1,4 @@
VERSION=6.0.6 VERSION=$(shell php -r 'include("inc/inc.Version.php"); $$v=new SeedDMS_Version(); echo $$v->version();')
SRC=CHANGELOG inc conf utils index.php languages views op out controllers doc styles TODO LICENSE webdav install restapi pdfviewer SRC=CHANGELOG inc conf utils index.php languages views op out controllers doc styles TODO LICENSE webdav install restapi pdfviewer
# webapp # webapp

View File

@ -15,8 +15,8 @@
<date>2018-11-13</date> <date>2018-11-13</date>
<time>07:31:17</time> <time>07:31:17</time>
<version> <version>
<release>6.0.6</release> <release>6.0.7</release>
<api>6.0.6</api> <api>6.0.7</api>
</version> </version>
<stability> <stability>
<release>stable</release> <release>stable</release>
@ -24,10 +24,6 @@
</stability> </stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license> <license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes> <notes>
SeedDMS_Core_Folder::addContent() uses currently logged in user as uploader instead of owner
SeedDMS_Core_DocumentContent::verifyStatus() will not set status to S_RELEASED
if currently in S_DRAFT status und no workflow, review, approval, or revision
is pending.
</notes> </notes>
<contents> <contents>
<dir baseinstalldir="SeedDMS" name="/"> <dir baseinstalldir="SeedDMS" name="/">
@ -1622,8 +1618,8 @@ fix possible sql injection in SeedDMS_Core_User
</notes> </notes>
</release> </release>
<release> <release>
<date>2018-08-07</date> <date>2018-11-13</date>
<time>09:19:24</time> <time>07:31:17</time>
<version> <version>
<release>5.1.9</release> <release>5.1.9</release>
<api>5.1.9</api> <api>5.1.9</api>
@ -1771,5 +1767,24 @@ add SeedDMS_Core_DocumentContent::getInstance()
add list 'NeedsCorrectionOwner' to SeedDMS_Core_DMS::getDocumentList() add list 'NeedsCorrectionOwner' to SeedDMS_Core_DMS::getDocumentList()
</notes> </notes>
</release> </release>
<release>
<date>2018-11-13</date>
<time>07:31:17</time>
<version>
<release>6.0.6</release>
<api>6.0.6</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
SeedDMS_Core_Folder::addContent() uses currently logged in user as uploader instead of owner
SeedDMS_Core_DocumentContent::verifyStatus() will not set status to S_RELEASED
if currently in S_DRAFT status und no workflow, review, approval, or revision
is pending.
</notes>
</release>
</changelog> </changelog>
</package> </package>

View File

@ -122,8 +122,10 @@ function fileExistsInIncludePath($file) { /* {{{ */
/** /**
* Load default settings + set * Load default settings + set
*/ */
require_once('../inc/inc.Version.php');
$ver = new SeedDMS_Version();
define("SEEDDMS_INSTALL", "on"); define("SEEDDMS_INSTALL", "on");
define("SEEDDMS_VERSION", "6.0.6"); define("SEEDDMS_VERSION", $ver->version());
require_once('../inc/inc.ClassSettings.php'); require_once('../inc/inc.ClassSettings.php');

View File

@ -69,7 +69,7 @@ if (!is_object($object)) {
exit; exit;
} }
$previewer = new SeedDMS_Preview_PdfPreviewer($settings->_cacheDir); $previewer = new SeedDMS_Preview_PdfPreviewer($settings->_cacheDir, $settings->_cmdTimeout);
if(!$previewer->hasPreview($object)) if(!$previewer->hasPreview($object))
$previewer->createPreview($object); $previewer->createPreview($object);
header('Content-Type: application/pdf'); header('Content-Type: application/pdf');

View File

@ -116,9 +116,13 @@ if($version->triggerWorkflowTransition($user, $transition, $_POST["comment"])) {
$params['http_root'] = $settings->_httpRoot; $params['http_root'] = $settings->_httpRoot;
$params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$usersinformed = array();
foreach($workflow->getNextTransitions($transition->getNextState()) as $ntransition) { foreach($workflow->getNextTransitions($transition->getNextState()) as $ntransition) {
foreach($ntransition->getUsers() as $tuser) { foreach($ntransition->getUsers() as $tuser) {
$notifier->toIndividual($user, $tuser->getUser(), $subject, $message, $params); if(!in_array($tuser->getUser()->getID(), $usersinformed)) {
$usersinformed[] = $tuser->getUser()->getID();
$notifier->toIndividual($user, $tuser->getUser(), $subject, $message, $params);
}
} }
foreach($ntransition->getGroups() as $tuser) { foreach($ntransition->getGroups() as $tuser) {
$notifier->toGroup($user, $tuser->getGroup(), $subject, $message, $params); $notifier->toGroup($user, $tuser->getGroup(), $subject, $message, $params);
@ -127,6 +131,8 @@ if($version->triggerWorkflowTransition($user, $transition, $_POST["comment"])) {
} }
} }
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_trigger_workflow')));
if(isset($GLOBALS['SEEDDMS_HOOKS']['triggerWorkflowTransition'])) { if(isset($GLOBALS['SEEDDMS_HOOKS']['triggerWorkflowTransition'])) {
foreach($GLOBALS['SEEDDMS_HOOKS']['triggerWorkflowTransition'] as $hookObj) { foreach($GLOBALS['SEEDDMS_HOOKS']['triggerWorkflowTransition'] as $hookObj) {
if (method_exists($hookObj, 'postTriggerWorkflowTransition')) { if (method_exists($hookObj, 'postTriggerWorkflowTransition')) {
@ -134,6 +140,8 @@ if($version->triggerWorkflowTransition($user, $transition, $_POST["comment"])) {
} }
} }
} }
} else {
$session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_trigger_workflow')));
} }
add_log_line("?documentid=".$documentid."&version".$version_num); add_log_line("?documentid=".$documentid."&version".$version_num);

View File

@ -55,6 +55,7 @@ class SeedDMS_Bootstrap_Style extends SeedDMS_View_Common {
* since version 25+ * since version 25+
* X-Content-Security-Policy is deprecated, Firefox understands * X-Content-Security-Policy is deprecated, Firefox understands
* Content-Security-Policy since version 23+ * Content-Security-Policy since version 23+
* 'worker-src blob:' is needed for cytoscape
*/ */
$csp_rules = "script-src 'self' 'unsafe-eval'; worker-src blob:;"; // style-src 'self';"; $csp_rules = "script-src 'self' 'unsafe-eval'; worker-src blob:;"; // style-src 'self';";
foreach (array("X-WebKit-CSP", "X-Content-Security-Policy", "Content-Security-Policy") as $csp) { foreach (array("X-WebKit-CSP", "X-Content-Security-Policy", "Content-Security-Policy") as $csp) {

View File

@ -57,9 +57,13 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style {
} }
} }
} }
<<<<<<< HEAD
if($workflowmode == 'traditional') if($workflowmode == 'traditional')
if(!$tasksinmenu || in_array('review', $tasksinmenu)) { if(!$tasksinmenu || in_array('review', $tasksinmenu)) {
$tasks['review'] = array(); $tasks['review'] = array();
=======
if($workflowmode == 'traditional') {
>>>>>>> seeddms-5.1.x
$resArr = $dms->getDocumentList('ReviewByMe', $user); $resArr = $dms->getDocumentList('ReviewByMe', $user);
if($resArr) { if($resArr) {
foreach ($resArr as $res) { foreach ($resArr as $res) {
@ -67,6 +71,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style {
if($document->getAccessMode($user) >= M_READ && $document->getLatestContent()) { if($document->getAccessMode($user) >= M_READ && $document->getLatestContent()) {
$tasks['review'][] = array('id'=>$res['id'], 'name'=>$res['name']); $tasks['review'][] = array('id'=>$res['id'], 'name'=>$res['name']);
} }
<<<<<<< HEAD
} }
} }
} }
@ -93,6 +98,8 @@ class SeedDMS_View_Tasks extends SeedDMS_Bootstrap_Style {
if($document->getAccessMode($user) >= M_READ && $document->getLatestContent()) { if($document->getAccessMode($user) >= M_READ && $document->getLatestContent()) {
$tasks['revision'][] = array('id'=>$res['id'], 'name'=>$res['name']); $tasks['revision'][] = array('id'=>$res['id'], 'name'=>$res['name']);
} }
=======
>>>>>>> seeddms-5.1.x
} }
} }
} }

View File

@ -1129,7 +1129,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Bootstrap_Style {
echo "<td>"; echo "<td>";
if($latestContent->triggerWorkflowTransitionIsAllowed($user, $transition)) { if($latestContent->triggerWorkflowTransitionIsAllowed($user, $transition)) {
$action = $transition->getAction(); $action = $transition->getAction();
print "<form action=\"../out/out.TriggerWorkflow.php\" method=\"get\">".createHiddenFieldWithKey('triggerworkflow')."<input type=\"hidden\" name=\"documentid\" value=\"".$documentid."\" /><input type=\"hidden\" name=\"version\" value=\"".$latestContent->getVersion()."\" /><input type=\"hidden\" name=\"transition\" value=\"".$transition->getID()."\" /><input type=\"submit\" class=\"btn\" value=\"".getMLText('action_'.strtolower($action->getName()), array(), $action->getName())."\" /></form>"; print "<form action=\"../out/out.TriggerWorkflow.php\" method=\"get\"><input type=\"hidden\" name=\"documentid\" value=\"".$documentid."\" /><input type=\"hidden\" name=\"version\" value=\"".$latestContent->getVersion()."\" /><input type=\"hidden\" name=\"transition\" value=\"".$transition->getID()."\" /><input type=\"submit\" class=\"btn\" value=\"".getMLText('action_'.strtolower($action->getName()), array(), $action->getName())."\" /></form>";
$allowedtransitions[] = $transition; $allowedtransitions[] = $transition;
} }
echo "</td>"; echo "</td>";

View File

@ -189,7 +189,7 @@ cy.on('tap', 'node', function(evt) {
var scratch = node.scratch('app'); var scratch = node.scratch('app');
if(typeof scratch !== 'undefined') { if(typeof scratch !== 'undefined') {
noty({ noty({
text: (scratch.users ? '<p><?php printMLText('users'); ?>: ' + scratch.users + '</p>' : '') + (scratch.groups ? '<?php printMLText('groups'); ?>: ' + scratch.groups + '</p>' : ''), text: (scratch.users ? '<p><?= '<i class="icon-user"></i> ' ?> ' + scratch.users + '</p>' : '') + (scratch.groups ? '<?= '<i class="icon-group"></i> ' ?> ' + scratch.groups + '</p>' : ''),
type: 'information', type: 'information',
dismissQueue: true, dismissQueue: true,
layout: 'topCenter', layout: 'topCenter',
@ -256,7 +256,7 @@ $(document).ready(function() {
$transusers = $transition->getUsers(); $transusers = $transition->getUsers();
$unames = array(); $unames = array();
foreach($transusers as $transuser) { foreach($transusers as $transuser) {
$unames[] = $transuser->getUser()->getFullName(); $unames[] = $transuser->getUser()->getLogin().' - '.$transuser->getUser()->getFullName();
} }
$transgroups = $transition->getGroups(); $transgroups = $transition->getGroups();
$gnames = array(); $gnames = array();

View File

@ -214,12 +214,12 @@ $(document).ready(function() {
echo "<td>"; echo "<td>";
foreach($transusers as $transuser) { foreach($transusers as $transuser) {
$u = $transuser->getUser(); $u = $transuser->getUser();
echo getMLText('user').": ".$u->getFullName(); echo '<i class="icon-user"></i> '.htmlspecialchars($u->getLogin()." - ".$u->getFullName());
echo "<br />"; echo "<br />";
} }
foreach($transgroups as $transgroup) { foreach($transgroups as $transgroup) {
$g = $transgroup->getGroup(); $g = $transgroup->getGroup();
echo getMLText('at_least_n_users_of_group', echo '<i class="icon-group"></i> '.getMLText('at_least_n_users_of_group',
array("number_of_users" => $transgroup->getNumOfUsers(), array("number_of_users" => $transgroup->getNumOfUsers(),
"group" => $g->getName())); "group" => $g->getName()));
echo "<br />"; echo "<br />";