MediaWiki:Common.js:修订间差异
跳到导航
跳到搜索
无编辑摘要
imported>=海豚= 无编辑摘要 |
imported>=海豚= 无编辑摘要 |
||
(未显示同一用户的3个中间版本) | |||
第19行: | 第19行: | ||
window.addEventListener("test", null, options); | window.addEventListener("test", null, options); | ||
} catch (err) { /* */ } | } catch (err) { /* */ } | ||
/* 检查是否为维护组成员 */ | |||
var wgUserGroups = mw.config.get("wgUserGroups"); | |||
var isMGPMGUser = wgUserGroups.includes("patroller") || wgUserGroups.includes("sysop"); | |||
/* 修正验证码 */ | |||
function tcc() { | |||
var tcBtn = document.getElementById("TencentCaptcha"); | |||
if (tcBtn && !tcBtn.disabled) { | |||
var originText = tcBtn.innerText; | |||
tcBtn.innerText = "正在加载验证码,请稍候……"; | |||
var wpCaptchaWord = document.getElementById("wpCaptchaWord"); | |||
var wpCaptchaId = document.getElementById("wpCaptchaId"); | |||
var c = setInterval(function () { | |||
if (typeof window.TencentCaptcha === "function") { | |||
clearInterval(c); | |||
if (!tcBtn.disabled) { | |||
new window.TencentCaptcha(document.getElementById("TencentCaptcha")); | |||
tcBtn.innerText = originText; | |||
} | |||
} | |||
}, 100); | |||
document.getElementById("wpSave").addEventListener("click", function (e) { | |||
if (!tcBtn.disabled && (!wpCaptchaWord.value || !wpCaptchaId.value)) { | |||
alert("请点击验证按钮,完成验证后再提交"); | |||
e.preventDefault(); | |||
e.stopImmediatePropagation(); | |||
e.stopPropagation(); | |||
} | |||
}, { | |||
capture: true | |||
}); | |||
} | |||
} | |||
//滚动公告 | //滚动公告 | ||
function autoScroll(obj) { | function autoScroll(obj) { | ||
第50行: | 第82行: | ||
} | } | ||
autoScroll("#scrollDiv"); | autoScroll("#scrollDiv"); | ||
/* 图片相关 */ | |||
(function () { | |||
if (["Listfiles"].includes(mw.config.get("wgCanonicalSpecialPageName"))) { | |||
location.hostname = location.hostname.replace("commons.moegirl.org.cn", "www.hmoegirl.com"); | |||
} | |||
})(); | |||
/* MediaViewer#populateStatsFromXhr 错误屏蔽 */ | /* MediaViewer#populateStatsFromXhr 错误屏蔽 */ | ||
(function() { | (function() { | ||
第106行: | 第144行: | ||
}, 137); | }, 137); | ||
} | } | ||
//修复代码编辑器$.ucFirst引用错误 | |||
$.extend({ | |||
ucFirst: function (_s) { | |||
var s = _s + ""; | |||
return s.charAt(0).toUpperCase() + s.substring(1); | |||
}, | |||
}); | |||
//子页面页顶链接 | //子页面页顶链接 | ||
function subpage_links() { | function subpage_links() { | ||
第148行: | 第193行: | ||
$(".mw-spcontent > p:nth-child(1), .mw-spcontent > p:nth-child(2), .mw-spcontent > p:nth-child(7)").hide(); | $(".mw-spcontent > p:nth-child(1), .mw-spcontent > p:nth-child(2), .mw-spcontent > p:nth-child(7)").hide(); | ||
} | } | ||
//防滥用即将删除模板 | |||
function antiAbuseListener(textarea, event) { | |||
var filters = [ | |||
"{{即将删除", | |||
"{{即將刪除", | |||
"{{挂删", | |||
"{{模板:即将删除", | |||
"{{模板:即將刪除", | |||
"{{template:即将删除", | |||
"{{template:即將刪除", | |||
"[[分类:即将删除的页面", | |||
"[[分類:即將刪除的頁面", | |||
"[[category:即将删除的页面", | |||
"[[category:即將刪除的頁面", | |||
"{{文件转移到萌娘共享", | |||
"{{文件轉移到萌娘共享", | |||
"{{模板:文件转移到萌娘共享", | |||
"{{模板:文件轉移到萌娘共享", | |||
"{{template:文件转移到萌娘共享", | |||
"{{template:文件轉移到萌娘共享", | |||
"[[分类:需要删除执行员删除的页面", | |||
"[[分類:需要刪除執行員刪除的頁面", | |||
"[[category:需要删除执行员删除的页面", | |||
"[[category:需要刪除執行員刪除的頁面", | |||
]; | |||
var text1 = textarea.value; | |||
text1 = text1.replace(/<\/?(?:nowiki|noinclude)>/g, ""); | |||
text1 = text1.replace(/<(onlyinclude|includeonly)>.*?<\/\1>/g, ""); | |||
var text2 = textarea.value; | |||
text2 = text2.replace(/<\/?(?:onlyinclude|includeonly)>/g, ""); | |||
text2 = text2.replace(/<(nowiki|noinclude)>.*?<\/\1>/g, ""); | |||
var results = []; | |||
for (var i = 0, l = filters.length; i < l; i++) { | |||
var regExp = new RegExp(filters[i].replace(/\[/g, "\\["), "i"); | |||
if (regExp.test(text1) || regExp.test(text2)) { results.push(filters[i]); } | |||
} | |||
if (results.length > 0) { | |||
var messageDialog = new OO.ui.MessageDialog(); | |||
var windowManager = new OO.ui.WindowManager(); | |||
$("body").append(windowManager.$element); | |||
windowManager.addWindows([messageDialog]); | |||
messageDialog.title.$label.html("H萌娘提醒您<br>您的编辑包含禁止内容!"); | |||
messageDialog.message.$label.html("<br>您提交的内容包含以下部分,被禁止提交:<br><br><ul>" + results.map(function (result) { | |||
return "<li>" + result + "</li>"; | |||
}).join("") + '</ul><br><br>如果您认为您的编辑无误,请在自行保存编辑内容后到<a target="_blank" rel="nofollow noreferrer noopener" class="external text" href="' + mw.config.get("wgServer") + mw.config.get("wgScriptPath") + '讨论版</a>提问。'); | |||
windowManager.openWindow(messageDialog, { | |||
actions: [{ | |||
action: "accept", | |||
label: "我知道了", | |||
flags: "primary", | |||
}], | |||
}); | |||
event.preventDefault(); | |||
event.stopImmediatePropagation(); | |||
event.stopPropagation(); | |||
return false; | |||
} | |||
} | |||
function antiAbuse(textarea, submitButton, form) { | |||
mw.loader.using(["oojs-ui"]).then(function () { | |||
if (submitButton) { | |||
submitButton.addEventListener("click", function (e) { | |||
antiAbuseListener(textarea, e); | |||
}, captureSupported ? { | |||
capture: true, | |||
} : true); | |||
} | |||
if (form) { | |||
form.addEventListener("submit", function (e) { | |||
antiAbuseListener(textarea, e); | |||
}, captureSupported ? { | |||
capture: true, | |||
} : true); | |||
} | |||
}); | |||
} | |||
//防滥用即将删除 | |||
if (!isMGPMGUser) { | |||
setInterval(function () { | |||
if ($(".Wikiplus-InterBox")[0]) { | |||
var targetBox = $(".Wikiplus-InterBox"); | |||
var textarea = $("#Wikiplus-Quickedit")[0]; | |||
var submitButton = $("#Wikiplus-Quickedit-Submit"); | |||
if (textarea && targetBox.data("isTrusted") !== true) { | |||
targetBox.data("isTrusted", true); | |||
targetBox.css("z-index", 100); | |||
antiAbuse(textarea, submitButton[0], undefined); | |||
var events = $._data(textarea, "events"); | |||
if (events && events.keydown) { | |||
events.keydown.sort(function (a, b) { | |||
return a.guid - b.guid; | |||
}); | |||
events.keydown[0].handler = function (e) { | |||
if (e.ctrlKey && e.which === 83) { | |||
if (e.shiftKey) { | |||
$("#Wikiplus-Quickedit-MinorEdit").click(); | |||
} | |||
if (antiAbuseListener(textarea, e) !== false) { | |||
submitButton.click(); | |||
e.preventDefault(); | |||
e.stopPropagation(); | |||
} | |||
} | |||
}; | |||
} | |||
} | |||
} | |||
if ($("form#editform")[0]) { | |||
var targetForm = $("form#editform"); | |||
if (targetForm.data("isTrusted") !== true) { | |||
targetForm.data("isTrusted", true); | |||
antiAbuse($("#wpTextbox1")[0], $("#wpSave")[0], targetForm[0]); | |||
} | |||
} | |||
}, 1000); | |||
} | |||
//编辑请求 | //编辑请求 | ||
function editRequest() { | function editRequest() { | ||
第222行: | 第383行: | ||
}); | }); | ||
}, 200); | }, 200); | ||
//图片地址 | |||
mw.loader.using("mediawiki.Uri").then(function () { | |||
setInterval(function () { | |||
$(document.querySelectorAll('img[src*="//img.moegirl.org/"]:not(.org-changed), img[src*="//commons.moegirl.org/"]:not(.org-changed)')).each(function (_, ele) { | |||
try { | |||
var url = new mw.Uri(ele.src); | |||
if (["img.moegirl.org", "commons.moegirl.org"].includes(url.host)) { | |||
url.host += ".cn"; | |||
ele.src = url; | |||
} | |||
ele.classList.add("org-changed"); | |||
} catch (e) { } | |||
}); | |||
}, 200); | |||
}); | |||
//修正hash跳转错误 | //修正hash跳转错误 | ||
if ($(".mw-collapsible")[0]) { | if ($(".mw-collapsible")[0]) { |