/** * Controls: Table plugin * * Depends on jWYSIWYG */ (function ($) { if (undefined === $.wysiwyg) throw "wysiwyg.table.js depends on $.wysiwyg"; if (!$.wysiwyg.controls) $.wysiwyg.controls = {}; var insertTable = function (colCount, rowCount, filler) { if (isNaN(rowCount) || isNaN(colCount) || rowCount === null || colCount === null) return; var i, j, html = ['']; colCount = parseInt(colCount, 10); rowCount = parseInt(rowCount, 10); if (filler === null) filler = " "; filler = ""; for (i = rowCount; i > 0; i -= 1) { html.push(""); for (j = colCount; j > 0; j -= 1) html.push(filler); html.push(""); } html.push("
" + filler + "
"); return this.insertHtml(html.join("")); }; /* * Wysiwyg namespace: public properties and methods */ $.wysiwyg.controls.table = function (Wysiwyg) { var dialog, colCount, rowCount, formTableHtml, formTextLegend = "inserisci tabella", formTextCols = "count of columns", formTextRows = "count of rows", formTextSubmit = "inserisci tabella", formTextReset = "annulla"; if ($.wysiwyg.i18n) { formTextLegend = $.wysiwyg.i18n.t(formTextLegend, "dialogs.table"); formTextCols = $.wysiwyg.i18n.t(formTextCols, "dialogs.table"); formTextRows = $.wysiwyg.i18n.t(formTextRows, "dialogs.table"); formTextSubmit = $.wysiwyg.i18n.t(formTextSubmit, "dialogs.table"); formTextReset = $.wysiwyg.i18n.t(formTextReset, "dialogs"); } formTableHtml = '
' + formTextLegend + '' + '' + '' + ' ' + '
'; if (!Wysiwyg.insertTable) Wysiwyg.insertTable = insertTable; if ($.fn.modal) { $.modal(formTableHtml, { onShow: function (dialog) { $("input:submit", dialog.data).click(function (e) { e.preventDefault(); rowCount = $('input[name="rowCount"]', dialog.data).val(); colCount = $('input[name="colCount"]', dialog.data).val(); Wysiwyg.insertTable(colCount, rowCount, Wysiwyg.defaults.tableFiller); $.modal.close(); }); $("input:reset", dialog.data).click(function (e) { e.preventDefault(); $.modal.close(); }); }, maxWidth: Wysiwyg.defaults.formWidth, maxHeight: Wysiwyg.defaults.formHeight, overlayClose: true }); } else if ($.fn.dialog) { dialog = $(formTableHtml).appendTo("body"); dialog.dialog({ modal: true, open: function (event, ui) { $("input:submit", dialog).click(function (e) { e.preventDefault(); rowCount = $('input[name="rowCount"]', dialog).val(); colCount = $('input[name="colCount"]', dialog).val(); Wysiwyg.insertTable(colCount, rowCount, Wysiwyg.defaults.tableFiller); $(dialog).dialog("close"); }); $("input:reset", dialog).click(function (e) { e.preventDefault(); $(dialog).dialog("close"); }); }, close: function (event, ui) { dialog.dialog("destroy"); } }); } else { colCount = prompt(formTextCols, "3"); rowCount = prompt(formTextRows, "3"); Wysiwyg.insertTable(colCount, rowCount, Wysiwyg.defaults.tableFiller); } $(Wysiwyg.editorDoc).trigger("editorRefresh.wysiwyg"); }; $.wysiwyg.insertTable = function (object, colCount, rowCount, filler) { return object.each(function () { var Wysiwyg = $(this).data("wysiwyg"); if (!Wysiwyg.insertTable) Wysiwyg.insertTable = insertTable; if (!Wysiwyg) return this; Wysiwyg.insertTable(colCount, rowCount, filler); $(Wysiwyg.editorDoc).trigger("editorRefresh.wysiwyg"); return this; }); }; })(jQuery);