diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index daa4b6e5f..e779d85f6 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -971,6 +971,11 @@ class Cases public function updateCase($sAppUid, $Fields = array()) { try { + $dynContentHistory = ""; + if (isset($Fields["APP_DATA"]) && isset($Fields["APP_DATA"]["DYN_CONTENT_HISTORY"])) { + $dynContentHistory = $Fields["APP_DATA"]["DYN_CONTENT_HISTORY"]; + unset($Fields["APP_DATA"]["DYN_CONTENT_HISTORY"]); + } $oApplication = new Application; if (!$oApplication->exists($sAppUid)) { return false; @@ -1011,6 +1016,7 @@ class Cases $Fields['APP_STATUS'] = (isset($Fields['APP_STATUS'])) ? $Fields['APP_STATUS'] : $FieldsBefore['APP_STATUS']; $appHistory = new AppHistory(); $aFieldsHistory = $Fields; + $FieldsDifference['DYN_CONTENT_HISTORY'] = $dynContentHistory; $aFieldsHistory['APP_DATA'] = serialize($FieldsDifference); $appHistory->insertHistory($aFieldsHistory); } diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index c6f318521..64391c24c 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -23,13 +23,10 @@ class pmDynaform $this->fields = $fields; $this->getDynaform(); $this->getCredentials(); - if (isset($this->fields["APP_UID"])) { - //current - $cases = new \ProcessMaker\BusinessModel\Cases(); - } else { - //history + if (!isset($this->fields["APP_UID"])) { $this->fields["APP_UID"] = null; - if (isset($this->fields["APP_DATA"]["DYN_CONTENT_HISTORY"])) + } + if (isset($this->fields["APP_DATA"]["DYN_CONTENT_HISTORY"])) { $this->record["DYN_CONTENT"] = $this->fields["APP_DATA"]["DYN_CONTENT_HISTORY"]; } } diff --git a/workflow/engine/js/cases/core/pmDynaform.js b/workflow/engine/js/cases/core/pmDynaform.js index 06e987550..e6122b3f0 100644 --- a/workflow/engine/js/cases/core/pmDynaform.js +++ b/workflow/engine/js/cases/core/pmDynaform.js @@ -7,6 +7,15 @@ function ajax_post(action, form, method, callback, asynchronous) { function dynaFormChanged(frm) { return false; } +function clearData(data) { + for (var i in data) { + if (data[i] instanceof Array || data[i] instanceof Object) + data[i] = clearData(data[i]); + if (i === "optionsSql") + data[i] = []; + } + return data; +} $(window).load(function () { if (pm_run_outside_main_app === 'true') { if (parent.showCaseNavigatorPanel) { @@ -33,7 +42,7 @@ $(window).load(function () { var dyn_content_history = document.createElement("input"); dyn_content_history.type = "hidden"; dyn_content_history.name = "form[DYN_CONTENT_HISTORY]"; - dyn_content_history.value = JSON.stringify(jsondata); + dyn_content_history.value = JSON.stringify(clearData(jsondata)); var dynaformname = document.createElement("input"); dynaformname.type = "hidden"; dynaformname.name = "__DynaformName__"; diff --git a/workflow/engine/methods/cases/ajaxListener.php b/workflow/engine/methods/cases/ajaxListener.php index 8270614be..11cc24ea3 100755 --- a/workflow/engine/methods/cases/ajaxListener.php +++ b/workflow/engine/methods/cases/ajaxListener.php @@ -858,6 +858,7 @@ class Ajax $Fields["APP_DATA"]["__DYNAFORM_OPTIONS"]["NEXT_STEP"] = "#"; $Fields["APP_DATA"]["__DYNAFORM_OPTIONS"]["NEXT_ACTION"] = "return false;"; G::LoadClass('pmDynaform'); + $FieldsPmDynaform = $Fields; $FieldsPmDynaform["PRO_UID"] = $_SESSION['PROCESS']; $FieldsPmDynaform["CURRENT_DYNAFORM"] = $_REQUEST['DYN_UID']; $a = new pmDynaform($FieldsPmDynaform);