舰R百科是靠无数自愿编辑者持续地建设更新完善的。编辑非常简单,请勇于更新页面!
编辑入门 | 资助百科 | 留言讨论页 | 微博@舰R百科 | 百科编辑讨论Q群:366818861

MediaWiki:Group-sysop.js

来自舰R百科
跳转到导航 跳转到搜索

注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox/Safari:按住“Shift”的同时单击“刷新”,或按“Ctrl-F5”或“Ctrl-R”(Mac为“⌘-R”)
  • Google Chrome:按“Ctrl-Shift-R”(Mac为“⌘-Shift-R”)
  • Internet Explorer:按住“Ctrl”的同时单击“刷新”,或按“Ctrl-F5”
  • Opera:在“工具→首选项”中清除缓存

如果您已登陆但该页面出现未登录状态,请尝试在地址栏的地址最后添加代码?id=1来访问最新页面,添加代码后的本页地址如下: https://www.zjsnrwiki.com/wiki/MediaWiki:Group-sysop.js?id=1

公共代码页
  1. 全局CSS
  2. 全局JS
  3. 移动端CSS
  4. 移动端JS
  5. 管理员CSS
  6. 管理员JS
/* 这里的任何JavaScript将只为管理员加载 */
/* global mediaWiki */
//<pre> mw傻逼,不写<pre/>三个以上波浪号全都要替换,傻得要死
(function(mw) {
    if (!String.prototype.includes) String.prototype.includes = function includes(search, start) {
        'use strict';
        if (typeof start !== 'number') start = 0;
        if (start + search.length > this.length) return false;
        return this.indexOf(search, start) !== -1;
    };
    mw.loader.implement('AnnToolsSendWelcomeMessage', function() {
        var message = '{{Template:欢迎}} ——~~~~{{clear}}',
            errorFun = function errorFun(textStatus, self) {
                $('#welcomeAsk').empty().append('<span id="welcomeAskFinished">通信失败,请刷新或重试【' + textStatus + '】……</span>');
                unbindFun();
                self.addClass('unsend');
                return false;
            },
            unbindFun = function unbindFun() {
                if ($('#welcomeClear').length > 0) $('#welcomeClear').remove();
                $('#welcomeAsk').append('<span id="welcomeClear">返回</span>');
                $('#welcomeClear').on('click.welcome', function() {
                    $('#welcomeAsk').remove();
                });
            };
        if (mw.config.get('wgNamespaceIds').user_talk == mw.config.get('wgNamespaceNumber') && !mw.config.get('wgPageName').includes('/') && mw.config.get('wgEditMessage') == 'creating' && $('#wpTextbox1')[0] && !$('#wpTextbox1').val()) $('#wpTextbox1').val(message);

        function check(that, onClick) {
            if (!$(that).is('#mw-content-text a.new')) return;
            if (!/(?=title\=用户讨论\:)[^\&]+/i.test(decodeURI(that.href))) return;
            try {
                var self = $(that),
                    href = decodeURI(self.attr('href')),
                    userName = href.match(/(?=用户讨论\:)[^\&]+/i)[0].replace(/用户讨论\:/i, '');
            } catch (e) {
                return;
            }
            if (href.includes('用户讨论') && href.includes('redlink=1') && href.includes('action=edit') && !userName.includes('/')) {
                self.addClass('sendWelcomeMessageLink unsend nopopus').on('click.sendWelcomeMessage', function() {
                    if ($('#welcomeAskFinished')[0]) $('#welcomeClear').click();
                    if ($('#welcomeAsk')[0]) {
                        self.after('<span class="welcomeAsk">一次只能发送一份欢迎辞哦,不要太贪心了~<span id="welcomeClear2">返回</span></span>');
                        $('#welcomeClear2').on('click.welcome', function() {
                            $(this).parent().remove();
                        });
                        return false;
                    }
                    if (/[&\/]+/.test(userName)) {
                        window.open(href, '_blank');
                        return errorFun('地址解析出错!\n原地址:' + href + ',解析用户讨论页标题结果:User talk:' + userName);
                    }
                    self.removeClass('unsend').after('<span id="welcomeAsk">你想直接发送欢迎辞还是访问该未创建页面?<span id="welcomeYes">发送欢迎辞</span> · <span id="welcomeNo">访问该页面</span> · <span id="welcomeClear">返回</span></span>');
                    $('#welcomeNo').on('click.welcome', function() {
                        window.open(href, '_blank');
                    });
                    $('#welcomeClear').on('click.welcome', function() {
                        $('#welcomeAsk').remove();
                    });
                    $('#welcomeYes').on('click.welcome', function() {
                        var api = new mw.Api();
                        $('#welcomeAsk').empty().append('正在通信中……');
                        api.postWithToken('csrf', {
                            'action': 'edit',
                            'format': 'json',
                            'title': '用户讨论:' + userName,
                            'summary': 'Welcome to ZJSNR Wiki',
                            'text': message
                        }).then(function(data) {
                            $('#welcomeAsk').empty().append('<span id="welcomeAskFinished">通信成功!继续努力哦~</span>');
                            console.debug('和萌百服务器通信成功,编辑成功! \n' + (data.error != 'internal_api_error_Exception' ? ('编辑详情:' + JSON.stringify(data).replace(/[{}\"]/g, '').replace(/\:\,/, ',')) : '萌百服务器返回"internal_api_error_Exception",你们都懂的_(:3 」∠ )_ ') + '。');
                            unbindFun();
                            $('#mw-content-text a.new[href="' + encodeURI(href) + '"]').removeClass('new sendWelcomeMessageLink unsend').attr('href', '/User_talk:' + userName).unbind('click.sendWelcomeMessage'); //js<a>对象的href是绝对url……
                        }, function(textStatus, status) {
                            if (textStatus === 'internal_api_error_Exception') {
                                $('#welcomeAsk').empty().append('<span id="welcomeAskFinished">通信成功!继续努力哦~</span>');
                                console.debug('和萌百服务器通信成功,编辑成功! \n萌百服务器返回"internal_api_error_Exception",你们都懂的_(:3 」∠ )_ 。');
                                unbindFun();
                                $('#mw-content-text a.new[href="' + encodeURI(href) + '"]').removeClass('new sendWelcomeMessageLink unsend').attr('href', '/User_talk:' + userName).unbind('click.sendWelcomeMessage'); //js<a>对象的href是绝对url……
                            } else if ($.isPlainObject(status)) {
                                $('#welcomeAsk').empty().append('<span id="welcomeAskFinished">正在通信中(2/2)……失败!请重试!</span>');
                                errorFun('和萌百服务器通信成功,但编辑失败!\n编辑详情:' + JSON.stringify(status).replace(/[{}\"]/g, '').replace(/\:\,/g, ','));
                                unbindFun();
                                self.addClass('unsend');
                            } else errorFun(textStatus, self);
                        });
                    });
                    return false;
                });
                if (onClick) self.click();
                return false;
            }
        }
        $(document.body).on('click', function(event) {
            check(event.target, true);
        });
        $('#mw-content-text a.new').each(function() {
            check(this);
        });
        $("<style id='sendWelcomeMessage'>#welcomeAsk,.welcomeAsk{border:#bbeeff 1px solid;margin:0 3px 0 7px} #welcomeYes,#welcomeNo,#welcomeClear,#welcomeClear2{cursor:pointer;color:purple}.sendWelcomeMessageLink.unsend:after{content:'S';color:purple;line-height:1;vertical-align:super;font-size:smaller}.sendWelcomeMessageLink{text-decoration:none!important}</style>").appendTo("head");
    });
})(mediaWiki);
//</pre>