var $body = $("body"); ue.registerui('wordconvert', function (editor) { var managepath = editor.options['wordconverturl']; var uploadproviderkey = editor.options["uploadproviderkey"]; var isextendfield = editor.options["isextendfield"]; var extendfieldid = editor.options["extendfieldid"]; var iframeurl = managepath + '?uploadproviderkey=' + uploadproviderkey + '&isextendfield=' + isextendfield + '&extendfieldid=' + extendfieldid + '&propertyname=' + editor.key; //创建dialog var worddialog = new ue.ui.dialog({ //指定弹出层中页面的路径 iframeurl: iframeurl, editor: editor, name: "wordconvertdialog", title: '导入word文档', cssrules: 'width:698px;height:380px;', buttons: [ { classname: 'edui-okbutton', label: '确定', onclick: function () { var checkboxchecked, isremovelink, wordcontent, $title, filename, confirmresult = true; var $dialogcontents = $(this.getdom()).parents('.edui-dialog').find('iframe').contents(); var id = $dialogcontents.find("#ueditor_uoloadword_tab").find(".active").attr("id"); switch (id) { case "uploadword": checkboxchecked = $dialogcontents.find('.selectfilename input[type=checkbox]') .prop('checked'); isremovelink = $dialogcontents.find('#word_convert-remove_link').prop('checked'); if ($dialogcontents.find("#filename").html().trim() && !$dialogcontents.find('#wordcontent').html()) { alert("word文档还未上传成功,请稍后。"); return; } wordcontent = $dialogcontents.find('#wordcontent').html(); break; case "uploadlocalword": checkboxchecked = $dialogcontents.find('#localwordfilename').prop('checked'); isremovelink = $dialogcontents.find('#localwordremovelink').prop('checked'); wordcontent = getselectjsonarr($dialogcontents, "#localfile_selectjsonarr", "word"); break; case "uploadmaterialword": checkboxchecked = $dialogcontents.find('#materialwordfilename').prop('checked'); isremovelink = $dialogcontents.find('#materialwordremovelink').prop('checked'); wordcontent = getselectjsonarr($dialogcontents, "#material_selectjsonarr", "word"); break; } if (wordcontent) { if (checkboxchecked) { $title = $(this.getdom()).parents().find('input[name="title"]'); filename = $dialogcontents.find("#filename").html().trim(); if ($title.val().trim().length > 0) { confirmresult = confirm("是否替换已有的标题?"); } if (confirmresult) { $title.val(filename.substring(0, filename.lastindexof('.'))); } } if (isremovelink) { var $contentparsed = $($.parsehtml("
" + $.trim(wordcontent) + "
")); $contentparsed.find('a').each(function (i, n) { var $taga = $(n); $taga.replacewith($taga.html()); }); wordcontent = $contentparsed.get(0).outerhtml; } var isappendto = editor.getcontent() !== ''; editor.setcontent(wordcontent.trim(), isappendto); } worddialog.close(); } }, { classname: 'edui-nobutton', label: '取消', onclick: function () { worddialog.close(); } } ] }); //创建word按钮 var btn = new ue.ui.button({ name: 'importword', title: '导入word文档', cssrules: 'background-position: -300px 80px;', onclick: function () { var $title = $(this.getdom()).parents().find('input[name="title"]'); if ($title.length > 0) { worddialog.iframeurl = iframeurl + "&showwordcheckbox=true"; } worddialog.render(); worddialog.open(); } }); editor.addlistener('selectionchange', function (type, causebyui, uiready) { if (!uiready) { var state = editor.querycommandstate("wordconvert"); if (state === -1) { btn.setdisabled(true); } else { btn.setdisabled(false); } } }); return btn; }); ue.registerui('collapse', function (editor, uiname) { var btn = new ue.ui.button({ name: uiname, title: '展开/折叠', showicon: false, label: '', editor: editor, onclick: function () { var toolbarbox = editor.ui.getdom('toolbarbox'); var icon = this.getdom('icon'); if (toolbarbox.dataset.collapse === 'false') { toolbarbox.classname = "edui-editor-toolbarbox edui-default"; toolbarbox.dataset.collapse = 'true'; icon.classname = 'fa fa-angle-double-down'; } else { toolbarbox.classname = "edui-editor-toolbarbox-open edui-default"; toolbarbox.dataset.collapse = 'false'; icon.classname = 'fa fa-angle-double-up'; } } }); return btn; }); ue.registerui('rarefont', function (editor, uiname) { var btn = new ue.ui.button({ name: uiname, title: '非常见字体检测', showicon: false, label: '', editor: editor, onclick: function () { } }); editor.addlistener('selectionchange', function (type, causebyui, uiready) { if (!uiready) { var content = editor.getcontent(); var usefonts = []; var styles = content.match(/style\s*\=\s*\"(.*?)\"/gi); //获取所有的style="..."。 if (styles) { for (var i = 0; i < styles.length; i++) { var style = styles[i].replace(/[\"\']/g, ''); //去除所有单双引号。 style = style.replace(/"/g, '').replace(/'/g, ''); style = style.replace(/"/g, '').replace(/'/g, '') + '"'; var fontfamilies = style.match(/font-family\s*\:\s*(.*?)[\;\"]/gi); //获取font-family:...;。 if (fontfamilies) { for (var j = 0; j < fontfamilies.length; j++) { var font = fontfamilies[j].match(/([^\:]+)(?=[\;\"])/gi); //获取font-family值。 usefonts = usefonts.concat(font.tostring().split(',')); } usefonts = array.from(new set(usefonts)); //去重。 } } } var rarefonts = []; var commonfonts = ['andale mono', 'arial', 'helvetica', 'sans-serif', 'arial black', 'avant garde', 'comic sans ms', 'impact', 'chicago', 'times new roman', '宋体', 'simsun', '楷体', 'simkai', '微软雅黑', 'microsoft yahei', '黑体', 'simhei', '隶书', 'simli']; if (usefonts.length) { for (var i = 0; i < usefonts.length; i++) { if (commonfonts.indexof(usefonts[i].trim()) === -1) { rarefonts.push(usefonts[i].trim()); } } } if (rarefonts.length) { $('#rate_font_icon').attr('class', 'fa fa-font rare-font-twinkle'); var tips = '检测到内容格式中设置了非常见字体“' + rarefonts.join('、') + '”,可能会出现在客户端浏览时字体设置失效的问题!因为并不是所有客户端的电脑上都已会安装非常见字体。如果客户端没有安装相应的字体,在显示时就会出现字体设置失效的问题。另外请确认您已获得了此字体的著作权人的授权,未经授权使用商业字体将面临侵权的风险。'; $('#rate_font_icon').parents('.edui-button-body').attr('title', tips); } else { $('#rate_font_icon').attr('class', 'fa fa-font rare-font-default'); $('#rate_font_icon').parents('.edui-button-body').attr('title', btn.title); } } }); return btn; }); ue.registerui('pdfconvert', function (editor) { var managepath = editor.options['pdfconverturl']; var uploadproviderkey = editor.options["uploadproviderkey"]; var isextendfield = editor.options["isextendfield"]; var extendfieldid = editor.options["extendfieldid"]; var iframeurl = managepath + '?uploadproviderkey=' + uploadproviderkey + '&isextendfield=' + isextendfield + '&extendfieldid=' + extendfieldid + '&propertyname=' + editor.key; //创建dialog var pdfdialog = new ue.ui.dialog({ //指定弹出层中页面的路径 iframeurl: iframeurl, editor: editor, name: "pdfconvertdialog", title: 'pdf导入', cssrules: 'width:698px;height:380px;', buttons: [ { classname: 'edui-okbutton', label: '确定', onclick: function () { var $dialogcontents = $(this.getdom()).parents('.edui-dialog').find('iframe').contents(); var pdfcontent = "", iswidthequal, checkboxchecked, $title, filename; var id = $dialogcontents.find("#ueditor_uoloadpdf_tab").find(".active").attr("id"); switch (id) { case "uploadpdf": iswidthequal = $dialogcontents.find('#pdf_convert-width_equal').prop('checked'); checkboxchecked = $dialogcontents.find('.selectfilename input[type=checkbox]').prop('checked'); pdfcontent = $dialogcontents.find('#pdfcontent').html(); break; case "uploadlocalpdf": /* 从已上传文件中选择*/ iswidthequal = $dialogcontents.find('#localpdfwidthequal').prop('checked'); checkboxchecked = $dialogcontents.find('#localpdffilename').prop('checked'); pdfcontent = getselectjsonarr($dialogcontents, "#localfile_selectjsonarr", "pdf"); break; case "uploadmaterialpdf": /* 从素材库中选择*/ iswidthequal = $dialogcontents.find('#materialpdfwidthequal').prop('checked'); checkboxchecked = $dialogcontents.find('#materialpdffilename').prop('checked'); pdfcontent = getselectjsonarr($dialogcontents, "#material_selectjsonarr", "pdf"); break; } if (pdfcontent) { if (checkboxchecked) { $title = $(this.getdom()).parents().find('input[name="title"]'); filename = $dialogcontents.find("#filename").html().trim(); var confirmresult = true; if ($title.val().trim().length > 0) { confirmresult = confirm("是否替换已有的标题?"); } if (confirmresult) { $title.val(filename.substring(0, filename.lastindexof('.'))); } } if (iswidthequal) { pdfcontent = pdfcontent.trim().replace(' 0) { editor.focus(); editor.execcommand('inserthtml', pdfcontent.trim()); } else { editor.setcontent(pdfcontent.trim(), false); } pdfdialog.close(); } }, { classname: 'edui-nobutton', label: '取消', onclick: function () { pdfdialog.close(); } } ] }); //创建pdf按钮 var btn = new ue.ui.button({ name: 'importpdf', title: 'pdf导入', cssrules: 'background-position: -280px 80px;', onclick: function () { var $title = $(this.getdom()).parents().find('input[name="title"]'); if ($title.length > 0) { pdfdialog.iframeurl = iframeurl + "&showpdfcheckbox=true"; } pdfdialog.render(); pdfdialog.open(); } }); editor.addlistener('selectionchange', function (type, causebyui, uiready) { if (!uiready) { var state = editor.querycommandstate("pdfconvert"); if (state === -1) { btn.setdisabled(true); } else { btn.setdisabled(false); } } }); return btn; }); // 插入音频。 ue.registerui('insertaudio', function (editor) { var managepath = editor.options['insertaudiourl']; var uploadproviderkey = editor.options["uploadproviderkey"]; var isextendfield = editor.options["isextendfield"]; var extendfieldid = editor.options["extendfieldid"]; var iframeurl = managepath + '?uploadproviderkey=' + uploadproviderkey + '&isextendfield=' + isextendfield + '&extendfieldid=' + extendfieldid + '&propertyname=' + editor.key; //创建dialog var pdfdialog = new ue.ui.dialog({ //指定弹出层中页面的路径 iframeurl: iframeurl, editor: editor, name: "uploadaudiodialog", title: '导入音频', cssrules: 'width:698px;height:385px;', buttons: [ { classname: 'edui-okbutton', label: '确定', onclick: function () { var $dialogcontents = $(this.getdom()).parents('.edui-dialog').find('iframe').contents(); var audiocontent = ""; var id = $dialogcontents.find("#ueditor_uoloadaudio_tab").find(".active").attr("id"); switch (id) { case "uploadaudio": audiocontent = $dialogcontents.find('#audiocontent').html(); break; case "uploadlocalaudio": /* 从已上传文件中选择*/ audiocontent = getselectjsonarr($dialogcontents, "#localfile_selectjsonarr", "audio"); break; case "uploadmaterialaudio": /* 从素材库中选择*/ audiocontent = getselectjsonarr($dialogcontents, "#material_selectjsonarr", "audio"); break; } $dialogcontents.find('#audiocontent').html(audiocontent); audiocontent = $dialogcontents.find('#audiocontent').html(); editor.focus(); editor.execcommand('inserthtml', audiocontent.trim()); pdfdialog.close(); } }, { classname: 'edui-nobutton', label: '取消', onclick: function () { pdfdialog.close(); } } ] }); //创建音频按钮 var btn = new ue.ui.button({ name: 'importaudio', title: '音频导入', cssrules: 'background-position: -18px -40px;', onclick: function () { var $title = $(this.getdom()).parents().find('input[name="title"]'); if ($title.length > 0) { pdfdialog.iframeurl = iframeurl + "&showpdfcheckbox=true"; } pdfdialog.render(); pdfdialog.open(); } }); editor.addlistener('selectionchange', function (type, causebyui, uiready) { if (!uiready) { var state = editor.querycommandstate("insertaudio"); if (state === -1) { btn.setdisabled(true); } else { btn.setdisabled(false); } } }); return btn; }); function getselectjsonarr($dialogcontents, $selectjsonarr, filetype) { var content = "", urlselector = ""; var selectjsonarr = $dialogcontents.find($selectjsonarr); if (filetype === "pdf") { urlselector = "#pdftoimageurl"; } else if (filetype === "audio") { urlselector = "#audiotomp3url"; } else if (filetype === "word") { urlselector = "#wordconverttohtml"; } var url = $dialogcontents.find(urlselector).val(); if (selectjsonarr.length > 0 && selectjsonarr.val()) { selectjsonarr = json.parse(selectjsonarr.val()); for (var i = 0; i < selectjsonarr.length; i++) { var fullurl; if (url.indexof('?') > -1) { fullurl = url + "&filepath=" + selectjsonarr[i]["url"]; } else { fullurl = url + "?filepath=" + selectjsonarr[i]["url"] + "&isuploaded=true"; } $.ajaxpreventcsrf({ url: fullurl, type: 'post', async: false, datatype: "json", success: function (data) { content += data.result; } }); } /* 默认选择第一个文件名作为标题*/ $dialogcontents.find("#filename").html(selectjsonarr[0]["filename"]); } return content; }