User:Zabshk/common.js: Difference between revisions

From TestWiki
Content added Content deleted
(Undid revision 3687 by Zabshk (talk))
(New script testing)
Line 1:
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Zabshk/heading-icons.js&action=raw&ctype=text/javascript');
 
// Original authorversion: [[pl:User:Beau]]
// Modified- andQuickEditCounter improvedscript by: [[:pl:User:ZabshkChP94]] (I added colorizing global groups)
// - 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() {
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;
}
 
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 = {
action: 'query',
list: 'allusersusers',
augroupusprop: 'boteditcount|gender',
aulimitformat: 'maxjson',
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.getJSON( document )mw.readyutil.wikiScript( 'api' ), request, function(result) {
jQuery(document).ready(function() {
that.loaded = true;
if ( that.queries == 0 result) {
that.doColorshowResults(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();
}
},
addCentralToListshowResults: function( data, type ) {
ifdata (= 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 ( this.list[nick]!firstHeading ) {
firstHeading = document.getElementById("section-0");
userClass = userClass.concat( this.list[nick] );
}
 
if ( this.isIPv4( nick )!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 = {};
}
};
 
coloredNicknamesGadgetqecGadget.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();