|
|
Line 1: |
Line 1: |
| // Original author: [[pl:User:Beau]] | | /* Any JavaScript here will be loaded for all users on all wikis on every page load. See <https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Extension:GlobalCssJs> */ |
| // Modified and improved by: [[pl:User:Zabshk]] | |
|
| |
|
| if ( typeof( cn$replacement ) == "undefined" ) {
| | mw.loader.load('https://hub.scpslgame.com/index.php?title=MediaWiki:colored-nicknames.js&action=raw&ctype=text/javascript'); |
| window.cn$replacement = {};
| | //mw.loader.load('https://hub.scpslgame.com/index.php?title=MediaWiki:Heading-icons.js&action=raw&ctype=text/javascript'); |
| }
| |
| | |
| if ( typeof( cn$class ) == "undefined" ) {
| |
| window.cn$class = {};
| |
| }
| |
| | |
| window.coloredNicknamesGadget = {
| |
| queries: 0,
| |
| loaded: false,
| |
| cache: {},
| |
| list: {},
| |
| version: 10,
| |
| userLink: /(User|Użytkownik)/,
| |
| contribLink: /(Special:Contributions|Specjalna:Wkład)/,
| |
| | |
| init: function() {
| |
| var that = this;
| |
| | |
| if ( mw.config.get( 'wgNamespaceNumber' ) > -1 && mw.config.get( 'wgAction' ) != 'history' && (that.findGetParameter( 'diff' ) == null || that.findGetParameter( 'oldid' ) == null ) ) {
| |
| return;
| |
| }
| |
| | |
| var request = {
| |
| action: 'query',
| |
| list: 'allusers',
| |
| augroup: 'sysop',
| |
| aulimit: 'max',
| |
| maxage: 43200,
| |
| smaxage: 600,
| |
| format: 'json'
| |
| };
| |
| this.queries++;
| |
| jQuery.getJSON( mw.util.wikiScript( 'api' ), request, function( result ) {
| |
| that.addToList( result, 'nick_admin' );
| |
| } );
| |
| | |
| var request = {
| |
| action: 'query',
| |
| list: 'globalallusers',
| |
| agugroup: 'Steward',
| |
| agulimit: 'max',
| |
| maxage: 43200,
| |
| smaxage: 600,
| |
| format: 'json'
| |
| };
| |
| this.queries++;
| |
| jQuery.getJSON( mw.util.wikiScript( 'api' ), request, function( result ) {
| |
| that.addCentralToList( result, 'nick_steward' );
| |
| } );
| |
| | |
| var request = {
| |
| action: 'query',
| |
| list: 'globalallusers',
| |
| agugroup: 'Global_Administrator',
| |
| agulimit: 'max',
| |
| maxage: 43200,
| |
| smaxage: 600,
| |
| format: 'json'
| |
| };
| |
| this.queries++;
| |
| jQuery.getJSON( mw.util.wikiScript( 'api' ), request, function( result ) {
| |
| that.addCentralToList( result, 'nick_global-sysop' );
| |
| } );
| |
| | |
| var request = {
| |
| action: 'query',
| |
| list: 'globalallusers',
| |
| agugroup: 'Wiki_Coordinator',
| |
| agulimit: 'max',
| |
| maxage: 43200,
| |
| smaxage: 600,
| |
| format: 'json'
| |
| };
| |
| this.queries++;
| |
| jQuery.getJSON( mw.util.wikiScript( 'api' ), request, function( result ) {
| |
| that.addCentralToList( result, 'nick_wiki-coordinator' );
| |
| } );
| |
| | |
| jQuery( document ).ready( function() {
| |
| that.loaded = true;
| |
| if ( that.queries == 0 ) {
| |
| that.doColor();
| |
| }
| |
| } );
| |
| },
| |
| addToList: function( data, type ) {
| |
| if ( data ) {
| |
| for ( id in data.query.allusers ) {
| |
| var nick = data.query.allusers[id].name;
| |
| if ( this.list[nick] ) {
| |
| this.list[nick].push( type );
| |
| } else {
| |
| this.list[nick] = new Array( type );
| |
| }
| |
| }
| |
| }
| |
| this.queries--;
| |
| if ( this.queries == 0 && this.loaded ) {
| |
| this.doColor();
| |
| }
| |
| },
| |
| addCentralToList: function( data, type ) {
| |
| if ( data ) {
| |
| for ( id in data.query.globalallusers) {
| |
| var nick = data.query.globalallusers[id].name;
| |
| if ( this.list[nick] ) {
| |
| this.list[nick].push( type );
| |
| } else {
| |
| this.list[nick] = new Array( type );
| |
| }
| |
| }
| |
| }
| |
| this.queries--;
| |
| if ( this.queries == 0 && this.loaded ) {
| |
| this.doColor();
| |
| }
| |
| },
| |
| isIPv4: function( nick ) {
| |
| return nick.match( /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ );
| |
| },
| |
| isIPv6: function( nick ) {
| |
| // Source: http://home.deds.nl/~aeron/regex/
| |
| return nick.match( /^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i );
| |
| },
| |
| getUserClass: function( nick ) {
| |
| if ( nick == null ) {
| |
| return [];
| |
| }
| |
| | |
| var userClass = this.cache[nick];
| |
| if ( userClass ) {
| |
| return userClass;
| |
| }
| |
| userClass = [];
| |
| | |
| var nc = cn$class[nick];
| |
| if ( nc ) {
| |
| userClass.push( nc );
| |
| }
| |
| | |
| if ( this.list[nick] ) {
| |
| userClass = userClass.concat( this.list[nick] );
| |
| }
| |
| | |
| if ( this.isIPv4( nick ) ) {
| |
| userClass.push( 'nick_ip' );
| |
| if ( this.isDynamic( nick ) ) {
| |
| userClass.push( 'nick_dynamic_ip' );
| |
| }
| |
| } else if ( this.isIPv6( nick ) ) {
| |
| userClass.push( 'nick_ip' );
| |
| }
| |
| this.cache[nick] = userClass;
| |
| | |
| return userClass;
| |
| },
| |
| findGetParameter: function ( parameterName ) {
| |
| var result = null,
| |
| tmp = [];
| |
| var items = location.search.substr(1).split("&");
| |
| for (var index = 0; index < items.length; index++) {
| |
| tmp = items[index].split("=");
| |
| if (tmp[0] === parameterName) result = decodeURIComponent(tmp[1]);
| |
| }
| |
| return result;
| |
| },
| |
| isDynamic: function( ip ) {
| |
| return false;
| |
| },
| |
| doColor: function() {
| |
| this.queries = -1;
| |
| | |
| if ( ( typeof dynamicIpsGadget ) == 'object' ) {
| |
| this.isDynamic = function( ip ) {
| |
| return dynamicIpsGadget.isDynamic( ip );
| |
| }
| |
| }
| |
| | |
| var links = document.getElementsByTagName( 'a' );
| |
| | |
| for ( var i = 0; i < links.length; i++ ) {
| |
| var link = links[i];
| |
| if ( !link.href.match( this.userLink ) && !link.href.match( this.contribLink ) ) {
| |
| continue;
| |
| }
| |
| var nick = jQuery( link ).text();
| |
| | |
| var replacement = cn$replacement[nick];
| |
| if ( replacement ) {
| |
| link.innerHTML = replacement;
| |
| }
| |
| | |
| var userClass = this.getUserClass( nick );
| |
| if ( userClass.length ) {
| |
| link.className += ' ' + userClass.join( ' ' );
| |
| }
| |
| }
| |
| | |
| this.cache = {};
| |
| }
| |
| };
| |
| | |
| coloredNicknamesGadget.init();
| |