Utilisateur:Alex brollo/pagina.js
Apparence
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);