User:SunAfterRain/js/patrolmarks.js

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
(function() {
	var pagename = mw.config.get('wgPageName');
    var autotest = Morebits.userIsInGroup( "autoconfirmed" ) || Morebits.userIsInGroup( "confirmed" );
    if (Morebits.userIsInGroup( "autoconfirmed" ) == 'false'||Morebits.userIsInGroup( "confirmed" ) == 'false'){
        if (pagename == 'Special:最新页面'){
        	alert(wgULS("抱歉,只有自动确认用户方可显示新页面巡查标记","抱歉,只有自動確認用戶方可顯示新頁面巡查標記"));
        }
    }else{
    		mw.loader.using(['mediawiki.api']).done(function() {

		let api = new mw.Api();
		let is_autoreviewer = {};

		let users = [];
		$('#mw-content-text>ul>li').each((i, e) => {
			let creator = $(e).find('a.mw-userlink').text();
			if (!mw.util.isIPAddress(creator)) {
				users.push(creator);
			} else {
				is_autoreviewer[creator] = false;
			}
		});
		api.get({
			'action': 'query',
			'format': 'json',
			'list': 'users',
			'usprop': 'rights',
			'ususers': users.join('|')
		}).then(data => {
			data.query.users.forEach(user => {
				is_autoreviewer[user.name] = (user.rights.indexOf('autopatrol') !== -1);
			});
		}).then(() => {
			$('#mw-content-text>ul>li').each((i, e) => {
				let pagename = $(e).find('>a:nth-child(2)').text();
				let oldpagename = $(e).find('.mw-newpages-oldtitle').text();
				if (oldpagename) {
					pagename = oldpagename.replace(/最初建立的名稱為 "(.+?)"/, '$1').replace(/最初创建为“(.+?)”/, '$1');
				}
				let creator = $(e).find('a.mw-userlink').text();
				let oldid = mw.util.getParamValue('oldid', $(e).find('>a:first()').attr('href'));
				api.get({
					'action': 'query',
					'format': 'json',
					'list': 'logevents',
					'letype': 'patrol',
					'letitle': pagename
				}).then(data => {
					if (data.query.logevents.length == 0) {
						if (!is_autoreviewer[creator]) {
							e.classList.add('not-patrolled');
						}
					} else {
						if (data.query.logevents[0].params.curid != oldid) {
							e.classList.add('not-patrolled');
						}
					}
				});
			});
		})

	});
    }
    
})();