| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 | /** * Created with JetBrains PhpStorm. * User: xuheng * Date: 12-12-19 * Time: 下午4:55 * To change this template use File | Settings | File Templates. */(function () {    var title = $G("J_title"),        titleCol = $G("J_titleCol"),        caption = $G("J_caption"),        sorttable = $G("J_sorttable"),        autoSizeContent = $G("J_autoSizeContent"),        autoSizePage = $G("J_autoSizePage"),        tone = $G("J_tone"),        me,        preview = $G("J_preview");    var editTable = function () {        me = this;        me.init();    };    editTable.prototype = {        init:function () {            var colorPiker = new UE.ui.ColorPicker({                    editor:editor                }),                colorPop = new UE.ui.Popup({                    editor:editor,                    content:colorPiker                });            title.checked = editor.queryCommandState("inserttitle") == -1;            titleCol.checked = editor.queryCommandState("inserttitlecol") == -1;            caption.checked = editor.queryCommandState("insertcaption") == -1;            sorttable.checked = editor.queryCommandState("enablesort") == 1;            var enablesortState = editor.queryCommandState("enablesort"),                disablesortState = editor.queryCommandState("disablesort");            sorttable.checked = !!(enablesortState < 0 && disablesortState >=0);            sorttable.disabled = !!(enablesortState < 0 && disablesortState < 0);            sorttable.title = enablesortState < 0 && disablesortState < 0 ? lang.errorMsg:'';            me.createTable(title.checked, titleCol.checked, caption.checked);            me.setAutoSize();            me.setColor(me.getColor());            domUtils.on(title, "click", me.titleHanler);            domUtils.on(titleCol, "click", me.titleColHanler);            domUtils.on(caption, "click", me.captionHanler);            domUtils.on(sorttable, "click", me.sorttableHanler);            domUtils.on(autoSizeContent, "click", me.autoSizeContentHanler);            domUtils.on(autoSizePage, "click", me.autoSizePageHanler);            domUtils.on(tone, "click", function () {                colorPop.showAnchor(tone);            });            domUtils.on(document, 'mousedown', function () {                colorPop.hide();            });            colorPiker.addListener("pickcolor", function () {                me.setColor(arguments[1]);                colorPop.hide();            });            colorPiker.addListener("picknocolor", function () {                me.setColor("");                colorPop.hide();            });        },        createTable:function (hasTitle, hasTitleCol, hasCaption) {            var arr = [],                sortSpan = '<span>^</span>';            arr.push("<table id='J_example'>");            if (hasCaption) {                arr.push("<caption>" + lang.captionName + "</caption>")            }            if (hasTitle) {                arr.push("<tr>");                if(hasTitleCol) { arr.push("<th>" + lang.titleName + "</th>"); }                for (var j = 0; j < 5; j++) {                    arr.push("<th>" + lang.titleName + "</th>");                }                arr.push("</tr>");            }            for (var i = 0; i < 6; i++) {                arr.push("<tr>");                if(hasTitleCol) { arr.push("<th>" + lang.titleName + "</th>") }                for (var k = 0; k < 5; k++) {                    arr.push("<td>" + lang.cellsName + "</td>")                }                arr.push("</tr>");            }            arr.push("</table>");            preview.innerHTML = arr.join("");            this.updateSortSpan();        },        titleHanler:function () {            var example = $G("J_example"),                frg=document.createDocumentFragment(),                color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"),                colCount = example.rows[0].children.length;            if (title.checked) {                example.insertRow(0);                for (var i = 0, node; i < colCount; i++) {                    node = document.createElement("th");                    node.innerHTML = lang.titleName;                    frg.appendChild(node);                }                example.rows[0].appendChild(frg);            } else {                domUtils.remove(example.rows[0]);            }            me.setColor(color);            me.updateSortSpan();        },        titleColHanler:function () {            var example = $G("J_example"),                color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"),                colArr = example.rows,                colCount = colArr.length;            if (titleCol.checked) {                for (var i = 0, node; i < colCount; i++) {                    node = document.createElement("th");                    node.innerHTML = lang.titleName;                    colArr[i].insertBefore(node, colArr[i].children[0]);                }            } else {                for (var i = 0; i < colCount; i++) {                    domUtils.remove(colArr[i].children[0]);                }            }            me.setColor(color);            me.updateSortSpan();        },        captionHanler:function () {            var example = $G("J_example");            if (caption.checked) {                var row = document.createElement('caption');                row.innerHTML = lang.captionName;                example.insertBefore(row, example.firstChild);            } else {                domUtils.remove(domUtils.getElementsByTagName(example, 'caption')[0]);            }        },        sorttableHanler:function(){            me.updateSortSpan();        },        autoSizeContentHanler:function () {            var example = $G("J_example");            example.removeAttribute("width");        },        autoSizePageHanler:function () {            var example = $G("J_example");            var tds = example.getElementsByTagName(example, "td");            utils.each(tds, function (td) {                td.removeAttribute("width");            });            example.setAttribute('width', '100%');        },        updateSortSpan: function(){            var example = $G("J_example"),                row = example.rows[0];            var spans = domUtils.getElementsByTagName(example,"span");            utils.each(spans,function(span){                span.parentNode.removeChild(span);            });            if (sorttable.checked) {                utils.each(row.cells, function(cell, i){                    var span = document.createElement("span");                    span.innerHTML = "^";                    cell.appendChild(span);                });            }        },        getColor:function () {            var start = editor.selection.getStart(), color,                cell = domUtils.findParentByTagName(start, ["td", "th", "caption"], true);            color = cell && domUtils.getComputedStyle(cell, "border-color");            if (!color)  color = "#DDDDDD";            return color;        },        setColor:function (color) {            var example = $G("J_example"),                arr = domUtils.getElementsByTagName(example, "td").concat(                    domUtils.getElementsByTagName(example, "th"),                    domUtils.getElementsByTagName(example, "caption")                );            tone.value = color;            utils.each(arr, function (node) {                node.style.borderColor = color;            });        },        setAutoSize:function () {            var me = this;            autoSizePage.checked = true;            me.autoSizePageHanler();        }    };    new editTable;    dialog.onok = function () {        editor.__hasEnterExecCommand = true;        var checks = {            title:"inserttitle deletetitle",            titleCol:"inserttitlecol deletetitlecol",            caption:"insertcaption deletecaption",            sorttable:"enablesort disablesort"        };        editor.fireEvent('saveScene');        for(var i in checks){            var cmds = checks[i].split(" "),                input = $G("J_" + i);            if(input["checked"]){                editor.queryCommandState(cmds[0])!=-1 &&editor.execCommand(cmds[0]);            }else{                editor.queryCommandState(cmds[1])!=-1 &&editor.execCommand(cmds[1]);            }        }        editor.execCommand("edittable", tone.value);        autoSizeContent.checked ?editor.execCommand('adaptbytext') : "";        autoSizePage.checked ? editor.execCommand("adaptbywindow") : "";        editor.fireEvent('saveScene');        editor.__hasEnterExecCommand = false;    };})();
 |