diff --git a/admin/client/dist/js/LeftAndMain.BatchActions.js b/admin/client/dist/js/LeftAndMain.BatchActions.js
index baa9d333c..6668ec8b0 100644
--- a/admin/client/dist/js/LeftAndMain.BatchActions.js
+++ b/admin/client/dist/js/LeftAndMain.BatchActions.js
@@ -41,32 +41,32 @@
},
registerDefault: function registerDefault() {
- this.register('admin/pages/batchactions/publish', function (ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/publish', function (ids) {
var confirmed = confirm(_i18n2.default.inject(_i18n2.default._t("CMSMAIN.BATCH_PUBLISH_PROMPT", "You have {num} page(s) selected.\n\nDo you really want to publish?"), { 'num': ids.length }));
return confirmed ? ids : false;
});
- this.register('admin/pages/batchactions/unpublish', function (ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/unpublish', function (ids) {
var confirmed = confirm(_i18n2.default.inject(_i18n2.default._t("CMSMAIN.BATCH_UNPUBLISH_PROMPT", "You have {num} page(s) selected.\n\nDo you really want to unpublish"), { 'num': ids.length }));
return confirmed ? ids : false;
});
- this.register('admin/pages/batchactions/delete', function (ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/delete', function (ids) {
var confirmed = confirm(_i18n2.default.inject(_i18n2.default._t("CMSMAIN.BATCH_DELETE_PROMPT", "You have {num} page(s) selected.\n\nDo you really want to delete?"), { 'num': ids.length }));
return confirmed ? ids : false;
});
- this.register('admin/pages/batchactions/archive', function (ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/archive', function (ids) {
var confirmed = confirm(_i18n2.default.inject(_i18n2.default._t("CMSMAIN.BATCH_ARCHIVE_PROMPT", "You have {num} page(s) selected.\n\nAre you sure you want to archive these pages?\n\nThese pages and all of their children pages will be unpublished and sent to the archive."), { 'num': ids.length }));
return confirmed ? ids : false;
});
- this.register('admin/pages/batchactions/restore', function (ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/restore', function (ids) {
var confirmed = confirm(_i18n2.default.inject(_i18n2.default._t("CMSMAIN.BATCH_RESTORE_PROMPT", "You have {num} page(s) selected.\n\nDo you really want to restore to stage?\n\nChildren of archived pages will be restored to the root level, unless those pages are also being restored."), { 'num': ids.length }));
return confirmed ? ids : false;
});
- this.register('admin/pages/batchactions/deletefromlive', function (ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/deletefromlive', function (ids) {
var confirmed = confirm(_i18n2.default.inject(_i18n2.default._t("CMSMAIN.BATCH_DELETELIVE_PROMPT", "You have {num} page(s) selected.\n\nDo you really want to delete these pages from live?"), { 'num': ids.length }));
return confirmed ? ids : false;
});
diff --git a/admin/client/dist/js/bundle-legacy.js b/admin/client/dist/js/bundle-legacy.js
index 76ea94c3e..99a3e73e0 100644
--- a/admin/client/dist/js/bundle-legacy.js
+++ b/admin/client/dist/js/bundle-legacy.js
@@ -1,4 +1,4 @@
-!function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o'),$("body").append(dialog)),0===dialog.children().length&&dialog.addClass("loading");var form=this.closest("form"),button=this,formData=form.serializeArray();return formData.push({name:button.attr("name"),value:"1"}),$.ajax({url:form.attr("action"),data:formData,type:"POST",global:!1,complete:function(){dialog.removeClass("loading")},success:function(data,status,xhr){if(0===xhr.getResponseHeader("Content-Type").indexOf("text/plain")){var container=$('
');container.find("span").text(data),dialog.append(container)}else dialog.html(data)},error:function error(xhr){var error=xhr.responseText||"Something went wrong. Please try again in a few minutes.",container=$('
');container.find("span").text(error),dialog.append(container)}}),!1}}),$("#add-to-campaign__dialog").entwine({onadd:function(){this.is(".ui-dialog-content")||this.ssdialog({autoOpen:!0,minHeight:200,maxHeight:200,minWidth:200,maxWidth:500}),this._super()},open:function(){this.ssdialog("open")},close:function(){this.ssdialog("close")},onssdialogclose:function(){this.empty()},"onchosen:showing_dropdown":function(){this.css({overflow:"visible"})},"onchosen:hiding_dropdown":function(){this.css({overflow:""})}})})},{jQuery:"jQuery"}],3:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss",function($){$(".ss-tabset.ss-ui-action-tabset").entwine({IgnoreTabState:!0,onadd:function(){this._super(),this.tabs({collapsible:!0,active:!1})},onremove:function(){var frame=$(".cms-container").find("iframe");frame.each(function(index,iframe){try{$(iframe).contents().off("click.ss-ui-action-tabset")}catch(e){console.warn("Unable to access iframe, possible https mis-match")}}),$(document).off("click.ss-ui-action-tabset"),this._super()},ontabsbeforeactivate:function(event,ui){this.riseUp(event,ui)},onclick:function(event,ui){this.attachCloseHandler(event,ui)},attachCloseHandler:function(event,ui){var _closeHandler,that=this,frame=$(".cms-container").find("iframe");_closeHandler=function(event){var panel,frame;panel=$(event.target).closest(".ss-ui-action-tabset .ui-tabs-panel"),$(event.target).closest(that).length||panel.length||(that.tabs("option","active",!1),frame=$(".cms-container").find("iframe"),frame.each(function(index,iframe){$(iframe).contents().off("click.ss-ui-action-tabset",_closeHandler)}),$(document).off("click.ss-ui-action-tabset",_closeHandler))},$(document).on("click.ss-ui-action-tabset",_closeHandler),frame.length>0&&frame.each(function(index,iframe){$(iframe).contents().on("click.ss-ui-action-tabset",_closeHandler)})},riseUp:function(event,ui){var elHeight,trigger,endOfWindow,elPos,activePanel,activeTab,topPosition,containerSouth,padding;return elHeight=$(this).find(".ui-tabs-panel").outerHeight(),trigger=$(this).find(".ui-tabs-nav").outerHeight(),endOfWindow=$(window).height()+$(document).scrollTop()-trigger,elPos=$(this).find(".ui-tabs-nav").offset().top,activePanel=ui.newPanel,activeTab=ui.newTab,elPos+elHeight>=endOfWindow&&elPos-elHeight>0?(this.addClass("rise-up"),null!==activeTab.position()&&(topPosition=-activePanel.outerHeight(),containerSouth=activePanel.parents(".toolbar--south"),containerSouth&&(padding=activeTab.offset().top-containerSouth.offset().top,topPosition-=padding),$(activePanel).css("top",topPosition+"px"))):(this.removeClass("rise-up"),null!==activeTab.position()&&$(activePanel).css("bottom","100%")),!1}}),$(".cms-content-actions .ss-tabset.ss-ui-action-tabset").entwine({ontabsbeforeactivate:function(event,ui){this._super(event,ui),$(ui.newPanel).length>0&&$(ui.newPanel).css("left",ui.newTab.position().left+"px")}}),$(".cms-actions-row.ss-tabset.ss-ui-action-tabset").entwine({ontabsbeforeactivate:function(event,ui){this._super(event,ui),$(this).closest(".ss-ui-action-tabset").removeClass("tabset-open tabset-open-last")}}),$(".cms-content-fields .ss-tabset.ss-ui-action-tabset").entwine({ontabsbeforeactivate:function(event,ui){this._super(event,ui),$(ui.newPanel).length>0&&($(ui.newTab).hasClass("last")?($(ui.newPanel).css({left:"auto",right:"0px"}),$(ui.newPanel).parent().addClass("tabset-open-last")):($(ui.newPanel).css("left",ui.newTab.position().left+"px"),$(ui.newTab).hasClass("first")&&($(ui.newPanel).css("left","0px"),$(ui.newPanel).parent().addClass("tabset-open"))))}}),$(".cms-tree-view-sidebar .cms-actions-row.ss-tabset.ss-ui-action-tabset").entwine({"from .ui-tabs-nav li":{onhover:function(e){$(e.target).parent().find("li .active").removeClass("active"),$(e.target).find("a").addClass("active")}},ontabsbeforeactivate:function(event,ui){this._super(event,ui),$(ui.newPanel).css({left:"auto",right:"auto"}),$(ui.newPanel).length>0&&$(ui.newPanel).parent().addClass("tabset-open")}})})},{jQuery:"jQuery"}],4:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery),_i18n=require("i18n"),_i18n2=_interopRequireDefault(_i18n);_jQuery2["default"].entwine("ss.tree",function($){$("#Form_BatchActionsForm").entwine({Actions:[],getTree:function(){return $(".cms-tree")},fromTree:{oncheck_node:function(e,data){this.serializeFromTree()},onuncheck_node:function(e,data){this.serializeFromTree()}},registerDefault:function(){this.register("admin/pages/batchactions/publish",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_PUBLISH_PROMPT","You have {num} page(s) selected.\n\nDo you really want to publish?"),{num:ids.length}));return confirmed?ids:!1}),this.register("admin/pages/batchactions/unpublish",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_UNPUBLISH_PROMPT","You have {num} page(s) selected.\n\nDo you really want to unpublish"),{num:ids.length}));return confirmed?ids:!1}),this.register("admin/pages/batchactions/delete",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_DELETE_PROMPT","You have {num} page(s) selected.\n\nDo you really want to delete?"),{num:ids.length}));return confirmed?ids:!1}),this.register("admin/pages/batchactions/archive",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_ARCHIVE_PROMPT","You have {num} page(s) selected.\n\nAre you sure you want to archive these pages?\n\nThese pages and all of their children pages will be unpublished and sent to the archive."),{num:ids.length}));return confirmed?ids:!1}),this.register("admin/pages/batchactions/restore",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_RESTORE_PROMPT","You have {num} page(s) selected.\n\nDo you really want to restore to stage?\n\nChildren of archived pages will be restored to the root level, unless those pages are also being restored."),{num:ids.length}));return confirmed?ids:!1}),this.register("admin/pages/batchactions/deletefromlive",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_DELETELIVE_PROMPT","You have {num} page(s) selected.\n\nDo you really want to delete these pages from live?"),{num:ids.length}));return confirmed?ids:!1})},onadd:function(){this.registerDefault(),this._super()},register:function(type,callback){this.trigger("register",{type:type,callback:callback});var actions=this.getActions();actions[type]=callback,this.setActions(actions)},unregister:function(type){this.trigger("unregister",{type:type});var actions=this.getActions();actions[type]&&delete actions[type],this.setActions(actions)},refreshSelected:function(rootNode){var self=this,st=this.getTree(),ids=this.getIDs(),allIds=[],viewMode=$(".cms-content-batchactions-button"),actionUrl=this.find(":input[name=Action]").val();null==rootNode&&(rootNode=st);for(var idx in ids)$($(st).getNodeByID(idx)).addClass("selected").attr("selected","selected");if(!actionUrl||-1==actionUrl||!viewMode.hasClass("active"))return void $(rootNode).find("li").each(function(){$(this).setEnabled(!0)});$(rootNode).find("li").each(function(){allIds.push($(this).data("id")),$(this).addClass("treeloading").setEnabled(!1)});var actionUrlParts=$.path.parseUrl(actionUrl),applicablePagesUrl=actionUrlParts.hrefNoSearch+"/applicablepages/";applicablePagesUrl=$.path.addSearchParams(applicablePagesUrl,actionUrlParts.search),applicablePagesUrl=$.path.addSearchParams(applicablePagesUrl,{csvIDs:allIds.join(",")}),jQuery.getJSON(applicablePagesUrl,function(applicableIDs){jQuery(rootNode).find("li").each(function(){$(this).removeClass("treeloading");var id=$(this).data("id");0==id||$.inArray(id,applicableIDs)>=0?$(this).setEnabled(!0):($(this).removeClass("selected").setEnabled(!1),$(this).prop("selected",!1))}),self.serializeFromTree()})},serializeFromTree:function(){var tree=this.getTree(),ids=tree.getSelectedIDs();return this.setIDs(ids),!0},setIDs:function(ids){this.find(":input[name=csvIDs]").val(ids?ids.join(","):null)},getIDs:function(){var value=this.find(":input[name=csvIDs]").val();return value?value.split(","):[]},onsubmit:function(e){var self=this,ids=this.getIDs(),tree=this.getTree(),actions=this.getActions();if(!ids||!ids.length)return alert(_i18n2["default"]._t("CMSMAIN.SELECTONEPAGE","Please select at least one page")),e.preventDefault(),!1;var type=this.find(":input[name=Action]").val();if(actions[type]&&(ids=this.getActions()[type].apply(this,[ids])),!ids||!ids.length)return e.preventDefault(),!1;this.setIDs(ids),tree.find("li").removeClass("failed");var button=this.find(":submit:first");return button.addClass("loading"),jQuery.ajax({url:type,type:"POST",data:this.serializeArray(),complete:function(xmlhttp,status){button.removeClass("loading"),tree.jstree("refresh",-1),self.setIDs([]),self.find(":input[name=Action]").val("").change();var msg=xmlhttp.getResponseHeader("X-Status");msg&&statusMessage(decodeURIComponent(msg),"success"==status?"good":"bad")},success:function(data,status){var id,node;if(data.modified){var modifiedNodes=[];for(id in data.modified)node=tree.getNodeByID(id),tree.jstree("set_text",node,data.modified[id].TreeTitle),modifiedNodes.push(node);$(modifiedNodes).effect("highlight")}if(data.deleted)for(id in data.deleted)node=tree.getNodeByID(id),node.length&&tree.jstree("delete_node",node);if(data.error)for(id in data.error)node=tree.getNodeByID(id),$(node).addClass("failed")},dataType:"json"}),e.preventDefault(),!1}}),$(".cms-content-batchactions-button").entwine({onmatch:function(){this._super(),this.updateTree()},onunmatch:function(){this._super()},onclick:function(e){this.updateTree()},updateTree:function(){var tree=$(".cms-tree"),form=$("#Form_BatchActionsForm");this._super(),this.data("active")?(tree.addClass("multiple"),tree.removeClass("draggable"),form.serializeFromTree()):(tree.removeClass("multiple"),tree.addClass("draggable")),$("#Form_BatchActionsForm").refreshSelected()}}),$("#Form_BatchActionsForm select[name=Action]").entwine({onchange:function(e){var form=$(e.target.form),btn=form.find(":submit"),selected=$(e.target).val();selected&&-1!=selected?btn.removeAttr("disabled").button("refresh"):btn.attr("disabled","disabled").button("refresh"),$("#Form_BatchActionsForm").refreshSelected(),this.trigger("chosen:updated"),this._super(e)}})})},{i18n:"i18n",jQuery:"jQuery"}],5:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss",function($){$(".cms-content").entwine({onadd:function(){this.find(".cms-tabset").redrawTabs(),this._super()},redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.add(this.find(".cms-tabset")).redrawTabs(),this.find(".cms-content-header").redraw(),this.find(".cms-content-actions").redraw()}}),$(".cms-content .cms-tree").entwine({onadd:function(){var self=this;this._super(),this.bind("select_node.jstree",function(e,data){var node=data.rslt.obj,loadedNodeID=self.find(":input[name=ID]").val(),origEvent=data.args[2],container=$(".cms-container");if(!origEvent)return!1;if($(node).hasClass("disabled"))return!1;if($(node).data("id")!=loadedNodeID){var url=$(node).find("a:first").attr("href");url&&"#"!=url?(url=url.split("?")[0],self.jstree("deselect_all"),self.jstree("uncheck_all"),$.path.isExternal($(node).find("a:first"))&&(url=url=$.path.makeUrlAbsolute(url,$("base").attr("href"))),document.location.search&&(url=$.path.addSearchParams(url,document.location.search.replace(/^\?/,""))),container.loadPanel(url)):self.removeForm()}})}}),$(".cms-content .cms-content-fields").entwine({redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0))}}),$(".cms-content .cms-content-header, .cms-content .cms-content-actions").entwine({redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.height("auto"),this.height(this.innerHeight()-this.css("padding-top")-this.css("padding-bottom"))}})})},{jQuery:"jQuery"}],6:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery),_i18n=require("i18n"),_i18n2=_interopRequireDefault(_i18n);window.onbeforeunload=function(e){var form=(0,_jQuery2["default"])(".cms-edit-form");return form.trigger("beforesubmitform"),form.is(".changed")&&!form.is(".discardchanges")?_i18n2["default"]._t("LeftAndMain.CONFIRMUNSAVEDSHORT"):void 0},_jQuery2["default"].entwine("ss",function($){$(".cms-edit-form").entwine({PlaceholderHtml:"",ChangeTrackerOptions:{ignoreFieldSelector:".no-change-track, .ss-upload :input, .cms-navigator :input"},ValidationErrorShown:!1,onadd:function(){this.attr("autocomplete","off"),this._setupChangeTracker();for(var overrideAttr in{action:!0,method:!0,enctype:!0,name:!0}){var el=this.find(":input[name=_form_"+overrideAttr+"]");el&&(this.attr(overrideAttr,el.val()),el.remove())}this.setValidationErrorShown(!1),this._super()},"from .cms-tabset":{onafterredrawtabs:function(){if(this.hasClass("validationerror")){var tabError=this.find(".message.validation, .message.required").first().closest(".tab");$(".cms-container").clearCurrentTabState();var $tabSet=tabError.closest(".ss-tabset");$tabSet.length||($tabSet=tabError.closest(".cms-tabset")),$tabSet.length?$tabSet.tabs("option","active",tabError.index(".tab")):this.getValidationErrorShown()||(this.setValidationErrorShown(!0),errorMessage(ss.i18n._t("ModelAdmin.VALIDATIONERROR","Validation Error")))}}},onremove:function(){this.changetracker("destroy"),this._super()},onmatch:function(){this._super()},onunmatch:function(){this._super()},redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.add(this.find(".cms-tabset")).redrawTabs(),this.find(".cms-content-header").redraw()},_setupChangeTracker:function(){this.changetracker(this.getChangeTrackerOptions())},confirmUnsavedChanges:function(){if(this.trigger("beforesubmitform"),!this.is(".changed")||this.is(".discardchanges"))return!0;var confirmed=confirm(_i18n2["default"]._t("LeftAndMain.CONFIRMUNSAVED"));return confirmed&&this.addClass("discardchanges"),confirmed},onsubmit:function(e,button){return"_blank"!=this.prop("target")?(button&&this.closest(".cms-container").submitForm(this,button),!1):void 0},validate:function(){var isValid=!0;return this.trigger("validate",{isValid:isValid}),isValid},"from .htmleditor":{oneditorinit:function(e){var self=this,field=$(e.target).closest(".field.htmleditor"),editor=field.find("textarea.htmleditor").getEditor().getInstance();editor.onClick.add(function(e){self.saveFieldFocus(field.attr("id"))})}},"from .cms-edit-form :input:not(:submit)":{onclick:function(e){this.saveFieldFocus($(e.target).attr("id"))},onfocus:function(e){this.saveFieldFocus($(e.target).attr("id"))}},"from .cms-edit-form .treedropdown *":{onfocusin:function(e){var field=$(e.target).closest(".field.treedropdown");this.saveFieldFocus(field.attr("id"))}},"from .cms-edit-form .dropdown .chosen-container a":{onfocusin:function(e){var field=$(e.target).closest(".field.dropdown");this.saveFieldFocus(field.attr("id"))}},"from .cms-container":{ontabstaterestored:function(e){this.restoreFieldFocus()}},saveFieldFocus:function(selected){if("undefined"!=typeof window.sessionStorage&&null!==window.sessionStorage){var id=$(this).attr("id"),focusElements=[];if(focusElements.push({id:id,selected:selected}),focusElements)try{window.sessionStorage.setItem(id,JSON.stringify(focusElements))}catch(err){if(err.code===DOMException.QUOTA_EXCEEDED_ERR&&0===window.sessionStorage.length)return;throw err}}},restoreFieldFocus:function(){if("undefined"!=typeof window.sessionStorage&&null!==window.sessionStorage){var elementID,activeTab,elementTab,toggleComposite,scrollY,self=this,hasSessionStorage="undefined"!=typeof window.sessionStorage&&window.sessionStorage,sessionData=hasSessionStorage?window.sessionStorage.getItem(this.attr("id")):null,sessionStates=sessionData?JSON.parse(sessionData):!1,tabbed=0!==this.find(".ss-tabset").length;if(hasSessionStorage&&sessionStates.length>0){if($.each(sessionStates,function(i,sessionState){self.is("#"+sessionState.id)&&(elementID=$("#"+sessionState.selected))}),$(elementID).length<1)return void this.focusFirstInput();if(activeTab=$(elementID).closest(".ss-tabset").find(".ui-tabs-nav .ui-tabs-active .ui-tabs-anchor").attr("id"),elementTab="tab-"+$(elementID).closest(".ss-tabset .ui-tabs-panel").attr("id"),tabbed&&elementTab!==activeTab)return;toggleComposite=$(elementID).closest(".togglecomposite"),toggleComposite.length>0&&toggleComposite.accordion("activate",toggleComposite.find(".ui-accordion-header")),scrollY=$(elementID).position().top,$(elementID).is(":visible")||(elementID="#"+$(elementID).closest(".field").attr("id"),scrollY=$(elementID).position().top),$(elementID).focus(),scrollY>$(window).height()/2&&self.find(".cms-content-fields").scrollTop(scrollY)}else this.focusFirstInput()}},focusFirstInput:function(){this.find(':input:not(:submit)[data-skip-autofocus!="true"]').filter(":visible:first").focus()}}),$(".cms-edit-form .btn-toolbar input.action[type=submit], .cms-edit-form .btn-toolbar button.action").entwine({onclick:function(e){return this.hasClass("gridfield-button-delete")&&!confirm(_i18n2["default"]._t("TABLEFIELD.DELETECONFIRMMESSAGE"))?(e.preventDefault(),!1):(this.is(":disabled")||this.parents("form").trigger("submit",[this]),e.preventDefault(),!1)}}),$(".cms-edit-form .btn-toolbar input.action[type=submit].ss-ui-action-cancel, .cms-edit-form .btn-toolbar button.action.ss-ui-action-cancel").entwine({onclick:function(e){window.history.length>1?window.history.back():this.parents("form").trigger("submit",[this]),e.preventDefault()}}),$(".cms-edit-form .ss-tabset").entwine({onmatch:function(){if(!this.hasClass("ss-ui-action-tabset")){var tabs=this.find("> ul:first");1==tabs.children("li").length&&tabs.hide().parent().addClass("ss-tabset-tabshidden")}this._super()},onunmatch:function(){this._super()}})})},{i18n:"i18n",jQuery:"jQuery"}],7:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss",function($){$(".cms-description-toggle").entwine({onadd:function(){var shown=!1,fieldId=this.prop("id").substr(0,this.prop("id").indexOf("_Holder")),$trigger=this.find(".cms-description-trigger"),$description=this.find(".description");this.hasClass("description-toggle-enabled")||(0===$trigger.length&&($trigger=this.find(".middleColumn").first().after('').next()),this.addClass("description-toggle-enabled"),$trigger.on("click",function(){$description[shown?"hide":"show"](),shown=!shown}),$description.hide())}})})},{jQuery:"jQuery"}],8:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss",function($){$(".cms .field.cms-description-tooltip").entwine({onmatch:function(){this._super();var descriptionEl=this.find(".description");descriptionEl.length&&(this.attr("title",descriptionEl.text()).tooltip({content:descriptionEl.html()}),descriptionEl.remove())}}),$(".cms .field.cms-description-tooltip :input").entwine({onfocusin:function(e){this.closest(".field").tooltip("open")},onfocusout:function(e){this.closest(".field").tooltip("close")}})})},{jQuery:"jQuery"}],9:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].fn.layout.defaults.resize=!1,jLayout="undefined"==typeof jLayout?{}:jLayout,jLayout.threeColumnCompressor=function(spec,options){function typeLayout(type){var func=type+"Size";return function(container){var menuSize=menu[func](),contentSize=content[func](),previewSize=preview[func](),insets=container.insets();return width=menuSize.width+contentSize.width+previewSize.width,height=Math.max(menuSize.height,contentSize.height,previewSize.height),{width:insets.left+insets.right+width,height:insets.top+insets.bottom+height}}}if("undefined"==typeof spec.menu||"undefined"==typeof spec.content||"undefined"==typeof spec.preview)throw'Spec is invalid. Please provide "menu", "content" and "preview" elements.';if("undefined"==typeof options.minContentWidth||"undefined"==typeof options.minPreviewWidth||"undefined"==typeof options.mode)throw'Spec is invalid. Please provide "minContentWidth", "minPreviewWidth", "mode"';if("split"!==options.mode&&"content"!==options.mode&&"preview"!==options.mode)throw'Spec is invalid. "mode" should be either "split", "content" or "preview"';var obj={options:options},menu=_jQuery2["default"].jLayoutWrap(spec.menu),content=_jQuery2["default"].jLayoutWrap(spec.content),preview=_jQuery2["default"].jLayoutWrap(spec.preview);return obj.layout=function(container){var size=container.bounds(),insets=container.insets(),top=insets.top,bottom=size.height-insets.bottom,left=insets.left,right=size.width-insets.right,menuWidth=spec.menu.width(),contentWidth=0,previewWidth=0;"preview"===this.options.mode?(contentWidth=0,previewWidth=right-left-menuWidth):"content"===this.options.mode?(contentWidth=right-left-menuWidth,previewWidth=0):(contentWidth=(right-left-menuWidth)/2,previewWidth=right-left-(menuWidth+contentWidth),contentWidth').fadeIn(),par.children(".child-flyout-indicator").fadeIn()}},siteTreePresent:function(){return $("#cms-content-tools-CMSMain").length>0},getPersistedStickyState:function(){var persistedState,cookieValue;return void 0!==$.cookie&&(cookieValue=$.cookie("cms-menu-sticky"),void 0!==cookieValue&&null!==cookieValue&&(persistedState="true"===cookieValue)),persistedState},setPersistedStickyState:function(isSticky){void 0!==$.cookie&&$.cookie("cms-menu-sticky",isSticky,{path:"/",expires:31})},getEvaluatedCollapsedState:function(){var shouldCollapse,manualState=this.getPersistedCollapsedState(),menuIsSticky=$(".cms-menu").getPersistedStickyState(),automaticState=this.siteTreePresent();return shouldCollapse=void 0===manualState?automaticState:manualState!==automaticState&&menuIsSticky?manualState:automaticState},onadd:function(){var self=this;setTimeout(function(){self.togglePanel(!self.getEvaluatedCollapsedState(),!1,!1)},0),$(window).on("ajaxComplete",function(e){setTimeout(function(){self.togglePanel(!self.getEvaluatedCollapsedState(),!1,!1)},0)}),this._super()}}),$(".cms-menu-list").entwine({onmatch:function(){this.find("li.current").select(),this.updateItems(),this._super()},onunmatch:function(){this._super()},updateMenuFromResponse:function(xhr){var controller=xhr.getResponseHeader("X-Controller");if(controller){var item=this.find("li#Menu-"+controller.replace(/\\/g,"-").replace(/[^a-zA-Z0-9\-_:.]+/,""));item.hasClass("current")||item.select()}this.updateItems()},"from .cms-container":{onafterstatechange:function(e,data){this.updateMenuFromResponse(data.xhr)},onaftersubmitform:function(e,data){this.updateMenuFromResponse(data.xhr)}},"from .cms-edit-form":{onrelodeditform:function(e,data){this.updateMenuFromResponse(data.xmlhttp)}},getContainingPanel:function(){return this.closest(".cms-panel")},fromContainingPanel:{ontoggle:function(e){this.toggleClass("collapsed",$(e.target).hasClass("collapsed")),$(".cms-container").trigger("windowresize"),this.hasClass("collapsed")&&this.find("li.children.opened").removeClass("opened"),this.hasClass("collapsed")||$(".toggle-children.opened").closest("li").addClass("opened")}},updateItems:function(){var editPageItem=this.find("#Menu-CMSMain");editPageItem[editPageItem.is(".current")?"show":"hide"]();var currentID=$(".cms-content input[name=ID]").val();currentID&&this.find("li").each(function(){$.isFunction($(this).setRecordID)&&$(this).setRecordID(currentID)})}}),$(".cms-menu-list li").entwine({toggleFlyout:function(bool){var fly=$(this);if(fly.children("ul").first().hasClass("collapsed-flyout"))if(bool){if(!fly.children("ul").first().children("li").first().hasClass("clone")){var li=fly.clone();li.addClass("clone").css({}),li.children("ul").first().remove(),li.find("span").not(".text").remove(),li.find("a").first().unbind("click"),fly.children("ul").prepend(li)}$(".collapsed-flyout").show(),fly.addClass("opened"),fly.children("ul").find("li").fadeIn("fast")}else li&&li.remove(),$(".collapsed-flyout").hide(),fly.removeClass("opened"),fly.find("toggle-children").removeClass("opened"),fly.children("ul").find("li").hide()}}),$(".cms-menu-list li").hoverIntent(function(){$(this).toggleFlyout(!0)},function(){$(this).toggleFlyout(!1)}),$(".cms-menu-list .toggle").entwine({onclick:function(e){e.preventDefault(),$(this).toogleFlyout(!0)}}),$(".cms-menu-list li").entwine({onmatch:function(){this.find("ul").length&&this.find("a:first").append(''),this._super()},onunmatch:function(){this._super()},toggle:function(){this[this.hasClass("opened")?"close":"open"]()},open:function(){var parent=this.getMenuItem();parent&&parent.open(),this.find("li.clone")&&this.find("li.clone").remove(),this.addClass("opened").find("ul").show(),this.find(".toggle-children").addClass("opened")},close:function(){this.removeClass("opened").find("ul").hide(),this.find(".toggle-children").removeClass("opened")},select:function(){var parent=this.getMenuItem();if(this.addClass("current").open(),this.siblings().removeClass("current").close(),this.siblings().find("li").removeClass("current"),
-parent){var parentSiblings=parent.siblings();parent.addClass("current"),parentSiblings.removeClass("current").close(),parentSiblings.find("li").removeClass("current").close()}this.getMenu().updateItems(),this.trigger("select")}}),$(".cms-menu-list *").entwine({getMenu:function(){return this.parents(".cms-menu-list:first")}}),$(".cms-menu-list li *").entwine({getMenuItem:function(){return this.parents("li:first")}}),$(".cms-menu-list li a").entwine({onclick:function(e){var isExternal=$.path.isExternal(this.attr("href"));if(!(e.which>1||isExternal)&&"_blank"!=this.attr("target")){e.preventDefault();var item=this.getMenuItem(),url=this.attr("href");isExternal||(url=$("base").attr("href")+url);var children=item.find("li");children.length?children.first().find("a").click():document.location.href=url,item.select()}}}),$(".cms-menu-list li .toggle-children").entwine({onclick:function(e){var li=this.closest("li");return li.toggle(),!1}}),$(".cms .profile-link").entwine({onclick:function(){return $(".cms-container").loadPanel(this.attr("href")),$(".cms-menu-list li").removeClass("current").close(),!1}}),$(".cms-menu .sticky-toggle").entwine({onadd:function(){var isSticky=!!$(".cms-menu").getPersistedStickyState();this.toggleCSS(isSticky),this.toggleIndicator(isSticky),this._super()},toggleCSS:function(isSticky){this[isSticky?"addClass":"removeClass"]("active")},toggleIndicator:function(isSticky){this.next(".sticky-status-indicator").text(isSticky?"fixed":"auto")},onclick:function(){var $menu=this.closest(".cms-menu"),persistedCollapsedState=$menu.getPersistedCollapsedState(),persistedStickyState=$menu.getPersistedStickyState(),newStickyState=void 0===persistedStickyState?!this.hasClass("active"):!persistedStickyState;void 0===persistedCollapsedState?$menu.setPersistedCollapsedState($menu.hasClass("collapsed")):void 0!==persistedCollapsedState&&newStickyState===!1&&$menu.clearPersistedCollapsedState(),$menu.setPersistedStickyState(newStickyState),this.toggleCSS(newStickyState),this.toggleIndicator(newStickyState),this._super()}})})},{jQuery:"jQuery"}],11:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss",function($){$.entwine.warningLevel=$.entwine.WARN_LEVEL_BESTPRACTISE,$(".cms-panel").entwine({WidthExpanded:null,WidthCollapsed:null,canSetCookie:function(){return void 0!==$.cookie&&void 0!==this.attr("id")},getPersistedCollapsedState:function(){var isCollapsed,cookieValue;return this.canSetCookie()&&(cookieValue=$.cookie("cms-panel-collapsed-"+this.attr("id")),void 0!==cookieValue&&null!==cookieValue&&(isCollapsed="true"===cookieValue)),isCollapsed},setPersistedCollapsedState:function(newState){this.canSetCookie()&&$.cookie("cms-panel-collapsed-"+this.attr("id"),newState,{path:"/",expires:31})},clearPersistedCollapsedState:function(){this.canSetCookie()&&$.cookie("cms-panel-collapsed-"+this.attr("id"),"",{path:"/",expires:-1})},getInitialCollapsedState:function(){var isCollapsed=this.getPersistedCollapsedState();return void 0===isCollapsed&&(isCollapsed=this.hasClass("collapsed")),isCollapsed},onadd:function(){var collapsedContent,container;if(!this.find(".cms-panel-content").length)throw new Exception('Content panel for ".cms-panel" not found');this.find(".cms-panel-toggle").length||(container=$("").append('»').append('«'),this.append(container)),this.setWidthExpanded(this.find(".cms-panel-content").innerWidth()),collapsedContent=this.find(".cms-panel-content-collapsed"),this.setWidthCollapsed(collapsedContent.length?collapsedContent.innerWidth():this.find(".toggle-expand").innerWidth()),this.togglePanel(!this.getInitialCollapsedState(),!0,!1),this._super()},togglePanel:function(doExpand,silent,doSaveState){var newWidth,collapsedContent;silent||(this.trigger("beforetoggle.sspanel",doExpand),this.trigger(doExpand?"beforeexpand":"beforecollapse")),this.toggleClass("collapsed",!doExpand),newWidth=doExpand?this.getWidthExpanded():this.getWidthCollapsed(),this.width(newWidth),collapsedContent=this.find(".cms-panel-content-collapsed"),collapsedContent.length&&(this.find(".cms-panel-content")[doExpand?"show":"hide"](),this.find(".cms-panel-content-collapsed")[doExpand?"hide":"show"]()),doSaveState!==!1&&this.setPersistedCollapsedState(!doExpand),this.trigger("toggle",doExpand),this.trigger(doExpand?"expand":"collapse")},expandPanel:function(force){(force||this.hasClass("collapsed"))&&this.togglePanel(!0)},collapsePanel:function(force){!force&&this.hasClass("collapsed")||this.togglePanel(!1)}}),$(".cms-panel.collapsed .cms-panel-toggle").entwine({onclick:function(e){this.expandPanel(),e.preventDefault()}}),$(".cms-panel *").entwine({getPanel:function(){return this.parents(".cms-panel:first")}}),$(".cms-panel .toggle-expand").entwine({onclick:function(e){e.preventDefault(),e.stopPropagation(),this.getPanel().expandPanel(),this._super(e)}}),$(".cms-panel .toggle-collapse").entwine({onclick:function(e){e.preventDefault(),e.stopPropagation(),this.getPanel().collapsePanel(),this._super(e)}}),$(".cms-content-tools.collapsed").entwine({onclick:function(e){this.expandPanel(),this._super(e)}})})},{jQuery:"jQuery"}],12:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery),_i18n=require("i18n"),_i18n2=_interopRequireDefault(_i18n);_jQuery2["default"].entwine("ss.preview",function($){$(".cms-preview").entwine({AllowedStates:["StageLink","LiveLink","ArchiveLink"],CurrentStateName:null,CurrentSizeName:"auto",IsPreviewEnabled:!1,DefaultMode:"split",Sizes:{auto:{width:"100%",height:"100%"},mobile:{width:"335px",height:"568px"},mobileLandscape:{width:"583px",height:"320px"},tablet:{width:"783px",height:"1024px"},tabletLandscape:{width:"1039px",height:"768px"},desktop:{width:"1024px",height:"800px"}},changeState:function(stateName,save){var self=this,states=this._getNavigatorStates();return save!==!1&&$.each(states,function(index,state){self.saveState("state",stateName)}),this.setCurrentStateName(stateName),this._loadCurrentState(),this.redraw(),this},changeMode:function(modeName,save){var container=$(".cms-container");if("split"==modeName)container.entwine(".ss").splitViewMode(),this.setIsPreviewEnabled(!0),this._loadCurrentState();else if("content"==modeName)container.entwine(".ss").contentViewMode(),this.setIsPreviewEnabled(!1);else{if("preview"!=modeName)throw"Invalid mode: "+modeName;container.entwine(".ss").previewMode(),this.setIsPreviewEnabled(!0),this._loadCurrentState()}return save!==!1&&this.saveState("mode",modeName),this.redraw(),this},changeSize:function(sizeName){var sizes=this.getSizes();return this.setCurrentSizeName(sizeName),this.removeClass("auto desktop tablet mobile").addClass(sizeName),this.find(".preview-device-outer").width(sizes[sizeName].width).height(sizes[sizeName].height),this.find(".preview-device-inner").width(sizes[sizeName].width),this.saveState("size",sizeName),this.redraw(),this},redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0));var currentStateName=this.getCurrentStateName();currentStateName&&this.find(".cms-preview-states").changeVisibleState(currentStateName);var layoutOptions=$(".cms-container").entwine(".ss").getLayoutOptions();layoutOptions&&$(".preview-mode-selector").changeVisibleMode(layoutOptions.mode);var currentSizeName=this.getCurrentSizeName();return currentSizeName&&this.find(".preview-size-selector").changeVisibleSize(this.getCurrentSizeName()),this},saveState:function(name,value){this._supportsLocalStorage()&&window.localStorage.setItem("cms-preview-state-"+name,value)},loadState:function(name){return this._supportsLocalStorage()?window.localStorage.getItem("cms-preview-state-"+name):void 0},disablePreview:function(){return this.setPendingURL(null),this._loadUrl("about:blank"),this._block(),this.changeMode("content",!1),this.setIsPreviewEnabled(!1),this},enablePreview:function(){return this.getIsPreviewEnabled()||(this.setIsPreviewEnabled(!0),$.browser.msie&&$.browser.version.slice(0,3)<=7?this.changeMode("content"):this.changeMode(this.getDefaultMode(),!1)),this},getOrAppendFontFixStyleElement:function(){var style=$("#FontFixStyleElement");return style.length||(style=$('').appendTo("head")),style},onadd:function(){var self=this,iframe=(this.parent(),this.find("iframe"));iframe.addClass("center"),iframe.bind("load",function(){self._adjustIframeForPreview(),self._loadCurrentPage(),$(this).removeClass("loading")}),$.browser.msie&&8===parseInt($.browser.version,10)&&iframe.bind("readystatechange",function(e){"interactive"==iframe[0].readyState&&(self.getOrAppendFontFixStyleElement().removeAttr("disabled"),setTimeout(function(){self.getOrAppendFontFixStyleElement().attr("disabled","disabled")},0))}),this.append(''),this.find(".cms-preview-overlay").hide(),this.disablePreview(),this._super()},_supportsLocalStorage:function(){var storage,result,uid=new Date;try{return(storage=window.localStorage).setItem(uid,uid),result=storage.getItem(uid)==uid,storage.removeItem(uid),result&&storage}catch(exception){console.warn("localStorge is not available due to current browser / system settings.")}},onenable:function(){var $viewModeSelector=$(".preview-mode-selector");$viewModeSelector.removeClass("split-disabled"),$viewModeSelector.find(".disabled-tooltip").hide()},ondisable:function(){var $viewModeSelector=$(".preview-mode-selector");$viewModeSelector.addClass("split-disabled"),$viewModeSelector.find(".disabled-tooltip").show()},_block:function(){return this.addClass("blocked"),this.find(".cms-preview-overlay").show(),this},_unblock:function(){return this.removeClass("blocked"),this.find(".cms-preview-overlay").hide(),this},_initialiseFromContent:function(){var mode,size;return $(".cms-previewable").length?(mode=this.loadState("mode"),size=this.loadState("size"),this._moveNavigator(),mode&&"content"==mode||(this.enablePreview(),this._loadCurrentState()),this.redraw(),mode&&this.changeMode(mode),size&&this.changeSize(size)):this.disablePreview(),this},"from .cms-container":{onafterstatechange:function(e,data){data.xhr.getResponseHeader("X-ControllerURL")||this._initialiseFromContent()}},PendingURL:null,oncolumnvisibilitychanged:function(){var url=this.getPendingURL();url&&!this.is(".column-hidden")&&(this.setPendingURL(null),this._loadUrl(url),this._unblock())},"from .cms-container .cms-edit-form":{onaftersubmitform:function(){this._initialiseFromContent()}},_loadUrl:function(url){return this.find("iframe").addClass("loading").attr("src",url),this},_getNavigatorStates:function(){var urlMap=$.map(this.getAllowedStates(),function(name){var stateLink=$(".cms-preview-states .state-name[data-name="+name+"]");return stateLink.length?{name:name,url:stateLink.attr("href"),active:stateLink.hasClass("active")}:null});return urlMap},_loadCurrentState:function(){if(!this.getIsPreviewEnabled())return this;var states=this._getNavigatorStates(),currentStateName=this.getCurrentStateName(),currentState=null;states&&(currentState=$.grep(states,function(state,index){return currentStateName===state.name||!currentStateName&&state.active}));var url=null;return currentState[0]?url=currentState[0].url:states.length?(this.setCurrentStateName(states[0].name),url=states[0].url):this.setCurrentStateName(null),url&&(url+=(-1===url.indexOf("?")?"?":"&")+"CMSPreview=1"),this.is(".column-hidden")?(this.setPendingURL(url),this._loadUrl("about:blank"),this._block()):(this.setPendingURL(null),url?(this._loadUrl(url),this._unblock()):this._block()),this},_moveNavigator:function(){var previewEl=$(".cms-preview .cms-preview-controls"),navigatorEl=$(".cms-edit-form .cms-navigator");navigatorEl.length&&previewEl.length?previewEl.html($(".cms-edit-form .cms-navigator").detach()):this._block()},_loadCurrentPage:function(){if(this.getIsPreviewEnabled()){var doc;$(".cms-container");try{doc=this.find("iframe")[0].contentDocument}catch(e){console.warn("Unable to access iframe, possible https mis-match")}if(doc){var id=$(doc).find("meta[name=x-page-id]").attr("content"),editLink=$(doc).find("meta[name=x-cms-edit-link]").attr("content"),contentPanel=$(".cms-content");id&&contentPanel.find(":input[name=ID]").val()!=id&&$(".cms-container").entwine(".ss").loadPanel(editLink)}}},_adjustIframeForPreview:function(){var doc,iframe=this.find("iframe")[0];if(iframe){try{doc=iframe.contentDocument}catch(e){console.warn("Unable to access iframe, possible https mis-match")}if(doc){for(var links=doc.getElementsByTagName("A"),i=0;i'):this.parent().append('')}}),$(".preview-device-outer").entwine({onclick:function(){this.toggleClass("rotate")}})})},{i18n:"i18n",jQuery:"jQuery"}],13:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss.tree",function($){$(".cms-tree").entwine({Hints:null,IsUpdatingTree:!1,IsLoaded:!1,onadd:function(){if(this._super(),!$.isNumeric(this.data("jstree_instance_id"))){var hints=this.attr("data-hints");hints&&this.setHints($.parseJSON(hints));var self=this;this.jstree(this.getTreeConfig()).bind("loaded.jstree",function(e,data){self.setIsLoaded(!0),data.inst._set_settings({html_data:{ajax:{url:self.data("urlTree"),data:function(node){var params=self.data("searchparams")||[];return params=$.grep(params,function(n,i){return"ID"!=n.name&&"value"!=n.name}),params.push({name:"ID",value:$(node).data("id")?$(node).data("id"):0}),params.push({name:"ajax",value:1}),params}}}}),self.updateFromEditForm(),self.css("visibility","visible"),data.inst.hide_checkboxes()}).bind("before.jstree",function(e,data){if("start_drag"==data.func&&(!self.hasClass("draggable")||self.hasClass("multiselect")))return e.stopImmediatePropagation(),!1;if($.inArray(data.func,["check_node","uncheck_node"])){var node=$(data.args[0]).parents("li:first"),allowedChildren=node.find("li:not(.disabled)");if(node.hasClass("disabled")&&0==allowedChildren)return e.stopImmediatePropagation(),!1}}).bind("move_node.jstree",function(e,data){if(!self.getIsUpdatingTree()){var movedNode=data.rslt.o,newParentNode=data.rslt.np,newParentID=(data.inst._get_parent(movedNode),$(newParentNode).data("id")||0),nodeID=$(movedNode).data("id"),siblingIDs=$.map($(movedNode).siblings().andSelf(),function(el){return $(el).data("id")});$.ajax({url:$.path.addSearchParams(self.data("urlSavetreenode"),self.data("extraParams")),type:"POST",data:{ID:nodeID,ParentID:newParentID,SiblingIDs:siblingIDs},success:function(){$(".cms-edit-form :input[name=ID]").val()==nodeID&&$(".cms-edit-form :input[name=ParentID]").val(newParentID),self.updateNodesFromServer([nodeID])},statusCode:{403:function(){$.jstree.rollback(data.rlbk)}}})}}).bind("select_node.jstree check_node.jstree uncheck_node.jstree",function(e,data){$(document).triggerHandler(e,data)})}},onremove:function(){this.jstree("destroy"),this._super()},"from .cms-container":{onafterstatechange:function(e){this.updateFromEditForm()}},"from .cms-container form":{onaftersubmitform:function(e){var id=$(".cms-edit-form :input[name=ID]").val();this.updateNodesFromServer([id])}},getTreeConfig:function(){var self=this;return{core:{initially_open:["record-0"],animation:0,html_titles:!0},html_data:{},ui:{select_limit:1,initially_select:[this.find(".current").attr("id")]},crrm:{move:{check_move:function(data){var movedNode=$(data.o),newParent=$(data.np),isMovedOntoContainer=data.ot.get_container()[0]==data.np[0],movedNodeClass=movedNode.getClassname(),newParentClass=newParent.getClassname(),hints=self.getHints(),disallowedChildren=[],hintKey=newParentClass?newParentClass:"Root",hint=hints&&"undefined"!=typeof hints[hintKey]?hints[hintKey]:null;hint&&movedNode.attr("class").match(/VirtualPage-([^\s]*)/)&&(movedNodeClass=RegExp.$1),hint&&(disallowedChildren="undefined"!=typeof hint.disallowedChildren?hint.disallowedChildren:[]);var isAllowed=!(0===movedNode.data("id")||movedNode.hasClass("status-archived")||isMovedOntoContainer&&"inside"!=data.p||newParent.hasClass("nochildren")||disallowedChildren.length&&-1!=$.inArray(movedNodeClass,disallowedChildren));return isAllowed}}},dnd:{drop_target:!1,drag_target:!1},checkbox:{two_state:!0},themes:{theme:"apple",url:$("body").data("frameworkpath")+"/thirdparty/jstree/themes/apple/style.css"},plugins:["html_data","ui","dnd","crrm","themes","checkbox"]}},search:function(params,callback){params?this.data("searchparams",params):this.removeData("searchparams"),this.jstree("refresh",-1,callback)},getNodeByID:function(id){return this.find("*[data-id="+id+"]")},createNode:function(html,data,callback){var self=this,parentNode=void 0!==data.ParentID?self.getNodeByID(data.ParentID):!1,newNode=$(html),properties={data:""};newNode.hasClass("jstree-open")?properties.state="open":newNode.hasClass("jstree-closed")&&(properties.state="closed"),this.jstree("create_node",parentNode.length?parentNode:-1,"last",properties,function(node){for(var origClasses=node.attr("class"),i=0;i399?"bad":"good",ignoredMessages=["OK","success","HTTP/2.0 200"];return null===url||isSameUrl(origUrl,url)&&isSameUrl(destUrl,url)||window.ss.router.show(url,{id:(new Date).getTime()+String(Math.random()).replace(/\D/g,""),pjax:xhr.getResponseHeader("X-Pjax")?xhr.getResponseHeader("X-Pjax"):settings.headers["X-Pjax"]}),xhr.getResponseHeader("X-Reauthenticate")?void $(".cms-container").showLoginDialog():(0!==xhr.status&&msg&&-1===$.inArray(msg,ignoredMessages)&&statusMessage(decodeURIComponent(msg),msgType),void ajaxCompleteEvent(this))}),$(".cms-container").entwine({StateChangeXHR:null,FragmentXHR:{},StateChangeCount:0,LayoutOptions:{minContentWidth:940,minPreviewWidth:400,mode:"content"},onadd:function(){return $.browser.msie&&parseInt($.browser.version,10)<8?($(".ss-loading-screen").append('
Your browser is not compatible with the CMS interface. Please use Internet Explorer 8+, Google Chrome or Mozilla Firefox.
');container.find("span").text(data),dialog.append(container)}else dialog.html(data)},error:function error(xhr){var error=xhr.responseText||"Something went wrong. Please try again in a few minutes.",container=$('
');container.find("span").text(error),dialog.append(container)}}),!1}}),$("#add-to-campaign__dialog").entwine({onadd:function(){this.is(".ui-dialog-content")||this.ssdialog({autoOpen:!0,minHeight:200,maxHeight:200,minWidth:200,maxWidth:500}),this._super()},open:function(){this.ssdialog("open")},close:function(){this.ssdialog("close")},onssdialogclose:function(){this.empty()},"onchosen:showing_dropdown":function(){this.css({overflow:"visible"})},"onchosen:hiding_dropdown":function(){this.css({overflow:""})}})})},{jQuery:"jQuery"}],3:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss",function($){$(".ss-tabset.ss-ui-action-tabset").entwine({IgnoreTabState:!0,onadd:function(){this._super(),this.tabs({collapsible:!0,active:!1})},onremove:function(){var frame=$(".cms-container").find("iframe");frame.each(function(index,iframe){try{$(iframe).contents().off("click.ss-ui-action-tabset")}catch(e){console.warn("Unable to access iframe, possible https mis-match")}}),$(document).off("click.ss-ui-action-tabset"),this._super()},ontabsbeforeactivate:function(event,ui){this.riseUp(event,ui)},onclick:function(event,ui){this.attachCloseHandler(event,ui)},attachCloseHandler:function(event,ui){var _closeHandler,that=this,frame=$(".cms-container").find("iframe");_closeHandler=function(event){var panel,frame;panel=$(event.target).closest(".ss-ui-action-tabset .ui-tabs-panel"),$(event.target).closest(that).length||panel.length||(that.tabs("option","active",!1),frame=$(".cms-container").find("iframe"),frame.each(function(index,iframe){$(iframe).contents().off("click.ss-ui-action-tabset",_closeHandler)}),$(document).off("click.ss-ui-action-tabset",_closeHandler))},$(document).on("click.ss-ui-action-tabset",_closeHandler),frame.length>0&&frame.each(function(index,iframe){$(iframe).contents().on("click.ss-ui-action-tabset",_closeHandler)})},riseUp:function(event,ui){var elHeight,trigger,endOfWindow,elPos,activePanel,activeTab,topPosition,containerSouth,padding;return elHeight=$(this).find(".ui-tabs-panel").outerHeight(),trigger=$(this).find(".ui-tabs-nav").outerHeight(),endOfWindow=$(window).height()+$(document).scrollTop()-trigger,elPos=$(this).find(".ui-tabs-nav").offset().top,activePanel=ui.newPanel,activeTab=ui.newTab,elPos+elHeight>=endOfWindow&&elPos-elHeight>0?(this.addClass("rise-up"),null!==activeTab.position()&&(topPosition=-activePanel.outerHeight(),containerSouth=activePanel.parents(".toolbar--south"),containerSouth&&(padding=activeTab.offset().top-containerSouth.offset().top,topPosition-=padding),$(activePanel).css("top",topPosition+"px"))):(this.removeClass("rise-up"),null!==activeTab.position()&&$(activePanel).css("bottom","100%")),!1}}),$(".cms-content-actions .ss-tabset.ss-ui-action-tabset").entwine({ontabsbeforeactivate:function(event,ui){this._super(event,ui),$(ui.newPanel).length>0&&$(ui.newPanel).css("left",ui.newTab.position().left+"px")}}),$(".cms-actions-row.ss-tabset.ss-ui-action-tabset").entwine({ontabsbeforeactivate:function(event,ui){this._super(event,ui),$(this).closest(".ss-ui-action-tabset").removeClass("tabset-open tabset-open-last")}}),$(".cms-content-fields .ss-tabset.ss-ui-action-tabset").entwine({ontabsbeforeactivate:function(event,ui){this._super(event,ui),$(ui.newPanel).length>0&&($(ui.newTab).hasClass("last")?($(ui.newPanel).css({left:"auto",right:"0px"}),$(ui.newPanel).parent().addClass("tabset-open-last")):($(ui.newPanel).css("left",ui.newTab.position().left+"px"),$(ui.newTab).hasClass("first")&&($(ui.newPanel).css("left","0px"),$(ui.newPanel).parent().addClass("tabset-open"))))}}),$(".cms-tree-view-sidebar .cms-actions-row.ss-tabset.ss-ui-action-tabset").entwine({"from .ui-tabs-nav li":{onhover:function(e){$(e.target).parent().find("li .active").removeClass("active"),$(e.target).find("a").addClass("active")}},ontabsbeforeactivate:function(event,ui){this._super(event,ui),$(ui.newPanel).css({left:"auto",right:"auto"}),$(ui.newPanel).length>0&&$(ui.newPanel).parent().addClass("tabset-open")}})})},{jQuery:"jQuery"}],4:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery),_i18n=require("i18n"),_i18n2=_interopRequireDefault(_i18n);_jQuery2["default"].entwine("ss.tree",function($){$("#Form_BatchActionsForm").entwine({Actions:[],getTree:function(){return $(".cms-tree")},fromTree:{oncheck_node:function(e,data){this.serializeFromTree()},onuncheck_node:function(e,data){this.serializeFromTree()}},registerDefault:function(){this.register(ss.config.adminUrl+"pages/batchactions/publish",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_PUBLISH_PROMPT","You have {num} page(s) selected.\n\nDo you really want to publish?"),{num:ids.length}));return confirmed?ids:!1}),this.register(ss.config.adminUrl+"pages/batchactions/unpublish",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_UNPUBLISH_PROMPT","You have {num} page(s) selected.\n\nDo you really want to unpublish"),{num:ids.length}));return confirmed?ids:!1}),this.register(ss.config.adminUrl+"pages/batchactions/delete",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_DELETE_PROMPT","You have {num} page(s) selected.\n\nDo you really want to delete?"),{num:ids.length}));return confirmed?ids:!1}),this.register(ss.config.adminUrl+"pages/batchactions/archive",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_ARCHIVE_PROMPT","You have {num} page(s) selected.\n\nAre you sure you want to archive these pages?\n\nThese pages and all of their children pages will be unpublished and sent to the archive."),{num:ids.length}));return confirmed?ids:!1}),this.register(ss.config.adminUrl+"pages/batchactions/restore",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_RESTORE_PROMPT","You have {num} page(s) selected.\n\nDo you really want to restore to stage?\n\nChildren of archived pages will be restored to the root level, unless those pages are also being restored."),{num:ids.length}));return confirmed?ids:!1}),this.register(ss.config.adminUrl+"pages/batchactions/deletefromlive",function(ids){var confirmed=confirm(_i18n2["default"].inject(_i18n2["default"]._t("CMSMAIN.BATCH_DELETELIVE_PROMPT","You have {num} page(s) selected.\n\nDo you really want to delete these pages from live?"),{num:ids.length}));return confirmed?ids:!1})},onadd:function(){this.registerDefault(),this._super()},register:function(type,callback){this.trigger("register",{type:type,callback:callback});var actions=this.getActions();actions[type]=callback,this.setActions(actions)},unregister:function(type){this.trigger("unregister",{type:type});var actions=this.getActions();actions[type]&&delete actions[type],this.setActions(actions)},refreshSelected:function(rootNode){var self=this,st=this.getTree(),ids=this.getIDs(),allIds=[],viewMode=$(".cms-content-batchactions-button"),actionUrl=this.find(":input[name=Action]").val();null==rootNode&&(rootNode=st);for(var idx in ids)$($(st).getNodeByID(idx)).addClass("selected").attr("selected","selected");if(!actionUrl||-1==actionUrl||!viewMode.hasClass("active"))return void $(rootNode).find("li").each(function(){$(this).setEnabled(!0)});$(rootNode).find("li").each(function(){allIds.push($(this).data("id")),$(this).addClass("treeloading").setEnabled(!1)});var actionUrlParts=$.path.parseUrl(actionUrl),applicablePagesUrl=actionUrlParts.hrefNoSearch+"/applicablepages/";applicablePagesUrl=$.path.addSearchParams(applicablePagesUrl,actionUrlParts.search),applicablePagesUrl=$.path.addSearchParams(applicablePagesUrl,{csvIDs:allIds.join(",")}),jQuery.getJSON(applicablePagesUrl,function(applicableIDs){jQuery(rootNode).find("li").each(function(){$(this).removeClass("treeloading");var id=$(this).data("id");0==id||$.inArray(id,applicableIDs)>=0?$(this).setEnabled(!0):($(this).removeClass("selected").setEnabled(!1),$(this).prop("selected",!1))}),self.serializeFromTree()})},serializeFromTree:function(){var tree=this.getTree(),ids=tree.getSelectedIDs();return this.setIDs(ids),!0},setIDs:function(ids){this.find(":input[name=csvIDs]").val(ids?ids.join(","):null)},getIDs:function(){var value=this.find(":input[name=csvIDs]").val();return value?value.split(","):[]},onsubmit:function(e){var self=this,ids=this.getIDs(),tree=this.getTree(),actions=this.getActions();if(!ids||!ids.length)return alert(_i18n2["default"]._t("CMSMAIN.SELECTONEPAGE","Please select at least one page")),e.preventDefault(),!1;var type=this.find(":input[name=Action]").val();if(actions[type]&&(ids=this.getActions()[type].apply(this,[ids])),!ids||!ids.length)return e.preventDefault(),!1;this.setIDs(ids),tree.find("li").removeClass("failed");var button=this.find(":submit:first");return button.addClass("loading"),jQuery.ajax({url:type,type:"POST",data:this.serializeArray(),complete:function(xmlhttp,status){button.removeClass("loading"),tree.jstree("refresh",-1),self.setIDs([]),self.find(":input[name=Action]").val("").change();var msg=xmlhttp.getResponseHeader("X-Status");msg&&statusMessage(decodeURIComponent(msg),"success"==status?"good":"bad")},success:function(data,status){var id,node;if(data.modified){var modifiedNodes=[];for(id in data.modified)node=tree.getNodeByID(id),tree.jstree("set_text",node,data.modified[id].TreeTitle),modifiedNodes.push(node);$(modifiedNodes).effect("highlight")}if(data.deleted)for(id in data.deleted)node=tree.getNodeByID(id),node.length&&tree.jstree("delete_node",node);if(data.error)for(id in data.error)node=tree.getNodeByID(id),$(node).addClass("failed")},dataType:"json"}),e.preventDefault(),!1}}),$(".cms-content-batchactions-button").entwine({onmatch:function(){this._super(),this.updateTree()},onunmatch:function(){this._super()},onclick:function(e){this.updateTree()},updateTree:function(){var tree=$(".cms-tree"),form=$("#Form_BatchActionsForm");this._super(),this.data("active")?(tree.addClass("multiple"),tree.removeClass("draggable"),form.serializeFromTree()):(tree.removeClass("multiple"),tree.addClass("draggable")),$("#Form_BatchActionsForm").refreshSelected()}}),$("#Form_BatchActionsForm select[name=Action]").entwine({onchange:function(e){var form=$(e.target.form),btn=form.find(":submit"),selected=$(e.target).val();selected&&-1!=selected?btn.removeAttr("disabled").button("refresh"):btn.attr("disabled","disabled").button("refresh"),$("#Form_BatchActionsForm").refreshSelected(),this.trigger("chosen:updated"),this._super(e)}})})},{i18n:"i18n",jQuery:"jQuery"}],5:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss",function($){$(".cms-content").entwine({onadd:function(){this.find(".cms-tabset").redrawTabs(),this._super()},redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.add(this.find(".cms-tabset")).redrawTabs(),this.find(".cms-content-header").redraw(),this.find(".cms-content-actions").redraw()}}),$(".cms-content .cms-tree").entwine({onadd:function(){var self=this;this._super(),this.bind("select_node.jstree",function(e,data){var node=data.rslt.obj,loadedNodeID=self.find(":input[name=ID]").val(),origEvent=data.args[2],container=$(".cms-container");if(!origEvent)return!1;if($(node).hasClass("disabled"))return!1;if($(node).data("id")!=loadedNodeID){var url=$(node).find("a:first").attr("href");url&&"#"!=url?(url=url.split("?")[0],self.jstree("deselect_all"),self.jstree("uncheck_all"),$.path.isExternal($(node).find("a:first"))&&(url=url=$.path.makeUrlAbsolute(url,$("base").attr("href"))),document.location.search&&(url=$.path.addSearchParams(url,document.location.search.replace(/^\?/,""))),container.loadPanel(url)):self.removeForm()}})}}),$(".cms-content .cms-content-fields").entwine({redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0))}}),$(".cms-content .cms-content-header, .cms-content .cms-content-actions").entwine({redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.height("auto"),this.height(this.innerHeight()-this.css("padding-top")-this.css("padding-bottom"))}})})},{jQuery:"jQuery"}],6:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery),_i18n=require("i18n"),_i18n2=_interopRequireDefault(_i18n);window.onbeforeunload=function(e){var form=(0,_jQuery2["default"])(".cms-edit-form");return form.trigger("beforesubmitform"),form.is(".changed")&&!form.is(".discardchanges")?_i18n2["default"]._t("LeftAndMain.CONFIRMUNSAVEDSHORT"):void 0},_jQuery2["default"].entwine("ss",function($){$(".cms-edit-form").entwine({PlaceholderHtml:"",ChangeTrackerOptions:{ignoreFieldSelector:".no-change-track, .ss-upload :input, .cms-navigator :input"},ValidationErrorShown:!1,onadd:function(){this.attr("autocomplete","off"),this._setupChangeTracker();for(var overrideAttr in{action:!0,method:!0,enctype:!0,name:!0}){var el=this.find(":input[name=_form_"+overrideAttr+"]");el&&(this.attr(overrideAttr,el.val()),el.remove())}this.setValidationErrorShown(!1),this._super()},"from .cms-tabset":{onafterredrawtabs:function(){if(this.hasClass("validationerror")){var tabError=this.find(".message.validation, .message.required").first().closest(".tab");$(".cms-container").clearCurrentTabState();var $tabSet=tabError.closest(".ss-tabset");$tabSet.length||($tabSet=tabError.closest(".cms-tabset")),$tabSet.length?$tabSet.tabs("option","active",tabError.index(".tab")):this.getValidationErrorShown()||(this.setValidationErrorShown(!0),errorMessage(ss.i18n._t("ModelAdmin.VALIDATIONERROR","Validation Error")))}}},onremove:function(){this.changetracker("destroy"),this._super()},onmatch:function(){this._super()},onunmatch:function(){this._super()},redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.add(this.find(".cms-tabset")).redrawTabs(),this.find(".cms-content-header").redraw()},_setupChangeTracker:function(){this.changetracker(this.getChangeTrackerOptions())},confirmUnsavedChanges:function(){if(this.trigger("beforesubmitform"),!this.is(".changed")||this.is(".discardchanges"))return!0;var confirmed=confirm(_i18n2["default"]._t("LeftAndMain.CONFIRMUNSAVED"));return confirmed&&this.addClass("discardchanges"),confirmed},onsubmit:function(e,button){return"_blank"!=this.prop("target")?(button&&this.closest(".cms-container").submitForm(this,button),!1):void 0},validate:function(){var isValid=!0;return this.trigger("validate",{isValid:isValid}),isValid},"from .htmleditor":{oneditorinit:function(e){var self=this,field=$(e.target).closest(".field.htmleditor"),editor=field.find("textarea.htmleditor").getEditor().getInstance();editor.onClick.add(function(e){self.saveFieldFocus(field.attr("id"))})}},"from .cms-edit-form :input:not(:submit)":{onclick:function(e){this.saveFieldFocus($(e.target).attr("id"))},onfocus:function(e){this.saveFieldFocus($(e.target).attr("id"))}},"from .cms-edit-form .treedropdown *":{onfocusin:function(e){var field=$(e.target).closest(".field.treedropdown");this.saveFieldFocus(field.attr("id"))}},"from .cms-edit-form .dropdown .chosen-container a":{onfocusin:function(e){var field=$(e.target).closest(".field.dropdown");this.saveFieldFocus(field.attr("id"))}},"from .cms-container":{ontabstaterestored:function(e){this.restoreFieldFocus()}},saveFieldFocus:function(selected){if("undefined"!=typeof window.sessionStorage&&null!==window.sessionStorage){var id=$(this).attr("id"),focusElements=[];if(focusElements.push({id:id,selected:selected}),focusElements)try{window.sessionStorage.setItem(id,JSON.stringify(focusElements))}catch(err){if(err.code===DOMException.QUOTA_EXCEEDED_ERR&&0===window.sessionStorage.length)return;throw err}}},restoreFieldFocus:function(){if("undefined"!=typeof window.sessionStorage&&null!==window.sessionStorage){var elementID,activeTab,elementTab,toggleComposite,scrollY,self=this,hasSessionStorage="undefined"!=typeof window.sessionStorage&&window.sessionStorage,sessionData=hasSessionStorage?window.sessionStorage.getItem(this.attr("id")):null,sessionStates=sessionData?JSON.parse(sessionData):!1,tabbed=0!==this.find(".ss-tabset").length;if(hasSessionStorage&&sessionStates.length>0){if($.each(sessionStates,function(i,sessionState){self.is("#"+sessionState.id)&&(elementID=$("#"+sessionState.selected))}),$(elementID).length<1)return void this.focusFirstInput();if(activeTab=$(elementID).closest(".ss-tabset").find(".ui-tabs-nav .ui-tabs-active .ui-tabs-anchor").attr("id"),elementTab="tab-"+$(elementID).closest(".ss-tabset .ui-tabs-panel").attr("id"),tabbed&&elementTab!==activeTab)return;toggleComposite=$(elementID).closest(".togglecomposite"),toggleComposite.length>0&&toggleComposite.accordion("activate",toggleComposite.find(".ui-accordion-header")),scrollY=$(elementID).position().top,$(elementID).is(":visible")||(elementID="#"+$(elementID).closest(".field").attr("id"),scrollY=$(elementID).position().top),$(elementID).focus(),scrollY>$(window).height()/2&&self.find(".cms-content-fields").scrollTop(scrollY)}else this.focusFirstInput()}},focusFirstInput:function(){this.find(':input:not(:submit)[data-skip-autofocus!="true"]').filter(":visible:first").focus()}}),$(".cms-edit-form .btn-toolbar input.action[type=submit], .cms-edit-form .btn-toolbar button.action").entwine({onclick:function(e){return this.hasClass("gridfield-button-delete")&&!confirm(_i18n2["default"]._t("TABLEFIELD.DELETECONFIRMMESSAGE"))?(e.preventDefault(),!1):(this.is(":disabled")||this.parents("form").trigger("submit",[this]),e.preventDefault(),!1)}}),$(".cms-edit-form .btn-toolbar input.action[type=submit].ss-ui-action-cancel, .cms-edit-form .btn-toolbar button.action.ss-ui-action-cancel").entwine({onclick:function(e){window.history.length>1?window.history.back():this.parents("form").trigger("submit",[this]),e.preventDefault()}}),$(".cms-edit-form .ss-tabset").entwine({onmatch:function(){if(!this.hasClass("ss-ui-action-tabset")){var tabs=this.find("> ul:first");1==tabs.children("li").length&&tabs.hide().parent().addClass("ss-tabset-tabshidden")}this._super()},onunmatch:function(){this._super()}})})},{i18n:"i18n",jQuery:"jQuery"}],7:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss",function($){$(".cms-description-toggle").entwine({onadd:function(){var shown=!1,fieldId=this.prop("id").substr(0,this.prop("id").indexOf("_Holder")),$trigger=this.find(".cms-description-trigger"),$description=this.find(".description");this.hasClass("description-toggle-enabled")||(0===$trigger.length&&($trigger=this.find(".middleColumn").first().after('').next()),this.addClass("description-toggle-enabled"),$trigger.on("click",function(){$description[shown?"hide":"show"](),shown=!shown}),$description.hide())}})})},{jQuery:"jQuery"}],8:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss",function($){$(".cms .field.cms-description-tooltip").entwine({onmatch:function(){this._super();var descriptionEl=this.find(".description");descriptionEl.length&&(this.attr("title",descriptionEl.text()).tooltip({content:descriptionEl.html()}),descriptionEl.remove())}}),$(".cms .field.cms-description-tooltip :input").entwine({onfocusin:function(e){this.closest(".field").tooltip("open")},onfocusout:function(e){this.closest(".field").tooltip("close")}})})},{jQuery:"jQuery"}],9:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].fn.layout.defaults.resize=!1,jLayout="undefined"==typeof jLayout?{}:jLayout,jLayout.threeColumnCompressor=function(spec,options){function typeLayout(type){var func=type+"Size";return function(container){var menuSize=menu[func](),contentSize=content[func](),previewSize=preview[func](),insets=container.insets();return width=menuSize.width+contentSize.width+previewSize.width,height=Math.max(menuSize.height,contentSize.height,previewSize.height),{width:insets.left+insets.right+width,height:insets.top+insets.bottom+height}}}if("undefined"==typeof spec.menu||"undefined"==typeof spec.content||"undefined"==typeof spec.preview)throw'Spec is invalid. Please provide "menu", "content" and "preview" elements.';if("undefined"==typeof options.minContentWidth||"undefined"==typeof options.minPreviewWidth||"undefined"==typeof options.mode)throw'Spec is invalid. Please provide "minContentWidth", "minPreviewWidth", "mode"';if("split"!==options.mode&&"content"!==options.mode&&"preview"!==options.mode)throw'Spec is invalid. "mode" should be either "split", "content" or "preview"';var obj={options:options},menu=_jQuery2["default"].jLayoutWrap(spec.menu),content=_jQuery2["default"].jLayoutWrap(spec.content),preview=_jQuery2["default"].jLayoutWrap(spec.preview);return obj.layout=function(container){var size=container.bounds(),insets=container.insets(),top=insets.top,bottom=size.height-insets.bottom,left=insets.left,right=size.width-insets.right,menuWidth=spec.menu.width(),contentWidth=0,previewWidth=0;"preview"===this.options.mode?(contentWidth=0,previewWidth=right-left-menuWidth):"content"===this.options.mode?(contentWidth=right-left-menuWidth,previewWidth=0):(contentWidth=(right-left-menuWidth)/2,previewWidth=right-left-(menuWidth+contentWidth),contentWidth').fadeIn(),par.children(".child-flyout-indicator").fadeIn()}},siteTreePresent:function(){return $("#cms-content-tools-CMSMain").length>0},getPersistedStickyState:function(){var persistedState,cookieValue;return void 0!==$.cookie&&(cookieValue=$.cookie("cms-menu-sticky"),void 0!==cookieValue&&null!==cookieValue&&(persistedState="true"===cookieValue)),persistedState},setPersistedStickyState:function(isSticky){void 0!==$.cookie&&$.cookie("cms-menu-sticky",isSticky,{path:"/",expires:31})},getEvaluatedCollapsedState:function(){var shouldCollapse,manualState=this.getPersistedCollapsedState(),menuIsSticky=$(".cms-menu").getPersistedStickyState(),automaticState=this.siteTreePresent();return shouldCollapse=void 0===manualState?automaticState:manualState!==automaticState&&menuIsSticky?manualState:automaticState},onadd:function(){var self=this;setTimeout(function(){self.togglePanel(!self.getEvaluatedCollapsedState(),!1,!1)},0),$(window).on("ajaxComplete",function(e){setTimeout(function(){self.togglePanel(!self.getEvaluatedCollapsedState(),!1,!1)},0)}),this._super()}}),$(".cms-menu-list").entwine({onmatch:function(){this.find("li.current").select(),this.updateItems(),this._super()},onunmatch:function(){this._super()},updateMenuFromResponse:function(xhr){var controller=xhr.getResponseHeader("X-Controller");if(controller){var item=this.find("li#Menu-"+controller.replace(/\\/g,"-").replace(/[^a-zA-Z0-9\-_:.]+/,""));item.hasClass("current")||item.select()}this.updateItems()},"from .cms-container":{onafterstatechange:function(e,data){this.updateMenuFromResponse(data.xhr)},onaftersubmitform:function(e,data){this.updateMenuFromResponse(data.xhr)}},"from .cms-edit-form":{onrelodeditform:function(e,data){this.updateMenuFromResponse(data.xmlhttp)}},getContainingPanel:function(){return this.closest(".cms-panel")},fromContainingPanel:{ontoggle:function(e){this.toggleClass("collapsed",$(e.target).hasClass("collapsed")),$(".cms-container").trigger("windowresize"),this.hasClass("collapsed")&&this.find("li.children.opened").removeClass("opened"),this.hasClass("collapsed")||$(".toggle-children.opened").closest("li").addClass("opened")}},updateItems:function(){var editPageItem=this.find("#Menu-CMSMain");editPageItem[editPageItem.is(".current")?"show":"hide"]();var currentID=$(".cms-content input[name=ID]").val();currentID&&this.find("li").each(function(){$.isFunction($(this).setRecordID)&&$(this).setRecordID(currentID)})}}),$(".cms-menu-list li").entwine({toggleFlyout:function(bool){var fly=$(this);if(fly.children("ul").first().hasClass("collapsed-flyout"))if(bool){if(!fly.children("ul").first().children("li").first().hasClass("clone")){var li=fly.clone();li.addClass("clone").css({}),li.children("ul").first().remove(),li.find("span").not(".text").remove(),li.find("a").first().unbind("click"),fly.children("ul").prepend(li)}$(".collapsed-flyout").show(),fly.addClass("opened"),fly.children("ul").find("li").fadeIn("fast")}else li&&li.remove(),$(".collapsed-flyout").hide(),fly.removeClass("opened"),fly.find("toggle-children").removeClass("opened"),fly.children("ul").find("li").hide()}}),$(".cms-menu-list li").hoverIntent(function(){$(this).toggleFlyout(!0)},function(){$(this).toggleFlyout(!1)}),$(".cms-menu-list .toggle").entwine({onclick:function(e){e.preventDefault(),$(this).toogleFlyout(!0)}}),$(".cms-menu-list li").entwine({onmatch:function(){this.find("ul").length&&this.find("a:first").append(''),this._super()},onunmatch:function(){this._super()},toggle:function(){this[this.hasClass("opened")?"close":"open"]()},open:function(){var parent=this.getMenuItem();parent&&parent.open(),this.find("li.clone")&&this.find("li.clone").remove(),this.addClass("opened").find("ul").show(),this.find(".toggle-children").addClass("opened")},close:function(){this.removeClass("opened").find("ul").hide(),this.find(".toggle-children").removeClass("opened")},select:function(){var parent=this.getMenuItem();if(this.addClass("current").open(),this.siblings().removeClass("current").close(),
+this.siblings().find("li").removeClass("current"),parent){var parentSiblings=parent.siblings();parent.addClass("current"),parentSiblings.removeClass("current").close(),parentSiblings.find("li").removeClass("current").close()}this.getMenu().updateItems(),this.trigger("select")}}),$(".cms-menu-list *").entwine({getMenu:function(){return this.parents(".cms-menu-list:first")}}),$(".cms-menu-list li *").entwine({getMenuItem:function(){return this.parents("li:first")}}),$(".cms-menu-list li a").entwine({onclick:function(e){var isExternal=$.path.isExternal(this.attr("href"));if(!(e.which>1||isExternal)&&"_blank"!=this.attr("target")){e.preventDefault();var item=this.getMenuItem(),url=this.attr("href");isExternal||(url=$("base").attr("href")+url);var children=item.find("li");children.length?children.first().find("a").click():document.location.href=url,item.select()}}}),$(".cms-menu-list li .toggle-children").entwine({onclick:function(e){var li=this.closest("li");return li.toggle(),!1}}),$(".cms .profile-link").entwine({onclick:function(){return $(".cms-container").loadPanel(this.attr("href")),$(".cms-menu-list li").removeClass("current").close(),!1}}),$(".cms-menu .sticky-toggle").entwine({onadd:function(){var isSticky=!!$(".cms-menu").getPersistedStickyState();this.toggleCSS(isSticky),this.toggleIndicator(isSticky),this._super()},toggleCSS:function(isSticky){this[isSticky?"addClass":"removeClass"]("active")},toggleIndicator:function(isSticky){this.next(".sticky-status-indicator").text(isSticky?"fixed":"auto")},onclick:function(){var $menu=this.closest(".cms-menu"),persistedCollapsedState=$menu.getPersistedCollapsedState(),persistedStickyState=$menu.getPersistedStickyState(),newStickyState=void 0===persistedStickyState?!this.hasClass("active"):!persistedStickyState;void 0===persistedCollapsedState?$menu.setPersistedCollapsedState($menu.hasClass("collapsed")):void 0!==persistedCollapsedState&&newStickyState===!1&&$menu.clearPersistedCollapsedState(),$menu.setPersistedStickyState(newStickyState),this.toggleCSS(newStickyState),this.toggleIndicator(newStickyState),this._super()}})})},{jQuery:"jQuery"}],11:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss",function($){$.entwine.warningLevel=$.entwine.WARN_LEVEL_BESTPRACTISE,$(".cms-panel").entwine({WidthExpanded:null,WidthCollapsed:null,canSetCookie:function(){return void 0!==$.cookie&&void 0!==this.attr("id")},getPersistedCollapsedState:function(){var isCollapsed,cookieValue;return this.canSetCookie()&&(cookieValue=$.cookie("cms-panel-collapsed-"+this.attr("id")),void 0!==cookieValue&&null!==cookieValue&&(isCollapsed="true"===cookieValue)),isCollapsed},setPersistedCollapsedState:function(newState){this.canSetCookie()&&$.cookie("cms-panel-collapsed-"+this.attr("id"),newState,{path:"/",expires:31})},clearPersistedCollapsedState:function(){this.canSetCookie()&&$.cookie("cms-panel-collapsed-"+this.attr("id"),"",{path:"/",expires:-1})},getInitialCollapsedState:function(){var isCollapsed=this.getPersistedCollapsedState();return void 0===isCollapsed&&(isCollapsed=this.hasClass("collapsed")),isCollapsed},onadd:function(){var collapsedContent,container;if(!this.find(".cms-panel-content").length)throw new Exception('Content panel for ".cms-panel" not found');this.find(".cms-panel-toggle").length||(container=$("").append('»').append('«'),this.append(container)),this.setWidthExpanded(this.find(".cms-panel-content").innerWidth()),collapsedContent=this.find(".cms-panel-content-collapsed"),this.setWidthCollapsed(collapsedContent.length?collapsedContent.innerWidth():this.find(".toggle-expand").innerWidth()),this.togglePanel(!this.getInitialCollapsedState(),!0,!1),this._super()},togglePanel:function(doExpand,silent,doSaveState){var newWidth,collapsedContent;silent||(this.trigger("beforetoggle.sspanel",doExpand),this.trigger(doExpand?"beforeexpand":"beforecollapse")),this.toggleClass("collapsed",!doExpand),newWidth=doExpand?this.getWidthExpanded():this.getWidthCollapsed(),this.width(newWidth),collapsedContent=this.find(".cms-panel-content-collapsed"),collapsedContent.length&&(this.find(".cms-panel-content")[doExpand?"show":"hide"](),this.find(".cms-panel-content-collapsed")[doExpand?"hide":"show"]()),doSaveState!==!1&&this.setPersistedCollapsedState(!doExpand),this.trigger("toggle",doExpand),this.trigger(doExpand?"expand":"collapse")},expandPanel:function(force){(force||this.hasClass("collapsed"))&&this.togglePanel(!0)},collapsePanel:function(force){!force&&this.hasClass("collapsed")||this.togglePanel(!1)}}),$(".cms-panel.collapsed .cms-panel-toggle").entwine({onclick:function(e){this.expandPanel(),e.preventDefault()}}),$(".cms-panel *").entwine({getPanel:function(){return this.parents(".cms-panel:first")}}),$(".cms-panel .toggle-expand").entwine({onclick:function(e){e.preventDefault(),e.stopPropagation(),this.getPanel().expandPanel(),this._super(e)}}),$(".cms-panel .toggle-collapse").entwine({onclick:function(e){e.preventDefault(),e.stopPropagation(),this.getPanel().collapsePanel(),this._super(e)}}),$(".cms-content-tools.collapsed").entwine({onclick:function(e){this.expandPanel(),this._super(e)}})})},{jQuery:"jQuery"}],12:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery),_i18n=require("i18n"),_i18n2=_interopRequireDefault(_i18n);_jQuery2["default"].entwine("ss.preview",function($){$(".cms-preview").entwine({AllowedStates:["StageLink","LiveLink","ArchiveLink"],CurrentStateName:null,CurrentSizeName:"auto",IsPreviewEnabled:!1,DefaultMode:"split",Sizes:{auto:{width:"100%",height:"100%"},mobile:{width:"335px",height:"568px"},mobileLandscape:{width:"583px",height:"320px"},tablet:{width:"783px",height:"1024px"},tabletLandscape:{width:"1039px",height:"768px"},desktop:{width:"1024px",height:"800px"}},changeState:function(stateName,save){var self=this,states=this._getNavigatorStates();return save!==!1&&$.each(states,function(index,state){self.saveState("state",stateName)}),this.setCurrentStateName(stateName),this._loadCurrentState(),this.redraw(),this},changeMode:function(modeName,save){var container=$(".cms-container");if("split"==modeName)container.entwine(".ss").splitViewMode(),this.setIsPreviewEnabled(!0),this._loadCurrentState();else if("content"==modeName)container.entwine(".ss").contentViewMode(),this.setIsPreviewEnabled(!1);else{if("preview"!=modeName)throw"Invalid mode: "+modeName;container.entwine(".ss").previewMode(),this.setIsPreviewEnabled(!0),this._loadCurrentState()}return save!==!1&&this.saveState("mode",modeName),this.redraw(),this},changeSize:function(sizeName){var sizes=this.getSizes();return this.setCurrentSizeName(sizeName),this.removeClass("auto desktop tablet mobile").addClass(sizeName),this.find(".preview-device-outer").width(sizes[sizeName].width).height(sizes[sizeName].height),this.find(".preview-device-inner").width(sizes[sizeName].width),this.saveState("size",sizeName),this.redraw(),this},redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0));var currentStateName=this.getCurrentStateName();currentStateName&&this.find(".cms-preview-states").changeVisibleState(currentStateName);var layoutOptions=$(".cms-container").entwine(".ss").getLayoutOptions();layoutOptions&&$(".preview-mode-selector").changeVisibleMode(layoutOptions.mode);var currentSizeName=this.getCurrentSizeName();return currentSizeName&&this.find(".preview-size-selector").changeVisibleSize(this.getCurrentSizeName()),this},saveState:function(name,value){this._supportsLocalStorage()&&window.localStorage.setItem("cms-preview-state-"+name,value)},loadState:function(name){return this._supportsLocalStorage()?window.localStorage.getItem("cms-preview-state-"+name):void 0},disablePreview:function(){return this.setPendingURL(null),this._loadUrl("about:blank"),this._block(),this.changeMode("content",!1),this.setIsPreviewEnabled(!1),this},enablePreview:function(){return this.getIsPreviewEnabled()||(this.setIsPreviewEnabled(!0),$.browser.msie&&$.browser.version.slice(0,3)<=7?this.changeMode("content"):this.changeMode(this.getDefaultMode(),!1)),this},getOrAppendFontFixStyleElement:function(){var style=$("#FontFixStyleElement");return style.length||(style=$('').appendTo("head")),style},onadd:function(){var self=this,iframe=(this.parent(),this.find("iframe"));iframe.addClass("center"),iframe.bind("load",function(){self._adjustIframeForPreview(),self._loadCurrentPage(),$(this).removeClass("loading")}),$.browser.msie&&8===parseInt($.browser.version,10)&&iframe.bind("readystatechange",function(e){"interactive"==iframe[0].readyState&&(self.getOrAppendFontFixStyleElement().removeAttr("disabled"),setTimeout(function(){self.getOrAppendFontFixStyleElement().attr("disabled","disabled")},0))}),this.append(''),this.find(".cms-preview-overlay").hide(),this.disablePreview(),this._super()},_supportsLocalStorage:function(){var storage,result,uid=new Date;try{return(storage=window.localStorage).setItem(uid,uid),result=storage.getItem(uid)==uid,storage.removeItem(uid),result&&storage}catch(exception){console.warn("localStorge is not available due to current browser / system settings.")}},onenable:function(){var $viewModeSelector=$(".preview-mode-selector");$viewModeSelector.removeClass("split-disabled"),$viewModeSelector.find(".disabled-tooltip").hide()},ondisable:function(){var $viewModeSelector=$(".preview-mode-selector");$viewModeSelector.addClass("split-disabled"),$viewModeSelector.find(".disabled-tooltip").show()},_block:function(){return this.addClass("blocked"),this.find(".cms-preview-overlay").show(),this},_unblock:function(){return this.removeClass("blocked"),this.find(".cms-preview-overlay").hide(),this},_initialiseFromContent:function(){var mode,size;return $(".cms-previewable").length?(mode=this.loadState("mode"),size=this.loadState("size"),this._moveNavigator(),mode&&"content"==mode||(this.enablePreview(),this._loadCurrentState()),this.redraw(),mode&&this.changeMode(mode),size&&this.changeSize(size)):this.disablePreview(),this},"from .cms-container":{onafterstatechange:function(e,data){data.xhr.getResponseHeader("X-ControllerURL")||this._initialiseFromContent()}},PendingURL:null,oncolumnvisibilitychanged:function(){var url=this.getPendingURL();url&&!this.is(".column-hidden")&&(this.setPendingURL(null),this._loadUrl(url),this._unblock())},"from .cms-container .cms-edit-form":{onaftersubmitform:function(){this._initialiseFromContent()}},_loadUrl:function(url){return this.find("iframe").addClass("loading").attr("src",url),this},_getNavigatorStates:function(){var urlMap=$.map(this.getAllowedStates(),function(name){var stateLink=$(".cms-preview-states .state-name[data-name="+name+"]");return stateLink.length?{name:name,url:stateLink.attr("href"),active:stateLink.hasClass("active")}:null});return urlMap},_loadCurrentState:function(){if(!this.getIsPreviewEnabled())return this;var states=this._getNavigatorStates(),currentStateName=this.getCurrentStateName(),currentState=null;states&&(currentState=$.grep(states,function(state,index){return currentStateName===state.name||!currentStateName&&state.active}));var url=null;return currentState[0]?url=currentState[0].url:states.length?(this.setCurrentStateName(states[0].name),url=states[0].url):this.setCurrentStateName(null),url&&(url+=(-1===url.indexOf("?")?"?":"&")+"CMSPreview=1"),this.is(".column-hidden")?(this.setPendingURL(url),this._loadUrl("about:blank"),this._block()):(this.setPendingURL(null),url?(this._loadUrl(url),this._unblock()):this._block()),this},_moveNavigator:function(){var previewEl=$(".cms-preview .cms-preview-controls"),navigatorEl=$(".cms-edit-form .cms-navigator");navigatorEl.length&&previewEl.length?previewEl.html($(".cms-edit-form .cms-navigator").detach()):this._block()},_loadCurrentPage:function(){if(this.getIsPreviewEnabled()){var doc;$(".cms-container");try{doc=this.find("iframe")[0].contentDocument}catch(e){console.warn("Unable to access iframe, possible https mis-match")}if(doc){var id=$(doc).find("meta[name=x-page-id]").attr("content"),editLink=$(doc).find("meta[name=x-cms-edit-link]").attr("content"),contentPanel=$(".cms-content");id&&contentPanel.find(":input[name=ID]").val()!=id&&$(".cms-container").entwine(".ss").loadPanel(editLink)}}},_adjustIframeForPreview:function(){var doc,iframe=this.find("iframe")[0];if(iframe){try{doc=iframe.contentDocument}catch(e){console.warn("Unable to access iframe, possible https mis-match")}if(doc){for(var links=doc.getElementsByTagName("A"),i=0;i'):this.parent().append('')}}),$(".preview-device-outer").entwine({onclick:function(){this.toggleClass("rotate")}})})},{i18n:"i18n",jQuery:"jQuery"}],13:[function(require,module,exports){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var _jQuery=require("jQuery"),_jQuery2=_interopRequireDefault(_jQuery);_jQuery2["default"].entwine("ss.tree",function($){$(".cms-tree").entwine({Hints:null,IsUpdatingTree:!1,IsLoaded:!1,onadd:function(){if(this._super(),!$.isNumeric(this.data("jstree_instance_id"))){var hints=this.attr("data-hints");hints&&this.setHints($.parseJSON(hints));var self=this;this.jstree(this.getTreeConfig()).bind("loaded.jstree",function(e,data){self.setIsLoaded(!0),data.inst._set_settings({html_data:{ajax:{url:self.data("urlTree"),data:function(node){var params=self.data("searchparams")||[];return params=$.grep(params,function(n,i){return"ID"!=n.name&&"value"!=n.name}),params.push({name:"ID",value:$(node).data("id")?$(node).data("id"):0}),params.push({name:"ajax",value:1}),params}}}}),self.updateFromEditForm(),self.css("visibility","visible"),data.inst.hide_checkboxes()}).bind("before.jstree",function(e,data){if("start_drag"==data.func&&(!self.hasClass("draggable")||self.hasClass("multiselect")))return e.stopImmediatePropagation(),!1;if($.inArray(data.func,["check_node","uncheck_node"])){var node=$(data.args[0]).parents("li:first"),allowedChildren=node.find("li:not(.disabled)");if(node.hasClass("disabled")&&0==allowedChildren)return e.stopImmediatePropagation(),!1}}).bind("move_node.jstree",function(e,data){if(!self.getIsUpdatingTree()){var movedNode=data.rslt.o,newParentNode=data.rslt.np,newParentID=(data.inst._get_parent(movedNode),$(newParentNode).data("id")||0),nodeID=$(movedNode).data("id"),siblingIDs=$.map($(movedNode).siblings().andSelf(),function(el){return $(el).data("id")});$.ajax({url:$.path.addSearchParams(self.data("urlSavetreenode"),self.data("extraParams")),type:"POST",data:{ID:nodeID,ParentID:newParentID,SiblingIDs:siblingIDs},success:function(){$(".cms-edit-form :input[name=ID]").val()==nodeID&&$(".cms-edit-form :input[name=ParentID]").val(newParentID),self.updateNodesFromServer([nodeID])},statusCode:{403:function(){$.jstree.rollback(data.rlbk)}}})}}).bind("select_node.jstree check_node.jstree uncheck_node.jstree",function(e,data){$(document).triggerHandler(e,data)})}},onremove:function(){this.jstree("destroy"),this._super()},"from .cms-container":{onafterstatechange:function(e){this.updateFromEditForm()}},"from .cms-container form":{onaftersubmitform:function(e){var id=$(".cms-edit-form :input[name=ID]").val();this.updateNodesFromServer([id])}},getTreeConfig:function(){var self=this;return{core:{initially_open:["record-0"],animation:0,html_titles:!0},html_data:{},ui:{select_limit:1,initially_select:[this.find(".current").attr("id")]},crrm:{move:{check_move:function(data){var movedNode=$(data.o),newParent=$(data.np),isMovedOntoContainer=data.ot.get_container()[0]==data.np[0],movedNodeClass=movedNode.getClassname(),newParentClass=newParent.getClassname(),hints=self.getHints(),disallowedChildren=[],hintKey=newParentClass?newParentClass:"Root",hint=hints&&"undefined"!=typeof hints[hintKey]?hints[hintKey]:null;hint&&movedNode.attr("class").match(/VirtualPage-([^\s]*)/)&&(movedNodeClass=RegExp.$1),hint&&(disallowedChildren="undefined"!=typeof hint.disallowedChildren?hint.disallowedChildren:[]);var isAllowed=!(0===movedNode.data("id")||movedNode.hasClass("status-archived")||isMovedOntoContainer&&"inside"!=data.p||newParent.hasClass("nochildren")||disallowedChildren.length&&-1!=$.inArray(movedNodeClass,disallowedChildren));return isAllowed}}},dnd:{drop_target:!1,drag_target:!1},checkbox:{two_state:!0},themes:{theme:"apple",url:$("body").data("frameworkpath")+"/thirdparty/jstree/themes/apple/style.css"},plugins:["html_data","ui","dnd","crrm","themes","checkbox"]}},search:function(params,callback){params?this.data("searchparams",params):this.removeData("searchparams"),this.jstree("refresh",-1,callback)},getNodeByID:function(id){return this.find("*[data-id="+id+"]")},createNode:function(html,data,callback){var self=this,parentNode=void 0!==data.ParentID?self.getNodeByID(data.ParentID):!1,newNode=$(html),properties={data:""};newNode.hasClass("jstree-open")?properties.state="open":newNode.hasClass("jstree-closed")&&(properties.state="closed"),this.jstree("create_node",parentNode.length?parentNode:-1,"last",properties,function(node){for(var origClasses=node.attr("class"),i=0;i399?"bad":"good",ignoredMessages=["OK","success","HTTP/2.0 200"];return null===url||isSameUrl(origUrl,url)&&isSameUrl(destUrl,url)||window.ss.router.show(url,{id:(new Date).getTime()+String(Math.random()).replace(/\D/g,""),pjax:xhr.getResponseHeader("X-Pjax")?xhr.getResponseHeader("X-Pjax"):settings.headers["X-Pjax"]}),xhr.getResponseHeader("X-Reauthenticate")?void $(".cms-container").showLoginDialog():(0!==xhr.status&&msg&&-1===$.inArray(msg,ignoredMessages)&&statusMessage(decodeURIComponent(msg),msgType),void ajaxCompleteEvent(this))}),$(".cms-container").entwine({StateChangeXHR:null,FragmentXHR:{},StateChangeCount:0,LayoutOptions:{minContentWidth:940,minPreviewWidth:400,mode:"content"},onadd:function(){return $.browser.msie&&parseInt($.browser.version,10)<8?($(".ss-loading-screen").append('
Your browser is not compatible with the CMS interface. Please use Internet Explorer 8+, Google Chrome or Mozilla Firefox.
').css("z-index",$(".ss-loading-screen").css("z-index")+1),$(".loading-animation").remove(),void this._super()):(this.redraw(),$(".ss-loading-screen").hide(),$("body").removeClass("loading"),$(window).unbind("resize",positionLoadingSpinner),this.restoreTabState(),void this._super())},onwindowresize:function(){this.redraw()},"from .cms-panel":{ontoggle:function(){this.redraw()}},"from .cms-container":{onaftersubmitform:function(){this.redraw()}},"from .cms-menu-list li a":{onclick:function(e){var href=$(e.target).attr("href");e.which>1||href==this._tabStateUrl()||this.splitViewMode()}},updateLayoutOptions:function(newSpec){var spec=this.getLayoutOptions(),dirty=!1;for(var k in newSpec)spec[k]!==newSpec[k]&&(spec[k]=newSpec[k],dirty=!0);dirty&&this.redraw()},splitViewMode:function(){this.updateLayoutOptions({mode:"split"})},contentViewMode:function(){this.updateLayoutOptions({mode:"content"})},previewMode:function(){this.updateLayoutOptions({mode:"preview"})},RedrawSuppression:!1,redraw:function(){this.getRedrawSuppression()||(window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.data("jlayout",jLayout.threeColumnCompressor({menu:this.children(".cms-menu"),content:this.children(".cms-content"),preview:this.children(".cms-preview")},this.getLayoutOptions())),this.layout(),this.find(".cms-panel-layout").redraw(),this.find(".cms-content-fields[data-layout-type]").redraw(),this.find(".cms-edit-form[data-layout-type]").redraw(),this.find(".cms-preview").redraw(),this.find(".cms-content").redraw())},checkCanNavigate:function(selectors){var contentEls=this._findFragments(selectors||["Content"]),trackedEls=contentEls.find(":data(changetracker)").add(contentEls.filter(":data(changetracker)")),safe=!0;return trackedEls.length?(trackedEls.each(function(){$(this).confirmUnsavedChanges()||(safe=!1)}),safe):!0},loadPanel:function(url){var data=(arguments.length<=1||void 0===arguments[1]?"":arguments[1],arguments.length<=2||void 0===arguments[2]?{}:arguments[2]),forceReload=arguments[3],forceReferer=arguments.length<=4||void 0===arguments[4]?document.URL:arguments[4];this.checkCanNavigate(data.pjax?data.pjax.split(","):["Content"])&&(this.saveTabState(),data.__forceReferer=forceReferer,forceReload&&(data.__forceReload=Math.random()),window.ss.router.show(url,data))},reloadCurrentPanel:function(){this.loadPanel(document.URL,null,null,!0)},submitForm:function(form,button,callback,ajaxOptions){var self=this;button||(button=this.find(".btn-toolbar :submit[name=action_save]")),button||(button=this.find(".btn-toolbar :submit:first")),form.trigger("beforesubmitform"),this.trigger("submitform",{form:form,button:button}),$(button).addClass("loading");var validationResult=form.validate();if("undefined"!=typeof validationResult&&!validationResult)return statusMessage("Validation failed.","bad"),$(button).removeClass("loading"),!1;var formData=form.serializeArray();return formData.push({name:$(button).attr("name"),value:"1"}),formData.push({name:"BackURL",value:document.URL.replace(/\/$/,"")}),this.saveTabState(),jQuery.ajax(jQuery.extend({headers:{"X-Pjax":"CurrentForm,Breadcrumbs"},url:form.attr("action"),data:formData,type:"POST",complete:function(){$(button).removeClass("loading")},success:function(data,status,xhr){form.removeClass("changed"),callback&&callback(data,status,xhr);var newContentEls=self.handleAjaxResponse(data,status,xhr);newContentEls&&newContentEls.filter("form").trigger("aftersubmitform",{status:status,xhr:xhr,formData:formData})}},ajaxOptions)),!1},LastState:null,PauseState:!1,handleStateChange:function(event){var historyState=arguments.length<=1||void 0===arguments[1]?window.history.state:arguments[1];if(!this.getPauseState()){this.getStateChangeXHR()&&this.getStateChangeXHR().abort();var self=this,fragments=historyState.pjax||"Content",headers={},fragmentsArr=fragments.split(","),contentEls=this._findFragments(fragmentsArr);if(this.setStateChangeCount(this.getStateChangeCount()+1),!this.checkCanNavigate()){var lastState=this.getLastState();return this.setPauseState(!0),lastState&&lastState.path?window.ss.router.show(lastState.path):window.ss.router.back(),void this.setPauseState(!1)}if(this.setLastState(historyState),contentEls.length=0})),newContentEl.removeClass(layoutClasses.join(" ")).addClass(origLayoutClasses.join(" ")),origStyle&&newContentEl.attr("style",origStyle);var styles=newContentEl.find("style").detach();styles.length&&$(document).find("head").append(styles),contentEl.replaceWith(newContentEl),!origParent.is(".cms-container")&&origParentLayoutApplied&&origParent.layout()});var newForm=newContentEls.filter("form");newForm.hasClass("cms-tabset")&&newForm.removeClass("cms-tabset").addClass("cms-tabset")}finally{this.setRedrawSuppression(!1)}return this.redraw(),this.restoreTabState(state&&"undefined"!=typeof state.tabState?state.tabState:null),newContentEls}},_findFragments:function(fragments){return $("[data-pjax-fragment]").filter(function(){var i,nodeFragments=$(this).data("pjaxFragment").split(" ");for(i in fragments)if(-1!=$.inArray(fragments[i],nodeFragments))return!0;return!1})},refresh:function(){$(window).trigger("statechange"),$(this).redraw()},saveTabState:function(){if("undefined"!=typeof window.sessionStorage&&null!==window.sessionStorage){var selectedTabs=[],url=this._tabStateUrl();if(this.find(".cms-tabset,.ss-tabset").each(function(i,el){var id=$(el).attr("id");id&&$(el).data("tabs")&&($(el).data("ignoreTabState")||$(el).getIgnoreTabState()||selectedTabs.push({id:id,selected:$(el).tabs("option","selected")}))}),selectedTabs){var tabsUrl="tabs-"+url;try{window.sessionStorage.setItem(tabsUrl,JSON.stringify(selectedTabs))}catch(err){if(err.code===DOMException.QUOTA_EXCEEDED_ERR&&0===window.sessionStorage.length)return;throw err}}}},restoreTabState:function(overrideStates){var self=this,url=this._tabStateUrl(),hasSessionStorage="undefined"!=typeof window.sessionStorage&&window.sessionStorage,sessionData=hasSessionStorage?window.sessionStorage.getItem("tabs-"+url):null,sessionStates=sessionData?JSON.parse(sessionData):!1;this.find(".cms-tabset, .ss-tabset").each(function(){var index,tab,tabset=$(this),tabsetId=tabset.attr("id"),forcedTab=tabset.children("ul").children("li.ss-tabs-force-active");tabset.data("tabs")&&(tabset.tabs("refresh"),forcedTab.length?index=forcedTab.first().index():overrideStates&&overrideStates[tabsetId]?(tab=tabset.find(overrideStates[tabsetId].tabSelector),tab.length&&(index=tab.index())):sessionStates&&$.each(sessionStates,function(i,state){tabsetId==state.id&&(index=state.selected)}),null!==index&&(tabset.tabs("option","active",index),self.trigger("tabstaterestored")))})},clearTabState:function(url){if("undefined"!=typeof window.sessionStorage){var s=window.sessionStorage;if(url)s.removeItem("tabs-"+url);else for(var i=0;i'),dialog.attr("id",(new Date).getTime()),dialog.data("url",url),$("body").append(dialog)}}),$(".leftandmain-logindialog").entwine({onmatch:function(){this._super(),this.ssdialog({iframeUrl:this.data("url"),dialogClass:"leftandmain-logindialog-dialog",autoOpen:!0,minWidth:500,maxWidth:500,minHeight:370,maxHeight:400,closeOnEscape:!1,open:function(){$(".ui-widget-overlay").addClass("leftandmain-logindialog-overlay")},close:function(){$(".ui-widget-overlay").removeClass("leftandmain-logindialog-overlay")}})},onunmatch:function(){this._super()},open:function(){this.ssdialog("open")},close:function(){this.ssdialog("close")},toggle:function(bool){this.is(":visible")?this.close():this.open()},reauthenticate:function(data){"undefined"!=typeof data.SecurityID&&$(":input[name=SecurityID]").val(data.SecurityID),"undefined"!=typeof data.TempID&&$("body").data("member-tempid",data.TempID),this.close()}}),$("form.loading,.cms-content.loading,.cms-content-fields.loading,.cms-content-view.loading").entwine({onmatch:function(){this.append(''),this._super()},onunmatch:function(){this.find(".cms-content-loading-overlay,.cms-content-loading-spinner").remove(),this._super()}}),$('.cms input[type="submit"], .cms button, .cms input[type="reset"], .cms .ss-ui-button').entwine({onadd:function(){this.addClass("ss-ui-button"),this.data("button")||this.button(),this._super()},onremove:function(){this.data("button")&&this.button("destroy"),this._super()}}),$(".cms .cms-panel-link").entwine({onclick:function(e){if($(this).hasClass("external-link"))return void e.stopPropagation();var href=this.attr("href"),url=href&&!href.match(/^#/)?href:this.data("href"),data={pjax:this.data("pjaxTarget")};$(".cms-container").loadPanel(url,null,data),e.preventDefault()}}),$(".cms .ss-ui-button-ajax").entwine({onclick:function onclick(e){$(this).removeClass("ui-button-text-only"),$(this).addClass("ss-ui-button-loading ui-button-text-icons");var loading=$(this).find(".ss-ui-loading-icon");loading.length<1&&(loading=$("").addClass("ss-ui-loading-icon ui-button-icon-primary ui-icon"),$(this).prepend(loading)),loading.show();var href=this.attr("href"),url=href?href:this.data("href");jQuery.ajax({url:url,complete:function complete(xmlhttp,status){var msg=xmlhttp.getResponseHeader("X-Status")?xmlhttp.getResponseHeader("X-Status"):xmlhttp.responseText;try{"undefined"!=typeof msg&&null!==msg&&eval(msg)}catch(e){}loading.hide(),$(".cms-container").refresh(),$(this).removeClass("ss-ui-button-loading ui-button-text-icons"),$(this).addClass("ui-button-text-only")},dataType:"html"}),e.preventDefault()}}),$(".cms .ss-ui-dialog-link").entwine({UUID:null,onmatch:function(){this._super(),this.setUUID((new Date).getTime())},onunmatch:function(){this._super()},onclick:function(){this._super();var id="ss-ui-dialog-"+this.getUUID(),dialog=$("#"+id);dialog.length||(dialog=$(''),$("body").append(dialog));var extraClass=this.data("popupclass")?this.data("popupclass"):"";return dialog.ssdialog({iframeUrl:this.attr("href"),autoOpen:!0,dialogExtraClass:extraClass}),!1}}),$(".cms-content .btn-toolbar").entwine({onmatch:function(){this.find(".ss-ui-button").click(function(){var form=this.form;form&&(form.clickedButton=this,setTimeout(function(){form.clickedButton=null},10))}),this.redraw(),this._super()},onunmatch:function(){this._super()},redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0)),this.contents().filter(function(){return 3==this.nodeType&&!/\S/.test(this.nodeValue)}).remove(),this.find(".ss-ui-button").each(function(){$(this).data("button")||$(this).button()}),this.find(".ss-ui-buttonset").buttonset()}}),$(".cms .field.date input.text").entwine({onmatch:function(){var holder=$(this).parents(".field.date:first"),config=holder.data();return config.showcalendar?(config.showOn="button",config.locale&&$.datepicker.regional[config.locale]&&(config=$.extend(config,$.datepicker.regional[config.locale],{})),$(this).datepicker(config),void this._super()):void this._super()},onunmatch:function(){this._super()}}),$(".cms .field.dropdown select, .cms .field select[multiple], .fieldholder-small select.dropdown").entwine({onmatch:function(){return this.is(".no-chosen")?void this._super():(this.data("placeholder")||this.data("placeholder"," "),this.removeClass("has-chosen").chosen("destroy"),this.siblings(".chosen-container").remove(),applyChosen(this),void this._super())},onunmatch:function(){this._super()}}),$(".cms-panel-layout").entwine({redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0))}}),$(".cms .ss-gridfield").entwine({showDetailView:function(url){var params=window.location.search.replace(/^\?/,"");params&&(url=$.path.addSearchParams(url,params)),$(".cms-container").loadPanel(url)}}),$(".cms-search-form").entwine({onsubmit:function(e){var nonEmptyInputs,url;nonEmptyInputs=this.find(":input:not(:submit)").filter(function(){var vals=$.grep($(this).fieldValue(),function(val){return val});return vals.length}),url=this.attr("action"),nonEmptyInputs.length&&(url=$.path.addSearchParams(url,nonEmptyInputs.serialize().replace("+","%20")));var container=this.closest(".cms-container");return container.find(".cms-edit-form").tabs("select",0),container.loadPanel(url,"",{},!0),!1}}),$(".cms-search-form button[type=reset], .cms-search-form input[type=reset]").entwine({onclick:function(e){e.preventDefault();var form=$(this).parents("form");form.clearForm(),form.find(".dropdown select").prop("selectedIndex",0).trigger("chosen:updated"),form.submit()}}),window._panelDeferredCache={},$(".cms-panel-deferred").entwine({onadd:function(){this._super(),this.redraw()},onremove:function(){window.debug&&console.log("saving",this.data("url"),this),this.data("deferredNoCache")||(window._panelDeferredCache[this.data("url")]=this.html()),this._super()},redraw:function(){window.debug&&console.log("redraw",this.attr("class"),this.get(0));var self=this,url=this.data("url");if(!url)throw'Elements of class .cms-panel-deferred need a "data-url" attribute';this._super(),this.children().length||(this.data("deferredNoCache")||"undefined"==typeof window._panelDeferredCache[url]?(this.addClass("loading"),$.ajax({url:url,complete:function(){self.removeClass("loading")},success:function(data,status,xhr){self.html(data)}})):this.html(window._panelDeferredCache[url]))}}),$(".cms-tabset").entwine({onadd:function(){this.redrawTabs(),this._super()},onremove:function(){this.data("tabs")&&this.tabs("destroy"),this._super()},redrawTabs:function(){this.rewriteHashlinks();var activeTab=(this.attr("id"),this.find("ul:first .ui-tabs-active"));this.data("uiTabs")||this.tabs({active:-1!=activeTab.index()?activeTab.index():0,beforeLoad:function(e,ui){return!1},activate:function(e,ui){var actions=$(this).closest("form").find(".btn-toolbar");$(ui.newTab).closest("li").hasClass("readonly")?actions.fadeOut():actions.show()}}),this.trigger("afterredrawtabs")},rewriteHashlinks:function(){$(this).find("ul a").each(function(){if($(this).attr("href")){var matches=$(this).attr("href").match(/#.*/);matches&&$(this).attr("href",document.location.href.replace(/#.*/,"")+matches[0])}})}}),$("#filters-button").entwine({onmatch:function(){this._super(),this.data("collapsed",!0),this.data("animating",!1)},onunmatch:function(){this._super()},showHide:function(){var self=this,$filters=$(".cms-content-filters").first(),collapsed=this.data("collapsed");this.data("animating")||(this.toggleClass("active"),this.data("animating",!0),$filters[collapsed?"slideDown":"slideUp"]({complete:function(){self.data("collapsed",!collapsed),self.data("animating",!1)}}))},onclick:function(){this.showHide()}})});var statusMessage=function(text,type){text=jQuery("").text(text).html(),jQuery.noticeAdd({text:text,type:type,stayTime:5e3,inEffect:{left:"0",opacity:"show"}})},errorMessage=function(text){jQuery.noticeAdd({text:text,type:"error",stayTime:5e3,inEffect:{left:"0",opacity:"show"}})}},{jQuery:"jQuery"}]},{},[1]);
//# sourceMappingURL=bundle-legacy.js.map
diff --git a/admin/client/src/legacy/LeftAndMain.BatchActions.js b/admin/client/src/legacy/LeftAndMain.BatchActions.js
index f9e50a8bd..94bf57639 100644
--- a/admin/client/src/legacy/LeftAndMain.BatchActions.js
+++ b/admin/client/src/legacy/LeftAndMain.BatchActions.js
@@ -47,7 +47,7 @@ $.entwine('ss.tree', function($){
*/
registerDefault: function() {
// Publish selected pages action
- this.register('admin/pages/batchactions/publish', function(ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/publish', function(ids) {
var confirmed = confirm(
i18n.inject(
i18n._t(
@@ -61,7 +61,7 @@ $.entwine('ss.tree', function($){
});
// Unpublish selected pages action
- this.register('admin/pages/batchactions/unpublish', function(ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/unpublish', function(ids) {
var confirmed = confirm(
i18n.inject(
i18n._t(
@@ -76,7 +76,7 @@ $.entwine('ss.tree', function($){
// Delete selected pages action
// @deprecated since 4.0 Use archive instead
- this.register('admin/pages/batchactions/delete', function(ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/delete', function(ids) {
var confirmed = confirm(
i18n.inject(
i18n._t(
@@ -90,7 +90,7 @@ $.entwine('ss.tree', function($){
});
// Delete selected pages action
- this.register('admin/pages/batchactions/archive', function(ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/archive', function(ids) {
var confirmed = confirm(
i18n.inject(
i18n._t(
@@ -104,7 +104,7 @@ $.entwine('ss.tree', function($){
});
// Restore selected archived pages
- this.register('admin/pages/batchactions/restore', function(ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/restore', function(ids) {
var confirmed = confirm(
i18n.inject(
i18n._t(
@@ -118,7 +118,7 @@ $.entwine('ss.tree', function($){
});
// Delete selected pages from live action
- this.register('admin/pages/batchactions/deletefromlive', function(ids) {
+ this.register(ss.config.adminUrl + 'pages/batchactions/deletefromlive', function(ids) {
var confirmed = confirm(
i18n.inject(
i18n._t(
diff --git a/admin/code/AdminRootController.php b/admin/code/AdminRootController.php
index efcfcb3f7..d138875e2 100644
--- a/admin/code/AdminRootController.php
+++ b/admin/code/AdminRootController.php
@@ -6,15 +6,35 @@ use SilverStripe\ORM\DataModel;
* @package framework
* @subpackage admin
*/
-class AdminRootController extends Controller {
+class AdminRootController extends Controller implements TemplateGlobalProvider {
/**
- * @var string
- * @config
- * The url base that all LeftAndMain derived panels will live under
- * Won't automatically update the base route if you change this - that has to be done seperately
+ * Convenience function to return the admin route config.
+ * Looks for the {@link Director::$rules} for the current admin Controller.
*/
- private static $url_base = 'admin';
+ public static function get_admin_route() {
+ if (Controller::has_curr()) {
+ $routeParams = Controller::curr()->getRequest()->routeParams();
+ $adminControllerClass = isset($routeParams['Controller']) ? $routeParams['Controller'] : get_called_class();
+ }
+ else {
+ $adminControllerClass = get_called_class();
+ }
+
+ $rules = Config::inst()->get('Director', 'rules');
+ $adminRoute = array_search($adminControllerClass, $rules);
+ return $adminRoute ? $adminRoute : '';
+ }
+
+ /**
+ * Returns the root admin URL for the site with trailing slash
+ *
+ * @return string
+ * @uses get_admin_route()
+ */
+ public static function admin_url() {
+ return self::get_admin_route() . '/';
+ }
/**
* @var string
@@ -70,10 +90,9 @@ class AdminRootController extends Controller {
public function handleRequest(SS_HTTPRequest $request, DataModel $model) {
// If this is the final portion of the request (i.e. the URL is just /admin), direct to the default panel
if ($request->allParsed()) {
- $base = $this->config()->url_base;
$segment = Config::inst()->get($this->config()->default_panel, 'url_segment');
- $this->redirect(Controller::join_links($base, $segment, '/'));
+ $this->redirect(Controller::join_links(self::admin_url(), $segment, '/'));
return $this->getResponse();
}
@@ -92,4 +111,14 @@ class AdminRootController extends Controller {
return $this->httpError(404, 'Not found');
}
+
+ /**
+ * @return array Returns an array of strings of the method names of methods on the call that should be exposed
+ * as global variables in the templates.
+ */
+ public static function get_template_global_variables() {
+ return array(
+ 'adminURL' => 'admin_url'
+ );
+ }
}
diff --git a/admin/code/CMSMenu.php b/admin/code/CMSMenu.php
index df377a95b..13ee96031 100644
--- a/admin/code/CMSMenu.php
+++ b/admin/code/CMSMenu.php
@@ -17,7 +17,8 @@ use SilverStripe\Security\Member;
* @package framework
* @subpackage admin
*/
-class CMSMenu extends Object implements IteratorAggregate, i18nEntityProvider {
+class
+CMSMenu extends Object implements IteratorAggregate, i18nEntityProvider {
/**
* Sort by menu priority, highest to lowest
@@ -71,7 +72,7 @@ class CMSMenu extends Object implements IteratorAggregate, i18nEntityProvider {
* @return CMSMenuItem
*/
protected static function menuitem_for_controller($controllerClass) {
- $urlBase = Config::inst()->get($controllerClass, 'url_base', Config::FIRST_SET);
+ $urlBase = AdminRootController::admin_url();
$urlSegment = Config::inst()->get($controllerClass, 'url_segment', Config::FIRST_SET);
$menuPriority = Config::inst()->get($controllerClass, 'menu_priority', Config::FIRST_SET);
diff --git a/admin/code/CampaignAdmin.php b/admin/code/CampaignAdmin.php
index d614684ef..7c1c0719c 100644
--- a/admin/code/CampaignAdmin.php
+++ b/admin/code/CampaignAdmin.php
@@ -85,6 +85,7 @@ class CampaignAdmin extends LeftAndMain implements PermissionProvider {
public function schema($request) {
// TODO Hardcoding schema until we can get GridField to generate a schema dynamically
$treeClassJS = Convert::raw2js($this->config()->tree_class);
+ $adminURL = Convert::raw2js(AdminRootController::admin_url());
$json = <<stat('url_base', true),
+ AdminRootController::admin_url(),
$segment,
'/', // trailing slash needed if $action is null!
"$action"
@@ -847,7 +838,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
// default menu is the one with a blank {@link url_segment}
} else if(singleton($menuItem->controller)->stat('url_segment') == '') {
- if($this->Link() == $this->stat('url_base').'/') {
+ if($this->Link() == AdminRootController::admin_url()) {
$linkingmode = "current";
}
diff --git a/admin/templates/Includes/LeftAndMain_MenuStatus.ss b/admin/templates/Includes/LeftAndMain_MenuStatus.ss
index a67bfaa18..3226623fc 100644
--- a/admin/templates/Includes/LeftAndMain_MenuStatus.ss
+++ b/admin/templates/Includes/LeftAndMain_MenuStatus.ss
@@ -3,7 +3,7 @@
<% with $CurrentMember %>
<%t LeftAndMain_Menu_ss.Hello 'Hi' %>
-
+
<% if $FirstName && $Surname %>$FirstName $Surname<% else_if $FirstName %>$FirstName<% else %>$Email<% end_if %>
diff --git a/control/Director.php b/control/Director.php
index 0b65ce593..eb9da32ce 100644
--- a/control/Director.php
+++ b/control/Director.php
@@ -407,7 +407,7 @@ class Director implements TemplateGlobalProvider {
if (isset($_REQUEST['debug'])) Debug::show($rules);
foreach($rules as $pattern => $controllerOptions) {
- if (is_string($controllerOptions)) {
+ if(is_string($controllerOptions)) {
if (substr($controllerOptions, 0, 2) == '->') {
$controllerOptions = array('Redirect' => substr($controllerOptions, 2));
} else {
diff --git a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/02_CMS_Architecture.md b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/02_CMS_Architecture.md
index eaeb2aba4..903e365ba 100644
--- a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/02_CMS_Architecture.md
+++ b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/02_CMS_Architecture.md
@@ -60,6 +60,43 @@ Along with the new sprite containing your image, there will also be a new variab
the sprite (eg `@extend .icon-sprites-32x32;`), and then including your image using the variable
matching your image (eg `@include sprite($sprites-32x32-my-image);`).
+## The Admin URL
+
+The CMS interface can be accessed by default through the `admin/` URL. You can change this by setting your own [Director routing rule](director#routing-rules) to the `[api:AdminRootController]` and clear the old rule like in the example below.
+
+ :::yml
+ ---
+ Name: myadmin
+ After:
+ - '#adminroutes'
+ ---
+ Director:
+ rules:
+ 'admin': ''
+ 'newAdmin': 'AdminRootController'
+ ---
+
+When extending the CMS or creating modules, you can take advantage of various functions that will return the configured admin URL (by default 'admin/' is returned):
+
+In PHP you should use:
+
+ :::php
+ AdminRootController::admin_url()
+
+When writing templates use:
+
+ :::ss
+ $AdminURL
+
+And in JavaScript, this is avaible through the `ss` namespace
+
+ :::js
+ ss.config.adminUrl
+
+### Multiple Admin URL and overrides
+
+You can also create your own classes that extend the `[api:AdminRootController]` to create multiple or custom admin areas, with a `Director.rules` for each one.
+
## Templates and Controllers
The CMS backend is handled through the [api:LeftAndMain] controller class,
@@ -345,7 +382,7 @@ in a single Ajax request.
<% include CMSBreadcrumbs %>
Static content (not affected by update)
<% include MyRecordInfo %>
-
+
Update record info
@@ -373,7 +410,7 @@ On the client, you can set your preference through the `data-pjax-target` attrib
on links or through the `X-Pjax` header. For firing off an Ajax request that is
tracked in the browser history, use the `pjax` attribute on the state data.
- $('.cms-container').loadPanel('admin/pages', null, {pjax: 'Content'});
+ $('.cms-container').loadPanel(ss.config.adminUrl+'pages', null, {pjax: 'Content'});
## Loading lightweight PJAX fragments
@@ -389,16 +426,16 @@ unrelated to the main flow.
In this case you can use the `loadFragment` call supplied by `LeftAndMain.js`. You can trigger as many of these in
parallel as you want. This will not disturb the main navigation.
- $('.cms-container').loadFragment('admin/foobar/', 'Fragment1');
- $('.cms-container').loadFragment('admin/foobar/', 'Fragment2');
- $('.cms-container').loadFragment('admin/foobar/', 'Fragment3');
+ $('.cms-container').loadFragment(ss.config.adminUrl+'foobar/', 'Fragment1');
+ $('.cms-container').loadFragment(ss.config.adminUrl+'foobar/', 'Fragment2');
+ $('.cms-container').loadFragment(ss.config.adminUrl+'foobar/', 'Fragment3');
The ongoing requests are tracked by the PJAX fragment name (Fragment1, 2, and 3 above) - resubmission will
result in the prior request for this fragment to be aborted. Other parallel requests will continue undisturbed.
You can also load multiple fragments in one request, as long as they are to the same controller (i.e. URL):
- $('.cms-container').loadFragment('admin/foobar/', 'Fragment2,Fragment3');
+ $('.cms-container').loadFragment(ss.config.adminUrl+'foobar/', 'Fragment2,Fragment3');
This counts as a separate request type from the perspective of the request tracking, so will not abort the singular
`Fragment2` nor `Fragment3`.
@@ -419,7 +456,7 @@ You can hook up a response handler that obtains all the details of the XHR reque
Alternatively you can use the jQuery deferred API:
$('.cms-container')
- .loadFragment('admin/foobar/', 'Fragment1')
+ .loadFragment(ss.config.adminUrl+'foobar/', 'Fragment1')
.success(function(data, status, xhr) {
// Say 'success'!
alert(status);
@@ -606,19 +643,19 @@ and load the HTML content into the main view. Example:
-The URL endpoints `admin/mytabs/tab1` and `admin/mytabs/tab2`
+The URL endpoints `{$AdminURL}mytabs/tab1` and `{$AdminURL}mytabs/tab2`
should return HTML fragments suitable for inserting into the content area,
through the `PjaxResponseNegotiator` class (see above).
@@ -629,4 +666,4 @@ through the `PjaxResponseNegotiator` class (see above).
* [Howto: Customise the CMS tree](/developer_guides/customising_the_admin_interface/how_tos/customise_cms_tree)
* [ModelAdmin API](api:ModelAdmin)
* [Reference: Layout](/developer_guides/customising_the_admin_interface/cms_layout)
- * [Rich Text Editing](/developer_guides/forms/field_types/htmleditorfield)
+ * [Rich Text Editing](/developer_guides/forms/field_types/htmleditorfield)
\ No newline at end of file
diff --git a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Customise_CMS_Tree.md b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Customise_CMS_Tree.md
index dbc61eec8..15d1660b2 100644
--- a/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Customise_CMS_Tree.md
+++ b/docs/en/02_Developer_Guides/15_Customising_the_Admin_Interface/How_Tos/Customise_CMS_Tree.md
@@ -26,7 +26,7 @@ code like this:
...
<% end_loop %>
diff --git a/docs/en/04_Changelogs/4.0.0.md b/docs/en/04_Changelogs/4.0.0.md
index 5b6bd1420..056b332c4 100644
--- a/docs/en/04_Changelogs/4.0.0.md
+++ b/docs/en/04_Changelogs/4.0.0.md
@@ -113,6 +113,7 @@
* `FormField::Title` and `FormField::RightTitle` are now cast as plain text by default (but can be overridden).
* `PopoverField` added to provide popup-menu behaviour in react forms (currently not available for
non-react forms).
+ * Admin URL can now be configured via custom Director routing rule
### Front-end build tooling for CMS interface
@@ -987,3 +988,11 @@ In case you want to keep using RestfulService, you can use `Firesphere/silverstr
Instead of Oembed, the framework now relies on [oscarotero/Embed](https://github.com/oscarotero/Embed) to handle getting the shortcode-data for embedding.
If you have custom embedding-code relying on Oembed, please refer to the documentation provided by oscarotero.
+
+### Admin URL can now be configured via custom Director routing rule
+
+The default `admin/` URL to access the CMS interface can now be changed via a custom Director routing rule for
+`AdminRootController`. If your website or module has hard coded `admin` URLs in PHP, templates or JavaScript, make sure
+to update those with the appropriate function or config call. See
+[CMS architecture](/developer_guides/customising_the_admin_interface/cms-architecture#the-admin-url) for language
+specific functions.
\ No newline at end of file
diff --git a/filesystem/File.php b/filesystem/File.php
index 249b65f87..f3ed555a8 100644
--- a/filesystem/File.php
+++ b/filesystem/File.php
@@ -742,7 +742,12 @@ class File extends DataObject implements ShortcodeHandler, AssetContainer, Thumb
* @return string
*/
public function DeleteLink() {
- return Director::absoluteBaseURL()."admin/assets/removefile/".$this->ID;
+ return Controller::join_links(
+ Director::absoluteBaseURL(),
+ AdminRootController::admin_url(),
+ "assets/removefile/",
+ $this->ID
+ );
}
/**
diff --git a/tests/control/DirectorTest.php b/tests/control/DirectorTest.php
index a78c70966..0f5e427ea 100644
--- a/tests/control/DirectorTest.php
+++ b/tests/control/DirectorTest.php
@@ -366,14 +366,14 @@ class DirectorTest extends SapphireTest {
Director::test('en-nz/myaction/myid/myotherid', null, null, null, null, null, null, $request);
$this->assertEquals(
- $request->params(),
array(
'Controller' => 'DirectorTestRequest_Controller',
'Action' => 'myaction',
'ID' => 'myid',
'OtherID' => 'myotherid',
'Locale' => 'en_NZ'
- )
+ ),
+ $request->params()
);
}