IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Citation et auteur


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut Citation et auteur
    Bonjour tout le monde,
    J'ai passé toute la nuit à chercher une solution à mon problème mais en vain :
    Je vous mets le code (il est un peu long mais ce qui est marqué en bas est surtout important, lors des remplacements) et je vous explique,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    function  previsualisation() {
    t=document.newpost.textvalue.value  
    t=code_to_html(t)
    if (document.getElementById) document.getElementById("prev_news").innerHTML=t
    }
    function deblaie(reg,t) {
    textvalue=new String(t);
    return textvalue.replace(reg,'$1\n');
    }
    function remplace_tag(reg,rep,t) {
    textvalue=new String(t);
    return textvalue.replace(reg,rep);
    }
    function remblaie(t) {
    textvalue=new String(t);
    return textvalue.replace(/\n/g,'');
    }
    function nl2br(t) {
    textvalue=new String(t);
    return textvalue.replace(/\n/g,'<br/>');
    }
    function nl2khol(t) {
    textvalue=new String(t);
    return textvalue.replace(/\n/g,ptag);
    }
    function unkhol(t) {
    textvalue=new String(t);
    return textvalue.replace(new RegExp(ptag,'g'),'\n');
    } 
    function code_to_html(t) {
    t=nl2khol(t)
     
    //remplacement des balises html 
    t=deblaie(/(<)/g,t)
    t= remplace_tag(/</g,'&lt;',t)
    t=remblaie(t)
     
    // balise Gras
    t=deblaie(/(\[\/gras\])/g,t)
    t=remplace_tag(/\[gras\](.+)\[\/gras\]/g,'<b>$1</b>',t)  
    t=remblaie(t)
     
    // balise Italic
    t=deblaie(/(\[\/i\])/g,t)
    t=remplace_tag(/\[i\](.+)\[\/i\]/g,'<b>$1</b>',t)  
    t=remblaie(t)
     
     
    //Citation
    t=deblaie(/(\[\/citation\])/g,t)
    t=remplace_tag(/\[citation\](.+)\[\/citation\]/g,'<br /><span class="citation">Citation</span><div class="citation2">$1</div>',t)
    t=remblaie(t)
     
    t=unkhol(t)
    t=nl2br(t)
    t=remblaie(t)
    return t
    }
    Ce code n'étant pas à moi, j'ai un peu de mal à comprendre et surtout que je n'y connais rien en javascript
    mais j'ai compris son fonctionnement.

    Alors le problème vient de [ citation] et [ /citation].
    Si je marque ceci :
    [ citation]Salut les gars ![ /citation]
    Il est bien interprété et m'affiche le div avec la citation qu'on pourrait comparer à ceci :
    Salut les gars !
    Cependant si je mets ceci :
    [ citation auteur=beji15]Salut les gars ![ /citation]
    Il est mal interprété et affiche le code comme il est.
    Alors que moi, je voudrais qu'il affiche ceci :
    Citation Envoyé par beji15
    Salut les gars !
    En fait, j'aimerais pouvoir ajouter un auteur pour la citation mais je n'y arrive pas.

    Je vous remercie de votre aide.

    PS : si vous avez d'autres "astuces" pour pouvoir remplacer des BBCodes plus simplement en javascript que celui-ci, je suis preneur.

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Il faut que tu ajoutes un bout de code pour gérer les [citation auteur=...] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    t=remplace_tag(/\[citation auteur=([^\]]*)\](.+)\[\/citation\]/g,'<br /><span class="citation">Citation par $1</span><div class="citation2">$2</div>',t)
    t=remblaie(t)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    merci __Mac__ ,
    mais maintenant, si je mets [citation]salut les gars [/citation],
    il est mal interprété,
    je suis obligé de fournir un auteur pour voir apparaître la citation (et l'auteur).
    N'y a-t-il pas une solution pour permettre les deux citations ?

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu as mis quoi comme code ? J'ai dit "ajouter" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Citation
    t=deblaie(/(\[\/citation\])/g,t)
    t=remplace_tag(/\[citation\](.+)\[\/citation\]/g,'<br /><span class="citation">Citation</span><div class="citation2">$1</div>',t)
    t=remplace_tag(/\[citation auteur=([^\]]*)\](.+)\[\/citation\]/g,'<br /><span class="citation">Citation par $1</span><div class="citation2">$2</div>',t)
    t=remblaie(t)
    Après, je sais pas ce que font les fonctions deblaie et remblaie, donc je ne sais pas si tu peux appeler 2 remplace_tag comme ça, l'une à la suite de l'autre, mais c'est l'idée.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    en fait, la fonction deblaie() indique la fin de la balise à remplacer ( c-à-d là où la fonction doit arrêter de traduire)
    et remblaie() lui indique qu'on peut commencer à traduire le code retenu par deblaie().
    Quelque chose comme ça, je suis pas sûr.

    Mais en faisant ce que tu m'as indiqué, ça fonctionne et je te remercie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Citation [Auteur, Date] dans le texte et dans la bibliographie finale
    Par TerrorOnCity dans le forum Bibliographies - Index - Glossaires
    Réponses: 3
    Dernier message: 19/03/2012, 10h24
  2. Prénom+nom pour une citation d'auteur
    Par joseph1160 dans le forum Bibliographies - Index - Glossaires
    Réponses: 0
    Dernier message: 06/08/2009, 17h20
  3. Problème de citation lorsqu'il y a 3 ou plus auteurs (plainnat)
    Par __manu__ dans le forum Bibliographies - Index - Glossaires
    Réponses: 1
    Dernier message: 07/07/2009, 14h42
  4. Citation avec le même Nom d'auteur et la même année !
    Par mtanana dans le forum Bibliographies - Index - Glossaires
    Réponses: 2
    Dernier message: 24/03/2009, 11h11
  5. [DROIT] Droits d'auteurs moraux en tant que salariés ?
    Par malotte dans le forum Juridique
    Réponses: 14
    Dernier message: 13/02/2003, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo