MediaWiki:Gadget-show-ip-blocks.js
Merk: Etter publisering vil det kanskje være nødvendig å slette mellomlageret i nettleseren din for å se endringene.
- Firefox / Safari: Hold Shift mens du klikker på Oppdater, eller trykk enten Ctrl+F5 eller Ctrl+R (⌘+R på Mac)
- Google Chrome: Trykk Ctrl+Shift+R (⌘+Shift+R på Mac)
- Internet Explorer / Edge: Hold Ctrl mens du trykker på Oppdater eller trykk Ctrl+F5
- Opera: Ttrykk Ctrl+F5.
//
// This is a big nasty javascript .. use with care..
//
// By [[:no:Bruker:Stigmj]] - 2008 - 2015
//
var cbDaysToCheck = 60;
var cbCache = [];
function cb_inArray(arrobj, findobj) {
if (!arrobj || !findobj) { return null; }
for (var i=0; i<arrobj.length; i++) {
if (findobj == arrobj[i]) { return i; }
}
}
// Copyright Paul Sowden
// Used by permission under AFL
// Originally from: http://delete.me.uk/2005/03/iso8601.html
Date.prototype.setISO8601 = function (string) {
var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
"(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
"(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
var d = string.match(new RegExp(regexp));
var offset = 0;
var date = new Date(d[1], 0, 1);
if (d[3]) { date.setMonth(d[3] - 1); }
if (d[5]) { date.setDate(d[5]); }
if (d[7]) { date.setHours(d[7]); }
if (d[8]) { date.setMinutes(d[8]); }
if (d[10]) { date.setSeconds(d[10]); }
if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
if (d[14]) {
offset = (Number(d[16]) * 60) + Number(d[17]);
offset *= ((d[15] == '-') ? 1 : -1);
}
offset -= date.getTimezoneOffset();
var time = (Number(date) + (offset * 60 * 1000));
this.setTime(Number(time));
};
function checkBlocks() {
$("a.mw-userlink").each(function(){
var test = $(this).attr("title");
if (!(test === undefined)) {
var named_user = test.indexOf("Bruker:");
var username = "";
if (!named_user) {
var len = test.length;
if (test.indexOf(" (siden finnes ikke)")>=0) {
len = len - 20;
}
username = test.substring(7,len);
} else {
var unnamed_user = test.indexOf("Spesial:Bidrag/");
if (!unnamed_user) {
username = test.substring(15,test.length);
}
}
// Have we seen this user before?
if (cb_inArray(cbCache, username) === undefined) {
// So, it's a new one. Let's mark it.
cbCache[cbCache.length] = username;
// And let's look it up
$.getJSON( mw.util.wikiScript( 'api' ), {
action:'query',
format:'json',
list:'logevents',
letype:'block',
maxage:'3600',
smaxage:'3600',
lelimit:'1',
rawcontinue:'1',
letitle:'User:' + username
}, function(data){
var stuff = data;
if (data === undefined) {
stuff = this;
}
if (stuff.query) {
cb_colorLogAction(stuff, username);
}
});
}
}
});
}
function cb_colorLogAction(jobj, objectname) {
$("a.mw-userlink").each(function(){
var test = $(this).attr("title");
if (!(test === undefined)) {
var named_user = test.indexOf("Bruker:");
var username = "";
if (!named_user) {
len = test.length;
if (test.indexOf(" (siden finnes ikke)")>=0) {
len = len - 20;
}
username = test.substring(7,len);
} else {
var unnamed_user = test.indexOf("Spesial:Bidrag/");
if (!unnamed_user) {
username = test.substring(15,test.length);
}
}
if (username.indexOf(objectname)==0) {
//There has been a blocking/unblocking action, so let's color accordingly to the time since the last action
if (!jobj.query.logevents[0]) { return; }
var ts = jobj.query.logevents[0].timestamp;
var date = new Date();
var tsDate = new Date();
tsDate.setISO8601(ts);
var tdiff = date - tsDate;
var interval = (cbDaysToCheck*24*60*60*100);
var intervaladd = interval;
var colorval = -1;
for (var i=0;i<10;i++) {
if (tdiff<intervaladd) {
colorval = i;
break;
} else {
intervaladd += interval;
}
}
$(this).addClass('trust'+colorval);
}
}
});
}
if ((mw.config.get( 'wgCanonicalSpecialPageName' )=='Recentchanges') || (mw.config.get( 'wgCanonicalSpecialPageName' )=='Watchlist') || (mw.config.get( 'wgAction' )=='history')) {
$(checkBlocks);
}