Benutzer:Nastoshka/common.js
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
/*
HERZLICHEN DANK DEM ITALIENISCHEN WIKISOURCE FÜR DIESE SEHR NÜTZLICHE TOOLS
und besonders dem [[Benutzer:Alex brollo]]
*/
function scriviNumero(line, num) {
var str = line;
var n = 0;
//salta gli spazi ad inizio riga
while (str.charAt(0) && str.charAt(0) == ' ') {
str = str.substring(1);
n++;
}
//salta gli ":" ad inizio riga
while (str.charAt(0) && str.charAt(0) == ':') {
str = str.substring(1);
n++;
}
if (n > 0) line = line.substring(0, n) + "{{Zeile|" + num + "}}" + line.substring(n);
else line = "{{Zeile|" + num + "}}" + line;
return line;
}
/* aggiunge il numero di riga
* con mod=1 mette il numero ogni ultimo verso del paragrafo
* con mod=2 mette il numero ogni x righe
*
* TODO: escludere le righe con {{Centrato}}
*/
function numeroRiga(mod, x) {
var testoCasella = document.getElementById("wpTextbox1").value;
// cancella tutti gli R //
if (mod === 0) {
while (find_stringa(testoCasella, "{{Zeile|", "}}", 1) !== "") {
testoCasella = testoCasella.replace(find_stringa(testoCasella, "{{Zeile|", "}}", 1), '');
}
while (find_stringa(testoCasella, "{{zeile|", "}}", 1) !== "") {
testoCasella = testoCasella.replace(find_stringa(testoCasella, "{{zeile|", "}}", 1), '');
}
document.getElementById("wpTextbox1").value = testoCasella;
return;
}
//esci se manca il poem
if (testoCasella.indexOf("<poem>") == -1 || testoCasella.indexOf("</poem>") == -1) {
console.log("uscita 1");
return;
}
//prende il poem in cui si trova il cursore
var pos = document.getElementById("wpTextbox1").selectionStart;
begin = testoCasella.substring(0, pos + 6).lastIndexOf("<poem>");
if (begin == -1) {
console.log("uscita 2");
return;
}
end = testoCasella.substring(begin).indexOf("</poem>") + testoCasella.substring(0, begin).length;
var prima = testoCasella.substring(0, begin + 6);
var dopo = testoCasella.substring(end);
//scomponi il testo in singole righe
var lines = testoCasella.substring(begin + 6, end).split("\n");
var num = 1;
var center = false;
//solo in namespace Pagina, fai scegliere all'utente da che numero partire (l'ultimo numero della pagina prima)
if (mw.config.get("wgCanonicalNamespace") == "Page") {
//se questo è il primo poem della pagina, proponi di continuare dall'ultimo numero; altrimenti proponi 1
if (begin == testoCasella.indexOf("<poem>")) {
verso = mw.util.getParamValue('verso');
if (!verso) {
if (typeof testoPagPrec != 'undefined' && typeof ultimoV != 'undefined') verso = ultimoV();
else verso = "1";
}
// aggiunta di Alex brollo: si esegue solo se esistono la funzione ultimoV e la variabile testoPagPrec
} else verso = "1";
num = parseInt(prompt("da che numero parto?", verso));
}
num--;
for (var i = 0; i < lines.length; i++) {
//non considerare il testo dentro <center></center>
if (lines[i].toLowerCase().lastIndexOf("<center>") > -1) center = true;
//salta le righe vuote, o centrate, o marcate con {{r-}}
if (!center && lines[i].replace(/\s/g, "") !== "" && lines[i].toLowerCase().indexOf("{{r-}}") == -1) {
num++;
//in modalita' 1, controlla che la prossima riga sia l'ultima o una riga bianca
if (mod == 1 && (i + 1 >= lines.length || lines[i + 1].replace(/\s/g, "") === "")) {
lines[i] = scriviNumero(lines[i], num);
}
if (mod == 2 && num % x === 0) {
lines[i] = scriviNumero(lines[i], num);
}
}
if (lines[i].toLowerCase().lastIndexOf("</center>") > -1) center = false;
}
//rimetti insieme le righe
var out = lines[0];
for (i = 1; i < lines.length; i++) {
out = out + "\n" + lines[i];
}
document.getElementById("wpTextbox1").value = prima + out + dopo;
//modifica il link alla prossima pagina, in modo da "ricordarsi" a che verso siamo arrivati
if (mw.config.get("wgCanonicalNamespace") == "Page" && mw.config.get("wgAction") != 'history' && $("#ca-next span a").length) {
mw.loader.using('ext.proofreadpage.page', function () {
setURLVar($("#ca-next span a"), "verso", num + 1);
act = $("#editform").attr("action");
});
}
}
/*
function newRegexTool(name, functionname, descrizione) {
var link=$("<a>").attr("href","javascript:"+functionname).attr("title","descrizione").addClass("sidebar_link").text(name);
var newLi=$("<li>").append(link);
$("#p-tb ul").append(newLi);
}
$(document).ready(function () {
if (mw.config.get("wgCanonicalNamespace")==="Page"
&& (mw.config.get("wgAction")==="edit" ||mw.config.get("wgAction")==="submit" )) {
// regexTool("numero ogni 3 versi","numeroRiga(2,3)");
// regexTool("numero ogni 4 versi","numeroRiga(2,4)");
regexTool("numero ogni 5 versi","numeroRiga(2,5)");
regexTool("numero a fine strofa","numeroRiga(1)");
regexTool("elimina numeri","numeroRiga(0)");
}
});
*/
/*
HERZLICHEN DANK DEM ITALIENISCHEN WIKISOURCE FÜR DIESE SEHR NÜTZLICHE TOOLS
*/
// inizializzazione di localStorage.memoRegex come oggetto vuoto se indefinito
if (localStorage.memoRegex===undefined) localStorage.memoRegex=JSON.stringify({});
function regexTool(name, functionname, descrizione) {
if (!descrizione) {
descrizione = name;
}
if (mw.config.get("wgServer") === "//de.wikisource.org") {
newButton({
nome: name,
funzione: functionname,
messaggio: descrizione,
classe: "buttonRfm",
stile: "display:none",
azione: "es"
});
}
if (skin == "monobook") {
var voce = $('<li><a href="javascript:' + functionname + '" title="' + descrizione + '">' + name + '</a></li>');
$("#p-regex").append(voce);
return;
}
var newline = document.createElement('li');
var newlink = document.createElement('a');
newlink.setAttribute('href', 'javascript:' + functionname);
newlink.setAttribute('title', descrizione);
newlink.setAttribute('class', 'sidebar-link');
newlink.appendChild(document.createTextNode(name));
newline.appendChild(newlink);
toollist.appendChild(newline);
}
function leggiBox(area) {
if (area === undefined) {
if (mw.config.get('wgCanonicalNamespace') == "Page" || $("#editBox").length===1) area = 1;
else area = 0;
}
return $('textarea')[area] === undefined ? '' : $('textarea')[area].value;
}
function creaBottoniera() {
$('#' + (mw.user.options.get('skin') === 'modern' ? 'mw_' : '') + 'content')
.append('<div id="newtattoo" align="right" style="position:fixed;bottom:0; right:0; background-color:white; border: 1px solid; border-color:#F0F0F0; z-index:1500;"></div>');
}
function applicaPoem() {
var textbox = document.getElementsByName('wpTextbox1')[0];
textbox.value = '<poem>' + textbox.value.replace(/\s+$/, "").replace(/^\s+/, "") + '</poem>\n';
}
function aggiustaParagrafi() {
textbox = document.getElementsByName('wpTextbox1')[0];
testo = textbox.value;
poems = produciLista(testo, "<poem>", "</poem>", 1);
for (i = 0; i < poems.length; i += 1) {
testo = testo.replace(poems[i], "[#" + i + "#]");
}
testo = testo.replace(/ \n/g, "\n").replace(/([\.\?\!»]\n)([^\n])/g, '$1\n$2');
for (i = 0; i < poems.length; i += 1) {
testo = testo.replace("[#" + i + "#]", poems[i]);
}
textbox.value = testo;
}
function find_stringa(testo, idi, idf, dc, x) {
idip = testo.indexOf(idi);
idfp = testo.indexOf(idf, idip + idi.length) + idf.length;
if (idip > -1 && idfp > -1) {
if (x !== "") {
while (count(testo.slice(idip, idfp), x) > count(testo.slice(idip, idfp), idf)) {
idfp = testo.indexOf(idf, idfp) + idf.length;
}
}
if (dc === 0) {
vvalore = testo.slice(idip + idi.length, idfp - idf.length);
} else {
vvalore = testo.slice(idip, idfp);
}
} else {
vvalore = "";
}
return vvalore;
}
function newButton(nome, funzione, azione, messaggio) {
// azione è una stringa composta da v,e,s,h rispettivamente view,edit,submit,history
// se nome è un oggetto svolgilo
var p;
if (typeof(nome) === "string") {
p = {
nome: nome,
funzione: funzione,
azione: azione,
messaggio: messaggio
};
} else {
p = nome;
}
if (p.messaggio===undefined) p.messaggio="Keine Hilfe";
if (p.classe===undefined) p.classe="baseButton";
if (p.stile===undefined) p.stile="display:inline";
if (p.namespaces!==undefined) {
var listaNamespaces=p.namespaces.split("|");
for (var i=0; i<listaNamespaces.length; i+=1) {
listaNamespaces[i]=$.trim(listaNamespaces[i]);
if (["ns0", "Main", "Haupt"].indexOf(listaNamespaces[i]) !== -1) {
listaNamespaces[i] == "";
}
}
if ($.inArray(mw.config.get('wgCanonicalNamespace'),p.namespaces.split(","))==-1) return;
}
// Passo 1: se newtatooo non esiste, lo crea
if ($("#newtattoo").length==0) creaBottoniera();
// fine se azione=history
if (mw.config.get('wgAction') === "history") {
return;
}
// normalizzazione function
if (p.funzione.indexOf("(") === -1 && p.funzione.indexOf(")") === -1) {
p.funzione += "()";
}
// default: bottone presente in view, edit,
if (p.azione === undefined) {
p.azione = "ves";
}
// messaggio di default
if (p.messaggio === undefined) {
p.messaggio = "Keine Hilfe";
}
// valutazione condizione di visualizzazione
if (mw.config.get('wgAction') === "edit" && p.azione.indexOf("e") === -1) {
return;
}
if (mw.config.get('wgAction') === "view" && p.azione.indexOf("v") === -1) {
return;
}
if (mw.config.get('wgAction') === "submit" && p.azione.indexOf("s") === -1) {
return;
}
// caso pulsante=immagine
if (p.nome.substring(0, 2) == "//") {
var 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 {
var 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>';
}
$("#newtattoo").append($(html));
return false;
}
function produciLista(testo, s1, s2, delim, x) {
lista = [];
while (find_stringa(testo, s1, s2, true, x) > "") {
elemento = find_stringa(testo, s1, s2, true, x);
testo = testo.replace(elemento, "");
if (delim) {
lista.push(elemento);
} else {
lista.push(elemento.slice(s1.length, - s2.length));
}
}
return lista;
}
/* conta il numero di occorrenze di stringa dentro testo*/
function count(testo, stringa) {
n = 0;
while (testo.indexOf(stringa) > -1) {
n = n + 1;
testo = testo.replace(stringa, "");
}
return n;
}
function joinLines() {
// eliminazione acapo che esclude sia i testi <poem> che le righe che iniziano con ";:#*" (liste html)
var editbox = document.getElementsByName('wpTextbox1')[0];
// fase 1: codifica
if (editbox.value.indexOf("<poem") != -1) {
lista = produciLista(editbox.value, "<poem", "</poem>", 1);
for (i = 0; i <= lista.length - 1; i = i + 1) {
marcatore = "###" + i + "###";
editbox.value = editbox.value.replace(lista[i], marcatore);
}
}
// fase2: eliminazione acapo singoli, con conservazione dei multipli
//if (mw.config.get("wgTitle").indexOf("Trattato di archeologia (Gentile).djvu")==-1) {
editbox.value = editbox.value.replace(/([^>}\n])\n([^<\n\:\;\*\#\|\{])/g, '$1 $2'); //linux
editbox.value = editbox.value.replace(/([^>}\r\n])\r\n([^<\r\n\:\;\*\#\|\{])/g, '$1 $2'); //windows
// }
// eliminazione sequenze di spazi, sostituiti da spazio singolo
editbox.value = editbox.value.replace(/ +/g, ' ');
// fase 3: decodifica
if (editbox.value.indexOf("###0###") != -1) {
for (i = 0; i <= lista.length - 1; i = i + 1) {
marcatore = "###" + i + "###";
editbox.value = editbox.value.replace(marcatore, lista[i]);
}
}
}
newButton("join", "joinLines()");
newButton("Sistema","aggiustaParagrafi()");
newButton("Poema", "applicaPoem()");
newButton("ogni 5","numeroRiga(2,5)");
newButton("fine strofa","numeroRiga(1)");
newButton("pulisci zeile","numeroRiga(0)");
// WIKIWÖRTERBUCH NACHSCHLAGEN
mw.loader.load('//en.wikinews.org/w/index.php?title=MediaWiki%3AGadget-dictionaryLookupHover.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400');
// Links
mw.util.addPortletLink('p-navigation','/wiki/Wikisource:Verlinkungen','LinkBiblioteche');
mw.util.addPortletLink('p-navigation','/wiki/Wikisource:Tipps_und_Tricks_für_Korrektoren','KorrekturenTips');
// Buttons
/**
* Extra buttons in toolbar
* @stats [[File:Krinkle_InsertWikiEditorButton.js]]
*/
$.ajax({
dataType: 'script',
cache: true,
url: '//meta.wikimedia.org/w/index.php?title=User:Krinkle/Scripts/InsertWikiEditorButton.js&action=raw&ctype=text/javascript'
}).done(function () {
// Happy face
krInsertWikiEditorButton({
id: "mw-customeditbutton-myspecialbutton",
icon: "//upload.wikimedia.org/wikipedia/commons/0/02/Gnome-stock_person_KA.svg",
label: 'PERSONDATA',
insertBefore: '{{Personendaten |NACHNAME=',
insertAfter: '|VORNAMEN= |ALTERNATIVNAMEN= |SORTIERUNG= |PERSON= |KURZBESCHREIBUNG= |SONSTIGES= |GEBURTSDATUM= |GEBURTSORT=[[]] |STERBEDATUM= |STERBEORT=[[]] |STERBEPRÄPO= |BILD= |WIKIQUOTE= |COMMONS= |PND= }}',
sampleText: 'Nastoshka/common.js'
});
});