mirror of
				https://git.code.sf.net/p/seeddms/code
				synced 2025-10-31 13:18:06 +00:00 
			
		
		
		
	Merge branch 'seeddms-5.1.x' into seeddms-6.0.x
This commit is contained in:
		
						commit
						9e4b80e25b
					
				|  | @ -188,6 +188,11 @@ | |||
| - remove empty lines at end of view/bootstrap/class.*.php files (Closes #329) | ||||
| - make sure contentDir ends with DIRECTORY_SEPARATOR (Closes #323) | ||||
| - minor improvements of installation | ||||
| - better checking in out/*.php for allowed operation (e.g. EditOnline, | ||||
|   RemoveVersion, SetReviewersApprovers, ...) | ||||
| - SetReviewersApprovers checks for mandatory reviewers/approvers | ||||
| - reviewers/approvers can only be modified by users with unrestricted access | ||||
|   and as long as no reviewer/approver has reviewed/approved the document | ||||
| 
 | ||||
| -------------------------------------------------------------------------------- | ||||
|                      Changes in version 4.3.35 | ||||
|  |  | |||
|  | @ -62,14 +62,16 @@ class SeedDMS_AccessOperation { | |||
| 	 * document may delete versions. The admin may even delete a version | ||||
| 	 * even if is disallowed in the settings. | ||||
| 	 */ | ||||
| 	function mayEditVersion($document) { /* {{{ */ | ||||
| 	function mayEditVersion($document, $vno=0) { /* {{{ */ | ||||
| 		if(get_class($document) == $this->dms->getClassname('document')) { | ||||
| 			if($latestContent = $document->getLatestContent()) { | ||||
| 				if (!isset($this->settings->_editOnlineFileTypes) || !is_array($this->settings->_editOnlineFileTypes) || !in_array(strtolower($latestContent->getFileType()), $this->settings->_editOnlineFileTypes)) | ||||
| 					return false; | ||||
| 				if ($document->getAccessMode($this->user) == M_ALL || $this->user->isAdmin()) { | ||||
| 					return true; | ||||
| 				} | ||||
| 			if($vno) | ||||
| 				$version = $document->getContentByVersion($vno); | ||||
| 			else | ||||
| 				$version = $document->getLatestContent(); | ||||
| 			if (!isset($this->settings->_editOnlineFileTypes) || !is_array($this->settings->_editOnlineFileTypes) || !in_array(strtolower($version->getFileType()), $this->settings->_editOnlineFileTypes)) | ||||
| 				return false; | ||||
| 			if ($document->getAccessMode($this->user) == M_ALL || $this->user->isAdmin()) { | ||||
| 				return true; | ||||
| 			} | ||||
| 		} | ||||
| 		return false; | ||||
|  | @ -121,15 +123,28 @@ class SeedDMS_AccessOperation { | |||
| 	 * | ||||
| 	 * This check can only be done for documents. Overwriting the document | ||||
| 	 * reviewers/approvers is only allowed if version modification is turned on | ||||
| 	 * in the settings and the document is in 'draft review' status.  The | ||||
| 	 * admin may even set reviewers/approvers if is disallowed in the | ||||
| 	 * in the settings and the document has not been reviewed/approved by any | ||||
| 	 * user/group already. | ||||
| 	 * The admin may even set reviewers/approvers if is disallowed in the | ||||
| 	 * settings. | ||||
| 	 */ | ||||
| 	function maySetReviewersApprovers($document) { /* {{{ */ | ||||
| 		if(get_class($document) == $this->dms->getClassname('document')) { | ||||
| 			if($latestContent = $document->getLatestContent()) { | ||||
| 				$status = $latestContent->getStatus(); | ||||
| 				if ((($this->settings->_enableVersionModification && ($document->getAccessMode($this->user) == M_ALL)) || $this->user->isAdmin()) && ($status['status']==S_DRAFT || $status["status"]==S_DRAFT_REV || $status["status"]==S_DRAFT_APP && $this->settings->_workflowMode == 'traditional_only_approval')) { | ||||
| 				$reviewstatus = $latestContent->getReviewStatus(); | ||||
| 				$hasreview = false; | ||||
| 				foreach($reviewstatus as $r) { | ||||
| 					if($r['status'] == 1 || $r['status'] == -1) | ||||
| 						$hasreview = true; | ||||
| 				} | ||||
| 				$approvalstatus = $latestContent->getApprovalStatus(); | ||||
| 				$hasapproval = false; | ||||
| 				foreach($approvalstatus as $r) { | ||||
| 					if($r['status'] == 1 || $r['status'] == -1) | ||||
| 						$hasapproval = true; | ||||
| 				} | ||||
| 				if ((($this->settings->_enableVersionModification && ($this->obj->getAccessMode($this->user) == M_ALL)) || $this->user->isAdmin()) && (($status["status"]==S_DRAFT_REV && !$hasreview) || ($status["status"]==S_DRAFT_APP && !$hasreview && !$hasapproval))) { | ||||
| 					return true; | ||||
| 				} | ||||
| 			} | ||||
|  |  | |||
|  | @ -62,6 +62,7 @@ if ($overallStatus["status"]==S_REJECTED || $overallStatus["status"]==S_OBSOLETE | |||
| } | ||||
| 
 | ||||
| $folder = $document->getFolder(); | ||||
| $owner = $document->getOwner(); | ||||
| 
 | ||||
| // Retrieve a list of all users and groups that have review / approve
 | ||||
| // privileges.
 | ||||
|  | @ -118,6 +119,18 @@ if (isset($_POST["grpIndReviewers"])) { | |||
| 	} | ||||
| } | ||||
| $pGrpRev = (isset($_POST["grpReviewers"]) ? array_values(array_unique($_POST["grpReviewers"])) : array()); | ||||
| if($user->getID() != $owner->getID()) { | ||||
| 	$res=$owner->getMandatoryReviewers(); | ||||
| 	if($user->isAdmin()) | ||||
| 		$res = array(); | ||||
| } else | ||||
| 	$res=$user->getMandatoryReviewers(); | ||||
| foreach ($res as $r) { | ||||
| 	if(!in_array($r['reviewerUserID'], $pIndRev)) | ||||
| 		$pIndRev[] = $r['reviewerUserID']; | ||||
| 	if(!in_array($r['reviewerGroupID'], $pGrpRev)) | ||||
| 		$pGrpRev[] = $r['reviewerGroupID']; | ||||
| } | ||||
| foreach ($pIndRev as $p) { | ||||
| 	if (is_numeric($p)) { | ||||
| 		if (isset($accessIndex["i"][$p])) { | ||||
|  | @ -350,6 +363,18 @@ if (isset($_POST["grpIndApprovers"])) { | |||
| 	} | ||||
| } | ||||
| $pGrpApp = (isset($_POST["grpApprovers"]) ? array_values(array_unique($_POST["grpApprovers"])) : array()); | ||||
| if($user->getID() != $owner->getID()) { | ||||
| 	$res=$owner->getMandatoryApprovers(); | ||||
| 	if($user->isAdmin()) | ||||
| 		$res = array(); | ||||
| } else | ||||
| 	$res=$user->getMandatoryApprovers(); | ||||
| foreach ($res as $r) { | ||||
| 	if(!in_array($r['approverUserID'], $pIndApp)) | ||||
| 		$pIndApp[] = $r['approverUserID']; | ||||
| 	if(!in_array($r['approverGroupID'], $pGrpApp)) | ||||
| 		$pGrpApp[] = $r['approverGroupID']; | ||||
| } | ||||
| foreach ($pIndApp as $p) { | ||||
| 	if (is_numeric($p)) { | ||||
| 		if (isset($accessIndex["i"][$p])) { | ||||
|  |  | |||
|  | @ -48,6 +48,9 @@ $folder = $document->getFolder(); | |||
| 
 | ||||
| /* Create object for checking access to certain operations */ | ||||
| $accessop = new SeedDMS_AccessOperation($dms, $user, $settings); | ||||
| if(!$accessop->mayEditAttributes($document)) { | ||||
| 	UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); | ||||
| } | ||||
| 
 | ||||
| $attrdefs = $dms->getAllAttributeDefinitions(array(SeedDMS_Core_AttributeDefinition::objtype_documentcontent, SeedDMS_Core_AttributeDefinition::objtype_all)); | ||||
| 
 | ||||
|  |  | |||
|  | @ -53,6 +53,9 @@ $folder = $document->getFolder(); | |||
| 
 | ||||
| /* Create object for checking access to certain operations */ | ||||
| $accessop = new SeedDMS_AccessOperation($dms, $user, $settings); | ||||
| if(!$accessop->mayEditComment($document)) { | ||||
| 	UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); | ||||
| } | ||||
| 
 | ||||
| $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); | ||||
| $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); | ||||
|  |  | |||
|  | @ -58,6 +58,7 @@ if(isset($_GET["version"])) { | |||
| 	$lc = $document->getLatestContent(); | ||||
| 
 | ||||
| }	else { | ||||
| 	$version = 0; | ||||
| 	$content = $document->getLatestContent(); | ||||
| 	$lc = $document->getLatestContent(); | ||||
| } | ||||
|  | @ -77,6 +78,12 @@ if (!isset($settings->_editOnlineFileTypes) || !is_array($settings->_editOnlineF | |||
| } | ||||
|  */ | ||||
| 
 | ||||
| /* Create object for checking access to certain operations */ | ||||
| $accessop = new SeedDMS_AccessOperation($dms, $user, $settings); | ||||
| if(!$accessop->mayEditVersion($document, $version)) { | ||||
| 	UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); | ||||
| } | ||||
| 
 | ||||
| $folder = $document->getFolder(); | ||||
| 
 | ||||
| if($view) { | ||||
|  |  | |||
|  | @ -52,17 +52,13 @@ if (!is_object($content)) { | |||
| 	UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("invalid_version")); | ||||
| } | ||||
| 
 | ||||
| $overallStatus = $content->getStatus(); | ||||
| 
 | ||||
| // status change control
 | ||||
| if ($overallStatus["status"] == S_REJECTED || $overallStatus["status"] == S_EXPIRED || $overallStatus["status"] == S_DRAFT_REV || $overallStatus["status"] == S_DRAFT_APP ) { | ||||
| 	UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("cannot_change_final_states")); | ||||
| } | ||||
| 
 | ||||
| $folder = $document->getFolder(); | ||||
| 
 | ||||
| /* Create object for checking access to certain operations */ | ||||
| $accessop = new SeedDMS_AccessOperation($dms, $user, $settings); | ||||
| if(!$accessop->mayOverwriteStatus($document)) { | ||||
| 	UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("cannot_change_final_states")); | ||||
| } | ||||
| 
 | ||||
| $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); | ||||
| $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); | ||||
|  |  | |||
|  | @ -62,6 +62,9 @@ $folder = $document->getFolder(); | |||
| 
 | ||||
| /* Create object for checking access to certain operations */ | ||||
| $accessop = new SeedDMS_AccessOperation($dms, $user, $settings); | ||||
| if(!$accessop->mayRemoveVersion($document)) { | ||||
| 	UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("access_denied")); | ||||
| } | ||||
| 
 | ||||
| $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); | ||||
| $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); | ||||
|  |  | |||
|  | @ -51,18 +51,14 @@ if (!is_object($content)) { | |||
| 	UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("invalid_version")); | ||||
| } | ||||
| 
 | ||||
| if(!$settings->_enableVersionModification) { | ||||
| 	UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("no_version_modification")); | ||||
| } | ||||
| $folder = $document->getFolder(); | ||||
| 
 | ||||
