2 lines
71 KiB
JavaScript
2 lines
71 KiB
JavaScript
!function($){"use strict";void 0===$.oc.builder&&($.oc.builder={});var Base=$.oc.foundation.base,DataRegistry=(Base.prototype,function(){this.data={},this.requestCache={},this.callbackCache={},Base.call(this)});DataRegistry.prototype.set=function(plugin,type,subtype,data,params){this.storeData(plugin,type,subtype,data),"localization"!=type||subtype||this.localizationUpdated(plugin,params)},DataRegistry.prototype.get=function($formElement,plugin,type,subtype,callback){if(void 0===this.data[plugin]||void 0===this.data[plugin][type]||void 0===this.data[plugin][type][subtype]||this.isCacheObsolete(this.data[plugin][type][subtype].timestamp))return this.loadDataFromServer($formElement,plugin,type,subtype,callback);callback(this.data[plugin][type][subtype].data)},DataRegistry.prototype.makeCacheKey=function(plugin,type,subtype){var key=plugin+"-"+type;return subtype&&(key+="-"+subtype),key},DataRegistry.prototype.isCacheObsolete=function(timestamp){return Date.now()-timestamp>3e5},DataRegistry.prototype.loadDataFromServer=function($formElement,plugin,type,subtype,callback){var self=this,cacheKey=this.makeCacheKey(plugin,type,subtype);return void 0===this.requestCache[cacheKey]&&(this.requestCache[cacheKey]=$formElement.request("onPluginDataRegistryGetData",{data:{registry_plugin_code:plugin,registry_data_type:type,registry_data_subtype:subtype}}).done((function(data){if(void 0===data.registryData)throw new Error("Invalid data registry response.");self.storeData(plugin,type,subtype,data.registryData),self.applyCallbacks(cacheKey,data.registryData),self.requestCache[cacheKey]=void 0}))),this.addCallbackToQueue(callback,cacheKey),this.requestCache[cacheKey]},DataRegistry.prototype.addCallbackToQueue=function(callback,key){void 0===this.callbackCache[key]&&(this.callbackCache[key]=[]),this.callbackCache[key].push(callback)},DataRegistry.prototype.applyCallbacks=function(key,registryData){if(void 0!==this.callbackCache[key]){for(var i=this.callbackCache[key].length-1;i>=0;i--)this.callbackCache[key][i](registryData);delete this.callbackCache[key]}},DataRegistry.prototype.storeData=function(plugin,type,subtype,data){void 0===this.data[plugin]&&(this.data[plugin]={}),void 0===this.data[plugin][type]&&(this.data[plugin][type]={});var dataItem={timestamp:Date.now(),data:data};this.data[plugin][type][subtype]=dataItem},DataRegistry.prototype.clearCache=function(plugin,type){void 0!==this.data[plugin]&&void 0!==this.data[plugin][type]&&(this.data[plugin][type]=void 0)},DataRegistry.prototype.getLocalizationString=function($formElement,plugin,key,callback){this.get($formElement,plugin,"localization",null,(function(data){void 0===data[key]?callback(key):callback(data[key])}))},DataRegistry.prototype.localizationUpdated=function(plugin,params){$.oc.builder.localizationInput.updatePluginInputs(plugin),void 0!==params&¶ms.suppressLanguageEditorUpdate||$.oc.builder.indexController.entityControllers.localization.languageUpdated(plugin),$.oc.builder.indexController.entityControllers.localization.updateOnScreenStrings(plugin)},$.oc.builder.dataRegistry=new DataRegistry}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.foundation.base,BaseProto=Base.prototype,EntityBase=function(typeName,indexController){if(void 0===typeName)throw new Error("The Builder entity type name should be set in the base constructor call.");if(void 0===indexController)throw new Error("The Builder index controller should be set when creating an entity controller.");this.typeName=typeName,this.indexController=indexController,Base.call(this)};(EntityBase.prototype=Object.create(BaseProto)).constructor=EntityBase,EntityBase.prototype.registerHandlers=function(){},EntityBase.prototype.invokeCommand=function(command,ev){if(!/^cmd[a-zA-Z0-9]+$/.test(command))throw new Error("Invalid command: "+command);if(void 0===this[command])throw new Error("Unknown command: "+command);this[command].apply(this,[ev])},EntityBase.prototype.newTabId=function(){return this.typeName+Math.random()},EntityBase.prototype.makeTabId=function(objectName){return this.typeName+"-"+objectName},EntityBase.prototype.getMasterTabsActivePane=function(){return this.indexController.getMasterTabActivePane()},EntityBase.prototype.getMasterTabsObject=function(){return this.indexController.masterTabsObj},EntityBase.prototype.getSelectedPlugin=function(){return $("#PluginList-pluginList-plugin-list > ul > li.active").data("id")},EntityBase.prototype.getIndexController=function(){return this.indexController},EntityBase.prototype.updateMasterTabIdAndTitle=function($tabPane,responseData){var tabsObject=this.getMasterTabsObject();tabsObject.updateIdentifier($tabPane,responseData.tabId),tabsObject.updateTitle($tabPane,responseData.tabTitle)},EntityBase.prototype.unhideFormDeleteButton=function($tabPane){$("[data-control=delete-button]",$tabPane).removeClass("hide oc-hide")},EntityBase.prototype.forceCloseTab=function($tabPane){$tabPane.trigger("close.oc.tab",[{force:!0}])},EntityBase.prototype.unmodifyTab=function($tabPane){this.indexController.unchangeTab($tabPane)},$.oc.builder.entityControllers.base=EntityBase}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Plugin=function(indexController){Base.call(this,"plugin",indexController),this.popupZIndex=5050};(Plugin.prototype=Object.create(BaseProto)).constructor=Plugin,Plugin.prototype.cmdMakePluginActive=function(ev){var selectedPluginCode=$(ev.currentTarget).data("pluginCode");this.makePluginActive(selectedPluginCode)},Plugin.prototype.cmdCreatePlugin=function(ev){var $target=$(ev.currentTarget);$target.one("shown.oc.popup",this.proxy(this.onPluginPopupShown)),$target.popup({handler:"onPluginLoadPopup",zIndex:this.popupZIndex})},Plugin.prototype.cmdApplyPluginSettings=function(ev){var $form=$(ev.currentTarget),self=this;$.oc.stripeLoadIndicator.show(),$form.request("onPluginSave").always($.oc.builder.indexController.hideStripeIndicatorProxy).done((function(data){$form.trigger("close.oc.popup"),self.applyPluginSettingsDone(data)}))},Plugin.prototype.cmdEditPluginSettings=function(ev){var $target=$(ev.currentTarget);$target.one("shown.oc.popup",this.proxy(this.onPluginPopupShown)),$target.popup({handler:"onPluginLoadPopup",zIndex:this.popupZIndex,extraData:{pluginCode:$target.data("pluginCode")}})},Plugin.prototype.onPluginPopupShown=function(ev,button,popup){$(popup).find("input[name=name]").focus()},Plugin.prototype.applyPluginSettingsDone=function(data){void 0!==data.responseData&&void 0!==data.responseData.isNewPlugin&&this.makePluginActive(data.responseData.pluginCode,!0)},Plugin.prototype.makePluginActive=function(pluginCode,updatePluginList){var $form=$("#builder-plugin-selector-panel form").first();$.oc.stripeLoadIndicator.show(),$form.request("onPluginSetActive",{data:{pluginCode:pluginCode,updatePluginList:updatePluginList?1:0}}).always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.makePluginActiveDone))},Plugin.prototype.makePluginActiveDone=function(data){var pluginCode=data.responseData.pluginCode;$("#builder-plugin-selector-panel [data-control=filelist]").fileList("markActive",pluginCode)},$.oc.builder.entityControllers.plugin=Plugin}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,DatabaseTable=function(indexController){Base.call(this,"databaseTable",indexController)};(DatabaseTable.prototype=Object.create(BaseProto)).constructor=DatabaseTable,DatabaseTable.prototype.cmdCreateTable=function(ev){var result=this.indexController.openOrLoadMasterTab($(ev.target),"onDatabaseTableCreateOrOpen",this.newTabId());!1!==result&&result.done(this.proxy(this.onTableLoaded,this))},DatabaseTable.prototype.cmdOpenTable=function(ev){var table=$(ev.currentTarget).data("id"),result=this.indexController.openOrLoadMasterTab($(ev.target),"onDatabaseTableCreateOrOpen",this.makeTabId(table),{table_name:table});!1!==result&&result.done(this.proxy(this.onTableLoaded,this))},DatabaseTable.prototype.cmdSaveTable=function(ev){var $target=$(ev.currentTarget);if(this.validateTable($target)){var data={columns:this.getTableData($target)};$target.popup({extraData:data,handler:"onDatabaseTableValidateAndShowPopup"})}},DatabaseTable.prototype.cmdSaveMigration=function(ev){var $target=$(ev.currentTarget);$.oc.stripeLoadIndicator.show(),$target.request("onDatabaseTableMigrationApply").always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.saveMigrationDone))},DatabaseTable.prototype.cmdDeleteTable=function(ev){var $target=$(ev.currentTarget);$.oc.confirm($target.data("confirm"),this.proxy(this.deleteConfirmed))},DatabaseTable.prototype.cmdUnModifyForm=function(){var $masterTabPane=this.getMasterTabsActivePane();this.unmodifyTab($masterTabPane)},DatabaseTable.prototype.cmdAddIdColumn=function(ev){var $target=$(ev.currentTarget);this.addIdColumn($target)||alert($target.closest("form").attr("data-lang-id-exists"))},DatabaseTable.prototype.cmdAddTimestamps=function(ev){var $target=$(ev.currentTarget);this.addTimeStampColumns($target,["created_at","updated_at"])||alert($target.closest("form").attr("data-lang-timestamps-exist"))},DatabaseTable.prototype.cmdAddSoftDelete=function(ev){var $target=$(ev.currentTarget);this.addTimeStampColumns($target,["deleted_at"])||alert($target.closest("form").attr("data-lang-soft-deleting-exist"))},DatabaseTable.prototype.onTableCellChanged=function(ev,column,value,rowIndex){var $target=$(ev.target);if("columns"==$target.data("alias")&&"database"==$target.closest("form").data("entity")){var updatedRow={};"auto_increment"==column&&value&&(updatedRow.unsigned=1,updatedRow.primary_key=1),"unsigned"!=column||value||(updatedRow.auto_increment=0),"primary_key"==column&&value&&(updatedRow.allow_null=0),"allow_null"==column&&value&&(updatedRow.primary_key=0),"primary_key"!=column||value||(updatedRow.auto_increment=0),$target.table("setRowValues",rowIndex,updatedRow)}},DatabaseTable.prototype.onTableLoaded=function(){$(document).trigger("render");var $masterTabPane=this.getMasterTabsActivePane(),$form=$masterTabPane.find("form"),$toolbar=$masterTabPane.find("div[data-control=table] div.toolbar"),$addIdButton=$('<a class="btn oc-icon-hashtag builder-custom-table-button" data-builder-command="databaseTable:cmdAddIdColumn"></a>'),$addTimestampsButton=$('<a class="btn oc-icon-clock-o builder-custom-table-button" data-builder-command="databaseTable:cmdAddTimestamps"></a>'),$addSoftDeleteButton=$('<a class="btn oc-icon-refresh builder-custom-table-button" data-builder-command="databaseTable:cmdAddSoftDelete"></a>');$addIdButton.text($form.attr("data-lang-add-id")),$toolbar.append($addIdButton),$addTimestampsButton.text($form.attr("data-lang-add-timestamps")),$toolbar.append($addTimestampsButton),$addSoftDeleteButton.text($form.attr("data-lang-add-soft-delete")),$toolbar.append($addSoftDeleteButton)},DatabaseTable.prototype.registerHandlers=function(){this.indexController.$masterTabs.on("oc.tableCellChanged",this.proxy(this.onTableCellChanged))},DatabaseTable.prototype.validateTable=function($target){var tableObj=this.getTableControlObject($target);return tableObj.unfocusTable(),tableObj.validate()},DatabaseTable.prototype.getTableData=function($target){return this.getTableControlObject($target).dataSource.getAllData()},DatabaseTable.prototype.getTableControlObject=function($target){var tableObj=$target.closest("form").find("[data-control=table]").data("oc.table");if(!tableObj)throw new Error("Table object is not found on the database table tab");return tableObj},DatabaseTable.prototype.saveMigrationDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");$("#builderTableMigrationPopup").trigger("close.oc.popup");var $masterTabPane=this.getMasterTabsActivePane();this.getMasterTabsObject();"delete"!=data.builderResponseData.operation?($masterTabPane.find("input[name=table_name]").val(data.builderResponseData.builderObjectName),this.updateMasterTabIdAndTitle($masterTabPane,data.builderResponseData),this.unhideFormDeleteButton($masterTabPane),this.getTableList().fileList("markActive",data.builderResponseData.tabId),this.getIndexController().unchangeTab($masterTabPane),this.updateTable(data.builderResponseData)):this.forceCloseTab($masterTabPane),$.oc.builder.dataRegistry.clearCache(data.builderResponseData.pluginCode,"model-columns")},DatabaseTable.prototype.getTableList=function(){return $("#layout-side-panel form[data-content-id=database] [data-control=filelist]")},DatabaseTable.prototype.deleteConfirmed=function(){this.getMasterTabsActivePane().find("form").popup({handler:"onDatabaseTableShowDeletePopup"})},DatabaseTable.prototype.getColumnNames=function($target){this.getTableControlObject($target).unfocusTable();var data=this.getTableData($target),result=[];for(var index in data)void 0!==data[index].name&&result.push($.trim(data[index].name));return result},DatabaseTable.prototype.addIdColumn=function($target){var added=!1;if(-1===this.getColumnNames($target).indexOf("id")){var tableObj=this.getTableControlObject($target),currentData=this.getTableData($target);(currentData.length-1||currentData[0].name||currentData[0].type||currentData[0].length||currentData[0].unsigned||currentData[0].nullable||currentData[0].auto_increment||currentData[0].primary_key||currentData[0].default)&&tableObj.addRecord("bottom",!0),tableObj.setRowValues(currentData.length-1,{name:"id",type:"integer",unsigned:!0,auto_increment:!0,primary_key:!0}),tableObj.addRecord("bottom",!1),tableObj.deleteRecord(),added=!0}return added&&$target.trigger("change"),added},DatabaseTable.prototype.addTimeStampColumns=function($target,columns){var existingColumns=this.getColumnNames($target),added=!1;for(var index in columns){var column=columns[index];-1===existingColumns.indexOf(column)&&(this.addTimeStampColumn($target,column),added=!0)}return added&&$target.trigger("change"),added},DatabaseTable.prototype.addTimeStampColumn=function($target,column){var tableObj=this.getTableControlObject($target),currentData=this.getTableData($target),rowData={name:column,type:"timestamp",default:null,allow_null:!0};tableObj.addRecord("bottom",!0),tableObj.setRowValues(currentData.length-1,rowData),tableObj.addRecord("bottom",!1),tableObj.deleteRecord()},DatabaseTable.prototype.updateTable=function(data){var tabsObject=this.getMasterTabsObject(),tab=$("#builder-master-tabs").data("oc.tab").findByIdentifier(data.tabId);tabsObject.updateTab(tab,data.tableName,data.tab),this.onTableLoaded()},$.oc.builder.entityControllers.databaseTable=DatabaseTable}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Model=function(indexController){Base.call(this,"model",indexController)};(Model.prototype=Object.create(BaseProto)).constructor=Model,Model.prototype.cmdCreateModel=function(ev){var $target=$(ev.currentTarget);$target.one("shown.oc.popup",this.proxy(this.onModelPopupShown)),$target.popup({handler:"onModelLoadPopup"})},Model.prototype.cmdApplyModelSettings=function(ev){var $form=$(ev.currentTarget),self=this;$.oc.stripeLoadIndicator.show(),$form.request("onModelSave").always($.oc.builder.indexController.hideStripeIndicatorProxy).done((function(data){$form.trigger("close.oc.popup"),self.applyModelSettingsDone(data)}))},Model.prototype.onModelPopupShown=function(ev,button,popup){$(popup).find("input[name=className]").focus()},Model.prototype.applyModelSettingsDone=function(data){if(void 0!==data.builderResponseData.registryData){var registryData=data.builderResponseData.registryData;$.oc.builder.dataRegistry.set(registryData.pluginCode,"model-classes",null,registryData.models)}},$.oc.builder.entityControllers.model=Model}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,ModelForm=function(indexController){Base.call(this,"modelForm",indexController)};(ModelForm.prototype=Object.create(BaseProto)).constructor=ModelForm,ModelForm.prototype.cmdCreateForm=function(ev){var $link=$(ev.currentTarget),data={model_class:$link.data("modelClass")};this.indexController.openOrLoadMasterTab($link,"onModelFormCreateOrOpen",this.newTabId(),data)},ModelForm.prototype.cmdSaveForm=function(ev){var $target=$(ev.currentTarget),$form=$target.closest("form"),$rootContainer=$("[data-root-control-wrapper] > [data-control-container]",$form),$inspectorContainer=$form.find(".inspector-container"),controls=$.oc.builder.formbuilder.domToPropertyJson.convert($rootContainer.get(0));if($.oc.inspector.manager.applyValuesFromContainer($inspectorContainer))if(!1!==controls){var data={controls:controls};$target.request("onModelFormSave",{data:data}).done(this.proxy(this.saveFormDone))}else $.oc.flashMsg({text:$.oc.builder.formbuilder.domToPropertyJson.getLastError(),class:"error",interval:5})},ModelForm.prototype.cmdAddDatabaseFields=function(ev){var $target=$(ev.currentTarget),$placeholder=this.getMasterTabsActivePane().find(".builder-control-list .control.oc-placeholder:first")[0],fields=$target.find(".control-table").data("oc.table").dataSource.data.filter((function(column){return column.add})).reverse();$target.closest(".control-popup").data("oc.popup").hide(),$.oc.stripeLoadIndicator.show();var allFields=$.when({});$.each(fields,(function(index,field){allFields=allFields.then(function(field){return function(){var defer=$.Deferred();return $.oc.builder.formbuilder.controller.addControlToPlaceholder($placeholder,field.type,field.label?field.label:field.column,!1,field.column).always((function(){defer.resolve()})),defer.promise()}}(field))})),$.when(allFields).always($.oc.builder.indexController.hideStripeIndicatorProxy)},ModelForm.prototype.cmdOpenForm=function(ev){var form=$(ev.currentTarget).data("form"),model=$(ev.currentTarget).data("modelClass");this.indexController.openOrLoadMasterTab($(ev.target),"onModelFormCreateOrOpen",this.makeTabId(model+"-"+form),{file_name:form,model_class:model})},ModelForm.prototype.cmdDeleteForm=function(ev){var $target=$(ev.currentTarget);$.oc.confirm($target.data("confirm"),this.proxy(this.deleteConfirmed))},ModelForm.prototype.cmdAddControl=function(ev){$.oc.builder.formbuilder.controlPalette.addControl(ev)},ModelForm.prototype.cmdUndockControlPalette=function(ev){$.oc.builder.formbuilder.controlPalette.undockFromContainer(ev)},ModelForm.prototype.cmdDockControlPalette=function(ev){$.oc.builder.formbuilder.controlPalette.dockToContainer(ev)},ModelForm.prototype.cmdCloseControlPalette=function(ev){$.oc.builder.formbuilder.controlPalette.closeInContainer(ev)},ModelForm.prototype.saveFormDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();$masterTabPane.find("input[name=file_name]").val(data.builderResponseData.builderObjectName),this.updateMasterTabIdAndTitle($masterTabPane,data.builderResponseData),this.unhideFormDeleteButton($masterTabPane),this.getModelList().fileList("markActive",data.builderResponseData.tabId),this.getIndexController().unchangeTab($masterTabPane),this.updateDataRegistry(data)},ModelForm.prototype.updateDataRegistry=function(data){if(void 0!==data.builderResponseData.registryData){var registryData=data.builderResponseData.registryData;$.oc.builder.dataRegistry.set(registryData.pluginCode,"model-forms",registryData.modelClass,registryData.forms)}},ModelForm.prototype.deleteConfirmed=function(){var $form=this.getMasterTabsActivePane().find("form");$.oc.stripeLoadIndicator.show(),$form.request("onModelFormDelete").always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.deleteDone))},ModelForm.prototype.deleteDone=function(data){var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),this.forceCloseTab($masterTabPane),this.updateDataRegistry(data)},ModelForm.prototype.getModelList=function(){return $("#layout-side-panel form[data-content-id=models] [data-control=filelist]")},$.oc.builder.entityControllers.modelForm=ModelForm}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,ModelList=function(indexController){this.cachedModelFieldsPromises={},Base.call(this,"modelList",indexController)};(ModelList.prototype=Object.create(BaseProto)).constructor=ModelList,ModelList.prototype.registerHandlers=function(){$(document).on("autocompleteitems.oc.table",'form[data-sub-entity="model-list"] [data-control=table]',this.proxy(this.onAutocompleteItems))},ModelList.prototype.cmdCreateList=function(ev){var $link=$(ev.currentTarget),data={model_class:$link.data("modelClass")},result=this.indexController.openOrLoadMasterTab($link,"onModelListCreateOrOpen",this.newTabId(),data);!1!==result&&result.done(this.proxy(this.onListLoaded,this))},ModelList.prototype.cmdSaveList=function(ev){var $target=$(ev.currentTarget);$target.closest("form");this.validateTable($target)&&$target.request("onModelListSave",{data:{columns:this.getTableData($target)}}).done(this.proxy(this.saveListDone))},ModelList.prototype.cmdOpenList=function(ev){var list=$(ev.currentTarget).data("list"),model=$(ev.currentTarget).data("modelClass"),result=this.indexController.openOrLoadMasterTab($(ev.target),"onModelListCreateOrOpen",this.makeTabId(model+"-"+list),{file_name:list,model_class:model});!1!==result&&result.done(this.proxy(this.onListLoaded,this))},ModelList.prototype.cmdDeleteList=function(ev){var $target=$(ev.currentTarget);$.oc.confirm($target.data("confirm"),this.proxy(this.deleteConfirmed))},ModelList.prototype.cmdAddDatabaseColumns=function(ev){var $target=$(ev.currentTarget);$.oc.stripeLoadIndicator.show(),$target.request("onModelListLoadDatabaseColumns").done(this.proxy(this.databaseColumnsLoaded)).always($.oc.builder.indexController.hideStripeIndicatorProxy)},ModelList.prototype.saveListDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();$masterTabPane.find("input[name=file_name]").val(data.builderResponseData.builderObjectName),this.updateMasterTabIdAndTitle($masterTabPane,data.builderResponseData),this.unhideFormDeleteButton($masterTabPane),this.getModelList().fileList("markActive",data.builderResponseData.tabId),this.getIndexController().unchangeTab($masterTabPane),this.updateDataRegistry(data)},ModelList.prototype.deleteConfirmed=function(){var $form=this.getMasterTabsActivePane().find("form");$.oc.stripeLoadIndicator.show(),$form.request("onModelListDelete").always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.deleteDone))},ModelList.prototype.deleteDone=function(data){var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),this.forceCloseTab($masterTabPane),this.updateDataRegistry(data)},ModelList.prototype.getTableControlObject=function($target){var tableObj=$target.closest("form").find("[data-control=table]").data("oc.table");if(!tableObj)throw new Error("Table object is not found on the model list tab");return tableObj},ModelList.prototype.getModelList=function(){return $("#layout-side-panel form[data-content-id=models] [data-control=filelist]")},ModelList.prototype.validateTable=function($target){var tableObj=this.getTableControlObject($target);return tableObj.unfocusTable(),tableObj.validate()},ModelList.prototype.getTableData=function($target){return this.getTableControlObject($target).dataSource.getAllData()},ModelList.prototype.loadModelFields=function(table,callback){var $form=$(table).closest("form"),modelClass=$form.find("input[name=model_class]").val(),cachedFields=$form.data("oc.model-field-cache");void 0===cachedFields?(void 0===this.cachedModelFieldsPromises[modelClass]&&(this.cachedModelFieldsPromises[modelClass]=$form.request("onModelFormGetModelFields",{data:{as_plain_list:1}})),void 0!==callback&&this.cachedModelFieldsPromises[modelClass].done((function(data){$form.data("oc.model-field-cache",data.responseData.options),callback(data.responseData.options)}))):callback(cachedFields)},ModelList.prototype.updateDataRegistry=function(data){if(void 0!==data.builderResponseData.registryData){var registryData=data.builderResponseData.registryData;$.oc.builder.dataRegistry.set(registryData.pluginCode,"model-lists",registryData.modelClass,registryData.lists),$.oc.builder.dataRegistry.clearCache(registryData.pluginCode,"plugin-lists")}},ModelList.prototype.databaseColumnsLoaded=function(data){$.isArray(data.responseData.columns)||alert("Invalid server response");var $form=this.getMasterTabsActivePane().find("form"),existingColumns=this.getColumnNames($form),columnsAdded=!1;for(var i in data.responseData.columns){var column=data.responseData.columns[i],type=this.mapType(column.type);-1===$.inArray(column.name,existingColumns)&&(this.addColumn($form,column.name,type),columnsAdded=!0)}columnsAdded?$form.trigger("change"):alert($form.attr("data-lang-all-database-columns-exist"))},ModelList.prototype.mapType=function(type){switch(type){case"integer":return"number";case"timestamp":return"datetime";default:return"text"}},ModelList.prototype.addColumn=function($target,column,type){var tableObj=this.getTableControlObject($target),currentData=this.getTableData($target),rowData={field:column,label:column,type:type};tableObj.addRecord("bottom",!0),tableObj.setRowValues(currentData.length-1,rowData),tableObj.addRecord("bottom",!1),tableObj.deleteRecord()},ModelList.prototype.getColumnNames=function($target){this.getTableControlObject($target).unfocusTable();var data=this.getTableData($target),result=[];for(var index in data)void 0!==data[index].field&&result.push($.trim(data[index].field));return result},ModelList.prototype.onAutocompleteItems=function(ev,data){if("model-fields"===data.columnConfiguration.fillFrom)return ev.preventDefault(),this.loadModelFields(ev.target,data.callback),!1},ModelList.prototype.onListLoaded=function(){$(document).trigger("render");var $masterTabPane=this.getMasterTabsActivePane(),$form=$masterTabPane.find("form"),$toolbar=$masterTabPane.find("div[data-control=table] div.toolbar"),$button=$('<a class="btn oc-icon-magic builder-custom-table-button" data-builder-command="modelList:cmdAddDatabaseColumns"></a>');$button.text($form.attr("data-lang-add-database-columns")),$toolbar.append($button)},$.oc.builder.entityControllers.modelList=ModelList}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Permission=function(indexController){Base.call(this,"permissions",indexController)};(Permission.prototype=Object.create(BaseProto)).constructor=Permission,Permission.prototype.registerHandlers=function(){this.indexController.$masterTabs.on("oc.tableNewRow",this.proxy(this.onTableRowCreated))},Permission.prototype.cmdOpenPermissions=function(ev){var currentPlugin=this.getSelectedPlugin();currentPlugin?this.indexController.openOrLoadMasterTab($(ev.target),"onPermissionsOpen",this.makeTabId(currentPlugin)):alert("Please select a plugin first")},Permission.prototype.cmdSavePermissions=function(ev){var $target=$(ev.currentTarget);$target.closest("form");this.validateTable($target)&&$target.request("onPermissionsSave",{data:{permissions:this.getTableData($target)}}).done(this.proxy(this.savePermissionsDone))},Permission.prototype.getTableControlObject=function($target){var tableObj=$target.closest("form").find("[data-control=table]").data("oc.table");if(!tableObj)throw new Error("Table object is not found on permissions tab");return tableObj},Permission.prototype.validateTable=function($target){var tableObj=this.getTableControlObject($target);return tableObj.unfocusTable(),tableObj.validate()},Permission.prototype.getTableData=function($target){return this.getTableControlObject($target).dataSource.getAllData()},Permission.prototype.savePermissionsDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),$.oc.builder.dataRegistry.clearCache(data.builderResponseData.pluginCode,"permissions")},Permission.prototype.onTableRowCreated=function(ev,recordData){var $target=$(ev.target);if("permissions"==$target.data("alias")){var $form=$target.closest("form");if("permissions"==$form.data("entity")){var pluginCode=$form.find("input[name=plugin_code]").val();recordData.permission=pluginCode.toLowerCase()+"."}}},$.oc.builder.entityControllers.permission=Permission}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Menus=function(indexController){Base.call(this,"menus",indexController)};(Menus.prototype=Object.create(BaseProto)).constructor=Menus,Menus.prototype.cmdOpenMenus=function(ev){var currentPlugin=this.getSelectedPlugin();currentPlugin?this.indexController.openOrLoadMasterTab($(ev.target),"onMenusOpen",this.makeTabId(currentPlugin)):alert("Please select a plugin first")},Menus.prototype.cmdSaveMenus=function(ev){var $target=$(ev.currentTarget),$form=$target.closest("form"),$inspectorContainer=$form.find(".inspector-container");if($.oc.inspector.manager.applyValuesFromContainer($inspectorContainer)){var menus=$.oc.builder.menubuilder.controller.getJson($form.get(0));$target.request("onMenusSave",{data:{menus:menus}}).done(this.proxy(this.saveMenusDone))}},Menus.prototype.cmdAddMainMenuItem=function(ev){$.oc.builder.menubuilder.controller.addMainMenuItem(ev)},Menus.prototype.cmdAddSideMenuItem=function(ev){$.oc.builder.menubuilder.controller.addSideMenuItem(ev)},Menus.prototype.cmdDeleteMenuItem=function(ev){$.oc.builder.menubuilder.controller.deleteMenuItem(ev)},Menus.prototype.saveMenusDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();$.oc.mainMenu&&data.mainMenu&&data.mainMenuLeft&&$.oc.mainMenu.reload(data.mainMenu,data.mainMenuLeft),this.getIndexController().unchangeTab($masterTabPane)},$.oc.builder.entityControllers.menus=Menus}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Imports=function(indexController){Base.call(this,"imports",indexController)};(Imports.prototype=Object.create(BaseProto)).constructor=Imports,Imports.prototype.cmdOpenImports=function(ev){var currentPlugin=this.getSelectedPlugin();currentPlugin?this.indexController.openOrLoadMasterTab($(ev.target),"onImportsOpen",this.makeTabId(currentPlugin)):alert("Please select a plugin first")},Imports.prototype.cmdConfirmImports=function(ev){$(ev.currentTarget).popup({handler:"onImportsShowConfirmPopup"})},Imports.prototype.cmdSaveImports=function(ev){var $form=this.getMasterTabsActivePane().find("form"),$popup=$(ev.currentTarget).closest(".control-popup");$popup.removeClass("show").popup("setLoading",!0),$form.request("onImportsSave",{data:oc.serializeJSON($popup.get(0))}).done((data=>{$popup.trigger("close.oc.popup"),this.saveImportsDone(data)})).fail((()=>{$popup.addClass("show").popup("setLoading",!1).popup("setShake")}))},Imports.prototype.cmdMigrateDatabase=function(ev){$(ev.currentTarget).request("onMigrateDatabase")},Imports.prototype.cmdAddBlueprintItem=function(ev){},Imports.prototype.cmdRemoveBlueprintItem=function(ev){},Imports.prototype.saveImportsDone=function(data){this.hideInspector(),$("#blueprintList").html(""),$.oc.mainMenu&&data&&data.mainMenu&&data.mainMenuLeft&&$.oc.mainMenu.reload(data.mainMenu,data.mainMenuLeft);var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane)},Imports.prototype.hideInspector=function(){var $container=$(".blueprint-container.inspector-open:first");if($container.length){var $inspectorContainer=this.findInspectorContainer($container);$.oc.foundation.controlUtils.disposeControls($inspectorContainer.get(0))}},Imports.prototype.findInspectorContainer=function($element){return $element.closest("[data-inspector-container]").find(".inspector-container")},$.oc.builder.entityControllers.imports=Imports}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Code=function(indexController){Base.call(this,"code",indexController)};(Code.prototype=Object.create(BaseProto)).constructor=Code,Code.prototype.registerHandlers=function(){},Code.prototype.cmdCreateCode=function(ev){this.indexController.openOrLoadMasterTab($(ev.target),"onCodeOpen",this.newTabId())},Code.prototype.cmdOpenCode=function(ev){var path=$(ev.currentTarget).data("path"),pluginCode=$(ev.currentTarget).data("pluginCode"),result=this.indexController.openOrLoadMasterTab($(ev.target),"onCodeOpen",this.makeTabId(pluginCode+"-"+path),{fileName:path});!1!==result&&result.done(this.proxy(this.updateFormEditorMode,this))},Code.prototype.cmdSaveCode=function(ev){var $target=$(ev.currentTarget),$inspectorContainer=$target.closest("form").find(".inspector-container");$.oc.inspector.manager.applyValuesFromContainer($inspectorContainer)&&$target.request("onCodeSave").done(this.proxy(this.saveCodeDone))},Code.prototype.saveCodeDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),this.updateFormEditorMode()},Code.prototype.getCodeList=function(){return $("#layout-side-panel form[data-content-id=code] .control-codelist")},Code.prototype.updateFormEditorMode=function(){var $masterTabPane=this.getMasterTabsActivePane(),modes={css:"css",htm:"html",html:"html",js:"javascript",json:"json",less:"less",md:"markdown",sass:"sass",scss:"scss",txt:"plain_text",yaml:"yaml",xml:"xml",php:"php"},parts=$("input[name=fileName]",$masterTabPane).val().split("."),extension="txt",mode="plain_text",editor=$("[data-control=codeeditor]",$masterTabPane);parts.length>=2&&(extension=parts.pop().toLowerCase()),void 0!==modes[extension]&&(mode=modes[extension]);window.setTimeout((function(){editor.data("oc.codeEditor").editor.getSession().setMode({path:"ace/mode/"+mode})}),200)},$.oc.builder.entityControllers.code=Code}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Version=function(indexController){Base.call(this,"version",indexController),this.hiddenHints={}};(Version.prototype=Object.create(BaseProto)).constructor=Version,Version.prototype.cmdCreateVersion=function(ev){var $link=$(ev.currentTarget),versionType=$link.data("versionType");this.indexController.openOrLoadMasterTab($link,"onVersionCreateOrOpen",this.newTabId(),{version_type:versionType})},Version.prototype.cmdSaveVersion=function(ev){var $target=$(ev.currentTarget);$target.closest("form");$target.request("onVersionSave").done(this.proxy(this.saveVersionDone))},Version.prototype.cmdOpenVersion=function(ev){var versionNumber=$(ev.currentTarget).data("id"),pluginCode=$(ev.currentTarget).data("pluginCode");this.indexController.openOrLoadMasterTab($(ev.target),"onVersionCreateOrOpen",this.makeTabId(pluginCode+"-"+versionNumber),{original_version:versionNumber})},Version.prototype.cmdDeleteVersion=function(ev){var $target=$(ev.currentTarget);$.oc.confirm($target.data("confirm"),this.proxy(this.deleteConfirmed))},Version.prototype.cmdApplyVersion=function(ev){var $target=$(ev.currentTarget),$pane=$target.closest("div.tab-pane"),self=this;this.showHintPopup($pane,"builder-version-apply",(function(){$target.request("onVersionApply").done(self.proxy(self.applyVersionDone))}))},Version.prototype.cmdRollbackVersion=function(ev){var $target=$(ev.currentTarget),$pane=$target.closest("div.tab-pane"),self=this;this.showHintPopup($pane,"builder-version-rollback",(function(){$target.request("onVersionRollback").done(self.proxy(self.rollbackVersionDone))}))},Version.prototype.saveVersionDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.updateUiAfterSave($masterTabPane,data),data.builderResponseData.isApplied||this.showSavedNotAppliedHint($masterTabPane)},Version.prototype.showSavedNotAppliedHint=function($masterTabPane){this.showHintPopup($masterTabPane,"builder-version-save-unapplied")},Version.prototype.showHintPopup=function($masterTabPane,code,callback){this.getDontShowHintAgain(code,$masterTabPane)?callback&&callback.apply(this):($masterTabPane.one("hide.oc.popup",this.proxy(this.onHintPopupHide)),callback&&$masterTabPane.one("shown.oc.popup",(function(ev,$element,$modal){$modal.find("form").one("submit",(function(ev){return callback.apply(this),ev.preventDefault(),$(ev.target).trigger("close.oc.popup"),!1}))})),$masterTabPane.popup({content:this.getPopupContent($masterTabPane,code)}))},Version.prototype.onHintPopupHide=function(ev,$element,$modal){var cbValue=$modal.find("input[type=checkbox][name=dont_show_again]").is(":checked"),code=$modal.find("input[type=hidden][name=hint_code]").val();($modal.find("form").off("submit"),cbValue)&&(this.getMasterTabsActivePane().find('form[data-entity="versions"]').request("onHideBackendHint",{data:{name:code}}),this.setDontShowHintAgain(code))},Version.prototype.setDontShowHintAgain=function(code){this.hiddenHints[code]=!0},Version.prototype.getDontShowHintAgain=function(code,$pane){return void 0!==this.hiddenHints[code]?this.hiddenHints[code]:"true"==$pane.find('input[type=hidden][data-hint-hidden="'+code+'"]').val()},Version.prototype.getPopupContent=function($pane,code){var template=$pane.find('script[data-version-hint-template="'+code+'"]');if(0===template.length)throw new Error("Version popup template not found: "+code);return template.html()},Version.prototype.updateUiAfterSave=function($masterTabPane,data){$masterTabPane.find("input[name=original_version]").val(data.builderResponseData.savedVersion),this.updateMasterTabIdAndTitle($masterTabPane,data.builderResponseData),this.unhideFormDeleteButton($masterTabPane),this.getVersionList().fileList("markActive",data.builderResponseData.tabId),this.getIndexController().unchangeTab($masterTabPane)},Version.prototype.deleteConfirmed=function(){var $form=this.getMasterTabsActivePane().find("form");$.oc.stripeLoadIndicator.show(),$form.request("onVersionDelete").always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.deleteDone))},Version.prototype.deleteDone=function(){var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),this.forceCloseTab($masterTabPane)},Version.prototype.applyVersionDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.updateUiAfterSave($masterTabPane,data),this.updateVersionsButtons()},Version.prototype.rollbackVersionDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.updateUiAfterSave($masterTabPane,data),this.updateVersionsButtons()},Version.prototype.getVersionList=function(){return $("#layout-side-panel form[data-content-id=version] [data-control=filelist]")},Version.prototype.updateVersionsButtons=function(){for(var tabsObject=this.getMasterTabsObject(),$tabs=tabsObject.$tabsContainer.find("> li"),$versionList=this.getVersionList(),i=$tabs.length-1;i>=0;i--){var $tab=$($tabs[i]),tabId=$tab.data("tabId");if(tabId&&0!=String(tabId).length){var $versionLi=$versionList.find('li[data-id="'+tabId+'"]');if($versionLi.length){var isApplied=$versionLi.data("applied"),$pane=tabsObject.findPaneFromTab($tab);isApplied?($pane.find('[data-builder-command="version:cmdApplyVersion"]').addClass("hide oc-hide"),$pane.find('[data-builder-command="version:cmdRollbackVersion"]').removeClass("hide oc-hide")):($pane.find('[data-builder-command="version:cmdApplyVersion"]').removeClass("hide oc-hide"),$pane.find('[data-builder-command="version:cmdRollbackVersion"]').addClass("hide oc-hide"))}}}},$.oc.builder.entityControllers.version=Version}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Localization=function(indexController){Base.call(this,"localization",indexController)};(Localization.prototype=Object.create(BaseProto)).constructor=Localization,Localization.prototype.cmdCreateLanguage=function(ev){this.indexController.openOrLoadMasterTab($(ev.target),"onLanguageCreateOrOpen",this.newTabId())},Localization.prototype.cmdOpenLanguage=function(ev){var language=$(ev.currentTarget).data("id"),pluginCode=$(ev.currentTarget).data("pluginCode");this.indexController.openOrLoadMasterTab($(ev.target),"onLanguageCreateOrOpen",this.makeTabId(pluginCode+"-"+language),{original_language:language})},Localization.prototype.cmdSaveLanguage=function(ev){var $target=$(ev.currentTarget);$target.closest("form");$target.request("onLanguageSave").done(this.proxy(this.saveLanguageDone))},Localization.prototype.cmdDeleteLanguage=function(ev){var $target=$(ev.currentTarget);$.oc.confirm($target.data("confirm"),this.proxy(this.deleteConfirmed))},Localization.prototype.cmdCopyMissingStrings=function(ev){var $form=$(ev.currentTarget),language=$form.find("select[name=language]").val(),$masterTabPane=this.getMasterTabsActivePane();$form.trigger("close.oc.popup"),$.oc.stripeLoadIndicator.show(),$masterTabPane.find("form").request("onLanguageCopyStringsFrom",{data:{copy_from:language}}).always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.copyStringsFromDone))},Localization.prototype.languageUpdated=function(plugin){var languageForm=this.findDefaultLanguageForm(plugin);if(languageForm){var $languageForm=$(languageForm);$languageForm.hasClass("oc-data-changed")?this.mergeLanguageFromServer($languageForm):this.updateLanguageFromServer($languageForm)}},Localization.prototype.updateOnScreenStrings=function(plugin){var stringElements=document.body.querySelectorAll('span[data-localization-key][data-plugin="'+plugin+'"]');$.oc.builder.dataRegistry.get($("#builder-plugin-selector-panel form"),plugin,"localization",null,(function(data){for(var i=stringElements.length-1;i>=0;i--){var stringElement=stringElements[i],stringKey=stringElement.getAttribute("data-localization-key");void 0!==data[stringKey]?stringElement.textContent=data[stringKey]:stringElement.textContent=stringKey}}))},Localization.prototype.saveLanguageDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();if($masterTabPane.find("input[name=original_language]").val(data.builderResponseData.language),this.updateMasterTabIdAndTitle($masterTabPane,data.builderResponseData),this.unhideFormDeleteButton($masterTabPane),this.getLanguageList().fileList("markActive",data.builderResponseData.tabId),this.getIndexController().unchangeTab($masterTabPane),void 0!==data.builderResponseData.registryData){var registryData=data.builderResponseData.registryData;$.oc.builder.dataRegistry.set(registryData.pluginCode,"localization",null,registryData.strings,{suppressLanguageEditorUpdate:!0}),$.oc.builder.dataRegistry.set(registryData.pluginCode,"localization","sections",registryData.sections)}},Localization.prototype.getLanguageList=function(){return $("#layout-side-panel form[data-content-id=localization] [data-control=filelist]")},Localization.prototype.getCodeEditor=function($tab){return $tab.find("div[data-field-name=strings] div[data-control=codeeditor]").data("oc.codeEditor").editor},Localization.prototype.deleteConfirmed=function(){var $form=this.getMasterTabsActivePane().find("form");$.oc.stripeLoadIndicator.show(),$form.request("onLanguageDelete").always($.oc.builder.indexController.hideStripeIndicatorProxy).done(this.proxy(this.deleteDone))},Localization.prototype.deleteDone=function(){var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane),this.forceCloseTab($masterTabPane)},Localization.prototype.copyStringsFromDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var responseData=data.builderResponseData,$masterTabPane=this.getMasterTabsActivePane(),$form=$masterTabPane.find("form"),codeEditor=this.getCodeEditor($masterTabPane),newStringMessage=$form.data("newStringMessage"),mismatchMessage=$form.data("structureMismatch");codeEditor.getSession().setValue(responseData.strings);for(var annotations=[],i=responseData.updatedLines.length-1;i>=0;i--){var line=responseData.updatedLines[i];annotations.push({row:line,column:0,text:newStringMessage,type:"warning"})}codeEditor.getSession().setAnnotations(annotations),responseData.mismatch&&$.oc.alert(mismatchMessage)},Localization.prototype.findDefaultLanguageForm=function(plugin){for(var forms=document.body.querySelectorAll("form[data-entity=localization]"),i=forms.length-1;i>=0;i--){var form=forms[i],pluginInput=form.querySelector("input[name=plugin_code]"),languageInput=form.querySelector("input[name=original_language]");if(pluginInput&&pluginInput.value==plugin&&(languageInput&&form.getAttribute("data-default-language")==languageInput.value))return form}return null},Localization.prototype.updateLanguageFromServer=function($languageForm){var self=this;$languageForm.request("onLanguageGetStrings").done((function(data){self.updateLanguageFromServerDone($languageForm,data)}))},Localization.prototype.updateLanguageFromServerDone=function($languageForm,data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var responseData=data.builderResponseData,$tabPane=$languageForm.closest(".tab-pane"),codeEditor=this.getCodeEditor($tabPane);responseData.strings&&(codeEditor.getSession().setValue(responseData.strings),this.unmodifyTab($tabPane))},Localization.prototype.mergeLanguageFromServer=function($languageForm){var language=$languageForm.find("input[name=original_language]").val(),self=this;$languageForm.request("onLanguageCopyStringsFrom",{data:{copy_from:language}}).done((function(data){self.mergeLanguageFromServerDone($languageForm,data)}))},Localization.prototype.mergeLanguageFromServerDone=function($languageForm,data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var responseData=data.builderResponseData,$tabPane=$languageForm.closest(".tab-pane"),codeEditor=this.getCodeEditor($tabPane);codeEditor.getSession().setValue(responseData.strings),codeEditor.getSession().setAnnotations([])},$.oc.builder.entityControllers.localization=Localization}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={}),void 0===$.oc.builder.entityControllers&&($.oc.builder.entityControllers={});var Base=$.oc.builder.entityControllers.base,BaseProto=Base.prototype,Controller=function(indexController){Base.call(this,"controller",indexController)};(Controller.prototype=Object.create(BaseProto)).constructor=Controller,Controller.prototype.cmdCreateController=function(ev){var $form=$(ev.currentTarget),self=this,pluginCode=$form.data("pluginCode");($form.find('input[name="behaviors[]"]:checked').length?this.indexController.openOrLoadMasterTab($form,"onControllerCreate",this.makeTabId(pluginCode+"-new-controller"),{}):$form.request("onControllerCreate")).done((function(data){$form.trigger("close.oc.popup"),self.updateDataRegistry(data)})).always($.oc.builder.indexController.hideStripeIndicatorProxy)},Controller.prototype.cmdOpenController=function(ev){var controller=$(ev.currentTarget).data("id"),pluginCode=$(ev.currentTarget).data("pluginCode");this.indexController.openOrLoadMasterTab($(ev.target),"onControllerOpen",this.makeTabId(pluginCode+"-"+controller),{controller:controller})},Controller.prototype.cmdSaveController=function(ev){var $target=$(ev.currentTarget),$inspectorContainer=$target.closest("form").find(".inspector-container");$.oc.inspector.manager.applyValuesFromContainer($inspectorContainer)&&$target.request("onControllerSave").done(this.proxy(this.saveControllerDone))},Controller.prototype.saveControllerDone=function(data){if(void 0===data.builderResponseData)throw new Error("Invalid response data");var $masterTabPane=this.getMasterTabsActivePane();this.getIndexController().unchangeTab($masterTabPane)},Controller.prototype.updateDataRegistry=function(data){if(void 0!==data.builderResponseData.registryData){var registryData=data.builderResponseData.registryData;$.oc.builder.dataRegistry.set(registryData.pluginCode,"controller-urls",null,registryData.urls)}},Controller.prototype.getControllerList=function(){return $("#layout-side-panel form[data-content-id=controller] [data-control=filelist]")},$.oc.builder.entityControllers.controller=Controller}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={});var Base=$.oc.foundation.base,BaseProto=Base.prototype,Builder=function(){Base.call(this),this.$masterTabs=null,this.masterTabsObj=null,this.hideStripeIndicatorProxy=null,this.entityControllers={},this.init()};(Builder.prototype=Object.create(BaseProto)).constructor=Builder,Builder.prototype.dispose=function(){BaseProto.dispose.call(this)},Builder.prototype.openOrLoadMasterTab=function($form,serverHandlerName,tabId,data){if(this.masterTabsObj.goTo(tabId))return!1;var requestData=void 0===data?{}:data;return $.oc.stripeLoadIndicator.show(),$form.request(serverHandlerName,{data:requestData}).done(this.proxy(this.addMasterTab)).always(this.hideStripeIndicatorProxy)},Builder.prototype.getMasterTabActivePane=function(){return this.$masterTabs.find("> .tab-content > .tab-pane.active")},Builder.prototype.unchangeTab=function($pane){$pane.find("form").trigger("unchange.oc.changeMonitor")},Builder.prototype.triggerCommand=function(command,ev){var commandParts=command.split(":");if(2===commandParts.length){var entity=commandParts[0],commandToExecute=commandParts[1];if(void 0===this.entityControllers[entity])throw new Error("Unknown entity type: "+entity);this.entityControllers[entity].invokeCommand(commandToExecute,ev)}},Builder.prototype.init=function(){this.$masterTabs=$("#builder-master-tabs"),this.$sidePanel=$("#builder-side-panel"),this.masterTabsObj=this.$masterTabs.data("oc.tab"),this.hideStripeIndicatorProxy=this.proxy(this.hideStripeIndicator),new $.oc.tabFormExpandControls(this.$masterTabs),this.createEntityControllers(),this.registerHandlers()},Builder.prototype.createEntityControllers=function(){for(var controller in $.oc.builder.entityControllers)"base"!=controller&&(this.entityControllers[controller]=new $.oc.builder.entityControllers[controller](this))},Builder.prototype.registerHandlers=function(){for(var controller in $(document).on("click","[data-builder-command]",this.proxy(this.onCommand)),$(document).on("submit","[data-builder-command]",this.proxy(this.onCommand)),this.$masterTabs.on("changed.oc.changeMonitor",this.proxy(this.onFormChanged)),this.$masterTabs.on("unchanged.oc.changeMonitor",this.proxy(this.onFormUnchanged)),this.$masterTabs.on("shown.bs.tab",this.proxy(this.onTabShown)),this.$masterTabs.on("afterAllClosed.oc.tab",this.proxy(this.onAllTabsClosed)),this.$masterTabs.on("closed.oc.tab",this.proxy(this.onTabClosed)),this.$masterTabs.on("autocompleteitems.oc.inspector",this.proxy(this.onDataRegistryItems)),this.$masterTabs.on("dropdownoptions.oc.inspector",this.proxy(this.onDataRegistryItems)),this.entityControllers)void 0!==this.entityControllers[controller].registerHandlers&&this.entityControllers[controller].registerHandlers()},Builder.prototype.hideStripeIndicator=function(){$.oc.stripeLoadIndicator.hide()},Builder.prototype.addMasterTab=function(data){this.masterTabsObj.addTab(data.tabTitle,data.tab,data.tabId,"oc-"+data.tabIcon);var $masterTabPane=this.getMasterTabActivePane();data.isNewRecord&&$masterTabPane.find("form").one("ready.oc.changeMonitor",this.proxy(this.onChangeMonitorReady)),$("[data-builder-tabs]",$masterTabPane).dragScroll()},Builder.prototype.updateModifiedCounter=function(){var counters={database:{menu:"database",count:0},models:{menu:"models",count:0},permissions:{menu:"permissions",count:0},menus:{menu:"menus",count:0},imports:{menu:"imports",count:0},versions:{menu:"versions",count:0},localization:{menu:"localization",count:0},controller:{menu:"controllers",count:0},code:{menu:"code",count:0}};$("> div.tab-content > div.tab-pane[data-modified] > form",this.$masterTabs).each((function(){var entity=$(this).data("entity");counters[entity].count++})),$.each(counters,(function(type,data){$.oc.sideNav.setCounter("builder/"+data.menu,data.count)}))},Builder.prototype.getFormPluginCode=function(formElement){var code=$(formElement).closest("form").find('input[name="plugin_code"]').val();if(!code)throw new Error("Plugin code input is not found in the form.");return code},Builder.prototype.setPageTitle=function(title){$.oc.layout.setPageTitle(title.length?title+" | ":title)},Builder.prototype.getFileLists=function(){return $("[data-control=filelist]",this.$sidePanel)},Builder.prototype.dataToInspectorArray=function(data){var result=[];for(var key in data){var item={title:data[key],value:key};result.push(item)}return result},Builder.prototype.onCommand=function(ev){if("FORM"!=ev.currentTarget.tagName||"click"!=ev.type){var command=$(ev.currentTarget).data("builderCommand");this.triggerCommand(command,ev);var $target=$(ev.currentTarget);if("A"!==ev.currentTarget.tagName||"menuitem"!=$target.attr("role")||"javascript:;"!=$target.attr("href"))return ev.preventDefault(),!1}},Builder.prototype.onFormChanged=function(ev){$(".form-tabless-fields",ev.target).trigger("modified.oc.tab"),this.updateModifiedCounter()},Builder.prototype.onFormUnchanged=function(ev){$(".form-tabless-fields",ev.target).trigger("unmodified.oc.tab"),this.updateModifiedCounter()},Builder.prototype.onTabShown=function(ev){if($(ev.target).closest("[data-control=tab]").attr("id")==this.$masterTabs.attr("id")){var dataId=$(ev.target).closest("li").attr("data-tab-id"),title=$(ev.target).attr("title");title&&this.setPageTitle(title),this.getFileLists().fileList("markActive",dataId),$(window).trigger("resize")}},Builder.prototype.onAllTabsClosed=function(ev){this.setPageTitle(""),this.getFileLists().fileList("markActive",null)},Builder.prototype.onTabClosed=function(ev,tab,pane){$(pane).find("form").off("ready.oc.changeMonitor",this.proxy(this.onChangeMonitorReady)),this.updateModifiedCounter()},Builder.prototype.onChangeMonitorReady=function(ev){$(ev.target).trigger("change")},Builder.prototype.onDataRegistryItems=function(ev,data){var self=this;if("model-classes"==data.propertyDefinition.fillFrom||"model-forms"==data.propertyDefinition.fillFrom||"model-lists"==data.propertyDefinition.fillFrom||"controller-urls"==data.propertyDefinition.fillFrom||"model-columns"==data.propertyDefinition.fillFrom||"plugin-lists"==data.propertyDefinition.fillFrom||"permissions"==data.propertyDefinition.fillFrom){ev.preventDefault();var subtype=null,subtypeProperty=data.propertyDefinition.subtypeFrom;void 0!==subtypeProperty&&(subtype=data.values[subtypeProperty]),$.oc.builder.dataRegistry.get($(ev.target),this.getFormPluginCode(ev.target),data.propertyDefinition.fillFrom,subtype,(function(response){data.callback({options:self.dataToInspectorArray(response)})}))}},$(document).ready((function(){$.oc.builder.indexController=new Builder}))}(window.jQuery),function($){"use strict";void 0===$.oc.builder&&($.oc.builder={});var Base=$.oc.foundation.base,BaseProto=Base.prototype,LocalizationInput=function(input,form,options){this.input=input,this.form=form,this.options=$.extend({},LocalizationInput.DEFAULTS,options),this.disposed=!1,this.initialized=!1,this.newStringPopupMarkup=null,Base.call(this),this.init()};LocalizationInput.prototype=Object.create(BaseProto),LocalizationInput.prototype.constructor=LocalizationInput,LocalizationInput.prototype.dispose=function(){this.unregisterHandlers(),this.form=null,this.options.beforePopupShowCallback=null,this.options.afterPopupHideCallback=null,this.options=null,this.disposed=!0,this.newStringPopupMarkup=null,this.initialized&&$(this.input).autocomplete("destroy"),$(this.input).removeData("localization-input"),this.input=null,BaseProto.dispose.call(this)},LocalizationInput.prototype.init=function(){if(!this.options.plugin)throw new Error("The options.plugin value should be set in the localization input object.");var $input=$(this.input);$input.data("localization-input",this),$input.attr("data-builder-localization-input","true"),$input.attr("data-builder-localization-plugin",this.options.plugin),this.getContainer().addClass("localization-input-container"),this.registerHandlers(),this.loadDataAndBuild()},LocalizationInput.prototype.buildAddLink=function(){var $container=this.getContainer();if(!($container.find("a.localization-trigger").length>0)){var trigger=document.createElement("a");trigger.setAttribute("class","oc-icon-plus localization-trigger"),trigger.setAttribute("href","#");var pos=$container.position();$(trigger).css({top:pos.top+4,right:7}),$container.append(trigger)}},LocalizationInput.prototype.loadDataAndBuild=function(){this.showLoadingIndicator();var result=$.oc.builder.dataRegistry.get(this.form,this.options.plugin,"localization",null,this.proxy(this.dataLoaded)),self=this;result&&result.always((function(){self.hideLoadingIndicator()}))},LocalizationInput.prototype.reload=function(){$.oc.builder.dataRegistry.get(this.form,this.options.plugin,"localization",null,this.proxy(this.dataLoaded))},LocalizationInput.prototype.dataLoaded=function(data){if(!this.disposed){var autocomplete=$(this.input).data("autocomplete");if(autocomplete)autocomplete.source=this.preprocessData(data);else{this.hideLoadingIndicator();var autocompleteOptions={source:this.preprocessData(data),matchWidth:!0};autocompleteOptions=$.extend(autocompleteOptions,this.options.autocompleteOptions),$(this.input).autocomplete(autocompleteOptions),this.initialized=!0}}},LocalizationInput.prototype.preprocessData=function(data){var dataClone=$.extend({},data);for(var key in dataClone)dataClone[key]=key+" - "+dataClone[key];return dataClone},LocalizationInput.prototype.getContainer=function(){return $(this.input).closest(".autocomplete-container")},LocalizationInput.prototype.showLoadingIndicator=function(){var $container=this.getContainer();$container.addClass("loading-indicator-container size-small"),$container.loadIndicator()},LocalizationInput.prototype.hideLoadingIndicator=function(){var $container=this.getContainer();$container.loadIndicator("hide"),$container.loadIndicator("destroy"),$container.removeClass("loading-indicator-container")},LocalizationInput.prototype.loadAndShowPopup=function(){null===this.newStringPopupMarkup?($.oc.stripeLoadIndicator.show(),$(this.input).request("onLanguageLoadAddStringForm").done(this.proxy(this.popupMarkupLoaded)).always((function(){$.oc.stripeLoadIndicator.hide()}))):this.showPopup()},LocalizationInput.prototype.popupMarkupLoaded=function(responseData){this.newStringPopupMarkup=responseData.markup,this.showPopup()},LocalizationInput.prototype.showPopup=function(){var $input=$(this.input);$input.popup({content:this.newStringPopupMarkup});var $content=$input.data("oc.popup").$content,$keyInput=$content.find("#language_string_key");$.oc.builder.dataRegistry.get(this.form,this.options.plugin,"localization","sections",(function(data){$keyInput.autocomplete({source:data,matchWidth:!0})})),$content.find("form").on("submit",this.proxy(this.onSubmitPopupForm))},LocalizationInput.prototype.stringCreated=function(data){if(void 0===data.localizationData||void 0===data.registryData)throw new Error("Invalid server response.");var $input=$(this.input);$input.val(data.localizationData.key),$.oc.builder.dataRegistry.set(this.options.plugin,"localization",null,data.registryData.strings),$.oc.builder.dataRegistry.set(this.options.plugin,"localization","sections",data.registryData.sections),$input.data("oc.popup").hide(),$input.trigger("change")},LocalizationInput.prototype.onSubmitPopupForm=function(ev){var $form=$(ev.target);return $.oc.stripeLoadIndicator.show(),$form.request("onLanguageCreateString",{data:{plugin_code:this.options.plugin}}).done(this.proxy(this.stringCreated)).always((function(){$.oc.stripeLoadIndicator.hide()})),ev.preventDefault(),!1},LocalizationInput.prototype.onPopupHidden=function(ev,link,popup){$(popup).find("#language_string_key").autocomplete("destroy"),$(popup).find("form").on("submit",this.proxy(this.onSubmitPopupForm)),this.options.afterPopupHideCallback&&this.options.afterPopupHideCallback()},LocalizationInput.updatePluginInputs=function(plugin){for(var inputs=document.body.querySelectorAll('input[data-builder-localization-input][data-builder-localization-plugin="'+plugin+'"]'),i=inputs.length-1;i>=0;i--)$(inputs[i]).data("localization-input").reload()},LocalizationInput.prototype.unregisterHandlers=function(){this.input.removeEventListener("focus",this.proxy(this.onInputFocus)),this.getContainer().off("click","a.localization-trigger",this.proxy(this.onTriggerClick)),$(this.input).off("hidden.oc.popup",this.proxy(this.onPopupHidden))},LocalizationInput.prototype.registerHandlers=function(){this.input.addEventListener("focus",this.proxy(this.onInputFocus)),this.getContainer().on("click","a.localization-trigger",this.proxy(this.onTriggerClick)),$(this.input).on("hidden.oc.popup",this.proxy(this.onPopupHidden))},LocalizationInput.prototype.onInputFocus=function(){this.buildAddLink()},LocalizationInput.prototype.onTriggerClick=function(ev){return this.options.beforePopupShowCallback&&this.options.beforePopupShowCallback(),this.loadAndShowPopup(),ev.preventDefault(),!1},LocalizationInput.DEFAULTS={plugin:null,autocompleteOptions:{},beforePopupShowCallback:null,afterPopupHideCallback:null},$.oc.builder.localizationInput=LocalizationInput}(window.jQuery),function($){"use strict";var Base=$.oc.inspector.propertyEditors.string,BaseProto=Base.prototype,LocalizationEditor=function(inspector,propertyDefinition,containerCell,group){this.localizationInput=null,Base.call(this,inspector,propertyDefinition,containerCell,group)};(LocalizationEditor.prototype=Object.create(BaseProto)).constructor=Base,LocalizationEditor.prototype.dispose=function(){this.removeLocalizationInput(),BaseProto.dispose.call(this)},LocalizationEditor.prototype.build=function(){var container=document.createElement("div"),editor=document.createElement("input"),placeholder=void 0!==this.propertyDefinition.placeholder?this.propertyDefinition.placeholder:"",value=this.inspector.getPropertyValue(this.propertyDefinition.property);editor.setAttribute("type","text"),editor.setAttribute("class","string-editor"),editor.setAttribute("placeholder",placeholder),container.setAttribute("class","autocomplete-container"),void 0===value&&(value=this.propertyDefinition.default),void 0===value&&(value=""),editor.value=value,$.oc.foundation.element.addClass(this.containerCell,"text autocomplete"),container.appendChild(editor),this.containerCell.appendChild(container),this.buildLocalizationEditor()},LocalizationEditor.prototype.buildLocalizationEditor=function(){this.localizationInput=new $.oc.builder.localizationInput(this.getInput(),this.getForm(),{plugin:this.getPluginCode(),beforePopupShowCallback:this.proxy(this.onPopupShown,this),afterPopupHideCallback:this.proxy(this.onPopupHidden,this)})},LocalizationEditor.prototype.removeLocalizationInput=function(){this.localizationInput.dispose(),this.localizationInput=null},LocalizationEditor.prototype.supportsExternalParameterEditor=function(){return!1},LocalizationEditor.prototype.registerHandlers=function(){BaseProto.registerHandlers.call(this),$(this.getInput()).on("change",this.proxy(this.onInputKeyUp))},LocalizationEditor.prototype.unregisterHandlers=function(){BaseProto.unregisterHandlers.call(this),$(this.getInput()).off("change",this.proxy(this.onInputKeyUp))},LocalizationEditor.prototype.getForm=function(){var inspectableElement=this.getRootSurface().getInspectableElement();if(!inspectableElement)throw new Error("Cannot determine inspectable element in the Builder localization editor.");return $(inspectableElement).closest("form")},LocalizationEditor.prototype.getPluginCode=function(){var $input=this.getForm().find("input[name=plugin_code]");if(!$input.length)throw new Error('The input "plugin_code" should be defined in the form in order to use the localization Inspector editor.');return $input.val()},LocalizationEditor.prototype.onPopupShown=function(){this.getRootSurface().popupDisplayed()},LocalizationEditor.prototype.onPopupHidden=function(){this.getRootSurface().popupHidden()},$.oc.inspector.propertyEditors.builderLocalization=LocalizationEditor}(window.jQuery),function($){"use strict";if(void 0===$.oc.table)throw new Error("The $.oc.table namespace is not defined. Make sure that the table.js script is loaded.");if(void 0===$.oc.table.processor)throw new Error("The $.oc.table.processor namespace is not defined. Make sure that the table.processor.base.js script is loaded.");var Base=$.oc.table.processor.string,BaseProto=Base.prototype,LocalizationProcessor=function(tableObj,columnName,columnConfiguration){this.localizationInput=null,this.popupDisplayed=!1,Base.call(this,tableObj,columnName,columnConfiguration)};(LocalizationProcessor.prototype=Object.create(BaseProto)).constructor=LocalizationProcessor,LocalizationProcessor.prototype.dispose=function(){this.removeLocalizationInput(),BaseProto.dispose.call(this)},LocalizationProcessor.prototype.onUnfocus=function(){this.activeCell&&!this.popupDisplayed&&(this.removeLocalizationInput(),BaseProto.onUnfocus.call(this))},LocalizationProcessor.prototype.onBeforePopupShow=function(){this.popupDisplayed=!0},LocalizationProcessor.prototype.onAfterPopupHide=function(){this.popupDisplayed=!1},LocalizationProcessor.prototype.renderCell=function(value,cellContentContainer){BaseProto.renderCell.call(this,value,cellContentContainer)},LocalizationProcessor.prototype.buildEditor=function(cellElement,cellContentContainer,isClick){BaseProto.buildEditor.call(this,cellElement,cellContentContainer,isClick),$.oc.foundation.element.addClass(cellContentContainer,"autocomplete-container"),this.buildLocalizationEditor()},LocalizationProcessor.prototype.buildLocalizationEditor=function(){var input=this.getInput();this.localizationInput=new $.oc.builder.localizationInput(input,$(input),{plugin:this.getPluginCode(input),beforePopupShowCallback:$.proxy(this.onBeforePopupShow,this),afterPopupHideCallback:$.proxy(this.onAfterPopupHide,this),autocompleteOptions:{menu:'<ul class="autocomplete dropdown-menu table-widget-autocomplete localization"></ul>',bodyContainer:!0}})},LocalizationProcessor.prototype.getInput=function(){return this.activeCell?this.activeCell.querySelector(".string-input"):null},LocalizationProcessor.prototype.getPluginCode=function(input){var $input=$(input).closest("form").find("input[name=plugin_code]");if(!$input.length)throw new Error('The input "plugin_code" should be defined in the form in order to use the localization table processor.');return $input.val()},LocalizationProcessor.prototype.removeLocalizationInput=function(){this.localizationInput&&(this.localizationInput.dispose(),this.localizationInput=null)},$.oc.table.processor.builderLocalization=LocalizationProcessor}(window.jQuery),function($){"use strict";var CodeList=function(form,alias){this.$form=$(form),this.alias=alias,this.$form.on("ajaxSuccess",$.proxy(this.onAjaxSuccess,this)),this.$form.on("click","ul.list > li.directory > a",$.proxy(this.onDirectoryClick,this)),this.$form.on("click","ul.list > li.file > a",$.proxy(this.onFileClick,this)),this.$form.on("click","p.parent > a",$.proxy(this.onDirectoryClick,this)),this.$form.on("click","a[data-control=delete-asset]",$.proxy(this.onDeleteClick,this)),this.$form.on("oc.list.setActiveItem",$.proxy(this.onSetActiveItem,this)),this.setupUploader()};CodeList.prototype.onDirectoryClick=function(e){return this.gotoDirectory($(e.currentTarget).data("path"),$(e.currentTarget).parent().hasClass("parent")),!1},CodeList.prototype.gotoDirectory=function(path,gotoParent){var $container=$("div.list-container",this.$form),self=this;void 0!==gotoParent&&gotoParent?$container.addClass("goBackward"):$container.addClass("goForward"),$.oc.stripeLoadIndicator.show(),this.$form.request(this.alias+"::onOpenDirectory",{data:{path:path,d:.2},complete:function(){self.updateUi(),$container.trigger("oc.scrollbar.gotoStart")},error:function(jqXHR,textStatus,errorThrown){$container.removeClass("goForward goBackward"),alert(jqXHR.responseText.length?jqXHR.responseText:jqXHR.statusText)}}).always((function(){$.oc.stripeLoadIndicator.hide()}))},CodeList.prototype.onDeleteClick=function(e){var $el=$(e.currentTarget),self=this;return!!confirm($el.data("confirmation"))&&(this.$form.request(this.alias+"::onDeleteFiles",{success:function(data){void 0!==data.error&&"string"===$.type(data.error)&&data.error.length&&$.oc.flashMsg({text:data.error,class:"error"})},complete:function(){self.refresh()}}),!1)},CodeList.prototype.onAjaxSuccess=function(){this.updateUi()},CodeList.prototype.onUploadFail=function(file,message){413===file.xhr.status&&(message="Server rejected the file because it was too large, try increasing post_max_size"),message||(message="Error uploading file"),$.oc.alert(message),this.refresh()},CodeList.prototype.onUploadSuccess=function(file,data){"success"!==data&&$.oc.alert(data)},CodeList.prototype.onUploadComplete=function(file,data){$.oc.stripeLoadIndicator.hide(),this.refresh()},CodeList.prototype.onUploadStart=function(){$.oc.stripeLoadIndicator.show()},CodeList.prototype.onFileClick=function(event){var $li=$(event.currentTarget).parent(),e=$.Event("open.oc.list",{relatedTarget:$li.get(0),clickEvent:event});if(this.$form.trigger(e,this),e.isDefaultPrevented())return!1},CodeList.prototype.onSetActiveItem=function(event,dataId){$("ul li.file",this.$form).removeClass("active"),dataId&&$('ul li.file[data-id="'+dataId+'"]',this.$form).addClass("active")},CodeList.prototype.updateUi=function(){$("button[data-control=asset-tools]",self.$form).trigger("oc.triggerOn.update")},CodeList.prototype.refresh=function(){var self=this;this.$form.request(this.alias+"::onRefresh",{complete:function(){self.updateUi()}})},CodeList.prototype.setupUploader=function(){var self=this,$link=$('[data-control="upload-assets"]',this.$form),uploaderOptions={method:"POST",url:window.location,paramName:"file_data",previewsContainer:$("<div />").get(0),clickable:$link.get(0),timeout:0,headers:{}},token=$('meta[name="csrf-token"]').attr("content");token&&(uploaderOptions.headers["X-CSRF-TOKEN"]=token);var dropzone=new Dropzone($("<div />").get(0),uploaderOptions);dropzone.on("error",$.proxy(self.onUploadFail,self)),dropzone.on("success",$.proxy(self.onUploadSuccess,self)),dropzone.on("complete",$.proxy(self.onUploadComplete,self)),dropzone.on("sending",(function(file,xhr,formData){$.each(self.$form.serializeArray(),(function(index,field){formData.append(field.name,field.value)})),xhr.setRequestHeader("X-OCTOBER-REQUEST-HANDLER",self.alias+"::onUpload"),self.onUploadStart()}))},$(document).on("render",(function(){var $container=$("#code-list-container");!0!==$container.data("oc.codeListAttached")&&($container.data("oc.codeListAttached",!0),new CodeList($container.closest("form"),$container.data("alias")))}))}(window.jQuery);
|