User:Zabshk/common.js: Difference between revisions
Content added Content deleted
(New script testing) |
|||
Line 1: | Line 1: | ||
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Zabshk/heading-icons.js&action=raw&ctype=text/javascript'); |
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Zabshk/heading-icons.js&action=raw&ctype=text/javascript'); |
||
// Original |
// Original version: |
||
// |
// - QuickEditCounter script by [[:pl:User:ChP94]] |
||
// - Released under the [http://www.gnu.org/licenses/gpl.txt GNU Public License (GPL)] |
|||
// Modified by [[:pl:User:Beau]] |
|||
window.qecGadget = { |
|||
if ( typeof( cn$replacement ) == "undefined" ) { |
|||
version: 9, |
|||
window.cn$replacement = {}; |
|||
} |
|||
if ( typeof( cn$class ) == "undefined" ) { |
|||
window.cn$class = {}; |
|||
} |
|||
window.coloredNicknamesGadget = { |
|||
queries: 0, |
|||
loaded: false, |
|||
cache: {}, |
|||
list: {}, |
|||
version: 10, |
|||
userLink: /(User)/, |
|||
contribLink: /Special:Contributions/, |
|||
init: function() { |
init: function() { |
||
if ( mw.config.get( 'wgNamespaceNumber' ) != 2 && mw.config.get( 'wgNamespaceNumber' ) != 3 ) { |
|||
var that = this; |
|||
return; |
|||
} |
|||
if ( mw.util.getParamValue('printable') == 'yes' ) { |
|||
if ( mw.config.get( 'wgNamespaceNumber' ) > -1 && mw.config.get( 'wgAction' ) != 'history' && that.findGetParameter( 'diff' ) != '' ) { |
|||
return; |
return; |
||
} |
} |
||
this.username = mw.config.get( 'wgTitle' ).replace(/\/.*$/, ''); |
|||
var request = { |
|||
action: 'query', |
|||
var that = this; |
|||
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 = { |
var request = { |
||
action: |
action: 'query', |
||
list: |
list: 'users', |
||
usprop: 'editcount|gender', |
|||
format: 'json', |
|||
ususers: this.username, |
|||
maxage: 43200, |
|||
requestid: new Date().getTime() |
|||
smaxage: 600, |
|||
format: 'json' |
|||
}; |
}; |
||
this.queries++; |
|||
jQuery.getJSON( mw.util.wikiScript( 'api' ), request, function( result ) { |
|||
that.addToList( result, 'nick_bot' ); |
|||
} ); |
|||
jQuery( |
jQuery.getJSON( mw.util.wikiScript( 'api' ), request, function(result) { |
||
jQuery(document).ready(function() { |
|||
that.loaded = true; |
|||
if ( |
if (result) { |
||
that. |
that.showResults(result); |
||
} |
|||
} ); |
|||
}, |
|||
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(); |
|||
} |
|||
}, |
}, |
||
showResults: function(data) { |
|||
data = data.query.users[0]; |
|||
if (!data || data.name != this.username || data.invalid != null || data.editcount === undefined) |
|||
for ( id in data.query.globalallusers) { |
|||
return; |
|||
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 firstHeading; |
|||
var userClass = this.cache[nick]; |
|||
var headers = document.getElementsByTagName( 'h1' ); |
|||
if ( userClass ) { |
|||
return userClass; |
|||
} |
|||
userClass = []; |
|||
for ( var i = 0; i < headers.length; i++ ) { |
|||
var nc = cn$class[nick]; |
|||
var header = headers[i]; |
|||
if ( nc ) { |
|||
if(header.className == "firstHeading" || header.id == "firstHeading" || header.className == "pagetitle") { |
|||
userClass.push( nc ); |
|||
firstHeading = header; break; |
|||
} |
|||
} |
} |
||
if |
if( !firstHeading ) { |
||
firstHeading = document.getElementById("section-0"); |
|||
userClass = userClass.concat( this.list[nick] ); |
|||
} |
} |
||
if |
if( !firstHeading ) { |
||
return; |
|||
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; |
|||
var html = data.gender == "female" ? 'Ta użytkowniczka wykonała' : 'Ten użytkownik wykonał'; |
|||
return userClass; |
|||
var lang = 'pl'; |
|||
}, |
|||
var wiki = 'wikipedia'; |
|||
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; |
|||
var m; |
|||
if ( ( typeof dynamicIpsGadget ) == 'object' ) { |
|||
if (m = mw.config.get( 'wgServer' ).match(/^(?:http:)?\/\/(.+?).([^.]+).org$/)) { |
|||
this.isDynamic = function( ip ) { |
|||
lang = m[1]; |
|||
return dynamicIpsGadget.isDynamic( ip ); |
|||
wiki = m[2]; |
|||
} |
|||
} |
|||
else if (m = mw.config.get( 'wgScriptPath' ).match(/\/(.+?)\/(.+?)\//)) { |
|||
lang = m[2]; |
|||
wiki = m[1]; |
|||
} |
} |
||
html += ' łącznie <a href="//tools.wmflabs.org/xtools-ec/index.php?name=' + encodeURIComponent(this.username) + '&wiki=' + encodeURIComponent(wiki) + '&lang=' + encodeURIComponent(lang) + '">' + data.editcount + '</a> edycji.'; |
|||
var links = document.getElementsByTagName( 'a' ); |
|||
var div = document.createElement("div"); |
|||
for ( var i = 0; i < links.length; i++ ) { |
|||
div.style.cssText = "font-size:0.5em;line-height:1em"; |
|||
var link = links[i]; |
|||
div.className = 'plainlinks'; |
|||
if ( !link.href.match( this.userLink ) && !link.href.match( this.contribLink ) ) { |
|||
div.innerHTML = html; |
|||
continue; |
|||
} |
|||
var nick = jQuery( link ).text(); |
|||
if ( mw.config.get( 'skin' ) == 'modern' ) { |
|||
var replacement = cn$replacement[nick]; |
|||
div.style.marginLeft = "10px"; |
|||
if ( replacement ) { |
|||
div.style.display = "inline-block"; |
|||
link.innerHTML = replacement; |
|||
} |
|||
var userClass = this.getUserClass( nick ); |
|||
if ( userClass.length ) { |
|||
link.className += ' ' + userClass.join( ' ' ); |
|||
} |
|||
} |
} |
||
firstHeading.appendChild(div); |
|||
this.cache = {}; |
|||
} |
} |
||
}; |
}; |
||
qecGadget.init(); |
Revision as of 13:33, 15 April 2017
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Zabshk/heading-icons.js&action=raw&ctype=text/javascript');
// Original version:
// - QuickEditCounter script by [[:pl:User:ChP94]]
// - Released under the [http://www.gnu.org/licenses/gpl.txt GNU Public License (GPL)]
// Modified by [[:pl:User:Beau]]
window.qecGadget = {
version: 9,
init: function() {
if ( mw.config.get( 'wgNamespaceNumber' ) != 2 && mw.config.get( 'wgNamespaceNumber' ) != 3 ) {
return;
}
if ( mw.util.getParamValue('printable') == 'yes' ) {
return;
}
this.username = mw.config.get( 'wgTitle' ).replace(/\/.*$/, '');
var that = this;
var request = {
action: 'query',
list: 'users',
usprop: 'editcount|gender',
format: 'json',
ususers: this.username,
requestid: new Date().getTime()
};
jQuery.getJSON( mw.util.wikiScript( 'api' ), request, function(result) {
jQuery(document).ready(function() {
if (result) {
that.showResults(result);
}
});
});
},
showResults: function(data) {
data = data.query.users[0];
if (!data || data.name != this.username || data.invalid != null || data.editcount === undefined)
return;
var firstHeading;
var headers = document.getElementsByTagName( 'h1' );
for ( var i = 0; i < headers.length; i++ ) {
var header = headers[i];
if(header.className == "firstHeading" || header.id == "firstHeading" || header.className == "pagetitle") {
firstHeading = header; break;
}
}
if( !firstHeading ) {
firstHeading = document.getElementById("section-0");
}
if( !firstHeading ) {
return;
}
var html = data.gender == "female" ? 'Ta użytkowniczka wykonała' : 'Ten użytkownik wykonał';
var lang = 'pl';
var wiki = 'wikipedia';
var m;
if (m = mw.config.get( 'wgServer' ).match(/^(?:http:)?\/\/(.+?).([^.]+).org$/)) {
lang = m[1];
wiki = m[2];
}
else if (m = mw.config.get( 'wgScriptPath' ).match(/\/(.+?)\/(.+?)\//)) {
lang = m[2];
wiki = m[1];
}
html += ' łącznie <a href="//tools.wmflabs.org/xtools-ec/index.php?name=' + encodeURIComponent(this.username) + '&wiki=' + encodeURIComponent(wiki) + '&lang=' + encodeURIComponent(lang) + '">' + data.editcount + '</a> edycji.';
var div = document.createElement("div");
div.style.cssText = "font-size:0.5em;line-height:1em";
div.className = 'plainlinks';
div.innerHTML = html;
if ( mw.config.get( 'skin' ) == 'modern' ) {
div.style.marginLeft = "10px";
div.style.display = "inline-block";
}
firstHeading.appendChild(div);
}
};
qecGadget.init();