CMS Automne
http://www.automne-cms.org/forum/

Identifier une rangée
http://www.automne-cms.org/forum/viewtopic.php?f=2&t=669
Page 1 sur 1

Auteur:  dbanon [ Mar Juil 06, 2010 4:57 pm ]
Sujet du message:  Identifier une rangée

Bonjour,

Actuellement j'ai de nombreuses rangées permettant d'afficher des images (avec le module standard).
Dans ces rangées, le champ "Alt tag/Légende" du type "image", s'il est renseigné, est affiché sous l'image (et dans l'attribut "alt"). S'il n'est pas renseigné, la légende n'est pas affichée (et l'attribut "alt" n'est pas renseigné non plus).
Ce que je voudrais c'est pouvoir choisir de renseigner le champ "alt" sans afficher la légende et sans créer de nouvelles rangées (donc en utilisant les rangées existantes).
Le mieux aurait été d'avoir deux champs distincts dans le type image du module standard mais ce n'est pas le cas. Je pourrais envisager de créer un champ "texte" avec le module standard en plus du champ "image" permettant de renseigner la propriété "alt" mais dans ce cas toutes les pages utilisant ces rangées auront l'attribut "alt" à vide et je voudrais éviter une "double-saisie".

Je pensais donc à mettre une case à cocher dans les rangées concernées : si la case est cochée, on affiche la légende, sinon on ne l'affiche pas (ou inversement, par commodité). Il me faudrait donc un identifiant unique de rangée au sein d'une page pour enregistrer l'état de la case à cocher dans une table. Je vois dans certaines tables un "rowID" qui semble être exactement ce dont j'ai besoin. Ma question est donc : comment récupérer (ou calculer) le rowID au sein d'une rangée ?
Est-ce que ma solution vous parait cohérente (peut-être un peu compliquée à mettre en place, mais au niveau ergonomie pour l'utilisateur) ?

Merci !

Auteur:  Frank [ Mar Juil 06, 2010 5:39 pm ]
Sujet du message:  Re: Identifier une rangée

Salut Daniel,

En effet ce serait bien de pouvoir dissocier l'alternative textuelle et de la légende, d'ailleurs en HTML5 l'élément figcaption sera utilisé pour les légendes, il faudra donc pouvoir faire évoluer Automne à ce niveau.

Code :
<figure>
  <img src="/macaque.jpg" alt="Macaque in the trees">
  <figcaption>A cheeky macaque, Lower Kintaganban River, Borneo. Original by <a href="http://www.flickr.com/photos/rclark/">Richard Clark</a></figcaption>
</figure>


Pour obtenir l'identifiant d'une rangée tu peux utiliser $cms_row->getID() en PHP, Sébastien te répondra plus précisément sur la faisabilité de tout ça car je suis pas sur d'avoir compris ce que tu voulais faire avec cet ID ;)

Auteur:  dbanon [ Mer Juil 07, 2010 8:19 am ]
Sujet du message:  Re: Identifier une rangée

J'ai essayé de faire un <?php echo $cms_row->getID(); ?> dans une rangée, mais résultat ma rangée ne s'affiche plus. Où est-ce qu'est déclarée la variable $cms_row ?
En fait ce que je veux faire, c'est enregistrer en base l'état de ma case à cocher pour une rangée donnée. Donc j'ai besoin d'identifier exactement chaque rangée.

Merci pour ton aide !

Auteur:  dbanon [ Mar Sep 07, 2010 11:10 am ]
Sujet du message:  Re: Identifier une rangée

Bonjour,

Je reviens sur ce problème. Je résume :

J'ai une rangée qui contient une image et un texte HTML. Le champ "Alt tag/Légende" de l'image permet :
- de renseigner les champs "title" et "alt" de l'image
- d'afficher une légende sous l'image

Je souhaite gérer de manière indépendante le "alt tag" et la légende. Pour ça, j'ai finalement ajouté un champ texte avec le module standard dans la rangée qui va me permettre de renseigner la légende.
Maintenant mon problème est la récupération des données. Comment je pourrais faire pour prendre le contenu du champ "alt tag" de l'image, et le copier dans le nouveau champ "légende" (lorsque le "alt tag" n'est pas renseigné, la légende restera donc vide) ? Et ce, pour toutes les pages utilisant la rangée ?
J'essaie de faire un script qui tape en base, mais ça ne semble pas évident du tout.
Déjà il faudrait que j'arrive à identifier ma rangée (champ "rowID" dans les tables "blocks*") ?

Bref, je veux bien d'un coup de main :D

Merci !

Auteur:  Frank [ Mar Sep 07, 2010 11:36 am ]
Sujet du message:  Re: Identifier une rangée

dbanon a écrit:
Bonjour,
J'ai une rangée qui contient une image et un texte HTML. Le champ "Alt tag/Légende" de l'image permet :
- de renseigner les champs "title" et "alt" de l'image
- d'afficher une légende sous l'image
Je souhaite gérer de manière indépendante le "alt tag" et la légende.


Pourquoi ne pas faire simple et utiliser le module médiathèque pour cela ?
Automne embarque par défaut des rangées "Texte et media" que tu peux ensuite personnaliser et adapter afin de décider quels champs du module iront dans ton alt, ton title ou ta légende.

A noter que le remplissage de l'alternative textuelle (alt) est obligatoire que si ton image contient des informations textuelles ou non données par le contexte (texte associé). Le title lui n'est obligatoire que si le libellé du lien n'est pas assez explicite et doit apporter de l'information supplémentaire.
Pour la légende (figcaption arrive en HTML5 : http://html5doctor.com/the-figure-figcaption-elements/) :)

Auteur:  Sébastien [ Mar Sep 07, 2010 12:33 pm ]
Sujet du message:  Re: Identifier une rangée

Faire un tel script demanderai pas mal de temps et là comme ça, je ne sais même pas par quel bout l'aborder ...
Ce que tu demande n'est vraiment pas simple et c'est un peu en dehors de ce que je peux faire sur ce forum. Le faire manuellement reste encore le plus simple. Si vraiment ton volume de données à reprendre est important tu peux passer par notre support commercial, on pourra te faire un devis soit pour la reprise, soit pour la création du script.

Auteur:  dbanon [ Mar Sep 07, 2010 1:51 pm ]
Sujet du message:  Re: Identifier une rangée

Merci pour vos réponses. Je vais voir s'il est possible de réaliser cette opération manuellement, et sinon... j'aviserai !

Auteur:  Frank [ Mar Sep 07, 2010 2:06 pm ]
Sujet du message:  Re: Identifier une rangée

Code :
<row>
<div class="right">
   <block module="pmedia" id="media-item" language="fr">
      <atm-search what="{Media}" name="image">
         <!-- On recherche un seul élément -->
         <atm-search-param search="image" type="item" value="block" mandatory="true"/>
         <!-- limiter la recherche à une sous-catégorie 'images' par exemple -->
         <atm-search-param search="image" type="{Media:Categorie:fieldID}" value="block" mandatory="true"/>
         <atm-result search="image">
            <atm-if what="{Media:Fichier:fileExtension} == 'jpg' || {Media:Fichier:fileExtension} == 'gif' || {Media:Fichier:fileExtension} == 'png'">
               <!-- Si il y a une vignette on l'affiche et on fait un lien vers l'image zoom -->
               <atm-if what="{Media:Fichier:thumbnail}">
                  <a href="{Media:Fichier:filePath}/{Media:Fichier:filename}" title="{Media:label}"><img src="{Media:Fichier:filePath}/{Media:Fichier:thumbnail}" alt="{Media:label}"/></a>
               </atm-if>     
               <!-- Si il n'y a pas de vignette, on force le redimensionnement de l'image via une classe CSS -->
               <atm-if what="!{Media:Fichier:thumbnail}"><img src="{Media:Fichier:filePath}/{Media:Fichier:filename}" alt="{Media:label}" title="{Media:label}" class="resizeImage" /></atm-if>
              </atm-if>
               <!-- On affiche la légende de l'image seulement si elle est présente-->
               <atm-if what="{Media:Description:hasvalue}">
                  <div class="legend">{Media:Description:value}</div>
               </atm-if>
            </atm-result>
      </atm-search>
   </block>   
</div>
   <block module="standard" type="text" id="article"><div class="clearfix">{{data}}</div></block>
</row>     


Je sais pas si ça peut répondre à ton besoin, mais sinon tu peux passer par une rangée de ce type - code non testé - en utilisant la mediathèque pour pouvoir te permettre de distinguer le contenu du 'alt' et celui de la légende en utilisant le label pour le alt et la description pour la légende.

Mes 2 cents.

Auteur:  dbanon [ Mar Sep 07, 2010 2:42 pm ]
Sujet du message:  Re: Identifier une rangée

Malheureusement je ne peux pas passer par le module Mediathèque. La rangée dont je parle n'est pas basée sur ce module et est utilisée depuis un certain temps dans un certain nombre de pages maintenant.

Auteur:  dbanon [ Mar Sep 07, 2010 2:52 pm ]
Sujet du message:  Re: Identifier une rangée

Comment est-il possible de savoir à quelle rangée appartient un bloc dans la base de données ? Le champ "rowID" des tables "blocks*" me perturbe...

Auteur:  Sébastien [ Mar Sep 07, 2010 3:30 pm ]
Sujet du message:  Re: Identifier une rangée

Le champ rowID est un ID unique qui permet de lier une rangée aux espaces clients d'une page (cf champ rowsDefinition_cs des tables mod_standard_clientSpaces_*). C'est cette table mod_standard_clientSpaces_* qui te permettra de relier la page, l'espace client et la rangée.

Auteur:  dbanon [ Mar Sep 07, 2010 3:38 pm ]
Sujet du message:  Re: Identifier une rangée

Merci pour l'info !

Page 1 sur 1 Le fuseau horaire est UTC [Heure d’été]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/