Benutzer:PDD/helperFunctions.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
// helperFunctions.js:
// enthält obligatorische Hilfsfunktionen für [[Benutzer:PDD/monobook.js]]
// <nowiki>
if (typeof(drawquickbar) == 'undefined')
var drawquickbar = true;
////////////////////////////////////////////////////////////////////////////////////////
// URI-Parameter für fillActionPage(), benutzt in eintragen.js, hinweise.js
// außerdem in addEditAndRevertLinks.js (nur subjp, minorp, speichernp)
// nur in [[Benutzer:Euku/markErledigt.js]] : subjaddp
var subjp = "subj"; // Subject
var subjaddp = "subjadd"; // Subject zum Ranhängen
var textp = "txt"; // Für Text-Austausch
var insp = "ins"; // Vor dem Text einfügen
var addp = "add"; // an Text anhängen
var minorp = "minor"; // (k)leine Änderung
var nocreatep = "nocreate"; // beim Eintragen keine neue Seite generieren
// für autosave:
var asuserp = "asuser"; // usertoken
var astimep = "astime"; // timestamptoken
////////////////////////////////////////////////////////////////////////////////////////
// URI-Parameter für setReload() und doReload()
var reloadme = "neuladen"; // merker für reload
////////////////////////////////////////////////////////////////////////////////////////
// absenden()
// aufgerufen aus fillActionPage() und hinweis() in hinweise.js
function absenden() {
if (!debugme)
document.editform.wpSave.click();
else
alert ('Speichern');
}
////////////////////////////////////////////////////////////////////////////////////////
// fillActionPage() (früher aktion(), ganz früher loeschkandidat() )
// von Littl, ergänzt von Revvar
//
// Entnimmt Parameter aus der URI, fügt sie in die Textfelder ein und klickt ggf. auf "Speichern"
// (die aufgerufene Seite ist dabei immer im Editmodus)
function fillActionPage() {
// wenn Bausteineinfügung am Anfang:
// nur einfügen, wenn Seite noch nicht gelöscht
var pagedeleted = false;
if (document.getElementById("newarticletext"))
pagedeleted = true;
// nur einfügen, wenn noch nicht eingetragen
// der URI-Aktionsparameter ist immer entweder insp oder textp oder addp, daher else
var doubleinsert = false;
if (UrlParameters[textp] > "")
doubleinsert = findDoubleEntry(UrlParameters[textp], document.editform.wpTextbox1.value);
else if (UrlParameters[insp] > "")
doubleinsert = findDoubleEntry(UrlParameters[insp], document.editform.wpTextbox1.value);
else if (UrlParameters[addp] > "")
doubleinsert = findDoubleEntry(UrlParameters[addp], document.editform.wpTextbox1.value);
// Textfeld ausfüllen
if (UrlParameters[textp] > "") {
if (doubleinsert)
document.editform.wpTextbox1.value = UrlParameters[textp] + document.editform.wpTextbox1.value;
else
document.editform.wpTextbox1.value = UrlParameters[textp];
}
else if (UrlParameters[insp] > "")
document.editform.wpTextbox1.value = UrlParameters[insp] + document.editform.wpTextbox1.value;
else if (UrlParameters[addp] > "")
document.editform.wpTextbox1.value = document.editform.wpTextbox1.value + UrlParameters[addp];
// weitere Felder ausfüllen
if (UrlParameters[subjp] > "")
document.editform.wpSummary.value = UrlParameters[subjp];
if (UrlParameters[subjaddp] > "")
document.editform.wpSummary.value += UrlParameters[subjaddp];
if (UrlParameters[minorp] == "1")
document.editform.wpMinoredit.checked=true;
// wenn Textbaustein doppelt: Warnung
if (doubleinsert)
alert("Artikel enthält den gewählten Baustein bereits!");
// wenn Seite schon gelöscht: Warnung
else if (pagedeleted && (UrlParameters[nocreatep] == "1"))
alert("Artikel wurde bereits gelöscht!");
// wenn autosave eingeschaltet: Seite speichern
else if (validate_asuser (UrlParameters[asuserp])) {
if (validate_astime (UrlParameters[astimep]))
absenden();
else alert("Token zur automatischen Speicherung ist abgelaufen.");
}
}
if ((isEdit) && (!isSpecial)) addOnloadHook(fillActionPage);
////////////////////////////////////////////////////////////////////////////////////////
// findDoubleEntry()
// aufgerufen aus fillActionPage()
function findDoubleEntry(baustein, artikeltext) {
var doublette = false;
// wenn keine Vorlage enthalten: Abbruch
if (baustein == baustein.split("{{")[0]) return (doublette);
var chkbaustein = baustein.split("{{")[1].split("}}")[0].split("|")[0];
chkbaustein = "{{" + chkbaustein ;
if (navigator.userAgent.indexOf("Opera") == -1) {
// checking
// Zeilen wie die nächste generieren Fehler mit Opera, daher diesen Bereich auskommentiert
// Fehler: RegExp.prototype.compile: syntax error in pattern or string
// mit Firefox2 und IE7 geht das problemlos, hmm
if (artikeltext.search(chkbaustein) != -1)
doublette = true;
// Kleinschreibung & SLA & substs
if (chkbaustein == "{{Löschen") {
if (artikeltext.search("{{löschen") != -1)
doublette = true;
if (artikeltext.search("{{SLA") != -1)
doublette = true;
}
if (chkbaustein == "{{subst:Löschantrag") {
if (artikeltext.search("{{Löschantragstext") != -1)
doublette = true;
}
if (chkbaustein == "{{subst:Qualitätssicherung") {
if (artikeltext.search("{{QS-Antrag") != -1)
doublette = true;
}
} // end of Opera hack
return (doublette);
}
////////////////////////////////////////////////////////////////////////////////////////
// initQuickbar()
// positioniert den Quickbar
function initQuickbar() {
// Variables that could be defined in your monobook
if (typeof(keeplogo) == 'undefined')
keeplogo = false;
if (typeof(releasequickbar) == 'undefined')
releasequickbar = false;
var quickbarpos = "fixed";
// IE6- kann kein position:fixed und hat demzufolge Pech
if ( navigator.userAgent.indexOf("MSIE") > -1 )
quickbarpos = "absolute";
// IE7 und als MSIE maskiertes Opera 8/9: können position:fixed
if (( navigator.userAgent.indexOf("MSIE 7") > -1 ) || ( navigator.userAgent.indexOf("Opera") > -1 ))
quickbarpos = "fixed";
if (!keeplogo) {
// logo ausblenden (revvar)
document.getElementById("p-logo").style.visibility = "hidden";
// padding in column-one (platz für quickbar)
document.getElementById("column-one").style.paddingTop =
(10+document.getElementById("p-quickbar").clientHeight)+"px";
}
if (!releasequickbar) {
document.getElementById("p-quickbar").style.position = quickbarpos;
}
}
if (drawquickbar) addOnloadHook(initQuickbar);
////////////////////////////////////////////////////////////////////////////////////////
// doReload()
// setzt nach Reload die Reload-Selection wieder
function doReload() {
if (UrlParameters[reloadme] == "1") {
document.getElementById('reloadme').checked=true;
setReload();
}
}
if (!isEdit) addOnloadHook(doReload);
////////////////////////////////////////////////////////////////////////////////////////
// extendWpReason()
// hebt 255-Zeichen-Textfeldbegrenzung auf
function extendWpReason() {
var loeschgrund;
if (loeschgrund = document.getElementById('wpReason')) {
loeschgrund.setAttribute('maxLength',512);
}
}
if (wgAction == "delete") addOnloadHook(extendWpReason);
////////////////////////////////////////////////////////////////////////////////////////
// setReload()
// aufgerufen, wenn im Quickbar die Reload-Selection gesetzt wird
var timeoutaktiv;
function setReload() {
if (document.getElementById('reloadme').checked && (UrlParameters[reloadme] != "1")) {
var uri = (document.URL.indexOf('?') >0) ? ('&' + reloadme + '=1') : ('?' + reloadme + '=1');
timeoutaktiv = window.setTimeout(location.href=location.href+uri, timeout);
}
else if (document.getElementById('reloadme').checked && (UrlParameters[reloadme] == "1")) {
timeoutaktiv=window.setTimeout("location.reload()", timeout);
}
else {
window.clearTimeout(timeoutaktiv); // bizarr, timeoutaktiv ist hier gar nicht belegt?
}
}
////////////////////////////////////////////////////////////////////////////////////////
// checkAllDeletedVersions()
// alle Checkboxen auswählen, für Versionenwiederherstellung ([[Spezial:Wiederherstellen]])
// Idee: Poupou
// Autoren: BLueFiSH.as, Schwalbe (ursprünglich als "TaggAll()")
// Neue Version ohne JS-Errors: PDD
function checkAllDeletedVersions() {
var inputobject = document.getElementsByTagName("input");
for (var i=3; i<inputobject.length; i++)
inputobject[i].checked = true;
}
function revAllDeletedVersions() {
var inputobject = document.getElementsByTagName("input");
for (var i=3; i<inputobject.length; i++)
inputobject[i].checked = !inputobject[i].checked;
}
// obsolete Version davon!!
function TaggAll() {
if (minimalVersionStrong(49) < 49) checkAllDeletedVersions();
else checkAllDeletedVersions();
}
/*
* Stringlänge überprüfen für Zusammenfassungszeile
*/
function EditCommentLength(str) {
return (199-str.length);
}
////////////////////////////////////////////////////////////////////////////////////////
// undate()
// von [[Benutzer:D]]
// entlinkt verlinkte Daten
function undate() {
var tbvalue = document.editform.wpTextbox1.value;
tbvalue = tbvalue.replace(/\[\[\s*(\d+(er)?( v. Chr.)?)\s*\]\]/g, "$1");
tbvalue = tbvalue.replace(/\[\[\s*(\d+\. (Jahrhundert|Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember))\s*\]\]/g, "$1");
document.editform.wpTextbox1.value = tbvalue;
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// fixDash()
// von [[Benutzer:PDD]]
// speziell für BKLs: alle Striche zu endash vereinheitlichen
// ToDo: nur wenn davor oder danach Ziffer! + bei Leerzeichen (weg)
function fixDashes(s) {
s = s.replace(/\*([12][0-9]{3})/g, "* $1")
.replace(/†([12][0-9]{3})/g, "† $1")
.replace(/([^-0-9][12][0-9]{3})—/g, "$1–")
.replace(/([^-0-9][12][0-9]{3})-/g, "$1–")
.replace(/([^-0-9][12][0-9]{3})−/g, "$1–")
.replace(/([^-0-9][12][0-9]{3}) — /g, "$1–")
.replace(/([^-0-9][12][0-9]{3}) - /g, "$1–")
.replace(/([^-0-9][12][0-9]{3}) − /g, "$1–")
.replace(/([^-0-9][12][0-9]{3}) – /g, "$1–");
return (s);
}
function fixDash() {
// find editor
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = fixDashes(tb.value);
document.editform.wpDiff.click();
}
// other fixes
////////////////////////////////////////////////////////////////////////////////////////
// fixADB()
// von [[Benutzer:PDD]]
function fixADBs(s) {
// normalisieren
s = s.replace(/<[Tt][Tt]>/g, "<tt>");
s = s.replace(/<\/[Tt][Tt]>/g, "<\/tt>");
// groß-O in Zahlen -> Null
s = s.replace(/([0-9])O/g, "$10");
// keine kleinen Seiten
s = s.replace(/{{seite/g, "{{Seite");
// nach : am Zeilenanfang immer Space (für Quellenzeile)
s = s.replace(/\n:([^ ])/g, "\n: $1");
// aber nicht wenn mehrere : !
s = s.replace(/\n: :/g, "\n::");
// {{ADBAutor: neue Zeile und leerzeile
s = s.replace(/ {{ADBAutor/g, "\n\n{{ADBAutor");
s = s.replace(/([^\n])\n{{ADBAutor/g, "$1\n\n{{ADBAutor");
// small+seite: keine neue zeile
s = s.replace(/<small>\n{{Seite/g, "<small>{{Seite");
// und nicht nachm doppelpunkt
s = s.replace(/\n:\n{{Seite/g, "\n: {{Seite");
// ruler+small: keine leerzeile
s = s.replace(/----\n\n<small>/g, "----\n<small>");
// keine Tabs
s = s.replace(/\t/g, " ");
// keine mehrfachen Leerzeichen
s = s.replace(/ +/g, " ");
// keine Leerzeichen nach [[ADB:
s = s.replace(/\[\[ADB: /g, "\[\[ADB:");
// keine enclosed leerzeichen
s = s.replace(/ <tt> /g, " <tt>");
s = s.replace(/ <\/tt> /g, "<\/tt> ");
// formfix für references: leerzeichen vor tagschließer; leerzeile unnötig
s = s.replace(/<references\/>/g, "<references \/>");
s = s.replace(/\n\n<references \/>/g, "\n<references \/>");
// quarto & co.
s = s.replace(/º/g, "°");
s = s.replace(/⁰/g, "°");
s = s.replace(/<sup>o<\/sup>/g, "°");
s = s.replace(/<sup><small>0<\/small><\/sup>/g, "°");
s = s.replace(/<sup>0<\/sup>/g, "°");
// similar
s = s.replace(/<small><sup>1<\/sup><\/small>/g, "¹");
s = s.replace(/<small><sup>2<\/sup><\/small>/g, "²");
s = s.replace(/<small><sup>3<\/sup><\/small>/g, "³");
s = s.replace(/<sup>1<\/sup>/g, "¹");
s = s.replace(/<sup>2<\/sup>/g, "²");
s = s.replace(/<sup>3<\/sup>/g, "³");
s = s.replace(/<sup><small>1<\/small><\/sup>/g, "¹");
s = s.replace(/<sup><small>2<\/small><\/sup>/g, "²");
s = s.replace(/<sup><small>3<\/small><\/sup>/g, "³");
// falsche Striche wegmachen
s = s.replace(/ - /g, " – ")
.replace(/—/g, "–")
.replace(/─/g, "–")
.replace(/––/g, "–")
.replace(/––/g, "–");
s = s.replace(/ -,/g, " –,");
s = s.replace(/ -;/g, " –;");
// falsche Apostrophe auch
s = s.replace(/´/g, "’")
.replace(/`/g, "’")
.replace(/([A-Za-zß])‘([A-Za-zéî])/g, "$1’$2") // eingeschränkt wegen sgl. quotes
.replace(/([A-Za-zß])'([A-Za-zéî])/g, "$1’$2") // ab hier: eingeschränkt wegen fett/kursiv
.replace(/([a-zß])' /g, "$1’ ")
.replace(/([A-Za-zé])\.'s/g, "$1\.’s")
.replace(/\]\]' /g, "\]\]’ ")
.replace(/\]\]'s /g, "\]\]’s ");
// ganz falsche l-quotes
s = s.replace(/ ,,/g, " „");
// cleanup
// am Zeilenanfang: kein Space
s = s.replace(/\n /g, "\n");
// am Zeilenende auch nicht
s = s.replace(/ \n/g, "\n");
return (s);
}
function fixADB() {
// find editor
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = fixADBs(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// fixADBmore()
// von [[Benutzer:PDD]]
// this includes fixADB()
function fixADBmores(s) {
// safe guesses für dashfix (Rest: FixDash)
// nach Jahreszahl: ndash
s = s.replace(/([^-0-9][12][0-9]{3})-/g, "$1–");
// zwischen Wörtern: dash
s = s.replace(/([a-z])–([A-Za-z])/g, "$1-$2");
// vergröbert: zwischen Ziffern immer ndash!
s = s.replace(/([0-9])-([0-9])/g, "$1–$2");
// und bei römischen Zahlen dito!
// Achtung, C-Dur :-) (s.u.)
s = s.replace(/([ CLXVI][CLXVI])-([CLXVI])/g, "$1–$2");
// gesch. space: ausnahmsweise als entity statt unicode (weil sonst nicht erkennbar!)
s = s.replace(/ /g, " ");
// leading l statt 1
s = s.replace(/l([0-9]{3})/g, "1$1");
// 1 statt l
s = s.replace(/([A-Za-zÄÖUäöü][a-zäöü])1([^0-9])/g, "$1l$2");
s = s.replace(/([A-Za-zÄÖÜÉäöüâéè])1([a-zäöüâéè])/g, "$1l$2");
s = s.replace(/ 1([a-zäöü][a-zäöü])/g, " l$1");
s = s.replace(/ 1([’][^0-9])/g, " l$1");
// doppel-1
s = s.replace(/([A-Za-zÄÖÜäöü])11([a-zäöü])/g, "$1ll$2");
s = s.replace(/([a-zäöü][a-zäöü])11 /g, "$1ll ");
// ! statt l
s = s.replace(/([A-Za-zÄÖÜäöü])!([a-zäöü])/g, "$1l$2");
// I statt l
s = s.replace(/([a-zäöü])I([a-zäöü])/g, "$1l$2");
// trailing 8 / S
s = s.replace(/([a-z][a-z])S /g, "$1s ");
s = s.replace(/([a-z][a-z])8 /g, "$1’s ");
s = s.replace(/([a-z][a-z])16 /g, "$1ls ");
// other occasional OCR-induced typos
s = s.replace(/ Jm /g, " Im ");
s = s.replace(/ J-m /g, " Im ");
s = s.replace(/ Im (1[0-9][0-9][0-9])/g, " Im J\. $1");
s = s.replace(/ im (1[0-9][0-9][0-9])/g, " im J\. $1");
s = s.replace(/ Seit dem (1[0-9][0-9][0-9])/g, " Seit dem J\. $1");
s = s.replace(/ seit dem (1[0-9][0-9][0-9])/g, " seit dem J\. $1");
s = s.replace(/ Vom (1[0-9][0-9][0-9]) an/g, " Vom J\. $1 an");
s = s.replace(/ vom (1[0-9][0-9][0-9]) an/g, " vom J\. $1 an");
s = s.replace(/ Bis zum (1[0-9][0-9][0-9])/g, " Bis zum J\. $1");
s = s.replace(/ bis zum (1[0-9][0-9][0-9])/g, " bis zum J\. $1");
// s = s.replace(/ des (1[0-9][0-9][0-9])/g, " des J\. $1");
s = s.replace(/ dez /g, " des ");
s = s.replace(/ deZ /g, " des ");
s = s.replace(/ biz /g, " bis ");
s = s.replace(/ biZ /g, " bis ");
s = s.replace(/ alz /g, " als ");
s = s.replace(/ alS /g, " als ");
s = s.replace(/ alZ /g, " als ");
s = s.replace(/ waZ /g, " was ");
s = s.replace(/ uud /g, " und ");
// tricky: first generalize, then revert (Umschweife)
s = s.replace(/weife /g, "weise ");
s = s.replace(/schweise /g, "schweife ");
s = s.replace(/ndeu /g, "nden ");
s = s.replace(/ereu /g, "eren ");
s = s.replace(/teu /g, "ten ");
s = s.replace(/u\.f\.w\./g, "u\. s\. w\.");
s = s.replace(/u\. f\. w\./g, "u\. s\. w\.");
s = s.replace(/u\.f\.f\./g, "u\. s\. f\.");
s = s.replace(/u\. f\. f\./g, "u\. s\. f\.");
s = s.replace(/A\.D\.V\./g, "A\. D\. B\.");
s = s.replace(/A\. D\. V\./g, "A\. D\. B\.");
// regular missing markup
s = s.replace(/ Dr\. med\./g, " <tt>Dr\. med\.<\/tt>");
s = s.replace(/ Dr\. jur\./g, " <tt>Dr\. jur\.<\/tt>");
s = s.replace(/ Dr\. iur\./g, " <tt>Dr\. iur\.<\/tt>");
s = s.replace(/ Dr\. juris/g, " <tt>Dr\. juris<\/tt>");
s = s.replace(/ Dr\. iuris/g, " <tt>Dr\. iuris<\/tt>");
s = s.replace(/ Dr\. phil\. et theol\./g, " <tt>Dr\. phil\. et theol\.<\/tt>");
s = s.replace(/ Dr\. theol\. et phil\./g, " <tt>Dr\. theol\. et phil\.<\/tt>");
s = s.replace(/ Dr\. philos\./g, " <tt>Dr\. philos\.<\/tt>");
s = s.replace(/ Dr\. phil\./g, " <tt>Dr\. phil\.<\/tt>");
s = s.replace(/ Dr\. theol\./g, " <tt>Dr\. theol\.<\/tt>");
s = s.replace(/ Dr\. /g, " <tt>Dr\.<\/tt> ");
s = s.replace(/ Dr\.\,/g, " <tt>Dr\.<\/tt>\,");
s = s.replace(/\|Dr\. /g, "\|<tt>Dr\.<\/tt> ");
s = s.replace(/<tt>Dr<\/tt>\./g, "<tt>Dr\.<\/tt>");
s = s.replace(/<tt>M<\/tt>\./g, "<tt>M\.<\/tt>");
s = s.replace(/<tt>D<\/tt>\./g, "<tt>D\.<\/tt>");
s = s.replace(/<tt>P<\/tt>\./g, "<tt>P\.<\/tt>");
s = s.replace(/<tt>op<\/tt>\./g, "<tt>op\.<\/tt>");
s = s.replace(/<tt>Op<\/tt>\./g, "<tt>Op\.<\/tt>");
s = s.replace(/<tt>p<\/tt>\./g, "<tt>p\.<\/tt>");
s = s.replace(/ p<\/tt>\./g, " p\.<\/tt>");
s = s.replace(/ op\. /g, " <tt>op\.<\/tt> ");
s = s.replace(/ Op\. /g, " <tt>Op\.<\/tt> ");
s = s.replace(/\(op\. /g, "\(<tt>op\.<\/tt> ");
s = s.replace(/\(Op\. /g, "\(<tt>Op\.<\/tt> ");
s = s.replace(/ s\. v\. /g, " <tt>s\. v\.<\/tt> ");
s = s.replace(/ s\.v\. /g, " <tt>s\. v\.<\/tt> ");
s = s.replace(/ s\. v\.\n/g, " <tt>s\. v\.<\/tt>\n");
s = s.replace(/ s\.v\.\n/g, " <tt>s\. v\.<\/tt>\n");
s = s.replace(/ l\. c\./g, " <tt>l\. c\.<\/tt>");
s = s.replace(/ l\.c\./g, " <tt>l\. c\.<\/tt>");
s = s.replace(/ cm /g, " <tt>cm<\/tt> ");
s = s.replace(/ km /g, " <tt>km<\/tt> ");
s = s.replace(/ kg /g, " <tt>kg<\/tt> ");
// zahlen zusammenfassen
s = s.replace(/([0-9]) 000/g, "$1 000");
s = s.replace(/([0-9]) 500/g, "$1 500");
// genitiv-apostrophe enclosen
// erst generic:
s = s.replace(/([a-z])\]\]´s/g, "$1\]\]’s");
s = s.replace(/([a-z])\]\]'s/g, "$1\]\]’s");
// then specific
s = s.replace(/([a-z])\]\]’schen /g, "$1’schen\]\] ");
s = s.replace(/([a-z])\]\]’sches /g, "$1’sches\]\] ");
s = s.replace(/([a-z])\]\]’schem /g, "$1’schem\]\] ");
s = s.replace(/([a-z])\]\]’scher /g, "$1’scher\]\] ");
s = s.replace(/([a-z])\]\]’sche /g, "$1’sche\]\] ");
s = s.replace(/([a-z])\]\]’s /g, "$1’s\]\] ");
s = s.replace(/([a-z])\]\]’s\./g, "$1’s\]\]\.");
s = s.replace(/([a-z])\]\]’s,/g, "$1’s\]\],");
s = s.replace(/([a-z])\]\]’s\n/g, "$1’s\]\]\n");
s = s.replace(/([a-z])\]\]’ /g, "$1’\]\] ");
// aküfi: Abkürzungen wie usw. immer mit Leerzeichen dazwischen (extremer: mit )
s = s.replace(/''A\.D\.B\.''/g, "A\. D\. B\.");
s = s.replace(/''A\.D\.B''\./g, "A\. D\. B\.");
s = s.replace(/A\.D\.B\./g, "A\. D\. B\.");
s = s.replace(/u\.s\.w\./g, "u\. s\. w\.");
s = s.replace(/u\. s\.w\./g, "u\. s\. w\.");
s = s.replace(/u\.s\. w\./g, "u\. s\. w\.");
s = s.replace(/u\.s\.f\./g, "u\. s\. f\.");
s = s.replace(/u\. s\.f\./g, "u\. s\. f\.");
s = s.replace(/u\.s\. f\./g, "u\. s\. f\.");
s = s.replace(/a\.a\.O\./g, "a\. a\. O\.");
s = s.replace(/d\.h\./g, "d\. h\.");
s = s.replace(/z\.B\./g, "z\. B\.");
s = s.replace(/o\.J\./g, "o\. J\.");
s = s.replace(/ u\.a\.m\./g, " u\. a\. m\.");
s = s.replace(/ u\.a\./g, " u\. a\.");
s = s.replace(/ u\.A\./g, " u\. A\.");
s = s.replace(/a\.u\.a\.O\./g, "a\. u\. a\. O\.");
// Leerzeichen nach Seitenzahl
s = s.replace(/ S\.([0-9])/g, " S\. $1");
// und nach §
s = s.replace(/§([0-9])/g, "§ $1");
// und vor f./ff.
s = s.replace(/([0-9])f\. /g, "$1 f\. ");
s = s.replace(/([0-9])ff\. /g, "$1 ff\. ");
s = s.replace(/([0-9])f\.,/g, "$1 f\.,");
s = s.replace(/([0-9])ff\.,/g, "$1 ff\.,");
s = s.replace(/([0-9])f\.;/g, "$1 f\.;");
s = s.replace(/([0-9])ff\.;/g, "$1 ff\.;");
s = s.replace(/([0-9])f\.\n/g, "$1 f\.\n");
s = s.replace(/([0-9])ff\.\n/g, "$1 ff\.\n");
// einheitlich: dur/moll mit Bindestrich
s = s.replace(/–moll/g, "-moll");
s = s.replace(/–Moll/g, "-Moll");
s = s.replace(/–dur/g, "-dur");
s = s.replace(/–Dur/g, "-Dur");
return (s);
}
function fixADBmore() {
// find editor
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = fixADBs(tb.value);
tb.value = fixADBmores(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// unQuote()
// von [[Benutzer:PDD]]
function unQuotes(s) {
// falsche Quotes (müssen nachgefixt werden)
s = s.replace(/»/g, "\"");
s = s.replace(/«/g, "\"");
// ganz falsche sowieso
s = s.replace(/´´/g, "\"");
s = s.replace(/’’/g, "\"");
s = s.replace(/”/g, "\"");
// richtige auch
s = s.replace(/„/g, "\"");
s = s.replace(/“/g, "\"");
// cleanup
// am Zeilenanfang: kein Space
s = s.replace(/\n /g, "\n");
// am Zeilenende auch nicht
s = s.replace(/ \n/g, "\n");
return (s);
}
function unQuote() {
// find editor
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = unQuotes(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// moveTTq()
// von [[Benutzer:PDD]]
function moveTTqs(s) {
// normalisieren
s = s.replace(/<[Tt][Tt]>/g, "<tt>");
s = s.replace(/<\/[Tt][Tt]>/g, "<\/tt>");
// quotes sind fast immer innerhalb der TTs
s = s.replace(/„<tt>/g, "<tt>„");
s = s.replace(/<\/tt>“/g, "“<\/tt>");
// das Komma gehört danach!
s = s.replace(/“\,<\/tt>/g, "“<\/tt>\,");
return (s);
}
function moveTTq() {
// find editor
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = moveTTqs(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// unTT()
// von [[Benutzer:PDD]]
function unTTs(s) {
// normalisieren
s = s.replace(/<TT>/g, "<tt>");
s = s.replace(/<\/TT>/g, "<\/tt>");
// römische Zahlen werden nicht mehr tt-t (mit und ohne Punkt!)
s = s.replace(/<tt>([IVXLCDM]+)\.<\/tt>/g, "$1\.");
s = s.replace(/<tt>([IVXLCDM]+)<\/tt>/g, "$1");
return (s);
}
function unTT() {
// find editor
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = unTTs(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// unUL()
// von [[Benutzer:PDD]]
function unULs(s) {
// normalisieren
s = s.replace(/_/g, " ");
return (s);
}
function unUL() {
// find editor
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = unULs(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// unZeno()
// von [[Benutzer:PDD]]
function unZenos(s) {
// returns fixen
s = s.replace(/\n/g, "\n\n");
// Seitenzahlen rauskicken, Space zur Sicherheit
s = s.replace(/\[[0-9]{1,3}\]/g, " ");
// Verweispfeile raus, wieder Space
s = s.replace(/⇒/g, " ");
// entspacen & returns refixen
s = s.replace(/ +/g, " ");
s = s.replace(/\n /g, "\n");
s = s.replace(/(\n){3,}/g, "\n\n");
return (s);
}
function unZeno() {
// find editor
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = unZenos(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// unCRLF()
//
// von [[Benutzer:PDD]]
function unCRLFs(s) {
// replace double CRLF with weirdness
s = s.replace(/\n\n/g, "るなら");
// entferne alle CRLFs
s = s.replace(/\n/g, " ");
// expunge weirdness again
s = s.replace(/るなら/g, "\n\n");
// keine mehrfachen Leerzeichen
s = s.replace(/ +/g, " ");
return (s);
}
function unCRLF() {
// find editor
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = unCRLFs(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// doSplit()
// von [[Benutzer:PDD]]
// TO DO: nicht wenn am Zeilenanfang ein :
function doSplits(s) {
// cleanup 1
// am Zeilenanfang: kein Space
s = s.replace(/\n /g, "\n");
// am Zeilenende auch nicht
s = s.replace(/ \n/g, "\n");
// keine kleinen Seiten
s = s.replace(/{{seite/g, "{{Seite");
// vor {{Seite: neue Zeile
s = s.replace(/([^\n]){{Seite/g, "$1\n{{Seite");
// aber nicht nach small:
s = s.replace(/<small>\n{{Seite/g, "<small>{{Seite");
// und nicht nachm doppelpunkt
s = s.replace(/\n:\n{{Seite/g, "\n: {{Seite");
s = s.replace(/\n: \n{{Seite/g, "\n: {{Seite");
// Variante 1: danach auch Return (schönerer Quelltext, aber klebt dann leider am nächsten Wort)
// s = s.replace(/{{Seite\|([0-9]{1,3})}}([^\n])/g, "{{Seite\|$1}}\n$2");
// Variante 1 a: (datura):
// s = s.replace(/\{\{Seite\|\d{1,3}\}\}(?!\n)/g, "$&\n");
// Variante 2: danach Space und Fortsetzung
s = s.replace(/{{Seite\|([0-9]{1,3})}}\n/g, "{{Seite\|$1}} ");
s = s.replace(/{{Seite\|([0-9]{1,3})}}([^ ])/g, "{{Seite\|$1}} $2");
// 448 a-u
s = s.replace(/{{Seite\|448([a-u])}}\n/g, "{{Seite\|448$1}} ");
s = s.replace(/{{Seite\|448([a-u])}}([^ ])/g, "{{Seite\|448$1}} $2");
// cleanup 2
// am Zeilenanfang: kein Space
s = s.replace(/\n /g, "\n");
// am Zeilenende auch nicht
s = s.replace(/ \n/g, "\n");
return (s);
}
function doSplit() {
// find editor
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = doSplits(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// qFix()
// von [[Benutzer:PDD]]
function qFixs(s) {
// TT normalisieren
s = s.replace(/<TT>/g, "<tt>");
s = s.replace(/<\/TT>/g, "<\/tt>");
// keine mehrfachen Leerzeichen (#1)
s = s.replace(/ +/g, " ");
// keine enclosed leerzeichen (erzeugt evtl. mehrfach-spaces, werden danach entfernt)
s = s.replace(/<tt> /g, " <tt>");
s = s.replace(/ <\/tt>/g, "<\/tt> ");
// keine Tabs
s = s.replace(/\t/g, " ");
// keine mehrfachen Leerzeichen (#2)
s = s.replace(/ +/g, " ");
// am Zeilenanfang: kein Space
s = s.replace(/\n /g, "\n");
// am Zeilenende auch nicht
s = s.replace(/ \n/g, "\n");
// falsche Striche wegmachen
s = s.replace(/ - /g, " – ")
.replace(/ -\n/g, " –\n")
.replace(/—/g, "–")
.replace(/─/g, "–")
.replace(/––/g, "–")
.replace(/––/g, "–");
return (s);
}
function qFix() {
// quick fix for non-ADB pages
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = qFixs(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// apoFix()
// von [[Benutzer:PDD]]
function apoFixs(s) {
s = s.replace(/´/g, "’")
.replace(/`/g, "’")
.replace(/([A-Za-zß])‘([A-Za-zéî])/g, "$1’$2") // eingeschränkt wegen sgl. quotes
.replace(/([A-Za-zß])'([A-Za-zéî])/g, "$1’$2") // ab hier: eingeschränkt wegen fett/kursiv
.replace(/([a-zß])' /g, "$1’ ")
.replace(/([A-Za-zé])\.'s/g, "$1\.’s")
.replace(/\]\]' /g, "\]\]’ ")
.replace(/\]\]'s /g, "\]\]’s ");
return (s);
}
function apoFix() {
// quick apo fix for non-ADB pages
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = apoFixs(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// etcFix()
// von [[Benutzer:PDD]]
function etcFixs(s) {
s = s.replace(/ rc\./g, " etc\.")
.replace(/ ec\./g, " etc\.")
.replace(/ 1c\./g, " etc\.")
.replace(/ 2c\./g, " etc\.")
.replace(/ 2e\./g, " etc\.")
.replace(/ &c\./g, " etc\.");
return (s);
}
function etcFix() {
// quick etc fix for ADB pages
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = etcFixs(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// GBSRoundRobin()
// von [[Benutzer:PDD]]
function GBSRoundRobins(s) {
s = s.replace(/{{GBS\|/g, "{{GBDUMMY\|");
s = s.replace(/{{GBIA\|/g, "{{GBS\|");
s = s.replace(/{{GBDUMMY\|/g, "{{GBIA\|");
return (s);
}
function GBSRoundRobin() {
// switch GBS and GBIA
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = GBSRoundRobins(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// ItoS()
// von [[Benutzer:PDD]]
function ItoSs(s) {
s = s.replace(/ ''([A-Za-z])/g, " {{SperrSchrift\|$1");
s = s.replace(/\(''([A-Za-z])/g, "\({{SperrSchrift\|$1");
s = s.replace(/\n''([A-Za-z])/g, "\n{{SperrSchrift\|$1");
s = s.replace(/ ''„/g, " {{SperrSchrift\|„");
s = s.replace(/([A-Za-z])'' /g, "$1}} ");
s = s.replace(/([A-Za-z])''-/g, "$1}}-");
s = s.replace(/([A-Za-z])'',/g, "$1}},");
s = s.replace(/([A-Za-z])''\./g, "$1}}\.");
s = s.replace(/([A-Za-z])''\)/g, "$1}}\)");
s = s.replace(/“'' /g, "“}} ");
return (s);
}
function ItoS() {
// kursiv in sperrschrift (erstmal für panizza)
var form = document.forms['editform'];
if (!form) return;
var tb = form.elements['wpTextbox1'];
if (!tb) return;
tb.value = tb.value;
tb.value = ItoSs(tb.value);
document.editform.wpDiff.click();
}
////////////////////////////////////////////////////////////////////////////////////////
// insertAfter()
// neuen Node nach einem referenceNode einfügen
function insertAfter(parent, node, referenceNode) {
parent.insertBefore(node, referenceNode.nextSibling);
}
////////////////////////////////////////////////////////////////////////////////////////
// trim()
// Leerzeichen am Anfang und Ende entfernen
function trim(str) {
return str.replace(/^\s*|\s*$/g,"");
}
//
// Funktion nowcomm()
// Trägt NowCommons-Baustein ein
// (aufgerufen aus der monobook.js)
//
function nowcomm() {
var lemma = getLemma();
if (lemma.substring(0, 5) == "Bild:") lemma=lemma.slice(5);
var lemmaneu = prompt('Neuer Dateiname',lemma);
if (lemmaneu != null )
newtext('NowCommons','\{\{NowCommons|' + lemmaneu +'}}',3);
}
//
// Helper-Funktion getLemma()
// extrahiert Lemma, entfernt "Bild:" und "Kategorie:"
// (aufgerufen von eintragen() aus der eintragen.js, nowcomm() )
//
function getLemma () { //Littl
var lemma;
if ((isContrib) && ( UrlParameters["target"] > "" ))
lemma = UrlParameters["target"];
else if ( UrlParameters["title"] > "" )
lemma = UrlParameters["title"];
else {
lemma = decodeURIComponent(location.href.substring(location.href.indexOf("/wiki/") + 6)).split('#')[0];
// fix linky links (?redirect=no)
//lemma = lemma.split['\x3F'][0];
if (lemma.indexOf("redirect=no")!=-1)
lemma=lemma.substring(0,lemma.indexOf("redirect=no")-1);
}
// if (lemma.substring(0, 5) == "Bild:") lemma=lemma.slice(5);
// if (lemma.substring(0, 10) == "Kategorie:") lemma=lemma.slice(10);
if (isPHP) lemma=lemma.split('+').join('_');
return lemma;
}
// token functions
function generate_asuser () {
return encodeURIComponent(wgUserName);
}
function validate_asuser (asuser) {
var retval = false;
if (encodeURIComponent(asuser) == generate_asuser() )
retval = true;
return retval;
}
function generate_astime () {
var arbitrary_datestamp = Date.UTC(2008,10,1,0,0,0,0); // 1.11.2008
var current_date = new Date();
var current_timestamp = current_date.getTime();
return ( Math.floor((current_timestamp - arbitrary_datestamp) / 1000) );
}
function validate_astime (astime) {
var retval = false;
var timediff = generate_astime() - astime;
if ((timediff >= 0) && (timediff < 45))
retval = true;
return retval;
}
// </nowiki>