Files
ChuXun ec3b5157fe 1
2026-01-04 17:58:44 +08:00

1390 lines
47 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var $ctx = "";
try {
$ctx = document.scripts[document.scripts.length - 1].src.substr(1).match(new RegExp("(\\?|&)ctx=([^&]*)(&|$)"))[2] || "";
} catch (e) {
}
var imgViewTool = {
puid: '',
yunToken: '',
hasLoaded: false,
needEdit: false,//是否需要编辑图片
imageViewer: null, //图片查看对象
imageEditor: null,//图片编辑对象
moveTimer: null, //监测鼠标是否移动的定时器
justShowToggleBtn: false, // 只显示切换图片按钮 不显示其他按钮 默认为false 显示所有按钮
loading: true, // 是否显示切换图片loading图标 默认显示
title: false, // 是否显示图片标题 默认不显示
navbar: false, // 是否显示底部缩略图 默认不显示
slideInfo: {}, // 自动轮播配置
loadFiles: function () {
}, //加载js和css
init: function () {
}, //初始化图片查看
initViewImage: function () {
},//初始化图片查看实例
initHtml: function () {
},//添加查看按钮工具栏
initImageEditor: function () {
},//初始化图片编辑
imgshown: function () {
},//查看大图打开时调用
imgviewed: function () {
},//查看大图展示出来时调用
loadExtentFile: function () {
},//加载外部文件
unactiveViewBtn: function () {
},//更新左右切换按钮状态
blobToFile: function (theBlob, fileName) {
},//将blob转换为file
base64ToBlob: function (data) {
},//base64转blob
closeEditMode: function () {
},//关闭编辑模式
openEditMode: function () {
},//打开编辑模式
uploadImg: function () {
},//上传图片
downloadImg: function () {
},//下载图片
hexToRGBa: function () {
},//hex转rgba
getBrushSettings: function () {
},//获取画笔设置
activateShapeMode: function () {
},//打开图像模式
activateTextMode: function () {
},//打开文本模式
hideSubMenu: function () {
},//关闭子级菜单
replaceImg: function () {
},//替换原图
copyImg: function () {
},//复制图片
forwardImg: function () {
},//转发图片
saveCloudImg: function () {
},//图片保存到云盘
getHost: function (url) {
},//截取域名
isOpen: false, //是否打开,点击图片后为true,关闭图片为false
activeObjectId: '', //当前激活的图形id
shapeOptions: {fill: 'transparent', stroke: '', color: ''},//图形参数
shapeType: '',//形状 rect或circle
previewUrl: '', //新图片url
objectId: '', //新图片objectId
imgTitle: '', //新图片title
size: '', //新图片大小
file: '', //新图片file
useColor: '',//常用颜色
groupwebDomain: '//groupweb.chaoxing.com',
noteDomain: '//noteyd.chaoxing.com',
panDomain: '//pan-yz.chaoxing.com',
shareDomain: '//sharewh.chaoxing.com',
}
imgViewTool.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('imgviewer.js') > -1) {
src = js[i].src;
break;
}
}
return src || js[last].src;
}();
imgViewTool.prefix = jsPath.substring(0, jsPath.indexOf('/res/'));
jsPath = jsPath.substring(jsPath.indexOf('//') + 2, jsPath.lastIndexOf('/') + 1);
return jsPath;
}();
//获取镜像域名
try {
if(!window.obj){
imgViewTool.noteDomain = imgViewTool.prefix;
$.ajax({
type:'get',
url: imgViewTool.noteDomain + '/apis/mirrorConfig',
async:false,
success:function(res){
if(res.result == 1){
imgViewTool.groupwebDomain = res.data.domainMap.GroupWebDomainHttps;
imgViewTool.panDomain = res.data.domainMap.panDomainHttps;
imgViewTool.shareDomain = res.data.domainMap.shareWhDomainHttps;
}
},
});
}else{
imgViewTool.groupwebDomain = window.obj.mirrorDomain.GroupWebDomainHttps;
imgViewTool.noteDomain = window.obj.mirrorDomain.NoteDomainHttps;
imgViewTool.panDomain = window.obj.mirrorDomain.panDomainHttps;
imgViewTool.shareDomain = window.obj.mirrorDomain.shareWhDomainHttps;
}
} catch (e) {
}
/*初始化
* params needEdit:是否需要编辑功能
* params options
* type:edit或detail 编辑模式
*/
imgViewTool.init = function (needEdit, options = {}) {
if (imgViewTool.hasLoaded) {
return;
}
if (typeof jQuery == 'undefined') {
imgViewTool.loadExtentFile("//" + imgViewTool.getHost(imgViewTool.noteDomain) + '/res/js/common/jquery-3.7.1.min.js', "js");
imgViewTool.loadExtentFile("//" + imgViewTool.getHost(imgViewTool.noteDomain) + '/res/js/common/jquery-migrate-3.4.1.min.js', "js");
}
if(window.obj && window.obj.mirrorDomain && (window.obj.mirrorDomain.isMirrorDeploy || window.obj.mirrorDomain.isMirrorDeploy == false && window.obj.mirrorDomain.NoteDomain.indexOf('chaoxing.com') == -1)){
$('#imgtoolWrap #imgReport,#imgtoolWrap #imgForward,#imgtoolWrap #imgSaveCloud,#imgtoolWrap #imgDownload').remove();
}
if(options.newBtns){
//有新增按钮
imgViewTool.newBtns = options.newBtns
}
imgViewTool.justShowToggleBtn = !!options.justShowToggleBtn
imgViewTool.loading = !(options.loading === false)
imgViewTool.title = options.title || false
imgViewTool.navbar = !!options.navbar
// 是否开启自动轮播
if(options.slideDuration && options.slideDuration > 0) {
imgViewTool.slideInfo.autoSlide = true
imgViewTool.slideInfo.duration = options.slideDuration
}
imgViewTool.hasLoaded = true;
imgViewTool.needEdit = needEdit;
imgViewTool.initHtml();
if (!imgViewTool.needEdit) { //不需要图片编辑
$('#imgtoolWrap #imgEdit').hide();
} else {
//点确定后,编辑页是替换原图,详情页是复制
if (window.location.href.indexOf('noteRichtext') > -1 || options.type == 'edit') { //编辑页
$('#imgtoolWrap #imgReplace').show();
// $('#imgtoolWrap #imgCopy').hide();
} else {//详情页
$('#imgtoolWrap #imgReplace').hide();
$('#imgtoolWrap #imgCopy').show();
}
imgViewTool.getUploadConfig(); //获取上传需要的puid和云盘Token
}
if (options.showAppArrow) {
$('#imgtoolWrap').addClass('showArrow')
}
imgViewTool.loadFiles();
imgViewTool.initEvent();
}
/*初始化
* params container:需要查看大图的容器
* params originurl:存大图src的属性,可传data-original',默认不传的时候是'src'
* params index:图片在容器中的索引值不传为0
*/
imgViewTool.initViewImage = function (container, originurl, index,json) {
var ua = navigator.userAgent.toLowerCase();
if (ua && ua.indexOf("chaoxingstudy") != -1 && ua.indexOf('_pc_') == -1 && window.self == window.top && typeof jsBridge == 'object') {
var imgArray = new Array();
$(container).find('img').each(function () {
var imgObj = {"imageUrl": $(this).attr(originurl || 'src')};
imgArray.push(imgObj);
})
jsBridge.postNotification('CLIENT_PREVIEW_IMAGES', {
imageUrls: imgArray,
showIndex: index
});
return;
}
if(imgViewTool.isOpen){
return;
}
imgViewTool.isOpen = true;
if(window.obj && window.obj.mirrorDomain && (window.obj.mirrorDomain.isMirrorDeploy || window.obj.mirrorDomain.isMirrorDeploy == false && window.obj.mirrorDomain.NoteDomain.indexOf('chaoxing.com') == -1)){
$('#imgtoolWrap #imgReport,#imgtoolWrap #imgForward,#imgtoolWrap #imgSaveCloud,#imgtoolWrap #imgDownload').remove();
}
if(json){
if(json.replaceFn){
imgViewTool.replaceFn = json.replaceFn
}
if(json.needEdit){
imgViewTool.needEdit = json.needEdit;
imgViewTool.loadEditFile()
$('body').append('<div id="imageEditContainer"><div id="imgCloseEdit"></div><div class="tui-image-editor"></div></div></div>');
imgViewTool.getUploadConfig()
$('#imgtoolWrap #imgEdit').show();
imgViewTool.imgEditEvent();
}
if(json.hideItems && json.hideItems.length > 0){
json.hideItems.forEach(function (item){
$('#imgtoolWrap #img' + item).remove()
})
}
}
if (!(imgViewTool.puid && imgViewTool.yunToken)) {
$('#imgtoolWrap #imgEdit').remove();
}
//如果传过来的container是body显示替换原图隐藏复制
if (imgViewTool.needEdit && container.getAttribute('contenteditable') && container.getAttribute('contenteditable') == 'true') {
$('#imgtoolWrap #imgReplace').show();
// $('#imgtoolWrap #imgCopy').hide();
}else{
$('#imgtoolWrap #imgReplace').hide();
$('#imgtoolWrap #imgCopy').show();
}
originurl = originurl || 'src';
imgViewTool.imageViewer = new Viewer(container, {
url: originurl,
navbar: imgViewTool.navbar,
loading: imgViewTool.loading,
title: imgViewTool.title,
container: document.body,
toolbar: false,
filter: function (image) {
if (image.getAttribute(originurl)) {
return true;
} else {
return false;
}
},
show: function () {
if (typeof (imgViewTool) != 'undefined') {
imgViewTool.imgshown();
}
},
shown: function() {
imgViewTool.slideInfo.openSlide()
},
viewed: function () {
if (typeof (imgViewTool) != 'undefined') {
clearTimeout(imgViewTool.moveTimer);
imgViewTool.imgviewed();
// 工具栏打开后1秒内没有操作隐藏工具栏
imgViewTool.moveTimer = setTimeout(function (){
$('#imgtoolWrap').fadeOut(200)
},800)
}
},
hidden:function () {
if(json && json.hiddenFn){
json.hiddenFn()
}
imgViewTool.slideInfo.closeSlide();
}
});
index = index || 0;
imgViewTool.imageViewer.index = index;
imgViewTool.imageViewer.show();
if (typeof (imgViewTool) == 'undefined') {
imgViewTool.unactiveViewBtn();
}
$('#imgtoolWrap').fadeIn();
}
//事件
imgViewTool.initEvent = function () {
//点击阴影
$('body').on('click', '.viewer-container', function (e) {
e.stopPropagation();
if($('#imgtoolWrap')[0] && $('#imgtoolWrap')[0].style.opacity) return
// 点击缩略图时 不销毁
if(imgViewTool.imageViewer && !e.target.closest('.viewer-navbar')){
imgViewTool.imageViewer.destroy();
imgViewTool.slideInfo.closeSlide();
}
if($(e.target).hasClass('viewer-close')){
if (typeof sendMessageFadeInOrOut == 'function') {
// 课程那边图片的额外操作
sendMessageFadeInOrOut(0)
}
}
$('#imgtoolWrap').fadeOut();
imgViewTool.closeEditMode();
imgViewTool.isOpen = false;
});
$('body').on('click', '.viewer-canvas img,.tui-image-editor-canvas-container', function (e) {
e.stopPropagation();
});
//上一个
$('#imgPrev').click(function () {
imgViewTool.closeEditMode();
imgViewTool.imageViewer.prev();
imgViewTool.unactiveViewBtn()
})
//下一个
$('#imgNext').click(function () {
imgViewTool.closeEditMode();
imgViewTool.imageViewer.next();
imgViewTool.unactiveViewBtn()
})
//放大
$('#imgZoomIn').click(function () {
imgViewTool.imageViewer.zoom(0.1);
$('#imgZoomNum').text(parseInt(imgViewTool.imageViewer.imageData.ratio * 100) + '%');
});
//缩小
$('#imgZoomOut').click(function () {
imgViewTool.imageViewer.zoom(-0.1);
$('#imgZoomNum').text(parseInt(imgViewTool.imageViewer.imageData.ratio * 100) + '%');
})
//1:1
$('#img1-1').click(function () {
imgViewTool.imageViewer.zoomTo(1);
$('#imgFit').removeClass('hide');
$(this).addClass('hide');
$('#imgZoomNum').text(parseInt(imgViewTool.imageViewer.imageData.ratio * 100) + '%');
})
//适应屏幕
$('#imgFit').click(function () {
imgViewTool.imageViewer.reset();
$('#img1-1').removeClass('hide');
$(this).addClass('hide');
$('#imgZoomNum').text(parseInt(imgViewTool.imageViewer.imageData.ratio * 100) + '%');
})
//旋转
$('#imgRotate').click(function () {
$('#imgCancle,#imgApply').addClass('hide');
$('#imgSure,#imgCancleEdit').removeClass('hide');
if ($('#imgtoolWrap').hasClass('editMode')) {
//编辑图片的旋转
imgViewTool.imageEditor.rotate(-90);
} else {
imgViewTool.imageViewer.rotate(-90);
}
})
//下载
$('#imgDownload').click(function () {
if (!$('#imgtoolWrap').hasClass('editMode')) {
if ($('.viewer-canvas img')[0]) {
var src = $('.viewer-canvas img')[0].getAttribute('src');
if (src) {
var oldobjectId = imgViewTool.getObjectIdByImgSrc(src)
//需要加图片水印的
if(typeof RichTextUitl != 'undefined' && RichTextUitl.watermarkOptions && RichTextUitl.generateWatermark){
oldobjectId = RichTextUitl.generateWatermark(oldobjectId, RichTextUitl.watermarkOptions) || objectid;
}
if (oldobjectId) {
//获取云存储下载地址
YunFileUtil.downloadYunFile('', oldobjectId);
}
}
}
} else { //编辑后的图片
imgViewTool.uploadImg(imgViewTool.downloadImg);
}
})
// 举报
$('#imgReport').click(function () {
if ($('.viewer-canvas img')[0]) {
var src = $('.viewer-canvas img')[0].getAttribute('src');
if (src) {
var objectId = imgViewTool.getObjectIdByImgSrc(src)
if (objectId) {
var params = new Array();
params.push({'name': 'type', 'value': 'image'});
params.push({'name': 'sourceIdstr', 'value': $.md5(objectId)});
params.push({'name': 'sourceContent', 'value': encodeURIComponent(JSON.stringify({'image': src}))});
FORM_post(window.location.protocol + '//'+ imgViewTool.getHost(imgViewTool.groupwebDomain) +'/pc/report/reportIndex', params, '_blank');
}
}
}
})
if (imgViewTool.needEdit) {
imgViewTool.imgEditEvent();
}
//最后一张图片右键头不可点,第一张图片左箭头不可点
$(window).keydown(function (event) {
if (imgViewTool.imageViewer) {
if (event.keyCode == 27) {
imgViewTool.imageViewer.destroy();
$('#imgtoolWrap').fadeOut();
imgViewTool.closeEditMode();
imgViewTool.slideInfo.closeSlide();
imgViewTool.isOpen = false;
} else if (event.keyCode == 37) { //左
imgViewTool.unactiveViewBtn();
} else if (event.keyCode == 39) { //右
imgViewTool.unactiveViewBtn();
}
}
});
$('#imgtoolWrap').on('click mousemove', function (e){
e.stopPropagation()
clearTimeout(imgViewTool.moveTimer);
})
//停留1秒没有任何操作时隐藏工具栏
$('body').on('mousemove click wheel', '.viewer-canvas', function (){
clearTimeout(imgViewTool.moveTimer);
$('#imgtoolWrap').show()
//1秒后隐藏工具栏
imgViewTool.moveTimer = setTimeout(function (){
$('#imgtoolWrap').fadeOut()
},1000)
})
// 编辑按钮点击回调
$('#imgCloseEdit, #imgCopy, #imgForward, #imgReplace, #imgSaveCloud').click(function(){
if (typeof sendMessageFadeInOrOut == 'function') {
// 课程那边图片的额外操作
sendMessageFadeInOrOut(0)
}
})
}
//图片编辑事件
imgViewTool.imgEditEvent = function (){
//编辑
$('#imgEdit').click(function () {
var src = imgViewTool.imageViewer.images[imgViewTool.imageViewer.index].getAttribute('src')
var objectId = imgViewTool.getObjectIdByImgSrc(src);
if (!objectId) {
return;
}
var url = document.location.protocol + '//' + imgViewTool.getHost(imgViewTool.noteDomain) + '/pc/files/getImageBase64?objectId=' + objectId;
$.ajax({
url: url,
type: "get",
crossDomain: true,
xhrFields: {
withCredentials: true
},
success: function (res) {
var data = res.msg;
if (res.result && data.imageData) {
imgViewTool.openEditMode();
imgViewTool.imageEditor.loadImageFromURL(data.imageData, 'SampleImage').then(function (sizeValue){
imgViewTool.imageEditor.clearUndoStack();
});
}
}
})
})
//裁剪
$('#imgCrop').click(function () {
imgViewTool.hideSubMenu()
$('#imgCancle,#imgApply').removeClass('hide');
$('#imgSure,#imgCancleEdit').addClass('hide');
imgViewTool.imageEditor.startDrawingMode('CROPPER');
// imgViewTool.imageEditor._cropAction().preset('preset-square');
});
//裁剪--应用
$('#imgApply').click(function () {
if (imgViewTool.imageEditor.getCropzoneRect()) {
imgViewTool.imageEditor.crop(imgViewTool.imageEditor.getCropzoneRect()).then(function () {
imgViewTool.imageEditor.stopDrawingMode();
$('.tui-image-editor').height(parseInt($('.tui-image-editor-canvas-container').css('max-height')));
});
}
imgViewTool.imageEditor.stopDrawingMode();
$('#imgCancle,#imgApply').addClass('hide');
$('#imgSure,#imgCancleEdit').removeClass('hide');
})
//裁剪--取消
$('#imgCancle').click(function () {
imgViewTool.imageEditor.stopDrawingMode();
$('#imgCancle,#imgApply').addClass('hide');
$('#imgSure,#imgCancleEdit').removeClass('hide');
});
//矩形
$('#imgDrawRect').click((function () {
$('#imgCancle,#imgApply').addClass('hide');
$('#imgSure,#imgCancleEdit').removeClass('hide');
if (imgViewTool.imageEditor.getDrawingMode() == 'SHAPE' && imgViewTool.shapeType == 'rect') {
imgViewTool.hideSubMenu();
$(this).removeClass('active');
} else {
imgViewTool.hideSubMenu();
$(this).addClass('active');
$('#editSubMenu .widthList').show();
$('#editSubMenu .fontWrap').hide();
if(imgViewTool.useColor === ""){
$('#editSubMenu.colorList.color').removeClass('active');
$('#editSubMenu.colorList.color:nth-child(1)').addClass('active');
}
$('#editSubMenu').css('left', $(this)[0].offsetLeft + $(this).width() - $('#editSubMenu').width() / 2).show();
imgViewTool.shapeOptions.stroke = $('#editSubMenu .colorList p.active').css('background-color');
imgViewTool.shapeOptions.strokeWidth = $('#editSubMenu .widthList p.active').width();
imgViewTool.imageEditor.setDrawingShape('rect', imgViewTool.shapeOptions);
imgViewTool.shapeType = 'rect';
imgViewTool.activateShapeMode();
}
}))
//圆形
$('#imgDrawCircle').click((function () {
$('#imgCancle,#imgApply').addClass('hide');
$('#imgSure,#imgCancleEdit').removeClass('hide');
if (imgViewTool.imageEditor.getDrawingMode() == 'SHAPE' && imgViewTool.shapeType == 'circle') {
imgViewTool.hideSubMenu();
$(this).removeClass('active');
} else {
imgViewTool.hideSubMenu();
$(this).addClass('active');
$('#editSubMenu .widthList').show();
$('#editSubMenu .fontWrap').hide();
if(imgViewTool.useColor === ""){
$('#editSubMenu.colorList.color').removeClass('active');
$('#editSubMenu.colorList.color:nth-child(1)').addClass('active');
}
$('#editSubMenu').css('left', $(this)[0].offsetLeft + $(this).width() - $('#editSubMenu').width() / 2).show();
imgViewTool.shapeOptions.stroke = $('#editSubMenu .colorList p.active').css('background-color');
imgViewTool.shapeOptions.strokeWidth = $('#editSubMenu .widthList p.active').width();
imgViewTool.imageEditor.setDrawingShape('circle', imgViewTool.shapeOptions);
imgViewTool.shapeType = 'circle';
imgViewTool.activateShapeMode();
}
}))
//画笔
$('#imgDrawLine').click((function () {
$('#imgCancle,#imgApply').addClass('hide');
$('#imgSure,#imgCancleEdit').removeClass('hide');
if (imgViewTool.imageEditor.getDrawingMode() == 'FREE_DRAWING') {
imgViewTool.hideSubMenu();
$(this).removeClass('active');
} else {
imgViewTool.hideSubMenu();
$(this).addClass('active');
$('#editSubMenu .widthList').show();
$('#editSubMenu .fontWrap').hide();
if(imgViewTool.useColor === ""){
$('#editSubMenu.colorList.color').removeClass('active');
$('#editSubMenu.colorList.color:nth-child(1)').addClass('active');
}
$('#editSubMenu').css('left', $(this)[0].offsetLeft + $(this).width() - $('#editSubMenu').width() / 2).show();
var settings = {
width: $('#editSubMenu .widthList p.active').width(),
color: $('#editSubMenu .colorList p.active').css('background-color')
};
imgViewTool.imageEditor.stopDrawingMode();
imgViewTool.imageEditor.startDrawingMode('FREE_DRAWING', settings);
}
}))
//文字
$('#imgDrawText').click((function () {
$('#imgCancle,#imgApply').addClass('hide');
$('#imgSure,#imgCancleEdit').removeClass('hide');
if (imgViewTool.imageEditor.getDrawingMode() == 'TEXT') {
$(this).removeClass('active');
imgViewTool.hideSubMenu();
} else {
imgViewTool.hideSubMenu();
$(this).addClass('active');
$('#editSubMenu .widthList').hide();
$('#editSubMenu .fontWrap').show();
if(imgViewTool.useColor === ""){
$('#editSubMenu.colorList.color').removeClass('active');
$('#editSubMenu.colorList.color:nth-child(1)').addClass('active');
}
$('#editSubMenu .fontList p').eq(2).click();
$('#editSubMenu').css('left', $(this)[0].offsetLeft + $(this).width() - $('#editSubMenu').width() / 2).show();
imgViewTool.imageEditor.startDrawingMode('TEXT');
}
}));
//设置颜色
$('#editSubMenu .colorList p').click(function () {
$(this).siblings().removeClass('active');
$(this).addClass('active');
var color = $(this).css('background-color');
if (imgViewTool.useColor === "") {
imgViewTool.useColor = color
}
if (imgViewTool.imageEditor.getDrawingMode() == 'TEXT') {
imgViewTool.imageEditor.changeTextStyle(imgViewTool.activeObjectId, {
'fill': color,
});
// imgViewTool.imageEditor.stopDrawingMode();
// imgViewTool.imageEditor.startDrawingMode('TEXT');
} else if (imgViewTool.imageEditor.getDrawingMode() == 'FREE_DRAWING') {
imgViewTool.imageEditor.setBrush({
color: color
});
} else if (imgViewTool.imageEditor.getDrawingMode() == 'SHAPE') {
imgViewTool.imageEditor.changeShape(imgViewTool.activeObjectId, {
stroke: color
});
imgViewTool.shapeOptions.stroke = color;
imgViewTool.imageEditor.setDrawingShape(imgViewTool.shapeType, imgViewTool.shapeOptions);
imgViewTool.imageEditor.stopDrawingMode();
imgViewTool.imageEditor.startDrawingMode('SHAPE');
}
});
//设置宽度
$('#editSubMenu .widthList p').click(function () {
$(this).siblings().removeClass('active');
$(this).addClass('active');
var width = $(this).width();
if (imgViewTool.imageEditor.getDrawingMode() == 'FREE_DRAWING') {
imgViewTool.imageEditor.setBrush({
width: width
});
} else if (imgViewTool.imageEditor.getDrawingMode() == 'SHAPE') {
imgViewTool.imageEditor.changeShape(imgViewTool.activeObjectId, {
strokeWidth: width
});
imgViewTool.shapeOptions.strokeWidth = width;
imgViewTool.imageEditor.setDrawingShape('rect', imgViewTool.shapeOptions);
imgViewTool.imageEditor.stopDrawingMode();
imgViewTool.imageEditor.startDrawingMode('SHAPE');
}
});
//打开字号列表
$('#editSubMenu .fontText').click(function () {
$('#editSubMenu .fontList').slideToggle(300);
$(this).find('i').toggleClass('down');
});
//设置字号
$('#editSubMenu .fontList p').click(function () {
$(this).siblings().removeClass('active');
$(this).addClass('active');
$('#editSubMenu .fontList').hide();
$('#fontSize').html($(this).html());
imgViewTool.imageEditor.changeTextStyle(imgViewTool.activeObjectId, {
fontSize: parseInt($(this).html().replace('px', ''), 10),
});
// imgViewTool.imageEditor.stopDrawingMode();
// imgViewTool.imageEditor.startDrawingMode('TEXT');
});
//撤回
$('#imgUndo').click((function () {
$('#imgCancle,#imgApply').addClass('hide');
$('#imgSure,#imgCancleEdit').removeClass('hide');
imgViewTool.hideSubMenu()
if (!$(this).hasClass('disabled')) {
imgViewTool.imageEditor.undo();
}
}))
//恢复
$('#imgRedo').click((function () {
$('#imgCancle,#imgApply').addClass('hide');
$('#imgSure,#imgCancleEdit').removeClass('hide');
imgViewTool.hideSubMenu()
if (!$(this).hasClass('disabled')) {
imgViewTool.imageEditor.redo();
}
}))
//确定
$('#imgSure').click((function () {
$('#imgtoolWrap .surePop').show();
imgViewTool.uploadImg()
}))
//取消
$('#imgCancleEdit').click(function () {
imgViewTool.closeEditMode();
})
//确定-关闭
$('#imgtoolWrap .surePop p').click(function (e) {
e.stopPropagation();
imgViewTool.imageViewer.destroy();
$('#imgtoolWrap').fadeOut();
imgViewTool.closeEditMode();
imgViewTool.slideInfo.closeSlide();
imgViewTool.isOpen = false;
});
//复制
$('#imgtoolWrap #imgCopy').click(function (e) {
e.stopPropagation();
if (!imgViewTool.previewUrl) {
var timer = setInterval(function () {
if (imgViewTool.previewUrl) {
clearInterval(timer);
imgViewTool.copyImg()
}
}, 1000)
} else {
imgViewTool.copyImg()
}
});
//转发
$('#imgtoolWrap #imgForward').click(function (e) {
e.stopPropagation();
var ua = navigator.userAgent;
var isPhone = (!!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) || ua.indexOf('Android') > -1 || ua.indexOf('Linux') > -1)
if ( !isPhone && typeof (ForwardUtils) == 'undefined') {
imgViewTool.loadExtentFile("//" + imgViewTool.getHost(imgViewTool.shareDomain) + '/res/plugin/forword/js/forward.js', "js",function () {
if (!imgViewTool.previewUrl) {
var timer = setInterval(function () {
if (imgViewTool.previewUrl) {
clearInterval(timer);
imgViewTool.forwardImg()
}
}, 1000)
} else {
imgViewTool.forwardImg()
}
});
}else if(!isPhone){
if (!imgViewTool.previewUrl) {
var timer = setInterval(function () {
if (imgViewTool.previewUrl) {
clearInterval(timer);
imgViewTool.forwardImg()
}
}, 1000)
} else {
imgViewTool.forwardImg()
}
}
});
//保存到云盘
$('#imgtoolWrap #imgSaveCloud').click(function (e) {
e.stopPropagation();
if (!imgViewTool.previewUrl) {
var timer = setInterval(function () {
if (imgViewTool.previewUrl) {
clearInterval(timer);
imgViewTool.saveCloudImg()
}
}, 1000)
} else {
imgViewTool.saveCloudImg()
}
});
//替换原图
$('#imgtoolWrap #imgReplace').click(function (e) {
e.stopPropagation();
$('.edui-editor-imagescale').removeClass('hover').removeClass('scale')
if (!imgViewTool.previewUrl) {
var timer = setInterval(function () {
if (imgViewTool.previewUrl) {
clearInterval(timer);
imgViewTool.replaceImg()
}
}, 1000)
} else {
imgViewTool.replaceImg()
}
});
//关闭编辑模式
$('#imgCloseEdit').click(function () {
imgViewTool.closeEditMode();
imgViewTool.imageViewer.destroy();
$('#imgtoolWrap').hide();
imgViewTool.slideInfo.closeSlide();
imgViewTool.isOpen = false;
})
}
//替换原图
imgViewTool.replaceImg = function () {
var index = imgViewTool.imageViewer.index;
var img = imgViewTool.imageViewer.images[index];
var newsrc = imgViewTool.previewUrl; // 新图片地址
var newObjectid = imgViewTool.objectId; //新图片objectId
img.setAttribute('src', newsrc);
img.setAttribute('_src', newsrc);
img.setAttribute('objectid', newObjectid);
img.onload = function () {
var params = this.src.split('?');
var src = '';
if (params.length > 1 && (params[1].indexOf('rw=') == -1 || params[1].indexOf('rh=') == -1)) {
src = this.getAttribute('src') + '&rw=' + this.naturalWidth + '&rh=' + this.naturalHeight;
} else if (params.length == 0 && (params[1].indexOf('rw=') == -1 || params[1].indexOf('rh=') == -1)) {
src = this.getAttribute('src') + '?rw=' + this.naturalWidth + '&rh=' + this.naturalHeight;
}
if(imgViewTool.replaceFn){
imgViewTool.replaceFn(img,src);
}
this.setAttribute('_src', src)
//裁剪后图片如果有高度会发生变形
if (this.style.width && parseInt(this.style.width.replace('px', '')) && this.style.height && parseInt(this.style.height.replace('px', ''))) {
var originWidth = parseInt(this.style.width.replace('px', ''));
var originHeight = parseInt(this.style.height.replace('px', ''));
var newHeight = parseInt((this.naturalHeight * originWidth) / this.naturalWidth);
if (newHeight > originHeight) { //新高度大于原高度,高度保持不变,宽度变小
this.style.width = parseInt(this.naturalWidth * originHeight / this.naturalHeight) + 'px'
} else { //新高度小于原始高度,宽度保持不变,高度变小
this.style.height = newHeight + 'px'
}
this.removeAttribute('height', '');
}
}
}
////复制图片
imgViewTool.copyImg = function () {
var dt = new clipboard.DT();
dt.setData("text/html", '<img src="' + imgViewTool.previewUrl + '">');
clipboard.write(dt).then(function () {
if ($('.toolTipBox').length > 0) {
$('.toolTipBox').remove()
}
$(document.body).append('<div class="toolTipBox" style="display:none;"><i class="popicon"><img src="' + imgViewTool.noteDomain + '/res/plugin/ueditor/themes/default/images/right.png" /></i><span class="tipstext">复制成功<span></div>')
$('.toolTipBox').show();
setTimeout(function () {
$('.toolTipBox').fadeOut();
}, 1500)
}, function (err) {
console.log(err);
});
}
//转发图片
imgViewTool.forwardImg = function () {
var imgUrl = imgViewTool.previewUrl + '?rw=' + imgViewTool.imageEditor.getCanvasSize().width + '&rh=' + imgViewTool.imageEditor.getCanvasSize().height + '&_fileSize=' + imgViewTool.size;
var attachment = {
type: 'img',
title: imgViewTool.imgTitle,
url: imgUrl,
objectId: imgViewTool.objectId,
file: imgViewTool.file,
};
ForwardUtils.forward(attachment);
}
//图片保存到云盘
imgViewTool.saveCloudImg = function () {
var imgSrc = imgViewTool.previewUrl;
var objectid = imgViewTool.getObjectIdByImgSrc(imgSrc);
if (!objectid) {
return;
}
var src = imgSrc;
var name = '';
if (src.indexOf('?') > -1) {
name = src.substring(src.lastIndexOf('/') + 1, src.indexOf('?'))
} else {
name = src.substring(src.lastIndexOf('/') + 1);
}
var obj = {
objectId: objectid,
title: name,
type:'img'
}
if(typeof ForwardUtils == 'undefined') return
ForwardUtils.saveTo({
'data': obj,
'type':'cloud',
'fileType':'img'
})
}
//初始化编辑对象
imgViewTool.initImageEditor = function () {
if(typeof tui.ImageEditor == "undefined"){
return
}
imgViewTool.imageEditor = new tui.ImageEditor('.tui-image-editor', {
cssMaxWidth: $(window).width() * 0.9,
cssMaxHeight: $(window).height() * 0.9,
selectionStyle: {
cornerStyle: 'circle',
cornerSize: 16,
cornerColor: '#FFFFFF',
lineWidth: 8,
cornerStrokeColor: '#FF0000',
rotatingPointOffset: 70
}
});
imgViewTool.imageEditor.on({
objectAdded: function (objectProps) {
console.info(objectProps);
},
undoStackChanged: function (length) {
if (length) {
$('#imgUndo').removeClass('disabled');
} else {
$('#imgUndo').addClass('disabled');
}
$('.tui-image-editor').height(parseInt($('.tui-image-editor-canvas-container').css('max-height')));
},
redoStackChanged: function (length) {
if (length) {
$('#imgRedo').removeClass('disabled');
} else {
$('#imgRedo').addClass('disabled');
}
$('.tui-image-editor').height(parseInt($('.tui-image-editor-canvas-container').css('max-height')));
},
objectScaled: function (obj) {
if (obj.type === 'text') {
$inputFontSizeRange.val(obj.fontSize);
}
},
addText: function (pos) {
imgViewTool.imageEditor.addText('双击输入文字', {
position: pos.originPosition,
styles: {
fontSize: 24,
fill: $('#editSubMenu .colorList p.active').css('background-color')
},
}).then(function(objectProps) {
console.log(objectProps);
});
},
objectActivated: function (obj) {
imgViewTool.activeObjectId = obj.id;
if (obj.type === 'text') {
imgViewTool.activateTextMode();
}
},
mousedown: function (event, originPointer) {
}
});
}
/*初始化工具栏*/
imgViewTool.initHtml = function () {
var html = '<div id="imgtoolWrap" style="display:none">' +
'<div class="inlineblock" id="imgpage">' +
'<div class="imgbtn" id="imgPrev"><div class="bntHoverTips">上一页<i></i></div></div>' +
'<div class="imgtext" id="pagenum"><span id="nowImgIndex"></span>/<span id="imgTotalNum"></span></div>' +
'<div class="imgbtn" id="imgNext"><div class="bntHoverTips">下一页<i></i></div></div>' +
'<div class="split"></div>' +
'</div> ' +
'<div class="imgzoom">' +
'<div class="imgbtn" id="imgZoomOut"><div class="bntHoverTips">缩小<i></i></div></div>' +
'<div class="imgtext" id="imgZoomNum"></div>' +
'<div class="imgbtn" id="imgZoomIn"><div class="bntHoverTips">放大<i></i></div></div>' +
'<div class="imgbtn" id="img1-1"><div class="bntHoverTips">1:1<i></i></div></div>' +
'<div class="imgbtn hide" id="imgFit"><div class="bntHoverTips">适应页面<i></i></div></div>' +
'</div>' +
'<div class="imgbtn" id="imgDownload"><div class="bntHoverTips">下载<i></i></div></div>' +
'<div class="split"></div>' +
'<div class="imgbtn" id="imgEdit"><div class="bntHoverTips">编辑<i></i></div></div>' +
'<div class="inlineblock imgEditBtns">' +
'<div class="imgbtn" id="imgDrawRect"><div class="bntHoverTips">矩形<i></i></div></div>' +
'<div class="imgbtn" id="imgDrawCircle"><div class="bntHoverTips">圆形<i></i></div></div>' +
'<div class="imgbtn hide" id="imgDrawArrow"><div class="bntHoverTips">箭头<i></i></div></div>' +
'<div class="imgbtn" id="imgDrawLine"><div class="bntHoverTips">画笔<i></i></div></div>' +
'<div class="imgbtn hide" id="imgDrawMasic"><div class="bntHoverTips">马赛克<i></i></div></div>' +
'<div class="imgbtn" id="imgDrawText"><div class="bntHoverTips">文字<i></i></div></div>' +
'<div class="imgbtn" id="imgCrop"><div class="bntHoverTips">裁剪<i></i></div></div>' +
'</div>' +
'<div class="imgbtn" id="imgRotate"><div class="bntHoverTips">旋转<i></i></div></div>' +
'<div class="inlineblock imgEditBtns">' +
'<div class="imgbtn disabled" id="imgUndo"><div class="bntHoverTips">撤回<i></i></div></div>' +
'<div class="imgbtn disabled" id="imgRedo"><div class="bntHoverTips">后退<i></i></div></div>' +
'<div class="imgbtn hide" id="imgCancle"><div class="bntHoverTips">取消<i></i></div></div>' +
'<div class="imgbtn hide" id="imgApply"><div class="bntHoverTips">应用<i></i></div></div>' +
'</div>' +
'<div class="imgbtn" id="imgReport"><div class="bntHoverTips">举报<i></i></div></div> ' +
'<div class="imgtext" id="imgCancleEdit"><p>取消</p></div> ' +
'<div class="imgtext" id="imgSure">' +
'<p>确定</p>' +
'<div class="surePop"><p id="imgCopy">复制</p><p id="imgForward">转发</p><p id="imgReplace">替换原图</p><p id="imgSaveCloud">保存到云盘</p></div>' +
'</div>' +
'<div id="editSubMenu">' +
'<div class="widthList"><p class="point active"></p><p class="point"></p><p class="point"></p></div>' +
'<div class="fontWrap">' +
'<p class="fontText"><span id="fontSize">12px</span><i></i></p>' +
'<div class="fontList"><p class="font">12px</p><p class="font">16px</p><p class="font">24px</p><p class="font">36px</p><p class="font active">48px</p><p class="font">60px</p><p class="font">78px</p><p class="font">96px</p></div>' +
'</div>' +
'<div class="split"></div>' +
'<div class="colorList"><p class="color active"></p><p class="color"></p><p class="color"></p><p class="color"></p><p class="color"></p><p class="color"></p><p class="color"></p></div>' +
'</div>' +
'</div>';
if (imgViewTool.needEdit) {
html += '<div id="imageEditContainer"><div id="imgCloseEdit"></div><div class="tui-image-editor"></div></div></div>';
}
// 隐藏工具栏 只显示切换图片按钮
if(imgViewTool.justShowToggleBtn) {
html = '<div id="imgtoolWrap" style="display:none">' +
'<div class="inlineblock" id="imgpage">' +
'<div class="imgbtn" id="imgPrev"><div class="bntHoverTips">上一页<i></i></div></div>' +
'<div class="imgtext" id="pagenum"><span id="nowImgIndex"></span>/<span id="imgTotalNum"></span></div>' +
'<div class="imgbtn" id="imgNext"><div class="bntHoverTips">下一页<i></i></div></div>' +
'</div>' +
'</div>';
}
$('body').append(html);
if(imgViewTool.newBtns){
html = '';
for(var i = 0;i < imgViewTool.newBtns.length;i++){
var item = imgViewTool.newBtns[i]
html = '<div class="imgbtn" id="'+item.btnId+'" onclick="javascript:'+ item.clickFn() +'" style="background-image: url('+ item.icon +');"><div class="bntHoverTips">'+item.hoverText+'<i></i></div></div>'
$('#imgtoolWrap').append(html);
$('#imgtoolWrap').find('#'+item.btnId).on('click',function () {
for(var i = 0;i < imgViewTool.newBtns.length;i++) {
if($(this).attr('id') == imgViewTool.newBtns[i].btnId){
imgViewTool.newBtns[i].clickFn()
}
}
})
}
}
}
//下载图片
imgViewTool.downloadImg = function () {
if (imgViewTool.objectId) {
//获取云存储下载地址
YunFileUtil.downloadYunFile('', imgViewTool.objectId);
}
}
//打开编辑模式
imgViewTool.openEditMode = function () {
$('#imgtoolWrap').addClass('editMode');
$('.viewer-canvas').hide();
$('#imageEditContainer').show();
$('#imgEdit').hide();
}
//关闭编辑模式
imgViewTool.closeEditMode = function () {
$('#imgtoolWrap').removeClass('editMode');
$('.viewer-canvas').show(); //显示图片大图,避免再次查看不显示
$('#imageEditContainer').hide(); //图片编辑容器
imgViewTool.hideSubMenu();
$('#imgEdit').css('display', 'inline-block');
}
//编辑--关闭子级菜单
imgViewTool.hideSubMenu = function () {
$('.imgEditBtns .imgbtn').removeClass('active');
if (imgViewTool.imageEditor) {
imgViewTool.imageEditor.stopDrawingMode();
}
$('#editSubMenu').hide(); //子菜单--选择字体颜色粗细
$('#imgCancle,#imgApply').addClass('hide'); //裁剪取消 应用
$('#imgtoolWrap .surePop').hide(); //确定弹窗
imgViewTool.shapeType = '';
}
//编辑--打开文本模式
imgViewTool.activateTextMode = function () {
if (imgViewTool.imageEditor.getDrawingMode() !== 'TEXT') {
imgViewTool.imageEditor.stopDrawingMode();
imgViewTool.imageEditor.startDrawingMode('TEXT');
}
}
//编辑--打开图像模式
imgViewTool.activateShapeMode = function () {
if (imgViewTool.imageEditor.getDrawingMode() !== 'SHAPE') {
imgViewTool.imageEditor.stopDrawingMode();
imgViewTool.imageEditor.startDrawingMode('SHAPE');
}
}
//编辑--获取画笔设置
imgViewTool.getBrushSettings = function () {
var brushWidth = $('#editSubMenu .widthList p.active').width();
var brushColor = $('#editSubMenu .colorList p.active').css('background-color');
return {
width: brushWidth,
color: imgViewTool.hexToRGBa(brushColor, 1)
};
}
// HEX to RGBA
imgViewTool.hexToRGBa = function (hex, alpha) {
var r = parseInt(hex.slice(1, 3), 16);
var g = parseInt(hex.slice(3, 5), 16);
var b = parseInt(hex.slice(5, 7), 16);
var a = alpha || 1;
return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')';
}
imgViewTool.uploadImg = function (callback) {
//上传图片
imgViewTool.previewUrl = '';
imgViewTool.imgTitle = '';
imgViewTool.size = '';
imgViewTool.objectId = '';
// var imageName = imgViewTool.imageEditor.getImageName();
var imageName = (new Date()).getTime() + ".png";
var dataURL = imgViewTool.imageEditor.toDataURL(); //base64
if (!!(window.File && window.FileList && window.FileReader)) {
var blob = imgViewTool.base64ToBlob(dataURL);
// console.log(blob);
imgViewTool.file = imgViewTool.blobToFile(blob, imageName);
var formData = new FormData();
formData.append('file', imgViewTool.file, imageName);
formData.append("puid", imgViewTool.puid);
formData.append("_token", imgViewTool.yunToken);
var url = window.location.protocol + '//' + imgViewTool.getHost(imgViewTool.panDomain) + '/upload';
$.ajax({
type: "post",
url: url,
async: true,
cache: false,
data: formData,
dataType: "json",
processData: false, //不对参数进行转换序列号
contentType: false, //fromData上传文件时将其设置为false
success: function (res) {
if (res.result) {
imgViewTool.previewUrl = res.data.previewUrl + '?_fileSize=' + res.data.size + '&_orientation=1';
imgViewTool.imgTitle = res.data.name;
imgViewTool.size = res.data.size;
imgViewTool.objectId = res.data.objectId;
if (callback) {
callback();
}
}
}
});
}
}
//将blob转换为file
imgViewTool.blobToFile = function (theBlob, fileName) {
theBlob.lastModifiedDate = new Date();
theBlob.name = fileName;
return theBlob;
}
//base64转blob
imgViewTool.base64ToBlob = function (data) {
var mimeString = '';
var raw, uInt8Array, i, rawLength;
raw = data.replace(/data:(image\/.+);base64,/, function (header, imageType) {
mimeString = imageType;
return '';
});
raw = atob(raw);
rawLength = raw.length;
uInt8Array = new Uint8Array(rawLength); // eslint-disable-line
for (i = 0; i < rawLength; i += 1) {
uInt8Array[i] = raw.charCodeAt(i);
}
return new Blob([uInt8Array], {type: mimeString});
}
//更新左右切换按钮状态
imgViewTool.unactiveViewBtn = function () {
if (imgViewTool.imageViewer) {
$('#imgPrev').removeClass('disabled');
$('#imgNext').removeClass('disabled');
if (imgViewTool.imageViewer.index == 0) {
$('#imgPrev').addClass('disabled');
}
if (imgViewTool.imageViewer.index == (imgViewTool.imageViewer.length - 1)) {
$('#imgNext').addClass('disabled');
}
if (imgViewTool.imageViewer.length == 1) {
$('#imgpage').addClass('hide');
} else {
$('#imgpage').removeClass('hide');
}
$('#nowImgIndex').html(imgViewTool.imageViewer.index + 1);
$('#imgFit').addClass('hide');
$('#img1-1').removeClass('hide');
}
}
//查看大图显示时调用
imgViewTool.imgshown = function () {
$('#nowImgIndex').html(imgViewTool.imageViewer.index + 1);
$('#imgTotalNum').html(imgViewTool.imageViewer.length);
var img = null;
if(!imgViewTool.imageViewer.images) return;
if(imgViewTool.imageViewer.images.length > 0 && imgViewTool.imageViewer.index < imgViewTool.imageViewer.images.length){
img = imgViewTool.imageViewer.images[imgViewTool.imageViewer.index];
}
if(!img) return
if ($(img).hasClass('noSelect') || (img.getAttribute('download') && img.getAttribute('download') == 'false')) {
$('#viewDownload,#imgDownload,#imgEdit').hide();
}
imgViewTool.unactiveViewBtn();
if (img.getAttribute('src').indexOf('.gif') > -1) {
$('#imgEdit').hide();
}
}
//图片大图加载出来时调用
imgViewTool.imgviewed = function () {
$('#nowImgIndex').html(imgViewTool.imageViewer.index + 1);
$('#imgTotalNum').html(imgViewTool.imageViewer.length);
$('#imgZoomNum').html(parseInt(imgViewTool.imageViewer.imageData.ratio * 100) + '%');
if(!imgViewTool.imageViewer.images || imgViewTool.imageViewer.images.length <= imgViewTool.imageViewer.index){
return
}
var img = imgViewTool.imageViewer.images[imgViewTool.imageViewer.index];
if ($(img).hasClass('noSelect') || (img.getAttribute('download') && img.getAttribute('download') == 'false')) {
$('#viewDownload,#imgDownload,#imgEdit').hide();
$('.viewer-canvas img').addClass('noSelect').on('contextmenu', function () {
return false;
});
} else {
$('#viewDownload,#imgDownload').css('display', '');
if (imgViewTool.needEdit) {
$('#imgEdit').css('display', 'inline-block');
}
$('.viewer-canvas img').removeClass('noSelect').off('contextmenu');
}
if (img.getAttribute('src').indexOf('.gif') > -1) {
$('#imgEdit').hide();
}
}
//加载需要的js和css
imgViewTool.loadFiles = function () {
imgViewTool.loadExtentFile("//" + imgViewTool.getHost(imgViewTool.noteDomain) + '/res/plugin/viewer/css/viewer.css', "css");
if (typeof (Viewer) == 'undefined') {
imgViewTool.loadExtentFile("//" + imgViewTool.getHost(imgViewTool.noteDomain) + '/res/plugin/viewer/js/viewer.js', "js");
}
imgViewTool.loadExtentFile("//" + imgViewTool.getHost(imgViewTool.noteDomain) + '/res/plugin/viewer/css/viewer-button.css', "css");
//编辑图片需要加载的js
if (imgViewTool.needEdit) {
imgViewTool.loadEditFile()
}
imgViewTool.loadExtentFile("//" + imgViewTool.getHost(imgViewTool.noteDomain) + "/res/plugin/viewer/js/jquery.md5.js", "js");
if(typeof YunFileUtil == 'undefined'){
imgViewTool.loadExtentFile("//" + imgViewTool.getHost(imgViewTool.noteDomain) + "/res/js/common/yun.file.util.js", "js")
}
}
imgViewTool.loadEditFile = function(){
try{
imgViewTool.loadExtentFile("//" + imgViewTool.getHost(imgViewTool.noteDomain) + '/res/plugin/viewer/js/tui-image-editor-3.15.3.min.js', "js", function () {
if (typeof tui != "undefined") {
imgViewTool.initImageEditor();
} else {
imgViewTool.needEdit = false;
$('#imgtoolWrap #imgEdit').remove();
}
});
if (typeof (clipboard) == 'undefined') {
imgViewTool.loadExtentFile("//" + imgViewTool.getHost(imgViewTool.noteDomain) + '/res/plugin/ueditor/third-party/clipboard-polyfill.promise.js', "js");
}
}catch (e) {
console.log(e)
}
}
//加载外部js、css地址、回调函数
imgViewTool.loadExtentFile = function (filePath, fileType, fCallback) {
if (fileType == "js") {
var oJs = document.createElement('script');
oJs.setAttribute("type", "text/javascript");
oJs.setAttribute("src", filePath);//文件的地址 ,可为绝对及相对路径
document.getElementsByTagName("head")[0].appendChild(oJs);//绑定
if (/msie/.test(window.navigator.userAgent.toLowerCase())) {
oJs.onreadystatechange = function () {
if (this.readyState == "loaded" || this.readyState == "complete") {
if (fCallback) fCallback();
}
};
} else if (/gecko/.test(window.navigator.userAgent.toLowerCase())) {
oJs.onload = function () {
if (fCallback) fCallback();
};
} else {
if (fCallback) fCallback();
}
} else if (fileType == "css") {
var oCss = document.createElement("link");
oCss.setAttribute("rel", "stylesheet");
oCss.setAttribute("type", "text/css");
oCss.setAttribute("href", filePath);
document.getElementsByTagName("head")[0].appendChild(oCss);//绑定
}
}
/**
* 根据图片地址获取 objectId
* @param imgSrc
* @returns {string|*}
*/
imgViewTool.getObjectIdByImgSrc = function (imgSrc) {
if (!imgSrc) {
return '';
}
var objectId = '';
if (imgSrc.indexOf(".") > -1) {
objectId = imgSrc.substring(imgSrc.lastIndexOf("/") + 1, imgSrc.lastIndexOf("."));
if(imgSrc.indexOf('star4') > -1){
objectId = imgSrc.substring(imgSrc.indexOf("star4") + 6, imgSrc.lastIndexOf("/"))
}
} else {
// 部分图片可能没有后缀
objectId = imgSrc.substring(imgSrc.lastIndexOf("/") + 1);
}
return objectId;
}
/**
* 获取上传相关配置
* @param sync 是否同步调用, true 同步false 异步
*/
imgViewTool.getUploadConfig = function (sync) {
var json = {
url: window.location.protocol + "//" + imgViewTool.getHost(imgViewTool.noteDomain) + "/pc/files/getUploadConfig",
type: "get",
xhrFields: {
withCredentials: true
},
async:false,
headers: {"Content-Type": "application/x-www-form-urlencoded"},
data: {},
dataType: "json",
success: function (resultData) {
if (resultData && resultData.result == 1) {
imgViewTool.puid = resultData.msg.puid;
imgViewTool.yunToken = resultData.msg.token || '';
} else {
$('#imgEdit').remove();
}
},
error: function () {
$('#imgEdit').remove();
}
}
if (sync) {
// 同步调用
json.async = false;
}
$.ajax(json);
}
/**
* 截取域名,去掉协议 http:// 和 https://
* 例: http://noteyd.chaoxing.com -> noteyd.chaoxing.com
*/
imgViewTool.getHost = function (url) {
if (!url) {
return ''
}
if (url.indexOf('http:') == 0 || url.indexOf('https:') == 0) {
return url.substring(url.indexOf('://') + 3);
}
//增加默认不走镜像域名情况下去除 //
if (url.indexOf('//') == 0) {
return url.substring(url.indexOf('//') + 2);
}
return url;
}
// 自动轮播相关配置
imgViewTool.slideInfo = {
autoSlide: false, // 是否需要自动轮播 默认不需要
duration: 3000, // 自动轮播时间间隔
slideTimer: null, // 定时器
openSlide: function(){
if(!this.autoSlide) {
return
}
// console.log('开启轮播')
this.slideTimer = setInterval(function() {
imgViewTool.imageViewer.next(true)
}, this.duration)
},
closeSlide: function(){
if(!this.autoSlide || !this.slideTimer) {
return
}
// console.log('关闭轮播');
clearInterval(this.slideTimer)
this.slideTimer = null
},
}
var FORM_post = function(url, params,target){
if(!url || !target){
return ;
}
var form = document.createElement("form");
form.action = url;
form.method ="post";
form.target = target;
if(params){
for(var i in params){
var ele = document.createElement("textarea");
ele.name = params[i].name;
ele.value = params[i].value;
form.appendChild(ele);
}
}
document.body.appendChild(form);
form.submit();
// 移除
document.body.removeChild(form);
}