| /* Create object for checking access to certain operations */ | ||||
| $accessop = new SeedDMS_AccessOperation($dms, $user, $settings); | ||||
| if (!$accessop->maySetReviewersApprovers($document)) { | ||||
| 	UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("cannot_assign_invalid_state")); | ||||
| if(!$accessop->maySetReviewersApprovers($document)) { | ||||
| 	UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("no_version_modification")); | ||||
| } | ||||
| 
 | ||||
| $folder = $document->getFolder(); | ||||
| 
 | ||||
| $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); | ||||
| $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); | ||||
| if($view) { | ||||
|  |  | |||
|  | @ -53,6 +53,9 @@ $folder = $document->getFolder(); | |||
| 
 | ||||
| /* Create object for checking access to certain operations */ | ||||
| $accessop = new SeedDMS_AccessOperation($dms, $user, $settings); | ||||
| if(!$accessop->maySetWorkflow($document)) { | ||||
| 	UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); | ||||
| } | ||||
| 
 | ||||
| $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); | ||||
| $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); | ||||
|  |  | |||
|  | @ -39,17 +39,46 @@ class SeedDMS_View_Help extends SeedDMS_Bootstrap_Style { | |||
| 		$this->htmlStartPage(getMLText("help")); | ||||
| 		$this->globalNavigation(); | ||||
| 		$this->contentStart(); | ||||
| 		$this->pageNavigation(getMLText("help").": ".getMLText('help_'.strtolower($context), array(), $context), ""); | ||||
| 
 | ||||
| 		$this->contentContainerStart('help'); | ||||
| //		$this->pageNavigation(getMLText("help").": ".getMLText('help_'.strtolower($context), array(), $context), "");
 | ||||
| ?>
 | ||||
| <div class="row-fluid"> | ||||
| <div class="span4"> | ||||
| 	<legend>Table of contents</legend> | ||||
| <?php | ||||
| 		$d = dir("../languages/".$this->params['session']->getLanguage()."/help"); | ||||
| 		echo "<ul>"; | ||||
| 		while (false !== ($entry = $d->read())) { | ||||
| 			if($entry != '..' && $entry != '.') { | ||||
| 				$path_parts = pathinfo($dir."/".$entry); | ||||
| 				if($path_parts['extension'] == 'html' || $path_parts['extension'] == 'md') { | ||||
| 					echo "<li><a href=\"../out/out.Help.php?context=".$path_parts['filename']."\">".getMLText('help_'.$path_parts['filename'], array(), $path_parts['filename'])."</a></li>"; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		echo "</ul>"; | ||||
| ?>
 | ||||
| </div> | ||||
| <div class="span8"> | ||||
| <legend><?php printMLText('help_'.strtolower($context), array(), $context); ?></legend>
 | ||||
| <?php | ||||
| 
 | ||||
| 		$helpfile = "../languages/".$this->params['session']->getLanguage()."/help/".$context.".html"; | ||||
| 		if(file_exists($helpfile)) | ||||
| 			readfile($helpfile); | ||||
| 		else | ||||
| 		else { | ||||
| 			$helpfile = "../languages/".$this->params['session']->getLanguage()."/help/".$context.".md"; | ||||
| 			if(file_exists($helpfile)) { | ||||
| 				require_once('parsedown/Parsedown.php'); | ||||
| 				$Parsedown = new Parsedown(); | ||||
| 				echo $Parsedown->text(file_get_contents($helpfile)); | ||||
| 			} else | ||||
| 			readfile("../languages/".$this->params['session']->getLanguage()."/help.htm"); | ||||
| 		} | ||||
| 
 | ||||
| 		$this->contentContainerEnd(); | ||||
| ?>
 | ||||
| </div> | ||||
| </div> | ||||
| <?php | ||||
| 		$this->contentEnd(); | ||||
| 		$this->htmlEndPage(); | ||||
| 	} /* }}} */ | ||||
|  |  | |||
|  | @ -43,6 +43,7 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
| 		$enableselfrevapp = $this->params['enableselfrevapp']; | ||||
| 
 | ||||
| 		$overallStatus = $content->getStatus(); | ||||
| 		$owner = $document->getOwner(); | ||||
| 
 | ||||
| 		$this->htmlStartPage(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName())))); | ||||
| 		$this->globalNavigation($folder); | ||||
|  | @ -92,7 +93,12 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
|   <select class="chzn-select span9" name="indReviewers[]" multiple="multiple" data-placeholder="<?php printMLText('select_ind_reviewers'); ?>" data-no_results_text="<?php printMLText('unknown_owner'); ?>"> | ||||
| <?php | ||||
| 
 | ||||
