diff --git a/public/javascripts/jstoolbar/jstoolbar.js b/public/javascripts/jstoolbar/jstoolbar.js
index 4f5ab7306..064dfec1f 100644
--- a/public/javascripts/jstoolbar/jstoolbar.js
+++ b/public/javascripts/jstoolbar/jstoolbar.js
@@ -471,3 +471,38 @@ jsToolBar.prototype.precodeMenu = function(fn){
});
return false;
};
+
+/* Table generator */
+jsToolBar.prototype.tableMenu = function(fn){
+ var alphabets = "ABCDEFGHIJ".split('');
+ var menu = $("
");
+
+ for (var r = 1; r <= 5; r++) {
+ var row = $("
").appendTo(menu);
+ for (var c = 1; c <= 10; c++) {
+ $(" | ").mousedown(function(){
+ fn(alphabets.slice(0, $(this).data('col')), $(this).data('row'));
+ }).hover(function(){
+ var hoverRow = $(this).data('row');
+ var hoverCol = $(this).data('col');
+ $(this).closest('table').find('td').each(function(_index, element){
+ if ($(element).data('row') <= hoverRow && $(element).data('col') <= hoverCol){
+ $(element).addClass('selected-cell');
+ } else {
+ $(element).removeClass('selected-cell');
+ }
+ });
+ }).appendTo(row);
+ }
+ }
+ $("body").append(menu);
+ menu.position({
+ my: "left top",
+ at: "left bottom",
+ of: this.toolNodes['table']
+ });
+ $(document).on("mousedown", function() {
+ menu.remove();
+ });
+ return false;
+};
diff --git a/public/javascripts/jstoolbar/lang/jstoolbar-en.js b/public/javascripts/jstoolbar/lang/jstoolbar-en.js
index 3d5586395..e4b456a45 100644
--- a/public/javascripts/jstoolbar/lang/jstoolbar-en.js
+++ b/public/javascripts/jstoolbar/lang/jstoolbar-en.js
@@ -12,6 +12,7 @@ jsToolBar.strings['Unordered list'] = 'Unordered list';
jsToolBar.strings['Ordered list'] = 'Ordered list';
jsToolBar.strings['Quote'] = 'Quote';
jsToolBar.strings['Unquote'] = 'Remove Quote';
+jsToolBar.strings['Table'] = 'Table';
jsToolBar.strings['Preformatted text'] = 'Preformatted text';
jsToolBar.strings['Wiki link'] = 'Link to a Wiki page';
jsToolBar.strings['Image'] = 'Image';
diff --git a/public/javascripts/jstoolbar/markdown.js b/public/javascripts/jstoolbar/markdown.js
index d087276d6..3f5b71418 100644
--- a/public/javascripts/jstoolbar/markdown.js
+++ b/public/javascripts/jstoolbar/markdown.js
@@ -170,6 +170,20 @@ jsToolBar.prototype.elements.unbq = {
}
}
+// table
+jsToolBar.prototype.elements.table = {
+ type: 'button',
+ title: 'Table',
+ fn: {
+ wiki: function() {
+ var This = this;
+ this.tableMenu(function(cols, rowCount){
+ This.encloseLineSelection(('|'+cols.join(' |')+' |\n') + ('|--'.repeat(cols.length)+'|\n') + (('| '.repeat(cols.length))+'|\n').repeat(rowCount));
+ });
+ }
+ }
+}
+
// pre
jsToolBar.prototype.elements.pre = {
type: 'button',
diff --git a/public/javascripts/jstoolbar/textile.js b/public/javascripts/jstoolbar/textile.js
index 40bc04094..8d1e53761 100644
--- a/public/javascripts/jstoolbar/textile.js
+++ b/public/javascripts/jstoolbar/textile.js
@@ -170,6 +170,20 @@ jsToolBar.prototype.elements.unbq = {
}
}
+// table
+jsToolBar.prototype.elements.table = {
+ type: 'button',
+ title: 'Table',
+ fn: {
+ wiki: function() {
+ var This = this;
+ this.tableMenu(function(cols, rowCount){
+ This.encloseLineSelection(('|_.'+cols.join('|_.')+'|\n') + (('| '.repeat(cols.length))+'|\n').repeat(rowCount));
+ });
+ }
+ }
+}
+
// pre
jsToolBar.prototype.elements.pre = {
type: 'button',
diff --git a/public/stylesheets/jstoolbar.css b/public/stylesheets/jstoolbar.css
index bd490b89f..c46cc2cef 100644
--- a/public/stylesheets/jstoolbar.css
+++ b/public/stylesheets/jstoolbar.css
@@ -80,6 +80,23 @@
.jstElements .help { float: right; margin-right: 0.5em; padding-top: 8px; font-size: 0.9em; }
.jstElements .help a {padding: 2px 0 2px 20px; background: url(../images/help.png) no-repeat 0 50%;}
+.table-generator td {
+ position: relative;
+ border: 2px solid #ccc;
+ background-color: white;
+ padding: 10px;
+ cursor: pointer;
+}
+
+.table-generator td.selected-cell, .table-generator td:hover {
+ background-color: #759FCF;
+}
+
+.table-generator {
+ position: absolute;
+ border-collapse: collapse;
+}
+
/* Buttons
-------------------------------------------------------- */
.jstb_strong {
@@ -130,6 +147,9 @@
.jstb_img {
background-image: url(../images/jstoolbar/bt_img.png);
}
+.jstb_table {
+ /*background-image: url(../images/jstoolbar/bt_table.png);*/
+}
.jstb_help {
background-image: url(../images/help.png);
}