123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- /*!
- * Table dialog plugin for Editor.md
- *
- * @file table-dialog.js
- * @author pandao
- * @version 1.2.1
- * @updateTime 2015-06-09
- * {@link https://github.com/pandao/editor.md}
- * @license MIT
- */
- (function() {
- var factory = function (exports) {
- var $ = jQuery;
- var pluginName = "table-dialog";
- var langs = {
- "zh-cn" : {
- toolbar : {
- table : "表格"
- },
- dialog : {
- table : {
- title : "添加表格",
- cellsLabel : "单元格数",
- alignLabel : "对齐方式",
- rows : "行数",
- cols : "列数",
- aligns : ["默认", "左对齐", "居中对齐", "右对齐"]
- }
- }
- },
- "zh-tw" : {
- toolbar : {
- table : "添加表格"
- },
- dialog : {
- table : {
- title : "添加表格",
- cellsLabel : "單元格數",
- alignLabel : "對齊方式",
- rows : "行數",
- cols : "列數",
- aligns : ["默認", "左對齊", "居中對齊", "右對齊"]
- }
- }
- },
- "en" : {
- toolbar : {
- table : "Tables"
- },
- dialog : {
- table : {
- title : "Tables",
- cellsLabel : "Cells",
- alignLabel : "Align",
- rows : "Rows",
- cols : "Cols",
- aligns : ["Default", "Left align", "Center align", "Right align"]
- }
- }
- }
- };
- exports.fn.tableDialog = function() {
- var _this = this;
- var cm = this.cm;
- var editor = this.editor;
- var settings = this.settings;
- var path = settings.path + "../plugins/" + pluginName +"/";
- var classPrefix = this.classPrefix;
- var dialogName = classPrefix + pluginName, dialog;
- $.extend(true, this.lang, langs[this.lang.name]);
- this.setToolbar();
- var lang = this.lang;
- var dialogLang = lang.dialog.table;
-
- var dialogContent = [
- "<div class=\"editormd-form\" style=\"padding: 13px 0;\">",
- "<label>" + dialogLang.cellsLabel + "</label>",
- dialogLang.rows + " <input type=\"number\" value=\"3\" class=\"number-input\" style=\"width:40px;\" max=\"100\" min=\"2\" data-rows /> ",
- dialogLang.cols + " <input type=\"number\" value=\"2\" class=\"number-input\" style=\"width:40px;\" max=\"100\" min=\"1\" data-cols /><br/>",
- "<label>" + dialogLang.alignLabel + "</label>",
- "<div class=\"fa-btns\"></div>",
- "</div>"
- ].join("\n");
- if (editor.find("." + dialogName).length > 0)
- {
- dialog = editor.find("." + dialogName);
- this.dialogShowMask(dialog);
- this.dialogLockScreen();
- dialog.show();
- }
- else
- {
- dialog = this.createDialog({
- name : dialogName,
- title : dialogLang.title,
- width : 360,
- height : 226,
- mask : settings.dialogShowMask,
- drag : settings.dialogDraggable,
- content : dialogContent,
- lockScreen : settings.dialogLockScreen,
- maskStyle : {
- opacity : settings.dialogMaskOpacity,
- backgroundColor : settings.dialogMaskBgColor
- },
- buttons : {
- enter : [lang.buttons.enter, function() {
- var rows = parseInt(this.find("[data-rows]").val());
- var cols = parseInt(this.find("[data-cols]").val());
- var align = this.find("[name=\"table-align\"]:checked").val();
- var table = "";
- var hrLine = "------------";
- var alignSign = {
- _default : hrLine,
- left : ":" + hrLine,
- center : ":" + hrLine + ":",
- right : hrLine + ":"
- };
- if ( rows > 1 && cols > 0)
- {
- for (var r = 0, len = rows; r < len; r++)
- {
- var row = [];
- var head = [];
- for (var c = 0, len2 = cols; c < len2; c++)
- {
- if (r === 1) {
- head.push(alignSign[align]);
- }
- row.push(" ");
- }
- if (r === 1) {
- table += "| " + head.join(" | ") + " |" + "\n";
- }
-
- table += "| " + row.join( (cols === 1) ? "" : " | " ) + " |" + "\n";
- }
- }
- cm.replaceSelection(table);
- this.hide().lockScreen(false).hideMask();
- return false;
- }],
- cancel : [lang.buttons.cancel, function() {
- this.hide().lockScreen(false).hideMask();
- return false;
- }]
- }
- });
- }
- var faBtns = dialog.find(".fa-btns");
- if (faBtns.html() === "")
- {
- var icons = ["align-justify", "align-left", "align-center", "align-right"];
- var _lang = dialogLang.aligns;
- var values = ["_default", "left", "center", "right"];
- for (var i = 0, len = icons.length; i < len; i++)
- {
- var checked = (i === 0) ? " checked=\"checked\"" : "";
- var btn = "<a href=\"javascript:;\"><label for=\"editormd-table-dialog-radio"+i+"\" title=\"" + _lang[i] + "\">";
- btn += "<input type=\"radio\" name=\"table-align\" id=\"editormd-table-dialog-radio"+i+"\" value=\"" + values[i] + "\"" +checked + " /> ";
- btn += "<i class=\"fa fa-" + icons[i] + "\"></i>";
- btn += "</label></a>";
- faBtns.append(btn);
- }
- }
- };
- };
-
- // CommonJS/Node.js
- if (typeof require === "function" && typeof exports === "object" && typeof module === "object")
- {
- module.exports = factory;
- }
- else if (typeof define === "function") // AMD/CMD/Sea.js
- {
- if (define.amd) { // for Require.js
- define(["editormd"], function(editormd) {
- factory(editormd);
- });
- } else { // for Sea.js
- define(function(require) {
- var editormd = require("./../../editormd");
- factory(editormd);
- });
- }
- }
- else
- {
- factory(window.editormd);
- }
- })();
|