diff --git a/public/javascripts/jstoolbar/jstoolbar.js b/public/javascripts/jstoolbar/jstoolbar.js index dccff99521..7d703c48ba 100644 --- a/public/javascripts/jstoolbar/jstoolbar.js +++ b/public/javascripts/jstoolbar/jstoolbar.js @@ -451,12 +451,11 @@ jsToolBar.prototype.resizeDragStop = function(event) { document.removeEventListener('mouseup', this.dragStopHdlr, false); }; -/* Code highlighting menu */ -jsToolBar.prototype.precodeMenu = function(fn){ - var hlLanguages = ["c", "cpp", "csharp", "css", "diff", "go", "groovy", "html", "java", "javascript", "objc", "perl", "php", "python", "r", "ruby", "sass", "scala", "shell", "sql", "swift", "xml", "yaml"]; +/* Add menu */ +jsToolBar.prototype.addMenu = function(toolNodeName, list, fn) { var menu = $(""); - for (var i = 0; i < hlLanguages.length; i++) { - $("
  • ").text(hlLanguages[i]).appendTo(menu).mousedown(function(){ + for (var i = 0; i < list.length; i++) { + $("
  • ").text(list[i]).appendTo(menu).mousedown(function() { fn($(this).text()); }); } @@ -464,10 +463,30 @@ jsToolBar.prototype.precodeMenu = function(fn){ menu.menu().width(150).position({ my: "left top", at: "left bottom", - of: this.toolNodes['precode'] + of: this.toolNodes[toolNodeName] }); $(document).on("mousedown", function() { menu.remove(); }); return false; }; + +/* Code highlighting menu */ +jsToolBar.prototype.precodeMenu = function(fn) { + var hlLanguages = ["c", "cpp", "csharp", "css", "diff", "go", "groovy", "html", "java", "javascript", "objc", "perl", "php", "python", "r", "ruby", "sass", "scala", "shell", "sql", "swift", "xml", "yaml"]; + this.addMenu('precode', hlLanguages, fn); +}; + +/* Code macro menu */ +jsToolBar.prototype.macroMenu = function() { + var macros = { + 'child_pages': ['{{child_pages(', ')}}'], + 'include': ['{{include(', ')}}'], + 'collapse': ['{{collapse()\n', '\n}}'], + 'thumbnail': ['{{thumbnail(', ')}}'] + }; + var This = this; + this.addMenu('macro', Object.keys(macros), function(macroName) { + This.encloseLineSelection(macros[macroName][0], macros[macroName][1]); + }); +}; \ No newline at end of file diff --git a/public/javascripts/jstoolbar/lang/jstoolbar-en.js b/public/javascripts/jstoolbar/lang/jstoolbar-en.js index 3d55863956..9dd5852575 100644 --- a/public/javascripts/jstoolbar/lang/jstoolbar-en.js +++ b/public/javascripts/jstoolbar/lang/jstoolbar-en.js @@ -13,6 +13,7 @@ jsToolBar.strings['Ordered list'] = 'Ordered list'; jsToolBar.strings['Quote'] = 'Quote'; jsToolBar.strings['Unquote'] = 'Remove Quote'; jsToolBar.strings['Preformatted text'] = 'Preformatted text'; +jsToolBar.strings['Macro'] = 'Macro'; jsToolBar.strings['Wiki link'] = 'Link to a Wiki page'; jsToolBar.strings['Image'] = 'Image'; jsToolBar.strings['Edit'] = 'Edit'; diff --git a/public/javascripts/jstoolbar/markdown.js b/public/javascripts/jstoolbar/markdown.js index d087276d63..9c82bd74ca 100644 --- a/public/javascripts/jstoolbar/markdown.js +++ b/public/javascripts/jstoolbar/markdown.js @@ -196,6 +196,17 @@ jsToolBar.prototype.elements.precode = { // spacer jsToolBar.prototype.elements.space4 = {type: 'space'} +// macro +jsToolBar.prototype.elements.macro = { + type: 'button', + title: 'Macro', + fn: { + wiki: function () { + this.macroMenu(); + } + } +} + // wiki page jsToolBar.prototype.elements.link = { type: 'button', diff --git a/public/javascripts/jstoolbar/textile.js b/public/javascripts/jstoolbar/textile.js index 40bc04094d..f596fc0ed6 100644 --- a/public/javascripts/jstoolbar/textile.js +++ b/public/javascripts/jstoolbar/textile.js @@ -196,6 +196,17 @@ jsToolBar.prototype.elements.precode = { // spacer jsToolBar.prototype.elements.space4 = {type: 'space'} +// macro +jsToolBar.prototype.elements.macro = { + type: 'button', + title: 'Macro', + fn: { + wiki: function(){ + this.macroMenu(); + } + } +} + // wiki page jsToolBar.prototype.elements.link = { type: 'button', diff --git a/public/stylesheets/jstoolbar.css b/public/stylesheets/jstoolbar.css index bd490b89fb..48122ba83a 100644 --- a/public/stylesheets/jstoolbar.css +++ b/public/stylesheets/jstoolbar.css @@ -124,6 +124,9 @@ .jstb_precode { background-image: url(../images/jstoolbar/bt_precode.png); } +.jstb_macro { + /*background-image: url(../images/jstoolbar/bt_macro.png);*/ +} .jstb_link { background-image: url(../images/jstoolbar/bt_link.png); }