Benutzer:Anka Friedrich/signwarning.js
aus Wikipedia, der freien Enzyklopädie
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
// CHECK THAT I'VE REMEMBERED TO SIGN TALK PAGES AND IF NOT REMEMBER ME:
// original Script [[User:Olliminatore/signing.js]]
// modified since 24.07.2009 by [[User:Anka Friedrich]]
// current version 5.09.2014
// Der Code liefert viele Warnungen, bei mir funktioniert er aber (noch).
//<pre><nowiki>
String.prototype.trim = function(){return this.replace(/^\s*|\s*$/g,"")};
if (typeof usersignature == 'undefined') usersignature = ' --\~\~\~\~\n';
if (typeof regpages == 'undefined') { // list of all none talk pages
var regpages = [
':Administratoren/Notizen',
':Adminkandidaturen',
':Auskunft',
':Bilderwünsche',
':Fragen_zur_Wikipedia',
':Löschkandidaten',
':Meinungsbilder',
':Qualitätssicherung',
':Review',
':Redaktion_',
':Verbesserungsvorschläge'
];
}
if (typeof warnonce == 'undefined') { //Warnung nur einmal ausgeben
var warnonce = false;
}
// regarded pages type encoded
if (wgCanonicalNamespace.match(/talk$|Diskussion$/i)) var regpages = "";
for (p in regpages) if (wgPageName.indexOf(regpages[p]) != -1){regpages=false; break}
/* add/removeEvent Original idea by John Resig
Tweaked by Scott Andrew LePera, Dean Edwards and Peter-Paul Koch
Fixed for IE by Tino Zijdel (crisp) @date 2005-10 */
function addEvent(obj,type,fn){if(obj.addEventListener){obj.addEventListener(type,fn,false)}else if(obj.attachEvent){var eProp=type+fn;obj["e"+eProp]=fn;obj[eProp]=function(){obj["e"+eProp](window.event)};obj.attachEvent("on"+type,obj[eProp])}else{obj['on'+type]=fn}};
function removeEvent(obj,type,fn){if(obj.removeEventListener){obj.removeEventListener(type,fn,false)}else if(obj.detachEvent){var eProp=type+fn;obj.detachEvent("on"+type,obj[eProp]);obj['e'+eProp]=null;obj[eProp]=null}else{obj['on'+type]=null}};
if (!regpages)
$(function(){
if (!(window.editform = document.forms['editform'])) return;
// Add a new checkbox to the Wiki editOptions.
sigBox = document.createElement("input");
sigBox.setAttribute('type','checkbox');
sigBox.setAttribute('name','wpSigning');
sigBox.setAttribute('id','wpSigning');
sigBox.setAttribute('checked','checked');
sigBox.defaultChecked=true;
neuB = document.createElement("label");
neuB.appendChild(sigBox);
neuB.appendChild(document.createTextNode("Signaturwarnung"));
neuB.setAttribute('for','wpSigning');
neuB.setAttribute('title','Bei fehlender Signatur warnen.');
function setSigBox() { // switch enable box
if (editform.wpMinoredit.checked) sigBox.setAttribute('disabled','disabled');
else sigBox.removeAttribute('disabled');
};
var txtarea=editform.elements['wpTextbox1'];
var txtOld=txtarea.value.trim();
// txtOld_l=txtOld.length
var txtOldEnd=txtOld.slice(-24);
var sig = /~{3}/g;
if (!tNode){
//editform.insertBefore(neuB, editform.elements['wpWatchthis']); // maybe FIXME: raised an NS_DOM_ERR!
// var tNode = editform.elements['wpMinoredit'].parentNode; // DOM workaround!? → Geht nicht bei Abschnitt hinzufügen, weil da der Button fehlt
var tNode = editform.elements['wpWatchthis'].parentNode; // DOM workaround!?
tNode.divs = tNode.getElementsByTagName("DIV");
tNode.divs = tNode.divs.item(tNode.divs.length-1); // last div
tNode.insertBefore(neuB, tNode.divs);
setSigBox();
}
function warnSign(event){
if(editform.onsubmit=='' && warnonce ){ // only once!
removeEvent(editform.wpSave,"click",doSign);
removeEvent(editform.wpPreview,"click",doSign);
}
if(editform.wpMinoredit.checked || !sigBox.checked) return;
txtarea.focus();
var cOld = txtOld.match(/<nowiki>.*?~{3}.*?<\/nowiki>/g); // exception for nowiki
if (cOld) cOld = cOld.length;
cNew = txtarea.value.match(sig); if (cNew) cNew = cNew.length;
if (cNew > cOld){ // if there are a sign, check for true
var cNew2 = txtarea.value.match(/\{\{subst\:unsig.*?~{3}\}\}/); // exception for Template:unsigned
cNew -= (cNew2)?cNew2.length:0;
}
if(cNew <= cOld){ // if nothing then search a set position
return editform.onsubmit=new Function("editform.onsubmit='';"
+"return confirm('Es wurde keine Signierung gefunden. Trotzdem fortfahren?')");
}
else if(!sig.test(txtOld) || cOld < cNew) return;
if (event) event=(window.Event)? event.target: event.srcElement;
if (event.name == 'wpPreview') return; // not for preview
return editform.onsubmit=new Function("editform.onsubmit='';"
+"return confirm('Es wurde keine Signierung gefunden. Trotzdem fortfahren?')");
};
addEvent(editform.wpSave,"click", warnSign);
addEvent(editform.wpPreview,"click", warnSign);
addEvent(editform.wpMinoredit,"click", setSigBox);
});
//*** end ***
//</nowiki></pre>