Merge branch 'seeddms-4.3.x' into seeddms-5.0.x

Conflicts:
	CHANGELOG
	Makefile
	SeedDMS_Core/Core/inc.ClassDMS.php
	SeedDMS_Core/package.xml
	inc/inc.Utils.php
	inc/inc.Version.php
	install/install.php
	op/op.ApproveDocument.php
	op/op.Login.php
	op/op.RemoveDocumentLink.php
	op/op.ReviewDocument.php
	out/out.SetReviewersApprovers.php
	views/bootstrap/class.Bootstrap.php
This commit is contained in:
Uwe Steinmann 2015-06-30 07:05:27 +02:00
commit 463e94ee8a
9 changed files with 99 additions and 44 deletions

View File

@ -1,3 +1,18 @@
--------------------------------------------------------------------------------
Changes in version 4.3.19
--------------------------------------------------------------------------------
- end date in search form actually ends at the end of the day
- allow context sensitive help
- document chooser shows docs in root folder again
- fixed regression from 4.3.18. Documents can not be approved if
review is still pending
- polish page for document version details, add review/approval log
- take out remaining link to old version info file
- new configuration parameter for overriding the mimetype delivered
by the browser (Closes #195)
- new option -c to force recreation of index (Closes #219)
- username can be passed to utils/adddoc.php (Closes #214)
--------------------------------------------------------------------------------
Changes in version 4.3.18
--------------------------------------------------------------------------------
@ -5,7 +20,9 @@
- search result can be restricted to folders or documents only
- documents still in review can still be reviewed even if the workflow
mode changes to traditional_only_approval
- approvals can be submitted, even if document was released/rejected
- check for duplicate content on document/folder check page
- open tab on ViewDocument page as specified in URL
--------------------------------------------------------------------------------
Changes in version 4.3.17
@ -19,6 +36,7 @@
- fix take over of reviewers/approvers from previos version
- fix calculation of quota in user list
- do not show hidden users in select box of search form
- notifier can be set when new document is uploaded
--------------------------------------------------------------------------------
Changes in version 4.3.16

View File

@ -2479,6 +2479,8 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
if (is_bool($res) && !$res)
return false;
unset($this->_status);
return true;
} /* }}} */
@ -2680,7 +2682,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
$reviewID = $db->getInsertID();
}
else {
$reviewID = isset($indstatus["reviewID"]) ? $ $indstatus["reviewID"] : NULL;
$reviewID = isset($indstatus["reviewID"]) ? $indstatus["reviewID"] : NULL;
}
$queryStr = "INSERT INTO `tblDocumentReviewLog` (`reviewID`, `status`, `comment`, `date`, `userID`) ".

View File

@ -832,5 +832,22 @@ no changes
clean workflow log when a document version was deleted
</notes>
</release>
<release>
<date>2015-06-09</date>
<time>11:26:18</time>
<version>
<release>4.3.18</release>
<api>4.3.18</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://opensource.org/licenses/gpl-license">GPL License</license>
<notes>
- add optional paramter $msg to SeedDMS_Core_DocumentContent::verifyStatus()
- add method SeedDMS_Core_DMS::getDuplicateDocumentContent()
</notes>
</release>
</changelog>
</package>

View File

@ -519,7 +519,9 @@ class Settings { /* {{{ */
$this->_maxExecutionTime = ini_get("max_execution_time");
// XML Path: /configuration/system/advanced/converters
$converters = $xml->xpath('/configuration/advanced/converters/converter');
$converters = $xml->xpath('/configuration/advanced/converters[@target="fulltext"]/converter');
if(!$converters)
$converters = $xml->xpath('/configuration/advanced/converters/converter');
$this->_converters = array();
foreach($converters as $converter) {
$tab = $converter->attributes();

View File

@ -463,7 +463,7 @@ foreach ($pGrpApp as $p) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied"));
break;
case -3:
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("reviewer_already_assigned"));
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("approver_already_assigned"));
break;
case -4:
// email error
@ -520,7 +520,7 @@ if (count($approvalIndex["g"]) > 0) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied"));
break;
case -3:
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("reviewer_already_removed"));
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("approver_already_removed"));
break;
case -4:
// email error

View File

@ -57,7 +57,7 @@ if(!$settings->_enableVersionModification) {
}
$overallStatus = $content->getStatus();
if ($overallStatus["status"]==S_REJECTED || $overallStatus["status"]==S_OBSOLETE ) {
if ($overallStatus["status"]!=S_DRAFT_REV && $overallStatus["status"]!=S_DRAFT_APP) {
UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("cannot_assign_invalid_state"));
}

View File

