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

116 lines
3.3 KiB
JavaScript

/*
* Builder Index controller Plugin 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 Plugin = function(indexController) {
Base.call(this, 'plugin', indexController)
this.popupZIndex = 5050 // This popup should be above the flyout overlay, which z-index is 5000
}
Plugin.prototype = Object.create(BaseProto)
Plugin.prototype.constructor = Plugin
// PUBLIC METHODS
// ============================
Plugin.prototype.cmdMakePluginActive = function(ev) {
var $target = $(ev.currentTarget),
selectedPluginCode = $target.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')
}
})
}
// EVENT HANDLERS
// ============================
Plugin.prototype.onPluginPopupShown = function(ev, button, popup) {
$(popup).find('input[name=name]').focus()
}
// INTERNAL METHODS
// ============================
Plugin.prototype.applyPluginSettingsDone = function(data) {
if (data.responseData !== undefined && data.responseData.isNewPlugin !== undefined) {
this.makePluginActive(data.responseData.pluginCode, true)
}
}
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)
}
// REGISTRATION
// ============================
$.oc.builder.entityControllers.plugin = Plugin;
}(window.jQuery);