MediaWiki:Gadget-citeBox.js

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.
/*********************
 Citation d'un livre
 Auteur: Tpt
 *********************/
if ((mw.config.get('wgNamespaceNumber') === 0 || mw.config.get('wgCanonicalNamespace') === 'Index') && (mw.config.get('wgAction') === 'view' || mw.config.get('wgAction') === 'purge')) {
    $(function () {
        var defaultTemplate = 'Liste';
        var templates = {};
        var data = {};
        var i18n = {
            title: 'Citer ce texte',
            description: 'Citer ce texte en différents formats',
            display_mode: 'Mode d\'affichage :'
        };
        var whileInit = false;
        var isInit = false;

        function getFact (id) {
            var $node = $('#ws-' + id);
            if ($node.length > 0) {
                return $node.text();
            } else {
                $node = $('.ws-' + id);
                if ($node.length > 0) {
                    return $node.text();
                }
            }
            return '';
        }

        function init () {
            if (whileInit) {
                return;
            }
            whileInit = true;
            var message = $('<div id="citeBox" title="' + i18n.title + '"></div>').appendTo('#content');
            message.dialog({
                autoOpen: false,
                modal: true,
                width: 500,
                buttons: {
                    Ok: function () {
                        $(this).dialog('close');
                    }
                }
            });
            data = {
                type: getFact('type'),
                title: getFact('title'),
                periodical: getFact('periodical'),
                author: getFact('author'),
                translator: getFact('translator'),
                school: getFact('school'),
                publisher: getFact('publisher'),
                year: getFact('year'),
                place: getFact('place'),
                volume: getFact('volume'),
                chapter: getFact('chapter'),
                pages: getFact('pages')
            };
            isInit = true;
            whileInit = false;
        }

        function add (name, content) {
            templates[name] = content;
        }

        function getContent () {
            var content = '<p><label for="citeBox-select">' + i18n.display_mode + '</label> <select id="citeBox-select">';
            for (var id in templates) {
                content += '<option value="' + id + '">' + id + '</option>';
            }
            content += '</select></p><div id="citeBox-content">' + format(defaultTemplate) + '</div>';
            return content;
        }

        function format (id) {
            return templates[id](data);
        }

        function open () {
            if (!isInit) {
                //Wait for initialization
                init();
                setTimeout(open, 100);
                return;
            }

            var box = $('div#citeBox');
            if (box.text() === '') {
                box.html(getContent());
                $('select#citeBox-select').change(function () {
                    var node = $('select#citeBox-select option:selected');
                    if (node.length)
                        $('#citeBox-content').html(format(node.text()));
                });
            }
            box.dialog('open');
        }

        add('Liste', function (data) {
            var content = '<ul>';
            if (data.title)
                content += '<li>Titre : ' + data.title + '</li>';
            if (data.periodical)
                content += '<li>Périodique : ' + data.periodical + '</li>';
            if (data.volume)
                content += '<li>Volume : ' + data.volume + '</li>';
            if (data.author)
                content += '<li>Auteur(s) : ' + data.author + '</li>';
            if (data.translator)
                content += '<li>Traducteur(s) : ' + data.translator + '</li>';
            if (data.illustrator)
                content += '<li>Illustrateurs(s) : ' + data.illustrator + '</li>';
            if (data.publisher)
                content += '<li>Éditeur : ' + data.publisher + '</li>';
            if (data.school)
                content += '<li>École : ' + data.school + '</li>';
            if (data.year)
                content += '<li>Publication : ' + data.year + '</li>';
            if (data.place)
                content += '<li>Lieu d\'édition : ' + data.place + '</li>';
            if (data.chapter)
                content += '<li>Chapitre : ' + data.chapter + '</li>';
            if (data.pages) {
                if (data.pages.length > 4) {
                    content += '<li>Pages : ' + data.pages + '</li>';
                } else {
                    content += '<li>Page : ' + data.pages + '</li>';
                }
            }
            content += '</ul>';
            return content;
        });

        add('BibTeX', function (data) {
            var content = '<pre style="display:block;">@Book{\n';
            if (data.type)
                content += '  type = "' + data.type + '",\n';
            if (data.title)
                content += '  title = "' + data.title + '",\n';
            if (data.volume)
                content += '  volume = "' + data.volume + '",\n';
            if (data.author)
                content += '  author = "' + data.author + '",\n';
            if (data.publisher)
                content += '  publisher = "' + data.publisher + '",\n';
            if (data.school)
                content += '  school = "' + data.school + '",\n';
            if (data.year)
                content += '  year = "' + data.year + '",\n';
            if (data.place)
                content += '  place = "' + data.place + '",\n';
            if (data.chapter)
                content += '  chapter = "' + data.chapter + '",\n';
            if (data.pages)
                content += '  pages = "' + data.pages + '",\n';
            content += '  url = "' + document.location.href + '",\n';
            content += '}</pre>';
            return content;
        });

        add('Wikipédia', function (data) {
            var content = '<pre>{{Ouvrage\n';
            content += '|titre= ' + data.title + '\n';
            content += '|auteur= ' + data.author + '\n';
            if (data.translator)
                content += '|traducteur= ' + data.translator + '\n';
            if (data.illustrator)
                content += '|illustrateur= ' + data.illustrator + '\n';
            content += '|éditeur= ' + data.publisher + '\n';
            content += '|année= ' + data.year + '\n';
            if (data.place)
                content += '|lieu= ' + data.place + '\n';
            if (data.volume)
                content += '|tome= ' + data.volume + '\n';
            if (data.chapter)
                content += '|chapitre= ' + data.chapter + '\n';
            if (data.pages)
                content += '|passage= ' + data.pages + '\n';
            content += '|langue= fr\n';
            content += '|wikisource= ' + mw.config.get('wgTitle') + '\n';
            content += '}}</pre>';
            return content;
        });

        add('Wikiquote', function (data) {
            var content = '<pre>{{Réf Livre\n';
            content += '|titre= ' + data.title + '\n';
            content += '|auteur= ' + data.author + '\n';
            content += '|éditeur= ' + data.publisher + '\n';
            content += '|année= ' + data.year + '\n';
            content += '|page= ' + data.pages + '\n';
            if (data.volume)
                content += '|tome= ' + data.volume + '\n';
            if (data.chapter)
                content += '|chapitre= ' + data.chapter + '\n';
            if (data.translator)
                content += '|traducteur= ' + data.translator + '\n';
            content += '|s= ' + mw.config.get('wgTitle') + '\n';
            content += '}}</pre>';
            return content;
        });

        add('Wiktionnaire', function (data) {
            var content = '<pre>{{exemple||source=';
            content += data.author;
            content += ', \'\'{{ws|' + mw.config.get('wgTitle') + '|' + data.title + '}}\'\'';
            if (data.publisher)
                content += ', ' + data.publisher;
            if (data.year)
                content += ', ' + data.year;
            if (data.pages) {
                if (isNaN(data.pages)) {
                    content += ', pages ' + data.pages;
                } else {
                    content += ', page ' + data.pages;
                }
            }
            content += '|lang=fr}}</pre>';
            return content;
        });

        var portletLink = mw.util.addPortletLink('p-coll-print_export', '#', i18n.title, 't-cite', i18n.description);
        $(portletLink).click(open);
    });
}