From be84331dbd3634f8c443ecfc7871503bb44ebee6 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Fri, 1 Mar 2019 09:21:18 -0500 Subject: [PATCH] Fix issue processwire/processwire-issues#818 where listable but not editable or viewable page in dropdown for Pages > Tree > [items] was navigating to some useless JSON output. Also disabled the fallback to view URL when page is viewable but not editable. --- .../Process/ProcessPageList/ProcessPageList.module | 3 ++- wire/templates-admin/scripts/main.js | 10 +++++++--- wire/templates-admin/scripts/main.min.js | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/wire/modules/Process/ProcessPageList/ProcessPageList.module b/wire/modules/Process/ProcessPageList/ProcessPageList.module index 087beae8..4740c286 100644 --- a/wire/modules/Process/ProcessPageList/ProcessPageList.module +++ b/wire/modules/Process/ProcessPageList/ProcessPageList.module @@ -544,7 +544,8 @@ class ProcessPageList extends Process implements ConfigurableModule { $url = $page->editUrl(); $editable = true; } else if($page->viewable()) { - $url = $page->url(); + // do not show view URLs per #818 + // $url = $page->url(); } $numChildren = $id > 1 ? $renderer->numChildren($page) : 0; diff --git a/wire/templates-admin/scripts/main.js b/wire/templates-admin/scripts/main.js index 455735ba..33dfec49 100644 --- a/wire/templates-admin/scripts/main.js +++ b/wire/templates-admin/scripts/main.js @@ -337,13 +337,17 @@ var ProcessWireAdmin = { if(this.url == 'navJSON') { // click triggers another navJSON load - } else { - var url = this.url.indexOf('/') === 0 ? this.url : data.url + this.url; + } 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 $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'); diff --git a/wire/templates-admin/scripts/main.min.js b/wire/templates-admin/scripts/main.min.js index 88d58fe1..c835b12b 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").click(function(){var b=$(this).closest(".pw-notice-group-parent");var a=b.nextUntil(".pw-notice-group-parent");if(b.hasClass("pw-notice-group-open")){b.removeClass("pw-notice-group-open");a.slideUp("fast")}else{b.addClass("pw-notice-group-open");a.slideDown("fast")}b.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"}}).hover(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")},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 a=$(this);a.removeClass("ui-state-default").addClass("ui-state-hover");if(a.hasClass("ui-priority-secondary")){a.toggleClass("xui-priority-secondary ui-priority-secondary")}if(a.hasClass("pw-button-dropdown-main")){a.siblings("#pw-dropdown-toggle-"+a.attr("id")).trigger("mouseover")}}).on("mouseout",".ui-button",function(){var a=$(this);a.removeClass("ui-state-hover").addClass("ui-state-default");if(a.hasClass("xui-priority-secondary")){a.toggleClass("xui-priority-secondary ui-priority-secondary")}if(a.hasClass("pw-button-dropdown-main")){a.siblings("#pw-dropdown-toggle-"+a.attr("id")).trigger("mouseout")}}).on("click",".ui-button",function(){$(this).removeClass("ui-state-default").addClass("ui-state-active")}).on("click","a > button",function(){var a=$(this).parent();var b=a.attr("target");if(typeof b!="undefined"&&b=="_blank"){}else{window.location=a.attr("href")}})},setupDropdowns:function(){var c=false;var h;function g(){var l=$(this);var k;if(l.attr("data-pw-dropdown")){k=l.siblings(l.attr("data-pw-dropdown"));if(!k.length){k=$(l.attr("data-pw-dropdown"))}}else{k=l.siblings(".pw-dropdown-menu")}k.hide();l.data("pw-dropdown-ul",k);if(l.is("button")){if(l.find(".ui-button-text").length==0){l.button()}if(l.attr("type")=="submit"){l.click(function(){l.addClass("pw-dropdown-disabled");setTimeout(function(){l.removeClass("pw-dropdown-disabled")},2000)})}}else{}k.find("a").click(function(){k.hide();return true});k.find(".pw-has-items").each(function(){var o=$("");$(this).prepend(o)});if(l.hasClass("pw-dropdown-toggle-click")){var n=null;function m(){if(n){clearTimeout(n)}n=setTimeout(function(){if(k.filter(":hover").length||l.filter(":hover").length){return}k.fadeOut("fast");l.removeClass("hover pw-dropdown-toggle-open")},1000)}k.mouseleave(m);l.mouseleave(m)}else{k.mouseleave(function(){k.hide();l.removeClass("hover")})}}function e(p){var o=$(this);var l=o.data("pw-dropdown-ul");var k=o.hasClass("pw-dropdown-toggle-delay")?700:0;var m=l.data("pw-dropdown-last-offset");var n=o.data("pw-dropdown-timeout");if(o.hasClass("pw-dropdown-toggle-click")){if(p.type!="mousedown"){return false}o.removeClass("ui-state-focus");if(o.hasClass("pw-dropdown-toggle-open")){o.removeClass("pw-dropdown-toggle-open hover");l.hide();return}else{$(".pw-dropdown-toggle-open").each(function(){var r=$(this);var q=r.data("pw-dropdown-ul");q.mouseleave()});o.addClass("pw-dropdown-toggle-open")}}if(o.hasClass("pw-dropdown-disabled")){return}n=setTimeout(function(){if(o.hasClass("pw-dropdown-disabled")){return}var t=o.offset();if(m!=null){if(t.top!=m.top||t.left!=m.left){l.menu("destroy").removeClass("pw-dropdown-ready")}}if(!l.hasClass("pw-dropdown-ready")){l.css("position","absolute");l.prependTo($("body")).addClass("pw-dropdown-ready").menu();var r={my:"right top",at:"right bottom",of:o};var s=l.attr("data-my");var q=l.attr("data-at");if(s){r.my=s}if(q){r.at=q}l.position(r).css("z-index",200)}o.addClass("hover");l.show();l.data("pw-dropdown-last-offset",t)},k);o.data("pw-dropdown-timeout",n)}function d(){var m=$(this);var k=m.data("pw-dropdown-ul");var l=m.data("pw-dropdown-timeout");if(l){clearTimeout(l)}setTimeout(function(){if(k.filter(":hover").length){return}k.find("ul").hide();k.hide();m.removeClass("hover")},50);if($("body").hasClass("touch-device")){$(this).attr("data-touchCnt",0)}}function i(m){var k=m.attr("data-from");if(!k){return}var l=$("#"+m.attr("data-from"));if(l.length>0){setTimeout(function(){var p=l.offset().left;var n=m.closest("li").parent("ul");var o=n.offset().left;if(o!=p){n.css("left",p)}},500)}}function f(){var k=$(this);h=k;setTimeout(function(){if(!h){return}if(h!=k){return}k.addClass("pw-ajax-items-loaded");var n=k.attr("data-json");var m=k.siblings("ul");var o=false;var l=k.children(".pw-has-items-icon");l.removeClass("fa-angle-right").addClass("fa-spinner fa-spin");m.css("opacity",0);$.getJSON(n,function(r){l.removeClass("fa-spinner fa-spin").addClass("fa-angle-right");if(!r.list){console.log(r);return}if(!c&&r.list.length>10){c=true;o=true;$(document).on("hover","ul.pw-dropdown-menu a",function(){i($(this))})}if(r.add){var s=$("
  • "+r.add.label+"
  • ");m.append(s)}var q=0;$.each(r.list,function(z){var w="";var v="";if(this.icon){w=""}if(this.url=="navJSON"){}else{var v=this.url.indexOf("/")===0?this.url:r.url+this.url}var y=$("
  • ");var x=$(""+w+this.label+"");var u=null;if(this.navJSON){x.attr("data-json",this.navJSON).addClass("pw-has-items pw-has-ajax-items");u=$("").addClass("subnavJSON");var t=$("");x.prepend(t);y.prepend(x).append(u);q++}else{y.prepend(x)}if(typeof this.className!="undefined"&&this.className&&this.className.length){y.addClass(this.className)}m.append(y)});m.addClass("navJSON").addClass("length"+parseInt(r.list.length)).hide();if(m.children().length){m.css("opacity",1)}if(h==k){m.fadeIn("fast")}if(q){var p=m.parents("ul").length;m.find("ul.subnavJSON").css("z-index",200+p);m.menu({})}i(k)})},250)}var b=null;function a(n){var l=$(this);var m=l.attr("data-touchCnt");if(b&&l.attr("id")!=b.attr("id")){b.attr("data-touchCnt",0)}b=l;if(!m){m=0}m++;l.attr("data-touchCnt",m);if(m==2||(l.hasClass("pw-has-ajax-items")&&!l.closest("ul").hasClass("topnav"))){var k=l.attr("href");l.attr("data-touchCnt",0);if(typeof k!="undefined"&&k.length>1){return true}else{l.mouseleave()}}else{var p=l.attr("data-from");if(typeof p=="undefined"){var p=""}if(p.indexOf("topnav")>-1){var o=p.replace("topnav-","")+"-";$("a.pw-dropdown-toggle.hover:not('."+o+"')").attr("data-touchCnt",0).mouseleave()}l.mouseenter()}return false}function j(){if($("body").hasClass("touch-device")){$(document).on("touchstart","a.pw-dropdown-toggle, a.pw-has-items",a)}$(".pw-dropdown-menu").on("click","a:not(.pw-modal)",function(k){k.stopPropagation()});$(".pw-dropdown-toggle").each(g);$(document).on("mousedown",".pw-dropdown-toggle-click",e).on("mouseenter",".pw-dropdown-toggle:not(.pw-dropdown-toggle-click)",e).on("mouseleave",".pw-dropdown-toggle:not(.pw-dropdown-toggle-click)",d).on("mouseenter",".pw-dropdown-menu a.pw-has-ajax-items:not(.pw-ajax-items-loaded)",f).on("mouseleave",".pw-dropdown-menu a.pw-has-ajax-items",function(){h=null})}j()}};if(typeof ProcessWire!="undefined"){ProcessWire.confirm=function(c,a,b){if(typeof vex!="undefined"&&typeof a!="undefined"){vex.dialog.confirm({message:c,callback:function(d){if(d){a()}else{if(typeof b!="undefined"){b()}}}})}else{if(typeof a!="undefined"){if(confirm(c)){a()}else{if(typeof b!="undefined"){b()}}}else{return confirm(c)}}};ProcessWire.alert=function(b,a){if(typeof a=="undefined"){var a=false}if(typeof vex!="undefined"){if(a){vex.dialog.alert({unsafeMessage:b})}else{vex.dialog.alert(b)}}else{alert(b)}};ProcessWire.prompt=function(b,c,a){if(typeof vex=="undefined"){alert("prompt function requires vex");return}return vex.dialog.prompt({message:b,placeholder:c,callback:a})};ProcessWire.entities=function(a){return $("