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

Zope Python Discussion :

condition dans un tableau dans plone


Sujet :

Zope Python

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 60
    Points
    60
    Par défaut condition dans un tableau dans plone
    bonjour;
    j'ai un chekbox qui est representer par 4 elements, on peux selectionner une ou plusieurs case.

    je voudrais representer cette serchbox sous forme de tableau.
    le tableau est composer de 4 colonnes qui designe les 4 cases a cocher et une 2 ligne pour mettre une couleur sous chaque case qui a ete cocher.

    ma question est comment on peut mettre une condition pour remplire ce tableau:
    j'ai esseyer ce ci mais c'est pas bon, il me renvoi la couleur dans toute les case du tableau et moi je veux qui me verifie:
    si la case C1 est cocher dans la chekbox alors la 1 colone de la 2 ligne du tableau est couleur, et ainsi de suite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     :
    <td tal:condition="here/getQuarteur"
    	      tal BGCOLOR=#969696 >
             </td>
    si vous pouvez m'aider
    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    Votre question n'est pas très claire, mais si vous voulez que la couleur des cases du tableau change dynamiquement quand l'utilisateur clique sur les checkbox, il faut le faire en javascript. Il faut gérer l'événement onchange des cases checkbox et changer la couleur de fond des cases du tableau en utilisant le DOM. Pour pouvoir adresser individuellement chaque case du tableau, le plus simple est de leur donner à chacune un id différent et ensuite d'utiliser la fonction javascript : document.getElementById('id_de_la_case') pour 'pointer' vers la case.

    pascal de oliveira

  3. #3
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 60
    Points
    60
    Par défaut
    bonjour,
    je reformule ma question:
    voila j'ai une chekbox composer de 4 cases Q1, ..Q4
    je peut cocher 1 ou plusieurs cases.
    je veux maintenant afficher dans un tableaux, une representation de ces résultats.
    le tableaux est composer de 2 lignes et 4 colonnes (qui represente les 4 Q).sur la 2 ligne je veux mettre une couleur pour chaque case cocher.
    tous ça doit ce faire dans une template(un fichier tab.pt).
    Merci d'avance

  4. #4
    Membre régulier Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Points : 115
    Points
    115
    Par défaut
    A mon avis la réponse que t'a donné Pdeoliveira est la bonne : il faut faire du javascript. Il faut que tu utilises l'évènement onclick de ta checkbox ce qui va appeler une fonction et cette fonction va te changer ta couleur. dans la bonne case.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 60
    Points
    60
    Par défaut
    je n'utilise pas du javascript, interdit pour moi

  6. #6
    Membre régulier Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Points : 115
    Points
    115
    Par défaut


    ah oui, alors là ...

    là seule solution que je vois et qui n'est pas franchement l'idéal, c'est de demander à l'utilisateur de cocher ses cases, puis de valider son choix. Ensuite lorsque tu réaffiche ta page, tu dois pouvoir utiliser des tal:condition pour choisir la couleur à afficher.

    tu sais pourquoi tu ne peux pas utiliser de javascript ?

  7. #7
    Membre habitué Avatar de HexChit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 136
    Points
    136
    Par défaut
    comme le disais nighthammer, si tu ne peux utiliser du javascript la seul solution a ma connaissance est de recharger la meme page (ou une autre mais ce n'est pas necessaire) en lui envoyant tes variables de checkbox en POST. ensuite avec des tal:condition, tu fixe la couleur des cases de ton tableau.

    ps : ce n'est pas pour etre desagreable mais pourrais tu faire un effort dans ta frappe s'il te plait... je met plus de temps à dechiffrer tes messages qu'à essayer de les résoudre enfin je parlais des autre post

  8. #8
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 60
    Points
    60
    Par défaut
    alors
    voila j'ai tous de suite cree un espace pour l'utilisateur pour cocher les checkbox.et valider ces choix.

    maintenat si je veux mettre ces résultats sous forme de tableau. c'est a dire si l'utilisateur a chocher deux checkbox la 1 et la 4 parmis les 4 qui existe , alors dans mon tableau que je cree dans une template (vue_tabl.pt) qui est composer de 2 ligne et 4 colonnes, je doit avoir la 1 et la 4 colonne de couleur.

    je n'arrive pas a mettre la condition.
    j'ai esseyer de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <td>
    <tal:condition="here/getQuarteurs"/></td>
    mais cela me retourne le tuple des quarteur cochées et moi je veux mettre une couleur sous chaque quarteur ouchckbox qui a été cocher par l'utilisateur.

    sachant que dans un script python (schemata.py) j'ai cree mes checkbox je t'envoi le code pour que tu es une idee:
    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
     
     LinesField(
            name="Quarteur",
            default="None",
            enforceVocabulary=1,
            vocabulary=DisplayList((
                ('Q1', 'Q1', 'label_Quarteur_q1'),
                ('Q2',    'Q2', 'label_Quarteur_q2'),
                ('Q3',    'Q3', 'label_Quarteur_q3'),
                ('Q4',    'Q4', 'label_Quarteur_q4'), 
            )),
            widget=MultiSelectionWidget(
               format="checkbox",
               label=" Quarteur",
               label_msgid="label_package_quarteur",
               description_msgid="help_package_quarteur",
               i18n_domain="plonesoftwarecenter"
            ),
        ),
     
    SimpleDataGridField(
            name='availableQuarteur',
            columns=3,
            column_names=('id', 'title', 'description'),
            default=[
                'Q1|Quarteur1|comment.', 
                'Q2|Quarteur1|comment.', 
                'Q3|Quarteur1|comment.',
                'Q4|Quarteur1|comment.',
     
            ],
            widget=SimpleDataGridWidget(
                label='Quarteur',
                label_msgid='label_quarteur_vocab',
                description='Define the available quarteur for classifying the periode of progress for projects. The format is Short Name | Long name | Description. The id must be unique.',
                description_msgid='help_quarteur_vocab',
                i18n_domain='plonesoftwarecenter',
                rows=6,
            ),
        ),
    voila si tu peut m'aider
    Merci d'avance

  9. #9
    Membre habitué Avatar de HexChit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 136
    Points
    136
    Par défaut
    Je suis désolé mais je n'utilise pas du tout Plone. En revanche je pourrai te donner une piste en ZPT :

    tu fais en sorte d'avoir la propriété checked pour chaque checkbox (par URL en GET ou avec des variable en POST).
    Tu controles cette propriété avec un tal:condition (c'est assez facile lorsque tu passes tes variables en GET), et puis si cette condition est verifiée, tu met de la couleur A défaut tu peux utiliser un script python si ce n'est pas possible en ZPT mais j'en doute.

    Je te conseil de prendre du recule par rapport à ton code...

  10. #10
    Membre régulier Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Points : 115
    Points
    115
    Par défaut
    parce que avec du javascript ça aurait été simple, je me suis amusé à faire un petit exemple. (le code peut surement être amélioré, mais je l'ai fais vite).

    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
    60
    61
    62
    63
     
    <html>
     <head>
      <script style="text/javascript" language="javascript">
       function chg_color(){
        if(document.test[0].checked){
         document.getElementById("rouge").src="http://nighthammer.free.fr/tmp/rouge.jpg"
        }else{
         document.getElementById("rouge").src="http://nighthammer.free.fr/tmp/blanc.jpg"
        }
        if(document.test[1].checked){
         document.getElementById("vert").src="http://nighthammer.free.fr/tmp/vert.jpg"
        }else{
         document.getElementById("vert").src="http://nighthammer.free.fr/tmp/blanc.jpg"
        }
        if(document.test[2].checked){
         document.getElementById("bleu").src="http://nighthammer.free.fr/tmp/bleu.jpg"
        }else{
         document.getElementById("bleu").src="http://nighthammer.free.fr/tmp/blanc.jpg"
        }
        if(document.test[3].checked){
         document.getElementById("noir").src="http://nighthammer.free.fr/tmp/noir.jpg"
        }else{
         document.getElementById("noir").src="http://nighthammer.free.fr/tmp/blanc.jpg"
        }
       }
      </script>
     </head>
     <body onload="chg_color()">
      <form name="test" method="post">
       <table border=1 name="tableau">
        <tr>
         <td>
          <input type="checkbox" onclick="chg_color()">
         </td>
         <td>
          <input type="checkbox" onclick="chg_color()">
         </td>
         <td>
          <input type="checkbox" onclick="chg_color()">
         </td>
         <td>
          <input type="checkbox" onclick="chg_color()">
         </td>
        </tr>
        <tr>
         <td>
          <img src="http://nighthammer.free.fr/tmp/blanc.jpg" width="20" id="rouge">
         </td>
         <td>
          <img src="http://nighthammer.free.fr/tmp/blanc.jpg" width="20" id="vert">
         </td>
         <td>
          <img src="http://nighthammer.free.fr/tmp/blanc.jpg" width="20" id="bleu">
         </td>
         <td>
          <img src="http://nighthammer.free.fr/tmp/blanc.jpg" width="20" id="noir">
         </td>
        </tr>
       </table>
      </form>
     </body>
    </html>
    vous pouvez le tester là : http://nighthammer.free.fr/tmp/index.html

  11. #11
    Membre habitué Avatar de HexChit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 136
    Points
    136
    Par défaut
    ca marche pas -> 404 not found
    Ou sinon je pense qu'il ne peut pas utiliser du javascript tout simplement par souci de securité pour les client de sa boite ou un truc dans ce genre... Mais c'est vrai que ca freine enormement...

  12. #12
    Membre régulier Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Points : 115
    Points
    115
    Par défaut
    tu m'as pris de vitesse. j'avais pas encore envoyé le fichier.

    Maintenant, ça doit marcher.

  13. #13
    Membre habitué Avatar de HexChit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 136
    Points
    136
    Par défaut
    Mmmm à l'heure ou j'ecris ca ne marche toujours pas ahlala Free... [edit]: Ca marche
    (moi aussi je suis chez free )
    <hors sujet>
    ou sinon tu savais que tu pouvais acceder à ta page par http://nighthammer.online.fr
    . Je viens de le découvrir à l'instant
    </hors sujet>

  14. #14
    Membre régulier Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Points : 115
    Points
    115
    Par défaut
    ah oui tiens, c'est marrant ça

    en tout cas pour le lien, ça devrait fonctionner d'ici peu car je viens de retester le lien et il fonctionne.

    ahhh la la... free ! Ils ne sont pas cher, mais la qualité de service n'est pas toujours au rendez-vous ! Enfin c'est quand même bien pratique pour les petits site perso

  15. #15
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 60
    Points
    60
    Par défaut
    Merci ces beau
    ça marche chez moi;
    mais tous cela ne repond pas a ma question
    .
    ton tableau est composer de 4 colonnes et dans les colonne il ya les checkbox . c'est pas ce que je veux.
    dans mon cas les checkbox son cocher par l'utilisateur dans un formulaire a part qui doit remplire avec d'autre information personnelle sur son travaille lors de la creation d'un nouveau projet. apres avoir enregistrer ces informations, il va vers l'onglet '"VOir'" et la il doit retrouver le fameux tableau .
    dans les colonne on met seulement les nom des checkbox, Q1;...Q4 et sur la 2 ligne les couleurs.

    vous m'avez commpris?

  16. #16
    Membre habitué Avatar de HexChit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 136
    Points
    136
    Par défaut
    Alors tu peux utiliser des JScript ou pas?? Si oui alors tu peux adapter le code de nighthammer ça doit pas être si dur que ça
    Ou sinon je t'ai indiqué la demarche la :

    Citation Envoyé par HexChit
    Je suis désolé mais je n'utilise pas du tout Plone. En revanche je pourrai te donner une piste en ZPT :

    tu fais en sorte d'avoir la propriété checked pour chaque checkbox (par URL en GET ou avec des variable en POST).
    Tu controles cette propriété avec un tal:condition (c'est assez facile lorsque tu passes tes variables en GET), et puis si cette condition est verifiée, tu met de la couleur A défaut tu peux utiliser un script python si ce n'est pas possible en ZPT mais j'en doute.

    Je te conseil de prendre du recule par rapport à ton code...

  17. #17
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 60
    Points
    60
    Par défaut
    je peut utiliser que du python script.
    Merci quand meme

  18. #18
    Membre régulier Avatar de nighthammer
    Profil pro
    Développeur Java
    Inscrit en
    Juillet 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2005
    Messages : 122
    Points : 115
    Points
    115
    Par défaut
    voilà un bout de code que j'ai testé :

    dans mon schema j'ai mis ceci (bout de code que j'ai récupéré sur un autre des tes posts) :
    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
     
        LinesField(
            name="allowQuarteur",
            default="None",
            enforceVocabulary=1,
            vocabulary=DisplayList((
                ('None', 'Q1', 'label_Quarteur_q1'),
                ('1',    'Q2', 'label_Quarteur_q2'),
                ('0',    'Q3', 'label_Quarteur_q3'),
                ('2',    'Q4', 'label_Quarteur_q4'), 
            )),
            widget=MultiSelectionWidget(
               format="checkbox",
               label="Allow Quarteur",
               label_msgid="label_package_quarteur",
               description_msgid="help_package_quarteur",
               i18n_domain="plone"
            ),
        ),
    dans le fichier .pt, j'ai mis ceci :
    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
     
       <span tal:define="liste here/allowQuarteur" tal:omit-tag="">
       <table border=1 name="tableau">
        <tr>
         <td>
          Q1
         </td>
         <td>
          Q2
         </td>
         <td>
          Q3
         </td>
         <td>
          Q4
         </td>
        </tr>
        <tr>
         <td tal:condition="python:here.test(liste,'None')">
          <img src="http://nighthammer.free.fr/tmp/rouge.jpg" width="20">
         </td>
         <td tal:condition="python:not here.test(liste,'None')">
          <img src="http://nighthammer.free.fr/tmp/blanc.jpg" width="20">
         </td>
         <td tal:condition="python:here.test(liste,'1')">
          <img src="http://nighthammer.free.fr/tmp/vert.jpg" width="20">
         </td>
         <td tal:condition="python:not here.test(liste,'1')">
          <img src="http://nighthammer.free.fr/tmp/blanc.jpg" width="20">
         </td>
         <td tal:condition="python:here.test(liste,'0')">
          <img src="http://nighthammer.free.fr/tmp/bleu.jpg" width="20">
         </td>
         <td tal:condition="python:not here.test(liste,'0')">
          <img src="http://nighthammer.free.fr/tmp/blanc.jpg" width="20">
         </td>
         <td tal:condition="python:here.test(liste,'2')">
          <img src="http://nighthammer.free.fr/tmp/noir.jpg" width="20">
         </td>
         <td tal:condition="python:not here.test(liste,'2')">
          <img src="http://nighthammer.free.fr/tmp/blanc.jpg" width="20">
         </td>
        </tr>
       </table>
       </span>
    et dans la classe correspondant à l'objet affiché, j'ai mis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        def test(self,tuple,elem):
            """
            renvoi vrai si l'élément elem fait birn parti du
            tuple
            """
            i=0
            retour=0
            while(i<len(tuple)):
                if(tuple[i]==elem):
                    retour=1
                i=i+1
            return retour
    et ça fonctionne correctement.

  19. #19
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 60
    Points
    60
    Par défaut
    Merci pour ta réponse je vai esseyer ce que tu m'a envoyer et je vous tien encourant de suite.

  20. #20
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 127
    Points : 60
    Points
    60
    Par défaut
    je sait pas si on te la déja dit
    tu es le meilleur
    ça fonctionne
    Merci Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/08/2006, 10h23
  2. [C#] Comment intégrer un tableau dans un tableau ?
    Par tazmania dans le forum ASP.NET
    Réponses: 57
    Dernier message: 17/08/2006, 16h59
  3. tableau dans un tableau
    Par creale10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 31/05/2006, 01h15
  4. [HTML]tableau dans un tableau
    Par BigBarbare dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 24/05/2006, 14h35
  5. perte d'éléments dans un tableau dans $_SESSION
    Par jibouze dans le forum Langage
    Réponses: 10
    Dernier message: 15/11/2005, 17h01

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