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 );