SrtToTxt
This commit is contained in:
723
学生学习页面_files/multieditor.js.下载
Normal file
723
学生学习页面_files/multieditor.js.下载
Normal file
@@ -0,0 +1,723 @@
|
||||
var MultiEditor = {
|
||||
puid: '',
|
||||
yunToken: '',
|
||||
prdid: '442',//产品号,云盘那边给我们分配的,区分数据是那个团队传过去的
|
||||
isPhone: false, //是否是移动端
|
||||
idList: [],//编辑器id列表,防止重复调用initEditor
|
||||
hasLoadAttachListener: false, //是否加载了附件监听js
|
||||
nowDomain: '',//引用当前js的域名
|
||||
noteDomain: 'https://noteyd.chaoxing.com',//默认的js前缀
|
||||
passport2Domain: 'https://passport2.chaoxing.com',
|
||||
hasLoadedEditor: false, //编辑器是否加载完成
|
||||
init: function () {
|
||||
type, ua, options
|
||||
}, //加载配置文件
|
||||
initEditor: function (json, callback, changecallback) {
|
||||
}, //编辑页初始化编辑器
|
||||
loadJSFile: function (src, cb) {
|
||||
},
|
||||
getRichText: function (editorid) {
|
||||
}, // 获取富文本内容
|
||||
setRichText: function (editorid, content) {
|
||||
}, // 设置富文本内容
|
||||
renderRichtext: function (editorId, content, ua) {
|
||||
}, //详情页渲染富文本内容
|
||||
getUploadConfig: function (editorId) {
|
||||
}, //获取上传信息
|
||||
unescapeHTML: function (content) {
|
||||
}, //还原html脚本
|
||||
randomUUID: function () {
|
||||
}, //生成随机id
|
||||
pcLoadProfile: function () {
|
||||
},//加载PC配置文件
|
||||
loadUE: function (editorid, cb) {
|
||||
},//加载完编辑器
|
||||
focus: function () {
|
||||
},//光标定到编辑器
|
||||
insertHTML: function (editorid, html) {
|
||||
},//插入到编辑器
|
||||
insertTeacherCommentAttach: function (editorid, data) {
|
||||
},//题目编辑器-插入教师批注附件
|
||||
execCommand: function (editorid, cmd, data) {
|
||||
},//编辑器-执行命令
|
||||
destoryEditor: function (editorid) {
|
||||
}, //销毁编辑器
|
||||
hasLoadEditFile: false, //是否已经加载过编辑页配置文件
|
||||
hasLoadDetailFile: false, //是否已经加载过详情页配置文件
|
||||
hasLoadRichTextUitl: false, //是否已经加载过Richtextutil文件
|
||||
intranetMode: false,//镜像编辑器,不是镜像笔记
|
||||
options: {},//传过来的参数
|
||||
mirrorDomainList:{},//镜像接口获取的域名信息
|
||||
mirrorPanDomain:'',//云盘镜像地址
|
||||
mirrorPhotoDomain:'',//图片服务镜像地址
|
||||
isMirrorDeploy:'',//是镜像笔记服务
|
||||
isFileDownloadPageJump: false, // 是否是下载文件触发的页面跳转
|
||||
}
|
||||
|
||||
/*加载配置文件
|
||||
*type: edit 或者 detail
|
||||
* ua: 指定是app还是pc
|
||||
* options: isIntranetMode:是否是镜像模式
|
||||
* prefix 前缀
|
||||
* */
|
||||
MultiEditor.init = function (type, ua, options) {
|
||||
var uaInfor = navigator.userAgent.toLowerCase();
|
||||
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) || navigator.userAgent.indexOf('harmony') > -1) {
|
||||
MultiEditor.isPhone = true;
|
||||
} else if (ua == 'app') {
|
||||
MultiEditor.isPhone = true;
|
||||
}
|
||||
if (options) {
|
||||
MultiEditor.options = options;
|
||||
}
|
||||
//如果已经加载过,不再加载配置文件
|
||||
if (type == 'edit') {
|
||||
if (MultiEditor.hasLoadEditFile) {
|
||||
return;
|
||||
}
|
||||
MultiEditor.hasLoadEditFile = true;
|
||||
} else if (type == 'detail') {
|
||||
if (MultiEditor.hasLoadDetailFile) {
|
||||
return;
|
||||
}
|
||||
MultiEditor.hasLoadDetailFile = true;
|
||||
}
|
||||
if (MultiEditor.currentHref && MultiEditor.currentHref.indexOf('bistatic-') > -1) {
|
||||
MultiEditor.noteDomain = window.location.protocol + '//bistatic-' + MultiEditor.noteDomain.replace('http:','').replace('https:','');
|
||||
}
|
||||
let prefix = ''
|
||||
if (options && options.isIntranetMode) {
|
||||
//是镜像
|
||||
MultiEditor.intranetMode = true;
|
||||
if (options && options.prefix) {
|
||||
MultiEditor.prefix = options.prefix;
|
||||
} else {
|
||||
MultiEditor.prefix = 'ueditor4thirdparty/';
|
||||
}
|
||||
prefix = MultiEditor.prefix;
|
||||
MultiEditor.isPhone = false; //镜像还没有支持移动端
|
||||
} else {
|
||||
if (options && options.prefix) {
|
||||
MultiEditor.prefix = options.prefix;
|
||||
} else {
|
||||
MultiEditor.prefix = window.location.protocol + '//' + MultiEditor.nowDomain;
|
||||
}
|
||||
prefix = MultiEditor.prefix + '/res/plugin/ueditor4thirdparty/'
|
||||
}
|
||||
|
||||
if (MultiEditor.isPhone) { //移动端
|
||||
if(!window.obj){
|
||||
window.obj = {};
|
||||
}
|
||||
if(window.location.host.indexOf('chaoxing.com') == -1){
|
||||
//非超星域名获取镜像域名列表
|
||||
MultiEditor.getMirrorDomain();
|
||||
}
|
||||
if (ua == 'xxt' && uaInfor.indexOf("chaoxingstudy") != -1) {
|
||||
MultiEditor.loadJSFile(MultiEditor.prefix + '/res/plugin/meditor/js/mrich.text.util.js?_t=' + new Date().getTime(), function () {
|
||||
if (type == 'edit') {
|
||||
MrichTextUitl.loadEditorProfile2();
|
||||
} else if (type == 'detail') {
|
||||
MrichTextUitl.loadDetailPageProfile2();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
//防止attachment_listener加载多次
|
||||
if (MultiEditor.hasLoadAttachListener == false && typeof AttachmentListener == 'undefined') {
|
||||
MultiEditor.loadJSFile(MultiEditor.prefix + '/res/pc/js/noteRichtext/attachment_listener.js?_t=' + new Date().getTime())
|
||||
AttachmentListener = {};
|
||||
MultiEditor.hasLoadAttachListener = true;
|
||||
}
|
||||
if (type == 'edit') {
|
||||
MultiEditor.loadJSFile(MultiEditor.prefix + '/res/plugin/meditor/js/mrich.text.util.js?_t=' + new Date().getTime(), function () {
|
||||
for (var key in MultiEditor.options) {
|
||||
MrichTextUitl[key] = MultiEditor.options[key];
|
||||
}
|
||||
MrichTextUitl.loadMoreEditorProfile();
|
||||
});
|
||||
} else if (type == 'detail') {
|
||||
MultiEditor.loadJSFile(MultiEditor.prefix + '/res/plugin/ueditor4thirdparty/rich.text.util.js?_t=' + new Date().getTime(), function () {
|
||||
MultiEditor.pcLoadProfile(type);
|
||||
})
|
||||
}
|
||||
}
|
||||
} else { //PC
|
||||
//防止attachment_listener加载多次
|
||||
if (MultiEditor.hasLoadAttachListener == false && typeof AttachmentListener == 'undefined') {
|
||||
MultiEditor.loadJSFile(MultiEditor.prefix + '/res/pc/js/noteRichtext/attachment_listener.js?_t=' + new Date().getTime())
|
||||
AttachmentListener = {};
|
||||
MultiEditor.hasLoadAttachListener = true;
|
||||
}
|
||||
if (typeof RichTextUitl == 'undefined') {
|
||||
if (MultiEditor.hasLoadRichTextUitl) {
|
||||
//防止两次调用期间js还没加载完成
|
||||
var timer = setInterval(function () {
|
||||
if (typeof RichTextUitl != 'undefined') {
|
||||
clearInterval(timer)
|
||||
MultiEditor.pcLoadProfile(type);
|
||||
}
|
||||
}, 500);
|
||||
} else {
|
||||
MultiEditor.hasLoadRichTextUitl = true;
|
||||
MultiEditor.loadJSFile(prefix + 'rich.text.util.js?_t=' + new Date().getTime(), function () {
|
||||
MultiEditor.pcLoadProfile(type);
|
||||
})
|
||||
}
|
||||
} else {
|
||||
MultiEditor.pcLoadProfile(type);
|
||||
}
|
||||
}
|
||||
}
|
||||
//获取镜像域名
|
||||
MultiEditor.getMirrorDomain = function(){
|
||||
if (typeof jQuery != 'undefined') {
|
||||
var json = {
|
||||
url: MultiEditor.prefix + '/apis/mirrorConfig',
|
||||
type: "get",
|
||||
xhrFields: {
|
||||
withCredentials: true
|
||||
},
|
||||
data: {},
|
||||
dataType: "json",
|
||||
success: function (res) {
|
||||
if(res.result){
|
||||
let result = res.data
|
||||
MultiEditor.mirrorDomainList = result.domainMap;
|
||||
for(var key in MultiEditor.mirrorDomainList){
|
||||
if(MultiEditor.mirrorDomainList[key]){
|
||||
MultiEditor.mirrorDomainList[key] = window.location.protocol + MultiEditor.mirrorDomainList[key].replace('https:','').replace('http:','')
|
||||
}
|
||||
}
|
||||
MultiEditor.isMirrorDeploy = result.isMirrorDeploy;
|
||||
window.obj.mirrorDomain = MultiEditor.mirrorDomainList;
|
||||
window.obj.mirrorDomain.isMirrorDeploy = result.isMirrorDeploy
|
||||
MultiEditor.noteDomain = MultiEditor.mirrorDomainList.NoteDomainHttps
|
||||
MultiEditor.mirrorPanDomain = MultiEditor.mirrorDomainList.panDomainHttps
|
||||
MultiEditor.mirrorPhotoDomain = MultiEditor.mirrorDomainList.photoDomainHttps
|
||||
MultiEditor.passport2Domain = MultiEditor.mirrorDomainList.passport2DomainHttps
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
}
|
||||
}
|
||||
// 同步调用
|
||||
json.async = false;
|
||||
$.ajax(json);
|
||||
}
|
||||
}
|
||||
//加载PC配置文件
|
||||
MultiEditor.pcLoadProfile = function (type) {
|
||||
RichTextUitl.ismultiEditor = true;
|
||||
if (MultiEditor.options) {
|
||||
for (var key in MultiEditor.options) {
|
||||
RichTextUitl[key] = MultiEditor.options[key];
|
||||
}
|
||||
if (MultiEditor.intranetMode) {
|
||||
RichTextUitl.intranetMode = true;
|
||||
}
|
||||
RichTextUitl.prefix = MultiEditor.prefix
|
||||
// 查看大图时是否可编辑 默认为false
|
||||
if(MultiEditor.options.isEditableViewLargeImage === true) {
|
||||
RichTextUitl.isEditableViewLargeImage = true
|
||||
}
|
||||
}
|
||||
//提前加载js,避免ueditor报错
|
||||
if (MultiEditor.intranetMode) {
|
||||
MultiEditor.loadJSFile(MultiEditor.prefix + 'rich.text.common.js');
|
||||
} else if (MultiEditor.prefix) {
|
||||
MultiEditor.loadJSFile(MultiEditor.prefix + '/res/pc/js/noteRichtext/rich.text.common.js');
|
||||
} else {
|
||||
MultiEditor.loadJSFile(window.location.protocol + '//' + MultiEditor.nowDomain + '/res/pc/js/noteRichtext/rich.text.common.js');
|
||||
}
|
||||
if (type == 'edit') {
|
||||
RichTextUitl.loadEditorProfile(true, true)
|
||||
} else if (type == 'detail') {
|
||||
RichTextUitl.loadDetailPageProfile(true, true, false, false, true);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* param editorid: 编辑器id、
|
||||
* param content: 富文本内容、
|
||||
* param editorheight: 初始高度
|
||||
* param callback:回调方法(编辑器加载完成后的回调)
|
||||
* param changecallback: 监听内容改变的时候回调
|
||||
*/
|
||||
MultiEditor.initEditor = function (json, callback, changecallback) {
|
||||
var editorid = json.editorid;
|
||||
|
||||
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) || navigator.userAgent.indexOf('harmony') > -1) {
|
||||
MultiEditor.isPhone = true;
|
||||
}
|
||||
if (MultiEditor.isPhone) { //移动端
|
||||
var loadfiletimer = setInterval(function () {
|
||||
if (typeof (MrichTextUitl) != 'undefined' && typeof (zss_editor) != 'undefined' && $('body').length > 0) {
|
||||
clearInterval(loadfiletimer);
|
||||
MrichTextUitl.initMoreEditor(json, callback, changecallback);
|
||||
if (typeof callback == 'function') {
|
||||
callback();
|
||||
MultiEditor.hasLoadedEditor = true;
|
||||
}
|
||||
}
|
||||
}, 500)
|
||||
} else { //PC
|
||||
//不允许同一个id多次初始化
|
||||
if (MultiEditor.idList.indexOf(editorid) > -1) {
|
||||
return;
|
||||
}
|
||||
MultiEditor.idList.push(editorid);
|
||||
// if (document.getElementById(editorid) && document.getElementById(editorid).querySelector('.edui-editor')) {
|
||||
// //已经初始化过的,不再初始化
|
||||
// return;
|
||||
// }
|
||||
document.getElementById(editorid).innerHTML = '<script id="multi' + editorid + '" name="content" type="text/plain"></script>';
|
||||
var loadfiletimer = setInterval(function () {
|
||||
if (typeof (RichTextUitl) != 'undefined' && typeof (UE) != "undefined" && typeof (UE.getEditor) != "undefined") {
|
||||
clearInterval(loadfiletimer);
|
||||
RichTextUitl.initMoreUEditor(json, callback, changecallback);
|
||||
MultiEditor.hasLoadedEditor = true;
|
||||
}
|
||||
}, 500)
|
||||
}
|
||||
}
|
||||
//编辑页插入编辑器内容
|
||||
MultiEditor.setRichText = function (editorid, content) {
|
||||
if (MultiEditor.isPhone) { //移动端
|
||||
if(typeof MrichTextUitl == 'undefined'){
|
||||
console.log('请等待编辑器加载完成...')
|
||||
return
|
||||
}
|
||||
content = MrichTextUitl.beforeSetRtfContent(content,{type:'edit'});
|
||||
MrichTextUitl.setRichtext({'content': content}, editorid);
|
||||
} else { //PC
|
||||
if(typeof RichTextUitl == 'undefined'){
|
||||
console.log('请等待编辑器加载完成...')
|
||||
return
|
||||
}
|
||||
content = RichTextUitl.beforeSetRtfContent(content,{type:'edit'});
|
||||
MultiEditor.loadUE(editorid, function (editor) {
|
||||
editor.setContent(content);
|
||||
})
|
||||
}
|
||||
}
|
||||
/*插入富文本内容
|
||||
* editorid 编辑器id
|
||||
* cmd 命令
|
||||
* data Object类型
|
||||
* */
|
||||
MultiEditor.insertHTML = function (editorid, html) {
|
||||
if (MultiEditor.isPhone) { //移动端
|
||||
html = MrichTextUitl.beforeSetRtfContent(html);
|
||||
} else {
|
||||
html = RichTextUitl.beforeSetRtfContent(html);
|
||||
}
|
||||
MultiEditor.execCommand(editorid, 'inserthtml', html);
|
||||
}
|
||||
/*执行编辑器内部命令
|
||||
* editorid 编辑器id
|
||||
* cmd 命令
|
||||
* data
|
||||
* */
|
||||
MultiEditor.execCommand = function (editorid, cmd, data) {
|
||||
if (MultiEditor.isPhone) { //移动端
|
||||
if (typeof (zss_editor) != 'undefined' && $('body').length > 0) {
|
||||
zss_editor.updateEnterRange(editorid);
|
||||
zss_editor.insertHTML(data)
|
||||
zss_editor.backupRange();
|
||||
}
|
||||
} else { //PC
|
||||
MultiEditor.loadUE(editorid, function (editor) {
|
||||
editor.execCommand(cmd, data);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
//移动端插入图片
|
||||
MultiEditor.insertImage = function (editorid, imgurl, objectId) {
|
||||
if (MultiEditor.isPhone) { //移动端
|
||||
if (typeof (zss_editor) != 'undefined' && $('body').length > 0) {
|
||||
zss_editor.updateEnterRange(editorid);
|
||||
zss_editor.insertImage(imgurl, objectId, '', '', true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MultiEditor.getEditor = function (editorid) {
|
||||
var editor = UE.getEditor('multi' + editorid);
|
||||
return editor;
|
||||
}
|
||||
//编辑器加载完成事件后回调
|
||||
MultiEditor.loadUE = function (editorid, cb) {
|
||||
if (typeof (UE) == 'undefined') {
|
||||
var loadfiletimer = setInterval(function () {
|
||||
if (typeof (UE) != 'undefined') {
|
||||
clearInterval(loadfiletimer);
|
||||
var editor = UE.getEditor('multi' + editorid);
|
||||
if (typeof (editor.body) == 'undefined') {
|
||||
var loadfiletimer2 = setInterval(function () {
|
||||
if (typeof (editor.body) != 'undefined') {
|
||||
clearInterval(loadfiletimer2);
|
||||
if (cb) cb(editor)
|
||||
}
|
||||
}, 500)
|
||||
} else {
|
||||
if (cb) cb(editor)
|
||||
}
|
||||
}
|
||||
}, 500)
|
||||
} else {
|
||||
var editor = UE.getEditor('multi' + editorid);
|
||||
if (typeof (editor.body) == 'undefined') {
|
||||
var loadfiletimer2 = setInterval(function () {
|
||||
if (typeof (editor.body) != 'undefined') {
|
||||
clearInterval(loadfiletimer2);
|
||||
if (cb) cb(editor)
|
||||
}
|
||||
}, 500)
|
||||
} else {
|
||||
if (cb) cb(editor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//编辑页获取编辑器内容
|
||||
MultiEditor.getRichText = function (editorid) {
|
||||
if (MultiEditor.isPhone) { //移动端
|
||||
return MrichTextUitl.getRichtextObj(editorid)
|
||||
} else { //PC
|
||||
if (typeof (UE) == 'undefined' || typeof UE.getEditor('multi' + editorid).body == "undefined") {
|
||||
console.log('编辑器未加载完成,请稍后再获取数据')
|
||||
return null;
|
||||
} else {
|
||||
var richtext = RichTextUitl.getRichText(null, 'multi' + editorid);
|
||||
if (!richtext) {
|
||||
richtext = {attachment: "", content: "", content_imgs: "", rtf_content: "", isuploading: true,hasUploadFailed:''}
|
||||
}
|
||||
return richtext;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**详情页渲染富文本内容
|
||||
* param richtextId 文本容器的id
|
||||
* param content 文本内容
|
||||
* param ua 浏览器
|
||||
* params options 其他参数
|
||||
*/
|
||||
MultiEditor.renderRichtext = function (richtextId, content, ua, options) {
|
||||
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) || navigator.userAgent.indexOf('harmony') > -1) {
|
||||
MultiEditor.isPhone = true;
|
||||
}
|
||||
|
||||
var uaInfor = navigator.userAgent.toLowerCase();
|
||||
if (ua == 'xxt' && uaInfor.indexOf("chaoxingstudy") != -1) {
|
||||
if (typeof (MrichTextUitl) == 'undefined') {
|
||||
var loadfiletimer = setInterval(function () {
|
||||
if (typeof (MrichTextUitl) != 'undefined') {
|
||||
clearInterval(loadfiletimer);
|
||||
zss_editor.changeClientType();
|
||||
zss_editor.init();
|
||||
//渲染富文本内容
|
||||
MrichTextUitl.insertDetailContent(content);
|
||||
}
|
||||
}, 500)
|
||||
} else {
|
||||
zss_editor.changeClientType();
|
||||
zss_editor.init();
|
||||
//渲染富文本内容
|
||||
MrichTextUitl.insertDetailContent(content);
|
||||
}
|
||||
} else {
|
||||
|
||||
if (typeof (RichTextUitl) == 'undefined' || typeof (RichTextUitl.b64DecodeUnicode) == 'undefined') {
|
||||
var loadfiletimer = setInterval(function () {
|
||||
if (typeof (RichTextUitl) != 'undefined' && typeof (RichTextUitl.b64DecodeUnicode) != 'undefined') {
|
||||
clearInterval(loadfiletimer);
|
||||
MultiEditor.pcLoadRichText(richtextId, content, options)
|
||||
}
|
||||
}, 500)
|
||||
} else {
|
||||
MultiEditor.pcLoadRichText(richtextId, content, options)
|
||||
}
|
||||
}
|
||||
|
||||
// 详情页是否显示图片边框
|
||||
if(MultiEditor.options && MultiEditor.options.showImageBorder === false) {
|
||||
$('#' + richtextId).attr('show-image-border', false)
|
||||
}
|
||||
}
|
||||
// pc中js加载完成后的操作
|
||||
MultiEditor.pcLoadRichText = function (richtextId, content, options) {
|
||||
if(options && options.catalogDiv) {
|
||||
RichTextUitl.catalogDiv = options.catalogDiv
|
||||
}
|
||||
if(options && typeof options.catalogOptions != 'undefined') {
|
||||
RichTextUitl.catalogOptions = options.catalogOptions
|
||||
}
|
||||
<!-- 富文本内容渲染到页面之前进行的操作-->
|
||||
content = RichTextUitl.beforeSetRtfContent(content);
|
||||
document.getElementById(richtextId).innerHTML = content;
|
||||
<!-- 富文本内容渲染到页面之后进行的操作-->
|
||||
RichTextUitl.afterPageRendered(document.getElementById(richtextId),options);
|
||||
}
|
||||
|
||||
//获取编辑器对象,编辑器加载完成后调用
|
||||
MultiEditor.focus = function (richtextId, toEnd) {
|
||||
if (MultiEditor.isPhone) {
|
||||
$('#' + richtextId).find('.editor_main').focus()
|
||||
} else {
|
||||
MultiEditor.loadUE(richtextId, function (editor) {
|
||||
editor.focus(toEnd);
|
||||
});
|
||||
}
|
||||
}
|
||||
//销毁编辑器
|
||||
MultiEditor.destoryEditor = function (editorid) {
|
||||
$('#' + editorid).empty();
|
||||
MultiEditor.idList.splice(MultiEditor.idList.indexOf(editorid), 1)
|
||||
if (!MultiEditor.isPhone && typeof (UE) != 'undefined' && typeof UE.getEditor('multi' + editorid).body != "undefined") {
|
||||
UE.getEditor('multi' + editorid).destroy();
|
||||
}
|
||||
}
|
||||
|
||||
//编辑器markdown转html
|
||||
MultiEditor.insertMarkdown = function (editorid, text) {
|
||||
UE.getEditor('multi' + editorid).execCommand('inserthtml', RichTextUitl.markDownToHtml(text));
|
||||
}
|
||||
|
||||
//修改PC编辑器内容 id为dom查询条件,如#id,text为要修改的内容
|
||||
MultiEditor.updatePCEditorText = function (editorid, id, text) {
|
||||
var editor = MultiEditor.getEditor(editorid)
|
||||
if(editor){
|
||||
editor.body.querySelector(id).innerText = text;
|
||||
editor.fireEvent('contentchange');
|
||||
editor.fireEvent('saveScene');
|
||||
}
|
||||
}
|
||||
//修改PC编辑器内容 id为dom查询条件,如#id,html为要修改的内容
|
||||
MultiEditor.updatePCEditorHTML = function (editorid, id, html) {
|
||||
var editor = MultiEditor.getEditor(editorid)
|
||||
if(editor){
|
||||
editor.body.querySelector(id).outerHTML = html;
|
||||
editor.fireEvent('contentchange');
|
||||
editor.fireEvent('saveScene');
|
||||
}
|
||||
}
|
||||
|
||||
//移动光标至指定节点后面
|
||||
MultiEditor.moveCursorAfterNode = function (editor, node) {
|
||||
// 获取当前选区
|
||||
var range = editor.selection.getRange();
|
||||
// 获取当前光标所在的节点
|
||||
var currentNode = range.startContainer;
|
||||
// 将光标移动到span标签的后面
|
||||
range.setStartAfter(node);
|
||||
range.collapse(true).select(); // 设置新的选区
|
||||
}
|
||||
|
||||
/*题目编辑器 - 插入教师批注附件
|
||||
* editorid:编辑器id
|
||||
* data:json对象,示例{data1:'xxx',data2:'xxx'},data1 data2是课程业务数据的id 作答记录 题目
|
||||
* */
|
||||
MultiEditor.insertTeacherCommentAttach = function (editorid, data) {
|
||||
var cid = MultiEditor.randomUUID();
|
||||
var json = {
|
||||
"att_web": {
|
||||
"content": "",
|
||||
"logo": window.location.protocol + "//mooc2-ans.chaoxing.com/mooc2-ans/module/work/images/viewAttach.png",
|
||||
"title": '教师批注',
|
||||
"url": '',
|
||||
data1: data.data1,
|
||||
data2: data.data2,
|
||||
},
|
||||
"attachmentType": 25,
|
||||
"cid": cid
|
||||
}
|
||||
var html = "<br><div element-id='" + MultiEditor.randomUUID() + "' class='editor-iframe' contenteditable='false'><iframe frameborder='0' scrolling='no' cid='" + cid + "' src='"+window.location.protocol +"//noteyd.chaoxing.com/attachment/insertWeb.html' name='" + btoa(encodeURIComponent(JSON.stringify(json))) + "' class='attach-module attach-insertWeb' module='insertWeb'></iframe></div>"
|
||||
MultiEditor.insertHTML(editorid, html);
|
||||
}
|
||||
|
||||
//章节笔记--插入章节视频打点
|
||||
/** pointData:{id:'aaa',time:40}
|
||||
* attachment: { "cid": cid,
|
||||
* "attachmentType": 54,
|
||||
* "att_course_video": data.att_course_video }
|
||||
* */
|
||||
MultiEditor.insertCourseVideoMark = function (editorid, pointData, attachment) {
|
||||
if (!MultiEditor.hasLoadedEditor) return
|
||||
if (MultiEditor.isPhone) {
|
||||
if (typeof (zss_editor) != 'undefined' && $('body').length > 0) {
|
||||
zss_editor.updateEnterRange(editorid);
|
||||
zss_editor.insertCourseVideo(pointData, attachment)
|
||||
}
|
||||
} else {
|
||||
let editor = MultiEditor.getEditor(editorid)
|
||||
if (editor) {
|
||||
editor.insertCourseVideo(pointData, attachment)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//加载外部js
|
||||
MultiEditor.loadJSFile = function (src, cb) {
|
||||
var head = document.head || document.getElementsByTagName('head')[0]
|
||||
var script = document.createElement('script')
|
||||
cb = cb || function () {
|
||||
}
|
||||
script.type = 'text/javascript'
|
||||
script.src = src
|
||||
if (!('onload' in script)) {
|
||||
script.onreadystatechange = function () {
|
||||
if (this.readyState !== 'complete' && this.readyState !== 'loaded') return
|
||||
this.onreadystatechange = null
|
||||
cb(script)
|
||||
}
|
||||
}
|
||||
script.onload = function () {
|
||||
this.onload = null
|
||||
cb(script)
|
||||
}
|
||||
head.appendChild(script)
|
||||
}
|
||||
|
||||
MultiEditor.getUploadConfig = function (sync) {
|
||||
if (MultiEditor.puid && MultiEditor.yunToken) {
|
||||
return;
|
||||
}
|
||||
if (typeof jQuery != 'undefined') {
|
||||
var json = {
|
||||
url: window.location.protocol+"//"+MultiEditor.noteDomain.replace('https://','').replace('http://','') + "/pc/files/getUploadConfig",
|
||||
type: "get",
|
||||
xhrFields: {
|
||||
withCredentials: true
|
||||
},
|
||||
data: {},
|
||||
dataType: "json",
|
||||
success: function (resultData) {
|
||||
if (resultData && resultData.result == 1) {
|
||||
MultiEditor.puid = resultData.msg.puid;
|
||||
MultiEditor.yunToken = resultData.msg.token || '';
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
}
|
||||
}
|
||||
if (sync) {
|
||||
// 同步调用
|
||||
json.async = false;
|
||||
}
|
||||
$.ajax(json);
|
||||
}
|
||||
}
|
||||
//获取js当前路径
|
||||
MultiEditor.currentHref = function () {
|
||||
var jsPath = document.currentScript && document.currentScript.src ? document.currentScript.src : function () {
|
||||
var js = document.scripts
|
||||
, last = js.length - 1
|
||||
, src;
|
||||
for (var i = last; i > 0; i--) {
|
||||
if (js[i].readyState === 'interactive') {
|
||||
src = js[i].src;
|
||||
break;
|
||||
}
|
||||
if (js[i].src.indexOf('multieditor.js') > -1) {
|
||||
src = js[i].src;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return src || js[last].src;
|
||||
}();
|
||||
jsPath = jsPath.substring(jsPath.indexOf('//') + 2, jsPath.lastIndexOf('/') + 1);
|
||||
MultiEditor.nowDomain = jsPath.substring(0, jsPath.indexOf('/res/'));
|
||||
return jsPath;
|
||||
}();
|
||||
|
||||
/**
|
||||
* 还原html脚本 < > & " '
|
||||
*/
|
||||
MultiEditor.unescapeHTML = function (content) {
|
||||
if (content) {
|
||||
return content.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(/'/g, "'");
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
MultiEditor.randomUUID = function () {
|
||||
var s = [];
|
||||
var hexDigits = "0123456789abcdef";
|
||||
for (var i = 0; i < 36; i++) {
|
||||
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
|
||||
}
|
||||
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
|
||||
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
|
||||
s[8] = s[13] = s[18] = s[23] = "-";
|
||||
|
||||
var uuid = s.join("");
|
||||
return uuid;
|
||||
}
|
||||
|
||||
//加载转发数据
|
||||
MultiEditor.localTransferData = ''
|
||||
//初始化加载转发数据方法
|
||||
MultiEditor.initForwardData = function(type,callback){
|
||||
var isPcClient = RegExp("\\(schild:(\\w+).*ChaoXingStudy_(\\d+)_(\\d+[^_]*)_([^_]*)_([pc]*)_([^ ]*)?( \\([^)]*\\))?.*_(.*[-]?\\w+).*").test(navigator.userAgent);
|
||||
// pc客户端定制需求(逐条转发)
|
||||
if(isPcClient) {
|
||||
jsBridge.bind('CLIENT_GET_INIT_DATA', function(data) {
|
||||
console.log('富文本数据', data)
|
||||
if(data && data.content) {
|
||||
MultiEditor.localTransferData = data
|
||||
MultiEditor.loadForwardData(callback)
|
||||
}
|
||||
})
|
||||
jsBridge.postNotification('CLIENT_GET_INIT_DATA');
|
||||
}else{
|
||||
MultiEditor.localTransferData = getCookie('localTransferData')
|
||||
if(MultiEditor.localTransferData){
|
||||
MultiEditor.localTransferData = JSON.parse(MultiEditor.localTransferData)
|
||||
MultiEditor.loadForwardData(callback)
|
||||
delCookie('localTransferData')
|
||||
}
|
||||
window.addEventListener('message',function (e) {
|
||||
if(e.data.type == 'localTransferData'){
|
||||
MultiEditor.localTransferData = JSON.parse(e.data.data)
|
||||
try{
|
||||
window.opener.postMessage({msgType:'transferDataloaded',type:type},'*')
|
||||
}catch(e){
|
||||
console.log(e)
|
||||
}
|
||||
console.log(e.data.data)
|
||||
MultiEditor.loadForwardData(callback)
|
||||
}
|
||||
})
|
||||
}
|
||||
function getCookie(name){
|
||||
var arr,reg=new RegExp("(^| )*"+name+"=([^;]*)(;|$)");
|
||||
if(arr = document.cookie.match(reg)){
|
||||
return unescape(arr[2]);
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
//删除cookie
|
||||
function delCookie(name){
|
||||
document.cookie = name+"=;expires="+(new Date(0)).toGMTString()+ ";path=/;domain=chaoxing.com;";
|
||||
}
|
||||
}
|
||||
//处理转发数据
|
||||
MultiEditor.loadForwardData = function (callback) {
|
||||
var localTransferData = MultiEditor.localTransferData;
|
||||
if(localTransferData){
|
||||
var rtf_content = localTransferData.content;
|
||||
var ForwardTitle = ''
|
||||
if(rtf_content && rtf_content.indexOf('<') == -1){
|
||||
rtf_content = decodeURIComponent(rtf_content)
|
||||
}
|
||||
if (localTransferData.title) {
|
||||
ForwardTitle = localTransferData.title
|
||||
}
|
||||
if(callback){
|
||||
callback(rtf_content,ForwardTitle)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user