X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/36ea564aabce5f15b890fabaa06faf34d7bd1044..0a8fdf777d7f183cb83b3db47c23c12e7cfc6c45:/project/templates/explorer/panels/xmleditor.html diff --git a/project/templates/explorer/panels/xmleditor.html b/project/templates/explorer/panels/xmleditor.html index 89990a4a..9186f04a 100644 --- a/project/templates/explorer/panels/xmleditor.html +++ b/project/templates/explorer/panels/xmleditor.html @@ -6,37 +6,46 @@ </div> <script type="text/javascript" charset="utf-8"> -(function() { - function xmleditor_onload(event, me) { + +panel_hooks = { + load: function () { + var self = this; + var panel = self.contentDiv; + var textareaId = 'xmleditor-' + Math.ceil(Math.random() * 1000000000); - $('textarea', me).attr('id', textareaId); - var editor = CodeMirror.fromTextArea(textareaId, { + $('textarea', panel).attr('id', textareaId); + + var texteditor = CodeMirror.fromTextArea(textareaId, { parserfile: 'parsexml.js', path: "/static/js/codemirror/", stylesheet: "/static/css/xmlcolors.css", parserConfig: {useHTMLKludges: false}, - initCallback: function() { + onChange: function() { + panel.trigger('panel:contentChanged', self); + }, + initCallback: function(editor) { // Toolbar - $('#toolbar-tabs li', panel).click(function() { + $('.toolbar-tabs li', panel).click(function() { var id = $(this).attr('p:button-list'); - $('#toolbar-tabs li', panel).removeClass('active'); + $('.toolbar-tabs li', panel).removeClass('active'); $(this).addClass('active'); - if (!$('#' + id).is(':visible')) { - $('#toolbar-buttons ol', panel).not('#' + id).hide(); - $('#' + id, panel).show(); + if (!$('.' + id, panel).is(':visible')) { + $('.toolbar-buttons ol', panel).not('#' + id).hide(); + $('.' + id, panel).show(); } }) var keys = {}; - $('#toolbar-buttons li', panel).each(function() { + $('.toolbar-buttons li', panel).each(function() { var tag = $(this).attr('p:tag'); var handler = function() { - var text = editor.selection(); + var text = texteditor.selection(); editor.replaceSelection('<' + tag + '>' + text + '</' + tag + '>'); if (text.length == 0) { - var pos = editor.cursorPosition(); - editor.selectLines(pos.line, pos.character + tag.length + 2); + var pos = texteditor.cursorPosition(); + texteditor.selectLines(pos.line, pos.character + tag.length + 2); } + $(document).trigger('panel:contentChanged', panel); } if ($(this).attr('p:key')) { keys[$(this).attr('p:key')] = handler; @@ -44,7 +53,7 @@ $(this).click(handler) }); - editor.grabKeys(function(event) { + texteditor.grabKeys(function(event) { if (keys[event.keyCode]) { keys[event.keyCode](); } @@ -52,7 +61,7 @@ } }) - $(editor.frame).css({width: '100%', height: '100%'}); + $(texteditor.frame).css({width: '100%', height: '100%'}); $('#toolbar-buttons li').wTooltip({ delay: 1000, @@ -64,10 +73,18 @@ fontSize: "12px", } }); - }; - - function xmleditor_onunload(event, me) {} - - panel(xmleditor_onload, xmleditor_onunload); -})(); + + this.texteditor = texteditor; + }, + + unload: function() { + this.texteditor = null; + }, + + saveInfo: function(hn, saveInfo) { + var myInfo = {content: this.texteditor.getCode(), dataType: 'xml'}; + $.extend(saveInfo, myInfo); + } +}; + </script>