Jump to content

MediaWiki:Gadget-Page descriptions.js

From Wikipedia, the free encyclopedia
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.
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 && mw.config.get( 'wgAction' ) === 'view' ) {
	mw.loader.using( 'mediawiki.api' ).then( function () {
		// Adds a page description just below the "page title"
		// Behaves a lot like the mobile version
		var wgQid = mw.config.get( 'wgWikibaseItemId' ),
			api = new mw.Api(),
			callPromise = api.get( {
				action: 'query',
				titles: mw.config.get( 'wgTitle' ),
				prop: 'description',
				formatversion: 2
			} ),
			isEditor = mw.config.get( 'wgUserGroups' ).indexOf( 'autoconfirmed' ) !== -1;

		$.when( callPromise, $.ready ).then( function ( results ) {
			var pageDescription, $description,
				response = results[ 0 ];
			if (
				response.query &&
				response.query.pages &&
				response.query.pages[ 0 ].description
			) {
				pageDescription = response.query.pages[ 0 ].description;
				$description = $( '<span>' )
					.addClass( 'mw-page-description' )
					.text( pageDescription );
				if ( response.query.pages[ 0 ].descriptionsource !== 'local' && isEditor ) {
					$description.append(
						' (',
						$( '<a>' )
							.attr( 'href', 'https://www.wikidata.org/wiki/Special:SetLabelDescriptionAliases/' + wgQid + '/' + mw.config.get( 'wgContentLanguage' ) )
							.css( 'color', 'darkorange' )
							.text( 'Wikidata' ),
						')'
					);
				}
				$description.append( '. ' );
			} else if ( isEditor ) {
				$description = $( '<span>' )
					.css( 'color', 'red' )
					.append(
						'Missing ',
						$( '<a>' )
							.attr( 'href', '/wiki/Template:Short_description' )
							.text( 'page description' ),
						'. '
					);
			}
			if ( $description ) {
				$( '#siteSub' ).prepend( $description );
			}
		} );
	} );
}