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

86 lines
2.3 KiB
JavaScript

/*
* Builder Index controller Menus 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 Menus = function(indexController) {
Base.call(this, 'menus', indexController)
}
Menus.prototype = Object.create(BaseProto)
Menus.prototype.constructor = Menus
// PUBLIC METHODS
// ============================
Menus.prototype.cmdOpenMenus = function(ev) {
var currentPlugin = this.getSelectedPlugin()
if (!currentPlugin) {
alert('Please select a plugin first')
return
}
this.indexController.openOrLoadMasterTab($(ev.target), 'onMenusOpen', this.makeTabId(currentPlugin))
}
Menus.prototype.cmdSaveMenus = function(ev) {
var $target = $(ev.currentTarget),
$form = $target.closest('form'),
$inspectorContainer = $form.find('.inspector-container')
if (!$.oc.inspector.manager.applyValuesFromContainer($inspectorContainer)) {
return
}
var menus = $.oc.builder.menubuilder.controller.getJson($form.get(0))
$target.request('onMenusSave', {
data: {
menus: menus
}
}).done(
this.proxy(this.saveMenusDone)
)
}
Menus.prototype.cmdAddMainMenuItem = function(ev) {
$.oc.builder.menubuilder.controller.addMainMenuItem(ev)
}
Menus.prototype.cmdAddSideMenuItem = function(ev) {
$.oc.builder.menubuilder.controller.addSideMenuItem(ev)
}
Menus.prototype.cmdDeleteMenuItem = function(ev) {
$.oc.builder.menubuilder.controller.deleteMenuItem(ev)
}
// INTERNAL METHODS
// ============================
Menus.prototype.saveMenusDone = function(data) {
if (data['builderResponseData'] === undefined) {
throw new Error('Invalid response data')
}
var $masterTabPane = this.getMasterTabsActivePane()
this.getIndexController().unchangeTab($masterTabPane)
}
// REGISTRATION
// ============================
$.oc.builder.entityControllers.menus = Menus;
}(window.jQuery);