From 25bfb8a5a6d591b62a4e55ecf231d066d48fd9c7 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Thu, 9 Mar 2017 05:44:14 -0500 Subject: [PATCH] Fix issue processwire/processwire-issues#208 where JqueryWireTabs was not properly remembering current tab between requests --- .../Jquery/JqueryWireTabs/JqueryWireTabs.js | 4 ++-- .../Jquery/JqueryWireTabs/JqueryWireTabs.min.js | 2 +- .../System/SystemUpdater/SystemUpdate16.php | 16 +++++++++------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.js b/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.js index 7023af95..e2da02a1 100644 --- a/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.js +++ b/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.js @@ -28,7 +28,7 @@ for(var n = 0; n < keys.length; n++) { var key = keys[n]; - if(cfg[key] != "undefined") options[key] = cfg[key]; + if(typeof cfg[key] != "undefined") options[key] = cfg[key]; } $.extend(options, customOptions); @@ -93,7 +93,7 @@ } } if($rememberTab == null && cookieTab.length > 0 && options.rememberTabs > -1) { - $rememberTab = $tabList.find("a#_" + cookieTab); + $rememberTab = $tabList.find("a#" + cookieTab); } if($rememberTab && $rememberTab.length > 0) { $rememberTab.click(); diff --git a/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.min.js b/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.min.js index 494d80c3..6c32adcc 100644 --- a/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.min.js +++ b/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.min.js @@ -1 +1 @@ -(function(a){a.fn.WireTabs=function(d){var e={rememberTabs:0,cookieName:"WireTabs",items:null,skipRememberTabIDs:[],itemsParent:null,ulClass:"WireTabs nav",ulAttrs:"",liActiveClass:"",aActiveClass:"on",id:""};var c=0;var b=ProcessWire.config.JqueryWireTabs;var g=["rememberTabs","cookieName","liActiveClass","aActiveClass","ulClass","ulAttrs"];for(var h=0;h");o.addClass(e.ulClass);if(e.id.length){o.attr("id",e.id)}}e.items.each(j);if(q){i.prepend(o)}var t=i;var w=null;var y=p();if(e.rememberTabs==0){t.submit(function(){k(l);return true})}var s=window.location.href;var u="";if(s.indexOf("WireTab")){var v=new RegExp("[&;?]WireTab=([-_a-z0-9]+)","i");u=s.match(v);u=u?u[1]:"";if(u.length){w=o.find("a#_"+u)}}if(w==null){var x=document.location.hash.replace("#","");if(x.length){w=o.find("a#_"+x);if(w.length==0){w=null}else{document.location.hash=""}}}if(w==null&&y.length>0&&e.rememberTabs>-1){w=o.find("a#_"+y)}if(w&&w.length>0){w.click();if(e.rememberTabs==0){k("")}setTimeout(function(){w.click()},200)}else{o.children("li:first").children("a").click()}}function j(){c++;var w=a(this);if(!w.attr("id")){w.attr("id","WireTab"+c)}var v=w.attr("title")||w.attr("id");w.removeAttr("title");var s=w.attr("id");var u=a("a#_"+s);if(u.length>0){u.click(n)}else{var u=a("").attr("href","#"+s).attr("id","_"+s).html(v).click(n);o.append(a("
  • ").append(u))}var t=w.attr("data-tooltip");if(w.hasClass("WireTabTip")||t){u.addClass("tooltip");u.attr("title",t?t:v)}w.hide()}function n(){var t=e.aActiveClass;var z=e.liActiveClass;var u=o.find("a."+t);var x=a(this);if(!u.length){u=o.find("a:eq(0)")}var w=u.attr("href");var y=x.attr("href");var v=w&&w.indexOf("#")===0?a(w):null;var s=y&&y.indexOf("#")===0?a(y):null;var B=x.attr("id");var A=u.attr("id");u.removeClass(t);x.addClass(t);if(z.length){u.closest("li").removeClass(z);x.closest("li").addClass(z)}if(v){v.hide()}if(s){s.show()}else{if(y&&y.length){window.location.href=y;return true}}if(A){i.removeClass(v.attr("id"))}i.addClass(B);if(e.rememberTabs>-1){if(jQuery.inArray(B,e.skipRememberTabIDs)!=-1){B=""}if(e.rememberTabs==1){k(B)}l=B}a(document).trigger("wiretabclick",[s,v]);return false}function k(s){document.cookie=e.cookieName+"="+escape(s)}function p(){var t=new RegExp("(?:^|;)\\s?"+e.cookieName+"=(.*?)(?:;|$)","i");var s=document.cookie.match(t);s=s?s[1]:"";return s}r()})}})(jQuery); \ No newline at end of file +(function(a){a.fn.WireTabs=function(d){var e={rememberTabs:0,cookieName:"WireTabs",items:null,skipRememberTabIDs:[],itemsParent:null,ulClass:"WireTabs nav",ulAttrs:"",liActiveClass:"",aActiveClass:"on",id:""};var c=0;var b=ProcessWire.config.JqueryWireTabs;var g=["rememberTabs","cookieName","liActiveClass","aActiveClass","ulClass","ulAttrs"];for(var h=0;h");o.addClass(e.ulClass);if(e.id.length){o.attr("id",e.id)}}e.items.each(j);if(q){i.prepend(o)}var t=i;var w=null;var y=p();if(e.rememberTabs==0){t.submit(function(){k(l);return true})}var s=window.location.href;var u="";if(s.indexOf("WireTab")){var v=new RegExp("[&;?]WireTab=([-_a-z0-9]+)","i");u=s.match(v);u=u?u[1]:"";if(u.length){w=o.find("a#_"+u)}}if(w==null){var x=document.location.hash.replace("#","");if(x.length){w=o.find("a#_"+x);if(w.length==0){w=null}else{document.location.hash=""}}}if(w==null&&y.length>0&&e.rememberTabs>-1){w=o.find("a#"+y)}if(w&&w.length>0){w.click();if(e.rememberTabs==0){k("")}setTimeout(function(){w.click()},200)}else{o.children("li:first").children("a").click()}}function j(){c++;var w=a(this);if(!w.attr("id")){w.attr("id","WireTab"+c)}var v=w.attr("title")||w.attr("id");w.removeAttr("title");var s=w.attr("id");var u=a("a#_"+s);if(u.length>0){u.click(n)}else{var u=a("").attr("href","#"+s).attr("id","_"+s).html(v).click(n);o.append(a("
  • ").append(u))}var t=w.attr("data-tooltip");if(w.hasClass("WireTabTip")||t){u.addClass("tooltip");u.attr("title",t?t:v)}w.hide()}function n(){var t=e.aActiveClass;var z=e.liActiveClass;var u=o.find("a."+t);var x=a(this);if(!u.length){u=o.find("a:eq(0)")}var w=u.attr("href");var y=x.attr("href");var v=w&&w.indexOf("#")===0?a(w):null;var s=y&&y.indexOf("#")===0?a(y):null;var B=x.attr("id");var A=u.attr("id");u.removeClass(t);x.addClass(t);if(z.length){u.closest("li").removeClass(z);x.closest("li").addClass(z)}if(v){v.hide()}if(s){s.show()}else{if(y&&y.length){window.location.href=y;return true}}if(A){i.removeClass(v.attr("id"))}i.addClass(B);if(e.rememberTabs>-1){if(jQuery.inArray(B,e.skipRememberTabIDs)!=-1){B=""}if(e.rememberTabs==1){k(B)}l=B}a(document).trigger("wiretabclick",[s,v]);return false}function k(s){document.cookie=e.cookieName+"="+escape(s)}function p(){var t=new RegExp("(?:^|;)\\s?"+e.cookieName+"=(.*?)(?:;|$)","i");var s=document.cookie.match(t);s=s?s[1]:"";return s}r()})}})(jQuery); \ No newline at end of file diff --git a/wire/modules/System/SystemUpdater/SystemUpdate16.php b/wire/modules/System/SystemUpdater/SystemUpdate16.php index e97d754f..6db5e536 100644 --- a/wire/modules/System/SystemUpdater/SystemUpdate16.php +++ b/wire/modules/System/SystemUpdater/SystemUpdate16.php @@ -13,14 +13,16 @@ class SystemUpdate16 extends SystemUpdate { public function executeAtReady() { - $admin = $this->wire('pages')->get($this->wire('config')->adminRootPageID); - $page = $this->wire('pages')->get($admin->path . 'page/list/'); - - if(!$page->id) return; - $page->of(false); - $page->removeStatus(Page::statusHidden); + $pages = $this->wire('pages'); + $admin = $pages->get($this->wire('config')->adminRootPageID); + $pageList = $pages->get($admin->path . 'page/list/'); + if(!$pageList->id) return; + $pageList->of(false); + $pageList->removeStatus(Page::statusHidden); try { - $page->save(); + $pageList->save(); + $pageAdd = $pages->get($admin->path . 'page/add/'); + if($pageAdd->id) $pages->insertBefore($pageList, $pageAdd); $this->updater->saveSystemVersion(16); } catch(\Exception $e) { // will try next time