| 		$res=$user->getMandatoryReviewers(); | ||||
| 		if($user->getID() != $owner->getID()) { | ||||
| 			$res=$owner->getMandatoryReviewers(); | ||||
| 			if($user->isAdmin()) | ||||
| 				$res = array(); | ||||
| 		} else | ||||
| 			$res=$user->getMandatoryReviewers(); | ||||
| 		foreach ($docAccess["users"] as $usr) { | ||||
| 			$mandatory=false; | ||||
| 			foreach ($res as $r) if ($r['reviewerUserID']==$usr->getID()) $mandatory=true; | ||||
|  | @ -100,7 +106,7 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
| 			if ($mandatory){ | ||||
| 
 | ||||
| 				print "<option value=\"".$usr->getID()."\" disabled=\"disabled\">". htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName())." <".$usr->getEmail()."></option>"; | ||||
| 				print "<input id='revInd".$usr->getID()."' type='hidden' name='indReviewers[]' value='". $usr->getID() ."'>"; | ||||
| //				print "<input id='revInd".$usr->getID()."' type='hidden' name='indReviewers[]' value='". $usr->getID() ."'>";
 | ||||
| 
 | ||||
| 			} elseif (isset($reviewIndex["i"][$usr->getID()])) { | ||||
| 
 | ||||
|  | @ -134,6 +140,24 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
| ?>
 | ||||
|   </select> | ||||
| 
 | ||||
| <?php | ||||
| 			/* List all mandatory reviewers */ | ||||
| 			if($res) { | ||||
| 				$tmp = array(); | ||||
| 				foreach ($res as $r) { | ||||
| 					if($r['reviewerUserID'] > 0) { | ||||
| 						$u = $dms->getUser($r['reviewerUserID']); | ||||
| 						$tmp[] =  htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); | ||||
| 					} | ||||
| 				} | ||||
| 				if($tmp) { | ||||
| 					echo '<div class="mandatories"><span>'.getMLText('mandatory_reviewers').':</span> '; | ||||
| 					echo implode(', ', $tmp); | ||||
| 					echo "</div>\n"; | ||||
| 				} | ||||
| 			} | ||||
| ?>
 | ||||
