BUG 0000 "Safe upgrade for JavaScript files" SOLVED

- New feature
- Safe upgrade for JavaScript files
- Added new feature,
- This new feature is activated when you run one of the following commands:
    $ ./processmaker upgrade
    $ ./processmaker build-js
    $ ./processmaker browser-cache-files-upgrade
- The new feature creates an attribute in the file "processmaker/workflow/engine/config/env.ini"
    Example:
    browser_cache_files_uid = "xxxxxxxxxxyyyyyyyyyyzzzzzzzzzzaa"
- After running the command, the browser should automatically cache the new files
* Available from version ProcessMaker-2.5
This commit is contained in:
Victor Saisa Lopez
2013-04-12 16:48:23 -04:00
parent c1ca183e69
commit 837365cf72
11 changed files with 282 additions and 254 deletions

View File

@@ -54,30 +54,6 @@ $docuroot = explode ( PATH_SEP , $_SERVER['DOCUMENT_ROOT'] );
/*** enable ERROR_LOG_NOTICE_ERROR to log Notices messages in default apache log ***/ /*** enable ERROR_LOG_NOTICE_ERROR to log Notices messages in default apache log ***/
// define ( 'ERROR_LOG_NOTICE_ERROR', true ); // define ( 'ERROR_LOG_NOTICE_ERROR', true );
// ************* creat headPublisher singleton *****************
G::LoadSystem('headPublisher');
$oHeadPublisher =& headPublisher::getSingleton();
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/maborak.js' );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'common/core/common.js' );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'common/core/webResource.js' );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'dveditor/core/dveditor.js' );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'common/tree/tree.js' );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'json/core/json.js' );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'form/core/form.js' );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'form/core/pagedTable.js' );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'grid/core/grid.js' );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.panel.js' , true );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.validator.js', true );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.app.js' , true );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.rpc.js' , true );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.fx.js' , true );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.drag.js' , true );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.drop.js' , true );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.dom.js' , true );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.abbr.js' , true );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.dashboard.js', true );
$oHeadPublisher->addMaborakFile( PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'widgets/jscalendar/calendar.js' );
//************ defining Virtual URLs ****************/ //************ defining Virtual URLs ****************/
$virtualURITable = array(); $virtualURITable = array();
$virtualURITable['/plugin/(*)'] = 'plugin'; $virtualURITable['/plugin/(*)'] = 'plugin';

View File

@@ -4897,6 +4897,49 @@ class G
} }
} }
} }
public static function browserCacheFilesSetUid()
{
$arrayData = array();
$arrayData["browser_cache_files_uid"] = G::generateUniqueID();
G::update_php_ini(PATH_CONFIG . "env.ini", $arrayData);
}
public static function browserCacheFilesGetUid()
{
$sysConf = System::getSystemConfiguration(PATH_CONFIG . "env.ini");
return (isset($sysConf["browser_cache_files_uid"]))? $sysConf["browser_cache_files_uid"] : null;
}
public static function browserCacheFilesSetUrl($url)
{
$browserCacheFilesUid = self::browserCacheFilesGetUid();
if ($browserCacheFilesUid != null) {
$arrayLibrary = array();
$library = json_decode(file_get_contents(PATH_HOME . "engine" . PATH_SEP . "bin" . PATH_SEP . "tasks" . PATH_SEP . "libraries.json"));
foreach ($library as $index => $value) {
$lib = $value;
if ($lib->build) {
$arrayLibrary[] = $lib->name . ".js";
}
}
$arrayAux = explode("/", $url);
$n = count($arrayAux);
if ($n > 0 && !empty($arrayAux[$n - 1]) && array_search($arrayAux[$n - 1], $arrayLibrary) !== false) {
$url = $url . ((strpos($arrayAux[$n - 1], "?") !== false)? "&c=" : "?c=") . $browserCacheFilesUid;
}
}
return $url;
}
} }
/** /**

View File

@@ -1,5 +1,4 @@
<?php <?php
/** /**
* class.headPublisher.php * class.headPublisher.php
* *
@@ -126,6 +125,8 @@ class headPublisher
*/ */
public function addScriptFile($url, $LoadType = 1) public function addScriptFile($url, $LoadType = 1)
{ {
$url = G::browserCacheFilesSetUrl($url);
if ($LoadType == 1) { if ($LoadType == 1) {
$this->scriptFiles[$url] = $url; $this->scriptFiles[$url] = $url;
} }
@@ -213,21 +214,25 @@ class headPublisher
$head = ''; $head = '';
$head .= '<TITLE>' . $this->title . "</TITLE>\n"; $head .= '<TITLE>' . $this->title . "</TITLE>\n";
foreach ($this->scriptFiles as $file) { foreach ($this->scriptFiles as $file) {
$head .= "<script type='text/javascript' src='" . $file . "'></script>\n"; $head .= "<script type='text/javascript' src='" . $file . "'></script>\n";
} }
if (!in_array($this->translationsFile, $this->scriptFiles)) { if (!in_array($this->translationsFile, $this->scriptFiles)) {
$head .= "<script type='text/javascript' src='" . $this->translationsFile . "'></script>\n"; $head .= "<script type='text/javascript' src='" . $this->translationsFile . "'></script>\n";
} }
$head .= "<script type='text/javascript'>\n"; $head .= "<script type='text/javascript'>\n";
$head .= $this->leimnudInitString; $head .= $this->leimnudInitString;
foreach ($this->leimnudLoad as $file) { foreach ($this->leimnudLoad as $file) {
$head .= " leimnud.Package.Load(false, {Type: 'file', Path: '" . $file . "', Absolute : true});\n"; $head .= " leimnud.Package.Load(false, {Type: 'file', Path: '" . $file . "', Absolute : true});\n";
} }
$head .= $this->headerScript; $head .= $this->headerScript;
$head .= "</script>\n"; $head .= "</script>\n";
$head .= "<script type='text/javascript' src='/js/maborak/core/maborak.loader.js'></script>\n"; $head .= "<script type=\"text/javascript\" src=\"" . G::browserCacheFilesSetUrl("/js/maborak/core/maborak.loader.js") . "\"></script>\n";
return $head; return $head;
} }

