MediaWiki:Gadget-RipristinoRapido.js: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
indicazione Autore e Tempo della versione a cui si ripristina; passaggio a mw.notify e migliore gestione degli esiti; m compatibilità; |
verifica tutte le modifiche che vengono sovrascritte |
||
Riga 35: | Riga 35: | ||
"format": "json", |
"format": "json", |
||
"prop": "revisions", |
"prop": "revisions", |
||
" |
"titles": conf.wgPageName, |
||
"formatversion": "2", |
"formatversion": "2", |
||
"rvprop": " |
"rvprop": "timestamp|user|ids|content", |
||
"rvslots": "main" |
"rvslots": "main", |
||
"rvlimit": "50", |
|||
"rvendid": revId.toString(), |
|||
"rvdir": "older" |
|||
}).done(function(data){ |
}).done(function(data){ |
||
var t=new Date(data.query.pages[0].revisions[0].timestamp); |
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[0].user).replace("${TIME}", t.getHours()+":"+t.getMinutes()).replace("${DATE}", t.getDay()+" "+months[t.getMonth()]+" "+t.getFullYear())); |
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.getHours()+":"+t.getMinutes()).replace("${DATE}", t.getDay()+" "+months[t.getMonth()]+" "+t.getFullYear())); |
||
if (sum==null) |
if (sum==null) |
||
return; |
return; |
||
for (var rev in data.query.pages[0].revisions) { |
|||
new mw.Api().postWithToken( 'csrf', { |
|||
action: 'patrol', |
|||
revid: rev.revid |
|||
}); |
|||
} |
|||
return new mw.Api().postWithToken( 'csrf', { |
return new mw.Api().postWithToken( 'csrf', { |
||
Riga 50: | Riga 60: | ||
title: conf.wgPageName, |
title: conf.wgPageName, |
||
summary: sum+forcedSummary, |
summary: sum+forcedSummary, |
||
text: data.query.pages[0].revisions[0].slots.main.content, |
text: data.query.pages[0].revisions[data.query.pages[0].revisions.length-1].slots.main.content, |
||
nocreate: 1 |
nocreate: 1 |
||
} ).done(function(){mw.notify($("<p>Versione "+revId.toString()+" di "+data.query.pages[0].revisions[0].user+" ripristinata con successo!</p>"+successOptions), {type: "success", title:"Azione eseguita"});}).fail(function(e, i){mw.notify("Errore nel ripristinare la versione\n\nCodice dell'errore:"+e, {type: 'error', title:'Azione NON eseguita'});console.log(i);}); |
} ).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"});}).fail(function(e, i){mw.notify("Errore nel ripristinare la versione\n\nCodice dell'errore:"+e, {type: 'error', title:'Azione NON eseguita'});console.log(i);}); |
||
}); |
}); |
||
} |
} |
Versione delle 10:13, 23 ago 2022
//Per utilizzare inserire in [[Speciale:MiaPagina/common.js]] la seguente stringa (senza i trattini [//] iniziali):
//importScript('Utente:ValeJappo/Script/Ripristina.js')
//
/**
* Questo accessorio aggiunge un pulsante [ripristina]
* per ripristinare velocemente una vecchia versione di una pagina.
*
* Documentazione in [[Utente:ValeJappo/Script/Ripristina]]
*
* @author https://it.wikipedia.org/wiki/Utente:ValeJappo 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 forcedSummary = ") ([[Utente:ValeJappo/Script/Ripristina|Ripristina]]";
var months = ["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"];
var conf = mw.config.get( [
'wgCurRevisionId',
'wgAction',
'wgPageName',
'wgRevisionId',
'wgUserGroups'
] );
var successOptions = "<br/><ul><li><a href=\"/w/index.php?title="+conf.wgPageName+"&action=view\">"+conf.wgPageName+"</a></li><li><a href=\"/w/index.php?title="+conf.wgPageName+"&action=history\">Cronologia</a></li><li><a href=\"/w/index.php?title=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|content",
"rvslots": "main",
"rvlimit": "50",
"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.getHours()+":"+t.getMinutes()).replace("${DATE}", t.getDay()+" "+months[t.getMonth()]+" "+t.getFullYear()));
if (sum==null)
return;
for (var rev in data.query.pages[0].revisions) {
new mw.Api().postWithToken( 'csrf', {
action: 'patrol',
revid: rev.revid
});
}
return new mw.Api().postWithToken( 'csrf', {
action: 'edit',
format: 'json',
title: conf.wgPageName,
summary: sum+forcedSummary,
text: data.query.pages[0].revisions[data.query.pages[0].revisions.length-1].slots.main.content,
nocreate: 1
} ).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"});}).fail(function(e, i){mw.notify("Errore nel ripristinare la versione\n\nCodice dell'errore:"+e, {type: 'error', title:'Azione NON eseguita'});console.log(i);});
});
}
function getButton(bracketBefore, bracketAfter, revId){
var text = $('<a>')
.text(bracketBefore+buttonLabel+bracketAfter);
var button = $('<span>')
.addClass("gadget-diff-restore")
.append(text);
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("","", 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("[", "]", parseInt(conf.wgRevisionId));
$ ('#mw-diff-ntitle1').append( button );
$(".mw-message-box-warning.mw-revision.mw-message-box").append(button); //old revision message box
}
});
} )( mediaWiki, jQuery );