User:Bellezzasolo/Scripts/adminhighlighter.js

//

/**

* User highlighter 2.0

* ---------------------

* A jQuery/mediawiki-heavy rewrite of User:Amalthea/userhighlighter.js

*

* This script highlights links to admins' userpages or talkpages in bodyContent

* (that is, everything but the tabs, personal links at the top of the screen and sidebar)

* by giving them a cyan background.

*

* See User:Theopolisme/Scripts/adminhighlighter for more details.

*

* @author theopolisme

* @author Bellezzasolo

*/

(function($, mw){

;mw.hook('wikipage.content').add(function(){

var ecdata, pcdata, mvdata, tpdata, addata;

$.when(

$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:Bellezzasolo Bot/userhighlighter.js/excon.js', function(data){

ecdata = data;

}),

$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:Bellezzasolo Bot/userhighlighter.js/pcusr.js', function(data){

pcdata = data;

}),

$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:Bellezzasolo Bot/userhighlighter.js/pgmvr.js', function(data){

mvdata = data;

}),

$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:Bellezzasolo Bot/userhighlighter.js/temop.js', function(data){

tpdata = data;

}),

$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:AmoryBot/crathighlighter.js/sysop.json', function(data){

addata = data;

}),

$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:Bellezzasolo Bot/userhighlighter.js/ptusr.js', function(data){

ptdata = data;

})

).then(function() {

ADMINHIGHLIGHT_EXTLINKS = window.ADMINHIGHLIGHT_EXTLINKS || false;

ADMINHIGHLIGHT_NAMESPACES = [-1,2,3];

mw.loader.using(['mediawiki.util','mediawiki.Uri', 'mediawiki.Title'], function() {

mw.util.addCSS(".userhighlighter_sysop.userhighlighter_sysop {background-color: #ffee88 !important}");

mw.util.addCSS(".userhighlighter_temop.userhighlighter_temop {background-color: #ffcccc !important}");

mw.util.addCSS(".userhighlighter_pgmvr.userhighlighter_pgmvr {background-color: #b3e8ab !important}");

mw.util.addCSS(".userhighlighter_ptusr.userhighlighter_ptusr {background-color: #c4f2ff !important}");

mw.util.addCSS(".userhighlighter_pcusr.userhighlighter_pcusr {background-color: #d4d4d4 !important}");

mw.util.addCSS(".userhighlighter_excon.userhighlighter_excon {background-color: #ccccff !important}");

$('#article a, #bodyContent a, #mw_contentholder a').each(function(index,linkraw){

try {

var link = $(linkraw);

var url = link.attr('href');

if (!url || url.charAt(0) === '#') return; // Skip elements that aren't actually links; skip anchors

if (url.lastIndexOf("http://", 0) != 0 && url.lastIndexOf("https://", 0) != 0 && url.lastIndexOf("/", 0) != 0) return; //require http(s) links, avoid "javascript:..." etc. which mw.Uri does not support

var uri = new mw.Uri(url);

if (!ADMINHIGHLIGHT_EXTLINKS && !$.isEmptyObject(uri.query)) return; // Skip links with query strings if highlighting external links is disabled

if (uri.host == 'en.wikipedia.org') {

var mwtitle = new mw.Title(mw.util.getParamValue('title',url) || decodeURIComponent(uri.path.slice(6))); // Try to get the title parameter of URL; if not available, remove '/wiki/' and use that

if ($.inArray(mwtitle.getNamespaceId(), ADMINHIGHLIGHT_NAMESPACES)>=0) {

var user = mwtitle.getMain().replace(/_/g," ");

if (mwtitle.getNamespaceId() === -1) user = user.replace('Contributions/',''); // For special page "Contributions/"

if (addata[user] == 1) {

link.attr("class", "userhighlighter_sysop"); // Override the above color by using `a.userhighlighter_sysop.userhighlighter_sysop {background-color: COLOR !important}`

}

else if(tpdata[user] == 1) {

link.attr("class", "userhighlighter_temop"); // Override the above color by using `a.userhighlighter_temop.userhighlighter_temop {background-color: COLOR !important}`

}

else if(mvdata[user] == 1) {

link.attr("class", "userhighlighter_pgmvr"); // Override the above color by using `a.userhighlighter_pgmvr.userhighlighter_pgmvr {background-color: COLOR !important}`

}

else if(ptdata[user] == 1) {

link.attr("class", "userhighlighter_ptusr"); // Override the above color by using `a.userhighlighter_ptusr.userhighlighter_ptusr {background-color: COLOR !important}`

}

else if(pcdata[user] == 1) {

link.attr("class", "userhighlighter_pcusr"); // Override the above color by using `a.userhighlighter_pcusr.userhighlighter_pcusr {background-color: COLOR !important}`

}

else if(ecdata[user] == 1) {

link.attr("class", "userhighlighter_excon"); // Override the above color by using `a.userhighlighter_excon.userhighlighter_excon {background-color: COLOR !important}`

}

}

}

} catch (e) {

// Sometimes we will run into unparsable links, so just log these and move on

window.console && console.error('Admin highlighter recoverable error',e.message);

}

});

});

});

}); // mw.hook

}(jQuery, mediaWiki));

//