Utilisateur:Grind24/OneClickArchiver.js
Apparence
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./**
* OneClickArchiver.js par fr:User:Startupevo1
*
* Version 1.1 beta - 29 avril 2014
*
* Script initial de en:User:Equazcion/OneClickArchiver
*/
/* Variables */
if(typeof(defautArchiv)=="undefined") var defautArchiv = 'Archive '+new Date().getFullYear(); // String
if(typeof(smartArchiv)=="undefined") var smartArchiv = false; // true/false (not implemented)
if(typeof(autoHeader)=="undefined") var autoHeader = true; // true/false
if(typeof(reloadTime)=="undefined") var reloadTime = 1000; // integer en ms
/* Corps */
if (($('#ca-addsection').length > 0) && (mw.config.get('wgAction') == 'view') && mw.config.get('wgPageName').indexOf("/Suppression") === -1){
$('span.mw-headline').each(function(index, value){
var editSectionUrl = $(this).parent().find('.mw-editsection a:first').attr('href');
var sectionReg = /§ion=(.*)/;
var sectionRaw = sectionReg.exec(editSectionUrl);
if ((sectionRaw !== null) && (sectionRaw[1].indexOf('T') < 0)){
var section = parseInt(sectionRaw[1]);
if ($(this).parent().prop("tagName") == 'H2'){
$(this).parent('h2').append(' <div style="font-size:.6em;float:right"><a id="' + section +
'" href="#archiverLink" class="archiverLink">' + '[OCA]' + '</a></div>');
$(this).parent('h2').find('a.archiverLink').click(function(){
var mHeaders = '<span style="color:#454545;">Reprise des headers...</span>';
var mSection = 'reprise du contenu de la section...';
var mPosting = '<span style="color:#004000">Contenu repris,</span> édition en cours...';
var mBanner = '<span style="color:#008000">Bandeau {{Archive de discussion}} ajouté...</span>';
var mPosted = '<span style="color:#008000">Archive ajoutée...</span>';
var mCleared = '<span style="color:#008000">Section vidée...</span>';
var mReloading = '<span style="color:#00008C">Terminé ! </span>Rechargement de la page...';
$('body').append('<div class="overlay" style="background-color:#000;opacity:.4;position:fixed;' +
'top:0;left:0;width:100%;height:100%;z-index:500;" onclick="this.parentNode.style.display = \'none\';"></div>');
$('body').prepend('<div class="arcProg" style="font-weight:bold;box-shadow: 7px 7px 5px #000;font-size:0.9em;line-height:1.5em;' +
'z-index:501;opacity:1;position:fixed;width:50%;left:25%;top:30%;background:#F7F7F7;border:#222 ridge 1px;padding:20px;"></div>');
$('.arcProg').append('<div>' + mHeaders + '</div>');
var archiveName=prompt('Nom de la page d\'archive à utiliser :',mw.config.get('wgPageName')+'/'+defautArchiv);
if(archiveName === null)
{
alert("Pas de nom d'archive inséré, archivage annulé.");
}
else
{
//https://fr.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Albert_Einstein&rvprop=size&format=xml
$('.arcProg').append('<div>' + 'Archive <span style="font-weight:normal;color:#003366;">' + archiveName +
'</span> <span style="darkgreen">trouvée</span>, ' + mSection + '</div>');
var request5 = {
action:"query",
titles: mw.config.get('wgPageName'),
rvsection: section,
prop: "revisions|info",
intoken: "edit",
rvprop: "content",
indexpageids: 1,
dataType: "xml",
format: "xml"
};
$.get(mw.config.get("wgScriptPath")+"/api.php", request5, function(response5){
$('.arcProg').append('<div>' + mPosting + '</div>');
// Ajout de bandeau
var request4 = {
action:"query",
titles: archiveName,
rvsection: 0,
prop: "revisions|info",
intoken: "edit",
rvprop: "content",
indexpageids: 1,
dataType: "xml",
format: "xml"
};
$.get(mw.config.get("wgScriptPath")+"/api.php", request4, function(response4){
var emptyTest = $(response4).find('rev').text();
if((!emptyTest || /^\s*$/.test(emptyTest)) && autoHeader === true)
{
var contentSection = '{{Archive de discussion}}\r' + $(response5).find('rev').text();
$('.arcProg').append('<div>' + mBanner+ '</div>');
}
else
{
var contentSection = '\r' + $(response5).find('rev').text();
}
var request1 = {
action:"edit",
title: archiveName,
appendtext: contentSection,
summary: 'Ajout d\'une section depuis [[' + mw.config.get('wgPageName') + ']] avec [[User:Startupevo1/OneClickArchiver|OCA]]',
token: mw.user.tokens.get("csrfToken")
};
var request2 = {
action:"edit",
section: section,
title: mw.config.get('wgPageName'),
text: "",
summary: 'Archivage d\'une section sur [[' + archiveName + ']] avec [[User:Startupevo1/OneClickArchiver|OCA]]',
token: mw.user.tokens.get("csrfToken")
};
$.when(
$.post(mw.config.get("wgScriptPath")+"/api.php", request1, function(response1){
$('.arcProg').append('<div class="archiverPosted">' + mPosted + '</div>'); }),
$.post(mw.config.get("wgScriptPath")+"/api.php", request2, function(response2){
$('.arcProg').append('<div class="archiverCleared">' + mCleared + '</div>'); })
).done(function() {
$('.arcProg').append('<div>' + mReloading + '</div>');
setTimeout(function(){
window.location.reload();
}, reloadTime);
});
});
});
}
});
}
}
});
}