| 
 | ||||
|   <div class="cbSelectTitle"><?php printMLText("groups")?>:</div>
 | ||||
|   <select class="chzn-select span9" name="grpReviewers[]" multiple="multiple" data-placeholder="<?php printMLText('select_grp_reviewers'); ?>" data-no_results_text="<?php printMLText('unknown_group'); ?>"> | ||||
| <?php | ||||
|  | @ -145,7 +169,7 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
| 			if ($mandatory){ | ||||
| 
 | ||||
| 				print "<option value=\"".$group->getID()."\" disabled='disabled'>".htmlspecialchars($group->getName())."</option>"; | ||||
| 				print "<input id='revGrp".$group->getID()."' type='hidden' name='grpReviewers[]' value='". $group->getID() ."' />"; | ||||
| //				print "<input id='revGrp".$group->getID()."' type='hidden' name='grpReviewers[]' value='". $group->getID() ."' />";
 | ||||
| 
 | ||||
| 			} elseif (isset($reviewIndex["g"][$group->getID()])) { | ||||
| 
 | ||||
|  | @ -165,8 +189,25 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
| 			} | ||||
| 		} | ||||
| ?>
 | ||||
|   </select> | ||||
| <?php } ?>
 | ||||
| 	</select> | ||||
| <?php | ||||
| 			/* List all mandatory groups of reviewers */ | ||||
| 			if($res) { | ||||
| 				$tmp = array(); | ||||
| 				foreach ($res as $r) { | ||||
| 					if($r['reviewerGroupID'] > 0) { | ||||
| 						$u = $dms->getGroup($r['reviewerGroupID']); | ||||
| 						$tmp[] =  htmlspecialchars($u->getName()); | ||||
| 					} | ||||
| 				} | ||||
| 				if($tmp) { | ||||
| 					echo '<div class="mandatories"><span>'.getMLText('mandatory_reviewergroups').':</span> '; | ||||
| 					echo implode(', ', $tmp); | ||||
| 					echo "</div>\n"; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| ?>
 | ||||
| 
 | ||||
| <?php $this->contentSubHeading(getMLText("update_approvers"));?>
 | ||||
| 
 | ||||
|  | @ -174,8 +215,12 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
|   <select class="chzn-select span9" name="indApprovers[]" multiple="multiple" data-placeholder="<?php printMLText('select_ind_approvers'); ?>" data-no_results_text="<?php printMLText('unknown_owner'); ?>"> | ||||
| <?php | ||||
| 
 | ||||
| 		$res=$user->getMandatoryApprovers(); | ||||
| 
 | ||||
| 		if($user->getID() != $owner->getID()) { | ||||
| 			$res=$owner->getMandatoryApprovers(); | ||||
| 			if($user->isAdmin()) | ||||
| 				$res = array(); | ||||
| 		} else | ||||
| 			$res=$user->getMandatoryApprovers(); | ||||
| 		foreach ($docAccess["users"] as $usr) { | ||||
| 
 | ||||
| 			$mandatory=false; | ||||
|  | @ -184,7 +229,7 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
| 			if ($mandatory){ | ||||
| 			 | ||||
| 				print "<option value='". $usr->getID() ."' disabled='disabled'>". htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName())." <".$usr->getEmail()."></option>"; | ||||
| 				print "<input id='appInd".$usr->getID()."' type='hidden' name='indApprovers[]' value='". $usr->getID() ."'>"; | ||||
| //				print "<input id='appInd".$usr->getID()."' type='hidden' name='indApprovers[]' value='". $usr->getID() ."'>";
 | ||||
| 
 | ||||
| 			} elseif (isset($approvalIndex["i"][$usr->getID()])) { | ||||
| 			 | ||||
|  | @ -206,7 +251,24 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
| 			} | ||||
| 		} | ||||
| ?>
 | ||||
|   </select> | ||||
| 	</select> | ||||
| <?php | ||||
| 		if($res) { | ||||
| 			$tmp = array(); | ||||
| 			foreach ($res as $r) { | ||||
| 				if($r['approverUserID'] > 0) { | ||||
| 					$u = $dms->getUser($r['approverUserID']); | ||||
| 					$tmp[] =  htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); | ||||
| 				} | ||||
| 			} | ||||
| 			if($tmp) { | ||||
| 				echo '<div class="mandatories"><span>'.getMLText('mandatory_approvers').':</span> '; | ||||
| 				echo implode(', ', $tmp); | ||||
| 				echo "</div>\n"; | ||||
| 			} | ||||
| 		} | ||||
| ?>
 | ||||
