Aller au contenu

MediaWiki:Gadget-Fill Index.js

La bibliothèque libre.

Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
/*
 * 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]*)', 'i');
        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'];
                        //var regexp = new RegExp("{{[Ll]ang[ ]*\|[ ]*" + mw.config.get("wgPageContentLanguage") + "[ ]*\|[ ]*(.*)[ ]*}}");
                        //data = data.replace(regexp, "$1");
                        data = data.replace(/{{[Cc]reator[ ]*:[ ]*(.*)[ ]*}}/, "[[" + self.fill_index_data.ns_author_name + ":$1|$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.ns_author_name ) {
    self.fill_index_data.ns_author_name = 'Auteur';
}

if( !self.fill_index_data.extract_dict ) {
    self.fill_index_data.extract_dict = {
        'Editor'      : 'Editeur_scientifique',
        'Publisher'   : 'Editeur',
        'Author'      : 'Auteur',
        'Translator'  : 'Traducteur',
        'Volume'      : 'Volume',
        'Illustrator' : 'Illustrateur',
        'Image page'  : 'Image',
        'Title'       : 'Titre',
        'Subtitle'    : 'Sous_titre',
        'Date'        : 'Annee',
        'City'        : 'Lieu',
        'Source'      : 'Bibliotheque'
    };
}
/* end of localisation section */

$( function() {
    if( mw.config.get( "wgCanonicalNamespace" ) === "Index" && mw.config.get( "wgAction" ) === "edit" ) {
        setup();
    }
} );
} ( mediaWiki, jQuery ) );