Utente:Titore/Gadget-RipristinoRapido.js
Questa pagina definisce alcuni parametri di aspetto e comportamento generale di tutte le pagine. Per personalizzarli vedi Aiuto:Stile utente.
Nota: dopo aver salvato è necessario pulire la cache del proprio browser per vedere i cambiamenti (per le pagine globali è comunque necessario attendere qualche minuto). Per Mozilla / Firefox / Safari: fare clic su Ricarica tenendo premuto il tasto delle maiuscole, oppure premere Ctrl-F5 o Ctrl-R (Command-R su Mac); per Chrome: premere Ctrl-Shift-R (Command-Shift-R su un Mac); per Konqueror: premere il pulsante Ricarica o il tasto F5; per Opera può essere necessario svuotare completamente la cache dal menù Strumenti → Preferenze; per Internet Explorer: mantenere premuto il tasto Ctrl mentre si preme il pulsante Aggiorna o premere Ctrl-F5.
/**
* Questo accessorio aggiunge un pulsante [ripristina]
* per ripristinare velocemente una vecchia versione di una pagina.
*
* @author https://it.wikipedia.org/wiki/Utente:valcio and contributors
*/
/* global mediaWiki, jQuery, OO */
( function ( mw, $ ) {
'use strict';
var buttonLabel = "ripristina";
var summaryPromptLabel = "Oggetto:";
var defaultSummary = "Ripristinata versione ${REVID} di ${USER} delle ${TIME} del ${DATE}";
var months = ["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"];
var conf = mw.config.get( [
'wgCurRevisionId',
'wgAction',
'wgArticlePath', // /wiki/$1
'wgPageName', // Wikipedia:Pagina_delle_prove
'wgScript', // /w/index.php
'wgRevisionId'
] );
var successOptions = "<ul>" +
"<li><a href=\"" + conf.wgArticlePath.replace("$1", conf.wgPageName) + "\">" + conf.wgPageName.replace(/_/g, " ") + "</a></li>" +
"<li><a href=\"" + conf.wgScript + "?title=" + conf.wgPageName + "&action=history\">Cronologia</a></li>" +
"<li><a href=\"" + conf.wgArticlePath.replace("$1", "Special:RecentChanges") + "\">Ultime modifiche</a></li>" +
"</ul>";
function restore(revId){
return new mw.Api().get({
"action": "query",
"format": "json",
"prop": "revisions",
"titles": conf.wgPageName,
"formatversion": "2",
"rvprop": "timestamp|user|ids",
"rvslots": "main",
"rvlimit": "500",
"rvendid": revId.toString(),
"rvdir": "older"
}).done(function(data){
var t=new Date(data.query.pages[0].revisions[data.query.pages[0].revisions.length-1].timestamp);
var sum=prompt(summaryPromptLabel, defaultSummary
.replace("${REVID}", revId.toString())
.replace("${USER}", data.query.pages[0].revisions[data.query.pages[0].revisions.length-1].user)
.replace("${TIME}", t.toLocaleTimeString().slice(0, -3))
.replace("${DATE}", t.getDate()+" "+months[t.getMonth()]+" "+t.getFullYear()));
if (sum==null)
return;
for (var rev in data.query.pages[0].revisions) {
new mw.Api().postWithToken( 'patrol', {
action: 'patrol',
revid: data.query.pages[0].revisions[rev].revid
});
}
return new mw.Api().get({
"action": "query",
"format": "json",
"prop": "revisions",
"revids": revId,
"formatversion": "2",
"rvprop": "content",
"rvslots": "main"
}).done(function(data2){
return new mw.Api().postWithToken( 'csrf', {
action: 'edit',
format: 'json',
title: conf.wgPageName,
summary: sum,
text: data2.query.pages[0].revisions[data2.query.pages[0].revisions.length-1].slots.main.content,
nocreate: 1,
tags: 'ripristino-rapido'
}).done(function(){
mw.notify($("<p>Versione "+revId.toString()+" di "+data.query.pages[0].revisions[data.query.pages[0].revisions.length-1].user+" ripristinata con successo!</p>"+successOptions), {
type: "success",
title:"Azione eseguita",
autoHideSeconds: "short"
});
}).fail(function(e, i){
mw.notify("Errore nel ripristinare la versione\n\nCodice dell'errore:"+e, {
type: 'error',
title:'Azione non eseguita',
autoHide: "false"
});
console.log(i);
});
});
});
}
function getButton(bracketBefore, bracketAfter, makeBold, revId){
var text = $('<a>')
.text(bracketBefore+buttonLabel+bracketAfter);
var button = $('<span>')
.addClass("gadget-diff-restore")
.append(text);
if (makeBold)
button.css('font-weight', 'bold');
button.on( 'click', function () {
restore(revId);
});
return button;
}
$( function () {
//insert button
if (conf.wgAction == 'history'){
$("#pagehistory").find('li').each(function(i){
if (i!=0) {
var button=getButton("","", false, parseInt($(this).attr("data-mw-revid")));
$(this).children('.mw-changeslist-links:not(.mw-history-histlinks)').append( button );
}
});
} else if (conf.wgAction == 'view' && conf.wgRevisionId != conf.wgCurRevisionId) { //diff
var button=getButton("[", "]", true, parseInt(conf.wgRevisionId));
$ ('#mw-diff-ntitle2').append( button );
$(".mw-message-box-warning.mw-revision.mw-message-box").append(button); //old revision message box
var button2=getButton("[", "]", true, parseInt(mw.config.get('wgDiffOldId')));
$ ('#mw-diff-otitle2').append( button2 );
}
});
} )( mediaWiki, jQuery );