From SCP: Secret Laboratory Hub Wiki
mNo edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
/ | // Original author: [[pl:User:Beau]] | ||
// Modified and improved by: [[pl:User:Zabshk]] | |||
mw. | 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.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(); |
Revision as of 19:05, 8 September 2018
// 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.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();
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:05.
- Content is available under CC BY-SA 3.0 unless otherwise noted.
- Privacy policy
- About SCP: Secret Laboratory Hub Wiki
- Disclaimers