Mod Version:: 0.0.1
Autor: Nuramon
Mod Beschreibung::
- Ein einfacher Button, um innere Zitate in verschachtelten Zitaten zu entfernen.
Es ist ein einfaches Feature um Usern zu helfen, keine Posts mit kaputten BBCodes zu schreiben
(Japs, ich habe festgestellt, dass ziemlich viele User von Standard-Foren es nicht hinkriegen, die Tags richtig zu benutzen. Sie löschen einfach die erste Zeile und lassen völlig kaputten Code stehen^^)
Also wenn das Forum eine maximale Zahl an verschachtelten Zitaten hat, dann ist dieser Button noch nützlicher. User können einfach die Zitate, die zu viel sind, per Klick entfernen.
- Button, um alle inneren Zitate nach dem ersten zu entfernen.
Vorher:
[ externes Bild ]
Nachher:
[ externes Bild ]
Vielleicht geplante Features:
Ich hab ein paar Ideen in meinem Kopf, wie man das ganze hier noch erweitern könnte und so einen ganzen MOD draus macht.
Aber irgendwie fehlt mir der Antrieb, für mich brauche ich das nicht. Wenn aber wer Interesse an einem der Dinge hat oder es für sehr sinnvoll erachtet, dann nur zu, ich mach das gerne (:
- zusätzliche Buttons, um erst ab dem zweiten (dritten, vierten, ...) verschachtelten Zitat zu entfernen.
- Das Script in den OnLoad einbinden, sodass schon beim Öffnen des Posting-Editors die inneren Zitate gar nicht mehr drin stehen.
- -> Konfigurierbare Tiefe der Zitate im ACP
- -> Konfigurierbare Ja/Nein-Option des Users, ob er das automatische rauslöschen für sich haben möchte
- -> Konfigurierbare Tiefe der automatischen Entfernung, vom User selbst festlegbar
- Die BBCode-Reihenfolge mit den Tags überprüfen, um eine ErrorBox anzuzeigen, falls das Script die Quotes nicht löschen kann, weil Tags fehlen oder ähnliches
open styles/prosilver/posting_editor.html
Find:
Code: Alles auswählen
<div id="message-box">
<textarea <!-- IF S_UCP_ACTION and not S_PRIVMSGS and not S_EDIT_DRAFT -->name="signature" id="signature" style="height: 9em;"<!-- ELSE -->name="message" id="message"<!-- ENDIF --> rows="15" cols="76" tabindex="4" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();" class="inputbox">{MESSAGE}{DRAFT_MESSAGE}{SIGNATURE}</textarea>
</div>
Code: Alles auswählen
<div>
<input type="button" class="btnlite" name="delZitate" value="Innere Zitate entfernen"
onclick="
///// Some Variables ////////////////////////////////////////////////
var textarea = document.getElementsByName('message')[0];
var text = textarea.value;
var inside = 0;
///// Replace the quotes throw number of depth /////////////////////
for(var i=0; i<text.length; i++) {
if(text.indexOf('[quote')==i) {
text = text.replace('[quote', '[' + inside + '-rep');
inside++;
}
else if(text.indexOf('[/quote')==i) {
inside--;
text = text.replace('[/quote', '[/' + inside + '-rep');
if(inside<0) {
inside = 0;
}
}
}
///// Replace all with depth 1 or more //////////////////////////////
while(text.indexOf('[1-rep') != -1) {
var start = text.indexOf('[1-rep');
var end = text.indexOf('[/1-rep');
text = text.substring(0,start) + text.substr(end+8);
}
///// Convert the outer quote(s) back ///////////////////////////////
while(text.indexOf('0-rep') != -1) {
text = text.replace('0-rep', 'quote');
}
while(text.indexOf('\n\n\n') != -1) {
text = text.replace('\n\n\n', '\n\n');
}
///// Running throw the text to remove all \n after each quote //////
var endtext = '';
for(var i=0; i<text.length; i++) {
if(text.indexOf('[quote') == i) {
endtext += text.substring(0,i+5);
text = text.substr(i+5);
while(text.indexOf(']') == text.indexOf(']\n')) {
text = text.replace(']\n', ']');
}
i = 0;
}
}
endtext += text;
text = endtext;
textarea.value = text; " />
</div>