Partage
  • Partager sur Facebook
  • Partager sur Twitter

JavaScript et BBcode

Sujet résolu
    31 juillet 2009 à 13:41:18

    Bonjour,


    j'ai un petit soucis ou plutôt je ne vois pas niveau programmation comment faire.


    Je cherche a faire un formulaire avec du BBCode.
    le problème est que quand je fais envoyé(pour envoyer le formulaire) il ne transforme pas le BBcode en Code Html.
    Ma question est comment lui dire que avant d'envoyer il doit modifier les balises voila le code de test :


    PAGE DU FORMULAIRE (html):


    <form action="liste_truc_astuces.php" method="post" name="formulaire">
    <p>Nom de l'astuce : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>
    <p>Catégorie :   <select name="classification_astuces" id="classification_astuces">
    	       <optgroup label="Theme">
    		   <?php
    		   while ($class = mysql_fetch_array($retour2))
    		   { ?>
    		   <option value="<?php echo $class['id'];?>"><?php echo $class['nom_class'];?></option>
    		   <?php } ?>
    		   </optgroup>
           </select></p>
    <p>
    	<p>Contenu : </p>
    	<input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[gras]', '[/gras]');return(false)" />
    <input type="button" id="souligner" name="souligner" value="souligner" onClick="javascript:bbcode('[souligner]', '[/souligner]');return(false)" />
    <input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[italic]', '[/italic]');return(false)" />
    <input type="button" id="image" name="image" value="Image" onClick="javascript:bbcode('[image]', '[/image]');return(false)" />
    <input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url=]', '[/url]');return(false)" />
    <a href="#" title="Créer une citation" onClick="javascript:bbcode('[citation=AUTEUR]', '[/citation]');return(false)">Citation</a>
    <img src="http://sitepourmoi.com/images/images/smilies/smile.png" title="" alt="" onClick="javascript:smilies(':D');return(false)" />
    <br />
    	<textarea name="contenu" cols="100" rows="15">
        <?php echo $contenu; ?>
        </textarea><br />
    	<p><input type="hidden" name="id_news" value="<?php echo $id_news; ?>" /></p>
        <input type="submit" value="Envoyer" />
    


    PAGE DU FORMULAIRE (Javascript) :
    <script language="javascript" type="text/javascript" src="prev.js"></script><!-- on appelle le fichier prev.js pour faire fonctionne la prévisualisation -->
    <script language="Javascript">
    function bbcode(bbdebut, bbfin)
    {
    var input = window.document.formulaire.contenu;
    input.focus();
    /* pour IE (toujous un cas appar lui  )*/
    if(typeof document.selection != 'undefined')
    {
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = bbdebut + insText + bbfin;
    range = document.selection.createRange();
    if (insText.length == 0)
    {
    range.move('character', -bbfin.length);
    }
    else
    {
    range.moveStart('character', bbdebut.length + insText.length + bbfin.length);
    }
    range.select();
    }
    /* pour les navigateurs plus récents que IE comme Firefox... */
    else if(typeof input.selectionStart != 'undefined')
    {
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + bbdebut + insText + bbfin + input.value.substr(end);
    var pos;
    if (insText.length == 0)
    {
    pos = start + bbdebut.length;
    }
    else
    {
    pos = start + bbdebut.length + insText.length + bbfin.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
    }
    /* pour les autres navigateurs comme Netscape... */
    else
    {
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos))
    {
    pos = prompt("insertion (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length)
    {
    pos = input.value.length;
    }
    var insText = prompt("Veuillez taper le texte");
    input.value = input.value.substr(0, pos) + bbdebut + insText + bbfin + input.value.substr(pos);
    }
    }
    function smilies(img)
    {
    window.document.formulaire.textarea.value += '' + img + '';
    }
    </script>
    



    Fichier prev.js


    var timer=0;
    var ptag=String.fromCharCode(5,6,7);
    function  previsualisation() {
    t=document.formulaire.textarea.value 
    t=code_to_html(t)
    if (document.getElementById) document.getElementById("prev").innerHTML=t
    if (document.formulaire.auto.checked) timer=setTimeout(previsualisation,1)
    <!-- le "1" est le temps que met le texte à s'afficher, "1" : le texte s'affichera en même temps que l'on écrit (en s) -->
    }
    function automatique() {
    if (document.formulaire.auto.checked) previsualisation() <!-- si on a cocher la case d'aperçu automatique -->
    }
    function code_to_html(t) {
    t=nl2khol(t)
    // balise Gras <!-- on lui dis que telles balises correspondent à tels codes en HTML -->
    t=deblaie(/(\[\/gras\])/g,t)
    t=remplace_tag(/\[gras\](.+)\[\/gras\]/g,'<span style="font-weight: bold;">$1</span>',t) 
    t=remblaie(t)
    
    // balise souligner <!-- on lui dis que telles balises correspondent à tels codes en HTML -->
    t=deblaie(/(\[\/souligner\])/g,t)
    t=remplace_tag(/\[souligner\](.+)\[\/souligner\]/g,'<span style="text-decoration: underline;">$1</span>',t) 
    t=remblaie(t)
    
    // balise Italic
    t=deblaie(/(\[\/italic\])/g,t)
    t=remplace_tag(/\[italic\](.+)\[\/italic\]/g,'<span style="font-style: italic;">$1</span>',t) 
    t=remblaie(t)
    
    // balise Citation
    t=deblaie(/(\[\/citation\])/g,t)
    t=remplace_tag(/\[citation=([\s\S]*?)\](.+)\[\/citation\]/g,'<strong>Citation $1 :</strong><div style="border: 1px solid #000000; width: 50%; font-family: Verdana, \'Trebuchet MS\', Tahoma, \'Times New Roman\', Times, serif; text-align: left; font-size: 11px;" align="center">$2</div>',t) 
    t=remblaie(t)
    
    // balise Image
    t=deblaie(/(\[\/image\])/g,t)
    t=remplace_tag(/\[image\](.+)\[\/image\]/g,'<img src="$1" />',t)
    t=remblaie(t)
    
    // balise URL   
    t=deblaie(/(\[\/url\])/g,t)
    t=remplace_tag(/\[\url=([\s\S]*?)\](.+)\[\/url\]/g,'<a href="$1" target="_blank">$2</a>',t)
    t=remblaie(t)
    
    // smilies Smile <!-- on oublie pas les smilies -->
    t=remplace_tag(/:D/g,'<img src="http://sitepourmoi.fr.tc/images/images/smilies/smile.png" alt="" />',t) 
    t=remblaie(t)
    t=unkhol(t)
    t=nl2br(t)
    return t
    }
    <!-- tout le code qui suit c'est pour transformer toutes les balises, comme les preg_replace en PHP -->
    function deblaie(reg,t) {
    textarea=new String(t);
    return textarea.replace(reg,'$1\n');
    }
    function remblaie(t) {
    textarea=new String(t);
    return textarea.replace(/\n/g,'');
    }
    function remplace_tag(reg,rep,t) {
    textarea=new String(t);
    return textarea.replace(reg,rep);
    }
    function nl2br(t) {
    textarea=new String(t);
    return textarea.replace(/\n/g,'<br/>');
    }
    function nl2khol(t) {
    textarea=new String(t);
    return textarea.replace(/\n/g,ptag);
    }
    function unkhol(t) {
    textarea=new String(t);
    return textarea.replace(new RegExp(ptag,'g'),'\n');
    }
    



    Voila es que vous pouvez m'aider ?

    merci pour vos réponses

    bonne journée et bonne vacances


    Booster

    • Partager sur Facebook
    • Partager sur Twitter
      31 juillet 2009 à 18:43:37

      En même temps c'est mission impossible en général de comprendre du code qui vient de Codes-Sources...

      Pour ton problème regarde de l'événement onSubmit et de la fonction code_to_html (ceci dit ce raisonnement est stupide, la conversion BBCode > Html devrait être faite coté serveur).
      • Partager sur Facebook
      • Partager sur Twitter
        1 août 2009 à 15:15:02

        C'est bon tu m'a réorienter vers le php.

        et j'ai réussi ca fonctionne bien
        • Partager sur Facebook
        • Partager sur Twitter

        JavaScript et BBcode

        × 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