From 837365cf72a35bca9df35f8a45985e494d650362 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Fri, 12 Apr 2013 16:48:23 -0400 Subject: [PATCH 1/4] 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 --- .../bin/tasks/templates/sysGeneric.php.tpl | 26 +- gulliver/system/class.g.php | 43 +++ gulliver/system/class.headPublisher.php | 11 +- workflow/engine/PmBootstrap.php | 40 --- .../engine/bin/tasks/cliBrowserCacheFiles.php | 21 ++ workflow/engine/bin/tasks/cliRake.php | 7 + workflow/engine/bin/tasks/cliUpgrade.php | 19 +- .../processes/processes_webEntryGenerate.php | 24 +- .../methods/services/login_getStarted.php | 5 + .../engine/templates/processes/webentry.tpl | 91 +++---- .../templates/services/login_getStarted.html | 249 +++++++++--------- 11 files changed, 282 insertions(+), 254 deletions(-) create mode 100644 workflow/engine/bin/tasks/cliBrowserCacheFiles.php diff --git a/gulliver/bin/tasks/templates/sysGeneric.php.tpl b/gulliver/bin/tasks/templates/sysGeneric.php.tpl index 47b34d2a8..6096079f0 100755 --- a/gulliver/bin/tasks/templates/sysGeneric.php.tpl +++ b/gulliver/bin/tasks/templates/sysGeneric.php.tpl @@ -54,30 +54,6 @@ $docuroot = explode ( PATH_SEP , $_SERVER['DOCUMENT_ROOT'] ); /*** enable ERROR_LOG_NOTICE_ERROR to log Notices messages in default apache log ***/ // 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 ****************/ $virtualURITable = array(); $virtualURITable['/plugin/(*)'] = 'plugin'; @@ -172,7 +148,7 @@ $docuroot = explode ( PATH_SEP , $_SERVER['DOCUMENT_ROOT'] ); G::LoadSystem('tree'); $oHeadPublisher =& headPublisher::getSingleton(); - + //***************** database and workspace definition ************************ //if SYS_TEMP exists, the URL has a workspace, now we need to verify if exists their db.php file if ( defined('SYS_TEMP') && SYS_TEMP != '') diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index f98a1a59f..6342e1314 100644 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -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; + } } /** diff --git a/gulliver/system/class.headPublisher.php b/gulliver/system/class.headPublisher.php index 36783f5e9..4f2dc8f8c 100644 --- a/gulliver/system/class.headPublisher.php +++ b/gulliver/system/class.headPublisher.php @@ -1,5 +1,4 @@ scriptFiles[$url] = $url; } @@ -213,21 +214,25 @@ class headPublisher $head = ''; $head .= '' . $this->title . "\n"; + foreach ($this->scriptFiles as $file) { $head .= "\n"; } + if (!in_array($this->translationsFile, $this->scriptFiles)) { $head .= "\n"; } $head .= "\n"; - $head .= "\n"; + $head .= "\n"; return $head; } @@ -689,4 +694,4 @@ class headPublisher $this->disableHeaderScripts = true; } } - \ No newline at end of file + diff --git a/workflow/engine/PmBootstrap.php b/workflow/engine/PmBootstrap.php index 989e0f73f..e9ef3f36a 100644 --- a/workflow/engine/PmBootstrap.php +++ b/workflow/engine/PmBootstrap.php @@ -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() { $realPath = $this->matchRoute['path']; diff --git a/workflow/engine/bin/tasks/cliBrowserCacheFiles.php b/workflow/engine/bin/tasks/cliBrowserCacheFiles.php new file mode 100644 index 000000000..5009de68c --- /dev/null +++ b/workflow/engine/bin/tasks/cliBrowserCacheFiles.php @@ -0,0 +1,21 @@ +lookingforUidGrids( $sPRO_UID, $sDYNAFORM ); - $template->assign( 'siteUrl', $http . $_SERVER['HTTP_HOST'] ); - $template->assign( 'sysSys', SYS_SYS ); - $template->assign( 'sysLang', SYS_LANG ); - $template->assign( 'sysSkin', SYS_SKIN ); - $template->assign( 'processUid', $sPRO_UID ); - $template->assign( 'dynaformUid', $sDYNAFORM ); - $template->assign( 'taskUid', $sTASKS ); - $template->assign( 'dynFileName', $sPRO_UID . '/' . $sDYNAFORM ); - $template->assign( 'formId', $G_FORM->id ); - $template->assign( 'scriptCode', $scriptCode ); + $browserCacheFilesUid = G::browserCacheFilesGetUid(); + + $template->assign("BROWSER_CACHE_FILES_UID", ($browserCacheFilesUid != null)? "?c=" . $browserCacheFilesUid : null); + $template->assign("siteUrl", $http . $_SERVER["HTTP_HOST"]); + $template->assign("sysSys", SYS_SYS); + $template->assign("sysLang", SYS_LANG); + $template->assign("sysSkin", SYS_SKIN); + $template->assign("processUid", $sPRO_UID); + $template->assign("dynaformUid", $sDYNAFORM); + $template->assign("taskUid", $sTASKS); + $template->assign("dynFileName", $sPRO_UID . "/" . $sDYNAFORM); + $template->assign("formId", $G_FORM->id); + $template->assign("scriptCode", $scriptCode); if (sizeof( $sUidGrids ) > 0) { foreach ($sUidGrids as $k => $v) { @@ -167,4 +170,3 @@ try { G::RenderPage( 'publish', 'raw' ); } - diff --git a/workflow/engine/methods/services/login_getStarted.php b/workflow/engine/methods/services/login_getStarted.php index dc7853572..09a4e4806 100755 --- a/workflow/engine/methods/services/login_getStarted.php +++ b/workflow/engine/methods/services/login_getStarted.php @@ -29,6 +29,11 @@ $oTemplatePower->newBlock('users'); $oTemplatePower->assign('USR_UID', $aUser['USR_UID']); $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::RenderPage( 'publish', 'raw' ); diff --git a/workflow/engine/templates/processes/webentry.tpl b/workflow/engine/templates/processes/webentry.tpl index b2f34e5a7..474f54d1c 100755 --- a/workflow/engine/templates/processes/webentry.tpl +++ b/workflow/engine/templates/processes/webentry.tpl @@ -1,45 +1,46 @@ - - - - - - - - - - - - - - - - - -{scriptCode} - - - - - - - + + + + + + + + + + + + + + + + +{scriptCode} + + + + + + + diff --git a/workflow/engine/templates/services/login_getStarted.html b/workflow/engine/templates/services/login_getStarted.html index e9a748432..ec491a456 100755 --- a/workflow/engine/templates/services/login_getStarted.html +++ b/workflow/engine/templates/services/login_getStarted.html @@ -1,124 +1,125 @@ - - - - - - - - - - - - - - -
- - - - - Get Started -

