-
05. 02. 2005, 01:28 #1Mitglied
ex-Moderator
- Registriert seit
- Feb 2000
- Beiträge
- 6.894
[phpBB] Einfügen von Smilies etc an Cursorposition
Mit Firefox gibt es bei sehr vielen Boards das Problem, dass man Smilies etc. immer nur am Ende des Beitrages einfügen kann und diese dann hochschieben muss. Das ist sehr lästig.
Hier im Gulli-Board wurde ein Script (?) so abgeändert, dass auch mit Firefox die Smilies dort erscheinen, wo der Cursor im Moment steht. Einen entsprechenden Thread habe ich im Feedback-Forum auch gefunden.
Nun habe ich einen Admin auf einem anderen Board darauf angesprochen; dort wird ein phpBB 2.0.10 verwendet. Leider haben seine bisherigen Versuche nicht zum Erfolg geführt.
Weiß jemand, was man dort ändern muss, so dass auch mittels Firefox (wohl auch Opera betroffen) die Smilies usw. an der Cursorposition eingefügt werden?
Schonmal danke!
grtz
BuggerT
-
05. 02. 2005, 02:31 #2
Hier findest Du deine Lsg.
http://www.portedmods.com/kb-article-67.html
mfGr
To be a misanthrop and a nihilist rulez the world.
Wer lesen und denken kann, ist klar im Vorteil.
Auf Wunsch der Admins also in kurz: Los bedanken!
Mein PGP Schlüssel sporadisch online
-
05. 02. 2005, 02:53 #3Mitglied
ex-Moderator
(Threadstarter)
- Registriert seit
- Feb 2000
- Beiträge
- 6.894
Thx, nbk. Ich hab's dem Admin geemailt. Mal sehen, ob der das hinkriegt
.
grtz
BuggerT
-
05. 02. 2005, 13:53 #4Desastreuse
- Registriert seit
- Jan 2003
- Beiträge
- 359
Danke für den Lösungslink, selbes Fehlerchen auch bei uns noch gewesen.

*geht Usi-Techi antreiben*CU Levy
-
06. 02. 2005, 17:45 #5
Im Firefox funktioniert es damit prima jetzt.

