Premiers pas avec SCENARIbuilderHelloUniverse > Les axis
page précédentepage suivante

Les axis

Problématique

Pour publier un document, nous avons souvent besoin de publier une donnée plusieurs fois, et de plusieurs manières différentes. Lorsque l'on fait un appel classique à un transformer, c'est toujours le même qui est appelé, et il publie toujours les données de la même manière, avec toujours les mêmes classes pour le stylage.

Axis
axe de transformation

Le rôle des axis est de définir plusieurs versions d'un même transformer, qui peuvent publier la même donnée de plusieurs manières différentes. Autrement dit : Un axis est une variante d'un transformer, il permet de parcourir un .model dans un contexte particulier.

Par exemple, dans notre liste de planètes, nous pouvons rajouter une page "galerie" qui va afficher des miniatures de toutes les photos des planètes.

En XSL, ce concept se rapproche de celui de l’attribut mode sur xsl:apply-template et sur xsl:template.

Appeler des transformers avec axis

À partir d'un transformer ou du template, lorsque l'on utilise callSubModel, callRootModel, callSubMeta, callMeta, ou autre appel à un transformer fils, nous avons la possibilité de préciser un axis. Par exemple, dans universe.transf, on rajoute un appel, pour chaque astre de la liste, avec l'axis gallery.

La hiérarchie des transformers avec axis

Vous allez maintenant créer les transformers fils pour reproduire toute une hiérarchie jusqu'à arriver au niveau "image".

Par convention, on nomme les fichiers axis avec transformers sous la forme codeObjet@codeAxis.transf.

Le premier callSubModel axis gallery situé dans universe.transf est un appel au transformer de XXXX.model d’axis YYYY. Dupliquez XXXX.transf en XXXX@YYYY.transf

Solution

est un appel au transformer de la composition astrobj.model d’axis galery

Dupliquez astrobj.transf en astrobj@gallery.transf

Paramétrez le transformer en renseignant bien l’axis dans la définition du transformer (sous sm:model), et faites un appel à ses métadonnées d’axis gallery.

On cherche à afficher seulement quelques informations sur l’astre, donc on ne veut pas toutes les métadonnées, seulement une sélection.

Notre deuxième appel callCompositionMeta axis gallery que l’on vient de paramétrer est un appel au transformer de XXXX.model d’axis YYYY. Dupliquez XXXX.transf en XXXX@YYYY.transf

Solution

est un appel au transformer de la dataform astrobjM.model d’axis galery

Dupliquez astrobjM.transf en astrobjM@gallery.transf

Paramétrez le transformer en renseignant bien l’axis.

Proposition : afficher seulement la photo en miniature (avec encore une fois un axis gallery pour paramétrer l’affichage de l’image dans ce contexte précis).

Enregistrez les items en cours et jetez un œil à l’écran de contrôle. Quel est le problème ? Quelle étape manque ?

Solution

Il manque la déclaration du transformer d’astrobj (dont le préfixe de namespace est hw), d’axis gallery

Déclarez vos nouveaux transformers dans le transflist ou le générateur.

Pour passer d'un transformer à un autre en restant sur le même axis, il faut que celui-ci soit spécifié en deux endroits

  • Dans l'entête du transformeur : sm:axis code="..."
  • Dans l'appel aux autres transformeurs à partir de celui-ci, par exemple : sm:callCompositionMeta axis="gallery"
Les axis pour les ressources binaires

Utiliser les axis sur les ressources binaires permet de spécifier leurs propriétés de publication dans un cas d'usage, par exemple changer la taille d'une image dans la version "galeries de miniatures".

Nous allons utiliser cette possibilité pour forcer la taille des images à 200 pixels de large (200 en min et en max). On copie les transformeurs jpeg_web.transf et png_web.transf du modelet binary pour avoir un point de départ.

Compléments

D’axis gallery.

on modifie ces 2 transformers.

On pourrait aussi appeler les transformeurs des images sans axis une fois arrivés dans astrobjMeta@gallery.transf mais dans ce cas, nous n'aurions pas l'image à la taille personnalisée que nous souhaitons.

Déclarez les nouveaux transformers créés.

Résultat

Créez un contenu de test avec 3 planètes et autant de photos. Si vous avez réussi, les 3 photos devraient apparaître sur la page d'introduction.

Mettre à jour le fichier transflist

Comme toujours, pensez à rajouter vos nouveaux transformers dans le fichier transflist de votre modèle (comme vous pouvez le voir sur la fenêtre ci-dessous), c'est valable aussi pour les transformeurs avec axis, chacun doit être ajouté.

Vous avez tout compris ? transformez votre galerie en galerie cliquable...
page précédentepage suivante
A propos...© scenari-platform.org 2011Réalisé avec Scenari