X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/78644811ca0c6042212788dc67add42bc41fb74c..b899f6803da3511d0658b14458b7b05f6743be6a:/platforma/static/js/button_scripts.js diff --git a/platforma/static/js/button_scripts.js b/platforma/static/js/button_scripts.js index 40f45f6f..fe1c4ecd 100644 --- a/platforma/static/js/button_scripts.js +++ b/platforma/static/js/button_scripts.js @@ -1,3 +1,32 @@ +(function() { + var slice = Array.prototype.slice; + + function update(array, args) { + var arrayLength = array.length, length = args.length; + while (length--) array[arrayLength + length] = args[length]; + return array; + }; + + function merge(array, args) { + array = slice.call(array, 0); + return update(array, args); + }; + + Function.prototype.bind = function(context) { + if (arguments.length < 2 && typeof arguments[0] === 'undefined') { + return this; + } + var __method = this; + var args = slice.call(arguments, 1); + return function() { + var a = merge(args, arguments); + return __method.apply(context, a); + } + } + +})(); + + function ScriptletCenter() { this.scriptlets = {}; @@ -6,6 +35,7 @@ function ScriptletCenter() { var text = this.XMLEditorSelectedText(context); var start_tag = '<'+params.tag; + var move_cursor = false; for (var attr in params.attrs) { start_tag += ' '+attr+'="' + params.attrs[attr] + '"'; @@ -39,14 +69,23 @@ function ScriptletCenter() output += token; } else { - output = start_tag + end_tag; + if(params.nocontent) { + output = "<"+params.tag +" />"; + } + else { + output = start_tag + end_tag; + move_cursor = true; + } } this.XMLEditorReplaceSelectedText(context, output); - if (text.length == 0) { - this.XMLEditorMoveCursorForward(context, -params.tag.length-3); - } + try { + if (move_cursor) { + this.XMLEditorMoveCursorForward(context, params.tag.length+2); + } + } catch(e) {} + }.bind(this); this.scriptlets['lineregexp'] = function(context, params) { @@ -83,19 +122,6 @@ function ScriptletCenter() } }.bind(this); - this.scriptlets['codemirror_fontsize'] = function(context, params) { - var frameBody = this.XMLEditorBody(context); - - if(params.fontSize) { - frameBody.css('font-size', params.fontSize); - } - else { - var old_size = parseInt(frameBody.css('font-size'), 10); - frameBody.css('font-size', old_size + (params.change || 0) ); - } - - }.bind(this); - this.scriptlets['fulltextregexp'] = function(context, params) { var exprs = $.map(params.exprs, function(expr) { var opts = "mg"; @@ -188,19 +214,19 @@ function ScriptletCenter() } ScriptletCenter.prototype.XMLEditorSelectedText = function(panel) { - return panel.contentView.editor.selection(); + return panel.selection(); }; ScriptletCenter.prototype.XMLEditorReplaceSelectedText = function(panel, replacement) { - panel.contentView.editor.replaceSelection(replacement); + panel.replaceSelection(replacement); // Tell XML view that it's data has changed - panel.contentView.editorDataChanged(); + // panel.contentView.editorDataChanged(); }; ScriptletCenter.prototype.XMLEditorMoveCursorForward = function(panel, n) { - var pos = panel.contentView.editor.cursorPosition(); - panel.contentView.editor.selectLines(pos.line, pos.character + n); + var pos = panel.cursorPosition(); + panel.selectLines(pos.line, pos.character + n); }; var scriptletCenter;