116 lines
3.3 KiB
JavaScript
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); |