diff --git a/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js b/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js new file mode 100644 index 000000000..088ec1d44 --- /dev/null +++ b/workflow/engine/js/cases/core/cases_Step_Pmdynaform.js @@ -0,0 +1,39 @@ +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; +} + +window.onload = function () { + var data = JSON.parse(jsondata); + var modelPMDynaform = new PMDynaform.Model.Form(data); + var viewPMDynaform = new PMDynaform.View.Form({tagName: "div", renderTo: $(".container"), model: modelPMDynaform}); + + if (pm_run_outside_main_app === 'true') { + if (parent.showCaseNavigatorPanel) { + parent.showCaseNavigatorPanel('DRAFT'); + } + + if (parent.setCurrent) { + parent.setCurrent(dyn_uid); + } + } +}; \ 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 e3ba4277f..235dd589c 100755 --- a/workflow/engine/methods/cases/cases_Step.php +++ b/workflow/engine/methods/cases/cases_Step.php @@ -257,7 +257,32 @@ try { $oDbConnections->loadAdditionalConnections(); $_SESSION['CURRENT_DYN_UID'] = $_GET['UID']; - $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() ) : '') ); + /* + * Checks the type of Dynaform. + * DYN_VERSION: 1 is classic Dynaform, 2 is Pmdynaform (responsive form). + */ + $a = new Criteria("workflow"); + $a->addSelectColumn(DynaformPeer::DYN_VERSION); + $a->addSelectColumn(DynaformPeer::DYN_CONTENT); + $a->add(DynaformPeer::DYN_UID, $_GET['UID'], Criteria::EQUAL); + $ds = ProcessPeer::doSelectRS($a); + $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $ds->next(); + $row = $ds->getRow(); + if (isset($row) && $row["DYN_VERSION"] == 2) { + $oTemplatePower = new TemplatePower(PATH_TPL . 'cases/cases_Step_Pmdynaform.html'); + $oTemplatePower->prepare(); + $oTemplatePower->assign("JSON_DATA", $row["DYN_CONTENT"]); + $oTemplatePower->assign("CASE", $array["CASE"]); + $oTemplatePower->assign("APP_NUMBER", $array["APP_NUMBER"]); + $oTemplatePower->assign("TITLE", $array["TITLE"]); + $oTemplatePower->assign("APP_TITLE", $array["APP_TITLE"]); + $oTemplatePower->assign("PM_RUN_OUTSIDE_MAIN_APP", (!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) ? "true" : "false"); + $oTemplatePower->assign("DYN_UID", $_GET['UID']); + } 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()) : '')); + } + break; case 'INPUT_DOCUMENT': if ($noShowTitle == 0) { @@ -1018,29 +1043,36 @@ try { die(); } -$oHeadPublisher = & headPublisher::getSingleton(); -$oHeadPublisher->addScriptFile( "/jscore/cases/core/cases_Step.js" ); +/* + * Checks the type of Dynaform. + * DYN_VERSION: 1 is classic Dynaform, 2 is Pmdynaform (responsive form). + */ +if (isset($row) && $row["DYN_VERSION"] == 2) { + $oTemplatePower->printToScreen(); +} else { + $oHeadPublisher = & headPublisher::getSingleton(); + $oHeadPublisher->addScriptFile( "/jscore/cases/core/cases_Step.js" ); -if (!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) { - $oHeadPublisher->addScriptCode( " - if (typeof parent != 'undefined') { - if (parent.showCaseNavigatorPanel) { - parent.showCaseNavigatorPanel('$sStatus'); - } + if (!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) { + $oHeadPublisher->addScriptCode( " + if (typeof parent != 'undefined') { + if (parent.showCaseNavigatorPanel) { + parent.showCaseNavigatorPanel('$sStatus'); + } - if (parent.setCurrent) { - parent.setCurrent('" . $_GET['UID'] . "'); - } - }" ); + if (parent.setCurrent) { + parent.setCurrent('" . $_GET['UID'] . "'); + } + }" ); + } + + G::RenderPage( 'publish', 'blank' ); + + if ($_SESSION['TRIGGER_DEBUG']['ISSET']) { + G::evalJScript( ' + if (typeof showdebug != \'undefined\') { + showdebug(); + }' ); + } } - -G::RenderPage( 'publish', 'blank' ); - -if ($_SESSION['TRIGGER_DEBUG']['ISSET']) { - G::evalJScript( ' - if (typeof showdebug != \'undefined\') { - showdebug(); - }' ); -} - diff --git a/workflow/engine/templates/cases/cases_Step_Pmdynaform.html b/workflow/engine/templates/cases/cases_Step_Pmdynaform.html new file mode 100644 index 000000000..bc19f08a7 --- /dev/null +++ b/workflow/engine/templates/cases/cases_Step_Pmdynaform.html @@ -0,0 +1,347 @@ + + +
+| {CASE} #: {APP_NUMBER} {TITLE}: {APP_TITLE} | +