MediaWiki:Gadget-Fill Index.js
Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.
- Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
- Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
- Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
- Opera: premi Ctrl-F5.
/*
* imported from fr.source on 31 Jan 2014
*
* Author: w:fr:Phe
*
* Remplit les champs lors de la création d'un Livre: à partir des informations
* contenues dans le modèle Book de Commons
*/
( function ( mw, $ ) {
'use strict';
var extract_dict = {};
function setup_extract_dict() {
extract_dict = self.fill_index_data.extract_dict;
}
function extract_field( name, contents ) {
var regex = new RegExp('\\|[ ]*' + name + '[ ]*=[ ]*([^\n]*)');
var match = regex.exec(contents);
if( match ) {
return {
'field name' : extract_dict[name],
'value' : match[1]
};
}
return null;
}
function extract_content( data ) {
var importationDone = false;
$.each( data.query.pages, function( ids, page ) {
if( ids < 0 ) {
return;
}
var content = page.revisions[0]['*'];
for( var idx in extract_dict ) {
var dict = extract_field( idx, content );
if( dict ) {
var f = document.getElementsByName("wpprpindex-" + dict['field name'])[0];
if( f ) {
var data = dict['value'];
data = data.replace(/{{[Cc]reator[ ]*:[ ]*(.*)[ ]*}}/, "$1")
f.value = data;
}
}
}
importationDone = true;
} );
return importationDone;
}
function common_content( data ) {
if( !extract_content( data ) ) {
$.ajax( {
url: mw.util.wikiScript( 'api' ),
data: {
'format': 'json',
'action': 'query',
'prop': 'revisions',
'rvprop': 'content',
'titles': 'File:' + mw.config.get( 'wgTitle' )
}
} )
.done( extract_content );
}
}
function setup() {
setup_extract_dict();
if( $( ".mw-newarticletext" ).length === 0 ) {
return;
}
$.ajax( {
url: '//commons.wikimedia.org/w/api.php',
data: {
'format': 'json',
'action': 'query',
'prop': 'revisions',
'rvprop': 'content',
'titles': 'File:' + mw.config.get( 'wgTitle' )
},
dataType: 'jsonp',
cache: true
} )
.done( common_content );
}
/* Localisation section, you can provide your own data before loading this script to
* change the script behavior
*/
if( !self.fill_index_data ) {
self.fill_index_data = {}
}
if( !self.fill_index_data.extract_dict ) {
self.fill_index_data.extract_dict = {
'Editor' : 'Curatore',
'Publisher' : 'Editore',
'Author' : 'Autore',
'Translator' : 'Traduttore',
'Volume' : 'Volumi',
'Illustrator' : 'Illustratore',
//'Image page' : 'Immagine', - campo già precompilato dal template indice, non sono sicuro sia utile sovrascriverlo
'Title' : 'NomePagina',
'Date' : 'Anno',
'City' : 'Città',
'Source' : 'Fonte',
'Subtitle' : 'Sottotitolo'
};
}
/* end of localisation section */
$( function() {
if( mw.config.get( "wgCanonicalNamespace" ) === "Index" && mw.config.get( "wgAction" ) === "edit" ) {
setup();
}
} );
} ( mediaWiki, jQuery ) );