PMDynaform implements mode readonly

This commit is contained in:
Roly Rudy Gutierrez Pinto
2014-07-31 13:00:14 -04:00
parent 37f74fd9e9
commit 5810c73838
6 changed files with 179 additions and 48 deletions

View File

@@ -173,14 +173,12 @@ def buildPmdynaform(homeDir, targetDir, mode)
pmdynaformDir = targetDir + "/pmdynaform" pmdynaformDir = targetDir + "/pmdynaform"
executeInto(homeDir, [ "default"]) executeInto(homeDir, [ "default"])
system("cp -r #{homeDir}/build #{pmdynaformDir}") require 'fileutils'
system("cp -r #{homeDir}/libs #{pmdynaformDir}") Dir.mkdir("#{pmdynaformDir}/build")
system("rm #{pmdynaformDir}/build/appBuild.js") FileUtils.cp_r(Dir["#{homeDir}/build/*"],"#{pmdynaformDir}/build")
readyForm = "" Dir.mkdir("#{pmdynaformDir}/libs")
system("echo '#{readyForm}' >> #{pmdynaformDir}/build/appBuild.js ") FileUtils.cp_r(Dir["#{homeDir}/libs/*"],"#{pmdynaformDir}/libs")
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")
template = "" template = ""
config = File.read "#{homeDir}/config/templates.json" config = File.read "#{homeDir}/config/templates.json"
@@ -188,28 +186,25 @@ def buildPmdynaform(homeDir, targetDir, mode)
json.each do |key| json.each do |key|
s = "" s = ""
key["files"].each do |source| key["files"].each do |source|
s += File.read "#{homeDir}/#{source}" s += File.read "#{homeDir}/#{source}"
s += "\n" s += "\n"
end end
template += s template += s
end end
target = "#{pmdynaformDir}/build/cases_Step_Pmdynaform.html" htmlTemplates=["cases_Step_Pmdynaform.html","cases_Step_Pmdynaform_Preview.html","cases_Step_Pmdynaform_View.html"]
html = File.read target htmlTemplates.each do |htmlTemplate|
while html['###TEMPLATES##'] do
html['###TEMPLATES###'] = template FileUtils.cp("#{Dir.pwd}/workflow/engine/templates/cases/#{htmlTemplate}", "#{pmdynaformDir}/build/#{htmlTemplate}")
end
File.open(target, 'w+') do |file| target = "#{pmdynaformDir}/build/#{htmlTemplate}"
file.write html html = File.read target
end while html['###TEMPLATES##'] do
html['###TEMPLATES###'] = template
target = "#{pmdynaformDir}/build/cases_Step_Pmdynaform_Preview.html" end
html = File.read target File.open(target, 'w+') do |file|
while html['###TEMPLATES##'] do file.write html
html['###TEMPLATES###'] = template end
end
File.open(target, 'w+') do |file|
file.write html
end end
puts "\nPmDynaform Build Finished!".magenta puts "\nPmDynaform Build Finished!".magenta

View File

@@ -380,7 +380,56 @@ if ($actionAjax == 'dynaformChangeLogViewHistory') {
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_STEP_LABEL'] = ''; $Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_STEP_LABEL'] = '';
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_STEP'] = '#'; $Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_STEP'] = '#';
$Fields['APP_DATA']['__DYNAFORM_OPTIONS']['NEXT_ACTION'] = 'return false;'; $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' );
}
?> ?>
<script language="javascript"> <script language="javascript">
@@ -463,8 +512,56 @@ if ($actionAjax == 'historyDynaformGridPreview') {
$_SESSION['CURRENT_DYN_UID'] = $_POST['DYN_UID']; $_SESSION['CURRENT_DYN_UID'] = $_POST['DYN_UID'];
$_SESSION['DYN_UID_PRINT'] = $_POST['DYN_UID']; $_SESSION['DYN_UID_PRINT'] = $_POST['DYN_UID'];
$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' );
}
?> ?>
<script language="javascript"> <script language="javascript">

View File

