Files
Umbraco-CMS/src/Umbraco.Web.UI/umbraco_client/splitbutton/InsertMacroSplitButton.js

57 lines
2.2 KiB
JavaScript
Raw Normal View History

Umbraco.Sys.registerNamespace("Umbraco.Controls");
(function ($) {
Umbraco.Controls.InsertMacroSplitButton = base2.Base.extend({
//private methods/variables
_opts: null,
// Constructor
constructor: function (opts) {
// Merge options with default
this._opts = $.extend({
// Default options go here
}, opts);
},
//public methods/variables
init: function () {
var self = this;
//the container is the 'scope' of which to find .sbPlaceHolder's, by default it is null so the scope is the whole page
var container = this._opts.container != null ? this._opts.container : null;
//setup the split buttons, find all .sbPlaceHolder's and assign the menu to it which should always
//be the previous element with the class .sbMenu
var splitButtons = $('.sbPlaceHolder', container);
splitButtons.each(function() {
var menu = $(this).prev(".sbMenu;");
$(this).find("a.sbLink").splitbutton({ menu: menu });
});
//assign the click handler to each macro item drop down
$(".sbMenu .macro-item").click(function () {
var alias = $(this).attr("rel");
if ($(this).attr("data-has-params") == "true") {
self._opts.openMacroModel.apply(self, [alias]);
}
else {
self._opts.insertMacroMarkup.apply(self, [alias]);
}
});
//assign the callback for the regular insert macro button (not the drop down)
$(".sbPlaceHolder a.sbLink").click(function() {
self._opts.openMacroModel.apply(self, []); //call the callback with no alias
});
//a fix for scroll issues TODO: put this code in this class and make it flexible (i.e. NOT with ids)
//applySplitButtonOverflow('mcontainer', 'innerc', 'macroMenu', '.macro-item', 'showMoreMacros');
}
});
})(jQuery);