View File

@@ -138,46 +138,6 @@ class PmBootstrap extends Bootstrap
} }
} }
public function loadLeimud()
{
$oHeadPublisher = headPublisher::getSingleton();
// Defining the maborak js file, this file is the concat of many js files and here we are including all of them.
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/maborak.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'common/core/common.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'common/core/effects.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'common/core/webResource.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'dveditor/core/dveditor.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'tinymce/jscripts/tiny_mce/tiny_mce.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'common/tree/tree.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'json/core/json.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'form/core/form.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'form/core/pagedTable.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'grid/core/grid.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.panel.js' , true );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.validator.js', true );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.app.js' , true );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.rpc.js' , true );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.fx.js' , true );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.drag.js' , true );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.drop.js' , true );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.dom.js' , true );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.abbr.js' , true );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'maborak/core/module.dashboard.js', true );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'widgets/js-calendar/js-calendar.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'widgets/suggest/bsn.AutoSuggest_2.1.3.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'widgets/tooltip/pmtooltip.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'thirdparty/krumo/krumo.js' );
$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . 'widgets/calendar/pmcalendar.js' , true );
$oHeadPublisher->addMaborakFile(PATH_CORE . 'js' . PATH_SEP . 'cases/core/cases.js' , true );
$oHeadPublisher->addMaborakFile(PATH_CORE . 'js' . PATH_SEP . 'cases/core/cases_Step.js', true );
$oHeadPublisher->addMaborakFile(PATH_CORE . 'js' . PATH_SEP . 'processmap/core/processmap.js', true );
$oHeadPublisher->addMaborakFile(PATH_CORE . 'js' . PATH_SEP . 'appFolder/core/appFolderList.js', true );
$oHeadPublisher->addMaborakFile(PATH_THIRDPARTY . 'htmlarea/editor.js', true );
//$oHeadPublisher->addMaborakFile(PATH_GULLIVER_HOME . 'js' . PATH_SEP . "widgets/jscalendar/lang/calendar-" . SYS_LANG . ".js");
}
public function dispatchResource() public function dispatchResource()
{ {
$realPath = $this->matchRoute['path']; $realPath = $this->matchRoute['path'];

View File

@@ -0,0 +1,21 @@
<?php
CLI::taskName("browser-cache-files-upgrade");
CLI::taskDescription(<<<EOT
Safe upgrade for files cached by the browser
This command should be run after any upgrade/modification of files cached by the browser.
EOT
);
CLI::taskRun(runBrowserCacheFiles);
function runBrowserCacheFiles($command, $args)
{
CLI::logging("Safe upgrade for files cached by the browser\n");
G::browserCacheFilesSetUid();
CLI::logging("Upgrade successful\n");
}

View File

@@ -85,6 +85,13 @@ function minify_javascript($command, $args)
} }
} }
//Safe upgrade for JavaScript files
CLI::logging("\nSafe upgrade for files cached by the browser\n\n");
G::browserCacheFilesSetUid();
//Done
CLI::logging("BUILD-JS DONE\n"); CLI::logging("BUILD-JS DONE\n");
} }

View File

@@ -119,12 +119,6 @@ function run_upgrade($command, $args)
$errors = true; $errors = true;
} }
} }
if ($errors) {
CLI::logging("Upgrade finished but there were errors upgrading workspaces.\n");
CLI::logging(CLI::error("Please check the log above to correct any issues.")."\n");
} else {
CLI::logging("Upgrade successful\n");
}
// SAVE Upgrades/Patches // SAVE Upgrades/Patches
$arrayPatch = glob(PATH_TRUNK . 'patch-*'); $arrayPatch = glob(PATH_TRUNK . 'patch-*');
@@ -151,6 +145,19 @@ function run_upgrade($command, $args)
CLI::logging('ProcessMaker ' . System::getVersion(). ' installed', PATH_DATA . 'log/upgrades.log'); CLI::logging('ProcessMaker ' . System::getVersion(). ' installed', PATH_DATA . 'log/upgrades.log');
} }
//Safe upgrade for JavaScript files
CLI::logging("\nSafe upgrade for files cached by the browser\n\n");
G::browserCacheFilesSetUid();
//Status
if ($errors) {
CLI::logging("Upgrade finished but there were errors upgrading workspaces.\n");
CLI::logging(CLI::error("Please check the log above to correct any issues.") . "\n");
} else {
CLI::logging("Upgrade successful\n");
}
//setting flag to false //setting flag to false
$flag = G::isPMUnderUpdating(0); $flag = G::isPMUnderUpdating(0);
} }

View File

