Utilisateur:Alex brollo/pagina.js

La bibliothèque libre.

Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
/* 
Ambiente per EditInView
oggetto pubblico: mw.eiv
 
funzioni pubbliche
* pageRead (pagina): legge il codice wiki della pagina corrente in un oggetto mw.contenuto.codice
* pageParse (mw.contenuto): esegue il parsing di mw.contenuto.codice in header, body, footer, user, level
* pageBuild (mw.contenuto): ricostruisce il nuovo mw.contenuto dai sottocampi
* pageSave (mw.contenuto) : salva l'oggetto mw.contenuto nella pagina corrente
* pageEdit (mw.contenuto): copia i campi di mw.contenuto in editbox
 
§ Nota: in header e footer sono contenuti i soli dati variabili
 
*/
 
(function (mw) {
	// ambiente globale editinview
	mw.eiv = {};
 
	// contenitore per wikicode
	mw.eiv.contenuto={};
 
	mw.eiv.pageRead = function (pagina) {
		if (pagina === undefined) pagina = mw.config.get('wgPageName');
		mw.eiv.contenuto.codice= $.ajax({
		url: "/w/index.php?action=raw&title=" + pagina,
		async: false
	}).responseText;
	}
 
	mw.eiv.pageParse = function (oggetto) {
	if (oggetto === undefined) oggetto = mw.eiv.contenuto;
	var headerEnd = mw.eiv.contenuto.codice.indexOf("</noinclude>") + "</noinclude>".length;
	var footerStart = mw.eiv.contenuto.codice.lastIndexOf("<noinclude>");
	mw.eiv.contenuto.body = mw.eiv.contenuto.codice.substring(headerEnd,footerStart);
	mw.eiv.contenuto.header= mw.eiv.contenuto.codice.substring(0, headerEnd);
	mw.eiv.contenuto.footer= mw.eiv.contenuto.codice.substring(footerStart);
	mw.eiv.contenuto.level = /level\=\"(\d)\"/.exec(mw.eiv.contenuto.header)[1];
	mw.eiv.contenuto.user = /user\=\"([^"]+)\"/.exec(mw.eiv.contenuto.header)[1];
	mw.eiv.contenuto.header=$.trim(mw.eiv.contenuto.header.replace(/\<noinclude\>\<pagequality.+\<div class\=\"pagetext\"\>/,"").replace("</noinclude>",""));
	mw.eiv.contenuto.footer=$.trim(mw.eiv.contenuto.footer.replace("<noinclude>","").replace("<references/>","").replace("</div></noinclude>",""));
	}
 
	mw.eiv.pageBuild = function (oggetto) {
	var template= '<noinclude><pagequality level="#LEVEL#" user="#USER#" /><div class="pagetext">#HEADER#\n\n</noinclude>' + 
	'#BODY#<noinclude>\n<references/>#FOOTER#</div></noinclude>';
	var codicePagina= template.replace("#LEVEL#",mw.eiv.contenuto.level===undefined ? "1" : mw.eiv.contenuto.level)
		.replace("#USER#",mw.eiv.contenuto.user===undefined ? wgUserName : mw.eiv.contenuto.footer)
		.replace("#HEADER#",mw.eiv.contenuto.header===undefined ? "" : mw.eiv.contenuto.header)
		.replace("#BODY#",mw.eiv.contenuto.body===undefined ? "" : mw.eiv.contenuto.body)
		.replace("#FOOTER#",mw.eiv.contenuto.footer===undefined ? "" : mw.eiv.contenuto.footer);
	// il codice pagina per l'output viene inserito in un campo di mw.eiv
	mw.eiv.output=codicePagina;
	}
	
    /*  tentiamo la generalizzazione
    data è un oggetto con i seguenti attributi opzionali:
    data.base (nome base della pagina); se indefinito base pagina corrente;
    data.pagenum (numero della pagina); se indefinito numero pagina corrente;
    data.sommario (sommario edit); se indefinito "javascript edit";
    data.output (testo completo della pagina, da ottenere con mw.eiv.pageBuild); se indefinito mw.eiv.output
    */
	mw.eiv.pageSave = function (data) {
		var base=wgPageName.substring(0,wgPageName.indexOf("/"));
		var pagenum=wgPageName.substring(wgPageName.indexOf("/")+1);
		
		var sommario="Javascript edit"
		var content=mw.eiv.output;
		if (typeof(data)==="string") sommario=data;
        if (typeof(data)==="object") {
        	if (data.base!==undefined) base=data.base;
        	if (data.pagenum!==undefined) pagenum=data.pagenum;
        	if (data.output!==undefined) content=data.output;
        	if (data.sommario!==undefined) sommario=data.sommario;
        }
        var pagename=base+"/"+pagenum;
        console.log(pagename);
		$.ajax({
		
        	url: mw.util.wikiScript( 'api' ),
        	data: {
            	format: 'json',
            	action: 'edit',
            	title: pagename,
            	summary: sommario,
            	text: content,
            	token: mw.user.tokens.values.editToken
        	},
        	dataType: 'json',
        	type: 'POST',
        	success: function( data ) {
        		if ( data && data.edit && data.edit.result == 'Success' ) {
					console.log("OK");
					if (wgPageName===pagename)  window.location.reload(); // reload page if edit was successful and edited page is 
					                                                      // current page
            		} else if ( data && data.error ) {
                		alert( 'Error: API returned error code "' + data.error.code + '": ' + data.error.info );
            			} else {
                			alert( 'Error: Unknown result from API.' );
        					 }
        		},
        		error: function( xhr ) {
        		 alert( 'Error: Request failed.' );
				}
    	});
	}
	// inizializzazione 
	
	
	
	if (wgCanonicalNamespace==="Page" && wgAction==="view") {
		mw.eiv.pageRead();
		mw.eiv.pageParse();
	}
}) (mw);