MediaWiki:Gadget-Faktamall.js

Från Wikipedia

OBS: Efter du har publicerat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.

  • Firefox / Safari: Håll ned Skift och klicka på Uppdatera sidan eller tryck Ctrl-F5 eller Ctrl-R (⌘-R på Mac)
  • Google Chrome: Tryck Ctrl-Skift-R (⌘-Skift-R på Mac)
  • Internet Explorer / Edge: Håll ned Ctrl och klicka på Uppdatera eller tryck Ctrl-F5
  • Opera: Tryck Ctrl-F5.
$( function () {
	'use strict';
	
	function infogaMall() {
		var sida = $( this ).text();
		new mw.Api().get( {
			action: 'parse',
			page: 'Mall:' + sida,
			prop: 'text',
			format: 'json'
		} ).done( function( siddata ) {
			var sidtext = $( siddata.parse.text[ '*' ] ).siblings( 'pre' ).html(),
			sidfelmeddelande = $( '<div></div>' );
			if ( sidtext === undefined ) {
				sidtext = $( siddata.parse.text[ '*' ] ).find( 'pre' ).html();
			}
			if ( sidtext === undefined ) {
				sidfelmeddelande.html( 'Sidan <a href="//sv.wikipedia.org/wiki/Mall:' + sida + '">Mall:' + sida + '</a> innehåller inget pre-element.' );
				sidfelmeddelande.dialog( {
					autoOpen: false,
					title: 'Felmeddelande'
				} );
				sidfelmeddelande.dialog( 'open' );
			} else {
				sidtext = sidtext.replace( /&lt;/g, '<' );
				sidtext = sidtext.replace( /&gt;/g, '>' );
				mw.toolbar.insertTags( sidtext );
				$( '.gadget-faktamall-dialog' ).remove();
			}
		} );
	}
	
	function visaKategoriruta() {
		var kategorinamn = $( this ).text();
		new mw.Api().get( {
			action: 'query',
			list: 'categorymembers',
			cmtitle: 'Kategori:' + kategorinamn,
			cmnamespace: '10|14',
			cmlimit: 'max',
			format: 'json'
		} ).done( function( data ) {
			var kategoriruta = $( '<div />' ),
				underkategorier = $( '<ul />' ),
				mallar = $( '<ul />' );
			data.query.categorymembers.forEach( function( member ) {
				if ( member.ns === 14 /* kategori */ && member.title.indexOf( '/' ) === -1 ) {
					$( '<li><button type="button" class="gadget-faktamall-underkategori-knapp">' + member.title.replace( 'Kategori:', '' ) + '</button></li>' )
					.click( visaKategoriruta )
					.appendTo( underkategorier );
				} else if ( member.ns === 10 /* mall */ && member.title.indexOf( '/' ) === -1 ) {
					$( '<li><button type="button" class="gadget-faktamall-sida-knapp">' + member.title.replace( 'Mall:', '' ) + '</button></li>' )
					.click( infogaMall )
					.appendTo( mallar );
				}
			} );
			if ( underkategorier.children().length ) {
				kategoriruta.append( '<h4>Underkategorier</h4>', underkategorier );
			}
			if ( mallar.children().length ) {
				kategoriruta.append( '<h4>Mallar</h4>', mallar );
			}
			kategoriruta.dialog( {
				autoOpen: false,
				title: kategorinamn,
				dialogClass: 'gadget-faktamall-dialog'
			} );
			kategoriruta.dialog( 'open' );
		} );
	}
	
	if ( mw.config.get( 'wgNamespaceNumber' ) === 0 || mw.config.get( 'wgNamespaceNumber' ) === 2 ) {
		$( '#wpDiff' ).after( '<button type="button" id="gadget-faktamall-huvudknapp" title="Infoga en faktamall">Faktamallar</button>' );
		$( '#gadget-faktamall-huvudknapp' ).click( visaKategoriruta );
	}
} );