109 lines
3.4 KiB
JavaScript
109 lines
3.4 KiB
JavaScript
/*
|
|
* 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) {
|
|
Base.call(this, 'controller', indexController)
|
|
}
|
|
|
|
Controller.prototype = Object.create(BaseProto)
|
|
Controller.prototype.constructor = Controller
|
|
|
|
// 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,
|
|
promise = null
|
|
|
|
// If behaviors were selected, open a new tab after the
|
|
// controller is saved. Otherwise just update the controller
|
|
// list.
|
|
if (behaviorsSelected) {
|
|
promise = this.indexController.openOrLoadMasterTab(
|
|
$form,
|
|
'onControllerCreate',
|
|
this.makeTabId(pluginCode+'-new-controller'),
|
|
{}
|
|
)
|
|
}
|
|
else {
|
|
promise = $form.request('onControllerCreate')
|
|
}
|
|
|
|
promise.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),
|
|
$form = $target.closest('form'),
|
|
$inspectorContainer = $form.find('.inspector-container')
|
|
|
|
if (!$.oc.inspector.manager.applyValuesFromContainer($inspectorContainer)) {
|
|
return
|
|
}
|
|
|
|
$target.request('onControllerSave').done(
|
|
this.proxy(this.saveControllerDone)
|
|
)
|
|
}
|
|
|
|
// EVENT HANDLERS
|
|
// ============================
|
|
|
|
// INTERNAL METHODS
|
|
// ============================
|
|
|
|
Controller.prototype.saveControllerDone = function(data) {
|
|
if (data['builderResponseData'] === undefined) {
|
|
throw new Error('Invalid response data')
|
|
}
|
|
|
|
var $masterTabPane = this.getMasterTabsActivePane()
|
|
|
|
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); |