From 22691a06b01624d1d64018ae03fb31b4bf8170b9 Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Tue, 15 Mar 2016 11:54:22 -0400 Subject: [PATCH] HOR-435 It's necesary to close the session, if we close processmaker and open again HOME and DESIGNER are blocked fix in frames implementation of the template html and css fix in file css remove file add link fix in status code fix in remove confirm fix in edege --- workflow/engine/js/src/Register.js | 2 +- workflow/engine/js/src/Sessions.js | 59 ++++++---- workflow/engine/methods/dashboard/main.php | 3 + .../engine/methods/login/authentication.php | 2 +- workflow/engine/methods/login/login.php | 2 +- workflow/engine/methods/setup/main.php | 3 + .../methods/strategicDashboard/main.php | 3 + workflow/engine/methods/users/myInfo.php | 3 + .../engine/skinEngine/neoclassic/block.php | 105 ++++++++++++++++++ .../skinEngine/neoclassic/css2/block.css | 92 +++++++++++++++ .../neoclassic/images/fa-hand-pointer-o.png | Bin 0 -> 1824 bytes .../neoclassic/images/processmaker.logow.png | Bin 0 -> 6383 bytes 12 files changed, 249 insertions(+), 25 deletions(-) create mode 100644 workflow/engine/skinEngine/neoclassic/block.php create mode 100644 workflow/engine/skinEngine/neoclassic/css2/block.css create mode 100644 workflow/engine/skinEngine/neoclassic/images/fa-hand-pointer-o.png create mode 100644 workflow/engine/skinEngine/neoclassic/images/processmaker.logow.png diff --git a/workflow/engine/js/src/Register.js b/workflow/engine/js/src/Register.js index 15336890f..4610bd73d 100644 --- a/workflow/engine/js/src/Register.js +++ b/workflow/engine/js/src/Register.js @@ -1,3 +1,3 @@ PM.Sessions.register(); -localStorage.setItem('ID_BLOCKER_MSG', PM.Sessions.getCookie('PM-Warning')); \ No newline at end of file +PM.Sessions.setLabel('ID_BLOCKER_MSG', PM.Sessions.getCookie('PM-Warning')); \ No newline at end of file diff --git a/workflow/engine/js/src/Sessions.js b/workflow/engine/js/src/Sessions.js index c0599e4a2..e4ae2f89d 100644 --- a/workflow/engine/js/src/Sessions.js +++ b/workflow/engine/js/src/Sessions.js @@ -2,40 +2,41 @@ PM.Sessions = (function () { var Sessions = function () { if (window.location.pathname.indexOf("login") === -1 && window.location.pathname.indexOf("sysLogin") === -1 && - this.getCookie('PM-TabPrimary') != 101010010) { + this.getCookie('PM-TabPrimary') !== '101010010') { + this.isClose = (this.getLabel('mainWindowClose') === "true"); + if (this.isClose && parent.parent.parent.window.name === "") { + this.register(); + } this.checkTab(); } }; Sessions.prototype.register = function () { + this.setLabel('mainWindowClose', false); window.name = this.getCookie('PM-TabPrimary'); }; Sessions.prototype.checkTab = function () { var ieVersion, - msg; - if (parent.parent.parent.window.name !== this.getCookie('PM-TabPrimary') && parent.parent.parent.window.name.indexOf(this.getCookie('PM-TabPrimary')) === -1 ) { + msg, + win; + if (window.name === this.getCookie('PM-TabPrimary')) { + this.setLabel('mainWindowClose', false); + } + if (parent.parent.parent.window.name !== this.getCookie('PM-TabPrimary') && + parent.parent.parent.window.name.indexOf(this.getCookie('PM-TabPrimary')) === -1 ) { ieVersion = this.detectBrowser(); msg = this.getLabel('ID_BLOCKER_MSG'); - + win = window.open('', '_self', ''); if (ieVersion && ieVersion <= 11) { - window.open('', '_self', ''); - window.document.execCommand('Stop'); - if (confirm(msg)) { - window.close(); - } - } else if (ieVersion && ieVersion <= 12) { - window.open('', '_self', ''); - window.document.execCommand('Stop'); - if (confirm(msg)) { - window.close(); - } + win.document.execCommand('Stop'); + win.open("/errors/block.php","_self"); + } else if (ieVersion && ieVersion <= 13) { + win.document.execCommand('Stop'); + win.open("/errors/block.php","_self"); } else { - window.open('', '_self', ''); - window.stop(); - if (confirm(msg)) { - window.close(); - } + win.stop(); + win.open("/errors/block.php","_self"); } } }; @@ -105,14 +106,28 @@ PM.Sessions = (function () { this.createCookie(name,"",-1); }; - Sessions.prototype.setLabel = function(nameLabel) { - localStorage.setItem(nameLabel, _(nameLabel)); + Sessions.prototype.setLabel = function(nameLabel, labelValue) { + localStorage.setItem(nameLabel, labelValue); }; Sessions.prototype.getLabel = function(nameLabel) { return localStorage.getItem(nameLabel); }; + Sessions.prototype.addEventHandler = function (elem, eventType, handler) { + if (elem.addEventListener) + elem.addEventListener(eventType, handler, false); + else if (elem.attachEvent) + elem.attachEvent('on' + eventType, handler); + }; + + Sessions.prototype.isClose = false; + return new Sessions(); })(); +PM.Sessions.addEventHandler(window, "unload",function () { + if (window.name === PM.Sessions.getCookie('PM-TabPrimary')){ + PM.Sessions.setLabel('mainWindowClose', true); + } +}); \ No newline at end of file diff --git a/workflow/engine/methods/dashboard/main.php b/workflow/engine/methods/dashboard/main.php index e787bb328..4f15ac770 100644 --- a/workflow/engine/methods/dashboard/main.php +++ b/workflow/engine/methods/dashboard/main.php @@ -29,5 +29,8 @@ $G_ID_MENU_SELECTED = 'DASHBOARD'; $G_PUBLISH = new Publisher(); $G_PUBLISH->AddContent( 'view', 'dashboard/load' ); +$oHeadPublisher = & headPublisher::getSingleton(); +$oHeadPublisher->addScriptFile('/jscore/src/PM.js'); +$oHeadPublisher->addScriptFile('/jscore/src/Sessions.js'); G::RenderPage( 'publish' ); diff --git a/workflow/engine/methods/login/authentication.php b/workflow/engine/methods/login/authentication.php index 2fee26017..a08c11c9a 100755 --- a/workflow/engine/methods/login/authentication.php +++ b/workflow/engine/methods/login/authentication.php @@ -413,7 +413,7 @@ try { } $configS = System::getSystemConfiguration('', '', SYS_SYS); - $activeSession = array_key_exists('session_block', $configS) ? !(int)$configS['session_block']:true; + $activeSession = isset($configS['session_block']) ? !(int)$configS['session_block']:true; if ($activeSession){ setcookie("PM-TabPrimary", 101010010, time() + (24 * 60 * 60), '/'); } diff --git a/workflow/engine/methods/login/login.php b/workflow/engine/methods/login/login.php index b9edcfc8a..e234c041e 100755 --- a/workflow/engine/methods/login/login.php +++ b/workflow/engine/methods/login/login.php @@ -338,7 +338,7 @@ $flagForgotPassword = isset($oConf->aConfig['login_enableForgotPassword']) ? $oConf->aConfig['login_enableForgotPassword'] : 'off'; -setcookie('PM-Warning', trim(G::LoadTranslation('ID_BLOCKER_MSG'),'*'), time() + (24 * 60 * 60), SYS_CURRENT_URI); +setcookie('PM-Warning', trim(G::LoadTranslation('ID_BLOCKER_MSG'), '*'), time() + (24 * 60 * 60), SYS_URI); setcookie("PM-TabPrimary", uniqid(), time() + (24 * 60 * 60), '/'); $oHeadPublisher->addScriptCode("var flagForgotPassword = '$flagForgotPassword';"); diff --git a/workflow/engine/methods/setup/main.php b/workflow/engine/methods/setup/main.php index 4e08f06d7..13a8807af 100755 --- a/workflow/engine/methods/setup/main.php +++ b/workflow/engine/methods/setup/main.php @@ -42,5 +42,8 @@ else { } $G_PUBLISH->AddContent( 'view', 'setup/main_Load' ); +$oHeadPublisher = & headPublisher::getSingleton(); +$oHeadPublisher->addScriptFile('/jscore/src/PM.js'); +$oHeadPublisher->addScriptFile('/jscore/src/Sessions.js'); G::RenderPage( 'publish' ); diff --git a/workflow/engine/methods/strategicDashboard/main.php b/workflow/engine/methods/strategicDashboard/main.php index 20277d740..e239d2420 100644 --- a/workflow/engine/methods/strategicDashboard/main.php +++ b/workflow/engine/methods/strategicDashboard/main.php @@ -34,6 +34,9 @@ $G_ID_MENU_SELECTED = 'DASHBOARD+'; $G_PUBLISH = new Publisher(); $G_PUBLISH->AddContent( 'view', 'strategicDashboard/load' ); +$oHeadPublisher = & headPublisher::getSingleton(); +$oHeadPublisher->addScriptFile('/jscore/src/PM.js'); +$oHeadPublisher->addScriptFile('/jscore/src/Sessions.js'); G::RenderPage( 'publish' ); diff --git a/workflow/engine/methods/users/myInfo.php b/workflow/engine/methods/users/myInfo.php index e9b23a245..62cf69fef 100755 --- a/workflow/engine/methods/users/myInfo.php +++ b/workflow/engine/methods/users/myInfo.php @@ -25,6 +25,9 @@ $G_MAIN_MENU = 'processmaker'; $G_ID_MENU_SELECTED = 'MY_ACCOUNT'; $G_PUBLISH = new Publisher(); +$oHeadPublisher = & headPublisher::getSingleton(); +$oHeadPublisher->addScriptFile('/jscore/src/PM.js'); +$oHeadPublisher->addScriptFile('/jscore/src/Sessions.js'); if (isset( $_GET['type'] )) { $G_PUBLISH->AddContent( 'view', 'users/usersReload' ); diff --git a/workflow/engine/skinEngine/neoclassic/block.php b/workflow/engine/skinEngine/neoclassic/block.php new file mode 100644 index 000000000..838647f2c --- /dev/null +++ b/workflow/engine/skinEngine/neoclassic/block.php @@ -0,0 +1,105 @@ + + + + + + + + + + + + + +
+ +
+ + +
+
+
+

