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