@@ -138,16 +138,19 @@ try {
$oStep = new Step(); $oStep = new Step();
$sUidGrids = $oStep->lookingforUidGrids( $sPRO_UID, $sDYNAFORM ); $sUidGrids = $oStep->lookingforUidGrids( $sPRO_UID, $sDYNAFORM );
$template->assign( 'siteUrl', $http . $_SERVER['HTTP_HOST'] ); $browserCacheFilesUid = G::browserCacheFilesGetUid();
$template->assign( 'sysSys', SYS_SYS );
$template->assign( 'sysLang', SYS_LANG ); $template->assign("BROWSER_CACHE_FILES_UID", ($browserCacheFilesUid != null)? "?c=" . $browserCacheFilesUid : null);
$template->assign( 'sysSkin', SYS_SKIN ); $template->assign("siteUrl", $http . $_SERVER["HTTP_HOST"]);
$template->assign( 'processUid', $sPRO_UID ); $template->assign("sysSys", SYS_SYS);
$template->assign( 'dynaformUid', $sDYNAFORM ); $template->assign("sysLang", SYS_LANG);
$template->assign( 'taskUid', $sTASKS ); $template->assign("sysSkin", SYS_SKIN);
$template->assign( 'dynFileName', $sPRO_UID . '/' . $sDYNAFORM ); $template->assign("processUid", $sPRO_UID);
$template->assign( 'formId', $G_FORM->id ); $template->assign("dynaformUid", $sDYNAFORM);
$template->assign( 'scriptCode', $scriptCode ); $template->assign("taskUid", $sTASKS);
$template->assign("dynFileName", $sPRO_UID . "/" . $sDYNAFORM);
$template->assign("formId", $G_FORM->id);
$template->assign("scriptCode", $scriptCode);
if (sizeof( $sUidGrids ) > 0) { if (sizeof( $sUidGrids ) > 0) {
foreach ($sUidGrids as $k => $v) { foreach ($sUidGrids as $k => $v) {
@@ -167,4 +170,3 @@ try {
G::RenderPage( 'publish', 'raw' ); G::RenderPage( 'publish', 'raw' );
} }

View File

@@ -29,6 +29,11 @@ $oTemplatePower->newBlock('users');
$oTemplatePower->assign('USR_UID', $aUser['USR_UID']); $oTemplatePower->assign('USR_UID', $aUser['USR_UID']);
$oTemplatePower->assign('USR_FULLNAME', $aData['USR_FIRSTNAME'] . ' ' . $aData['USR_LASTNAME'] . ' (' . $aData['USR_USERNAME'] . ')'); $oTemplatePower->assign('USR_FULLNAME', $aData['USR_FIRSTNAME'] . ' ' . $aData['USR_LASTNAME'] . ' (' . $aData['USR_USERNAME'] . ')');
*/ */
$browserCacheFilesUid = G::browserCacheFilesGetUid();
$oTemplatePower->assign("BROWSER_CACHE_FILES_UID", ($browserCacheFilesUid != null)? "?c=" . $browserCacheFilesUid : null);
$G_PUBLISH->AddContent( 'template', '', '', '', $oTemplatePower ); $G_PUBLISH->AddContent( 'template', '', '', '', $oTemplatePower );
G::RenderPage( 'publish', 'raw' ); G::RenderPage( 'publish', 'raw' );

View File

@@ -1,7 +1,7 @@
<html> <html>
<head> <head>
<script type="text/javascript" src="{siteUrl}/jscore/labels/{sysLang}.js"></script> <script type="text/javascript" src="{siteUrl}/jscore/labels/{sysLang}.js"></script>
<script type="text/javascript" src="{siteUrl}/js/maborak/core/maborak.js"></script> <script type="text/javascript" src="{siteUrl}/js/maborak/core/maborak.js{BROWSER_CACHE_FILES_UID}"></script>
<script type="text/javascript" src="{siteUrl}/js/jscalendar/lang/calendar-{sysLang}.js"></script> <script type="text/javascript" src="{siteUrl}/js/jscalendar/lang/calendar-{sysLang}.js"></script>
<script type="text/javascript" src="{siteUrl}/jsform/gulliver/dynaforms_Options.js"></script> <script type="text/javascript" src="{siteUrl}/jsform/gulliver/dynaforms_Options.js"></script>
@@ -14,18 +14,20 @@
leimnud.make(); leimnud.make();
leimnud.Package.Load("panel,validator,app,rpc,fx,drag,drop,dom,abbr",{ Instance:leimnud,Type:"module" }); leimnud.Package.Load("panel,validator,app,rpc,fx,drag,drop,dom,abbr",{ Instance:leimnud,Type:"module" });
leimnud.exec(leimnud.fix.memoryLeak); leimnud.exec(leimnud.fix.memoryLeak);
if(leimnud.browser.isIphone) if (leimnud.browser.isIphone) {
{ leimnud.iphone.make(); } leimnud.iphone.make();
}
leimnud.event.add(window,"load",function(){ loadForm_{formId}("{siteUrl}/sys{sysSys}/{sysLang}/{sysSkin}/gulliver/defaultAjaxDynaform")}); leimnud.event.add(window,"load",function(){ loadForm_{formId}("{siteUrl}/sys{sysSys}/{sysLang}/{sysSkin}/gulliver/defaultAjaxDynaform")});
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
var aux1 = window.location.href.split("?"); var aux1 = window.location.href.split("?");
if(aux1[1]){ if (aux1[1]) {
if(aux1[1]!=""){ if (aux1[1] != "") {
var aux2 = aux1[1].split("&"); var aux2 = aux1[1].split("&");
for(var i=0; i<=aux2.length; i++){
if(aux2[i]=="__flag__=1"){ for (var i = 0; i <= aux2.length; i++) {
if (aux2[i] == "__flag__=1") {
alert("Request sent!"); alert("Request sent!");
} }
} }
@@ -34,12 +36,11 @@
</script> </script>
</head> </head>
<body> <body>
{scriptCode} {scriptCode}
<input type="hidden" name="PRO_UID" value="{processUid}">
<input type="hidden" name="PRO_UID" value="{processUid}"> <input type="hidden" name="TASKS" value="{taskUid}">
<input type="hidden" name="TASKS" value="{taskUid}"> <input type="hidden" name="DYNAFORM" value="{dynaformUid}">
<input type="hidden" name="DYNAFORM" value="{dynaformUid}">
</form> </form>
</body> </body>
</html> </html>

View File

@@ -1,30 +1,33 @@
<html> <html>
<head> <head>
<script type='text/javascript' src='/js/maborak/core/maborak.js'></script> <script type="text/javascript" src="/js/maborak/core/maborak.js{BROWSER_CACHE_FILES_UID}"></script>
<script type='text/javascript'> <script type="text/javascript">
var leimnud = new maborak(); var leimnud = new maborak();
leimnud.make({ leimnud.make({
zip:true, zip: true,
inGulliver:true, inGulliver: true,
modules :"dom,abbr,rpc,drag,drop,app,panel,fx,grid,xmlform,validator,dashboard", modules: "dom,abbr,rpc,drag,drop,app,panel,fx,grid,xmlform,validator,dashboard",
files :"" files: ""
}); });
try{
try {
leimnud.exec(leimnud.fix.memoryLeak); leimnud.exec(leimnud.fix.memoryLeak);
if(leimnud.browser.isIphone){
if (leimnud.browser.isIphone) {
leimnud.iphone.make(); leimnud.iphone.make();
} }
}catch(e){} } catch (e) {
}
</script>
</script> <style type="text/css">
body, table {
<style type="text/css">
body, table {
font-family: tahoma,arial,verdana,sans-serif; font-family: tahoma,arial,verdana,sans-serif;
} }
span.cMargLeft { padding-left: 20; } span.cMargLeft { padding-left: 20; }
.cell2 { .cell2 {
font-size: 13px; font-size: 13px;
background: #fff; background: #fff;
border-right: #fff 1px solid; border-right: #fff 1px solid;
@@ -35,36 +38,34 @@ span.cMargLeft { padding-left: 20; }
padding-left: 10px; padding-left: 10px;
border-bottom: #fff 1px solid; border-bottom: #fff 1px solid;
padding-bottom: 10px; padding-bottom: 10px;
} }
span.cNeg { span.cNeg {
color: #002c72; color: #002c72;
font-weight: bold; font-weight: bold;
} }
span.cLow { span.cLow {
color: #002c72; color: #002c72;
} }
</style> </style>
<!--[if IE]> <!--[if IE]>
<style> <style type="text/css">
span.cMargLeft { padding-left: 9; } span.cMargLeft { padding-left: 9; }
.cell2 { .cell2 {
font-size: 12px !important; font-size: 12px !important;
padding-top: 1px !important; padding-top: 1px !important;
padding-bottom: 1px !important; padding-bottom: 1px !important;
} }
</style> </style>
<![endif]--> <![endif]-->
</head> </head>
<body> <body>
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr> <tr>
<td> <td>
<a target="_blank" href="http://www.processmaker.com"> <a target="_blank" href="http://www.processmaker.com"><img src="/images/get_started.png" border="0" width="163" height="438"></a>
<img src="/images/get_started.png" border="0" width="163" height="438">
</a>
</td> </td>
<td class="cell2" valign="top"> <td class="cell2" valign="top">
<span class="cLow"><strong>Get Started</strong></span> <span class="cLow"><strong>Get Started</strong></span>
@@ -86,39 +87,39 @@ span.cLow {
</span></p> </span></p>
<p><span class="cLow">The ProcessMaker Team</span></p> <p><span class="cLow">The ProcessMaker Team</span></p>
<input type="checkbox" name="getStarted" id="getStarted" onclick="saveConfig();"><span class="cLow">Don't show me again</span> <input type="checkbox" name="getStarted" id="getStarted" onclick="saveConfig();"><span class="cLow">Don't show me again</span>
</td> </td>
</tr> </tr>
</table> </table>
</body> </body>
</html> </html>
<script type="text/javascript">
<script> var saveConfig = function()
var saveConfig = function() { {
if(document.getElementById("getStarted").checked==true) { if (document.getElementById("getStarted").checked == true) {
var oRPC = new leimnud.module.rpc.xmlhttp({ var oRPC = new leimnud.module.rpc.xmlhttp({
url : '../login/login_Ajax', url : "../login/login_Ajax",
async : false, async : false,
method: 'POST', method: "POST",
args : 'function=getStarted_save' args : "function=getStarted_save"
}); });
oRPC.make(); oRPC.make();
} }
if(panel) { if (panel) {
if(panel.remove) { if (panel.remove) {
panel.remove(); panel.remove();
return false; return false;
} }
} }
if(window.parent) { if (window.parent) {
if (parent.Ext) { if (parent.Ext) {
parent.Ext.getCmp('gettingStartedWindow').close(); parent.Ext.getCmp("gettingStartedWindow").close();
} }
} }
} };
</script> </script>