') == -1){
rtf_content = RichTextUitl.cropImage(rtf_content);
// }
// return RichTextUitl.addLink(rtf_content);
if(RichTextUitl.autoAddLink){
rtf_content = RichTextUitl.addLink(rtf_content);
}
return rtf_content
}
/**
* 将富文本内容设置到页面之前执行的操作
* 1、给附件的src添加笔记域名
* 2、对图片不进行裁剪(去掉该操作)
* 3、标记富文本内容中的链接
*
* @param rtf_content:富文本内容
*/
RichTextUitl.beforeSetUncutRtfContent = function(rtf_content) {
if(!rtf_content) {
return rtf_content;
}
rtf_content = RichTextUitl.subAttchEditMode(rtf_content);
var note_domain = "https://noteyd.chaoxing.com";
if (window.location.protocol == 'http:') {
note_domain = 'http://note.yd.chaoxing.com';
}
//附件地址替换
rtf_content = RichTextUitl.replaceIframeSrc(rtf_content);
// 替换转义字符
rtf_content = rtf_content.replace(/\b( )+\b/gi,function() {
rtf_content = arguments[0].replace(/ /gi,' ');
return rtf_content;
});
// 客户端的错误图片(将第三方服务的图片上传到云盘失败后显示的图片)使用的本地路径,替换成云盘的地址
rtf_content = rtf_content.replace(new RegExp("images/img_fail.jpg", "g"),
RichTextUitl.downloadFailedImg)
// 将http的云盘图片地址替换成https的
rtf_content = rtf_content.replace(new RegExp("http://p.ananas.chaoxing.com", "g"),
'https://p.cldisk.com');
// return RichTextUitl.addLink(rtf_content);
return rtf_content
}
/**
* 填充页面后执行的操作
* 1、图片在加载的过程中先采用灰色背景框的占位符显示,加载完成后再显示对应的图片
* 2、初始化查看图片插件
* 3、解决转发到笔记的附件上面显示三个空行的问题
* 4、手机端IOS附件重新设置宽度
*
* @param selector:包含图片标签的dom节点
*/
RichTextUitl.afterPageRendered = function (selector,json) {
if (selector) {
//设置自定义字体颜色
if(json && json.themeColor){
$(selector).css('color',json.themeColor)
}
// 加载图片
imgList = $(selector).find('img');
if (imgList && RichTextUitl.thumbnail2BigImgMap) {
//默认先去掉排版图片特定标识,否则第一张会被删除
$(selector).find(".drag-image-wrap").removeClass("column-img-b")
var index = 0;
imgList.each(function () {
// 遍历图片标签,给图片添加data_original属性,内容为原图大小Q80图片
var src = $(this).attr('src');
if(src){
$(this).attr('data-original', RichTextUitl.thumbnail2BigImgMap.get(src));
}
if (RichTextUitl.isScreen) {
$(this).attr('index', index);
index++;
RichTextUitl.imageArray.push(RichTextUitl.thumbnail2BigImgMap.get(src));
$(this)[0].onclick = function () {
RichTextUitl.openImageScreen($(this));
};
}
// 处理固定宽高图片排版的老数据图片结构
if($(this).is(".width-column-img")){
var node;
if (!$(this).parent().hasClass('editor-image')) {
node = document.createElement('div');
node.className = 'editor-image';
$(this).before(node);
node.appendChild($(this)[0])
} else {
node = $(this).parent(".editor-image")[0];
}
node.setAttribute("class","editor-image column-img-block");
if( $(selector).find(".column-img-b").length == 0){
var div = document.createElement('div');
var divClass = "drag-image-wrap column-img-b";
div.setAttribute('element-id', RichTextUitl.getRandomId());
div.setAttribute('class', divClass);
div.setAttribute('contenteditable', 'false');
div.appendChild(node.cloneNode(true));
selector.appendChild(div);
}else{
$(selector).find(".column-img-b").append(node.cloneNode(true));
}
node.parentNode.remove()
imgList = $(selector).find('img');
}
});
RichTextUitl.loadImg(imgList,selector,json);
}
//解决视频不能全屏的问题
$(selector).find('iframe').each(function (index, iframe) {
if (!iframe.getAttribute('allowfullscreen')) {
iframe.setAttribute('allowfullscreen', "true");
}
var attachment = RichTextUitl.b64DecodeUnicode(iframe.getAttribute('name'))
var src = iframe.getAttribute('src')
if(iframe.getAttribute('fileType') && RichTextUitl.attachMode == 'preview' && (iframe.getAttribute('fileType').indexOf('word') > -1 || iframe.getAttribute('fileType').indexOf('excel') > -1 || iframe.getAttribute('fileType').indexOf('pdf') > -1 || iframe.getAttribute('fileType').indexOf('ppt') > -1)){
//预览模式
src = RichTextUitl.convertUrl(window.location.protocol + '//previewyd.chaoxing.com/res/view/view.html?objectid=' +
attachment.att_clouddisk.fileId + '&fileName=' + encodeURIComponent(RichTextUitl.getCloudFileName(iframe.getAttribute('name'))));
iframe.setAttribute('src', src);
iframe.setAttribute('preview', 'true');
}else if(iframe.getAttribute('fileType') && RichTextUitl.attachMode == 'text'){
//文本模式
var href = attachment.att_clouddisk.downPath || ('https://d0.cldisk.com/download/' + attachment.att_clouddisk.fileId);
html = '
';
$(iframe).replaceWith(html);
}else{
iframe.setAttribute('src', src);
}
});
//文本附件修改模式
$(selector).find('a.iframe.dynacALink').each(function (index, iframe) {
var attachment = RichTextUitl.b64DecodeUnicode(iframe.getAttribute('name'))
var src = iframe.getAttribute('src')
if(iframe.getAttribute('fileType') && (iframe.getAttribute('fileType').indexOf('word') > -1 || iframe.getAttribute('fileType').indexOf('excel') > -1 || iframe.getAttribute('fileType').indexOf('pdf') > -1 || iframe.getAttribute('fileType').indexOf('ppt') > -1)){
if(RichTextUitl.attachMode == 'preview'){
//预览模式
src = RichTextUitl.convertUrl(window.location.protocol + '//previewyd.chaoxing.com/res/view/view.html?objectid=' +
attachment.att_clouddisk.fileId + '&fileName=' + encodeURIComponent(RichTextUitl.getCloudFileName(iframe.getAttribute('name'))));
if(iframe.parentNode && !iframe.parentNode.className){
iframe.parentNode.className = 'editor-iframe'
}else{
$(iframe).wrap("
")
}
var cid = iframe.cid;
if(!cid){
cid = RichTextUitl.randomUUID()
attachment.cid = cid;
}
var html = "
";
$(iframe).replaceWith(html);
}
}
});
// 记录是否登录了
RichTextUitl.isLogin = RichTextUitl.getCookie('UID') != '';
// 将配置信息发给附件iframe页面,主要是是否登录了才能下载,是否使用了iframe悬浮事件
RichTextUitl.postConfigMessage(selector);
// 学习通里面打开的课程页,不用Viewer插件,通过客户端协议查看图片,其他情况通过插件查看
$(selector).on('click', '.editor-image img', function (e) {
if ($(this).attr('data-link')) {
var link = $(this).attr('data-link');
var openType = $(this).attr('opentype'); //有openType属性的是在当前窗口打开链接
if (link.indexOf('http') == -1 && link.indexOf('ftp') == -1) {
link = 'https://' + link;
}
if (openType) {
window.location.href = link;
} else {
window.open(link);
}
return;
}
if ((isInXXT() || isAIScreen()) && window.self == window.top) {
var index = $(selector).find('.editor-image img').index(this);
var imgArray = new Array();
$(selector).find('.editor-image img').each(function () {
var imgUrl = $(this).attr('data-original')
if(!imgUrl || imgUrl.indexOf('http') != 0) {
imgUrl = $(this).attr('src')
}
var imgObj = {"imageUrl": imgUrl};
imgArray.push(imgObj);
})
clientPreviewImages(imgArray, index);
} else if (!RichTextUitl.isScreen && RichTextUitl.userImgPlugin) {
// 课堂活动--分组任务里面会同时加载老师和学生的内容,需要同时用到多个图片插件对象
if ($(this).attr('data-link')) {
window.open($(this).attr('data-link'))
return;
}
// RichTextUitl.imageViewer = new Viewer(selector, {
// tooltip: true, container: document.body, navbar: false, toolbar: false, url: "data-original",
// shown: function () {
// var img = RichTextUitl.imageViewer.images[RichTextUitl.imageViewer.index];
// if ($(img).hasClass('noSelect')) {
// $('#viewDownload,#imgDownload,#imgEdit').hide();
// }
// },
// viewed: function () {
// var img = RichTextUitl.imageViewer.images[RichTextUitl.imageViewer.index];
// if ($(img).hasClass('noSelect')) {
// $('#viewDownload,#imgDownload,#imgEdit').hide();
// $('.viewer-canvas img').addClass('noSelect').on('contextmenu', function () {
// return false;
// });
// } else {
// $('#viewDownload,#imgDownload,#imgEdit').show();
// $('.viewer-canvas img').removeClass('noSelect').off('contextmenu');
// }
// },
// hide: function () {
// $('.viewBtnWrap,#imgtoolWrap').hide();
// }
// });
var index = $(selector).find('.editor-image img').index(this);
imgViewTool.initViewImage(selector,'',index);
if (typeof sendMessageFadeInOrOut == 'function') {
// 课程那边图片的额外操作
sendMessageFadeInOrOut(1)
}
}
})
}
// 去除不是表格的元素上包裹的div class="table"
//RichTextUitl.removetablewrap();
RichTextUitl.isDetailPage = true;
RichTextUitl.imgSelector = selector;
if (!RichTextUitl.isPhone() && !RichTextUitl.isScreen) {
// 附件操作按钮通过悬浮模式显示在附件外部显示(默认是在附件iframe里面显示),PC端才通过悬浮模式显示
RichTextUitl.setIframeHover = true;
}
// 在编辑时将附件设置成了文本链接(a标签)模式,但是为了不影响在客户端上点击卡片页的效果,保存是会替换回卡片(iframe标签)模式
// 详情页显示的时候再改回成文本链接形式
$(selector).find('.editor-iframe.textlink').each(function () {
var $iframe = $(this).find('iframe');
$(this).replaceWith(RichTextUitl.changeAttachmentModel($iframe.attr('name'), $iframe.attr('module'), 'a'))
})
var ua = navigator.userAgent.toLowerCase();
var isIOS = ua.indexOf('iphone') >= 0 || ua.indexOf('ipad') >= 0 || ua.indexOf('ipod') >= 0; //ios终端
if (isIOS) {
$('.richtext').addClass('ios');
}
RichTextUitl.updateAllIframeWidth(selector, $(selector).width() || ($('body').width() - 30))
// 设置详情页事件
// if (typeof RichTextUitl.detailPageEvent == 'function') {
// RichTextUitl.detailPageEvent();
// } else {
// setTimeout(function () {
// RichTextUitl.detailPageEvent();
// }, 1500)
// }
// 加载公用js里面的方法
var interval = setInterval(function () {
if (typeof RichTextUitl.commonEventAfterPageRendered == 'function') {
clearInterval(interval);
RichTextUitl.commonEventAfterPageRendered(selector);
//有序列表转新格式
if (typeof normaloldlist == 'function') {
normaloldlist();
}
}
}, 200)
//没有加上dynacALink的加上dynacALink和target
$(selector).find('a:not(.dynacALink):not([type="anchor"])').attr('target', '_blank').addClass('dynacALink').css('cursor', '');
// a标签套a标签的,移除外层a标签和object
$(selector).find('.dynacALink').each(function (index, item) {
if ($(this).parents('a').length > 0) {
while (this.firstChild) {
$(this.firstChild).insertAfter($(this))
}
$(this).remove()
} else if ($(this).parent().is('object')) {
//原本没有a标签的,加上object和a标签后,要去掉object
$(this).unwrap();
if ($(this).find('object').length == 0) {
if ((($(this).parents('span').attr('style') && $(this).parents('span').attr('style').indexOf('color') != -1) || $(this).parents('span').attr('color'))
&& $(this).text().replace(/\u200B/gi, '').trim() == $(this).parents('span').text().replace(/\u200B/g, '').trim()) {
$(this).css('color', $(this).parents('span').css('color'))
}
}
}
});
//去除a标签内层的object
$(selector).find('object').each(function () {
if ($(this).parents('a').length > 0) {
while (this.firstChild) {
$(this.firstChild).insertAfter($(this))
}
$(this).remove()
}
});
$(selector).find('.dynacALink').each(function (index, item) {
//去除链接前的8203
if (item.previousSibling && item.previousSibling.nodeType == 3 && item.previousSibling.nodeValue == "") {
item.parentNode.removeChild(item.previousSibling);
}
});
// if (typeof NiceScroll != 'undefined') {
// // 给表格加滚动条
// $(".table").niceScroll({cursorborder:"",cursorwidth:8,cursorcolor:"#dadfe5",boxzoom:false,autohidemode:true});
// }
/**
* 编辑页已经给链接加上a标签的情况下,详情页的addLink方法会在链接外面包一个a标签,导致编辑页加的a标签不显示
* 在将卡片附件转成文本链接附件时,数据放在a标签上,操作方法也是绑定在了a标签的特定样式样式
* 遍历卡片附件转成的a标签,如果他的后面也是一个a
*/
// $('.dynacALink.iframe').each(function () {
// var $next = $(this).next();
// if ($next.hasClass('dynacALink') && $next.attr('href') == $(this).attr('href')) {
// $(this).text($next.text());
// $next.remove();
// }
// })
// 无障碍:详情页富文本内容整块读取
$(selector).attr('tabindex',0)
if(RichTextUitl.catalogDiv && typeof updateAllCatalog == 'undefined'){
RichTextUitl.loadJSFile2((RichTextUitl.prefix || (window.location.protocol + "//noteyd.chaoxing.com")) + '/res/pc/js/noteRichtext/catalog.js',function () {
updateAllCatalog('.richtext');
});
}
}
/*手机端IOS的iframe宽度重新设置*/
RichTextUitl.updateAllIframeWidth = function (selector, width) {
$(selector).find('iframe').each(function () {
var wid = width, node;
if ($(this).parents('.record-iframe').length > 0) {
wid = width - 8;
} else if ($(this).parents('.record-box').length > 0) {
wid = width - 20;
if ($(this).parents('ol').length > 0 || $(this).parents('ul').length > 0) {
if ($(this).parents('ol').length > 0) {
node = $(this).parents('ol');
} else if ($(this).parents('ul').length > 0) {
node = $(this).parents('ul');
}
var level = node.attr("level") || 1;
wid = wid - 26 - 26 * (level - 1);
}
} else if ($(this).parents('ol').length > 0 || $(this).parents('ul').length > 0) {
if ($(this).parents('ol').length > 0) {
node = $(this).parents('ol');
} else if ($(this).parents('ul').length > 0) {
node = $(this).parents('ul');
}
var level = node.attr("level") || 1;
wid = wid - 26 - 26 * (level - 1);
}
$(this).attr('width', wid).css('width', wid + 'px');
});
}
//云盘附件加载完成后给附件内部发送消息
function iframeOnload(iframe){
var attachment = RichTextUitl.b64DecodeUnicode(iframe.getAttribute('name'))
var allowDownload = true;
var nonsupportPreview = !RichTextUitl.showPreview(attachment,$(iframe)); // 部分镜像项目不支持预览
// 属性赋值放到iframe加载后发消息的地方,
// 避免还没发消息之前,downloadAfterLogin 和 allowDownload就被后一个iframe的值覆盖了
if (iframe.getAttribute('allowdownload') == 'false' && iframe.getAttribute('download') == 'false') {
allowDownload = 'no'
} else if (iframe.getAttribute('download') == 'true') {
allowDownload = 'login'
} else {
allowDownload = 'all'
}
var attach = getAttchMirror(iframe.getAttribute('name'))
if(attach.isMirror && RichTextUitl.annexMirrorDomain && RichTextUitl.annexMirrorDomain.NoteDomain.indexOf('chaoxing.com') == -1 && RichTextUitl.annexMirrorDomain.previewDomainHttps.indexOf('chaoxing.com') > -1) {
//镜像附件,笔记是单位域名,预览是超星域名,不允许预览
nonsupportPreview = true;
}
iframe.contentWindow.postMessage(
{
'msgType': 'config',
'cid': attachment.cid,
'downloadAfterLogin': iframe.getAttribute('download') == 'true',
'isLogin': RichTextUitl.isLogin,
'setIframeHover': RichTextUitl.setIframeHover,
'isDetailPage': RichTextUitl.isDetailPage,
'allowDownload': allowDownload,
'allowPreview': iframe.getAttribute('allowpreview') || 'all',
'nonsupportPreview': nonsupportPreview,
'isIntranetMode': RichTextUitl.intranetMode,
'isMirror': attach.isMirror || '',
'mirrorPrefix': attach.mirrorPrefix || '',
'isGetVideoDataFromCenter': RichTextUitl.isGetVideoDataFromCenter,
'mirrorDomain': window.obj.mirrorDomain,
'openPreview':RichTextUitl.openPreview || '',
'unAllowOpenAttach':RichTextUitl.unAllowOpenAttach,
'unAllowOpenAttachTips':RichTextUitl.unAllowOpenAttachTips,
'useWpsPreview': RichTextUitl.useWpsPreview || '',
'cloudUrl': RichTextUitl.cloudUrl || '',
}, '*');
}
//视频加载完成后给视频内部发送消息
function videoOnload(iframe,selector){
var attach = getAttchMirror(iframe.getAttribute('name'))
var message = {
'msgType': 'config',
'cid': iframe.getAttribute('cid'),
'isDetailPage': RichTextUitl.isDetailPage,
'isGetVideoDataFromCenter': RichTextUitl.isGetVideoDataFromCenter,
'isMirror': attach.isMirror || '',
'mirrorPrefix': attach.mirrorPrefix || '',
'mirrorDomain': window.obj.mirrorDomain,
'unAllowOpenAttach':RichTextUitl.unAllowOpenAttach,
'unAllowOpenAttachTips':RichTextUitl.unAllowOpenAttachTips,
'cloudUrl': RichTextUitl.cloudUrl || '',
'isHdVideo': window.obj.mirrorDomain && window.obj.mirrorDomain.isMirrorDeploy ? true : '',
}
if(selector && selector.querySelector('iframe[module="insertVideo"]') == iframe){
message.isAutoPlayVideo = RichTextUitl.isAutoPlayVideo ? RichTextUitl.isAutoPlayVideo : '';
}
iframe.contentWindow.postMessage(message, '*');
//视频并排
if(RichTextUitl.iframeDragColumn){
RichTextUitl.rangeVideoIframe(iframe,selector);
}
}
/**
* 加载页面后,发消息给云盘附件iframe,传递参数是否开启了登录后才能下载的属性
*/
RichTextUitl.postConfigMessage = function (selector) {
try {
var iframes = selector.querySelectorAll('iframe');
for (i = 0; i < iframes.length; i++) {
var iframe = iframes[i];
var src = iframe.getAttribute('src');
if (!src) {
continue;
}
var attachment = RichTextUitl.b64DecodeUnicode(iframe.getAttribute('name'))
//设置了不允许下载附件
if(RichTextUitl.hideIframeTool && RichTextUitl.hideIframeTool.length > 0){
if(RichTextUitl.hideIframeTool.length == 1 && RichTextUitl.hideIframeTool[0] == '*' || attachment.attachmentType == 29 && RichTextUitl.hideIframeTool.indexOf('video') > -1 ||
attachment.attachmentType == 26 && RichTextUitl.hideIframeTool.indexOf('voice') > -1 || attachment.attachmentType == 18 && RichTextUitl.hideIframeTool.indexOf($(iframe).attr('filetype')) > -1){
$(iframe).attr('download','false').attr('allowdownload','false')
}
}
if (src.indexOf("insertCloud") > -1) {
if (iframe.attachEvent) {
iframe.attachEvent("onload", function () {
var attachment = RichTextUitl.b64DecodeUnicode(iframe.getAttribute('name'))
iframeOnload(this)
});
} else {
iframe.onload = function () {
iframeOnload(this)
};
}
} else if (src.indexOf("insertVideo") > -1) {
// 视频附件在编辑页要显示”编辑封面“的按钮
if (iframe.attachEvent) {
iframe.attachEvent("onload", function () {
videoOnload(this,selector)
});
} else {
iframe.onload = function () {
videoOnload(this,selector)
};
}
}
}
} catch(e) {}
}
RichTextUitl.b64DecodeUnicode = function (str) {
if (!str) {
return str;
}
try {
str = decodeURIComponent(atob(str));
str=str.replace(RichTextUitl.xssReg,function(){
return arguments[0] + ' ';
})
} catch (e) {
}
try {
return JSON.parse(str);
} catch (e) {
}
return '';
}
//获取附件镜像信息
function getAttchMirror(name){
var attachment = RichTextUitl.b64DecodeUnicode(name);
var isMirror = '' , mirrorPrefix = '',content;
switch (attachment.attachmentType) {
case 1:
// 话题
content = attachment.att_topic;
break;
case 2:
// 笔记
content = attachment.att_note;
break;
case 3:
// 专题
content = attachment.att_subject;
break;
case 6:
// 期刊
content = attachment.att_subject;
break;
case 8:
// 通知
content = attachment.att_notice;
break;
case 10:
// 笔记文件夹
content = attachment.att_notebook;
break;
case 11:
// 收藏文件夹
content = attachment.att_resource;
break;
case 15:
// 课程附件
content = attachment.att_chat_course;
break;
case 17:
// 课程章节
content = attachment.att_course;
break;
case 18:
// 文件,本地上传或从云盘中选择
content = attachment.att_clouddisk;
break;
case 25:
// 网页
content = attachment.att_web;
break;
case 26:
// 音频
content = attachment.att_voice;
break;
case 29:
// 视频
content = attachment.att_video;
break;
case 38:
// 云盘文件夹
content = attachment.att_cloudFolder;
break;
case 49:
// 本地文件夹
content = attachment.att_localFolder;
break;
}
if(content && content.isMirror){
isMirror = content.isMirror;
mirrorPrefix = RichTextUitl.annexMirrorPrefix || RichTextUitl.prefix || window.obj.mirrorDomain.NoteDomain;
}
return {attachment:attachment,isMirror:isMirror,mirrorPrefix:mirrorPrefix}
}
//详情页重新计算视频iframe宽度
RichTextUitl.rangeVideoIframe = function (iframe,selector) {
if(RichTextUitl.isPhone()) return
setTimeout(function () {
var totalWidth = 0;
var iframeList = $(iframe).parents('.drag-iframe-wrap').find('iframe')
iframeList.each(function (i, iframe) {
totalWidth += iframe.getAttribute('video-width') / (iframe.getAttribute('video-height') - 36)
})
var height = ($(selector).width() - iframeList.length * 29) / totalWidth;
for (var i = 0; i < iframeList.length; i++) {
var width = parseInt((iframeList[i].clientWidth / (iframeList[i].clientHeight - 36)) * height);
iframeList[i].parentNode.style.width = (width + 4) + 'px';
iframeList[i].parentNode.style.height = (parseInt(height) + 46) + 'px';
// 设置视频封面高度
iframeList[i].contentWindow.postMessage({
msgType: 'changeVideoCoverHeight',
cid: iframeList[i].getAttribute('cid'),
coverHeight: parseInt(height),
}, '*')
}
},200)
}
//显示图片投屏
RichTextUitl.openImageScreen = function (_this) {
var index = _this.attr('index');
if (index) {
var imgPreviewInfo = {"showIndex": index, "optNo": 0};
var data = {'cmd': 'resourceToScreen'};
var content = {'opt': 1, 'urls': RichTextUitl.imageArray, 'type': 1, "imgPreviewInfo": imgPreviewInfo};
data.content = content;
var body = {'body': JSON.stringify(data)};
parent.postMessage(JSON.stringify({'cmd': 'resourceToScreen', 'body': body}), '*');
}
}
/**
* 获取 UUID
*/
RichTextUitl.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;
}
RichTextUitl.getRandomId = function(){
var str = "abcdefghijklmnopqrstuvwxyz0123456789";
var tmp = [];
var random;
for (var i = 0; i < 8; i++) {
random = Math.floor(Math.random() * (str.length));
if (tmp.indexOf(str[random]) === -1) {
tmp.push(str[random])
} else {
i--;
}
}
return tmp.join('');
}
/**
* 加载图片方法,加载过程中用灰色背景框代替
* @param img标签对象数组
*/
RichTextUitl.loadImg = function (imgList,selector,json) {
if (!imgList || imgList.length == 0) {
return;
}
if($(selector).find('.xiumi').length > 0 || $(selector).find('.unfilter_css').length > 0) return;
for (var i = 0; i < imgList.length; i++) {
var div;
if (!imgList.eq(i).parent().hasClass('editor-image')) {
div = document.createElement('div');
div.className = 'editor-image';
imgList.eq(i).before(div);
div.appendChild(imgList[i])
} else {
div = imgList[i].parentNode;
}
// 计算固定宽高图片排版的老数据操作
if($(imgList[i]).parents('.column-img-b').find('img').length > 1){
resetColumnImgWdith(imgList[i],2,selector);
continue;
}else if(json && json.imageLayout == true){
if($(imgList[i]).parents('.drag-image-wrap').find('img').length > 1){
var width = parseInt($(imgList[i]).parents('.drag-image-wrap').width()/$(imgList[i]).parents('.drag-image-wrap').find('img').length) - 14;
imgList[i].style.width = width + 'px';
imgList[i].style.height = parseInt(width / 1.5) + 'px';
}
continue;
}
if (!$(div).parent().hasClass('drag-image-wrap')) {
var divwrap = document.createElement('div');
divwrap.className = 'drag-image-wrap';
divwrap.contentEditable = 'false';
$(div).before(divwrap);
divwrap.appendChild(div)
} else if (imgList.eq(i).parents('.drag-image-wrap').find('img').length > 1 && !imgList.eq(i).parents('.drag-image-wrap').attr('totalWidth')) {
//计算并排图片的总宽度,记录原始图片宽度
var totalWidth = 0;
imgList.eq(i).parents('.drag-image-wrap').find('img').each(function (index, item) {
totalWidth += parseInt(item.getAttribute('width') || item.style.width.replace('px', ''));
item.setAttribute('owidth', parseInt(item.getAttribute('width') || item.style.width.replace('px', '')) + 2);
})
imgList.eq(i).parents('.drag-image-wrap').attr('totalWidth', totalWidth)
}
if (div.getAttribute('contenteditable') == '') {
div.setAttribute('contenteditable', 'false')
}
if ((imgList.eq(i).attr('download') && (imgList.eq(i).attr('download') == 'false' || !RichTextUitl.isLogin)) && !(typeof (WinInitConfig) != 'undefined' && WinInitConfig.isCreator == '1')) {
//不是自己的笔记,不允许下载或未登录不允许下载
$(div).addClass('noSelect');
imgList.eq(i).addClass('noSelect');
}
//设置了不重新计算图片宽度的,不重新计算图片宽度,只把并排图片重新计算宽度
if(typeof RichTextUitl.useLoadImg != "undefined" && RichTextUitl.useLoadImg == false){
continue
}
if(imgList[i].style.width && (imgList[i].style.width == '100%' || imgList[i].style.width == 'auto')){
imgList[i].style.width = ''
}
var winWidth = imgList.eq(i).parents('.drag-image-wrap').width() || $('.richtext').width() || '100%';//最大宽度
var attrwidth = imgList[i].getAttribute("width") || imgList[i].style.width;
attrwidth = attrwidth && attrwidth.split('.')[0] ? parseInt(attrwidth.split('.')[0]) : '';
var attrheight = imgList[i].getAttribute("height") || imgList[i].style.height;
attrheight = attrheight && attrheight.split('.')[0] ? parseInt(attrheight.split('.')[0]) : '';
var addr = imgList[i].getAttribute("src");
addr = addr.replace(/&/g, '&');
var imgW1 = getImgurlParam(addr, 'rw') || imgList[i].naturalWidth || imgList[i].clientWidth || '';//原始图片宽度
var imgH1 = getImgurlParam(addr, 'rh') || imgList[i].naturalHeight || imgList[i].clientHeight || '';//原始图片高度
if (attrwidth && attrheight) {
imgW1 = attrwidth;
imgH1 = attrheight;
}
var imgW2, imgH2;
if (imgW1 && typeof imgW1 == 'string' && imgW1.indexOf('%') > -1) {
imgList[i].style.width = imgW1;
imgList[i].style.height = 'auto';
imgList[i].onload = function () {
this.parentNode.style.backgroundColor = "";
}
}else if (imgW1 && imgH1) {
imgList[i].parentNode.style.backgroundColor = "#F5F6F8";
if (attrwidth && attrwidth < winWidth) {
imgW2 = attrwidth;
} else if (imgW1 >= 750) {
if(selector && $(selector).length > 0 && $(selector).find('.xiumi').length > 0){
imgW2 = winWidth;
} else {
imgW2 = winWidth;
}
} else {
imgW2 = imgW1;
}
if (imgW2 == '100%') {
imgList[i].style.width = imgW2;
imgList[i].style.height = 'auto';
} else {
imgH2 = parseInt(imgW2 * imgH1 / imgW1);
imgList[i].style.width = imgW2 + 'px';
imgList[i].style.height = imgH2 + 'px';
}
//imgList[i].style.opacity=0;
imgList[i].onload = function () {
this.style.opacity = 1;
this.parentNode.style.backgroundColor = "";
//导出设置过图片宽高的图时需要图片高度,否则导出的是大图;秀米图片和表格里的图片设置高度会导致图片变形,需要把高度去掉
//所以,先把高度去掉,再根据渲染出来的正常图片大小设置宽度和高度
this.style.height = "";
this.setAttribute('height', '');
this.style.width = this.offsetWidth + 'px';
this.style.height = this.offsetHeight + 'px';
if ($(this).parents('.drag-image-wrap').find('img').length > 1) {
resetImgWidth($(this).parents('.drag-image-wrap').find('img'))
}
}
} else {
imgList[i].parentNode.style.backgroundColor = "#F5F6F8";
if (!(imgList[i].style.width && imgList[i].style.width.replace('px', ''))) {
imgList[i].style.height = "auto";
imgList[i].style.minHeight = "200px";
} else {
imgList[i].style.height = "auto";
}
imgList[i].onload = function () {
this.style.opacity = 1;
this.style.minHeight = "";
this.parentNode.style.backgroundColor = "";
if (this.getAttribute("width")) {
var newwidth = this.getAttribute("width") > $('.richtext').width() ? $('.richtext').width() : this.getAttribute("width");
this.style.width = newwidth + 'px';
this.style.height = parseInt(newwidth * this.clientHeight / this.clientWidth) + 'px';
this.setAttribute('height', parseInt(newwidth * this.clientHeight / this.clientWidth));
} else {
this.style.height = "";
this.setAttribute('height', '');
}
if ($(this).parents('.drag-image-wrap').find('img').length > 1) {
resetImgWidth($(this).parents('.drag-image-wrap').find('img'))
}
}
}
}
setTimeout(function () {
RichTextUitl.limpidImg();
}, 100)
}
// 计算固定宽高图片排版
function resetColumnImgWdith(img,columnNum,selector){
var me = this;
var scale = 589/415;
var width = parseInt($(selector).width()/columnNum) - 10;
img.style.width = width + 'px';
img.style.height = parseInt(width / scale) + 'px';
}
//并排图片按比例设置图片宽度
function resetImgWidth(imgList) {
if (!imgList.parents('.drag-image-wrap').attr('totalWidth')) {
return
}
var totalWidth = parseInt(imgList.parents('.drag-image-wrap').attr('totalWidth'));
if (totalWidth + imgList.length * 6 > $('.richtext').width()) {
//防止图片没加载完就开始计算宽度
for (var i = 0; i < imgList.length; i++) {
if (!imgList[i].clientHeight) return
}
for (var i = 0; i < imgList.length; i++) {
var scale = imgList[i].clientWidth / imgList[i].clientHeight;
var width = parseInt(($('.richtext').width() - imgList.length * 6) * imgList.eq(i).attr('owidth') / totalWidth);
imgList[i].width = width;
imgList[i].style.width = width + 'px';
imgList[i].style.height = parseInt(width / scale) + 'px';
imgList[i].height = '';
}
imgList.parents('.drag-image-wrap').removeAttr('totalWidth');
imgList.removeAttr('owidth');
}
}
//编辑器初始加载时不显示,没有宽度,等编辑器显示时,重新计算并排图片宽度
RichTextUitl.reRangeImgs = function (editorid){
var imgWrapList = $('#' + editorid + ' .drag-image-wrap');
imgWrapList.each(function (index, item) {
var imgList = $(item).find('img');
resetImgWidth(imgList);
})
}
//图片变清晰
RichTextUitl.limpidImg = function () {
// 笔记
var imgList = $('body .editor-image img');
var imgsize_reg = new RegExp('([0-9]+_[0-9]*[A-z]*[0-9]*)');
for (var i = 0; i < imgList.length; i++) {
var src = imgList[i].src;
if (src.indexOf('p.ananas.chaoxing.com') == -1 && src.indexOf('p.cldisk.com') == -1) {
continue;
}
var imgW1 = getImgurlParam(src, 'rw');//原始图片宽度
var imgH1 = getImgurlParam(src, 'rh');//原始图片高度
if (imgW1 && imgH1) {
var img = new Image();
img.setAttribute('index', i);
src = src.replace(imgsize_reg, imgW1 + '_' + imgH1 + 'Q50').replace('.jpg', '.png')
img.src = src;
img.onload = function () {
index = this.getAttribute('index');
imgList[index].src = this.src;
// imgList[index].classList.remove('thumbnails');
$(img).remove();
}
}
}
}
/**
* 还原被转义的字符 < > & " '
*/
function restoresEscapedCharacter(content) {
if (content) {
return content.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(/'/g, "'");
}
return "";
}
/**
* 加载音视频播放插件
* @returns
*/
function loadMediaPlugin() {
if (RichTextUitl.intranetMode) {
RichTextUitl.loadCssFile(RichTextUitl.prefix + "medisPlugins/media.css");
RichTextUitl.loadCssFile(RichTextUitl.prefix + "medisPlugins/smusic.css");
RichTextUitl.loadCssFile(RichTextUitl.prefix + "medisPlugins/easydialog.css");
RichTextUitl.loadJSFile(RichTextUitl.prefix + "medisPlugins/smusic.js");
RichTextUitl.loadJSFile(RichTextUitl.prefix + 'medisPlugins/ckplayer.js')
RichTextUitl.loadJSFile(RichTextUitl.prefix + 'medisPlugins/media.js"');
RichTextUitl.loadJSFile(RichTextUitl.prefix + 'medisPlugins/easydialog.min.js');
} else {
var prefix = window.location.protocol + '//noteyd.chaoxing.com'
if(RichTextUitl.currentDomain.indexOf('bistatic-') > -1){
prefix = window.location.protocol + '//bistatic-noteyd.chaoxing.com'
} else if(RichTextUitl.prefix){
prefix = RichTextUitl.prefix
}
RichTextUitl.loadCssFile(prefix + "/res/pc/cssnew/media.css");
RichTextUitl.loadCssFile(prefix + "/res/plugin/smusic/css/smusic.css");
RichTextUitl.loadCssFile(prefix + "/res/pc/css/easydialog.css");
RichTextUitl.loadJSFile2(prefix + "/res/plugin/smusic/js/smusic.js");
RichTextUitl.loadJSFile2(prefix + '/res/plugin/ckplayer/ckplayer.js')
RichTextUitl.loadJSFile2(prefix + '/res/pc/js/media.js');
RichTextUitl.loadJSFile2(prefix + '/res/js/common/easydialog.min.js');
}
var pluginHtml =
// 视频播放器
'
'
// 音频播放容器
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
00:00
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
00:00
'
+ '
'
+ '
'
+ '
'
+ ' '
+ ''
+ ''
+ ''
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
'
+ '
';
setTimeout(function () {
// 门户那边有的页面自己在页面上加了音视频播放容器,判断下页面上没有的才追加
if ($('#videoDiv').length == 0) {
$('body').append(pluginHtml);
}
}, 500);
}
/**
* 通过客户端协议查看图片
* @param img_urlArray
* @param index
* @returns
*/
function clientPreviewImages(img_urlArray, index) {
jsBridge.postNotification('CLIENT_PREVIEW_IMAGES', {
imageUrls: img_urlArray,
showIndex: index
});
};
/**
* 判断是否是课程域名,且是在学习通里面打开的
* @returns
*/
function isInXXT() {
var ua = navigator.userAgent.toLowerCase();
return ua && ua.indexOf("chaoxingstudy") != -1 && ua.indexOf('_pc_') == -1
}
//是否是智能体屏
function isAIScreen(){
var ua = navigator.userAgent.toLowerCase();
return ua && (ua.indexOf("digital_human") != -1 && ua.indexOf('touchmachine') != -1)
}
/**
* 加载查看图片需要的插件
* @returns
*/
function loadImgViewer() {
if (!RichTextUitl.userImgPlugin) {
return;
}
if (RichTextUitl.intranetMode) {
// RichTextUitl.loadCssFile(RichTextUitl.prefix + 'third-party/viewer/viewer.min.css');
// RichTextUitl.loadJSFile(RichTextUitl.prefix + 'third-party/viewer/viewer-jquery.min.js?_t=' + RichTextUitl.t);
// RichTextUitl.loadJSFile(RichTextUitl.prefix + 'third-party/viewer/custom.js?_t=' + RichTextUitl.t);
// RichTextUitl.loadJSFile(RichTextUitl.prefix + 'third-party/viewer/viewer.js?_t=' + RichTextUitl.t);
// RichTextUitl.loadCssFile(RichTextUitl.prefix + 'third-party/viewer/view-button.css');
RichTextUitl.loadJSFile2(RichTextUitl.prefix + 'imgviewer.js?_t=' + RichTextUitl.t, function () {
$(function(){
imgViewTool.init(RichTextUitl.isEditableViewLargeImage);
})
});
} else {
var prefix = window.location.protocol + "//noteyd.chaoxing.com";
if(RichTextUitl.currentDomain.indexOf('bistatic-') > -1){
prefix = window.location.protocol + '//bistatic-noteyd.chaoxing.com'
} else if(RichTextUitl.prefix){
prefix = RichTextUitl.prefix
}
// 表单页面引用了高版本viewer.js版本不兼容 手动引入viewer.js
if ($('.cxplugin-imgviewer').length == 0) {
RichTextUitl.loadJSFile(prefix + '/res/plugin/viewer/js/viewer.js?_t=' + RichTextUitl.t);
}
RichTextUitl.loadJSFile(prefix + '/res/plugin/viewer2/custom.js?_t=' + RichTextUitl.t);
RichTextUitl.loadJSFile2(prefix + '/res/plugin/viewer/js/imgviewer.js?_t=' + RichTextUitl.t, function () {
$(function(){
imgViewTool.init(RichTextUitl.isEditableViewLargeImage);
})
});
}
}
// 设置已有的图片,编辑模式下调用,用户上传第三方地址图片失败后,不修改之前已保存的第三方图片地址,只将新上传的地址替换成下载失败的图片
RichTextUitl.setExistingImg = function () {
var iframe = RichTextUitl.ueditor.iframe;
var doc = iframe.contentDocument || iframe.document;
if (doc) {
var imgs = doc.getElementsByTagName("img");
if (imgs.length > 0) {
for (var i = 0; i < imgs.length; i++) {
RichTextUitl.existingImg += imgs[i].src + ";";
}
}
}
}
/**
* 往页面中加入附件
* @param attachmentArray 附件数组
*/
RichTextUitl.insertAttachments = function (attachmentArray) {
if (!attachmentArray || attachmentArray.length == 0) {
return;
}
RichTextUitl.ueditor.execCommand('insertfile', attachmentArray);
}
/**
* 修改附件内容
* @param cid:附件cid
* @param data:新的数据
*/
RichTextUitl.updateAttachment = function (data) {
if (!data || !data.cid) {
return;
}
var iframe = '';
if (typeof RichTextUitl.ueditor != 'undefined') {
iframe = RichTextUitl.ueditor.iframe;
}
if (iframe) {
// 编辑页
var doc = iframe.contentDocument || iframe.document;
var targetIframe = $(doc).find('iframe[cid="' + data.cid + '"]');
} else {
var targetIframe = $('body').find('iframe[cid=' + data.cid + ']')
}
if (targetIframe && targetIframe.length > 0) {
targetIframe[0].contentWindow.postMessage({'msgType':'dataChanged','cid':data.cid, 'name':RichTextUitl.b64EncodeUnicode(JSON.stringify(data))}, "*");
targetIframe[0].name = RichTextUitl.b64EncodeUnicode(JSON.stringify(data));
}
}
/**
* 取模板页面
* type 0:教案模板
*/
RichTextUitl.getTemplateHtml = function (type) {
var html = '';
if (type == 0) {
html = '
' +
'
' +
'
' +
'
'
}
return html;
}
// 教案详情页默认显示课前
RichTextUitl.dealWithTeachPlan = function () {
$('body').find('#ulTab .classBefore').parent().addClass('cur_li').siblings('div').removeClass('cur_li');
$('body').find('.classConCenter,.classConAfter').hide();
$('body').find('.classConBefore').show();
}
RichTextUitl.createPPTcallback = function (data) {
if (!data || data.length == 0) {
return;
}
data = data[0];
var iframe = ue.iframe;
if (iframe) {
var doc = iframe.contentDocument || iframe.document;
var targetIframe = $(doc).find('iframe[cid="' + data.cid + '"]');
if (targetIframe.length > 0) {
var name = RichTextUitl.b64EncodeUnicode(JSON.stringify(data));
var pptAttHtml = "
";
targetIframe.parent().html(pptAttHtml);
}
}
}
/**
* 获取云盘文件objectId
* @param name
* @returns {string}
*/
RichTextUitl.getCloudFileObjectId = function (name) {
var attachmentData;
try {
attachmentData = JSON.parse(decodeURIComponent(atob(name)));
} catch (e) {
}
if (!attachmentData || !attachmentData.att_clouddisk) {
return '';
}
return attachmentData.att_clouddisk.fileId || '';
}
/**
* 获取文件名
* @param name
* @returns {string|*|string}
*/
RichTextUitl.getCloudFileName = function (name) {
var attachmentData;
try {
attachmentData = JSON.parse(decodeURIComponent(atob(name)));
} catch (e) {
}
if (!attachmentData || !attachmentData.att_clouddisk) {
return '';
}
var fileName = attachmentData.att_clouddisk.name;
if (fileName.indexOf('.' + attachmentData.att_clouddisk.suffix) > -1) {
fileName = fileName.substring(0, fileName.indexOf('.' + attachmentData.att_clouddisk.suffix));
}
return fileName || '';
}
/**
* 获取后缀
* @param name
* @returns {string|*|string}
*/
RichTextUitl.getCloudFileSuffix = function (name) {
var attachmentData;
try {
attachmentData = JSON.parse(decodeURIComponent(atob(name)));
} catch (e) {
}
if (!attachmentData || !attachmentData.att_clouddisk) {
return '';
}
return attachmentData.att_clouddisk.suffix || '';
}
/**
* 判断是否是手机端
*/
RichTextUitl.isPhone = function () {
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //g
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
var isHarmony = navigator.userAgent.indexOf('harmony') > -1
return isAndroid || isIOS || isHarmony;
}
/**
* 保存富文本内容时将 文本链接附件转成 卡片附件,显示的时候改回成 a 标签
* 目的是避免文本链接附件在客户端上点击时跳转到的PC端网页地址
* 卡片页形式可以走客户端协议打开
* @param name
* @param module
* @param tag
* @returns {string}
*/
RichTextUitl.changeAttachmentModel = function (name, module, tag) {
var html = '';
var attachmentData = RichTextUitl.b64DecodeUnicode(name)
if (tag == 'iframe') {
html = '
' +
'
';
} else if (tag == 'a') {
var linkClass = '';
var title = '';
switch (attachmentData.attachmentType) {
case 18 :
// 云盘文件
href = attachmentData.att_clouddisk.downPath;
title = attachmentData.att_clouddisk.name;
linkClass = 'iframe';
break;
case 25 :
href = attachmentData.att_web.url;
title = attachmentData.att_web.title;
linkClass = 'link';
break;
}
if (!href) {
return;
}
html = '
';
}
return html;
}
/**
* 详情页去掉附件的可编辑链接参数 enableEdit=1
*/
RichTextUitl.subAttchEditMode = function (rtf_content) {
if (!rtf_content) {
return '';
}
var iframeReg = /
)/gi; //匹配iframe标签
var srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i; // 匹配iframe中的src
var arr = rtf_content.match(iframeReg); //筛选出所有的iframe
if (arr) {
for (var i = 0; i < arr.length; i++) {
var src = arr[i].match(srcReg)
if (src) {
iframe_src = src[1];
if (iframe_src && iframe_src.indexOf("enableEdit=1") > 0) {
rtf_content = rtf_content.replace(iframe_src, iframe_src.replace('enableEdit=1', 'enableEdit=0'));
}
}
}
}
return rtf_content;
}
/*
* MAP对象,实现MAP功能
*
* 接口:
* size() 获取MAP元素个数
* isEmpty() 判断MAP是否为空
* clear() 删除MAP所有元素
* put(key, value) 向MAP中增加元素(key, value)
* remove(key) 删除指定KEY的元素,成功返回True,失败返回False
* get(key) 获取指定KEY的元素值VALUE,失败返回NULL
* element(index) 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
* containsKey(key) 判断MAP中是否含有指定KEY的元素
* containsValue(value) 判断MAP中是否含有指定VALUE的元素
* values() 获取MAP中所有VALUE的数组(ARRAY)
* keys() 获取MAP中所有KEY的数组(ARRAY)
*
* 例子:
* var map = new Map();
*
* map.put("key", "value");
* var val = map.get("key")
* ……
*
*/
function RMap() {
this.elements = new Array();
//获取MAP元素个数
this.size = function () {
return this.elements.length;
};
//判断MAP是否为空
this.isEmpty = function () {
return (this.elements.length < 1);
};
//删除MAP所有元素
this.clear = function () {
this.elements = new Array();
};
//向MAP中增加元素(key, value)
this.put = function (_key, _value) {
this.removeByKey(_key);
this.elements.push({
key: _key,
value: _value
});
};
//向MAP中增加元素(key, value)
this.set = function (_key, _value) {
this.removeByKey(_key);
this.elements.push({
key: _key,
value: _value
});
};
//删除指定KEY的元素,成功返回True,失败返回False
this.removeByKey = function (_key) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
this.elements.splice(i, 1);
return true;
}
}
} catch (e) {
bln = false;
}
return bln;
};
//删除指定VALUE的元素,成功返回True,失败返回False
this.removeByValue = function (_value) {//removeByValueAndKey
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].value == _value) {
this.elements.splice(i, 1);
return true;
}
}
} catch (e) {
bln = false;
}
return bln;
};
//删除指定VALUE的元素,成功返回True,失败返回False
this.removeByValueAndKey = function (_key, _value) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].value == _value && this.elements[i].key == _key) {
this.elements.splice(i, 1);
return true;
}
}
} catch (e) {
bln = false;
}
return bln;
};
//获取指定KEY的元素值VALUE,失败返回NULL
this.get = function (_key) {
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
return this.elements[i].value;
}
}
} catch (e) {
return false;
}
return false;
};
//获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
this.element = function (_index) {
if (_index < 0 || _index >= this.elements.length) {
return null;
}
return this.elements[_index];
};
//判断MAP中是否含有指定KEY的元素
this.containsKey = function (_key) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
bln = true;
}
}
} catch (e) {
bln = false;
}
return bln;
};
//判断MAP中是否含有指定KEY的元素
this.has = function (_key) {
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
return true;
}
}
} catch (e) {
return false;
}
return false;
};
//判断MAP中是否含有指定VALUE的元素
this.containsValue = function (_value) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].value == _value) {
bln = true;
}
}
} catch (e) {
bln = false;
}
return bln;
};
//判断MAP中是否含有指定VALUE的元素
this.containsObj = function (_key, _value) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].value == _value && this.elements[i].key == _key) {
bln = true;
}
}
} catch (e) {
bln = false;
}
return bln;
};
//获取MAP中所有VALUE的数组(ARRAY)
this.values = function () {
var arr = new Array();
for (i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].value);
}
return arr;
};
//获取MAP中所有VALUE的数组(ARRAY)
this.valuesByKey = function (_key) {
var arr = new Array();
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
arr.push(this.elements[i].value);
}
}
return arr;
};
//获取MAP中所有KEY的数组(ARRAY)
this.keys = function () {
var arr = new Array();
for (i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].key);
}
return arr;
};
//获取key通过value
this.keysByValue = function (_value) {
var arr = new Array();
for (i = 0; i < this.elements.length; i++) {
if (_value == this.elements[i].value) {
arr.push(this.elements[i].key);
}
}
return arr;
};
//获取MAP中所有KEY的数组(ARRAY)
this.keysRemoveDuplicate = function () {
var arr = new Array();
for (i = 0; i < this.elements.length; i++) {
var flag = true;
for (var j = 0; j < arr.length; j++) {
if (arr[j] == this.elements[i].key) {
flag = false;
break;
}
}
if (flag) {
arr.push(this.elements[i].key);
}
}
return arr;
};
}
RichTextUitl.createTemplate = function () {
var html = '' +
'
' +
'
可选择一个模板
' +
'
' +
'
' +
'
' +
'
'
if (RichTextUitl.templateContainer) {
$(RichTextUitl.templateContainer).append(html);
} else {
$('body').append(html);
}
html = '';
if (RichTextUitl.templateList.length > 0) {
$.each(RichTextUitl.templateList, function (idx, val) {
html += '' +
'
' +
'
' + val.title + '
' +
'' +
'
' +
'
'
})
} else {
$.each(RichTextUitl.template, function (idx, val) {
html += '' +
'
' +
'
' + val.title + '
' +
'' +
'
' +
'
'
})
}
$('.templateList').append(html)
$('.templatePop').show();
//20210401 模板
$('.templatePop').on('click', '.template', function () {
var rtfContent;
if (RichTextUitl.templateList.length > 0) {
rtfContent = RichTextUitl.templateList[parseInt($(this).attr('data-type'))].rtf_content;
} else {
rtfContent = RichTextUitl.template[parseInt($(this).attr('data-type'))].rtf_content;
}
if (rtfContent) {
ue.setContent(rtfContent);
}
RichTextUitl.hidetemplate();
});
interval = setInterval(function () {
// 定时任务检测是否有内容
if(!ue || !ue.body) return
if (typeof ue != 'undefined' && ue.getContent() == "") {
// 创建页,删除页面所有内容后,显示模板
$('.templatePop').show();
} else {
RichTextUitl.hidetemplate();
}
}, 1000);
}
RichTextUitl.hidetemplate = function () {
$('.templatePop').fadeOut();
}
/*支持多编辑器多个模板*/
RichTextUitl.createMoreTemplate = function (editorId, templateList) {
var html = '' +
'
' +
'
可选择一个模板
' +
'
' +
'
' +
'
' +
'
'
$('#' + editorId).append(html);
html = '';
$.each(templateList, function (idx, val) {
html += '' +
'
' +
'
' + val.title + '
' +
'' +
'
' +
'
'
})
$('#' + editorId).find('.templateList').append(html)
$('#' + editorId).find('.templatePop').show();
//20210401 模板
$('#' + editorId).find('.templatePop').on('click', '.template', function () {
var rtfContent;
ue = UE.getEditor('multi' + editorId);
rtfContent = templateList[parseInt($(this).attr('data-type'))].rtf_content;
if (rtfContent) {
ue.setContent(rtfContent);
}
$('#' + editorId).find('.templatePop').fadeOut();
});
}