From 00c183e70f253989a54382761ef5a1ad8b450755 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Fri, 13 Oct 2017 08:17:32 -0400 Subject: [PATCH] Some code adjustments in ProcessPageList to support a separate renderReady() method, as well as some tweaks per @EntitySelf evernote document --- wire/core/ProcessWire.php | 2 +- wire/core/WireDebugInfo.php | 2 +- wire/modules/Fieldtype/FieldtypeCache.module | 2 +- .../InputfieldFile/InputfieldFile.module | 3 +- .../InputfieldPageListSelect.module | 1 + .../InputfieldPageListSelectMultiple.module | 1 + .../ProcessPageList/ProcessPageList.js | 4 + .../ProcessPageList/ProcessPageList.min.js | 2 +- .../ProcessPageList/ProcessPageList.module | 136 ++++++++++-------- 9 files changed, 88 insertions(+), 65 deletions(-) diff --git a/wire/core/ProcessWire.php b/wire/core/ProcessWire.php index dc786642..d573571f 100644 --- a/wire/core/ProcessWire.php +++ b/wire/core/ProcessWire.php @@ -804,7 +804,7 @@ class ProcessWire extends Wire { unset($sf, $f, $x); // when internal is true, we are not being called by an external script - $cfg['internal'] = $realIndexFile == $realScriptFile; + $cfg['internal'] = strtolower($realIndexFile) == strtolower($realScriptFile); } else { // when included from another app or command line script diff --git a/wire/core/WireDebugInfo.php b/wire/core/WireDebugInfo.php index 5eee7150..6f9ff52a 100644 --- a/wire/core/WireDebugInfo.php +++ b/wire/core/WireDebugInfo.php @@ -91,7 +91,7 @@ class WireDebugInfo extends Wire { * @return array * */ - protected function Page(Page $page) { + public function Page(Page $page) { $info = array( 'instanceID' => $page->instanceID, diff --git a/wire/modules/Fieldtype/FieldtypeCache.module b/wire/modules/Fieldtype/FieldtypeCache.module index 01e77eac..f3138e09 100644 --- a/wire/modules/Fieldtype/FieldtypeCache.module +++ b/wire/modules/Fieldtype/FieldtypeCache.module @@ -171,7 +171,7 @@ class FieldtypeCache extends Fieldtype { $select->label = 'Fields to cache'; $select->description = 'Select all fields that you would like to be cached.'; $select->notes = - "If you don't have 'autojoin' checked under this field's advanced settings, the you will have to " . + "If you don't have 'autojoin' checked under this field's advanced settings, then you will have to " . "call \$page->{$field->name} before the cached fields will be loaded."; foreach($this->fields as $f) { diff --git a/wire/modules/Inputfield/InputfieldFile/InputfieldFile.module b/wire/modules/Inputfield/InputfieldFile/InputfieldFile.module index d1fa6be6..9c935dfa 100644 --- a/wire/modules/Inputfield/InputfieldFile/InputfieldFile.module +++ b/wire/modules/Inputfield/InputfieldFile/InputfieldFile.module @@ -773,7 +773,8 @@ class InputfieldFile extends Inputfield implements InputfieldItemList, Inputfiel } protected function ___processInputDeleteFile(Pagefile $pagefile) { - $this->message($this->_("Deleted file:") . " $pagefile"); // Label that precedes a deleted filename + $fileLabel = $this->wire('config')->debug ? $pagefile->url() : $pagefile->name; + $this->message($this->_("Deleted file:") . " $fileLabel"); // Label that precedes a deleted filename $this->value->delete($pagefile); $this->trackChange('value'); } diff --git a/wire/modules/Inputfield/InputfieldPageListSelect/InputfieldPageListSelect.module b/wire/modules/Inputfield/InputfieldPageListSelect/InputfieldPageListSelect.module index 58c29173..6912bd39 100644 --- a/wire/modules/Inputfield/InputfieldPageListSelect/InputfieldPageListSelect.module +++ b/wire/modules/Inputfield/InputfieldPageListSelect/InputfieldPageListSelect.module @@ -42,6 +42,7 @@ class InputfieldPageListSelect extends Inputfield implements InputfieldPageListS /** @var ProcessPageList $process */ $process = $this->wire('modules')->get('ProcessPageList'); // prerequisite module $process->setPageLabelField($this->attr('name'), $this->labelFieldName); + $process->renderReady(); } return parent::renderReady($parent, $renderValueMode); } diff --git a/wire/modules/Inputfield/InputfieldPageListSelect/InputfieldPageListSelectMultiple.module b/wire/modules/Inputfield/InputfieldPageListSelect/InputfieldPageListSelectMultiple.module index 1e5cfc8a..3bb43115 100644 --- a/wire/modules/Inputfield/InputfieldPageListSelect/InputfieldPageListSelectMultiple.module +++ b/wire/modules/Inputfield/InputfieldPageListSelect/InputfieldPageListSelectMultiple.module @@ -64,6 +64,7 @@ class InputfieldPageListSelectMultiple extends Inputfield /** @var ProcessPageList $process */ $process = $this->wire('modules')->get('ProcessPageList'); // prerequisite module $process->setPageLabelField($this->attr('name'), $this->labelFieldName); + $process->renderReady(); } return parent::renderReady($parent, $renderValueMode); } diff --git a/wire/modules/Process/ProcessPageList/ProcessPageList.js b/wire/modules/Process/ProcessPageList/ProcessPageList.js index c1e02a0d..f771b731 100644 --- a/wire/modules/Process/ProcessPageList/ProcessPageList.js +++ b/wire/modules/Process/ProcessPageList/ProcessPageList.js @@ -140,6 +140,10 @@ $(document).ready(function() { var ignoreClicks = false; var isModal = $("body").hasClass("modal") || $("body").hasClass("pw-iframe"); + + if(typeof ProcessWire.config.ProcessPageList != "undefined") { + $.extend(options, ProcessWire.config.ProcessPageList); + } $.extend(options, customOptions); diff --git a/wire/modules/Process/ProcessPageList/ProcessPageList.min.js b/wire/modules/Process/ProcessPageList/ProcessPageList.min.js index d0668f62..dfd36a08 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,useNarrowActions:a("body").hasClass("pw-narrow-width"),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);H.on("click",".PageListActionMove a",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(H){var M=a("
      ").data("pageId",H.id).addClass("PageListItem").addClass("PageListTemplate_"+H.template);var I=a("").attr("href","#").attr("title",H.path).html(H.label).addClass("PageListPage label");M.addClass(H.numChildren>0?"PageListHasChildren":"PageListNoChildren").addClass("PageListID"+H.id);if(H.status==0){M.addClass("PageListStatusOff disabled")}if(H.status&2048){M.addClass("PageListStatusUnpublished secondary")}if(H.status&1024){M.addClass("PageListStatusHidden secondary")}if(H.status&512){M.addClass("PageListStatusTemp secondary")}if(H.status&16){M.addClass("PageListStatusSystem")}if(H.status&8){M.addClass("PageListStatusSystem")}if(H.status&4){M.addClass("PageListStatusLocked")}if(H.addClass&&H.addClass.length){M.addClass(H.addClass)}if(H.type&&H.type.length>0){if(H.type=="System"){M.addClass("PageListStatusSystem")}}a(d.openPageIDs).each(function(R,Q){Q=parseInt(Q);if(H.id==Q){M.addClass("PageListTriggerOpen")}});M.append(I);var J=a(""+(H.numChildren?H.numChildren:"")+"").addClass("PageListNumChildren detail");M.append(J);if(H.note&&H.note.length){M.append(a(""+H.note+"").addClass("PageListNote detail"))}var N=a("
        ").addClass("PageListActions actions");var P=d.rootPageID==H.id?[]:[{name:d.selectSelectLabel,url:d.selectSelectHref}];if(d.mode=="actions"){P=H.actions}else{if(d.selectAllowUnselect){if(H.id==v.val()){P=[{name:d.selectUnselectLabel,url:d.selectUnselectHref}]}}}var L=null;var O=null;var K={};a(P).each(function(V,T){var Q;if(T.name==d.selectSelectLabel){Q="Select"}else{if(T.name==d.selectUnselectLabel){Q="Select"}else{Q=T.cn;if(d.useNarrowActions&&(Q!="Edit"&&Q!="View"&&Q!="Extras")){K[Q]=T;return}}}var S=a("").html(T.name).attr("href",T.url);if(!e){if(T.cn=="Edit"){S.addClass("pw-modal pw-modal-large pw-modal-longclick");S.attr("data-buttons","#ProcessPageEdit > .Inputfields > .InputfieldSubmit .ui-button")}else{if(T.cn=="View"){S.addClass("pw-modal pw-modal-large pw-modal-longclick")}}}if(typeof T.extras!="undefined"){for(var R in T.extras){K[R]=T.extras[R]}O=S}var U=a("
      • ").addClass("PageListAction"+Q).append(S);if(Q=="Extras"){L=U}else{N.append(U)}});if(O){O.data("extras",K)}if(L){N.append(L);L.addClass("ui-priority-secondary")}M.append(N);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 +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,useNarrowActions:a("body").hasClass("pw-narrow-width"),spinnerMarkup:"",labelName:""};var b=[];var f=false;var e=a("body").hasClass("modal")||a("body").hasClass("pw-iframe");if(typeof ProcessWire.config.ProcessPageList!="undefined"){a.extend(d,ProcessWire.config.ProcessPageList)}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);H.on("click",".PageListActionMove a",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(H){var M=a("
              ").data("pageId",H.id).addClass("PageListItem").addClass("PageListTemplate_"+H.template);var I=a("").attr("href","#").attr("title",H.path).html(H.label).addClass("PageListPage label");M.addClass(H.numChildren>0?"PageListHasChildren":"PageListNoChildren").addClass("PageListID"+H.id);if(H.status==0){M.addClass("PageListStatusOff disabled")}if(H.status&2048){M.addClass("PageListStatusUnpublished secondary")}if(H.status&1024){M.addClass("PageListStatusHidden secondary")}if(H.status&512){M.addClass("PageListStatusTemp secondary")}if(H.status&16){M.addClass("PageListStatusSystem")}if(H.status&8){M.addClass("PageListStatusSystem")}if(H.status&4){M.addClass("PageListStatusLocked")}if(H.addClass&&H.addClass.length){M.addClass(H.addClass)}if(H.type&&H.type.length>0){if(H.type=="System"){M.addClass("PageListStatusSystem")}}a(d.openPageIDs).each(function(R,Q){Q=parseInt(Q);if(H.id==Q){M.addClass("PageListTriggerOpen")}});M.append(I);var J=a(""+(H.numChildren?H.numChildren:"")+"").addClass("PageListNumChildren detail");M.append(J);if(H.note&&H.note.length){M.append(a(""+H.note+"").addClass("PageListNote detail"))}var N=a("
                ").addClass("PageListActions actions");var P=d.rootPageID==H.id?[]:[{name:d.selectSelectLabel,url:d.selectSelectHref}];if(d.mode=="actions"){P=H.actions}else{if(d.selectAllowUnselect){if(H.id==v.val()){P=[{name:d.selectUnselectLabel,url:d.selectUnselectHref}]}}}var L=null;var O=null;var K={};a(P).each(function(V,T){var Q;if(T.name==d.selectSelectLabel){Q="Select"}else{if(T.name==d.selectUnselectLabel){Q="Select"}else{Q=T.cn;if(d.useNarrowActions&&(Q!="Edit"&&Q!="View"&&Q!="Extras")){K[Q]=T;return}}}var S=a("").html(T.name).attr("href",T.url);if(!e){if(T.cn=="Edit"){S.addClass("pw-modal pw-modal-large pw-modal-longclick");S.attr("data-buttons","#ProcessPageEdit > .Inputfields > .InputfieldSubmit .ui-button")}else{if(T.cn=="View"){S.addClass("pw-modal pw-modal-large pw-modal-longclick")}}}if(typeof T.extras!="undefined"){for(var R in T.extras){K[R]=T.extras[R]}O=S}var U=a("
              • ").addClass("PageListAction"+Q).append(S);if(Q=="Extras"){L=U}else{N.append(U)}});if(O){O.data("extras",K)}if(L){N.append(L);L.addClass("ui-priority-secondary")}M.append(N);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 diff --git a/wire/modules/Process/ProcessPageList/ProcessPageList.module b/wire/modules/Process/ProcessPageList/ProcessPageList.module index 622f05ed..16683816 100644 --- a/wire/modules/Process/ProcessPageList/ProcessPageList.module +++ b/wire/modules/Process/ProcessPageList/ProcessPageList.module @@ -212,70 +212,97 @@ class ProcessPageList extends Process implements ConfigurableModule { protected function render() { $this->setupBreadcrumbs(); - if($this->render) return $this->getPageListRender($this->page)->render(); + + if($this->render) { + return $this->getPageListRender($this->page)->render(); + } + + $session = $this->wire('session'); + $input = $this->wire('input'); + $isAjax = $this->wire('config')->ajax; + $tokenName = $session->CSRF->getTokenName(); + $tokenValue = $session->CSRF->getTokenValue(); + $class = $this->id ? "PageListContainerPage" : "PageListContainerRoot"; + $script = ''; + + $this->renderReady(); + + if($isAjax && $input->get('renderInputfieldAjax')) { + $script = ""; + } + + return "\n" . + "
                " . + "
                $script"; + } + /** + * Setup for render + * + */ + public function renderReady() { + $input = $this->wire('input'); $config = $this->wire('config'); - $session = $this->wire('session'); $urls = $config->urls; $isAjax = $config->ajax; $openPageIDs = array(); $openPageData = array(); - $script = ''; - - if($this->openPage->id > 1) { - $openPageIDs[] = $this->openPage->id; - foreach($this->openPage->parents() as $parent) { - if($parent->id > 1 && $parent->id != $this->id) $openPageIDs[] = $parent->id; - } - } else if(!$isAjax && $this->wire('page')->process == $this) { - if($this->id) { - // leave openPageIDs as empty array - } else { - $openPageIDs = $input->cookie->array('pagelist_open'); - } - } - - if($isAjax) { - if($input->get('renderInputfieldAjax')) { - $script = ""; - } - } else if(count($openPageIDs)) { - $render = $this->render; - $this->render = 'JSON'; - foreach($openPageIDs as $key => $openPageID) { - if(strpos($openPageID, '-')) { - list($openPageID, $openPageStart) = explode('-', $openPageID); - $openPageStart = (int) $openPageStart; - } else { - $openPageStart = 0; + + if($this->openPage) { + if($this->openPage->id > 1) { + $openPageIDs[] = $this->openPage->id; + foreach($this->openPage->parents() as $parent) { + if($parent->id > 1 && $parent->id != $this->id) $openPageIDs[] = $parent->id; + } + } else if(!$isAjax && $this->wire('page')->process == $this) { + if($this->id) { + // leave openPageIDs as empty array + } else { + $openPageIDs = $input->cookie->array('pagelist_open'); } - $openPageID = (int) $openPageID; - $openPageIDs[$key] = "$openPageID-$openPageStart"; - $p = $this->wire('pages')->get($openPageID); - if(!$p->id || !$p->listable()) continue; - $renderer = $this->getPageListRender($p, $this->limit, $openPageStart); - $openPageData["$openPageID-$openPageStart"] = $renderer->setOption('getArray', true)->render(); } - $this->render = $render; + + if(!$isAjax && count($openPageIDs)) { + $render = $this->render; + $this->render = 'JSON'; + foreach($openPageIDs as $key => $openPageID) { + if(strpos($openPageID, '-')) { + list($openPageID, $openPageStart) = explode('-', $openPageID); + $openPageStart = (int) $openPageStart; + } else { + $openPageStart = 0; + } + $openPageID = (int) $openPageID; + $openPageIDs[$key] = "$openPageID-$openPageStart"; + $p = $this->wire('pages')->get($openPageID); + if(!$p->id || !$p->listable()) continue; + $renderer = $this->getPageListRender($p, $this->limit, $openPageStart); + $openPageData["$openPageID-$openPageStart"] = $renderer->setOption('getArray', true)->render(); + } + $this->render = $render; + } } $defaults = array( - 'containerID' => 'PageListContainer', - 'ajaxURL' => $urls->admin . "page/list/", + 'containerID' => 'PageListContainer', + 'ajaxURL' => $urls->admin . "page/list/", 'ajaxMoveURL' => $urls->admin . "page/sort/", - 'rootPageID' => $this->id, - 'openPageIDs' => $openPageIDs, + 'rootPageID' => $this->id, + 'openPageIDs' => $openPageIDs, 'openPageData' => $openPageData, - 'openPagination' => (int) $input->get('n'), - 'paginationClass' => 'PageListPagination', - 'showRootPage' => $this->showRootPage ? true : false, - 'limit' => $this->limit, - 'start' => $this->start, + 'openPagination' => (int) $input->get('n'), + 'paginationClass' => 'PageListPagination', + 'showRootPage' => $this->showRootPage ? true : false, + 'limit' => $this->limit, + 'start' => $this->start, 'speed' => ($this->speed !== null ? (int) $this->speed : self::defaultSpeed), - 'useHoverActions' => $this->useHoverActions ? true : false, + 'useHoverActions' => $this->useHoverActions ? true : false, 'hoverActionDelay' => (int) $this->hoverActionDelay, - 'hoverActionFade' => (int) $this->hoverActionFade, + 'hoverActionFade' => (int) $this->hoverActionFade, 'selectStartLabel' => $this->_('Change'), // Change a page selection 'selectCancelLabel' => $this->_('Cancel'), // Cancel a page selection 'selectSelectLabel' => $this->_('Select'), // Select a page @@ -285,21 +312,10 @@ class ProcessPageList extends Process implements ConfigurableModule { 'trashLabel' => $this->trashLabel, 'ajaxNetworkError' => $this->_('Network error, please try again later'), // Network error during AJAX request 'ajaxUnknownError' => $this->_('Unknown error, please try again later'), // Unknown error during AJAX request - ); + ); $settings = $config->ProcessPageList; $settings = is_array($settings) ? array_merge($defaults, $settings) : $defaults; $config->js('ProcessPageList', $settings); - - $tokenName = $session->CSRF->getTokenName(); - $tokenValue = $session->CSRF->getTokenValue(); - $class = $this->id ? "PageListContainerPage" : "PageListContainerRoot"; - - return "\n" . - "
                " . - "
                $script"; } /**