@@ -274,19 +274,26 @@ try {
$row = $ds->getRow(); $row = $ds->getRow();
$file = ""; $file = "";
if (isset($row) && $row["DYN_VERSION"] == 2) { if (isset($row) && $row["DYN_VERSION"] == 2) {
/*$oTemplatePower = new TemplatePower(PATH_TPL . 'cases/cases_Step_Pmdynaform.html'); //merge data
$oTemplatePower = new TemplatePower(PATH_HOME . 'public_html/lib/pmdynaform/build/cases_Step_Pmdynaform.html', T_BYVAR); $fields = array("input", "textarea", "select");
$oTemplatePower->prepare(); $fieldsJSON = array("text", "textarea", "select");
$oTemplatePower->assign("JSON_DATA", $row["DYN_CONTENT"]); $dataJSON = G::json_decode($row["DYN_CONTENT"]);
$oTemplatePower->assign("CASE", $array["CASE"]); $n1 = count($fields);
$oTemplatePower->assign("APP_NUMBER", $array["APP_NUMBER"]); $n2 = count($dataJSON->items[0]->items);
$oTemplatePower->assign("TITLE", $array["TITLE"]); for ($i1 = 0; $i1 < $n1; $i1++) {
$oTemplatePower->assign("APP_TITLE", $array["APP_TITLE"]); $i3 = 0;
$oTemplatePower->assign("PM_RUN_OUTSIDE_MAIN_APP", (!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) ? "true" : "false"); for ($i2 = 0; $i2 < $n2; $i2++) {
$oTemplatePower->assign("DYN_UID", $_GET['UID']); if ($dataJSON->items[0]->items[$i2][0]->type == $fieldsJSON[$i1]) {
$oTemplatePower->assign("DYNAFORMNAME", $row["PRO_UID"] . "_" . $row["DYN_UID"]); $key = "field" . $fields[$i1] . $i3;
$oTemplatePower->assign("APP_UID", $_SESSION['APPLICATION']); $valueField = isset($Fields['APP_DATA'][$key]) ? $Fields['APP_DATA'][$key] : "";
$oTemplatePower->printToScreen();*/ $dataJSON->items[0]->items[$i2][0]->defaultValue = $valueField;
$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.html'); $file = file_get_contents(PATH_HOME . 'public_html/lib/pmdynaform/build/cases_Step_Pmdynaform.html');
$file = str_replace("{JSON_DATA}", $row["DYN_CONTENT"], $file); $file = str_replace("{JSON_DATA}", $row["DYN_CONTENT"], $file);
$file = str_replace("{CASE}", $array["CASE"], $file); $file = str_replace("{CASE}", $array["CASE"], $file);

View File

@@ -6,7 +6,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel='stylesheet' type='text/css' href='/css/neoclassic-blank.css' />
<link rel="stylesheet" href="/lib/pmdynaform/libs/bootstrap-3.1.1/css/bootstrap.min.css"> <link rel="stylesheet" href="/lib/pmdynaform/libs/bootstrap-3.1.1/css/bootstrap.min.css">
<link rel="stylesheet" href="/lib/pmdynaform/build/css/PMDynaform.css"> <link rel="stylesheet" href="/lib/pmdynaform/build/css/PMDynaform.css">
<script type="text/javascript" src="/lib/pmdynaform/libs/jquery/jquery-1.11.js"></script> <script type="text/javascript" src="/lib/pmdynaform/libs/jquery/jquery-1.11.js"></script>
@@ -33,19 +32,14 @@
<td width="100%" align="center">{CASE} #: {APP_NUMBER}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{TITLE}: {APP_TITLE}</td> <td width="100%" align="center">{CASE} #: {APP_NUMBER}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{TITLE}: {APP_TITLE}</td>
</tr> </tr>
</table> </table>
<div style="width:100%;padding: 0px 10px 0px 10px"> <div style="width:100%;padding: 0px 10px 0px 10px">
<img src="/images/bulletButtonLeft.gif" style="float:left;">&nbsp; <img src="/images/bulletButtonLeft.gif" style="float:left;">&nbsp;
<a id="dyn_backward" href="" style="float:left;"> <a id="dyn_backward" href="" style="float:left;">
</a> </a>
<img src="/images/bulletButton.gif" style="float:right;">&nbsp; <img src="/images/bulletButton.gif" style="float:right;">&nbsp;
<a id="dyn_forward" href="" style="float:right;font-size:12px;line-height:1;margin:0px 5px 1px 0px;"> <a id="dyn_forward" href="" style="float:right;font-size:12px;line-height:1;margin:0px 5px 1px 0px;">
Next Step Next Step
</a> </a>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -6,7 +6,6 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel='stylesheet' type='text/css' href='/css/neoclassic-blank.css' />
<link rel="stylesheet" href="/lib/pmdynaform/libs/bootstrap-3.1.1/css/bootstrap.min.css"> <link rel="stylesheet" href="/lib/pmdynaform/libs/bootstrap-3.1.1/css/bootstrap.min.css">
<link rel="stylesheet" href="/lib/pmdynaform/build/css/PMDynaform.css"> <link rel="stylesheet" href="/lib/pmdynaform/build/css/PMDynaform.css">
<script type="text/javascript" src="/lib/pmdynaform/libs/jquery/jquery-1.11.js"></script> <script type="text/javascript" src="/lib/pmdynaform/libs/jquery/jquery-1.11.js"></script>

View File

@@ -0,0 +1,39 @@
<!DOCTYPE html>
<html>
<head>
<title>PMDynaform</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="/lib/pmdynaform/libs/bootstrap-3.1.1/css/bootstrap.min.css">
<link rel="stylesheet" href="/lib/pmdynaform/build/css/PMDynaform.css">
<script type="text/javascript" src="/lib/pmdynaform/libs/jquery/jquery-1.11.js"></script>
<script type="text/javascript" src="/lib/pmdynaform/libs/jquery/jquery.inputmask.js"></script>
<script type="text/javascript" src="/lib/pmdynaform/libs/bootstrap-3.1.1/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/lib/pmdynaform/libs/underscore/underscore-1.6.js"></script>
<script type="text/javascript" src="/lib/pmdynaform/libs/backbone/backbone-min.js"></script>
</head>
<body>
<div id="container"></div>
###TEMPLATES###
<script type="text/javascript" src="/lib/pmdynaform/build/js/PMDynaform.js"></script>
<script type="text/javascript">
var jsondata = '{JSON_DATA}';
var pm_run_outside_main_app = '{PM_RUN_OUTSIDE_MAIN_APP}';
var dyn_uid = '{DYN_UID}';
var __DynaformName__ = '{DYNAFORMNAME}';
var app_uid = '{APP_UID}';
$(window).load(function () {
var data = JSON.parse(jsondata);
window.dynaform = new PMDynaform.core.Project({
data: data
});
$(document).find('form').submit(function (e) {
e.preventDefault();
return false;
});
});
</script>
</body>
</html>