MediaWiki: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.wiki.x.io/wiki/Utente:valcio and contributors
*/
/* global mediaWiki, jQuery */
var localConfiguration = require("./RipristinoRapido-Config.json");
( function ( mw, $ ) {
'use strict';
var conf = mw.config.get( [
'wgCurRevisionId',
'wgAction',
'wgPageName',
'wgRevisionId',
'wgUserGroups'
] );
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(localConfiguration.summaryPromptLabel, localConfiguration.defaultSummary.replaceAll("${REVID}", revId.toString()).replaceAll("${USER}", data.query.pages[0].revisions[data.query.pages[0].revisions.length-1].user).replaceAll("${TIME}", t.toLocaleTimeString().slice(0, -3)).replaceAll("${DATE}", t.getDate()+" "+localConfiguration.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+localConfiguration.forcedSummary,
text: data2.query.pages[0].revisions[data2.query.pages[0].revisions.length-1].slots.main.content,
nocreate: 1
} ).done(function(){mw.notify($("<p>"+localConfiguration.successMessage.replaceAll("${REVID}", revId.toString()).replaceAll("${USER}", data.query.pages[0].revisions[data.query.pages[0].revisions.length-1].user).replaceAll("${TIME}", t.toLocaleTimeString().slice(0, -3)).replaceAll("${DATE}", t.getDate()+" "+localConfiguration.months[t.getMonth()]+" "+t.getFullYear())+"</p>"+localConfiguration.successOptionsHTML.replaceAll("${TITLE}", conf.wgPageName)), {type: "success", title:localConfiguration.successTitle});}).fail(function(e, i){mw.notify(localConfiguration.replaceAll("${ERROR}", e), {type: 'error', title:localConfiguration.errorTitle});console.log(i);});
});
});
}
function getButton(bracketBefore, bracketAfter, makeBold, revId){
var text = $('<a>')
.text(bracketBefore+localConfiguration.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 () {
if (!conf.wgUserGroups.includes('rollbacker') && !conf.wgUserGroups.includes('sysop'))
return;
//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 );
$(".cdx-message.cdx-message--block.cdx-message--warning").append(button); //old revision message box
var button2=getButton("[", "]", true, parseInt(mw.config.get('wgDiffOldId')));
$ ('#mw-diff-otitle2').append( button2 );
}
});
} )( mediaWiki, jQuery );