diff --git a/wire/modules/AdminTheme/AdminThemeUikit/AdminThemeUikit.module b/wire/modules/AdminTheme/AdminThemeUikit/AdminThemeUikit.module index 63831b81..fc3fbed0 100644 --- a/wire/modules/AdminTheme/AdminThemeUikit/AdminThemeUikit.module +++ b/wire/modules/AdminTheme/AdminThemeUikit/AdminThemeUikit.module @@ -24,7 +24,18 @@ * @property int $cssVersion Current version number of core CSS/LESS files * @property string $themeName One of blank (original) or name of theme style * @property array $themeInfos where theme style files are located + * + * Settings specific to default theme + * ---------------------------------- + * @property string $defaultMainColor Main color or 'custom' (default='red') + * @property string $defaultMainColorCustom Main custom color hex code when `defaultMainColor=custom` (default='#eb1d61') + * @property string $defaultStyleName Style name, one of 'dark', 'light' or 'auto' (default='auto') + * @property array $defaultToggles Toggles for specific behaviors (default=[]) + * @property string $defaultCustomCss Custom CSS rules string (default='') + * @property string $defaultCustomCssFile URL to custom CSS file, relative to installation root (default='') * + * Hookable methods + * ---------------- * @method string renderBreadcrumbs() * @method string getUikitCSS() * @@ -121,7 +132,16 @@ class AdminThemeUikit extends AdminThemeFramework implements Module, Configurabl 'table' => 'uk-table uk-table-divider uk-table-justify uk-table-small', 'dl' => 'uk-description-list uk-description-list-divider', )); - + + // settings specific to default theme/style + $this->setArray([ + 'defaultStyleName' => 'auto', + 'defaultMainColor' => 'red', + 'defaultMainColorCustom' => '#eb1d61', + 'defaultToggles' => [], + 'defaultCustomCss' => '', + 'defaultCustomCssFile' => '', + ]); } public function wired() { @@ -190,6 +210,10 @@ class AdminThemeUikit extends AdminThemeFramework implements Module, Configurabl $this->addBodyClass('AdminThemeUikit'); } + $themeName = $this->themeName; + if(empty($themeName)) $themeName = 'Original'; + $this->addBodyClass('AdminThemeUikit' . ucfirst($themeName)); + $session->removeFor('Page', 'appendEditUrl'); /** @var JqueryUI $jqueryUI */ diff --git a/wire/modules/AdminTheme/AdminThemeUikit/scripts/main.js b/wire/modules/AdminTheme/AdminThemeUikit/scripts/main.js index b11c6511..90f174dd 100644 --- a/wire/modules/AdminTheme/AdminThemeUikit/scripts/main.js +++ b/wire/modules/AdminTheme/AdminThemeUikit/scripts/main.js @@ -437,6 +437,8 @@ var ProcessWireAdminTheme = { var $li = $("
  • ").addClass('pw-nav-dup').append($a2); $ul.append($li); if(data.add) { + var addUrl = data.add.url; + if(addUrl.indexOf('/') !== 0) addUrl = data.url + addUrl; var $li2 = $( "
  • " + "" + diff --git a/wire/modules/AdminTheme/AdminThemeUikit/scripts/main.min.js b/wire/modules/AdminTheme/AdminThemeUikit/scripts/main.min.js index a9d750a6..17fcf22a 100644 --- a/wire/modules/AdminTheme/AdminThemeUikit/scripts/main.min.js +++ b/wire/modules/AdminTheme/AdminThemeUikit/scripts/main.min.js @@ -1 +1 @@ -var ProcessWireAdminTheme={init:function(){this.setupInputfields();this.setupTooltips();this.checkLayout()},ready:function(){this.setupCloneButton();ProcessWireAdmin.init();this.setupSearch();this.setupSideNav();var $body=$("body");$(document).on("wiretabclick opened",function(e){$("body").addClass("pw-fake-resize");$(window).trigger("resize");setTimeout(function(){$("body").removeClass("pw-fake-resize")},100)});$("a.notice-remove","#notices").on("click",function(){$("#notices").slideUp("fast",function(){$(this).remove()});return false});$("a.pw-logo-link").on("click",this.logoClickEvent);$("#_ProcessPageEditView").on("click",function(e){e.stopPropagation()});var resizeTimer=null;$(window).on("resize",function(){if(resizeTimer)return;resizeTimer=setTimeout(function(){ProcessWireAdminTheme.windowResized();resizeTimer=null},250)});this.setupMasthead();this.setupWireTabs();$body.removeClass("pw-init").addClass("pw-ready")},setupWireTabs:function(){var $tabs=$(".WireTabs");if($tabs.length){$(document).on("wiretabclick",function(event,$newTabContent){ProcessWireAdminTheme.wireTabClick($newTabContent)});setTimeout(function(){var $activeTab=$tabs.children(".uk-active");if($activeTab.length){var href=$activeTab.find("a").attr("href");if(href.indexOf("#")===0){var $activeContent=$(href);if($activeContent.length)ProcessWireAdminTheme.wireTabClick($activeContent)}}},500)}},wireTabClick:function($newTabContent){if(!$newTabContent.length)return;var $header=null;var $inputfield=null;if($newTabContent.hasClass("InputfieldWrapper")){$inputfield=$newTabContent.children(".Inputfields").children(".Inputfield").first();$header=$inputfield.children(".InputfieldHeader")}else if($newTabContent.hasClass("Inputfield")){$inputfield=$newTabContent;$header=$newTabContent.children(".InputfieldHeader")}if(!$header||!$header.length)return;var skip=false;var skipClasses=["InputfieldIsPrimary","InputfieldIsWarning","InputfieldIsError","InputfieldIsHighlight","InputfieldIsSuccess"];for(var n=0;n-1){href=href.replace(/([?&]layout)=[-_a-zA-Z0-9]+/,"$1=sidenav-init")}else{href+=(href.indexOf("?")>0?"&":"?")+"layout=sidenav-init"}window.location.href=href}},windowResized:function(){if($("body").hasClass("pw-fake-resize"))return;this.setupMasthead()},setupMasthead:function(){var $masthead=$("#pw-masthead");var $mastheadMobile=$("#pw-masthead-mobile");var width=$(window).width();var height=0;var maxHeight=0;if(width>767){maxHeight=parseInt($masthead.data("pw-height"));height=$masthead.children(".pw-container").height()}else{height=999}if($masthead.hasClass("uk-hidden"))$masthead.removeClass("uk-hidden");if(height>maxHeight){if(!$masthead.hasClass("pw-masthead-hidden")){$masthead.addClass("pw-masthead-hidden").css({position:"absolute",top:"-9999px"});$mastheadMobile.removeClass("uk-hidden");$("#offcanvas-toggle").removeClass("uk-hidden")}}else{if($masthead.hasClass("pw-masthead-hidden")){$mastheadMobile.addClass("uk-hidden");$masthead.removeClass("pw-masthead-hidden").css({position:"relative",top:0});$("#offcanvas-toggle").addClass("uk-hidden")}}},setupCloneButton:function(){if($("body").is(".modal"))return;var $buttons=$("button.pw-head-button, button.head_button_clone");if($buttons.length==0)return;var $head=$("#pw-content-head-buttons");var $lastToggle=null;var $lastButton=null;var toggles={};$buttons.each(function(){var $t=$(this);var $a=$t.parent("a");var $button;if($a.length>0){$button=$t.parent("a").clone(true);$head.prepend($button)}else if($t.hasClass("pw-head-button")||$t.hasClass("head_button_clone")){$button=$t.clone(true);$button.attr("data-from_id",$t.attr("id")).attr("id",$t.attr("id")+"_copy").addClass("pw-head-button");$button.on("click",function(){$("#"+$(this).attr("data-from_id")).trigger("click");return false});if($button.hasClass("pw-button-dropdown-toggle")){var id=$button.attr("id").replace("pw-dropdown-toggle-","");toggles[id]=$button}else if($button.hasClass("pw-button-dropdown-main")){var $wrap=$("").addClass("pw-button-dropdown-wrap");$wrap.append($button).addClass("uk-float-right");$head.prepend($wrap)}else{$button.addClass("uk-float-right");$head.prepend($button)}}});for(var id in toggles){var $toggle=toggles[id];var $button=$("#"+id);$button.after($toggle)}},setupSearch:function(){$.widget("custom.adminsearchautocomplete",$.ui.autocomplete,{_renderMenu:function(ul,items){var that=this;var currentType="";ul.addClass("pw-dropdown-menu-shorter uk-nav uk-nav-default");ul.css("z-index",9999);$.each(items,function(index,item){if(item.type!=currentType){if(currentType.length){$("
  • ").appendTo(ul)}$("
  • "+item.type+"
  • ").addClass("uk-nav-header").appendTo(ul);currentType=item.type}that._renderItemData(ul,item)})},_renderItem:function(ul,item){if(item.label==item.template)item.template="";var $label=$("").text(item.label).css("margin-right","3px");if(item.unpublished)$label.css("text-decoration","line-through");if(item.hidden)$label.addClass("ui-priority-secondary");if(item.icon.length){var $icon=$("").addClass("fa fa-fw fa-"+item.icon).css("margin-right","2px");$label.prepend($icon)}var $a=$("
    ").attr("href",item.edit_url).attr("title",item.tip).append($label).append($("").text(item.template));if(item.edit_url=="#"||!item.edit_url.length){$a.removeAttr("href")}return $("
  • ").append($a).appendTo(ul)}});$(".pw-search-form").each(function(){var $form=$(this);var $input=$form.find(".pw-search-input");var position={my:"right top",at:"right bottom"};if($form.closest(".uk-offcanvas-bar").length){position.my="left top";position.at="left bottom"}$input.on("click",function(event){event.stopPropagation()});$input.adminsearchautocomplete({minLength:2,position:position,search:function(event,ui){$form.find(".pw-search-icon").addClass("uk-hidden");$form.find(".pw-spinner-icon").removeClass("uk-hidden")},open:function(event,ui){},close:function(event,ui){},source:function(request,response){if(request.term===$input.attr("data-help-term"))request.term="help";var url=$input.parents("form").attr("data-action")+"?q="+request.term;$.getJSON(url,function(data){var len=data.matches.length;if(len");$ul.append($spinner);$.getJSON(url,function(data){var $a2=$a.clone();var $icon2=$a2.find("i");if(!$icon2.length){$icon2=$("");$a2.prepend($icon2)}$icon2.attr("class","fa fa-fw fa-arrow-circle-right pw-nav-icon");$a2.removeAttr("data-json").removeAttr("class");$a2.find("small").remove();var $li=$("
  • ").addClass("pw-nav-dup").append($a2);$ul.append($li);if(data.add){var $li2=$("
  • "+""+""+data.add.label+""+"
  • ");$ul.append($li2)}$.each(data.list,function(i){if(this.label.indexOf("-1){this.label=this.label.replace(/<\/?span[^>]*>/g,"")}var icon="";var $label=$("
    "+this.label+"
    ");var label=$label.text();if(label.length>30){var $small=$label.find("small");if($small.length)$small.remove();label=$label.text();label=label.substring(0,30);var n=label.lastIndexOf(" ");if(n>3)label=label.substring(0,n)+"… ";$label.html(label);if($small.length)$label.append($small)}label=$label.html().replace(" "," ");if(this.icon)icon="";var url=this.url.indexOf("/")===0?this.url:data.url+this.url;var $a=$(""+icon+label+"");var $li=$("
  • ").append($a);if(this.navJSON!="undefined"&&this.navJSON){$a.addClass("pw-has-items pw-has-ajax-items").attr("data-json",this.navJSON);var $ul2=$("");$li.addClass("uk-parent").append($ul2);UIkit.nav($ul2,{multiple:true})}if(typeof this.className!="undefined"&&this.className&&this.className.length){$li.addClass(this.className)}if($li.hasClass("pw-nav-add")||$li.hasClass("pw-pagelist-show-all")){$ul.children(".pw-nav-dup").after($li.removeClass("separator").addClass("pw-nav-add"))}else{$ul.append($li)}});$spinner.remove();$ul.addClass("navJSON").addClass("length"+parseInt(data.list.length)).hide();if($ul.children().length)$ul.css("opacity",1).fadeIn("fast")});return false})},setupInputfields:function(){var noGrid=$("body").hasClass("AdminThemeUikitNoGrid");function initFormMarkup($target){$("form.uk-form-horizontal").each(function(){$(this).find(".InputfieldContent > .Inputfields").each(function(){var $content=$(this);$content.addClass("uk-form-vertical");$content.find(".uk-form-label").removeClass("uk-form-label");$content.find(".uk-form-controls").removeClass("uk-form-controls")});$(this).find(".InputfieldSubmit, .InputfieldButton").each(function(){$(this).find(".InputfieldContent").before("
     
    ")})});$(".InputfieldNoBorder.uk-card").removeClass("uk-card uk-card-default");$(".InputfieldIsOffset.InputfieldColumnWidthFirst").each(function(){var $t=$(this);var $f;do{$f=$t.next(".InputfieldColumnWidth");if(!$f.length||$f.hasClass("InputfieldColumnWidthFirst"))break;$f.addClass("InputfieldIsOffset");$t=$f}while(true)});$(".Inputfields").each(function(){identifyFirstLastRows($(this))});$(".ui-widget.Inputfield, .ui-widget-header.InputfieldHeader, .ui-widget-content.InputfieldContent").removeClass("ui-widget ui-widget-header ui-widget-content");$(".MarkupPagerNav:not(.uk-pagination)").each(function(){$(this).addClass("uk-pagination")});if(typeof $target=="undefined")$target=$(".InputfieldForm");var $selects=$("select:not([multiple]):not(.uk-select)",$target);$selects.addClass("uk-select")}function identifyFirstLastRows($inputfields){$(".InputfieldRowFirst",$inputfields).removeClass("InputfieldRowFirst");$(".InputfieldRowLast",$inputfields).removeClass("InputfieldRowLast");var $in=$inputfields.children(".Inputfield:not(.InputfieldStateHidden)").first();if(!$in.length)return;do{$in.addClass("InputfieldRowFirst");$in=$in.next(".Inputfield:not(.InputfieldStateHidden)")}while($in.hasClass("InputfieldColumnWidth")&&!$in.hasClass("InputfieldColumnWidthFirst"));$in=$inputfields.children(".Inputfield:last-child");while($in.length&&$in.hasClass("InputfieldStateHidden")){$in=$in.prev(".Inputfield")}do{$in.addClass("InputfieldRowLast");if(!$in.hasClass("InputfieldColumnWidth")||$in.hasClass("InputfieldColumnWidthFirst"))break;$in=$in.prev(".Inputfield:not(.InputfieldStateHidden)")}while($in.hasClass("InputfieldColumnWidth"))}var ukGridClassCache=[];function ukGridClass(width,$in){if(noGrid&&typeof $in!="undefined"){if(typeof width=="string"){$in.addClass(width)}else{$in.css("width",width+"%")}return""}var ukGridClassDefault="uk-width-1-1";var ukGridClass=ukGridClassDefault;var widthIsClass=false;if(typeof width=="string"&&typeof $in!="undefined"){ukGridClass=width;widthIsClass=true}else if(!width||width>=100){ukGridClass=ukGridClassDefault}else if(typeof ukGridClassCache[width]!="undefined"){ukGridClass="uk-width-"+ukGridClassCache[width]}else{for(var pct in ProcessWire.config.ukGridWidths){var cn=ProcessWire.config.ukGridWidths[pct];pct=parseInt(pct);if(width>=pct){ukGridClass=cn;break}}if(ukGridClass.length){ukGridClassCache[width]=ukGridClass;ukGridClass="uk-width-"+ukGridClass}}if(!widthIsClass&&ukGridClass&&ukGridClass!=ukGridClassDefault){ukGridClass+="@m"}if(typeof $in!="undefined"){if(ukGridClass&&$in.hasClass(ukGridClass)){}else{removeUkGridClass($in);if(ukGridClass)$in.addClass(ukGridClass)}}return ukGridClass}function removeUkGridClass(str){var $in=null;if(typeof str!="string"){$in=str;str=$in.attr("class")}if(str.indexOf("uk-width-")>-1){var cls=str.replace(/uk-width-(\d-\d|expand)[@smxl]*\s*/g,"");if($in!==null)$in.attr("class",cls)}return str}function updateInputfieldRow($inputfield){if(!$inputfield)return;var $inputfields=$inputfield.parent().children(".Inputfield");var $lastInputfield=null;var width=0;var widthHidden=0;var w=0;var lastW=0;var debug=false;function consoleLog(msg,$in){if(!debug)return;if(typeof $in=="undefined")$in=$inputfield;var id=$in.attr("id");id=id.replace("wrap_Inputfield_","");console.log(id+" (combined width="+width+", w="+w+"): "+msg)}function expandLastInputfield($in){if(typeof $in=="undefined")$in=$lastInputfield;if($in){if(noGrid){$in.addClass("InputfieldColumnWidthLast")}else{ukGridClass("InputfieldColumnWidthLast uk-width-expand",$in)}}}function applyHiddenInputfield(){if(debug)consoleLog("A: hidden",$inputfield);lastW+=w;width+=w;if($lastInputfield&&width>=95){if(debug)consoleLog("Updating last visible Inputfield to width="+lastW,$lastInputfield);ukGridClass(lastW,$lastInputfield);width=0;lastW=0;widthHidden=0;$lastInputfield=null}else{widthHidden+=w}}function applyFullWidthInputfield(){if(debug)consoleLog("Skipping because full-width",$inputfield);if(width<100&&$lastInputfield)expandLastInputfield($lastInputfield);$lastInputfield=null;widthHidden=0;lastW=0;width=0}$inputfields.each(function(){$inputfield=$(this);var isLastColumn=false;var isFirstColumn=false;var hasWidth=$inputfield.hasClass("InputfieldColumnWidth");var isNewRow=!hasWidth||$inputfield.hasClass("InputfieldColumnWidthFirst");if(isNewRow&&$lastInputfield&&width<100){expandLastInputfield($lastInputfield)}w=hasWidth?parseInt($inputfield.attr("data-colwidth")):0;if(!w||w>=95){applyFullWidthInputfield();return}if($inputfield.hasClass("InputfieldStateHidden")){applyHiddenInputfield();return}if(!width||width>=100){width=0;isFirstColumn=true;isLastColumn=false;if(debug)consoleLog("B: starting new row",$inputfield)}else if(width+w>100){if($lastInputfield)expandLastInputfield($lastInputfield);width=0;isFirstColumn=true;if(debug)consoleLog("C: start new row because width would exceed 100%",$inputfield)}else if(width+w==100){isLastColumn=true;if(debug)consoleLog("D: width is exactly 100%, so this is the last column",$inputfield)}else if(width+w>=95){isLastColumn=true;w=100-width;if(debug)consoleLog("D2: width is close enough to 100%, so this is the last column",$inputfield)}else{if(debug)consoleLog("E: not first or last column",$inputfield)}if(isLastColumn){$inputfield.addClass("InputfieldColumnWidthLast")}else{$inputfield.removeClass("InputfieldColumnWidthLast")}if(isFirstColumn){$inputfield.addClass("InputfieldColumnWidthFirst");widthHidden=0}else{$inputfield.removeClass("InputfieldColumnWidthFirst")}if(isLastColumn){$lastInputfield=null;width=0;lastW=0;if(widthHidden)w+=widthHidden;widthHidden=0}else{$lastInputfield=$inputfield;width+=w;lastW=w}ukGridClass(w,$inputfield)});if(width<100&&$lastInputfield)expandLastInputfield($lastInputfield)}var showHideInputfieldTimer=null;var showHideInputfield=function(event,inputfield){var $inputfield=$(inputfield);if(event.type=="showInputfield"){$inputfield.removeClass("uk-hidden")}else{$inputfield.show();$inputfield.addClass("uk-hidden")}updateInputfieldRow($inputfield);if(showHideInputfieldTimer)return;showHideInputfieldTimer=setTimeout(function(){identifyFirstLastRows($inputfield.closest(".Inputfields"));var $inputfields=$inputfield.find(".Inputfields");if($inputfields.length){$inputfields.each(function(){identifyFirstLastRows($(this))})}showHideInputfieldTimer=null},100)};$(document).on("reloaded",function(){initFormMarkup($(this))});$(document).on("hideInputfield",showHideInputfield);$(document).on("showInputfield",showHideInputfield);$(document).on("columnWidth",".Inputfield",function(e,width){ukGridClass(width,$(this));return false});$("body").addClass("InputfieldColumnWidthsInit");if(ProcessWire.config.adminTheme){Inputfields.toggleBehavior=ProcessWire.config.adminTheme.toggleBehavior}initFormMarkup()},setupTooltips:function(){$(".tooltip, .pw-tooltip").each(function(){$(this).removeClass("tooltip pw-tooltip");UIkit.tooltip($(this))})},linkTargetMainMouseoverEvent:function(){var $a=$(this);var href=$a.attr("href");if(href.length<2)return;if($a.attr("target"))return;if($a.parent("li").hasClass("PageListActionView")){$a.attr("target","_top")}else{$a.attr("target","main")}},logoClickEvent:function(){if($("body").hasClass("pw-layout-sidenav-init")){if($("#pw-admin-side").length){toggleSidebarPane()}else{UIkit.toggle("#offcanvas-nav").toggle()}}else if(ProcessWire.config.adminTheme.logoAction==1){UIkit.toggle("#offcanvas-nav").toggle()}else{return true}return false}};$(document).ready(function(){ProcessWireAdminTheme.ready()}); \ No newline at end of file +var ProcessWireAdminTheme={init:function(){this.setupInputfields();this.setupTooltips();this.checkLayout()},ready:function(){this.setupCloneButton();ProcessWireAdmin.init();this.setupSearch();this.setupSideNav();var $body=$("body");$(document).on("wiretabclick opened",function(e){$("body").addClass("pw-fake-resize");$(window).trigger("resize");setTimeout(function(){$("body").removeClass("pw-fake-resize")},100)});$("a.notice-remove","#notices").on("click",function(){$("#notices").slideUp("fast",function(){$(this).remove()});return false});$("a.pw-logo-link").on("click",this.logoClickEvent);$("#_ProcessPageEditView").on("click",function(e){e.stopPropagation()});var resizeTimer=null;$(window).on("resize",function(){if(resizeTimer)return;resizeTimer=setTimeout(function(){ProcessWireAdminTheme.windowResized();resizeTimer=null},250)});this.setupMasthead();this.setupWireTabs();$body.removeClass("pw-init").addClass("pw-ready")},setupWireTabs:function(){var $tabs=$(".WireTabs");if($tabs.length){$(document).on("wiretabclick",function(event,$newTabContent){ProcessWireAdminTheme.wireTabClick($newTabContent)});setTimeout(function(){var $activeTab=$tabs.children(".uk-active");if($activeTab.length){var href=$activeTab.find("a").attr("href");if(href.indexOf("#")===0){var $activeContent=$(href);if($activeContent.length)ProcessWireAdminTheme.wireTabClick($activeContent)}}},500)}},wireTabClick:function($newTabContent){if(!$newTabContent.length)return;var $header=null;var $inputfield=null;if($newTabContent.hasClass("InputfieldWrapper")){$inputfield=$newTabContent.children(".Inputfields").children(".Inputfield").first();$header=$inputfield.children(".InputfieldHeader")}else if($newTabContent.hasClass("Inputfield")){$inputfield=$newTabContent;$header=$newTabContent.children(".InputfieldHeader")}if(!$header||!$header.length)return;var skip=false;var skipClasses=["InputfieldIsPrimary","InputfieldIsWarning","InputfieldIsError","InputfieldIsHighlight","InputfieldIsSuccess"];for(var n=0;n-1){href=href.replace(/([?&]layout)=[-_a-zA-Z0-9]+/,"$1=sidenav-init")}else{href+=(href.indexOf("?")>0?"&":"?")+"layout=sidenav-init"}window.location.href=href}},windowResized:function(){if($("body").hasClass("pw-fake-resize"))return;this.setupMasthead()},setupMasthead:function(){var $masthead=$("#pw-masthead");var $mastheadMobile=$("#pw-masthead-mobile");var width=$(window).width();var height=0;var maxHeight=0;if(width>767){maxHeight=parseInt($masthead.data("pw-height"));height=$masthead.children(".pw-container").height()}else{height=999}if($masthead.hasClass("uk-hidden"))$masthead.removeClass("uk-hidden");if(height>maxHeight){if(!$masthead.hasClass("pw-masthead-hidden")){$masthead.addClass("pw-masthead-hidden").css({position:"absolute",top:"-9999px"});$mastheadMobile.removeClass("uk-hidden");$("#offcanvas-toggle").removeClass("uk-hidden")}}else{if($masthead.hasClass("pw-masthead-hidden")){$mastheadMobile.addClass("uk-hidden");$masthead.removeClass("pw-masthead-hidden").css({position:"relative",top:0});$("#offcanvas-toggle").addClass("uk-hidden")}}},setupCloneButton:function(){if($("body").is(".modal"))return;var $buttons=$("button.pw-head-button, button.head_button_clone");if($buttons.length==0)return;var $head=$("#pw-content-head-buttons");var $lastToggle=null;var $lastButton=null;var toggles={};$buttons.each(function(){var $t=$(this);var $a=$t.parent("a");var $button;if($a.length>0){$button=$t.parent("a").clone(true);$head.prepend($button)}else if($t.hasClass("pw-head-button")||$t.hasClass("head_button_clone")){$button=$t.clone(true);$button.attr("data-from_id",$t.attr("id")).attr("id",$t.attr("id")+"_copy").addClass("pw-head-button");$button.on("click",function(){$("#"+$(this).attr("data-from_id")).trigger("click");return false});if($button.hasClass("pw-button-dropdown-toggle")){var id=$button.attr("id").replace("pw-dropdown-toggle-","");toggles[id]=$button}else if($button.hasClass("pw-button-dropdown-main")){var $wrap=$("").addClass("pw-button-dropdown-wrap");$wrap.append($button).addClass("uk-float-right");$head.prepend($wrap)}else{$button.addClass("uk-float-right");$head.prepend($button)}}});for(var id in toggles){var $toggle=toggles[id];var $button=$("#"+id);$button.after($toggle)}},setupSearch:function(){$.widget("custom.adminsearchautocomplete",$.ui.autocomplete,{_renderMenu:function(ul,items){var that=this;var currentType="";ul.addClass("pw-dropdown-menu-shorter uk-nav uk-nav-default");ul.css("z-index",9999);$.each(items,function(index,item){if(item.type!=currentType){if(currentType.length){$("
  • ").appendTo(ul)}$("
  • "+item.type+"
  • ").addClass("uk-nav-header").appendTo(ul);currentType=item.type}that._renderItemData(ul,item)})},_renderItem:function(ul,item){if(item.label==item.template)item.template="";var $label=$("").text(item.label).css("margin-right","3px");if(item.unpublished)$label.css("text-decoration","line-through");if(item.hidden)$label.addClass("ui-priority-secondary");if(item.icon.length){var $icon=$("").addClass("fa fa-fw fa-"+item.icon).css("margin-right","2px");$label.prepend($icon)}var $a=$("").attr("href",item.edit_url).attr("title",item.tip).append($label).append($("").text(item.template));if(item.edit_url=="#"||!item.edit_url.length){$a.removeAttr("href")}return $("
  • ").append($a).appendTo(ul)}});$(".pw-search-form").each(function(){var $form=$(this);var $input=$form.find(".pw-search-input");var position={my:"right top",at:"right bottom"};if($form.closest(".uk-offcanvas-bar").length){position.my="left top";position.at="left bottom"}$input.on("click",function(event){event.stopPropagation()});$input.adminsearchautocomplete({minLength:2,position:position,search:function(event,ui){$form.find(".pw-search-icon").addClass("uk-hidden");$form.find(".pw-spinner-icon").removeClass("uk-hidden")},open:function(event,ui){},close:function(event,ui){},source:function(request,response){if(request.term===$input.attr("data-help-term"))request.term="help";var url=$input.parents("form").attr("data-action")+"?q="+request.term;$.getJSON(url,function(data){var len=data.matches.length;if(len");$ul.append($spinner);$.getJSON(url,function(data){var $a2=$a.clone();var $icon2=$a2.find("i");if(!$icon2.length){$icon2=$("");$a2.prepend($icon2)}$icon2.attr("class","fa fa-fw fa-arrow-circle-right pw-nav-icon");$a2.removeAttr("data-json").removeAttr("class");$a2.find("small").remove();var $li=$("
  • ").addClass("pw-nav-dup").append($a2);$ul.append($li);if(data.add){var addUrl=data.add.url;if(addUrl.indexOf("/")!==0)addUrl=data.url+addUrl;var $li2=$("
  • "+""+""+data.add.label+""+"
  • ");$ul.append($li2)}$.each(data.list,function(i){if(this.label.indexOf("-1){this.label=this.label.replace(/<\/?span[^>]*>/g,"")}var icon="";var $label=$("
    "+this.label+"
    ");var label=$label.text();if(label.length>30){var $small=$label.find("small");if($small.length)$small.remove();label=$label.text();label=label.substring(0,30);var n=label.lastIndexOf(" ");if(n>3)label=label.substring(0,n)+"… ";$label.html(label);if($small.length)$label.append($small)}label=$label.html().replace(" "," ");if(this.icon)icon="";var url=this.url.indexOf("/")===0?this.url:data.url+this.url;var $a=$(""+icon+label+"");var $li=$("
  • ").append($a);if(this.navJSON!="undefined"&&this.navJSON){$a.addClass("pw-has-items pw-has-ajax-items").attr("data-json",this.navJSON);var $ul2=$("
      ");$li.addClass("uk-parent").append($ul2);UIkit.nav($ul2,{multiple:true})}if(typeof this.className!="undefined"&&this.className&&this.className.length){$li.addClass(this.className)}if($li.hasClass("pw-nav-add")||$li.hasClass("pw-pagelist-show-all")){$ul.children(".pw-nav-dup").after($li.removeClass("separator").addClass("pw-nav-add"))}else{$ul.append($li)}});$spinner.remove();$ul.addClass("navJSON").addClass("length"+parseInt(data.list.length)).hide();if($ul.children().length)$ul.css("opacity",1).fadeIn("fast")});return false})},setupInputfields:function(){var noGrid=$("body").hasClass("AdminThemeUikitNoGrid");function initFormMarkup($target){$("form.uk-form-horizontal").each(function(){$(this).find(".InputfieldContent > .Inputfields").each(function(){var $content=$(this);$content.addClass("uk-form-vertical");$content.find(".uk-form-label").removeClass("uk-form-label");$content.find(".uk-form-controls").removeClass("uk-form-controls")});$(this).find(".InputfieldSubmit, .InputfieldButton").each(function(){$(this).find(".InputfieldContent").before("
       
      ")})});$(".InputfieldNoBorder.uk-card").removeClass("uk-card uk-card-default");$(".InputfieldIsOffset.InputfieldColumnWidthFirst").each(function(){var $t=$(this);var $f;do{$f=$t.next(".InputfieldColumnWidth");if(!$f.length||$f.hasClass("InputfieldColumnWidthFirst"))break;$f.addClass("InputfieldIsOffset");$t=$f}while(true)});$(".Inputfields").each(function(){identifyFirstLastRows($(this))});$(".ui-widget.Inputfield, .ui-widget-header.InputfieldHeader, .ui-widget-content.InputfieldContent").removeClass("ui-widget ui-widget-header ui-widget-content");$(".MarkupPagerNav:not(.uk-pagination)").each(function(){$(this).addClass("uk-pagination")});if(typeof $target=="undefined")$target=$(".InputfieldForm");var $selects=$("select:not([multiple]):not(.uk-select)",$target);$selects.addClass("uk-select")}function identifyFirstLastRows($inputfields){$(".InputfieldRowFirst",$inputfields).removeClass("InputfieldRowFirst");$(".InputfieldRowLast",$inputfields).removeClass("InputfieldRowLast");var $in=$inputfields.children(".Inputfield:not(.InputfieldStateHidden)").first();if(!$in.length)return;do{$in.addClass("InputfieldRowFirst");$in=$in.next(".Inputfield:not(.InputfieldStateHidden)")}while($in.hasClass("InputfieldColumnWidth")&&!$in.hasClass("InputfieldColumnWidthFirst"));$in=$inputfields.children(".Inputfield:last-child");while($in.length&&$in.hasClass("InputfieldStateHidden")){$in=$in.prev(".Inputfield")}do{$in.addClass("InputfieldRowLast");if(!$in.hasClass("InputfieldColumnWidth")||$in.hasClass("InputfieldColumnWidthFirst"))break;$in=$in.prev(".Inputfield:not(.InputfieldStateHidden)")}while($in.hasClass("InputfieldColumnWidth"))}var ukGridClassCache=[];function ukGridClass(width,$in){if(noGrid&&typeof $in!="undefined"){if(typeof width=="string"){$in.addClass(width)}else{$in.css("width",width+"%")}return""}var ukGridClassDefault="uk-width-1-1";var ukGridClass=ukGridClassDefault;var widthIsClass=false;if(typeof width=="string"&&typeof $in!="undefined"){ukGridClass=width;widthIsClass=true}else if(!width||width>=100){ukGridClass=ukGridClassDefault}else if(typeof ukGridClassCache[width]!="undefined"){ukGridClass="uk-width-"+ukGridClassCache[width]}else{for(var pct in ProcessWire.config.ukGridWidths){var cn=ProcessWire.config.ukGridWidths[pct];pct=parseInt(pct);if(width>=pct){ukGridClass=cn;break}}if(ukGridClass.length){ukGridClassCache[width]=ukGridClass;ukGridClass="uk-width-"+ukGridClass}}if(!widthIsClass&&ukGridClass&&ukGridClass!=ukGridClassDefault){ukGridClass+="@m"}if(typeof $in!="undefined"){if(ukGridClass&&$in.hasClass(ukGridClass)){}else{removeUkGridClass($in);if(ukGridClass)$in.addClass(ukGridClass)}}return ukGridClass}function removeUkGridClass(str){var $in=null;if(typeof str!="string"){$in=str;str=$in.attr("class")}if(str.indexOf("uk-width-")>-1){var cls=str.replace(/uk-width-(\d-\d|expand)[@smxl]*\s*/g,"");if($in!==null)$in.attr("class",cls)}return str}function updateInputfieldRow($inputfield){if(!$inputfield)return;var $inputfields=$inputfield.parent().children(".Inputfield");var $lastInputfield=null;var width=0;var widthHidden=0;var w=0;var lastW=0;var debug=false;function consoleLog(msg,$in){if(!debug)return;if(typeof $in=="undefined")$in=$inputfield;var id=$in.attr("id");id=id.replace("wrap_Inputfield_","");console.log(id+" (combined width="+width+", w="+w+"): "+msg)}function expandLastInputfield($in){if(typeof $in=="undefined")$in=$lastInputfield;if($in){if(noGrid){$in.addClass("InputfieldColumnWidthLast")}else{ukGridClass("InputfieldColumnWidthLast uk-width-expand",$in)}}}function applyHiddenInputfield(){if(debug)consoleLog("A: hidden",$inputfield);lastW+=w;width+=w;if($lastInputfield&&width>=95){if(debug)consoleLog("Updating last visible Inputfield to width="+lastW,$lastInputfield);ukGridClass(lastW,$lastInputfield);width=0;lastW=0;widthHidden=0;$lastInputfield=null}else{widthHidden+=w}}function applyFullWidthInputfield(){if(debug)consoleLog("Skipping because full-width",$inputfield);if(width<100&&$lastInputfield)expandLastInputfield($lastInputfield);$lastInputfield=null;widthHidden=0;lastW=0;width=0}$inputfields.each(function(){$inputfield=$(this);var isLastColumn=false;var isFirstColumn=false;var hasWidth=$inputfield.hasClass("InputfieldColumnWidth");var isNewRow=!hasWidth||$inputfield.hasClass("InputfieldColumnWidthFirst");if(isNewRow&&$lastInputfield&&width<100){expandLastInputfield($lastInputfield)}w=hasWidth?parseInt($inputfield.attr("data-colwidth")):0;if(!w||w>=95){applyFullWidthInputfield();return}if($inputfield.hasClass("InputfieldStateHidden")){applyHiddenInputfield();return}if(!width||width>=100){width=0;isFirstColumn=true;isLastColumn=false;if(debug)consoleLog("B: starting new row",$inputfield)}else if(width+w>100){if($lastInputfield)expandLastInputfield($lastInputfield);width=0;isFirstColumn=true;if(debug)consoleLog("C: start new row because width would exceed 100%",$inputfield)}else if(width+w==100){isLastColumn=true;if(debug)consoleLog("D: width is exactly 100%, so this is the last column",$inputfield)}else if(width+w>=95){isLastColumn=true;w=100-width;if(debug)consoleLog("D2: width is close enough to 100%, so this is the last column",$inputfield)}else{if(debug)consoleLog("E: not first or last column",$inputfield)}if(isLastColumn){$inputfield.addClass("InputfieldColumnWidthLast")}else{$inputfield.removeClass("InputfieldColumnWidthLast")}if(isFirstColumn){$inputfield.addClass("InputfieldColumnWidthFirst");widthHidden=0}else{$inputfield.removeClass("InputfieldColumnWidthFirst")}if(isLastColumn){$lastInputfield=null;width=0;lastW=0;if(widthHidden)w+=widthHidden;widthHidden=0}else{$lastInputfield=$inputfield;width+=w;lastW=w}ukGridClass(w,$inputfield)});if(width<100&&$lastInputfield)expandLastInputfield($lastInputfield)}var showHideInputfieldTimer=null;var showHideInputfield=function(event,inputfield){var $inputfield=$(inputfield);if(event.type=="showInputfield"){$inputfield.removeClass("uk-hidden")}else{$inputfield.show();$inputfield.addClass("uk-hidden")}updateInputfieldRow($inputfield);if(showHideInputfieldTimer)return;showHideInputfieldTimer=setTimeout(function(){identifyFirstLastRows($inputfield.closest(".Inputfields"));var $inputfields=$inputfield.find(".Inputfields");if($inputfields.length){$inputfields.each(function(){identifyFirstLastRows($(this))})}showHideInputfieldTimer=null},100)};$(document).on("reloaded",function(){initFormMarkup($(this))});$(document).on("hideInputfield",showHideInputfield);$(document).on("showInputfield",showHideInputfield);$(document).on("columnWidth",".Inputfield",function(e,width){ukGridClass(width,$(this));return false});$("body").addClass("InputfieldColumnWidthsInit");if(ProcessWire.config.adminTheme){Inputfields.toggleBehavior=ProcessWire.config.adminTheme.toggleBehavior}initFormMarkup()},setupTooltips:function(){$(".tooltip, .pw-tooltip").each(function(){$(this).removeClass("tooltip pw-tooltip");UIkit.tooltip($(this))})},linkTargetMainMouseoverEvent:function(){var $a=$(this);var href=$a.attr("href");if(href.length<2)return;if($a.attr("target"))return;if($a.parent("li").hasClass("PageListActionView")){$a.attr("target","_top")}else{$a.attr("target","main")}},logoClickEvent:function(){if($("body").hasClass("pw-layout-sidenav-init")){if($("#pw-admin-side").length){toggleSidebarPane()}else{UIkit.toggle("#offcanvas-nav").toggle()}}else if(ProcessWire.config.adminTheme.logoAction==1){UIkit.toggle("#offcanvas-nav").toggle()}else{return true}return false}};$(document).ready(function(){ProcessWireAdminTheme.ready()}); \ No newline at end of file diff --git a/wire/modules/Process/ProcessPageList/ProcessPageList.module b/wire/modules/Process/ProcessPageList/ProcessPageList.module index 80e3e178..bd2b73da 100644 --- a/wire/modules/Process/ProcessPageList/ProcessPageList.module +++ b/wire/modules/Process/ProcessPageList/ProcessPageList.module @@ -721,12 +721,19 @@ class ProcessPageList extends Process implements ConfigurableModule { } if($parent->addable()) { - $data['list'][] = array( + $themeName = $this->wire()->adminTheme->get('themeName'); + $add = [ 'url' => $urls->admin . "page/add/?parent_id=$parentID", 'label' => __('Add New', '/wire/templates-admin/default.php'), 'icon' => 'plus-circle', - 'className' => 'separator pw-nav-add', - ); + 'className' => 'pw-nav-add add', + ]; + if(empty($themeName) || $themeName === 'original') { + $add['className'] = 'separator pw-nav-add'; + $data['list'][] = $add; + } else { + $data['add'] = $add; + } } if($config->ajax) header("Content-Type: application/json"); diff --git a/wire/templates-admin/scripts/main.js b/wire/templates-admin/scripts/main.js index 118f541e..ba04aadd 100644 --- a/wire/templates-admin/scripts/main.js +++ b/wire/templates-admin/scripts/main.js @@ -323,9 +323,11 @@ var ProcessWireAdmin = { } if(data.add) { + var addUrl = data.add.url; + if(addUrl.indexOf('/') !== 0) addUrl = data.url + addUrl; var $li = $( "
    • " + - "" + + "" + "" + data.add.label + "" + "
    • " diff --git a/wire/templates-admin/scripts/main.min.js b/wire/templates-admin/scripts/main.min.js index f4e13d1a..62e88b82 100644 --- a/wire/templates-admin/scripts/main.min.js +++ b/wire/templates-admin/scripts/main.min.js @@ -1 +1 @@ -var ProcessWireAdmin={init:function(){this.setupButtonStates();this.setupTooltips();this.setupDropdowns();this.setupNotices()},setupNotices:function(){$(".pw-notice-group-toggle").on("click",function(){var $parent=$(this).closest(".pw-notice-group-parent");var $children=$parent.nextUntil(".pw-notice-group-parent");if($parent.hasClass("pw-notice-group-open")){$parent.removeClass("pw-notice-group-open");$children.slideUp("fast")}else{$parent.addClass("pw-notice-group-open");$children.slideDown("fast")}$parent.find("i[data-toggle]").each(function(){$(this).toggleClass($(this).attr("data-toggle"))});return false})},setupTooltips:function(){$("a.tooltip, .pw-tooltip").tooltip({position:{my:"center bottom",at:"center top"}}).on("mouseenter",function(){var $a=$(this);if($a.is("a")){$a.addClass("ui-state-hover")}else{$a.data("pw-tooltip-cursor",$a.css("cursor"));$a.css("cursor","pointer")}$a.addClass("pw-tooltip-hover");$a.css("cursor","pointer")}).on("mouseleave",function(){var $a=$(this);$a.removeClass("pw-tooltip-hover ui-state-hover");if(!$a.is("a")){$a.css("cursor",$a.data("pw-tooltip-cursor"))}})},setupButtonStates:function(){$(document).on("mouseover",".ui-button",function(){var $t=$(this);$t.removeClass("ui-state-default").addClass("ui-state-hover");if($t.hasClass("ui-priority-secondary"))$t.toggleClass("xui-priority-secondary ui-priority-secondary");if($t.hasClass("pw-button-dropdown-main")){$t.siblings("#pw-dropdown-toggle-"+$t.attr("id")).trigger("mouseover")}}).on("mouseout",".ui-button",function(){var $t=$(this);$t.removeClass("ui-state-hover").addClass("ui-state-default");if($t.hasClass("xui-priority-secondary"))$t.toggleClass("xui-priority-secondary ui-priority-secondary");if($t.hasClass("pw-button-dropdown-main")){$t.siblings("#pw-dropdown-toggle-"+$t.attr("id")).trigger("mouseout")}}).on("click",".ui-button",function(){$(this).removeClass("ui-state-default").addClass("ui-state-active")})},setupDropdowns:function(){var dropdownPositionsMonitored=false;var hoveredDropdownAjaxItem;function setupDropdown(){var $a=$(this);var $ul;if($a.hasClass("pw-dropdown-init"))return;if($a.attr("data-pw-dropdown")){$ul=$a.siblings($a.attr("data-pw-dropdown"));if(!$ul.length)$ul=$($a.attr("data-pw-dropdown"))}else{$ul=$a.siblings(".pw-dropdown-menu")}$ul.hide();$a.data("pw-dropdown-ul",$ul);if($a.is("button")){if($a.find(".ui-button-text").length==0)$a.button();if($a.attr("type")=="submit"){$a.on("click",function(){$a.addClass("pw-dropdown-disabled");setTimeout(function(){$a.removeClass("pw-dropdown-disabled")},2e3)})}}else{}$ul.find("a").on("click",function(){$ul.hide();return true});$ul.find(".pw-has-items").each(function(){var $icon=$("");$(this).prepend($icon)});if($a.hasClass("pw-dropdown-toggle-click")){var timer=null;function mouseleaver(){if(timer)clearTimeout(timer);timer=setTimeout(function(){if($ul.length&&$ul[0].matches(":hover")||$a.length&&$a[0].matches(":hover")){return}$ul.fadeOut("fast");$a.removeClass("hover pw-dropdown-toggle-open")},1e3)}$ul.on("mouseleave",mouseleaver);$a.on("mouseleave",mouseleaver)}else{$ul.on("mouseleave",function(){$ul.hide();$a.removeClass("hover")})}$a.addClass("pw-dropdown-init")}function mouseenterDropdownToggle(e){var $a=$(this);var $ul=$a.data("pw-dropdown-ul");var delay=$a.hasClass("pw-dropdown-toggle-delay")?700:0;var lastOffset=$ul.data("pw-dropdown-last-offset");var timeout=$a.data("pw-dropdown-timeout");if($a.hasClass("pw-dropdown-toggle-click")){if(e.type!="mousedown")return false;$a.removeClass("ui-state-focus");if($a.hasClass("pw-dropdown-toggle-open")){$a.removeClass("pw-dropdown-toggle-open hover");$ul.hide();return}else{$(".pw-dropdown-toggle-open").each(function(){var $a=$(this);var $ul=$a.data("pw-dropdown-ul");$ul.trigger("mouseleave")});$a.addClass("pw-dropdown-toggle-open")}}if($a.hasClass("pw-dropdown-disabled"))return;timeout=setTimeout(function(){if($a.hasClass("pw-dropdown-disabled"))return;var offset=$a.offset();if(lastOffset!=null){if(offset.top!=lastOffset.top||offset.left!=lastOffset.left){$ul.menu("destroy").removeClass("pw-dropdown-ready")}}if(!$ul.hasClass("pw-dropdown-ready")){$ul.css("position","absolute");$ul.prependTo($("body")).addClass("pw-dropdown-ready").menu();var position={my:"right top",at:"right bottom",of:$a};var my=$ul.attr("data-my");var at=$ul.attr("data-at");if(my)position.my=my;if(at)position.at=at;$ul.position(position).css("z-index",200)}$a.addClass("hover");$ul.show();$ul.trigger("pw-show-dropdown",[$ul]);$ul.data("pw-dropdown-last-offset",offset)},delay);$a.data("pw-dropdown-timeout",timeout)}function mouseleaveDropdownToggle(){var $a=$(this);var $ul=$a.data("pw-dropdown-ul");var timeout=$a.data("pw-dropdown-timeout");if(timeout)clearTimeout(timeout);setTimeout(function(){var hovered=$ul.filter(function(){return $(this).is(":hover")});if(hovered.length)return;$ul.find("ul").hide();$ul.hide();$a.removeClass("hover")},50);if($("body").hasClass("touch-device")){$(this).attr("data-touchCnt",0)}}function hoverDropdownAjaxItem($a){var fromAttr=$a.attr("data-from");if(!fromAttr)return;var $from=$("#"+$a.attr("data-from"));if($from.length>0)setTimeout(function(){var fromLeft=$from.offset().left;var $ul=$a.closest("li").parent("ul");var thisLeft=$ul.offset().left;if(thisLeft!=fromLeft)$ul.css("left",fromLeft)},500)}function mouseenterDropdownAjaxItem(){var $a=$(this);hoveredDropdownAjaxItem=$a;setTimeout(function(){if(!hoveredDropdownAjaxItem)return;if(hoveredDropdownAjaxItem!=$a)return;$a.addClass("pw-ajax-items-loaded");var url=$a.attr("data-json");var $ul=$a.siblings("ul");var setupDropdownHover=false;var $itemsIcon=$a.children(".pw-has-items-icon");$itemsIcon.removeClass("fa-angle-right").addClass("fa-spinner fa-spin");$ul.css("opacity",0);$.getJSON(url,function(data){$itemsIcon.removeClass("fa-spinner fa-spin").addClass("fa-angle-right");if(!data.list){console.log(data);return}if(!dropdownPositionsMonitored&&data.list.length>10){dropdownPositionsMonitored=true;setupDropdownHover=true;$(document).on("mouseenter","ul.pw-dropdown-menu a",function(){hoverDropdownAjaxItem($(this))})}if(data.add){var $li=$("
    • "+""+""+data.add.label+""+"
    • ");$ul.append($li)}var numSubnavJSON=0;$.each(data.list,function(n){var icon="";var url="";if(this.icon){icon=""}if(this.url=="navJSON"){}else if(this.url.indexOf("/")===0){url=this.url}else if(this.url.length){url=data.url+this.url}var $li=$("
    • ");var $a=$(""+icon+this.label+"");var $ulSub=null;if(url.length)$a.attr("href",url);if(this.navJSON){$a.attr("data-json",this.navJSON).addClass("pw-has-items pw-has-ajax-items");$ulSub=$("
        ").addClass("subnavJSON");var $icon=$("");$a.prepend($icon);$li.prepend($a).append($ulSub);numSubnavJSON++}else{$li.prepend($a)}if(typeof this.className!="undefined"&&this.className&&this.className.length){$li.addClass(this.className)}$ul.append($li)});$ul.addClass("navJSON").addClass("length"+parseInt(data.list.length)).hide();if($ul.children().length)$ul.css("opacity",1);if(hoveredDropdownAjaxItem==$a)$ul.fadeIn("fast");if(numSubnavJSON){var numParents=$ul.parents("ul").length;$ul.find("ul.subnavJSON").css("z-index",200+numParents);$ul.menu({})}hoverDropdownAjaxItem($a)})},250)}var $lastTouchClickItem=null;function touchClick(e){var $item=$(this);var touchCnt=$item.attr("data-touchCnt");if($lastTouchClickItem&&$item.attr("id")!=$lastTouchClickItem.attr("id")){$lastTouchClickItem.attr("data-touchCnt",0)}$lastTouchClickItem=$item;if(!touchCnt)touchCnt=0;touchCnt++;$item.attr("data-touchCnt",touchCnt);if(touchCnt==2||$item.hasClass("pw-has-ajax-items")&&!$item.closest("ul").hasClass("topnav")){var href=$item.attr("href");$item.attr("data-touchCnt",0);if(typeof href!="undefined"&&href.length>1){return true}else{$item.trigger("mouseleave")}}else{var datafrom=$item.attr("data-from");if(typeof datafrom=="undefined")var datafrom="";if(datafrom.indexOf("topnav")>-1){var from=datafrom.replace("topnav-","")+"-";$("a.pw-dropdown-toggle.hover:not('."+from+"')").attr("data-touchCnt",0).trigger("mouseleave")}$item.mouseenter()}return false}function init(){if($("body").hasClass("touch-device")){$(document).on("touchstart","a.pw-dropdown-toggle, a.pw-has-items",touchClick)}$(".pw-dropdown-menu").on("click","a:not(.pw-modal)",function(e){e.stopPropagation()});$(".pw-dropdown-toggle").each(setupDropdown);$(".InputfieldForm").on("reloaded",function(){$(".pw-dropdown-toggle:not(.pw-dropdown-init)").each(setupDropdown)});$(document).on("mousedown",".pw-dropdown-toggle-click",mouseenterDropdownToggle).on("mouseenter",".pw-dropdown-toggle:not(.pw-dropdown-toggle-click)",mouseenterDropdownToggle).on("mouseleave",".pw-dropdown-toggle:not(.pw-dropdown-toggle-click)",mouseleaveDropdownToggle).on("mouseenter",".pw-dropdown-menu a.pw-has-ajax-items:not(.pw-ajax-items-loaded)",mouseenterDropdownAjaxItem).on("mouseleave",".pw-dropdown-menu a.pw-has-ajax-items",function(){hoveredDropdownAjaxItem=null})}init()}};if(typeof ProcessWire!="undefined"){ProcessWire.confirm=function(message,funcOk,funcCancel,allowMarkup){var settings={};if(typeof message==="object"){settings=message;if(typeof settings.funcOk!="undefined")funcOk=settings.funcOk;if(typeof settings.funcCancel!="undefined")funcCancel=settings.funcCancel;if(typeof settings.allowMarkup!="undefined")allowMarkup=settings.allowMarkup;message=settings.message}if(typeof allowMarkup=="undefined")allowMarkup=false;if(typeof UIkit!="undefined"){var messageHtml="";if(allowMarkup){messageHtml=message;message="\x3c!--message--\x3e"}else{message=ProcessWire.entities1(message)}var labels=ProcessWire.config.AdminThemeUikit.labels;var options={i18n:{}};if(typeof labels!="undefined"){options.i18n={ok:labels["ok"],cancel:labels["cancel"]}}if(typeof settings.labelOk!="undefined"&&settings.labelOk.length){options.i18n["ok"]=settings.labelOk}if(typeof settings.labelCancel!="undefined"&&settings.labelCancel.length){options.i18n["cancel"]=settings.labelCancel}var modal=UIkit.modal.confirm(message,options);if(allowMarkup){$(modal.dialog.$el).find(".uk-modal-body").html(messageHtml)}modal.then(function(){if(funcOk!="undefined")funcOk()},function(){if(funcCancel!="undefined")funcCancel()})}else if(typeof vex!="undefined"&&typeof funcOk!="undefined"){vex.dialog.confirm({message:message,callback:function(v){if(v){funcOk()}else if(typeof funcCancel!="undefined"){funcCancel()}}})}else if(typeof funcOk!="undefined"){if(confirm(message)){funcOk()}else if(typeof funcCancel!="undefined"){funcCancel()}}else{return confirm(message)}};ProcessWire.alert=function(message,allowMarkup,expire,func){var settings={};if(typeof message==="object"){settings=message;if(typeof settings.allowMarkup!="undefined")allowMarkup=settings.allowMarkup;if(typeof settings.expire!="undefined")expire=settings.expire;if(typeof settings.func!="undefined")func=settings.func;message=settings.message}if(typeof allowMarkup=="undefined")allowMarkup=false;if(typeof UIkit!="undefined"){if(!allowMarkup)message=ProcessWire.entities1(message);var options={};var labels=ProcessWire.config.AdminThemeUikit.labels;if(typeof settings.labelOk!="undefined"&&settings.labelOk.length){options.i18n={ok:settings.labelOk}}else if(typeof labels!="undefined"){options.i18n={ok:labels["ok"]}}var alert=UIkit.modal.alert(message,options);if(typeof func!="undefined")alert.then(func);if(typeof expire!=="undefined"&&expire>0){setTimeout(function(){$(alert.dialog.$el).find(".uk-modal-close").trigger("click")},expire)}}else if(typeof vex!="undefined"){if(allowMarkup){vex.dialog.alert({unsafeMessage:message})}else{if(message.indexOf("&")>-1&&message.indexOf(";")>1){var v=document.createElement("textarea");v.innerHTML=message;message=v.value}vex.dialog.alert(message)}if(typeof expire!=="undefined"){setTimeout(function(){$(".vex-dialog-button-primary").trigger("click")},expire)}}else{alert(message)}};ProcessWire.prompt=function(message,placeholder,func,allowMarkup){var settings={};if(typeof message==="object"){settings=message;if(typeof settings.placeholder!="undefined")placeholder=settings.placeholder;if(typeof settings.func!="undefined")func=settings.func;if(typeof settings.allowMarkup!="undefined")allowMarkup=settings.allowMarkup;message=settings.message}if(typeof allowMarkup==="undefined")allowMarkup=false;if(typeof placeholder==="undefined")placeholder="";if(typeof UIkit!="undefined"){if(!allowMarkup)message=ProcessWire.entities1(message);var labels=ProcessWire.config.AdminThemeUikit.labels;var options={i18n:{}};if(typeof labels!="undefined"){options.i18n={ok:labels["ok"],cancel:labels["cancel"]}}if(typeof settings.labelOk!="undefined"&&settings.labelOk.length){options.i18n["ok"]=settings.labelOk}if(typeof settings.labelCancel!="undefined"&&settings.labelCancel.length){options.i18n["cancel"]=settings.labelCancel}var prompt=UIkit.modal.prompt(message,placeholder,options);prompt.then(function(value){if(value!==null)func(value)});return prompt}else if(typeof vex=="undefined"){alert("prompt function requires UIkit or vex");return}else{return vex.dialog.prompt({message:message,placeholder:placeholder,callback:func})}};ProcessWire.entities=function(str){return $("