rejecting a revision will neccesarily put document in need correction status

This commit is contained in:
Uwe Steinmann 2018-03-13 17:51:44 +01:00
parent 31d3d491b5
commit 9b2eecca0e
5 changed files with 37 additions and 6 deletions

View File

@ -33,6 +33,13 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common {
$group = $this->params['group']; $group = $this->params['group'];
$comment = $this->params['comment']; $comment = $this->params['comment'];
/* if set to true, a single reject will reject the doc. If set to false
* all revisions will be collected first and afterwards the doc is rejected
* if one has rejected it. So in the very end the doc is rejected, but
* doc remainѕ in S_IN_REVISION until all have revised the doc
*/
$onevotereject = $this->param['onevotereject'];
/* Get the document id and name before removing the document */ /* Get the document id and name before removing the document */
$docname = $document->getName(); $docname = $document->getName();
$documentid = $document->getID(); $documentid = $document->getID();
@ -63,7 +70,7 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common {
*/ */
$result = $this->callHook('reviseUpdateDocumentStatus', $content); $result = $this->callHook('reviseUpdateDocumentStatus', $content);
if($result === null) { if($result === null) {
if ($revisionstatus == -1){ if ($onevotereject && $revisionstatus == -1){
if(!$content->setStatus(S_NEEDS_CORRECTION,$comment,$user)) { if(!$content->setStatus(S_NEEDS_CORRECTION,$comment,$user)) {
$this->error = 1; $this->error = 1;
$this->errormsg = "revision_update_failed"; $this->errormsg = "revision_update_failed";
@ -76,24 +83,38 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common {
$this->errormsg = "cannot_retrieve_revision_snapshot"; $this->errormsg = "cannot_retrieve_revision_snapshot";
return false; return false;
} }
$revisionCT = 0; $revisionok = 0;
$revisionnotok = 0;
$revisionTotal = 0; $revisionTotal = 0;
foreach ($docRevisionStatus as $drstat) { foreach ($docRevisionStatus as $drstat) {
if ($drstat["status"] == 1) { if ($drstat["status"] == 1) {
$revisionCT++; $revisionok++;
}
if ($drstat["status"] == -1) {
$revisionnotok++;
} }
if ($drstat["status"] != -2) { if ($drstat["status"] != -2) {
$revisionTotal++; $revisionTotal++;
} }
} }
// If all revisions have been received and there are no rejections, // If all revisions have been done and there are no rejections,
// then release the document otherwise put it back into revision workflow // then release the document. If all revisions have been done but some
if ($revisionCT == $revisionTotal) { // of them were rejections then documents needs correction.
// Otherwise put it back into revision workflow
if ($revisionok == $revisionTotal) {
$newStatus=S_RELEASED; $newStatus=S_RELEASED;
if ($content->finishRevision($user, $newStatus, 'Finished revision workflow', getMLText("automatic_status_update"))) { if ($content->finishRevision($user, $newStatus, 'Finished revision workflow', getMLText("automatic_status_update"))) {
if(!$this->callHook('finishReviseDocument', $content)) { if(!$this->callHook('finishReviseDocument', $content)) {
} }
} }
} elseif (($revisionok + $revisionnotok) == $revisionTotal) {
$newStatus=S_NEEDS_CORRECTION;
// if ($content->finishRevision($user, $newStatus, 'Finished revision workflow', getMLText("automatic_status_update"))) {
if(!$content->setStatus($newStatus,$comment,$user)) {
$this->error = 1;
$this->errormsg = "revision_update_failed";
return false;
}
} else { } else {
$newStatus=S_IN_REVISION; $newStatus=S_IN_REVISION;
if(!$content->setStatus($newStatus,$comment,$user)) { if(!$content->setStatus($newStatus,$comment,$user)) {

View File

@ -186,6 +186,8 @@ class Settings { /* {{{ */
var $_enableAcknowledgeWorkflow = true; var $_enableAcknowledgeWorkflow = true;
// enable/disable revision workflow // enable/disable revision workflow
var $_enableRevisionWorkflow = true; var $_enableRevisionWorkflow = true;
// enable/disable revision on vote reject
var $_enableRevisionOnVoteReject = true;
// Allow to set just a reviewer in tradional workflow // Allow to set just a reviewer in tradional workflow
var $_allowReviewerOnly = true; var $_allowReviewerOnly = true;
// enable/disable log system // enable/disable log system
@ -649,6 +651,7 @@ class Settings { /* {{{ */
$this->_workflowMode = strval($tab["workflowMode"]); $this->_workflowMode = strval($tab["workflowMode"]);
$this->_enableAcknowledgeWorkflow = strval($tab["enableAcknowledgeWorkflow"]); $this->_enableAcknowledgeWorkflow = strval($tab["enableAcknowledgeWorkflow"]);
$this->_enableRevisionWorkflow = strval($tab["enableRevisionWorkflow"]); $this->_enableRevisionWorkflow = strval($tab["enableRevisionWorkflow"]);
$this->_enableRevisionOnVoteReject = strval($tab["enableRevisionOnVoteReject"]);
$this->_allowReviewerOnly = Settings::boolval($tab["allowReviewerOnly"]); $this->_allowReviewerOnly = Settings::boolval($tab["allowReviewerOnly"]);
$this->_enableVersionDeletion = Settings::boolval($tab["enableVersionDeletion"]); $this->_enableVersionDeletion = Settings::boolval($tab["enableVersionDeletion"]);
$this->_enableVersionModification = Settings::boolval($tab["enableVersionModification"]); $this->_enableVersionModification = Settings::boolval($tab["enableVersionModification"]);
@ -965,6 +968,7 @@ class Settings { /* {{{ */
$this->setXMLAttributValue($node, "workflowMode", $this->_workflowMode); $this->setXMLAttributValue($node, "workflowMode", $this->_workflowMode);
$this->setXMLAttributValue($node, "enableAcknowledgeWorkflow", $this->_enableAcknowledgeWorkflow); $this->setXMLAttributValue($node, "enableAcknowledgeWorkflow", $this->_enableAcknowledgeWorkflow);
$this->setXMLAttributValue($node, "enableRevisionWorkflow", $this->_enableRevisionWorkflow); $this->setXMLAttributValue($node, "enableRevisionWorkflow", $this->_enableRevisionWorkflow);
$this->setXMLAttributValue($node, "enableRevisionOnVoteReject", $this->_enableRevisionOnVoteReject);
$this->setXMLAttributValue($node, "allowReviewerOnly", $this->_allowReviewerOnly); $this->setXMLAttributValue($node, "allowReviewerOnly", $this->_allowReviewerOnly);
$this->setXMLAttributValue($node, "enableVersionDeletion", $this->_enableVersionDeletion); $this->setXMLAttributValue($node, "enableVersionDeletion", $this->_enableVersionDeletion);
$this->setXMLAttributValue($node, "enableVersionModification", $this->_enableVersionModification); $this->setXMLAttributValue($node, "enableVersionModification", $this->_enableVersionModification);

View File

@ -92,6 +92,7 @@ if ($_POST["revisionType"] == "grp") {
} }
$controller->setParam('group', $group); $controller->setParam('group', $group);
$controller->setParam('comment', $_POST["comment"]); $controller->setParam('comment', $_POST["comment"]);
$controller->setParam('onevotereject', $settins->_enableRevisionOnVoteReject);
if(!$controller->run()) { if(!$controller->run()) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($controller->getErrorMsg())); UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($controller->getErrorMsg()));
} }

View File

@ -180,6 +180,7 @@ if ($action == "saveSettings")
$settings->_workflowMode = $_POST["workflowMode"]; $settings->_workflowMode = $_POST["workflowMode"];
$settings->_enableAcknowledgeWorkflow = getBoolValue("enableAcknowledgeWorkflow"); $settings->_enableAcknowledgeWorkflow = getBoolValue("enableAcknowledgeWorkflow");
$settings->_enableRevisionWorkflow = getBoolValue("enableRevisionWorkflow"); $settings->_enableRevisionWorkflow = getBoolValue("enableRevisionWorkflow");
$settings->_enableRevisionOnVoteReject = getBoolValue("enableRevisionOnVoteReject");
$settings->_allowReviewerOnly = getBoolValue("allowReviewerOnly"); $settings->_allowReviewerOnly = getBoolValue("allowReviewerOnly");
$settings->_enableAdminRevApp = getBoolValue("enableAdminRevApp"); $settings->_enableAdminRevApp = getBoolValue("enableAdminRevApp");
$settings->_enableOwnerRevApp = getBoolValue("enableOwnerRevApp"); $settings->_enableOwnerRevApp = getBoolValue("enableOwnerRevApp");

View File

@ -678,6 +678,10 @@ if(!is_writeable($settings->_configFilePath)) {
<td><?php printMLText("settings_enableRevisionWorkflow");?>:</td> <td><?php printMLText("settings_enableRevisionWorkflow");?>:</td>
<td><input name="enableRevisionWorkflow" type="checkbox" <?php if ($settings->_enableRevisionWorkflow) echo "checked" ?> /></td> <td><input name="enableRevisionWorkflow" type="checkbox" <?php if ($settings->_enableRevisionWorkflow) echo "checked" ?> /></td>
</tr> </tr>
<tr title="<?php printMLText("settings_enableRevisionOnVoteReject_desc");?>">
<td><?php printMLText("settings_enableRevisionOnVoteReject");?>:</td>
<td><input name="enableRevisionOnVoteReject" type="checkbox" <?php if ($settings->_enableRevisionOnVoteReject) echo "checked" ?> /></td>
</tr>
<tr title="<?php printMLText("settings_versioningFileName_desc");?>"> <tr title="<?php printMLText("settings_versioningFileName_desc");?>">
<td><?php printMLText("settings_versioningFileName");?>:</td> <td><?php printMLText("settings_versioningFileName");?>:</td>
<td><?php $this->showTextField("versioningFileName", $settings->_versioningFileName); ?></td> <td><?php $this->showTextField("versioningFileName", $settings->_versioningFileName); ?></td>