n_oct/plugins/rainlab/builder/assets/js/builder.index.entity.contro...

109 lines
3.4 KiB
JavaScript
Raw Normal View History

2023-06-17 20:52:33 +00:00
/*
* Builder Index controller Controller entity controller
*/
+function ($) { "use strict";
if ($.oc.builder === undefined)
$.oc.builder = {}
if ($.oc.builder.entityControllers === undefined)
$.oc.builder.entityControllers = {}
var Base = $.oc.builder.entityControllers.base,
BaseProto = Base.prototype
var Controller = function(indexController) {
2023-06-18 12:28:15 +00:00
Base.call(this, 'controller', indexController)
2023-06-17 20:52:33 +00:00
}
2023-06-18 12:28:15 +00:00
Controller.prototype = Object.create(BaseProto)
Controller.prototype.constructor = Controller
2023-06-17 20:52:33 +00:00
// PUBLIC METHODS
// ============================
Controller.prototype.cmdCreateController = function(ev) {
var $form = $(ev.currentTarget),
self = this,
pluginCode = $form.data('pluginCode'),
behaviorsSelected = $form.find('input[name="behaviors[]"]:checked').length,
2023-06-18 12:28:15 +00:00
promise = null
2023-06-17 20:52:33 +00:00
2023-06-18 12:28:15 +00:00
// If behaviors were selected, open a new tab after the
2023-06-17 20:52:33 +00:00
// controller is saved. Otherwise just update the controller
// list.
if (behaviorsSelected) {
promise = this.indexController.openOrLoadMasterTab(
2023-06-18 12:28:15 +00:00
$form,
'onControllerCreate',
this.makeTabId(pluginCode+'-new-controller'),
2023-06-17 20:52:33 +00:00
{}
2023-06-18 12:28:15 +00:00
)
2023-06-17 20:52:33 +00:00
}
else {
2023-06-18 12:28:15 +00:00
promise = $form.request('onControllerCreate')
2023-06-17 20:52:33 +00:00
}
promise.done(function(data){
$form.trigger('close.oc.popup')
self.updateDataRegistry(data)
2023-06-18 12:28:15 +00:00
}).always($.oc.builder.indexController.hideStripeIndicatorProxy)
2023-06-17 20:52:33 +00:00
}
Controller.prototype.cmdOpenController = function(ev) {
var controller = $(ev.currentTarget).data('id'),
2023-06-18 12:28:15 +00:00
pluginCode = $(ev.currentTarget).data('pluginCode')
2023-06-17 20:52:33 +00:00
this.indexController.openOrLoadMasterTab($(ev.target), 'onControllerOpen', this.makeTabId(pluginCode+'-'+controller), {
controller: controller
2023-06-18 12:28:15 +00:00
})
2023-06-17 20:52:33 +00:00
}
Controller.prototype.cmdSaveController = function(ev) {
var $target = $(ev.currentTarget),
$form = $target.closest('form'),
2023-06-18 12:28:15 +00:00
$inspectorContainer = $form.find('.inspector-container')
2023-06-17 20:52:33 +00:00
if (!$.oc.inspector.manager.applyValuesFromContainer($inspectorContainer)) {
2023-06-18 12:28:15 +00:00
return
2023-06-17 20:52:33 +00:00
}
$target.request('onControllerSave').done(
this.proxy(this.saveControllerDone)
2023-06-18 12:28:15 +00:00
)
2023-06-17 20:52:33 +00:00
}
// EVENT HANDLERS
// ============================
// INTERNAL METHODS
// ============================
Controller.prototype.saveControllerDone = function(data) {
if (data['builderResponseData'] === undefined) {
throw new Error('Invalid response data')
}
var $masterTabPane = this.getMasterTabsActivePane()
2023-06-18 12:28:15 +00:00
2023-06-17 20:52:33 +00:00
this.getIndexController().unchangeTab($masterTabPane)
}
Controller.prototype.updateDataRegistry = function(data) {
if (data.builderResponseData.registryData !== undefined) {
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]')
}
// REGISTRATION
// ============================
$.oc.builder.entityControllers.controller = Controller;
}(window.jQuery);