diff --git a/wire/core/admin.php b/wire/core/admin.php index de725e6f..7253bd37 100644 --- a/wire/core/admin.php +++ b/wire/core/admin.php @@ -55,6 +55,8 @@ function _checkForHttpHostError(Config $config) { $valid = true; } else if(isset($_SERVER['SERVER_NAME']) && $httpHost === strtolower($_SERVER['SERVER_NAME'])) { $valid = true; + } else if(in_array($httpHost, $config->httpHosts)) { + $valid = true; } if(!$valid) $config->error( @@ -204,7 +206,8 @@ if($ajax) { ob_end_clean(); } -$config->js(array('httpHost', 'httpHosts'), true); +// config properties that should be mirrored to ProcessWire.config.property in JS +$config->js(array('httpHost', 'httpHosts', 'https'), true); if($controller && $controller->isAjax()) { if(empty($content) && count($notices)) $content = $controller->jsonMessage($notices->last()->text); diff --git a/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.js b/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.js index f1cd755b..0eeb7d13 100644 --- a/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.js +++ b/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.js @@ -123,7 +123,7 @@ if($a.length > 0) { $a.click(tabClick); } else { - var $a = $("") + $a = $("") .attr('href', '#' + href) .attr('id', '_' + href) // ID equal to tab content ID, but preceded with underscore .html(title) @@ -208,14 +208,13 @@ } function setTabCookie(value) { - document.cookie = options.cookieName + '=' + options.requestID + '-' + escape(value); + jQuery.cookie(options.cookieName, options.requestID + '-' + value); } function getTabCookie() { - var regex = new RegExp('(?:^|;)\\s?' + options.cookieName + '=' + options.requestID + '-(.*?)(?:;|$)','i'); - var match = document.cookie.match(regex); - match = match ? match[1] : ''; - return match; + var value = jQuery.cookie(options.cookieName); + if(!value || value.indexOf(options.requestID + '-') !== 0) return ''; + return value.substring(options.requestID.length + 1); } init(); diff --git a/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.min.js b/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.min.js index e3c26117..14a25134 100644 --- a/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.min.js +++ b/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.min.js @@ -1 +1 @@ -(function($){$.fn.WireTabs=function(customOptions){var options={rememberTabs:0,requestID:"",cookieName:"WireTabs",items:null,skipRememberTabIDs:[],itemsParent:null,ulClass:"WireTabs nav",ulAttrs:"",liActiveClass:"",aActiveClass:"on",id:""};var totalTabs=0;var cfg=ProcessWire.config.JqueryWireTabs;var keys=["rememberTabs","requestID","cookieName","liActiveClass","aActiveClass","ulClass","ulAttrs"];for(var n=0;n");$tabList.addClass(options.ulClass);if(options.id.length)$tabList.attr("id",options.id)}options.items.each(addTab);if(generate)$target.prepend($tabList);var $form=$target;var $rememberTab=null;var cookieTab=getTabCookie();if(options.rememberTabs==0){$form.submit(function(){setTabCookie(lastTabID);return true})}var href=window.location.href;var hrefMatch="";if(href.indexOf("WireTab")){var regex=new RegExp("[&;?]WireTab=([-_a-z0-9]+)","i");hrefMatch=href.match(regex);hrefMatch=hrefMatch?hrefMatch[1]:"";if(hrefMatch.length){$rememberTab=$tabList.find("a#_"+hrefMatch)}}if($rememberTab==null){var hash=document.location.hash.replace("#","");if(hash.length){$rememberTab=$tabList.find("a#_"+hash);if($rememberTab.length==0){$rememberTab=null}else{document.location.hash=""}}}if($rememberTab==null&&cookieTab.length>0&&options.rememberTabs>-1){$rememberTab=$tabList.find("a#"+cookieTab)}if($rememberTab&&$rememberTab.length>0){$rememberTab.click();if(options.rememberTabs==0)setTabCookie("");setTimeout(function(){$rememberTab.click()},200)}else{$tabList.children("li:first").children("a").click()}$(document).ready(function(){if(queueTabClick.length)$(document).trigger("wiretabclick",[queueTabClick[0],queueTabClick[1]]);queueTabClick=false})}function addTab(){totalTabs++;var $t=$(this);if(!$t.attr("id"))$t.attr("id","WireTab"+totalTabs);var title=$t.attr("title")||$t.attr("id");$t.removeAttr("title");var href=$t.attr("id");var $a=$("a#_"+href);if($a.length>0){$a.click(tabClick)}else{var $a=$("").attr("href","#"+href).attr("id","_"+href).html(title).click(tabClick);$tabList.append($("
  • ").append($a))}var tip=$t.attr("data-tooltip");if($t.hasClass("WireTabTip")||tip){if(!tip)tip=title;for(var key in cfg.tooltipAttr){var val=cfg.tooltipAttr[key];if(val.indexOf("{tip}")>-1)val=val.replace("{tip}",tip);if(key==="class"){$a.addClass(val)}else{$a.attr(key,val)}}}$t.hide()}function tabClick(){var aActiveClass=options.aActiveClass;var liActiveClass=options.liActiveClass;var $oldTab=$tabList.find("a."+aActiveClass);var $newTab=$(this);if(!$oldTab.length)$oldTab=$tabList.find("a:eq(0)");var oldTabHref=$oldTab.attr("href");var newTabHref=$newTab.attr("href");var $oldTabContent=oldTabHref&&oldTabHref.indexOf("#")===0?$(oldTabHref):null;var $newTabContent=newTabHref&&newTabHref.indexOf("#")===0?$(newTabHref):null;var newTabID=$newTab.attr("id");var oldTabID=$oldTab.attr("id");$oldTab.removeClass(aActiveClass);$newTab.addClass(aActiveClass);if(liActiveClass.length){$tabList.find("li."+liActiveClass).removeClass(liActiveClass);$newTab.closest("li").addClass(liActiveClass)}if($oldTabContent)$oldTabContent.hide();if($newTabContent){$newTabContent.show()}else if(newTabHref&&newTabHref.length){window.location.href=newTabHref;return true}if(oldTabID)$target.removeClass($oldTabContent.attr("id"));$target.addClass(newTabID);if(options.rememberTabs>-1){if(jQuery.inArray(newTabID,options.skipRememberTabIDs)!=-1)newTabID="";if(options.rememberTabs==1)setTabCookie(newTabID);lastTabID=newTabID}if(queueTabClick===false){$(document).trigger("wiretabclick",[$newTabContent,$oldTabContent])}else{queueTabClick=[$newTabContent,$oldTabContent]}return false}function setTabCookie(value){document.cookie=options.cookieName+"="+options.requestID+"-"+escape(value)}function getTabCookie(){var regex=new RegExp("(?:^|;)\\s?"+options.cookieName+"="+options.requestID+"-(.*?)(?:;|$)","i");var match=document.cookie.match(regex);match=match?match[1]:"";return match}init()})}})(jQuery); \ No newline at end of file +(function($){$.fn.WireTabs=function(customOptions){var options={rememberTabs:0,requestID:"",cookieName:"WireTabs",items:null,skipRememberTabIDs:[],itemsParent:null,ulClass:"WireTabs nav",ulAttrs:"",liActiveClass:"",aActiveClass:"on",id:""};var totalTabs=0;var cfg=ProcessWire.config.JqueryWireTabs;var keys=["rememberTabs","requestID","cookieName","liActiveClass","aActiveClass","ulClass","ulAttrs"];for(var n=0;n");$tabList.addClass(options.ulClass);if(options.id.length)$tabList.attr("id",options.id)}options.items.each(addTab);if(generate)$target.prepend($tabList);var $form=$target;var $rememberTab=null;var cookieTab=getTabCookie();if(options.rememberTabs==0){$form.submit(function(){setTabCookie(lastTabID);return true})}var href=window.location.href;var hrefMatch="";if(href.indexOf("WireTab")){var regex=new RegExp("[&;?]WireTab=([-_a-z0-9]+)","i");hrefMatch=href.match(regex);hrefMatch=hrefMatch?hrefMatch[1]:"";if(hrefMatch.length){$rememberTab=$tabList.find("a#_"+hrefMatch)}}if($rememberTab==null){var hash=document.location.hash.replace("#","");if(hash.length){$rememberTab=$tabList.find("a#_"+hash);if($rememberTab.length==0){$rememberTab=null}else{document.location.hash=""}}}if($rememberTab==null&&cookieTab.length>0&&options.rememberTabs>-1){$rememberTab=$tabList.find("a#"+cookieTab)}if($rememberTab&&$rememberTab.length>0){$rememberTab.click();if(options.rememberTabs==0)setTabCookie("");setTimeout(function(){$rememberTab.click()},200)}else{$tabList.children("li:first").children("a").click()}$(document).ready(function(){if(queueTabClick.length)$(document).trigger("wiretabclick",[queueTabClick[0],queueTabClick[1]]);queueTabClick=false})}function addTab(){totalTabs++;var $t=$(this);if(!$t.attr("id"))$t.attr("id","WireTab"+totalTabs);var title=$t.attr("title")||$t.attr("id");$t.removeAttr("title");var href=$t.attr("id");var $a=$("a#_"+href);if($a.length>0){$a.click(tabClick)}else{$a=$("").attr("href","#"+href).attr("id","_"+href).html(title).click(tabClick);$tabList.append($("
  • ").append($a))}var tip=$t.attr("data-tooltip");if($t.hasClass("WireTabTip")||tip){if(!tip)tip=title;for(var key in cfg.tooltipAttr){var val=cfg.tooltipAttr[key];if(val.indexOf("{tip}")>-1)val=val.replace("{tip}",tip);if(key==="class"){$a.addClass(val)}else{$a.attr(key,val)}}}$t.hide()}function tabClick(){var aActiveClass=options.aActiveClass;var liActiveClass=options.liActiveClass;var $oldTab=$tabList.find("a."+aActiveClass);var $newTab=$(this);if(!$oldTab.length)$oldTab=$tabList.find("a:eq(0)");var oldTabHref=$oldTab.attr("href");var newTabHref=$newTab.attr("href");var $oldTabContent=oldTabHref&&oldTabHref.indexOf("#")===0?$(oldTabHref):null;var $newTabContent=newTabHref&&newTabHref.indexOf("#")===0?$(newTabHref):null;var newTabID=$newTab.attr("id");var oldTabID=$oldTab.attr("id");$oldTab.removeClass(aActiveClass);$newTab.addClass(aActiveClass);if(liActiveClass.length){$tabList.find("li."+liActiveClass).removeClass(liActiveClass);$newTab.closest("li").addClass(liActiveClass)}if($oldTabContent)$oldTabContent.hide();if($newTabContent){$newTabContent.show()}else if(newTabHref&&newTabHref.length){window.location.href=newTabHref;return true}if(oldTabID)$target.removeClass($oldTabContent.attr("id"));$target.addClass(newTabID);if(options.rememberTabs>-1){if(jQuery.inArray(newTabID,options.skipRememberTabIDs)!=-1)newTabID="";if(options.rememberTabs==1)setTabCookie(newTabID);lastTabID=newTabID}if(queueTabClick===false){$(document).trigger("wiretabclick",[$newTabContent,$oldTabContent])}else{queueTabClick=[$newTabContent,$oldTabContent]}return false}function setTabCookie(value){jQuery.cookie(options.cookieName,options.requestID+"-"+value)}function getTabCookie(){var value=jQuery.cookie(options.cookieName);if(!value||value.indexOf(options.requestID+"-")!==0)return"";return value.substring(options.requestID.length+1)}init()})}})(jQuery); \ No newline at end of file diff --git a/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.module b/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.module index e1061b6f..121955b5 100644 --- a/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.module +++ b/wire/modules/Jquery/JqueryWireTabs/JqueryWireTabs.module @@ -18,7 +18,7 @@ class JqueryWireTabs extends ModuleJS implements ConfigurableModule { return array( 'title' => __('jQuery Wire Tabs Plugin', __FILE__), 'summary' => __('Provides a jQuery plugin for generating tabs in ProcessWire.', __FILE__), - 'version' => 109, + 'version' => 110, 'permanent' => true, ); } @@ -45,9 +45,10 @@ class JqueryWireTabs extends ModuleJS implements ConfigurableModule { 'title' => '{tip}', ), ); - + + $config = $this->wire()->config; $className = 'JqueryWireTabs'; - $settings = $this->wire('config')->get($className); + $settings = $config->get($className); if(is_array($settings)) { $settings = array_merge($defaults, $settings); @@ -56,8 +57,12 @@ class JqueryWireTabs extends ModuleJS implements ConfigurableModule { } $this->loadStyles = $settings['loadStyles']; + + /** @var JqueryCore $jQueryCore */ + $jQueryCore = $this->wire()->modules->get('JqueryCore'); + $jQueryCore->use('cookie'); - $this->wire('config')->js($className, $settings); + $config->js($className, $settings); parent::init(); }