diff --git a/Rakefile b/Rakefile index 11246cd7a..123d679d1 100644 --- a/Rakefile +++ b/Rakefile @@ -173,14 +173,12 @@ def buildPmdynaform(homeDir, targetDir, mode) pmdynaformDir = targetDir + "/pmdynaform" executeInto(homeDir, [ "default"]) - - system("cp -r #{homeDir}/build #{pmdynaformDir}") - system("cp -r #{homeDir}/libs #{pmdynaformDir}") - system("rm #{pmdynaformDir}/build/appBuild.js") - readyForm = "" - system("echo '#{readyForm}' >> #{pmdynaformDir}/build/appBuild.js ") - system("cp #{Dir.pwd}/workflow/engine/templates/cases/cases_Step_Pmdynaform.html #{pmdynaformDir}/build/cases_Step_Pmdynaform.html") - system("cp #{Dir.pwd}/workflow/engine/templates/cases/cases_Step_Pmdynaform_Preview.html #{pmdynaformDir}/build/cases_Step_Pmdynaform_Preview.html") + + require 'fileutils' + Dir.mkdir("#{pmdynaformDir}/build") + FileUtils.cp_r(Dir["#{homeDir}/build/*"],"#{pmdynaformDir}/build") + Dir.mkdir("#{pmdynaformDir}/libs") + FileUtils.cp_r(Dir["#{homeDir}/libs/*"],"#{pmdynaformDir}/libs") template = "" config = File.read "#{homeDir}/config/templates.json" @@ -188,28 +186,25 @@ def buildPmdynaform(homeDir, targetDir, mode) json.each do |key| s = "" key["files"].each do |source| - s += File.read "#{homeDir}/#{source}" + s += File.read "#{homeDir}/#{source}" s += "\n" end template += s end - target = "#{pmdynaformDir}/build/cases_Step_Pmdynaform.html" - html = File.read target - while html['###TEMPLATES##'] do - html['###TEMPLATES###'] = template - end - File.open(target, 'w+') do |file| - file.write html - end - - target = "#{pmdynaformDir}/build/cases_Step_Pmdynaform_Preview.html" - html = File.read target - while html['###TEMPLATES##'] do - html['###TEMPLATES###'] = template - end - File.open(target, 'w+') do |file| - file.write html + htmlTemplates=["cases_Step_Pmdynaform.html","cases_Step_Pmdynaform_Preview.html","cases_Step_Pmdynaform_View.html"] + htmlTemplates.each do |htmlTemplate| + + FileUtils.cp("#{Dir.pwd}/workflow/engine/templates/cases/#{htmlTemplate}", "#{pmdynaformDir}/build/#{htmlTemplate}") + + target = "#{pmdynaformDir}/build/#{htmlTemplate}" + html = File.read target + while html['###TEMPLATES##'] do + html['###TEMPLATES###'] = template + end + File.open(target, 'w+') do |file| + file.write html + end end puts "\nPmDynaform Build Finished!".magenta diff --git a/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php b/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php index 762e2a1ba..4d0989f60 100644 --- a/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php +++ b/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php @@ -380,7 +380,56 @@ if ($actionAjax == 'dynaformChangeLogViewHistory') { $Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_STEP_LABEL'] = ''; $Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_STEP'] = '#'; $Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_ACTION'] = 'return false;'; - $G_PUBLISH->AddContent( 'dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_POST['DYN_UID'], '', $Fields['APP_DATA'], '', '', 'view' ); + + /* + * PMDynaform + * DYN_VERSION is 1: classic Dynaform, + * DYN_VERSION is 2: responsive form, Pmdynaform. + */ + $a = new Criteria("workflow"); + $a->addSelectColumn(DynaformPeer::DYN_VERSION); + $a->addSelectColumn(DynaformPeer::DYN_CONTENT); + $a->addSelectColumn(DynaformPeer::PRO_UID); + $a->addSelectColumn(DynaformPeer::DYN_UID); + $a->add(DynaformPeer::DYN_UID, $_GET['DYN_UID'], Criteria::EQUAL); + $ds = ProcessPeer::doSelectRS($a); + $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $ds->next(); + $row = $ds->getRow(); + $file = ""; + if (isset($row) && $row["DYN_VERSION"] == 2) { + //merge data + $fields = array("input", "textarea", "select"); + $fieldsJSON = array("text", "textarea", "select"); + $dataJSON = G::json_decode($row["DYN_CONTENT"]); + $n1 = count($fields); + $n2 = count($dataJSON->items[0]->items); + for ($i1 = 0; $i1 < $n1; $i1++) { + $i3 = 0; + for ($i2 = 0; $i2 < $n2; $i2++) { + if ($dataJSON->items[0]->items[$i2][0]->type == $fieldsJSON[$i1]) { + $key = "field" . $fields[$i1] . $i3; + $valueField = isset($Fields['APP_DATA'][$key]) ? $Fields['APP_DATA'][$key] : ""; + $dataJSON->items[0]->items[$i2][0]->options = array($valueField); + $dataJSON->items[0]->items[$i2][0]->type = 'label'; + $i3 = $i3 + 1; + } + } + } + $row["DYN_CONTENT"] = G::json_encode($dataJSON); + //set template + ob_clean(); + $file = file_get_contents(PATH_HOME . 'public_html/lib/pmdynaform/build/cases_Step_Pmdynaform_View.html'); + $file = str_replace("{JSON_DATA}", $row["DYN_CONTENT"], $file); + $file = str_replace("{PM_RUN_OUTSIDE_MAIN_APP}", (!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) ? "true" : "false", $file); + $file = str_replace("{DYN_UID}", $_GET['DYN_UID'], $file); + $file = str_replace("{DYNAFORMNAME}", $row["PRO_UID"] . "_" . $row["DYN_UID"], $file); + $file = str_replace("{APP_UID}", $_SESSION['APPLICATION'], $file); + echo $file; + exit(); + } else { + $G_PUBLISH->AddContent( 'dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_POST['DYN_UID'], '', $Fields['APP_DATA'], '', '', 'view' ); + } ?> @@ -33,19 +32,14 @@ {CASE} #: {APP_NUMBER}     {TITLE}: {APP_TITLE} -
  - -   Next Step -
- diff --git a/workflow/engine/templates/cases/cases_Step_Pmdynaform_Preview.html b/workflow/engine/templates/cases/cases_Step_Pmdynaform_Preview.html index 4197a279a..4d30ea652 100644 --- a/workflow/engine/templates/cases/cases_Step_Pmdynaform_Preview.html +++ b/workflow/engine/templates/cases/cases_Step_Pmdynaform_Preview.html @@ -6,7 +6,6 @@ - diff --git a/workflow/engine/templates/cases/cases_Step_Pmdynaform_View.html b/workflow/engine/templates/cases/cases_Step_Pmdynaform_View.html new file mode 100644 index 000000000..fc2e8f76c --- /dev/null +++ b/workflow/engine/templates/cases/cases_Step_Pmdynaform_View.html @@ -0,0 +1,39 @@ + + + + PMDynaform + + + + + + + + + + + + + +
+ ###TEMPLATES### + + + +