|
|
| (未显示3个用户的32个中间版本) |
| 第1行: |
第1行: |
| "use strict"; | | "use strict"; |
| '这里的任何JavaScript将为所有用户在每次页面载入时加载';
| | // 该文件的大多数功能均已使用 Gadgets 进行模块化加载。 |
| '使用typescript编译而成,因此代码看起来可能怪怪的';
| | // 另请参阅:https://mcbbs.wiki/wiki/Special:Gadgets |
| '仓库地址:https://github.com/mcbbs-wiki/Wiki-Common-JS';
| | // 原版地址:https://github.com/mcbbs-wiki/Wiki-Common-JS |
| (0, eval)('var commonJSLoad=true;'); | | console.log(" _ _ _ _ _ \n _ __ ___ ___| |__ | |__ _____ _(_) | _(_)\n| '_ ` _ \\ / __| '_ \\| '_ \\/ __\\ \\ /\\ / / | |/ / |\n| | | | | | (__| |_) | |_) \\__ \\\\ V V /| | <| |\n|_| |_| |_|\\___|_.__/|_.__/|___(_)_/\\_/ |_|_|\\_\\_|") |
| (function () {
| | console.log("Application Version: "+mw.config.get('wgMBWVER')+"\nPowered by MediaWiki "+mw.config.get('wgVersion')); |
| var _a;
| | console.log("///////////////////////////////////////////////////////\n" + |
| var prefix = '[MCBBSWiki]';
| | "// \u8BB8\u53EF\u8BC1 License //\n"+ |
| /**页面数据接口 */
| | "// \u534F\u8BAE\uFF1ACC BY-NC-SA 4.0 //\n"+ |
| var mwConfigValue = window.mw.config.values;
| | "// \u4F5C\u8005\uFF1ASalt_lovely,Litwak913,Sheep-realms,Eicy //\n"+ |
| /**用户对页面的操作 */
| | "// \u51FA\u5904\uFF1AMCBBS Wiki - https://mcbbs.wiki //\n"+ |
| var action = mwConfigValue.wgAction;
| | "// \u5FC5\u987B\u4FDD\u7559\u6B64\u8BB8\u53EF\u8BC1\uFF0C\u5E76\u4EE5\u76F8\u540C\u7684\u8BB8\u53EF\u8BC1\u5206\u53D1 //\n"+ |
| /**页面名 */
| | "// \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"+ |
| var pageName = mwConfigValue.wgPageName;
| | "// \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"+ |
| /**页面内部ID */
| | "///////////////////////////////////////////////////////\n "); |
| var pageID = mwConfigValue.wgArticleId;
| | console.log("发现了 BUG 或想提出功能建议?欢迎来 https://mcbbs.wiki/r/7J 提交。"); |
| /**页面名字空间的数字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();
| |
| // 百度推送
| |
| if (action === 'view')
| |
| // 只推送查看界面,不然百度到的总是杂着源代码、历史记录界面
| |
| baiduPush();
| |
| // 登录方能访问的名字空间
| |
| loginForViewNameSpace([3100]);
| |
| // 水印设置
| |
| if (nameSpace === 3100)
| |
| waterMark('页面废存');
| |
| }
| |
| /**百度推送 */
| |
| function baiduPush() {
| |
| var bp = document.createElement('script');
| |
| var src = window.location.protocol.indexOf('https') !== -1
| |
| ? 'https://zz.bdstatic.com/linksubmit/push.js'
| |
| : 'http://push.zhanzhang.baidu.com/push.js';
| |
| bp.src = src;
| |
| bp.setAttribute('async', ''); // 最好异步加载
| |
| document.body.appendChild(bp);
| |
| }
| |
| /**登录方能观看
| |
| * @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 不支持编辑者贸然写入偏激内容、进行编辑战甚至破坏。';
| |
| }
| |
| } else if (categories.indexOf('论坛违规行为') !== -1) {
| |
| dTitle = '论坛违规行为警告';
| |
| dMsg = '此条目内容所介绍的(部分)操作或行为本质上是不受欢迎的违规行为,MCBBS Wiki 收录并记录这些内容仅为描述和解释一种文化现象,而非对此类行为的认可或表达立场。在 MCBBS 上尝试、模仿、实施这些操作可能会导致您在 MCBBS 被处罚,包括警告甚至封禁,MCBBS Wiki 不对任何因违规行为导致您在 MCBBS 上承受的处罚负责,也不欢迎任何人为了能够使自己被收录而实施违规行为。';
| |
| }
| |
| 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加载完毕');
| |
| })();
| |