marc-leopold/cms/plugins/rainlab/builder/assets/js/builder.index.entity.model.js

72 lines
1.9 KiB
JavaScript

/*
* Builder Index controller Model 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 Model = function(indexController) {
Base.call(this, 'model', indexController)
}
Model.prototype = Object.create(BaseProto)
Model.prototype.constructor = Model
// PUBLIC METHODS
// ============================
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)
})
}
// EVENT HANDLERS
// ============================
Model.prototype.onModelPopupShown = function(ev, button, popup) {
$(popup).find('input[name=className]').focus()
}
// INTERNAL METHODS
// ============================
Model.prototype.applyModelSettingsDone = function(data) {
if (data.builderResponseData.registryData !== undefined) {
var registryData = data.builderResponseData.registryData
$.oc.builder.dataRegistry.set(registryData.pluginCode, 'model-classes', null, registryData.models)
}
}
// REGISTRATION
// ============================
$.oc.builder.entityControllers.model = Model;
}(window.jQuery);