+ Antworten
Ergebnis 1 bis 12 von 12
  1. #1
    Mitglied

    ex-Moderator


    Registriert seit
    Feb 2000
    Beiträge
    6.894

    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

  2. #2
    selbsthilfe durch google

    ex-Moderator

    Avatar 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

  3. #3
    Mitglied

    ex-Moderator

    (Threadstarter)


    Registriert seit
    Feb 2000
    Beiträge
    6.894

    Standard

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


    grtz
    BuggerT

  4. #4
    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

  5. #5
    Kasuist

    ex-Moderator

    Avatar 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

  6. #6
    selbsthilfe durch google

    ex-Moderator

    Avatar 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
    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

  7. #7
    Kasuist

    ex-Moderator

    Avatar von UserX
    Registriert seit
    Mar 2000
    Ort
    Gehenna
    Beiträge
    4.380

    Standard

    Prima, schon eingebaut.

    Dankeschön. http://www.doctor.co.th/YaBBImages/S...trunk/kiss.gif
    CU UserX

  8. #8
    Mitglied

    ex-Moderator

    (Threadstarter)


    Registriert seit
    Feb 2000
    Beiträge
    6.894

    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

  9. #9
    selbsthilfe durch google

    ex-Moderator

    Avatar 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

  10. #10
    Mitglied

    ex-Moderator

    (Threadstarter)


    Registriert seit
    Feb 2000
    Beiträge
    6.894

    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

  11. #11
    selbsthilfe durch google

    ex-Moderator

    Avatar 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

  12. #12
    selbsthilfe durch google

    ex-Moderator

    Avatar 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

  13.  
     
     
+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein