Utilisateur:Denis Gagne52/Gadget-ReplaceTextLayer.js
Apparence
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 ) );