User:暁月凛奈/test.js

这是User:暁月凛奈/test.js当前版本,由编辑于。这个网址是本页该版本的固定链接。

(差异) ←上一修订 | 最后版本 (差异) | 下一修订→ (差异)

参阅Help:绕过浏览器缓存以获取更多帮助。

//<syntaxhighlight lang="javascript">//MarkRights.js//[[:meta:User:暁月凛奈/MarkRightsGlobal]]$( function () {mw.loader.load( "/w/index.php?title=User:暁月凛奈/test.css&action=raw&ctype=text/css", "text/css" );var rightsMap = new mw.Map();var gRightsMap = new mw.Map();window.rightsMap = rightsMap;var $users;var users;var queue1 = [];var queue2 = [];var i = 0, n = 0;var gi = 0;var api = new mw.Api();var processGlobal = null;function getUsername( href ) {var url = new URL( href, window.location.href );var username = url.searchParams.has( "title" ) ? url.searchParams.get( "title" ) : null;if ( username !== null ) {return url.searchParams.get( "title" ).replace( "User:", "" ).replace( /_/g, " " );}username = url.pathname.match(/\/wiki\/User:(.+?)$/);if ( username ) {return decodeURIComponent( username[ 1 ].replace( /_/g, " " ) );}return null;}function done() {$users.each( function ( _i, el ) {var username = getUsername( $( el ).attr( "href" ) );if ( username ) {// eslint-disable-next-line no-jquery/no-each-util$.each( rightsMap.get( username ) || [], function ( _gi, group ) {$( el ).append( "<sup class=\"markrights markrights-" + group + "\"></sup>" );} );}} );}function gDone() {$users.each( function ( _i, el ) {var username = getUsername( $( el ).attr( "href" ) );if ( username ) {// eslint-disable-next-line no-jquery/no-each-util$.each( gRightsMap.get( username ) || [], function ( _gi, group ) {$( el ).append( "<sup class=\"markrights markrights-global markrights-" + group + "\"></sup>" );} );}} );}function process( data ) {var user;if ( data.query && data.query.users ) {user = data.query.users;} else {user = [];}for ( var j = 0; j < user.length; j++ ) {var u = user[ j ];if ( u.groups ) {u.groups = u.groups.filter( function ( group ) {return [ "*", "user", "steward" /* 意外? */ ].indexOf( group ) === -1;} );rightsMap.set( u.name, u.groups );}}n--;if ( n <= 0 ) {done();}}function gProcess( data ) {var user;if ( data.query && data.query.globaluserinfo ) {user = data.query.globaluserinfo;gRightsMap.set( user.name, user.groups || [] );}gi--;if ( gi <= 0 ) {gDone();}}function markUG() {// eslint-disable-next-line no-jquery/no-global-selector$users = $( "a.mw-userlink:not(.mw-anonuserlink)" );users = {};$users.each( function ( index, link ) {users[ link.textContent ] = true;} );queue1 = [];queue2 = [];i = 0;n = 0;for ( var user in users ) {if ( rightsMap.exists( user ) ) {delete users[ user ];continue;}queue1.push( user );gi++;i++;if ( i === 50 ) {queue2.push( queue1 );queue1 = [];n++;i = 0;}}if ( queue1.length > 0 ) {queue2.push( queue1 );n++;}if ( queue2.length ) {for ( var j = 0; j < queue2.length; j++ ) {api.get( {format: "json",action: "query",list: "users",usprop: "groups",ususers: queue2[ j ].join( "|" )} ).done( process );}} else {done();}if ( processGlobal === null ) {api.get( {format: "json",action: "query",meta: "globaluserinfo"} ).done( function ( data ) {if ( data.query && data.query.globaluserinfo ) {processGlobal = true;window.globalRightsMap = gRightsMap;gi++;gProcess( data );if ( gi ) {for ( var gu in users ) {if ( gu === mw.config.get( "wgUserName" ) ) {gi--;continue;} else {api.get( {format: "json",action: "query",meta: "globaluserinfo",guiuser: gu,guiprop: "groups"} ).done( gProcess );}}}} else {processGlobal = false;}} );} else if ( processGlobal ) {if ( !gi ) {gDone();return;}for ( var gu in users ) {if ( gu === mw.config.get( "wgUserName" ) ) {gi--;continue;} else {api.get( {format: "json",action: "query",meta: "globaluserinfo",guiuser: gu,guiprop: "groups"} ).done( gProcess );}}}};if ( mw.config.get( "wgDiffNewId" ) || mw.config.get( "wgDiffOldId" ) ) {// 啟用「互動式瀏覽歷史」,切換差異時重新標記mw.hook( "wikipage.diff" ).add( function () { // Reload alongside the revision slidermarkUG();} );} else if ( [ "Recentchanges", "Recentchangeslinked", "Watchlist" ].indexOf( mw.config.get( "wgCanonicalSpecialPageName" ) ) !== -1 ) {// 近期/相關變更更新時重新標記mw.hook( "wikipage.content" ).add( function ( element ) {if ( element.hasClass( "mw-changeslist" ) ) {markUG();}} );markUG();} else {markUG();}} );//</syntaxhighlight>