User:Mr. Stradivarius/gadgets/TransclusionCount.js

/*                           TransclusionCount * * This script adds a link to Jarry1250's Template Transclusion Count tool to * the Tools menu. The link is for the current page, or the referenced page if * you are viewing a subpage of Special:WhatLinksHere. * * To install, add the following to your Special:MyPage/common.js:

importScript("User:Mr. Stradivarius/gadgets/TransclusionCount.js") // Linkback: User:Mr. Stradivarius/gadgets/TransclusionCount.js

*/

$( document ).ready(function {	function getReferencedTitle( title ) {		// Gets the referenced title for title objects of pages that		// reference a specific page. For example, for the title object for		// Special:WhatLinksHere/User:Example it would give the title object		// for User:Example.		var pageName = title.getMain;		var baseSubpageName = pageName.replace( /.*?\//, "" );		if ( pageName === baseSubpageName ) {			return title;		} else {			return new mw.Title( baseSubpageName );		}	}	// Find the target title	// We detect whether we are on a subpage of Special:WhatLinksHere, and if	// so, we use the referenced page. For other special pages, we exit; these	// pages cannot be transcluded, so it would not make much sense to link to	// the transclusion count tool from them.	// TODO: Handle Special:WhatLinksHere pages using the "target" URL query	// parameter.	// TODO: Handle other special pages that can reference a specific page, like // Special:PrefixIndex and Special:RecentChangesLinked. var target = new mw.Title(		mw.config.get( 'wgTitle' ),		mw.config.get( 'wgNamespaceNumber' )	); if ( target.getNamespaceId === -1 ) { // We are in the Special namespace. if ( mw.config.get( "wgCanonicalSpecialPageName" ) === "Whatlinkshere" ) { var referencedTitle = getReferencedTitle( target ); if ( referencedTitle.toString !== target.toString ) { // We are on a subpage of Special:WhatLinksHere, so use the // referenced page target = referencedTitle; } else { return; }		} else { return; }	}	// Assemble the template count URL var url = new mw.Uri( "https://tools.wmflabs.org/templatecount/index.php" ); url.extend( {		lang: mw.config.get( "wgContentLanguage" ),		name: target.getMain,		namespace: target.getNamespaceId	} ); mw.util.addPortletLink( "p-tb", url.toString, "Transclusion count" ); });