123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454 |
- /*
- Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
- For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- (function() {
- function w(a) {
- for (var f = 0, p = 0, n = 0, q, e = a.$.rows.length; n < e; n++) {
- q = a.$.rows[n];
- for (var d = (f = 0), b, c = q.cells.length; d < c; d++)
- (b = q.cells[d]), (f += b.colSpan);
- f > p && (p = f);
- }
- return p;
- }
- function t(a) {
- return function() {
- var f = this.getValue(),
- f = !!(CKEDITOR.dialog.validate.integer().call(this, f) && 0 < f);
- f || (alert(a), this.select());
- return f;
- };
- }
- function r(a, f) {
- var p = function(e) {
- return new CKEDITOR.dom.element(e, a.document);
- },
- r = a.editable(),
- q = a.plugins.dialogadvtab;
- return {
- title: a.lang.table.title,
- minWidth: 310,
- minHeight: CKEDITOR.env.ie ? 310 : 280,
- onLoad: function() {
- var e = this,
- a = e.getContentElement("advanced", "advStyles");
- if (a)
- a.on("change", function() {
- var a = this.getStyle("width", ""),
- c = e.getContentElement("info", "txtWidth");
- c && c.setValue(a, !0);
- a = this.getStyle("height", "");
- (c = e.getContentElement("info", "txtHeight")) && c.setValue(a, !0);
- });
- },
- onShow: function() {
- var e = a.getSelection(),
- d = e.getRanges(),
- b,
- c = this.getContentElement("info", "txtRows"),
- h = this.getContentElement("info", "txtCols"),
- u = this.getContentElement("info", "txtWidth"),
- l = this.getContentElement("info", "txtHeight");
- "tableProperties" == f &&
- ((e = e.getSelectedElement()) && e.is("table")
- ? (b = e)
- : 0 < d.length &&
- (CKEDITOR.env.webkit && d[0].shrink(CKEDITOR.NODE_ELEMENT),
- (b = a
- .elementPath(d[0].getCommonAncestor(!0))
- .contains("table", 1))),
- (this._.selectedElement = b));
- b
- ? (this.setupContent(b), c && c.disable(), h && h.disable())
- : (c && c.enable(), h && h.enable());
- u && u.onChange();
- l && l.onChange();
- },
- onOk: function() {
- var e = a.getSelection(),
- d = this._.selectedElement && e.createBookmarks(),
- b = this._.selectedElement || p("table"),
- c = {};
- this.commitContent(c, b);
- if (c.info) {
- c = c.info;
- if (!this._.selectedElement)
- for (
- var h = b.append(p("tbody")),
- f = parseInt(c.txtRows, 10) || 0,
- l = parseInt(c.txtCols, 10) || 0,
- k = 0;
- k < f;
- k++
- )
- for (var g = h.append(p("tr")), m = 0; m < l; m++)
- g.append(p("td")).appendBogus();
- f = c.selHeaders;
- if (!b.$.tHead && ("row" == f || "both" == f)) {
- g = b.getElementsByTag("thead").getItem(0);
- h = b.getElementsByTag("tbody").getItem(0);
- l = h.getElementsByTag("tr").getItem(0);
- g || ((g = new CKEDITOR.dom.element("thead")), g.insertBefore(h));
- for (k = 0; k < l.getChildCount(); k++)
- (h = l.getChild(k)),
- h.type != CKEDITOR.NODE_ELEMENT ||
- h.data("cke-bookmark") ||
- (h.renameNode("th"), h.setAttribute("scope", "col"));
- g.append(l.remove());
- }
- if (null !== b.$.tHead && "row" != f && "both" != f) {
- g = new CKEDITOR.dom.element(b.$.tHead);
- for (
- h = b.getElementsByTag("tbody").getItem(0);
- 0 < g.getChildCount();
- ) {
- l = g.getFirst();
- for (k = 0; k < l.getChildCount(); k++)
- (m = l.getChild(k)),
- m.type == CKEDITOR.NODE_ELEMENT &&
- (m.renameNode("td"), m.removeAttribute("scope"));
- h.append(l, !0);
- }
- g.remove();
- }
- if (!this.hasColumnHeaders && ("col" == f || "both" == f))
- for (g = 0; g < b.$.rows.length; g++)
- (m = new CKEDITOR.dom.element(b.$.rows[g].cells[0])),
- m.renameNode("th"),
- m.setAttribute("scope", "row");
- if (this.hasColumnHeaders && "col" != f && "both" != f)
- for (k = 0; k < b.$.rows.length; k++)
- (g = new CKEDITOR.dom.element(b.$.rows[k])),
- "tbody" == g.getParent().getName() &&
- ((m = new CKEDITOR.dom.element(g.$.cells[0])),
- m.renameNode("td"),
- m.removeAttribute("scope"));
- c.txtHeight
- ? b.setStyle("height", c.txtHeight)
- : b.removeStyle("height");
- c.txtWidth ? b.setStyle("width", c.txtWidth) : b.removeStyle("width");
- b.getAttribute("style") || b.removeAttribute("style");
- }
- if (this._.selectedElement)
- try {
- e.selectBookmarks(d);
- } catch (n) {}
- else
- a.insertElement(b),
- setTimeout(function() {
- var e = new CKEDITOR.dom.element(b.$.rows[0].cells[0]),
- c = a.createRange();
- c.moveToPosition(e, CKEDITOR.POSITION_AFTER_START);
- c.select();
- }, 0);
- },
- contents: [
- {
- id: "info",
- label: a.lang.table.title,
- elements: [
- {
- type: "hbox",
- widths: [null, null],
- styles: ["vertical-align:top"],
- children: [
- {
- type: "vbox",
- padding: 0,
- children: [
- {
- type: "text",
- id: "txtRows",
- default: 3,
- label: a.lang.table.rows,
- required: !0,
- controlStyle: "width:5em",
- validate: t(a.lang.table.invalidRows),
- setup: function(e) {
- this.setValue(e.$.rows.length);
- },
- commit: n
- },
- {
- type: "text",
- id: "txtCols",
- default: 2,
- label: a.lang.table.columns,
- required: !0,
- controlStyle: "width:5em",
- validate: t(a.lang.table.invalidCols),
- setup: function(e) {
- this.setValue(w(e));
- },
- commit: n
- },
- { type: "html", html: "\x26nbsp;" },
- {
- type: "select",
- id: "selHeaders",
- requiredContent: "th",
- default: "",
- label: a.lang.table.headers,
- items: [
- [a.lang.table.headersNone, ""],
- [a.lang.table.headersRow, "row"],
- [a.lang.table.headersColumn, "col"],
- [a.lang.table.headersBoth, "both"]
- ],
- setup: function(e) {
- var a = this.getDialog();
- a.hasColumnHeaders = !0;
- for (var b = 0; b < e.$.rows.length; b++) {
- var c = e.$.rows[b].cells[0];
- if (c && "th" != c.nodeName.toLowerCase()) {
- a.hasColumnHeaders = !1;
- break;
- }
- }
- null !== e.$.tHead
- ? this.setValue(a.hasColumnHeaders ? "both" : "row")
- : this.setValue(a.hasColumnHeaders ? "col" : "");
- },
- commit: n
- },
- {
- type: "text",
- id: "txtBorder",
- requiredContent: "table[border]",
- default: a.filter.check("table[border]") ? 1 : 0,
- label: a.lang.table.border,
- controlStyle: "width:3em",
- validate: CKEDITOR.dialog.validate.number(
- a.lang.table.invalidBorder
- ),
- setup: function(a) {
- this.setValue(a.getAttribute("border") || "");
- },
- commit: function(a, d) {
- this.getValue()
- ? d.setAttribute("border", this.getValue())
- : d.removeAttribute("border");
- }
- },
- {
- id: "cmbAlign",
- type: "select",
- requiredContent: "table[align]",
- default: "",
- label: a.lang.common.align,
- items: [
- [a.lang.common.notSet, ""],
- [a.lang.common.left, "left"],
- [a.lang.common.center, "center"],
- [a.lang.common.right, "right"]
- ],
- setup: function(a) {
- this.setValue(a.getAttribute("align") || "");
- },
- commit: function(a, d) {
- this.getValue()
- ? d.setAttribute("align", this.getValue())
- : d.removeAttribute("align");
- }
- }
- ]
- },
- {
- type: "vbox",
- padding: 0,
- children: [
- {
- type: "hbox",
- widths: ["5em"],
- children: [
- {
- type: "text",
- id: "txtWidth",
- requiredContent: "table{width}",
- controlStyle: "width:5em",
- label: a.lang.common.width,
- title: a.lang.common.cssLengthTooltip,
- default: a.filter.check("table{width}")
- ? 500 > r.getSize("width")
- ? "100%"
- : 500
- : 0,
- getValue: v,
- validate: CKEDITOR.dialog.validate.cssLength(
- a.lang.common.invalidCssLength.replace(
- "%1",
- a.lang.common.width
- )
- ),
- onChange: function() {
- var a = this.getDialog().getContentElement(
- "advanced",
- "advStyles"
- );
- a && a.updateStyle("width", this.getValue());
- },
- setup: function(a) {
- a = a.getStyle("width");
- this.setValue(a);
- },
- commit: n
- }
- ]
- },
- {
- type: "hbox",
- widths: ["5em"],
- children: [
- {
- type: "text",
- id: "txtHeight",
- requiredContent: "table{height}",
- controlStyle: "width:5em",
- label: a.lang.common.height,
- title: a.lang.common.cssLengthTooltip,
- default: "",
- getValue: v,
- validate: CKEDITOR.dialog.validate.cssLength(
- a.lang.common.invalidCssLength.replace(
- "%1",
- a.lang.common.height
- )
- ),
- onChange: function() {
- var a = this.getDialog().getContentElement(
- "advanced",
- "advStyles"
- );
- a && a.updateStyle("height", this.getValue());
- },
- setup: function(a) {
- (a = a.getStyle("height")) && this.setValue(a);
- },
- commit: n
- }
- ]
- },
- { type: "html", html: "\x26nbsp;" },
- {
- type: "text",
- id: "txtCellSpace",
- requiredContent: "table[cellspacing]",
- controlStyle: "width:3em",
- label: a.lang.table.cellSpace,
- default: a.filter.check("table[cellspacing]") ? 1 : 0,
- validate: CKEDITOR.dialog.validate.number(
- a.lang.table.invalidCellSpacing
- ),
- setup: function(a) {
- this.setValue(a.getAttribute("cellSpacing") || "");
- },
- commit: function(a, d) {
- this.getValue()
- ? d.setAttribute("cellSpacing", this.getValue())
- : d.removeAttribute("cellSpacing");
- }
- },
- {
- type: "text",
- id: "txtCellPad",
- requiredContent: "table[cellpadding]",
- controlStyle: "width:3em",
- label: a.lang.table.cellPad,
- default: a.filter.check("table[cellpadding]") ? 1 : 0,
- validate: CKEDITOR.dialog.validate.number(
- a.lang.table.invalidCellPadding
- ),
- setup: function(a) {
- this.setValue(a.getAttribute("cellPadding") || "");
- },
- commit: function(a, d) {
- this.getValue()
- ? d.setAttribute("cellPadding", this.getValue())
- : d.removeAttribute("cellPadding");
- }
- }
- ]
- }
- ]
- },
- { type: "html", align: "right", html: "" },
- {
- type: "vbox",
- padding: 0,
- children: [
- {
- type: "text",
- id: "txtCaption",
- requiredContent: "caption",
- label: a.lang.table.caption,
- setup: function(a) {
- this.enable();
- a = a.getElementsByTag("caption");
- if (0 < a.count()) {
- a = a.getItem(0);
- var d = a.getFirst(
- CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT)
- );
- d && !d.equals(a.getBogus())
- ? (this.disable(), this.setValue(a.getText()))
- : ((a = CKEDITOR.tools.trim(a.getText())),
- this.setValue(a));
- }
- },
- commit: function(e, d) {
- if (this.isEnabled()) {
- var b = this.getValue(),
- c = d.getElementsByTag("caption");
- if (b)
- 0 < c.count()
- ? ((c = c.getItem(0)), c.setHtml(""))
- : ((c = new CKEDITOR.dom.element(
- "caption",
- a.document
- )),
- d.append(c, !0)),
- c.append(new CKEDITOR.dom.text(b, a.document));
- else if (0 < c.count())
- for (b = c.count() - 1; 0 <= b; b--)
- c.getItem(b).remove();
- }
- }
- },
- {
- type: "text",
- id: "txtSummary",
- bidi: !0,
- requiredContent: "table[summary]",
- label: a.lang.table.summary,
- setup: function(a) {
- this.setValue(a.getAttribute("summary") || "");
- },
- commit: function(a, d) {
- this.getValue()
- ? d.setAttribute("summary", this.getValue())
- : d.removeAttribute("summary");
- }
- }
- ]
- }
- ]
- },
- q && q.createAdvancedTab(a, null, "table")
- ]
- };
- }
- var v = CKEDITOR.tools.cssLength,
- n = function(a) {
- var f = this.id;
- a.info || (a.info = {});
- a.info[f] = this.getValue();
- };
- CKEDITOR.dialog.add("table", function(a) {
- return r(a, "table");
- });
- CKEDITOR.dialog.add("tableProperties", function(a) {
- return r(a, "tableProperties");
- });
- })();
|