📄 tableplugins.js
字号:
dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[o.tbl]);},launchInsertDialog:function(){var w=new dojox.editor.plugins.EditorTableDialog({});w.show();var c=dojo.connect(w,"onBuildTable",this,function(obj){dojo.disconnect(c);var res=this.editor.execCommand("inserthtml",obj.htmlText);});},launchModifyDialog:function(){var o=this.getTableInfo();var w=new dojox.editor.plugins.EditorModifyTableDialog({table:o.tbl});w.show();this.connect(w,"onSetTable",function(_3d){var o=this.getTableInfo();dojo.attr(o.td,"bgcolor",_3d);});},_initButton:function(){this.command=this.commandName;this.label=this.editor.commands[this.command]=this._makeTitle(this.command);this.inherited(arguments);delete this.command;if(this.commandName!="colorTableCell"){this.connect(this.button.domNode,"click","modTable");}if(this.commandName=="tableContextMenu"){this.button.domNode.display="none";}this.onDisplayChanged(false);},modTable:function(cmd,_40){this.begEdit();var o=this.getTableInfo();var sw=(dojo.isString(cmd))?cmd:this.commandName;var r,c,i;var _46=false;switch(sw){case "insertTableRowBefore":r=o.tbl.insertRow(o.trIndex);for(i=0;i<o.cols;i++){c=r.insertCell(-1);c.innerHTML=" ";}break;case "insertTableRowAfter":r=o.tbl.insertRow(o.trIndex+1);for(i=0;i<o.cols;i++){c=r.insertCell(-1);c.innerHTML=" ";}break;case "insertTableColumnBefore":o.trs.forEach(function(r){c=r.insertCell(o.colIndex);c.innerHTML=" ";});_46=true;break;case "insertTableColumnAfter":o.trs.forEach(function(r){c=r.insertCell(o.colIndex+1);c.innerHTML=" ";});_46=true;break;case "deleteTableRow":o.tbl.deleteRow(o.trIndex);break;case "deleteTableColumn":o.trs.forEach(function(tr){tr.deleteCell(o.colIndex);});_46=true;break;case "colorTableCell":var tds=this.getSelectedCells(o.tbl);dojo.forEach(tds,function(td){dojo.style(td,"backgroundColor",_40);});break;case "modifyTable":break;case "insertTable":break;}if(_46){this.makeColumnsEven();}this.endEdit();},begEdit:function(){if(tablePluginHandler.undoEnabled){if(this.editor.customUndo){this.editor.beginEditing();}else{this.valBeforeUndo=this.editor.getValue();}}},endEdit:function(){if(tablePluginHandler.undoEnabled){if(this.editor.customUndo){this.editor.endEditing();}else{var _4c=this.editor.getValue();this.editor.setValue(this.valBeforeUndo);this.editor.replaceValue(_4c);}this.editor.onDisplayChanged();}},makeColumnsEven:function(){setTimeout(dojo.hitch(this,function(){var o=this.getTableInfo(true);var w=Math.floor(100/o.cols);o.tds.forEach(function(d){dojo.attr(d,"width",w+"%");});}),10);},getTableInfo:function(_50){return tablePluginHandler.getTableInfo(_50);},_makeTitle:function(str){var s=str.split(""),ns=[];dojo.forEach(str,function(c,i){if(c.charCodeAt(0)<91&&i>0&&ns[i-1].charCodeAt(0)!=32){ns.push(" ");}if(i==0){c=c.toUpperCase();}ns.push(c);});return ns.join("");},getSelectedCells:function(){var _56=[];var tbl=this.getTableInfo().tbl;var tds=tablePluginHandler._prepareTable(tbl);var e=this.editor;var r;if(!dojo.isIE){r=dijit.range.getSelection(e.window);var _5b=false;var _5c=false;if(r.anchorNode&&r.anchorNode.tagName&&r.anchorNode.tagName.toLowerCase()=="tr"){var trs=dojo.query("tr",tbl);var _5e=[];trs.forEach(function(tr,i){if(!_5b&&(tr==r.anchorNode||tr==r.focusNode)){_5e.push(tr);_5b=true;if(r.anchorNode==r.focusNode){_5c=true;}}else{if(_5b&&!_5c){_5e.push(tr);if(tr==r.anchorNode||tr==r.focusNode){_5c=true;}}}});dojo.forEach(_5e,function(tr){_56=_56.concat(dojo.query("td",tr));},this);}else{tds.forEach(function(td,i){if(!_5b&&(td.id==r.anchorNode.parentNode.id||td.id==r.focusNode.parentNode.id)){_56.push(td);_5b=true;if(r.anchorNode.parentNode.id==r.focusNode.parentNode.id){_5c=true;}}else{if(_5b&&!_5c){_56.push(td);if(td.id==r.focusNode.parentNode.id||td.id==r.anchorNode.parentNode.id){_5c=true;}}}});}}if(dojo.isIE){r=document.selection.createRange();var str=r.htmlText.match(/id=\w*/g);dojo.forEach(str,function(a){var id=a.substring(3,a.length);_56.push(e.byId(id));},this);}return _56;}});dojo.provide("dojox.editor.plugins.EditorTableDialog");dojo.require("dijit.Dialog");dojo.require("dijit.form.TextBox");dojo.require("dijit.form.FilteringSelect");dojo.require("dijit.form.Button");dojo.declare("dojox.editor.plugins.EditorTableDialog",[dijit.Dialog],{baseClass:"EditorTableDialog",widgetsInTemplate:true,templateString:"<div class=\"dijitDialog\" tabindex=\"-1\" waiRole=\"dialog\" waiState=\"labelledby-${id}_title\">\n\t<div dojoAttachPoint=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t<span dojoAttachPoint=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\">${insertTableTitle}</span>\n\t<span dojoAttachPoint=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" dojoAttachEvent=\"onclick: onCancel\" title=\"${buttonCancel}\">\n\t\t<span dojoAttachPoint=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t</span>\n\t</div>\n <div dojoAttachPoint=\"containerNode\" class=\"dijitDialogPaneContent\">\n <table class=\"etdTable\"><tr>\n <td class=\"left\">\n <span dojoAttachPoint=\"selectRow\" dojoType=\"dijit.form.TextBox\" value=\"2\"></span>\n <label>${rows}</label>\n </td><td class=\"right\">\n <span dojoAttachPoint=\"selectCol\" dojoType=\"dijit.form.TextBox\" value=\"2\"></span>\n <label>${columns}</label>\n </td></tr><tr><td>\n <span dojoAttachPoint=\"selectWidth\" dojoType=\"dijit.form.TextBox\" value=\"100\"></span>\n <label>${tableWidth}</label>\n </td><td>\n <select dojoAttachPoint=\"selectWidthType\" hasDownArrow=\"true\" dojoType=\"dijit.form.FilteringSelect\">\n <option value=\"percent\">${percent}</option>\n <option value=\"pixels\">${pixels}</option>\n </select></td></tr>\n <tr><td>\n <span dojoAttachPoint=\"selectBorder\" dojoType=\"dijit.form.TextBox\" value=\"1\"></span>\n <label>${borderThickness}</label></td>\n <td>\n ${pixels}\n </td></tr><tr><td>\n <span dojoAttachPoint=\"selectPad\" dojoType=\"dijit.form.TextBox\" value=\"0\"></span>\n <label>${cellPadding}</label></td>\n <td class=\"cellpad\"></td></tr><tr><td>\n <span dojoAttachPoint=\"selectSpace\" dojoType=\"dijit.form.TextBox\" value=\"0\"></span>\n <label>${cellSpacing}</label>\n </td><td class=\"cellspace\"></td></tr></table>\n <div class=\"dialogButtonContainer\">\n <div dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick: onInsert\">${buttonInsert}</div>\n <div dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick: onCancel\">${buttonCancel}</div>\n </div>\n\t</div>\n</div>\n",postMixInProperties:function(){var _67=dojo.i18n.getLocalization("dojox.editor.plugins","TableDialog",this.lang);dojo.mixin(this,_67);this.inherited(arguments);},postCreate:function(){dojo.addClass(this.domNode,this.baseClass);this.inherited(arguments);},onInsert:function(){var _68=this.selectRow.attr("value")||1,_69=this.selectCol.attr("value")||1,_6a=this.selectWidth.attr("value"),_6b=this.selectWidthType.attr("value"),_6c=this.selectBorder.attr("value"),pad=this.selectPad.attr("value"),_6e=this.selectSpace.attr("value"),_id="tbl_"+(new Date().getTime()),t="<table id=\""+_id+"\"width=\""+_6a+((_6b=="percent")?"%":"")+"\" border=\""+_6c+"\" cellspacing=\""+_6e+"\" cellpadding=\""+pad+"\">\n";for(var r=0;r<_68;r++){t+="\t<tr>\n";for(var c=0;c<_69;c++){t+="\t\t<td width=\""+(Math.floor(100/_69))+"%\"> </td>\n";}t+="\t</tr>\n";}t+="</table>";this.onBuildTable({htmlText:t,id:_id});this.hide();},onBuildTable:function(_73){}});dojo.provide("dojox.editor.plugins.EditorModifyTableDialog");dojo.require("dijit.ColorPalette");dojo.declare("dojox.editor.plugins.EditorModifyTableDialog",[dijit.Dialog],{baseClass:"EditorTableDialog",widgetsInTemplate:true,table:null,tableAtts:{},templateString:"<div class=\"dijitDialog\" tabindex=\"-1\" waiRole=\"dialog\" waiState=\"labelledby-${id}_title\">\n\t<div dojoAttachPoint=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t<span dojoAttachPoint=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\">${modifyTableTitle}</span>\n\t<span dojoAttachPoint=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" dojoAttachEvent=\"onclick: onCancel\" title=\"${buttonCancel}\">\n\t\t<span dojoAttachPoint=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t</span>\n\t</div>\n <div dojoAttachPoint=\"containerNode\" class=\"dijitDialogPaneContent\">\n <table class=\"etdTable\">\n <tr><td class=\"left\">\n <span class=\"colorSwatchBtn\" dojoAttachPoint=\"backgroundCol\"></span>\n <label>${backgroundColor}</label>\n </td><td class=\"right\">\n <span class=\"colorSwatchBtn\" dojoAttachPoint=\"borderCol\"></span>\n <label>${borderColor}</label>\n </td></tr><tr><td>\n <span dojoAttachPoint=\"selectBorder\" dojoType=\"dijit.form.TextBox\" value=\"1\"></span>\n <label>${borderThickness}</label>\n </td><td>\n ${pixels}\n </td></tr><tr><td>\n <select class=\"floatDijit\" dojoAttachPoint=\"selectAlign\" dojoType=\"dijit.form.FilteringSelect\">\n <option value=\"default\">${default}</option>\n <option value=\"left\">${left}</option>\n <option value=\"center\">${center}</option>\n <option value=\"right\">${right}</option>\n </select>\n <label>${align}</label>\n </td><td></td></tr><tr><td>\n <span dojoAttachPoint=\"selectWidth\" dojoType=\"dijit.form.TextBox\" value=\"100\"></span>\n <label>${tableWidth}</label>\n </td><td>\n <select dojoAttachPoint=\"selectWidthType\" hasDownArrow=\"true\" dojoType=\"dijit.form.FilteringSelect\">\n <option value=\"percent\">${percent}</option>\n <option value=\"pixels\">${pixels}</option>\n </select>\n </td></tr><tr><td>\n <span dojoAttachPoint=\"selectPad\" dojoType=\"dijit.form.TextBox\" value=\"0\"></span>\n <label>${cellPadding}</label></td>\n <td class=\"cellpad\"></td></tr><tr><td>\n <span dojoAttachPoint=\"selectSpace\" dojoType=\"dijit.form.TextBox\" value=\"0\"></span>\n <label>${cellSpacing}</label>\n </td><td class=\"cellspace\"></td></tr>\n </table>\n <div class=\"dialogButtonContainer\">\n <div dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick: onSet\">${buttonSet}</div>\n <div dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick: onCancel\">${buttonCancel}</div>\n </div>\n\t</div>\n</div>\n",postMixInProperties:function(){var _74=dojo.i18n.getLocalization("dojox.editor.plugins","TableDialog",this.lang);dojo.mixin(this,_74);this.inherited(arguments);},postCreate:function(){dojo.addClass(this.domNode,this.baseClass);this.inherited(arguments);this.connect(this.borderCol,"click",function(){var div=document.createElement("div");var w=new dijit.ColorPalette({},div);dijit.popup.open({popup:w,around:this.borderCol});this.connect(w,"onChange",function(_77){dijit.popup.close(w);this.setBrdColor(_77);});});this.connect(this.backgroundCol,"click",function(){var div=document.createElement("div");var w=new dijit.ColorPalette({},div);dijit.popup.open({popup:w,around:this.backgroundCol});this.connect(w,"onChange",function(_7a){dijit.popup.close(w);this.setBkColor(_7a);});});this.setBrdColor(dojo.attr(this.table,"bordercolor"));this.setBkColor(dojo.attr(this.table,"bgcolor"));var w=dojo.attr(this.table,"width");var p="pixels";if(w.indexOf("%")>-1){p="percent";w=w.replace(/%/,"");}this.selectWidth.attr("value",w);this.selectWidthType.attr("value",p);this.selectBorder.attr("value",dojo.attr(this.table,"border"));this.selectPad.attr("value",dojo.attr(this.table,"cellpadding"));this.selectSpace.attr("value",dojo.attr(this.table,"cellspacing"));this.selectAlign.attr("value",dojo.attr(this.table,"align"));},setBrdColor:function(_7d){this.brdColor=_7d;dojo.style(this.borderCol,"backgroundColor",_7d);},setBkColor:function(_7e){this.bkColor=_7e;dojo.style(this.backgroundCol,"backgroundColor",_7e);},onSet:function(){dojo.attr(this.table,"bordercolor",this.brdColor);dojo.attr(this.table,"bgcolor",this.bkColor);dojo.attr(this.table,"width",(this.selectWidth.attr("value")+((this.selectWidthType.attr("value")=="pixels")?"":"%")));dojo.attr(this.table,"border",this.selectBorder.attr("value"));dojo.attr(this.table,"cellpadding",this.selectPad.attr("value"));dojo.attr(this.table,"cellspacing",this.selectSpace.attr("value"));dojo.attr(this.table,"align",this.selectAlign.attr("value"));this.hide();},onSetTable:function(_7f){}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}if(o.args&&o.args.command){var cmd=o.args.command.charAt(0).toLowerCase()+o.args.command.substring(1,o.args.command.length);switch(cmd){case "insertTableRowBefore":case "insertTableRowAfter":case "insertTableColumnBefore":case "insertTableColumnAfter":case "deleteTableRow":case "deleteTableColumn":case "colorTableCell":case "modifyTable":case "insertTable":case "tableContextMenu":o.plugin=new dojox.editor.plugins.TablePlugins({commandName:cmd});break;}}});}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -