From a0d82464194c4fc681a62287e904875e00406231 Mon Sep 17 00:00:00 2001 From: yujialong <479214531@qq.com> Date: Tue, 20 Aug 2024 10:44:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=8C=E6=96=87=E6=9C=AC=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/ueditorPlus/dialogs/video/video.js | 1573 ++++++++--------- public/static/ueditorPlus/ueditor.config.js | 14 +- src/pages/testPaper/detail/index.vue | 10 +- 3 files changed, 805 insertions(+), 792 deletions(-) diff --git a/public/static/ueditorPlus/dialogs/video/video.js b/public/static/ueditorPlus/dialogs/video/video.js index 50ce748..c30cdea 100644 --- a/public/static/ueditorPlus/dialogs/video/video.js +++ b/public/static/ueditorPlus/dialogs/video/video.js @@ -8,837 +8,836 @@ (function () { - var video = {}, - uploadVideoList = [], - isModifyUploadVideo = false, - uploadFile; - var editorOpt = {}; - - window.onload = function () { - editorOpt = editor.getOpt('videoConfig'); - $focus($G("videoUrl")); - initTabs(); - initVideo(); - initUpload(); - }; - - /* 初始化tab标签 */ - function initTabs() { - var tabs = $G('tabHeads').children; - for (var i = 0; i < tabs.length; i++) { - domUtils.on(tabs[i], "click", function (e) { - var j, bodyId, target = e.target || e.srcElement; - for (j = 0; j < tabs.length; j++) { - bodyId = tabs[j].getAttribute('data-content-id'); - if (tabs[j] == target) { - domUtils.addClass(tabs[j], 'focus'); - domUtils.addClass($G(bodyId), 'focus'); - } else { - domUtils.removeClasses(tabs[j], 'focus'); - domUtils.removeClasses($G(bodyId), 'focus'); - } - } - }); - } - if (!editorOpt.disableUpload) { - $G('tabHeads').querySelector('[data-content-id="upload"]').style.display = 'inline-block'; - } - if (!!editorOpt.selectCallback) { - $G('videoSelect').style.display = 'inline-block'; - domUtils.on($G('videoSelect'), "click", function (e) { - editorOpt.selectCallback(editor, function (info) { - if (info) { - $G('videoUrl').value = info.path; - createPreviewVideo(info.path); - } - }); - }); + var video = {}, + uploadVideoList = [], + isModifyUploadVideo = false, + uploadFile; + var editorOpt = {}; + + window.onload = function () { + editorOpt = editor.getOpt('videoConfig'); + $focus($G("videoUrl")); + initTabs(); + initVideo(); + initUpload(); + }; + + /* 初始化tab标签 */ + function initTabs () { + var tabs = $G('tabHeads').children; + for (var i = 0; i < tabs.length; i++) { + domUtils.on(tabs[i], "click", function (e) { + var j, bodyId, target = e.target || e.srcElement; + for (j = 0; j < tabs.length; j++) { + bodyId = tabs[j].getAttribute('data-content-id'); + if (tabs[j] == target) { + domUtils.addClass(tabs[j], 'focus'); + domUtils.addClass($G(bodyId), 'focus'); + } else { + domUtils.removeClasses(tabs[j], 'focus'); + domUtils.removeClasses($G(bodyId), 'focus'); + } } + }); } - - function initVideo() { - createAlignButton(["videoFloat", "upload_alignment"]); - addUrlChangeListener($G("videoUrl")); - addOkListener(); - - //编辑视频时初始化相关信息 - (function () { - var img = editor.selection.getRange().getClosedNode(), url; - if (img && img.className) { - var hasFakedClass = (img.className == "edui-faked-video"), - hasUploadClass = img.className.indexOf("edui-upload-video") != -1; - if (hasFakedClass || hasUploadClass) { - $G("videoUrl").value = url = img.getAttribute("_url"); - $G("videoWidth").value = img.width; - $G("videoHeight").value = img.height; - var align = domUtils.getComputedStyle(img, "float"), - parentAlign = domUtils.getComputedStyle(img.parentNode, "text-align"); - updateAlignButton(parentAlign === "center" ? "center" : align); - } - if (hasUploadClass) { - isModifyUploadVideo = true; - } - } - createPreviewVideo(url); - })(); + if (!editorOpt.disableUpload) { + $G('tabHeads').querySelector('[data-content-id="upload"]').style.display = 'inline-block'; } - - /** - * 监听确认和取消两个按钮事件,用户执行插入或者清空正在播放的视频实例操作 - */ - function addOkListener() { - dialog.onok = function () { - $G("preview").innerHTML = ""; - var currentTab = findFocus("tabHeads", "tabSrc"); - switch (currentTab) { - case "video": - return insertSingle(); - break; - case "videoSearch": - return insertSearch("searchList"); - break; - case "upload": - return insertUpload(); - break; - } - }; - dialog.oncancel = function () { - $G("preview").innerHTML = ""; - }; + if (!!editorOpt.selectCallback) { + $G('videoSelect').style.display = 'inline-block'; + domUtils.on($G('videoSelect'), "click", function (e) { + editorOpt.selectCallback(editor, function (info) { + if (info) { + $G('videoUrl').value = info.path; + createPreviewVideo(info.path); + } + }); + }); } - - /** - * 依据传入的align值更新按钮信息 - * @param align - */ - function updateAlignButton(align) { - var aligns = $G("videoFloat").children; - for (var i = 0, ci; ci = aligns[i++];) { - if (ci.getAttribute("name") == align) { - if (ci.className != "focus") { - ci.className = "focus"; - } - } else { - if (ci.className == "focus") { - ci.className = ""; - } - } + } + + function initVideo () { + createAlignButton(["videoFloat", "upload_alignment"]); + addUrlChangeListener($G("videoUrl")); + addOkListener(); + + //编辑视频时初始化相关信息 + (function () { + var img = editor.selection.getRange().getClosedNode(), url; + if (img && img.className) { + var hasFakedClass = (img.className == "edui-faked-video"), + hasUploadClass = img.className.indexOf("edui-upload-video") != -1; + if (hasFakedClass || hasUploadClass) { + $G("videoUrl").value = url = img.getAttribute("_url"); + $G("videoWidth").value = img.width; + $G("videoHeight").value = img.height; + var align = domUtils.getComputedStyle(img, "float"), + parentAlign = domUtils.getComputedStyle(img.parentNode, "text-align"); + updateAlignButton(parentAlign === "center" ? "center" : align); } - } - - /** - * 将单个视频信息插入编辑器中 - */ - function insertSingle() { - var width = $G("videoWidth"), - height = $G("videoHeight"), - url = $G('videoUrl').value, - align = findFocus("videoFloat", "name"); - if (!url) return false; - if (!checkNum([width, height])) return false; - editor.execCommand('insertvideo', { - url: convert_url(url), - width: width.value, - height: height.value, - align: align - }, isModifyUploadVideo ? 'upload' : null); - } - - /** - * 将元素id下的所有代表视频的图片插入编辑器中 - * @param id - */ - function insertSearch(id) { - var imgs = domUtils.getElementsByTagName($G(id), "img"), - videoObjs = []; - for (var i = 0, img; img = imgs[i++];) { - if (img.getAttribute("selected")) { - videoObjs.push({ - url: img.getAttribute("ue_video_url"), - width: 420, - height: 280, - align: "none" - }); - } + if (hasUploadClass) { + isModifyUploadVideo = true; } - editor.execCommand('insertvideo', videoObjs); - } - - /** - * 找到id下具有focus类的节点并返回该节点下的某个属性 - * @param id - * @param returnProperty - */ - function findFocus(id, returnProperty) { - var tabs = $G(id).children, - property; - for (var i = 0, ci; ci = tabs[i++];) { - if (ci.className == "focus") { - property = ci.getAttribute(returnProperty); - break; - } + } + createPreviewVideo(url); + })(); + } + + /** + * 监听确认和取消两个按钮事件,用户执行插入或者清空正在播放的视频实例操作 + */ + function addOkListener () { + dialog.onok = function () { + $G("preview").innerHTML = ""; + var currentTab = findFocus("tabHeads", "tabSrc"); + switch (currentTab) { + case "video": + return insertSingle(); + break; + case "videoSearch": + return insertSearch("searchList"); + break; + case "upload": + return insertUpload(); + break; + } + }; + dialog.oncancel = function () { + $G("preview").innerHTML = ""; + }; + } + + /** + * 依据传入的align值更新按钮信息 + * @param align + */ + function updateAlignButton (align) { + var aligns = $G("videoFloat").children; + for (var i = 0, ci; ci = aligns[i++];) { + if (ci.getAttribute("name") == align) { + if (ci.className != "focus") { + ci.className = "focus"; } - return property; - } - - function convert_url(url) { - if (!url) return ''; - url = utils.trim(url) - .replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/embed/$1') - // .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2") - // .replace(/youtu.be\/(\w+)$/i, "www.youtube.com/v/$1") - //.replace(/www\.iqiyi\.com\/v_(\w+)\.html/i, "www.youtube.com/v/$1") - // .replace(/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i, "player.ku6.com/refer/$1/v.swf") - // .replace(/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "player.56.com/v_$1.swf") - // .replace(/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "player.56.com/v_$1.swf") - // .replace(/v\.pps\.tv\/play_([\w]+)\.html.*$/i, "player.pps.tv/player/sid/$1/v.swf") - // .replace(/www\.letv\.com\/ptv\/vplay\/([\d]+)\.html.*$/i, "i7.imgs.letv.com/player/swfPlayer.swf?id=$1&autoplay=0") - // .replace(/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "www.tudou.com/v/$1") - // https://v.qq.com/x/cover/wagzbx91asjomnu/w05337nxfof.html - // https://v.qq.com/iframe/player.html?vid=w05337nxfof&tiny=0&auto=0 - .replace(/v\.qq\.com\/x\/cover\/[\w]+\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&tiny=0&auto=0") - .replace(/v\.qq\.com\/x\/page\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&tiny=0&auto=0") - .replace(/www\.bilibili\.com\/video\/([a-zA-Z0-9]+)\/?.*$/i, "player.bilibili.com/player.html?bvid=$1") - // .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/([\w]+)\.html/i, "static.video.qq.com/TPout.swf?vid=$1") - // .replace(/v\.qq\.com\/.+[\?\&]vid=([^&]+).*$/i, "static.video.qq.com/TPout.swf?vid=$1") - // .replace(/my\.tv\.sohu\.com\/[\w]+\/[\d]+\/([\d]+)\.shtml.*$/i, "share.vrs.sohu.com/my/v.swf&id=$1") - ; - return url; - } - - /** - * 检测传入的所有input框中输入的长宽是否是正数 - * @param nodes input框集合, - */ - function checkNum(nodes) { - for (var i = 0, ci; ci = nodes[i++];) { - var value = ci.value; - if (!isNumber(value) && value) { - alert(lang.numError); - ci.value = ""; - ci.focus(); - return false; - } + } else { + if (ci.className == "focus") { + ci.className = ""; } - return true; + } } - - /** - * 数字判断 - * @param value - */ - function isNumber(value) { - return /(0|^[1-9]\d*$)/.test(value); + } + + /** + * 将单个视频信息插入编辑器中 + */ + function insertSingle () { + var width = $G("videoWidth"), + height = $G("videoHeight"), + url = $G('videoUrl').value, + align = findFocus("videoFloat", "name"); + if (!url) return false; + if (!checkNum([width, height])) return false; + editor.execCommand('insertvideo', { + url: convert_url(url), + width: width.value, + height: height.value, + align: align + }, isModifyUploadVideo ? 'upload' : null); + } + + /** + * 将元素id下的所有代表视频的图片插入编辑器中 + * @param id + */ + function insertSearch (id) { + var imgs = domUtils.getElementsByTagName($G(id), "img"), + videoObjs = []; + for (var i = 0, img; img = imgs[i++];) { + if (img.getAttribute("selected")) { + videoObjs.push({ + url: img.getAttribute("ue_video_url"), + width: 420, + height: 280, + align: "none" + }); + } } - - /** - * 创建图片浮动选择按钮 - * @param ids - */ - function createAlignButton(ids) { - for (var i = 0, ci; ci = ids[i++];) { - var floatContainer = $G(ci), - nameMaps = { - "none": lang['default'], - "left": lang.floatLeft, - "right": lang.floatRight, - "center": lang.block - }; - for (var j in nameMaps) { - var div = document.createElement("div"); - div.setAttribute("name", j); - if (j == "none") div.className = "focus"; - div.style.cssText = "background:url(images/" + j + "_focus.jpg);"; - div.setAttribute("title", nameMaps[j]); - floatContainer.appendChild(div); - } - switchSelect(ci); - } + editor.execCommand('insertvideo', videoObjs); + } + + /** + * 找到id下具有focus类的节点并返回该节点下的某个属性 + * @param id + * @param returnProperty + */ + function findFocus (id, returnProperty) { + var tabs = $G(id).children, + property; + for (var i = 0, ci; ci = tabs[i++];) { + if (ci.className == "focus") { + property = ci.getAttribute(returnProperty); + break; + } } - - /** - * 选择切换 - * @param selectParentId - */ - function switchSelect(selectParentId) { - var selects = $G(selectParentId).children; - for (var i = 0, ci; ci = selects[i++];) { - domUtils.on(ci, "click", function () { - for (var j = 0, cj; cj = selects[j++];) { - cj.className = ""; - cj.removeAttribute && cj.removeAttribute("class"); - } - this.className = "focus"; - }) - } + return property; + } + + function convert_url (url) { + if (!url) return ''; + url = utils.trim(url) + .replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/embed/$1') + // .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2") + // .replace(/youtu.be\/(\w+)$/i, "www.youtube.com/v/$1") + //.replace(/www\.iqiyi\.com\/v_(\w+)\.html/i, "www.youtube.com/v/$1") + // .replace(/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i, "player.ku6.com/refer/$1/v.swf") + // .replace(/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "player.56.com/v_$1.swf") + // .replace(/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "player.56.com/v_$1.swf") + // .replace(/v\.pps\.tv\/play_([\w]+)\.html.*$/i, "player.pps.tv/player/sid/$1/v.swf") + // .replace(/www\.letv\.com\/ptv\/vplay\/([\d]+)\.html.*$/i, "i7.imgs.letv.com/player/swfPlayer.swf?id=$1&autoplay=0") + // .replace(/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "www.tudou.com/v/$1") + // https://v.qq.com/x/cover/wagzbx91asjomnu/w05337nxfof.html + // https://v.qq.com/iframe/player.html?vid=w05337nxfof&tiny=0&auto=0 + .replace(/v\.qq\.com\/x\/cover\/[\w]+\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&tiny=0&auto=0") + .replace(/v\.qq\.com\/x\/page\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&tiny=0&auto=0") + .replace(/www\.bilibili\.com\/video\/([a-zA-Z0-9]+)\/?.*$/i, "player.bilibili.com/player.html?bvid=$1") + // .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/([\w]+)\.html/i, "static.video.qq.com/TPout.swf?vid=$1") + // .replace(/v\.qq\.com\/.+[\?\&]vid=([^&]+).*$/i, "static.video.qq.com/TPout.swf?vid=$1") + // .replace(/my\.tv\.sohu\.com\/[\w]+\/[\d]+\/([\d]+)\.shtml.*$/i, "share.vrs.sohu.com/my/v.swf&id=$1") + ; + return url; + } + + /** + * 检测传入的所有input框中输入的长宽是否是正数 + * @param nodes input框集合, + */ + function checkNum (nodes) { + for (var i = 0, ci; ci = nodes[i++];) { + var value = ci.value; + if (!isNumber(value) && value) { + alert(lang.numError); + ci.value = ""; + ci.focus(); + return false; + } } - - /** - * 监听url改变事件 - * @param url - */ - function addUrlChangeListener(url) { - if (browser.ie) { - url.onpropertychange = function () { - createPreviewVideo(this.value); - } - } else { - url.addEventListener("input", function () { - createPreviewVideo(this.value); - }, false); - } - } - - /** - * 根据url生成视频预览 - * @param url - */ - function createPreviewVideo(url) { - if (!url) return; - - var conUrl = convert_url(url); - - conUrl = utils.unhtml(conUrl); - - // $G("preview").innerHTML = '
' + file.name + '
' + - '' + - '' + - '
' + file.name + '
' + + '' + + '' + + '
(