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 ) );