From SCP: Secret Laboratory Hub Wiki
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
// Original author: [[pl:User:Beau]] // Modified and improved by: [[pl:User:Zabshk]] if ( typeof( cn$replacement ) == "undefined" ) { window.cn$replacement = {}; } 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.config.get("wgServer") + "/" + mw.config.get("wgScriptPath") + "api.php", 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.config.get("wgServer") + "/" + mw.config.get("wgScriptPath") + "api.php", 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.config.get("wgServer") + "/" + mw.config.get("wgScriptPath") + "api.php", 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.config.get("wgServer") + "/" + mw.config.get("wgScriptPath") + "api.php", 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();
Cookies help us deliver our services. By using our services, you agree to our use of cookies.
- This page was last edited on 8 September 2018, at 19:13.
- Content is available under CC BY-SA 3.0 unless otherwise noted.
- Privacy policy
- About SCP: Secret Laboratory Hub Wiki
- Disclaimers