| /** |
| * @class button - split merged cell |
| * |
| * @param elRTE rte объект-редактор |
| * @param String name название кнопки |
| * @todo split not merged cell |
| * |
| * @author: Dmitry Levashov (dio) dio@std42.ru |
| * @copyright: Studio 42, http://www.std42.ru |
| **/ |
| (function($) { |
| elRTE.prototype.ui.prototype.buttons.tbcellsplit = function(rte, name) { |
| this.constructor.prototype.constructor.call(this, rte, name); |
| |
| this.command = function() { |
| var n = this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^(TD|TH)$/); |
| if (n) { |
| this.rte.history.add(); |
| var colspan = parseInt(this.rte.dom.attr(n, 'colspan')); |
| var rowspan = parseInt(this.rte.dom.attr(n, 'rowspan')); |
| if (colspan>1 || rowspan>1) { |
| var cnum = colspan-1; |
| var rnum = rowspan-1; |
| var tb = this.rte.dom.parent(n, /^TABLE$/); |
| var tbm = this.rte.dom.tableMatrix(tb); |
| |
| // ячейки в текущем ряду |
| if (cnum) { |
| for (var i=0; i<cnum; i++) { |
| $(this.rte.dom.create(n.nodeName)).html(' ').insertAfter(n); |
| } |
| } |
| if (rnum) { |
| var ndx = this.rte.dom.indexesOfCell(n, tbm) |
| var rndx = ndx[0]; |
| var cndx = ndx[1]; |
| // ячейки в следущих рядах |
| for (var r=rndx+1; r < rndx+rnum+1; r++) { |
| var cell; |
| |
| if (!tbm[r][cndx].nodeName) { |
| if (tbm[r][cndx-1].nodeName) { |
| cell = tbm[r][cndx-1]; |
| } else { |
| for (var i=cndx-1; i>=0; i--) { |
| if (tbm[r][i].nodeName) { |
| cell =tbm[r][i]; |
| break; |
| } |
| } |
| } |
| if (cell) { |
| for (var i=0; i<= cnum; i++) { |
| $(this.rte.dom.create(cell.nodeName)).html(' ').insertAfter(cell); |
| } |
| } |
| } |
| }; |
| } |
| $(n).removeAttr('colspan').removeAttr('rowspan'); |
| this.rte.dom.fixTable(tb); |
| } |
| } |
| this.rte.ui.update(true); |
| } |
| |
| this.update = function() { |
| var n = this.rte.dom.selfOrParent(this.rte.selection.getNode(), /^(TD|TH)$/); |
| if (n && (parseInt(this.rte.dom.attr(n, 'colspan'))>1 || parseInt(this.rte.dom.attr(n, 'rowspan'))>1)) { |
| this.domElem.removeClass('disabled'); |
| } else { |
| this.domElem.addClass('disabled'); |
| } |
| } |
| } |
| |
| })(jQuery); |