Utente:Ricordisamoa/Accessori.js

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

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.

/* <nowiki>
 * Migrazione degli script dalla variabile "toLoad" del monobook.js alle preferenze sugli accessori
 * @author [[Utente:Ricordisamoa]]
*/
$(function(){
	var notif = function(msg){
		mw.notify($('<b>'+msg+'</b>'),{autoHide:false});
	},
	warn = function(msg){
		mw.notify($('<b class="error">Accessori.js:<br>'+msg+'</b>'),{autoHide:false});
	};
	if(mw.config.get('wgNamespaceNumber') != 2 || new RegExp(mw.config.get('wgUserName')+'\\/.+\\.js$').test(mw.config.get('wgTitle')) == false){
		warn('Non sei sulla pagina giusta');
		return;
	}
	if(typeof toLoad != 'string'){
		warn('Nessun "toLoad" rilevato');
		return;
	}
	var moduli = toLoad.trim().split(/ +/);
	if(moduli.length == 0){
		warn('Nessun modulo rilevato in "toLoad"');
		return;
	}
	$(mw.util.addPortletLink('p-tb', '#', 'Abilita accessori', 'new-gadgets', 'Sostituisci il vecchio monobook con gli accessori corrispondenti'))
	.click(function(event){
		event.preventDefault();
		var api = new mw.Api();
		api.get({
			action: 'query',
			format: 'json',
			titles: 'Utente:Rotpunkt/Gadgets',
			prop: 'revisions',
			rvlimit: 1,
			rvprop: 'content'
		})
		.done(function(d){
			d = d.query.pages;
			if(typeof d == 'undefined' || Object.keys(d)[0] == '-1') return;
			d=d[Object.keys(d)[0]];
			if(typeof d.revisions == 'undefined' || d.revisions.length != 1) return;
			d=d.revisions[0];
			if(typeof d['*'] == 'undefined') return;
			d=d['*'];
			var regex = /\n\|\s*(\w+)\s*\|\|\s*[^\n]*\(\[\[\s*[Mm]ediaWiki\:\s*[Gg](adget\-[^\[\]\|]+)\s*\]\]\)\s*\n/g,
			regex2 = new RegExp(regex.source,''),
			loads = {},
			impost = [],
			skipped = [];
			$.each(d.match(regex)||[], function(i,e){
				var m=e.match(regex2);
				if(m){
					loads[m[1]] = 'g'+m[2];
				}
			});
			$.each(moduli, function(i,e){
				if(typeof loads[e] != 'undefined'){
					if(mw.user.options.get(loads[e]) == '1'){
						skipped.push(loads[e]);
						notif('Il gadget '+loads[e].replace(/^[Gg]adget\-/,'')+' è già abilitato nelle tue preferenze');
					}
					else{
						impost.push(loads[e]+'=1');
					}
				}
			});
			if(moduli.length != (skipped.length+impost.length)){
				warn('Trovati '+moduli.length+' script da caricare ma solo '+(skipped.length+impost.length)+' hanno un accessorio equivalente');
				return;
			}
			var cb=function(){
				api.get({
					action: 'query',
					format: 'json',
					titles: mw.config.get('wgPageName'),
					prop: 'revisions',
					rvlimit: 1,
					rvprop: 'content'
				})
				.done(function(d){
					d = d.query.pages;
					if(typeof d == 'undefined' || Object.keys(d)[0] == '-1') return;
					d=d[Object.keys(d)[0]];
					if(typeof d.revisions == 'undefined' || d.revisions.length != 1) return;
					d=d.revisions[0];
					if(typeof d['*'] == 'undefined') return;
					d=d['*'];
					var rxp = new RegExp('(^|\\n)\\s*(var\\s+)toLoad\\s*\\=\\s*[\\"\\\']\\s*'+moduli.join('\\s+')+'\\s*[\\"\\\']\\s*\\;(\\n|$)'),
					txt = d.replace(rxp,'');
					if(txt != d){
						api.post({
							action: 'edit',
							format: 'json',
							title: mw.config.get('wgPageName'),
							text: txt,
							summary: '[[Utente:Ricordisamoa/Accessori.js|Accessori.js]]: rimozione variabile "toLoad"',
							nocreate: 1,
							token: mw.user.tokens.get('editToken')
						})
						.done(function(data){
							if(data && data.error && data.error.info) warn('Errore durante il salvataggio di "'+mw.config.get('wgPageName')+'":<br>'+data.error.info);
							else{
								notif('Pagina "'+mw.config.get('wgPageName')+'" salvata.<br>Attendere il ricaricamento della pagina e controllare eventuali errori.');
								setTimeout(function(){
									window.location.reload();
								},3000);
							}
						})
						.fail(function(){
							warn('Errore durante il salvataggio di "'+mw.config.get('wgPageName')+'"');
						});
					}
					else warn('Non è stato possibile rimuovere automaticamente "toLoad" da "'+mw.config.get('wgPageName')+'". Rimuoverlo manualmente.');
				});
			};
			if(impost.length == 0){
				notif('I gadget da caricare sono già abilitati.<br>Attendere la rimozione automatica di "toLoad".');
				cb();
			}
			else{
				api.getToken('options')
				.done(function(token){
					if(typeof token == 'undefined'){
						warn('Errore durante la richiesta del token per le preferenze');
						return;
					}
					api.post({
						action: 'options',
						format: 'json',
						change: impost.join('|'),
						token: token
					})
					.done(function(data){
						if(data && data.error && data.error.info) warn('Errore durante l\'impostazione delle preferenze: ' + data.error.info);
						else{
							notif('Preferenze impostate.<br>Attendere la rimozione automatica di "toLoad".');
							cb();
						}
					})
					.fail(function(){
						warn('Impossibile impostare le preferenze');
					});
				})
				.fail(function(){
					warn('Impossibile ottenere il token per le preferenze');
				});
			}
		});
	});
});