Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JS]Appliquer le BBCODE sur toute une page

    15 février 2006 à 23:10:08

    Bonjour/soir

    Rentrons dans le vif du problème :)

    J'ai suivi le tutorial Création d'un BBCode et aperçu en direct mais j'aimerai que les effets qu'il appelle previsualisation s'applique à la page entière pour pouvoir utiliser les balises du BBCODE [GRAS] etc. et les faire apparaître sur la page pour une mise en forme. ( en bref je veux que les internautes puissent écrire et mettre en forme grâace à ces balises)

    je pense que le code doit être modifé ici:
    var timer=0;
    var ptag=String.fromCharCode(5,6,7);
    function  previsualisation() {
    t=document.formulaire.textarea.value
    t=code_to_html(t)


    Sinon voici le code en entier:
    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 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://siteduzero.com/Templates/images/smilies/smile.png" alt="" />',t)
    t=remblaie(t)
    t=unkhol(t)
    t=nl2br(t)
    t=remplace_tag(/:p/g,'<img src="http://siteduzero.com/Templates/images/smilies/langue.png" alt="" />',t)
    t=remblaie(t)
    t=unkhol(t)
    t=nl2br(t)
    t=remplace_tag(/:clin:/g,'<img src="http://www.siteduzero.com/Templates/images/smilies/clin.png" alt="" />',t)
    t=remblaie(t)
    t=unkhol(t)
    t=nl2br(t)
    t=remplace_tag(/:hihi:/g,'<img src="http://www.siteduzero.com/Templates/images/smilies/hihi.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');
    }     


    et ma page principal (du moins le JS :p )
    <script type="text/javascript" src="prev.js"></script><!-- on appelle le fichier prev.js pour faire fonctionne la prévisualisation -->
    <script type="text/javascript">
    function bbcode(bbdebut, bbfin)
    {
    var input = window.document.formulaire.textarea;
    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>

    Pour résumer j'aimera utiliser le BBCODE sur toute ma page et ainsi quand je tape par exemple en écrivant ma page ":D" qu'il me mette automatiquement :D
    En espèrant avoir été assez claire :euh:

    Merci D'avance

    ++

    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2006 à 11:31:21

      un petit up pour être sur que personne ne sait ou n'a pas vu le sujet...
      • Partager sur Facebook
      • Partager sur Twitter

      [JS]Appliquer le BBCODE sur toute une page

      × 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