Aller au contenu

Utilisateur:Denis Gagne52/Gadget-ReplaceTextLayer.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.
( function ( mw, $ ) {
'use strict';

function hasGadget(name, modules) {
	return $.inArray('ext.gadget.' + name, modules) != -1;
}

function getTextLayer(djvuname, page_nr) {
	$.ajax({
		url: mw.util.wikiScript( 'api' ),
		dataType: 'json',
		data: {
			'format': 'json',
			'action': 'query',
			'titles': 'File:' + djvuname,
			'prop': 'imageinfo',
			'iiprop': 'metadata',
			'indexpageids': '1'
		},
		success : function (res) {
			var text = null;
			try {
				var page_id = res.query.pageids[0];
				var metadata = res.query.pages[page_id].imageinfo[0].metadata;
				var data = metadata.filter(x => x.name == "text")[0].value;
				text = data[page_nr - 1].value;
			}
			catch(err) {
				console.log("unable to load text layer, possible cause are 1) the djvu or pdf file doesn't contain a text layer, 2) djvu file contains a text layer but server side is buggy, try to purge the djvu file");
			}
			if (text) {
				$('#wpTextbox1').val(text);
			}
		}
	});
}

if ($.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1 && mw.config.get('wgCanonicalNamespace') == 'Page') {
  mw.loader.using(['ext.wikiEditor', 'ext.proofreadpage.page.edit'], function() {
  	$(function() {
      $('#wpTextbox1').wikiEditor('addToToolbar', {
        section: 'main',
		group: 'insert',
        tools: {
          'textLayer': {
            label: 'Remplace le texte de la Page: actuel par la couche texte',
            type: 'button',
            icon: '//upload.wikimedia.org/wikisource/fr/1/1d/TL.png',
            action: {
              type: 'callback',
              execute: function() {
                var datas = mw.config.get('wgTitle').split('/');
                getTextLayer(datas[0], datas[1]);
              }
            }
          }
        }
      });
  	});
  });
}
 
}( mediaWiki, jQuery ) );