diff --git a/wire/core/ProcessWire.php b/wire/core/ProcessWire.php
index 4b18b5d5..9927372a 100644
--- a/wire/core/ProcessWire.php
+++ b/wire/core/ProcessWire.php
@@ -45,7 +45,7 @@ class ProcessWire extends Wire {
* Reversion revision number
*
*/
- const versionRevision = 58;
+ const versionRevision = 59;
/**
* Version suffix string (when applicable)
diff --git a/wire/core/Wire.php b/wire/core/Wire.php
index b0cf7652..c58b3cc1 100644
--- a/wire/core/Wire.php
+++ b/wire/core/Wire.php
@@ -756,6 +756,10 @@ abstract class Wire implements WireTranslatable, WireFuelable, WireTrackable {
* This enables you to add a new accessible property to an existing object, which will execute
* your hook implementation method when called upon.
*
+ * Note that adding a hook with this just makes it possible to call the hook as a property.
+ * Any hook property you add can also be called as a method, i.e. `$obj->foo` and `$obj->foo()`
+ * are the same.
+ *
* ~~~~~
* // Adding a hook property
* $wire->addHookProperty('Page::lastModifiedStr', function($event) {
diff --git a/wire/modules/Process/ProcessPageList/ProcessPageList.js b/wire/modules/Process/ProcessPageList/ProcessPageList.js
index 7f781448..1e8d5273 100644
--- a/wire/modules/Process/ProcessPageList/ProcessPageList.js
+++ b/wire/modules/Process/ProcessPageList/ProcessPageList.js
@@ -174,6 +174,11 @@ $(document).ready(function() {
*/
}
+ $(document).on('pageListRefresh', function(e, pageID) {
+ // i.e. $(document).trigger('pageListRefresh', pageID);
+ refreshList(pageID);
+ });
+
if(options.useHoverActions) {
$root.addClass('PageListUseHoverActions');
setupHoverActions();
@@ -470,8 +475,8 @@ $(document).ready(function() {
* @param jQuery $target Item to attach children to
* @param int start If not starting from first item, num of item to start with
* @param bool beginList Set to true if this is the first call to create the list
- * @param bool replace Should any existing list be replaced (true) or appended (false)
* @param bool pagination Set to false if you don't want pagination, otherwise leave it out
+ * @param bool replace Should any existing list be replaced (true) or appended (false)
*
*/
function loadChildren(id, $target, start, beginList, pagination, replace, callback) {
@@ -975,6 +980,40 @@ $(document).ready(function() {
// console.log(currentOpenPageIDs);
$.cookie('pagelist_open', currentOpenPageIDs);
}
+
+ /**
+ * Force refresh the list that pageID appears in
+ *
+ * @param pageID
+ * @param animate
+ *
+ */
+ function refreshList(pageID, animate) {
+
+ var $parentList = $('.PageListID' + pageID).parent('.PageList');
+ var $parentItem = $parentList.prev('.PageListItem');
+ if(!$parentItem.length) return;
+
+ var parentID = $parentItem.attr('class').match(/PageListID(\d+)/)[1];
+ var start = 0;
+ var $pagination = $parentList.children("ul." + options.paginationClass);
+ var paginationInfo = $pagination.data('paginationInfo');
+ var $removeItems = null;
+
+ if(paginationInfo) {
+ var $a = $pagination.find('.pw-link-active');
+ if($a.length) start = parseInt($a.attr('href')) * paginationInfo.limit;
+ if(start === NaN) start = 0;
+ }
+ if(parentID == 1) {
+ $removeItems = $parentList.children();
+ $parentList = $parentItem;
+ }
+ $parentList.addClass('PageListForceReload');
+ loadChildren(parentID, $parentList, start, false, true, true, function() {
+ if($removeItems && $removeItems.length) $removeItems.remove();
+ });
+ }
/**
* Event called when the 'more' action/link is clicked on
diff --git a/wire/modules/Process/ProcessPageList/ProcessPageList.min.js b/wire/modules/Process/ProcessPageList/ProcessPageList.min.js
index 59f4a3e0..02622aaf 100644
--- a/wire/modules/Process/ProcessPageList/ProcessPageList.min.js
+++ b/wire/modules/Process/ProcessPageList/ProcessPageList.min.js
@@ -1 +1 @@
-function ProcessPageListInit(){if(ProcessWire.config.ProcessPageList){$("#"+ProcessWire.config.ProcessPageList.containerID).ProcessPageList(ProcessWire.config.ProcessPageList)}}$(document).ready(function(){ProcessPageListInit()});(function(a){a.fn.ProcessPageList=function(c){var d={mode:"",limit:35,rootPageID:0,showRootPage:true,selectedPageID:0,adminPageID:2,trashPageID:7,langID:0,selectAllowUnselect:false,selectShowPageHeader:true,selectShowPath:true,selectStartLabel:"Change",selectCancelLabel:"Cancel",selectSelectLabel:"Select",selectUnselectLabel:"Unselect",moreLabel:"More",trashLabel:"Trash",moveInstructionLabel:"Click and drag to move",selectSelectHref:"#",selectUnselectHref:"#",ajaxURL:ProcessWire.config.urls.admin+"page/list/",ajaxMoveURL:ProcessWire.config.urls.admin+"page/sort/",paginationClass:"PageListPagination",paginationCurrentClass:"PageListPaginationCurrent",paginationLinkClass:"ui-state-default",paginationLinkCurrentClass:"ui-state-active",paginationHoverClass:"ui-state-hover",paginationDisabledClass:"ui-priority-secondary",openPagination:0,openPageIDs:[],openPageData:{},speed:200,useHoverActions:false,hoverActionDelay:250,hoverActionFade:150,spinnerMarkup:"",labelName:""};var b=[];var f=false;var e=a("body").hasClass("modal")||a("body").hasClass("pw-iframe");a.extend(d,c);return this.each(function(l){var v=a(this);var E;var u=a(d.spinnerMarkup);var F=0;var h=0;function y(){E=a("
");if(v.is(":input")){d.selectedPageID=v.val();if(!d.selectedPageID.length){d.selectedPageID=0}d.mode="select";v.before(E);C()}else{d.mode="actions";v.append(E);m(d.rootPageID>0?d.rootPageID:1,E,0,true)}if(d.useHoverActions){E.addClass("PageListUseHoverActions");o()}}function o(){var I=null;var J=null;var H=null;function G(L){var M=L.find(".PageListActions");if(!M.is(":visible")||L.hasClass("PageListItemOpen")){L.addClass("PageListItemHover");M.css("display","inline").css("opacity",0).animate({opacity:1},d.hoverActionFade)}}function K(L){var M=L.find(".PageListActions");L.removeClass("PageListItemHover");if(M.is(":visible")){M.animate({opacity:0},d.hoverActionFade,function(){M.hide()})}}a(document).on("keydown",".PageListItem",function(M){M=M||window.event;if(M.keyCode==0||M.keyCode==32){var L=a(this).find(".PageListActions");if(L.is(":visible")){L.css("display","none")}else{L.css("display","inline-block")}return false}});a(document).on("mouseover",".PageListItem",function(N){if(E.is(".PageListSorting")||E.is(".PageListSortSaving")){return}if(!a(this).children("a:first").is(":hover")){return}H=a(this);if(H.hasClass("PageListItemHover")){return}var L=a(this);if(I){clearTimeout(I)}var M=d.hoverActionDelay;I=setTimeout(function(){if(H.attr("class")==L.attr("class")){if(!H.children("a:first").is(":hover")){return}var O=a(".PageListItemHover");G(H);O.each(function(){K(a(this))})}},M)}).on("mouseout",".PageListItem",function(N){if(E.is(".PageListSorting")||E.is(".PageListSortSaving")){return}var L=a(this);if(L.hasClass("PageListItemOpen")){return}if(!L.hasClass("PageListItemHover")){return}var M=d.hoverActionDelay*0.7;J=setTimeout(function(){if(L.is(":hover")){return}if(L.attr("class")==H.attr("class")){return}K(L)},M)})}function C(){var G=a("").addClass("PageListActions PageListSelectActions actions");var I=a("").addClass("PageListSelectName");if(d.selectShowPageHeader){I.append(u)}var J=a("").addClass("PageListSelectActionToggle").attr("href","#").text(d.selectStartLabel).click(function(){if(a(this).text()==d.selectStartLabel){m(d.rootPageID>0?d.rootPageID:1,E,0,true);a(this).text(d.selectCancelLabel)}else{E.children(".PageList").slideUp(d.speed,function(){a(this).remove()});a(this).text(d.selectStartLabel)}return false});G.append(a("").append(J));E.append(a("").addClass("PageListSelectHeader").append(I).append(G));if(d.selectShowPageHeader){var H=d.ajaxURL+"?id="+d.selectedPageID+"&render=JSON&start=0&limit=0&lang="+d.langID+"&mode="+d.mode;if(d.labelName.length){H+="&labelName="+d.labelName}a.getJSON(H,function(M){var K="";if(d.selectShowPath){K=M.page.path;if(K.substring(-1)=="/"){K=K.substring(0,K.length-1)}K=K.substring(0,K.lastIndexOf("/")+1);K=''+K+" "}var L=d.selectedPageID>0?K+M.page.label:"";E.children(".PageListSelectHeader").find(".PageListSelectName").html(L)})}}function x(){f=false}function z(G,H,N,R){var P=9;var I=Math.ceil(R/N);h=H>=N?Math.floor(H/N):0;if(h==0){F=0}else{if((h-P+1)>F){F=h-Math.floor(P/2)}else{if(F>0&&h==F){F=h-Math.ceil(P/2)}}}if(F>I-P){F=I-P}if(F<0){F=0}var O=a("").addClass(d.paginationClass).data("paginationInfo",{start:H,limit:N,total:R});var Q=function(aa){var U=a(this).parents("ul."+d.paginationClass);var Z=U.data("paginationInfo");if(!Z){return false}var ab=parseInt(a(this).attr("href"))*Z.limit;if(ab===NaN){ab=0}var V=z(G,ab,Z.limit,Z.total);var X=a(d.spinnerMarkup);var Y=a(" ").addClass(d.paginationDisabledClass).append(X.hide());U.siblings(".PageList").remove();U.replaceWith(V);V.append(Y);X.fadeIn("fast");var W=V.siblings().css("opacity",0.5);m(G,V.parent(),a(this).attr("href")*Z.limit,false,false,true,function(){X.fadeOut("fast",function(){Y.remove()});V.parent(".PageList").prev(".PageListItem").data("start",ab);g()});return false};var M=null;var J=null;for(var T=F,K=0;T").html(T+1).attr("href",T).addClass(d.paginationLinkClass);var S=a("").addClass(d.paginationClass+K).append(L);if(T==h){S.addClass(d.paginationCurrentClass).find("a").removeClass(d.paginationLinkClass).addClass(d.paginationLinkCurrentClass)}O.append(S);if(!J){J=S.clone().removeClass(d.paginationCurrentClass+" "+d.paginationLinkCurrentClass);J.find("a").removeClass(d.paginationLinkCurrentClass).addClass(d.paginationLinkClass)}if(!M){M=J.clone().removeClass(d.paginationLinkClass).addClass(d.paginationDisabledClass).html("…")}if(K>=P&&T0){$firstItem=J.clone();$firstItem.find("a").text("1").attr("href","0").click(Q);O.prepend(M.clone()).prepend($firstItem)}if(h+1").attr("href",h+1);O.append($nextBtn)}if(h>0){$prevBtn=J.clone();$prevBtn.find("a").attr("href",h-1).html("");O.prepend($prevBtn)}O.find("a").click(Q).hover(function(){a(this).addClass(d.paginationHoverClass)},function(){a(this).removeClass(d.paginationHoverClass)});return O}function m(H,K,I,M,P,J,O){if(P==undefined){P=true}if(J==undefined){J=false}var L=function(U){if(U&&U.error){ProcessWire.alert(U.message);u.hide();f=false;return}var Q=k(a(U.children));var T=U.start+U.limit;if(U.page.numChildren>T){var S=a("").attr("href",T).data("pageId",H).text(d.moreLabel).click(B);Q.append(a("").addClass("PageListActions actions").append(a("").addClass("PageListActionMore").append(S)))}if(P&&(U.page.numChildren>T||U.start>0)){Q.prepend(z(H,U.start,U.limit,U.page.numChildren))}Q.hide();if(M){var V;V=k(a(U.page));if(d.showRootPage){V.children(".PageListItem").addClass("PageListItemOpen")}else{V.children(".PageListItem").hide().parent(".PageList").addClass("PageListRootHidden")}V.append(Q);K.append(V)}else{if(K.is(".PageList")){var R=Q.children(".PageListItem, .PageListActions");if(J){K.children(".PageListItem, .PageListActions").replaceWith(R)}else{K.append(R)}}else{K.after(Q)}}if(u.parent().is(".PageListRoot")){u.hide()}else{u.fadeOut("fast")}if(J){Q.show();x();if(O!=undefined){O()}}else{Q.slideDown(d.speed,function(){x();if(O!=undefined){O()}})}Q.prev(".PageListItem").data("start",U.start);K.removeClass("PageListForceReload")};if(!J){K.append(u.fadeIn("fast"))}var N=H+"-"+I;if(typeof d.openPageData[N]!="undefined"&&!K.hasClass("PageListID7")&&!K.hasClass("PageListForceReload")){L(d.openPageData[N]);return}var G=d.ajaxURL+"?id="+H+"&render=JSON&start="+I+"&lang="+d.langID+"&open="+d.openPageIDs[0]+"&mode="+d.mode;if(d.labelName.length){G+="&labelName="+d.labelName}a.getJSON(G).done(function(R,S,Q){L(R)}).fail(function(Q,S,R){L({error:1,message:!Q.status?d.ajaxNetworkError:d.ajaxUnknownError})})}function k(G){var I=a("").addClass("PageList");var H=I;G.each(function(K,J){H.append(j(J))});s(H);return I}function s(G){a("a.PageListPage",G).click(t);a(".PageListActionMove a",G).click(i);a(".PageListActionSelect a",G).click(A);a(".PageListTriggerOpen:not(.PageListID1) > a.PageListPage",G).click();a(".PageListActionExtras > a:not(.clickExtras)",G).addClass("clickExtras").on("click",p)}function j(M){var L=a("").data("pageId",M.id).addClass("PageListItem").addClass("PageListTemplate_"+M.template);var K=a("").attr("href","#").attr("title",M.path).html(M.label).addClass("PageListPage label");L.addClass("PageListID"+M.id);if(M.status==0){L.addClass("PageListStatusOff disabled")}if(M.status&2048){L.addClass("PageListStatusUnpublished secondary")}if(M.status&1024){L.addClass("PageListStatusHidden secondary")}if(M.status&512){L.addClass("PageListStatusTemp secondary")}if(M.status&16){L.addClass("PageListStatusSystem")}if(M.status&8){L.addClass("PageListStatusSystem")}if(M.status&4){L.addClass("PageListStatusLocked")}if(M.addClass&&M.addClass.length){L.addClass(M.addClass)}if(M.type&&M.type.length>0){if(M.type=="System"){L.addClass("PageListStatusSystem")}}a(d.openPageIDs).each(function(O,N){N=parseInt(N);if(M.id==N){L.addClass("PageListTriggerOpen")}});L.append(K);var I=a(""+(M.numChildren?M.numChildren:"")+"").addClass("PageListNumChildren detail");L.append(I);if(M.note&&M.note.length){L.append(a(""+M.note+"").addClass("PageListNote detail"))}var J=a("").addClass("PageListActions actions");var H=d.rootPageID==M.id?[]:[{name:d.selectSelectLabel,url:d.selectSelectHref}];if(d.mode=="actions"){H=M.actions}else{if(d.selectAllowUnselect){if(M.id==v.val()){H=[{name:d.selectUnselectLabel,url:d.selectUnselectHref}]}}}var G=null;a(H).each(function(R,P){var N;if(P.name==d.selectSelectLabel){N="Select"}else{if(P.name==d.selectUnselectLabel){N="Select"}else{N=P.cn}}var O=a("").html(P.name).attr("href",P.url);if(!e){if(P.cn=="Edit"){O.addClass("pw-modal pw-modal-large pw-modal-longclick");O.attr("data-buttons","#ProcessPageEdit > .Inputfields > .InputfieldSubmit .ui-button")}else{if(P.cn=="View"){O.addClass("pw-modal pw-modal-large pw-modal-longclick")}}}if(typeof P.extras!="undefined"){O.data("extras",P.extras)}var Q=a("").addClass("PageListAction"+N).append(O);if(N=="Extras"){G=Q}else{J.append(Q)}});if(G){J.append(G);G.addClass("ui-priority-secondary")}L.append(J);return L}function p(N){var H=a(this);var J=H.data("extras");if(typeof J=="undefined"){return false}var Q=H.closest(".PageListItem");var R=H.closest(".PageListActions");var L=null;var O=H.children("i.fa");var P=R.find("li.PageListActionExtra");O.toggleClass("fa-flip-horizontal");if(P.length){P.fadeOut(100,function(){P.remove()});return false}for(var I in J){var G=J[I];var M=a("").addClass("PageListActionExtra PageListAction"+G.cn).attr("href",G.url).html(G.name);if(typeof G.ajax!="undefined"&&G.ajax==true){M.click(function(){Q.find(".PageListActions").hide();var Y=a(d.spinnerMarkup);var V=a(this).attr("href");var U=V.match(/[\?&]action=([-_a-zA-Z0-9]+)/)[1];var T=parseInt(V.match(/[\?&]id=([0-9]+)/)[1]);var X=a("#PageListContainer").attr("data-token-name");var W=a("#PageListContainer").attr("data-token-value");var S={action:U,id:T};S[X]=W;Q.append(Y);a.post(V+"&render=json",S,function(Z){if(Z.success){Q.fadeOut("fast",function(){var af=false;var ag=Z.remove;var ae=Z.refreshChildren;var ac=false;if(typeof Z.child!="undefined"){ac=j(Z.child)}else{if(typeof Z.newChild!="undefined"){ac=j(Z.newChild);af=true}}if(ac){var aa=a("").addClass("notes").html(Z.message);aa.prepend(" ");ac.append(aa);s(ac)}if(af){Y.fadeOut("normal",function(){Y.remove()});ac.hide();Q.after(ac);ac.slideDown()}else{if(ac){if(Q.hasClass("PageListItemOpen")){ac.addClass("PageListItemOpen")}Q.replaceWith(ac)}}Q.fadeIn("fast",function(){setTimeout(function(){aa.fadeOut("normal",function(){if(ag){var ah=ac.closest(".PageList").prev(".PageListItem").children(".PageListNumChildren");if(ah.length){var ai=parseInt(ah.text());if(ai>0){ah.text(ai-1)}}ac.next(".PageList").fadeOut("fast");ac.fadeOut("fast",function(){ac.remove()})}else{aa.remove()}})},1000)});if(ae){var ab=a(".PageListID"+ae);if(ab.length){ab.addClass("PageListForceReload");var ad=ab.children("a.PageListPage");if(ab.hasClass("PageListItemOpen")){ad.click();setTimeout(function(){ad.click()},250)}else{ad.click()}}}})}else{Y.remove();ProcessWire.alert(Z.message)}});return false})}else{}var K=a("").addClass("PageListActionExtra PageListAction"+G.cn).append(M);M.hide();if(G.cn=="Trash"){Q.addClass("trashable");L=K}else{R.append(K)}}if(L){R.append(L)}R.find(".PageListActionExtra a").fadeIn(50,function(){a(this).css("display","inline-block")});return false}function t(J){var N=a(this);var M=N.parent(".PageListItem");var L=M.data("pageId");if(f&&!M.hasClass("PageListTriggerOpen")){return false}if(E.is(".PageListSorting")||E.is(".PageListSortSaving")){return false}if(M.hasClass("PageListItemOpen")){var G=true;if(M.hasClass("PageListID1")&&!M.hasClass("PageListForceReload")&&d.mode!="select"){var H=a(this).closest(".PageListRoot").find(".PageListItemOpen:not(.PageListID1)");if(H.length){E.find(".PageListItemOpen:not(.PageListID1)").each(function(){a(this).children("a.PageListPage").click()});G=false}}if(G){M.removeClass("PageListItemOpen").next(".PageList").slideUp(d.speed,function(){a(this).remove()})}}else{M.addClass("PageListItemOpen");var I=parseInt(M.children(".PageListNumChildren").text());if(I>0||M.hasClass("PageListForceReload")){f=true;var K=D(L);m(L,M,K,false)}}if(d.mode!="select"){setTimeout(function(){g()},250)}return false}function D(K){var J=0;for(n=0;n1&&a(this).next().find(".PageList:visible").size()==0){return}var N=a("").addClass("PageListPlaceholder").addClass("PageList");N.append(a("").addClass("PageListItem PageListPlaceholderItem").html(" "));a(this).after(N)});var K={stop:q,helper:"PageListItemHelper",items:".PageListItem:not(.PageListItemOpen)",placeholder:"PageListSortPlaceholder",start:function(O,N){a(".PageListSortPlaceholder").css("width",N.item.children(".PageListPage").outerWidth()+"px")}};var H=E.children(".PageList").children(".PageList");var G=a(""+d.selectCancelLabel+"").click(function(){return r(L)});var J=L.children("ul.PageListActions");var I=a(" "+d.moveInstructionLabel+"");I.append(G);J.before(I);L.addClass("PageListSortItem");L.parent(".PageList").attr("id","PageListMoveFrom");E.addClass("PageListSorting");H.addClass("PageListSortingList").sortable(K);return false}function r(H){var G=E.find(".PageListSortingList");G.sortable("destroy").removeClass("PageListSortingList");H.removeClass("PageListSortItem").parent(".PageList").removeAttr("id");H.find(".PageListMoveNote").remove();E.find(".PageListPlaceholder").remove();E.removeClass("PageListSorting");return false}function w(J){var G=E.find(".PageListID"+d.trashPageID);if(!G.hasClass("PageListItemOpen")){E.removeClass("PageListSorting");G.children("a").click();E.addClass("PageListSorting")}var H=G.next(".PageList");if(H.length==0){H=a("");G.after(H)}H.prepend(J);var I={item:J};q(null,I)}function q(M,R){var O=R.item;var J=O.children(".PageListPage");var H=parseInt(O.data("pageId"));var L=O.parent(".PageList");var P=a("#PageListMoveFrom");var Q=L.prev().is(".PageListItem")?L.prev():L.prev().prev();var N=parseInt(Q.data("pageId"));var I=O.prev(".PageListItem");if(I.is(".PageListItemOpen")){return false}if(L.is(".PageListPlaceholder")){L.removeClass("PageListPlaceholder").children(".PageListPlaceholderItem").remove()}E.addClass("PageListSortSaving");r(O);O.append(u.fadeIn("fast"));var K="";L.children(".PageListItem").each(function(){K+=a(this).data("pageId")+","});var G={id:H,parent_id:N,sort:K};G[a("#PageListContainer").attr("data-token-name")]=a("#PageListContainer").attr("data-token-value");var S="unknown";a.post(d.ajaxMoveURL,G,function(V){u.fadeOut("fast");J.fadeOut("fast",function(){a(this).fadeIn("fast");O.removeClass("PageListSortItem");E.removeClass("PageListSorting")});if(V&&V.error){ProcessWire.alert(V.message)}if(!L.is("#PageListMoveFrom")){var U=P.prev(".PageListItem");var T=U.children(".PageListNumChildren");var X=T.text().length>0?parseInt(T.text())-1:0;if(X==0){X="";P.remove()}T.text(X);var W=L.prev(".PageListItem");T=W.children(".PageListNumChildren");X=T.text().length>0?parseInt(T.text())+1:1;T.text(X)}P.attr("id","");E.removeClass("PageListSortSaving")},"json");O.trigger("pageMoved");return true}function A(){var M=a(this);var L=M.parent("li").parent("ul.PageListActions").parent(".PageListItem");var K=L.data("pageId");var I=L.children(".PageListPage");var J=I.text();var H=I.attr("title");var G=E.children(".PageListSelectHeader");if(M.text()==d.selectUnselectLabel){K=0;J=""}if(K!=v.val()){v.val(K).change()}if(d.selectShowPageHeader){G.children(".PageListSelectName").text(J)}v.trigger("pageSelected",{id:K,url:H,title:J,a:I});G.find(".PageListSelectActionToggle").click();if(d.selectSelectHref=="#"){return false}return true}y()})}})(jQuery);
\ No newline at end of file
+function ProcessPageListInit(){if(ProcessWire.config.ProcessPageList){$("#"+ProcessWire.config.ProcessPageList.containerID).ProcessPageList(ProcessWire.config.ProcessPageList)}}$(document).ready(function(){ProcessPageListInit()});(function(a){a.fn.ProcessPageList=function(c){var d={mode:"",limit:35,rootPageID:0,showRootPage:true,selectedPageID:0,adminPageID:2,trashPageID:7,langID:0,selectAllowUnselect:false,selectShowPageHeader:true,selectShowPath:true,selectStartLabel:"Change",selectCancelLabel:"Cancel",selectSelectLabel:"Select",selectUnselectLabel:"Unselect",moreLabel:"More",trashLabel:"Trash",moveInstructionLabel:"Click and drag to move",selectSelectHref:"#",selectUnselectHref:"#",ajaxURL:ProcessWire.config.urls.admin+"page/list/",ajaxMoveURL:ProcessWire.config.urls.admin+"page/sort/",paginationClass:"PageListPagination",paginationCurrentClass:"PageListPaginationCurrent",paginationLinkClass:"ui-state-default",paginationLinkCurrentClass:"ui-state-active",paginationHoverClass:"ui-state-hover",paginationDisabledClass:"ui-priority-secondary",openPagination:0,openPageIDs:[],openPageData:{},speed:200,useHoverActions:false,hoverActionDelay:250,hoverActionFade:150,spinnerMarkup:"",labelName:""};var b=[];var f=false;var e=a("body").hasClass("modal")||a("body").hasClass("pw-iframe");a.extend(d,c);return this.each(function(l){var v=a(this);var E;var u=a(d.spinnerMarkup);var G=0;var h=0;function y(){E=a("");if(v.is(":input")){d.selectedPageID=v.val();if(!d.selectedPageID.length){d.selectedPageID=0}d.mode="select";v.before(E);C()}else{d.mode="actions";v.append(E);m(d.rootPageID>0?d.rootPageID:1,E,0,true)}a(document).on("pageListRefresh",function(I,H){F(H)});if(d.useHoverActions){E.addClass("PageListUseHoverActions");o()}}function o(){var J=null;var K=null;var I=null;function H(M){var N=M.find(".PageListActions");if(!N.is(":visible")||M.hasClass("PageListItemOpen")){M.addClass("PageListItemHover");N.css("display","inline").css("opacity",0).animate({opacity:1},d.hoverActionFade)}}function L(M){var N=M.find(".PageListActions");M.removeClass("PageListItemHover");if(N.is(":visible")){N.animate({opacity:0},d.hoverActionFade,function(){N.hide()})}}a(document).on("keydown",".PageListItem",function(N){N=N||window.event;if(N.keyCode==0||N.keyCode==32){var M=a(this).find(".PageListActions");if(M.is(":visible")){M.css("display","none")}else{M.css("display","inline-block")}return false}});a(document).on("mouseover",".PageListItem",function(O){if(E.is(".PageListSorting")||E.is(".PageListSortSaving")){return}if(!a(this).children("a:first").is(":hover")){return}I=a(this);if(I.hasClass("PageListItemHover")){return}var M=a(this);if(J){clearTimeout(J)}var N=d.hoverActionDelay;J=setTimeout(function(){if(I.attr("class")==M.attr("class")){if(!I.children("a:first").is(":hover")){return}var P=a(".PageListItemHover");H(I);P.each(function(){L(a(this))})}},N)}).on("mouseout",".PageListItem",function(O){if(E.is(".PageListSorting")||E.is(".PageListSortSaving")){return}var M=a(this);if(M.hasClass("PageListItemOpen")){return}if(!M.hasClass("PageListItemHover")){return}var N=d.hoverActionDelay*0.7;K=setTimeout(function(){if(M.is(":hover")){return}if(M.attr("class")==I.attr("class")){return}L(M)},N)})}function C(){var H=a("").addClass("PageListActions PageListSelectActions actions");var J=a("").addClass("PageListSelectName");if(d.selectShowPageHeader){J.append(u)}var K=a("").addClass("PageListSelectActionToggle").attr("href","#").text(d.selectStartLabel).click(function(){if(a(this).text()==d.selectStartLabel){m(d.rootPageID>0?d.rootPageID:1,E,0,true);a(this).text(d.selectCancelLabel)}else{E.children(".PageList").slideUp(d.speed,function(){a(this).remove()});a(this).text(d.selectStartLabel)}return false});H.append(a("").append(K));E.append(a("").addClass("PageListSelectHeader").append(J).append(H));if(d.selectShowPageHeader){var I=d.ajaxURL+"?id="+d.selectedPageID+"&render=JSON&start=0&limit=0&lang="+d.langID+"&mode="+d.mode;if(d.labelName.length){I+="&labelName="+d.labelName}a.getJSON(I,function(N){var L="";if(d.selectShowPath){L=N.page.path;if(L.substring(-1)=="/"){L=L.substring(0,L.length-1)}L=L.substring(0,L.lastIndexOf("/")+1);L=''+L+" "}var M=d.selectedPageID>0?L+N.page.label:"";E.children(".PageListSelectHeader").find(".PageListSelectName").html(M)})}}function x(){f=false}function z(H,I,O,S){var Q=9;var J=Math.ceil(S/O);h=I>=O?Math.floor(I/O):0;if(h==0){G=0}else{if((h-Q+1)>G){G=h-Math.floor(Q/2)}else{if(G>0&&h==G){G=h-Math.ceil(Q/2)}}}if(G>J-Q){G=J-Q}if(G<0){G=0}var P=a("").addClass(d.paginationClass).data("paginationInfo",{start:I,limit:O,total:S});var R=function(ab){var V=a(this).parents("ul."+d.paginationClass);var aa=V.data("paginationInfo");if(!aa){return false}var ac=parseInt(a(this).attr("href"))*aa.limit;if(ac===NaN){ac=0}var W=z(H,ac,aa.limit,aa.total);var Y=a(d.spinnerMarkup);var Z=a(" ").addClass(d.paginationDisabledClass).append(Y.hide());V.siblings(".PageList").remove();V.replaceWith(W);W.append(Z);Y.fadeIn("fast");var X=W.siblings().css("opacity",0.5);m(H,W.parent(),a(this).attr("href")*aa.limit,false,false,true,function(){Y.fadeOut("fast",function(){Z.remove()});W.parent(".PageList").prev(".PageListItem").data("start",ac);g()});return false};var N=null;var K=null;for(var U=G,L=0;U").html(U+1).attr("href",U).addClass(d.paginationLinkClass);var T=a("").addClass(d.paginationClass+L).append(M);if(U==h){T.addClass(d.paginationCurrentClass).find("a").removeClass(d.paginationLinkClass).addClass(d.paginationLinkCurrentClass)}P.append(T);if(!K){K=T.clone().removeClass(d.paginationCurrentClass+" "+d.paginationLinkCurrentClass);K.find("a").removeClass(d.paginationLinkCurrentClass).addClass(d.paginationLinkClass)}if(!N){N=K.clone().removeClass(d.paginationLinkClass).addClass(d.paginationDisabledClass).html("…")}if(L>=Q&&U0){$firstItem=K.clone();$firstItem.find("a").text("1").attr("href","0").click(R);P.prepend(N.clone()).prepend($firstItem)}if(h+1").attr("href",h+1);P.append($nextBtn)}if(h>0){$prevBtn=K.clone();$prevBtn.find("a").attr("href",h-1).html("");P.prepend($prevBtn)}P.find("a").click(R).hover(function(){a(this).addClass(d.paginationHoverClass)},function(){a(this).removeClass(d.paginationHoverClass)});return P}function m(I,L,J,N,Q,K,P){if(Q==undefined){Q=true}if(K==undefined){K=false}var M=function(V){if(V&&V.error){ProcessWire.alert(V.message);u.hide();f=false;return}var R=k(a(V.children));var U=V.start+V.limit;if(V.page.numChildren>U){var T=a("").attr("href",U).data("pageId",I).text(d.moreLabel).click(B);R.append(a("").addClass("PageListActions actions").append(a("").addClass("PageListActionMore").append(T)))}if(Q&&(V.page.numChildren>U||V.start>0)){R.prepend(z(I,V.start,V.limit,V.page.numChildren))}R.hide();if(N){var W;W=k(a(V.page));if(d.showRootPage){W.children(".PageListItem").addClass("PageListItemOpen")}else{W.children(".PageListItem").hide().parent(".PageList").addClass("PageListRootHidden")}W.append(R);L.append(W)}else{if(L.is(".PageList")){var S=R.children(".PageListItem, .PageListActions");if(K){L.children(".PageListItem, .PageListActions").replaceWith(S)}else{L.append(S)}}else{L.after(R)}}if(u.parent().is(".PageListRoot")){u.hide()}else{u.fadeOut("fast")}if(K){R.show();x();if(P!=undefined){P()}}else{R.slideDown(d.speed,function(){x();if(P!=undefined){P()}})}R.prev(".PageListItem").data("start",V.start);L.removeClass("PageListForceReload")};if(!K){L.append(u.fadeIn("fast"))}var O=I+"-"+J;if(typeof d.openPageData[O]!="undefined"&&!L.hasClass("PageListID7")&&!L.hasClass("PageListForceReload")){M(d.openPageData[O]);return}var H=d.ajaxURL+"?id="+I+"&render=JSON&start="+J+"&lang="+d.langID+"&open="+d.openPageIDs[0]+"&mode="+d.mode;if(d.labelName.length){H+="&labelName="+d.labelName}a.getJSON(H).done(function(S,T,R){M(S)}).fail(function(R,T,S){M({error:1,message:!R.status?d.ajaxNetworkError:d.ajaxUnknownError})})}function k(H){var J=a("").addClass("PageList");var I=J;H.each(function(L,K){I.append(j(K))});s(I);return J}function s(H){a("a.PageListPage",H).click(t);a(".PageListActionMove a",H).click(i);a(".PageListActionSelect a",H).click(A);a(".PageListTriggerOpen:not(.PageListID1) > a.PageListPage",H).click();a(".PageListActionExtras > a:not(.clickExtras)",H).addClass("clickExtras").on("click",p)}function j(N){var M=a("").data("pageId",N.id).addClass("PageListItem").addClass("PageListTemplate_"+N.template);var L=a("").attr("href","#").attr("title",N.path).html(N.label).addClass("PageListPage label");M.addClass("PageListID"+N.id);if(N.status==0){M.addClass("PageListStatusOff disabled")}if(N.status&2048){M.addClass("PageListStatusUnpublished secondary")}if(N.status&1024){M.addClass("PageListStatusHidden secondary")}if(N.status&512){M.addClass("PageListStatusTemp secondary")}if(N.status&16){M.addClass("PageListStatusSystem")}if(N.status&8){M.addClass("PageListStatusSystem")}if(N.status&4){M.addClass("PageListStatusLocked")}if(N.addClass&&N.addClass.length){M.addClass(N.addClass)}if(N.type&&N.type.length>0){if(N.type=="System"){M.addClass("PageListStatusSystem")}}a(d.openPageIDs).each(function(P,O){O=parseInt(O);if(N.id==O){M.addClass("PageListTriggerOpen")}});M.append(L);var J=a(""+(N.numChildren?N.numChildren:"")+"").addClass("PageListNumChildren detail");M.append(J);if(N.note&&N.note.length){M.append(a(""+N.note+"").addClass("PageListNote detail"))}var K=a("").addClass("PageListActions actions");var I=d.rootPageID==N.id?[]:[{name:d.selectSelectLabel,url:d.selectSelectHref}];if(d.mode=="actions"){I=N.actions}else{if(d.selectAllowUnselect){if(N.id==v.val()){I=[{name:d.selectUnselectLabel,url:d.selectUnselectHref}]}}}var H=null;a(I).each(function(S,Q){var O;if(Q.name==d.selectSelectLabel){O="Select"}else{if(Q.name==d.selectUnselectLabel){O="Select"}else{O=Q.cn}}var P=a("").html(Q.name).attr("href",Q.url);if(!e){if(Q.cn=="Edit"){P.addClass("pw-modal pw-modal-large pw-modal-longclick");P.attr("data-buttons","#ProcessPageEdit > .Inputfields > .InputfieldSubmit .ui-button")}else{if(Q.cn=="View"){P.addClass("pw-modal pw-modal-large pw-modal-longclick")}}}if(typeof Q.extras!="undefined"){P.data("extras",Q.extras)}var R=a("").addClass("PageListAction"+O).append(P);if(O=="Extras"){H=R}else{K.append(R)}});if(H){K.append(H);H.addClass("ui-priority-secondary")}M.append(K);return M}function p(O){var I=a(this);var K=I.data("extras");if(typeof K=="undefined"){return false}var R=I.closest(".PageListItem");var S=I.closest(".PageListActions");var M=null;var P=I.children("i.fa");var Q=S.find("li.PageListActionExtra");P.toggleClass("fa-flip-horizontal");if(Q.length){Q.fadeOut(100,function(){Q.remove()});return false}for(var J in K){var H=K[J];var N=a("").addClass("PageListActionExtra PageListAction"+H.cn).attr("href",H.url).html(H.name);if(typeof H.ajax!="undefined"&&H.ajax==true){N.click(function(){R.find(".PageListActions").hide();var Z=a(d.spinnerMarkup);var W=a(this).attr("href");var V=W.match(/[\?&]action=([-_a-zA-Z0-9]+)/)[1];var U=parseInt(W.match(/[\?&]id=([0-9]+)/)[1]);var Y=a("#PageListContainer").attr("data-token-name");var X=a("#PageListContainer").attr("data-token-value");var T={action:V,id:U};T[Y]=X;R.append(Z);a.post(W+"&render=json",T,function(aa){if(aa.success){R.fadeOut("fast",function(){var ag=false;var ah=aa.remove;var af=aa.refreshChildren;var ad=false;if(typeof aa.child!="undefined"){ad=j(aa.child)}else{if(typeof aa.newChild!="undefined"){ad=j(aa.newChild);ag=true}}if(ad){var ab=a("").addClass("notes").html(aa.message);ab.prepend(" ");ad.append(ab);s(ad)}if(ag){Z.fadeOut("normal",function(){Z.remove()});ad.hide();R.after(ad);ad.slideDown()}else{if(ad){if(R.hasClass("PageListItemOpen")){ad.addClass("PageListItemOpen")}R.replaceWith(ad)}}R.fadeIn("fast",function(){setTimeout(function(){ab.fadeOut("normal",function(){if(ah){var ai=ad.closest(".PageList").prev(".PageListItem").children(".PageListNumChildren");if(ai.length){var aj=parseInt(ai.text());if(aj>0){ai.text(aj-1)}}ad.next(".PageList").fadeOut("fast");ad.fadeOut("fast",function(){ad.remove()})}else{ab.remove()}})},1000)});if(af){var ac=a(".PageListID"+af);if(ac.length){ac.addClass("PageListForceReload");var ae=ac.children("a.PageListPage");if(ac.hasClass("PageListItemOpen")){ae.click();setTimeout(function(){ae.click()},250)}else{ae.click()}}}})}else{Z.remove();ProcessWire.alert(aa.message)}});return false})}else{}var L=a("").addClass("PageListActionExtra PageListAction"+H.cn).append(N);N.hide();if(H.cn=="Trash"){R.addClass("trashable");M=L}else{S.append(L)}}if(M){S.append(M)}S.find(".PageListActionExtra a").fadeIn(50,function(){a(this).css("display","inline-block")});return false}function t(K){var O=a(this);var N=O.parent(".PageListItem");var M=N.data("pageId");if(f&&!N.hasClass("PageListTriggerOpen")){return false}if(E.is(".PageListSorting")||E.is(".PageListSortSaving")){return false}if(N.hasClass("PageListItemOpen")){var H=true;if(N.hasClass("PageListID1")&&!N.hasClass("PageListForceReload")&&d.mode!="select"){var I=a(this).closest(".PageListRoot").find(".PageListItemOpen:not(.PageListID1)");if(I.length){E.find(".PageListItemOpen:not(.PageListID1)").each(function(){a(this).children("a.PageListPage").click()});H=false}}if(H){N.removeClass("PageListItemOpen").next(".PageList").slideUp(d.speed,function(){a(this).remove()})}}else{N.addClass("PageListItemOpen");var J=parseInt(N.children(".PageListNumChildren").text());if(J>0||N.hasClass("PageListForceReload")){f=true;var L=D(M);m(M,N,L,false)}}if(d.mode!="select"){setTimeout(function(){g()},250)}return false}function D(L){var K=0;for(n=0;n1&&a(this).next().find(".PageList:visible").size()==0){return}var O=a("").addClass("PageListPlaceholder").addClass("PageList");O.append(a("").addClass("PageListItem PageListPlaceholderItem").html(" "));a(this).after(O)});var L={stop:q,helper:"PageListItemHelper",items:".PageListItem:not(.PageListItemOpen)",placeholder:"PageListSortPlaceholder",start:function(P,O){a(".PageListSortPlaceholder").css("width",O.item.children(".PageListPage").outerWidth()+"px")}};var I=E.children(".PageList").children(".PageList");var H=a(""+d.selectCancelLabel+"").click(function(){return r(M)});var K=M.children("ul.PageListActions");var J=a(" "+d.moveInstructionLabel+"");J.append(H);K.before(J);M.addClass("PageListSortItem");M.parent(".PageList").attr("id","PageListMoveFrom");E.addClass("PageListSorting");I.addClass("PageListSortingList").sortable(L);return false}function r(I){var H=E.find(".PageListSortingList");H.sortable("destroy").removeClass("PageListSortingList");I.removeClass("PageListSortItem").parent(".PageList").removeAttr("id");I.find(".PageListMoveNote").remove();E.find(".PageListPlaceholder").remove();E.removeClass("PageListSorting");return false}function w(K){var H=E.find(".PageListID"+d.trashPageID);if(!H.hasClass("PageListItemOpen")){E.removeClass("PageListSorting");H.children("a").click();E.addClass("PageListSorting")}var I=H.next(".PageList");if(I.length==0){I=a("");H.after(I)}I.prepend(K);var J={item:K};q(null,J)}function q(N,S){var P=S.item;var K=P.children(".PageListPage");var I=parseInt(P.data("pageId"));var M=P.parent(".PageList");var Q=a("#PageListMoveFrom");var R=M.prev().is(".PageListItem")?M.prev():M.prev().prev();var O=parseInt(R.data("pageId"));var J=P.prev(".PageListItem");if(J.is(".PageListItemOpen")){return false}if(M.is(".PageListPlaceholder")){M.removeClass("PageListPlaceholder").children(".PageListPlaceholderItem").remove()}E.addClass("PageListSortSaving");r(P);P.append(u.fadeIn("fast"));var L="";M.children(".PageListItem").each(function(){L+=a(this).data("pageId")+","});var H={id:I,parent_id:O,sort:L};H[a("#PageListContainer").attr("data-token-name")]=a("#PageListContainer").attr("data-token-value");var T="unknown";a.post(d.ajaxMoveURL,H,function(W){u.fadeOut("fast");K.fadeOut("fast",function(){a(this).fadeIn("fast");P.removeClass("PageListSortItem");E.removeClass("PageListSorting")});if(W&&W.error){ProcessWire.alert(W.message)}if(!M.is("#PageListMoveFrom")){var V=Q.prev(".PageListItem");var U=V.children(".PageListNumChildren");var Y=U.text().length>0?parseInt(U.text())-1:0;if(Y==0){Y="";Q.remove()}U.text(Y);var X=M.prev(".PageListItem");U=X.children(".PageListNumChildren");Y=U.text().length>0?parseInt(U.text())+1:1;U.text(Y)}Q.attr("id","");E.removeClass("PageListSortSaving")},"json");P.trigger("pageMoved");return true}function A(){var N=a(this);var M=N.parent("li").parent("ul.PageListActions").parent(".PageListItem");var L=M.data("pageId");var J=M.children(".PageListPage");var K=J.text();var I=J.attr("title");var H=E.children(".PageListSelectHeader");if(N.text()==d.selectUnselectLabel){L=0;K=""}if(L!=v.val()){v.val(L).change()}if(d.selectShowPageHeader){H.children(".PageListSelectName").text(K)}v.trigger("pageSelected",{id:L,url:I,title:K,a:J});H.find(".PageListSelectActionToggle").click();if(d.selectSelectHref=="#"){return false}return true}y()})}})(jQuery);
\ No newline at end of file