Smilys einfügen

  • Hallo
    Für mein Gästebuch würde ich ganz gerne so eine smilifunkton haben, aber nicht so wie hier im Forum. Leider weiss ich nicht ganz genau, wie ich mit JavaScipt etwas dort einfüge, wo meine maus gerade ist.


    Am ende vom Text und am anfang würde ja gehen, aber wenn ich ihn nachträglich IM Text einfüge??

  • Hey Maulepan,
    wenn du an der Cursorposition Text einfügen und durch die Smiley-Grafiken ersetzten willst, sollte diese Seite interessant sein: <!-- m --><a class="postlink" href="http://aktuell.de.selfhtml.org/artikel/javascript/bbcode/">http://aktuell.de.selfhtml.org/artikel/ ... pt/bbcode/</a><!-- m -->
    Nicht vor all dem Code erschrecken, du brauchst ihn nicht komplett. Denn der Autor behandelt vor Allem das "umklammern" der BBCodes.


    Gruß

  • danke..... der artikel ist echt hilfreich.


    EDIT:
    aber jetzt hab ich erneut ein problem. Nähmlich im HTML-Code.


    [HTML]<p><input type="button" value="Einfügen" onClick="insert('[link]', '[/link]')"></p>
    [/HTML]


    Was ist nun, wenn ich nur einen aTag habe. --> Ich lasse den eTag weg. Funktioniert auch alles.


    Aber wie gebe ich ein, das der aTag <img src="smily1.jpg" /> ist. Leider interpretiert der browser das " als schließen des onClick.


    Und das hier klappt irgendwie auch nicht.
    [HTML] <p><input type="button" value="Einfügen" onClick="insert('<img src='smlily1.jpg' />', '')" /></p>[/HTML]

  • Wenn ich das richtig sehe, möchtest du gleich den Bild link eintragen?


    Wenn das stimmt würde ich dir das nicht empfehlen. Denn das heist ja das jeder user einfach bilder posten kann.. und andere html tags auch?



    Denke du möchtest nur vordefinierte smylies einfügen.. dann würde ich dir empfehlen die smylis über namen einzubinden z. B


    :smile: und diese dann vor dem eintragen oder beim auslesen mir str_replace zu ersetzen.


    1. hast du so kontrolle welche smylies angezeigt werden.
    2. Kannst du alle html tags entfernen lassen, damit dein layout nicht zerschossen wird.


    Und bestimmt noch mehr, aber fällt mir gerade nicht ein ist noch früh =D.
    Greetz TimTim


    EDIT:
    Ich glaube du kannst die " auch mit \ escapen wie bei php.
    bin mir aber nichtmehr ganz sicher.


    EDIT2:


    Es ist wirklich noch früh, aber etwas wollte ich noch anfügen.


    Ich würde die sachen erst nach dem auslesen ersetzen. So hast du in der DB kürzere angaben für die smilys (sonnst könnte man schnell an die max zeichen kommen)
    2. kannst du die texte auch ohne die grafiken anzeigen lassen oder besser auf andere pfade reagieren, als wenn in der db gleich der pfad steht. Denn wenn du die einträge z.b auch in einer admin ansicht hast und der pfad dorthin nicht stimmt keine smylies.


    Greetz TimTim

  • So würde ich die Sache nicht angehen. Jeder könnte ein x-beliebiges Bild von externen Servern anzeigen lassen.
    Bei meinem Gästebuch habe ich es wie folgt gemacht:
    Ich habe 2 Arrays erstellt. Eins für den Textcode der durch das Bild ersetzt werden soll, und einmal den htmlcode für das Bild.
    Nachher habe ich einfach mit str_replace die Codes durch HTML-Befehle ersetzt.
    Hier mal ein Beispiel:

    Code
    //Erstes Array mit den Textcodes
    $smilies_name_array = array(':arf:', ':aww:', ':bad:');
    //Zweites Array mit den HTML-Codes
    $smilies_dateiname_array = array('<img src="images/smilies/arf.gif" alt="arf.gif " />', '<img src="images/smilies/aww.gif" alt="aww.gif " />', '<img src="images/smilies/bad.gif" alt="bad.gif " />');
    //String_ersetzten-Routine
    $nachricht_komplett = str_replace($smilies_name_array,$smilies_dateiname_array,htmlspecialchars($_POST['nachricht']));


    So habe ich hunderte von Smilies ersetzt (Die ganzen Namen und HTML-Codes für die Arrays habe ich durch eine PHP-Funktion erzeugt, indem es den Zielordner mit den Smilies durchsucht und die Namen automatisiert auflistet)


    Gruß


    EDIT: Verdammt, timtim war schneller ;) Naja aber bei mir haste wenigstens noch nen Lösungsweg :D

  • pha.. damit kann ich auch dienen =D..





    Naja, wobei man da auch die for umgehen könnte, war mir aber damals nicht bekannt =D..


    wobei du hier auch gleich die ganzen anderen BBCodes ersetzten kannst. Greetz TimTim


    Greetz timtim

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!