Welcome to ProcessMaker!

-

To get started, log in using the following credentials. You can change them later:

- Username: admin
- Password: admin -

We suggest you follow our 7 easy videos to automate your workflow. You can see a demo of each step at http://www.processmaker.com/demos/

- - Other Resources:

- - PM Library - Import Templates
- - PM Wiki - Manuals
- - PM Forum - Ask Questions
- -

We hope you enjoy using ProcessMaker. For more information about our enterprise support and consulting services contact us. -

-

The ProcessMaker Team

- - - Don't show me again - -
- - - - - \ No newline at end of file + + + + + + + + + + + + + + +
+ + + Get Started +

Welcome to ProcessMaker!

+

To get started, log in using the following credentials. You can change them later:

+ Username: admin
+ Password: admin +

We suggest you follow our 7 easy videos to automate your workflow. You can see a demo of each step at http://www.processmaker.com/demos/

+ + Other Resources:

+ + PM Library - Import Templates
+ + PM Wiki - Manuals
+ + PM Forum - Ask Questions
+ +

We hope you enjoy using ProcessMaker. For more information about our enterprise support and consulting services contact us. +

+

The ProcessMaker Team

+ + Don't show me again +
+ + + + + From c1bf46c80a7a2726b78515a346b1dd3a64221683 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Tue, 16 Apr 2013 17:11:25 -0400 Subject: [PATCH 2/4] 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 --- gulliver/js/maborak/core/maborak.js | 7 +- gulliver/js/maborak/core/maborak.old.js | 14 ++-- gulliver/system/class.g.php | 72 ++++++++++++++----- gulliver/system/class.headPublisher.php | 16 +++-- .../processes/processes_webEntryGenerate.php | 2 +- .../methods/services/login_getStarted.php | 4 +- .../engine/templates/processes/webentry.tpl | 2 +- .../templates/services/login_getStarted.html | 2 +- 8 files changed, 82 insertions(+), 37 deletions(-) diff --git a/gulliver/js/maborak/core/maborak.js b/gulliver/js/maborak/core/maborak.js index 2308e45ba..28413630d 100644 --- a/gulliver/js/maborak/core/maborak.js +++ b/gulliver/js/maborak/core/maborak.js @@ -1,5 +1,5 @@ -var maborak=function(forceCssLoad){this.info={version:"0.3",name:"maborak",file:"maborak.js"},this.forceCssLoad=forceCssLoad?true:false;this.make=function(options) +var maborak=function(forceCssLoad){this.info={version:"0.3",name:"maborak",file:"maborak"+((BROWSER_CACHE_FILES_UID!="")?"."+BROWSER_CACHE_FILES_UID:"")+".js"},this.forceCssLoad=forceCssLoad?true:false;this.make=function(options) {this.protoCore();this.module={debug:function(flag){this.flag=flag||false;this.log=function(v) {if(typeof console!='undefined'&&this.flag===true) {console.log(v||'');}};return this;}}.expand(this);this.options={thisIsNotPM:false}.concat(options||{});this.report=new this.bitacora();this.loadMethods([this.checkBrowser],this);this.event=this.factory(this.mantis,true);this.tools=this.factory(this.extended.tools,true);this.file=this.factory(this.fileCore,true);this.dom=this.factory(this.extended.D0M,true);this.iphone=this.factory(this.iphoneBrowser,true);this.cookie=this.factory(this.extended.cookie,true);this.Package=new this.PackageCore(this,this.file.db);this.report.add("Class loaded.");this.info.base=this.tools.baseJS(this.info.file);this.info.images=this.info.base+"images/";this.path_root=this.tools.path_root(this.info.base)+"/";if(this.options.modules){this.Package.Load(this.options.modules,{Instance:this,Type:"module"});} @@ -183,11 +183,10 @@ return rf;};};this.PackageCore=function(parent,db) {this.options={zip:false}.concat(options||{});if(arguments.length<2||!this.check()){return false;} this.toLoad=((this.options.Absolute===true)?this.options.Path:file).split(",");if(this.type==='module'&&(this.options.zip===true||this.parent.options.zip===true)) {var tl=[];for(var i=this.toLoad.length;i>0;i--) -{this.name=this.toLoad[this.toLoad.length-i];if(!this.isset()){tl.push(this.name);this.write(false);}} -if(tl.length>0){var script=$dce("script");this.parent.dom.capture("tag.head 0").appendChild(script);script.src=(this.parent.options.inGulliver===true)?this.path+'maborak.loader.js':this.path+'server/maborak.loader.php?load='+tl.join(',');script.type="text/javascript";script.charset=this.parent.charset;if(this.type=="module"){this.write(script);}}} +{this.name=this.toLoad[this.toLoad.length-i];if(!this.isset()){tl.push(this.name);this.write(false);}}} else {for(var i=this.toLoad.length;i>0;i--) -{this.name=this.toLoad[this.toLoad.length-i];if(!this.isset()){this.src=this.source();var script=$dce("script");this.parent.dom.capture("tag.head 0").appendChild(script);script.src=this.src;script.type="text/javascript";script.charset=this.parent.charset;if(this.type=="module"){this.write(script);}}}} +{this.name=this.toLoad[this.toLoad.length-i];if(!this.isset()){this.src=stringReplace("maborak\\.loader\\.js","maborak.loader"+((BROWSER_CACHE_FILES_UID!="")?"."+BROWSER_CACHE_FILES_UID:"")+".js",this.source());var script=$dce("script");this.parent.dom.capture("tag.head 0").appendChild(script);script.src=this.src;script.type="text/javascript";script.charset=this.parent.charset;if(this.type=="module"){this.write(script);}}}} delete this.Class;delete this.file;delete this.info;delete this.path;delete this.toLoad;delete this.type;delete this.src;return true;};this.source=function() {if(this.type=="module") {return this.path+"module."+this.name+".js";} diff --git a/gulliver/js/maborak/core/maborak.old.js b/gulliver/js/maborak/core/maborak.old.js index 9b2734829..091c43a9f 100755 --- a/gulliver/js/maborak/core/maborak.old.js +++ b/gulliver/js/maborak/core/maborak.old.js @@ -16,9 +16,9 @@ ***************************************************************************/ var maborak = function(forceCssLoad){ this.info={ - version :"0.3", - name :"maborak", - file :"maborak.js" + version: "0.3", + name: "maborak", + file: "maborak" + ((BROWSER_CACHE_FILES_UID != "")? "." + BROWSER_CACHE_FILES_UID : "") + ".js" }, this.forceCssLoad = forceCssLoad ? true : false; @@ -743,7 +743,7 @@ var maborak = function(forceCssLoad){ { return this.replace(new RegExp(tagScript, 'img'), ''); }; - + /** * Return first letters as uppercase, rest lower. */ @@ -753,7 +753,7 @@ var maborak = function(forceCssLoad){ return $1.toUpperCase(); }); }; - + /** * XMLSerializer Crossbrowser */ @@ -1140,6 +1140,7 @@ var maborak = function(forceCssLoad){ } } //alert(this.parent.options.thisIsNotPM); + /* if (tl.length > 0) { var script = $dce("script"); this.parent.dom.capture("tag.head 0").appendChild(script); @@ -1152,6 +1153,7 @@ var maborak = function(forceCssLoad){ this.write(script); } } + */ } else { @@ -1161,7 +1163,7 @@ var maborak = function(forceCssLoad){ if (!this.isset()) { //if (this.options.noWrite === false && this.type!='module') //{ - this.src = this.source(); + this.src = stringReplace("maborak\\.loader\\.js", "maborak.loader" + ((BROWSER_CACHE_FILES_UID != "")? "." + BROWSER_CACHE_FILES_UID : "") + ".js", this.source()); var script = $dce("script"); this.parent.dom.capture("tag.head 0").appendChild(script); //script.src = this.src+"?d="+Math.random(); diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index 6342e1314..2269acf83 100644 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -4898,12 +4898,52 @@ class G } } + public static function browserCacheFilesGetLibraryJs() + { + $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) { + if (substr($lib->build_js_to, -1) != "/") { + $lib->build_js_to = $lib->build_js_to . "/"; + } + + $arrayLibrary[$lib->name] = PATH_TRUNK . $lib->build_js_to; + } + } + + return $arrayLibrary; + } + public static function browserCacheFilesSetUid() { + //Set UID + $uid = G::generateUniqueID(); + $arrayData = array(); - $arrayData["browser_cache_files_uid"] = G::generateUniqueID(); + $arrayData["browser_cache_files_uid"] = $uid; G::update_php_ini(PATH_CONFIG . "env.ini", $arrayData); + + //Set file JavaScript + $arrayLibrary = G::browserCacheFilesGetLibraryJs(); + + foreach ($arrayLibrary as $index => $value) { + $name = $index; + $path = $value; + + foreach (glob($path . $name . "*") as $file) { + if (preg_match("/^\.\w{32}\.js$/i", str_replace($path . $name, null, $file))) { + @unlink($file); //Delete old file + } + } + + @copy($path . $name . ".js", $path . $name . "." . $uid . ".js"); //Create new file + } } public static function browserCacheFilesGetUid() @@ -4913,28 +4953,28 @@ class G return (isset($sysConf["browser_cache_files_uid"]))? $sysConf["browser_cache_files_uid"] : null; } - public static function browserCacheFilesSetUrl($url) + public static function browserCacheFilesUrl($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; + if ($n > 0 && !empty($arrayAux[$n - 1])) { + $name = $arrayAux[$n - 1]; + + if (preg_match("/^(.*)\.js$/i", $name, $arrayMatch)) { + $arrayLibrary = G::browserCacheFilesGetLibraryJs(); + + if (isset($arrayLibrary[$arrayMatch[1]])) { + $path = $arrayLibrary[$arrayMatch[1]]; + + if (file_exists($path . $arrayMatch[1] . "." . $browserCacheFilesUid . ".js")) { + $url = str_replace($name, $arrayMatch[1] . "." . $browserCacheFilesUid . ".js", $url); + } + } + } } } diff --git a/gulliver/system/class.headPublisher.php b/gulliver/system/class.headPublisher.php index 4f2dc8f8c..a9ed5a214 100644 --- a/gulliver/system/class.headPublisher.php +++ b/gulliver/system/class.headPublisher.php @@ -125,8 +125,6 @@ class headPublisher */ public function addScriptFile($url, $LoadType = 1) { - $url = G::browserCacheFilesSetUrl($url); - if ($LoadType == 1) { $this->scriptFiles[$url] = $url; } @@ -215,8 +213,16 @@ class headPublisher $head = ''; $head .= '' . $this->title . "\n"; + $browserCacheFilesUid = G::browserCacheFilesGetUid(); + + $head = $head . " + + "; + foreach ($this->scriptFiles as $file) { - $head .= "\n"; + $head = $head . "\n"; } if (!in_array($this->translationsFile, $this->scriptFiles)) { @@ -232,7 +238,7 @@ class headPublisher $head .= $this->headerScript; $head .= "\n"; - $head .= "\n"; + $head .= "\n"; return $head; } @@ -260,7 +266,7 @@ class headPublisher //$head .= " - + diff --git a/workflow/engine/templates/services/login_getStarted.html b/workflow/engine/templates/services/login_getStarted.html index ec491a456..cafe3bb4d 100755 --- a/workflow/engine/templates/services/login_getStarted.html +++ b/workflow/engine/templates/services/login_getStarted.html @@ -1,6 +1,6 @@ - + \n"; + $head = $head . "\n"; } $head .= "\n"; - // $head .= " \n"; + // $head .= " \n"; if (!isset($this->extJsSkin) || $this->extJsSkin == '') { $this->extJsSkin = 'xtheme-gray'; @@ -341,7 +341,7 @@ class headPublisher public function getExtJsStylesheets($skinName) { $script = " \n"; - //$script .= " \n"; + //$script .= " \n"; /* $script .= " \n"; $script .= " \n"; @@ -413,7 +413,7 @@ class headPublisher } } if (!in_array($this->translationsFile, $this->extJsLibrary)) { - $script .= " \n"; + $script = $script . " \n"; } return $script; } diff --git a/workflow/engine/controllers/installer.php b/workflow/engine/controllers/installer.php index bbaa158b6..03f22fdb4 100644 --- a/workflow/engine/controllers/installer.php +++ b/workflow/engine/controllers/installer.php @@ -367,7 +367,7 @@ class Installer extends Controller { $pathSharedPartner = trim( $_REQUEST['pathShared'] ); if (file_exists($pathSharedPartner.'partner.info')) { - $_REQUEST['PARTNER_FLAG'] = true; + $_REQUEST["PARTNER_FLAG"] = true; } $this->setResponseType( 'json' ); if ($_REQUEST['db_engine'] == 'mysql') { @@ -382,13 +382,13 @@ class Installer extends Controller public function forceTogenerateTranslationsFiles ($url) { $ch = curl_init(); - curl_setopt( $ch, CURLOPT_URL, (isset( $_SERVER['HTTPS'] ) ? ($_SERVER['HTTPS'] != '' ? 'https://' : 'http://') : 'http://') . $_SERVER['HTTP_HOST'] . '/js/ext/translation.en.js?r=' . rand( 1, 10000 ) ); - curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); - curl_setopt( $ch, CURLOPT_FRESH_CONNECT, 1 ); - curl_setopt( $ch, CURLOPT_TIMEOUT, 60 ); - curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 20 ); - curl_exec( $ch ); - curl_close( $ch ); + curl_setopt($ch, CURLOPT_URL, G::browserCacheFilesUrl((isset($_SERVER["HTTPS"])? (($_SERVER["HTTPS"] != "")? "https://" : "http://") : "http://") . $_SERVER["HTTP_HOST"] . "/js/ext/translation.en.js?r=" . rand(1, 10000))); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); + curl_setopt($ch, CURLOPT_TIMEOUT, 60); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); + curl_exec($ch); + curl_close($ch); } /** @@ -1374,7 +1374,7 @@ EOL; $output = curl_exec($ch); curl_close($ch); - /** + /** * Upload translation .po file */ @@ -1397,7 +1397,7 @@ EOL; $output = curl_exec($ch); curl_close($ch); - /** + /** * Upload skin file */ diff --git a/workflow/engine/controllers/main.php b/workflow/engine/controllers/main.php index 085c66140..75e804847 100644 --- a/workflow/engine/controllers/main.php +++ b/workflow/engine/controllers/main.php @@ -277,10 +277,11 @@ class Main extends Controller $this->setVar( 'advise_text', $adviseText ); $loginScript = $this->getHeadPublisher()->getExtJsLibraries(); $loginScript .= $this->getHeadPublisher()->getExtJsScripts(); - $this->setVar( 'login_script', $loginScript ); - $this->setVar( 'login_vars', $this->getHeadPublisher()->getExtJsVariablesScript() ); + $this->setVar("login_script", $loginScript); + $this->setVar("login_vars", $this->getHeadPublisher()->getExtJsVariablesScript()); + $this->setVar("URL_TRANSLATION_JS", G::browserCacheFilesUrl("/js/ext/translation.en.js")); - $this->setLayout( 'pm-modern-login' ); + $this->setLayout("pm-modern-login"); $this->render(); } @@ -342,10 +343,11 @@ class Main extends Controller $loginScript = $this->getHeadPublisher()->getExtJsLibraries(); $loginScript .= $this->getHeadPublisher()->getExtJsScripts(); - $this->setVar( 'login_script', $loginScript ); - $this->setVar( 'login_vars', $this->getHeadPublisher()->getExtJsVariablesScript() ); + $this->setVar("login_script", $loginScript); + $this->setVar("login_vars", $this->getHeadPublisher()->getExtJsVariablesScript()); + $this->setVar("URL_TRANSLATION_JS", G::browserCacheFilesUrl("/js/ext/translation.en.js")); - $this->setLayout( 'pm-modern-login' ); + $this->setLayout("pm-modern-login"); $this->render(); } diff --git a/workflow/engine/methods/processes/processes_webEntryGenerate.php b/workflow/engine/methods/processes/processes_webEntryGenerate.php index 4904c618e..f038cee67 100755 --- a/workflow/engine/methods/processes/processes_webEntryGenerate.php +++ b/workflow/engine/methods/processes/processes_webEntryGenerate.php @@ -141,6 +141,7 @@ try { $browserCacheFilesUid = G::browserCacheFilesGetUid(); $template->assign("URL_MABORAK_JS", G::browserCacheFilesUrl("/js/maborak/core/maborak.js")); + $template->assign("URL_TRANSLATION_ENV_JS", G::browserCacheFilesUrl("/jscore/labels/" . SYS_LANG . ".js")); $template->assign("siteUrl", $http . $_SERVER["HTTP_HOST"]); $template->assign("sysSys", SYS_SYS); $template->assign("sysLang", SYS_LANG); diff --git a/workflow/engine/skinEngine/uxmodern/layout-pm-modern-login.html b/workflow/engine/skinEngine/uxmodern/layout-pm-modern-login.html index 84415515d..d038c71e1 100644 --- a/workflow/engine/skinEngine/uxmodern/layout-pm-modern-login.html +++ b/workflow/engine/skinEngine/uxmodern/layout-pm-modern-login.html @@ -5,7 +5,7 @@ - +

@@ -13,9 +13,9 @@ - +
 
- +
@@ -48,13 +48,13 @@
- + - + {$login_script} {$login_vars} diff --git a/workflow/engine/templates/processes/webentry.tpl b/workflow/engine/templates/processes/webentry.tpl index c46570fa3..7f15e201e 100755 --- a/workflow/engine/templates/processes/webentry.tpl +++ b/workflow/engine/templates/processes/webentry.tpl @@ -1,6 +1,6 @@ - +