Im Opera ist es noch schlimmer geworden, der schmeisst jetzt nicht nur den Smilie immer noch ans Ende, sondern gleich den ganzen Postingtext nochmal in Kopie mit dazu.
CU UserX
-
07. 02. 2005, 01:14 #6
Tja usi,
das Problem ist Opera scheint gar keine Möglichkeit zu bieten herauszufinden, wo der Cursor sich gerade aufhält.
Ich gebe erstmal folgenden Workaround, so das zumindest der Smilie am Ende eingefügt wird.
Edit: ein leerzeichen entfernt, der war doppelt.Code:function emoticon(text) { text = ' ' + text + ' '; if (document.post.message.createTextRange && document.post.message.caretPos) { var caretPos = document.post.message.caretPos; caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text; document.post.message.focus(); } else if(typeof document.post.message.selectionStart != 'undefined') { posttextarea = document.post.message; selected=(posttextarea.value).substring(posttextarea.selectionStart,posttextarea.selectionEnd); str=' ' + text + ' '; posttextarea.focus(); start=posttextarea.selectionStart; end=posttextarea.textLength; endtext=posttextarea.value.substring(posttextarea.selectionEnd,end); starttext=posttextarea.value.substring(0,start); posttextarea.value=starttext + str + endtext; posttextarea.selectionStart=start; posttextarea.selectionEnd=start; return; } /* für die übrigen Browser */ else { //Opera kann cursorposition anscheinend nicht document.post.message.value+= text; document.post.message.focus(); }
mfGr
Geändert von natbornkiller (07. 02. 2005 um 10:31 Uhr)
To be a misanthrop and a nihilist rulez the world.
Wer lesen und denken kann, ist klar im Vorteil.
Auf Wunsch der Admins also in kurz: Los bedanken!
Mein PGP Schlüssel sporadisch online
-
07. 02. 2005, 09:30 #7
Prima, schon eingebaut.

Dankeschön. http://www.doctor.co.th/YaBBImages/S...trunk/kiss.gifCU UserX
-
11. 03. 2005, 23:44 #8Mitglied
ex-Moderator
(Threadstarter)
- Registriert seit
- Feb 2000
- Beiträge
- 6.894
Mmhh, beim aktuellen phpBB 2.0.13 kann ich die entsprechenden Stellen nicht finden. Genauer gesagt, da wurde einiges abgeändert.
Gibt es einen neuen Hack?
grtz
BuggerT
-
13. 03. 2005, 18:32 #9
Die Javascipt function findet sich jetzt in der posting_smilies.tpl und da kann man den obigen Hack wuie gehabt ersetzen.
mfGr
To be a misanthrop and a nihilist rulez the world.
Wer lesen und denken kann, ist klar im Vorteil.
Auf Wunsch der Admins also in kurz: Los bedanken!
Mein PGP Schlüssel sporadisch online
-
13. 03. 2005, 19:43 #10Mitglied
ex-Moderator
(Threadstarter)
- Registriert seit
- Feb 2000
- Beiträge
- 6.894
Sorry, nbk, aber bei mir unterscheidet sich das auch in der "posting_smilies.tpl".
Die sieht bei mir so aus:
PHP-Code:<script language="javascript" type="text/javascript">
<!--
function emoticon(text) {
text = ' ' + text + ' ';
if (opener.document.forms['post'].message.createTextRange && opener.document.forms['post'].message.caretPos) {
var caretPos = opener.document.forms['post'].message.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
opener.document.forms['post'].message.focus();
} else {
opener.document.forms['post'].message.value += text;
opener.document.forms['post'].message.focus();
}
}
//-->
</script>
<table width="100%" border="0" cellspacing="0" cellpadding="10">
<tr>
<td><table width="100%" border="0" cellspacing="1" cellpadding="4" class="forumline">
<tr>
<th class="thHead" height="25">{L_EMOTICONS}</th>
</tr>
<tr>
<td><table width="100" border="0" cellspacing="0" cellpadding="5">
<!-- BEGIN smilies_row -->
<tr align="center" valign="middle">
<!-- BEGIN smilies_col -->
<td><a href="javascript:emoticon('{smilies_row.smilies_col.SMILEY_CODE}')"><img src="{smilies_row.smilies_col.SMILEY_IMG}" border="0" alt="{smilies_row.smilies_col.SMILEY_DESC}" title="{smilies_row.smilies_col.SMILEY_DESC}" /></a></td>
<!-- END smilies_col -->
</tr>
<!-- END smilies_row -->
<!-- BEGIN switch_smilies_extra -->
<tr align="center">
<td colspan="{S_SMILIES_COLSPAN}"><span class="nav"><a href="{U_MORE_SMILIES}" onclick="open_window('{U_MORE_SMILIES}', 250, 300);return false" target="_smilies" class="nav">{L_MORE_SMILIES}</a></td>
</tr>
<!-- END switch_smilies_extra -->
</table></td>
</tr>
<tr>
<td align="center"><br /><span class="genmed"><a href="javascript:window.close();" class="genmed">{L_CLOSE_WINDOW}</a></span></td>
</tr>
</table></td>
</tr>
</table>
Wie du siehst, passt das von portedmods.com nicht richtig. Ich nehme an, ich kann das nicht einfach so ersetzen.
grtz
BuggerT
-
13. 03. 2005, 21:05 #11
hm.
Ich habe mich verwirren lassen.
Also in der posting_body.tpl findet sich das Zeile 75 ff
Und das wird ersetzt durch meine obige function emoticon nicht die von portedmods.com, warum musst Du noch mal oben nachlesen.PHP-Code:function checkForm() {
formErrors = false;
if (document.post.message.value.length < 2) {
formErrors = "{L_EMPTY_MESSAGE}";
}
if (formErrors) {
alert(formErrors);
return false;
} else {
bbstyle(-1);
//formObj.preview.disabled = true;
//formObj.submit.disabled = true;
return true;
}
}
function emoticon(text) {
var txtarea = document.post.message;
text = ' ' + text + ' ';
if (txtarea.createTextRange && txtarea.caretPos) {
var caretPos = txtarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
txtarea.focus();
} else {
txtarea.value += text;
txtarea.focus();
}
}
function bbfontstyle(bbopen, bbclose) {
var txtarea = document.post.message;
if ((clientVer >= 4) && is_ie && is_win) {
theSelection = document.selection.createRange().text;
if (!theSelection) {
txtarea.value += bbopen + bbclose;
txtarea.focus();
return;
}
document.selection.createRange().text = bbopen + theSelection + bbclose;
txtarea.focus();
return;
}
else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
{
mozWrap(txtarea, bbopen, bbclose);
return;
}
else
{
txtarea.value += bbopen + bbclose;
txtarea.focus();
}
storeCaret(txtarea);
}
mfGrPHP-Code:function checkForm() {
formErrors = false;
if (document.post.message.value.length < 2) {
formErrors = "{L_EMPTY_MESSAGE}";
}
if (formErrors) {
alert(formErrors);
return false;
} else {
bbstyle(-1);
//formObj.preview.disabled = true;
//formObj.submit.disabled = true;
return true;
}
}
function emoticon(text) {
text = ' ' + text + ' ';
if (document.post.message.createTextRange && document.post.message.caretPos) {
var caretPos = document.post.message.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
document.post.message.focus();
}
else if(typeof document.post.message.selectionStart != 'undefined')
{
posttextarea = document.post.message;
selected=(posttextarea.value).substring(posttextarea.selectionStart,posttextarea.selectionEnd);
str=' ' + text + ' ';
posttextarea.focus();
start=posttextarea.selectionStart;
end=posttextarea.textLength;
endtext=posttextarea.value.substring(posttextarea.selectionEnd,end);
starttext=posttextarea.value.substring(0,start);
posttextarea.value=starttext + str + endtext;
posttextarea.selectionStart=start;
posttextarea.selectionEnd=start;
return;
}
/* für die übrigen Browser */
else
{
//Opera kann cursorposition anscheinend nicht
document.post.message.value+= text;
document.post.message.focus();
}
}
function bbfontstyle(bbopen, bbclose) {
var txtarea = document.post.message;
if ((clientVer >= 4) && is_ie && is_win) {
theSelection = document.selection.createRange().text;
if (!theSelection) {
txtarea.value += bbopen + bbclose;
txtarea.focus();
return;
}
document.selection.createRange().text = bbopen + theSelection + bbclose;
txtarea.focus();
return;
}
else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
{
mozWrap(txtarea, bbopen, bbclose);
return;
}
else
{
txtarea.value += bbopen + bbclose;
txtarea.focus();
}
storeCaret(txtarea);
}
To be a misanthrop and a nihilist rulez the world.
Wer lesen und denken kann, ist klar im Vorteil.
Auf Wunsch der Admins also in kurz: Los bedanken!
Mein PGP Schlüssel sporadisch online
-
13. 03. 2005, 21:19 #12
Nachtrag zur posting_smilies.tpl
Dieses Template betrifft die Funktion weitere Buttons, wenn man sich mit den Standardsmilies nicht anfreunden kann oder als zu wenig empfindet. Diese muss natürlich auch Firefox und opera kompatibel gemacht werden.
Dazu ersetzt man die vorhanden emoticon Funktion durch folgende
wie man sieht hat sich nur der Bezug geändert im Gegensatz zur oben genannten Änderung, da man ja als Objekt der Einsetzung die Textarea der posting.php manipulieren will und nicht das per Javascript geöffnete Fenster.
mfGrPHP-Code:function emoticon(text) {
text = ' ' + text + ' ';
if (opener.document.forms['post'].message.createTextRange && opener.document.forms['post'].message.caretPos) {
var caretPos = opener.document.forms['post'].message.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
opener.document.forms['post'].message.focus();
}
else if(typeof opener.document.forms['post'].message.selectionStart != 'undefined')
{
posttextarea = opener.document.forms['post'].message;
selected=(posttextarea.value).substring(posttextarea.selectionStart,posttextarea.selectionEnd);
str=' ' + text + ' ';
posttextarea.focus();
start=posttextarea.selectionStart;
end=posttextarea.textLength;
endtext=posttextarea.value.substring(posttextarea.selectionEnd,end);
starttext=posttextarea.value.substring(0,start);
posttextarea.value=starttext + str + endtext;
posttextarea.selectionStart=start;
posttextarea.selectionEnd=start;
return;
}
/* für die übrigen Browser */
else
{
//Opera kann cursorposition anscheinend nicht
opener.document.forms['post'].message.value+= text;
opener.document.forms['post'].post.message.focus();
}
}
//-->
</script>
To be a misanthrop and a nihilist rulez the world.
Wer lesen und denken kann, ist klar im Vorteil.
Auf Wunsch der Admins also in kurz: Los bedanken!
Mein PGP Schlüssel sporadisch online
-


Zitieren
mehr lesen...





IT-Geschichte: Spender können...
Gestern, 23:04 in gulli:news