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 1/3] 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 2/3] 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 0340a295418cee66b160f537bb1e15ac08dfb4f6 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 4 Mar 2015 11:15:56 -0400 Subject: [PATCH 3/3] 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 {