MediaWiki:Gadget-Faktamall.js
Utseende
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)
- 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( /</g, '<' );
sidtext = sidtext.replace( />/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 );
}
} );