From 21b8072452b45be4f1516696a7f58f572d9bb8dc Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Mon, 2 Mar 2015 17:48:53 -0400 Subject: [PATCH 01/13] PM-1700 "Ocurre un error al importar y actualizar un proceso..." SOLVED MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: Ocurre un error al importar y actualizar un proceso de tipo bpmn, despliega un error sin descripció el proceso se convierte en un proceso de tipo classic Cause: Mala definicion de variables para el "Add Audit Log" Solution: Se a suprimido las variables, ahora se utiliza el objeto para el seteo de variables --- workflow/engine/classes/model/OutputDocument.php | 10 ++++++---- workflow/engine/classes/model/Triggers.php | 16 ++++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/workflow/engine/classes/model/OutputDocument.php b/workflow/engine/classes/model/OutputDocument.php index 7a0e2fd64..9929c2e7c 100755 --- a/workflow/engine/classes/model/OutputDocument.php +++ b/workflow/engine/classes/model/OutputDocument.php @@ -201,7 +201,7 @@ class OutputDocument extends BaseOutputDocument } $description .= ", By clicking on the generated file link: ".$genLink; G::auditLog("CreateOutputDocument", $description); - + return $aData['OUT_DOC_UID']; } else { $sMessage = ''; @@ -329,9 +329,11 @@ class OutputDocument extends BaseOutputDocument Content::removeContent('OUT_DOC_TEMPLATE', '', $oOutputDocument->getOutDocUid()); $iResult = $oOutputDocument->delete(); $oConnection->commit(); - //Add Audit Log - G::auditLog("DeleteOutputDocument", "Output Document Name: ".$outputName.", Output Document Uid: ".$sOutDocUid.", Description: ".$outputDesc.", Filename generated: ".$outputFile); + //Add Audit Log + G::auditLog("DeleteOutputDocument", "Output Document Name: " . $oOutputDocument->getOutDocTitle() . ", Output Document Uid: " . $sOutDocUid . ", Description: " . $oOutputDocument->getOutDocDescription() . ", Filename generated: " . $oOutputDocument->getOutDocFilename()); + + //Return return $iResult; } else { throw (new Exception('This row doesn\'t exist!')); @@ -845,7 +847,7 @@ class OutputDocument extends BaseOutputDocument $sContent = str_ireplace("", "", $sContent); $sContent = str_replace($nrthtml, $nrt, $sContent); - + $sContent = str_replace("margin-left", "text-indent", $sContent); // define Save file diff --git a/workflow/engine/classes/model/Triggers.php b/workflow/engine/classes/model/Triggers.php index 13321d6d0..0f381703c 100755 --- a/workflow/engine/classes/model/Triggers.php +++ b/workflow/engine/classes/model/Triggers.php @@ -189,7 +189,7 @@ class Triggers extends BaseTriggers $description .= ", Description: ".$aData['TRI_DESCRIPTION']; } G::auditLog("CreateTrigger", $description); - + return $result; } else { $con->rollback(); @@ -240,18 +240,14 @@ class Triggers extends BaseTriggers $con->begin(); $oTri = TriggersPeer::retrieveByPK( $TriUid ); if (!is_null($oTri)) { - $triggerName = $this->getTriTitle(); - $triggerDesc = $this->getTriDescription(); - Content::removeContent( 'TRI_TITLE', '', $this->getTriUid()); - Content::removeContent( 'TRI_DESCRIPTION', '', $this->getTriUid()); + Content::removeContent("TRI_TITLE", "", $TriUid); + Content::removeContent("TRI_DESCRIPTION", "", $TriUid); + $result = $oTri->delete(); $con->commit(); + //Add Audit Log - $description = "Trigger Name: ".$triggerName.", Trigger Uid: ".$TriUid; - if (isset ( $triggerDesc )) { - $description .= ", Description: ".$triggerDesc; - } - G::auditLog("DeleteTrigger", $description); + G::auditLog("DeleteTrigger", "Trigger Name: " . $oTri->getTriTitle() . ", Trigger Uid: " . $TriUid . ", Description: " . $oTri->getTriDescription()); } return $result; } catch (Exception $e) { From 39fc054b02329901ac0be972f1c074638d048535 Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Mon, 2 Mar 2015 18:19:55 -0400 Subject: [PATCH 02/13] PM-1571 --- workflow/engine/classes/class.pmDynaform.php | 10 +++---- workflow/engine/js/cases/core/pmDynaform.js | 29 ++++++-------------- workflow/engine/templates/cases/open.js | 2 +- 3 files changed, 14 insertions(+), 27 deletions(-) diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index 61ebf680c..9f6cf0dc3 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -101,7 +101,7 @@ class pmDynaform ); } //query & options - if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "dropdown" || $value === "suggets")) { + if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "dropdown" || $value === "suggest")) { if (!isset($json->dbConnection)) $json->dbConnection = "none"; if (!isset($json->sql)) @@ -135,14 +135,14 @@ class pmDynaform //data if ($column->type === "text" || $column->type === "textarea" || $column->type === "dropdown") { array_push($cells, array( - "value" => $row[$column->name], - "label" => $row[$column->name . "_label"] + "value" => isset($row[$column->name]) ? $row[$column->name] : "", + "label" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : "" )); } if ($column->type === "suggest") { array_push($cells, array( - "value" => $row[$column->name . "_label"], - "label" => $row[$column->name] + "value" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : "", + "label" => isset($row[$column->name]) ? $row[$column->name] : "" )); } } diff --git a/workflow/engine/js/cases/core/pmDynaform.js b/workflow/engine/js/cases/core/pmDynaform.js index 62030d439..befaa4abd 100644 --- a/workflow/engine/js/cases/core/pmDynaform.js +++ b/workflow/engine/js/cases/core/pmDynaform.js @@ -1,25 +1,11 @@ +function ajax_post(action, form, method, callback, asynchronous) { + document.getElementById("dyn_forward").onclick(); + window.onload = function () { + method(); + }; +} function dynaFormChanged(frm) { - for (var i1 = 0; i1 <= frm.elements.length - 1; i1++) { - if ((frm.elements[i1].type === "radio" || frm.elements[i1].type === "checkbox") && (frm.elements[i1].checked !== frm.elements[i1].defaultChecked)) { - return true; - } - if ((frm.elements[i1].type === "textarea" || frm.elements[i1].type === "text" || frm.elements[i1].type === "file") && (frm.elements[i1].value !== frm.elements[i1].defaultValue)) { - return true; - } - if (frm.elements[i1].tagName.toLowerCase() === "select") { - var selectDefaultValue = frm.elements[i1].value; - for (var i2 = 0; i2 <= frm.elements[i1].options.length - 1; i2++) { - if (frm.elements[i1].options[i2].defaultSelected) { - selectDefaultValue = frm.elements[i1].options[i2].value; - break; - } - } - if (frm.elements[i1].value !== selectDefaultValue) { - return true; - } - } - } - return false; + return true; } $(window).load(function () { if (pm_run_outside_main_app === 'true') { @@ -28,6 +14,7 @@ $(window).load(function () { } if (parent.setCurrent) { parent.setCurrent(dyn_uid); + } } var data = jsondata; diff --git a/workflow/engine/templates/cases/open.js b/workflow/engine/templates/cases/open.js index 8e640d494..bcd38d4f4 100755 --- a/workflow/engine/templates/cases/open.js +++ b/workflow/engine/templates/cases/open.js @@ -249,7 +249,7 @@ Ext.onReady(function(){ if (iframeDynaForm.getElementsByTagName("form")) { dynaformChange = iframeDynaForm.getElementsByTagName("form").item(0); - if (typeof(window.frames["openCaseFrame"].dynaFormChanged) == "function") { + if (typeof(window.frames["openCaseFrame"].dynaFormChanged) == "function" && dynaformChange) { swDynaformChange = (window.frames["openCaseFrame"].dynaFormChanged(dynaformChange))? 1 : 0; } } From 77fd5e7f839db59224afc154ee18d640fb641edf Mon Sep 17 00:00:00 2001 From: Ronald Quenta Date: Tue, 3 Mar 2015 10:50:51 -0400 Subject: [PATCH 03/13] add endpoints for get information in status paused and participated --- .../src/ProcessMaker/BusinessModel/Light.php | 74 +++++++++++++++++++ .../src/ProcessMaker/Services/Api/Light.php | 18 +++++ 2 files changed, 92 insertions(+) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php index 2d423184f..3c0ba80dd 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php @@ -592,4 +592,78 @@ class Light return $response; } + + /** + * Get information for status paused and participated or other status + * + * @param $userUid + * @param $type + * @param $app_uid + * @throws \Exception + */ + public function getInformation($userUid, $type, $app_uid) + { + switch ($type) { + case 'paused': + case 'participated': + $oCase = new \Cases(); + $iDelIndex = $oCase->getCurrentDelegationCase( $app_uid ); + $aFields = $oCase->loadCase( $app_uid, $iDelIndex ); + $this->getInfoResume($userUid, $aFields, $type); + break; + } + } + + /** + * view in html response for status + * + * @param $userUid + * @param $Fields + * @param $type + * @throws \Exception + */ + public function getInfoResume($userUid, $Fields, $type) + { + //print_r($Fields);die; + /* Includes */ + G::LoadClass( 'case' ); + /* Prepare page before to show */ + //$oCase = new \Cases(); + +// $participated = $oCase->userParticipatedInCase( $Fields['APP_UID'], $userUid ); +// if ($RBAC->userCanAccess( 'PM_ALLCASES' ) < 0 && $participated == 0) { +// /*if (strtoupper($Fields['APP_STATUS']) != 'COMPLETED') { +// $oCase->thisIsTheCurrentUser($_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'SHOW_MESSAGE'); +// }*/ +// $aMessage['MESSAGE'] = G::LoadTranslation( 'ID_NO_PERMISSION_NO_PARTICIPATED' ); +// $G_PUBLISH = new Publisher(); +// $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', $aMessage ); +// G::RenderPage( 'publishBlank', 'blank' ); +// die(); +// } + + $objProc = new \Process(); + $aProc = $objProc->load( $Fields['PRO_UID'] ); + $Fields['PRO_TITLE'] = $aProc['PRO_TITLE']; + + $objTask = new \Task(); + + if (isset($_SESSION['ACTION']) && ($_SESSION['ACTION'] == 'jump')) { + $task = explode('-', $Fields['TAS_UID']); + $Fields['TAS_TITLE'] = ''; + for( $i = 0; $i < sizeof($task)-1; $i ++ ) { + $aTask = $objTask->load( $task[$i] ); + $Fields['TAS_TITLE'][] = $aTask['TAS_TITLE']; + } + $Fields['TAS_TITLE'] = implode(" - ", array_values($Fields['TAS_TITLE'])); + } else { + $aTask = $objTask->load( $Fields['TAS_UID'] ); + $Fields['TAS_TITLE'] = $aTask['TAS_TITLE']; + } + + require_once(PATH_GULLIVER .'../thirdparty/smarty/libs/Smarty.class.php'); + $G_PUBLISH = new \Publisher(); + $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'cases/cases_Resume.xml', '', $Fields, '' ); + $G_PUBLISH->RenderContent(); + } } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Light.php b/workflow/engine/src/ProcessMaker/Services/Api/Light.php index bac12171a..1148d746e 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Light.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Light.php @@ -713,4 +713,22 @@ class Light extends Api } return $files; } + + /** + * @url GET /:type/case/:app_uid + * + * @param $access + * @param $refresh + * @return mixed + */ + public function getInformation($type, $app_uid) + { + try { + $userUid = $this->getUserId(); + $oMobile = new \ProcessMaker\BusinessModel\Light(); + $oMobile->getInformation($userUid, $type, $app_uid); + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } } From b7d37ca3fb343cda2eb8f8bd2c186ac8bb0dda3d Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Tue, 3 Mar 2015 15:17:43 -0400 Subject: [PATCH 04/13] PM-1521 --- Rakefile | 3 +- workflow/engine/classes/class.pmDynaform.php | 38 +++++++++++--------- workflow/engine/js/cases/core/pmDynaform.js | 3 ++ workflow/engine/methods/cases/cases_Step.php | 1 + 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/Rakefile b/Rakefile index 8c314a6fc..e66aa1033 100644 --- a/Rakefile +++ b/Rakefile @@ -230,7 +230,8 @@ def buildMafe(homeDir, targetDir, mode) "#{homeDir}/build/js/designer.js" => "#{mafeDir}/designer.min.js", "#{homeDir}/build/js/mafe.js" => "#{mafeDir}/mafe.min.js", "#{homeDir}/build/css/mafe.css" => "#{mafeDir}/mafe.min.css", - "#{homeDir}/img/*.*" => "#{imgTargetDir}" + "#{homeDir}/img/*.*" => "#{imgTargetDir}", + "#{targetDir}/../lib-dev/pmUI/images/*.*" => "#{imgTargetDir}" }) puts "\nCopying lib files into: #{jsTargetDir}".bold diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index 9f6cf0dc3..a6e6806be 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -87,21 +87,8 @@ class pmDynaform $json->$key = $this->app_data[$triggerValue]; } } - //data - if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "dropdown")) { - $json->data = array( - "value" => isset($this->data[$json->name]) ? $this->data[$json->name] : "", - "label" => isset($this->data[$json->name . "_label"]) ? $this->data[$json->name . "_label"] : "" - ); - } - if ($key === "type" && ($value === "suggets")) { - $json->data = array( - "value" => isset($this->data[$json->name . "_label"]) ? $this->data[$json->name . "_label"] : "", - "label" => isset($this->data[$json->name]) ? $this->data[$json->name] : "" - ); - } //query & options - if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "dropdown" || $value === "suggest")) { + if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "dropdown" || $value === "suggest" || $value === "checkbox" || $value === "radio")) { if (!isset($json->dbConnection)) $json->dbConnection = "none"; if (!isset($json->sql)) @@ -120,9 +107,24 @@ class pmDynaform ); array_push($json->options, $option); } - $json->data = isset($json->options[0]) ? $json->options[0] : $json->data; + if (isset($json->options[0])) { + $json->data = $json->options[0]; + } } } + //data + if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "dropdown" || $value === "checkbox" || $value === "radio")) { + $json->data = array( + "value" => isset($this->data[$json->name]) ? $this->data[$json->name] : "", + "label" => isset($this->data[$json->name . "_label"]) ? $this->data[$json->name . "_label"] : "" + ); + } + if ($key === "type" && ($value === "suggest")) { + $json->data = array( + "value" => isset($this->data[$json->name . "_label"]) ? $this->data[$json->name . "_label"] : "", + "label" => isset($this->data[$json->name]) ? $this->data[$json->name] : "" + ); + } //grid if ($key === "type" && ($value === "grid")) { if (isset($this->data[$json->name])) { @@ -191,6 +193,7 @@ class pmDynaform "var credentials = " . G::json_encode($clientToken) . ";\n" . "var filePost = null;\n" . "var fieldsRequired = null;\n" . + "var triggerDebug = null;\n" . "$(window).load(function () {\n" . " var data = jsondata;\n" . " data.items[0].mode = 'view';\n" . @@ -221,6 +224,7 @@ class pmDynaform public function printEdit($pm_run_outside_main_app, $application, $headData, $step_mode = 'EDIT') { + error_log(print_r($this->app_data, true)); ob_clean(); $json = G::json_decode($this->record["DYN_CONTENT"]); $this->jsonr($json); @@ -242,6 +246,7 @@ class pmDynaform "var credentials = " . G::json_encode($this->credentials) . ";\n" . "var filePost = null;\n" . "var fieldsRequired = null;\n" . + "var triggerDebug = " . ($this->app_data["TRIGGER_DEBUG"] === 1 ? "true" : "false") . ";\n" . "\n" . "\n" . "\n" . @@ -282,6 +287,7 @@ class pmDynaform "var credentials = " . G::json_encode($this->credentials) . ";\n" . "var filePost = '" . $filename . "';\n" . "var fieldsRequired = " . G::json_encode($this->arrayFieldRequired) . ";\n" . + "var triggerDebug = null;\n" . "\n" . "\n" . "
\n" . @@ -387,7 +393,7 @@ class pmDynaform { if ($this->debugMode) { echo "
";
-            echo G::json_encode($json);
+            echo G::json_encode(array($this->app_data, $this->data));
             echo "
"; } } diff --git a/workflow/engine/js/cases/core/pmDynaform.js b/workflow/engine/js/cases/core/pmDynaform.js index befaa4abd..bc6ddf189 100644 --- a/workflow/engine/js/cases/core/pmDynaform.js +++ b/workflow/engine/js/cases/core/pmDynaform.js @@ -75,4 +75,7 @@ $(window).load(function () { form.submit(); return false; }; + if (triggerDebug === true) { + showdebug(); + } }); \ No newline at end of file diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php index 5daf495cc..6ee2a1c8d 100755 --- a/workflow/engine/methods/cases/cases_Step.php +++ b/workflow/engine/methods/cases/cases_Step.php @@ -272,6 +272,7 @@ try { $a = new pmDynaform($_GET['UID'], $Fields['APP_DATA']); if ($a->isResponsive()) { $a->app_data["PRO_SHOW_MESSAGE"] = $noShowTitle; + $a->app_data["TRIGGER_DEBUG"] = $_SESSION['TRIGGER_DEBUG']['ISSET']; $a->printEdit((!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) ? "true" : "false", $_SESSION['APPLICATION'], $array, $oStep->getStepMode()); } else { $G_PUBLISH->AddContent('dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_GET['UID'], '', $Fields['APP_DATA'], 'cases_SaveData?UID=' . $_GET['UID'] . '&APP_UID=' . $_SESSION['APPLICATION'], '', (strtolower($oStep->getStepMode()) != 'edit' ? strtolower($oStep->getStepMode()) : '')); From 752e65a57f95cf1c1b46b752de2accd7f6777be3 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Tue, 3 Mar 2015 16:32:11 -0400 Subject: [PATCH 05/13] PM-1691 "0016872: Event execution times are not being..." SOLVED Issue: 0016872: Event execution times are not being generated correctly Cause: Se esta mandando un numero real (ej 955.33) a la funcion "strtotime" Solution: Se esta redondeando el numero con la funcion "round", para que de esa manera se mande un numero entero a la funcion "strtotime" Explanation: - En nuestro "Calendario" se tiene definido por default que son 8 horas de trabajo por dia (8 horas/dia) - En el proceso adjunto en el bug, se tiene definido lo siguiente: > ... > The time starts with task: Task2 > Estimated Task duration: 8 hours (esto se transforma a: 0.33333333333333 (8/24), segun la wiki) > Execution time: 0 days After interval ends > ... Estos valores mas el resto de campos son almacenados en la tabla "EVENT" - Ahora como ejemplo tenemos el siguiente caso: en fecha y hora "2015-03-03 13:49:52" se inicia un caso con el Task1 y es derivado al Task2, entonces se crea un registro en la tabla "APP_EVENT". El campo que es objeto de estudio es "APP_EVENT.APP_EVN_ACTION_DATE", el cual tiene un valor de "2015-03-03 16:29:52" - Entonces el analisis es el siguiente: 0.33333333333333 dias * 8 horas/dia = 2.6666666666666 horas Lo que quiere decir que el cron.php ejecutara/iniciara/revisara el caso el "2015-03-03 13:49:52" + "2.6666666666666 horas" osea el "2015-03-03 16:29:52" --- workflow/engine/classes/class.calendar.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workflow/engine/classes/class.calendar.php b/workflow/engine/classes/class.calendar.php index 07939d4bd..e6e28c5b9 100755 --- a/workflow/engine/classes/class.calendar.php +++ b/workflow/engine/classes/class.calendar.php @@ -414,7 +414,7 @@ class calendar extends CalendarDefinition $hoursDuration -= (float)($secondRes/3600); //$dataLog[] = (float)($secondRes/3600); } else { - $newDate = date('Y-m-d H:i:s', strtotime('+' . (((float)$hoursDuration)*3600) . ' seconds', strtotime($newDate))); + $newDate = date("Y-m-d H:i:s", strtotime("+" . round(((float)($hoursDuration)) * 3600) . " seconds", strtotime($newDate))); //$dataLog[] = (float)($hoursDuration); $hoursDuration = 0; } @@ -797,4 +797,4 @@ class calendar extends CalendarDefinition } } -?> \ No newline at end of file +?> From 0340a295418cee66b160f537bb1e15ac08dfb4f6 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 4 Mar 2015 11:15:56 -0400 Subject: [PATCH 06/13] fix in oauth in distinct workspace --- framework/src/Maveriks/WebApplication.php | 4 +++- workflow/engine/src/ProcessMaker/Services/OAuth2/Server.php | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/framework/src/Maveriks/WebApplication.php b/framework/src/Maveriks/WebApplication.php index 42fc81e1c..58f0aef75 100644 --- a/framework/src/Maveriks/WebApplication.php +++ b/framework/src/Maveriks/WebApplication.php @@ -297,7 +297,9 @@ class WebApplication $port = empty($port) ? '' : ";port=$port"; Services\OAuth2\Server::setDatabaseSource(DB_USER, DB_PASS, DB_ADAPTER.":host=$host;dbname=".DB_NAME.$port); if (DB_NAME != DB_RBAC_NAME) { //it's PM < 3 - Services\OAuth2\Server::setDatabaseSourceRBAC(DB_RBAC_USER, DB_RBAC_PASS, DB_ADAPTER.":host=".DB_RBAC_HOST.";dbname=".DB_RBAC_NAME.$port); + list($host, $port) = strpos(DB_RBAC_HOST, ':') !== false ? explode(':', DB_RBAC_HOST) : array(DB_RBAC_HOST, ''); + $port = empty($port) ? '' : ";port=$port"; + Services\OAuth2\Server::setDatabaseSourceRBAC(DB_RBAC_USER, DB_RBAC_PASS, DB_ADAPTER.":host=$host;dbname=".DB_RBAC_NAME.$port); } // Setting default OAuth Client id, for local PM Web Designer diff --git a/workflow/engine/src/ProcessMaker/Services/OAuth2/Server.php b/workflow/engine/src/ProcessMaker/Services/OAuth2/Server.php index fde833117..6ff57df53 100644 --- a/workflow/engine/src/ProcessMaker/Services/OAuth2/Server.php +++ b/workflow/engine/src/ProcessMaker/Services/OAuth2/Server.php @@ -49,7 +49,7 @@ class Server implements iAuthenticate $cnn = array('dsn' => self::$dsn, 'username' => self::$dbUser, 'password' => self::$dbPassword); if (self::$isRBAC) { - $config = array('user_table' => 'USERS'); + $config = array(); $cnnrbac = array('dsn' => self::$dsnRBAC, 'username' => self::$dbUserRBAC, 'password' => self::$dbPasswordRBAC); $this->storage = new PmPdo($cnn, $config, $cnnrbac); } else { From 7a0ace2bdaa56c176c60c4683b96fc26e646994b Mon Sep 17 00:00:00 2001 From: Richard Yujra Date: Wed, 4 Mar 2015 12:28:49 -0400 Subject: [PATCH 07/13] config pmdynaform.html to support new datetime and ie8 --- workflow/engine/templates/cases/pmdynaform.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/workflow/engine/templates/cases/pmdynaform.html b/workflow/engine/templates/cases/pmdynaform.html index e3920be59..b93895beb 100644 --- a/workflow/engine/templates/cases/pmdynaform.html +++ b/workflow/engine/templates/cases/pmdynaform.html @@ -7,9 +7,11 @@ + + @@ -19,6 +21,7 @@
###TEMPLATES### + {javascript} From abcb772202e75bdff473b39fde0677f63b37f026 Mon Sep 17 00:00:00 2001 From: Ronald Quenta Date: Wed, 4 Mar 2015 14:32:11 -0400 Subject: [PATCH 08/13] Fix in list start case --- workflow/engine/src/ProcessMaker/BusinessModel/Light.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php index 3c0ba80dd..c55094132 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php @@ -55,6 +55,7 @@ class Light $task->setFormatFieldNameInUppercase(false); $task->setArrayParamException(array("taskUid" => "act_uid", "stepUid" => "step_uid")); + $response = array(); foreach ($processList as $key => $processInfo) { $tempTreeChildren = array (); foreach ($processList[$key] as $keyChild => $processInfoChild) { @@ -78,7 +79,7 @@ class Light $tempTreeChildren[] = $tempTreeChild; } } - $response = $tempTreeChildren; + $response = array_merge($response, $tempTreeChildren); } } catch (\Exception $e) { throw $e; From 8a0b87a267afb9f4560d3abb7eb1582b8bd501ca Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Wed, 4 Mar 2015 15:51:33 -0400 Subject: [PATCH 09/13] IMPROVEMENT --- Rakefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Rakefile b/Rakefile index e66aa1033..8c314a6fc 100644 --- a/Rakefile +++ b/Rakefile @@ -230,8 +230,7 @@ def buildMafe(homeDir, targetDir, mode) "#{homeDir}/build/js/designer.js" => "#{mafeDir}/designer.min.js", "#{homeDir}/build/js/mafe.js" => "#{mafeDir}/mafe.min.js", "#{homeDir}/build/css/mafe.css" => "#{mafeDir}/mafe.min.css", - "#{homeDir}/img/*.*" => "#{imgTargetDir}", - "#{targetDir}/../lib-dev/pmUI/images/*.*" => "#{imgTargetDir}" + "#{homeDir}/img/*.*" => "#{imgTargetDir}" }) puts "\nCopying lib files into: #{jsTargetDir}".bold From c11b14fee967b7ccd9f892be2e23a5377ac490a3 Mon Sep 17 00:00:00 2001 From: "marcelo.cuiza" Date: Wed, 4 Mar 2015 16:11:01 -0400 Subject: [PATCH 10/13] PM-1650 Nuevo directorio para filtrar xss --- ...166bfe16a0cc6bd18d813b83121ef2eaf16545,1.ser | Bin 0 -> 25532 bytes ...03c8ec0e84e7feb92afd4c0f1735841b5fdacf,1.ser | Bin 0 -> 516 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 gulliver/thirdparty/HTMLPurifier/HTMLPurifier/DefinitionCache/Serializer/CSS/4.6.0,24166bfe16a0cc6bd18d813b83121ef2eaf16545,1.ser create mode 100644 gulliver/thirdparty/HTMLPurifier/HTMLPurifier/DefinitionCache/Serializer/URI/4.6.0,8d03c8ec0e84e7feb92afd4c0f1735841b5fdacf,1.ser diff --git a/gulliver/thirdparty/HTMLPurifier/HTMLPurifier/DefinitionCache/Serializer/CSS/4.6.0,24166bfe16a0cc6bd18d813b83121ef2eaf16545,1.ser b/gulliver/thirdparty/HTMLPurifier/HTMLPurifier/DefinitionCache/Serializer/CSS/4.6.0,24166bfe16a0cc6bd18d813b83121ef2eaf16545,1.ser new file mode 100644 index 0000000000000000000000000000000000000000..fe7977acbaf2b8d6484375b1d243fcfc794e314a GIT binary patch literal 25532 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 literal 0 HcmV?d00001 From 578d58a89fca01033503d10cbf9e1b7f2f2f1dd5 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Wed, 4 Mar 2015 16:51:41 -0400 Subject: [PATCH 11/13] PM-1723 "Designer: Se pierde las configuraciones de un..." SOLVED MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: Designer: Se pierde las configuraciones de un subproceso al importar el proceso Cause: Al momento de importar no se esta registrando de manera correcta los registros en la tabla "SUB_PROCESS" Solution: Se esta validando que los registros en la tabla "SUB_PROCESS" sean unicos al momento de la importacion Explanation: - Al momento de la importacion de un projecto, si un Activity de tipo sub-process tiene definido sus properties, esta configuracion se registra en la tabla correspondiente, no importando si previamente ya fue importado el projecto que es el sub-process. - La importacion del projecto-principal y el projecto-sub-proceso es independiente, este criterio ya se lo tiene en produccion desde hace varias veriones atras. - Un ejemplo practico seria el siguiente caso: Un administrador exporta el projecto-principal y el projecto-sub-proceso, y dadas las circunstancias el projecto-sub-proceso se pierde, daƱetc. Entonces el administrador por lo menos lograra importar en su workspace el projecto-principal (pues la importacion no valida que primero deba importar el projecto-sub-proceso) --- workflow/engine/classes/class.processes.php | 17 ++++++++++++++--- .../src/ProcessMaker/Project/Workflow.php | 7 +++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php index 513b78ba1..6725e8f66 100755 --- a/workflow/engine/classes/class.processes.php +++ b/workflow/engine/classes/class.processes.php @@ -1516,9 +1516,20 @@ class Processes { foreach ($SubProcess as $key => $row) { $oSubProcess = new SubProcess(); - if ($oSubProcess->subProcessExists( $row['SP_UID'] )) { - $oSubProcess->remove( $row['SP_UID'] ); - } + + //if ($oSubProcess->subProcessExists( $row['SP_UID'] )) { + // $oSubProcess->remove( $row['SP_UID'] ); + //} + + //Delete + $criteria = new Criteria("workflow"); + + $criteria->add(SubProcessPeer::PRO_PARENT, $row["PRO_PARENT"], Criteria::EQUAL); + $criteria->add(SubProcessPeer::TAS_PARENT, $row["TAS_PARENT"], Criteria::EQUAL); + + $result = SubProcessPeer::doDelete($criteria); + + //Create $res = $oSubProcess->create( $row ); } return; diff --git a/workflow/engine/src/ProcessMaker/Project/Workflow.php b/workflow/engine/src/ProcessMaker/Project/Workflow.php index 688023b9d..c46911cfc 100755 --- a/workflow/engine/src/ProcessMaker/Project/Workflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Workflow.php @@ -764,6 +764,13 @@ class Workflow extends Handler $oCriteria->add(\CaseTrackerObjectPeer::PRO_UID, $sProcessUID); \ProcessUserPeer::doDelete($oCriteria); + //Delete SubProcess + $criteria = new \Criteria("workflow"); + + $criteria->add(\SubProcessPeer::PRO_PARENT, $sProcessUID, \Criteria::EQUAL); + + $result = \SubProcessPeer::doDelete($criteria); + //Delete WebEntries $webEntry = new \ProcessMaker\BusinessModel\WebEntry(); From 681dfff07d55d9f319fc35f2f642236e555f3780 Mon Sep 17 00:00:00 2001 From: jonathan Date: Wed, 4 Mar 2015 17:25:52 -0400 Subject: [PATCH 12/13] fix 1423 view proces map legends in internet explorer --- workflow/engine/templates/cases/open.js | 39 ++++++++++++++++--------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/workflow/engine/templates/cases/open.js b/workflow/engine/templates/cases/open.js index bcd38d4f4..32dbe0da1 100755 --- a/workflow/engine/templates/cases/open.js +++ b/workflow/engine/templates/cases/open.js @@ -30,7 +30,14 @@ function formatAMPM(date, initVal) { minutes = minutes < 10 ? '0'+minutes : minutes; var strTime = hours + ':' + minutes + ' ' + ampm; return strTime; -} +}; + +function isBrowserIE(){ + if(navigator.appName.indexOf("Internet Explorer")!=-1){ //yeah, he's using IE + return true; + } + return false; +}; Ext.onReady(function(){ openToRevisePanel = function() { @@ -1531,20 +1538,24 @@ Ext.onReady(function(){ TabPanel.setActiveTab(tabId); } else { - TabPanel.add({ - id: tabId, - title: menuSelectedTitle[name], - frameConfig: {name: name + 'Frame', id: name + 'Frame'}, - defaultSrc: uri, - loadMask: {msg: _('ID_LOADING_GRID') + '...'}, - autoWidth: true, - closable: true, - autoScroll: true, - bodyStyle: {height: (PMExt.getBrowser().screen.height - 60) + 'px', overflow: 'auto'} - }).show(); + if(!isBrowserIE()){ + TabPanel.add({ + id: tabId, + title: menuSelectedTitle[name], + frameConfig: {name: name + 'Frame', id: name + 'Frame'}, + defaultSrc: uri, + loadMask: {msg: _('ID_LOADING_GRID') + '...'}, + autoWidth: true, + closable: true, + autoScroll: true, + bodyStyle: {height: (PMExt.getBrowser().screen.height - 60) + 'px', overflow: 'auto'} + }).show(); - TabPanel.doLayout(); - } + TabPanel.doLayout(); + }else{ + var windContainer = window.open(uri,"winContainer"); + } + } } }, failure: function ( result, request) { From 90425e7a6efb4bf49e3f6731ad3a25d903de6aa9 Mon Sep 17 00:00:00 2001 From: jonathan Date: Thu, 5 Mar 2015 10:51:54 -0400 Subject: [PATCH 13/13] update function for recognize ie11 --- workflow/engine/templates/cases/open.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/workflow/engine/templates/cases/open.js b/workflow/engine/templates/cases/open.js index 32dbe0da1..ea9cc3336 100755 --- a/workflow/engine/templates/cases/open.js +++ b/workflow/engine/templates/cases/open.js @@ -33,10 +33,11 @@ function formatAMPM(date, initVal) { }; function isBrowserIE(){ - if(navigator.appName.indexOf("Internet Explorer")!=-1){ //yeah, he's using IE - return true; - } - return false; + if ( (navigator.userAgent.indexOf("MSIE")!=-1) || (navigator.userAgent.indexOf("Trident")!=-1) ){ + return true; + } else { + return false; + } }; Ext.onReady(function(){