User:Anomie/talklink.js
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
( function ( mw, $ ) {
var ns = mw.config.get( 'wgNamespaceNumber' ),
title = mw.config.get( 'wgTitle' );
if ( ns < 0 ) {
return;
}
mw.loader.using( [ 'mediawiki.Title', 'mediawiki.api' ], function () {
$( function () {
var $catalk = $( '#ca-talk' );
if ( !$catalk.length || $catalk.hasClass( 'new' ) ) {
return;
}
new mw.Api().get( {
action: 'query',
titles: new mw.Title( title, ns | 1 ).getPrefixedText(),
prop: 'revisions',
rvprop: 'content',
indexpageids: 1
} ).done( function ( r ) {
var p, s, o;
if ( !r || !r.query || !r.query.pages || !r.query.pageids || !r.query.pageids[0] ) {
return;
}
p = r.query.pages[r.query.pageids[0]];
if ( !p || !p.revisions || !p.revisions[0] || !p.revisions[0]['*'] ) {
return;
}
s = p.revisions[0]['*'].replace( /<!--[\s\S]*?-->/g, '' );
if ( /^#REDIRECT:? *\[\[/i.test( s ) ) {
$catalk.addClass( 'redirect' );
return;
}
do {
o = s;
s = s.replace( /{{{([^{}]|{[^{]|}[^}])*?}}}/g, '' );
s = s.replace( /{{([^{}]|{[^{]|}[^}])*?}}/g, '' );
} while ( o !== s );
if ( /^\s*$/.test( s ) ) {
$catalk.addClass( 'empty' );
return;
}
} );
} );
} );
}( mediaWiki, jQuery ) );