User:Zppix/Test/MediaWiki:Gadget-CentralAuthInterlinkFixer.js: Difference between revisions

Content deleted Content added
No edit summary
2012 rewrite
Line 6: Line 6:
* @author Krinkle, 2012
* @author Krinkle, 2012
*/
*/
/*global mw, $ */
/*global mediaWiki, jQuery */
/*jslint browser:true, regexp:true */
function host(id) {
(function (mw, $) {
if (id === 'mediawikiwiki') {
'use strict';
return 'mediawiki.org';
function host(id) {
} else if (id === 'foundationwiki') {
var wikimedia, idNoSpaces;
return 'wikimediafoundation.org';
if (id === 'mediawikiwiki') {
}
return 'mediawiki.org';
var wikimedia = /^(advisory|auditcom|board|chair|chapcom|collab|comcom|commons|exec|grants|incubator|internal|meta|office|otrs wiki|quality|spcom|species|wikimaniateam|wikimania20\d\d)wiki$/;
}
if (wikimedia.test(id)) {
if (id === 'foundationwiki') {
return id.replace(/ /g, '-').replace(/_/g, '-').replace(/wiki$/, '.wikimedia.org');
return 'wikimediafoundation.org';
}
}
var idNoSpaces = id.match(/(arbcom enwiki|labswikimedia|pa uswikimedia|wg enwiki)$/) ? id.replace(/ /g, '.') : id.replace(/ /g, '-');
wikimedia = /^(advisory|auditcom|board|chair|chapcom|collab|comcom|commons|exec|grants|incubator|internal|meta|office|otrs wiki|quality|spcom|species|wikimaniateam|wikimania20\d\d)wiki$/;
idNoSpaces = idNoSpaces
if (wikimedia.test(id)) {
.replace(/(wiki([mp]edia|quote|source|books|news|versity)|wiktionary)/, '.$1.org')
.replace(/wiki$/, '.wikipedia.org');
return id.replace(/ /g, '-').replace(/_/g, '-').replace(/wiki$/, '.wikimedia.org');
}
if (idNoSpaces.indexOf('.org') !== -1) {
idNoSpaces = id.match(/(arbcom enwiki|labswikimedia|pa uswikimedia|wg enwiki)$/) ? id.replace(/ /g, '.') : id.replace(/ /g, '-');
return idNoSpaces;
idNoSpaces = idNoSpaces
}
.replace(/(wiki([mp]edia|quote|source|books|news|versity)|wiktionary)/, '.$1.org')
return false;
.replace(/wiki$/, '.wikipedia.org');
}
if (idNoSpaces.indexOf('.org') !== -1) {
return idNoSpaces;
}
return false;
}


function fixCrosswikiLinks() {
function fixCrosswikiLinks() {
$('body li a').each(function (i, el) {
$('body li a').each(function () {
var bits, wiki, user,
var bits, wiki, user, hostName,
$el = $(el),
$el = $(this),
txt = $el.text();
txt = $el.text();
if (txt.indexOf('@') !== -1 && txt.indexOf('/') === -1 && /^User\:/i.test(txt)) {
if (txt.indexOf('@') !== -1 && txt.indexOf('/') === -1 && /^User\:/i.test(txt)) {
bits = txt.split('@');
bits = txt.split('@');
user = bits.shift().replace(/^\s*User:(.+)\s*$/g, '$1');
user = bits.shift().replace(/^\s*User:(.+)\s*$/g, '$1');
wiki = bits.join('@');
wiki = bits.join('@');
if (wiki === 'global') {
if (wiki === 'global') {
$el.attr('href', mw.config.get( 'wgScript' ) + '?title=Special:CentralAuth&target=' + encodeURIComponent(user));
$el.attr('href', mw.config.get('wgScript') + '?title=Special:CentralAuth&target=' + encodeURIComponent(user));
} else {
} else {
var hostName = host(wiki);
hostName = host(wiki);
if (hostName) {
if (hostName) {
$el.attr('href', '//' + hostName + '/wiki/User:' + encodeURIComponent(user));
$el.attr('href', '//' + hostName + '/wiki/User:' + encodeURIComponent(user));
}
}
}
}
if (wiki !== 'metawiki') {
if (wiki !== 'metawiki') {
$el.removeClass('new').addClass('extiw');
$el.removeClass('new').addClass('extiw');
}
}
$el.attr('title', txt);
$el.attr('title', txt);
}
}
});
});
}
}


if (mw.config.get('wgCanonicalSpecialPageName') === 'Log' || mw.config.get('wgCanonicalSpecialPageName') === 'Recentchanges') {
if (mw.config.get('wgCanonicalSpecialPageName') === 'Log' || mw.config.get('wgCanonicalSpecialPageName') === 'Recentchanges') {
$(document).ready(fixCrosswikiLinks);
$(document).ready(fixCrosswikiLinks);
}
}
}(mediaWiki, jQuery));