MediaWiki:Group-sysop.js
注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
- 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
|
/* 这里的任何JavaScript将只为管理员加载 */
/* global mediaWiki */
//<pre> mw傻逼,不写<pre/>三个以上波浪号全都要替换,傻得要死
(function () {
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;
};
function sendWelcomeMessage() {
var message = '{{Template:欢迎}} ——~~~~{{clear}}',
errorFun = function errorFun(eM) {
if (window.console) console.error(eM + "。\n你如果想要帮助我们解决这个问题,请将这条报错信息发送至: annangela@moegirl.org.");
return false;
},
unbindFun = function unbindFun() {
if ($('#welcomeClear').length > 0) $('#welcomeClear').remove();
$('#welcomeAsk').append('<span id="welcomeClear">返回</span>');
$('#welcomeClear').bind('click.welcome', function () {
$('#welcomeAsk').remove();
});
},
list = $();
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);
$('#mw-content-text a.new').each(function () {
var self = $(this),
href = self.attr('href'),
userName = decodeURI(href.substring(href.indexOf('User_talk') === -1 ? href.indexOf('%E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA:') : href.indexOf('User_talk'), href.indexOf('&action=edit')));
if ((href.includes('User_talk') || href.includes('用户讨论:')) && href.includes('redlink=1') && href.includes('action=edit') && !userName.includes('/')) list.push(self.addClass('sendWelcomeMessageLink unsend').bind('click.sendWelcomeMessage', function () {
if ($('#welcomeAskFinished')[0]) $('#welcomeClear').click();
if ($('#welcomeAsk')[0]) {
self.after('<span class="welcomeAsk">一次只能发送一份欢迎辞哦,不要太贪心了~<span id="welcomeClear2">返回</span></span>');
$('#welcomeClear2').bind('click.welcome', function () {
$(this).parent().remove();
});
return false;
}
if (/[&\/]+/.test(userName)) {
window.open(href, '_blank');
return errorFun('地址解析出错!\n原地址:' + href + ',解析用户讨论页标题结果:' + userName);
}
self.removeClass('unsend').after('<span id="welcomeAsk">你想直接发送欢迎辞还是访问该未创建页面?<span id="welcomeYes">发送欢迎辞</span> · <span id="welcomeNo">访问该页面</span> · <span id="welcomeClear">返回</span></span>');
$('#welcomeNo').bind('click.welcome', function () {
window.open(href, '_blank');
});
$('#welcomeClear').bind('click.welcome', function () {
$('#welcomeAsk').remove();
});
$('#welcomeYes').bind('click.welcome', function () {
$.ajax({
beforeSend: function () {
$('#welcomeAsk').empty().append('正在通信中(0/2)……');
},
error: function (eO, eM, eC) {
eC ? eC += '.' + eM : eC = eM;
errorFun('和服务器通信失败,无法获取编辑token!\n错误信息:' + eC);
$('#welcomeAsk').empty().append('<span id="welcomeAskFinished">通信失败,请刷新或重试……</span>');
unbindFun();
self.addClass('unsend');
},
type: 'GET',
url: 'http://www.zjsnrwiki.com/MediaWiki/Api.php?action=query&meta=tokens&format=json',
success: function (data) {
$.ajax({
type: "POST",
url: "http://www.zjsnrwiki.com/MediaWiki/Api.php",
data: {
'action': 'edit',
'format': 'json',
'title': userName,
'token': data.query.tokens.csrftoken,
'summary': 'Welcome to ZjsnrWiki',
'text': message,
'tags': 'Welcome to ZjsnrWiki'
},
beforeSend: function () {
$('#welcomeAsk').empty().append('正在通信中(1/2)……');
},
error: function (eO, eM, eC) {
eC ? eC = eM + '.' + eC : eC = eM;
errorFun('和服务器通信失败,无法完成编辑!\n错误信息:' + eC);
$('#welcomeAsk').empty().append('<span id="welcomeAskFinished">通信失败,请刷新或重试……</span>');
unbindFun();
self.addClass('unsend');
},
success: function (data) {
if (!('error' in data) || data.error == 'internal_api_error_Exception') {
$('#welcomeAsk').empty().append('<span id="welcomeAskFinished">正在通信中(2/2)……成功!继续努力哦~</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="' + href + '"]').removeClass('new sendWelcomeMessageLink unsend').attr('href', '/wiki/' + userName).unbind('click.sendWelcomeMessage'); //js<a>对象的href是绝对url……
} else {
$('#welcomeAsk').empty().append('<span id="welcomeAskFinished">正在通信中(2/2)……失败!请重试!</span>');
errorFun('和服务器通信成功,但编辑失败!\n编辑详情:' + JSON.stringify(data).replace(/[{}\"]/g, '').replace(/\:\,/, ','));
unbindFun();
self.addClass('unsend');
}
}
});
}
});
});
return false;
})[0]);
});
list.addClass('nopopus');
}
$(function () {
sendWelcomeMessage();
});
})();
//</pre>