Utilisateur:Rexcornot/ScriptWD.js
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.// Initially from 0x010C, CC-BY-SA 3.0
// https://fr.wikipedia.org/wiki/Utilisateur:0x010C/script/AppendDatabox.js
//<source lang=javascript>//<pre><nowiki>
var ADBvars_basetemplate = "{{Infobox Biographie2}}\n";
var ADBvars_imagetemplate = "{{Infobox Biographie2\n| image = $1\n| légende = $2\n}}\n";
var ADBvars_Texts = {
"nowikidataitem" : "Pas d'élément lié sur Wikidata",
"p31notspecified" : "« Nature de l'élément » non renseignée sur Wikidata",
"add" : "L'ajouter dans l'article",
"showpreview" : "Afficher l'Infobox Biographie2",
"hidepreview" : "Cesser d'afficher l'Infobox Biographie2",
"confirmmodaltext" : "Voulez-vous déplacer la première image de l'article dans l'Infobox Biographie2 ?",
"editsummary" : "ajout de l'[[Modèle:Infobox Biographie2|Infobox Biographie2]]",
"successnotif" : "L'Infobox a été ajoutée :)",
};
mw.loader.using(['jquery.client', 'jquery.mwEmbedUtil', 'jquery.ui']);
$(function() {
if (mw.config.get('wgNamespaceNumber') == 0 && mw.config.get('wgAction') == 'view' && !appenddatabox_justsaved()) {
if ($("#t-wikibase").length)
appenddatabox_getwikidataentity();
else
$('#firstHeading').before('<div style="float:right;"><small>['+ADBvars_Texts['nowikidataitem']+']</small></div>');
}
});
function appenddatabox_getwikidataentity() {
$.ajax({
'url': 'https://www.wikidata.org/w/api.php',
'data': {
'action': 'wbgetclaims',
'entity': 'Q' + $("#t-wikibase a").attr("href").split("Q")[1],
'format': 'json',
'origin': 'https://'+mw.config.get('wgServerName'),
},
'xhrFields': {
'withCredentials': true
},
'dataType': 'json',
'success': function(data) {
if (typeof data.claims["P31"] === "undefined")
$('#firstHeading').before('<div style="float:right;"><small>['+ADBvars_Texts['p31notspecified']+']</small></div>');
else if (data.claims["P31"][0].mainsnak.datavalue.value['numeric-id'] == '5')
appenddatabox_initialize();
}
});
}
function appenddatabox_initialize() {
if (!$('.infobox_v2').length && !$('.infobox_v3').length)
$('#firstHeading').before(' <div style="float:right;" id="appenddatabox_link2"><small>[<a href="javascript:appenddatabox_insert();">'+ADBvars_Texts['add']+'</a>]</small></div>');
$('#firstHeading').before('<div style="float:right;" id="appenddatabox_link1"><small>[<a href="javascript:appenddatabox_showpreview();">'+ADBvars_Texts['showpreview']+'</a>]</small></div>');
}
function appenddatabox_showpreview() {
$("#appenddatabox_link1").html('<small>[<a href="javascript:appenddatabox_hidepreview();">'+ADBvars_Texts['hidepreview']+'</a>]</small>');
$.ajax({
url: mw.util.wikiScript('api'),
method: 'GET',
data: {
action: 'expandtemplates',
text: ADBvars_basetemplate,
prop: 'wikitext',
title: mw.config.get('wgTitle'),
format: 'json',
},
}).then(function(data) {
$.ajax({
url: mw.util.wikiScript('api'),
method: 'POST',
data: {
action: 'parse',
text: '<div id="appenddatabox_preview">' + data.expandtemplates.wikitext + '</div>',
contentmodel: 'wikitext',
prop: 'text',
format: 'json',
},
success: function(data) {
$("#mw-content-text").prepend(data.parse.text["*"]);
if (typeof databoxeditor_changelinks == 'function')
databoxeditor_changelinks();
}
});
});
}
function appenddatabox_hidepreview() {
$("#appenddatabox_preview").remove();
$("#appenddatabox_link1").html('<small>[<a href="javascript:appenddatabox_showpreview();">'+ADBvars_Texts['showpreview']+'</a>]</small>');
}
function appenddatabox_insert() {
$("#appenddatabox_link2").html('<small>['+ADBvars_Texts['add']+']</small>');
$.ajax({
url: mw.util.wikiScript('api'),
method: 'GET',
data: {
action: 'query',
prop: 'revisions',
rvprop: 'timestamp|content',
titles: mw.config.get('wgTitle'),
format: 'json',
},
success: function(data) {
revision = [];
revision.timestamp = data.query.pages[Object.keys(data.query.pages)[0]].revisions[0].timestamp;
revision.content = data.query.pages[Object.keys(data.query.pages)[0]].revisions[0]["*"];
var r_pictures = /(\[\[(?:[Ff]ile|[Ii]mage|[Ff]ichier):([^|\]]+)\|*(?:(?:thumb|thumbnail|alt|vignette|framed|cadre|frameless|sans_cadre|left|gauche|right|droite|center|centre|néant|none|upright=*[0-9\.,]*|[0-9]+px)\|*)*((?:\[\[[^\]]*\]\]|[^|\]])*)(?:\|(?:thumb|thumbnail|alt|vignette|framed|cadre|frameless|sans_cadre|left|gauche|right|droite|center|centre|néant|none|upright=*[0-9\.,]*|[0-9]+px))*\|*\]\]\n?)/;
var match = r_pictures.exec(revision.content);
if (match) {
$("body").append('<div id="appenddatabox_confirm">'+ADBvars_Texts['confirmmodaltext']+'</div>');
$("#appenddatabox_confirm").dialog({
resizable: false,
height: 140,
modal: true,
autoOpen: true,
buttons: {
'Oui': function() {
$(this).dialog("close");
revision.content = revision.content.replace(match[1], "");
appenddatabox_save(revision, ADBvars_imagetemplate.replace("$1", match[2]).replace("$2", match[3]));
},
'Non': function() {
$(this).dialog("close");
appenddatabox_save(revision, ADBvars_basetemplate);
}
}
});
} else
appenddatabox_save(revision, ADBvars_basetemplate);
}
});
}
function appenddatabox_save(revision, template) {
var r_template = /^\s*(\{\{([\n]+|[^\}]+)\}\}\s*)+/;
var match = r_template.exec(revision.content);
console.log(match);
if (match)
revision.content = revision.content.slice(0, match[0].length) + template + revision.content.slice(match[0].length);
else
revision.content = template + revision.content;
$.ajax({
url: mw.util.wikiScript('api'),
data: {
action: 'query',
meta: 'tokens',
format: 'json',
type: 'csrf',
},
dataType: 'json'
}).then(function(data) {
$.ajax({
url: mw.util.wikiScript('api'),
method: 'POST',
data: {
action: 'edit',
title: mw.config.get('wgTitle'),
text: revision.content,
summary: ADBvars_Texts['editsummary'],
basetimestamp: revision.timestamp,
format: 'json',
token: data.query.tokens.csrftoken
},
dataType: 'json',
success: function(data) {
mw.notify(ADBvars_Texts['successnotif']);
setTimeout(function() {
document.location.href = mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace("$1", mw.config.get('wgPageName')) + "?action=purge&appenddatabox=success";
}, 1500);
}
});
});
}
function appenddatabox_justsaved() {
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == "appenddatabox")
return true;
}
return false;
}
//</nowiki></pre></source>