X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/300def05b91611b2382df4837c0041d231c8b432..5e0dd39c630bae5dabc96f33a16419f066d6f435:/project/static/js/editor.js diff --git a/project/static/js/editor.js b/project/static/js/editor.js index 628c78d4..3ad29898 100644 --- a/project/static/js/editor.js +++ b/project/static/js/editor.js @@ -1,5 +1,6 @@ function Panel(panelWrap) { var self = this; + self.hotkeys = []; self.wrap = panelWrap; self.contentDiv = $('.panel-content', panelWrap); self.instanceId = Math.ceil(Math.random() * 1000000000); @@ -110,6 +111,7 @@ Panel.prototype.saveInfo = function() { Panel.prototype.connectToolbar = function() { var self = this; + self.hotkeys = []; // check if there is a one var toolbar = $("div.toolbar", this.contentDiv); @@ -128,11 +130,11 @@ Panel.prototype.connectToolbar = function() group.click(function() { // change the active group - var active = $("*.toolbar-tabs-container button.active"); + var active = $("*.toolbar-tabs-container button.active", toolbar); if (active != group) { active.removeClass('active'); group.addClass('active'); - $(".toolbar-button-groups-container p").each(function() { + $(".toolbar-button-groups-container p", toolbar).each(function() { if ( $(this).attr('ui:group') != group_name) $(this).hide(); else @@ -143,18 +145,55 @@ Panel.prototype.connectToolbar = function() }); // connect action buttons - var action_buttons = $('*.toolbar-button-groups-container button'); + var action_buttons = $('*.toolbar-button-groups-container button', toolbar); action_buttons.each(function() { - var button = $(this); - - button.click(function() { + var button = $(this); + var hk = button.attr('ui:hotkey'); + + var callback = function() { editor.callScriptlet(button.attr('ui:action'), self, eval(button.attr('ui:action-params')) ); - }); + }; + + // connect button + button.click(callback); + // connect hotkey + if(hk) self.hotkeys[parseInt(hk)] = callback; + + // tooltip + if (button.attr('ui:tooltip') ) + { + var tooltip = button.attr('ui:tooltip'); + if(hk) tooltip += ' [Alt+'+hk+']'; + + button.wTooltip({ + delay: 1000, + style: { + border: "1px solid #7F7D67", + opacity: 0.9, + background: "#FBFBC6", + padding: "1px", + fontSize: "12px" + }, + content: tooltip + }); + } }); } +Panel.prototype.hotkeyPressed = function(event) +{ + var callback = this.hotkeys[event.keyCode]; + if(callback) callback(); +} + +Panel.prototype.isHotkey = function(event) { + if( event.altKey && (this.hotkeys[event.keyCode] != null) ) + return true; + return false; +} + // Panel.prototype.fireEvent = function(name) { $(document).trigger('panel:'+name, this); @@ -443,6 +482,10 @@ Editor.prototype.callScriptlet = function(scriptlet_id, panel, params) { } $(function() { + $.fbind = function (self, func) { + return function() { return func.apply(self, arguments); }; + }; + editor = new Editor(); // do the layout