From f8ab55a061a28ee3e71dfe819ce8f866d0aaf9d3 Mon Sep 17 00:00:00 2001 From: Erik Amaru Ortiz Date: Fri, 24 Feb 2012 19:32:24 -0400 Subject: [PATCH] BUG 0000 User Experience (single app option added) 1st commit - login added - "single application" option added - simplified improved --- gulliver/js/form/core/form.js | 8 +- gulliver/js/jquery/xbreadcrumbs.js | 18 +- gulliver/js/maborak/core/maborak.js | 3 + gulliver/js/maborak/core/module.panel.js | 2 +- gulliver/system/class.controller.php | 15 + gulliver/system/class.g.php | 103 +- gulliver/system/class.publisher.php | 24 +- gulliver/system/class.xmlform.php | 26 +- .../engine/classes/class.applications.php | 142 +- workflow/engine/classes/class.plugin.php | 6 + workflow/engine/classes/class.processMap.php | 98 +- workflow/engine/classes/class.processes.php | 40 +- workflow/engine/classes/model/AppDocument.php | 36 +- .../engine/classes/model/UsersProperties.php | 3 +- .../classes/model/map/ProcessMapBuilder.php | 2 + .../classes/model/map/TaskMapBuilder.php | 2 + .../engine/classes/model/om/BaseProcess.php | 55 +- .../classes/model/om/BaseProcessPeer.php | 23 +- workflow/engine/classes/model/om/BaseTask.php | 55 +- .../engine/classes/model/om/BaseTaskPeer.php | 23 +- workflow/engine/config/schema.xml | 3 + workflow/engine/controllers/adminProxy.php | 8 +- workflow/engine/controllers/home.php | 252 +- workflow/engine/data/mssql/schema.sql | 92 + workflow/engine/data/mysql/schema.sql | 2 + .../engine/js/appFolder/core/appFolderList.js | 56 +- workflow/engine/js/cases/core/cases_Step.js | 6 +- .../js/processmap/core/processes_Map.js | 1 + .../engine/methods/cases/ajaxListener.php | 160 +- .../cases/casesListExtJsRedirector.php | 31 +- .../engine/methods/cases/cases_Derivate.php | 4 +- workflow/engine/methods/cases/cases_Step.php | 91 +- .../engine/methods/cases/proxyCasesList.php | 5 +- .../engine/methods/login/authentication.php | 45 +- .../methods/processes/processes_Save.php | 1 + workflow/engine/skinEngine/base/config.xml | 64 +- workflow/engine/skinEngine/base/css/form.css | 896 +++ workflow/engine/skinEngine/base/css/style.css | 130 + workflow/engine/skinEngine/base/layout.html | 2 +- .../skinEngine/simplified/css/style.css | 547 +- .../skinEngine/simplified/extJsInitLoad.html | 1 + workflow/engine/skinEngine/skinEngine.php | 893 +-- .../uxs/baseCss/ext-all-notheme.css | 5150 +++++++++++++ .../engine/skinEngine/uxs/baseCss/ext-all.css | 6789 +++++++++++++++++ workflow/engine/skinEngine/uxs/config.xml | 50 + workflow/engine/skinEngine/uxs/css/form.css | 925 +++ .../engine/skinEngine/uxs/css/jscolors.css | 59 + .../skinEngine/uxs/css/pmos-xtheme-gray.css | 1127 +++ .../engine/skinEngine/uxs/css/printstyle.css | 500 ++ workflow/engine/skinEngine/uxs/css/sprite.css | 931 +++ .../engine/skinEngine/uxs/css/sprite_ie.css | 0 workflow/engine/skinEngine/uxs/css/style.css | 3298 ++++++++ .../engine/skinEngine/uxs/css/xmlcolors.css | 55 + .../engine/skinEngine/uxs/css/xtheme-gray.css | 1654 ++++ .../engine/skinEngine/uxs/extJsInitLoad.html | 70 + .../engine/skinEngine/uxs/layout-blank.html | 24 + .../engine/skinEngine/uxs/layout-extjs.html | 10 + .../engine/skinEngine/uxs/layout-raw.html | 16 + .../engine/skinEngine/uxs/layout-submenu.html | 44 + .../engine/skinEngine/uxs/layout-tracker.html | 63 + workflow/engine/skinEngine/uxs/layout.html | 77 + workflow/engine/skinEngine/uxs/xmlform.html | 188 + .../cases/cases_ScreenDerivation.html | 374 +- .../templates/cases/showDebugFrameLoader.php | 4 +- workflow/engine/templates/grid.html | 3 +- workflow/engine/templates/grid_view.html | 13 +- workflow/engine/templates/home/appList.html | 1 + .../engine/templates/home/applications.html | 93 +- workflow/engine/templates/home/index.html | 27 +- workflow/engine/templates/home/index2.html | 132 - .../engine/templates/home/indexSingle.html | 102 + workflow/engine/templates/home/login_ie.html | 77 + .../engine/templates/home/login_standard.html | 102 + workflow/engine/templates/home/noAppsMsg.html | 39 + workflow/engine/xmlform/login/newSite.xml | 2 +- workflow/engine/xmlform/login/newSiteAdd.xml | 2 +- .../processes/processes_DirectoriesList.xml | 2 +- .../xmlform/processes/processes_Edit.html | 4 + .../xmlform/processes/processes_Edit.xml | 8 + .../processes/processes_FilesOptions.xml | 2 +- .../engine/xmlform/tasks/tasks_Definition.xml | 7 + .../public_html/images/classic/arrowB.gif | Bin 0 -> 13123 bytes .../public_html/images/classic/failed.png | Bin 0 -> 886 bytes workflow/public_html/images/classic/grid.png | Bin 0 -> 25591 bytes .../images/classic/grid.title.gray.gif | Bin 0 -> 79 bytes .../images/classic/grid.title.green.gif | Bin 0 -> 105 bytes .../images/classic/grid.title.greenLight.gif | Bin 0 -> 158 bytes .../images/classic/grid.title.orange.gif | Bin 0 -> 157 bytes .../images/classic/grid.title.violet.gif | Bin 0 -> 158 bytes .../images/classic/grid.titlebar.bg1.gif | Bin 0 -> 90 bytes .../images/classic/grid.titlebar.bg1.png | Bin 0 -> 278 bytes workflow/public_html/images/classic/icons.gif | Bin 0 -> 11530 bytes workflow/public_html/images/classic/info.png | Bin 0 -> 1918 bytes .../public_html/images/classic/loader_B.gif | Bin 0 -> 3236 bytes .../images/classic/loader_B_blank.gif | Bin 0 -> 4178 bytes .../public_html/images/classic/maximizar.gif | Bin 0 -> 214 bytes .../public_html/images/classic/maximizar1.gif | Bin 0 -> 200 bytes .../module.grid/page-first-disabled.gif | Bin 0 -> 925 bytes .../images/classic/module.grid/page-first.gif | Bin 0 -> 925 bytes .../module.grid/page-last-disabled.gif | Bin 0 -> 923 bytes .../images/classic/module.grid/page-last.gif | Bin 0 -> 923 bytes .../module.grid/page-next-disabled.gif | Bin 0 -> 875 bytes .../images/classic/module.grid/page-next.gif | Bin 0 -> 875 bytes .../module.grid/page-prev-disabled.gif | Bin 0 -> 879 bytes .../images/classic/module.grid/page-prev.gif | Bin 0 -> 879 bytes workflow/public_html/images/classic/nc.gif | Bin 0 -> 302 bytes workflow/public_html/images/classic/nr.gif | Bin 0 -> 297 bytes workflow/public_html/images/classic/nr.png | Bin 0 -> 474 bytes workflow/public_html/images/classic/ok.png | Bin 0 -> 866 bytes .../images/classic/panel.bg.title.1x20.gif | Bin 0 -> 98 bytes .../images/classic/panel.bg.title.1x23.gif | Bin 0 -> 100 bytes .../images/classic/panel.bg.title.1x29.gif | Bin 0 -> 154 bytes .../images/classic/panel.bg.title.gif | Bin 0 -> 147 bytes .../images/classic/panel.bg.title.png | Bin 0 -> 21171 bytes .../images/classic/panel.close.static.gif | Bin 0 -> 554 bytes .../images/classic/panel.resize.11x11.png | Bin 0 -> 259 bytes .../images/classic/panel.tabSelected.1x25.gif | Bin 0 -> 13123 bytes .../images/classic/panel.tabSelected.1x3.gif | Bin 0 -> 49 bytes .../public_html/images/classic/question.png | Bin 0 -> 1435 bytes .../images/classic/roll.static.gif | Bin 0 -> 200 bytes .../images/classic/separator.down.gif | Bin 0 -> 82 bytes .../images/classic/separator.up.gif | Bin 0 -> 81 bytes .../images/classic/separatorTable.gif | Bin 0 -> 45 bytes .../classic/silverBackgroundMenuSelected.jpg | Bin 0 -> 329 bytes .../classic/silverBackgroundSubMenu.jpg | Bin 0 -> 13150 bytes .../classic/silverBackgroundTableTitle.jpg | Bin 0 -> 296 bytes workflow/public_html/images/classic/star.gif | Bin 0 -> 1120 bytes .../public_html/images/classic/star_s.gif | Bin 0 -> 513 bytes .../public_html/images/classic/star_u.gif | Bin 0 -> 250 bytes .../public_html/images/classic/tabs_li_bg.gif | Bin 0 -> 2349 bytes .../images/simplified/logout-grey.png | Bin 0 -> 660 bytes .../images/simplified/titlebar.png | Bin 0 -> 191 bytes workflow/public_html/sysGeneric.php | 48 +- 133 files changed, 24507 insertions(+), 1539 deletions(-) create mode 100644 workflow/engine/skinEngine/base/css/form.css create mode 100644 workflow/engine/skinEngine/uxs/baseCss/ext-all-notheme.css create mode 100644 workflow/engine/skinEngine/uxs/baseCss/ext-all.css create mode 100644 workflow/engine/skinEngine/uxs/config.xml create mode 100644 workflow/engine/skinEngine/uxs/css/form.css create mode 100644 workflow/engine/skinEngine/uxs/css/jscolors.css create mode 100644 workflow/engine/skinEngine/uxs/css/pmos-xtheme-gray.css create mode 100644 workflow/engine/skinEngine/uxs/css/printstyle.css create mode 100644 workflow/engine/skinEngine/uxs/css/sprite.css create mode 100644 workflow/engine/skinEngine/uxs/css/sprite_ie.css create mode 100644 workflow/engine/skinEngine/uxs/css/style.css create mode 100644 workflow/engine/skinEngine/uxs/css/xmlcolors.css create mode 100644 workflow/engine/skinEngine/uxs/css/xtheme-gray.css create mode 100644 workflow/engine/skinEngine/uxs/extJsInitLoad.html create mode 100644 workflow/engine/skinEngine/uxs/layout-blank.html create mode 100644 workflow/engine/skinEngine/uxs/layout-extjs.html create mode 100644 workflow/engine/skinEngine/uxs/layout-raw.html create mode 100644 workflow/engine/skinEngine/uxs/layout-submenu.html create mode 100644 workflow/engine/skinEngine/uxs/layout-tracker.html create mode 100644 workflow/engine/skinEngine/uxs/layout.html create mode 100644 workflow/engine/skinEngine/uxs/xmlform.html delete mode 100644 workflow/engine/templates/home/index2.html create mode 100644 workflow/engine/templates/home/indexSingle.html create mode 100644 workflow/engine/templates/home/login_ie.html create mode 100644 workflow/engine/templates/home/login_standard.html create mode 100644 workflow/engine/templates/home/noAppsMsg.html create mode 100644 workflow/public_html/images/classic/arrowB.gif create mode 100644 workflow/public_html/images/classic/failed.png create mode 100644 workflow/public_html/images/classic/grid.png create mode 100644 workflow/public_html/images/classic/grid.title.gray.gif create mode 100644 workflow/public_html/images/classic/grid.title.green.gif create mode 100644 workflow/public_html/images/classic/grid.title.greenLight.gif create mode 100644 workflow/public_html/images/classic/grid.title.orange.gif create mode 100644 workflow/public_html/images/classic/grid.title.violet.gif create mode 100644 workflow/public_html/images/classic/grid.titlebar.bg1.gif create mode 100644 workflow/public_html/images/classic/grid.titlebar.bg1.png create mode 100644 workflow/public_html/images/classic/icons.gif create mode 100644 workflow/public_html/images/classic/info.png create mode 100644 workflow/public_html/images/classic/loader_B.gif create mode 100644 workflow/public_html/images/classic/loader_B_blank.gif create mode 100644 workflow/public_html/images/classic/maximizar.gif create mode 100644 workflow/public_html/images/classic/maximizar1.gif create mode 100644 workflow/public_html/images/classic/module.grid/page-first-disabled.gif create mode 100644 workflow/public_html/images/classic/module.grid/page-first.gif create mode 100644 workflow/public_html/images/classic/module.grid/page-last-disabled.gif create mode 100644 workflow/public_html/images/classic/module.grid/page-last.gif create mode 100644 workflow/public_html/images/classic/module.grid/page-next-disabled.gif create mode 100644 workflow/public_html/images/classic/module.grid/page-next.gif create mode 100644 workflow/public_html/images/classic/module.grid/page-prev-disabled.gif create mode 100644 workflow/public_html/images/classic/module.grid/page-prev.gif create mode 100644 workflow/public_html/images/classic/nc.gif create mode 100644 workflow/public_html/images/classic/nr.gif create mode 100644 workflow/public_html/images/classic/nr.png create mode 100644 workflow/public_html/images/classic/ok.png create mode 100644 workflow/public_html/images/classic/panel.bg.title.1x20.gif create mode 100644 workflow/public_html/images/classic/panel.bg.title.1x23.gif create mode 100644 workflow/public_html/images/classic/panel.bg.title.1x29.gif create mode 100644 workflow/public_html/images/classic/panel.bg.title.gif create mode 100644 workflow/public_html/images/classic/panel.bg.title.png create mode 100644 workflow/public_html/images/classic/panel.close.static.gif create mode 100644 workflow/public_html/images/classic/panel.resize.11x11.png create mode 100644 workflow/public_html/images/classic/panel.tabSelected.1x25.gif create mode 100644 workflow/public_html/images/classic/panel.tabSelected.1x3.gif create mode 100644 workflow/public_html/images/classic/question.png create mode 100644 workflow/public_html/images/classic/roll.static.gif create mode 100644 workflow/public_html/images/classic/separator.down.gif create mode 100644 workflow/public_html/images/classic/separator.up.gif create mode 100644 workflow/public_html/images/classic/separatorTable.gif create mode 100644 workflow/public_html/images/classic/silverBackgroundMenuSelected.jpg create mode 100644 workflow/public_html/images/classic/silverBackgroundSubMenu.jpg create mode 100644 workflow/public_html/images/classic/silverBackgroundTableTitle.jpg create mode 100644 workflow/public_html/images/classic/star.gif create mode 100644 workflow/public_html/images/classic/star_s.gif create mode 100644 workflow/public_html/images/classic/star_u.gif create mode 100644 workflow/public_html/images/classic/tabs_li_bg.gif create mode 100644 workflow/public_html/images/simplified/logout-grey.png create mode 100644 workflow/public_html/images/simplified/titlebar.png diff --git a/gulliver/js/form/core/form.js b/gulliver/js/form/core/form.js index 3467b5e03..1155678c3 100755 --- a/gulliver/js/form/core/form.js +++ b/gulliver/js/form/core/form.js @@ -1127,7 +1127,7 @@ function G_Text( form, element, name) me.applyMask(pressKey); if ((pressKey == 8 || pressKey == 46) && (me.validate != 'Login' && me.validate != 'NodeName')) me.sendOnChange(); me.checkBrowser(); - if (me.browser.name == 'Chrome'){ + if (me.browser.name == 'Chrome' || me.browser.name == 'Safari'){ event.returnValue = false; } else{ @@ -1158,7 +1158,7 @@ function G_Text( form, element, name) if (event.shiftKey) return true; me.checkBrowser(); if ((me.browser.name == 'Firefox') && (keyCode == 8 || keyCode == 46)){ - if (me.browser.name == 'Chrome'){ + if (me.browser.name == 'Chrome' || me.browser.name == 'Safari'){ event.returnValue = false; } else{ @@ -1248,14 +1248,14 @@ function G_Text( form, element, name) me.applyMask(pressKey); } if (updateOnChange) me.sendOnChange(); - if (me.browser.name == 'Chrome'){ + if (me.browser.name == 'Chrome' || me.browser.name == 'Safari'){ event.returnValue = false; } else{ return false; } }else{ - if (me.browser.name == 'Chrome'){ + if (me.browser.name == 'Chrome' || me.browser.name == 'Safari'){ event.returnValue = false; } else{ diff --git a/gulliver/js/jquery/xbreadcrumbs.js b/gulliver/js/jquery/xbreadcrumbs.js index 0325af641..317cb19d0 100644 --- a/gulliver/js/jquery/xbreadcrumbs.js +++ b/gulliver/js/jquery/xbreadcrumbs.js @@ -32,11 +32,17 @@ } element.children('LI').click(function(){ - + if(settings.collapsible && !$(this).hasClass('current')){ + var initWidth = $(this).children('A').attr('init-width'); + $(this).children('A').animate({width: initWidth}, 'normal'); + } + $('.xbreadcrumbs').children('LI').attr('class', ''); $(this).attr('class', 'current'); - $('.xbreadcrumbs').children('LI[class!=current]').children('A').animate({width: settings.collapsedWidth}, 'fast'); + if(settings.collapsible) { + $('.xbreadcrumbs').children('LI[class!=current]').children('A').animate({width: settings.collapsedWidth}, 'fast'); + } }); element.children('LI').mouseenter(function(){ @@ -62,7 +68,7 @@ _showHideSubLevel(subLevel, false); if(settings.collapsible && !$(this).hasClass('current')){ - $(this).children('A').animate({width: settings.collapsedWidth}, 'fast'); + $(this).children('A').animate({width: settings.collapsedWidth}, 800); } }); }; @@ -96,12 +102,6 @@ // Entry point _build(); - - - //$('.xbreadcrumbs').children('LI[class=current]').click(); - //var initWidth = $('.xbreadcrumbs').children('LI[class=current]').width(); - //alert(initWidth); - //$('.xbreadcrumbs').children('LI[class=current]').animate({width: initWidth}, 'normal'); }; /* Default Settings */ diff --git a/gulliver/js/maborak/core/maborak.js b/gulliver/js/maborak/core/maborak.js index c06fee56d..59ef4dcee 100755 --- a/gulliver/js/maborak/core/maborak.js +++ b/gulliver/js/maborak/core/maborak.js @@ -68,11 +68,14 @@ var maborak = function(){ this.exec(this.fix.memoryLeak); /* create Stylesheet BEGIN */ + /* erik: DEPRECATED! css should be separated accordind MVC pattern, all those css are moved on style.css to current skin*/ + /* var st =$dce('link'); st.rel ='stylesheet'; st.type ='text/css'; st.href =this.info.base+'stylesheet/default.css'; this.dom.capture("tag.head 0").appendChild(st); + */ /* create Stylesheet END */ this.expand(this); return this; diff --git a/gulliver/js/maborak/core/module.panel.js b/gulliver/js/maborak/core/module.panel.js index ce8788988..1a0991a12 100755 --- a/gulliver/js/maborak/core/module.panel.js +++ b/gulliver/js/maborak/core/module.panel.js @@ -1253,7 +1253,7 @@ leimnud.Package.Public({ { this.parent.dom.setStyle(this.elements.loader,{ //display:"none", - background:"url('"+this.parent.path_root+"maborak/core/images/loader_B.gif')", + background:"url('/images/classic/loader_B.gif')", backgroundRepeat:"no-repeat", width:32, height:32, diff --git a/gulliver/system/class.controller.php b/gulliver/system/class.controller.php index 2ca335d78..2d9731a61 100755 --- a/gulliver/system/class.controller.php +++ b/gulliver/system/class.controller.php @@ -237,4 +237,19 @@ class Controller return $this->headPublisher; } + + public function render($type='mvc') + { + G::RenderPage('publish', $type); + } + + public function header($header) + { + G::header($header); + } + + public function redirect($url) + { + G::header("Location: $url"); + } } diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index 6eb6fff6d..87999c1f0 100755 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -486,7 +486,7 @@ class G * @param string $key * @return string */ - /*public static*/ function decrypt($string, $key) { + function decrypt($string, $key) { // if ( defined ( 'ENABLE_ENCRYPT' ) && ENABLE_ENCRYPT == 'yes' ) { @@ -990,19 +990,19 @@ class G function streamCSSBigFile( $filename ) { header('Content-Type: text/css'); - + //First get Skin info $filenameParts = explode("-",$filename); $skinName = $filenameParts[0]; $skinVariant = "skin"; - if(isset($filenameParts[1])){ - $skinVariant=strtolower($filenameParts[1]); + if(isset($filenameParts[1])) { + $skinVariant = strtolower($filenameParts[1]); } - if($skinName == "jscolors") $skinName = "classic"; - if($skinName == "xmlcolors") $skinName = "classic"; - if($skinName=="classic"){ + if ($skinName == "jscolors") $skinName = "classic"; + if ($skinName == "xmlcolors") $skinName = "classic"; + if ($skinName=="classic") { $configurationFile = G::ExpandPath( "skinEngine" ).'base'.PATH_SEP.'config.xml'; } else { @@ -4402,6 +4402,95 @@ function get_mobile_data( $pv_browser_user_agent ) return $a_mobile_data; } + function getBrowser() + { + $u_agent = $_SERVER['HTTP_USER_AGENT']; + $bname = 'Unknown'; + $platform = 'Unknown'; + $version= ""; + + //First get the platform? + if (preg_match('/linux/i', $u_agent)) { + $platform = 'linux'; + } + elseif (preg_match('/macintosh|mac os x/i', $u_agent)) { + $platform = 'mac'; + } + elseif (preg_match('/windows|win32/i', $u_agent)) { + $platform = 'windows'; + } + + // Next get the name of the useragent yes seperately and for good reason + if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) + { + $bname = 'Internet Explorer'; + $ub = "MSIE"; + } + elseif(preg_match('/Firefox/i',$u_agent)) + { + $bname = 'Mozilla Firefox'; + $ub = "Firefox"; + } + elseif(preg_match('/Chrome/i',$u_agent)) + { + $bname = 'Google Chrome'; + $ub = "Chrome"; + } + elseif(preg_match('/Safari/i',$u_agent)) + { + $bname = 'Apple Safari'; + $ub = "Safari"; + } + elseif(preg_match('/Opera/i',$u_agent)) + { + $bname = 'Opera'; + $ub = "Opera"; + } + elseif(preg_match('/Netscape/i',$u_agent)) + { + $bname = 'Netscape'; + $ub = "Netscape"; + } + + // finally get the correct version number + $known = array('Version', $ub, 'other'); + $pattern = '#(?' . join('|', $known) . + ')[/ ]+(?[0-9.|a-zA-Z.]*)#'; + if (!preg_match_all($pattern, $u_agent, $matches)) { + // we have no matching number just continue + } + + // see how many we have + $i = count($matches['browser']); + if ($i != 1) { + //we will have two since we are not using 'other' argument yet + //see if version is before or after the name + if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){ + $version= $matches['version'][0]; + } + else { + $version= $matches['version'][1]; + } + } + else { + $version= $matches['version'][0]; + } + + // check if we have a number + if ($version==null || $version=="") {$version="?";} + + return array( + 'userAgent' => $u_agent, + 'name' => strtolower($ub), + 'longName' => $bname, + 'version' => $version, + 'platform' => $platform, + 'pattern' => $pattern + ); + } + + + // track total script execution time function script_time() { diff --git a/gulliver/system/class.publisher.php b/gulliver/system/class.publisher.php index e7376ba96..d6aafd3a6 100755 --- a/gulliver/system/class.publisher.php +++ b/gulliver/system/class.publisher.php @@ -252,15 +252,32 @@ class Publisher } } if (isset($_SESSION)) $_SESSION[$G_FORM->id]=$G_FORM->values; + // by default load the core template + if ($Part['Template'] == 'xmlform_preview') + $Part['Template'] = 'xmlform'; + $template = PATH_CORE . 'templates/' . $Part['Template'] . '.html'; + + //erik: new feature, now templates such as xmlform.html can be personalized via skins + if (defined('SYS_SKIN') && strtolower(SYS_SKIN) != 'classic') { + // first, verify if the template exists on base skins path + if (is_file(G::ExpandPath("skinEngine") . SYS_SKIN . PATH_SEP . $Part['Template'] . '.html')) { + $template = G::ExpandPath("skinEngine") . SYS_SKIN . PATH_SEP . $Part['Template'] . '.html'; + } + // second, verify if the template exists on user skins path + else if (is_file(PATH_CUSTOM_SKINS . SYS_SKIN . PATH_SEP . $Part['Template'] . '.html')) { + $template = PATH_CUSTOM_SKINS . SYS_SKIN . PATH_SEP . $Part['Template'] . '.html'; + } + } + //end new feature + if ($Part['Template'] == 'grid') print ('
'); $scriptCode=''; if($this->localMode != '') { // @# las modification by erik in 09/06/2008 $G_FORM->mode = $this->localMode; } - print $G_FORM->render( $template , $scriptCode ); if ($Part['Template'] == 'grid') print ('
'); $oHeadPublisher =& headPublisher::getSingleton(); @@ -602,6 +619,11 @@ class Publisher else $template->templateFile = PATH_TPL . $Part['Template'] . '.html'; + // last change to load the template, maybe absolute path was given + if (!is_file($template->templateFile)) { + $template->templateFile = strpos($Part['Template'], '.html') !== false? $Part['Template']: $Part['Template'].'.html'; + } + //assign the variables and use the template $template $template->assign( $dataArray); print $template->fetch($template->templateFile); diff --git a/gulliver/system/class.xmlform.php b/gulliver/system/class.xmlform.php index d96c14a2e..ee6b3b52f 100755 --- a/gulliver/system/class.xmlform.php +++ b/gulliver/system/class.xmlform.php @@ -3150,12 +3150,6 @@ class XmlForm_Field_Grid extends XmlForm_Field $this->id = $this->owner->id . $this->name; $using_template = "grid"; - ### added by Erik - ### For throw the preview view - if( isset($this->owner->visual_frontend) ){ - $using_template = "grid_{$this->owner->visual_frontend}"; - } - if( $this->mode == 'view' || $this->modeGrid === 'view' ){ $using_template = "grid_view"; } @@ -4433,6 +4427,7 @@ class xmlformTemplate extends Smarty $ft->action = '{$form_action}'; } $hasRequiredFields = false; + foreach ( $form->fields as $k => $v ) { $ft->fields [$k] = $v->cloneObject (); $ft->fields [$k]->label = '{' . $varPrefix . $k . '}'; @@ -4442,7 +4437,8 @@ class xmlformTemplate extends Smarty $ft->fields [$k]->field = '{' . $varPrefix . 'form.' . $k . '[row]}'; if (strcasecmp ( $target, 'templatePower' ) === 0) $ft->fields [$k]->field = '{' . $varPrefix . 'form[' . $k . '][row]}'; - } else { + } + else { if (strcasecmp ( $target, 'smarty' ) === 0) $ft->fields [$k]->field = '{' . $varPrefix . 'form.' . $k . '}'; if (strcasecmp ( $target, 'templatePower' ) === 0) @@ -4450,13 +4446,27 @@ class xmlformTemplate extends Smarty } $hasRequiredFields = $hasRequiredFields | (isset ( $v->required ) && ($v->required == '1') && ($v->mode == 'edit')); + + if ($v->type == 'xmlmenu') { + $menu = $v; + } } + + if (isset($menu)) { + if (isset($menu->owner->values['__DYNAFORM_OPTIONS']['PREVIOUS_STEP'])) { + $prevStep_url = $menu->owner->values['__DYNAFORM_OPTIONS']['PREVIOUS_STEP']; + + $this->assign('prevStep_url', $prevStep_url); + $this->assign('prevStep_label', G::loadTranslation('ID_BACK')); + } + } + $this->assign ( 'hasRequiredFields', $hasRequiredFields ); $this->assign ( 'form', $ft ); $this->assign ( 'printTemplate', true ); $this->assign ( 'printJSFile', false ); $this->assign ( 'printJavaScript', false ); - $this->assign ( 'dynaformSetFocus', "try {literal}{{/literal} dynaformSetFocus();}catch(e){literal}{{/literal}}" ); + //$this->assign ( 'dynaformSetFocus', "try {literal}{{/literal} dynaformSetFocus();}catch(e){literal}{{/literal}}" ); return $this->fetch ( $this->templateFile ); } diff --git a/workflow/engine/classes/class.applications.php b/workflow/engine/classes/class.applications.php index 416168914..b44a0cfef 100644 --- a/workflow/engine/classes/class.applications.php +++ b/workflow/engine/classes/class.applications.php @@ -3,7 +3,7 @@ class Applications { - public function getAll($start=null, $limit=null, $action=null, $filter=null, $search=null, $process=null, $user=null, $status=null, $type=null, $dateFrom=null, $dateTo=null, $callback=null, $dir=null, $sort='APP_CACHE_VIEW.APP_NUMBER') + public function getAll($userUid, $start=null, $limit=null, $action=null, $filter=null, $search=null, $process=null, $user=null, $status=null, $type=null, $dateFrom=null, $dateTo=null, $callback=null, $dir=null, $sort='APP_CACHE_VIEW.APP_NUMBER') { $callback = isset($callback) ? $callback : 'stcCallback1001'; $dir = isset($dir) ? $dir : 'DESC'; @@ -28,7 +28,7 @@ class Applications require_once ( "classes/model/AppDelay.php" ); require_once ( "classes/model/Fields.php" ); - $userUid = ( isset($_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '' ) ? $_SESSION['USER_LOGGED'] : null; + //$userUid = ( isset($_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '' ) ? $_SESSION['USER_LOGGED'] : null; <-- passed by param $oAppCache = new AppCacheView(); //get data configuration @@ -350,11 +350,11 @@ class Applications if (!isset($aRow['APP_CURRENT_USER'])) $aRow['APP_CURRENT_USER'] = "[Unassigned]"; - // replacing the status data with their respective translation if( isset($aRow['APP_STATUS']) ){ $aRow['APP_STATUS'] = G::LoadTranslation("ID_{$aRow['APP_STATUS']}"); } + // replacing the priority data with their respective translation if( isset($aRow['DEL_PRIORITY']) ){ $aRow['DEL_PRIORITY'] = G::LoadTranslation("ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}"); @@ -610,36 +610,114 @@ class Applications return $result; } - /** - * - * @param String $itemKey - * @param array $fields - * @return Boolean - */ - function removeItem($itemKey,$fields) { - $removedField = false; - for ($i=0;$igetAllCaseSteps($proUid, $tasUid, $appUid); + + //getting externals steps + $oPluginRegistry = &PMPluginRegistry::getSingleton(); + $eSteps = $oPluginRegistry->getSteps(); + $externalSteps = array(); + + foreach ($eSteps as $externalStep) { + $externalSteps[$externalStep->sStepId] = $externalStep; + } + + //getting the case record + if ($appUid) { + $caseData = $case->loadCase($appUid); + $pmScript = new PMScript(); + $pmScript->setFields($caseData['APP_DATA']); + } + + $externalStepCount = 0; + + foreach ($caseSteps as $caseStep) { + + if (trim($caseStep->getStepCondition()) != '') { // if it has a condition + $pmScript->setScript($caseStep->getStepCondition()); + + if (!$pmScript->evaluate()) { //evaluate + //evaluated false, jump & continue with the others steps + continue; + } } - } - $fields = array_values($fields); - //$fields = $this->calculateGridIndex( $fields ); - return ( $fields ); - } - /** - * - * @param Array $fields - * @return Array - * - */ - function calculateGridIndex( $fields ) { - for ( $i=0;$igetStepUidObj(); + $stepType = $caseStep->getStepTypeObj(); + $stepPosition = $caseStep->getStepPosition(); + $stepItem = array(); + $stepItem['id'] = $stepUid; + $stepItem['type'] = $stepType; + + switch ($stepType) { + case 'DYNAFORM': + $oDocument = DynaformPeer::retrieveByPK($stepUid); + + $stepItem['title'] = $oDocument->getDynTitle(); + $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=EDIT"; + break; + + case 'OUTPUT_DOCUMENT': + $oDocument = OutputDocumentPeer::retrieveByPK($caseStep->getStepUidObj()); + $outputDoc = $appDocument->getObject($appUid, $index, $caseStep->getStepUidObj(), 'OUTPUT'); + + $stepItem['title'] = $oDocument->getOutDocTitle(); + + if ($outputDoc['APP_DOC_UID']) { + $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=VIEW&DOC={$outputDoc['APP_DOC_UID']}"; + } + else { + $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=GENERATE"; + } + break; + + case 'INPUT_DOCUMENT': + $oDocument = InputDocumentPeer::retrieveByPK($stepUid); + + $stepItem['title'] = $oDocument->getInpDocTitle(); + $stepItem['url'] = "cases/cases_Step?UID=$stepUid&TYPE=$stepType&POSITION=$stepPosition&ACTION=ATTACH"; + break; + + case 'EXTERNAL': + $stepTitle = 'unknown ' . $caseStep->getStepUidObj(); + $oPluginRegistry = PMPluginRegistry::getSingleton(); + + $externalStep = $externalSteps[$caseStep->getStepUidObj()]; + $stepItem['id'] = $externalStep->sStepId; + $stepItem['title'] = $externalStep->sStepTitle; + $stepItem['url'] = "cases/cases_Step?UID={$externalStep->sStepId}&TYPE=EXTERNAL&POSITION=$stepPosition&ACTION=EDIT"; + break; + } + + $steps[] = $stepItem; + } + + //last, assign task + $stepItem = array(); + $stepItem['id'] = '-1'; + $stepItem['type'] = ''; + $stepItem['title'] = G::LoadTranslation('ID_ASSIGN_TASK'); + $stepItem['url'] = "cases/cases_Step?TYPE=ASSIGN_TASK&UID=-1&POSITION=10000&ACTION=ASSIGN"; + + $steps[] = $stepItem; + + return $steps; + } } \ No newline at end of file diff --git a/workflow/engine/classes/class.plugin.php b/workflow/engine/classes/class.plugin.php index c6ec1c594..3cc2e9d72 100755 --- a/workflow/engine/classes/class.plugin.php +++ b/workflow/engine/classes/class.plugin.php @@ -600,4 +600,10 @@ class PMPlugin { function registerDashboard() { // Dummy function for backwards compatibility } + + function getExternalStepAction() { + $oPluginRegistry =& PMPluginRegistry::getSingleton(); + g::pr($oPluginRegistry->getSteps()); + return $oPluginRegistry->getSteps(); + } } \ No newline at end of file diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index 6c6a3c336..dc1c12052 100755 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -415,33 +415,47 @@ class processMap { function editProcess($sProcessUID) { try { - $oProcess = new Process ( ); - if (!is_null($oProcess)) { + $oProcess = new Process (); - $calendar = new Calendar ( ); + if (!is_null($oProcess)) { + G::loadClass('processes'); + $calendar = new Calendar(); + $files = Processes::getProcessFiles($sProcessUID, 'mail'); + + $templates = array(); + $templates[] = 'dummy'; + + foreach ($files as $file) { + $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']); + } + $calendarObj = $calendar->getCalendarList(true, true); global $_DBArray; - - $_DBArray ['availableCalendars'] = $calendarObj ['array']; - + $_DBArray['_TEMPLATES1'] = $templates; + $_DBArray['availableCalendars'] = $calendarObj['array']; $_SESSION ['_DBArray'] = $_DBArray; + $aFields = $oProcess->load($sProcessUID); $aFields['PRO_SUMMARY_DYNAFORM'] = (isset($aFields['PRO_DYNAFORMS']['PROCESS']) ? $aFields['PRO_DYNAFORMS']['PROCESS'] : ''); - $aFields ['THETYPE'] = 'UPDATE'; + $aFields['THETYPE'] = 'UPDATE'; $calendarInfo = $calendar->getCalendarFor($sProcessUID, $sProcessUID, $sProcessUID); + //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar - $aFields ['PRO_CALENDAR'] = $calendarInfo ['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo ['CALENDAR_UID'] : ""; + $aFields['PRO_CALENDAR'] = $calendarInfo ['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo ['CALENDAR_UID'] : ""; global $G_PUBLISH; $G_PUBLISH = new Publisher ( ); $G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_Edit', '', $aFields, 'processes_Save'); G::RenderPage('publish', 'raw'); + return true; - } else { + } + else { throw (new Exception('This row doesn\'t exist!')); } - } catch (Exception $oError) { + } + catch (Exception $oError) { throw ($oError); } } @@ -1353,24 +1367,23 @@ class processMap { $aFields ['IFORM'] = $iForm; $aFields ['LANG'] = SYS_LANG; - if($iForm == 7) { - $aTemplates = array(); - $aTemplates[] = 'dummy'; - $sDirectory = PATH_DATA_MAILTEMPLATES . $aFields['PRO_UID'] . PATH_SEP; - G::verifyPath($sDirectory, true); - if (!file_exists($sDirectory . 'alert_message.html')) { - @copy(PATH_TPL . 'mails' . PATH_SEP . 'alert_message.html', $sDirectory . 'alert_message.html'); - } - $oDirectory = dir($sDirectory); - while ($sObject = $oDirectory->read()) { - if (($sObject !== '.') && ($sObject !== '..') && ($sObject !== 'alert_message.html')) { - $aTemplates[] = array('FILE' => $sObject, 'NAME' => $sObject); - } - } - global $_DBArray; - $_DBArray['_TEMPLATES1'] = $aTemplates; - $_SESSION ['_DBArray'] = $_DBArray; + /** Task Notifications **/ + if($iForm == 7 || $iForm == 1 ) { + G::loadClass('processes'); + $files = Processes::getProcessFiles($aFields['PRO_UID'], 'mail'); + $templates = array(); + $templates[] = 'dummy'; + + foreach ($files as $file) { + $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']); + } + + global $_DBArray; + $_DBArray['_TEMPLATES1'] = $templates; + $_SESSION['_DBArray'] = $_DBArray; + + if ($iForm == 7) { // Additional configuration G::loadClass('configuration'); $oConf = new Configurations; @@ -1380,6 +1393,7 @@ class processMap { $aFields['TAS_DEF_MESSAGE_TYPE'] = $conf['TAS_DEF_MESSAGE_TYPE']; $aFields['TAS_DEF_MESSAGE_TEMPLATE'] = $conf['TAS_DEF_MESSAGE_TEMPLATE']; } + } } if ($iForm == 3) { //Load Calendar Information @@ -4021,19 +4035,24 @@ class processMap { * @return void */ function processFilesManager($sProcessUID) { - $aDirectories = array(); - $aDirectories [] = array('DIRECTORY' => 'char'); - $aDirectories [] = array('DIRECTORY' => 'mailTemplates'); - $aDirectories [] = array('DIRECTORY' => 'public'); - global $_DBArray; - $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); - $_DBArray ['directories'] = $aDirectories; - $_SESSION ['_DBArray'] = $_DBArray; G::LoadClass('ArrayPeer'); - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('directories'); + global $_DBArray; global $G_PUBLISH; - $G_PUBLISH = new Publisher ( ); + + $oCriteria = new Criteria('dbarray'); + $G_PUBLISH = new Publisher(); + + $aDirectories = array(); + $aDirectories[] = array('DIRECTORY' => 'char'); + $aDirectories[] = array('DIRECTORY' => ''.G::loadTranslation('ID_TEMPLATES').''); + $aDirectories[] = array('DIRECTORY' => ''.G::loadTranslation('ID_PUBLIC').''); + + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray['directories'] = $aDirectories; + $_SESSION['_DBArray'] = $_DBArray; + + $oCriteria->setDBArrayTable('directories'); + $G_PUBLISH->AddContent('propeltable', 'paged-table', 'processes/processes_DirectoriesList', $oCriteria); G::RenderPage('publish', 'raw'); } @@ -4238,11 +4257,8 @@ class processMap { * @param string $sTaskUID * @param string $sIndex * @return void -<<<<<<< HEAD * throw Exception $oError -======= * @throw Exception $oError ->>>>>>> 4cdf80a... BUG 6639 When importing a process it is displaying an error */ function subProcess_Properties($sProcessUID = '', $sTaskUID = '', $sIndex = '') { try { //echo "$sProcessUID = '', $sTaskUID = '', $sIndex = ''"; diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php index 1d76884a7..0e7574ff3 100755 --- a/workflow/engine/classes/class.processes.php +++ b/workflow/engine/classes/class.processes.php @@ -3464,8 +3464,46 @@ class Processes { return $result; } + function getProcessFiles($proUid, $type) + { + $filesList = array(); - }//end class processes + switch ($type) { + case 'mail': case 'email': + $basePath = PATH_DATA_MAILTEMPLATES; + break; + + case 'public': + $basePath = PATH_DATA_PUBLIC; + break; + + default: + throw new Exception("Unknow Process Files Type '$type'."); + } + + $dir = $basePath . $proUid . PATH_SEP; + + G::verifyPath($dir, true); // create if it does not exist. + + // creating the default template (if not exists) + if (!file_exists($dir . 'alert_message.html')) { + @copy(PATH_TPL . 'mails' . PATH_SEP . 'alert_message.html', $dir . 'alert_message.html'); + } + + $files = glob($dir . '*.*'); + + foreach ($files as $file) { + $fileName = basename($file); + + if ($fileName !== 'alert_message.html') { + $filesList[] = array('filepath' => $file, 'filename' => $fileName); + } + } + + return $filesList; + } + +}//end class processes /** * Object Document class diff --git a/workflow/engine/classes/model/AppDocument.php b/workflow/engine/classes/model/AppDocument.php index df0fb5653..15b1fcfa6 100755 --- a/workflow/engine/classes/model/AppDocument.php +++ b/workflow/engine/classes/model/AppDocument.php @@ -585,37 +585,27 @@ class AppDocument extends BaseAppDocument { return $oDataset->getRow(); } - - //////////////////////////////////////////////////////////////////////////////// /** - * get all docuemnts for a folder - * created by carlos pacha carlos@colosa.com, pckrlos@gmail.com + * Get all docuemnts for a folder * @param array $sFolderUid * @return array - **/ + */ public function getDocumentsinFolders($sFolderUid) { - try { - $arrayDocumentsToDelete=array(); + $documents = array(); - $oCriteria = new Criteria('workflow'); - $oCriteria->add(AppDocumentPeer::FOLDER_UID, $sFolderUid); - $oDataset = AppDocumentPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - $arrayDocumentsToDelete[]=array('sAppDocUid'=>$aRow['APP_DOC_UID'],'iVersion'=>$aRow['DOC_VERSION']); - $oDataset->next(); - } + $oCriteria = new Criteria('workflow'); + $oCriteria->add(AppDocumentPeer::FOLDER_UID, $sFolderUid); + $oDataset = AppDocumentPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); - return ($arrayDocumentsToDelete); - } - catch (Exception $oError) { - throw($oError); + while ($aRow = $oDataset->getRow()) { + $documents[] = array('sAppDocUid' => $aRow['APP_DOC_UID'], 'iVersion' => $aRow['DOC_VERSION']); + $oDataset->next(); } + + return $documents; } - - - } // AppDocument diff --git a/workflow/engine/classes/model/UsersProperties.php b/workflow/engine/classes/model/UsersProperties.php index 049763458..193efbd95 100755 --- a/workflow/engine/classes/model/UsersProperties.php +++ b/workflow/engine/classes/model/UsersProperties.php @@ -247,7 +247,8 @@ class UsersProperties extends BaseUsersProperties case 'SWITCHABLE': case 'SINGLE': $_SESSION['user_experience'] = $uxType; - return '/sys' . SYS_SYS . '/' . $sLanguage . '/' . SYS_SKIN . '/' . 'home'; + $_SESSION['user_last_skin'] = SYS_SKIN; + return '/sys' . SYS_SYS . '/' . $sLanguage . '/uxs/' . 'home'; break; } // end user experience redirection diff --git a/workflow/engine/classes/model/map/ProcessMapBuilder.php b/workflow/engine/classes/model/map/ProcessMapBuilder.php index 1cbd586f9..976b76e45 100755 --- a/workflow/engine/classes/model/map/ProcessMapBuilder.php +++ b/workflow/engine/classes/model/map/ProcessMapBuilder.php @@ -112,6 +112,8 @@ class ProcessMapBuilder { $tMap->addColumn('PRO_DYNAFORMS', 'ProDynaforms', 'string', CreoleTypes::LONGVARCHAR, false, null); + $tMap->addColumn('PRO_DERIVATION_SCREEN_TPL', 'ProDerivationScreenTpl', 'string', CreoleTypes::VARCHAR, false, 128); + $tMap->addValidator('PRO_TIMEUNIT', 'validValues', 'propel.validator.ValidValuesValidator', 'WEEKS|MONTHS|DAYS|HOURS|MINUTES', 'Please select a valid Time Unit.'); $tMap->addValidator('PRO_STATUS', 'validValues', 'propel.validator.ValidValuesValidator', 'ACTIVE|INACTIVE|DISABLED', 'Please select a valid Process Status.'); diff --git a/workflow/engine/classes/model/map/TaskMapBuilder.php b/workflow/engine/classes/model/map/TaskMapBuilder.php index b8e6daeaf..0fa178d7b 100755 --- a/workflow/engine/classes/model/map/TaskMapBuilder.php +++ b/workflow/engine/classes/model/map/TaskMapBuilder.php @@ -144,6 +144,8 @@ class TaskMapBuilder { $tMap->addColumn('TAS_BOUNDARY', 'TasBoundary', 'string', CreoleTypes::VARCHAR, true, 32); + $tMap->addColumn('TAS_DERIVATION_SCREEN_TPL', 'TasDerivationScreenTpl', 'string', CreoleTypes::VARCHAR, false, 128); + $tMap->addValidator('TAS_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'NORMAL|ADHOC|SUBPROCESS|HIDDEN', 'Please select a valid value for TAS_TYPE.'); $tMap->addValidator('TAS_TIMEUNIT', 'validValues', 'propel.validator.ValidValuesValidator', 'MINUTES|HOURS|DAYS|WEEKS|MONTHS', 'Please select a valid value for TAS_TIMEUNIT.'); diff --git a/workflow/engine/classes/model/om/BaseProcess.php b/workflow/engine/classes/model/om/BaseProcess.php index e9b5c1200..b143a31d0 100755 --- a/workflow/engine/classes/model/om/BaseProcess.php +++ b/workflow/engine/classes/model/om/BaseProcess.php @@ -195,6 +195,13 @@ abstract class BaseProcess extends BaseObject implements Persistent { */ protected $pro_dynaforms; + + /** + * The value for the pro_derivation_screen_tpl field. + * @var string + */ + protected $pro_derivation_screen_tpl = ''; + /** * Flag to prevent endless save loop, if this object is referenced * by another object which falls in this transaction. @@ -513,6 +520,17 @@ abstract class BaseProcess extends BaseObject implements Persistent { return $this->pro_dynaforms; } + /** + * Get the [pro_derivation_screen_tpl] column value. + * + * @return string + */ + public function getProDerivationScreenTpl() + { + + return $this->pro_derivation_screen_tpl; + } + /** * Set the value of [pro_uid] column. * @@ -1039,6 +1057,28 @@ abstract class BaseProcess extends BaseObject implements Persistent { } // setProDynaforms() + /** + * Set the value of [pro_derivation_screen_tpl] column. + * + * @param string $v new value + * @return void + */ + public function setProDerivationScreenTpl($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->pro_derivation_screen_tpl !== $v || $v === '') { + $this->pro_derivation_screen_tpl = $v; + $this->modifiedColumns[] = ProcessPeer::PRO_DERIVATION_SCREEN_TPL; + } + + } // setProDerivationScreenTpl() + /** * Hydrates (populates) the object variables with values from the database resultset. * @@ -1104,12 +1144,14 @@ abstract class BaseProcess extends BaseObject implements Persistent { $this->pro_dynaforms = $rs->getString($startcol + 23); + $this->pro_derivation_screen_tpl = $rs->getString($startcol + 24); + $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 24; // 24 = ProcessPeer::NUM_COLUMNS - ProcessPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 25; // 25 = ProcessPeer::NUM_COLUMNS - ProcessPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating Process object", $e); @@ -1384,6 +1426,9 @@ abstract class BaseProcess extends BaseObject implements Persistent { case 23: return $this->getProDynaforms(); break; + case 24: + return $this->getProDerivationScreenTpl(); + break; default: return null; break; @@ -1428,6 +1473,7 @@ abstract class BaseProcess extends BaseObject implements Persistent { $keys[21] => $this->getProTitleY(), $keys[22] => $this->getProDebug(), $keys[23] => $this->getProDynaforms(), + $keys[24] => $this->getProDerivationScreenTpl(), ); return $result; } @@ -1531,6 +1577,9 @@ abstract class BaseProcess extends BaseObject implements Persistent { case 23: $this->setProDynaforms($value); break; + case 24: + $this->setProDerivationScreenTpl($value); + break; } // switch() } @@ -1578,6 +1627,7 @@ abstract class BaseProcess extends BaseObject implements Persistent { if (array_key_exists($keys[21], $arr)) $this->setProTitleY($arr[$keys[21]]); if (array_key_exists($keys[22], $arr)) $this->setProDebug($arr[$keys[22]]); if (array_key_exists($keys[23], $arr)) $this->setProDynaforms($arr[$keys[23]]); + if (array_key_exists($keys[24], $arr)) $this->setProDerivationScreenTpl($arr[$keys[24]]); } /** @@ -1613,6 +1663,7 @@ abstract class BaseProcess extends BaseObject implements Persistent { if ($this->isColumnModified(ProcessPeer::PRO_TITLE_Y)) $criteria->add(ProcessPeer::PRO_TITLE_Y, $this->pro_title_y); if ($this->isColumnModified(ProcessPeer::PRO_DEBUG)) $criteria->add(ProcessPeer::PRO_DEBUG, $this->pro_debug); if ($this->isColumnModified(ProcessPeer::PRO_DYNAFORMS)) $criteria->add(ProcessPeer::PRO_DYNAFORMS, $this->pro_dynaforms); + if ($this->isColumnModified(ProcessPeer::PRO_DERIVATION_SCREEN_TPL)) $criteria->add(ProcessPeer::PRO_DERIVATION_SCREEN_TPL, $this->pro_derivation_screen_tpl); return $criteria; } @@ -1713,6 +1764,8 @@ abstract class BaseProcess extends BaseObject implements Persistent { $copyObj->setProDynaforms($this->pro_dynaforms); + $copyObj->setProDerivationScreenTpl($this->pro_derivation_screen_tpl); + $copyObj->setNew(true); diff --git a/workflow/engine/classes/model/om/BaseProcessPeer.php b/workflow/engine/classes/model/om/BaseProcessPeer.php index 7c7f47afa..90fb60872 100755 --- a/workflow/engine/classes/model/om/BaseProcessPeer.php +++ b/workflow/engine/classes/model/om/BaseProcessPeer.php @@ -24,7 +24,7 @@ abstract class BaseProcessPeer { const CLASS_DEFAULT = 'classes.model.Process'; /** The total number of columns. */ - const NUM_COLUMNS = 24; + const NUM_COLUMNS = 25; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -102,6 +102,9 @@ abstract class BaseProcessPeer { /** the column name for the PRO_DYNAFORMS field */ const PRO_DYNAFORMS = 'PROCESS.PRO_DYNAFORMS'; + /** the column name for the PRO_DERIVATION_SCREEN_TPL field */ + const PRO_DERIVATION_SCREEN_TPL = 'PROCESS.PRO_DERIVATION_SCREEN_TPL'; + /** The PHP to DB Name Mapping */ private static $phpNameMap = null; @@ -113,10 +116,10 @@ abstract class BaseProcessPeer { * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('ProUid', 'ProParent', 'ProTime', 'ProTimeunit', 'ProStatus', 'ProTypeDay', 'ProType', 'ProAssignment', 'ProShowMap', 'ProShowMessage', 'ProShowDelegate', 'ProShowDynaform', 'ProCategory', 'ProSubCategory', 'ProIndustry', 'ProUpdateDate', 'ProCreateDate', 'ProCreateUser', 'ProHeight', 'ProWidth', 'ProTitleX', 'ProTitleY', 'ProDebug', 'ProDynaforms', ), - BasePeer::TYPE_COLNAME => array (ProcessPeer::PRO_UID, ProcessPeer::PRO_PARENT, ProcessPeer::PRO_TIME, ProcessPeer::PRO_TIMEUNIT, ProcessPeer::PRO_STATUS, ProcessPeer::PRO_TYPE_DAY, ProcessPeer::PRO_TYPE, ProcessPeer::PRO_ASSIGNMENT, ProcessPeer::PRO_SHOW_MAP, ProcessPeer::PRO_SHOW_MESSAGE, ProcessPeer::PRO_SHOW_DELEGATE, ProcessPeer::PRO_SHOW_DYNAFORM, ProcessPeer::PRO_CATEGORY, ProcessPeer::PRO_SUB_CATEGORY, ProcessPeer::PRO_INDUSTRY, ProcessPeer::PRO_UPDATE_DATE, ProcessPeer::PRO_CREATE_DATE, ProcessPeer::PRO_CREATE_USER, ProcessPeer::PRO_HEIGHT, ProcessPeer::PRO_WIDTH, ProcessPeer::PRO_TITLE_X, ProcessPeer::PRO_TITLE_Y, ProcessPeer::PRO_DEBUG, ProcessPeer::PRO_DYNAFORMS, ), - BasePeer::TYPE_FIELDNAME => array ('PRO_UID', 'PRO_PARENT', 'PRO_TIME', 'PRO_TIMEUNIT', 'PRO_STATUS', 'PRO_TYPE_DAY', 'PRO_TYPE', 'PRO_ASSIGNMENT', 'PRO_SHOW_MAP', 'PRO_SHOW_MESSAGE', 'PRO_SHOW_DELEGATE', 'PRO_SHOW_DYNAFORM', 'PRO_CATEGORY', 'PRO_SUB_CATEGORY', 'PRO_INDUSTRY', 'PRO_UPDATE_DATE', 'PRO_CREATE_DATE', 'PRO_CREATE_USER', 'PRO_HEIGHT', 'PRO_WIDTH', 'PRO_TITLE_X', 'PRO_TITLE_Y', 'PRO_DEBUG', 'PRO_DYNAFORMS', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ) + BasePeer::TYPE_PHPNAME => array ('ProUid', 'ProParent', 'ProTime', 'ProTimeunit', 'ProStatus', 'ProTypeDay', 'ProType', 'ProAssignment', 'ProShowMap', 'ProShowMessage', 'ProShowDelegate', 'ProShowDynaform', 'ProCategory', 'ProSubCategory', 'ProIndustry', 'ProUpdateDate', 'ProCreateDate', 'ProCreateUser', 'ProHeight', 'ProWidth', 'ProTitleX', 'ProTitleY', 'ProDebug', 'ProDynaforms', 'ProDerivationScreenTpl', ), + BasePeer::TYPE_COLNAME => array (ProcessPeer::PRO_UID, ProcessPeer::PRO_PARENT, ProcessPeer::PRO_TIME, ProcessPeer::PRO_TIMEUNIT, ProcessPeer::PRO_STATUS, ProcessPeer::PRO_TYPE_DAY, ProcessPeer::PRO_TYPE, ProcessPeer::PRO_ASSIGNMENT, ProcessPeer::PRO_SHOW_MAP, ProcessPeer::PRO_SHOW_MESSAGE, ProcessPeer::PRO_SHOW_DELEGATE, ProcessPeer::PRO_SHOW_DYNAFORM, ProcessPeer::PRO_CATEGORY, ProcessPeer::PRO_SUB_CATEGORY, ProcessPeer::PRO_INDUSTRY, ProcessPeer::PRO_UPDATE_DATE, ProcessPeer::PRO_CREATE_DATE, ProcessPeer::PRO_CREATE_USER, ProcessPeer::PRO_HEIGHT, ProcessPeer::PRO_WIDTH, ProcessPeer::PRO_TITLE_X, ProcessPeer::PRO_TITLE_Y, ProcessPeer::PRO_DEBUG, ProcessPeer::PRO_DYNAFORMS, ProcessPeer::PRO_DERIVATION_SCREEN_TPL, ), + BasePeer::TYPE_FIELDNAME => array ('PRO_UID', 'PRO_PARENT', 'PRO_TIME', 'PRO_TIMEUNIT', 'PRO_STATUS', 'PRO_TYPE_DAY', 'PRO_TYPE', 'PRO_ASSIGNMENT', 'PRO_SHOW_MAP', 'PRO_SHOW_MESSAGE', 'PRO_SHOW_DELEGATE', 'PRO_SHOW_DYNAFORM', 'PRO_CATEGORY', 'PRO_SUB_CATEGORY', 'PRO_INDUSTRY', 'PRO_UPDATE_DATE', 'PRO_CREATE_DATE', 'PRO_CREATE_USER', 'PRO_HEIGHT', 'PRO_WIDTH', 'PRO_TITLE_X', 'PRO_TITLE_Y', 'PRO_DEBUG', 'PRO_DYNAFORMS', 'PRO_DERIVATION_SCREEN_TPL', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, ) ); /** @@ -126,10 +129,10 @@ abstract class BaseProcessPeer { * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('ProUid' => 0, 'ProParent' => 1, 'ProTime' => 2, 'ProTimeunit' => 3, 'ProStatus' => 4, 'ProTypeDay' => 5, 'ProType' => 6, 'ProAssignment' => 7, 'ProShowMap' => 8, 'ProShowMessage' => 9, 'ProShowDelegate' => 10, 'ProShowDynaform' => 11, 'ProCategory' => 12, 'ProSubCategory' => 13, 'ProIndustry' => 14, 'ProUpdateDate' => 15, 'ProCreateDate' => 16, 'ProCreateUser' => 17, 'ProHeight' => 18, 'ProWidth' => 19, 'ProTitleX' => 20, 'ProTitleY' => 21, 'ProDebug' => 22, 'ProDynaforms' => 23, ), - BasePeer::TYPE_COLNAME => array (ProcessPeer::PRO_UID => 0, ProcessPeer::PRO_PARENT => 1, ProcessPeer::PRO_TIME => 2, ProcessPeer::PRO_TIMEUNIT => 3, ProcessPeer::PRO_STATUS => 4, ProcessPeer::PRO_TYPE_DAY => 5, ProcessPeer::PRO_TYPE => 6, ProcessPeer::PRO_ASSIGNMENT => 7, ProcessPeer::PRO_SHOW_MAP => 8, ProcessPeer::PRO_SHOW_MESSAGE => 9, ProcessPeer::PRO_SHOW_DELEGATE => 10, ProcessPeer::PRO_SHOW_DYNAFORM => 11, ProcessPeer::PRO_CATEGORY => 12, ProcessPeer::PRO_SUB_CATEGORY => 13, ProcessPeer::PRO_INDUSTRY => 14, ProcessPeer::PRO_UPDATE_DATE => 15, ProcessPeer::PRO_CREATE_DATE => 16, ProcessPeer::PRO_CREATE_USER => 17, ProcessPeer::PRO_HEIGHT => 18, ProcessPeer::PRO_WIDTH => 19, ProcessPeer::PRO_TITLE_X => 20, ProcessPeer::PRO_TITLE_Y => 21, ProcessPeer::PRO_DEBUG => 22, ProcessPeer::PRO_DYNAFORMS => 23, ), - BasePeer::TYPE_FIELDNAME => array ('PRO_UID' => 0, 'PRO_PARENT' => 1, 'PRO_TIME' => 2, 'PRO_TIMEUNIT' => 3, 'PRO_STATUS' => 4, 'PRO_TYPE_DAY' => 5, 'PRO_TYPE' => 6, 'PRO_ASSIGNMENT' => 7, 'PRO_SHOW_MAP' => 8, 'PRO_SHOW_MESSAGE' => 9, 'PRO_SHOW_DELEGATE' => 10, 'PRO_SHOW_DYNAFORM' => 11, 'PRO_CATEGORY' => 12, 'PRO_SUB_CATEGORY' => 13, 'PRO_INDUSTRY' => 14, 'PRO_UPDATE_DATE' => 15, 'PRO_CREATE_DATE' => 16, 'PRO_CREATE_USER' => 17, 'PRO_HEIGHT' => 18, 'PRO_WIDTH' => 19, 'PRO_TITLE_X' => 20, 'PRO_TITLE_Y' => 21, 'PRO_DEBUG' => 22, 'PRO_DYNAFORMS' => 23, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ) + BasePeer::TYPE_PHPNAME => array ('ProUid' => 0, 'ProParent' => 1, 'ProTime' => 2, 'ProTimeunit' => 3, 'ProStatus' => 4, 'ProTypeDay' => 5, 'ProType' => 6, 'ProAssignment' => 7, 'ProShowMap' => 8, 'ProShowMessage' => 9, 'ProShowDelegate' => 10, 'ProShowDynaform' => 11, 'ProCategory' => 12, 'ProSubCategory' => 13, 'ProIndustry' => 14, 'ProUpdateDate' => 15, 'ProCreateDate' => 16, 'ProCreateUser' => 17, 'ProHeight' => 18, 'ProWidth' => 19, 'ProTitleX' => 20, 'ProTitleY' => 21, 'ProDebug' => 22, 'ProDynaforms' => 23, 'ProDerivationScreenTpl' => 24, ), + BasePeer::TYPE_COLNAME => array (ProcessPeer::PRO_UID => 0, ProcessPeer::PRO_PARENT => 1, ProcessPeer::PRO_TIME => 2, ProcessPeer::PRO_TIMEUNIT => 3, ProcessPeer::PRO_STATUS => 4, ProcessPeer::PRO_TYPE_DAY => 5, ProcessPeer::PRO_TYPE => 6, ProcessPeer::PRO_ASSIGNMENT => 7, ProcessPeer::PRO_SHOW_MAP => 8, ProcessPeer::PRO_SHOW_MESSAGE => 9, ProcessPeer::PRO_SHOW_DELEGATE => 10, ProcessPeer::PRO_SHOW_DYNAFORM => 11, ProcessPeer::PRO_CATEGORY => 12, ProcessPeer::PRO_SUB_CATEGORY => 13, ProcessPeer::PRO_INDUSTRY => 14, ProcessPeer::PRO_UPDATE_DATE => 15, ProcessPeer::PRO_CREATE_DATE => 16, ProcessPeer::PRO_CREATE_USER => 17, ProcessPeer::PRO_HEIGHT => 18, ProcessPeer::PRO_WIDTH => 19, ProcessPeer::PRO_TITLE_X => 20, ProcessPeer::PRO_TITLE_Y => 21, ProcessPeer::PRO_DEBUG => 22, ProcessPeer::PRO_DYNAFORMS => 23, ProcessPeer::PRO_DERIVATION_SCREEN_TPL => 24, ), + BasePeer::TYPE_FIELDNAME => array ('PRO_UID' => 0, 'PRO_PARENT' => 1, 'PRO_TIME' => 2, 'PRO_TIMEUNIT' => 3, 'PRO_STATUS' => 4, 'PRO_TYPE_DAY' => 5, 'PRO_TYPE' => 6, 'PRO_ASSIGNMENT' => 7, 'PRO_SHOW_MAP' => 8, 'PRO_SHOW_MESSAGE' => 9, 'PRO_SHOW_DELEGATE' => 10, 'PRO_SHOW_DYNAFORM' => 11, 'PRO_CATEGORY' => 12, 'PRO_SUB_CATEGORY' => 13, 'PRO_INDUSTRY' => 14, 'PRO_UPDATE_DATE' => 15, 'PRO_CREATE_DATE' => 16, 'PRO_CREATE_USER' => 17, 'PRO_HEIGHT' => 18, 'PRO_WIDTH' => 19, 'PRO_TITLE_X' => 20, 'PRO_TITLE_Y' => 21, 'PRO_DEBUG' => 22, 'PRO_DYNAFORMS' => 23, 'PRO_DERIVATION_SCREEN_TPL' => 24, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, ) ); /** @@ -278,6 +281,8 @@ abstract class BaseProcessPeer { $criteria->addSelectColumn(ProcessPeer::PRO_DYNAFORMS); + $criteria->addSelectColumn(ProcessPeer::PRO_DERIVATION_SCREEN_TPL); + } const COUNT = 'COUNT(PROCESS.PRO_UID)'; diff --git a/workflow/engine/classes/model/om/BaseTask.php b/workflow/engine/classes/model/om/BaseTask.php index b16fa6b97..b7e523f27 100755 --- a/workflow/engine/classes/model/om/BaseTask.php +++ b/workflow/engine/classes/model/om/BaseTask.php @@ -307,6 +307,13 @@ abstract class BaseTask extends BaseObject implements Persistent { */ protected $tas_boundary = ''; + + /** + * The value for the tas_derivation_screen_tpl field. + * @var string + */ + protected $tas_derivation_screen_tpl = ''; + /** * Flag to prevent endless save loop, if this object is referenced * by another object which falls in this transaction. @@ -761,6 +768,17 @@ abstract class BaseTask extends BaseObject implements Persistent { return $this->tas_boundary; } + /** + * Get the [tas_derivation_screen_tpl] column value. + * + * @return string + */ + public function getTasDerivationScreenTpl() + { + + return $this->tas_derivation_screen_tpl; + } + /** * Set the value of [pro_uid] column. * @@ -1629,6 +1647,28 @@ abstract class BaseTask extends BaseObject implements Persistent { } // setTasBoundary() + /** + * Set the value of [tas_derivation_screen_tpl] column. + * + * @param string $v new value + * @return void + */ + public function setTasDerivationScreenTpl($v) + { + + // Since the native PHP type for this column is string, + // we will cast the input to a string (if it is not). + if ($v !== null && !is_string($v)) { + $v = (string) $v; + } + + if ($this->tas_derivation_screen_tpl !== $v || $v === '') { + $this->tas_derivation_screen_tpl = $v; + $this->modifiedColumns[] = TaskPeer::TAS_DERIVATION_SCREEN_TPL; + } + + } // setTasDerivationScreenTpl() + /** * Hydrates (populates) the object variables with values from the database resultset. * @@ -1726,12 +1766,14 @@ abstract class BaseTask extends BaseObject implements Persistent { $this->tas_boundary = $rs->getString($startcol + 39); + $this->tas_derivation_screen_tpl = $rs->getString($startcol + 40); + $this->resetModified(); $this->setNew(false); // FIXME - using NUM_COLUMNS may be clearer. - return $startcol + 40; // 40 = TaskPeer::NUM_COLUMNS - TaskPeer::NUM_LAZY_LOAD_COLUMNS). + return $startcol + 41; // 41 = TaskPeer::NUM_COLUMNS - TaskPeer::NUM_LAZY_LOAD_COLUMNS). } catch (Exception $e) { throw new PropelException("Error populating Task object", $e); @@ -2054,6 +2096,9 @@ abstract class BaseTask extends BaseObject implements Persistent { case 39: return $this->getTasBoundary(); break; + case 40: + return $this->getTasDerivationScreenTpl(); + break; default: return null; break; @@ -2114,6 +2159,7 @@ abstract class BaseTask extends BaseObject implements Persistent { $keys[37] => $this->getTasColor(), $keys[38] => $this->getTasEvnUid(), $keys[39] => $this->getTasBoundary(), + $keys[40] => $this->getTasDerivationScreenTpl(), ); return $result; } @@ -2265,6 +2311,9 @@ abstract class BaseTask extends BaseObject implements Persistent { case 39: $this->setTasBoundary($value); break; + case 40: + $this->setTasDerivationScreenTpl($value); + break; } // switch() } @@ -2328,6 +2377,7 @@ abstract class BaseTask extends BaseObject implements Persistent { if (array_key_exists($keys[37], $arr)) $this->setTasColor($arr[$keys[37]]); if (array_key_exists($keys[38], $arr)) $this->setTasEvnUid($arr[$keys[38]]); if (array_key_exists($keys[39], $arr)) $this->setTasBoundary($arr[$keys[39]]); + if (array_key_exists($keys[40], $arr)) $this->setTasDerivationScreenTpl($arr[$keys[40]]); } /** @@ -2379,6 +2429,7 @@ abstract class BaseTask extends BaseObject implements Persistent { if ($this->isColumnModified(TaskPeer::TAS_COLOR)) $criteria->add(TaskPeer::TAS_COLOR, $this->tas_color); if ($this->isColumnModified(TaskPeer::TAS_EVN_UID)) $criteria->add(TaskPeer::TAS_EVN_UID, $this->tas_evn_uid); if ($this->isColumnModified(TaskPeer::TAS_BOUNDARY)) $criteria->add(TaskPeer::TAS_BOUNDARY, $this->tas_boundary); + if ($this->isColumnModified(TaskPeer::TAS_DERIVATION_SCREEN_TPL)) $criteria->add(TaskPeer::TAS_DERIVATION_SCREEN_TPL, $this->tas_derivation_screen_tpl); return $criteria; } @@ -2511,6 +2562,8 @@ abstract class BaseTask extends BaseObject implements Persistent { $copyObj->setTasBoundary($this->tas_boundary); + $copyObj->setTasDerivationScreenTpl($this->tas_derivation_screen_tpl); + $copyObj->setNew(true); diff --git a/workflow/engine/classes/model/om/BaseTaskPeer.php b/workflow/engine/classes/model/om/BaseTaskPeer.php index 1eae30d9d..38c20fe0d 100755 --- a/workflow/engine/classes/model/om/BaseTaskPeer.php +++ b/workflow/engine/classes/model/om/BaseTaskPeer.php @@ -24,7 +24,7 @@ abstract class BaseTaskPeer { const CLASS_DEFAULT = 'classes.model.Task'; /** The total number of columns. */ - const NUM_COLUMNS = 40; + const NUM_COLUMNS = 41; /** The number of lazy-loaded columns. */ const NUM_LAZY_LOAD_COLUMNS = 0; @@ -150,6 +150,9 @@ abstract class BaseTaskPeer { /** the column name for the TAS_BOUNDARY field */ const TAS_BOUNDARY = 'TASK.TAS_BOUNDARY'; + /** the column name for the TAS_DERIVATION_SCREEN_TPL field */ + const TAS_DERIVATION_SCREEN_TPL = 'TASK.TAS_DERIVATION_SCREEN_TPL'; + /** The PHP to DB Name Mapping */ private static $phpNameMap = null; @@ -161,10 +164,10 @@ abstract class BaseTaskPeer { * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('ProUid', 'TasUid', 'TasType', 'TasDuration', 'TasDelayType', 'TasTemporizer', 'TasTypeDay', 'TasTimeunit', 'TasAlert', 'TasPriorityVariable', 'TasAssignType', 'TasAssignVariable', 'TasMiInstanceVariable', 'TasMiCompleteVariable', 'TasAssignLocation', 'TasAssignLocationAdhoc', 'TasTransferFly', 'TasLastAssigned', 'TasUser', 'TasCanUpload', 'TasViewUpload', 'TasViewAdditionalDocumentation', 'TasCanCancel', 'TasOwnerApp', 'StgUid', 'TasCanPause', 'TasCanSendMessage', 'TasCanDeleteDocs', 'TasSelfService', 'TasStart', 'TasToLastUser', 'TasSendLastEmail', 'TasDerivation', 'TasPosx', 'TasPosy', 'TasWidth', 'TasHeight', 'TasColor', 'TasEvnUid', 'TasBoundary', ), - BasePeer::TYPE_COLNAME => array (TaskPeer::PRO_UID, TaskPeer::TAS_UID, TaskPeer::TAS_TYPE, TaskPeer::TAS_DURATION, TaskPeer::TAS_DELAY_TYPE, TaskPeer::TAS_TEMPORIZER, TaskPeer::TAS_TYPE_DAY, TaskPeer::TAS_TIMEUNIT, TaskPeer::TAS_ALERT, TaskPeer::TAS_PRIORITY_VARIABLE, TaskPeer::TAS_ASSIGN_TYPE, TaskPeer::TAS_ASSIGN_VARIABLE, TaskPeer::TAS_MI_INSTANCE_VARIABLE, TaskPeer::TAS_MI_COMPLETE_VARIABLE, TaskPeer::TAS_ASSIGN_LOCATION, TaskPeer::TAS_ASSIGN_LOCATION_ADHOC, TaskPeer::TAS_TRANSFER_FLY, TaskPeer::TAS_LAST_ASSIGNED, TaskPeer::TAS_USER, TaskPeer::TAS_CAN_UPLOAD, TaskPeer::TAS_VIEW_UPLOAD, TaskPeer::TAS_VIEW_ADDITIONAL_DOCUMENTATION, TaskPeer::TAS_CAN_CANCEL, TaskPeer::TAS_OWNER_APP, TaskPeer::STG_UID, TaskPeer::TAS_CAN_PAUSE, TaskPeer::TAS_CAN_SEND_MESSAGE, TaskPeer::TAS_CAN_DELETE_DOCS, TaskPeer::TAS_SELF_SERVICE, TaskPeer::TAS_START, TaskPeer::TAS_TO_LAST_USER, TaskPeer::TAS_SEND_LAST_EMAIL, TaskPeer::TAS_DERIVATION, TaskPeer::TAS_POSX, TaskPeer::TAS_POSY, TaskPeer::TAS_WIDTH, TaskPeer::TAS_HEIGHT, TaskPeer::TAS_COLOR, TaskPeer::TAS_EVN_UID, TaskPeer::TAS_BOUNDARY, ), - BasePeer::TYPE_FIELDNAME => array ('PRO_UID', 'TAS_UID', 'TAS_TYPE', 'TAS_DURATION', 'TAS_DELAY_TYPE', 'TAS_TEMPORIZER', 'TAS_TYPE_DAY', 'TAS_TIMEUNIT', 'TAS_ALERT', 'TAS_PRIORITY_VARIABLE', 'TAS_ASSIGN_TYPE', 'TAS_ASSIGN_VARIABLE', 'TAS_MI_INSTANCE_VARIABLE', 'TAS_MI_COMPLETE_VARIABLE', 'TAS_ASSIGN_LOCATION', 'TAS_ASSIGN_LOCATION_ADHOC', 'TAS_TRANSFER_FLY', 'TAS_LAST_ASSIGNED', 'TAS_USER', 'TAS_CAN_UPLOAD', 'TAS_VIEW_UPLOAD', 'TAS_VIEW_ADDITIONAL_DOCUMENTATION', 'TAS_CAN_CANCEL', 'TAS_OWNER_APP', 'STG_UID', 'TAS_CAN_PAUSE', 'TAS_CAN_SEND_MESSAGE', 'TAS_CAN_DELETE_DOCS', 'TAS_SELF_SERVICE', 'TAS_START', 'TAS_TO_LAST_USER', 'TAS_SEND_LAST_EMAIL', 'TAS_DERIVATION', 'TAS_POSX', 'TAS_POSY', 'TAS_WIDTH', 'TAS_HEIGHT', 'TAS_COLOR', 'TAS_EVN_UID', 'TAS_BOUNDARY', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, ) + BasePeer::TYPE_PHPNAME => array ('ProUid', 'TasUid', 'TasType', 'TasDuration', 'TasDelayType', 'TasTemporizer', 'TasTypeDay', 'TasTimeunit', 'TasAlert', 'TasPriorityVariable', 'TasAssignType', 'TasAssignVariable', 'TasMiInstanceVariable', 'TasMiCompleteVariable', 'TasAssignLocation', 'TasAssignLocationAdhoc', 'TasTransferFly', 'TasLastAssigned', 'TasUser', 'TasCanUpload', 'TasViewUpload', 'TasViewAdditionalDocumentation', 'TasCanCancel', 'TasOwnerApp', 'StgUid', 'TasCanPause', 'TasCanSendMessage', 'TasCanDeleteDocs', 'TasSelfService', 'TasStart', 'TasToLastUser', 'TasSendLastEmail', 'TasDerivation', 'TasPosx', 'TasPosy', 'TasWidth', 'TasHeight', 'TasColor', 'TasEvnUid', 'TasBoundary', 'TasDerivationScreenTpl', ), + BasePeer::TYPE_COLNAME => array (TaskPeer::PRO_UID, TaskPeer::TAS_UID, TaskPeer::TAS_TYPE, TaskPeer::TAS_DURATION, TaskPeer::TAS_DELAY_TYPE, TaskPeer::TAS_TEMPORIZER, TaskPeer::TAS_TYPE_DAY, TaskPeer::TAS_TIMEUNIT, TaskPeer::TAS_ALERT, TaskPeer::TAS_PRIORITY_VARIABLE, TaskPeer::TAS_ASSIGN_TYPE, TaskPeer::TAS_ASSIGN_VARIABLE, TaskPeer::TAS_MI_INSTANCE_VARIABLE, TaskPeer::TAS_MI_COMPLETE_VARIABLE, TaskPeer::TAS_ASSIGN_LOCATION, TaskPeer::TAS_ASSIGN_LOCATION_ADHOC, TaskPeer::TAS_TRANSFER_FLY, TaskPeer::TAS_LAST_ASSIGNED, TaskPeer::TAS_USER, TaskPeer::TAS_CAN_UPLOAD, TaskPeer::TAS_VIEW_UPLOAD, TaskPeer::TAS_VIEW_ADDITIONAL_DOCUMENTATION, TaskPeer::TAS_CAN_CANCEL, TaskPeer::TAS_OWNER_APP, TaskPeer::STG_UID, TaskPeer::TAS_CAN_PAUSE, TaskPeer::TAS_CAN_SEND_MESSAGE, TaskPeer::TAS_CAN_DELETE_DOCS, TaskPeer::TAS_SELF_SERVICE, TaskPeer::TAS_START, TaskPeer::TAS_TO_LAST_USER, TaskPeer::TAS_SEND_LAST_EMAIL, TaskPeer::TAS_DERIVATION, TaskPeer::TAS_POSX, TaskPeer::TAS_POSY, TaskPeer::TAS_WIDTH, TaskPeer::TAS_HEIGHT, TaskPeer::TAS_COLOR, TaskPeer::TAS_EVN_UID, TaskPeer::TAS_BOUNDARY, TaskPeer::TAS_DERIVATION_SCREEN_TPL, ), + BasePeer::TYPE_FIELDNAME => array ('PRO_UID', 'TAS_UID', 'TAS_TYPE', 'TAS_DURATION', 'TAS_DELAY_TYPE', 'TAS_TEMPORIZER', 'TAS_TYPE_DAY', 'TAS_TIMEUNIT', 'TAS_ALERT', 'TAS_PRIORITY_VARIABLE', 'TAS_ASSIGN_TYPE', 'TAS_ASSIGN_VARIABLE', 'TAS_MI_INSTANCE_VARIABLE', 'TAS_MI_COMPLETE_VARIABLE', 'TAS_ASSIGN_LOCATION', 'TAS_ASSIGN_LOCATION_ADHOC', 'TAS_TRANSFER_FLY', 'TAS_LAST_ASSIGNED', 'TAS_USER', 'TAS_CAN_UPLOAD', 'TAS_VIEW_UPLOAD', 'TAS_VIEW_ADDITIONAL_DOCUMENTATION', 'TAS_CAN_CANCEL', 'TAS_OWNER_APP', 'STG_UID', 'TAS_CAN_PAUSE', 'TAS_CAN_SEND_MESSAGE', 'TAS_CAN_DELETE_DOCS', 'TAS_SELF_SERVICE', 'TAS_START', 'TAS_TO_LAST_USER', 'TAS_SEND_LAST_EMAIL', 'TAS_DERIVATION', 'TAS_POSX', 'TAS_POSY', 'TAS_WIDTH', 'TAS_HEIGHT', 'TAS_COLOR', 'TAS_EVN_UID', 'TAS_BOUNDARY', 'TAS_DERIVATION_SCREEN_TPL', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, ) ); /** @@ -174,10 +177,10 @@ abstract class BaseTaskPeer { * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('ProUid' => 0, 'TasUid' => 1, 'TasType' => 2, 'TasDuration' => 3, 'TasDelayType' => 4, 'TasTemporizer' => 5, 'TasTypeDay' => 6, 'TasTimeunit' => 7, 'TasAlert' => 8, 'TasPriorityVariable' => 9, 'TasAssignType' => 10, 'TasAssignVariable' => 11, 'TasMiInstanceVariable' => 12, 'TasMiCompleteVariable' => 13, 'TasAssignLocation' => 14, 'TasAssignLocationAdhoc' => 15, 'TasTransferFly' => 16, 'TasLastAssigned' => 17, 'TasUser' => 18, 'TasCanUpload' => 19, 'TasViewUpload' => 20, 'TasViewAdditionalDocumentation' => 21, 'TasCanCancel' => 22, 'TasOwnerApp' => 23, 'StgUid' => 24, 'TasCanPause' => 25, 'TasCanSendMessage' => 26, 'TasCanDeleteDocs' => 27, 'TasSelfService' => 28, 'TasStart' => 29, 'TasToLastUser' => 30, 'TasSendLastEmail' => 31, 'TasDerivation' => 32, 'TasPosx' => 33, 'TasPosy' => 34, 'TasWidth' => 35, 'TasHeight' => 36, 'TasColor' => 37, 'TasEvnUid' => 38, 'TasBoundary' => 39, ), - BasePeer::TYPE_COLNAME => array (TaskPeer::PRO_UID => 0, TaskPeer::TAS_UID => 1, TaskPeer::TAS_TYPE => 2, TaskPeer::TAS_DURATION => 3, TaskPeer::TAS_DELAY_TYPE => 4, TaskPeer::TAS_TEMPORIZER => 5, TaskPeer::TAS_TYPE_DAY => 6, TaskPeer::TAS_TIMEUNIT => 7, TaskPeer::TAS_ALERT => 8, TaskPeer::TAS_PRIORITY_VARIABLE => 9, TaskPeer::TAS_ASSIGN_TYPE => 10, TaskPeer::TAS_ASSIGN_VARIABLE => 11, TaskPeer::TAS_MI_INSTANCE_VARIABLE => 12, TaskPeer::TAS_MI_COMPLETE_VARIABLE => 13, TaskPeer::TAS_ASSIGN_LOCATION => 14, TaskPeer::TAS_ASSIGN_LOCATION_ADHOC => 15, TaskPeer::TAS_TRANSFER_FLY => 16, TaskPeer::TAS_LAST_ASSIGNED => 17, TaskPeer::TAS_USER => 18, TaskPeer::TAS_CAN_UPLOAD => 19, TaskPeer::TAS_VIEW_UPLOAD => 20, TaskPeer::TAS_VIEW_ADDITIONAL_DOCUMENTATION => 21, TaskPeer::TAS_CAN_CANCEL => 22, TaskPeer::TAS_OWNER_APP => 23, TaskPeer::STG_UID => 24, TaskPeer::TAS_CAN_PAUSE => 25, TaskPeer::TAS_CAN_SEND_MESSAGE => 26, TaskPeer::TAS_CAN_DELETE_DOCS => 27, TaskPeer::TAS_SELF_SERVICE => 28, TaskPeer::TAS_START => 29, TaskPeer::TAS_TO_LAST_USER => 30, TaskPeer::TAS_SEND_LAST_EMAIL => 31, TaskPeer::TAS_DERIVATION => 32, TaskPeer::TAS_POSX => 33, TaskPeer::TAS_POSY => 34, TaskPeer::TAS_WIDTH => 35, TaskPeer::TAS_HEIGHT => 36, TaskPeer::TAS_COLOR => 37, TaskPeer::TAS_EVN_UID => 38, TaskPeer::TAS_BOUNDARY => 39, ), - BasePeer::TYPE_FIELDNAME => array ('PRO_UID' => 0, 'TAS_UID' => 1, 'TAS_TYPE' => 2, 'TAS_DURATION' => 3, 'TAS_DELAY_TYPE' => 4, 'TAS_TEMPORIZER' => 5, 'TAS_TYPE_DAY' => 6, 'TAS_TIMEUNIT' => 7, 'TAS_ALERT' => 8, 'TAS_PRIORITY_VARIABLE' => 9, 'TAS_ASSIGN_TYPE' => 10, 'TAS_ASSIGN_VARIABLE' => 11, 'TAS_MI_INSTANCE_VARIABLE' => 12, 'TAS_MI_COMPLETE_VARIABLE' => 13, 'TAS_ASSIGN_LOCATION' => 14, 'TAS_ASSIGN_LOCATION_ADHOC' => 15, 'TAS_TRANSFER_FLY' => 16, 'TAS_LAST_ASSIGNED' => 17, 'TAS_USER' => 18, 'TAS_CAN_UPLOAD' => 19, 'TAS_VIEW_UPLOAD' => 20, 'TAS_VIEW_ADDITIONAL_DOCUMENTATION' => 21, 'TAS_CAN_CANCEL' => 22, 'TAS_OWNER_APP' => 23, 'STG_UID' => 24, 'TAS_CAN_PAUSE' => 25, 'TAS_CAN_SEND_MESSAGE' => 26, 'TAS_CAN_DELETE_DOCS' => 27, 'TAS_SELF_SERVICE' => 28, 'TAS_START' => 29, 'TAS_TO_LAST_USER' => 30, 'TAS_SEND_LAST_EMAIL' => 31, 'TAS_DERIVATION' => 32, 'TAS_POSX' => 33, 'TAS_POSY' => 34, 'TAS_WIDTH' => 35, 'TAS_HEIGHT' => 36, 'TAS_COLOR' => 37, 'TAS_EVN_UID' => 38, 'TAS_BOUNDARY' => 39, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, ) + BasePeer::TYPE_PHPNAME => array ('ProUid' => 0, 'TasUid' => 1, 'TasType' => 2, 'TasDuration' => 3, 'TasDelayType' => 4, 'TasTemporizer' => 5, 'TasTypeDay' => 6, 'TasTimeunit' => 7, 'TasAlert' => 8, 'TasPriorityVariable' => 9, 'TasAssignType' => 10, 'TasAssignVariable' => 11, 'TasMiInstanceVariable' => 12, 'TasMiCompleteVariable' => 13, 'TasAssignLocation' => 14, 'TasAssignLocationAdhoc' => 15, 'TasTransferFly' => 16, 'TasLastAssigned' => 17, 'TasUser' => 18, 'TasCanUpload' => 19, 'TasViewUpload' => 20, 'TasViewAdditionalDocumentation' => 21, 'TasCanCancel' => 22, 'TasOwnerApp' => 23, 'StgUid' => 24, 'TasCanPause' => 25, 'TasCanSendMessage' => 26, 'TasCanDeleteDocs' => 27, 'TasSelfService' => 28, 'TasStart' => 29, 'TasToLastUser' => 30, 'TasSendLastEmail' => 31, 'TasDerivation' => 32, 'TasPosx' => 33, 'TasPosy' => 34, 'TasWidth' => 35, 'TasHeight' => 36, 'TasColor' => 37, 'TasEvnUid' => 38, 'TasBoundary' => 39, 'TasDerivationScreenTpl' => 40, ), + BasePeer::TYPE_COLNAME => array (TaskPeer::PRO_UID => 0, TaskPeer::TAS_UID => 1, TaskPeer::TAS_TYPE => 2, TaskPeer::TAS_DURATION => 3, TaskPeer::TAS_DELAY_TYPE => 4, TaskPeer::TAS_TEMPORIZER => 5, TaskPeer::TAS_TYPE_DAY => 6, TaskPeer::TAS_TIMEUNIT => 7, TaskPeer::TAS_ALERT => 8, TaskPeer::TAS_PRIORITY_VARIABLE => 9, TaskPeer::TAS_ASSIGN_TYPE => 10, TaskPeer::TAS_ASSIGN_VARIABLE => 11, TaskPeer::TAS_MI_INSTANCE_VARIABLE => 12, TaskPeer::TAS_MI_COMPLETE_VARIABLE => 13, TaskPeer::TAS_ASSIGN_LOCATION => 14, TaskPeer::TAS_ASSIGN_LOCATION_ADHOC => 15, TaskPeer::TAS_TRANSFER_FLY => 16, TaskPeer::TAS_LAST_ASSIGNED => 17, TaskPeer::TAS_USER => 18, TaskPeer::TAS_CAN_UPLOAD => 19, TaskPeer::TAS_VIEW_UPLOAD => 20, TaskPeer::TAS_VIEW_ADDITIONAL_DOCUMENTATION => 21, TaskPeer::TAS_CAN_CANCEL => 22, TaskPeer::TAS_OWNER_APP => 23, TaskPeer::STG_UID => 24, TaskPeer::TAS_CAN_PAUSE => 25, TaskPeer::TAS_CAN_SEND_MESSAGE => 26, TaskPeer::TAS_CAN_DELETE_DOCS => 27, TaskPeer::TAS_SELF_SERVICE => 28, TaskPeer::TAS_START => 29, TaskPeer::TAS_TO_LAST_USER => 30, TaskPeer::TAS_SEND_LAST_EMAIL => 31, TaskPeer::TAS_DERIVATION => 32, TaskPeer::TAS_POSX => 33, TaskPeer::TAS_POSY => 34, TaskPeer::TAS_WIDTH => 35, TaskPeer::TAS_HEIGHT => 36, TaskPeer::TAS_COLOR => 37, TaskPeer::TAS_EVN_UID => 38, TaskPeer::TAS_BOUNDARY => 39, TaskPeer::TAS_DERIVATION_SCREEN_TPL => 40, ), + BasePeer::TYPE_FIELDNAME => array ('PRO_UID' => 0, 'TAS_UID' => 1, 'TAS_TYPE' => 2, 'TAS_DURATION' => 3, 'TAS_DELAY_TYPE' => 4, 'TAS_TEMPORIZER' => 5, 'TAS_TYPE_DAY' => 6, 'TAS_TIMEUNIT' => 7, 'TAS_ALERT' => 8, 'TAS_PRIORITY_VARIABLE' => 9, 'TAS_ASSIGN_TYPE' => 10, 'TAS_ASSIGN_VARIABLE' => 11, 'TAS_MI_INSTANCE_VARIABLE' => 12, 'TAS_MI_COMPLETE_VARIABLE' => 13, 'TAS_ASSIGN_LOCATION' => 14, 'TAS_ASSIGN_LOCATION_ADHOC' => 15, 'TAS_TRANSFER_FLY' => 16, 'TAS_LAST_ASSIGNED' => 17, 'TAS_USER' => 18, 'TAS_CAN_UPLOAD' => 19, 'TAS_VIEW_UPLOAD' => 20, 'TAS_VIEW_ADDITIONAL_DOCUMENTATION' => 21, 'TAS_CAN_CANCEL' => 22, 'TAS_OWNER_APP' => 23, 'STG_UID' => 24, 'TAS_CAN_PAUSE' => 25, 'TAS_CAN_SEND_MESSAGE' => 26, 'TAS_CAN_DELETE_DOCS' => 27, 'TAS_SELF_SERVICE' => 28, 'TAS_START' => 29, 'TAS_TO_LAST_USER' => 30, 'TAS_SEND_LAST_EMAIL' => 31, 'TAS_DERIVATION' => 32, 'TAS_POSX' => 33, 'TAS_POSY' => 34, 'TAS_WIDTH' => 35, 'TAS_HEIGHT' => 36, 'TAS_COLOR' => 37, 'TAS_EVN_UID' => 38, 'TAS_BOUNDARY' => 39, 'TAS_DERIVATION_SCREEN_TPL' => 40, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, ) ); /** @@ -358,6 +361,8 @@ abstract class BaseTaskPeer { $criteria->addSelectColumn(TaskPeer::TAS_BOUNDARY); + $criteria->addSelectColumn(TaskPeer::TAS_DERIVATION_SCREEN_TPL); + } const COUNT = 'COUNT(TASK.TAS_UID)'; diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index c17d62e77..8bd6bb065 100755 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -790,6 +790,7 @@ + @@ -1170,6 +1171,8 @@ + + diff --git a/workflow/engine/controllers/adminProxy.php b/workflow/engine/controllers/adminProxy.php index 897b44f39..15bb25ef9 100644 --- a/workflow/engine/controllers/adminProxy.php +++ b/workflow/engine/controllers/adminProxy.php @@ -69,16 +69,16 @@ class adminProxy extends HttpProxyController $list = array( 'NORMAL' => 'Normal', 'SIMPLIFIED' => 'Simplified', - 'SWITCHABLE' => 'Switchable'/*, - 'SINGLE' => 'Single Application'*/ + 'SWITCHABLE' => 'Switchable', + 'SINGLE' => 'Single Application' ); } else { $list = array( array('NORMAL', 'Normal'), array('SIMPLIFIED', 'Simplified'), - array('SWITCHABLE', 'Switchable')/*, - array('SINGLE', 'Single Application')*/ + array('SWITCHABLE', 'Switchable'), + array('SINGLE', 'Single Application') ); } diff --git a/workflow/engine/controllers/home.php b/workflow/engine/controllers/home.php index 52304d3ad..f54697d46 100644 --- a/workflow/engine/controllers/home.php +++ b/workflow/engine/controllers/home.php @@ -18,13 +18,18 @@ class Home extends Controller private $appListStart = 0; private $appListLimit = 15; + private $clientBrowser; + private $lastSkin; + public function __construct() { - // setting as using simplified. - $_SESSION['current_ux'] = 'SIMPLIFIED'; + //die($_SESSION['user_experience']); + // setting client browser information + $this->clientBrowser = G::getBrowser(); // getting the ux type from user o group conf. - $this->userUxType = isset($_SESSION['user_experience'])? $_SESSION['user_experience']: $_SESSION['current_ux']; + $this->userUxType = isset($_SESSION['user_experience'])? $_SESSION['user_experience']: 'SIMPLIFIED'; + $this->lastSkin = isset($_SESSION['user_last_skin']) ? $_SESSION['user_last_skin'] : 'classic'; if (isset($_SESSION['USER_LOGGED']) && !empty($_SESSION['USER_LOGGED'])) { $this->userID = isset($_SESSION['USER_LOGGED']) ? $_SESSION['USER_LOGGED'] : null; @@ -32,7 +37,31 @@ class Home extends Controller $this->userFullName = isset($_SESSION['USR_FULLNAME']) ? $_SESSION['USR_FULLNAME'] : ''; $this->userRolName = isset($_SESSION['USR_ROLENAME']) ? $_SESSION['USR_ROLENAME'] : ''; } - //g::pr($_SESSION); die; + } + + public function login($httpData) + { + //start new session + @session_destroy (); + session_start (); + session_regenerate_id (); + + $data = isset($httpData->d) ? unserialize(base64_decode($httpData->d)) : ''; + $template = $this->clientBrowser['name'] == 'msie' ? 'login_ie' : 'login_standard'; + $skin = $this->clientBrowser['name'] == 'msie' ? $this->lastSkin : 'simplified'; + + if (!is_array($data)) { + $data = array('u'=>'', 'p'=>'', 'm'=>''); + } + + $this->setVar('msg', $data['m']); + $this->setVar('usr', $data['u']); + $this->setVar('pwd', $data['p']); + $this->setVar('skin', $skin); + + $this->setView("home/$template"); + + $this->render(); } /** @@ -42,6 +71,11 @@ class Home extends Controller public function index($httpData) { + if ($this->userUxType == 'SINGLE') { + $this->indexSingle($httpData); + return; + } + G::LoadClass('process'); G::LoadClass('case'); @@ -52,56 +86,84 @@ class Home extends Controller $start = 0; $limit = ''; - $proData = $process->getAllProcesses($start, $limit); - $processList = $case->getStartCasesPerType ( $_SESSION ['USER_LOGGED'], 'category' ); + $proData = $process->getAllProcesses($start, $limit); + $processList = $case->getStartCasesPerType ( $_SESSION ['USER_LOGGED'], 'category'); + $switchLink = '../classic/cases/main'; //'../' . $this->lastSkin . '/cases/main'; + unset($processList[0]); - if ($this->userUxType == 'SINGLE') { - $this->setView('home/index2'); - } - else { - $this->setView('home/index'); - } - + $this->setView('home/index'); $this->setVar('usrUid', $this->userID); $this->setVar('userName', $this->userName); $this->setVar('processList', $processList); $this->setVar('canStartCase', $case->canStartCase($_SESSION ['USER_LOGGED'])); $this->setVar('userUxType', $this->userUxType); + $this->setVar('clientBrowser', $this->clientBrowser['name']); + $this->setVar('switchLink', $switchLink); - G::RenderPage('publish', 'mvc'); + $this->render(); + } + + public function indexSingle($httpData) + { + require_once 'classes/model/Step.php'; + G::LoadClass('applications'); + + $apps = new Applications(); + $step = new Step; + + $cases = $apps->getAll($this->userID, 0, 1, 'todo'); + + + if (!isset($cases['data'][0])) { + //the current user has not any aplication to do + $this->setView('home/indexSingle'); + $this->setVar('default_url', 'home/error?no=2'); + $this->render(); + exit(); + } + + $lastApp = $cases['data'][0]; + $_SESSION['INDEX'] = $lastApp['DEL_INDEX']; + $_SESSION['APPLICATION'] = $lastApp['APP_UID']; + $_SESSION['PROCESS'] = $lastApp['PRO_UID']; + $_SESSION['TASK'] = $lastApp['TAS_UID']; + + + $steps = $apps->getSteps($lastApp['APP_UID'], $lastApp['DEL_INDEX'], $lastApp['TAS_UID'], $lastApp['PRO_UID']); + $lastStep = array_pop($steps); + $lastStep['title'] = 'Finish'; + $steps[] = $lastStep; + + $this->setView('home/indexSingle'); + + $this->setVar('usrUid', $this->userID); + $this->setVar('userName', $this->userName); + $this->setVar('steps', $steps); + $this->setVar('default_url', "cases/cases_Open?APP_UID={$lastApp['APP_UID']}&DEL_INDEX={$lastApp['DEL_INDEX']}&action=todo"); + + $this->render(); } public function appList($httpData) { - require_once ( "classes/model/AppNotes.php" ); - $appNotes = new AppNotes(); + // setting default list applications types [default: todo] + $httpData->t = isset($httpData->t)? $httpData->t : 'todo'; - $httpData->t = isset($httpData->t)? $httpData->t : 'in'; - $title = $httpData->t != 'draft' ? 'My Inbox' : 'My Drafts'; - $action = $httpData->t != 'draft' ? 'todo' : 'draft'; - - $notesStart = 0; - $notesLimit = 4; - - //$cases = self::getAppList($httpData->t, $this->appListStart, $this->appListLimit); - - G::LoadClass('applications'); - $apps = new Applications(); - $cases = $apps->getAll($this->appListStart, $this->appListLimit, $action); - - foreach ($cases['data'] as $i => $row) { - $notes = $appNotes->getNotesList($row['APP_UID'], $this->userID, $notesStart, $notesLimit); - $notes = $notes['array']; - - $cases['data'][$i]['NOTES_COUNT'] = $notes['totalCount']; - $cases['data'][$i]['NOTES_LIST'] = $notes['notes']; + // setting main list title + switch ($httpData->t) { + case 'todo' : $title = 'My Inbox'; break; + case 'draft' : $title = 'My Drafts'; break; + default: $title = ucwords($httpData->t); } + // getting apps data + $cases = $this->getAppsData($httpData->t); + // settings html template $this->setView('home/appList'); - + // settings vars and rendering $this->setVar('cases', $cases['data']); $this->setVar('cases_count', $cases['totalCount']); @@ -110,25 +172,48 @@ class Home extends Controller $this->setVar('appListLimit', 10); $this->setVar('listType', $httpData->t); - G::RenderPage('publish', 'mvc'); + $this->render(); } public function getApps($httpData) { - G::LoadClass('applications'); - $apps = new Applications(); + $cases = $this->getAppsData($httpData->t, $httpData->start, $httpData->limit); + $this->setView('home/applications'); + $this->setVar('cases', $cases['data']); + $this->render(); + } + + public function getAppsData($type, $start=null, $limit=null) + { require_once ( "classes/model/AppNotes.php" ); + G::LoadClass('applications'); + + $apps = new Applications(); $appNotes = new AppNotes(); + $start = empty($start) ? $this->appListStart : $start; + $limit = empty($limit) ? $this->appListLimit : $limit; + $notesStart = 0; $notesLimit = 4; - $action = $httpData->t != 'draft' ? 'todo' : 'draft'; - - $cases = $apps->getAll($httpData->start, $httpData->limit, $action); + $cases = $apps->getAll($this->userID, $start, $limit, $type); + //g::pr($cases['data']); die; + // formating & complitting apps data with 'Notes' foreach ($cases['data'] as $i => $row) { + // Formatting + $appTitle = str_replace('#', '', $row['APP_TITLE']); + + if (is_numeric($appTitle)) { + $cases['data'][$i]['APP_TITLE'] = G::LoadTranslation('ID_CASE'). ' ' . $appTitle; + } + + $cases['data'][$i]['DEL_DELEGATE_DATE'] = G::getformatedDate($row['DEL_DELEGATE_DATE'], 'M d, yyyy - h:i:s'); + $cases['data'][$i]['APP_DEL_PREVIOUS_USER'] = ucwords($row['APP_DEL_PREVIOUS_USER']); + + // Completting with Notes $notes = $appNotes->getNotesList($row['APP_UID'], $this->userID, $notesStart, $notesLimit); $notes = $notes['array']; @@ -136,12 +221,7 @@ class Home extends Controller $cases['data'][$i]['NOTES_LIST'] = $notes['notes']; } - $this->setView('home/applications'); - - // settings vars and rendering - $this->setVar('cases', $cases['data']); - - G::RenderPage('publish', 'mvc'); + return $cases; } public function startCase($httpData) @@ -163,79 +243,19 @@ class Home extends Controller $aNextStep['PAGE'] = '../cases/cases_Open?APP_UID='.$aData['APPLICATION'].'&DEL_INDEX='.$aData['INDEX'].'&action=draft'; $_SESSION ['BREAKSTEP'] ['NEXT_STEP'] = $aNextStep; - G::header('Location: ' . $aNextStep['PAGE']); + $this->redirect($aNextStep['PAGE']); } - private function getAppList($type, $start=null, $limit=null) + public function error($httpData) { - require_once ( "classes/model/AppCacheView.php" ); - require_once ( "classes/model/Application.php" ); - require_once ( "classes/model/AppNotes.php" ); + $httpData->no = isset($httpData->no) ? $httpData->no : 0; - $appCache = new AppCacheView(); - $appNotes = new AppNotes(); - - $notesStart = 0; - $notesLimit = 4; - - // getting user's cases on inbox - switch ($type) { - case 'inbox': case 'in': - $criteria = $appCache->getToDoListCriteria($this->userID); - break; - - case 'draft': - default: - $criteria = $appCache->getDraftListCriteria($this->userID); //fast enough - break; - } - - $distinct = $type == 'draft' ? true : false; - $criteriac = $appCache->getToDoCountCriteria($this->userID); - $totalCount = AppCacheViewPeer::doCount( $criteriac, $distinct ); - - if (isset($start)) - $criteria->setOffset($start); - - if (isset($limit)) - $criteria->setLimit($limit); - - $criteria->addDescendingOrderByColumn(AppCacheViewPeer::APP_NUMBER); - $dataset = AppCacheViewPeer::doSelectRS($criteria); - $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); - - $cases = array(); - //$data['totalCount'] = $totalCount; - $rows = array(); - $priorities = array('1'=>'VL', '2'=>'L', '3'=>'N', '4'=>'H', '5'=>'VH'); - $index = $start; - - while ($dataset->next()) { - $row = $dataset->getRow(); - if (is_numeric(str_replace('#', '', $row['APP_TITLE']))) { - $row['APP_TITLE'] = 'Case ' . str_replace('#', '', $row['APP_TITLE']); - } - // replacing the status data with their respective translation - if (isset($row['APP_STATUS'])) { - $row['APP_STATUS'] = G::LoadTranslation("ID_{$row['APP_STATUS']}"); - } - // replacing the priority data with their respective translation - if (isset($row['DEL_PRIORITY'])) { - $row['DEL_PRIORITY'] = G::LoadTranslation("ID_PRIORITY_{$priorities[$row['DEL_PRIORITY']]}"); - } - - $row['DEL_DELEGATE_DATE'] = G::getformatedDate($row['DEL_DELEGATE_DATE'], 'M d, yyyy at h:i:s'); - - - $notes = $appNotes->getNotesList($row['APP_UID'], $this->userID, $notesStart, $notesLimit); - $notes = $notes['array']; - - $row['NOTES_COUNT'] = $notes['totalCount']; - $row['NOTES_LIST'] = $notes['notes']; - - $cases[] = $row; + switch ($httpData->no) { + case 2: $tpl = 'home/noAppsMsg'; break; + default: $tpl = 'home/error'; } - return array('data' => $cases, 'totalCount' => $totalCount); + $this->setView($tpl); + $this->render(); } } \ No newline at end of file diff --git a/workflow/engine/data/mssql/schema.sql b/workflow/engine/data/mssql/schema.sql index 44d0ef919..1a5b7f1b7 100755 --- a/workflow/engine/data/mssql/schema.sql +++ b/workflow/engine/data/mssql/schema.sql @@ -460,6 +460,7 @@ CREATE TABLE [GROUPWF] [GRP_UID] VARCHAR(32) default '' NOT NULL, [GRP_STATUS] CHAR(8) default 'ACTIVE' NOT NULL, [GRP_LDAP_DN] VARCHAR(255) default '' NOT NULL, + [GRP_UX] VARCHAR(128) default 'NORMAL' NULL, CONSTRAINT GROUPWF_PK PRIMARY KEY ([GRP_UID]) ); @@ -898,6 +899,7 @@ CREATE TABLE [PROCESS] [PRO_TITLE_Y] INT default 6 NOT NULL, [PRO_DEBUG] INT default 0 NOT NULL, [PRO_DYNAFORMS] NVARCHAR(MAX) NULL, + [PRO_DERIVATION_SCREEN_TPL] VARCHAR(128) default '' NULL, CONSTRAINT PROCESS_PK PRIMARY KEY ([PRO_UID]) ); @@ -1280,6 +1282,7 @@ CREATE TABLE [TASK] [TAS_COLOR] VARCHAR(32) default '' NOT NULL, [TAS_EVN_UID] VARCHAR(32) default '' NOT NULL, [TAS_BOUNDARY] VARCHAR(32) default '' NOT NULL, + [TAS_DERIVATION_SCREEN_TPL] VARCHAR(128) default '' NULL, CONSTRAINT TASK_PK PRIMARY KEY ([TAS_UID]) ); @@ -1463,6 +1466,7 @@ CREATE TABLE [USERS] [USR_ROLE] VARCHAR(32) default 'PROCESSMAKER_ADMIN' NULL, [USR_REPORTS_TO] VARCHAR(32) default '' NULL, [USR_REPLACED_BY] VARCHAR(32) default '' NULL, + [USR_UX] VARCHAR(128) default 'NORMAL' NULL, CONSTRAINT USERS_PK PRIMARY KEY ([USR_UID]) ); @@ -3024,3 +3028,91 @@ CREATE TABLE [APP_NOTES] CREATE INDEX [indexAppNotesDate] ON [APP_NOTES] ([APP_UID],[NOTE_DATE]); CREATE INDEX [indexAppNotesUser] ON [APP_NOTES] ([APP_UID],[USR_UID]); + +/* ---------------------------------------------------------------------- */ +/* DASHLET */ +/* ---------------------------------------------------------------------- */ + + +IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name = 'DASHLET') +BEGIN + DECLARE @reftable_67 nvarchar(60), @constraintname_67 nvarchar(60) + DECLARE refcursor CURSOR FOR + select reftables.name tablename, cons.name constraintname + from sysobjects tables, + sysobjects reftables, + sysobjects cons, + sysreferences ref + where tables.id = ref.rkeyid + and cons.id = ref.constid + and reftables.id = ref.fkeyid + and tables.name = 'DASHLET' + OPEN refcursor + FETCH NEXT from refcursor into @reftable_67, @constraintname_67 + while @@FETCH_STATUS = 0 + BEGIN + exec ('alter table '+@reftable_67+' drop constraint '+@constraintname_67) + FETCH NEXT from refcursor into @reftable_67, @constraintname_67 + END + CLOSE refcursor + DEALLOCATE refcursor + DROP TABLE [DASHLET] +END + + +CREATE TABLE [DASHLET] +( + [DAS_UID] VARCHAR(32) default '' NOT NULL, + [DAS_CLASS] VARCHAR(50) default '' NOT NULL, + [DAS_TITLE] VARCHAR(255) default '' NOT NULL, + [DAS_DESCRIPTION] NVARCHAR(MAX) NULL, + [DAS_VERSION] VARCHAR(10) default '1.0' NOT NULL, + [DAS_CREATE_DATE] CHAR(19) NOT NULL, + [DAS_UPDATE_DATE] CHAR(19) NULL, + [DAS_STATUS] TINYINT default 1 NOT NULL, + CONSTRAINT DASHLET_PK PRIMARY KEY ([DAS_UID]) +); + +/* ---------------------------------------------------------------------- */ +/* DASHLET_INSTANCE */ +/* ---------------------------------------------------------------------- */ + + +IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name = 'DASHLET_INSTANCE') +BEGIN + DECLARE @reftable_68 nvarchar(60), @constraintname_68 nvarchar(60) + DECLARE refcursor CURSOR FOR + select reftables.name tablename, cons.name constraintname + from sysobjects tables, + sysobjects reftables, + sysobjects cons, + sysreferences ref + where tables.id = ref.rkeyid + and cons.id = ref.constid + and reftables.id = ref.fkeyid + and tables.name = 'DASHLET_INSTANCE' + OPEN refcursor + FETCH NEXT from refcursor into @reftable_68, @constraintname_68 + while @@FETCH_STATUS = 0 + BEGIN + exec ('alter table '+@reftable_68+' drop constraint '+@constraintname_68) + FETCH NEXT from refcursor into @reftable_68, @constraintname_68 + END + CLOSE refcursor + DEALLOCATE refcursor + DROP TABLE [DASHLET_INSTANCE] +END + + +CREATE TABLE [DASHLET_INSTANCE] +( + [DAS_INS_UID] VARCHAR(32) default '' NOT NULL, + [DAS_UID] VARCHAR(32) default '' NOT NULL, + [DAS_INS_OWNER_TYPE] VARCHAR(20) default '' NOT NULL, + [DAS_INS_OWNER_UID] VARCHAR(32) default '' NULL, + [DAS_INS_ADDITIONAL_PROPERTIES] NVARCHAR(MAX) NULL, + [DAS_INS_CREATE_DATE] CHAR(19) NOT NULL, + [DAS_INS_UPDATE_DATE] CHAR(19) NULL, + [DAS_INS_STATUS] TINYINT default 1 NOT NULL, + CONSTRAINT DASHLET_INSTANCE_PK PRIMARY KEY ([DAS_INS_UID]) +); diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index 30218c2b0..8f7753322 100755 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -400,6 +400,7 @@ CREATE TABLE `PROCESS` `PRO_TITLE_Y` INTEGER default 6 NOT NULL, `PRO_DEBUG` INTEGER default 0 NOT NULL, `PRO_DYNAFORMS` MEDIUMTEXT, + `PRO_DERIVATION_SCREEN_TPL` VARCHAR(128) default '', PRIMARY KEY (`PRO_UID`) )ENGINE=MyISAM DEFAULT CHARSET='utf8' COMMENT='Store process Information'; #----------------------------------------------------------------------------- @@ -582,6 +583,7 @@ CREATE TABLE `TASK` `TAS_COLOR` VARCHAR(32) default '' NOT NULL, `TAS_EVN_UID` VARCHAR(32) default '' NOT NULL, `TAS_BOUNDARY` VARCHAR(32) default '' NOT NULL, + `TAS_DERIVATION_SCREEN_TPL` VARCHAR(128) default '', PRIMARY KEY (`TAS_UID`) )ENGINE=MyISAM DEFAULT CHARSET='utf8' COMMENT='Task of workflow'; #----------------------------------------------------------------------------- diff --git a/workflow/engine/js/appFolder/core/appFolderList.js b/workflow/engine/js/appFolder/core/appFolderList.js index 9a5182485..c1dee6d2c 100755 --- a/workflow/engine/js/appFolder/core/appFolderList.js +++ b/workflow/engine/js/appFolder/core/appFolderList.js @@ -6,7 +6,7 @@ function openPMFolder( uid, rootfolder ){ getPMFolderContent(uid); return; } - document.getElementById('child_'+uid).innerHTML = "";//
'; + document.getElementById('child_'+uid).innerHTML = ""; var oRPC = new leimnud.module.rpc.xmlhttp({ @@ -30,7 +30,7 @@ function openPMFolder( uid, rootfolder ){ } function getPMFolderContent(uid){ - document.getElementById('spanFolderContent').innerHTML = "";//"Loading.."; + document.getElementById('spanFolderContent').innerHTML = "";//"Loading.."; var oRPC = new leimnud.module.rpc.xmlhttp({ url : 'appFolderAjax', async : true, @@ -51,7 +51,7 @@ function getPMFolderContent(uid){ } function getPMFolderSearchResult(searchKeyword,type){ - document.getElementById('spanFolderContent').innerHTML = "";//"Loading.."; + document.getElementById('spanFolderContent').innerHTML = "";//"Loading.."; var oRPC = new leimnud.module.rpc.xmlhttp({ url : 'appFolderAjax', async : true, @@ -72,7 +72,7 @@ function getPMFolderSearchResult(searchKeyword,type){ } function getPMFolderTags(rootfolder){ - document.getElementById('tags_cloud').innerHTML = "";//"Loading.."; + document.getElementById('tags_cloud').innerHTML = "";//"Loading.."; var oRPC = new leimnud.module.rpc.xmlhttp({ url : 'appFolderAjax', async : false, @@ -251,21 +251,21 @@ var documentInfo = function(docID,appDocId,docVersion,actionType,appId,docType,u }; var documentdelete = function(docID,appDocId,docVersion,actionType,appId,docType,usrUid){ - new leimnud.module.app.confirm().make({ - label : G_STRINGS.ID_MSG_CONFIRM_DELETE_FILE, - action: function() { - var oRPC = new leimnud.module.rpc.xmlhttp({ + new leimnud.module.app.confirm().make({ + label : G_STRINGS.ID_MSG_CONFIRM_DELETE_FILE, + action: function() { + var oRPC = new leimnud.module.rpc.xmlhttp({ url : 'appFolderAjax', async : true, - method:'POST', + method:'POST', args: 'action=documentdelete&sFileUID='+appDocId+'&docVersion='+docVersion - - }); - oRPC.callback = function(oRPC) { - window.location = 'appFolderList'; - }.extend(this); - oRPC.make(); - }.extend(this) + + }); + oRPC.callback = function(oRPC) { + window.location = 'appFolderList'; + }.extend(this); + oRPC.make(); + }.extend(this) }); @@ -277,21 +277,21 @@ var documentdelete = function(docID,appDocId,docVersion,actionType,appId,docType function deletePMFolder( uid, rootfolder ){ - new leimnud.module.app.confirm().make({ - label : G_STRINGS.ID_MSG_CONFIRM_DELETE_FILE, - action: function() { - var oRPC = new leimnud.module.rpc.xmlhttp({ + new leimnud.module.app.confirm().make({ + label : G_STRINGS.ID_MSG_CONFIRM_DELETE_FILE, + action: function() { + var oRPC = new leimnud.module.rpc.xmlhttp({ url : 'appFolderAjax', async : true, - method:'POST', + method:'POST', args: 'action=deletePMFolder&sFileUID='+uid+'&rootfolder='+rootfolder - - }); - oRPC.callback = function(oRPC) { - window.location = 'appFolderList'; - }.extend(this); - oRPC.make(); - }.extend(this) + + }); + oRPC.callback = function(oRPC) { + window.location = 'appFolderList'; + }.extend(this); + oRPC.make(); + }.extend(this) }); } \ No newline at end of file diff --git a/workflow/engine/js/cases/core/cases_Step.js b/workflow/engine/js/cases/core/cases_Step.js index 0b4fe9e0b..282672044 100755 --- a/workflow/engine/js/cases/core/cases_Step.js +++ b/workflow/engine/js/cases/core/cases_Step.js @@ -915,9 +915,9 @@ var resendMessage = function(APP_UID, APP_MSG_UID) function showdebug() { - if ( typeof(parent) != 'undefined' ) { - if ( typeof(parent.parent) != 'undefined' ) { - if ( ! parent.parent.PANEL_EAST_OPEN ) { + if ( typeof parent != 'undefined' && typeof parent.parent != 'undefined') { + if ( typeof parent.parent.Ext != 'undefined') { + if (!parent.parent.PANEL_EAST_OPEN ) { var debugPanel = parent.parent.Ext.getCmp('debugPanel'); parent.parent.PANEL_EAST_OPEN = true; diff --git a/workflow/engine/js/processmap/core/processes_Map.js b/workflow/engine/js/processmap/core/processes_Map.js index f7513e6da..c3c86270e 100755 --- a/workflow/engine/js/processmap/core/processes_Map.js +++ b/workflow/engine/js/processmap/core/processes_Map.js @@ -20,6 +20,7 @@ var saveDataTaskTemporal = function(iForm) oTaskData.TAS_DESCRIPTION = getField('TAS_DESCRIPTION').value.replace(re, "@amp@"); oTaskData.TAS_START = (getField('TAS_START').checked ? 'TRUE' : 'FALSE'); oTaskData.TAS_PRIORITY_VARIABLE = getField('TAS_PRIORITY_VARIABLE').value; + oTaskData.TAS_DERIVATION_SCREEN_TPL = getField('TAS_DERIVATION_SCREEN_TPL').value; break; case 2: case '2': diff --git a/workflow/engine/methods/cases/ajaxListener.php b/workflow/engine/methods/cases/ajaxListener.php index 17b766aeb..6d4cda767 100755 --- a/workflow/engine/methods/cases/ajaxListener.php +++ b/workflow/engine/methods/cases/ajaxListener.php @@ -84,151 +84,45 @@ class Ajax function steps() { - require_once 'classes/model/Step.php'; - require_once ( "classes/model/Content.php" ); - require_once ( "classes/model/AppDocument.php" ); - require_once ( "classes/model/InputDocumentPeer.php" ); - require_once ( "classes/model/OutputDocument.php" ); - require_once ( "classes/model/Dynaform.php" ); + G::LoadClass('applications'); + $applications = new Applications(); - G::LoadClass('pmScript'); - G::LoadClass('case'); + $proUid = isset($_SESSION['PROCESS']) ? $_SESSION['PROCESS'] : ''; + $tasUid = isset($_SESSION['TASK']) ? $_SESSION['TASK'] : ''; + $appUid = isset($_SESSION['APPLICATION']) ? $_SESSION['APPLICATION'] : ''; + $index = isset($_SESSION['INDEX']) ? $_SESSION['INDEX'] : ''; + $steps = $applications->getSteps($appUid, $index, $tasUid, $proUid); + $list = array(); + + foreach ($steps as $step) { + $item['id'] = $item['idtodraw'] = $step['id']; + $item['draggable'] = false; + $item['leaf'] = true; + $item['hrefTarget'] = 'casesSubFrame'; + $item['text'] = $step['title']; + $item['url'] = '../' . $step['url']; - $PRO_UID = isset($_SESSION['PROCESS'])?$_SESSION['PROCESS']:''; - $TAS_UID = isset($_SESSION['TASK'])?$_SESSION['TASK']:''; - $APP_UID = isset($_SESSION['APPLICATION'])?$_SESSION['APPLICATION']:''; - $tree = Array(); - $case = new Cases; - $step = new Step; - $appDocument = new AppDocument; - - $caseSteps = $step->getAllCaseSteps($PRO_UID, $TAS_UID, $APP_UID); - - //g::pr($caseSteps); - //getting externals steps - $oPluginRegistry = &PMPluginRegistry::getSingleton(); - $externalSteps = $oPluginRegistry->getSteps(); - //getting the case record - if($APP_UID){ - $caseData = $case->loadCase($APP_UID); - $pmScript = new PMScript(); - $pmScript->setFields($caseData['APP_DATA']); - } - - $externalStepCount = 0; - - foreach ($caseSteps as $caseStep) { - - if( trim($caseStep->getStepCondition()) != '' ) { - $pmScript->setScript($caseStep->getStepCondition()); - if( ! $pmScript->evaluate() ) - continue; - } - $stepUidObj = $caseStep->getStepUidObj(); - $stepTypeObj = $caseStep->getStepTypeObj(); - $stepPosition = $caseStep->getStepPosition(); - - $node = new stdClass; - $node->id = $stepUidObj; - $node->draggable = false; - $node->hrefTarget = 'casesSubFrame'; - - switch( $caseStep->getStepTypeObj() ) { + switch ($step['type']) { case 'DYNAFORM': - $oDocument = DynaformPeer::retrieveByPK($caseStep->getStepUidObj()); - - $node->text = $oDocument->getDynTitle(); - $node->iconCls = 'ss_sprite ss_application_form'; - $node->leaf = true; - $node->url = "cases_Step?UID=$stepUidObj&TYPE=$stepTypeObj&POSITION=$stepPosition&ACTION=EDIT"; - $node->idtodraw= $stepUidObj; + $item['iconCls'] = 'ss_sprite ss_application_form'; break; - - case 'OUTPUT_DOCUMENT': - $oDocument = OutputDocumentPeer::retrieveByPK($caseStep->getStepUidObj()); - $outputDoc = $appDocument->getObject($_SESSION['APPLICATION'], $_SESSION['INDEX'], $caseStep->getStepUidObj(), 'OUTPUT'); - - $node->text = $oDocument->getOutDocTitle(); - $node->iconCls = 'ss_sprite ss_application_put'; - $node->leaf = true; - if($outputDoc['APP_DOC_UID']) - $node->url = "cases_Step?UID=$stepUidObj&TYPE=$stepTypeObj&POSITION=$stepPosition&ACTION=VIEW&DOC={$outputDoc['APP_DOC_UID']}"; - else - $node->url = "cases_Step?UID=$stepUidObj&TYPE=$stepTypeObj&POSITION=$stepPosition&ACTION=GENERATE"; - + case 'OUTPUT_DOCUMENT': + $item['iconCls'] = 'ss_sprite ss_application_put'; break; - case 'INPUT_DOCUMENT': - $oDocument = InputDocumentPeer::retrieveByPK($caseStep->getStepUidObj()); - //$sType = $oDocument->getInpDocFormNeeded(); - $node->text = $oDocument->getInpDocTitle(); - $node->iconCls = 'ss_sprite ss_application_get'; - $node->leaf = true; - $node->url = "cases_Step?UID=$stepUidObj&TYPE=$stepTypeObj&POSITION=$stepPosition&ACTION=ATTACH"; + $item['iconCls'] = 'ss_sprite ss_application_get'; break; - case 'EXTERNAL': - $stepTitle = 'unknown ' . $caseStep->getStepUidObj(); - $oPluginRegistry = PMPluginRegistry::getSingleton(); - - foreach ( $externalSteps as $externalStep ) { - if ( $externalStep->sStepId == $caseStep->getStepUidObj() ) { - $stepTitle = $externalStep->sStepTitle; //default title - $sNamespace = $externalStep->sNamespace; - $oPlugin =& $oPluginRegistry->getPlugin($sNamespace); - $classFile = PATH_PLUGINS . $oPlugin->sNamespace . PATH_SEP . 'class.' . $oPlugin->sNamespace .'.php'; - if ( file_exists ( $classFile ) ) { - require_once ( $classFile ); - $sClassName = $sNamespace . 'class'; - $obj = new $sClassName( ); - if (method_exists($obj, 'getExternalStepTitle')) { - $stepTitle = $obj->getExternalStepTitle( $caseStep->getStepUidObj(), $TAS_UID, $caseStep->getStepPosition()); - } - if (method_exists($obj, 'getExternalStepAction')) { - $externalStepActions = $obj->getExternalStepAction( $caseStep->getStepUidObj(), -$caseStep->getStepPosition()); - } - } - break; - } - } - $node->id = md5($stepTitle.rand()); - $node->text = $stepTitle; - $node->leaf = false; - $node->url = ""; - $node->children = Array(); - - if( isset($externalStepActions) ) { - foreach ( $externalStepActions as $action => $label ) { - $childNode = new stdClass; - $childNode->id = md5($externalStepCount++); - $childNode->text = $label; - $childNode->iconCls = 'ICON_EXTERNAL_STEP'; - $childNode->leaf = true; - $childNode->url = "../cases/cases_Step?TYPE=$stepTypeObj&UID=$stepUidObj&POSITION=$stepPosition&ACTION=$action"; - - $node->children[] = $childNode; - } - } - break; + $item['iconCls'] = 'ss_sprite ss_application_view_detail'; + break; + default: + $item['iconCls'] = 'ICON_ASSIGN_TASK'; } - $tree[] = $node; - + $list[] = $item; } - //assign task - $node = new stdClass; - $node->id = 'ID_ASSIGN_TASK'; - $node->draggable = false; - $node->hrefTarget = 'casesSubFrame'; - $node->text = G::LoadTranslation('ID_ASSIGN_TASK'); - $node->iconCls = 'ICON_ASSIGN_TASK'; - $node->leaf = true; - $node->url = "../cases/cases_Step?TYPE=ASSIGN_TASK&UID=-1&POSITION=10000&ACTION=ASSIGN"; - $tree[] = $node; - - echo G::json_encode($tree); + echo G::json_encode($list); } function getInformationOptions() diff --git a/workflow/engine/methods/cases/casesListExtJsRedirector.php b/workflow/engine/methods/cases/casesListExtJsRedirector.php index f8f0ac214..56967121e 100755 --- a/workflow/engine/methods/cases/casesListExtJsRedirector.php +++ b/workflow/engine/methods/cases/casesListExtJsRedirector.php @@ -1,4 +1,31 @@ \ No newline at end of file diff --git a/workflow/engine/methods/cases/cases_Derivate.php b/workflow/engine/methods/cases/cases_Derivate.php index 599f4bfaa..69e6ef423 100755 --- a/workflow/engine/methods/cases/cases_Derivate.php +++ b/workflow/engine/methods/cases/cases_Derivate.php @@ -146,8 +146,8 @@ try { //Events - End $debuggerAvailable = true; - if (isset($_SESSION['current_ux']) && $_SESSION['current_ux'] == 'SIMPLIFIED') { - $aNextStep['PAGE'] = '../home/appList'; + if (isset($_SESSION['user_experience'])) { + $aNextStep['PAGE'] = 'casesListExtJsRedirector?ux=' . $_SESSION['user_experience']; $debuggerAvailable = false; } else { diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php index 8d3efc272..d4e6f52b5 100755 --- a/workflow/engine/methods/cases/cases_Step.php +++ b/workflow/engine/methods/cases/cases_Step.php @@ -55,12 +55,13 @@ /* GET , POST & $_SESSION Vars */ - if(isset($_GET['POSITION'])) { + if (isset($_GET['POSITION'])) { $_SESSION['STEP_POSITION'] = (int)$_GET['POSITION']; } - if(isset($_SESSION['CASES_REFRESH'])){ - unset($_SESSION['CASES_REFRESH']); - echo ""; + + if (isset($_SESSION['CASES_REFRESH'])) { + unset($_SESSION['CASES_REFRESH']); + G::evalJScript("if(typeof parent != 'undefined' && parent.refreshCountFolders) parent.refreshCountFolders();"); } /* Menues */ @@ -184,13 +185,13 @@ $array['APP_TITLE'] = $sTitleCase; $array['CASE'] = G::LoadTranslation('ID_CASE'); $array['TITLE'] = G::LoadTranslation('ID_TITLE'); - $G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $array); - -$uidf=$_GET['UID']; + switch ($_GET['TYPE']) { case 'DYNAFORM': + $G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $array); + if (!$aPreviousStep) { $Fields['APP_DATA']['__DYNAFORM_OPTIONS']['PREVIOUS_STEP_LABEL'] = ''; } @@ -205,13 +206,10 @@ $uidf=$_GET['UID']; $oHeadPublisher =& headPublisher::getSingleton(); $oHeadPublisher->addScriptCode(" if (typeof parent != 'undefined') { - try { - parent.setNode('$uidf'); + if (parent.setNode) { + parent.setNode('".$_GET['UID']."'); } - catch(e) { - } - } - "); + }"); $oStep = new Step(); $oStep = $oStep->loadByProcessTaskPosition($_SESSION['PROCESS'], $_SESSION['TASK'], $_GET['POSITION']); @@ -227,6 +225,8 @@ $uidf=$_GET['UID']; break; case 'INPUT_DOCUMENT': + $G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $array); + $oInputDocument = new InputDocument(); $Fields = $oInputDocument->load($_GET['UID']); if (!$aPreviousStep) { @@ -316,6 +316,8 @@ $uidf=$_GET['UID']; break; case 'OUTPUT_DOCUMENT': + $G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $array); + require_once 'classes/model/OutputDocument.php'; $oOutputDocument = new OutputDocument(); $aOD = $oOutputDocument->load( $_GET['UID'] ); @@ -615,6 +617,8 @@ $uidf=$_GET['UID']; die; break; case 'VIEW': + $G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $array); + require_once 'classes/model/AppDocument.php'; $oAppDocument = new AppDocument(); $lastVersion=$oAppDocument->getLastAppDocVersion($_GET['DOC'],$_SESSION['APPLICATION']); @@ -680,6 +684,7 @@ $uidf=$_GET['UID']; $oDerivation = new Derivation(); $oProcess = new Process(); $aData = $oCase->loadCase($_SESSION['APPLICATION']); + $aFields['PROCESS'] = $oProcess->load($_SESSION['PROCESS']); $aFields['PREVIOUS_PAGE'] = $aPreviousStep['PAGE']; $aFields['PREVIOUS_PAGE_LABEL'] = G::LoadTranslation('ID_PREVIOUS_STEP'); @@ -698,15 +703,17 @@ $uidf=$_GET['UID']; $aFields['TAS_TIMEUNIT'] = 'Task Unit'; $aFields['TAS_TYPE_DAY'] = 'Count Days By'; $aFields['TAS_CALENDAR'] = 'Calendar'; - $aFields['TASK'] = $oDerivation->prepareInformation( - array( 'USER_UID' => $_SESSION['USER_LOGGED'], - 'APP_UID' => $_SESSION['APPLICATION'], - 'DEL_INDEX' => $_SESSION['INDEX']) - ); + + $aFields['TASK'] = $oDerivation->prepareInformation(array( + 'USER_UID' => $_SESSION['USER_LOGGED'], + 'APP_UID' => $_SESSION['APPLICATION'], + 'DEL_INDEX' => $_SESSION['INDEX'] + )); if ( empty($aFields['TASK']) ) { throw ( new Exception ( G::LoadTranslation( 'ID_NO_DERIVATION_RULE') ) ); } + //take the first derivation rule as the task derivation rule type. $aFields['PROCESS']['ROU_TYPE'] = $aFields['TASK'][1]['ROU_TYPE']; $aFields['PROCESS']['ROU_FINISH_FLAG'] = false; @@ -928,7 +935,27 @@ $uidf=$_GET['UID']; } $aFields['PROCESSING_MESSAGE'] = G::loadTranslation('ID_PROCESSING'); - $G_PUBLISH->AddContent('smarty', 'cases/cases_ScreenDerivation', '', '', $aFields); + /** + * New Feature: Derivation Screen can be personalized + * @author Erik Amaru Ortiz + */ + $tplFile = 'cases/cases_ScreenDerivation'; + $task = TaskPeer::retrieveByPk($_SESSION['TASK']); + + $tasDerivationScreenTpl = $task->getTasDerivationScreenTpl(); + + if (!empty($tasDerivationScreenTpl)) { //erik: first, verify if the task has a personalized template (for derivation screen) + $tplFile = $tasDerivationScreenTpl; + $tplFile = PATH_DATA_MAILTEMPLATES . $aFields['PROCESS']['PRO_UID'] . PATH_SEP . $tplFile; + } + else { //erik: verify if the process has a personalized template (for derivation screen) + if (!empty($aFields['PROCESS']['PRO_DERIVATION_SCREEN_TPL'])) { + $tplFile = $aFields['PROCESS']['PRO_DERIVATION_SCREEN_TPL']; + $tplFile = PATH_DATA_MAILTEMPLATES . $aFields['PROCESS']['PRO_UID'] . PATH_SEP . $tplFile; + } + } + + $G_PUBLISH->AddContent('smarty', $tplFile, '', '', $aFields); /* if (isset( $aFields['TASK'][1]['NEXT_TASK']['USER_ASSIGNED'])){ if($aFields['TASK'][1]['NEXT_TASK']['USER_ASSIGNED']!="ERROR" && is_array($aFields['TASK'][1]['NEXT_TASK']['USER_ASSIGNED'])){ @@ -947,7 +974,9 @@ $uidf=$_GET['UID']; } */ break; - case 'EXTERNAL': + case 'EXTERNAL': + $G_PUBLISH->AddContent('smarty', 'cases/cases_title', '', '', $array); + $oPluginRegistry = &PMPluginRegistry::getSingleton(); $externalSteps = $oPluginRegistry->getSteps(); @@ -975,6 +1004,11 @@ $uidf=$_GET['UID']; $oDbConnections = new dbConnections($_SESSION['PROCESS']); $oDbConnections->loadAdditionalConnections(); $stepFilename = "$sNamespace/$sStepName"; + G::evalJScript(" + if (parent.setCurrent) { + parent.setCurrent('".$_GET['UID']."'); + }"); + $G_PUBLISH->AddContent('content', $stepFilename); break; @@ -993,19 +1027,20 @@ $uidf=$_GET['UID']; $oHeadPublisher =& headPublisher::getSingleton(); $oHeadPublisher->addScriptCode(" - if (typeof parent != 'undefined') { - try { - parent.showCaseNavigatorPanel('$sStatus'); - } - catch(e) { - } + if (typeof parent != 'undefined') { + if (parent.showCaseNavigatorPanel) { + parent.showCaseNavigatorPanel('$sStatus'); } - "); + + if (parent.setCurrent) { + parent.setCurrent('".$_GET['UID']."'); + } + }"); G::RenderPage('publish', 'blank'); if( $_SESSION['TRIGGER_DEBUG']['ISSET'] ){ - G::evalJScript('showdebug();'); + G::evalJScript('if (typeof showdebug != \'undefined\') showdebug();'); } diff --git a/workflow/engine/methods/cases/proxyCasesList.php b/workflow/engine/methods/cases/proxyCasesList.php index b4c3d5343..db6a959b6 100755 --- a/workflow/engine/methods/cases/proxyCasesList.php +++ b/workflow/engine/methods/cases/proxyCasesList.php @@ -20,8 +20,9 @@ try { // G::LoadClass('applications'); - $apps = new Applications(); - $data = $apps->getAll($start, $limit, $action, $filter, $search, $process, $user, $status, $type, $dateFrom, $dateTo, $callback, $dir, $sort); + $apps = new Applications(); + $userUid = ( isset($_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '' ) ? $_SESSION['USER_LOGGED'] : null; + $data = $apps->getAll($userUid, $start, $limit, $action, $filter, $search, $process, $user, $status, $type, $dateFrom, $dateTo, $callback, $dir, $sort); echo G::json_encode($data); } diff --git a/workflow/engine/methods/login/authentication.php b/workflow/engine/methods/login/authentication.php index e751c41b4..65522cdaa 100755 --- a/workflow/engine/methods/login/authentication.php +++ b/workflow/engine/methods/login/authentication.php @@ -36,22 +36,26 @@ try { $frm = $_POST['form']; $usr = ''; $pwd = ''; + if (isset($frm['USR_USERNAME'])) { $usr = strtolower(trim($frm['USR_USERNAME'])); $pwd = trim($frm['USR_PASSWORD']); } + $uid = $RBAC->VerifyLogin($usr , $pwd); - //cleaning session files older than 72 hours - $RBAC->cleanSessionFiles(72); + + $RBAC->cleanSessionFiles(72); //cleaning session files older than 72 hours $sPwd = 'currentPwd'; + switch ($uid) { //The user does doesn't exist case -1: - G::SendTemporalMessage ('ID_USER_NOT_REGISTERED', "warning"); + $errLabel = 'ID_USER_NOT_REGISTERED'; break; //The password is incorrect case -2: - G::SendTemporalMessage ('ID_WRONG_PASS', "warning"); + $errLabel = 'ID_WRONG_PASS'; + if(isset($_SESSION['__AUTH_ERROR__'])){ G::SendMessageText($_SESSION['__AUTH_ERROR__'], "warning"); unset($_SESSION['__AUTH_ERROR__']); @@ -62,29 +66,31 @@ try { require_once 'classes/model/Users.php'; $user = new Users; $aUser = $user->loadByUsernameInArray($usr); + switch($aUser['USR_STATUS']){ case 'VACATION': - G::SendTemporalMessage ('ID_USER_ONVACATION', "warning"); + $errLabel = 'ID_USER_ONVACATION'; break; - CASE 'INACTIVE': - G::SendTemporalMessage ('ID_USER_INACTIVE', "warning"); + case 'INACTIVE': + $errLabel = 'ID_USER_INACTIVE'; break; } break; //The Due date is finished case -4: - G::SendTemporalMessage ('ID_USER_INACTIVE_BY_DATE', "warning"); + $errLabel = 'ID_USER_INACTIVE_BY_DATE'; break; case -5: - G::SendTemporalMessage ('ID_AUTHENTICATION_SOURCE_INVALID', "warning"); + $errLabel = 'ID_AUTHENTICATION_SOURCE_INVALID'; break; - } - $$sPwd= $pwd; + } + + $$sPwd = $pwd; //to avoid empty string in user field. This will avoid a weird message "this row doesn't exist" if ( !isset($uid) ) { $uid = -1; - G::SendTemporalMessage ('ID_USER_NOT_REGISTERED', "warning"); + $errLabel = 'ID_USER_NOT_REGISTERED'; } if ( !isset($uid) || $uid < 0 ) { @@ -109,12 +115,19 @@ try { unset($_SESSION['FAILED_LOGINS']); G::SendMessageText(G::LoadTranslation('ID_ACCOUNT') . ' "' . $usr . '" ' . G::LoadTranslation('ID_ACCOUNT_DISABLED_CONTACT_ADMIN'), 'warning'); } - else { - //Nothing - } } } - G::header ("location: login.html"); + + if (strpos($_SERVER['HTTP_REFERER'], 'home/login') !== false) { + $d = serialize(array('u'=>$usr, 'p'=>$pwd, 'm'=>G::LoadTranslation($errLabel))); + $loginUrl = '../home/login?d='.base64_encode($d); + } + else { + G::SendTemporalMessage($errLabel, "warning"); + $loginUrl = 'login'; + } + + G::header("location: $loginUrl"); die; } if(!isset( $_SESSION['WORKSPACE'] ) ) $_SESSION['WORKSPACE'] = SYS_SYS; diff --git a/workflow/engine/methods/processes/processes_Save.php b/workflow/engine/methods/processes/processes_Save.php index 2b7698e7e..1fcfc51b1 100755 --- a/workflow/engine/methods/processes/processes_Save.php +++ b/workflow/engine/methods/processes/processes_Save.php @@ -47,6 +47,7 @@ switch($function){ $aRow = $oDataset->getRow(); print($aRow['PROCESS'] ? true : false); break; + default: if ( isset($_GET['PRO_UID'])) { $_POST['form']['PRO_UID'] = $_GET['PRO_UID']; diff --git a/workflow/engine/skinEngine/base/config.xml b/workflow/engine/skinEngine/base/config.xml index 8b6e19b06..0c5ccfe87 100755 --- a/workflow/engine/skinEngine/base/config.xml +++ b/workflow/engine/skinEngine/base/config.xml @@ -11,56 +11,40 @@ - - - - - + + + + + + - - - + + + + - - - + + + + - - - + + + + - - - - - - + + + + + + \ No newline at end of file diff --git a/workflow/engine/skinEngine/base/css/form.css b/workflow/engine/skinEngine/base/css/form.css new file mode 100644 index 000000000..e9b7b46c2 --- /dev/null +++ b/workflow/engine/skinEngine/base/css/form.css @@ -0,0 +1,896 @@ +/** form controls styles form.css */ + +body +{ + color:black; +} +.pm_separator{ + height: -1px; +} +form{ + margin: 0px; +} +INPUT { + font-family: Tahoma, Verdana, Arial, sans-serif ; + font-size: 10pt; +} + +/* Theme processmaker */ +.app_menuRight_container___processmaker +{ + position:absolute; + border:1px solid #868686; + background-color:#FAFAFA; + overflow:hidden; + z-index:10000; +} +.app_menuRight_shadow___processmaker +{ + position:absolute; + border:1px solid black; + background-color:black; + overflow:hidden; + z-index:9999; + opacity:0.2; + filter:alpha(opacity=20); +} +.app_menuRight_separator___processmaker +{ + padding:0; + margin-left:30px; + margin-right:5px; + position:relative; + cursor:default; + border-top:1px solid #C5C5C5; + border-bottom:0px solid red; + overflow:hidden; +} +.app_menuRight_option___processmaker, .app_menuRight_option_over___processmaker, .app_menuRight_optionNull___processmaker + +{ + padding:0px; + margin:0px; + position:relative; + cursor:default; + color:black; + background-color:""; + height:29px; + overflow:hidden; + border:0px solid #FBFFF2; +} +.app_menuRight_option_over___processmaker +{ + //background-image:url(/images/onmouseSilver.jpg); + background-color:#DCF1FC; + background-repeat:repeat-x; +} +.app_menuRight_option_image___processmaker, .app_menuRight_option_image_over___processmaker, .app_menuRight_option_imageNull___processmaker +{ + width :26px; + height :31px; + padding :0px; + position:absolute; + overflow:hidden; + cursor :default; + left :0; + top :0; + background-color:#E9EEEE; + border-right:1px solid #C5C5C5; +} +.app_menuRight_option_image_over___processmaker +{ + background-color:#E9EEEE; + border-right-width:1px; +} +.app_menuRight_option_image_element___processmaker +{ + position:absolute; + top:2; +} +.app_menuRight_option_text___processmaker +{ + padding :0px; + font :normal 8pt Tahoma,MiscFixed; + color :#003366; + position:absolute; + cursor :default; + left :30px; + top :8px; + overflow:hidden; +} +.app_menuRight_optionNull___processmaker +{ + +} +.app_menuRight_option_imageNull___processmaker +{ + width :26px; +} + +/* leimnud.app.menuRight CSS end */ + +/* processmap Theme.Panels begin */ +.panel_containerWindow___processmaker{ + border: 1px solid #C0C0C0; + border: 1px solid #1983BD; + border: 1px solid #66667E; + border:1px solid #AAA; + overflow: hidden; + /*border: 1px solid #5394BF; + border-left:1px solid #8BBDDF; + border-top:1px solid #8BBDDF;*/ +} +.panel_modal___processmaker{ + position:absolute; + background-color:black; + left:0px; + top:0px; +} +.panel_iframe___processmaker{ + width:100%; + height:100%; + position:absolute; + background-color:white; + overflow:hidden; + z-index:1; + top:0px; + left:0px; +} +.panel_backend___processmaker{ + /*width:100%;*/ + height:100%; + position:absolute; + background-color:white; + overflow:hidden; + z-index:1; + top:0px; + left:0px; +} +.panel_frontend___processmaker{ + /*width: 100%;*/ + height: 100%; + position: absolute; + background-color: #E8F2F7; + background-color:#E0DFE3; + /*background-color:#59A5D9;*/ + overflow: hidden; + z-index: 2; + top: 0px; + left: 0px; +} +.panel_titleBar___processmaker{ + position:relative; + height:23px; + overflow:hidden; + background-color:white; + background-image:url("/images/ext/gray/window/top-bottom.png"); + background-repeat:repeat-x; + background-position:0px -1px; + border-bottom:0px solid #DBE0E5; + width:100%; +} +.panel_title___processmaker{ + text-align: center; + width: 100%; + height: 23px; + color: #000; + /*color:#FFF;*/ + font: bold 8pt tahoma, MiscFixed; + padding-left: 5px; + padding-top: 5px; + z-index: 1; + text-shadow:#fff 0px 1px 1px; + color:#444; +} +.panel_close___processmaker{ + position:absolute; + top:4px; + font:normal 0pt tahoma; + padding:0px; + border:0px solid red; + z-index:2; + cursor:pointer; + background:url("/images/ext/gray/panel/tool-sprites.gif") 0 0 no-repeat; +} +.panel_roll___processmaker{ + position:absolute; + top:4; + font:normal 0pt tahoma; + padding:0px; + border:0px solid red; + z-index:2; + cursor:pointer; + background:url(/images/classic/roll.static.gif); + background-repeat:no-repeat; +} +.panel_resize___processmaker{ + position:absolute; + right:1px; + width:11px; + height:11px; + overflow:hidden; + z-index:333333; + bottom:1px; + background:url(/images/classic/panel.resize.11x11.png?rand=234); + background-repeat:no-repeat; +} +.panel_headerBar___processmaker{ + position:relative; + height:25px; + overflow:hidden; + background-color:transparent; +} +.panel_shadow___processmaker{ + position:absolute; + background-color:#000; +} +.panel_tab___processmaker{ + position:absolute; + z-index:3; + padding-bottom: 14px; + overflow-x: scroll; + /*overflow-y: visible;*/ + + +} + + +.panel_tabH___processmaker{ + position:absolute; +} +.panel_tabOptionH___processmaker{ + text-align:center; + font:normal 8pt Tahoma,MiscFixed; + position:absolute; + cursor:pointer; + border:1px solid #919B9C; + background-color:#F9F9F9; + color:black; + height:20px; + max-height:9px; + overflow:hidden; + -moz-border-radius-topleft:5px; + -moz-border-radius-topright:5px; +} +.panel_tabOptionOverH___processmaker{ + cursor:pointer; +} +.panel_tabOptionSelectedH___processmaker, .panel_tabOptionOverH___processmaker, .panel_tabOptionSelectedOverH___processmaker{ + font:normal 8pt Tahoma,MiscFixed; + border: 1px solid #FF9900; + border: 1px solid #919B9C; + border-bottom:1px solid #F9F9F9; + border-top-color:#E68B2C; + background-color: #FBFFF2; + background-color: #F9F9F9; + color:#000000; + text-align: center; + position: absolute; + background-image: url('/images/classic/panel.tabSelected.1x3.gif'); + background-repeat:repeat-x; + background-position:0px -1px; + height:22px; + max-height:10px; + overflow:hidden; +/* -moz-border-radius-topleft:4px; + -moz-border-radius-topright:4px;*/ + +} +.panel_tabOptionSelectedOverH___processmaker{ +} + + + + +.panel_tabOption___processmaker{ + text-align:left; + font:normal 8pt Tahoma,MiscFixed; + border:1px solid #A3A2BC; + border: 1px solid #FF9900; + position:absolute; + background-color:#FFE6BF; + cursor:pointer; + color:black; +} +.panel_tabOptionOver___processmaker{ + font:normal 8pt Tahoma,MiscFixed; + cursor:pointer; + text-align:left; + border:1px solid #FF9900; + color:#666666; + background-color:white; +} +.panel_tabOptionSelected___processmaker, .panel_tabOptionSelectedOver___processmaker{ + font:bold 8pt Tahoma,MiscFixed; + border: 1px solid #FF9900; + border-right:1px solid #FFF; + background-color: #FBFFF2; + color:#000000; + text-align: left; + position: absolute; +} +.panel_tabOptionSelectedOver___processmaker{ + color:#EA560F; + + +} +.panel_content___processmaker{ + position: relative; + color: black; + font: normal 8pt Tahoma,MiscFixed; + text-align: justify; + border: 1px solid #A3A2BC; + border: 1px solid #FF9900; + border: 1px solid #919B9C; + /*border-left:1px solid #1983BD; + border-top:1px solid #1983BD; + border-right:1px solid #59A5D9; + border-bottom:1px solid #59A5D9;*/ + background-color: #E8F2F7; + background-color: #FFFFFF; + background-color: #F9F9F9; + background-color: #FFF; + overflow: auto; + padding:0px; +} +.panel_statusBar___processmaker{ + position:relative; + overflow:hidden; + font:normal 8pt Tahoma,MiscFixed; + padding:0px; + margin:0px; + /*background-color:white;*/ + background-color:transparent; + min-height:25px; +} +.panel_status___processmaker +{ + text-align:center; + padding:2; + padding-left:5px; + color:#666666; +} +/* processmap Theme.Panels end */ + + + +/* Theme leimnud.module.grid BEGIN */ +/* gray BEGIN */ +.app_grid_headerBar___gray +{ + font:normal 8pt Tahoma,sans-serif,MiscFixed; + padding:3px; + text-align:center; + border:1px solid #AAA; + /*border:1px solid #FF9D3F;*/ + border-bottom:0px solid red; + background-color:#E8E8E8; + background :url(/images/classic/grid.title.gray.gif); + background-position:0px -10px; +} +.app_grid_table___gray +{ + font :normal 8pt Tahoma,sans-serif; + width :100%; + border-collapse:collapse; + margin :0px; +} +.app_grid_title___gray +{ + font:normal 8pt tahoma,helvetica,sans-serif; + border :1px solid #cbcbcb; + border :1px solid #aaa; + background-color:#D0DEF0; + background :url(/images/classic/grid.title.gray.gif); + text-align :center; + padding :4px; + height :25px; + color :#000; + cursor :default; + background-position:0px 0px; +} +.app_grid_data___gray +{ + padding : 5px; + border : 1px solid #dfdfdf; + color : #333; + overflow: auto; + background-color:#FFF; +} +.app_grid_data___gray select +{ + font:normal 8pt Tahoma,MiscFixed; + width:100%; +} +.app_grid_bg1___gray +{ + background-color:#e0e0e0; + border-color :#cbcbcb; + border-color :#aaa; + text-align:center; + font-size:7pt; + color :#000; + cursor :default; +} +.app_grid_bg2___gray +{ + background-color:#e0e0e0; + border:1px solid #e0e0e0; + text-align:center; + color :#000; +} + +.app_grid_pDf___gray, .app_grid_pDp___gray, .app_grid_pDn___gray, .app_grid_pDl___gray, .app_grid_pDfDisabled___gray, .app_grid_pDpDisabled___gray, .app_grid_pDnDisabled___gray, .app_grid_pDlDisabled___gray +{ + width:16px; + height:16px; + text-decoration:none; + padding-left:7px; + padding-right:7px; + margin-left:3px; + margin-right:3px; + overflow:none; + background-repeat: no-repeat; + font:normal 11px sans-serif; +} +.app_grid_pDf___gray +{ + background:url(/images/classic/module.grid/page-first.gif); +} +.app_grid_pDf___gray:hover +{ + background:url(/images/classic/module.grid/page-first-disabled.gif); +} +.app_grid_pDfDisabled___gray +{ + background:url(/images/classic/module.grid/page-first-disabled.gif); + cursor:default; +} + +.app_grid_pDp___gray +{ + background:url(/images/classic/module.grid/page-prev.gif); +} +.app_grid_pDp___gray:hover +{ + background:url(/images/classic/module.grid/page-prev-disabled.gif); +} +.app_grid_pDpDisabled___gray +{ + background:url(/images/classic/module.grid/page-prev-disabled.gif); + cursor:default; +} + +.app_grid_pDn___gray +{ + background:url(/images/classic/module.grid/page-next.gif); +} +.app_grid_pDn___gray:hover +{ + background:url(/images/classic/module.grid/page-next-disabled.gif); +} +.app_grid_pDnDisabled___gray +{ + background:url(/images/classic/module.grid/page-next-disabled.gif); + cursor:default; +} + +.app_grid_pDl___gray +{ + background:url(/images/classic/module.grid/page-last.gif); +} +.app_grid_pDl___gray:hover +{ + background:url(/images/classic/module.grid/page-last-disabled.gif); +} +.app_grid_pDlDisabled___gray +{ + background:url(/images/classic/module.grid/page-last-disabled.gif); + cursor:default; +} +.app_grid_pDC___gray +{ + width :35px; + height :18px; + margin-left :5px; + margin-right :5px; + border :1px solid #919B9C; + text-align :center; +} +/* gray END */ + + +/* Theme leimnud.module.grid.paginator BEGIN */ +.app_grid_paginatorHeader___gray +{ + font:normal 8pt Tahoma,MiscFixed; + color:black; + padding:10px; + text-align:center; +} +.app_grid_paginatorLink___gray +{ + background-color:#E0E0E0; + padding-left:3px; + padding-right:3px; + margin:2px; + border:1px solid #CBCBCB; + color:black; + cursor:hand; + text-decoration:none; + background :url(/images/classic/grid.title.gray.gif); + background-position:0px -10px; +} +.app_grid_paginatorLink___gray:hover +{ + background-color:#FFF; + border:1px solid #66667E; + color:#66667E; +} +.app_grid_paginatorLinkSelected___gray +{ + background-color:#fff; + padding-left:3px; + padding-right:3px; + margin:2px; + border:1px solid #CBCBCB; + color:black; + cursor:hand; + text-decoration:none; + cursor:default; +} + +/* Theme leimnud.module.app.button BEGIN */ +.module_app_button___gray, .module_app_buttonjs___gray +{ + border:1px solid #afafaf; + margin-left:2px; + cursor:pointer; + background :url(/images/classic/grid.title.gray.gif); + background-position:0px 0px; +} +.module_app_button___gray:hover, .module_app_buttonHover___gray +{ + border:1px solid #AAA; + background-position:0px -8px; +} +.module_app_buttonDisabled___gray +{ + font:normal 8pt Tahoma,sans-serif; + border:1px solid #9f9f9f; + background-position:0px -10px; + color:#9f9f9f; + cursor:default; +} + +/* Theme leimnud.module.app.button END */ +/* Theme leimnud.module.app.input BEGIN */ +.module_app_input___gray +{ + padding:1px; + border:1px solid #AAA; + padding-left:3px; + background: #FFFFFF url(/images/classic/input_back.gif) repeat-x; + background-position:0px 0px; + color :#333333; + font :normal 8pt sans-serif; +} +.module_app_input___gray_readOnly +{ + padding:1px; + border:1px solid #AAA; + padding-left:3px; + background: #EBEBE4;/*#FFFFFF url(/images/classic/input_back.gif) repeat-x;*/ + background-position:0px 0px; + color :#333333; + font :normal 8pt sans-serif; +} +.module_ListBoxView +{ + + color: white; + background:#CCDDFF; + padding:1px; + border:1px solid #AAA; + padding-left:3px; + background-position:0px 0px; + font :normal 8pt sans-serif; +} +.module_app_inputHover___gray +{ + border:1px solid #AAA; +} +.module_app_inputPassed___gray +{ + padding:1px; + border:1px solid green; + padding-left:2px; + padding-right:20px; + background: #FFFFFF url(/images/classic/ok.png) no-repeat; + background-position:99% 50%; + color :#000000; + font :normal 8pt sans-serif; +} +.module_app_inputFailed___gray +{ + border:1px solid red; + padding:1px; + padding-left:2px; + padding-right:20px; + background: #FFFFFF url(/images/classic/failed.png) no-repeat; + background-position:99% 50%; + color :#000000; + font :normal 8pt sans-serif; +} +.module_app_inputFailed_ie___gray +{ + filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=-1, OffY=-1,color=red) progid:DXImageTransform.Microsoft.dropshadow(OffX=1, OffY=1,color=red); +} +.module_app_inputPassed_ie___gray +{ + filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=-1, OffY=-1,color=green) progid:DXImageTransform.Microsoft.dropshadow(OffX=1, OffY=1,color=green); +} +.module_app_inputDisabled___gray +{ + background-color:#f0f0f0; + color:#9f9f9f; +} + +/* Theme leimnud.module.app.input END */ +.module_app_select___gray +{ + font:normal 8pt Tahoma,Sans-serif,MiscFi + border-top-style: double; +xed; + width:100%; +} + +/* Theme leimnud.module.rss BEGIN */ + + +.module_rss_container___gray, .module_rss_title___gray, .module_rss_header___gray, .module_rss_separator___gray, .module_rss_item___gray +{ + border:1px solid #AAA; + text-align:justify; +} + +.module_rss_title___gray, .module_rss_header___gray, .module_rss_itemHeader___gray +{ + background :url(/images/classic/grid.title.gray.gif); +} +.module_rss_itemContainer___gray +{ + border-top:1px solid #cbcbcb; + overflow:hidden; + padding:2px; + background-color:#EEE; + height:1px; +} +.module_rss_container___gray, .module_rss_separator_gray +{ + background-color:#DFDFDF; +} +.module_rss_container___gray +{ + padding:3px; + font:normal 8pt Tahoma,sans-serif,MiscFixed; + width:200px; +} +.module_rss_title___gray +{ + border-bottom-width:0px; + text-align :center; + padding :4px; + color :#000; + cursor :default; + background-position:0px 0px; +} +.module_rss_header___gray +{ + padding:1px; + text-align:right; + border-bottom-width:0px; + background-position:0px -10px; +} +.module_rss_separator___gray +{ + border-bottom-width:0px; + padding:1px; + padding-left:5px; + padding-right:5px; + overflow:hidden; +} +.module_rss_item___gray +{ + border-bottom-width:0px; + overflow:hidden; +} +.module_rss_itemLast___gray +{ + border-bottom-width:1px; +} +.module_rss_itemHeader___gray +{ + padding:5px; + background-position:0px -10px; + position:relative; + cursor:pointer; +} +.module_rss_itemPubDate___gray +{ + color : #808080; + font : normal 7pt Tahoma,sans-serif,MiscFixed; + padding : 5px; +} +.module_rss_itemHr___gray +{ + border-color : #808080; +} +.module_rss_itemTitle___gray +{ + color:#000; +} +.module_rss_itemReaded___gray +{ + color:#7f7f7f; +} +.module_rss_itemOver +{ + background-position:0px -50px; +} +.module_rss_itemButtons___gray +{ + position:absolute; + top:1px; + right:1px; +} +.module_rss_itemDescription___gray +{ + +} +.module_rss_itemLink___gray +{ + text-align:right; + padding-top:10px; +} +/* Theme leimnud.module.rss END */ + +/* toolbar estilo facebook */ + +div#toolbar +{ + position:absolute; + bottom:0px; + width:100%; + height:20px; + z-index:9999999; +} +.toolbar_container +{ + width:100%; + text-align:center; + height:25px; +} +.toolbar_wrapper{ + background-image:url(/images/bar_bg_bw.gif); + background-position:0 -1px; + border:1px solid #B5B5B5; + height:30px; + margin-left:5%; + margin-right:5%; + text-align:left; + padding-top:2px; + padding-bottom:2px; +} +.toolbar_item{ + border-right:1px solid #B5B5B5; + padding-top:3px; + padding-bottom:6px; + padding-right:15px; + padding-left:25px; + position:relative; + display:inline; + text-align:center; +} +.toolbar_item_section{ + position:absolute; + border:1px solid #B5B5B5; + width:150px; + height:300px; + background-color:white; + bottom:21px; + left:-1px; + color:black; + display:none; +} +@media screen + { + div#toolbar + { + position: fixed; + } + /* Don't do this at home */ + * html + { + overflow-y: hidden; + } + * html body + { + overflow-y: auto; + } + * html div#toolbar + { + position: absolute; + } + /* All done. */ + } + + #toolbar a:link,#toolbar a:visited + { + color:#666; + text-decoration:none; + } + #toolbar a:hover{ + color: #000; + } + #toolbar img + { + position:absolute; + left:5px; + top:3px; + } + +/*Botones*/ +.pagedTableDefault .pagedTable .RowLink a,.module_app_button___gray,.button_pm,.module_app_buttonjs___gray,.module_app_buttonDisabled___gray{ + -moz-border-radius:4px;border-radius:4px; + -moz-box-shadow:0 1px 2px rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.2); + background-color:#EEE; + background-image: none; + font-size:10px; + font-weight:400; + text-transform: capitalize; + margin:2px 0; + padding:2px 7px; + text-decoration:none; + line-height: 14px; + font-family: Arial,serif; + border:1px solid #aaa; + background:url("/images/ext/gray/button/btn.gif") repeat-x scroll 0 -1096px transparent; +} +.pagedTableDefault .pagedTable .RowLink a{ + color:#333; + /*cursor:pointer;*/ +} +/*HOVER*/ +.pagedTableDefault .pagedTable .RowLink a:hover,.module_app_button___gray:hover,.button_pm:hover,.module_app_buttonHover___gray, +.module_app_buttonjs___gray.module_app_buttonHover___gray +{ + background-color:#AAA; + border:1px solid #666; + background:url("/images/ext/gray/button/btn.gif") repeat-x scroll 0 -2168px transparent; +} +/*FOCUS*/ +.pagedTableDefault .pagedTable .RowLink a:focus,.module_app_button___gray:focus,.button_pm:focus{ + border:1px solid #45626F; + background:url("/images/ext/gray/button/btn.gif") repeat-x scroll 0 -3240px transparent; +} +/*NO BUTTON*/ +.pagedTableDefault .pagedTable .RowLink a:empty{ + display:none; + margin:0; +} +/*DISABLED*/ +.pagedTableDefault .pagedTable .RowLink a.module_app_buttonDisabled___gray, +.module_app_buttonDisabled___gray +{ + border:1px solid #bbb; + background-position:0 -3240px; + color:#9f9f9f; + cursor:default; +} +.pagedTableDefault .pagedTable .RowLink a.module_app_buttonDisabled___gray:hover, +.module_app_buttonDisabled___gray:hover +{ + background:url("/images/ext/gray/button/btn.gif") repeat-x scroll 0 -3240px transparent; +} + diff --git a/workflow/engine/skinEngine/base/css/style.css b/workflow/engine/skinEngine/base/css/style.css index b4848aa24..2065b751a 100755 --- a/workflow/engine/skinEngine/base/css/style.css +++ b/workflow/engine/skinEngine/base/css/style.css @@ -3149,3 +3149,133 @@ button.x-btn-text:focus,.x-combo-selected{ line-height: normal; } +/** erik: Simplified Stylesheet exteded */ +.ux { + background-color: #FFFFFF; + border-bottom: 1px solid #E8E8E8; + border-radius: 5px 5px 5px 5px; + -webkit-border-bottom-left-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + /*-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.6);*/ + /*-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.6);*/ + min-height: 20px; + padding: 12px; +} + +.ux form button { + -moz-border-bottom-colors: none; + -moz-border-image: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + + background: -moz-linear-gradient(white, #E1E1E1) repeat scroll 0 0 transparent; + background: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#E1E1E1)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#E1E1E1'); /* IE6,IE7 */ + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#E1E1E1')"; /* IE8 */ + + border-color: -moz-use-text-color -moz-use-text-color #EBEBEB; + border-radius: 4px 4px 4px 4px; + border-style: none none solid; + border-width: medium medium 1px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + color: #333333; + cursor: pointer; + display: inline-block; + font-family: helvetica,arial,freesans,clean,sans-serif; + font-size: 12px; + font-weight: bold; + height: 34px; + margin-left: 1px; + overflow: visible; + padding: 0 13px; + position: relative; + text-shadow: 1px 1px 0 #FFFFFF; + top: 1px; + white-space: nowrap; +} +.ux form button:hover { + background: -moz-linear-gradient(#0CA6DD, #0770A0) repeat scroll 0 0 transparent; + background: -webkit-gradient(linear, 0 0, 0 100%, from(#0CA6DD), to(#0770A0)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0CA6DD', endColorstr='#0770A0'); /* IE6,IE7 */ + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#0CA6DD', endColorstr='#0770A0')"; /* IE8 */ + + border-bottom-color: #0770A0; + color: #FFFFFF; + text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3); +} + +.ux form input[type="submit"] { + -moz-border-bottom-colors: none; + -moz-border-image: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + + background: -moz-linear-gradient(white, #E1E1E1) repeat scroll 0 0 transparent; + background: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#E1E1E1)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#E1E1E1'); /* IE6,IE7 */ + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#E1E1E1')"; /* IE8 */ + + border-color: -moz-use-text-color -moz-use-text-color #EBEBEB; + border-radius: 4px 4px 4px 4px; + border-style: none none solid; + border-width: medium medium 1px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + color: #333333; + cursor: pointer; + display: inline-block; + font-family: helvetica,arial,freesans,clean,sans-serif; + font-size: 12px; + font-weight: bold; + height: 34px; + margin-left: 1px; + overflow: visible; + padding: 0 13px; + position: relative; + text-shadow: 1px 1px 0 #FFFFFF; + top: 1px; + white-space: nowrap; +} +.ux form input[type="submit"]:hover { + background: -moz-linear-gradient(#0CA6DD, #0770A0) repeat scroll 0 0 transparent; + background: -webkit-gradient(linear, 0 0, 0 100%, from(#0CA6DD), to(#0770A0)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0CA6DD', endColorstr='#0770A0'); /* IE6,IE7 */ + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#0CA6DD', endColorstr='#0770A0')"; /* IE8 */ + + border-bottom-color: #0770A0; + color: #FFFFFF; + text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3); +} + +.ux h1 { + -moz-border-bottom-colors: none; + -moz-border-image: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + + background: -moz-linear-gradient(#829AA8, #405A6A) repeat scroll 0 0 transparent; + background: -webkit-gradient(linear, 0 0, 0 100%, from(#829AA8), to(#405A6A)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#829AA8', endColorstr='#405A6A'); /* IE6,IE7 */ + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#829AA8', endColorstr='#405A6A')"; /* IE8 */ + + border-color: #677C89 #677C89 #6B808D; + border-radius: 3px 3px 0 0; + border-style: solid; + border-width: 1px; + color: #FFFFFF; + font-size: 16px; + font-weight: bold; + margin: 0; + padding: 8px 18px; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.698); + + border-radius: 5px 5px 0px 0px; + -moz-border-radius: 5px 5px 0px 0px; /* Firefox */ + -webkit-border-radius: 5px 5px 0px 0px; /* Safari, Chrome */ +} + + diff --git a/workflow/engine/skinEngine/base/layout.html b/workflow/engine/skinEngine/base/layout.html index e66d2e3df..86dfa14ed 100644 --- a/workflow/engine/skinEngine/base/layout.html +++ b/workflow/engine/skinEngine/base/layout.html @@ -19,7 +19,7 @@ {if $user_logged neq ''} {$msgVer} {if $switch_interface} - + {/if} {$logout}  
diff --git a/workflow/engine/templates/cases/showDebugFrameLoader.php b/workflow/engine/templates/cases/showDebugFrameLoader.php index 9afb60087..1b8bf1a40 100755 --- a/workflow/engine/templates/cases/showDebugFrameLoader.php +++ b/workflow/engine/templates/cases/showDebugFrameLoader.php @@ -1,6 +1,6 @@ diff --git a/workflow/engine/templates/home/applications.html b/workflow/engine/templates/home/applications.html index addac5870..b91250456 100644 --- a/workflow/engine/templates/home/applications.html +++ b/workflow/engine/templates/home/applications.html @@ -1,48 +1,47 @@ - {foreach from=$cases key=id item=APP} -
  • - - - #{$APP.APP_NUMBER} - - - - - - - - - - -

    - - {$APP.APP_TITLE} - -

    -

    {$APP.DEL_DELEGATE_DATE}

    -

    {$APP.APP_PRO_TITLE} -
    {$APP.APP_TAS_TITLE}

    - -
    - {if $APP.NOTES_COUNT neq 0} - {foreach from=$APP.NOTES_LIST key=k item=NOTE} -
    - - - - - -
    - - -

    {$NOTE.USR_FIRSTNAME} {$NOTE.USR_LASTNAME} ({$NOTE.USR_USERNAME})

    -

    {$NOTE.NOTE_CONTENT}
    +{foreach from=$cases key=id item=APP} +
  • + + + #{$APP.APP_NUMBER} + + + + + + + + + + +

    + + {$APP.APP_TITLE} + +

    +

    From {$APP.APP_DEL_PREVIOUS_USER}, send at {$APP.DEL_DELEGATE_DATE}

    +

    {$APP.APP_PRO_TITLE} +
    {$APP.APP_TAS_TITLE}

    + +
    + {if $APP.NOTES_COUNT neq 0} + {foreach from=$APP.NOTES_LIST key=k item=NOTE} +
    + + + + + +
    + + +

    {$NOTE.USR_FIRSTNAME} {$NOTE.USR_LASTNAME} ({$NOTE.USR_USERNAME})

    +

    {$NOTE.NOTE_CONTENT}
    +
    Posted at {$NOTE.NOTE_DATE}
    +
    +
    + {/foreach} + {/if} +
    -
    Posted at {$NOTE.NOTE_DATE}
    -
  • -
    - {/foreach} - {/if} -
    - -
  • - {/foreach} \ No newline at end of file + +{/foreach} \ No newline at end of file diff --git a/workflow/engine/templates/home/index.html b/workflow/engine/templates/home/index.html index 95f55bc68..e16603b02 100644 --- a/workflow/engine/templates/home/index.html +++ b/workflow/engine/templates/home/index.html @@ -4,22 +4,29 @@ + - {literal} + {if $clientBrowser neq 'msie'} - - - - - - {literal} - - - {/literal} - - - - - - - - - - {literal} - - {/literal} - - - \ No newline at end of file diff --git a/workflow/engine/templates/home/indexSingle.html b/workflow/engine/templates/home/indexSingle.html new file mode 100644 index 000000000..b9e78960f --- /dev/null +++ b/workflow/engine/templates/home/indexSingle.html @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + {literal} + + + + + + {/literal} + + + +
    + + + + + + + {literal} + + {/literal} + + + \ No newline at end of file diff --git a/workflow/engine/templates/home/login_ie.html b/workflow/engine/templates/home/login_ie.html new file mode 100644 index 000000000..5d9ea97a5 --- /dev/null +++ b/workflow/engine/templates/home/login_ie.html @@ -0,0 +1,77 @@ + + + + + + + {literal} + + {/literal} + + + +
    +
    +
    +
    +
    + + + + +
    + + + + + + + + + + + + + + + + +
    Login
    User + +
    Password + +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + + + + diff --git a/workflow/engine/templates/home/login_standard.html b/workflow/engine/templates/home/login_standard.html new file mode 100644 index 000000000..34b6268da --- /dev/null +++ b/workflow/engine/templates/home/login_standard.html @@ -0,0 +1,102 @@ + + + + + + + + {literal} + + {/literal} + + + +
    +
    + +
    +
    + + + + + + diff --git a/workflow/engine/templates/home/noAppsMsg.html b/workflow/engine/templates/home/noAppsMsg.html new file mode 100644 index 000000000..81dd41d07 --- /dev/null +++ b/workflow/engine/templates/home/noAppsMsg.html @@ -0,0 +1,39 @@ + + + + + + + {literal} + + + {/literal} + + + +
    +
    +

    Information

    +

    Thank you for enter to see you Apps.

    +

    You have not pending applications for this time, come back soon.

    +
    + +
    +
    +
    + + + diff --git a/workflow/engine/xmlform/login/newSite.xml b/workflow/engine/xmlform/login/newSite.xml index 86e1f3295..d4e88b6d3 100755 --- a/workflow/engine/xmlform/login/newSite.xml +++ b/workflow/engine/xmlform/login/newSite.xml @@ -70,7 +70,7 @@ */ - data.loader= data.submit.parentNode.appendChild(new DOM('img',{src:'/js/maborak/core/images/loader_B.gif'},{width:22,height:22,position:'relative',display:'block'})); + data.loader= data.submit.parentNode.appendChild(new DOM('img',{src:'/images/classic/loader_B.gif'},{width:22,height:22,position:'relative',display:'block'})); data.loader.setStyle({visibility:'hidden'}); ed = function(mod) diff --git a/workflow/engine/xmlform/login/newSiteAdd.xml b/workflow/engine/xmlform/login/newSiteAdd.xml index fa5097da6..3e2c35862 100755 --- a/workflow/engine/xmlform/login/newSiteAdd.xml +++ b/workflow/engine/xmlform/login/newSiteAdd.xml @@ -88,7 +88,7 @@ */ - data.loader= data.submit.parentNode.appendChild(new DOM('img',{src:'/js/maborak/core/images/loader_B.gif'},{width:22,height:22,position:'relative',display:'block'})); + data.loader= data.submit.parentNode.appendChild(new DOM('img',{src:'/images/classic/loader_B.gif'},{width:22,height:22,position:'relative',display:'block'})); data.loader.setStyle({visibility:'hidden'}); var ed = function(mod) diff --git a/workflow/engine/xmlform/processes/processes_DirectoriesList.xml b/workflow/engine/xmlform/processes/processes_DirectoriesList.xml index 355744e73..8affbb160 100755 --- a/workflow/engine/xmlform/processes/processes_DirectoriesList.xml +++ b/workflow/engine/xmlform/processes/processes_DirectoriesList.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/workflow/engine/xmlform/processes/processes_Edit.html b/workflow/engine/xmlform/processes/processes_Edit.html index c33ed9203..387e1be76 100755 --- a/workflow/engine/xmlform/processes/processes_Edit.html +++ b/workflow/engine/xmlform/processes/processes_Edit.html @@ -39,6 +39,10 @@ {$PRO_SUMMARY_DYNAFORM} {$form.PRO_SUMMARY_DYNAFORM} + + {$PRO_DERIVATION_SCREEN_TPL} + {$form.PRO_DERIVATION_SCREEN_TPL} + {$PRO_DEBUG} {$form.PRO_DEBUG} diff --git a/workflow/engine/xmlform/processes/processes_Edit.xml b/workflow/engine/xmlform/processes/processes_Edit.xml index db6b4afc9..d9e953806 100755 --- a/workflow/engine/xmlform/processes/processes_Edit.xml +++ b/workflow/engine/xmlform/processes/processes_Edit.xml @@ -38,6 +38,14 @@ + + SELECT FILE,NAME FROM _TEMPLATES1 + Derivation Screen Template + + + + + Debug diff --git a/workflow/engine/xmlform/processes/processes_FilesOptions.xml b/workflow/engine/xmlform/processes/processes_FilesOptions.xml index 2603427a0..00bb33469 100755 --- a/workflow/engine/xmlform/processes/processes_FilesOptions.xml +++ b/workflow/engine/xmlform/processes/processes_FilesOptions.xml @@ -1,7 +1,7 @@ - + New diff --git a/workflow/engine/xmlform/tasks/tasks_Definition.xml b/workflow/engine/xmlform/tasks/tasks_Definition.xml index 84f6aa7a2..246154711 100755 --- a/workflow/engine/xmlform/tasks/tasks_Definition.xml +++ b/workflow/engine/xmlform/tasks/tasks_Definition.xml @@ -21,6 +21,13 @@ Variable for Case priority + + SELECT FILE,NAME FROM _TEMPLATES1 + Derivation Screen Template + + + + Starting task diff --git a/workflow/public_html/images/classic/arrowB.gif b/workflow/public_html/images/classic/arrowB.gif new file mode 100644 index 0000000000000000000000000000000000000000..df4833955daf3c2ce6ae2ab53694d63261683a73 GIT binary patch literal 13123 zcmeI3SC|u37=~vN#a%?Pcby$9sGCelcEgNGR?NDvXb{;5h;?@6Bs(UV8E0lqc5SGj zqBOf$u=m~zD%gAP1r>Y8uGqqvO-L3l;Q24O`{&7%oSb?8Q{MC4o-rNmqhz(7sb{7! z43nN;DwP^bL#HGsux+ZR(%)!n(N?uA@z^esG0YgZY~dn~HS`!axj88$?F8vI#`Za+ zvu}J#>&t4g&b7uHqD7^cxAVkP*C#?vEx*el_IPp2=q%*LJ|65D-RcMpslE*rN=TeKpuP;PR-UwUBi%coTn>m* zN)nW?q%_Nw@&Qn#Jj(kb28ijm?(b=}{$I0~{i>~n`NAkqG5~@x zU8oCW00d*YP#4Gm2*z}wE|38bjOjvMAOj#6(}lV~20$>T3w41EfM84)>H--6!I&=8 z1u_7FF$Xx=n}h5wCu+pzW?sqZ@&KO%P&6v?9-*6eEiXp4?lSSy?5Vv`>i+Mc>T3kUwQeZ z7hib(xo4kw`l%J-&iynRC;e`)9_`v=5-Fwg7cinl%?YG@}%gs04c*FJAU3<;d zS6z9<-+#1oD`uCKRP zIJU=gonvgv%;&O48{L^S(X}r1s3VU!{IEl(9x`R}q=QqP6Azkj;P~VL`;Y4wJEncV zw#2@p_i2sCqKqPsinKI`Ly{=)!9deqd+srE_uY2gWdzsA?!42EJ8Zw*w%csI)s|aq zzS*Y3H`#dDMnfCwHypCT`h(XSRL3xl%LmsDVd|JBdOL<*lBs8yLBnRv?OnWN>4KRZ LlV-RhnY~v4M2bn? literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/failed.png b/workflow/public_html/images/classic/failed.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9ea214069b3babde23df888e3f5b788c8be59a GIT binary patch literal 886 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 M=l0DaZHFiS1yfI>s{jB1 literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/grid.title.gray.gif b/workflow/public_html/images/classic/grid.title.gray.gif new file mode 100644 index 0000000000000000000000000000000000000000..57bf0477c06cd7d3819d35719c79f734a670a18b GIT binary patch literal 79 zcmZ?wbhEHbWMt@OSj52a{rmUl&!0bj{P_O;`?qi3zJC4srAwDiojRrXlZ8cu;Xi{8 j0}z1JGBAs9Y?S$Q{Df1dti|iIyZ^gWruz+epkG^iz7 literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/grid.title.green.gif b/workflow/public_html/images/classic/grid.title.green.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf64b899e9ef6abfc2cdabf74a8cc8ba98e16e77 GIT binary patch literal 105 zcmZ?wbhEHbWMt@O*v!D-IjhuVVxCKXu5(|GQ*X9Yca~#UhC^q%LwlNiTdI9aicNh2 w0}@dD$-*MS@Si~kBnC2rfkjN9#glob_sg|?-@`TfQZnadtXh{N#mHa{09aHWZ2$lO literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/grid.title.greenLight.gif b/workflow/public_html/images/classic/grid.title.greenLight.gif new file mode 100644 index 0000000000000000000000000000000000000000..08f6d3a3d5e4adc7d91d2dd685348811b979d8bc GIT binary patch literal 158 zcmZ?wbhEHbWMt@OIKsei<>BpP*UullcJ9d4vxl#qIe6vtfy<}%Upl$(;)%T%j_*2u zbjR7l+s_=@cKYC!(+4)6+P~@Kz75CsEI+i3fjFS}lZ8cu;Xi{8NIA$(23BbWfgZ+0 dq2r3KZyp{|!n1*C+m87yo~4?Ef{<|5kkU=08_6glYt literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/grid.titlebar.bg1.gif b/workflow/public_html/images/classic/grid.titlebar.bg1.gif new file mode 100644 index 0000000000000000000000000000000000000000..919a84fecb202d92ad12713680df5dcef5bd7905 GIT binary patch literal 90 zcmZ?wbhEHb)b|Ns9#0~jd&WML6u_|KpN;(^pM pFw1M~vihfYLbG%4w3lahi%YomrZ6};3=*#Y$WwN}P*Q6H7Al^Atidb5j`%jr0vI^$pBtKVkI)s!#=~2+mI{ zDNig)W$;Z*F3QhMP037DaLX)8Ezd8?E>`f3P%ttuFljGaa~`N6)zif>q+-s~3mdr( zDDbdc@U|2X|NsB<9~SpOLs>8G)^Ao8X33vUv_@ziRqV1%H)Rj@+TJ#kk>O7N(H_HB zyoxNm9$5ux`S&#q# literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/icons.gif b/workflow/public_html/images/classic/icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..01b1b22c06451494591d06cc84c9d993225daf11 GIT binary patch literal 11530 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 Ef~C2d^#A|> literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/loader_B.gif b/workflow/public_html/images/classic/loader_B.gif new file mode 100644 index 0000000000000000000000000000000000000000..b36b555b4ff04f841bb2101514d8f95bcf7358f4 GIT binary patch literal 3236 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 literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/loader_B_blank.gif b/workflow/public_html/images/classic/loader_B_blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..e0e6e9760bc04861cc4771e327f22ed7962e0858 GIT binary patch literal 4178 zcmd7VX;c#jy9e;etjSCgCNLmNf(amEL|#O+KwAx2Si>T+wW0=%qLdv}L}cG_0mZ6t zsSyDqzOuN1ueAmP3doKiE>%QC+(FxFTYbIpz4m_Tx%X2)bUx0UGc)IR{?GrJarbm{ zat`MMeBfsQ`0(Ka006)J_FG$9+tk$5^z?Lpe}7t9T6uZ-FTeaUIXU_6-MhVe_vYp0 zjgODFw6v&Hs%Ouh)z{bGxpQaf(xt({!3u>UH8oYOR=;@h!pqAmDk_S}Wa{qO+uPgG z(J?wYYHMq|di82^b91>|-q_fvyYv?xf`6Mz64r+&tyl85Zc5t7504B_j*1Oe+HH#2 z5DN%?g#ldmG{FbLR~EQJ;_5GRu(O9~x>L3vU*aPIfPN5V#Ccd5IdR?NJFR^6+gy(= zvcb#cjCTFX;Cuw3yi@&c_8cj5p=>B5p-DWj^TrxcsNf%_y-abkIA-k**{lc{$Od9L z2`DOqBg}TL1{kp+QpP#}#xSOrgp4piAP6C1d$ZA zKAh@4u05q$bs_#zTjo%;g6}MOx?x_1)m-hD`P!l#`y|g+qnj(t7yRyFXDlcrbMIU* zdiCQmq+utE(dpOWZL#nH^{-Rd#9}+^?UBy|kMp%+aqJc5`q621+mipv`vPgEM8o1` zO)U%Yv-6A_+%K$UdgmCm@IR^2{!D1?Xe!nb>cdhfcdZS(yt|La(GgblqAMM_>@^u> zF5Dy+i-gknjiTYZ;cD%?jzV^Xp7@(JWGt30Gmc2h1rRRJG6D9IA`xVA6c!ue#*i=| zXm(n31k6BD20NCLf*c$t#DsYbgl+|m+1{w&GC&~baJ2;f9%8qocb?;Hl@SKt^M|^s zlpqRqhZ5HY)9TL)TMWoD)N zz;Az-oVazE*~MqO*8Vd?9Ce*iW=u8SI$P=uD@%e0MwZ38MJ)&|;kU|HPIw9F?Y-a4 zUQ(zhxM}h09>(G@(aX^;O&q;H*3*m~jjKj{1{`Hn z%YEVGCra?ol(^}xkCfI%(yRB!Y)s4L?HU6eB@2gES~1ZaT^b$zZCD92iFx42nvC2k z&yGSQ!a$cty;w3`#*YBE>OyEr876?c-6BGANnIY9>%;_(a}MT2FhDjNgk#O5b1Zqh z!+=Q*j%*?LUNQrtO+d^!9wh@W;A!cIMTcdfoN=L5X?2c^-INmut`0?c7TXfGq_@b3 z1Jehdrq4`Q_gt7zcE5e!)A!T6dC4JunlBvSr#$YdMo+Evjh_~VqhxUgy~g6*K#>s`{S$-(Yf}dSkd_j06DIl^n3-)`lLvmcxY4Dka3vD_Pex;OI^N%nM z1BBTYmNnlk*mZs8IJxu7Tse|4{A8qI`C*4d7v+2)-n>2dY@K>?=#N-Jf3~zkA=mg$ zM`(g3TIm{n~;6%o)MJJfr806p_=7ABM#y0}8`N?R?I=rve=YI6DwI0sCQmG>?mMFb+*U&yY^GNXVeG21h7E~`Ikkn`xo6{D(rB6;2 z-7FebFwlErD182WmmH-YKcP$~j$hb1_4Kjn=&jqC0DOO}*85Hn@bJRg`i=}XR=a>R z?dF>Exxgi9Ebi%=Mee|UCl$X*Qb3a}asFbT>!A#$FS>K8C9~smiwYxKj}lR>r3L2X zk@MB*P9I0-S+fkCG^!q%cqPE?+#B0x=L{?{R1Vtv1^_{?U7sffF~66Fo^di5j1o4S z@VU+GngxG?ME+mMcW=+3b6-E@6?fiqeseID*u#kg zH|PX6rG>0_!zFn*C#Psfz@AMKli3io4T#V81(2Lv6JG{e0iogUn-d9s-E3H1gdb3x zs$d`SCRSB@Ga&wD`45Up8Ij$a-5CV3uMe|V)!)48&BpHD!&o9F3E$5Gx>8+$fZD-jK1cktX2M7y929Ko<4i z`h2Y`LlEP+6!1Y;sI}0#g6ncxChejb2t53=PxgJg805O-#66nyFkc3+t8+vYps6a( z**T?gH8-wyJPI0@ygF)b^OZ`!s{e>|DEMtJ`~Cwv`X@>Bua=ZCwgI0gOE$$sc}V`( zkyw?lQ%pHlS|usM4=PUXme&?X<{^jwm9nQf`*QY0MJ>|NsjRDOkR#B*;6QhGuXq2@ zAfdh79t3ud-?-Oz2?)6%Wn<8jb>*3nbPQvm%_qN4M97~pI@dm6PT|me$cRpl*NokR zEb5|`uidJl(QwL?H0f8Fm%3fFqZ#)f(EZiGOI-Ifc6PVeAwRc_@-Z;Q@qF*=oBZ=7G$1h9U zR@ZqxQQ6h2BkbuSuC`qo9%+}{9@M!F$PkGAqo2;r9C{Ax*t*f@kojqG(_S$mfV|kG zLO6ZoF05mVp6YJ}XmpZJImM}94)$|_=bHvW=KL05@opQBU8 zSVakqsYlQB)YkwGMPH`xn$pk=`UFh2BY6x4C3MMdJYF=TZP4e5$xW3 z%0yW&e}ZYBVo3knGqOi7As83xKA|9Wd)+dz@|sN7kUR=aY;iZKGJ9n?N6avKVmNOs zvk35c2vk3aQy4)wWlb5|^C=lAUCRk?JaU@^$y0db%}lm{@t<%fRdnwM2d}`>6-IoCyRQ+oPE+bE~gx{CdvBcPM?gIoC-f z%78G?j#DU;g4szDJgO{M5n8^Y%Jg_<<4n!9WuYaE_{LI!dVU2!T?DmbB1pIZ>mJPM z*0?2$_x4_XO|;SAunf0{#}?I%)Hmm`R_XsS%=lmAN0PGtSt}pQ5Y?pxlIk`~9{#Zp zb@Nurvtmn-4HCk{SJ#O$l3RsUMAqXRb*)*IRbumQIh*2@>6+0u5lsQQWH357gu*=$ z;LTfrDRuWArPrf$e~9b$%6Q7eBtCF`a3qDe^-Et^&)XmnV%0>d;B{*=S~DT$WE?L@w=g+x-fK=9^U~FC^PfFjtSoNI5484Rrdie*9EjS%Z+fz46M%R$jA7=FjprxCwjWT2O=jsA#5^-w1BXpsV<^I@C+h$q)W{)CS zN-5djgaPiH7(G21TS?__0vH7nMkZjO3kxd6lqzrq;U2w%m+1_S5@oBFz`>W}o>=e2PDmwF2+%2^2|Na~3O|4!?c8*kNDAYR`98T{oXI wRm;kR;ccgj<_0bfst{IIqdo5VxUb7Dui~hoCd)pD@Zkk?;Pa1v(EmC98@j*+jsO4v literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/maximizar.gif b/workflow/public_html/images/classic/maximizar.gif new file mode 100644 index 0000000000000000000000000000000000000000..3f27c677acad32f2d1a043161cc6dfe146f1bf21 GIT binary patch literal 214 zcmZ?wbhEHb)A_J-@kuv zZEgMk|Nnja_AOhsEH^Lj%$YM)RaMWQKRt>2-uPFqs+>Eq6#OUBKOil xhXOuvZic3iS|?r(Zt(_PW-b<{lR+7~xdpm^JnT6AUX0_ZpumiOOpJ;Q)&SFzR8;@~ literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/maximizar1.gif b/workflow/public_html/images/classic/maximizar1.gif new file mode 100644 index 0000000000000000000000000000000000000000..30bc5ecaba251c5d2d0e55b8a1b8cd4167a8665d GIT binary patch literal 200 zcmZ?wbhEHbgPhY%v@z$+dw{PFR zd-v{x2M-uV!Dt8!L;Mq+#E6<8x|aFW_O4e+3))3Q*|Q=94?bWMk!6jGP<+(r$fM>Xwqe7gmNr&4?FkK$jz>EMMFb>zJ~*Z~ zvMU=|C?p6pu`gocw@ENKkig96%Ptk5a9{xwcPOV4M}k2k%Q{v@i4+D0okN>5F7xql HFjxZs_zi%( literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/module.grid/page-first.gif b/workflow/public_html/images/classic/module.grid/page-first.gif new file mode 100644 index 0000000000000000000000000000000000000000..d84f41a91fca3a0ccc1107a78ffbf7b62c527afb GIT binary patch literal 925 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!N5_)V9X)ov0=f%X7nX_llo;Ppa!i5VLFJ8Q4$&%&Em#6pV(z;0OW5pDfG_ z46F<~Am@Pc1OrC}12>0^$A$$5o7t@;-Y_UNJMxKf6&W}lT+k*Y$eyJjc<@21kdg?` z9)m}X2f37ODg+`IICZeGskVGL@ZdlLlaQT?!H)&bz6?zAIR*(A8e5nhSgkHN9C*OQ m>dC5ipkT8?(+Va*AAy7q4&fY(0%9#)p=)k#W@Tbxum%8@3U^Ha literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/module.grid/page-last.gif b/workflow/public_html/images/classic/module.grid/page-last.gif new file mode 100644 index 0000000000000000000000000000000000000000..3df5c2ba50b143fca7d168d5acbcc4404b903ee8 GIT binary patch literal 923 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!N5_$V9X)ov0=f%X7)sh7DeV(M==$yO&0_YC2+|IvM<}Q z@ZbVY8B+}&lf=VK2L;XIwg}8jWa;H%bG(qjsCck}M+|z`(?y z1M&eVPcU$JFtBpScx+g3u$hC^!6V}XBXb*zY)A!1phGj4Fjq*7gQ62lFOR54M?r!E kLmQ{U6cz@-#wJD`MJWvdVWq}d0_-7oPHt8|*uY>70KTb0MF0Q* literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/module.grid/page-next.gif b/workflow/public_html/images/classic/module.grid/page-next.gif new file mode 100644 index 0000000000000000000000000000000000000000..960163530132545abe690cb8e49c5fef0f923344 GIT binary patch literal 875 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!NB3cV9X)ov0=f%W)9;69vKr@Ionu*A5?G{Hgn3DYJ|un wK6d5q<#D`_!KiqUp-ntt3Jb$U#ts%8MWY1*!jGC}2?&SWIk{Q=U;~3S0KQg&YXATM literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/module.grid/page-prev-disabled.gif b/workflow/public_html/images/classic/module.grid/page-prev-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..37154d62406ddc064dba311b95f554e49ad38003 GIT binary patch literal 879 zcmZ?wbhEHb6krfwXlGzZPfyRu$tfx-s;H=_udjFb@6g=b+}hgO*4EbD-QC;U+t=4O zY0{+0lPAxdIdk5;dGqJbU$}7L;>C-XELpN*#fp_HSMJ!cW9QDDr%#{0ef##^yLTBz z!Dt8!oe)s`$->OQz{;Qlaxy4SFmU)VaC69bY*=uxnSOV literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/module.grid/page-prev.gif b/workflow/public_html/images/classic/module.grid/page-prev.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb70cf8f6a3b7f524bbeb3656d875a823b27fd7c GIT binary patch literal 879 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!NB3eV9X)ov0=f%W)AK)kBA8^Y;DZmPc|?ZI=9Q{X*oQZ zkbJD2lgIqQijPiCj2*mD6%7sx9yN0CvxS^laG;@KrlbJNftid9=jS`{vav8&0{~Hw Bh1385 literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/nc.gif b/workflow/public_html/images/classic/nc.gif new file mode 100644 index 0000000000000000000000000000000000000000..44ef04f457e6e4a44ea8b2f649997db16212354a GIT binary patch literal 302 zcmZ?wbhEHb zwChiwzuUa^MMlozqbI&tdDP5ZaC=_Mqo}BbA3lEFx##Vf^FP|7u9>=4PAtE1&LCK0`{ZC`USDU+5MFp+hu;qD>&$1JzzqSNjTd?@n?VO;2FOngY~BZ^PH-0SX*n_VK+47`lMY=_PP*j~zOXULVTYPlV@UXq ynLYx&KFt$mSV&B0Jid8?hlkR!F2;=JC@5*iZW9!dd@4Aua>m33AC literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/nr.gif b/workflow/public_html/images/classic/nr.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb650024ed177c54dd42d25122eca6471161fae0 GIT binary patch literal 297 zcmZ?wbhEHb zwChiwzuUa^MMlozqbI&tdDP5ZaC=_Mqo}BbA3lEFx##Vf^FP|7u9>=4PAtE1&LCK0`{ZC`USDU+5MFp+hu;qD>&$1JzzqSNjTd?@n?VO;2FOngY;Fgp2E0h%=|9wYqC-T@L&91yBry;0pN3S;Q#;t literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/nr.png b/workflow/public_html/images/classic/nr.png new file mode 100644 index 0000000000000000000000000000000000000000..287e68f7117e1ae4977ab8bd4ac33ea79b4c1b29 GIT binary patch literal 474 zcmV<00VV#4P)Mfvv6dg@h5lqW0j>o>} zTV1a;6m=1V00GhNE-FH>lG?zPvNn^BKZ~*G{`>5FtXwIBuMA#6;dzRu6QAsPo~F?X z)^|2>r3|>PD?tb@E*{YZFgc5QvG^}Vgag+Hd8WoEN$u~xx&T^fLZLc*rSUz3?3H^6V{0v= zBYTCzqnr(QF57TqA@s$Cwf0xJSZwe8F@IAIv}Mxq%YQq+edJDomhU3KC%FQ)xIQv+ QT>t<807*qoM6N<$fbB zG9?kGvzGm4-ms5KP2k5N?XdgfgP?N>#60i*diN309zuyyZ#YK!<7Y;uC&q@3;0)wI zgHGtt?6|D7{)(4d>)-of{3-AKasxmD@N(sK19jn}nRiCVOUF<`qnGsQB>|eya0YT5 z&DTUZJ#=iPxi-qP!#7xHv?O02efi78)PUd_c_}X72azIJfjU8%|6n&?)(S2BTQ$svD|3uT9FddH=|3 zSi;1LG+wQp_f#>yJ)Jm!BW-8!zV;T3KdwlE8VU-mlmS9kVC7@u2 z816o+H~T+Do8D!~lli^S4~K%bKRY^^mFr2LTfqkDl1|kUqy#9XVVe;-)n@5x&pp@* zzGCgclH`wrfbs0jsMEJQclM_%BRv4_UcRGVowwum%9r C`z*Hr literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/panel.bg.title.1x23.gif b/workflow/public_html/images/classic/panel.bg.title.1x23.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f7aa594c3bee57302fa817bf95e8bc1ca1a1095 GIT binary patch literal 100 zcmV-q0Gt0uNk%w1VF3Ua0J8u9W@UiR(Av1U%B-u!qoTd;@AG_om)+jv#l_M8|Nr*( z_`SW&v$n?6*Wl*n=fuO+A^8LV2LS&7EC2ui0096O000CL5InUA8H|aAP-ur!D2aj? G5db@w6fish literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/panel.bg.title.1x29.gif b/workflow/public_html/images/classic/panel.bg.title.1x29.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e33d6c3cc6b6b7a2bbe2ae2783f918c4fb79ad1 GIT binary patch literal 154 zcmZ?wbhEHbWMq(KIKse?mR5KA?2Rqkj;~pLWXa-vuU@~ubMNW@|Nr;wJzHKr>B#Xb z-@pI7aOuvI$B#dJ{BrfiL!cA`DM0Zj3nM#&0D}%l6Ua^mR&fOf8Ga{$!wPFS7HKek QmhgS3bNZr!CkKNy0C9*l5&!@I literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/panel.bg.title.gif b/workflow/public_html/images/classic/panel.bg.title.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f29de61f12a7650ca1f5408b9984eff630a5499 GIT binary patch literal 147 zcmZ?wbhEHb6krfw*v!DNc+sA-=WjiI{&x4?vzxabfB*i=oqJD@9KX7H)!{2w@Bjb* z|JCbH2M%9gfC0syEG!}n{~2^Z0w6OOSR4vYdcIb&cFbC37Cf@^v}8`3iK- wGbi7#I44u{{(pNzfrk#8(1|5QGYu@}Us&Pjur_LaQ&ZXLw^jS^a4=W{0JF(NrT_o{ literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/panel.bg.title.png b/workflow/public_html/images/classic/panel.bg.title.png new file mode 100644 index 0000000000000000000000000000000000000000..179e2be0886f94f3be64c1632325a5c3f99a96dc GIT binary patch literal 21171 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 G-v0q}$W0Rf literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/panel.tabSelected.1x3.gif b/workflow/public_html/images/classic/panel.tabSelected.1x3.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec327a6602f2ba93802402038e1ae93fcf62b488 GIT binary patch literal 49 vcmZ?wbhEHbWMp7wn8*ME|NsBDjOhWAia%Kx8Gyn%AW@J!0~6B}ZU$=rQC$m( literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/question.png b/workflow/public_html/images/classic/question.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6762fa49bc5ad9aebdd8dd8cb479efa4c65bdb GIT binary patch literal 1435 zcmV;M1!Ve(P)WSr}sySlK{e6gCQL>B_4ew59I{c)r`)3w=Sm&2W;F@AkW2@9%fc z`F-bpm$kUK2y1C~=W2s_E^9Rn zAaEiMN6<6E!^8P;aj_5)5e_^a&tsiNqXDf}2WqtjY&M$?r|MZOR_SU)RwRJnr35@7 zA)b#8F)`6WWlNzL2dQ)zj7Fm#e|}Y1@P1{;1Q7fjMx2wHnjAE+x5;Fq6cLlj_($=f z!pxuv5O6-9m$P%{4hRbi^SF0sOab5javp9DNSV3V4KeU;`Wuvc8!1bB`#&&0um7vG z%7dp@WFw%{gP;Dxq{=|m*t1c zjs@I?Zo#FbB>R99>*<$L;KUlmS0NI`xaZY0=6+56CBLP>fIukRhQj5S6%-Z;SLy>f zL~!H}tC@i&vgOGHj|>H}&6_vj?um$sk59tfh_ICRQNbAi%R)^y54v0 zDm=8n)Rx8a7)hxGf>_Y&^>5+Nqv-cN2pq3G#piN4iK|8LEwr}IZsxiyFB>>)HU+wz zfLmvRH~|a{-WCW&DI0wV*d0z$baZIjjqC)nE8;Nnviux)W&3jsI7NWvEqNB0EjCCJ zC2zy~14wLvAz-%J!D@GeM4;wk6YP0y7kpBX1H8!fz$VeNmk7`~pjR(amjuUVcan*9 z=q84M&E}BH#*`ruAVNG`co6tekrc2i{cO)Hc)k0~7CYQij;nlj!FOMODmPgj+No(x zP~ha@>APQsjj_9|AVV(ZAcfF-_JL2^dXgcr&{Qa?6gu z?gRNSIisNf2npB7_DO$xXD=ux)zIJDb&^!iZzHNX{f+#-&T!(y*}4^@C(56o+wZ)= z2=&da2+E?|x9$MbnmPFCw~H{R)m0DPyryz*LBA)WhU$uv9_h%fAAfHMNPwh1a(x6d z_d;@#->6+eHNzLjt6+L|cIa~Lsc&&=&Yk{%Z^Iq?O85&4&W@yKHa%OOzYiiFTgTiZ z^(2Cu!UIUdRC8j+XR=|Bw#Zes=FJ{lE{g$l%)9tbtWVWF%y1E z;A$~Tt(E{zVV!#iWpJ&#A4cRVa5`)f-ORlohB_K0blTMqbtv^Eg75#&D`9kef|(#vV7Dg2+{kZgc1`Xym0%k_nFBe-# z1Q47Yxz816rTeNHd%&3s%^>dR(ND{zSqM)0w;~v@pa{_5R}Sudo&UV>X=eV`hyo;i z!_eB*2L^*tHKQ0VlHF(-q=jXF;8HH%1#WP1irTs*k(#@!oWgc%p{^ZvtJq@Dwe*Sq ztfPDR1peRpD8GzEiwn+^Hj9aOqqm=uxk;zFZnv7}G1?(_6^J9S{!x6I`SbzYR#7;3 ppGb+QoDUoA1AUtP-}avX0{})OV?7k1tv literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/separatorTable.gif b/workflow/public_html/images/classic/separatorTable.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5724af182e40d409e340e8ec98d81a377d8ea52 GIT binary patch literal 45 xcmZ?wbhEHbWMmLvXkcKNIdkU!|Nj+#vM{hS{AbW%00NK<0~1S2KPM}LH2@%)3dH~b literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/silverBackgroundMenuSelected.jpg b/workflow/public_html/images/classic/silverBackgroundMenuSelected.jpg new file mode 100644 index 0000000000000000000000000000000000000000..530884228c9c354a344e6ae80f474e9f24f4d97c GIT binary patch literal 329 zcmex=i3*BJ!6k`h{6D}T z$iX1Rz{bod$iO7X$SlbC{|JLP0|PT712SM{VPywO$OtenF|wjaF$=Sc2ZcV%7eRgy+gi5z!Xz+gxy77$fLsEtGwHAtVl1J#W zPtZ-DqKiaTU!c2QHth?v>J!j05H4wy>MXK5M_`Y~|2b#o^S_@^|W8#tKhzFV>Dp^rUCfP+%(^>WtCm|L6 zY?Qa_4fXkcdD4?T6{N}L`u%>QpH7%|Q%>b_IXS7wiV|mvc<^8%<-fInA0jx|ZU!GE2-ev}(zwnq%5k)9e(-+b_3l+BfZX zPb?j!^Dh4d(X8t%pYCf8ExJ77sZ?B1s;Nh6CZi^^ujcZ{qATeYv)*c)UX#9)Qg?Eb z^f}QaJukZ;=D>`oyL-Aa|36@Leag!^u{)#BQrBhLpiP2q%3q$}UMt31D5CM=F-G#V71VCbR7vcgD0Ey9EhzmpjBt~~3E)W5b z7~O@qKmiEnh5e|FS^8ti;WpB>~FekUcud%a$tm-qR2KhOTb z6`o%Sh5~_LAP^ElqYy%?VIjO4ibU4eBay9WG`b~C!!5!s^L!{6+6ad?HrIr;&4p!e zkDs=;-2uCfVwyf43@?bVOg2f-!wFoXTP}(SwD|J_Qb)>ml}T@-}tsV{Q4LB CV)H-% literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/silverBackgroundTableTitle.jpg b/workflow/public_html/images/classic/silverBackgroundTableTitle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e8357f9b56c7bd7e1d51991563663d0a6639ba9d GIT binary patch literal 296 zcma)%O$x#=5Jtb)B&}&`6Ou}4yKv*KcW@z;>aD~xcoPrc!UG6y{MmSun7AldH$E5` z-oQ6A?&e-l+iuf=cv{i|?uj)xrIb<57@u-qX~KDuN+D7qq>>+$oaHK?Nn@-vrm5?? zSqy{_631~Svr?(DDs)i|!+#rhf=*CEMnq$xNu-H8V;)Y$7cB94xE^=?^1^WF?cUwrCuk=) literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/star.gif b/workflow/public_html/images/classic/star.gif new file mode 100644 index 0000000000000000000000000000000000000000..32633e30d43c43e8b412b7d47a80e2bd40c9a052 GIT binary patch literal 1120 zcmcJM{WIHl0DwOdny;5OK}77ZWYMi!dPHkp)=YF+5;fwbtgUU->6O~9Gwsb?Z;OaT zN=`_IzHE0fF)yvD)ltWqdRsQMF)`83d%P?Z^_B$re7F7)dwzcI`Q>4AKMV;?^8jbS z0sz~hlW>2=FgvFk9=583_kR5x9lW)mitj~JkPo|51*ZeYl@xnFt{jylT{Y=Eok0^FKb`u$KldBbnp_Kird%M z!qpzLiUr61liT4|I{cln*A~0DuweN)0dDJeTcV+91CD(KO?TlAAI@Z$Os2K9wVl#X zbW(v%<(U+baOIQz&IEJa$GeZOSq)ENUpUmo!L4j)S%UjUxZ43uayTJIwc&815zb~= z4PDUu_ul9|xIP3|A46j$8U+3is1{or97qR#uj8+u036CE3JQdUBC(i#v#3PK=Fk{q zsg#TmE7*!6JYK-y+!3)!w*@3zZ8Z^35_0Hx@-M}bQo2$|qIc2}n!JFG!y`U)#vKN& zmfhFVNF3-cAHGL=BEVyYD{zHRk%kgBeM*d5P|#`8e-?|{6|_f1BT~+`m@_NIufOWg zZw%Im3vms$NUo5gN3P5KkSasEvRT5mjV6kEaYu>^!oKl5Tb#nZawMUFc->{5X5*H8 zF+%0+qlyu5mM*Z295RK|tjs>EDsUhpZ#>Vnb(9?NKVRV)x-iFNIL#5g$Z2V6Kz=)? zXf$vIJiyU>-)l*oNq4iqh|cBAyhRn^k`TKLoq^@#ZpX)Bo0w$8E>U-)6^X7|7yVY6 z%p(AT9Qb&L=m^JH4*AdG6R%cvCTMLW-n`sT?^kaV$tRu5Iv&=vN?x={d1T&gUWaoa z@kCSLkL_-@UG-l2_)e}XqNNt8xiK!zONmh_zAfo&$w)BQOWlGk7Gsqd1#&gyhA)2Q zpu^=WH$6hXAjZ(*w(5?G4Ae9&H)G#lMf&#G;ks$TFr~db2xCyWxYTRpe>zw42#WkY zv#i@OvbS4F)87DU+`NYFm}E$u#@Yw?P}7MFC+z?eb1=cl-p4Z)xJEF_1euqvRXYf^ zHS4S{jC%^dM;`J4U}3ZRYLbs12mpr}^}JcDp5cjol_C6qv5mmM}ObfxAR zyG5(A2>My!h`*=Jl&r|DT!p z?|Sj=8#jMnUGwM0vVV8m@87%k@7|2Z4<0^w^!V?CUC*CA`}^p~-zR(jJ~{XL)vMR9 zUjKV{`2G9$|2~}k`~K;_4|hL*`t;@Vm+#-d|NH*w-_IBSetiD-@9TfuK=Gfbb5Uwy zNotBhd1gt5LP$ocg1e`00D}$#5P&?%!1nLJ>;jKHC;N^rDbfh;4cWA`ou^`C~SxJ-*eR*r#|lBA@86!QcQ zJtu>yTJ3IrCFXjvY%DCSi&*)ERNPc6j3UjY*cY>MZsO$LDrc^2kfRyMwRsEYVjdn* zQ{^=-hR5{g(B$DOb1{C@33qFx^|QfK^SiH(Ei#bp4`D+`Q_lO4pOc%@6bN z@d^J@jQ`|nAer}Kv%`i5ZPGGHKAjg^71~72qgpmJJapr14f=NHhrl5=ZoZW{7j^`u zbM**0yL5O=d=xXyD>&?KK;nxNf?}Fp8$NvRU&=RC$?Pagtn-!?7ZsPN{zk2=t{rk_KK7IN8 z<@@*V|B-;=KT+qR)Wnk16ovB4k_?5Aj8p}8Pu~Cr9R?r(8Op#iZNf><)qBe`&%AVU zTUavJ$l#e%(s4!66Ir@VTAZD_#_bM@jm=3rPS!9Pb}1a-;o(_)QmIgafvGk0U_x|A ztM#!kEw0ZjfhQXU%v81RHTG@h*rU&Bt(oxR$$JS86*fdEv tCUz^9Npj4AY&8l@EXu62gBEkMEDqveHCQIRcD=D{$=0+TJGBKFtO0CcZFK+u literal 0 HcmV?d00001 diff --git a/workflow/public_html/images/classic/tabs_li_bg.gif b/workflow/public_html/images/classic/tabs_li_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..79be4504b84e363840fd8bb111f30adb7d1a6213 GIT binary patch literal 2349 zcmc(d`BT#e0>vYsPz;n2YF&y7)#Zl93n+D3iU$EBW^55l)y0Yw6$;g^xN5f%B-{!` z0jbJOE+AYI2na#0BqR|eCvt?G-yD#WoIuw875ir1k8j?*d7qfrlM!ED4&H(QNfJTp z>+5E-S)2zwfTBTCS05OX>qt$AMhY4$IYbKM4zqDYp z*%)*xlQ}y(`|g9KQZa|a+*n_iN<=IcQz{Wlr6Mku!)CMCY&M6(q0=Z5iHON$ip4^K zU|F@gA`%I-TFo4fW3iau&v7JT5ud-P*X!tX8UO$r8|wnW5{*U~93)Dm5)PZi7UA36a)6)!vT&B}%jRu2ID3r;hVv$g=%wJks0RE0JhlgKF#6mWUHOFIf zxh#{>xVoZbu~pv>s_JLOK>-jD$i2Ryv8lNQg~niUt!?csTku`oJ+FEReb}%4 z-xr~4P4JD8ZJ<}ny0EDSE$cw(rzSSbx`5l8blRBCWq$`nK*^@t)Jf9@#AVJKQBY z@s)yu{|sDxdZ2gZecvs`B7K0MS|a6c-y1*JrxB9Nr{Wod{W|G%}s~`RV%Qk;L!eM6`|ACV) znx6v>1NgaaC;jUmx;P{+=j}>GFC)Ef1Izi|NPj`W{>n5#p??cnP!x2IEGULd_zO!8 zv(tp7K4Dp;M@J2S@Nv|(08!cTo!3O=P+yG5_9rY%CaQo(W3D{;{@gY3)AOkqapeV1 z9>^{k86c@nsk|n6mezui)TH;yB!6X11W2F%#{NNCbz6dwzPxXcNox_?h^h9q9@l~T z0$(i9P!c8w8p}=w%9@^>yDn?4PQ?b)*W8xNP<6;aIl8IRl4k#16IPCG?Ul=M9TS0y z)*kkCMO&W)t7soI$Z>e|W}vcTZ08MSC)pPl+%^)bP%xSC2UP zwW{BM_uU^Eb&CnsjCmxc|7siCnbNA6@XA(dCcX3LHI9C0lHK<2n_9KhV1iOR1(^)i z(GGLcb@T{ntB!HhsMOIua|qFI3-B5ladBL4)xU#3WJZo_1}DR~a0j*9xVWni6upRW3^nn;)a@oL zJ@jig2}*FVH%p~4p=QywZ!YCg6H?m$L#@dix+#73hijyyt|~rHhN@cZ2b%BQ8>QVpkiR3)rNKGNUq`?CP z9S=;>6rHCv>?DxKL+@&elfjL<@O@(kYBVKjutrY~c_NHBQy8oyIW9scBj+@a?$Gw_ z5u+!+wrCzBz)ic&{^V#+ZCL?qzmGeGd@@p7{_}n>1iBK2J*QQr)?iuni*$x9p4w?xn} z@!4@_1H6+#NiyskiW(v4V@tu)35lP;!$t^*2(Q`O%1ogX*&?zbuMk+mdp3f)EIgaqvUz; zsU!xL9o<%%akZSfk2lBe>{*z}$PPN+ge)YG7I2v(9`gdmCz!m0?KgQv^JjvM{V6A~ z*t$~}+vCC$SoB{K@Lz3RxtrbLNn&SD-eamS6%PUnGCwfnp;wdfb@)~UxIt~_PBIRK zCTwx7EIYVvscQ0rA2xo`#r4c4TA~<@mrZBjfspKVf7=e*xR- za*tc*1Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iyV= z6(TiYXVzK(00Ivp?e06=pC#pCe_rSv9Mi9|wj&fo6$`_Ha~>2w;DQbhH7=%~5D-G3 z>pIEj^S)3hq^8s9d&{yuKJB3f0ES^8l}g!%!@;xp01ys`Nuf{xrS!#oK8FwjLWsw) zu`CPye*g7$yTxX+`RiM)Rv?5Z0HBnj-EMc6%jLV%P|gW&F4HuXX_`l$&-W>p%Q^o$ zosR1DdWtdj#xsYFMnh3bVVWiZfW=~gR;v}zbse+W>``pa6}l2;G8rfR#bObyR*L|@ zdcD3F?5kJrG+6+cOeUVgvTYlu$HA45bB|6H_V+Po~-c6(xGQIEGZ*%IRCk*I*#veEMMeBZC?pv0ep7MGp^woa~!7 z6gXTy-!m0$-}c(DXY$$8SyOzj_-=CfQ}O70?6;tIDlloadUserRolePermission( $RBAC->sSystem, $_SESSION['USER_LOGGED'] , PATH_DATA, session_id()); } else { + // this is the blank list to allow execute scripts with no login (without session started) + $noLoginFiles = array(); + $noLoginFiles[] = 'login'; + $noLoginFiles[] = 'authentication'; + $noLoginFiles[] = 'login_Ajax'; + $noLoginFiles[] = 'dbInfo'; + $noLoginFiles[] = 'sysLoginVerify'; + $noLoginFiles[] = 'processes_Ajax'; + $noLoginFiles[] = 'updateTranslation'; + $noLoginFiles[] = 'autoinstallProcesses'; + $noLoginFiles[] = 'autoinstallPlugins'; + $noLoginFiles[] = 'heartbeatStatus'; + $noLoginFiles[] = 'showLogoFile'; + $noLoginFiles[] = 'forgotPassword'; + $noLoginFiles[] = 'retrivePassword'; + $noLoginFiles[] = 'services'; + $noLoginFiles[] = 'tracker'; + $noLoginFiles[] = 'defaultAjaxDynaform'; + $noLoginFiles[] = 'dynaforms_checkDependentFields'; + $noLoginFiles[] = 'cases_ShowDocument'; + //This sentence is used when you lost the Session - if ( SYS_TARGET != 'authentication' and SYS_TARGET != 'login' and SYS_TARGET != 'login_Ajax' - and SYS_TARGET != 'dbInfo' and SYS_TARGET != 'sysLoginVerify' and SYS_TARGET != 'processes_Ajax' - and SYS_TARGET != 'updateTranslation' - and SYS_TARGET != 'autoinstallProcesses' - and SYS_TARGET != 'autoinstallPlugins' - and SYS_TARGET != 'heartbeatStatus' - and SYS_TARGET != 'showLogoFile' - and SYS_TARGET != 'forgotPassword' - and SYS_TARGET != 'retrivePassword' - and SYS_COLLECTION != 'services' and SYS_COLLECTION != 'tracker' and $collectionPlugin != 'services' - and $bWE != true and SYS_TARGET != 'defaultAjaxDynaform' and SYS_TARGET != 'dynaforms_checkDependentFields' and SYS_TARGET != 'cases_ShowDocument') { + if ( !in_array(SYS_TARGET, $noLoginFiles) && $bWE != true && $collectionPlugin != 'services') { $bRedirect = true; + if (isset($_GET['sid'])) { G::LoadClass('sessions'); $oSessions = new Sessions(); @@ -545,11 +557,19 @@ } } if ($bRedirect) { - if (empty($_POST)) { - header('location: ' . SYS_URI . 'login/login?u=' . urlencode($_SERVER['REQUEST_URI'])); + //g::pr($_SERVER); die; + if (strpos($_SERVER['REQUEST_URI'], '/home') !== false) { + $loginUrl = 'home/login'; } else { - header('location: ' . SYS_URI . 'login/login'); + $loginUrl = 'login/login'; + } + + if (empty($_POST)) { + header('location: ' . SYS_URI . $loginUrl . '?u=' . urlencode($_SERVER['REQUEST_URI'])); + } + else { + header('location: ' . SYS_URI . $loginUrl); } die(); }