diff --git a/resources/assets/js/home/Home.vue b/resources/assets/js/home/Home.vue index bb472cae5..9dc059851 100755 --- a/resources/assets/js/home/Home.vue +++ b/resources/assets/js/home/Home.vue @@ -192,6 +192,9 @@ export default { if ( e.data === "redirect=todo" || e.message === "redirect=todo"){ that.OnClickSidebarItem(that.getItemMenuByValue("page","inbox")); } + if ( e.data === "redirect=MyCases" || e.message === "redirect=MyCases"){ + that.OnClickSidebarItem(that.getItemMenuByValue("page","MyCases")); + } if ( e.data === "update=debugger" || e.message === "update=debugger"){ if(that.$refs["component"].updateView){ that.$refs["component"].updateView(); @@ -616,6 +619,9 @@ export default { */ getItemMenuByValue(key, value) { let obj = _.find(this.menu, function(o) { + if(o[key] == value){ + return true; + } if(o.component){ return o.props.item[key] == value; } @@ -624,6 +630,9 @@ export default { if(obj.component){ return obj.props; } + if(obj.page){ + return {item : obj}; + } return obj; }, /** diff --git a/workflow/engine/classes/PmDynaform.php b/workflow/engine/classes/PmDynaform.php index 70b174382..3ced3698b 100644 --- a/workflow/engine/classes/PmDynaform.php +++ b/workflow/engine/classes/PmDynaform.php @@ -2642,18 +2642,18 @@ class PmDynaform /** * Get html navigation bar for steps to revise. * @param string $appUid - * @param string $dynUid + * @param string $uid * @param int $delIndex * @return string */ - public static function navigationBarForStepsToRevise(string $appUid, string $dynUid, int $delIndex): string + public static function navigationBarForStepsToRevise(string $appUid, string $uid, int $delIndex): string { $navbar = ''; $cases = new Cases(); $steps = $cases->getAllUrlStepsToRevise($appUid, $delIndex); $n = count($steps); foreach ($steps as $key => $step) { - if ($step['uid'] === $dynUid) { + if ($step['uid'] === $uid) { $previousLabel = ''; $previousUrl = ''; $nextLabel = ''; @@ -2666,6 +2666,14 @@ class PmDynaform $nextLabel = G::LoadTranslation('ID_NEXT'); $nextUrl = $steps[$key + 1]['url']; } + if (empty($nextUrl)) { + $nextLabel = G::LoadTranslation('ID_FINISH'); + $nextUrl = 'javascript:if(window.parent && window.parent.parent){window.parent.parent.postMessage("redirect=MyCases","*");}'; + } + //this condition modify the next Url for submit action + if ($step['type'] === 'DYNAFORM') { + $nextUrl = 'javascript:document.querySelector(".pmdynaform-container .pmdynaform-form").submit();'; + } $navbar = "
" . "  " . " " . diff --git a/workflow/engine/methods/cases/cases_SaveDataSupervisor.php b/workflow/engine/methods/cases/cases_SaveDataSupervisor.php index e12d94aa1..845d3fcce 100644 --- a/workflow/engine/methods/cases/cases_SaveDataSupervisor.php +++ b/workflow/engine/methods/cases/cases_SaveDataSupervisor.php @@ -1,29 +1,7 @@ . - * - * For more information, contact Colosa Inc, 2566 Le Jeune Rd., - * Coral Gables, FL, 33134, USA, or email info@colosa.com. - */ -//validate the data post use ProcessMaker\Plugins\PluginRegistry; +use ProcessMaker\BusinessModel\Cases as BusinessModelCases; $dynaForm = DynaformPeer::retrieveByPK($_GET["UID"]); @@ -210,6 +188,21 @@ if (isset( $_FILES["form"]["name"] ) && count( $_FILES["form"]["name"] ) > 0) { //Define the STEP_POSITION $ex = isset($_GET['ex']) ? $_GET['ex'] : 0; //go to the next step -$aNextStep = $oCase->getNextSupervisorStep( $_SESSION['PROCESS'], $_SESSION['STEP_POSITION'] ); -G::header( 'Location: cases_StepToRevise?type=DYNAFORM&ex=' . $ex . '&PRO_UID=' . $_SESSION['PROCESS'] . '&DYN_UID=' . $aNextStep['UID'] . '&APP_UID=' . $_SESSION['APPLICATION'] . '&position=' . $aNextStep['POSITION'] . '&DEL_INDEX=' . $_SESSION['INDEX'] ); +$nextSteps = $oCase->getNextSupervisorStep($_SESSION['PROCESS'], $_SESSION['STEP_POSITION']); +$url = ''; +$steps = (new BusinessModelCases())->getAllUrlStepsToRevise($_SESSION['APPLICATION'], $_SESSION['INDEX']); +$n = count($steps); +foreach ($steps as $key => $step) { + if ($step['uid'] === $nextSteps['UID'] && $key + 1 < $n) { + $nextUrl = $steps[$key + 1]['url']; + $url = $nextUrl; + break; + } +} +if (empty($url)) { + die(''); +} +G::header('Location:' . $url); die(); \ No newline at end of file diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index 117f79adc..3285b312c 100755 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -4483,36 +4483,34 @@ class Cases { $result = []; $dynaformStep = $this->getStepsToRevise($appUid, 'DYNAFORM'); - $i = 0; - foreach ($dynaformStep as $step) { - $url = "cases_StepToRevise?" - . "type=DYNAFORM&" - . "ex={$i}&" - . "PRO_UID={$step["PRO_UID"]}&" - . "DYN_UID={$step['STEP_UID_OBJ']}&" - . "APP_UID={$appUid}&" - . "position={$step['STEP_POSITION']}&" - . "DEL_INDEX={$delIndex}"; - $result[] = [ - 'uid' => $step['STEP_UID_OBJ'], - 'url' => $url - ]; - $i++; - } - $inputDocumentStep = $this->getStepsToRevise($appUid, 'INPUT_DOCUMENT'); + $objects = array_merge($dynaformStep, $inputDocumentStep); + usort($objects, function ($a, $b) { + return $a['STEP_POSITION'] > $b['STEP_POSITION']; + }); $i = 0; - foreach ($inputDocumentStep as $step) { - $url = "cases_StepToReviseInputs?" - . "type=INPUT_DOCUMENT&" + $endPoint = ''; + $uidName = ''; + foreach ($objects as $step) { + if ($step['STEP_TYPE_OBJ'] === 'DYNAFORM') { + $endPoint = 'cases_StepToRevise'; + $uidName = 'DYN_UID'; + } + if ($step['STEP_TYPE_OBJ'] === 'INPUT_DOCUMENT') { + $endPoint = 'cases_StepToReviseInputs'; + $uidName = 'INP_DOC_UID'; + } + $url = "{$endPoint}?" + . "type={$step['STEP_TYPE_OBJ']}&" . "ex={$i}&" . "PRO_UID={$step["PRO_UID"]}&" - . "INP_DOC_UID={$step['STEP_UID_OBJ']}&" + . "{$uidName}={$step['STEP_UID_OBJ']}&" . "APP_UID={$appUid}&" . "position={$step['STEP_POSITION']}&" . "DEL_INDEX={$delIndex}"; $result[] = [ 'uid' => $step['STEP_UID_OBJ'], + 'type' => $step['STEP_TYPE_OBJ'], 'url' => $url ]; $i++; diff --git a/workflow/engine/templates/cases/open.js b/workflow/engine/templates/cases/open.js index e34d7f25b..43ef8bb17 100644 --- a/workflow/engine/templates/cases/open.js +++ b/workflow/engine/templates/cases/open.js @@ -531,7 +531,8 @@ Ext.onReady(function(){ }, iconCls: 'ICON_STEPS', toggleHandler: togglePreview, - disabled: true + disabled: true, + hidden: true }, { id: 'informationMenu', text: _('ID_INFORMATION'),