MediaWiki:Common.js:修订间差异

删除9,793字节 、​ 2023年4月9日 (星期日)
// Edit via Wikiplus
(// Edit via Wikiplus)
(// Edit via Wikiplus)
 
(未显示2个用户的27个中间版本)
"use strict";
// 该文件的大多数功能均已使用 Gadgets 进行模块化加载。
'这里的任何JavaScript将为所有用户在每次页面载入时加载';
// 另请参阅:https://mcbbs.wiki/wiki/Special:Gadgets
'使用typescript编译而成,因此代码看起来可能怪怪的';
'仓库// 原版地址:https://github.com/mcbbs-wiki/Wiki-Common-JS';
console.log(" _ _ _ _ _ \n _ __ ___ ___| |__ | |__ _____ _(_) | _(_)\n| '_ ` _ \\ / __| '_ \\| '_ \\/ __\\ \\ /\\ / / | |/ / |\n| | | | | | (__| |_) | |_) \\__ \\\\ V V /| | <| |\n|_| |_| |_|\\___|_.__/|_.__/|___(_)_/\\_/ |_|_|\\_\\_|")
(0, eval)('var commonJSLoad=true;');
console.log("Application Version: "+mw.config.get('wgMBWVER')+"\nPowered by MediaWiki "+mw.config.get('wgVersion'));
(function () {
console.log("///////////////////////////////////////////////////////\n" +
var _a;
"// \u8BB8\u53EF\u8BC1 License //\n"+
var prefix = '[MCBBSWiki]';
"// \u534F\u8BAE\uFF1ACC BY-NC-SA 4.0 //\n"+
/**页面数据接口 */
"// \u4F5C\u8005\uFF1ASalt_lovely,Litwak913,Sheep-realms,Eicy //\n"+
var mwConfigValue = window.mw.config.values;
"// \u51FA\u5904\uFF1AMCBBS Wiki - https://mcbbs.wiki //\n"+
/**用户对页面的操作 */
"// \u5FC5\u987B\u4FDD\u7559\u6B64\u8BB8\u53EF\u8BC1\uFF0C\u5E76\u4EE5\u76F8\u540C\u7684\u8BB8\u53EF\u8BC1\u5206\u53D1 //\n"+
var action = mwConfigValue.wgAction;
"// \u4E0D\u63A5\u53D7\u4EFB\u4F55\u5F62\u5F0F\u7684\u201C\u522B\u540D\u201D\u201C\u6635\u79F0\u201D\u6216\u5176\u4ED6\u65B9\u5F0F\u5C1D\u8BD5\u7ED5\u8FC7\u8BB8\u53EF\u8BC1 //\n"+
/**页面名 */
"// \u82E5\u534F\u8BAE\u51B2\u7A81\u6216\u4E0D\u63A5\u53D7\u4EE5\u4E0A\u989D\u5916\u6761\u6B3E\uFF0C\u4F60\u53EF\u4EE5\u9009\u62E9\u4E0D\u642C\u8FD0 //\n"+
var pageName = mwConfigValue.wgPageName;
"///////////////////////////////////////////////////////\n ");
/**页面内部ID */
console.log("发现了 BUG 或想提出功能建议?欢迎来 https://mcbbs.wiki/r/7J 提交。");
var pageID = mwConfigValue.wgArticleId;
/**页面名字空间的数字ID */
var nameSpace = mwConfigValue.wgNamespaceNumber;
/**是不是主页 */
var isMainPage = (_a = mwConfigValue.wgIsMainPage) !== null && _a !== void 0 ? _a : false;
/**用户名, 最好使用typeof来判断 */
var userName = mwConfigValue.wgUserName;
/**分类 */
var categories = mwConfigValue.wgCategories;
/**打印到控制台 */
var log = function () {
var a = [];
for (var _i = 0; _i < arguments.length; _i++) {
a[_i] = arguments[_i];
}
console.log.apply(console, a);
};
/**添加脚本到页面上 */
var addMyScript = [
// 加载修改用户名显示的脚本,现在不用新建账号就能改名了(其实并没有改名,只是改了显示)
'https://mcbbs.wiki/index.php?title=MediaWiki:ReplaceUsername.js&action=raw&ctype=text/javascript',
// 加载特殊日期脚本
'https://mcbbs.wiki/index.php?title=MediaWiki:NationalDays.js&action=raw&ctype=text/javascript',
// 加载幻灯片播放脚本
'https://mcbbs.wiki/index.php?title=MediaWiki:SaltAlbum.js&action=raw&ctype=text/javascript',
];
/**主要过程运行完毕后添加到页面上的脚本 */
var addMyScriptLater = [];
/**添加CSS到页面上 */
var addMyCSS = [];
// --------------------------------
// ------------ 分割线 ------------
// --------------------------------
// 主过程
function main() {
// 添加脚本和样式表
addCustomCSSes();
addCustomScripts();
/*
// 登录方能访问的名字空间
loginForViewNameSpace([3100]);
// 水印设置
if (nameSpace === 3100)
waterMark('页面废存');
*/
}
/**登录方能观看
* @param nameSpaceID 数字数组,需要登录方可访问的名字空间ID
*/
function loginForViewNameSpace(nameSpaceID) {
if (!userName) {
if (nameSpaceID.indexOf(nameSpace) !== -1) {
// document.getElementById('bodyContent')
window.location.replace('https://mcbbs.wiki/wiki/特殊:用户登录');
}
}
else {
document.body.classList.add('mcbbswiki-user-online');
}
}
/**
* 添加水印到页面上
* @param str 显示的字符
*/
function waterMark(str, p) {
var _a, _b, _c, _d;
var picW = (_a = p === null || p === void 0 ? void 0 : p.width) !== null && _a !== void 0 ? _a : 480, picH = (_b = p === null || p === void 0 ? void 0 : p.height) !== null && _b !== void 0 ? _b : 320, fsize = (_c = p === null || p === void 0 ? void 0 : p.fsize) !== null && _c !== void 0 ? _c : 40, fbold = (_d = p === null || p === void 0 ? void 0 : p.bold) !== null && _d !== void 0 ? _d : true;
// 用CSS控制
addCSS("\n/**/\n#watermark {\n position: fixed;\n top: -21vw;\n left: -21vh;\n width: calc(100vw + 42vh);\n height: calc(100vh + 42vw);\n opacity: .25;\n transform-origin: 50% 50%;\n transform: rotate(-45deg);\n pointer-events: none;\n z-index: 999;\n}\n#watermark .watermark{\n position: absolute;\n top: 0; bottom: 0; left: 0; right: 0;\n background-image: url(\"" + textToImg(str) + "\");\n}\n#watermark .watermark:first-child {\n top: -" + picH / 2 + "px;\n left: -" + picW / 2 + "px;\n}\n", 0);
var container = document.createElement('div'), m1 = document.createElement('div'), m2 = document.createElement('div');
container.id = 'watermark';
m1.className = 'watermark';
m2.className = 'watermark';
container.appendChild(m1);
container.appendChild(m2);
document.body.appendChild(container);
/**
* 生成水印图片
* @param str 输入的文字
* @returns 字符串,图片的BASE64格式
*/
function textToImg(str) {
// 构造一个绘图区域
var canvas = document.createElement('canvas');
canvas.width = picW;
canvas.height = picH;
document.body.appendChild(canvas);
// 绘图
var context = canvas.getContext('2d');
context.fillStyle = '#fff0';
context.fillRect(0, 0, picW, picH);
context.fillStyle = '#999';
context.font = (fbold ? 'bold ' : '') + fsize + 'px sans-serif';
context.textAlign = 'center';
context.textBaseline = 'middle';
context.fillText(str, picW / 2, picH / 2);
// 获取图片
var res = canvas.toDataURL('image/png');
// 清除绘图区域
document.body.removeChild(canvas);
// 返回图片
return res;
}
}
// 游客警告
/*
mw.loader.using(['oojs-ui-core', 'oojs-ui-windows']).done( function () {
if (!$('body').hasClass('mcbbswiki-user-online')) {
var dBtnOk = '我已知晓,继续阅读';
var dTitle = '';
var dMsg = '';
if (categories.indexOf('敏感内容') !== -1) {
dTitle = '敏感内容警告';
dMsg = '此条目包含敏感内容,可能不受某些人欢迎。MCBBS Wiki 收录并记录这些内容仅为描述和解释一种文化现象,而非对此类行为的认可或表达立场,也不欢迎任何人为了能够使自己被收录而破坏社区和谐环境。如果您并非特别需要,我们不建议您阅读此页面,可能会破坏您今天的美好心情。编辑者须以中立、客观、慎重为要编写内容,MCBBS Wiki 不支持编辑者贸然写入偏激内容、进行编辑战甚至破坏。';
if (categories.indexOf('论坛违规行为') !== -1) {
dTitle = '敏感内容及论坛违规行为警告';
dMsg = '此条目包含敏感内容,可能不受某些人欢迎,并且此条目内容所介绍的(部分)操作或行为本质上是不受欢迎的违规行为。MCBBS Wiki 收录并记录这些内容仅为描述和解释一种文化现象,而非对此类行为的认可或表达立场。在 MCBBS 上尝试、模仿、实施这些操作可能会导致您在 MCBBS 被处罚,包括警告甚至封禁,MCBBS Wiki 不对任何因违规行为导致您在 MCBBS 上承受的处罚负责,也不欢迎任何人为了能够使自己被收录而实施违规行为。如果您并非特别需要,我们不建议您阅读此页面,可能会破坏您今天的美好心情。编辑者须以中立、客观、慎重为要编写内容,MCBBS Wiki 不支持编辑者贸然写入偏激内容、进行编辑战甚至破坏。';
}
if (categories.indexOf('R-15') !== -1) {
if (dTitle == '敏感内容及论坛违规行为警告') {
dTitle = '敏感内容、论坛违规行为及 R-15 警告';
} else {
dTitle = '敏感内容及 R-15 警告';
}
dMsg += '此外,此条目不适合未满15周岁的读者!内容可能包含轻度的暴力、粗口、药物滥用、性暗示相关描述,阅读时有可能产生轻微不适感,请确信自己已满当地法律许可年龄且心智成熟后再来阅览。';
dBtnOk = '我已知晓且已满15周岁,继续阅读';
}
} else if (categories.indexOf('论坛违规行为') !== -1) {
dTitle = '论坛违规行为警告';
dMsg = '此条目内容所介绍的(部分)操作或行为本质上是不受欢迎的违规行为,MCBBS Wiki 收录并记录这些内容仅为描述和解释一种文化现象,而非对此类行为的认可或表达立场。在 MCBBS 上尝试、模仿、实施这些操作可能会导致您在 MCBBS 被处罚,包括警告甚至封禁,MCBBS Wiki 不对任何因违规行为导致您在 MCBBS 上承受的处罚负责,也不欢迎任何人为了能够使自己被收录而实施违规行为。';
} else if (categories.indexOf('R-15') !== -1) {
dTitle = 'R-15 警告';
dMsg = '此条目不适合未满15周岁的读者!内容可能包含轻度的暴力、粗口、药物滥用、性暗示相关描述,阅读时有可能产生轻微不适感,请确信自己已满当地法律许可年龄且心智成熟后再来阅览。';
dBtnOk = '我已满15周岁,继续阅读';
}
if (dTitle != '') {
var messageDialog = new OO.ui.MessageDialog();
var windowManager = new OO.ui.WindowManager();
$('body').append(windowManager.$element);
windowManager.addWindows([messageDialog]);
windowManager.openWindow(messageDialog, {
title: dTitle,
message: dMsg,
size: 'large',
actions: [
{
action: 'ok',
label: dBtnOk,
flags: 'primary'
}
]
});
}
}
});
*/
 
// --------------------------------
// ------------ 分割线 ------------
// --------------------------------
/**
* assert: 断言
* @param condition 为假时报错
* @param msg 报错语句,默认为“发生错误”
* */
function assert(condition, msg) {
if (!condition)
throw new Error(prefix + ': ' + (msg !== null && msg !== void 0 ? msg : '发生错误'));
}
/**自动添加自定义脚本 */
function addCustomScripts() {
for (var _i = 0, addMyScript_1 = addMyScript; _i < addMyScript_1.length; _i++) {
var s = addMyScript_1[_i];
addJS(s, 1);
}
var fn = function () {
for (var _i = 0, addMyScriptLater_1 = addMyScriptLater; _i < addMyScriptLater_1.length; _i++) {
var s = addMyScriptLater_1[_i];
addJS(s, 1);
}
};
document.readyState === 'loading' ? document.addEventListener('DOMContentLoaded', fn) : fn();
}
/**自动添加自定义CSS */
function addCustomCSSes() {
for (var _i = 0, addMyCSS_1 = addMyCSS; _i < addMyCSS_1.length; _i++) {
var s = addMyCSS_1[_i];
addCSS(s, 1);
}
}
function addCSS(str, type) {
if (type === 0) {
var sty = document.createElement('style');
sty.textContent = str;
document.head.appendChild(sty);
}
else {
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = str;
document.head.appendChild(link);
}
}
function addJS(str, type) {
var sc = document.createElement('script');
if (type === 0) {
sc.textContent = str;
}
else {
sc.src = str;
}
document.body.appendChild(sc);
}
// 执行主要代码
log(prefix + 'CommonJS加载中');
// 开始计时
console.time(prefix + 'CommonJS加载完毕');
main();
// 计时完毕
console.timeEnd(prefix + 'CommonJS加载完毕');
})();
维护员、​界面管理员、​巡查员、​监督员、​小部件编辑者
3,462

个编辑