mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-06-18 02:59:27 +00:00
rejecting a revision will neccesarily put document in need correction status
This commit is contained in:
parent
31d3d491b5
commit
9b2eecca0e
|
@ -33,6 +33,13 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common {
|
|||
$group = $this->params['group'];
|
||||
$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 */
|
||||
$docname = $document->getName();
|
||||
$documentid = $document->getID();
|
||||
|
@ -63,7 +70,7 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common {
|
|||
*/
|
||||
$result = $this->callHook('reviseUpdateDocumentStatus', $content);
|
||||
if($result === null) {
|
||||
if ($revisionstatus == -1){
|
||||
if ($onevotereject && $revisionstatus == -1){
|
||||
if(!$content->setStatus(S_NEEDS_CORRECTION,$comment,$user)) {
|
||||
$this->error = 1;
|
||||
$this->errormsg = "revision_update_failed";
|
||||
|
@ -76,24 +83,38 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common {
|
|||
$this->errormsg = "cannot_retrieve_revision_snapshot";
|
||||
return false;
|
||||
}
|
||||
$revisionCT = 0;
|
||||
$revisionok = 0;
|
||||
$revisionnotok = 0;
|
||||
$revisionTotal = 0;
|
||||
foreach ($docRevisionStatus as $drstat) {
|
||||
if ($drstat["status"] == 1) {
|
||||
$revisionCT++;
|
||||
$revisionok++;
|
||||
}
|
||||
if ($drstat["status"] == -1) {
|
||||
$revisionnotok++;
|
||||
}
|
||||
if ($drstat["status"] != -2) {
|
||||
$revisionTotal++;
|
||||
}
|
||||
}
|
||||
// If all revisions have been received and there are no rejections,
|
||||
// then release the document otherwise put it back into revision workflow
|
||||
if ($revisionCT == $revisionTotal) {
|
||||
// If all revisions have been done and there are no rejections,
|
||||
// then release the document. If all revisions have been done but some
|
||||
// of them were rejections then documents needs correction.
|
||||
// Otherwise put it back into revision workflow
|
||||
if ($revisionok == $revisionTotal) {
|
||||
$newStatus=S_RELEASED;
|
||||
if ($content->finishRevision($user, $newStatus, 'Finished revision workflow', getMLText("automatic_status_update"))) {
|
||||
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 {
|
||||
$newStatus=S_IN_REVISION;
|
||||
if(!$content->setStatus($newStatus,$comment,$user)) {
|
||||
|
|
|
@ -186,6 +186,8 @@ class Settings { /* {{{ */
|
|||
var $_enableAcknowledgeWorkflow = true;
|
||||
// enable/disable revision workflow
|
||||
var $_enableRevisionWorkflow = true;
|
||||
// enable/disable revision on vote reject
|
||||
var $_enableRevisionOnVoteReject = true;
|
||||
// Allow to set just a reviewer in tradional workflow
|
||||
var $_allowReviewerOnly = true;
|
||||
// enable/disable log system
|
||||
|
@ -649,6 +651,7 @@ class Settings { /* {{{ */
|
|||
$this->_workflowMode = strval($tab["workflowMode"]);
|
||||
$this->_enableAcknowledgeWorkflow = strval($tab["enableAcknowledgeWorkflow"]);
|
||||
$this->_enableRevisionWorkflow = strval($tab["enableRevisionWorkflow"]);
|
||||
$this->_enableRevisionOnVoteReject = strval($tab["enableRevisionOnVoteReject"]);
|
||||
$this->_allowReviewerOnly = Settings::boolval($tab["allowReviewerOnly"]);
|
||||
$this->_enableVersionDeletion = Settings::boolval($tab["enableVersionDeletion"]);
|
||||
$this->_enableVersionModification = Settings::boolval($tab["enableVersionModification"]);
|
||||
|
@ -965,6 +968,7 @@ class Settings { /* {{{ */
|
|||
$this->setXMLAttributValue($node, "workflowMode", $this->_workflowMode);
|
||||
$this->setXMLAttributValue($node, "enableAcknowledgeWorkflow", $this->_enableAcknowledgeWorkflow);
|
||||
$this->setXMLAttributValue($node, "enableRevisionWorkflow", $this->_enableRevisionWorkflow);
|
||||
$this->setXMLAttributValue($node, "enableRevisionOnVoteReject", $this->_enableRevisionOnVoteReject);
|
||||
$this->setXMLAttributValue($node, "allowReviewerOnly", $this->_allowReviewerOnly);
|
||||
$this->setXMLAttributValue($node, "enableVersionDeletion", $this->_enableVersionDeletion);
|
||||
$this->setXMLAttributValue($node, "enableVersionModification", $this->_enableVersionModification);
|
||||
|
|
|
@ -92,6 +92,7 @@ if ($_POST["revisionType"] == "grp") {
|
|||
}
|
||||
$controller->setParam('group', $group);
|
||||
$controller->setParam('comment', $_POST["comment"]);
|
||||
$controller->setParam('onevotereject', $settins->_enableRevisionOnVoteReject);
|
||||
if(!$controller->run()) {
|
||||
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($controller->getErrorMsg()));
|
||||
}
|
||||
|
|
|
@ -180,6 +180,7 @@ if ($action == "saveSettings")
|
|||
$settings->_workflowMode = $_POST["workflowMode"];
|
||||
$settings->_enableAcknowledgeWorkflow = getBoolValue("enableAcknowledgeWorkflow");
|
||||
$settings->_enableRevisionWorkflow = getBoolValue("enableRevisionWorkflow");
|
||||
$settings->_enableRevisionOnVoteReject = getBoolValue("enableRevisionOnVoteReject");
|
||||
$settings->_allowReviewerOnly = getBoolValue("allowReviewerOnly");
|
||||
$settings->_enableAdminRevApp = getBoolValue("enableAdminRevApp");
|
||||
$settings->_enableOwnerRevApp = getBoolValue("enableOwnerRevApp");
|
||||
|
|
|
@ -678,6 +678,10 @@ if(!is_writeable($settings->_configFilePath)) {
|
|||
<td><?php printMLText("settings_enableRevisionWorkflow");?>:</td>
|
||||
<td><input name="enableRevisionWorkflow" type="checkbox" <?php if ($settings->_enableRevisionWorkflow) echo "checked" ?> /></td>
|
||||
</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");?>">
|
||||
<td><?php printMLText("settings_versioningFileName");?>:</td>
|
||||
<td><?php $this->showTextField("versioningFileName", $settings->_versioningFileName); ?></td>
|
||||
|
|
Loading…
Reference in New Issue
Block a user