diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 578a32e4ff..a69784c066 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -357,15 +357,10 @@ - - - - - diff --git a/src/Umbraco.Web.UI/umbraco_client/splitbutton/InsertMacroSplitButton.js b/src/Umbraco.Web.UI/umbraco_client/splitbutton/InsertMacroSplitButton.js deleted file mode 100644 index a99286a205..0000000000 --- a/src/Umbraco.Web.UI/umbraco_client/splitbutton/InsertMacroSplitButton.js +++ /dev/null @@ -1,57 +0,0 @@ -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); \ No newline at end of file diff --git a/src/Umbraco.Web.UI/umbraco_client/splitbutton/images/splitbutton_downarrow.png b/src/Umbraco.Web.UI/umbraco_client/splitbutton/images/splitbutton_downarrow.png deleted file mode 100644 index 3f31f8bc97..0000000000 Binary files a/src/Umbraco.Web.UI/umbraco_client/splitbutton/images/splitbutton_downarrow.png and /dev/null differ diff --git a/src/Umbraco.Web.UI/umbraco_client/splitbutton/images/splitbutton_hover.png b/src/Umbraco.Web.UI/umbraco_client/splitbutton/images/splitbutton_hover.png deleted file mode 100644 index 757b81da27..0000000000 Binary files a/src/Umbraco.Web.UI/umbraco_client/splitbutton/images/splitbutton_hover.png and /dev/null differ diff --git a/src/Umbraco.Web.UI/umbraco_client/splitbutton/jquery.splitbutton.js b/src/Umbraco.Web.UI/umbraco_client/splitbutton/jquery.splitbutton.js deleted file mode 100644 index 5cab5f6596..0000000000 --- a/src/Umbraco.Web.UI/umbraco_client/splitbutton/jquery.splitbutton.js +++ /dev/null @@ -1,530 +0,0 @@ -(function ($) { - function _1(_2) { - $(_2).appendTo("body"); - $(_2).addClass("menu-top"); - var _3 = []; - _4($(_2)); - var _5 = null; - for (var i = 0; i < _3.length; i++) { - var _6 = _3[i]; - _7(_6); - _6.children("div.menu-item").each(function () { - _10(_2, $(this)); - }); - _6.bind("mouseenter", function () { - if (_5) { - clearTimeout(_5); - _5 = null; - } - }).bind("mouseleave", function () { - _5 = setTimeout(function () { - _18(_2); - }, 100); - }); - } - function _4(_8) { - _3.push(_8); - _8.find(">div").each(function () { - var _9 = $(this); - var _a = _9.find(">div"); - if (_a.length) { - _a.insertAfter(_2); - _9[0].submenu = _a; - _4(_a); - } - }); - }; - function _7(_b) { - _b.addClass("menu").find(">div").each(function () { - var _c = $(this); - if (_c.hasClass("menu-sep")) { - _c.html(" "); - } else { - var _d = _c.addClass("menu-item").html(); - _c.empty().append($("
").html(_d)); - var _e = _c.attr("iconCls") || _c.attr("icon"); - if (_e) { - $("
").addClass(_e).appendTo(_c); - } - if (_c[0].submenu) { - $("
").appendTo(_c); - } - if ($.boxModel == true) { - var _f = _c.height(); - _c.height(_f - (_c.outerHeight() - _c.height())); - } - } - }); - _b.hide(); - }; - }; - function _10(_11, _12) { - _12.click(function () { - if (!this.submenu) { - _18(_11); - var _13 = $(this).attr("href"); - if (_13) { - location.href = _13; - } - } - var _14 = $(_11).menu("getItem", this); - $.data(_11, "menu").options.onClick.call(_11, _14); - }); - _12.hover(function () { - _12.siblings().each(function () { - if (this.submenu) { - _1b(this.submenu); - } - $(this).removeClass("menu-active"); - }); - _12.addClass("menu-active"); - var _15 = _12[0].submenu; - if (_15) { - var _16 = _12.offset().left + _12.outerWidth() - 2; - if (_16 + _15.outerWidth() > $(window).width()) { - _16 = _12.offset().left - _15.outerWidth() + 2; - } - _1f(_15, { left: _16, top: _12.offset().top - 3 }); - } - }, function (e) { - _12.removeClass("menu-active"); - var _17 = _12[0].submenu; - if (_17) { - if (e.pageX >= parseInt(_17.css("left"))) { - _12.addClass("menu-active"); - } else { - _1b(_17); - } - } else { - _12.removeClass("menu-active"); - } - }); - _12.unbind(".menu").bind("mousedown.menu", function () { - return false; - }); - }; - function _18(_19) { - var _1a = $.data(_19, "menu").options; - _1b($(_19)); - $(document).unbind(".menu"); - _1a.onHide.call(_19); - return false; - }; - function _1c(_1d, pos) { - var _1e = $.data(_1d, "menu").options; - if (pos) { - _1e.left = pos.left; - _1e.top = pos.top; - } - _1f($(_1d), { left: _1e.left, top: _1e.top }, function () { - $(document).unbind(".menu").bind("mousedown.menu", function () { - _18(_1d); - $(document).unbind(".menu"); - return false; - }); - _1e.onShow.call(_1d); - }); - }; - function _1f(_20, pos, _21) { - if (!_20) { - return; - } - if (pos) { - _20.css(pos); - } - _20.show(0, function () { - if (!_20[0].shadow) { - _20[0].shadow = $("
").insertAfter(_20); - } - _20[0].shadow.css({ display: "block", zIndex: $.fn.menu.defaults.zIndex++, left: _20.css("left"), top: _20.css("top"), width: _20.outerWidth(), height: _20.outerHeight() }); - _20.css("z-index", $.fn.menu.defaults.zIndex++); - if (_21) { - _21(); - } - }); - }; - function _1b(_22) { - if (!_22) { - return; - } - _23(_22); - _22.find("div.menu-item").each(function () { - if (this.submenu) { - _1b(this.submenu); - } - $(this).removeClass("menu-active"); - }); - function _23(m) { - m.stop(true, true); - if (m[0].shadow) { - m[0].shadow.hide(); - } - m.hide(); - }; - }; - function _24(_25, _26) { - var _27 = null; - var tmp = $("
"); - function _28(_29) { - _29.children("div.menu-item").each(function () { - var _2a = $(_25).menu("getItem", this); - var s = tmp.empty().html(_2a.text).text(); - if (_26 == $.trim(s)) { - _27 = _2a; - } else { - if (this.submenu && !_27) { - _28(this.submenu); - } - } - }); - }; - _28($(_25)); - tmp.remove(); - return _27; - }; - function _2b(_2c, _2d) { - var _2e = $(_2c); - if (_2d.parent) { - _2e = _2d.parent.submenu; - } - var _2f = $("
").appendTo(_2e); - $("
").html(_2d.text).appendTo(_2f); - if (_2d.iconCls) { - $("
").addClass(_2d.iconCls).appendTo(_2f); - } - if (_2d.id) { - _2f.attr("id", _2d.id); - } - if (_2d.href) { - _2f.attr("href", _2d.href); - } - if (_2d.onclick) { - _2f.attr("onclick", _2d.onclick); - } - _10(_2c, _2f); - }; - function _30(_31, _32) { - function _33(el) { - if (el.submenu) { - el.submenu.children("div.menu-item").each(function () { - _33(this); - }); - var _34 = el.submenu[0].shadow; - if (_34) { - _34.remove(); - } - el.submenu.remove(); - } - $(el).remove(); - }; - _33(_32); - }; - function _35(_36) { - $(_36).children("div.menu-item").each(function () { - _30(_36, this); - }); - if (_36.shadow) { - _36.shadow.remove(); - } - $(_36).remove(); - }; - $.fn.menu = function (_37, _38) { - if (typeof _37 == "string") { - return $.fn.menu.methods[_37](this, _38); - } - _37 = _37 || {}; - return this.each(function () { - var _39 = $.data(this, "menu"); - if (_39) { - $.extend(_39.options, _37); - } else { - _39 = $.data(this, "menu", { options: $.extend({}, $.fn.menu.defaults, _37) }); - _1(this); - } - $(this).css({ left: _39.options.left, top: _39.options.top }); - }); - }; - $.fn.menu.methods = { show: function (jq, pos) { - return jq.each(function () { - _1c(this, pos); - }); - }, hide: function (jq) { - return jq.each(function () { - _18(this); - }); - }, destroy: function (jq) { - return jq.each(function () { - _35(this); - }); - }, setText: function (jq, _3a) { - return jq.each(function () { - $(_3a.target).children("div.menu-text").html(_3a.text); - }); - }, setIcon: function (jq, _3b) { - return jq.each(function () { - var _3c = $(this).menu("getItem", _3b.target); - if (_3c.iconCls) { - $(_3c.target).children("div.menu-icon").removeClass(_3c.iconCls).addClass(_3b.iconCls); - } else { - $("
").addClass(_3b.iconCls).appendTo(_3b.target); - } - }); - }, getItem: function (jq, _3d) { - var _3e = { target: _3d, id: $(_3d).attr("id"), text: $.trim($(_3d).children("div.menu-text").html()), href: $(_3d).attr("href"), onclick: $(_3d).attr("onclick") }; - var _3f = $(_3d).children("div.menu-icon"); - if (_3f.length) { - var cc = []; - var aa = _3f.attr("class").split(" "); - for (var i = 0; i < aa.length; i++) { - if (aa[i] != "menu-icon") { - cc.push(aa[i]); - } - } - _3e.iconCls = cc.join(" "); - } - return _3e; - }, findItem: function (jq, _40) { - return _24(jq[0], _40); - }, appendItem: function (jq, _41) { - return jq.each(function () { - _2b(this, _41); - }); - }, removeItem: function (jq, _42) { - return jq.each(function () { - _30(this, _42); - }); - } - }; - $.fn.menu.defaults = { zIndex: 110000, left: 0, top: 0, onShow: function () { - }, onHide: function () { - }, onClick: function (_43) { - } - }; -})(jQuery); - -(function ($) { - function _1(_2) { - var _3 = $.data(_2, "linkbutton").options; - $(_2).empty(); - $(_2).addClass("l-btn"); - if (_3.id) { - $(_2).attr("id", _3.id); - } else { - $(_2).removeAttr("id"); - } - if (_3.plain) { - $(_2).addClass("l-btn-plain"); - } else { - $(_2).removeClass("l-btn-plain"); - } - if (_3.text) { - $(_2).html(_3.text).wrapInner("" + "" + "" + ""); - if (_3.iconCls) { - $(_2).find(".l-btn-text").addClass(_3.iconCls).css("padding-left", "20px"); - } - } else { - $(_2).html(" ").wrapInner("" + "" + "" + "" + ""); - if (_3.iconCls) { - $(_2).find(".l-btn-empty").addClass(_3.iconCls); - } - } - _4(_2, _3.disabled); - }; - function _4(_5, _6) { - var _7 = $.data(_5, "linkbutton"); - if (_6) { - _7.options.disabled = true; - var _8 = $(_5).attr("href"); - if (_8) { - _7.href = _8; - $(_5).attr("href", "javascript:void(0)"); - } - var _9 = $(_5).attr("onclick"); - if (_9) { - _7.onclick = _9; - $(_5).attr("onclick", ""); - } - $(_5).addClass("l-btn-disabled"); - } else { - _7.options.disabled = false; - if (_7.href) { - $(_5).attr("href", _7.href); - } - if (_7.onclick) { - _5.onclick = _7.onclick; - } - $(_5).removeClass("l-btn-disabled"); - } - }; - $.fn.linkbutton = function (_a, _b) { - if (typeof _a == "string") { - return $.fn.linkbutton.methods[_a](this, _b); - } - _a = _a || {}; - return this.each(function () { - var _c = $.data(this, "linkbutton"); - if (_c) { - $.extend(_c.options, _a); - } else { - $.data(this, "linkbutton", { options: $.extend({}, $.fn.linkbutton.defaults, $.fn.linkbutton.parseOptions(this), _a) }); - $(this).removeAttr("disabled"); - } - _1(this); - }); - }; - $.fn.linkbutton.methods = { options: function (jq) { - return $.data(jq[0], "linkbutton").options; - }, enable: function (jq) { - return jq.each(function () { - _4(this, false); - }); - }, disable: function (jq) { - return jq.each(function () { - _4(this, true); - }); - } - }; - $.fn.linkbutton.parseOptions = function (_d) { - var t = $(_d); - return { id: t.attr("id"), disabled: (t.attr("disabled") ? true : undefined), plain: (t.attr("plain") ? t.attr("plain") == "true" : undefined), text: $.trim(t.html()), iconCls: (t.attr("icon") || t.attr("iconCls")) }; - }; - $.fn.linkbutton.defaults = { id: null, disabled: false, plain: false, text: "", iconCls: null }; -})(jQuery); - - -(function ($) { - function _1(_2) { - var _3 = $.data(_2, "splitbutton").options; - var _4 = $(_2); - _4.removeClass("s-btn-active s-btn-plain-active"); - _4.linkbutton(_3); - if (_3.menu) { - $(_3.menu).menu({ onShow: function () { - _4.addClass((_3.plain == true) ? "s-btn-plain-active" : "s-btn-active"); - }, onHide: function () { - _4.removeClass((_3.plain == true) ? "s-btn-plain-active" : "s-btn-active"); - } - }); - } - _5(_2, _3.disabled); - }; - function _5(_6, _7) { - var _8 = $.data(_6, "splitbutton").options; - _8.disabled = _7; - var _9 = $(_6); - var _a = _9.find(".s-btn-downarrow"); - if (_7) { - _9.linkbutton("disable"); - _a.unbind(".splitbutton"); - } else { - _9.linkbutton("enable"); - _a.unbind(".splitbutton"); - _a.bind("click.splitbutton", function () { - _b(); - return false; - }); - var _c = null; -// _a.bind("mouseenter.splitbutton", function () { -// _c = setTimeout(function () { -// _b(); -// }, _8.duration); -// return false; -// }) - - _a.bind("mouseleave.splitbutton", function () { - if (_c) { - clearTimeout(_c); - } - }); - } - function _b() { - if (!_8.menu) { - return; - } - var _d = _9.offset().left; - if (_d + $(_8.menu).outerWidth() + 5 > $(window).width()) { - _d = $(window).width() - $(_8.menu).outerWidth() - 5; - } - $("body>div.menu-top").menu("hide"); - $(_8.menu).menu("show", { left: _d, top: _9.offset().top + _9.outerHeight() }); - _9.blur(); - }; - }; - $.fn.splitbutton = function (_e, _f) { - if (typeof _e == "string") { - return $.fn.splitbutton.methods[_e](this, _f); - } - _e = _e || {}; - return this.each(function () { - var _10 = $.data(this, "splitbutton"); - if (_10) { - $.extend(_10.options, _e); - } else { - $(this).append(" "); - $.data(this, "splitbutton", { options: $.extend({}, $.fn.splitbutton.defaults, $.fn.splitbutton.parseOptions(this), _e) }); - $(this).removeAttr("disabled"); - } - _1(this); - }); - }; - $.fn.splitbutton.methods = { options: function (jq) { - return $.data(jq[0], "splitbutton").options; - }, enable: function (jq) { - return jq.each(function () { - _5(this, false); - }); - }, disable: function (jq) { - return jq.each(function () { - _5(this, true); - }); - } - }; - $.fn.splitbutton.parseOptions = function (_11) { - var t = $(_11); - return $.extend({}, $.fn.linkbutton.parseOptions(_11), { menu: t.attr("menu"), duration: t.attr("duration") }); - }; - $.fn.splitbutton.defaults = $.extend({}, $.fn.linkbutton.defaults, { plain: true, menu: null, duration: 100 }); -})(jQuery); - -function applySplitButtonOverflow(containerId, innerId, menuId, itemCssSelector, buttonId) { - //hack for the dropdown scrill - jQuery("
").appendTo("#" + menuId); - jQuery(itemCssSelector).each(function () { - jQuery("#" + innerId).append(this); - }); - - //only needed when we need to add scroll to macro menu - var maxHeight = 500; - var menu = jQuery("#" + menuId); - var container = jQuery("#" + containerId); - var menuHeight = menu.height(); - - if (menuHeight > maxHeight) { - jQuery("").appendTo("#" + menuId); - menu.css({ - height: maxHeight, - overflow: "hidden" - }) - container.css({ - height: maxHeight - 20, - overflow: "hidden" - }); - var interval; - jQuery("#" + buttonId).hover(function (e) { - interval = setInterval(function () { - var offset = jQuery("#" + innerId).offset(); - var currentTop = jQuery("#" + innerId).css("top").replace("px", ""); - if (Number(currentTop) > -(menuHeight - 40)) { - jQuery("#" + innerId).css("top", currentTop - 20); - } - }, 125); - }, function () { - clearInterval(interval); - }); - - jQuery("#" + buttonId).hover(function (e) { - jQuery("#" + innerId).css("top", 0) - }); - } - -} \ No newline at end of file diff --git a/src/Umbraco.Web.UI/umbraco_client/splitbutton/splitbutton.css b/src/Umbraco.Web.UI/umbraco_client/splitbutton/splitbutton.css deleted file mode 100644 index a7163becc7..0000000000 --- a/src/Umbraco.Web.UI/umbraco_client/splitbutton/splitbutton.css +++ /dev/null @@ -1,157 +0,0 @@ -.sbPlaceHolder -{ - display:inline; - width:90px; - height:23px; - vertical-align:top; -} - -.sbLink -{ - vertical-align:top; -} - -.menudown -{ - - clear:both; - text-align: center; - cursor:pointer; - -} - -.menudown span -{ - background:url('images/splitbutton_downarrow.png') no-repeat 0px 0px; - -} -.menudown:hover -{ - background-color:#DDD; -} -a.l-btn{ - color:#444; - font-size:12px; - text-decoration:none; - display:inline-block; - zoom:1; - height:24px; - padding-right:18px; - cursor:pointer; - outline:none; -} -a.l-btn-plain{ - background:transparent; - padding-right:5px; - border:1px solid transparent; - _border:0px solid #efefef; - _padding:1px 6px 1px 1px; -} - - -a.l-btn span.l-btn-left{ - display:block; - padding:4px 0px 4px 18px; - line-height:16px; -} -a.l-btn-plain span.l-btn-left{ - background:transparent; - padding-left:5px; -} - -a.l-btn span span.l-btn-text{ - display:inline-block; - height:16px; - line-height:16px; - padding:0px; -} -a.l-btn span span span.l-btn-empty{ - display:inline-block; - padding:0px; - width:16px; -} -a:hover.l-btn{ - background-position: bottom right; - outline:none; -} - -a:hover.l-btn-plain{ - border:1px solid #4b4b6f; - background:url('images/splitbutton_hover.png') repeat-x left bottom; - _padding:0px 5px 0px 0px; -} -a:hover.l-btn-disabled{ - background-position:top right; -} -a:hover.l-btn-disabled span.l-btn-left{ - background-position:top left; -} - -.menu{ - position:absolute; - background-color:#f0f0f0; - margin:0; - padding:2px; - border: 1px solid #979797; - overflow:hidden; -} -.menu-item{ - position:relative; - margin:0; - padding:0; - height:22px; - line-height:20px; - overflow:hidden; - font-size:12px; - cursor:pointer; - border:1px solid transparent; - _border:1px solid #f0f0f0; -} -.menu-text{ - position:absolute; - left:2px; - top:0px; -} -.menu-icon{ - position:absolute; - width:16px; - height:16px; - top:3px; - left:2px; -} - - -.menu-active{ - border: 1px solid #a8d8eb; - background: #dcecf3; -} - - -.s-btn-downarrow{ - display:inline-block; - width:16px; - background:url('images/splitbutton_downarrow.png') no-repeat 4px 0px; -} - -a.s-btn-active{ - background-position: bottom right; -} -a.s-btn-active span.l-btn-left{ - background-position: bottom left; -} -a.s-btn-active .s-btn-downarrow{ - background:url('images/splitbutton_downarrow.png') no-repeat 4px -18px; -} -a:hover.l-btn .s-btn-downarrow{ - background:url('images/splitbutton_downarrow.png') no-repeat 4px -18px; -} - -a.s-btn-plain-active{ - background:transparent; - border:1px solid #8f8f8f; - _padding:0px 5px 0px 0px; - -} -a.s-btn-plain-active .s-btn-downarrow{ - background:url('images/splitbutton_downarrow.png') no-repeat 4px -18px; -} \ No newline at end of file diff --git a/src/Umbraco.Web/UI/Controls/InsertMacroSplitButton.cs b/src/Umbraco.Web/UI/Controls/InsertMacroSplitButton.cs deleted file mode 100644 index 9030b5892b..0000000000 --- a/src/Umbraco.Web/UI/Controls/InsertMacroSplitButton.cs +++ /dev/null @@ -1,144 +0,0 @@ -using System; -using System.Linq; -using System.Web.Mvc; -using System.Web.UI; -using ClientDependency.Core; -using Umbraco.Core.IO; -using Umbraco.Web.Composing; - -namespace Umbraco.Web.UI.Controls -{ - /// - /// Represents the 'insert macro' button when editing a template which includes the drop down list selector - /// - /// - /// Though this would be nicer to do in a UserControl, unfortunatley the way that the ScrollingMenu control is designed it seems that - /// we have to insert all items via code and loading a UserControl in dynamically is equally ugly. - /// - [ClientDependency(ClientDependencyType.Css, "splitbutton/splitbutton.css", "UmbracoClient")] - [ClientDependency(ClientDependencyType.Javascript, "splitbutton/jquery.splitbutton.js", "UmbracoClient", Priority = 100)] - [ClientDependency(ClientDependencyType.Javascript, "splitbutton/InsertMacroSplitButton.js", "UmbracoClient", Priority = 101)] - internal class InsertMacroSplitButton : UmbracoControl - { - protected LiteralControl ListContainer; - - protected override void OnInit(EventArgs e) - { - base.OnInit(e); - EnsureChildControls(); - } - - /// - /// The JS callback to display the dialog modal screen to customize the macro to be inserted into the editor if the - /// macro has parameters. - /// - public string ClientCallbackOpenMacroModel { get; set; } - - /// - /// The JS callback method which accepts an 'alias' parameter that is invoked when clicking the macro button - /// to insert a macro that has no parameters. - /// - public string ClientCallbackInsertMacroMarkup { get; set; } - - protected override void CreateChildControls() - { - base.CreateChildControls(); - - //var menuItemsId = ClientID + "menuitems"; - //var placeHolderId = ClientID + "sbPlaceholder"; - - /*create the list, similar to this, but swap the repeater for real html: - -
- - -
" - data-has-params="<%# DoesMacroHaveSettings(DataBinder.Eval(Container, "DataItem.id").ToString()) %>"> - <%# DataBinder.Eval(Container, "DataItem.macroName")%> -
-
-
-
- */ - - //Create the drop down menu list first (it is hidden) - var divMacroItemContainer = new TagBuilder("div"); - divMacroItemContainer.Attributes.Add("style", "width: 285px;display:none;"); - divMacroItemContainer.Attributes.Add("class", "sbMenu"); - - var macros = Services.MacroService.GetAll().OrderBy(x => x.Name); - foreach (var macro in macros) - { - var divMacro = new TagBuilder("div"); - divMacro.AddCssClass("macro-item"); - divMacro.Attributes.Add("rel", macro.Alias); - divMacro.Attributes.Add("data-has-params", DoesMacroHaveParameters(macro.Id).ToString().ToLower()); - divMacro.SetInnerText(macro.Name); - divMacroItemContainer.InnerHtml += divMacro.ToString(); - } - - /*create the button itself, similar to this: - -
- - Insert Macro - -
- - */ - - var divSplitButtonWrapper = new TagBuilder("div"); - divSplitButtonWrapper.AddCssClass("sbPlaceHolder"); - divSplitButtonWrapper.Attributes.Add("id", ClientID + "sbPlaceholder"); - var divButton = new TagBuilder("div"); - divButton.Attributes.Add("style", "display: inline; height: 23px; vertical-align: top;"); - var aButton = new TagBuilder("a"); - aButton.Attributes.Add("href", "#"); //will be bound with jquery - aButton.AddCssClass("sbLink"); - var imgButton = new TagBuilder("img"); - imgButton.Attributes.Add("alt", "Insert Macro"); - imgButton.Attributes.Add("src", this.ResolveUrl(SystemDirectories.Umbraco + "/images/editor/insMacroSB.png")); - imgButton.Attributes.Add("title", "Insert Macro"); - imgButton.Attributes.Add("style", "vertical-align: top;"); - aButton.InnerHtml = imgButton.ToString(); - divButton.InnerHtml = aButton.ToString(); - divSplitButtonWrapper.InnerHtml = divButton.ToString(); - - ListContainer = new LiteralControl(divMacroItemContainer.ToString() + divSplitButtonWrapper.ToString()); - Controls.Add(ListContainer); - -// Page.ClientScript.RegisterStartupScript( -// typeof(InsertMacroSplitButton), -// ClientID, -// @"jQuery(document).ready(function() { -// jQuery('#" + placeHolderId + " a.sbLink').splitbutton({menu:'#" + menuItemsId + "'}); " + -// "});", -// true); - - Page.ClientScript.RegisterStartupScript( - typeof(InsertMacroSplitButton), - typeof(InsertMacroSplitButton).Name, //same key for all instancees, we should only render once - @"jQuery(document).ready(function() { - var splitButton = new Umbraco.Controls.InsertMacroSplitButton({ - openMacroModel: " + ClientCallbackOpenMacroModel + @", - insertMacroMarkup: " + ClientCallbackInsertMacroMarkup + @" - }); - splitButton.init(); - });", - true); - } - - - private bool DoesMacroHaveParameters(int macroId) - { - bool hasParameters; - using (var scope = Current.ScopeProvider.CreateScope()) - { - hasParameters = scope.Database.ExecuteScalar("SELECT COUNT(*) from cmsMacroProperty where macro=@macroId", new { macroId }) > 0; - scope.Complete(); - } - return hasParameters; - } - } -} diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index b71750fe2b..3591512ee7 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -1078,7 +1078,6 @@ -