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);
}