1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

BBcode

Discussion in 'Web-Know-how für die Homepage' started by ncphil, Jan 24, 2007.

Thread Status:
Not open for further replies.
  1. ncphil

    ncphil Byte

    HI....

    Ich wollte mich mal über bbcode schlaumachen....
    auf allen meinen seiten gibts zum ertellen jeglicher Beiträge nur ein Textarea-Feld, indem HTML deaktiviert ist...
    ich habe nur Tags wie <b> <i> <a> etc... erlaubt...
    Jetzt möchte ich ein "bbcode-Interface".

    www.ximed.de/bb.php

    da kann man schon mit bbcodes arbeiten...
    jedoch fehlen mir noch die schönen Submit-Buttons oben wie B I U URL IMG usw....
    nur das hat nix mehr mit php zu tun - sicherlich - ich denke mal javascript oder so - jedoch habe ich davon keine Ahnung.

    Man klickt auf B und im Formular steht:

    Schöner fände ich, so ein ding, was ich runterladen kann... dann spar ich mir die Arbeit - ich habe das recht unprofesstionell mit lauter repalce(); gemacht....
     
  2. enschman

    enschman Megabyte

    Hi,
    ein replace langt für die meisten zwecke eigtl aus, aber url & img...

    Mit Javascript geht das, da hast du recht.

    Ich hab mal einen BB-Code-Parser geschrieben - mit so einem Interface, ich guck mal, ob ich das noch find (irgendwann im Laufe des Abends mal)...

    Evtl. könnte diese Seite auch eine gute Anlaufstelle sein: http://tut.php-q.net/

    mfg Tenschman
     
  3. ncphil

    ncphil Byte

    über das tut habe ich php gelernt =)

    aber wie soll mir das weiterhelfen? habe mein script ja soweit - mir fehlen nur noch die java elemente - weil mit php geht das doch gar nicht, ohne dass was neu läd?

    also das mit dem anlicken und ins formular einfügen - oder??

    weil das fehlt mir ja noch!

    wär cool, wenn du deins findest!
     
  4. enschman

    enschman Megabyte

    So,
    hab meine Scripts wieder gefunden, den Namen des Editors etc. hab ich dynamisch benutzt, mit folgendem PHP-Skript:

    PHP:
    <?php

    //Wichtig:     Der Editor kann nur einmal pro Formular verwendet werden!
    //Important:   The editor can only be used ones per form!
    function bb_editor($formname$name$value$width$height) {
    $formname.=".".$name;
    $ret="<img src=\"smile/bold.jpg\" width=\"16\" height=\"16\" title=\"Fett schreiben! BB-Code: [b]Ihr Text[/b]\" border=\"0\" alt=\"b\" onClick=\"javascript:cmscode(document.".$formname.",'b','')\">\n";
    $ret.="<img src=\"smile/italic.jpg\" width=\"16\" height=\"16\" title=\"Kursiv schreiben! BB-Code: [i]Ihr Text[/i]\" border=\"0\" alt=\"i\" onClick=\"javascript:cmscode(document.".$formname.",'i','')\">\n";
    $ret.="<img src=\"smile/under.jpg\" width=\"16\" height=\"16\" title=\"Unterstrichen schreiben! BB-Code: [u]Ihr Text[/u]\" border=\"0\" alt=\"u\" onClick=\"javascript:cmscode(document.".$formname.",'u','')\">\n";

    $ret.="<br /><img src=\"smile/ausruf.gif\" onClick=\"javascript:smile(document.".$formname.",'!','')\">\n";
    $ret.="<img src=\"smile/confuse.gif\" onClick=\"javascript:smile(document.".$formname.",'???','')\">\n";
    $ret.="<img src=\"smile/cool.gif\" onClick=\"javascript:smile(document.".$formname.",'cool','')\">\n";
    $ret.="<img src=\"smile/cry.gif\" onClick=\"javascript:smile(document.".$formname.",'cry','')\">\n";
    $ret.="<img src=\"smile/eek.gif\" onClick=\"javascript:smile(document.".$formname.",'eek','')\">\n";

    $ret.="<img src=\"smile/evil.gif\" onClick=\"javascript:smile(document.".$formname.",'evil','')\">\n";
    $ret.="<img src=\"smile/eyes.gif\" onClick=\"javascript:smile(document.".$formname.",'eyes','')\">\n";
    $ret.="<img src=\"smile/frage.gif\" onClick=\"javascript:smile(document.".$formname.",'?','')\">\n";
    $ret.="<img src=\"smile/green.gif\" onClick=\"javascript:smile(document.".$formname.",'green','')\">\n";
    $ret.="<img src=\"smile/grins.gif\" onClick=\"javascript:smile(document.".$formname.",'grins','')\">\n";

    $ret.="<img src=\"smile/idea.gif\" onClick=\"javascript:smile(document.".$formname.",'idea','')\">\n";
    $ret.="<img src=\"smile/lol.gif\" onClick=\"javascript:smile(document.".$formname.",'lol','')\">\n";
    $ret.="<img src=\"smile/mad.gif\" onClick=\"javascript:smile(document.".$formname.",'mad','')\">\n";
    $ret.="<img src=\"smile/neutral.gif\" onClick=\"javascript:smile(document.".$formname.",'neutral','')\">\n";
    $ret.="<img src=\"smile/razz.gif\" onClick=\"javascript:smile(document.".$formname.",'razz','')\">\n";

    $ret.="<img src=\"smile/red.gif\" onClick=\"javascript:smile(document.".$formname.",'red','')\">\n";
    $ret.="<img src=\"smile/sad.gif\" onClick=\"javascript:smile(document.".$formname.",'sad','')\">\n";
    $ret.="<img src=\"smile/smile.gif\" onClick=\"javascript:smile(document.".$formname.",'smile','')\">\n";
    $ret.="<img src=\"smile/twisted.gif\" onClick=\"javascript:smile(document.".$formname.",'twisted','')\">\n";
    $ret.="<img src=\"smile/wink.gif\" onClick=\"javascript:smile(document.".$formname.",'wink','')\">\n";

    $ret.="<br /><textarea name=\"".$name."\" style=\"width:".$width."; height:".$height.";\" onfocus=getActiveText(this) onclick=getActiveText(this) onchange=getActiveText(this) onselect=getActiveText(this)>".$value."</textarea>";
    return 
    $ret;
    }


    ?>
    Mein Parser war folgender:
    PHP:
    <?php
    function mybb($var) {
    $var htmlentities($var);
    $var str_replace('[b]''<b>'$var);
    $var str_replace('[/b]''</b>'$var);
    $var str_replace('[i]''<i>'$var);
    $var str_replace('[/i]''</i>'$var);
    $var str_replace('[u]''<u>'$var);
    $var str_replace('[/u]''</u>'$var);
    $var preg_replace('#\[url=(.*)\](.*)\[/url\]#Uis''<a href="\1" target="_blank">\2</a>'$var);
    $var preg_replace('#\[img=(.*)\]#Uis''<img src="\1" title="\2" alt="\2">'$var);
    $var preg_replace('#(^|[^"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm''\1<a href="\2\3">\2\3</a>\4'$var);
    $var str_replace(':!:''<img src=\'smile/ausruf.gif\' border=\"0\"> '$var);
    $var str_replace(':???:''<img src=\'smile/confuse.gif\' border=\"0\"> '$var);
    $var str_replace(':cool:''<img src=\'smile/cool.gif\' border=\"0\"> '$var);
    $var str_replace(':cry:''<img src=\'smile/cry.gif\' border=\"0\"> '$var);
    $var str_replace(':eek:''<img src=\'smile/eek.gif\' border=\"0\"> '$var);
    $var str_replace(':evil:''<img src=\'smile/evil.gif\' border=\"0\"> '$var);
    $var str_replace(':eyes:''<img src=\'smile/eyes.gif\' border=\"0\"> '$var);
    $var str_replace(':?:''<img src=\'smile/frage.gif\' border=\"0\"> '$var);
    $var str_replace(':green:''<img src=\'smile/green.gif\' border=\"0\"> '$var);
    $var str_replace(':grins:''<img src=\'smile/grins.gif\' border=\"0\"> '$var);
    $var str_replace(':idea:''<img src=\'smile/idea.gif\' border=\"0\"> '$var);

    $var str_replace(':lol:''<img src=\'smile/lol.gif\' border=\"0\"> '$var);
    $var str_replace(':neutral:''<img src=\'smile/neutral.gif\' border=\"0\"> '$var);
    $var str_replace(':mad:''<img src=\'smile/mad.gif\' border=\"0\"> '$var);
    $var str_replace(':razz:''<img src=\'smile/razz.gif\' border=\"0\"> '$var);
    $var str_replace(':red:''<img src=\'smile/red.gif\' border=\"0\"> '$var);
    $var str_replace(':sad:''<img src=\'smile/sad.gif\' border=\"0\"> '$var);
    $var str_replace(':smile:''<img src=\'smile/smile.gif\' border=\"0\"> '$var);
    $var str_replace(':twisted:''<img src=\'smile/twisted.gif\' border=\"0\"> '$var);
    $var str_replace(':wink:''<img src=\'smile/wink.gif\' border=\"0\"> '$var);

    return 
    $var;
    }

    function 
    myslash($var) {
    $var stripslashes($var);
    return 
    $var;
    }
    ?>
    Javascript war diese hier (musst du im Head deiner Seite einfügen):

    Code:
    function normalmode(theform) {
            return true;
            }
    
    function setfocus(theform) {
            theform.focus();
            }
    
    var selectedText = "";
    AddTxt = "";
    
    function getActiveText(msg) {
            selectedText = (document.all) ? document.selection.createRange().text : document.getSelection();if (msg.createTextRange) msg.caretPos = document.selection.createRange().duplicate();return true;
            }
    
    function AddText(NewCode,theform) {
            if (theform.createTextRange && theform.caretPos) {
                    var caretPos = theform.caretPos;caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? NewCode + ' ' : NewCode;
                    } else theform.value+=NewCode
    
    AddTxt = "";setfocus(theform);
    }
    
    function cmscode(theform,cmscode,prompttext) {
            setfocus(theform);
                    if ((normalmode(theform)) || (cmscode=="IMG")) {
                    if (selectedText) var dtext=selectedText;
                    else var dtext=prompttext;
                    {
                    if (dtext) {} else {
                    dtext = "";
                    }
                    AddTxt = "["+cmscode+"]"+dtext+"[/"+cmscode+"]";AddText(AddTxt,theform);
                    }
    
                    }
                    setfocus(theform);
            }
    
    function smile(theform,cmscode,prompttext) {
            setfocus(theform);if ((normalmode(theform)) || (cmscode=="IMG")) {
                    if (selectedText) var dtext=selectedText;
                    else var dtext=prompttext;
                    {
                    if (dtext) {} else {
                    dtext = "";
                    }
                    AddTxt =dtext+"\:"+cmscode+"\:";AddText(AddTxt,theform);
                    }
            } else {
                            donotinsert = false;for (i = 0; i < tags.length; i++) {if (tags[i] == cmscode) donotinsert = true;}if (!donotinsert) {theform.value += "["+cmscode+"";arraypush(tags,cmscode);
                            }
                    }
                    setfocus(theform);
            }
    benutzen kannst du nach dem Include den Editor (1x pro Seite nur) mit dieser Funktion:
    PHP:
    bb_editor("Test""text""Schon mal ein Beispieltext""100%""200px")
    mfg Tenschman

    PS: Die Bilder musst du natürlich selbst einfügen etc., schau im Parser, kann man leicht ergänzen, die Funktion für den BB-Editor auch...
     
  5. ncphil

    ncphil Byte

    okay danke schön - ich werde mir das später mal in Ruhe angucken und durchlesen und evtl bearbeiten und anpassen....
    aber danke schon mal - sieht beim überfliegen recht ordentlich aus.

    Edit:
    habe den java-part in ne *.js dateo gepackt und mit <script language='Javascript' href='java.js' /> eingefügt.
    dann habe ich die funktion bb_editor(); eingefügt und darunter:

    PHP:
    ?>
    <form action=bb2.php method=post><?php
    bb_editor
    ("Test""text""Schon mal ein Beispieltext""100%""200px");
    ?> 
    </form>
    funktionert aber nicht - habe ich was übersehen?
     
  6. enschman

    enschman Megabyte

    Hi,
    meine Funktion schreibt schon den <form>-Tag...
    mfg Tenschman
     
  7. ncphil

    ncphil Byte

    ich sehe zwar nicht wo :sorry: aber auch wenn ich es weglasse, passiert... nichts =)
     
  8. ncphil

    ncphil Byte

    ich habe eine Datei functions.inc.php:
    PHP:
    <?php
    function bb_editor($formname$name$value$width$height) {
    $formname.=".".$name;
    $ret="<img src=\"smile/bold.jpg\" width=\"16\" height=\"16\" title=\"Fett schreiben! BB-Code: [b]Ihr Text[/b]\" border=\"0\" alt=\"b\" onClick=\"javascript:cmscode(document.".$formname.",'b','')\">\n";
    $ret.="<img src=\"smile/italic.jpg\" width=\"16\" height=\"16\" title=\"Kursiv schreiben! BB-Code: [i]Ihr Text[/i]\" border=\"0\" alt=\"i\" onClick=\"javascript:cmscode(document.".$formname.",'i','')\">\n";
    $ret.="<img src=\"smile/under.jpg\" width=\"16\" height=\"16\" title=\"Unterstrichen schreiben! BB-Code: [u]Ihr Text[/u]\" border=\"0\" alt=\"u\" onClick=\"javascript:cmscode(document.".$formname.",'u','')\">\n";
    $ret.="<img src=\"smile/huh.gif\" onClick=\"javascript:smile(document.".$formname.",'???','')\">\n";
    $ret.="<img src=\"smile/cool.gif\" onClick=\"javascript:smile(document.".$formname.",'cool','')\">\n";
    $ret.="<img src=\"smile/ani-weep.gif\" onClick=\"javascript:smile(document.".$formname.",'cry','')\">\n";
    $ret.="<img src=\"smile/angry.gif\" onClick=\"javascript:smile(document.".$formname.",'angry','')\">\n";
    $ret.="<img src=\"smile/happy.gif\" onClick=\"javascript:smile(document.".$formname.",':D','')\">\n";
    $ret.="<img src=\"smile/ani-happy.gif\" onClick=\"javascript:smile(document.".$formname.",'lol','')\">\n";
    $ret.="<img src=\"smile/ani-movearms.gif\" onClick=\"javascript:smile(document.".$formname.",'twisted','')\">\n";
    $ret.="<img src=\"smile/in-love.gif\" onClick=\"javascript:smile(document.".$formname.",'in-love','')\">\n";

    $ret.="<br /><textarea name=\"".$name."\" style=\"width:".$width."; height:".$height.";\" onfocus=getActiveText(this) onclick=getActiveText(this) onchange=getActiveText(this) onselect=getActiveText(this)>".$value."</textarea>";
    echo 
    $ret;
    }


    function 
    mybb($var) {
    $var htmlentities($var);
    $var str_replace('[b]''<b>'$var);
    $var str_replace('[/b]''</b>'$var);
    $var str_replace('[i]''<i>'$var);
    $var str_replace('[/i]''</i>'$var);
    $var str_replace('[u]''<u>'$var);
    $var str_replace('[/u]''</u>'$var);
    $var preg_replace('#\[url=(.*)\](.*)\[/url\]#Uis''<a href="\1" target="_blank">\2</a>'$var);
    $var preg_replace('#\[img=(.*)\]#Uis''<img src="\1" title="\2" alt="\2">'$var);
    $var preg_replace('#(^|[^"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm''\1<a href="\2\3">\2\3</a>\4'$var);
    $var str_replace(':???:''<img src=\'smile/huh.gif\' border=\"0\"> '$var);
    $var str_replace(':cool:''<img src=\'smile/cool.gif\' border=\"0\"> '$var);
    $var str_replace(':cry:''<img src=\'smile/ani-weep.gif\' border=\"0\"> '$var);
    $var str_replace(':angry:''<img src=\'smile/angry.gif\' border=\"0\"> '$var);
    $var str_replace(':D''<img src=\'smile/happy.gif\' border=\"0\"> '$var);
    $var str_replace('lol''<img src=\'smile/ani-happy.gif\' border=\"0\"> '$var);
    $var str_replace(':twisted:''<img src=\'smile/ani-movearms.gif\' border=\"0\"> '$var);
    $var str_replace(':in-love:''<img src=\'smile/in-love.gif\' border=\"0\"> '$var);

    return 
    $var;
    }

    function 
    myslash($var) {
    $var stripslashes($var);
    return 
    $var;
    }
    ?>
    dann deine java-datei in java.js (unverändert)
    und dann bb2.php, die seite, die aufgerufen wird.
    PHP:
    <html>
    <head>
        <script language='Javascript' href='java.js' />
    </head>
    <body>

    <?php include "functions.inc.php";?>

    <form action="bb2.php" method="post" name="Test"><?php
        
    bb_editor
    ("Test""text""Schon mal ein Beispieltext""100%""200px");?>

    </form>
    </body>
    </html>
    es funktioniert alles soweit, nur wenn ich auf die img-dateien klicke, wird in die textarea ncihts eingefügt!

    www.ximed.de/bb2.php

    hier kannst du mal schauen
     
  9. enschman

    enschman Megabyte

    Versuchs mal mit dem Inhalt als bb2.php:
    PHP:
    <html>
    <head>
        <script language='Javascript'>
        function normalmode(theform) {
            return true;
            }

    function setfocus(theform) {
            theform.focus();
            }

    var selectedText = "";
    AddTxt = "";

    function getActiveText(msg) {
            selectedText = (document.all) ? document.selection.createRange().text : document.getSelection();if (msg.createTextRange) msg.caretPos = document.selection.createRange().duplicate();return true;
            }

    function AddText(NewCode,theform) {
            if (theform.createTextRange && theform.caretPos) {
                    var caretPos = theform.caretPos;caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? NewCode + ' ' : NewCode;
                    } else theform.value+=NewCode

    AddTxt = "";setfocus(theform);
    }

    function cmscode(theform,cmscode,prompttext) {
            setfocus(theform);
                    if ((normalmode(theform)) || (cmscode=="IMG")) {
                    if (selectedText) var dtext=selectedText;
                    else var dtext=prompttext;
                    {
                    if (dtext) {} else {
                    dtext = "";
                    }
                    AddTxt = "["+cmscode+"]"+dtext+"[/"+cmscode+"]";AddText(AddTxt,theform);
                    }

                    }
                    setfocus(theform);
            }

    function smile(theform,cmscode,prompttext) {
            setfocus(theform);if ((normalmode(theform)) || (cmscode=="IMG")) {
                    if (selectedText) var dtext=selectedText;
                    else var dtext=prompttext;
                    {
                    if (dtext) {} else {
                    dtext = "";
                    }
                    AddTxt =dtext+"\:"+cmscode+"\:";AddText(AddTxt,theform);
                    }
            } else {
                            donotinsert = false;for (i = 0; i < tags.length; i++) {if (tags[i] == cmscode) donotinsert = true;}if (!donotinsert) {theform.value += "["+cmscode+"";arraypush(tags,cmscode);
                            }
                    }
                    setfocus(theform);
            }
        </script>
    </head>
    <body>

    <?php include "functions.inc.php";?>

    <form action="bb2.php" method="post" name="Test"><?php

    bb_editor
    ("Test""text""Schon mal ein Beispieltext""100%""200px");?>

    </form>
    </body>
    </html>
    Hab ich getestet, so klappts zumindest...

    mfg Tenschman
     
  10. ncphil

    ncphil Byte

    nein so klappt es nicht...

    wie hängen die form-namen zusammen?
    muss ich irgendwas einen speziellen namen geben?
     
  11. enschman

    enschman Megabyte

    Hi,
    nur mal so als Zwischenfrage: Die Datei führst du auf nem Server mit PHP aus, richtig?

    Ich habs auf Xampp laufen lassen und mit Firefox/IE getestet...

    mfg Tenschman
     
  12. ncphil

    ncphil Byte

    ahja da läuft schon php drauf!

    www.ximed.de/bb2.php

    da sieht mans ja...
    ..dass es nicht klappt!

    ich schätze, es hängt mit den form-NAMEN zusammen - weiß es aber nicht, da ich kein javascript kann..

    das mit dem document.Test.text - muss das auch der name vom textarea sein? oder vom form? keine ahnung?!
    schau mal in den quellcode auf www.ximed.de/bb2.php ob das so alles passt...
     
  13. enschman

    enschman Megabyte

    Du hast 2x den Head-Bereich, die Funktionen werden per Javascript-Datei UND Script-Tag im 2. Head aufgerufen...

    Name des Formulars heißt bei dir Test.Text, benenn das mal nur in Test um...

    So muss es zwangsläufig zu Fehlern kommen...

    mfg Tenschman
     
Thread Status:
Not open for further replies.

Share This Page