123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855 |
- //ui跟编辑器的适配層
- //那个按钮弹出是dialog,是下拉筐等都是在这个js中配置
- //自己写的ui也要在这里配置,放到baidu.editor.ui下边,当编辑器实例化的时候会根据ueditor.config中的toolbars找到相应的进行实例化
- (function () {
- var utils = baidu.editor.utils;
- var editorui = baidu.editor.ui;
- var _Dialog = editorui.Dialog;
- editorui.buttons = {};
- editorui.Dialog = function (options) {
- var dialog = new _Dialog(options);
- dialog.addListener('hide', function () {
- if (dialog.editor) {
- var editor = dialog.editor;
- try {
- if (browser.gecko) {
- var y = editor.window.scrollY,
- x = editor.window.scrollX;
- editor.body.focus();
- editor.window.scrollTo(x, y);
- } else {
- editor.focus();
- }
- } catch (ex) {
- }
- }
- });
- return dialog;
- };
- var iframeUrlMap = {
- 'anchor':'~/dialogs/anchor/anchor.html',
- 'insertimage':'~/dialogs/image/image.html',
- 'link':'~/dialogs/link/link.html',
- 'spechars':'~/dialogs/spechars/spechars.html',
- 'searchreplace':'~/dialogs/searchreplace/searchreplace.html',
- 'map':'~/dialogs/map/map.html',
- 'gmap':'~/dialogs/gmap/gmap.html',
- 'insertvideo':'~/dialogs/video/video.html',
- 'help':'~/dialogs/help/help.html',
- 'preview':'~/dialogs/preview/preview.html',
- 'emotion':'~/dialogs/emotion/emotion.html',
- 'wordimage':'~/dialogs/wordimage/wordimage.html',
- 'attachment':'~/dialogs/attachment/attachment.html',
- 'insertframe':'~/dialogs/insertframe/insertframe.html',
- 'edittip':'~/dialogs/table/edittip.html',
- 'edittable':'~/dialogs/table/edittable.html',
- 'edittd':'~/dialogs/table/edittd.html',
- 'webapp':'~/dialogs/webapp/webapp.html',
- 'snapscreen':'~/dialogs/snapscreen/snapscreen.html',
- 'scrawl':'~/dialogs/scrawl/scrawl.html',
- 'music':'~/dialogs/music/music.html',
- 'template':'~/dialogs/template/template.html',
- 'background':'~/dialogs/background/background.html',
- 'charts': '~/dialogs/charts/charts.html',
- 'subtitle': '~/dialogs/subtitle/subtitle.html'
- };
- //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起
- var btnCmds = ['undo', 'redo', 'formatmatch',
- 'bold', 'italic', 'underline', 'fontborder', 'touppercase', 'tolowercase',
- 'strikethrough', 'subscript', 'superscript', 'source', 'indent', 'outdent',
- 'blockquote', 'pasteplain', 'pagebreak',
- 'selectall', 'print','horizontal', 'removeformat', 'time', 'date', 'unlink',
- 'insertparagraphbeforetable', 'insertrow', 'insertcol', 'mergeright', 'mergedown', 'deleterow',
- 'deletecol', 'splittorows', 'splittocols', 'splittocells', 'mergecells', 'deletetable', 'drafts'];
- for (var i = 0, ci; ci = btnCmds[i++];) {
- ci = ci.toLowerCase();
- editorui[ci] = function (cmd) {
- return function (editor) {
- var ui = new editorui.Button({
- className:'edui-for-' + cmd,
- title:editor.options.labelMap[cmd] || editor.getLang("labelMap." + cmd) || '',
- onclick:function () {
- editor.execCommand(cmd);
- },
- theme:editor.options.theme,
- showText:false
- });
- editorui.buttons[cmd] = ui;
- editor.addListener('selectionchange', function (type, causeByUi, uiReady) {
- var state = editor.queryCommandState(cmd);
- if (state == -1) {
- ui.setDisabled(true);
- ui.setChecked(false);
- } else {
- if (!uiReady) {
- ui.setDisabled(false);
- ui.setChecked(state);
- }
- }
- });
- return ui;
- };
- }(ci);
- }
- //清除文档
- editorui.cleardoc = function (editor) {
- var ui = new editorui.Button({
- className:'edui-for-cleardoc',
- title:editor.options.labelMap.cleardoc || editor.getLang("labelMap.cleardoc") || '',
- theme:editor.options.theme,
- onclick:function () {
- if (confirm(editor.getLang("confirmClear"))) {
- editor.execCommand('cleardoc');
- }
- }
- });
- editorui.buttons["cleardoc"] = ui;
- editor.addListener('selectionchange', function () {
- ui.setDisabled(editor.queryCommandState('cleardoc') == -1);
- });
- return ui;
- };
- //排版,图片排版,文字方向
- var typeset = {
- 'justify':['left', 'right', 'center', 'justify'],
- 'imagefloat':['none', 'left', 'center', 'right'],
- 'directionality':['ltr', 'rtl']
- };
- for (var p in typeset) {
- (function (cmd, val) {
- for (var i = 0, ci; ci = val[i++];) {
- (function (cmd2) {
- editorui[cmd.replace('float', '') + cmd2] = function (editor) {
- var ui = new editorui.Button({
- className:'edui-for-' + cmd.replace('float', '') + cmd2,
- title:editor.options.labelMap[cmd.replace('float', '') + cmd2] || editor.getLang("labelMap." + cmd.replace('float', '') + cmd2) || '',
- theme:editor.options.theme,
- onclick:function () {
- editor.execCommand(cmd, cmd2);
- }
- });
- editorui.buttons[cmd] = ui;
- editor.addListener('selectionchange', function (type, causeByUi, uiReady) {
- ui.setDisabled(editor.queryCommandState(cmd) == -1);
- ui.setChecked(editor.queryCommandValue(cmd) == cmd2 && !uiReady);
- });
- return ui;
- };
- })(ci)
- }
- })(p, typeset[p])
- }
- //字体颜色和背景颜色
- for (var i = 0, ci; ci = ['backcolor', 'forecolor'][i++];) {
- editorui[ci] = function (cmd) {
- return function (editor) {
- var ui = new editorui.ColorButton({
- className:'edui-for-' + cmd,
- color:'default',
- title:editor.options.labelMap[cmd] || editor.getLang("labelMap." + cmd) || '',
- editor:editor,
- onpickcolor:function (t, color) {
- editor.execCommand(cmd, color);
- },
- onpicknocolor:function () {
- editor.execCommand(cmd, 'default');
- this.setColor('transparent');
- this.color = 'default';
- },
- onbuttonclick:function () {
- editor.execCommand(cmd, this.color);
- }
- });
- editorui.buttons[cmd] = ui;
- editor.addListener('selectionchange', function () {
- ui.setDisabled(editor.queryCommandState(cmd) == -1);
- });
- return ui;
- };
- }(ci);
- }
- var dialogBtns = {
- noOk:['searchreplace', 'help', 'spechars', 'webapp','preview'],
- ok:['attachment', 'anchor', 'link', 'insertimage', 'map', 'gmap', 'insertframe', 'wordimage',
- 'insertvideo', 'insertframe', 'edittip', 'edittable', 'edittd', 'scrawl', 'template', 'music', 'background', 'charts', 'subtitle']
- };
- for (var p in dialogBtns) {
- (function (type, vals) {
- for (var i = 0, ci; ci = vals[i++];) {
- //todo opera下存在问题
- if (browser.opera && ci === "searchreplace") {
- continue;
- }
- (function (cmd) {
- editorui[cmd] = function (editor, iframeUrl, title) {
- iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd];
- title = editor.options.labelMap[cmd] || editor.getLang("labelMap." + cmd) || '';
- var dialog;
- //没有iframeUrl不创建dialog
- if (iframeUrl) {
- dialog = new editorui.Dialog(utils.extend({
- iframeUrl:editor.ui.mapUrl(iframeUrl),
- editor:editor,
- className:'edui-for-' + cmd,
- title:title,
- holdScroll: cmd === 'insertimage',
- fullscreen: /charts|preview/.test(cmd),
- closeDialog:editor.getLang("closeDialog")
- }, type == 'ok' ? {
- buttons:[
- {
- className:'edui-okbutton',
- label:editor.getLang("ok"),
- editor:editor,
- onclick:function () {
- dialog.close(true);
- }
- },
- {
- className:'edui-cancelbutton',
- label:editor.getLang("cancel"),
- editor:editor,
- onclick:function () {
- dialog.close(false);
- }
- }
- ]
- } : {}));
- editor.ui._dialogs[cmd + "Dialog"] = dialog;
- }
- var ui = new editorui.Button({
- className:'edui-for-' + cmd,
- title:title,
- onclick:function () {
- if (dialog) {
- switch (cmd) {
- case "wordimage":
- var images = editor.execCommand("wordimage");
- if (images && images.length) {
- dialog.render();
- dialog.open();
- }
- break;
- case "scrawl":
- if (editor.queryCommandState("scrawl") != -1) {
- dialog.render();
- dialog.open();
- }
- break;
- default:
- dialog.render();
- dialog.open();
- }
- }
- },
- theme:editor.options.theme,
- disabled:(cmd == 'scrawl' && editor.queryCommandState("scrawl") == -1) || ( cmd == 'charts' )
- });
- editorui.buttons[cmd] = ui;
- editor.addListener('selectionchange', function () {
- //只存在于右键菜单而无工具栏按钮的ui不需要检测状态
- var unNeedCheckState = {'edittable':1};
- if (cmd in unNeedCheckState)return;
- var state = editor.queryCommandState(cmd);
- if (ui.getDom()) {
- ui.setDisabled(state == -1);
- ui.setChecked(state);
- }
- });
- return ui;
- };
- })(ci.toLowerCase())
- }
- })(p, dialogBtns[p]);
- }
- editorui.snapscreen = function (editor, iframeUrl, title) {
- title = editor.options.labelMap['snapscreen'] || editor.getLang("labelMap.snapscreen") || '';
- var ui = new editorui.Button({
- className:'edui-for-snapscreen',
- title:title,
- onclick:function () {
- editor.execCommand("snapscreen");
- },
- theme:editor.options.theme
- });
- editorui.buttons['snapscreen'] = ui;
- iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})["snapscreen"] || iframeUrlMap["snapscreen"];
- if (iframeUrl) {
- var dialog = new editorui.Dialog({
- iframeUrl:editor.ui.mapUrl(iframeUrl),
- editor:editor,
- className:'edui-for-snapscreen',
- title:title,
- buttons:[
- {
- className:'edui-okbutton',
- label:editor.getLang("ok"),
- editor:editor,
- onclick:function () {
- dialog.close(true);
- }
- },
- {
- className:'edui-cancelbutton',
- label:editor.getLang("cancel"),
- editor:editor,
- onclick:function () {
- dialog.close(false);
- }
- }
- ]
- });
- dialog.render();
- editor.ui._dialogs["snapscreenDialog"] = dialog;
- }
- editor.addListener('selectionchange', function () {
- ui.setDisabled(editor.queryCommandState('snapscreen') == -1);
- });
- return ui;
- };
- editorui.insertcode = function (editor, list, title) {
- list = editor.options['insertcode'] || [];
- title = editor.options.labelMap['insertcode'] || editor.getLang("labelMap.insertcode") || '';
- // if (!list.length) return;
- var items = [];
- utils.each(list,function(key,val){
- items.push({
- label:key,
- value:val,
- theme:editor.options.theme,
- renderLabelHtml:function () {
- return '<div class="edui-label %%-label" >' + (this.label || '') + '</div>';
- }
- });
- });
- var ui = new editorui.Combox({
- editor:editor,
- items:items,
- onselect:function (t, index) {
- editor.execCommand('insertcode', this.items[index].value);
- },
- onbuttonclick:function () {
- this.showPopup();
- },
- title:title,
- initValue:title,
- className:'edui-for-insertcode',
- indexByValue:function (value) {
- if (value) {
- for (var i = 0, ci; ci = this.items[i]; i++) {
- if (ci.value.indexOf(value) != -1)
- return i;
- }
- }
- return -1;
- }
- });
- editorui.buttons['insertcode'] = ui;
- editor.addListener('selectionchange', function (type, causeByUi, uiReady) {
- if (!uiReady) {
- var state = editor.queryCommandState('insertcode');
- if (state == -1) {
- ui.setDisabled(true);
- } else {
- ui.setDisabled(false);
- var value = editor.queryCommandValue('insertcode');
- if(!value){
- ui.setValue(title);
- return;
- }
- //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号
- value && (value = value.replace(/['"]/g, '').split(',')[0]);
- ui.setValue(value);
- }
- }
- });
- return ui;
- };
- editorui.fontfamily = function (editor, list, title) {
- list = editor.options['fontfamily'] || [];
- title = editor.options.labelMap['fontfamily'] || editor.getLang("labelMap.fontfamily") || '';
- if (!list.length) return;
- for (var i = 0, ci, items = []; ci = list[i]; i++) {
- var langLabel = editor.getLang('fontfamily')[ci.name] || "";
- (function (key, val) {
- items.push({
- label:key,
- value:val,
- theme:editor.options.theme,
- renderLabelHtml:function () {
- return '<div class="edui-label %%-label" style="font-family:' +
- utils.unhtml(this.value) + '">' + (this.label || '') + '</div>';
- }
- });
- })(ci.label || langLabel, ci.val)
- }
- var ui = new editorui.Combox({
- editor:editor,
- items:items,
- onselect:function (t, index) {
- editor.execCommand('FontFamily', this.items[index].value);
- },
- onbuttonclick:function () {
- this.showPopup();
- },
- title:title,
- initValue:title,
- className:'edui-for-fontfamily',
- indexByValue:function (value) {
- if (value) {
- for (var i = 0, ci; ci = this.items[i]; i++) {
- if (ci.value.indexOf(value) != -1)
- return i;
- }
- }
- return -1;
- }
- });
- editorui.buttons['fontfamily'] = ui;
- editor.addListener('selectionchange', function (type, causeByUi, uiReady) {
- if (!uiReady) {
- var state = editor.queryCommandState('FontFamily');
- if (state == -1) {
- ui.setDisabled(true);
- } else {
- ui.setDisabled(false);
- var value = editor.queryCommandValue('FontFamily');
- //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号
- value && (value = value.replace(/['"]/g, '').split(',')[0]);
- ui.setValue(value);
- }
- }
- });
- return ui;
- };
- editorui.fontsize = function (editor, list, title) {
- title = editor.options.labelMap['fontsize'] || editor.getLang("labelMap.fontsize") || '';
- list = list || editor.options['fontsize'] || [];
- if (!list.length) return;
- var items = [];
- for (var i = 0; i < list.length; i++) {
- var size = list[i] + 'px';
- items.push({
- label:size,
- value:size,
- theme:editor.options.theme,
- renderLabelHtml:function () {
- return '<div class="edui-label %%-label" style="line-height:1;font-size:' +
- this.value + '">' + (this.label || '') + '</div>';
- }
- });
- }
- var ui = new editorui.Combox({
- editor:editor,
- items:items,
- title:title,
- initValue:title,
- onselect:function (t, index) {
- editor.execCommand('FontSize', this.items[index].value);
- },
- onbuttonclick:function () {
- this.showPopup();
- },
- className:'edui-for-fontsize'
- });
- editorui.buttons['fontsize'] = ui;
- editor.addListener('selectionchange', function (type, causeByUi, uiReady) {
- if (!uiReady) {
- var state = editor.queryCommandState('FontSize');
- if (state == -1) {
- ui.setDisabled(true);
- } else {
- ui.setDisabled(false);
- ui.setValue(editor.queryCommandValue('FontSize'));
- }
- }
- });
- return ui;
- };
- editorui.paragraph = function (editor, list, title) {
- title = editor.options.labelMap['paragraph'] || editor.getLang("labelMap.paragraph") || '';
- list = editor.options['paragraph'] || [];
- if (utils.isEmptyObject(list)) return;
- var items = [];
- for (var i in list) {
- items.push({
- value:i,
- label:list[i] || editor.getLang("paragraph")[i],
- theme:editor.options.theme,
- renderLabelHtml:function () {
- return '<div class="edui-label %%-label"><span class="edui-for-' + this.value + '">' + (this.label || '') + '</span></div>';
- }
- })
- }
- var ui = new editorui.Combox({
- editor:editor,
- items:items,
- title:title,
- initValue:title,
- className:'edui-for-paragraph',
- onselect:function (t, index) {
- editor.execCommand('Paragraph', this.items[index].value);
- },
- onbuttonclick:function () {
- this.showPopup();
- }
- });
- editorui.buttons['paragraph'] = ui;
- editor.addListener('selectionchange', function (type, causeByUi, uiReady) {
- if (!uiReady) {
- var state = editor.queryCommandState('Paragraph');
- if (state == -1) {
- ui.setDisabled(true);
- } else {
- ui.setDisabled(false);
- var value = editor.queryCommandValue('Paragraph');
- var index = ui.indexByValue(value);
- if (index != -1) {
- ui.setValue(value);
- } else {
- ui.setValue(ui.initValue);
- }
- }
- }
- });
- return ui;
- };
- //自定义标题
- editorui.customstyle = function (editor) {
- var list = editor.options['customstyle'] || [],
- title = editor.options.labelMap['customstyle'] || editor.getLang("labelMap.customstyle") || '';
- if (!list.length)return;
- var langCs = editor.getLang('customstyle');
- for (var i = 0, items = [], t; t = list[i++];) {
- (function (t) {
- var ck = {};
- ck.label = t.label ? t.label : langCs[t.name];
- ck.style = t.style;
- ck.className = t.className;
- ck.tag = t.tag;
- items.push({
- label:ck.label,
- value:ck,
- theme:editor.options.theme,
- renderLabelHtml:function () {
- return '<div class="edui-label %%-label">' + '<' + ck.tag + ' ' + (ck.className ? ' class="' + ck.className + '"' : "")
- + (ck.style ? ' style="' + ck.style + '"' : "") + '>' + ck.label + "<\/" + ck.tag + ">"
- + '</div>';
- }
- });
- })(t);
- }
- var ui = new editorui.Combox({
- editor:editor,
- items:items,
- title:title,
- initValue:title,
- className:'edui-for-customstyle',
- onselect:function (t, index) {
- editor.execCommand('customstyle', this.items[index].value);
- },
- onbuttonclick:function () {
- this.showPopup();
- },
- indexByValue:function (value) {
- for (var i = 0, ti; ti = this.items[i++];) {
- if (ti.label == value) {
- return i - 1
- }
- }
- return -1;
- }
- });
- editorui.buttons['customstyle'] = ui;
- editor.addListener('selectionchange', function (type, causeByUi, uiReady) {
- if (!uiReady) {
- var state = editor.queryCommandState('customstyle');
- if (state == -1) {
- ui.setDisabled(true);
- } else {
- ui.setDisabled(false);
- var value = editor.queryCommandValue('customstyle');
- var index = ui.indexByValue(value);
- if (index != -1) {
- ui.setValue(value);
- } else {
- ui.setValue(ui.initValue);
- }
- }
- }
- });
- return ui;
- };
- editorui.inserttable = function (editor, iframeUrl, title) {
- title = editor.options.labelMap['inserttable'] || editor.getLang("labelMap.inserttable") || '';
- var ui = new editorui.TableButton({
- editor:editor,
- title:title,
- className:'edui-for-inserttable',
- onpicktable:function (t, numCols, numRows) {
- editor.execCommand('InsertTable', {numRows:numRows, numCols:numCols, border:1});
- },
- onbuttonclick:function () {
- this.showPopup();
- }
- });
- editorui.buttons['inserttable'] = ui;
- editor.addListener('selectionchange', function () {
- ui.setDisabled(editor.queryCommandState('inserttable') == -1);
- });
- return ui;
- };
- editorui.lineheight = function (editor) {
- var val = editor.options.lineheight || [];
- if (!val.length)return;
- for (var i = 0, ci, items = []; ci = val[i++];) {
- items.push({
- //todo:写死了
- label:ci,
- value:ci,
- theme:editor.options.theme,
- onclick:function () {
- editor.execCommand("lineheight", this.value);
- }
- })
- }
- var ui = new editorui.MenuButton({
- editor:editor,
- className:'edui-for-lineheight',
- title:editor.options.labelMap['lineheight'] || editor.getLang("labelMap.lineheight") || '',
- items:items,
- onbuttonclick:function () {
- var value = editor.queryCommandValue('LineHeight') || this.value;
- editor.execCommand("LineHeight", value);
- }
- });
- editorui.buttons['lineheight'] = ui;
- editor.addListener('selectionchange', function () {
- var state = editor.queryCommandState('LineHeight');
- if (state == -1) {
- ui.setDisabled(true);
- } else {
- ui.setDisabled(false);
- var value = editor.queryCommandValue('LineHeight');
- value && ui.setValue((value + '').replace(/cm/, ''));
- ui.setChecked(state)
- }
- });
- return ui;
- };
- var rowspacings = ['top', 'bottom'];
- for (var r = 0, ri; ri = rowspacings[r++];) {
- (function (cmd) {
- editorui['rowspacing' + cmd] = function (editor) {
- var val = editor.options['rowspacing' + cmd] || [];
- if (!val.length) return null;
- for (var i = 0, ci, items = []; ci = val[i++];) {
- items.push({
- label:ci,
- value:ci,
- theme:editor.options.theme,
- onclick:function () {
- editor.execCommand("rowspacing", this.value, cmd);
- }
- })
- }
- var ui = new editorui.MenuButton({
- editor:editor,
- className:'edui-for-rowspacing' + cmd,
- title:editor.options.labelMap['rowspacing' + cmd] || editor.getLang("labelMap.rowspacing" + cmd) || '',
- items:items,
- onbuttonclick:function () {
- var value = editor.queryCommandValue('rowspacing', cmd) || this.value;
- editor.execCommand("rowspacing", value, cmd);
- }
- });
- editorui.buttons[cmd] = ui;
- editor.addListener('selectionchange', function () {
- var state = editor.queryCommandState('rowspacing', cmd);
- if (state == -1) {
- ui.setDisabled(true);
- } else {
- ui.setDisabled(false);
- var value = editor.queryCommandValue('rowspacing', cmd);
- value && ui.setValue((value + '').replace(/%/, ''));
- ui.setChecked(state)
- }
- });
- return ui;
- }
- })(ri)
- }
- //有序,无序列表
- var lists = ['insertorderedlist', 'insertunorderedlist'];
- for (var l = 0, cl; cl = lists[l++];) {
- (function (cmd) {
- editorui[cmd] = function (editor) {
- var vals = editor.options[cmd],
- _onMenuClick = function () {
- editor.execCommand(cmd, this.value);
- }, items = [];
- for (var i in vals) {
- items.push({
- label:vals[i] || editor.getLang()[cmd][i] || "",
- value:i,
- theme:editor.options.theme,
- onclick:_onMenuClick
- })
- }
- var ui = new editorui.MenuButton({
- editor:editor,
- className:'edui-for-' + cmd,
- title:editor.getLang("labelMap." + cmd) || '',
- 'items':items,
- onbuttonclick:function () {
- var value = editor.queryCommandValue(cmd) || this.value;
- editor.execCommand(cmd, value);
- }
- });
- editorui.buttons[cmd] = ui;
- editor.addListener('selectionchange', function () {
- var state = editor.queryCommandState(cmd);
- if (state == -1) {
- ui.setDisabled(true);
- } else {
- ui.setDisabled(false);
- var value = editor.queryCommandValue(cmd);
- ui.setValue(value);
- ui.setChecked(state)
- }
- });
- return ui;
- };
- })(cl)
- }
- editorui.fullscreen = function (editor, title) {
- title = editor.options.labelMap['fullscreen'] || editor.getLang("labelMap.fullscreen") || '';
- var ui = new editorui.Button({
- className:'edui-for-fullscreen',
- title:title,
- theme:editor.options.theme,
- onclick:function () {
- if (editor.ui) {
- editor.ui.setFullScreen(!editor.ui.isFullScreen());
- }
- this.setChecked(editor.ui.isFullScreen());
- }
- });
- editorui.buttons['fullscreen'] = ui;
- editor.addListener('selectionchange', function () {
- var state = editor.queryCommandState('fullscreen');
- ui.setDisabled(state == -1);
- ui.setChecked(editor.ui.isFullScreen());
- });
- return ui;
- };
- // 表情
- editorui["emotion"] = function (editor, iframeUrl) {
- var cmd = "emotion";
- var ui = new editorui.MultiMenuPop({
- title:editor.options.labelMap[cmd] || editor.getLang("labelMap." + cmd + "") || '',
- editor:editor,
- className:'edui-for-' + cmd,
- iframeUrl:editor.ui.mapUrl(iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd])
- });
- editorui.buttons[cmd] = ui;
- editor.addListener('selectionchange', function () {
- ui.setDisabled(editor.queryCommandState(cmd) == -1)
- });
- return ui;
- };
- editorui.autotypeset = function (editor) {
- var ui = new editorui.AutoTypeSetButton({
- editor:editor,
- title:editor.options.labelMap['autotypeset'] || editor.getLang("labelMap.autotypeset") || '',
- className:'edui-for-autotypeset',
- onbuttonclick:function () {
- editor.execCommand('autotypeset')
- }
- });
- editorui.buttons['autotypeset'] = ui;
- editor.addListener('selectionchange', function () {
- ui.setDisabled(editor.queryCommandState('autotypeset') == -1);
- });
- return ui;
- };
- /* 简单上传插件 */
- editorui["simpleupload"] = function (editor) {
- var name = 'simpleupload',
- ui = new editorui.Button({
- className:'edui-for-' + name,
- title:editor.options.labelMap[name] || editor.getLang("labelMap." + name) || '',
- onclick:function () {},
- theme:editor.options.theme,
- showText:false
- });
- editorui.buttons[name] = ui;
- editor.addListener('ready', function() {
- var b = ui.getDom('body'),
- iconSpan = b.children[0];
- editor.fireEvent('simpleuploadbtnready', iconSpan);
- });
- editor.addListener('selectionchange', function (type, causeByUi, uiReady) {
- var state = editor.queryCommandState(name);
- if (state == -1) {
- ui.setDisabled(true);
- ui.setChecked(false);
- } else {
- if (!uiReady) {
- ui.setDisabled(false);
- ui.setChecked(state);
- }
- }
- });
- return ui;
- };
- })();
|