MediaWiki:Gadget-RipristinoRapido.js: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
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",
"revids": revId.toString(),
"titles": conf.wgPageName,
"formatversion": "2",
"formatversion": "2",
"rvprop": "content|timestamp|user",
"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 );