@ -882,7 +882,7 @@ $(document).ready(function () {
print "<input type=\"hidden\" id=\"docid".$formName."\" name=\"docid\" value=\"\">";
print "<div class=\"input-append\">\n";
print "<input type=\"text\" id=\"choosedocsearch\" data-target=\"docid".$formName."\" data-provide=\"typeahead\" name=\"docname".$formName."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" />";
print "<a data-target=\"#docChooser".$formName."\" href=\"out.DocumentChooser.php?form=".$formName."&folderid=".$this->params['rootfolderid']."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".getMLText("document")."…</a>\n";
print "<a data-target=\"#docChooser".$formName."\" href=\"../out/out.DocumentChooser.php?form=".$formName."&folderid=".$this->params['rootfolderid']."\" role=\"button\" class=\"btn\" data-toggle=\"modal\">".getMLText("document")."…</a>\n";
print "</div>\n";
?>
<div class="modal hide" id="docChooser<?php echo $formName ?>" tabindex="-1" role="dialog" aria-labelledby="docChooserLabel" aria-hidden="true">

View File

@ -51,7 +51,7 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style {
$this->contentHeading(getMLText("change_assignments"));
// Retrieve a list of all users and groups that have review / approve privileges.
$docAccess = $folder->getReadAccessList($enableadminrevapp, $enableownerrevapp);
$docAccess = $document->getReadAccessList($enableadminrevapp, $enableownerrevapp);
// Retrieve list of currently assigned reviewers and approvers, along with
// their latest status.

View File

@ -245,14 +245,18 @@ function checkForm()
<?php
$tmp = array();
foreach($reviewStatus as $r) {
$mandatory=false;
if($r['type'] == 0 && $res) {
foreach ($res as $rr)
if ($rr['reviewerUserID']==$r['required']) {
$mandatory=true;
}
if(!$mandatory)
if($r['type'] == 0) {
if($res) {
$mandatory=false;
foreach ($res as $rr)
if ($rr['reviewerUserID']==$r['required']) {
$mandatory=true;
}
if(!$mandatory)
$tmp[] = $r['required'];
} else {
$tmp[] = $r['required'];
}
}
}
if($tmp) {
@ -294,24 +298,9 @@ function checkForm()
<td>
<div class="cbSelectTitle"><?php printMLText("groups");?>:</div>
</td>
<td>
<td>
<select id="GrpReviewer" class="chzn-select span9" name="grpReviewers[]" multiple="multiple" data-placeholder="<?php printMLText('select_grp_reviewers'); ?>" data-no_results_text="<?php printMLText('unknown_group'); ?>">
<?php
$tmp = array();
foreach($reviewStatus as $r) {
$mandatory=false;
if($r['type'] == 1 && $res) {
foreach ($res as $rr)
if ($rr['reviewerGroupID']==$r['required']) {
$mandatory=true;
}
if(!$mandatory)
$tmp[] = $r['required'];
}
}
if($tmp) {
$this->__takeOverButton("GrpReviewer", $tmp);
}
foreach ($docAccess["groups"] as $grp) {
$mandatory=false;
@ -323,6 +312,25 @@ function checkForm()
?>
</select>
<?php
$tmp = array();
foreach($reviewStatus as $r) {
if($r['type'] == 1) {
if($res) {
$mandatory=false;
foreach ($res as $rr)
if ($rr['reviewerGroupID']==$r['required']) {
$mandatory=true;
}
if(!$mandatory)
$tmp[] = $r['required'];
} else {
$tmp[] = $r['required'];
}
}
}
if($tmp) {
$this->__takeOverButton("GrpReviewer", $tmp);
}
/* List all mandatory groups of reviewers */
if($res) {
$tmp = array();
@ -384,14 +392,18 @@ function checkForm()
<?php
$tmp = array();
foreach($approvalStatus as $r) {
$mandatory=false;
if($r['type'] == 0 && $res) {
foreach ($res as $rr)
if ($rr['approverUserID']==$r['required']) {
$mandatory=true;
}
if(!$mandatory)
if($r['type'] == 0) {
if($res) {
$mandatory=false;
foreach ($res as $rr)
if ($rr['approverUserID']==$r['required']) {
$mandatory=true;
}
if(!$mandatory)
$tmp[] = $r['required'];
} else {
$tmp[] = $r['required'];
}
}
}
if($tmp) {
@ -450,14 +462,18 @@ function checkForm()
<?php
$tmp = array();
foreach($approvalStatus as $r) {
$mandatory=false;
if($r['type'] == 1 && $res) {
foreach ($res as $rr)
if ($rr['approverGroupID']==$r['required']) {
$mandatory=true;
}
if(!$mandatory)
if($r['type'] == 1) {
if($res) {
$mandatory=false;
foreach ($res as $rr)
if ($rr['approverGroupID']==$r['required']) {
$mandatory=true;
}
if(!$mandatory)
$tmp[] = $r['required'];
} else {
$tmp[] = $r['required'];
}
}
}
if($tmp) {