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;
}