Dein erster Besuch? Lies dir bitte zuerst die Regeln durch, dann erst registrieren!

Seite druckenArtikel empfehlengulli RSS News Feedsgulli twittertgulli:Newsletter
 
Antwort
Alt 05. 02. 2005, 01:28   # 1
BuggerT
Mitglied
ex-Moderator
 
Registriert seit: Feb 2000
Beiträge: 6.896
Standard [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
BuggerT ist offline   Mit Zitat antworten
Alt 05. 02. 2005, 02:31   # 2
natbornkiller
selbsthilfe durch google
ex-Moderator
 
Benutzerbild von natbornkiller
 
Registriert seit: May 2002
Beiträge: 6.389
Standard

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
natbornkiller ist offline   Mit Zitat antworten
Alt 05. 02. 2005, 02:53   # 3
BuggerT
Mitglied
ex-Moderator
(Threadstarter)
 
Registriert seit: Feb 2000
Beiträge: 6.896
Standard

Thx, nbk. Ich hab's dem Admin geemailt. Mal sehen, ob der das hinkriegt .


grtz
BuggerT
BuggerT ist offline   Mit Zitat antworten
Alt 05. 02. 2005, 13:53   # 4
Levy
Desastreuse
 
Registriert seit: Jan 2003
Beiträge: 359
Standard

Danke für den Lösungslink, selbes Fehlerchen auch bei uns noch gewesen.

*geht Usi-Techi antreiben*
CU Levy
Levy ist offline   Mit Zitat antworten
Alt 06. 02. 2005, 17:45   # 5
UserX
Kasuist
ex-Moderator
 
Benutzerbild von UserX
 
Registriert seit: Mar 2000
Ort: Gehenna
Beiträge: 4.380
Standard

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
UserX ist offline   Mit Zitat antworten
Alt 07. 02. 2005, 01:14   # 6
natbornkiller
selbsthilfe durch google
ex-Moderator
 
Benutzerbild von natbornkiller
 
Registriert seit: May 2002
Beiträge: 6.389
Standard

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.

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();
  }
Edit: ein leerzeichen entfernt, der war doppelt.
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

Geändert von natbornkiller (07. 02. 2005 um 10:31 Uhr)
natbornkiller ist offline   Mit Zitat antworten
Alt 07. 02. 2005, 09:30   # 7
UserX
Kasuist
ex-Moderator
 
Benutzerbild von UserX
 
Registriert seit: Mar 2000
Ort: Gehenna
Beiträge: 4.380
Standard

Prima, schon eingebaut.

Dankeschön.
CU UserX
UserX ist offline   Mit Zitat antworten
Alt 11. 03. 2005, 23:44   # 8
BuggerT
Mitglied
ex-Moderator
(Threadstarter)
 
Registriert seit: Feb 2000
Beiträge: 6.896
Standard

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
BuggerT ist offline   Mit Zitat antworten
Alt 13. 03. 2005, 18:32   # 9
natbornkiller
selbsthilfe durch google
ex-Moderator
 
Benutzerbild von natbornkiller
 
Registriert seit: May 2002
Beiträge: 6.389
Standard

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
natbornkiller ist offline   Mit Zitat antworten
Alt 13. 03. 2005, 19:43   # 10
BuggerT
Mitglied
ex-Moderator
(Threadstarter)
 
Registriert seit: Feb 2000
Beiträge: 6.896
Standard

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
BuggerT ist offline   Mit Zitat antworten
Alt 13. 03. 2005, 21:05   # 11
natbornkiller
selbsthilfe durch google
ex-Moderator
 
Benutzerbild von natbornkiller
 
Registriert seit: May 2002
Beiträge: 6.389
Standard

hm.
Ich habe mich verwirren lassen.
Also in der posting_body.tpl findet sich das Zeile 75 ff
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(bbopenbbclose) {
    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(txtareabbopenbbclose);
        return;
    }
    else
    {
        
txtarea.value += bbopen bbclose;
        
txtarea.focus();
    }
    
storeCaret(txtarea);

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) { 
   
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(bbopenbbclose) {
    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(txtareabbopenbbclose);
        return;
    }
    else
    {
        
txtarea.value += bbopen bbclose;
        
txtarea.focus();
    }
    
storeCaret(txtarea);

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
natbornkiller ist offline   Mit Zitat antworten
Alt 13. 03. 2005, 21:19   # 12
natbornkiller
selbsthilfe durch google
ex-Moderator
 
Benutzerbild von natbornkiller
 
Registriert seit: May 2002
Beiträge: 6.389
Standard

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.
PHP-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> 
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
natbornkiller ist offline   Mit Zitat antworten
Themen-Optionen Antwort

Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in UTC +1. Es ist jetzt 17:46 Uhr.
Powered by vBulletin® copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Seite druckenArtikel empfehlengulli RSS News Feedsgulli twittertgulli:NewsletterSeitenanfang

Suche

gulli:News

game:Tipps

Escaria: Erobere die Welt
Artyria: Werde Gladiator
Gondal: Das Fantasy-Spiel
Last Emperor: Werde Samurai
Nightcreeps: Abenteuer pur