User:Majr/docTabs.js

$( function { 'use strict';

var page = mw.config.get( 'wgTitle' ), title = page.replace( '/doc', '' );

$( '#p-namespaces li:last' ).after( ' Doc ' ); $( '#p-namespaces li:last' ).after( ' Doc talk ' );

if ( page.indexOf( '/doc' ) > -1 ) { $( '#ca-nstab-template' ).removeClass( 'selected' ); $( '#ca-nstab-template a' ).prop( 'href', function {       return this.href.replace( '/doc', '' );    } ); $( '#ca-talk' ).removeClass( 'selected' ); $( '#ca-talk a' ).prop( 'href', function {       return this.href.replace( '/doc', '' );    } ); if ( mw.config.get( 'wgNamespaceNumber' ) === 10 ) { $( '#ca-doc' ).addClass( 'selected' ); } else { $( '#ca-doc-talk' ).addClass( 'selected' ); } }

function nameToId( name ) { switch ( name ) { case 'Template:' + title: return '#ca-nstab-template'; case 'Template talk:' + title: return '#ca-talk'; case 'Template:' + title + '/doc': return '#ca-doc'; case 'Template talk:' + title + '/doc': return '#ca-doc-talk'; } }

$.getJSON(   '/api.php?format=json&action=query&prop=info&titles=Template:' + title + '|Template talk:' + title + '|Template:' + title + '/doc|Template talk:' + title + '/doc',    function( resp ) {        $.each( resp.query.pages, function { var id = nameToId( this.title );

if ( this.hasOwnProperty( 'missing' ) ) { if ( !$( id ).hasClass( 'new' ) ) { $( id ).addClass( 'new' ); $( id + ' a' ).prop( 'href', function( $, href ) {                       return this.href.replace( href, href + '?action=edit&redlink=1' );                    } ); }           } else { $( id ).removeClass( 'new' ); $( id + ' a' ).prop( 'href', function {                   return this.href.replace( /[?&]action=edit&redlink=1/, '' );                } ); }       } );    } );

} );