Benutzer:PDD/helperFunctions.js
Erscheinungsbild
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
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
// helperFunctions.js:
// enthält obligatorische Hilfsfunktionen für [[Benutzer:PDD/monobook.js]]
// <nowiki>
if (typeof(rcalertbox) == 'undefined')
var rcalertbox = true;
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 (plus add)
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)
do_rc_alert("Artikel enthält den gewählten Baustein bereits!");
// wenn Seite schon gelöscht: Warnung
else if (pagedeleted && (UrlParameters[nocreatep] == "1"))
do_rc_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)) jQuery(document).ready(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";
var quickbar = document.getElementById("p-quickbar");
var plogo = document.getElementById("p-logo");
if (!keeplogo && plogo) {
// logo ausblenden (revvar)
plogo.style.visibility = "hidden";
// padding in column-one (platz für quickbar)
var column = document.getElementById("column-one") || document.getElementById("mw-panel");
if (column && quickbar)
column.style.paddingTop = (10 + quickbar.clientHeight) + "px";
}
if (!releasequickbar && quickbar) {
quickbar.style.position = quickbarpos;
}
}
if (drawquickbar) jQuery(document).ready(initQuickbar);
////////////////////////////////////////////////////////////////////////////////////////
// doReload()
// setzt nach Reload die Reload-Selection wieder
function doReload() {
if (UrlParameters[reloadme] == "1") {
document.getElementById('reloadme').checked=true;
setReload();
}
}
if (!isEdit) jQuery(document).ready(doReload);
////////////////////////////////////////////////////////////////////////////////////////
// extendWpReason()
// hebt 255-Zeichen-Textfeldbegrenzung auf
function extendWpReason() {
var loeschgrund;
if (loeschgrund = document.getElementById('wpReason')) {
loeschgrund.setAttribute('maxLength',512);
}
}
if ( mw.config.get('wgAction') == "delete" ) jQuery(document).ready(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() {
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()
// speziell für BKLs: alle Striche zu endash vereinheitlichen
// ursprünglich von [[Benutzer:PDD]]
// 9.1.2014: neue Version von [[Benutzer:TMg]]
function fixDashes(s) {
// Leerzeichen vor Geburts- und Sterbejahre
return s.replace(/([*†])([12]\d{3}\b)/g, "$1 $2")
// Bis-Striche in Jahreszahlenbereiche ohne Ende, z.B. 1991-?
.replace(/([\s!'(>|„][12]\d{3}) *[–—−-] *\?/g, "$1–?")
// Bis-Striche in 4-stellige Jahreszahlenbereiche, z.B. 1991-1992
.replace(/([\s!'(>|„]([12]\d{3})) *[–—−-] *(([12]\d{3})[!,.:;?]?[\s!')<|“])/g,
function($0, $1, $2, $3, $4) {
return $2 < $4 ? $1 + "–" + $3 : $0;
});
}
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();
}
////////////////////////////////////////////////////////////////////////////////////////
// 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,"");
}
////////////////////////////////////////////////////////////////////////////////////////
// do_rc_alert()
function do_rc_alert(str) {
if (rcalertbox) alert(str);
}
//
// Funktion nowcomm()
// Trägt NowCommons-Baustein ein
// (aufgerufen aus der monobook.js)
//
function nowcomm() {
var lemmaneu = prompt('Dateiname auf Commons:', mw.config.get( 'wgTitle' ));
if (lemmaneu != null )
newtext('NowCommons','\{\{NowCommons|' + lemmaneu +'}}',3);
}
//
// Helper-Funktion getLemma()
// (aufgerufen von eintragen() aus der eintragen.js )
//
function getLemma () {
var lemma;
lemma = mw.config.get( 'wgPageName' );
return lemma;
}
//
// Helper-Funktion extractLemma()
// hack: nur noch für contribs
// (aufgerufen von eintragen() aus der eintragen.js )
//
function extractLemma () { //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( mw.config.get( '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>