From 135211ed716af227527e02453d8af4acf61f8514 Mon Sep 17 00:00:00 2001 From: "Paula V. Quispe" Date: Tue, 21 Apr 2015 09:35:39 -0400 Subject: [PATCH 01/35] I solved some issues Cross-Site Scripting [April 18] --- gulliver/system/class.g.php | 3 +++ .../thirdparty/pear/PEAR/Frontend/CLI.php | 19 +++++++++++++++++++ .../pear/SOAP/Interop/interop_client_run.php | 13 +++++++++++-- .../methods/cases/cases_StepToRevise.php | 2 +- .../cases/cases_StepToReviseInputs.php | 2 +- .../cases/cases_StepToReviseOutputs.php | 2 +- .../cases/cases_ToReviseOutputDocView.php | 2 +- .../dynaforms/dynaforms_FlatEditor.php | 12 ++++++------ 8 files changed, 43 insertions(+), 12 deletions(-) diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index 846fbd558..b6298dab2 100755 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -3133,6 +3133,9 @@ class G */ public function evalJScript ($c) { + G::LoadSystem('inputfilter'); + $filter = new InputFilter(); + $c = $filter->xssFilterHard($c); print ("") ; } diff --git a/gulliver/thirdparty/pear/PEAR/Frontend/CLI.php b/gulliver/thirdparty/pear/PEAR/Frontend/CLI.php index 55ee979eb..67c15b9ea 100755 --- a/gulliver/thirdparty/pear/PEAR/Frontend/CLI.php +++ b/gulliver/thirdparty/pear/PEAR/Frontend/CLI.php @@ -72,6 +72,15 @@ class PEAR_Frontend_CLI extends PEAR function _displayLine($text) { + $realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] ); + $docuroot = explode( '/', $realdocuroot ); + array_pop( $docuroot ); + $pathhome = implode( '/', $docuroot ) . '/'; + array_pop( $docuroot ); + $pathTrunk = implode( '/', $docuroot ) . '/'; + require_once($pathTrunk.'gulliver/system/class.inputfilter.php'); + $filter = new InputFilter(); + $text = $filter->xssFilterHard($text); print "$this->lp$text\n"; } @@ -124,15 +133,25 @@ class PEAR_Frontend_CLI extends PEAR function userDialog($command, $prompts, $types = array(), $defaults = array()) { + $realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] ); + $docuroot = explode( '/', $realdocuroot ); + array_pop( $docuroot ); + $pathhome = implode( '/', $docuroot ) . '/'; + array_pop( $docuroot ); + $pathTrunk = implode( '/', $docuroot ) . '/'; + require_once($pathTrunk.'gulliver/system/class.inputfilter.php'); + $filter = new InputFilter(); $result = array(); if (is_array($prompts)) { $fp = fopen("php://stdin", "r"); foreach ($prompts as $key => $prompt) { $type = $types[$key]; $default = @$defaults[$key]; + $default = $filter->xssFilterHard($default); if ($type == 'password') { system('stty -echo'); } + $prompt = $filter->xssFilterHard($prompt); print "$this->lp$prompt "; if ($default) { print "[$default] "; diff --git a/gulliver/thirdparty/pear/SOAP/Interop/interop_client_run.php b/gulliver/thirdparty/pear/SOAP/Interop/interop_client_run.php index c77eb78f1..70f98dddb 100755 --- a/gulliver/thirdparty/pear/SOAP/Interop/interop_client_run.php +++ b/gulliver/thirdparty/pear/SOAP/Interop/interop_client_run.php @@ -82,10 +82,19 @@ function print_test_names() function print_endpoint_names() { global $iop; + $realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] ); + $docuroot = explode( '/', $realdocuroot ); + array_pop( $docuroot ); + $pathhome = implode( '/', $docuroot ) . '/'; + array_pop( $docuroot ); + $pathTrunk = implode( '/', $docuroot ) . '/'; + require_once($pathTrunk.'gulliver/system/class.inputfilter.php'); + $filter = new InputFilter(); + $currTest = $filter->xssFilterHard($iop->currentTest); if (!$iop->getEndpoints($iop->currentTest)) { - die("Unable to retrieve endpoints for $iop->currentTest\n"); + die("Unable to retrieve endpoints for $currTest\n"); } - print "Interop Servers for $iop->currentTest:\n"; + print "Interop Servers for $currTestt:\n"; foreach ($iop->endpoints as $server) { print " $server->name\n"; } diff --git a/workflow/engine/methods/cases/cases_StepToRevise.php b/workflow/engine/methods/cases/cases_StepToRevise.php index d693fae4c..dbf7e5f88 100755 --- a/workflow/engine/methods/cases/cases_StepToRevise.php +++ b/workflow/engine/methods/cases/cases_StepToRevise.php @@ -138,7 +138,7 @@ if (! isset( $_GET['ex'] )) { // DEPRECATED this JS section is marked for removal function setSelect() { - var ex=; + var ex=xssFilterHard($_GET['ex'])?>; try { for(i=1; i<50; i++) { if (i == ex) { diff --git a/workflow/engine/methods/cases/cases_StepToReviseInputs.php b/workflow/engine/methods/cases/cases_StepToReviseInputs.php index b4999f81e..07d45ca39 100755 --- a/workflow/engine/methods/cases/cases_StepToReviseInputs.php +++ b/workflow/engine/methods/cases/cases_StepToReviseInputs.php @@ -140,7 +140,7 @@ G::RenderPage( 'publish', 'blank' ); //Deprecated Section since the interface are now movig to ExtJS function setSelect() { - var ex=; + var ex=xssFilterHard($_GET['ex'])?>; try { for (i=1; i<50; i++) { if (i == ex) { diff --git a/workflow/engine/methods/cases/cases_StepToReviseOutputs.php b/workflow/engine/methods/cases/cases_StepToReviseOutputs.php index 976b75dc5..1a78eaf4f 100755 --- a/workflow/engine/methods/cases/cases_StepToReviseOutputs.php +++ b/workflow/engine/methods/cases/cases_StepToReviseOutputs.php @@ -84,7 +84,7 @@ if (! isset( $_GET['ex'] )) { //Deprecated Section since the interface are now movig to ExtJS function setSelect() { - var ex=; + var ex=xssFilterHard($_GET['ex'])?>; try{ for (i=1; i<50; i++) { if (i == ex) { diff --git a/workflow/engine/methods/cases/cases_ToReviseOutputDocView.php b/workflow/engine/methods/cases/cases_ToReviseOutputDocView.php index 351d778d9..b978b21e0 100755 --- a/workflow/engine/methods/cases/cases_ToReviseOutputDocView.php +++ b/workflow/engine/methods/cases/cases_ToReviseOutputDocView.php @@ -104,7 +104,7 @@ if (! isset( $_GET['ex'] )) { /*------------------------------ To Revise Routines ---------------------------*/ function setSelect() { - var ex=; + var ex=xssFilterHard($_GET['ex'])?>; try{ for(i=1; i<50; i++) { diff --git a/workflow/engine/methods/dynaforms/dynaforms_FlatEditor.php b/workflow/engine/methods/dynaforms/dynaforms_FlatEditor.php index 0014b64f9..b615b5005 100755 --- a/workflow/engine/methods/dynaforms/dynaforms_FlatEditor.php +++ b/workflow/engine/methods/dynaforms/dynaforms_FlatEditor.php @@ -170,12 +170,12 @@ G::RenderPage( "publish", "raw" ); + + - + + + - +
@@ -418,7 +449,6 @@
- From eda9767c0657ff6ee8cc85fb145893fbd8cb1762 Mon Sep 17 00:00:00 2001 From: Dante Date: Mon, 27 Apr 2015 16:53:49 -0400 Subject: [PATCH 21/35] NDD-60 --- .../engine/js/strategicDashboard/viewDashboardPresenter.js | 4 ++-- workflow/public_html/css/general.css | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/workflow/engine/js/strategicDashboard/viewDashboardPresenter.js b/workflow/engine/js/strategicDashboard/viewDashboardPresenter.js index a9400dbd1..9e1215129 100644 --- a/workflow/engine/js/strategicDashboard/viewDashboardPresenter.js +++ b/workflow/engine/js/strategicDashboard/viewDashboardPresenter.js @@ -100,7 +100,7 @@ ViewDashboardPresenter.prototype.dashboardIndicatorsViewModel = function(data) { //to be sure that percentages sum up to 100 (the rounding will lost decimals)% newObject.percentageOnTime = 100 - newObject.percentageOverdue - newObject.percentageAtRisk; newObject.overdueVisibility = (newObject.percentageOverdue > 0)? "visible" : "hidden"; - newObject.atRiskVisiblity = (newObject.percentageAtRisk > 0)? "visible" : "hidden"; + newObject.atRiskVisibility = (newObject.percentageAtRisk > 0)? "visible" : "hidden"; newObject.onTimeVisibility = (newObject.percentageOnTime > 0)? "visible" : "hidden"; returnList.push(newObject); i++; @@ -174,7 +174,7 @@ ViewDashboardPresenter.prototype.peiViewModel = function(data) { var retval = {}; retval = data; - this.makeShortLabel(graphData, 12); + this.makeShortLabel(graphData, 10); retval.dataToDraw = this.adaptGraphData(graphData); //TODO aumentar el símbolo de moneda $ diff --git a/workflow/public_html/css/general.css b/workflow/public_html/css/general.css index 620198892..fe3b6f558 100644 --- a/workflow/public_html/css/general.css +++ b/workflow/public_html/css/general.css @@ -39,8 +39,7 @@ .status-indicator-low, .status-indicator-medium, .status-indicator-high { - padding:0px; - padding-top:30px; + padding:30px 0px 0px 0; color:#444; float:left; } From 1622060e24ea2031690ab798b4a4449f4e275eda Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Mena Date: Mon, 27 Apr 2015 17:05:44 -0400 Subject: [PATCH 22/35] =?UTF-8?q?NDD-51=20C=C3=A1lculo=20del=20DEL=5FRISK?= =?UTF-8?q?=20es=20erroneo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - cambio de tiempo de duracion para el calculo correcto. --- .../engine/classes/model/AppDelegation.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/workflow/engine/classes/model/AppDelegation.php b/workflow/engine/classes/model/AppDelegation.php index 388d48542..91b444eef 100755 --- a/workflow/engine/classes/model/AppDelegation.php +++ b/workflow/engine/classes/model/AppDelegation.php @@ -133,7 +133,7 @@ class AppDelegation extends BaseAppDelegation //The function return an array now. By JHL $delTaskDueDate = $this->calculateDueDate($sNextTasParam); - $delRiskDate = $this->calculateRiskDate($delTaskDueDate, $this->getRisk()); + $delRiskDate = $this->calculateRiskDate($sNextTasParam, $this->getRisk()); //$this->setDelTaskDueDate( $delTaskDueDate['DUE_DATE'] ); // Due date formatted $this->setDelTaskDueDate($delTaskDueDate); @@ -379,8 +379,18 @@ class AppDelegation extends BaseAppDelegation public function calculateRiskDate($dueDate, $risk) { try { - $riskTime = strtotime($dueDate) - strtotime($this->getDelDelegateDate()); //Seconds - $riskTime = $riskTime - ($riskTime * $risk); + + $data = array(); + if (isset( $sNextTasParam['NEXT_TASK']['TAS_TRANSFER_HIDDEN_FLY'] ) && $sNextTasParam['NEXT_TASK']['TAS_TRANSFER_HIDDEN_FLY'] == 'true') { + $data['TAS_DURATION'] = $sNextTasParam['NEXT_TASK']['TAS_DURATION']; + $data['TAS_TIMEUNIT'] = $sNextTasParam['NEXT_TASK']['TAS_TIMEUNIT']; + } else { + $task = TaskPeer::retrieveByPK( $this->getTasUid() ); + $data['TAS_DURATION'] = $task->getTasDuration(); + $data['TAS_TIMEUNIT'] = $task->getTasTimeUnit(); + } + + $riskTime = $data['TAS_DURATION'] - ($data['TAS_DURATION'] * $risk); //Calendar - Use the dates class to calculate dates $calendar = new calendar(); @@ -394,9 +404,8 @@ class AppDelegation extends BaseAppDelegation } //Risk date - $riskDate = $calendar->dashCalculateDate($this->getDelDelegateDate(), round($riskTime / (60 * 60)), "HOURS", $arrayCalendarData); + $riskDate = $calendar->dashCalculateDate($this->getDelDelegateDate(), round($riskTime), $data['TAS_TIMEUNIT'], $arrayCalendarData); - //Return return $riskDate; } catch (Exception $e) { throw $e; From 362be8dff555972528739448aff40a2f0596fa18 Mon Sep 17 00:00:00 2001 From: dheeyi Date: Mon, 27 Apr 2015 17:11:19 -0400 Subject: [PATCH 23/35] =?UTF-8?q?PM-2394=20Se=20muestra=20un=20"warning=20?= =?UTF-8?q?php"=20en=20"web=20entry"=20cuando=20dynaform=20esta=20vacio.?= =?UTF-8?q?=20Causa=20:=20Esto=20es=20fue=20ocacionado=20bajo=20el=20sigui?= =?UTF-8?q?ente=20contexto.=20Si=20se=20crea=20un=20dynaform;=20sin=20emba?= =?UTF-8?q?rgo=20este=20no=20posee=20ningun=20item(Labels,=20titles,radio?= =?UTF-8?q?=20buttons...)=20en=20la=20base=20de=20datos=20DYNAFORM=20exist?= =?UTF-8?q?e=20una=20columna=20de=20nombre=20"dyn=5Fcontent"=20el=20cual?= =?UTF-8?q?=20almacena=20estes=20parametros,=20pero=20como=20no=20tiene=20?= =?UTF-8?q?ningun=20elemento=20este=20inicialmentre=20contendra=20como=20v?= =?UTF-8?q?alor=20null.=20Soluci=C3=B3=20Cuando=20se=20hace=20la=20definic?= =?UTF-8?q?ion=20del=20DYNAFORM,=20paralelamente=20se=20adiciona=20un=20pa?= =?UTF-8?q?rametro=20por=20defecto(json=20vacio)=20a=20la=20columna=20"dyn?= =?UTF-8?q?=5Fcontent".=20Y=20asi=20al=20generar=20el=20WEB=20ENTRY,=20al?= =?UTF-8?q?=20momento=20de=20renderear=20el=20dynaform=20se=20mostrara=20u?= =?UTF-8?q?na=20pantalla=20vacia,=20limpia=20sin=20componentes=20y=20asi?= =?UTF-8?q?=20evitar=20el=20error=20PHP=20que=20se=20tenia,=20ya=20que=20s?= =?UTF-8?q?e=20pretendia=20leer=20parametros=20cuyos=20en=20principio=20er?= =?UTF-8?q?an=20nulos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/src/ProcessMaker/Services/Api/Project/DynaForm.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php index d7dde88eb..2bbf9ba5d 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/DynaForm.php @@ -47,7 +47,9 @@ class DynaForm extends Api $dynaForm->setArrayFieldNameForException(array("processUid" => "prj_uid")); $arrayData = $dynaForm->executeCreate($prj_uid, $request_data); - $request_data['dyn_content']="{}"; + if (!array_key_exists('dyn_content', $request_data)) { + $request_data['dyn_content']="{}"; + } $arrayData = $dynaForm->update($arrayData['dyn_uid'], $request_data); $response = $arrayData; From 69c0acbf3be17e09f19d2e945fbe86a0c54156cc Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Mon, 27 Apr 2015 17:21:37 -0400 Subject: [PATCH 24/35] =?UTF-8?q?PM-2493=20"Home>New=20Case:=20El=20mensaj?= =?UTF-8?q?e=20The=20case=20will=20be..."=20SOLVED=20>=20Code=20Isuue:=20?= =?UTF-8?q?=20=20Home=20>=20New=20Case:=20El=20mensaje=20"The=20case=20wil?= =?UTF-8?q?l=20be=20paused=20until=20you=20receive=20the=20corresponding?= =?UTF-8?q?=20message"=20deber=C3=A1eflejarse=20al=20medio=20del=20contene?= =?UTF-8?q?dor=20>=20Solution:=20=20=20Se=20corrige=20el=20posicionamiento?= =?UTF-8?q?=20del=20mensaje=20con=20alineacion=20centrada.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- workflow/engine/templates/cases/cases_ScreenDerivation.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/workflow/engine/templates/cases/cases_ScreenDerivation.html b/workflow/engine/templates/cases/cases_ScreenDerivation.html index 6cb5122e2..4ad2fe413 100755 --- a/workflow/engine/templates/cases/cases_ScreenDerivation.html +++ b/workflow/engine/templates/cases/cases_ScreenDerivation.html @@ -68,8 +68,7 @@ {else} - - {$data.NEXT_TASK.TAS_TITLE}{$data.NEXT_TASK.TAS_HIDDEN_FIELD} + {$data.NEXT_TASK.TAS_TITLE}{$data.NEXT_TASK.TAS_HIDDEN_FIELD} {/if} {/if} @@ -93,8 +92,7 @@ {else} - - {$data.NEXT_TASK.USR_HIDDEN_FIELD} + {$data.NEXT_TASK.USR_HIDDEN_FIELD} {/if} {/if} From f60ed87fcd8f3c922dbacdff6a455eec76d704cb Mon Sep 17 00:00:00 2001 From: Dante Date: Mon, 27 Apr 2015 17:26:14 -0400 Subject: [PATCH 25/35] hide scroll --- .../strategicDashboard/viewDashboardView.js | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/workflow/engine/js/strategicDashboard/viewDashboardView.js b/workflow/engine/js/strategicDashboard/viewDashboardView.js index 3c919494f..6aebaab0d 100644 --- a/workflow/engine/js/strategicDashboard/viewDashboardView.js +++ b/workflow/engine/js/strategicDashboard/viewDashboardView.js @@ -395,10 +395,27 @@ var hideScrollIfAllDivsAreVisible = function(){ $('#scrollImg').hide(); } else { + $('#scrollImg').css('visibility', 'visible'); $('#scrollImg').show(); } } +var hideTitleAndSortDiv = function(){ + if (window.currentIndicator == null) { + $('#relatedLabel').hide(); + } + switch (window.currentIndicator.type) { + case "1010": + case "1030": + $('#relatedLabel').css('visibility', 'visible'); + $('#relatedLabel').show(); + break; + default: + $('#relatedLabel').hide(); + break; + } +} + var selectedOrderOfDetailList = function () { return ($('#sortListButton').hasClass('fa-chevron-up') ? "up" : "down"); } @@ -436,6 +453,8 @@ var loadIndicator = function (indicatorId, initDate, endDate) { break; } }); + hideScrollIfAllDivsAreVisible(); + hideTitleAndSortDiv(); } var setIndicatorActiveMarker = function () { @@ -555,7 +574,6 @@ var fillStatusIndicatorFirstView = function (presenterData) { var indicatorPrincipalData = widgetBuilder.getIndicatorLoadedById(presenterData.id) setIndicatorActiveMarker(); - $('#relatedLabel').hide(); } var fillStatusIndicatorFirstViewDetail = function(presenterData) { @@ -579,7 +597,6 @@ var fillStatusIndicatorFirstViewDetail = function(presenterData) { } var fillSpecialIndicatorFirstView = function(presenterData) { - $('#relatedLabel').show(); var widgetBuilder = new WidgetBuilder(); var panel = $('#indicatorsDataGridStack').data('gridstack'); panel.remove_all(); From 63499fc3e7883edfc19cd993b3d649939e1934f9 Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Mena Date: Tue, 28 Apr 2015 10:13:10 -0400 Subject: [PATCH 26/35] NDD-64 utiliza simbolo de moneda configurado - Se agrego al controller el valor de la configuracion del cost by hour del usuario actual. --- .../engine/controllers/strategicDashboard.php | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/workflow/engine/controllers/strategicDashboard.php b/workflow/engine/controllers/strategicDashboard.php index f8ea0b7db..297cf9200 100644 --- a/workflow/engine/controllers/strategicDashboard.php +++ b/workflow/engine/controllers/strategicDashboard.php @@ -14,6 +14,7 @@ class StrategicDashboard extends Controller private $urlProxy; private $clientToken; private $usrId; + private $usrUnitCost; // Class constructor public function __construct () @@ -32,6 +33,13 @@ class StrategicDashboard extends Controller die; } $this->usrId = $RBAC->aUserInfo['USER_INFO']['USR_UID']; + $user = new Users(); + $user = $user->load($RBAC->aUserInfo['USER_INFO']['USR_UID']); + $this->usrUnitCost = '$'; + if (isset($user['USR_UNIT_COST'])) { + $this->usrUnitCost = $user['USR_UNIT_COST']; + } + $this->urlProxy = '/api/1.0/' . SYS_SYS . '/'; //change $clientId = 'x-pm-local-client'; @@ -170,13 +178,12 @@ class StrategicDashboard extends Controller } $this->setView( 'strategicDashboard/viewDashboard' ); - $this->setVar('urlProxy',$this->urlProxy); - $this->setVar('usrId',$this->usrId); - $this->setVar('credentials',$this->clientToken); + $this->setVar('urlProxy', $this->urlProxy); + $this->setVar('usrId', $this->usrId); + $this->setVar('credentials', $this->clientToken); + $this->setVar('unitCost', $this->usrUnitCost); $translation = array(); - - $translation['ID_MANAGERS_DASHBOARDS'] = G::LoadTranslation( 'ID_MANAGERS_DASHBOARDS'); $translation['ID_PRO_EFFICIENCY_INDEX'] = G::LoadTranslation( 'ID_PRO_EFFICIENCY_INDEX'); $translation['ID_EFFICIENCY_USER'] = G::LoadTranslation( 'ID_EFFICIENCY_USER'); @@ -215,12 +222,12 @@ class StrategicDashboard extends Controller { try { $this->setView( 'strategicDashboard/viewDashboardIE' ); - $this->setVar('urlProxy',$this->urlProxy); - $this->setVar('usrId',$this->usrId); - $this->setVar('credentials',$this->clientToken); + $this->setVar('urlProxy', $this->urlProxy); + $this->setVar('usrId', $this->usrId); + $this->setVar('credentials', $this->clientToken); + $this->setVar('unitCost', $this->usrUnitCost); $translation = array(); - $translation['ID_MANAGERS_DASHBOARDS'] = G::LoadTranslation( 'ID_MANAGERS_DASHBOARDS'); $translation['ID_PRO_EFFICIENCY_INDEX'] = G::LoadTranslation( 'ID_PRO_EFFICIENCY_INDEX'); $translation['ID_EFFICIENCY_USER'] = G::LoadTranslation( 'ID_EFFICIENCY_USER'); From c974a548d656158ace300e7e008a26930ac3ef42 Mon Sep 17 00:00:00 2001 From: Brayan Pereyra Date: Tue, 28 Apr 2015 10:13:20 -0400 Subject: [PATCH 27/35] PM-1339 No se puede ordenar las condiciones de enrutamiento del gateway Exclusive --- .../engine/src/ProcessMaker/Project/Bpmn.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/Project/Bpmn.php b/workflow/engine/src/ProcessMaker/Project/Bpmn.php index 8cb27df25..cefce6f69 100755 --- a/workflow/engine/src/ProcessMaker/Project/Bpmn.php +++ b/workflow/engine/src/ProcessMaker/Project/Bpmn.php @@ -1348,13 +1348,15 @@ class Bpmn extends Handler $oCriteria->add( \BpmnFlowPeer::FLO_POSITION, $iPosition, '>' ); $oDataset = \BpmnFlowPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - $aRow = $oDataset->getRow(); - $oCriteria2 = new Criteria('workflow'); - $oCriteria2->add( \BpmnFlowPeer::FLO_POSITION, $aRow['FLO_POSITION'] - 1); - BasePeer::doUpdate($oCriteria, $oCriteria2, $con); - $oDataset->next(); - + while ($oDataset->next()) { + $aRow = $oDataset->getRow(); + $newPosition = ((int)$aRow['FLO_POSITION'])-1; + $oCriteriaTemp = new Criteria( 'workflow' ); + $oCriteriaTemp->add( \BpmnFlowPeer::FLO_UID, $aRow['FLO_UID'] ); + $oCriteria2 = new Criteria('workflow'); + $oCriteria2->add(\BpmnFlowPeer::FLO_POSITION, $newPosition); + BasePeer::doUpdate($oCriteriaTemp, $oCriteria2, $con); + } } catch (Exception $oException) { throw $oException; } From 4f06ad861186af84f8f9d5563fe0cb6a88da0e11 Mon Sep 17 00:00:00 2001 From: Dante Date: Tue, 28 Apr 2015 11:06:20 -0400 Subject: [PATCH 28/35] NDD-48, NDD-62, NDD-63 --- .../templates/strategicDashboard/viewDashboard.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/workflow/engine/templates/strategicDashboard/viewDashboard.html b/workflow/engine/templates/strategicDashboard/viewDashboard.html index f0cc30046..4ce4af3ff 100644 --- a/workflow/engine/templates/strategicDashboard/viewDashboard.html +++ b/workflow/engine/templates/strategicDashboard/viewDashboard.html @@ -106,7 +106,7 @@ - @@ -250,7 +251,7 @@
-
<%- detailData.inefficiencyCostToShow%>
+
{$unitCost}<%- detailData.inefficiencyCostToShow%>
From ca215a733293f880c03c7aaae9db59887c55eb29 Mon Sep 17 00:00:00 2001 From: Dante Date: Tue, 28 Apr 2015 11:49:58 -0400 Subject: [PATCH 30/35] NDD-65 --- .../engine/controllers/strategicDashboard.php | 1 + .../strategicDashboard/viewDashboard.html | 2 +- .../strategicDashboard/viewDashboardIE.html | 16 ++++++++-------- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/workflow/engine/controllers/strategicDashboard.php b/workflow/engine/controllers/strategicDashboard.php index 297cf9200..25abf3a44 100644 --- a/workflow/engine/controllers/strategicDashboard.php +++ b/workflow/engine/controllers/strategicDashboard.php @@ -210,6 +210,7 @@ class StrategicDashboard extends Controller $translation['ID_OVERDUE'] = G::LoadTranslation( 'ID_OVERDUE'); $translation['ID_AT_RISK'] = G::LoadTranslation( 'ID_AT_RISK'); $translation['ID_ON_TIME'] = G::LoadTranslation( 'ID_ON_TIME'); + $this->setVar('translation', $translation); $this->render(); } catch (Exception $error) { diff --git a/workflow/engine/templates/strategicDashboard/viewDashboard.html b/workflow/engine/templates/strategicDashboard/viewDashboard.html index 77056f68f..30af215f1 100644 --- a/workflow/engine/templates/strategicDashboard/viewDashboard.html +++ b/workflow/engine/templates/strategicDashboard/viewDashboard.html @@ -437,7 +437,7 @@

- Sort by Cost:   + {translate label="ID_SORT_BY"} {translate label="ID_COSTS"} :  
diff --git a/workflow/engine/templates/strategicDashboard/viewDashboardIE.html b/workflow/engine/templates/strategicDashboard/viewDashboardIE.html index 469c58ade..b900066b6 100644 --- a/workflow/engine/templates/strategicDashboard/viewDashboardIE.html +++ b/workflow/engine/templates/strategicDashboard/viewDashboardIE.html @@ -343,7 +343,7 @@
This is just a basic view of your indexes. For better compatibility with Internet Explorer, a new tab with the KPIs has been opened. Please select this new tab on the tab list above to see all our KPIs functionality.
- + + [> Split button <]

@@ -411,19 +411,19 @@ - + [> /.col-lg-12 <] - + [> Indicators <]
- + [>Here are added dynamically the Indicators<]
- + [> Details by Indicator <]
- + [>Here are added dynamically the Dat by indicator<]
@@ -441,7 +441,7 @@ data-gs-animate="no" style="clear:both;">
- + --> From b7ec10b4b73fd46fa6a9d4b44a92a441f951f5aa Mon Sep 17 00:00:00 2001 From: Dante Date: Tue, 28 Apr 2015 12:04:08 -0400 Subject: [PATCH 31/35] label in pies 2D hidden --- workflow/engine/js/strategicDashboard/viewDashboardView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/engine/js/strategicDashboard/viewDashboardView.js b/workflow/engine/js/strategicDashboard/viewDashboardView.js index 6aebaab0d..ffd00719b 100644 --- a/workflow/engine/js/strategicDashboard/viewDashboardView.js +++ b/workflow/engine/js/strategicDashboard/viewDashboardView.js @@ -555,7 +555,7 @@ var fillStatusIndicatorFirstView = function (presenterData) { allowDrillDown:true, allowTransition:true, - showTip: true, + showTip: false, allowZoom: false, showLabels: true } From 2d221e5c78cf7f531b54406d2526df2c455b7af5 Mon Sep 17 00:00:00 2001 From: Dante Date: Tue, 28 Apr 2015 12:18:38 -0400 Subject: [PATCH 32/35] console log deletion --- workflow/engine/js/strategicDashboard/viewDashboardView.js | 1 - 1 file changed, 1 deletion(-) diff --git a/workflow/engine/js/strategicDashboard/viewDashboardView.js b/workflow/engine/js/strategicDashboard/viewDashboardView.js index ffd00719b..51a72a94c 100644 --- a/workflow/engine/js/strategicDashboard/viewDashboardView.js +++ b/workflow/engine/js/strategicDashboard/viewDashboardView.js @@ -309,7 +309,6 @@ $(document).ready(function() { 'height': item.height <= 1 ? 2 : item.height } widgets.push(widgetsObj); - console.log(widgetsObj); } }); From 645be2e47171bd841faaf3ce94a2e5e47756d321 Mon Sep 17 00:00:00 2001 From: Dante Date: Tue, 28 Apr 2015 12:32:42 -0400 Subject: [PATCH 33/35] At risk, overdue labels not hardcoded --- .../engine/templates/strategicDashboard/viewDashboard.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/workflow/engine/templates/strategicDashboard/viewDashboard.html b/workflow/engine/templates/strategicDashboard/viewDashboard.html index 30af215f1..de456882e 100644 --- a/workflow/engine/templates/strategicDashboard/viewDashboard.html +++ b/workflow/engine/templates/strategicDashboard/viewDashboard.html @@ -273,15 +273,15 @@
<%- detailData.percentageOverdue%> %
-
Overdue
+
{translate label="ID_OVERDUE"}
<%- detailData.percentageAtRisk%> %
-
At Risk
+
{translate label="ID_AT_RISK"}
<%- detailData.percentageOnTime%> %
-
On Time
+
{translate label="ID_ON_TIME"}
From 925aa82016f399141a1ac8be9048d5bc918c0fc9 Mon Sep 17 00:00:00 2001 From: Dante Date: Tue, 28 Apr 2015 14:55:51 -0400 Subject: [PATCH 34/35] hardcoded strings in view --- .../js/strategicDashboard/viewDashboardView.js | 14 +++++++------- .../strategicDashboard/viewDashboard.html | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/workflow/engine/js/strategicDashboard/viewDashboardView.js b/workflow/engine/js/strategicDashboard/viewDashboardView.js index 51a72a94c..d62c6fc20 100644 --- a/workflow/engine/js/strategicDashboard/viewDashboardView.js +++ b/workflow/engine/js/strategicDashboard/viewDashboardView.js @@ -632,8 +632,8 @@ var fillSpecialIndicatorFirstView = function(presenterData) { graph: { allowDrillDown:false, allowTransition:true, - axisX:{ showAxis: true, label: "Group" }, - axisY:{ showAxis: true, label: "Cost" }, + axisX:{ showAxis: true, label: G_STRING['ID_GROUPS']}, + axisY:{ showAxis: true, label: G_STRING['ID_COSTS']}, gridLinesX:false, gridLinesY:true, showTip: true, @@ -714,8 +714,8 @@ var fillSpecialIndicatorSecondView = function(presenterData) { gridLinesX: true, gridLinesY: true, area: {visible: false, css:"area"}, - axisX:{ showAxis: true, label: "User" }, - axisY:{ showAxis: true, label: "Cost" }, + axisX:{ showAxis: true, label: G_STRING['ID_USER'] }, + axisY:{ showAxis: true, label: G_STRING['ID_COSTS'] }, showErrorBars: true } @@ -724,7 +724,7 @@ var fillSpecialIndicatorSecondView = function(presenterData) { var indicatorPrincipalData = widgetBuilder.getIndicatorLoadedById(window.currentEntityData.indicatorId); if (window.currentIndicator.type == "1010") { - detailParams.graph.axisX.label = "Task"; + detailParams.graph.axisX.label = G_STRING['ID_TASK'] ; var graph = new BarChart(presenterData.dataToDraw, detailParams, null, null); graph.drawChart(); } @@ -840,7 +840,7 @@ var fillGeneralIndicatorFirstView = function (presenterData) { allowDrillDown:false, allowTransition:true, axisX:{ showAxis: true, label: G_STRING.ID_YEAR }, - axisY:{ showAxis: true, label: "Q" }, + axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS }, gridLinesX:false, gridLinesY:true, showTip: true, @@ -862,7 +862,7 @@ var fillGeneralIndicatorFirstView = function (presenterData) { allowDrillDown:false, allowTransition:true, axisX:{ showAxis: true, label: G_STRING.ID_YEAR }, - axisY:{ showAxis: true, label: "Q" }, + axisY:{ showAxis: true, label: G_STRING.ID_TIME_HOURS }, gridLinesX:false, gridLinesY:true, showTip: true, diff --git a/workflow/engine/templates/strategicDashboard/viewDashboard.html b/workflow/engine/templates/strategicDashboard/viewDashboard.html index de456882e..fcc046823 100644 --- a/workflow/engine/templates/strategicDashboard/viewDashboard.html +++ b/workflow/engine/templates/strategicDashboard/viewDashboard.html @@ -325,15 +325,15 @@
-
Overdue:
+
{translate label="ID_OVERDUE"}:
-
At Risk:
+
{translate label="ID_AT_RISK"}:
-
On Time:
+
{translate label="ID_ON_TIME"}:
From 3f13c0b0d16b1d422751ca19a6c401601e876141 Mon Sep 17 00:00:00 2001 From: Brayan Pereyra Date: Wed, 29 Apr 2015 09:57:14 -0400 Subject: [PATCH 35/35] PM-1944 Correccion de Duplicacidad en Completed --- .../engine/classes/model/ListCompleted.php | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/workflow/engine/classes/model/ListCompleted.php b/workflow/engine/classes/model/ListCompleted.php index b7507c36e..5b5925fa1 100644 --- a/workflow/engine/classes/model/ListCompleted.php +++ b/workflow/engine/classes/model/ListCompleted.php @@ -25,6 +25,15 @@ class ListCompleted extends BaseListCompleted */ public function create($data) { + $criteria = new Criteria(); + $criteria->addSelectColumn(ListCompletedPeer::APP_UID); + $criteria->add( ListCompletedPeer::APP_UID, $data['APP_UID'], Criteria::EQUAL ); + $dataset = ListCompletedPeer::doSelectRS($criteria); + $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + if ($dataset->next()) { + return 1; + } + $criteria = new Criteria(); $criteria->addSelectColumn(ContentPeer::CON_VALUE); $criteria->add( ContentPeer::CON_ID, $data['APP_UID'], Criteria::EQUAL ); @@ -97,9 +106,27 @@ class ListCompleted extends BaseListCompleted $users = new Users(); $users->refreshTotal($data['USR_UID'], 'add', 'completed'); if ($data['DEL_PREVIOUS'] != 0) { - $users->refreshTotal($data['USR_UID'], 'remove', 'inbox'); + $criteria = new Criteria(); + $criteria->addSelectColumn(TaskPeer::TAS_TYPE); + $criteria->add( TaskPeer::TAS_UID, $data['TAS_UID'], Criteria::EQUAL ); + $dataset = TaskPeer::doSelectRS($criteria); + $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $dataset->next(); + $aRow = $dataset->getRow(); + if ($aRow['TAS_TYPE'] != 'SUBPROCESS') { + $users->refreshTotal($data['USR_UID'], 'remove', 'inbox'); + } } else { - $users->refreshTotal($data['USR_UID'], 'remove', 'draft'); + $criteria = new Criteria(); + $criteria->addSelectColumn(SubApplicationPeer::APP_UID); + $criteria->add( SubApplicationPeer::APP_UID, $data['APP_UID'], Criteria::EQUAL ); + $dataset = SubApplicationPeer::doSelectRS($criteria); + $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + if ($dataset->next()) { + $users->refreshTotal($data['USR_UID'], 'remove', 'inbox'); + } else { + $users->refreshTotal($data['USR_UID'], 'remove', 'draft'); + } } $con = Propel::getConnection( ListCompletedPeer::DATABASE_NAME );