+
+
+

Hi there, please check your tabs!

+

A browser instance of ProcessMaker is actually open. You can start only one at the time. + For more information: +

+ +
+
+
+
+
+ + + + + + + diff --git a/workflow/engine/skinEngine/neoclassic/css2/block.css b/workflow/engine/skinEngine/neoclassic/css2/block.css new file mode 100644 index 000000000..5dd5a2261 --- /dev/null +++ b/workflow/engine/skinEngine/neoclassic/css2/block.css @@ -0,0 +1,92 @@ +*, *:before, *:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + font-family: "Helvetica Neue", Roboto, Arial, "Droid Sans", sans-serif; + font-size: 13px; + font-weight: 400; + line-height: 1.471; +} + +.special-page { + color: #fff; + background: #3397e2; +} + +.container { + width: 100%; + padding: 0; +} + +.col-md-55, .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + float: left; + padding-right: 10px; + padding-left: 10px; +} + +.col-middle { + margin-top: 5%; +} + +.text-center { + text-align: center; +} + +p { + margin: 0 0 10px; +} + +img { + vertical-align: middle; + border: 0; +} + +.text-error { + background: rgba(255,255,255,0.9); + color: #000; + padding: 25px 0; + margin: 120px 0; +} + +h1 { + margin-top: 10px; + margin-bottom: 10px; + font-family: 'Montserrat', sans-serif; + font-size: 36px; + font-weight: 500; + line-height: 1.1; + color: inherit; + margin: 0.67em 0; +} +b, strong { + font-weight: bold; +} +.mid_center { + width: 370px; + margin: 0 auto; + text-align: center; + padding: 10px 20px; +} +.btn-success { + border: none; + box-shadow: none; + border-radius: 2px; + font-size: 1.4rem; + cursor: pointer; + background: #1fbc99; + border: 1px solid #1ba385; +} + +.buttons, button, .btn { + margin-right: 5px; +} +#push, #footer { + height: 60px; + text-align: center; + color: #fff; +} \ No newline at end of file diff --git a/workflow/engine/skinEngine/neoclassic/images/fa-hand-pointer-o.png b/workflow/engine/skinEngine/neoclassic/images/fa-hand-pointer-o.png new file mode 100644 index 0000000000000000000000000000000000000000..feac7ccc2dcce8117df123dcb8e74fd9e89b6894 GIT binary patch literal 1824 zcmeHH`!^E|0Nt9+yk~hdjG6b$BX3!;2SY3q=9TxnBFbdx;Z5bWG)f*JuVTbOD5B6% zOnjdu^d-U+a|d(XMoTqtA-Q3X)|03hLDPjcP&kbemU?JF5a z4+Q{#GcHbUw)^q-|M)L9AUVM9++Vkh;Yv9P03HAdfg!?B5m7O52}voKH2k29tepHI zgo2_HQW=F-)6mq?#^_@83=EA-&CD$-7XpA5M#T^L8ww751ORlUL zgk6tQa={i1%Dx8Hn{jVabKGw=Z_fpt*)y1JT7n9aP2OF5sD~ruT}V+>6El{PuU%V) z+$RQWVDtk;cgkbaa2ct<_Gb7_Q78Tip&!>io;x)9N(`Qohj=*uUGGE#j(~bPQsU)I2QxlzP`U4yJYZ zaj=;k<6Ze;A(^lh>1ZJsP^kLlVUyj~o$%g2KqzPyM%o*#fj(5(K=7q3)t^Q`P|rfS zOS}b&sEw;(FXUQR16D8+x4MW2>J2|sPgQo}=UvT!W7IKL1b^#B;f%JwJ=^1btkMKt z{b{$xwnltH()ma(To&$g!vwbBTnIiReViB*$%RID2JK~Xh=0<_@(f>|>=zHdD#h($ zAyOh-^l=*-v<8!o92?1d6~3$d>7%`_F)6hmaBve$rL1T!0Cd%*Fk3q1a~4vwjWza? zc3et5zw%rqFRg{`z(H_zw3$9j8(5ShOMX#*s-brG2!Ilo`VHR&e|7;>_v(s147iR^ zPmH)SG6-5o3(8gi|G-r-Hj|aIyvN(&8Wz}P3!8GA`;am_z{w7;EUYHS^#eB4qfK-; zg+LuC&{{wyNhiM(aVm&Y#2lTwSA#wzK&HRp66Y%SbQ;KoP+Z~bqx~>prhiv zo_q8LwT&blk`s@2bSchsidnYirQO$_6DkJo3L7qmN99^z>1!2nLj?>EN%?h{i|L}0p5F8gcbS`h=311V z-j;Omx~gAo52Ez!yRc-20;f^=MWAH}&3+*>e~@NgOyADQP?wft^oiTq-eeiCc8Fp| z^A>)Sn9hd>{8!CmuOo}{<(htqs|-U2t$FU2L;B&ua!~^-rzE_R5B*Zf2rDR_2*zD4 z545x6zhujJ7asy?*7Y<`nxGShcYO#CL@0_{SjKdxC(W(Df@<(f80%a*YZK9HxqpTL M2U`lMi4c(b5B4!E=Kufz literal 0 HcmV?d00001 diff --git a/workflow/engine/skinEngine/neoclassic/images/processmaker.logow.png b/workflow/engine/skinEngine/neoclassic/images/processmaker.logow.png new file mode 100644 index 0000000000000000000000000000000000000000..f8981bd46676063bc18c20230422ddb81c75ffea GIT binary patch literal 6383 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 literal 0 HcmV?d00001