|   <div class="cbSelectTitle"><?php printMLText("groups")?>:</div>
 | ||||
| 
 | ||||
|   <div class="cbSelectTitle"><?php printMLText("indivіduals_in_groups")?>:</div>
 | ||||
|   <select class="chzn-select span9" name="grpIndApprovers[]" multiple="multiple" data-placeholder="<?php printMLText('select_grp_ind_approvers'); ?>" data-no_results_text="<?php printMLText('unknown_owner'); ?>"> | ||||
|  | @ -230,7 +292,7 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
| 			if ($mandatory){ | ||||
| 
 | ||||
| 				print "<option type='checkbox' checked='checked' disabled='disabled'>".htmlspecialchars($group->getName())."</option>"; | ||||
| 				print "<input id='appGrp".$group->getID()."' type='hidden' name='grpApprovers[]' value='". $group->getID() ."'>"; | ||||
| //				print "<input id='appGrp".$group->getID()."' type='hidden' name='grpApprovers[]' value='". $group->getID() ."'>";
 | ||||
| 
 | ||||
| 			} elseif (isset($approvalIndex["g"][$group->getID()])) { | ||||
| 
 | ||||
|  | @ -251,8 +313,24 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Bootstrap_Style { | |||
| 			} | ||||
| 		} | ||||
| ?>
 | ||||
|   </select> | ||||
| 
 | ||||
| 	</select> | ||||
| <?php | ||||
| 		/* List all mandatory groups of approvers */ | ||||
| 		if($res) { | ||||
| 			$tmp = array(); | ||||
| 			foreach ($res as $r) { | ||||
| 				if($r['approverGroupID'] > 0) { | ||||
| 					$u = $dms->getGroup($r['approverGroupID']); | ||||
| 					$tmp[] =  htmlspecialchars($u->getName()); | ||||
| 				} | ||||
| 			} | ||||
| 			if($tmp) { | ||||
| 				echo '<div class="mandatories"><span>'.getMLText('mandatory_approvergroups').':</span> '; | ||||
| 				echo implode(', ', $tmp); | ||||
| 				echo "</div>\n"; | ||||
| 			} | ||||
| 		} | ||||
| ?>
 | ||||
| <p> | ||||
| <input type='hidden' name='documentid' value='<?php echo $document->getID() ?>'/> | ||||
| <input type='hidden' name='version' value='<?php echo $content->getVersion() ?>'/> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Uwe Steinmann
						Uwe Steinmann