User:Pythoncoder/Scripts/userHighlighter.js

// /** * User highlighter 3.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 gold background. It also colors links to userpages of users with lower * and higher-ranked permissions. * * The direct source for this script is a combination of Bellezzasolo's (adds * intermediate-level groups) and Amorymeltzer's (adds advanced-level groups) * versions of the script. You may be interested in * User:Chlod/Scripts/UserHighlighter.js, which adds a tooltip showing * a user's groups. However, I continue to use this version because Navigation * Popups already covers this functionality. This script has been forked many * times; please see my documentation page for a full chart of these forks. * * TODO: Rollback * * @author Ais523 * @author Amalthea * @author Theopolisme * @author Bellezzasolo * @author Amorymeltzer * @author Pythoncoder */ (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:AmoryBot/crathighlighter.js/arbcom.json', function(data){ acdata = data; }),	$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:AmoryBot/crathighlighter.js/bureaucrat.json', function(data){ crdata = data; }),	$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:AmoryBot/crathighlighter.js/oversight.json', function(data){ osdata = data; }),	$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:AmoryBot/crathighlighter.js/checkuser.json', function(data){ cudata = data; }),	$.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; }),	$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:AmoryBot/crathighlighter.js/interface-admin.json', function(data){ iadata = data; }),	$.getJSON(mw.config.get('wgScriptPath')+'/index.php?action=raw&ctype=application/json&title=User:AmoryBot/crathighlighter.js/steward.json', function(data){ swdata = 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("[class~=userhighlighter_excon] {background-color: #99f}"); mw.util.addCSS("[class~=userhighlighter_pcusr] {background-color: #ddd}"); mw.util.addCSS("[class~=userhighlighter_ptusr] {background-color: #9c9}"); mw.util.addCSS("[class~=userhighlighter_pgmvr] {background-color: #bf9}"); mw.util.addCSS("[class~=userhighlighter_temop] {background-color: #f9f}"); mw.util.addCSS("[class~=userhighlighter_sysop] {background-color: #9ff}"); mw.util.addCSS("[class~=userhighlighter_checkuser][class~=userhighlighter_sysop] {background-color: #9cf}"); mw.util.addCSS("[class~=userhighlighter_oversight][class~=userhighlighter_sysop] {background-color: #999}"); mw.util.addCSS("[class~=userhighlighter_arbcom][class~=userhighlighter_sysop] {background-color: #f99}"); mw.util.addCSS("[class~=userhighlighter_interface-admin][class~=userhighlighter_sysop] {background-color: #ff9}"); mw.util.addCSS("[class~=userhighlighter_bureaucrat][class~=userhighlighter_sysop] {background-color: #fb9}"); mw.util.addCSS("[class~=userhighlighter_steward] {background-color: #9cc}"); mw.util.addCSS("[class~=userhighlighter_jimbo][class~=userhighlighter_sysop] {background-color: #fd9}"); $('#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 (mwtitle.getNamespaceId === -1) user = user.replace('Contribs/',''); // The Contribs abbreviation too if (swdata[user] == 1) { link.addClass(link.attr('class') + ' userhighlighter_steward'); }						if(crdata[user] == 1) { link.addClass(link.attr('class') + ' userhighlighter_bureaucrat'); }						if(iadata[user] == 1) { link.addClass(link.attr('class') + ' userhighlighter_interface-admin'); }						if(acdata[user] == 1) { link.addClass(link.attr('class') + ' userhighlighter_arbcom'); }						if(osdata[user] == 1) { link.addClass(link.attr('class') + ' userhighlighter_oversight'); }						if(cudata[user] == 1) { link.addClass(link.attr('class') + ' userhighlighter_checkuser'); }						if (addata[user] == 1) { link.addClass(link.attr('class') + ' userhighlighter_sysop'); }						if(tpdata[user] == 1) { link.addClass(link.attr('class') + " userhighlighter_temop"); // Override the above color by using `a.userhighlighter_temop.userhighlighter_temop {background-color: COLOR !important}` }						if(mvdata[user] == 1) { link.addClass(link.attr('class') + " userhighlighter_pgmvr"); // Override the above color by using `a.userhighlighter_pgmvr.userhighlighter_pgmvr {background-color: COLOR !important}` }						if(ptdata[user] == 1) { link.addClass(link.attr('class') + " userhighlighter_ptusr"); // Override the above color by using `a.userhighlighter_ptusr.userhighlighter_ptusr {background-color: COLOR !important}` }						if(pcdata[user] == 1) { link.addClass(link.attr('class') + " userhighlighter_pcusr"); // Override the above color by using `a.userhighlighter_pcusr.userhighlighter_pcusr {background-color: COLOR !important}` }						if(ecdata[user] == 1) { link.addClass(link.attr('class') + " userhighlighter_excon"); // Override the above color by using `a.userhighlighter_excon.userhighlighter_excon {background-color: COLOR !important}` }						if(user == 'Jimbo Wales') { link.addClass(link.attr('class') + " userhighlighter_jimbo"); // Override the above color by using `a.userhighlighter_jimbo.userhighlighter_jimbo {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); }		});	});	}); }); }(jQuery, mediaWiki)); //