').insertBefore(this.$containerTopbar);for(var c=0;c"+b[c]+"").appendTo(this.$alerts);var d=this.$alerts.outerHeight();this.$alerts.css("margin-top",-d).velocity({"margin-top":0},"fast"),this.initAlerts()}},initAlerts:function(){var b=this.$alerts.find(".domain-mismatch:first");b.length&&this.addListener(b,"click",a.proxy(function(c){c.preventDefault(),confirm(Craft.t("Are you sure you want to transfer your license to this domain?"))&&Craft.queueActionRequest("app/transferLicenseToCurrentDomain",a.proxy(function(a,c){"success"==c&&(a.success?(b.parent().remove(),this.displayNotice(Craft.t("License transferred."))):this.displayError(a.error))},this))},this));for(var c=this.$alerts.find('a[class^="shun:"]'),d=0;d'+b.total+"").insertAfter(this.$siteNameLink),a("#footer-updates").text(c)}},runPendingTasks:function(){Craft.runTasksAutomatically?Craft.queueActionRequest("tasks/runPendingTasks",a.proxy(function(a,b){"success"==b&&this.trackTaskProgress(!1)},this)):this.trackTaskProgress(!1)},trackTaskProgress:function(b){this.trackTaskProgressTimeout||(b===!0&&(this.workingTaskInfo?(b=1e3*this.workingTaskInfo.age,b=Math.min(6e4,Math.max(500,b))):b=6e4),b?this.trackTaskProgressTimeout=setTimeout(a.proxy(this,"_trackTaskProgressInternal"),b):this._trackTaskProgressInternal())},_trackTaskProgressInternal:function(){Craft.queueActionRequest("tasks/getTaskInfo",a.proxy(function(a,b){"success"==b&&(this.trackTaskProgressTimeout=null,this.setTaskInfo(a,!0),this.workingTaskInfo&&this.trackTaskProgress(!0))},this))},setTaskInfo:function(a,b){this.taskInfo=a,this.workingTaskInfo=this.getWorkingTaskInfo(),this.areTasksStalled=this.workingTaskInfo&&"running"===this.workingTaskInfo.status&&this.workingTaskInfo.age>=Craft.CP.minStalledTaskAge,this.updateTaskIcon(this.getRunningTaskInfo(),b),this.trigger("setTaskInfo")},getRunningTaskInfo:function(){for(var a=["running","error","pending"],b=0;b=0;a--)if("running"===this.taskInfo[a].status)return this.taskInfo[a]},updateTaskIcon:function(a,c){a?(this.taskProgressIcon||(this.taskProgressIcon=new b),this.areTasksStalled?this.taskProgressIcon.showFailMode(Craft.t("Stalled task")):"running"==a.status||"pending"==a.status?(this.taskProgressIcon.hideFailMode(),this.taskProgressIcon.setDescription(a.description),this.taskProgressIcon.setProgress(a.progress,c)):"error"==a.status&&this.taskProgressIcon.showFailMode(Craft.t("Failed task"))):this.taskProgressIcon&&(this.taskProgressIcon.hideFailMode(),this.taskProgressIcon.complete(),delete this.taskProgressIcon)},showUpgradeModal:function(){this.upgradeModal?this.upgradeModal.show():this.upgradeModal=new Craft.UpgradeModal}},{maxWidth:1051,navHeight:38,baseNavWidth:30,subnavHeight:38,baseSubnavWidth:30,notificationDuration:2e3,minStalledTaskAge:300,normalizeTaskStatus:function(a){return"running"===a&&Craft.cp.areTasksStalled?"stalled":a}}),Craft.cp=new Craft.CP;var b=Garnish.Base.extend({$li:null,$a:null,$label:null,hud:null,failMode:!1,_canvasSupported:null,_$bgCanvas:null,_$staticCanvas:null,_$hoverCanvas:null,_$failCanvas:null,_staticCtx:null,_hoverCtx:null,_canvasSize:null,_arcPos:null,_arcRadius:null,_lineWidth:null,_arcStartPos:0,_arcEndPos:0,_arcStartStepSize:null,_arcEndStepSize:null,_arcStep:null,_arcStepTimeout:null,_arcAnimateCallback:null,_progressBar:null,init:function(){if(this.$li=a("").appendTo(Craft.cp.$nav),this.$a=a('').appendTo(this.$li),this.$canvasContainer=a('').appendTo(this.$a),this.$label=a('').appendTo(this.$a),this._canvasSupported=!!document.createElement("canvas").getContext,this._canvasSupported){var b=window.devicePixelRatio>1?2:1;this._canvasSize=18*b,this._arcPos=this._canvasSize/2,this._arcRadius=7*b,this._lineWidth=3*b,this._$bgCanvas=this._createCanvas("bg","#61666b"),this._$staticCanvas=this._createCanvas("static","#d7d9db"),this._$hoverCanvas=this._createCanvas("hover","#fff"),this._$failCanvas=this._createCanvas("fail","#da5a47").hide(),this._staticCtx=this._$staticCanvas[0].getContext("2d"),this._hoverCtx=this._$hoverCanvas[0].getContext("2d"),this._drawArc(this._$bgCanvas[0].getContext("2d"),0,1),this._drawArc(this._$failCanvas[0].getContext("2d"),0,1)}else this._progressBar=new Craft.ProgressBar(this.$canvasContainer),this._progressBar.showProgressBar();this.addListener(this.$a,"click","toggleHud")},setDescription:function(a){this.$a.attr("title",a),this.$label.html(a)},setProgress:function(a,b){this._canvasSupported?b?this._animateArc(0,a):this._setArc(0,a):this._progressBar.setProgressPercentage(100*a)},complete:function(){this._canvasSupported?this._animateArc(0,1,a.proxy(function(){this._$bgCanvas.velocity("fadeOut"),this._animateArc(1,1,a.proxy(function(){this.$a.remove(),this.destroy()},this))},this)):(this._progressBar.setProgressPercentage(100),this.$a.velocity("fadeOut"))},showFailMode:function(a){this.failMode||(this.failMode=!0,this._canvasSupported?(this._$bgCanvas.hide(),this._$staticCanvas.hide(),this._$hoverCanvas.hide(),this._$failCanvas.show()):(this._progressBar.$progressBar.css("border-color","#da5a47"),this._progressBar.$innerProgressBar.css("background-color","#da5a47"),this._progressBar.setProgressPercentage(50)),this.setDescription(a))},hideFailMode:function(){this.failMode&&(this.failMode=!1,this._canvasSupported?(this._$bgCanvas.show(),this._$staticCanvas.show(),this._$hoverCanvas.show(),this._$failCanvas.hide()):(this._progressBar.$progressBar.css("border-color",""),this._progressBar.$innerProgressBar.css("background-color",""),this._progressBar.setProgressPercentage(50)))},toggleHud:function(){this.hud?this.hud.toggle():this.hud=new c},_createCanvas:function(b,c){var d=a('').appendTo(this.$canvasContainer),e=d[0].getContext("2d");return e.strokeStyle=c,e.lineWidth=this._lineWidth,e.lineCap="round",d},_setArc:function(a,b){this._arcStartPos=a,this._arcEndPos=b,this._drawArc(this._staticCtx,a,b),this._drawArc(this._hoverCtx,a,b)},_drawArc:function(a,b,c){a.clearRect(0,0,this._canvasSize,this._canvasSize),a.beginPath(),a.arc(this._arcPos,this._arcPos,this._arcRadius,(1.5+2*b)*Math.PI,(1.5+2*c)*Math.PI),a.stroke(),a.closePath()},_animateArc:function(a,b,c){this._arcStepTimeout&&clearTimeout(this._arcStepTimeout),this._arcStep=0,this._arcStartStepSize=(a-this._arcStartPos)/10,this._arcEndStepSize=(b-this._arcEndPos)/10,this._arcAnimateCallback=c,this._takeNextArcStep()},_takeNextArcStep:function(){this._setArc(this._arcStartPos+this._arcStartStepSize,this._arcEndPos+this._arcEndStepSize),this._arcStep++,this._arcStep<10?this._arcStepTimeout=setTimeout(a.proxy(this,"_takeNextArcStep"),50):this._arcAnimateCallback&&this._arcAnimateCallback()}}),c=Garnish.HUD.extend({tasksById:null,completedTasks:null,updateViewProxy:null,init:function(){this.tasksById={},this.completedTasks=[],this.updateViewProxy=a.proxy(this,"updateView"),this.base(Craft.cp.taskProgressIcon.$a),this.$main.attr("id","tasks-hud")},onShow:function(){Craft.cp.on("setTaskInfo",this.updateViewProxy),this.updateView(),this.base()},onHide:function(){if(Craft.cp.off("setTaskInfo",this.updateViewProxy),this.completedTasks.length){for(var a=0;a'),this.$statusContainer=a('').appendTo(this.$container),this.$descriptionContainer=a('').appendTo(this.$container).text(c.description),this.$container.data("task",this),0!=this.level&&(this.$container.css("padding-"+Craft.left,24+24*this.level),a('').appendTo(this.$descriptionContainer)),this.updateStatus(c)},updateStatus:function(b){if(this.status!==(this.status=Craft.CP.normalizeTaskStatus(b.status)))switch(this.$statusContainer.empty(),this.status){case"pending":this.$statusContainer.text(Craft.t("Pending"));break;case"running":this._progressBar=new Craft.ProgressBar(this.$statusContainer),this._progressBar.showProgressBar();break;case"stalled":case"error":if(a(''+("stalled"===this.status?Craft.t("Stalled"):Craft.t("Failed"))+"").appendTo(this.$statusContainer),0==this.level){var c=a('').appendTo(this.$statusContainer);a('
').insertBefore(this.$containerTopbar);for(var c=0;c"+b[c]+"").appendTo(this.$alerts);var d=this.$alerts.outerHeight();this.$alerts.css("margin-top",-d).velocity({"margin-top":0},"fast"),this.initAlerts()}},initAlerts:function(){var b=this.$alerts.find(".domain-mismatch:first");b.length&&this.addListener(b,"click",a.proxy(function(c){c.preventDefault(),confirm(Craft.t("Are you sure you want to transfer your license to this domain?"))&&Craft.queueActionRequest("app/transferLicenseToCurrentDomain",a.proxy(function(a,c){"success"==c&&(a.success?(b.parent().remove(),this.displayNotice(Craft.t("License transferred."))):this.displayError(a.error))},this))},this));for(var c=this.$alerts.find('a[class^="shun:"]'),d=0;d'+b.total+"").insertAfter(this.$siteNameLink),a("#footer-updates").text(c)}},runPendingTasks:function(){Craft.runTasksAutomatically?Craft.queueActionRequest("tasks/runPendingTasks",a.proxy(function(a,b){"success"==b&&this.trackTaskProgress(!1)},this)):this.trackTaskProgress(!1)},trackTaskProgress:function(b){this.trackTaskProgressTimeout||(b===!0&&(this.workingTaskInfo?(b=1e3*this.workingTaskInfo.age,b=Math.min(6e4,Math.max(500,b))):b=6e4),b?this.trackTaskProgressTimeout=setTimeout(a.proxy(this,"_trackTaskProgressInternal"),b):this._trackTaskProgressInternal())},_trackTaskProgressInternal:function(){Craft.queueActionRequest("tasks/getTaskInfo",a.proxy(function(a,b){"success"==b&&(this.trackTaskProgressTimeout=null,this.setTaskInfo(a,!0),this.workingTaskInfo&&this.trackTaskProgress(!0))},this))},setTaskInfo:function(a,b){this.taskInfo=a,this.workingTaskInfo=this.getWorkingTaskInfo(),this.areTasksStalled=this.workingTaskInfo&&"running"===this.workingTaskInfo.status&&this.workingTaskInfo.age>=Craft.CP.minStalledTaskAge,this.updateTaskIcon(this.getRunningTaskInfo(),b),this.trigger("setTaskInfo")},getRunningTaskInfo:function(){for(var a=["running","error","pending"],b=0;b=0;a--)if("running"===this.taskInfo[a].status)return this.taskInfo[a]},updateTaskIcon:function(a,c){a?(this.taskProgressIcon||(this.taskProgressIcon=new b),this.areTasksStalled?this.taskProgressIcon.showFailMode(Craft.t("Stalled task")):"running"==a.status||"pending"==a.status?(this.taskProgressIcon.hideFailMode(),this.taskProgressIcon.setDescription(a.description),this.taskProgressIcon.setProgress(a.progress,c)):"error"==a.status&&this.taskProgressIcon.showFailMode(Craft.t("Failed task"))):this.taskProgressIcon&&(this.taskProgressIcon.hideFailMode(),this.taskProgressIcon.complete(),delete this.taskProgressIcon)},showUpgradeModal:function(){this.upgradeModal?this.upgradeModal.show():this.upgradeModal=new Craft.UpgradeModal}},{maxWidth:1051,navHeight:38,baseNavWidth:30,subnavHeight:38,baseSubnavWidth:30,notificationDuration:2e3,minStalledTaskAge:300,normalizeTaskStatus:function(a){return"running"===a&&Craft.cp.areTasksStalled?"stalled":a}}),Craft.cp=new Craft.CP;var b=Garnish.Base.extend({$li:null,$a:null,$label:null,hud:null,failMode:!1,_canvasSupported:null,_$bgCanvas:null,_$staticCanvas:null,_$hoverCanvas:null,_$failCanvas:null,_staticCtx:null,_hoverCtx:null,_canvasSize:null,_arcPos:null,_arcRadius:null,_lineWidth:null,_arcStartPos:0,_arcEndPos:0,_arcStartStepSize:null,_arcEndStepSize:null,_arcStep:null,_arcStepTimeout:null,_arcAnimateCallback:null,_progressBar:null,init:function(){if(this.$li=a("").appendTo(Craft.cp.$nav),this.$a=a('').appendTo(this.$li),this.$canvasContainer=a('').appendTo(this.$a),this.$label=a('').appendTo(this.$a),this._canvasSupported=!!document.createElement("canvas").getContext,this._canvasSupported){var b=window.devicePixelRatio>1?2:1;this._canvasSize=18*b,this._arcPos=this._canvasSize/2,this._arcRadius=7*b,this._lineWidth=3*b,this._$bgCanvas=this._createCanvas("bg","#61666b"),this._$staticCanvas=this._createCanvas("static","#d7d9db"),this._$hoverCanvas=this._createCanvas("hover","#fff"),this._$failCanvas=this._createCanvas("fail","#da5a47").hide(),this._staticCtx=this._$staticCanvas[0].getContext("2d"),this._hoverCtx=this._$hoverCanvas[0].getContext("2d"),this._drawArc(this._$bgCanvas[0].getContext("2d"),0,1),this._drawArc(this._$failCanvas[0].getContext("2d"),0,1)}else this._progressBar=new Craft.ProgressBar(this.$canvasContainer),this._progressBar.showProgressBar();this.addListener(this.$a,"click","toggleHud")},setDescription:function(a){this.$a.attr("title",a),this.$label.text(a)},setProgress:function(a,b){this._canvasSupported?b?this._animateArc(0,a):this._setArc(0,a):this._progressBar.setProgressPercentage(100*a)},complete:function(){this._canvasSupported?this._animateArc(0,1,a.proxy(function(){this._$bgCanvas.velocity("fadeOut"),this._animateArc(1,1,a.proxy(function(){this.$a.remove(),this.destroy()},this))},this)):(this._progressBar.setProgressPercentage(100),this.$a.velocity("fadeOut"))},showFailMode:function(a){this.failMode||(this.failMode=!0,this._canvasSupported?(this._$bgCanvas.hide(),this._$staticCanvas.hide(),this._$hoverCanvas.hide(),this._$failCanvas.show()):(this._progressBar.$progressBar.css("border-color","#da5a47"),this._progressBar.$innerProgressBar.css("background-color","#da5a47"),this._progressBar.setProgressPercentage(50)),this.setDescription(a))},hideFailMode:function(){this.failMode&&(this.failMode=!1,this._canvasSupported?(this._$bgCanvas.show(),this._$staticCanvas.show(),this._$hoverCanvas.show(),this._$failCanvas.hide()):(this._progressBar.$progressBar.css("border-color",""),this._progressBar.$innerProgressBar.css("background-color",""),this._progressBar.setProgressPercentage(50)))},toggleHud:function(){this.hud?this.hud.toggle():this.hud=new c},_createCanvas:function(b,c){var d=a('').appendTo(this.$canvasContainer),e=d[0].getContext("2d");return e.strokeStyle=c,e.lineWidth=this._lineWidth,e.lineCap="round",d},_setArc:function(a,b){this._arcStartPos=a,this._arcEndPos=b,this._drawArc(this._staticCtx,a,b),this._drawArc(this._hoverCtx,a,b)},_drawArc:function(a,b,c){a.clearRect(0,0,this._canvasSize,this._canvasSize),a.beginPath(),a.arc(this._arcPos,this._arcPos,this._arcRadius,(1.5+2*b)*Math.PI,(1.5+2*c)*Math.PI),a.stroke(),a.closePath()},_animateArc:function(a,b,c){this._arcStepTimeout&&clearTimeout(this._arcStepTimeout),this._arcStep=0,this._arcStartStepSize=(a-this._arcStartPos)/10,this._arcEndStepSize=(b-this._arcEndPos)/10,this._arcAnimateCallback=c,this._takeNextArcStep()},_takeNextArcStep:function(){this._setArc(this._arcStartPos+this._arcStartStepSize,this._arcEndPos+this._arcEndStepSize),this._arcStep++,this._arcStep<10?this._arcStepTimeout=setTimeout(a.proxy(this,"_takeNextArcStep"),50):this._arcAnimateCallback&&this._arcAnimateCallback()}}),c=Garnish.HUD.extend({tasksById:null,completedTasks:null,updateViewProxy:null,init:function(){this.tasksById={},this.completedTasks=[],this.updateViewProxy=a.proxy(this,"updateView"),this.base(Craft.cp.taskProgressIcon.$a),this.$main.attr("id","tasks-hud")},onShow:function(){Craft.cp.on("setTaskInfo",this.updateViewProxy),this.updateView(),this.base()},onHide:function(){if(Craft.cp.off("setTaskInfo",this.updateViewProxy),this.completedTasks.length){for(var a=0;a'),this.$statusContainer=a('').appendTo(this.$container),this.$descriptionContainer=a('').appendTo(this.$container).text(c.description),this.$container.data("task",this),0!=this.level&&(this.$container.css("padding-"+Craft.left,24+24*this.level),a('').appendTo(this.$descriptionContainer)),this.updateStatus(c)},updateStatus:function(b){if(this.status!==(this.status=Craft.CP.normalizeTaskStatus(b.status)))switch(this.$statusContainer.empty(),this.status){case"pending":this.$statusContainer.text(Craft.t("Pending"));break;case"running":this._progressBar=new Craft.ProgressBar(this.$statusContainer),this._progressBar.showProgressBar();break;case"stalled":case"error":if(a(''+("stalled"===this.status?Craft.t("Stalled"):Craft.t("Failed"))+"").appendTo(this.$statusContainer),0==this.level){var c=a('').appendTo(this.$statusContainer);a('
").appendTo(this.$primaryButtons),this.$body=e,this.addListener(this.$cancelBtn,"activate","cancel"),this.addListener(this.$selectBtn,"activate","selectElements")},onFadeIn:function(){this.elementIndex?Garnish.isMobileBrowser(!0)||this.elementIndex.$search.focus():this._createElementIndex(),this.base()},onSelectionChange:function(){this.updateSelectBtnState()},updateSelectBtnState:function(){this.$selectBtn&&(this.elementIndex.getSelectedElements().length?this.enableSelectBtn():this.disableSelectBtn())},enableSelectBtn:function(){this.$selectBtn.removeClass("disabled")},disableSelectBtn:function(){this.$selectBtn.addClass("disabled")},enableCancelBtn:function(){this.$cancelBtn.removeClass("disabled")},disableCancelBtn:function(){this.$cancelBtn.addClass("disabled")},showFooterSpinner:function(){this.$footerSpinner.removeClass("hidden")},hideFooterSpinner:function(){this.$footerSpinner.addClass("hidden")},cancel:function(){this.$cancelBtn.hasClass("disabled")||this.hide()},selectElements:function(){if(this.elementIndex&&this.elementIndex.getSelectedElements().length){this.elementIndex.view.elementSelect.clearMouseUpTimeout();var a=this.elementIndex.getSelectedElements(),b=this.getElementInfo(a);this.onSelect(b),this.settings.disableElementsOnSelect&&this.elementIndex.disableElements(this.elementIndex.getSelectedElements()),this.settings.hideOnSelect&&this.hide()}},getElementInfo:function(b){for(var c=[],d=0;d=this.settings.maxObjects)){var c=a(b).appendTo(this.$tbody),d=c.find(".delete");this.settings.sortable&&this.sorter.addItems(c),this.$deleteBtns=this.$deleteBtns.add(d),this.addListener(d,"click","handleDeleteBtnClick"),this.totalObjects++,this.updateUI()}},reorderObjects:function(){if(!this.settings.sortable)return!1;for(var b=[],c=0;c=this.settings.maxObjects?a(this.settings.newObjectBtnSelector).addClass("hidden"):a(this.settings.newObjectBtnSelector).removeClass("hidden"))}},{defaults:{tableSelector:null,noObjectsSelector:null,newObjectBtnSelector:null,idAttribute:"data-id",nameAttribute:"data-name",sortable:!1,allowDeleteAll:!0,minObjects:0,maxObjects:null,reorderAction:null,deleteAction:null,reorderSuccessMessage:Craft.t("New order saved."),reorderFailMessage:Craft.t("Couldn’t save new order."),confirmDeleteMessage:Craft.t("Are you sure you want to delete “{name}”?"),deleteSuccessMessage:Craft.t("“{name}” deleted."),deleteFailMessage:Craft.t("Couldn’t delete “{name}”."),onReorderObjects:a.noop,onDeleteObject:a.noop}}),Craft.AssetIndex=Craft.BaseElementIndex.extend({$includeSubfoldersContainer:null,$includeSubfoldersCheckbox:null,showingIncludeSubfoldersCheckbox:!1,$uploadButton:null,$uploadInput:null,$progressBar:null,$folders:null,uploader:null,promptHandler:null,progressBar:null,_uploadTotalFiles:0,_uploadFileProgress:{},_uploadedFileIds:[],_currentUploaderSettings:{},_fileDrag:null,_folderDrag:null,_expandDropTargetFolderTimeout:null,_tempExpandedFolders:[],init:function(b,c,d){this.base(b,c,d),"index"==this.settings.context?(this._initIndexPageMode(),this.addListener(Garnish.$win,"resize,scroll","_positionProgressBar")):(this.addListener(this.$main,"scroll","_positionProgressBar"),this.settings.modal&&this.settings.modal.on("updateSizeAndPosition",a.proxy(this,"_positionProgressBar")))},initSource:function(a){this.base(a),this._createFolderContextMenu(a),"index"==this.settings.context&&(this._folderDrag&&this._getSourceLevel(a)>1&&this._getFolderIdFromSourceKey(a.data("key"))&&this._folderDrag.addItems(a.parent()),this._fileDrag&&this._fileDrag.updateDropTargets())},deinitSource:function(a){this.base(a);var b=a.data("contextmenu");b&&b.destroy(),"index"==this.settings.context&&(this._folderDrag&&this._getSourceLevel(a)>1&&this._folderDrag.removeItems(a.parent()),this._fileDrag&&this._fileDrag.updateDropTargets())},_getSourceLevel:function(a){return a.parentsUntil("nav","ul").length},_initIndexPageMode:function(){this.settings.selectable=!0,this.settings.multiSelect=!0;var b=a.proxy(this,"_onDragStart"),c=a.proxy(this,"_onDropTargetChange");this._fileDrag=new Garnish.DragDrop({activeDropTargetClass:"sel",helperOpacity:.75,filter:a.proxy(function(){return this.view.getSelectedElements()},this),helper:a.proxy(function(a){return this._getFileDragHelper(a)},this),dropTargets:a.proxy(function(){for(var b=[],c=0;c1&&c.push(e.parent()[0])}return a(c)},this),helper:a.proxy(function(b){var c=a(''),d=a("").appendTo(c),e=a("
").appendTo(d);return b.appendTo(e).removeClass("expanded"),b.children("a").addClass("sel"),b.css({"padding-top":this._folderDrag.$draggee.css("padding-top"),"padding-right":this._folderDrag.$draggee.css("padding-right"),"padding-bottom":this._folderDrag.$draggee.css("padding-bottom"),"padding-left":this._folderDrag.$draggee.css("padding-left")}),c},this),dropTargets:a.proxy(function(){var b=[],c=[];this._folderDrag.$draggee.find("a[data-key]").each(function(){c.push(a(this).data("key"))});for(var d=0;d=b.length?d(h):o(b,c,d)},this))},this);return void o(i,0,n)}}else this.$source.addClass("sel"),this._collapseExtraExpandedFolders();this._folderDrag.returnHelpersToDraggees()},_performActualFolderMove:function(b,c,d,e,f){this.setIndexBusy(),this.progressBar.resetProgressBar(),this.progressBar.setItemCount(1),this.progressBar.showProgressBar();var g=a.proxy(function(a,b,c){var d,e;for(var g in b)e=this._getSourceByFolderId(g),e.attr("data-key","folder:"+b[g].newId).data("key","folder:"+b[g].newId),e=e.parent(),(!d||d.parents().filter(e).length>0)&&(d=e,topFolderMovedId=b[g].newId);if(0==d.length)return this.setIndexAvailable(),this.progressBar.hideProgressBar(),void this._folderDrag.returnHelpersToDraggees();var h=d.children("a"),i=d.siblings("ul, .toggle"),j=this._getParentSource(h),k=this._getSourceByFolderId(f);this._prepareParentForChildren(k),this._appendSubfolder(k,d),h.after(i),this._cleanUpTree(j),this.$sidebar.find("ul>ul, ul>.toggle").remove();for(var l=0;l0?this._moveFile(b,0,a.proxy(function(){g(c,d,e)},this)):g(c,d,e)},_getParentSource:function(a){if(this._getSourceLevel(a)>1)return a.parent().parent().siblings("a")},_moveFile:function(b,c,d){0==c&&(this.responseArray=[]),Craft.postActionRequest("assets/moveFile",b[c],a.proxy(function(a,e){this.progressBar.incrementProcessedItemCount(1),this.progressBar.updateProgressBar(),"success"==e&&(this.responseArray.push(a),Craft.cp.runPendingTasks()),c++,c>=b.length?d(this.responseArray):this._moveFile(b,c,d)},this))},_selectSourceByFolderId:function(b){for(var c=this._getSourceByFolderId(b),d=c.parent().parents("li"),e=0;e'+Craft.t("Upload files")+""),this.addButton(this.$uploadButton),this.$uploadInput=a('').hide().insertBefore(this.$uploadButton)),this.promptHandler=new Craft.PromptHandler,this.progressBar=new Craft.ProgressBar(this.$main,!0);var b={url:Craft.getActionUrl("assets/uploadFile"),fileInput:this.$uploadInput,dropZone:this.$main};b.events={fileuploadstart:a.proxy(this,"_onUploadStart"),fileuploadprogressall:a.proxy(this,"_onUploadProgress"),fileuploaddone:a.proxy(this,"_onUploadComplete")},"undefined"!=typeof this.settings.criteria.kind&&(b.allowedKinds=this.settings.criteria.kind),this._currentUploaderSettings=b,this.uploader=new Craft.Uploader(this.$uploadButton,b),this.$uploadButton.on("click",a.proxy(function(){this.$uploadButton.hasClass("disabled")||this.isIndexBusy||this.$uploadButton.parent().find("input[name=assets-upload]").click()},this)),this.base()},onSelectSource:function(){this.uploader.setParams({folderId:this._getFolderIdFromSourceKey(this.sourceKey)}),this.$source.attr("data-upload")?this.$uploadButton.removeClass("disabled"):this.$uploadButton.addClass("disabled"),this.base()},_getFolderIdFromSourceKey:function(a){var b=a.split(":");return b.length>1&&"folder"==b[0]?b[1]:null},startSearching:function(){if(this.$source.siblings("ul").length){if(null===this.$includeSubfoldersContainer){var b="includeSubfolders-"+Math.floor(1e9*Math.random());this.$includeSubfoldersContainer=a('').insertAfter(this.$search);var c=a('').appendTo(this.$includeSubfoldersContainer);this.$includeSubfoldersCheckbox=a('').appendTo(c),a('').text(" "+Craft.t("Search in subfolders")).appendTo(c),this.addListener(this.$includeSubfoldersCheckbox,"change",function(){this.setSelecetedSourceState("includeSubfolders",this.$includeSubfoldersCheckbox.prop("checked")),this.updateElements()})}else this.$includeSubfoldersContainer.velocity("stop");var d=this.getSelectedSourceState("includeSubfolders",!1);this.$includeSubfoldersCheckbox.prop("checked",d),this.$includeSubfoldersContainer.velocity({marginBottom:0,opacity:1},"fast"),this.showingIncludeSubfoldersCheckbox=!0}this.base()},stopSearching:function(){this.showingIncludeSubfoldersCheckbox&&(this.$includeSubfoldersContainer.velocity("stop"),this.$includeSubfoldersContainer.velocity({marginBottom:-23,opacity:0},"fast"),this.showingIncludeSubfoldersCheckbox=!1),this.base()},getViewParams:function(){var a=this.base();return this.showingIncludeSubfoldersCheckbox&&this.$includeSubfoldersCheckbox.prop("checked")&&(a.criteria.includeSubfolders=!0),a},_onUploadStart:function(a){this.setIndexBusy(),this._positionProgressBar(),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(a,b){var c=parseInt(b.loaded/b.total*100,10);this.progressBar.setProgressPercentage(c)},_onUploadComplete:function(b,c){var d=c.result,e=c.files[0].name,f=!0;d.success||d.prompt?(this._uploadedFileIds.push(d.fileId),d.prompt&&this.promptHandler.addPrompt(d)):(d.error?alert(Craft.t("Upload failed for {filename}. The error message was: “{error}”",{filename:e,error:d.error})):alert(Craft.t("Upload failed for {filename}.",{filename:e})),f=!1),this.uploader.isLastUpload()&&(this.setIndexAvailable(),this.progressBar.hideProgressBar(),this.promptHandler.getPromptCount()?this.promptHandler.showBatchPrompts(a.proxy(this,"_uploadFollowup")):f&&this.updateElements())},_uploadFollowup:function(b){this.setIndexBusy(),this.progressBar.resetProgressBar(),this.promptHandler.resetPrompts();var c=a.proxy(function(){this.setIndexAvailable(),this.progressBar.hideProgressBar(),this.updateElements()},this);this.progressBar.setItemCount(b.length);var d=a.proxy(function(b,c,e){var f={newFileId:b[c].fileId,fileName:b[c].fileName,userResponse:b[c].choice};Craft.postActionRequest("assets/uploadFile",f,a.proxy(function(a,f){"success"==f&&a.fileId&&this._uploadedFileIds.push(a.fileId),c++,this.progressBar.incrementProcessedItemCount(1),this.progressBar.updateProgressBar(),c==b.length?e():d(b,c,e)},this))},this);this.progressBar.showProgressBar(),d(b,0,c)},onUpdateElements:function(){this._onUpdateElements(!1,this.view.getAllElements()),this.view.on("appendElements",a.proxy(function(a){this._onUpdateElements(!0,a.newElements)},this)),this.base()},_onUpdateElements:function(a,b){if("index"==this.settings.context&&(a||this._fileDrag.removeAllItems(),this._fileDrag.addItems(b)),this._uploadedFileIds.length){if(this.view.settings.selectable)for(var c=0;c').appendTo(Garnish.$bod),e=a('').appendTo(d),f=a('
'),this.initSourceToggle(a))},_appendSubfolder:function(b,c){for(var d=b.siblings("ul"),e=d.children("li"),f=a.trim(c.children("a:first").text()),g=!1,h=0;hf){i.before(c),g=!0;break}}g||b.siblings("ul").append(c)},_cleanUpTree:function(a){null!==a&&0==a.siblings("ul").children("li").length&&(this.deinitSourceToggle(a),a.siblings("ul").remove(),a.siblings(".toggle").remove(),a.parent().removeClass("expanded"))},_positionProgressBar:function(){var b=a(),c=0,d=0;"index"==this.settings.context?(b=this.progressBar.$progressBar.closest("#content"),c=Garnish.$win.scrollTop()):(b=this.progressBar.$progressBar.closest(".main"),c=this.$main.scrollTop());var e=b.offset().top,f=c-e,g=Garnish.$win.height();d=b.height()>g?g/2-6+f:b.height()/2-6,"index"!=this.settings.context&&(d=c+(b.height()/2-6)),this.progressBar.$progressBar.css({top:d})}}),Craft.registerElementIndexClass("Asset",Craft.AssetIndex),Craft.AssetSelectInput=Craft.BaseElementSelectInput.extend({requestId:0,hud:null,uploader:null,progressBar:null,originalFilename:"",originalExtension:"",init:function(b){b.editorSettings={onShowHud:a.proxy(this.resetOriginalFilename,this),onCreateForm:a.proxy(this._renameHelper,this),validators:[a.proxy(this.validateElementForm,this)]},this.base(b),this._attachUploader()},_attachUploader:function(){this.progressBar=new Craft.ProgressBar(a('').appendTo(this.$container));var b={url:Craft.getActionUrl("assets/expressUpload"),dropZone:this.$container,formData:{fieldId:this.settings.fieldId,elementId:this.settings.sourceElementId}};"undefined"!=typeof Craft.csrfTokenName&&"undefined"!=typeof Craft.csrfTokenValue&&(b.formData[Craft.csrfTokenName]=Craft.csrfTokenValue),"undefined"!=typeof this.settings.criteria.kind&&(b.allowedKinds=this.settings.criteria.kind),b.canAddMoreFiles=a.proxy(this,"canAddMoreFiles"),b.events={},b.events.fileuploadstart=a.proxy(this,"_onUploadStart"),b.events.fileuploadprogressall=a.proxy(this,"_onUploadProgress"),b.events.fileuploaddone=a.proxy(this,"_onUploadComplete"),this.uploader=new Craft.Uploader(this.$container,b)},selectUploadedFile:function(a){if(this.canAddMoreElements()){var b=a.$element;b.addClass("removable"),b.prepend(''),b.appendTo(this.$elementsContainer);var c=-(b.outerWidth()+10);this.$addElementBtn.css("margin-"+Craft.left,c+"px");var d={};d["margin-"+Craft.left]=0,this.$addElementBtn.velocity(d,"fast"),this.addElements(b),delete this.modal}},_onUploadStart:function(a){this.progressBar.$progressBar.css({top:Math.round(this.$container.outerHeight()/2)-6}),this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(a,b){var c=parseInt(b.loaded/b.total*100,10);this.progressBar.setProgressPercentage(c)},_onUploadComplete:function(b,c){if(c.result.error)alert(c.result.error);else{var d=a(c.result.html);Craft.appendHeadHtml(c.result.headHtml),this.selectUploadedFile(Craft.getElementInfo(d))}this.uploader.isLastUpload()&&(this.progressBar.hideProgressBar(),this.$container.removeClass("uploading"))},canAddMoreFiles:function(a){return!this.settings.limit||this.$elements.length+a1&&(c=b.pop());var d=b.join(".");return{extension:c,baseFileName:d}},_renameHelper:function(b){a(".renameHelper",b).on("focus",a.proxy(function(a){input=a.currentTarget;var b=this._parseFilename(input.value);""==this.originalFilename&&""==this.originalExtension&&(this.originalFilename=b.baseFileName,this.originalExtension=b.extension);var c=0,d=b.baseFileName.length;if("undefined"!=typeof input.selectionStart)input.selectionStart=c,input.selectionEnd=d;else if(document.selection&&document.selection.createRange){input.select();var e=document.selection.createRange();e.collapse(!0),e.moveEnd("character",d),e.moveStart("character",c),e.select()}},this))},resetOriginalFilename:function(){this.originalFilename="",this.originalExtension=""},validateElementForm:function(){var b=a(".renameHelper",this.elementEditor.hud.$hud.data("elementEditor").$form),c=this._parseFilename(b.val());return c.extension==this.originalExtension||(""==c.extension?this.originalFilename!=c.baseFileName?(b.val(c.baseFileName+"."+this.originalExtension),!0):confirm(Craft.t("Are you sure you want to remove the extension “.{ext}”?",{ext:this.originalExtension})):confirm(Craft.t("Are you sure you want to change the extension from “.{oldExt}” to “.{newExt}”?",{oldExt:this.originalExtension,newExt:c.extension})))}}),Craft.AssetSelectorModal=Craft.BaseElementSelectorModal.extend({$selectTransformBtn:null,_selectedTransform:null,init:function(b,c){c=a.extend({},Craft.AssetSelectorModal.defaults,c),this.base(b,c),c.transforms.length&&this.createSelectTransformButton(c.transforms)},createSelectTransformButton:function(b){if(b&&b.length){var c=a('').appendTo(this.$primaryButtons);this.$selectBtn.appendTo(c),this.$selectTransformBtn=a('
").appendTo(e),g=a('').appendTo(e);this.$logoutWarningPara=a("").prependTo(d),this.logoutWarningModal=new Garnish.Modal(c,{autoShow:!1,closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark",onFadeIn:function(){Garnish.isMobileBrowser(!0)||setTimeout(function(){g.focus()},100)}}),this.addListener(f,"activate","logout"),this.addListener(c,"submit","renewSession")}b?this.logoutWarningModal.quickShow():this.logoutWarningModal.show(),this.updateLogoutWarningMessage(),this.decrementLogoutWarningInterval=setInterval(a.proxy(this,"decrementLogoutWarning"),1e3)},updateLogoutWarningMessage:function(){this.$logoutWarningPara.text(Craft.t("Your session will expire in {time}.",{time:Craft.secondsToHumanTimeDuration(this.authTimeout)})),this.logoutWarningModal.updateSizeAndPosition()},decrementLogoutWarning:function(){this.authTimeout>0&&(this.authTimeout--,this.updateLogoutWarningMessage()),0==this.authTimeout&&clearInterval(this.decrementLogoutWarningInterval)},hideLogoutWarningModal:function(a){this.showingLogoutWarningModal=!1,this.logoutWarningModal&&(a?this.logoutWarningModal.quickHide():this.logoutWarningModal.hide(),this.decrementLogoutWarningInterval&&clearInterval(this.decrementLogoutWarningInterval))},showLoginModal:function(){var b;if(this.showingLogoutWarningModal?(this.hideLogoutWarningModal(!0),b=!0):b=!1,this.showingLoginModal=!0,!this.loginModal){var c=a(''),d=a('
'+Craft.t("Your session has ended.")+"
"+Craft.t("Enter your password to log back in.")+"
').appendTo(d),this.$footer=a('').appendTo(d),this.$footerBtnContainer=a('').appendTo(this.$footer),this.$cancelBtn=a('').text(Craft.t("Cancel")).appendTo(this.$footerBtnContainer),this.$saveBtn=a('').text(Craft.t("Save")).appendTo(this.$footerBtnContainer),this.$saveSpinner=a('').appendTo(this.$footerBtnContainer),this.$newHeadingBtn=a('').text(Craft.t("New heading")).appendTo(a('').appendTo(this.$footer)),this.$loadingSpinner=a('').appendTo(d),this.setContainer(d),this.show();var e={elementType:this.elementIndex.elementType};Craft.postActionRequest("elementIndexSettings/getCustomizeSourcesModalData",e,a.proxy(function(a,b){this.$loadingSpinner.remove(),"success"==b&&(this.$saveBtn.removeClass("disabled"),this.buildModal(a))},this)),this.addListener(this.$newHeadingBtn,"click","handleNewHeadingBtnClick"),this.addListener(this.$cancelBtn,"click","hide"),this.addListener(this.$saveBtn,"click","save"),this.addListener(this.$container,"submit","save")},buildModal:function(b){this.availableTableAttributes=b.availableTableAttributes,this.sourceSort=new Garnish.DragSort({handle:".move",axis:"y",onSortChange:a.proxy(function(){this.updateSourcesOnSave=!0},this)}),this.sources=[];for(var c=0;c').appendTo(this.$sourcesContainer),e=a('').appendTo(d),f=a('').appendTo(d);a('').appendTo(d);return"undefined"!=typeof b.heading?(d.addClass("heading"),f.attr("name","sourceOrder[][heading]"),c=new Craft.CustomizeSourcesModal.Heading(this,d,e,f,b),c.updateItemLabel(b.heading)):(f.attr("name","sourceOrder[][key]").val(b.key),c=new Craft.CustomizeSourcesModal.Source(this,d,e,f,b),c.updateItemLabel(b.label),b.key==this.elementIndex.sourceKey&&c.select()),this.sourceSort.addItems(d),c},handleNewHeadingBtnClick:function(){var a=this.addSource({heading:""});Garnish.scrollContainerToElement(this.$sidebar,a.$item),a.select(),this.updateSourcesOnSave=!0},save:function(b){if(b&&b.preventDefault(),!this.$saveBtn.hasClass("disabled")&&this.$saveSpinner.hasClass("hidden")){this.$saveSpinner.removeClass("hidden");var c=this.$container.serialize()+"&elementType="+this.elementIndex.elementType;Craft.postActionRequest("elementIndexSettings/saveCustomizeSourcesModalSettings",c,a.proxy(function(a,b){if(this.$saveSpinner.addClass("hidden"),"success"==b&&a.success){if(this.updateSourcesOnSave&&this.$elementIndexSourcesContainer.length){for(var c,d,e=0;e").append(this.createSettings()).appendTo(this.modal.$sourceSettingsContainer),this.modal.$sourceSettingsContainer.scrollTop(0))},createSettings:function(){},getIndexSource:function(){},deselect:function(){this.$item.removeClass("sel"),this.modal.selectedSource=null,this.$settingsContainer.addClass("hidden")},updateItemLabel:function(a){this.$itemLabel.text(a)},destroy:function(){this.$item.data("source",null),this.base()}}),Craft.CustomizeSourcesModal.Source=Craft.CustomizeSourcesModal.BaseSource.extend({createSettings:function(){if(this.sourceData.tableAttributes.length){var b=this.sourceData.tableAttributes[0],c=b[0],d=b[1],e=this.createTableColumnOption(c,d,!0,!0),f=a(""),g=[c];a('').appendTo(f);for(var h=1;h').append('').append(Craft.ui.createCheckbox({label:c,name:"sources["+this.sourceData.key+"][tableAttributes][]",value:b,checked:e,disabled:d})),d&&$option.children(".move").addClass("disabled"),$option},getIndexSource:function(){var a=this.modal.elementIndex.getSourceByKey(this.sourceData.key);if(a)return a.closest("li")}}),Craft.CustomizeSourcesModal.Heading=Craft.CustomizeSourcesModal.BaseSource.extend({$labelField:null,$labelInput:null,$deleteBtn:null,isHeading:function(){return!0},select:function(){this.base(),this.$labelInput.focus()},createSettings:function(){return this.$labelField=Craft.ui.createTextField({label:Craft.t("Heading"),instructions:Craft.t("This can be left blank if you just want an unlabeled separator."),value:this.sourceData.heading}),this.$labelInput=this.$labelField.find(".text"),this.$deleteBtn=a('').text(Craft.t("Delete heading")),this.addListener(this.$labelInput,"textchange","handleLabelInputChange"),this.addListener(this.$deleteBtn,"click","deleteHeading"),a([this.$labelField[0],a("")[0],this.$deleteBtn[0]])},handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val()),this.modal.updateSourcesOnSave=!0},updateItemLabel:function(a){this.$itemLabel.html((a?Craft.escapeHtml(a):''+Craft.t("(blank)")+"")+" "),this.$itemInput.val(a)},deleteHeading:function(){this.modal.sourceSort.removeItems(this.$item),this.modal.sources.splice(a.inArray(this,this.modal.sources),1),this.modal.updateSourcesOnSave=!0,this.isSelected()&&(this.deselect(),this.modal.sources.length&&this.modal.sources[0].select()),this.$item.remove(),this.$settingsContainer.remove(),this.destroy()},getIndexSource:function(){var b=this.$labelInput?this.$labelInput.val():this.sourceData.heading;return a('').append(a("").text(b))}}),Craft.DataTableSorter=Garnish.DragSort.extend({$table:null,init:function(b,c){this.$table=a(b);var d=this.$table.children("tbody").children(":not(.filler)");c=a.extend({},Craft.DataTableSorter.defaults,c),c.container=this.$table.children("tbody"),c.helper=a.proxy(this,"getHelper"),c.caboose="
'+Craft.t("What do you want to do with their content?")+'
'+Craft.t("Choose a user")+'
").appendTo(d),f=a('').appendTo(e),g=a('
'+Craft.t("Cancel")+"
").appendTo(f);this.$deleteActionRadios=e.find("input[type=radio]"),this.$deleteSubmitBtn=a('').appendTo(f),this.$deleteSpinner=a('').appendTo(f);var h;if(Garnish.isArray(this.userId)){h=["and"];for(var i=0;i0},initialize:function(){if(!this.initialized){this.initialized=!0,this.removeListener(Garnish.$win,"resize");for(var a=this.$tbody.children(),b=0;b';for(var f in b){var g=b[f],h=c+"["+a+"]["+f+"]",i="undefined"!=typeof d[f]?d[f]:"",j=Craft.inArray(g.type,Craft.EditableTable.textualColTypes);switch(e+='
')},getItemContainer:function(a){return a.parent()},onDragStop:function(){if(this.draggingUnusedItem&&this.showingInsertion){var b=this.$draggee.clone().removeClass("unused"),c=b.find(".tab span").text();b.find(".fld-field").removeClass("unused"),b.find(".tabs .tab").append('');var d=b.find(".fld-field"),e=d.filter(".hidden").remove();d=d.not(e),d.prepend('');for(var f=0;f')}this.designer.fieldDrag.addItems(d),this.designer.initTab(b),this.$draggee.css({visibility:"inherit",display:"field"}).addClass("hidden"),this.$draggee.find(".fld-field").addClass("hidden"),this.$draggee=b,this.addItems(b),this.designer.tabGrid.addItems(b),this.designer.unusedFieldGrid.removeItems(this.$draggee)}this.base()}}),Craft.FieldLayoutDesigner.FieldDrag=Craft.FieldLayoutDesigner.BaseDrag.extend({itemSelector:"> div.fld-tab .fld-field",addCaboose:function(){this.$caboose=a();for(var b=this.designer.$tabContainer.children().children(".fld-tabcontent"),c=0;c').appendTo(b[c]);this.$caboose=this.$caboose.add(d)}},getInsertion:function(){return a('')},getItemContainer:function(a){return a.parent().parent().parent()},onDragStop:function(){if(this.draggingUnusedItem&&this.showingInsertion){var a=this.$draggee.clone().removeClass("unused");if(a.prepend(''),this.designer.initField(a),this.$draggee.css({visibility:"inherit",display:"field"}).addClass("hidden"),0==this.$draggee.siblings(":not(.hidden)").length){var b=this.$draggee.parent().parent();b.addClass("hidden"),this.designer.unusedFieldGrid.removeItems(b)}this.$draggee=a,this.addItems(a)}if(this.showingInsertion){var c=this.$insertion.parent().parent().find(".tab span").text(),d=this.designer.getFieldInputName(c);this.draggingUnusedItem?this.$draggee.append(''):this.$draggee.find(".id-input").attr("name",d)}this.base()}}),Craft.FieldToggle=Garnish.Base.extend({$toggle:null,targetPrefix:null,targetSelector:null,reverseTargetSelector:null,_$target:null,_$reverseTarget:null,type:null,init:function(b){this.$toggle=a(b),this.$toggle.data("fieldtoggle")&&(Garnish.log("Double-instantiating a field toggle on an element"),this.$toggle.data("fieldtoggle").destroy()),this.$toggle.data("fieldtoggle",this),this.type=this.getType(),"select"==this.type?this.targetPrefix=this.$toggle.attr("data-target-prefix")||"":(this.targetSelector=this.normalizeTargetSelector(this.$toggle.data("target")),this.reverseTargetSelector=this.normalizeTargetSelector(this.$toggle.data("reverse-target"))),this.findTargets(),"link"==this.type?this.addListener(this.$toggle,"click","onToggleChange"):this.addListener(this.$toggle,"change","onToggleChange")},normalizeTargetSelector:function(a){return a&&!a.match(/^[#\.]/)&&(a="#"+a),a},getType:function(){return"INPUT"==this.$toggle.prop("nodeName")&&"checkbox"==this.$toggle.attr("type").toLowerCase()?"checkbox":"SELECT"==this.$toggle.prop("nodeName")?"select":"A"==this.$toggle.prop("nodeName")?"link":"DIV"==this.$toggle.prop("nodeName")&&this.$toggle.hasClass("lightswitch")?"lightswitch":void 0},findTargets:function(){"select"==this.type?this._$target=a(this.normalizeTargetSelector(this.targetPrefix+this.getToggleVal())):(this.targetSelector&&(this._$target=a(this.targetSelector)),this.reverseTargetSelector&&(this._$reverseTarget=a(this.reverseTargetSelector)))},getToggleVal:function(){return"lightswitch"==this.type?this.$toggle.children("input").val():Garnish.getInputPostVal(this.$toggle)},onToggleChange:function(){"select"==this.type?(this.hideTarget(this._$target),this.findTargets(),this.showTarget(this._$target)):("link"==this.type?this.onToggleChange._show=this.$toggle.hasClass("collapsed")||!this.$toggle.hasClass("expanded"):this.onToggleChange._show=!!this.getToggleVal(),this.onToggleChange._show?(this.showTarget(this._$target),this.hideTarget(this._$reverseTarget)):(this.hideTarget(this._$target),this.showTarget(this._$reverseTarget)),delete this.onToggleChange._show)},showTarget:function(a){
-a&&a.length&&(this.showTarget._currentHeight=a.height(),a.removeClass("hidden"),"select"!=this.type&&("link"==this.type&&(this.$toggle.removeClass("collapsed"),this.$toggle.addClass("expanded")),a.height("auto"),this.showTarget._targetHeight=a.height(),a.css({height:this.showTarget._currentHeight,overflow:"hidden"}),a.velocity("stop"),a.velocity({height:this.showTarget._targetHeight},"fast",function(){a.css({height:"",overflow:""})}),delete this.showTarget._targetHeight),delete this.showTarget._currentHeight,Garnish.$win.trigger("resize"))},hideTarget:function(a){a&&a.length&&("select"==this.type?a.addClass("hidden"):("link"==this.type&&(this.$toggle.removeClass("expanded"),this.$toggle.addClass("collapsed")),a.css("overflow","hidden"),a.velocity("stop"),a.velocity({height:0},"fast",function(){a.addClass("hidden")})))}}),Craft.Grid=Garnish.Base.extend({$container:null,$items:null,items:null,totalCols:null,colPctWidth:null,sizeUnit:null,possibleItemColspans:null,possibleItemPositionsByColspan:null,itemPositions:null,itemColspansByPosition:null,layouts:null,layout:null,itemHeights:null,leftPadding:null,_refreshingCols:!1,_refreshColsAfterRefresh:!1,_forceRefreshColsAfterRefresh:!1,init:function(b,c){this.$container=a(b),this.$container.data("grid")&&(Garnish.log("Double-instantiating a grid on an element"),this.$container.data("grid").destroy()),this.$container.data("grid",this),this.setSettings(c,Craft.Grid.defaults),"pct"==this.settings.mode?this.sizeUnit="%":this.sizeUnit="px",this.handleContainerHeightProxy=a.proxy(function(){this.refreshCols(!1,!0)},this),this.$items=this.$container.children(this.settings.itemSelector),this.setItems(),this.refreshCols(!0,!1),Garnish.$doc.ready(a.proxy(function(){this.refreshCols(!1,!1)},this))},addItems:function(b){this.$items=a().add(this.$items.add(b)),this.setItems(),this.refreshCols(!0,!0),a(b).velocity("finish")},removeItems:function(b){this.$items=a().add(this.$items.not(b)),this.setItems(),this.refreshCols(!0,!0)},resetItemOrder:function(){this.$items=a().add(this.$items),this.setItems(),this.refreshCols(!0,!0)},setItems:function(){for(this.setItems._={},this.items=[],this.setItems._.i=0;this.setItems._.ithis.settings.maxCols&&(this.refreshCols._.totalCols=this.settings.maxCols)),0==this.refreshCols._.totalCols&&(this.refreshCols._.totalCols=1),b!==!0&&this.totalCols===this.refreshCols._.totalCols)return void this.completeRefreshCols();if(this.totalCols=this.refreshCols._.totalCols,this.removeListener(this.$container,"resize"),"grid"==this.settings.fillMode)for(this.refreshCols._.itemIndex=0;this.refreshCols._.itemIndexthis.refreshCols._.tallestItemHeight&&(this.refreshCols._.tallestItemHeight=this.refreshCols._.itemHeight),this.refreshCols._.colIndex++;for(this.settings.snapToGrid&&(this.refreshCols._.remainder=this.refreshCols._.tallestItemHeight%this.settings.snapToGrid,this.refreshCols._.remainder&&(this.refreshCols._.tallestItemHeight+=this.settings.snapToGrid-this.refreshCols._.remainder)),this.refreshCols._.i=this.refreshCols._.itemIndex;this.refreshCols._.ithis.totalCols&&(this.refreshCols._.minColspan=this.totalCols),this.refreshCols._.maxColspan>this.totalCols&&(this.refreshCols._.maxColspan=this.totalCols),this.refreshCols._.colspan=this.refreshCols._.minColspan;this.refreshCols._.colspan<=this.refreshCols._.maxColspan;this.refreshCols._.colspan++)for(this.refreshCols._.$item.css("width",this.getItemWidth(this.refreshCols._.colspan)+this.sizeUnit),this.itemHeightsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=this.refreshCols._.$item.outerHeight(),this.possibleItemColspans[this.refreshCols._.item].push(this.refreshCols._.colspan),this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=[],this.refreshCols._.positionLeft?(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=0):this.refreshCols._.positionRight?(this.refreshCols._.minPosition=this.totalCols-this.refreshCols._.colspan,this.refreshCols._.maxPosition=this.refreshCols._.minPosition):(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=this.totalCols-this.refreshCols._.colspan),this.refreshCols._.position=this.refreshCols._.minPosition;this.refreshCols._.position<=this.refreshCols._.maxPosition;this.refreshCols._.position++)this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan].push(this.refreshCols._.position);for(this.refreshCols._.colHeights=[],this.refreshCols._.i=0;this.refreshCols._.i=0;this.refreshCols._.i--)this.refreshCols._.layoutTotalCols[this.refreshCols._.i]!=this.refreshCols._.highestTotalCols&&this.layouts.splice(this.refreshCols._.i,1);for(this.refreshCols._.layoutHeights=[],this.refreshCols._.i=0;this.refreshCols._.i=0&&0==this.layout.colHeights[this.refreshCols._.i];this.refreshCols._.i--)this.refreshCols._.totalEmptyCols++;for(this.leftPadding=this.getItemWidth(this.refreshCols._.totalEmptyCols)/2,"fixed"==this.settings.mode&&(this.leftPadding+=(this.$container.width()-this.settings.minColWidth*this.totalCols)/2),this.refreshCols._.i=0;this.refreshCols._.i/g","");b=b.replace(/['"‘’“”\[\]\(\)\{\}:]/g,""),b=b.toLowerCase(),b=Craft.asciiString(b),b=b.replace(/^[^a-z]+/,"");for(var c=Craft.filterArray(b.split(/[^a-z0-9]+/)),b="",d=0;d').hide().insertBefore(c);this.progressBar=new Craft.ProgressBar(a('').insertBefore(c)),this.progressBar.$progressBar.css({top:Math.round(c.outerHeight()/2)-6}),this.$container=c.parent();var e={url:Craft.getActionUrl(this.settings.uploadAction),fileInput:d,element:this.settings.uploadButton[0],action:Craft.actionUrl+"/"+this.settings.uploadAction,formData:"object"==typeof this.settings.postParameters?this.settings.postParameters:{},events:{fileuploadstart:a.proxy(function(){this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},this),fileuploadprogressall:a.proxy(function(a){var b=parseInt(a.loaded/a.total*100,10);this.progressBar.setProgressPercentage(b)},this),fileuploaddone:a.proxy(function(c,d){this.progressBar.hideProgressBar(),this.$container.removeClass("uploading");var e=d.result;return e.error?void alert(e.error):(null==Craft.ImageUpload.$modalContainerDiv&&(Craft.ImageUpload.$modalContainerDiv=a('').addClass(b.modalClass).appendTo(Garnish.$bod)),e.fileName&&(this.source=e.fileName),void(e.html&&(Craft.ImageUpload.$modalContainerDiv.empty().append(e.html),this.modal?this.modal.show():(this.modal=new Craft.ImageModal(Craft.ImageUpload.$modalContainerDiv,{postParameters:b.postParameters,cropAction:b.cropAction}),this.modal.imageHandler=this),this.modal.bindButtons(),this.modal.addListener(this.modal.$saveBtn,"click","saveImage"),this.modal.addListener(this.modal.$cancelBtn,"click","cancel"),this.modal.removeListener(Garnish.Modal.$shade,"click"),setTimeout(a.proxy(function(){Craft.ImageUpload.$modalContainerDiv.find("img").load(a.proxy(function(){var a=new Craft.ImageAreaTool(b.areaToolOptions,this.modal);a.showArea(),this.modal.cropAreaTool=a},this))},this),1))))},this)},acceptFileTypes:/(jpg|jpeg|gif|png)/};"undefined"!=typeof Craft.csrfTokenName&&"undefined"!=typeof Craft.csrfTokenValue&&(e.formData[Craft.csrfTokenName]=Craft.csrfTokenValue),this.uploader=new Craft.Uploader(c,e),this.addListener(a(b.deleteButton),"click",function(c){confirm(b.deleteMessage)&&(a(c.currentTarget).parent().append(''),Craft.postActionRequest(b.deleteAction,b.postParameters,a.proxy(function(a,b){"success"==b&&this.onImageDelete(a)},this)))}),this.addListener(a(b.uploadButton),"click",function(b){a(b.currentTarget).siblings("input[type=file]").click()})},onImageSave:function(a){this.settings.onImageSave.apply(this,[a])},onImageDelete:function(a){this.settings.onImageDelete.apply(this,[a])},destroy:function(){this.progressBar.destroy(),delete this.progressBar,this.modal&&(this.modal.destroy(),delete this.modal),this.uploader&&(this.uploader.destroy(),delete this.uploader),this.base()}}),Craft.ImageModal=Garnish.Modal.extend({$container:null,$saveBtn:null,$cancelBtn:null,areaSelect:null,source:null,_postParameters:null,_cropAction:"",imageHandler:null,cropAreaTool:null,init:function(a,b){this.cropAreaTool=null,this.base(a,b),this._postParameters=b.postParameters,this._cropAction=b.cropAction},bindButtons:function(){this.$saveBtn=this.$container.find(".submit:first"),this.$cancelBtn=this.$container.find(".cancel:first")},cancel:function(){this.hide(),this.$container.remove(),this.destroy()},saveImage:function(){var b=this.areaSelect.tellSelect(),c={x1:b.x,y1:b.y,x2:b.x2,y2:b.y2,source:this.source};c=a.extend(this._postParameters,c),Craft.postActionRequest(this._cropAction,c,a.proxy(function(a,b){"success"==b&&(a.error?Craft.cp.displayError(a.error):this.imageHandler.onImageSave.apply(this.imageHandler,[a])),this.hide(),this.$container.remove(),this.destroy()},this)),this.areaSelect.setOptions({disable:!0}),this.removeListener(this.$saveBtn,"click"),this.removeListener(this.$cancelBtn,"click"),this.$container.find(".crop-image").fadeTo(50,.5)}}),Craft.ImageAreaTool=Garnish.Base.extend({api:null,$container:null,containingModal:null,init:function(a,b){this.$container=Craft.ImageUpload.$modalContainerDiv,this.setSettings(a),this.containingModal=b},showArea:function(){var b=this.$container.find("img"),c={aspectRatio:this.settings.aspectRatio,maxSize:[b.width(),b.height()],bgColor:"none"},d=a.proxy(function(a){this.api=a;var c=this.settings.initialRectangle.x1,d=this.settings.initialRectangle.x2,e=this.settings.initialRectangle.y1,f=this.settings.initialRectangle.y2;if("auto"==this.settings.initialRectangle.mode){var g=0,h=0;""==this.settings.aspectRatio?(g=b.width(),h=b.height()):this.settings.aspectRatio>1?(g=b.width(),h=g/this.settings.aspectRatio):this.settings.aspectRatio<1?(h=b.height(),g=h*this.settings.aspectRatio):h=g=Math.min(b.width(),b.height()),c=Math.round((b.width()-g)/2),e=Math.round((b.height()-h)/2),d=c+g,f=e+h}this.api.setSelect([c,e,d,f]),this.containingModal.areaSelect=this.api,this.containingModal.source=b.attr("src").split("/").pop(),this.containingModal.updateSizeAndPosition()},this);b.Jcrop(c,function(){d(this)})}}),Craft.InfoIcon=Garnish.Base.extend({$icon:null,hud:null,init:function(b){this.$icon=a(b),this.addListener(this.$icon,"click","showHud")},showHud:function(){this.hud?this.hud.show():this.hud=new Garnish.HUD(this.$icon,this.$icon.html(),{hudClass:"hud info-hud",closeOtherHUDs:!1})}}),Craft.LightSwitch=Garnish.Base.extend({settings:null,$outerContainer:null,$innerContainer:null,$input:null,small:!1,on:null,dragger:null,dragStartMargin:null,init:function(b,c){this.$outerContainer=a(b),this.$outerContainer.data("lightswitch")&&(Garnish.log("Double-instantiating a lightswitch on an element"),this.$outerContainer.data("lightswitch").destroy()),this.$outerContainer.data("lightswitch",this),this.small=this.$outerContainer.hasClass("small"),this.setSettings(c,Craft.LightSwitch.defaults),this.$innerContainer=this.$outerContainer.find(".lightswitch-container:first"),this.$input=this.$outerContainer.find("input:first"),this.$input.prop("disabled")||(this.on=this.$outerContainer.hasClass("on"),this.$outerContainer.attr({role:"checkbox","aria-checked":this.on?"true":"false"}),this.addListener(this.$outerContainer,"mousedown","_onMouseDown"),this.addListener(this.$outerContainer,"keydown","_onKeyDown"),this.dragger=new Garnish.BaseDrag(this.$outerContainer,{axis:Garnish.X_AXIS,ignoreHandleSelector:null,onDragStart:a.proxy(this,"_onDragStart"),onDrag:a.proxy(this,"_onDrag"),onDragStop:a.proxy(this,"_onDragStop")}))},turnOn:function(){this.$outerContainer.addClass("dragging");var b={};b["margin-"+Craft.left]=0,this.$innerContainer.velocity("stop").velocity(b,Craft.LightSwitch.animationDuration,a.proxy(this,"_onSettle")),this.$input.val("1"),this.$outerContainer.addClass("on"),this.$outerContainer.attr("aria-checked","true"),this.on=!0,this.onChange()},turnOff:function(){this.$outerContainer.addClass("dragging");var b={};b["margin-"+Craft.left]=this._getOffMargin(),this.$innerContainer.velocity("stop").velocity(b,Craft.LightSwitch.animationDuration,a.proxy(this,"_onSettle")),this.$input.val(""),this.$outerContainer.removeClass("on"),this.$outerContainer.attr("aria-checked","false"),this.on=!1,this.onChange()},toggle:function(a){this.on?this.turnOff():this.turnOn()},onChange:function(){this.trigger("change"),this.settings.onChange(),this.$outerContainer.trigger("change")},_onMouseDown:function(){this.addListener(Garnish.$doc,"mouseup","_onMouseUp")},_onMouseUp:function(){this.removeListener(Garnish.$doc,"mouseup"),this.dragger.dragging||this.toggle()},_onKeyDown:function(a){switch(a.keyCode){case Garnish.SPACE_KEY:this.toggle(),a.preventDefault();break;case Garnish.RIGHT_KEY:"ltr"==Craft.orientation?this.turnOn():this.turnOff(),a.preventDefault();break;case Garnish.LEFT_KEY:"ltr"==Craft.orientation?this.turnOff():this.turnOn(),a.preventDefault()}},_getMargin:function(){return parseInt(this.$innerContainer.css("margin-"+Craft.left))},_onDragStart:function(){this.$outerContainer.addClass("dragging"),this.dragStartMargin=this._getMargin()},_onDrag:function(){var a;a="ltr"==Craft.orientation?this.dragStartMargin+this.dragger.mouseDistX:this.dragStartMargin-this.dragger.mouseDistX,a0&&(a=0),this.$innerContainer.css("margin-"+Craft.left,a)},_onDragStop:function(){var a=this._getMargin();a>this._getOffMargin()/2?this.turnOn():this.turnOff()},_onSettle:function(){this.$outerContainer.removeClass("dragging")},destroy:function(){this.base(),this.dragger.destroy()},_getOffMargin:function(){return this.small?-9:-11}},{animationDuration:100,defaults:{onChange:a.noop}}),Craft.LivePreview=Garnish.Base.extend({$extraFields:null,$trigger:null,$spinner:null,$shade:null,$editorContainer:null,$editor:null,$dragHandle:null,$iframeContainer:null,$iframe:null,$fieldPlaceholder:null,previewUrl:null,basePostData:null,inPreviewMode:!1,fields:null,lastPostData:null,updateIframeInterval:null,loading:!1,checkAgain:!1,dragger:null,dragStartEditorWidth:null,_handleSuccessProxy:null,_handleErrorProxy:null,_scrollX:null,_scrollY:null,_editorWidth:null,_editorWidthInPx:null,init:function(b){this.setSettings(b,Craft.LivePreview.defaults),this.settings.previewUrl?this.previewUrl=this.settings.previewUrl:this.previewUrl=Craft.baseSiteUrl.replace(/\/+$/,"")+"/","https:"==document.location.protocol&&(this.previewUrl=this.previewUrl.replace(/^http:/,"https:")),this.basePostData=a.extend({action:this.settings.previewAction,livePreview:!0},this.settings.previewParams),Craft.csrfTokenName&&(this.basePostData[Craft.csrfTokenName]=Craft.csrfTokenValue),this._handleSuccessProxy=a.proxy(this,"handleSuccess"),this._handleErrorProxy=a.proxy(this,"handleError"),this.$extraFields=a(this.settings.extraFields),this.$trigger=a(this.settings.trigger),this.$spinner=this.settings.spinner?a(this.settings.spinner):this.$trigger.find(".spinner"),this.$fieldPlaceholder=a(""),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.LivePreview.defaultEditorWidth),this.addListener(this.$trigger,"activate","toggle"),Craft.cp.on("beforeSaveShortcut",a.proxy(function(){this.inPreviewMode&&this.moveFieldsBack()},this))},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(a){var b;a>=1?(b=a,a/=Garnish.$win.width()):b=Math.round(a*Garnish.$win.width()),b').appendTo(Garnish.$bod).css("z-index",2),this.$editorContainer=a('').appendTo(Garnish.$bod),this.$editor=a('').appendTo(this.$editorContainer),this.$iframeContainer=a('').appendTo(Garnish.$bod),this.$iframe=a('').appendTo(this.$iframeContainer),this.$dragHandle=a('').appendTo(this.$editorContainer);var b=a('').appendTo(this.$editor),c=a('
'+Craft.t("Close Live Preview")+"
").appendTo(b),d=a('
'+Craft.t("Save")+"
").appendTo(b);this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:a.proxy(this,"_onDragStart"),onDrag:a.proxy(this,"_onDrag"),onDragStop:a.proxy(this,"_onDragStop")}),this.addListener(c,"click","exit"),this.addListener(d,"click","save")}this.handleWindowResize(),this.addListener(Garnish.$win,"resize","handleWindowResize"),this.$editorContainer.css(Craft.left,-(this.editorWidthInPx+Craft.LivePreview.dragHandleWidth)+"px"),this.$iframeContainer.css(Craft.right,-this.getIframeWidth()),this.fields=[];for(var e=a(this.settings.fields),f=0;fwindow.scrollTo('+this._scrollX+", "+this._scrollY+");";this.$iframe.css("background",a(this.$iframe[0].contentWindow.document.body).css("background")),this.$iframe[0].contentWindow.document.open(),this.$iframe[0].contentWindow.document.write(e),
-this.$iframe[0].contentWindow.document.close(),this.onResponse()},handleError:function(a,b,c){this.onResponse()},onResponse:function(){this.loading=!1,this.checkAgain&&(this.checkAgain=!1,this.updateIframe())},_getClone:function(a){var b=a.clone();return Garnish.copyInputValues(a,b),b.attr("id",""),b.find("[id]").attr("id",""),b},_onDragStart:function(){this.dragStartEditorWidth=this.editorWidthInPx,this.$iframeContainer.addClass("dragging")},_onDrag:function(){"ltr"==Craft.orientation?this.editorWidth=this.dragStartEditorWidth+this.dragger.mouseDistX:this.editorWidth=this.dragStartEditorWidth-this.dragger.mouseDistX,this.updateWidths()},_onDragStop:function(){this.$iframeContainer.removeClass("dragging"),Craft.setLocalStorage("LivePreview.editorWidth",this.editorWidth)}},{defaultEditorWidth:.33,minEditorWidthInPx:320,dragHandleWidth:4,defaults:{trigger:".livepreviewbtn",spinner:null,fields:null,extraFields:null,previewUrl:null,previewAction:null,previewParams:{}}}),Craft.LivePreview.init=function(a){Craft.livePreview=new Craft.LivePreview(a)},Craft.Pane=Garnish.Base.extend({$pane:null,$content:null,$sidebar:null,$tabsContainer:null,tabs:null,selectedTab:null,hasSidebar:null,init:function(b){this.$pane=a(b),this.$pane.data("pane")&&(Garnish.log("Double-instantiating a pane on an element"),this.$pane.data("pane").destroy()),this.$pane.data("pane",this),this.$content=this.$pane.find(".content:not(.hidden):first"),this.$tabsContainer=this.$pane.children(".tabs");var c=this.$tabsContainer.find("a");if(c.length){this.tabs={};for(var d=0;d992&&this.updateSidebarStyles._scrollTop>this.updateSidebarStyles._paneOffset?(this.updateSidebarStyles._styles.position="fixed",this.updateSidebarStyles._styles.top="24px"):(this.updateSidebarStyles._styles.position="absolute",this.updateSidebarStyles._styles.top="auto"),this.updateSidebarStyles._styles.maxHeight=Math.min(this.updateSidebarStyles._paneHeight-(this.updateSidebarStyles._scrollTop-this.updateSidebarStyles._paneOffset),this.updateSidebarStyles._windowHeight),this.updateSidebarStyles._paneHeight>this.updateSidebarStyles._windowHeight?this.updateSidebarStyles._styles.height=this.updateSidebarStyles._styles.maxHeight:this.updateSidebarStyles._styles.height=this.updateSidebarStyles._paneHeight,this.$sidebar.css(this.updateSidebarStyles._styles)},destroy:function(){this.base(),this.$pane.data("pane",null)}}),Craft.PasswordInput=Garnish.Base.extend({$passwordInput:null,$textInput:null,$currentInput:null,$showPasswordToggle:null,showingPassword:null,init:function(b,c){this.$passwordInput=a(b),this.settings=a.extend({},Craft.PasswordInput.defaults,c),this.$passwordInput.data("passwordInput")&&(Garnish.log("Double-instantiating a password input on an element"),this.$passwordInput.data("passwordInput").destroy()),this.$passwordInput.data("passwordInput",this),this.$showPasswordToggle=a("").hide(),this.$showPasswordToggle.addClass("password-toggle"),this.$showPasswordToggle.insertAfter(this.$passwordInput),this.addListener(this.$showPasswordToggle,"mousedown","onToggleMouseDown"),this.hidePassword()},setCurrentInput:function(a){this.$currentInput&&(a.addClass("focus"),this.$currentInput.replaceWith(a),a.focus(),a.removeClass("focus"),a.val(this.$currentInput.val())),this.$currentInput=a,this.addListener(this.$currentInput,"keypress,keyup,change,blur","onInputChange")},updateToggleLabel:function(a){this.$showPasswordToggle.text(a)},showPassword:function(){this.showingPassword||(this.$textInput||(this.$textInput=this.$passwordInput.clone(!0),this.$textInput.attr("type","text")),this.setCurrentInput(this.$textInput),this.updateToggleLabel(Craft.t("Hide")),this.showingPassword=!0)},hidePassword:function(){this.showingPassword!==!1&&(this.setCurrentInput(this.$passwordInput),this.updateToggleLabel(Craft.t("Show")),this.showingPassword=!1)},togglePassword:function(){this.showingPassword?this.hidePassword():this.showPassword(),this.settings.onToggleInput(this.$currentInput)},onInputChange:function(){this.$currentInput.val()?this.$showPasswordToggle.show():this.$showPasswordToggle.hide()},onToggleMouseDown:function(a){a.preventDefault();var b,c;this.$currentInput[0].setSelectionRange&&(b=this.$currentInput[0].selectionStart,c=this.$currentInput[0].selectionEnd),this.togglePassword(),this.$currentInput[0].setSelectionRange&&this.$currentInput[0].setSelectionRange(b,c)}},{defaults:{onToggleInput:a.noop}}),Craft.ProgressBar=Garnish.Base.extend({$progressBar:null,$innerProgressBar:null,_itemCount:0,_processedItemCount:0,init:function(b){this.$progressBar=a('').appendTo(b),this.$innerProgressBar=a('').appendTo(this.$progressBar),this.resetProgressBar()},resetProgressBar:function(){this.setProgressPercentage(100),this.$progressBar.addClass("pending"),this.setItemCount(1),this.setProcessedItemCount(0)},hideProgressBar:function(){this.$progressBar.fadeTo("fast",.01,a.proxy(function(){this.$progressBar.addClass("hidden").fadeTo(1,1,a.noop)},this))},showProgressBar:function(){this.$progressBar.removeClass("hidden")},setItemCount:function(a){this._itemCount=a},incrementItemCount:function(a){this._itemCount+=a},setProcessedItemCount:function(a){this._processedItemCount=a},incrementProcessedItemCount:function(a){this._processedItemCount+=a},updateProgressBar:function(){this._itemCount=Math.max(this._itemCount,1);var a=Math.min(100,Math.round(100*this._processedItemCount/this._itemCount));this.setProgressPercentage(a)},setProgressPercentage:function(a,b){0==a?this.$progressBar.addClass("pending"):(this.$progressBar.removeClass("pending"),b?this.$innerProgressBar.velocity("stop").velocity({width:a+"%"},"fast"):this.$innerProgressBar.velocity("stop").width(a+"%"))}}),Craft.PromptHandler=Garnish.Base.extend({$modalContainerDiv:null,$prompt:null,$promptApplyToRemainingContainer:null,$promptApplyToRemainingCheckbox:null,$promptApplyToRemainingLabel:null,$promptButtons:null,_prompts:[],_promptBatchCallback:a.noop,_promptBatchReturnData:[],_promptBatchNum:0,init:function(){},resetPrompts:function(){this._prompts=[],this._promptBatchCallback=a.noop,this._promptBatchReturnData=[],this._promptBatchNum=0},addPrompt:function(a){this._prompts.push(a)},getPromptCount:function(){return this._prompts.length},showBatchPrompts:function(a){this._promptBatchCallback=a,this._promptBatchReturnData=[],this._promptBatchNum=0,this._showNextPromptInBatch()},_showNextPromptInBatch:function(){var b=this._prompts[this._promptBatchNum].prompt,c=this._prompts.length-(this._promptBatchNum+1);this._showPrompt(b.message,b.choices,a.proxy(this,"_handleBatchPromptSelection"),c)},_handleBatchPromptSelection:function(b,c){var d=this._prompts[this._promptBatchNum],e=this._prompts.length-(this._promptBatchNum+1),f=a.extend(d,{choice:b});this._promptBatchReturnData.push(f),e?(this._promptBatchNum++,c?this._handleBatchPromptSelection(b,!0):this._showNextPromptInBatch()):"function"==typeof this._promptBatchCallback&&this._promptBatchCallback(this._promptBatchReturnData)},_showPrompt:function(b,c,d,e){this._promptCallback=d,null==this.modal&&(this.modal=new Garnish.Modal({closeOtherModals:!1})),null==this.$modalContainerDiv&&(this.$modalContainerDiv=a('').addClass().appendTo(Garnish.$bod)),this.$prompt=a('').appendTo(this.$modalContainerDiv.empty()),this.$promptMessage=a('').appendTo(this.$prompt),a("
").html(Craft.t("What do you want to do?")).appendTo(this.$prompt),this.$promptApplyToRemainingContainer=a('').appendTo(this.$prompt).hide(),this.$promptApplyToRemainingCheckbox=a('').appendTo(this.$promptApplyToRemainingContainer),this.$promptApplyToRemainingLabel=a("").appendTo(this.$promptApplyToRemainingContainer),this.$promptButtons=a('
");this.addListener(g,"activate",function(a){var b=a.currentTarget.getAttribute("data-choice"),c=this.$promptApplyToRemainingCheckbox.prop("checked");this._selectPromptChoice(b,c)}),this.$promptButtons.append(g)}e&&(this.$promptApplyToRemainingContainer.show(),this.$promptApplyToRemainingLabel.html(" "+Craft.t("Apply this to the {number} remaining conflicts?",{number:e}))),this.modal.show(),this.modal.removeListener(Garnish.Modal.$shade,"click"),this.addListener(Garnish.Modal.$shade,"click","_cancelPrompt")},_selectPromptChoice:function(b,c){this.$prompt.fadeOut("fast",a.proxy(function(){this.modal.hide(),this._promptCallback(b,c)},this))},_cancelPrompt:function(){this._selectPromptChoice("cancel",!0)}}),Craft.SlugGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(a){a=a.replace(/<(.*?)>/g,""),a=a.replace(/['"‘’“”\[\]\(\)\{\}:]/g,""),a=a.toLowerCase(),Craft.limitAutoSlugsToAscii&&(a=Craft.asciiString(a));var b=Craft.filterArray(XRegExp.matchChain(a,[XRegExp("[\\p{L}\\p{N}\\p{M}]+")]));return b.length?b.join(Craft.slugWordSeparator):""}}),Craft.Structure=Garnish.Base.extend({id:null,$container:null,state:null,structureDrag:null,init:function(b,c,d){this.id=b,this.$container=a(c),this.setSettings(d,Craft.Structure.defaults),this.$container.data("structure")&&(Garnish.log("Double-instantiating a structure on an element"),this.$container.data("structure").destroy()),this.$container.data("structure",this),this.state={},this.settings.storageKey&&a.extend(this.state,Craft.getLocalStorage(this.settings.storageKey,{})),"undefined"==typeof this.state.collapsedElementIds&&(this.state.collapsedElementIds=[]);for(var e=this.$container.find("ul").prev(".row"),f=0;f').prependTo(g);a.inArray(g.children(".element").data("id"),this.state.collapsedElementIds)!=-1&&h.addClass("collapsed"),this.initToggle(i)}this.settings.sortable&&(this.structureDrag=new Craft.StructureDrag(this,this.settings.maxLevels)),this.settings.newChildUrl&&this.initNewChildMenus(this.$container.find(".add"))},initToggle:function(b){b.click(a.proxy(function(b){var c=a(b.currentTarget).closest("li"),d=c.children(".row").find(".element:first").data("id"),e=a.inArray(d,this.state.collapsedElementIds);c.hasClass("collapsed")?(c.removeClass("collapsed"),e!=-1&&this.state.collapsedElementIds.splice(e,1)):(c.addClass("collapsed"),e==-1&&this.state.collapsedElementIds.push(d)),this.settings.storageKey&&Craft.setLocalStorage(this.settings.storageKey,this.state)},this))},initNewChildMenus:function(a){this.addListener(a,"click","onNewChildMenuClick")},onNewChildMenuClick:function(b){var c=a(b.currentTarget);if(!c.data("menubtn")){var d=c.parent().children(".element").data("id"),e=Craft.getUrl(this.settings.newChildUrl,"parentId="+d),f=(a('
").insertBefore(this.$checkoutSecure)},onUpgrade:function(){this.$successScreen.css(Craft.left,this.getWidth()).removeClass("hidden").animateLeft(0,"fast");var a=this.$successScreen.find(".btn:first");this.addListener(a,"click",function(){location.reload()}),this.trigger("upgrade")},cleanupCheckoutForm:function(){this.$checkoutForm.find(".error").removeClass("error"),this.$checkoutFormError&&(this.$checkoutFormError.remove(),this.$checkoutFormError=null)},clearCheckoutForm:function(){this.$customerNameInput.val(""),this.$customerEmailInput.val(""),this.$ccNumInput.val(""),this.$ccExpInput.val(""),this.$ccCvcInput.val(""),this.$businessNameInput.val(""),this.$businessAddress1Input.val(""),this.$businessAddress2Input.val(""),this.$businessCityInput.val(""),this.$businessStateInput.val(""),this.$businessCountryInput.val(""),this.$businessZipInput.val(""),this.$businessTaxIdInput.val(""),this.$purchaseNotesInput.val(""),this.$couponInput.val("")},clearCheckoutFormInABit:function(){this.clearCheckoutFormTimeout=setTimeout(a.proxy(this,"clearCheckoutForm"),Craft.UpgradeModal.clearCheckoutFormTimeoutDuration)}},{clearCheckoutFormTimeoutDuration:3e4}),Craft.Uploader=Garnish.Base.extend({uploader:null,allowedKinds:null,$element:null,settings:null,_rejectedFiles:{},_extensionList:null,_totalFileCounter:0,_validFileCounter:0,init:function(b,c){this._rejectedFiles={size:[],type:[],limit:[]},this.$element=b,this.allowedKinds=null,this._extensionList=null,this._totalFileCounter=0,this._validFileCounter=0,c=a.extend({},Craft.Uploader.defaults,c);var d=c.events;delete c.events,c.allowedKinds&&c.allowedKinds.length&&("string"==typeof c.allowedKinds&&(c.allowedKinds=[c.allowedKinds]),this.allowedKinds=c.allowedKinds,delete c.allowedKinds),c.autoUpload=!1,this.uploader=this.$element.fileupload(c);for(var e in d)this.uploader.on(e,d[e]);this.settings=c,this.uploader.on("fileuploadadd",a.proxy(this,"onFileAdd"))},setParams:function(a){"undefined"!=typeof Craft.csrfTokenName&&"undefined"!=typeof Craft.csrfTokenValue&&(a[Craft.csrfTokenName]=Craft.csrfTokenValue),this.uploader.fileupload("option",{formData:a})},getInProgress:function(){return this.uploader.fileupload("active")},isLastUpload:function(){return this.getInProgress()<2},onFileAdd:function(b,c){b.stopPropagation();var d=!1;return this.allowedKinds&&(this._extensionList||this._createExtensionList(),d=!0),c.process().done(a.proxy(function(){var b=c.files[0],e=!0;if(d){var f=b.name.match(/\.([a-z0-4_]+)$/i),g=f[1];a.inArray(g.toLowerCase(),this._extensionList)==-1&&(e=!1,this._rejectedFiles.type.push("“"+b.name+"”"))}b.size>this.settings.maxFileSize&&(this._rejectedFiles.size.push("“"+b.name+"”"),e=!1),e&&"function"==typeof this.settings.canAddMoreFiles&&!this.settings.canAddMoreFiles(this._validFileCounter)&&(this._rejectedFiles.limit.push("“"+b.name+"”"),e=!1),e&&(this._validFileCounter++,c.submit()),++this._totalFileCounter==c.originalFiles.length&&(this._totalFileCounter=0,this._validFileCounter=0,this.processErrorMessages())},this)),!0},processErrorMessages:function(){var a;this._rejectedFiles.type.length&&(a=1==this._rejectedFiles.type.length?"The file {files} could not be uploaded. The allowed file kinds are: {kinds}.":"The files {files} could not be uploaded. The allowed file kinds are: {kinds}.",a=Craft.t(a,{files:this._rejectedFiles.type.join(", "),kinds:this.allowedKinds.join(", ")}),this._rejectedFiles.type=[],alert(a)),this._rejectedFiles.size.length&&(a=1==this._rejectedFiles.size.length?"The file {files} could not be uploaded, because it exceeds the maximum upload size of {size}.":"The files {files} could not be uploaded, because they exceeded the maximum upload size of {size}.",a=Craft.t(a,{files:this._rejectedFiles.size.join(", "),size:this.humanFileSize(Craft.maxUploadSize)}),this._rejectedFiles.size=[],alert(a)),this._rejectedFiles.limit.length&&(a=1==this._rejectedFiles.limit.length?"The file {files} could not be uploaded, because the field limit has been reached.":"The files {files} could not be uploaded, because the field limit has been reached.",a=Craft.t(a,{files:this._rejectedFiles.limit.join(", ")}),this._rejectedFiles.limit=[],alert(a))},humanFileSize:function(a,b){var c=1024;if(a=c);return a.toFixed(1)+" "+d[e]},_createExtensionList:function(){this._extensionList=[];for(var a=0;a'),this.$selectAllBtn=a('').appendTo(this.$selectAllContainer),this.$selectAllCheckbox=a('').appendTo(this.$selectAllBtn),this.$selectAllBtn.attr({role:"checkbox",tabindex:"0","aria-checked":"false"}),this.addListener(this.$selectAllBtn,"click",function(){0==this.view.getSelectedElements().length?this.view.selectAllElements():this.view.deselectAllElements()}),this.addListener(this.$selectAllBtn,"keydown",function(b){b.keyCode==Garnish.SPACE_KEY&&(b.preventDefault(),a(b.currentTarget).trigger("click"))})),this.$selectAllContainer.prependTo(this.$toolbarTableRow)),this.$elements.html(c.html),Craft.appendHeadHtml(c.headHtml),Craft.appendFootHtml(c.footHtml),picturefill();var d=this.actions||this.settings.selectable;if(this.view=this.createView(this.getSelectedViewMode(),{context:this.settings.context,batchSize:this.settings.batchSize,params:b,selectable:d,multiSelect:this.actions||this.settings.multiSelect,checkboxMode:"index"==this.settings.context&&this.actions,onSelectionChange:a.proxy(this,"_handleSelectionChange")}),this._autoSelectElements){if(d)for(var e=0;e').data("action",f.handle).append(f.trigger);this.addListener(g,"submit","_handleActionTriggerSubmit"),b.push(g)}else f.destructive?d.push(f):c.push(f)}var h;if(c.length||d.length){var i=a("");h=a('').appendTo(i);var j=a('
").appendTo(this.$primaryButtons),this.$body=e,this.addListener(this.$cancelBtn,"activate","cancel"),this.addListener(this.$selectBtn,"activate","selectElements")},onFadeIn:function(){this.elementIndex?Garnish.isMobileBrowser(!0)||this.elementIndex.$search.focus():this._createElementIndex(),this.base()},onSelectionChange:function(){this.updateSelectBtnState()},updateSelectBtnState:function(){this.$selectBtn&&(this.elementIndex.getSelectedElements().length?this.enableSelectBtn():this.disableSelectBtn())},enableSelectBtn:function(){this.$selectBtn.removeClass("disabled")},disableSelectBtn:function(){this.$selectBtn.addClass("disabled")},enableCancelBtn:function(){this.$cancelBtn.removeClass("disabled")},disableCancelBtn:function(){this.$cancelBtn.addClass("disabled")},showFooterSpinner:function(){this.$footerSpinner.removeClass("hidden")},hideFooterSpinner:function(){this.$footerSpinner.addClass("hidden")},cancel:function(){this.$cancelBtn.hasClass("disabled")||this.hide()},selectElements:function(){if(this.elementIndex&&this.elementIndex.getSelectedElements().length){this.elementIndex.view.elementSelect.clearMouseUpTimeout();var a=this.elementIndex.getSelectedElements(),b=this.getElementInfo(a);this.onSelect(b),this.settings.disableElementsOnSelect&&this.elementIndex.disableElements(this.elementIndex.getSelectedElements()),this.settings.hideOnSelect&&this.hide()}},getElementInfo:function(b){for(var c=[],d=0;d=this.settings.maxObjects)){var c=a(b).appendTo(this.$tbody),d=c.find(".delete");this.settings.sortable&&this.sorter.addItems(c),this.$deleteBtns=this.$deleteBtns.add(d),this.addListener(d,"click","handleDeleteBtnClick"),this.totalObjects++,this.updateUI()}},reorderObjects:function(){if(!this.settings.sortable)return!1;for(var b=[],c=0;c=this.settings.maxObjects?a(this.settings.newObjectBtnSelector).addClass("hidden"):a(this.settings.newObjectBtnSelector).removeClass("hidden"))}},{defaults:{tableSelector:null,noObjectsSelector:null,newObjectBtnSelector:null,idAttribute:"data-id",nameAttribute:"data-name",sortable:!1,allowDeleteAll:!0,minObjects:0,maxObjects:null,reorderAction:null,deleteAction:null,reorderSuccessMessage:Craft.t("New order saved."),reorderFailMessage:Craft.t("Couldn’t save new order."),confirmDeleteMessage:Craft.t("Are you sure you want to delete “{name}”?"),deleteSuccessMessage:Craft.t("“{name}” deleted."),deleteFailMessage:Craft.t("Couldn’t delete “{name}”."),onReorderObjects:a.noop,onDeleteObject:a.noop}}),Craft.AssetIndex=Craft.BaseElementIndex.extend({$includeSubfoldersContainer:null,$includeSubfoldersCheckbox:null,showingIncludeSubfoldersCheckbox:!1,$uploadButton:null,$uploadInput:null,$progressBar:null,$folders:null,uploader:null,promptHandler:null,progressBar:null,_uploadTotalFiles:0,_uploadFileProgress:{},_uploadedFileIds:[],_currentUploaderSettings:{},_fileDrag:null,_folderDrag:null,_expandDropTargetFolderTimeout:null,_tempExpandedFolders:[],init:function(b,c,d){this.base(b,c,d),"index"==this.settings.context?(this._initIndexPageMode(),this.addListener(Garnish.$win,"resize,scroll","_positionProgressBar")):(this.addListener(this.$main,"scroll","_positionProgressBar"),this.settings.modal&&this.settings.modal.on("updateSizeAndPosition",a.proxy(this,"_positionProgressBar")))},initSource:function(a){this.base(a),this._createFolderContextMenu(a),"index"==this.settings.context&&(this._folderDrag&&this._getSourceLevel(a)>1&&this._getFolderIdFromSourceKey(a.data("key"))&&this._folderDrag.addItems(a.parent()),this._fileDrag&&this._fileDrag.updateDropTargets())},deinitSource:function(a){this.base(a);var b=a.data("contextmenu");b&&b.destroy(),"index"==this.settings.context&&(this._folderDrag&&this._getSourceLevel(a)>1&&this._folderDrag.removeItems(a.parent()),this._fileDrag&&this._fileDrag.updateDropTargets())},_getSourceLevel:function(a){return a.parentsUntil("nav","ul").length},_initIndexPageMode:function(){this.settings.selectable=!0,this.settings.multiSelect=!0;var b=a.proxy(this,"_onDragStart"),c=a.proxy(this,"_onDropTargetChange");this._fileDrag=new Garnish.DragDrop({activeDropTargetClass:"sel",helperOpacity:.75,filter:a.proxy(function(){return this.view.getSelectedElements()},this),helper:a.proxy(function(a){return this._getFileDragHelper(a)},this),dropTargets:a.proxy(function(){for(var b=[],c=0;c1&&c.push(e.parent()[0])}return a(c)},this),helper:a.proxy(function(b){var c=a(''),d=a("").appendTo(c),e=a("
'),this.initSourceToggle(a))},_appendSubfolder:function(b,c){for(var d=b.siblings("ul"),e=d.children("li"),f=a.trim(c.children("a:first").text()),g=!1,h=0;hf){i.before(c),g=!0;break}}g||b.siblings("ul").append(c)},_cleanUpTree:function(a){null!==a&&0==a.siblings("ul").children("li").length&&(this.deinitSourceToggle(a),a.siblings("ul").remove(),a.siblings(".toggle").remove(),a.parent().removeClass("expanded"))},_positionProgressBar:function(){var b=a(),c=0,d=0;"index"==this.settings.context?(b=this.progressBar.$progressBar.closest("#content"),c=Garnish.$win.scrollTop()):(b=this.progressBar.$progressBar.closest(".main"),c=this.$main.scrollTop());var e=b.offset().top,f=c-e,g=Garnish.$win.height();d=b.height()>g?g/2-6+f:b.height()/2-6,"index"!=this.settings.context&&(d=c+(b.height()/2-6)),this.progressBar.$progressBar.css({top:d})}}),Craft.registerElementIndexClass("Asset",Craft.AssetIndex),Craft.AssetSelectInput=Craft.BaseElementSelectInput.extend({requestId:0,hud:null,uploader:null,progressBar:null,originalFilename:"",originalExtension:"",init:function(b){b.editorSettings={onShowHud:a.proxy(this.resetOriginalFilename,this),onCreateForm:a.proxy(this._renameHelper,this),validators:[a.proxy(this.validateElementForm,this)]},this.base(b),this._attachUploader()},_attachUploader:function(){this.progressBar=new Craft.ProgressBar(a('').appendTo(this.$container));var b={url:Craft.getActionUrl("assets/expressUpload"),dropZone:this.$container,formData:{fieldId:this.settings.fieldId,elementId:this.settings.sourceElementId}};"undefined"!=typeof Craft.csrfTokenName&&"undefined"!=typeof Craft.csrfTokenValue&&(b.formData[Craft.csrfTokenName]=Craft.csrfTokenValue),"undefined"!=typeof this.settings.criteria.kind&&(b.allowedKinds=this.settings.criteria.kind),b.canAddMoreFiles=a.proxy(this,"canAddMoreFiles"),b.events={},b.events.fileuploadstart=a.proxy(this,"_onUploadStart"),b.events.fileuploadprogressall=a.proxy(this,"_onUploadProgress"),b.events.fileuploaddone=a.proxy(this,"_onUploadComplete"),this.uploader=new Craft.Uploader(this.$container,b)},selectUploadedFile:function(a){if(this.canAddMoreElements()){var b=a.$element;b.addClass("removable"),b.prepend(''),b.appendTo(this.$elementsContainer);var c=-(b.outerWidth()+10);this.$addElementBtn.css("margin-"+Craft.left,c+"px");var d={};d["margin-"+Craft.left]=0,this.$addElementBtn.velocity(d,"fast"),this.addElements(b),delete this.modal}},_onUploadStart:function(a){this.progressBar.$progressBar.css({top:Math.round(this.$container.outerHeight()/2)-6}),this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(a,b){var c=parseInt(b.loaded/b.total*100,10);this.progressBar.setProgressPercentage(c)},_onUploadComplete:function(b,c){if(c.result.error)alert(c.result.error);else{var d=a(c.result.html);Craft.appendHeadHtml(c.result.headHtml),this.selectUploadedFile(Craft.getElementInfo(d))}this.uploader.isLastUpload()&&(this.progressBar.hideProgressBar(),this.$container.removeClass("uploading"))},canAddMoreFiles:function(a){return!this.settings.limit||this.$elements.length+a1&&(c=b.pop());var d=b.join(".");return{extension:c,baseFileName:d}},_renameHelper:function(b){a(".renameHelper",b).on("focus",a.proxy(function(a){input=a.currentTarget;var b=this._parseFilename(input.value);""==this.originalFilename&&""==this.originalExtension&&(this.originalFilename=b.baseFileName,this.originalExtension=b.extension);var c=0,d=b.baseFileName.length;if("undefined"!=typeof input.selectionStart)input.selectionStart=c,input.selectionEnd=d;else if(document.selection&&document.selection.createRange){input.select();var e=document.selection.createRange();e.collapse(!0),e.moveEnd("character",d),e.moveStart("character",c),e.select()}},this))},resetOriginalFilename:function(){this.originalFilename="",this.originalExtension=""},validateElementForm:function(){var b=a(".renameHelper",this.elementEditor.hud.$hud.data("elementEditor").$form),c=this._parseFilename(b.val());return c.extension==this.originalExtension||(""==c.extension?this.originalFilename!=c.baseFileName?(b.val(c.baseFileName+"."+this.originalExtension),!0):confirm(Craft.t("Are you sure you want to remove the extension “.{ext}”?",{ext:this.originalExtension})):confirm(Craft.t("Are you sure you want to change the extension from “.{oldExt}” to “.{newExt}”?",{oldExt:this.originalExtension,newExt:c.extension})))}}),Craft.AssetSelectorModal=Craft.BaseElementSelectorModal.extend({$selectTransformBtn:null,_selectedTransform:null,init:function(b,c){c=a.extend({},Craft.AssetSelectorModal.defaults,c),this.base(b,c),c.transforms.length&&this.createSelectTransformButton(c.transforms)},createSelectTransformButton:function(b){if(b&&b.length){var c=a('').appendTo(this.$primaryButtons);this.$selectBtn.appendTo(c),this.$selectTransformBtn=a('
").appendTo(e),g=a('').appendTo(e);this.$logoutWarningPara=a("").prependTo(d),this.logoutWarningModal=new Garnish.Modal(c,{autoShow:!1,closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark",onFadeIn:function(){Garnish.isMobileBrowser(!0)||setTimeout(function(){g.focus()},100)}}),this.addListener(f,"activate","logout"),this.addListener(c,"submit","renewSession")}b?this.logoutWarningModal.quickShow():this.logoutWarningModal.show(),this.updateLogoutWarningMessage(),this.decrementLogoutWarningInterval=setInterval(a.proxy(this,"decrementLogoutWarning"),1e3)},updateLogoutWarningMessage:function(){this.$logoutWarningPara.text(Craft.t("Your session will expire in {time}.",{time:Craft.secondsToHumanTimeDuration(this.authTimeout)})),this.logoutWarningModal.updateSizeAndPosition()},decrementLogoutWarning:function(){this.authTimeout>0&&(this.authTimeout--,this.updateLogoutWarningMessage()),0==this.authTimeout&&clearInterval(this.decrementLogoutWarningInterval)},hideLogoutWarningModal:function(a){this.showingLogoutWarningModal=!1,this.logoutWarningModal&&(a?this.logoutWarningModal.quickHide():this.logoutWarningModal.hide(),this.decrementLogoutWarningInterval&&clearInterval(this.decrementLogoutWarningInterval))},showLoginModal:function(){var b;if(this.showingLogoutWarningModal?(this.hideLogoutWarningModal(!0),b=!0):b=!1,this.showingLoginModal=!0,!this.loginModal){var c=a(''),d=a('
'+Craft.t("Your session has ended.")+"
"+Craft.t("Enter your password to log back in.")+"
').appendTo(d),this.$footer=a('').appendTo(d),this.$footerBtnContainer=a('').appendTo(this.$footer),this.$cancelBtn=a('').text(Craft.t("Cancel")).appendTo(this.$footerBtnContainer),this.$saveBtn=a('').text(Craft.t("Save")).appendTo(this.$footerBtnContainer),this.$saveSpinner=a('').appendTo(this.$footerBtnContainer),this.$newHeadingBtn=a('').text(Craft.t("New heading")).appendTo(a('').appendTo(this.$footer)),this.$loadingSpinner=a('').appendTo(d),this.setContainer(d),this.show();var e={elementType:this.elementIndex.elementType};Craft.postActionRequest("elementIndexSettings/getCustomizeSourcesModalData",e,a.proxy(function(a,b){this.$loadingSpinner.remove(),"success"==b&&(this.$saveBtn.removeClass("disabled"),this.buildModal(a))},this)),this.addListener(this.$newHeadingBtn,"click","handleNewHeadingBtnClick"),this.addListener(this.$cancelBtn,"click","hide"),this.addListener(this.$saveBtn,"click","save"),this.addListener(this.$container,"submit","save")},buildModal:function(b){this.availableTableAttributes=b.availableTableAttributes,this.sourceSort=new Garnish.DragSort({handle:".move",axis:"y",onSortChange:a.proxy(function(){this.updateSourcesOnSave=!0},this)}),this.sources=[];for(var c=0;c').appendTo(this.$sourcesContainer),e=a('').appendTo(d),f=a('').appendTo(d);a('').appendTo(d);return"undefined"!=typeof b.heading?(d.addClass("heading"),f.attr("name","sourceOrder[][heading]"),c=new Craft.CustomizeSourcesModal.Heading(this,d,e,f,b),c.updateItemLabel(b.heading)):(f.attr("name","sourceOrder[][key]").val(b.key),c=new Craft.CustomizeSourcesModal.Source(this,d,e,f,b),c.updateItemLabel(b.label),b.key==this.elementIndex.sourceKey&&c.select()),this.sourceSort.addItems(d),c},handleNewHeadingBtnClick:function(){var a=this.addSource({heading:""});Garnish.scrollContainerToElement(this.$sidebar,a.$item),a.select(),this.updateSourcesOnSave=!0},save:function(b){if(b&&b.preventDefault(),!this.$saveBtn.hasClass("disabled")&&this.$saveSpinner.hasClass("hidden")){this.$saveSpinner.removeClass("hidden");var c=this.$container.serialize()+"&elementType="+this.elementIndex.elementType;Craft.postActionRequest("elementIndexSettings/saveCustomizeSourcesModalSettings",c,a.proxy(function(a,b){if(this.$saveSpinner.addClass("hidden"),"success"==b&&a.success){if(this.updateSourcesOnSave&&this.$elementIndexSourcesContainer.length){for(var c,d,e=0;e").append(this.createSettings()).appendTo(this.modal.$sourceSettingsContainer),this.modal.$sourceSettingsContainer.scrollTop(0))},createSettings:function(){},getIndexSource:function(){},deselect:function(){this.$item.removeClass("sel"),this.modal.selectedSource=null,this.$settingsContainer.addClass("hidden")},updateItemLabel:function(a){this.$itemLabel.text(a)},destroy:function(){this.$item.data("source",null),this.base()}}),Craft.CustomizeSourcesModal.Source=Craft.CustomizeSourcesModal.BaseSource.extend({createSettings:function(){if(this.sourceData.tableAttributes.length){var b=this.sourceData.tableAttributes[0],c=b[0],d=b[1],e=this.createTableColumnOption(c,d,!0,!0),f=a(""),g=[c];a('').appendTo(f);for(var h=1;h').append('').append(Craft.ui.createCheckbox({label:c,name:"sources["+this.sourceData.key+"][tableAttributes][]",value:b,checked:e,disabled:d})),d&&$option.children(".move").addClass("disabled"),$option},getIndexSource:function(){var a=this.modal.elementIndex.getSourceByKey(this.sourceData.key);if(a)return a.closest("li")}}),Craft.CustomizeSourcesModal.Heading=Craft.CustomizeSourcesModal.BaseSource.extend({$labelField:null,$labelInput:null,$deleteBtn:null,isHeading:function(){return!0},select:function(){this.base(),this.$labelInput.focus()},createSettings:function(){return this.$labelField=Craft.ui.createTextField({label:Craft.t("Heading"),instructions:Craft.t("This can be left blank if you just want an unlabeled separator."),value:this.sourceData.heading}),this.$labelInput=this.$labelField.find(".text"),this.$deleteBtn=a('').text(Craft.t("Delete heading")),this.addListener(this.$labelInput,"textchange","handleLabelInputChange"),this.addListener(this.$deleteBtn,"click","deleteHeading"),a([this.$labelField[0],a("")[0],this.$deleteBtn[0]])},handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val()),this.modal.updateSourcesOnSave=!0},updateItemLabel:function(a){this.$itemLabel.html((a?Craft.escapeHtml(a):''+Craft.t("(blank)")+"")+" "),this.$itemInput.val(a)},deleteHeading:function(){this.modal.sourceSort.removeItems(this.$item),this.modal.sources.splice(a.inArray(this,this.modal.sources),1),this.modal.updateSourcesOnSave=!0,this.isSelected()&&(this.deselect(),this.modal.sources.length&&this.modal.sources[0].select()),this.$item.remove(),this.$settingsContainer.remove(),this.destroy()},getIndexSource:function(){var b=this.$labelInput?this.$labelInput.val():this.sourceData.heading;return a('').append(a("").text(b))}}),Craft.DataTableSorter=Garnish.DragSort.extend({$table:null,init:function(b,c){this.$table=a(b);var d=this.$table.children("tbody").children(":not(.filler)");c=a.extend({},Craft.DataTableSorter.defaults,c),c.container=this.$table.children("tbody"),c.helper=a.proxy(this,"getHelper"),c.caboose="
'+Craft.t("What do you want to do with their content?")+'
'+Craft.t("Choose a user")+'
").appendTo(d),f=a('').appendTo(e),g=a('
'+Craft.t("Cancel")+"
").appendTo(f);this.$deleteActionRadios=e.find("input[type=radio]"),this.$deleteSubmitBtn=a('').appendTo(f),this.$deleteSpinner=a('').appendTo(f);var h;if(Garnish.isArray(this.userId)){h=["and"];for(var i=0;i0},initialize:function(){if(!this.initialized){this.initialized=!0,this.removeListener(Garnish.$win,"resize");for(var a=this.$tbody.children(),b=0;b';for(var f in b){var g=b[f],h=c+"["+a+"]["+f+"]",i="undefined"!=typeof d[f]?d[f]:"",j=Craft.inArray(g.type,Craft.EditableTable.textualColTypes);switch(e+='
')},getItemContainer:function(a){return a.parent()},onDragStop:function(){if(this.draggingUnusedItem&&this.showingInsertion){var b=this.$draggee.clone().removeClass("unused"),c=b.find(".tab span").text();b.find(".fld-field").removeClass("unused"),b.find(".tabs .tab").append('');var d=b.find(".fld-field"),e=d.filter(".hidden").remove();d=d.not(e),d.prepend('');for(var f=0;f')}this.designer.fieldDrag.addItems(d),this.designer.initTab(b),this.$draggee.css({visibility:"inherit",display:"field"}).addClass("hidden"),this.$draggee.find(".fld-field").addClass("hidden"),this.$draggee=b,this.addItems(b),this.designer.tabGrid.addItems(b),this.designer.unusedFieldGrid.removeItems(this.$draggee)}this.base()}}),Craft.FieldLayoutDesigner.FieldDrag=Craft.FieldLayoutDesigner.BaseDrag.extend({itemSelector:"> div.fld-tab .fld-field",addCaboose:function(){this.$caboose=a();for(var b=this.designer.$tabContainer.children().children(".fld-tabcontent"),c=0;c').appendTo(b[c]);this.$caboose=this.$caboose.add(d)}},getInsertion:function(){return a('')},getItemContainer:function(a){return a.parent().parent().parent()},onDragStop:function(){if(this.draggingUnusedItem&&this.showingInsertion){var a=this.$draggee.clone().removeClass("unused");if(a.prepend(''),this.designer.initField(a),this.$draggee.css({visibility:"inherit",display:"field"}).addClass("hidden"),0==this.$draggee.siblings(":not(.hidden)").length){var b=this.$draggee.parent().parent();b.addClass("hidden"),this.designer.unusedFieldGrid.removeItems(b)}this.$draggee=a,this.addItems(a)}if(this.showingInsertion){var c=this.$insertion.parent().parent().find(".tab span").text(),d=this.designer.getFieldInputName(c);this.draggingUnusedItem?this.$draggee.append(''):this.$draggee.find(".id-input").attr("name",d)}this.base()}}),Craft.FieldToggle=Garnish.Base.extend({$toggle:null,targetPrefix:null,targetSelector:null,reverseTargetSelector:null,_$target:null,_$reverseTarget:null,type:null,init:function(b){this.$toggle=a(b),this.$toggle.data("fieldtoggle")&&(Garnish.log("Double-instantiating a field toggle on an element"),this.$toggle.data("fieldtoggle").destroy()),this.$toggle.data("fieldtoggle",this),this.type=this.getType(),"select"==this.type?this.targetPrefix=this.$toggle.attr("data-target-prefix")||"":(this.targetSelector=this.normalizeTargetSelector(this.$toggle.data("target")),this.reverseTargetSelector=this.normalizeTargetSelector(this.$toggle.data("reverse-target"))),this.findTargets(),"link"==this.type?this.addListener(this.$toggle,"click","onToggleChange"):this.addListener(this.$toggle,"change","onToggleChange")},normalizeTargetSelector:function(a){return a&&!a.match(/^[#\.]/)&&(a="#"+a),a},getType:function(){return"INPUT"==this.$toggle.prop("nodeName")&&"checkbox"==this.$toggle.attr("type").toLowerCase()?"checkbox":"SELECT"==this.$toggle.prop("nodeName")?"select":"A"==this.$toggle.prop("nodeName")?"link":"DIV"==this.$toggle.prop("nodeName")&&this.$toggle.hasClass("lightswitch")?"lightswitch":void 0},findTargets:function(){"select"==this.type?this._$target=a(this.normalizeTargetSelector(this.targetPrefix+this.getToggleVal())):(this.targetSelector&&(this._$target=a(this.targetSelector)),this.reverseTargetSelector&&(this._$reverseTarget=a(this.reverseTargetSelector)))},getToggleVal:function(){return"lightswitch"==this.type?this.$toggle.children("input").val():Garnish.getInputPostVal(this.$toggle)},onToggleChange:function(){"select"==this.type?(this.hideTarget(this._$target),this.findTargets(),this.showTarget(this._$target)):("link"==this.type?this.onToggleChange._show=this.$toggle.hasClass("collapsed")||!this.$toggle.hasClass("expanded"):this.onToggleChange._show=!!this.getToggleVal(),this.onToggleChange._show?(this.showTarget(this._$target),this.hideTarget(this._$reverseTarget)):(this.hideTarget(this._$target),
+this.showTarget(this._$reverseTarget)),delete this.onToggleChange._show)},showTarget:function(a){a&&a.length&&(this.showTarget._currentHeight=a.height(),a.removeClass("hidden"),"select"!=this.type&&("link"==this.type&&(this.$toggle.removeClass("collapsed"),this.$toggle.addClass("expanded")),a.height("auto"),this.showTarget._targetHeight=a.height(),a.css({height:this.showTarget._currentHeight,overflow:"hidden"}),a.velocity("stop"),a.velocity({height:this.showTarget._targetHeight},"fast",function(){a.css({height:"",overflow:""})}),delete this.showTarget._targetHeight),delete this.showTarget._currentHeight,Garnish.$win.trigger("resize"))},hideTarget:function(a){a&&a.length&&("select"==this.type?a.addClass("hidden"):("link"==this.type&&(this.$toggle.removeClass("expanded"),this.$toggle.addClass("collapsed")),a.css("overflow","hidden"),a.velocity("stop"),a.velocity({height:0},"fast",function(){a.addClass("hidden")})))}}),Craft.Grid=Garnish.Base.extend({$container:null,$items:null,items:null,totalCols:null,colPctWidth:null,sizeUnit:null,possibleItemColspans:null,possibleItemPositionsByColspan:null,itemPositions:null,itemColspansByPosition:null,layouts:null,layout:null,itemHeights:null,leftPadding:null,_refreshingCols:!1,_refreshColsAfterRefresh:!1,_forceRefreshColsAfterRefresh:!1,init:function(b,c){this.$container=a(b),this.$container.data("grid")&&(Garnish.log("Double-instantiating a grid on an element"),this.$container.data("grid").destroy()),this.$container.data("grid",this),this.setSettings(c,Craft.Grid.defaults),"pct"==this.settings.mode?this.sizeUnit="%":this.sizeUnit="px",this.handleContainerHeightProxy=a.proxy(function(){this.refreshCols(!1,!0)},this),this.$items=this.$container.children(this.settings.itemSelector),this.setItems(),this.refreshCols(!0,!1),Garnish.$doc.ready(a.proxy(function(){this.refreshCols(!1,!1)},this))},addItems:function(b){this.$items=a().add(this.$items.add(b)),this.setItems(),this.refreshCols(!0,!0),a(b).velocity("finish")},removeItems:function(b){this.$items=a().add(this.$items.not(b)),this.setItems(),this.refreshCols(!0,!0)},resetItemOrder:function(){this.$items=a().add(this.$items),this.setItems(),this.refreshCols(!0,!0)},setItems:function(){for(this.setItems._={},this.items=[],this.setItems._.i=0;this.setItems._.ithis.settings.maxCols&&(this.refreshCols._.totalCols=this.settings.maxCols)),0==this.refreshCols._.totalCols&&(this.refreshCols._.totalCols=1),b!==!0&&this.totalCols===this.refreshCols._.totalCols)return void this.completeRefreshCols();if(this.totalCols=this.refreshCols._.totalCols,this.removeListener(this.$container,"resize"),"grid"==this.settings.fillMode)for(this.refreshCols._.itemIndex=0;this.refreshCols._.itemIndexthis.refreshCols._.tallestItemHeight&&(this.refreshCols._.tallestItemHeight=this.refreshCols._.itemHeight),this.refreshCols._.colIndex++;for(this.settings.snapToGrid&&(this.refreshCols._.remainder=this.refreshCols._.tallestItemHeight%this.settings.snapToGrid,this.refreshCols._.remainder&&(this.refreshCols._.tallestItemHeight+=this.settings.snapToGrid-this.refreshCols._.remainder)),this.refreshCols._.i=this.refreshCols._.itemIndex;this.refreshCols._.ithis.totalCols&&(this.refreshCols._.minColspan=this.totalCols),this.refreshCols._.maxColspan>this.totalCols&&(this.refreshCols._.maxColspan=this.totalCols),this.refreshCols._.colspan=this.refreshCols._.minColspan;this.refreshCols._.colspan<=this.refreshCols._.maxColspan;this.refreshCols._.colspan++)for(this.refreshCols._.$item.css("width",this.getItemWidth(this.refreshCols._.colspan)+this.sizeUnit),this.itemHeightsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=this.refreshCols._.$item.outerHeight(),this.possibleItemColspans[this.refreshCols._.item].push(this.refreshCols._.colspan),this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=[],this.refreshCols._.positionLeft?(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=0):this.refreshCols._.positionRight?(this.refreshCols._.minPosition=this.totalCols-this.refreshCols._.colspan,this.refreshCols._.maxPosition=this.refreshCols._.minPosition):(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=this.totalCols-this.refreshCols._.colspan),this.refreshCols._.position=this.refreshCols._.minPosition;this.refreshCols._.position<=this.refreshCols._.maxPosition;this.refreshCols._.position++)this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan].push(this.refreshCols._.position);for(this.refreshCols._.colHeights=[],this.refreshCols._.i=0;this.refreshCols._.i=0;this.refreshCols._.i--)this.refreshCols._.layoutTotalCols[this.refreshCols._.i]!=this.refreshCols._.highestTotalCols&&this.layouts.splice(this.refreshCols._.i,1);for(this.refreshCols._.layoutHeights=[],this.refreshCols._.i=0;this.refreshCols._.i=0&&0==this.layout.colHeights[this.refreshCols._.i];this.refreshCols._.i--)this.refreshCols._.totalEmptyCols++;for(this.leftPadding=this.getItemWidth(this.refreshCols._.totalEmptyCols)/2,"fixed"==this.settings.mode&&(this.leftPadding+=(this.$container.width()-this.settings.minColWidth*this.totalCols)/2),this.refreshCols._.i=0;this.refreshCols._.i/g","");b=b.replace(/['"‘’“”\[\]\(\)\{\}:]/g,""),b=b.toLowerCase(),b=Craft.asciiString(b),b=b.replace(/^[^a-z]+/,"");for(var c=Craft.filterArray(b.split(/[^a-z0-9]+/)),b="",d=0;d').hide().insertBefore(c);this.progressBar=new Craft.ProgressBar(a('').insertBefore(c)),this.progressBar.$progressBar.css({top:Math.round(c.outerHeight()/2)-6}),this.$container=c.parent();var e={url:Craft.getActionUrl(this.settings.uploadAction),fileInput:d,element:this.settings.uploadButton[0],action:Craft.actionUrl+"/"+this.settings.uploadAction,formData:"object"==typeof this.settings.postParameters?this.settings.postParameters:{},events:{fileuploadstart:a.proxy(function(){this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},this),fileuploadprogressall:a.proxy(function(a){var b=parseInt(a.loaded/a.total*100,10);this.progressBar.setProgressPercentage(b)},this),fileuploaddone:a.proxy(function(c,d){this.progressBar.hideProgressBar(),this.$container.removeClass("uploading");var e=d.result;return e.error?void alert(e.error):(null==Craft.ImageUpload.$modalContainerDiv&&(Craft.ImageUpload.$modalContainerDiv=a('').addClass(b.modalClass).appendTo(Garnish.$bod)),e.fileName&&(this.source=e.fileName),void(e.html&&(Craft.ImageUpload.$modalContainerDiv.empty().append(e.html),this.modal?this.modal.show():(this.modal=new Craft.ImageModal(Craft.ImageUpload.$modalContainerDiv,{postParameters:b.postParameters,cropAction:b.cropAction}),this.modal.imageHandler=this),this.modal.bindButtons(),this.modal.addListener(this.modal.$saveBtn,"click","saveImage"),this.modal.addListener(this.modal.$cancelBtn,"click","cancel"),this.modal.removeListener(Garnish.Modal.$shade,"click"),setTimeout(a.proxy(function(){Craft.ImageUpload.$modalContainerDiv.find("img").load(a.proxy(function(){var a=new Craft.ImageAreaTool(b.areaToolOptions,this.modal);a.showArea(),this.modal.cropAreaTool=a},this))},this),1))))},this)},acceptFileTypes:/(jpg|jpeg|gif|png)/};"undefined"!=typeof Craft.csrfTokenName&&"undefined"!=typeof Craft.csrfTokenValue&&(e.formData[Craft.csrfTokenName]=Craft.csrfTokenValue),this.uploader=new Craft.Uploader(c,e),this.addListener(a(b.deleteButton),"click",function(c){confirm(b.deleteMessage)&&(a(c.currentTarget).parent().append(''),Craft.postActionRequest(b.deleteAction,b.postParameters,a.proxy(function(a,b){"success"==b&&this.onImageDelete(a)},this)))}),this.addListener(a(b.uploadButton),"click",function(b){a(b.currentTarget).siblings("input[type=file]").click()})},onImageSave:function(a){this.settings.onImageSave.apply(this,[a])},onImageDelete:function(a){this.settings.onImageDelete.apply(this,[a])},destroy:function(){this.progressBar.destroy(),delete this.progressBar,this.modal&&(this.modal.destroy(),delete this.modal),this.uploader&&(this.uploader.destroy(),delete this.uploader),this.base()}}),Craft.ImageModal=Garnish.Modal.extend({$container:null,$saveBtn:null,$cancelBtn:null,areaSelect:null,source:null,_postParameters:null,_cropAction:"",imageHandler:null,cropAreaTool:null,init:function(a,b){this.cropAreaTool=null,this.base(a,b),this._postParameters=b.postParameters,this._cropAction=b.cropAction},bindButtons:function(){this.$saveBtn=this.$container.find(".submit:first"),this.$cancelBtn=this.$container.find(".cancel:first")},cancel:function(){this.hide(),this.$container.remove(),this.destroy()},saveImage:function(){var b=this.areaSelect.tellSelect(),c={x1:b.x,y1:b.y,x2:b.x2,y2:b.y2,source:this.source};c=a.extend(this._postParameters,c),Craft.postActionRequest(this._cropAction,c,a.proxy(function(a,b){"success"==b&&(a.error?Craft.cp.displayError(a.error):this.imageHandler.onImageSave.apply(this.imageHandler,[a])),this.hide(),this.$container.remove(),this.destroy()},this)),this.areaSelect.setOptions({disable:!0}),this.removeListener(this.$saveBtn,"click"),this.removeListener(this.$cancelBtn,"click"),this.$container.find(".crop-image").fadeTo(50,.5)}}),Craft.ImageAreaTool=Garnish.Base.extend({api:null,$container:null,containingModal:null,init:function(a,b){this.$container=Craft.ImageUpload.$modalContainerDiv,this.setSettings(a),this.containingModal=b},showArea:function(){var b=this.$container.find("img"),c={aspectRatio:this.settings.aspectRatio,maxSize:[b.width(),b.height()],bgColor:"none"},d=a.proxy(function(a){this.api=a;var c=this.settings.initialRectangle.x1,d=this.settings.initialRectangle.x2,e=this.settings.initialRectangle.y1,f=this.settings.initialRectangle.y2;if("auto"==this.settings.initialRectangle.mode){var g=0,h=0;""==this.settings.aspectRatio?(g=b.width(),h=b.height()):this.settings.aspectRatio>1?(g=b.width(),h=g/this.settings.aspectRatio):this.settings.aspectRatio<1?(h=b.height(),g=h*this.settings.aspectRatio):h=g=Math.min(b.width(),b.height()),c=Math.round((b.width()-g)/2),e=Math.round((b.height()-h)/2),d=c+g,f=e+h}this.api.setSelect([c,e,d,f]),this.containingModal.areaSelect=this.api,this.containingModal.source=b.attr("src").split("/").pop(),this.containingModal.updateSizeAndPosition()},this);b.Jcrop(c,function(){d(this)})}}),Craft.InfoIcon=Garnish.Base.extend({$icon:null,hud:null,init:function(b){this.$icon=a(b),this.addListener(this.$icon,"click","showHud")},showHud:function(){this.hud?this.hud.show():this.hud=new Garnish.HUD(this.$icon,this.$icon.html(),{hudClass:"hud info-hud",closeOtherHUDs:!1})}}),Craft.LightSwitch=Garnish.Base.extend({settings:null,$outerContainer:null,$innerContainer:null,$input:null,small:!1,on:null,dragger:null,dragStartMargin:null,init:function(b,c){this.$outerContainer=a(b),this.$outerContainer.data("lightswitch")&&(Garnish.log("Double-instantiating a lightswitch on an element"),this.$outerContainer.data("lightswitch").destroy()),this.$outerContainer.data("lightswitch",this),this.small=this.$outerContainer.hasClass("small"),this.setSettings(c,Craft.LightSwitch.defaults),this.$innerContainer=this.$outerContainer.find(".lightswitch-container:first"),this.$input=this.$outerContainer.find("input:first"),this.$input.prop("disabled")||(this.on=this.$outerContainer.hasClass("on"),this.$outerContainer.attr({role:"checkbox","aria-checked":this.on?"true":"false"}),this.addListener(this.$outerContainer,"mousedown","_onMouseDown"),this.addListener(this.$outerContainer,"keydown","_onKeyDown"),this.dragger=new Garnish.BaseDrag(this.$outerContainer,{axis:Garnish.X_AXIS,ignoreHandleSelector:null,onDragStart:a.proxy(this,"_onDragStart"),onDrag:a.proxy(this,"_onDrag"),onDragStop:a.proxy(this,"_onDragStop")}))},turnOn:function(){this.$outerContainer.addClass("dragging");var b={};b["margin-"+Craft.left]=0,this.$innerContainer.velocity("stop").velocity(b,Craft.LightSwitch.animationDuration,a.proxy(this,"_onSettle")),this.$input.val("1"),this.$outerContainer.addClass("on"),this.$outerContainer.attr("aria-checked","true"),this.on=!0,this.onChange()},turnOff:function(){this.$outerContainer.addClass("dragging");var b={};b["margin-"+Craft.left]=this._getOffMargin(),this.$innerContainer.velocity("stop").velocity(b,Craft.LightSwitch.animationDuration,a.proxy(this,"_onSettle")),this.$input.val(""),this.$outerContainer.removeClass("on"),this.$outerContainer.attr("aria-checked","false"),this.on=!1,this.onChange()},toggle:function(a){this.on?this.turnOff():this.turnOn()},onChange:function(){this.trigger("change"),this.settings.onChange(),this.$outerContainer.trigger("change")},_onMouseDown:function(){this.addListener(Garnish.$doc,"mouseup","_onMouseUp")},_onMouseUp:function(){this.removeListener(Garnish.$doc,"mouseup"),this.dragger.dragging||this.toggle()},_onKeyDown:function(a){switch(a.keyCode){case Garnish.SPACE_KEY:this.toggle(),a.preventDefault();break;case Garnish.RIGHT_KEY:"ltr"==Craft.orientation?this.turnOn():this.turnOff(),a.preventDefault();break;case Garnish.LEFT_KEY:"ltr"==Craft.orientation?this.turnOff():this.turnOn(),a.preventDefault()}},_getMargin:function(){return parseInt(this.$innerContainer.css("margin-"+Craft.left))},_onDragStart:function(){this.$outerContainer.addClass("dragging"),this.dragStartMargin=this._getMargin()},_onDrag:function(){var a;a="ltr"==Craft.orientation?this.dragStartMargin+this.dragger.mouseDistX:this.dragStartMargin-this.dragger.mouseDistX,a0&&(a=0),this.$innerContainer.css("margin-"+Craft.left,a)},_onDragStop:function(){var a=this._getMargin();a>this._getOffMargin()/2?this.turnOn():this.turnOff()},_onSettle:function(){this.$outerContainer.removeClass("dragging")},destroy:function(){this.base(),this.dragger.destroy()},_getOffMargin:function(){return this.small?-9:-11}},{animationDuration:100,defaults:{onChange:a.noop}}),Craft.LivePreview=Garnish.Base.extend({$extraFields:null,$trigger:null,$spinner:null,$shade:null,$editorContainer:null,$editor:null,$dragHandle:null,$iframeContainer:null,$iframe:null,$fieldPlaceholder:null,previewUrl:null,basePostData:null,inPreviewMode:!1,fields:null,lastPostData:null,updateIframeInterval:null,loading:!1,checkAgain:!1,dragger:null,dragStartEditorWidth:null,_handleSuccessProxy:null,_handleErrorProxy:null,_scrollX:null,_scrollY:null,_editorWidth:null,_editorWidthInPx:null,init:function(b){this.setSettings(b,Craft.LivePreview.defaults),this.settings.previewUrl?this.previewUrl=this.settings.previewUrl:this.previewUrl=Craft.baseSiteUrl.replace(/\/+$/,"")+"/","https:"==document.location.protocol&&(this.previewUrl=this.previewUrl.replace(/^http:/,"https:")),this.basePostData=a.extend({action:this.settings.previewAction,livePreview:!0},this.settings.previewParams),Craft.csrfTokenName&&(this.basePostData[Craft.csrfTokenName]=Craft.csrfTokenValue),this._handleSuccessProxy=a.proxy(this,"handleSuccess"),this._handleErrorProxy=a.proxy(this,"handleError"),this.$extraFields=a(this.settings.extraFields),this.$trigger=a(this.settings.trigger),this.$spinner=this.settings.spinner?a(this.settings.spinner):this.$trigger.find(".spinner"),this.$fieldPlaceholder=a(""),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.LivePreview.defaultEditorWidth),this.addListener(this.$trigger,"activate","toggle"),Craft.cp.on("beforeSaveShortcut",a.proxy(function(){this.inPreviewMode&&this.moveFieldsBack()},this))},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(a){var b;a>=1?(b=a,a/=Garnish.$win.width()):b=Math.round(a*Garnish.$win.width()),b').appendTo(Garnish.$bod).css("z-index",2),this.$editorContainer=a('').appendTo(Garnish.$bod),this.$editor=a('').appendTo(this.$editorContainer),this.$iframeContainer=a('').appendTo(Garnish.$bod),this.$iframe=a('').appendTo(this.$iframeContainer),this.$dragHandle=a('').appendTo(this.$editorContainer);var b=a('').appendTo(this.$editor),c=a('
'+Craft.t("Close Live Preview")+"
").appendTo(b),d=a('
'+Craft.t("Save")+"
").appendTo(b);this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:a.proxy(this,"_onDragStart"),onDrag:a.proxy(this,"_onDrag"),onDragStop:a.proxy(this,"_onDragStop")}),this.addListener(c,"click","exit"),this.addListener(d,"click","save")}this.handleWindowResize(),this.addListener(Garnish.$win,"resize","handleWindowResize"),this.$editorContainer.css(Craft.left,-(this.editorWidthInPx+Craft.LivePreview.dragHandleWidth)+"px"),this.$iframeContainer.css(Craft.right,-this.getIframeWidth()),this.fields=[];for(var e=a(this.settings.fields),f=0;fwindow.scrollTo('+this._scrollX+", "+this._scrollY+");";this.$iframe.css("background",a(this.$iframe[0].contentWindow.document.body).css("background")),
+this.$iframe[0].contentWindow.document.open(),this.$iframe[0].contentWindow.document.write(e),this.$iframe[0].contentWindow.document.close(),this.onResponse()},handleError:function(a,b,c){this.onResponse()},onResponse:function(){this.loading=!1,this.checkAgain&&(this.checkAgain=!1,this.updateIframe())},_getClone:function(a){var b=a.clone();return Garnish.copyInputValues(a,b),b.attr("id",""),b.find("[id]").attr("id",""),b},_onDragStart:function(){this.dragStartEditorWidth=this.editorWidthInPx,this.$iframeContainer.addClass("dragging")},_onDrag:function(){"ltr"==Craft.orientation?this.editorWidth=this.dragStartEditorWidth+this.dragger.mouseDistX:this.editorWidth=this.dragStartEditorWidth-this.dragger.mouseDistX,this.updateWidths()},_onDragStop:function(){this.$iframeContainer.removeClass("dragging"),Craft.setLocalStorage("LivePreview.editorWidth",this.editorWidth)}},{defaultEditorWidth:.33,minEditorWidthInPx:320,dragHandleWidth:4,defaults:{trigger:".livepreviewbtn",spinner:null,fields:null,extraFields:null,previewUrl:null,previewAction:null,previewParams:{}}}),Craft.LivePreview.init=function(a){Craft.livePreview=new Craft.LivePreview(a)},Craft.Pane=Garnish.Base.extend({$pane:null,$content:null,$sidebar:null,$tabsContainer:null,tabs:null,selectedTab:null,hasSidebar:null,init:function(b){this.$pane=a(b),this.$pane.data("pane")&&(Garnish.log("Double-instantiating a pane on an element"),this.$pane.data("pane").destroy()),this.$pane.data("pane",this),this.$content=this.$pane.find(".content:not(.hidden):first"),this.$tabsContainer=this.$pane.children(".tabs");var c=this.$tabsContainer.find("a");if(c.length){this.tabs={};for(var d=0;d992&&this.updateSidebarStyles._scrollTop>this.updateSidebarStyles._paneOffset?(this.updateSidebarStyles._styles.position="fixed",this.updateSidebarStyles._styles.top="24px"):(this.updateSidebarStyles._styles.position="absolute",this.updateSidebarStyles._styles.top="auto"),this.updateSidebarStyles._styles.maxHeight=Math.min(this.updateSidebarStyles._paneHeight-(this.updateSidebarStyles._scrollTop-this.updateSidebarStyles._paneOffset),this.updateSidebarStyles._windowHeight),this.updateSidebarStyles._paneHeight>this.updateSidebarStyles._windowHeight?this.updateSidebarStyles._styles.height=this.updateSidebarStyles._styles.maxHeight:this.updateSidebarStyles._styles.height=this.updateSidebarStyles._paneHeight,this.$sidebar.css(this.updateSidebarStyles._styles)},destroy:function(){this.base(),this.$pane.data("pane",null)}}),Craft.PasswordInput=Garnish.Base.extend({$passwordInput:null,$textInput:null,$currentInput:null,$showPasswordToggle:null,showingPassword:null,init:function(b,c){this.$passwordInput=a(b),this.settings=a.extend({},Craft.PasswordInput.defaults,c),this.$passwordInput.data("passwordInput")&&(Garnish.log("Double-instantiating a password input on an element"),this.$passwordInput.data("passwordInput").destroy()),this.$passwordInput.data("passwordInput",this),this.$showPasswordToggle=a("").hide(),this.$showPasswordToggle.addClass("password-toggle"),this.$showPasswordToggle.insertAfter(this.$passwordInput),this.addListener(this.$showPasswordToggle,"mousedown","onToggleMouseDown"),this.hidePassword()},setCurrentInput:function(a){this.$currentInput&&(a.addClass("focus"),this.$currentInput.replaceWith(a),a.focus(),a.removeClass("focus"),a.val(this.$currentInput.val())),this.$currentInput=a,this.addListener(this.$currentInput,"keypress,keyup,change,blur","onInputChange")},updateToggleLabel:function(a){this.$showPasswordToggle.text(a)},showPassword:function(){this.showingPassword||(this.$textInput||(this.$textInput=this.$passwordInput.clone(!0),this.$textInput.attr("type","text")),this.setCurrentInput(this.$textInput),this.updateToggleLabel(Craft.t("Hide")),this.showingPassword=!0)},hidePassword:function(){this.showingPassword!==!1&&(this.setCurrentInput(this.$passwordInput),this.updateToggleLabel(Craft.t("Show")),this.showingPassword=!1)},togglePassword:function(){this.showingPassword?this.hidePassword():this.showPassword(),this.settings.onToggleInput(this.$currentInput)},onInputChange:function(){this.$currentInput.val()?this.$showPasswordToggle.show():this.$showPasswordToggle.hide()},onToggleMouseDown:function(a){a.preventDefault();var b,c;this.$currentInput[0].setSelectionRange&&(b=this.$currentInput[0].selectionStart,c=this.$currentInput[0].selectionEnd),this.togglePassword(),this.$currentInput[0].setSelectionRange&&this.$currentInput[0].setSelectionRange(b,c)}},{defaults:{onToggleInput:a.noop}}),Craft.ProgressBar=Garnish.Base.extend({$progressBar:null,$innerProgressBar:null,_itemCount:0,_processedItemCount:0,init:function(b){this.$progressBar=a('').appendTo(b),this.$innerProgressBar=a('').appendTo(this.$progressBar),this.resetProgressBar()},resetProgressBar:function(){this.setProgressPercentage(100),this.$progressBar.addClass("pending"),this.setItemCount(1),this.setProcessedItemCount(0)},hideProgressBar:function(){this.$progressBar.fadeTo("fast",.01,a.proxy(function(){this.$progressBar.addClass("hidden").fadeTo(1,1,a.noop)},this))},showProgressBar:function(){this.$progressBar.removeClass("hidden")},setItemCount:function(a){this._itemCount=a},incrementItemCount:function(a){this._itemCount+=a},setProcessedItemCount:function(a){this._processedItemCount=a},incrementProcessedItemCount:function(a){this._processedItemCount+=a},updateProgressBar:function(){this._itemCount=Math.max(this._itemCount,1);var a=Math.min(100,Math.round(100*this._processedItemCount/this._itemCount));this.setProgressPercentage(a)},setProgressPercentage:function(a,b){0==a?this.$progressBar.addClass("pending"):(this.$progressBar.removeClass("pending"),b?this.$innerProgressBar.velocity("stop").velocity({width:a+"%"},"fast"):this.$innerProgressBar.velocity("stop").width(a+"%"))}}),Craft.PromptHandler=Garnish.Base.extend({$modalContainerDiv:null,$prompt:null,$promptApplyToRemainingContainer:null,$promptApplyToRemainingCheckbox:null,$promptApplyToRemainingLabel:null,$promptButtons:null,_prompts:[],_promptBatchCallback:a.noop,_promptBatchReturnData:[],_promptBatchNum:0,init:function(){},resetPrompts:function(){this._prompts=[],this._promptBatchCallback=a.noop,this._promptBatchReturnData=[],this._promptBatchNum=0},addPrompt:function(a){this._prompts.push(a)},getPromptCount:function(){return this._prompts.length},showBatchPrompts:function(a){this._promptBatchCallback=a,this._promptBatchReturnData=[],this._promptBatchNum=0,this._showNextPromptInBatch()},_showNextPromptInBatch:function(){var b=this._prompts[this._promptBatchNum].prompt,c=this._prompts.length-(this._promptBatchNum+1);this._showPrompt(b.message,b.choices,a.proxy(this,"_handleBatchPromptSelection"),c)},_handleBatchPromptSelection:function(b,c){var d=this._prompts[this._promptBatchNum],e=this._prompts.length-(this._promptBatchNum+1),f=a.extend(d,{choice:b});this._promptBatchReturnData.push(f),e?(this._promptBatchNum++,c?this._handleBatchPromptSelection(b,!0):this._showNextPromptInBatch()):"function"==typeof this._promptBatchCallback&&this._promptBatchCallback(this._promptBatchReturnData)},_showPrompt:function(b,c,d,e){this._promptCallback=d,null==this.modal&&(this.modal=new Garnish.Modal({closeOtherModals:!1})),null==this.$modalContainerDiv&&(this.$modalContainerDiv=a('').addClass().appendTo(Garnish.$bod)),this.$prompt=a('').appendTo(this.$modalContainerDiv.empty()),this.$promptMessage=a('').appendTo(this.$prompt),a("
").html(Craft.t("What do you want to do?")).appendTo(this.$prompt),this.$promptApplyToRemainingContainer=a('').appendTo(this.$prompt).hide(),this.$promptApplyToRemainingCheckbox=a('').appendTo(this.$promptApplyToRemainingContainer),this.$promptApplyToRemainingLabel=a("").appendTo(this.$promptApplyToRemainingContainer),this.$promptButtons=a('
");this.addListener(g,"activate",function(a){var b=a.currentTarget.getAttribute("data-choice"),c=this.$promptApplyToRemainingCheckbox.prop("checked");this._selectPromptChoice(b,c)}),this.$promptButtons.append(g)}e&&(this.$promptApplyToRemainingContainer.show(),this.$promptApplyToRemainingLabel.html(" "+Craft.t("Apply this to the {number} remaining conflicts?",{number:e}))),this.modal.show(),this.modal.removeListener(Garnish.Modal.$shade,"click"),this.addListener(Garnish.Modal.$shade,"click","_cancelPrompt")},_selectPromptChoice:function(b,c){this.$prompt.fadeOut("fast",a.proxy(function(){this.modal.hide(),this._promptCallback(b,c)},this))},_cancelPrompt:function(){this._selectPromptChoice("cancel",!0)}}),Craft.SlugGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(a){a=a.replace(/<(.*?)>/g,""),a=a.replace(/['"‘’“”\[\]\(\)\{\}:]/g,""),a=a.toLowerCase(),Craft.limitAutoSlugsToAscii&&(a=Craft.asciiString(a));var b=Craft.filterArray(XRegExp.matchChain(a,[XRegExp("[\\p{L}\\p{N}\\p{M}]+")]));return b.length?b.join(Craft.slugWordSeparator):""}}),Craft.Structure=Garnish.Base.extend({id:null,$container:null,state:null,structureDrag:null,init:function(b,c,d){this.id=b,this.$container=a(c),this.setSettings(d,Craft.Structure.defaults),this.$container.data("structure")&&(Garnish.log("Double-instantiating a structure on an element"),this.$container.data("structure").destroy()),this.$container.data("structure",this),this.state={},this.settings.storageKey&&a.extend(this.state,Craft.getLocalStorage(this.settings.storageKey,{})),"undefined"==typeof this.state.collapsedElementIds&&(this.state.collapsedElementIds=[]);for(var e=this.$container.find("ul").prev(".row"),f=0;f').prependTo(g);a.inArray(g.children(".element").data("id"),this.state.collapsedElementIds)!=-1&&h.addClass("collapsed"),this.initToggle(i)}this.settings.sortable&&(this.structureDrag=new Craft.StructureDrag(this,this.settings.maxLevels)),this.settings.newChildUrl&&this.initNewChildMenus(this.$container.find(".add"))},initToggle:function(b){b.click(a.proxy(function(b){var c=a(b.currentTarget).closest("li"),d=c.children(".row").find(".element:first").data("id"),e=a.inArray(d,this.state.collapsedElementIds);c.hasClass("collapsed")?(c.removeClass("collapsed"),e!=-1&&this.state.collapsedElementIds.splice(e,1)):(c.addClass("collapsed"),e==-1&&this.state.collapsedElementIds.push(d)),this.settings.storageKey&&Craft.setLocalStorage(this.settings.storageKey,this.state)},this))},initNewChildMenus:function(a){this.addListener(a,"click","onNewChildMenuClick")},onNewChildMenuClick:function(b){var c=a(b.currentTarget);if(!c.data("menubtn")){var d=c.parent().children(".element").data("id"),e=Craft.getUrl(this.settings.newChildUrl,"parentId="+d),f=(a('
").insertBefore(this.$checkoutSecure)},onUpgrade:function(){this.$successScreen.css(Craft.left,this.getWidth()).removeClass("hidden").animateLeft(0,"fast");var a=this.$successScreen.find(".btn:first");this.addListener(a,"click",function(){location.reload()}),this.trigger("upgrade")},cleanupCheckoutForm:function(){this.$checkoutForm.find(".error").removeClass("error"),this.$checkoutFormError&&(this.$checkoutFormError.remove(),this.$checkoutFormError=null)},clearCheckoutForm:function(){this.$customerNameInput.val(""),this.$customerEmailInput.val(""),this.$ccNumInput.val(""),this.$ccExpInput.val(""),this.$ccCvcInput.val(""),this.$businessNameInput.val(""),this.$businessAddress1Input.val(""),this.$businessAddress2Input.val(""),this.$businessCityInput.val(""),this.$businessStateInput.val(""),this.$businessCountryInput.val(""),this.$businessZipInput.val(""),this.$businessTaxIdInput.val(""),this.$purchaseNotesInput.val(""),this.$couponInput.val("")},clearCheckoutFormInABit:function(){this.clearCheckoutFormTimeout=setTimeout(a.proxy(this,"clearCheckoutForm"),Craft.UpgradeModal.clearCheckoutFormTimeoutDuration)}},{clearCheckoutFormTimeoutDuration:3e4}),Craft.Uploader=Garnish.Base.extend({uploader:null,allowedKinds:null,$element:null,settings:null,_rejectedFiles:{},_extensionList:null,_totalFileCounter:0,_validFileCounter:0,init:function(b,c){this._rejectedFiles={size:[],type:[],limit:[]},this.$element=b,this.allowedKinds=null,this._extensionList=null,this._totalFileCounter=0,this._validFileCounter=0,c=a.extend({},Craft.Uploader.defaults,c);var d=c.events;delete c.events,c.allowedKinds&&c.allowedKinds.length&&("string"==typeof c.allowedKinds&&(c.allowedKinds=[c.allowedKinds]),this.allowedKinds=c.allowedKinds,delete c.allowedKinds),c.autoUpload=!1,this.uploader=this.$element.fileupload(c);for(var e in d)this.uploader.on(e,d[e]);this.settings=c,this.uploader.on("fileuploadadd",a.proxy(this,"onFileAdd"))},setParams:function(a){"undefined"!=typeof Craft.csrfTokenName&&"undefined"!=typeof Craft.csrfTokenValue&&(a[Craft.csrfTokenName]=Craft.csrfTokenValue),this.uploader.fileupload("option",{formData:a})},getInProgress:function(){return this.uploader.fileupload("active")},isLastUpload:function(){return this.getInProgress()<2},onFileAdd:function(b,c){b.stopPropagation();var d=!1;return this.allowedKinds&&(this._extensionList||this._createExtensionList(),d=!0),c.process().done(a.proxy(function(){var b=c.files[0],e=!0;if(d){var f=b.name.match(/\.([a-z0-4_]+)$/i),g=f[1];a.inArray(g.toLowerCase(),this._extensionList)==-1&&(e=!1,this._rejectedFiles.type.push("“"+b.name+"”"))}b.size>this.settings.maxFileSize&&(this._rejectedFiles.size.push("“"+b.name+"”"),e=!1),e&&"function"==typeof this.settings.canAddMoreFiles&&!this.settings.canAddMoreFiles(this._validFileCounter)&&(this._rejectedFiles.limit.push("“"+b.name+"”"),e=!1),e&&(this._validFileCounter++,c.submit()),++this._totalFileCounter==c.originalFiles.length&&(this._totalFileCounter=0,this._validFileCounter=0,this.processErrorMessages())},this)),!0},processErrorMessages:function(){var a;this._rejectedFiles.type.length&&(a=1==this._rejectedFiles.type.length?"The file {files} could not be uploaded. The allowed file kinds are: {kinds}.":"The files {files} could not be uploaded. The allowed file kinds are: {kinds}.",a=Craft.t(a,{files:this._rejectedFiles.type.join(", "),kinds:this.allowedKinds.join(", ")}),this._rejectedFiles.type=[],alert(a)),this._rejectedFiles.size.length&&(a=1==this._rejectedFiles.size.length?"The file {files} could not be uploaded, because it exceeds the maximum upload size of {size}.":"The files {files} could not be uploaded, because they exceeded the maximum upload size of {size}.",a=Craft.t(a,{files:this._rejectedFiles.size.join(", "),size:this.humanFileSize(Craft.maxUploadSize)}),this._rejectedFiles.size=[],alert(a)),this._rejectedFiles.limit.length&&(a=1==this._rejectedFiles.limit.length?"The file {files} could not be uploaded, because the field limit has been reached.":"The files {files} could not be uploaded, because the field limit has been reached.",a=Craft.t(a,{files:this._rejectedFiles.limit.join(", ")}),this._rejectedFiles.limit=[],alert(a))},humanFileSize:function(a,b){var c=1024;if(a=c);return a.toFixed(1)+" "+d[e]},_createExtensionList:function(){this._extensionList=[];for(var a=0;a'+label+'').appendTo(this.$newCategoryBtnGroup);
+ this.$newCategoryBtn = $(''+Craft.escapeHtml(label)+'').appendTo(this.$newCategoryBtnGroup);
if (this.settings.context != 'index')
{
@@ -7368,7 +7369,7 @@ Craft.CategoryIndex = Craft.BaseElementIndex.extend(
{
var href = this._getGroupTriggerHref(group),
label = (this.settings.context == 'index' ? group.name : Craft.t('New {group} category', {group: group.name}));
- menuHtml += '