MediaWiki:Gadget-EditInView.js
Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.
- Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
- Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
- Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
- Opera: premi Ctrl-F5.
/************************************
zona funzioni pubbliche utilizzate anche in altri gadget
*/
function saveEditBox(level) {
if (level===3) return savePage75;
if (level===4) return savePage100;
}
function autoSAL100(testo) {
pagequality=find_stringa(testo,"<pagequality ","/>",1);
pagequalityNew=pagequality.replace('level="3"', 'level="4"');
user=find_stringa(pagequality,'user="','"',1);
userNew='user="'+mw.config.get("wgUserName")+'"';
pagequalityNew=pagequalityNew.replace(user,userNew);
testo=testo.replace(pagequality, pagequalityNew);
mw.sommario="/* Pagine_SAL_100% */ (by eiv)";
return testo;
}
function savePage0() {
// var headerSchema='<noinclude><pagequality level="0" user="USER" /><div class="pagetext">TEXT\n\n\n</noinclude>';
// var footerSchema='<noinclude>\n<references/></div></noinclude>' ;
var headerSchema='<noinclude><pagequality level="0" user="USER" />TEXT</noinclude>';
var footerSchema='<noinclude></noinclude>' ;
headerSchema=headerSchema.replace("USER",mw.config.get("wgUserName")).replace("TEXT","");
testo=headerSchema+" "+footerSchema;
mw.sommario="/* Pagine_SAL_0% */ by eiv";
return testo;
}
function savePage75() {
// var headerSchema='<noinclude><pagequality level="LEVEL" user="USER" /><div class="pagetext">TEXT\n\n\n</noinclude>';
// var footerSchema='<noinclude>TEXT</div></noinclude>' ;
var headerSchema='<noinclude><pagequality level="LEVEL" user="USER" />TEXT</noinclude>';
var footerSchema='<noinclude>TEXT</noinclude>' ;
var contenuto=mw.contenuto;
var level="3";
if (level!==contenuto.level) {
contenuto.header=headerSchema.replace("LEVEL",level).replace("USER",mw.config.get("wgUserName")).replace("TEXT",$.trim(leggiBox(0)));}
else {
contenuto.header=headerSchema.replace("LEVEL",contenuto.level).replace("USER",contenuto.user).replace("TEXT",$.trim(leggiBox(0)));}
contenuto.footer=footerSchema.replace("TEXT",$.trim(leggiBox(2)));
testo=contenuto.header+leggiBox(1)+contenuto.footer;
mw.sommario="/* Pagine_SAL_75% */ by savePage75()";
return testo;
}
function savePage100() {
// var headerSchema='<noinclude><pagequality level="LEVEL" user="USER" /><div class="pagetext">TEXT\n\n\n</noinclude>';
// var footerSchema='<noinclude>TEXT</div></noinclude>' ;
var headerSchema='<noinclude><pagequality level="LEVEL" user="USER" />TEXT</noinclude>';
var footerSchema='<noinclude>TEXT</noinclude>' ;
var contenuto=mw.contenuto;
var level="4";
if (level!==contenuto.level) {
contenuto.header=headerSchema.replace("LEVEL",level).replace("USER",mw.config.get("wgUserName")).replace("TEXT",$.trim(leggiBox(0)));}
else {
contenuto.header=headerSchema.replace("LEVEL",contenuto.level).replace("USER",contenuto.user).replace("TEXT",$.trim(leggiBox(0)));}
contenuto.footer=footerSchema.replace("TEXT",$.trim(leggiBox(2)));
var testo=contenuto.header+leggiBox(1)+contenuto.footer;
mw.sommario="/* Pagine_SAL_100% */ by eiv";
return testo;
}
// Variante di newButton(), aggiunge il bottone in areaBottoni di editBox. Funzione pubblica.
function newButtonx(nome, funzione,messaggio) {
if ($("#areaBottoni").length===-1) {alert ("Errore: non c'è un regolare editBox"); return;}
if (mw.config.get("wgAction")!=="view") {alert ("Errore: chiamata di newButtonx() in modalità diversa da view"); return;}
// se nome è un oggetto svolgilo
var p;
var html="";
if (typeof(nome) === "string") {
p = {
nome: nome,
funzione: funzione,
messaggio: messaggio
};
} else {
p = nome;
}
if (p.messaggio===undefined) p.messaggio="Nessun aiuto registrato";
if (p.classe===undefined) p.classe="baseButton";
if (p.stile===undefined) p.stile="display:inline";
// normalizzazione function
if (p.funzione.indexOf("(") === -1 && p.funzione.indexOf(")") === -1) {
p.funzione += "()";
}
// messaggio di default
if (p.messaggio === undefined) {
p.messaggio = "Nessun messaggio di aiuto registrato";
}
// caso pulsante=immagine
if (p.nome.substring(0, 2) == "//") {
html = '<img class="'+p.classe+'" style="'+p.stile+'" src="' + p.nome + '" onclick="' + p.funzione + '" title="' + p.messaggio +'"';
if (p.ondblclick!==undefined) html+=' ondblclick="'+p.ondblclick+'"';
html+='/>';
}
// caso pulsante=label
else {
html = '<button class="'+p.classe+'" style="'+p.stile+'" type="button" title="' + p.messaggio + '" onclick="' + p.funzione +'"';
if (p.ondblclick!==undefined) html+=' ondblclick="'+p.ondblclick+'"';
html+='><small>' + p.nome + '</small></button>';
}
$("#areaBottoni").append($(html));
return false;
}
/****************************************
* zona iffy
*/
(function ($,mw) {
// crea un oggetto mw.editinview
mw.editinview= {};
mw.editinview.zoom_in = function () {
immagine=$("#divImg").length>0 ? $("#divImg") : $(".prp-page-image img");
var width=immagine.css("width").replace("px","");
var height=immagine.css("height").replace("px","");
fact=(width*1+50.0)/width;
immagine.css("width",Math.round(width*fact)+"px");
immagine.css("height",Math.round(height*fact)+"px");
};
mw.editinview.zoom_out = function () {
immagine=$("#divImg").length>0 ? $("#divImg") : $(".prp-page-image img");
var width=immagine.css("width").replace("px","");
var height=immagine.css("height").replace("px","");
fact=(width*1-50.0)/width;
immagine.css("width",Math.round(width*fact)+"px");
immagine.css("height",Math.round(height*fact)+"px");
};
mw.editinview.saveDefault = function () {
if (isOdd(mw.config.get("wgPageName").substring(mw.config.get("wgPageName").lastIndexOf("/")+1))) {
localStorage.imgStyleOdd=$(".prp-page-image img").attr("style");
} else
{
localStorage.imgStyleEven=$(".prp-page-image img").attr("style");
}
};
mw.editinview.deleteDefault =function () {
localStorage.removeItem("imgStyleOdd");
localStorage.removeItem("imgStyleEven");
console.log("Cancellati imgStyleOdd e imgStyleEven");
};
mw.editinview.attivaEditBox =function (pagina) {
if ($("#editBox").length===1) {
if ($("#editBox").css("display")==="none") {
$("#content").css("margin-left","0px");$("#mw-panel, #mw-head, #mw-page-base").css("display","none");
$("#editBox").show();
}
else {
$("#editBox").hide();
}
}
else {
// sospendo la chiamata a rfmenu
// rfmenu();
$("#content").css("margin-left","0px");$("#mw-panel, #mw-head, #mw-page-base").css("display","none");
mw.editinview.creaBoxEdit(pagina);
}
};
mw.editinview.pvToggle=function () {
$("#previewBox").toggle();
};
mw.editinview.disattivaEditBox =function () {
$("#editBox").hide();
$("#content").css("margin-left","10em");
$("#mw-panel, #mw-head, #mw-page-base").css("display","block");
};
mw.editinview.editPage =function (callback, pagename) {
var content;
if (pagename===undefined) {
pagename = mw.config.get("wgPageName");
}
if(callback===savePage75 || callback===savePage100 || callback===savePage0) {
content = callback();
}
else {
content = $.ajax({url:"/w/index.php?action=raw&title="+pagename,async:false}).responseText;
content = callback(content);
}
if (mw.sommario===undefined) mw.sommario="Edit via eiv: "+callback.name;
$.ajax({
url: mw.util.wikiScript( 'api' ),
data: {
format: 'json',
action: 'edit',
title: pagename,
summary: mw.sommario,
text: content,
token: mw.user.tokens.get('csrfToken')
},
dataType: 'json',
type: 'POST',
success: function( data ) {
if ( data && data.edit && data.edit.result == 'Success' ) {
if (callback !== savePage0 ) window.location.reload(); // reload page if edit was successful
} 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.' );
}
});
};
// aggiunge due lentine zoom in - out
function zoom() {
var bottoniEdit='<div style="position:fixed;top:100px;right:130px; z-index:1000; opacity:0.6; filter: alpha(opacity=60)">'+
'<span id="zoomout" title="Riduci l\'immagine"></span> '+
'<span id="zoomin" title="Ingrandisci l\'immagine"></span> ';
if (mw.config.get("wgAction")==="edit") bottoniEdit=bottoniEdit+
'<span id="previewToggle" title="Visualizza/nascondi preview"></span> ';
if (mw.config.get("wgAction")==="view") bottoniEdit=bottoniEdit+
'<span id="saveDefault" title="Click: memorizza posizione e grandezza dell\'immagine;\ndoppio click: cancella i dati (ricaricare la pagina!)"></span> '+
'<span id="editButton" title="Attiva la modalità Edit In View"></span> '+
'<span id="editButtonDelete" title="Disattiva la modalità Edit In View"></span> ';
bottoniEdit=bottoniEdit+'</div>';
//aggancia i bottoni solo se c'e' l'immagine della scansione
if ($(".prp-page-image img").length)
$("body").append(bottoniEdit);
$("#zoomin").attr("onclick","mw.editinview.zoom_in()").append($("<img src='//upload.wikimedia.org/wikipedia/commons/thumb/9/95/Viewmag%2B.png/20px-Viewmag%2B.png'/>"));
$("#previewToggle").attr("onclick","mw.editinview.pvToggle()").append($("<img src='//upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Window_new.png/20px-Window_new.png'/>"));
$("#zoomout").attr("onclick","mw.editinview.zoom_out()").append($("<img src='//upload.wikimedia.org/wikipedia/commons/thumb/a/ac/Viewmag-.png/20px-Viewmag-.png'/>"));
$("#editButton").attr("onclick","mw.editinview.attivaEditBox()").append($("<img src='//upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Farm-Fresh_pencil_add.png/20px-Farm-Fresh_pencil_add.png'/>"));
$("#editButtonDelete").attr("onclick","mw.editinview.disattivaEditBox()").append($("<img src='//upload.wikimedia.org/wikipedia/commons/thumb/6/6d/Farm-Fresh_pencil_delete.png/20px-Farm-Fresh_pencil_delete.png'/>"));
$("#saveDefault").attr("onclick","mw.editinview.saveDefault()").dblclick(function () {mw.editinview.deleteDefault();} ).append($("<img src='//upload.wikimedia.org/wikipedia/commons/thumb/2/21/Nuvola_apps_knotes.png/20px-Nuvola_apps_knotes.png'/>"));
if (mw.config.get("wgAction")==="view" && mw.config.get("wgCanonicalNamespace")=="Page") {
height=Math.max(
/\d+/.exec($(".prp-page-content").css("height")),
/\d+/.exec($(".prp-page-image img").css("height")))+"px";
$(".prp-page-image").css("height",height).css("overflow","hidden");
$(".prp-page-image img").draggable();
loadDefault();
}
}
/// funzioni per ajaxEdit
// restituisce il contenuto in JSON formattato della variabile mw.memoRegex (sostituzioni "ricordate")
// per salvare in Utente:Nome utente/memoRegex, chiamare: editPage(textMemoRegex,"Utente"+mw.config.get("wgUserName")+"/memoRegex")
function textMemoRegex() {
return JSON.stringify(JSON.parse(localStorage.memoRegex),null,4);
}
// salva in localStorage.memoRegex il contenuto di Utente:Nome utente/memoRegex
function saveMemoRegex() {
var testo=$.ajax({url:"//it.wikisource.org/w/index.php?action=raw&title=Utente:"+
mw.config.get("wgUserName")+"/memoRegex",async:false}).responseText;
mw.memoRegex=JSON.parse(testo);
localStorage.memoRegex=JSON.stringify(mw.memoRegex);
}
mw.editinview.leggiPagina= function (pagina) {
if (pagina === undefined) pagina = mw.config.get('wgPageName');
var contenuto = $.ajax({
url: "/w/index.php?action=raw&title=" + pagina,
async: false
}).responseText;
var noincludeList = produciLista(contenuto, '<noinclude>', '</noinclude>', 1);
var header = noincludeList[0];
var footer = noincludeList[noincludeList.length - 1];
var body = find_stringa(contenuto, header, footer, 0);
header=$.trim(header.replace("<noinclude>","")
.replace("</noinclude>","")
.replace('<div class="pagetext">',""));
var pagequality=find_stringa(header,"<pagequality", "/>",1);
header=header.replace(pagequality,"");
footer=footer.replace("<noinclude>","").replace("</noinclude>","").replace("</div>","");
var user=find_stringa(pagequality,'user="','"',0);
var level=find_stringa(pagequality,'level="','"',0);
mw.contenuto={};
mw.contenuto.header=header;
mw.contenuto.body=body;
mw.contenuto.footer=footer;
mw.contenuto.user=user;
mw.contenuto.level=level;
mw.contenuto.pagina=pagina;
return;
};
function isOdd(n) {
if (n%2===0) {
return false;
} else {
return true;
}
}
function loadDefault() {
if (isOdd(mw.config.get("wgPageName").substring(mw.config.get("wgPageName").lastIndexOf("/")+1))) {
if (localStorage.imgStyleOdd) $(".prp-page-image img").attr("style",localStorage.imgStyleOdd);
} else
{
if (localStorage.imgStyleEven) $(".prp-page-image img").attr("style",localStorage.imgStyleEven);
}
}
mw.editinview.creaBoxEdit= function (pagina) {
var box='<div style="display:none; border:1px solid black; position:absolute; top:50px; left:100px; z-index:99; background-color:#efefef;padding:3px;" id="editBox"></div>';
$(box).appendTo($("body"));
$("#editBox").append($("<div id='handle' style='width:100%; background-color:#dfdfdf; min-height:10px;' ><div id='areaBottoni' style='float:left;max-width:400px'></div> </div>"));
//$("#handle").append($('<img src="//upload.wikimedia.org/wikipedia/commons/thumb/c/c7/100_percents.svg/20px-100_percents.svg.png" style="float:right;cursor:pointer;" onclick="mw.editinview.editPage(savePage100)" >'));
//$("#handle").append($('<img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/49/75%25.svg/20px-75%25.svg.png" style="float:right;cursor:pointer;" onclick="mw.editinview.editPage(savePage75)" >'));
$("#editBox").draggable({ handle: "areaBottoni" });
$("#editBox").append($("<textarea style='width:100%; height:30px; border:1px solid gray;' />"));
$("#editBox").append($("<textarea name='wpTextbox1' rows='30' style='width:500px; border:1px solid gray;' />"));
$("#editBox").append($("<textarea style='width:100%; height:30px; border:1px solid gray;' />"));
mw.editinview.leggiPagina(pagina);
if((mw.contenuto.level==="3" && mw.contenuto.user!==mw.config.get("wgUserName")) || mw.contenuto.level==="4" ) {
$("#handle").append($('<img src="//upload.wikimedia.org/wikipedia/commons/thumb/c/c7/100_percents.svg/20px-100_percents.svg.png" style="float:right;cursor:pointer;" onclick="mw.editinview.editPage(savePage100)" >'));
}
$("#handle").append($('<img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/49/75%25.svg/20px-75%25.svg.png" style="float:right;cursor:pointer;" onclick="mw.editinview.editPage(savePage75)" >'));
$("#handle").append($('<img src="//upload.wikimedia.org/wikipedia/commons/f/f8/Tooltip-CloseButton.png" style="float:right;cursor:pointer;" onclick="$("#editBox").hide()">'));
importScript("Utente:"+mw.config.get("wgUserName")+"/PersonalButtonx.js");
$("textarea").eq(0).val(mw.contenuto.header);
$("textarea").eq(1).val(mw.contenuto.body);
$("textarea").eq(2).val(mw.contenuto.footer);
$("#editBox textarea").focusin(function () {mw.activeElement=this;});
};
$(document).ready(function() {
if (mw.config.get("wgCanonicalNamespace")==="Page") {
if ($(".iwpage").length===0) zoom();
newButton("edit","mw.editinview.attivaEditBox()","v","Attivazione edit box");
}
if ($(".quality3.prp-page-qualityheader").length===1 && mw.config.get("wgCanonicalNamespace")==="Page") {
newButton("autoSAL100","mw.editinview.editPage(autoSAL100)","v","porto SAL a 100%");
//$("#p-tb ul").append($("<li><a href='javascript:mw.editinview.editPage(autoSAL100)'>auto SAL 100%</a></li>"));
}
});
}) ($,mw);