Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un bbcode en javascript

Probleme de "transformation"

    19 mai 2006 à 19:01:06

    Salut à tous

    J'ai trouvé un bon tuto pour faire un bbcode et j'ai essayé de l'utiliser dans un système de news. J'ai donc fait le script (qui marche a peu prés) mais mon problème est que les balises du bbcode ne sont pas transformées en html mais restent affichées. Pourriez vous m'aider?

    Voici les sources :
    <form action="listeNews159753.php" method="post" name="editform" onSubmit="return checkForm(this)">
    <table id="editform">
    <tr>
            <td colspan="2" id="header">Post a new message</td>
    </tr>
    <tr id="pseudo">
            <td>Pseudo:</td>
            <td><input type="text" name="pseudo" size="50" class="form_elements_text" value="<?php echo $pseudo; ?>" /></td>
    </tr>
    <tr id="subject">
            <td>Subject:</td>
            <td><input type="text" name="subject" size="50" class="form_elements_text" value="<?php echo $titre; ?>
    " /></td>
    </tr>
    <tr>
            <td rowspan="2" id="smilies">Smilies
                    <a href="javascript:smilie(':)')">
                            <img src="smilies/smile.gif" alt="smile" title="smile" /></a>
                    <a href="javascript:smilie(':D')">
                            <img src="smilies/biggrin.gif" alt="big grin" title="big grin"/></a>
                    <a href="javascript:smilie(':p')">
                            <img src="smilies/razz.gif" alt="razz" title="razz" /></a></td>
            <td>
                    <input type="button" class="button" value="bold" name="bold" onClick="javascript:tag('b', '[b]', 'bold*', '[/b]', 'bold', 'bold');" onMouseOver="helpline('bold')" />
                    <input type="button" class="button" value="italic" name="italic" onClick="javascript:tag('i', '[i]', 'italic*', '[/i]', 'italic', 'italic');" onMouseOver="helpline('italic')" />
                    <input type="button" class="button" value="underline" name="underline" onClick="javascript:tag('u', '[u]', 'underline*', '[/u]', 'underline', 'underline');" onMouseOver="helpline('underline')" />
                    <input type="button" class="button" value="quote" name="quote" onClick="javascript:tag('q', '[quote]', 'quote*', '[/quote]', 'quote', 'quote');" onMouseOver="helpline('quote')" />
                    <input type="button" class="button" value="code" name="code" onClick="javascript:tag('c', '[code]', 'code*', '[/code]', 'code', 'code');" onMouseOver="helpline('code')" />
                    <input type="button" class="button" value="url" name="url" onClick="javascript:tag('url', '[url]', 'url*', '[/url]', 'url', 'url');" onMouseOver="helpline('url')" />
                    <input type="button" class="button" value="img" name="img" onClick="javascript:tag('img', '[img]', 'img*', '[/img]', 'img', 'img');" onMouseOver="helpline('img')" />
                    <br />
                    Font size: <select name="fontsize" onChange="font('[size=' + this.form.fontsize.options[this.form.fontsize.selectedIndex].value + ']', '[/size]'); this.selectedIndex=2;" onMouseOver="helpline('fontsize')" class="form_elements_dropdown">

                                    <option value="50%" >Tiny</option>
                                    <option value="75%" >Small</option>
                                    <option value="100%" selected >Normal</option>
                                    <option value="150%" >Large</option>
                                    <option  value="200%" >Huge</option>
                            </select>


                    Font color: <select name="fontcolor" onChange="font('[color=' + this.form.fontcolor.options[this.form.fontcolor.selectedIndex].value + ']', '[/color]'); this.selectedIndex=0;" onMouseOver="helpline('fontcolor')" class="form_elements_dropdown"  >
                                    <option value="black" style="color:black">Black</option>
                                    <option value="silver" style="color:silver">Silver</option>
                                    <option value="gray" style="color:gray">Gray</option>
                                    <option value="maroon" style="color:maroon">Maroon</option>
                                    <option value="red" style="color:red">Red</option>                                                                                <option value="purple" style="color:purple">Purple</option>
                                    <option value="fuchsia" style="color:fuchsia">Fuchsia</option>
                                    <option value="navy" style="color:navy">Navy</option>
                                    <option value="blue" style="color:blue">Blue</option>
                                    <option value="aqua" style="color:aqua">Aqua</option>
                                    <option value="teal" style="color:teal">Teal</option>
                                    <option value="lime" style="color:lime">Lime</option>
                                    <option value="green" style="color:green">Green</option>
                                    <option value="olive" style="color:olive">Olive</option>
                                    <option value="yellow" style="color:yellow">Yellow</option>
                                    <option value="white" style="color:white">White</option>                                                </select>

                                    <br />

                    <input type="text" name="helpbox" size="75" class="helpbox" readonly="readonly"/>
                    </td>
    </tr>
    <tr>
                    <td>
                    Post:<br />
                    <textarea rows="10" cols="50" name="post" class="form_elements_text" value="<?php echo $contenu; ?>"></textarea>
                    </td>
    </tr>
    <tr>

                    <td colspan="2" id="post">
                                    <input type="hidden" name="id_news" value="<?php echo $id_news; ?>
    " />
                    <input type="submit" name="Post" value="Post" class="button" />
                    <input type="submit" name="preview" value="Preview" class="button"/>
                    <input type="reset" value="Start over" class="button" onClick="javascript:confirm_reset();"/>
                    </td>
    </tr>
    </table>
    </form>


    et le code javascript :

    //Variables for controlling opening and closing tags (function tag)

    var b = 2;
    var i = 2;
    var u = 2;
    var q = 2;
    var c = 2;
    var url = 2;
    var img = 2;

    //Function for creating non-font tags

    function tag(v, tagadd, newbut, tagclose, oldbut, name) {
        if (eval(v)%2 == 0) {
            eval("window.document.editform."+name+".value = newbut;");
            var post = window.document.editform.post.value;
            window.document.editform.post.value = post + tagadd;
            window.document.editform.post.focus();
        } else {
             eval("window.document.editform."+name+".value = oldbut;");
            var post = window.document.editform.post.value;
            window.document.editform.post.value = post + tagclose;
            window.document.editform.post.focus();
        }
        eval(v+"++;");
         
    }


    //Function for adding font color and size tags

    function font(bbopen, bbclose) {
            var post = document.editform.post;
            post.value += bbopen + bbclose;
            post.focus();
            return;
    }


    //Function for adding smilies

    function smilie (smilie) {
            var post = document.editform.post;
            post.value += smilie;
            post.focus();
            return;
    }


    //Function to confirm reset

    function confirm_reset () {
            if(confirm("If you continue you will loose everything you have entered so far. \n \n" +
                    "Click OK to proceed and start again.  \n \n Alternatively click cancel to continue " +
                    "working on your post.")) {
                            return true;
                                    }
                    else {
                            return false;
                                    }
    }

    //Check the form submission for errors

    function checkForm() {
            var subject = document.editform.subject;
            var post = document.editform.post;

            //Check to make sure post lengths are sensible

            if (subject.value.length < 2 && post.value.length < 2) {
                    alert("This is a short post!" + " \n \n " +
                                    "We require that each post (and subject) \n" +
                                    "be at least 2 characters long. \n \n" +
                                    "Go back and try again.");
                    return false;
            }
            else { if (subject.value.length < 2) {
                            alert("We require that the subject  \n" +
                                    "be at least 2 characters long. \n \n" +
                                    "Go back and try again.");
                                    return false;
                                    }
                            else { if (post.value.length < 2) {
                            alert("We require that each post  \n" +
                                    "be at least 2 characters long. \n \n" +
                                    "Go back and try again.");
                                    return false;
                                    }
                                    else {
                                            return true;
                                    }
                            }
            }
    }


    merci
    • Partager sur Facebook
    • Partager sur Twitter
      20 mai 2006 à 21:07:33

      Citation : serionos

      Salut à tous

      J'ai trouvé un bon tuto pour faire un bbcode et j'ai essayé de l'utiliser dans un système de news. J'ai donc fait le script (qui marche a peu prés) mais mon problème est que les balises du bbcode ne sont pas transformées en html mais restent affichées. Pourriez vous m'aider?



      Quel genre de tuto pour faire du BBcode ? pour mettre les balises dans la zone de texte, pour faire un aperçu en temps réel, une prévisualisation ???
      • Partager sur Facebook
      • Partager sur Twitter
        20 mai 2006 à 22:38:20

        le tuto donnait un résultat assez proche du zcode (sans l'apercu en temps reel).
        En gros c'etait un formulaire qui mettait des balises quand tu cliquais sur les boutons.
        mais le probleme c'est que les balises ne sont pas transformé en xHTML
        • Partager sur Facebook
        • Partager sur Twitter
          20 mai 2006 à 22:40:51

          c'est que tu a utilisé un htmlentities pour proteger il te faut l'enlever si tu veut que le html s'affiche sur tes news

          mais c'est risquer de ne pas metre de htmlentities lorseque un visiteur remplie un cham
          • Partager sur Facebook
          • Partager sur Twitter
            21 mai 2006 à 17:45:01

            il ne faut surtout pas l'enlever il faut que tu utilie les REGEX pour que ton code soit transformé.
            Petit indice le < devient de &lt; et > devient &gt; et " devient &quote; voilà
            • Partager sur Facebook
            • Partager sur Twitter

            Un bbcode en javascript

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown