|
|
|
|
// 菜单显示异常修改tinymce/skins/ui/oxide/skin.min.css:96 .tox-silver-sink的z-index值
|
|
|
|
|
// http://tinymce.ax-z.cn/ 中文文档
|
|
|
|
|
|
|
|
|
|
layui.define(['jquery'],function (exports) {
|
|
|
|
|
var $ = layui.$
|
|
|
|
|
|
|
|
|
|
var modFile = layui.cache.modules['tinymce'];
|
|
|
|
|
|
|
|
|
|
var modPath = modFile.substr(0, modFile.lastIndexOf('.'))
|
|
|
|
|
|
|
|
|
|
var setter = layui.setter || {}//兼容layuiadmin
|
|
|
|
|
|
|
|
|
|
var response = setter.response || {}//兼容layuiadmin
|
|
|
|
|
|
|
|
|
|
// ---------------- 以上代码无需修改 ----------------
|
|
|
|
|
|
|
|
|
|
var settings = {
|
|
|
|
|
base_url: modPath
|
|
|
|
|
, images_upload_url: '/rest/upload'//图片上传接口,可在option传入,也可在这里修改,option的值优先
|
|
|
|
|
, language: 'zh_CN'//语言,可在option传入,也可在这里修改,option的值优先
|
|
|
|
|
, response: {//后台返回数据格式设置
|
|
|
|
|
statusName: response.statusName || 'code'//返回状态字段
|
|
|
|
|
, msgName: response.msgName || 'msg'//返回消息字段
|
|
|
|
|
, dataName: response.dataName || 'data'//返回的数据
|
|
|
|
|
, statusCode: response.statusCode || {
|
|
|
|
|
ok: 0//数据正常
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
, success: function (res, succFun, failFun) {//图片上传完成回调 根据自己需要修改
|
|
|
|
|
if (res[this.response.statusName] == this.response.statusCode.ok) {
|
|
|
|
|
succFun(res[this.response.dataName]);
|
|
|
|
|
} else {
|
|
|
|
|
failFun(res[this.response.msgName]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// ---------------- 以下代码无需修改 ----------------
|
|
|
|
|
|
|
|
|
|
var t = {};
|
|
|
|
|
|
|
|
|
|
//初始化
|
|
|
|
|
t.render = function (option,callback) {
|
|
|
|
|
|
|
|
|
|
var admin = layui.admin || {}
|
|
|
|
|
|
|
|
|
|
option.base_url = option.base_url ? option.base_url : settings.base_url
|
|
|
|
|
|
|
|
|
|
option.language = option.language ? option.language : settings.language
|
|
|
|
|
|
|
|
|
|
option.selector = option.selector ? option.selector : option.elem
|
|
|
|
|
|
|
|
|
|
option.quickbars_selection_toolbar = option.quickbars_selection_toolbar ? option.quickbars_selection_toolbar : 'cut copy | bold italic underline strikethrough '
|
|
|
|
|
|
|
|
|
|
option.plugins = option.plugins ? option.plugins : 'quickbars print preview searchreplace autolink fullscreen image link media codesample table charmap hr advlist lists wordcount imagetools indent2em';
|
|
|
|
|
|
|
|
|
|
option.toolbar = option.toolbar ? option.toolbar : 'undo redo | forecolor backcolor bold italic underline strikethrough | indent2em alignleft aligncenter alignright alignjustify outdent indent | link bullist numlist image table codesample | formatselect fontselect fontsizeselect';
|
|
|
|
|
|
|
|
|
|
option.resize = false;
|
|
|
|
|
|
|
|
|
|
option.elementpath = false
|
|
|
|
|
|
|
|
|
|
option.branding = false;
|
|
|
|
|
|
|
|
|
|
option.contextmenu_never_use_native = true;
|
|
|
|
|
|
|
|
|
|
option.menubar = option.menubar ? option.menubar : 'file edit insert format table';
|
|
|
|
|
|
|
|
|
|
option.images_upload_url = option.images_upload_url ? option.images_upload_url : settings.images_upload_url;
|
|
|
|
|
|
|
|
|
|
option.images_upload_handler = option.images_upload_handler? option.images_upload_handler : function (blobInfo, succFun, failFun) {
|
|
|
|
|
|
|
|
|
|
var formData = new FormData();
|
|
|
|
|
|
|
|
|
|
formData.append('target', 'edit');
|
|
|
|
|
|
|
|
|
|
formData.append('edit', blobInfo.blob());
|
|
|
|
|
|
|
|
|
|
var ajaxOpt = {
|
|
|
|
|
|
|
|
|
|
url: option.images_upload_url,
|
|
|
|
|
|
|
|
|
|
dataType: 'json',
|
|
|
|
|
|
|
|
|
|
type: 'POST',
|
|
|
|
|
|
|
|
|
|
data: formData,
|
|
|
|
|
|
|
|
|
|
processData: false,
|
|
|
|
|
|
|
|
|
|
contentType: false,
|
|
|
|
|
|
|
|
|
|
success: function (res) {
|
|
|
|
|
|
|
|
|
|
settings.success(res, succFun, failFun)
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
error: function (res) {
|
|
|
|
|
|
|
|
|
|
failFun("网络错误:" + res.status);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (typeof admin.req == 'function') {
|
|
|
|
|
|
|
|
|
|
admin.req(ajaxOpt);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
$.ajax(ajaxOpt);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
option.menu = option.menu ? option.menu : {
|
|
|
|
|
file: {title: '文件', items: 'newdocument | print preview fullscreen | wordcount'},
|
|
|
|
|
edit: {title: '编辑', items: 'undo redo | cut copy paste pastetext selectall | searchreplace'},
|
|
|
|
|
format: {
|
|
|
|
|
title: '格式',
|
|
|
|
|
items: 'bold italic underline strikethrough superscript subscript | formats | forecolor backcolor | removeformat'
|
|
|
|
|
},
|
|
|
|
|
table: {title: '表格', items: 'inserttable tableprops deletetable | cell row column'},
|
|
|
|
|
};
|
|
|
|
|
if(typeof tinymce == 'undefined'){
|
|
|
|
|
|
|
|
|
|
$.ajax({//获取插件
|
|
|
|
|
url: option.base_url + '/tinymce.js',
|
|
|
|
|
|
|
|
|
|
dataType: 'script',
|
|
|
|
|
|
|
|
|
|
cache: true,
|
|
|
|
|
|
|
|
|
|
async: false,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
layui.sessionData('layui-tinymce',{
|
|
|
|
|
|
|
|
|
|
key:option.selector,
|
|
|
|
|
|
|
|
|
|
value:option
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
tinymce.init(option);
|
|
|
|
|
|
|
|
|
|
if(typeof callback == 'function'){
|
|
|
|
|
|
|
|
|
|
callback.call(option)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return tinymce.activeEditor;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
t.init = t.render
|
|
|
|
|
|
|
|
|
|
// 获取ID对应的编辑器对象
|
|
|
|
|
t.get = (elem) => {
|
|
|
|
|
|
|
|
|
|
if(elem && /^#|\./.test(elem)){
|
|
|
|
|
|
|
|
|
|
var id = elem.substr(1)
|
|
|
|
|
|
|
|
|
|
var edit = tinymce.editors[id];
|
|
|
|
|
|
|
|
|
|
if(!edit){
|
|
|
|
|
|
|
|
|
|
return console.error("编辑器未加载")
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return edit
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
return console.error("elem错误")
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//重载
|
|
|
|
|
t.reload = (option,callback) => {
|
|
|
|
|
option = option || {}
|
|
|
|
|
|
|
|
|
|
var edit = t.get(option.elem);
|
|
|
|
|
|
|
|
|
|
var optionCache = layui.sessionData('layui-tinymce')[option.elem]
|
|
|
|
|
|
|
|
|
|
edit.destroy()
|
|
|
|
|
|
|
|
|
|
$.extend(optionCache,option)
|
|
|
|
|
|
|
|
|
|
tinymce.init(optionCache)
|
|
|
|
|
|
|
|
|
|
if(typeof callback == 'function'){
|
|
|
|
|
|
|
|
|
|
callback.call(optionCache)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return tinymce.activeEditor;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exports('tinymce', t);
|
|
|
|
|
});
|