Définition XML des rangées de module polymod

Chaque module polymod sous Automne peut utiliser une balise <block> dans les rangées de contenu, pour pouvoir utiliser un contenu dynamique plus ou moins complexe.

Nous abordons ici les modules polymod, intégrés au noyau d'Automne et donc parfaitement compatibles avec ces balises. De nombreuses fonctionnalités de parsing sont offertes avec l'utilisation de la balise <block> d'un module polymod.

Bloc de données

Une aide dynamique est disponible directement depuis l'interface d'administration d'Automne.
Vous pouvez y accéder lors de l'édition des modèles (de pages et de rangées), en cliquant sur Aide, sous l'onglet "définition XML".

Tous les modules polymod peuvent utiliser la balise <block> nativement.

<block module="pnews" id="blockID" language="languageCode" cache="lifetime"> ... </block>

Cette balise permet l'affichage de données spécifiques à ce module. Il doit entourer tout ensemble de balises relatives à un traitement de données du module.

  • blockID : Identifiant unique du bloc de contenu dans la rangée. Deux blocs de contenus d'une même rangée ne doivent pas avoir d'identifiants identiques.
  • languageCode : (facultatif) Code du langage relatif à ce bloc de contenu parmi les codes disponible pour votre application (par défaut "fr" et "en").
    Si non présent, la langue de la page sera utilisée.
    Si non présente, la langue par défaut d'Automne sera utilisée.
  • lifetime (attribut facultatif) : Cet attribut permet de spécifier la durée du cache appliqué sur ce bloc de données. Il accepte les valeurs suivantes :
    • 0, false : Désactive le cache coté client pour ce bloc.
    • nombre entier supérieur à 1 : Active le cache pour la durée spécifiée (en secondes).
    • 1, true, auto : Active le cache automatique (valeur par défaut si l'attribut n'existe pas). Le cache automatique à une durée maximum de 24h. Il sera activé uniquement si ce bloc de données ne contient pas de code PHP. Pour plus d'informations consultez le fonctionnement du cache des données Polymod.

Tous les tags cités ci-dessous doivent nécessairement être situés dans une balise block dont le module est de type "polymod". Si ce n'est pas le cas les tags ne seront pas correctement parsés et des erreurs pourraient survenir.
Voir la section concernant le tag block pour les modules PHP.

Effectuer une recherche

Lance une recherche sur un type d'objet donné :

<atm-search what="objet" name="searchName">...</atm-search>

  • objet : Type d'objet à rechercher (de la forme {objet})
  • searchName : Nom de la recherche : identifiant unique pour la recherche dans la rangée.
  • Un attribut public (facultatif) peut-être ajouté pour spécifier une recherche sur la zone publique ou éditée. Il prend pour valeur true pour une recherche publique (défaut) ou false pour une recherche dans la zone éditée.

Cette balise peut contenir les balises suivants

Affichage des résultats

<atm-result search="searchName"> ... </atm-result>

Le contenu de cette balise sera lu pour chaque résultat trouvé pour la recherche en cours.

  • searchName : Nom de la recherche sur lequel appliquer le paramètre.
  • Un attribut return (facultatif) peut-être ajouté pour spécifier le type de résultat retourné. Par défaut une recherche revoie des objets, mais dans l'optique d'améliorer les performances, il est possible de spécifier les deux valeurs suivantes de retour :
    • POLYMOD_SEARCH_RETURN_IDS : retournera uniquement l'identifiant du résultat. Récupérable par {resultid}.
    • POLYMOD_SEARCH_RETURN_OBJECTSLIGHT : retournera le résultat mais sans charger les sous-objets qu'il peut contenir dans ses différents champs. Attention, ce paramètre n'est possible que sur une recherche publique.

Les valeurs suivantes seront remplacées dans la balise :

  • {firstresult} : Vrai si le résultat en cours est le premier de la page en cours.
  • {lastresult} : Vrai si le résultat en cours est le dernier de la page en cours.
  • {resultcount} : Numéro du résultat dans la page.
  • {maxresults} : Nombre de résultats pour la recherche.
  • {maxpages} : Nombre de pages maximum pour la recherche en cours.
  • {currentpage} : Numéro de la page actuelle pour la recherche en cours.
  • {resultid} : Identifiant du résultat. Utile dans le cas du'une recherche retournant uniquement les identifiants des résultats (paramètre return avec la valeur POLYMOD_SEARCH_RETURN_IDS).

Aucun résultat

<atm-noresult search="searchName"> ... </atm-noresult>

Le contenu de cette balise sera affiché si aucun résultat n'est trouvé pour la recherche en cours.

  • searchName : Nom de la recherche sur lequel appliquer le paramètre.

Paramètre de recherche

<atm-search-param search="searchName" type="paramType" value="paramValue" mandatory="mandatoryValue" />

Permet de limiter les résultats de la recherche à des paramètres donnés.

searchName

Nom de la recherche sur lequel appliquer le paramètre.

paramType

Type de paramètre, peut-être de la forme {objet:champ:fieldID} pour filtrer la recherche sur la valeur d'un champ donné (voir l'aide dynamique du champ).

Exemple, pour une recherche "maRecherche" sur l'objet "Actualité", on souhaite un paramètre sur le champ "Catégorie", de valeur {request:int:cat} :

<atm-search-param search="maRecherche" type="{Actualite:Categorie:fieldID}" value="{request:int:cat}" mandatory="true" />

Il peut également être un nom fixe parmi :

  • object : La valeur est un objet de la forme {objet}.

Par exemple {Actualite}.

  • item : La valeur est un identifiant d'élément polymod. La valeur doit nécessairement être un entier positif.

Par exemple {var:int:monActualite}, qui correspond à la valeur 8.

Pour connaître l'identifiant d'un élément polymod, il suffit d'activer les paramètres Automne "Activer le débugage du système" et "Activer le débugage du polymod". Les identifiants sont alors affichés en regard des éléments dans l'administration d'Automne.
  • items : La valeur est un tableau d'identifiants d'éléments polymod, de la forme array(id1, id2, id3, ...). La recherche utilise uniquement ces identifiants pour retourner des résultats. C'est à dire que les résultats de la recherche ne pourront être que parmi les identifiants indiqués par ce tableau.

Par exemple un tableau PHP $items = array(1, 2, 3, 7); qui est récupéré avec {var:array:items}.

  • itemsOrdered : La valeur est un tableau d'identifiants d'éléments polymod, identique au type items, mais ici les résultats seront triés comme définis dans le tableau passé en valeur. Tout autre tri sera ignoré.

Par exemple un tableau PHP $items = array(1, 7, 3, 2); qui est récupéré avec {var:array:items}.

  • keywords : La valeur est une chaîne de caractères.

Par exemple {var:string:keyword} qui correspond à la valeur "Test de recherche".

On distingue 2 cas pour le type keywords :

1. L'objet pour lequel on effectue une recherche n'est pas indexé par le module "Moteur de recherche"  :
Dans ce cas le polymod recherche la chaîne passée en valeur (les mots sont séparés par les espaces, les virgules et points virgules) sur les champs indiqués en tant que "recherchable".

2. L'objet pour lequel on effectue une recherche est indexé par le module "Moteur de recherche"  :
Dans ce cas le moteur de recherche ASE effectue sa propre recherche et renvoie au polymod un tableau d'identifiants d'éléments polymod. La recherche est ainsi basée sur la pertinence des résultats du moteur de recherche.
Pour information, une recherche via le moteur de recherche ASE ne prend en compte que les 1000 premiers résultats.
  • publication date after : La valeur est une date au format de la langue courante. Ce paramètre vérifie que l'objet est bien de type ressource primaire et possède une date de début de publication supérieure ou égale à la date indiquée.

Exemple en langue Française (language code = fr) : 15/03/2010.
Exemple en langue Anglaise (language code = en) : 03/15/2010.

Le module Polymod convertit automatiquement le format de la date entrée (pour le Français ce sera d/m/Y, pour l'anglais m/d/Y) en format SQL : Y-m-d.

La requête SQL effectuée en arrière plan vérifie que :
- l'objet est bien de type "ressource primaire"
- la date de début de publication est différente de "0000-00-00"
- la date de début de publication est supérieure ou égale à la valeur indiquée.
  • publication date before : La valeur est une date au format de la langue courante. Ce paramètre vérifie que l'objet est bien de type ressource primaire et possède une date de début de publication inférieure ou égale à la date indiquée.

Exemple en langue Française (language code = fr) : 15/03/2010.
Exemple en langue Anglaise (language code = en) : 03/15/2010.

Le module Polymod convertit automatiquement le format de la date entrée (pour le Français ce sera d/m/Y, pour l'anglais m/d/Y) en format SQL : Y-m-d.

La requête SQL effectuée en arrière plan vérifie que :
- l'objet est bien de type "ressource primaire"
- la date de début de publication est différente de "0000-00-00"
- la date de début de publication est inférieure ou égale à la valeur indiquée.

paramValue

Valeur du paramètre de la recherche. Si la valeur est 'block' vous pourrez spécifier cette valeur lors de la création de la rangée dans la page.

Lorsque la valeur d'un paramètre de recherche est "block", cela permet à un rédacteur de sélectionner une valeur prédéfinie lorsqu'il édite la page contenant la recherche polymod.

Il est parfois utile de récupérer la valeur sélectionnée pour l'utiliser en PHP.
Si la valeur est définie, elle est stockée dans un tableau de la forme :
$blockAttributes['search']['mySearchName']['fieldID']

Par exemple, pour une recherche nommée "newsHomePage", si l'on établit un paramètre de recherche sur le champ qui a pour identifiant 5 avec une valeur définie à "block", la valeur sélectionnée par le rédacteur pourra être récupérée ici :
$blockAttributes['search']['newsHomePage'][5]

mandatoryValue

Booléen (true ou false), permet de spécifier si ce paramètre de recherche est optionnel ou obligatoire.

operator

Un paramètre supplémentaire operator permet d'ajouter un comportement spécifique au type de champs sur le filtre. La valeur acceptée par ce paramètre est expliquée dans l'aide du champ concerné si il accepte un tel paramètre.

Voici les valeurs de l'attribut operator selon les différents champs existants :

  • Catégories :
    • editableOnly : Ne recherche que les objets associés à la(aux) catégorie(s) éditable(s) fournie(s) en paramètre.
    • strict : Ne recherche que les objets associés à la catégorie en paramètre (les sous-catégories ne sont plus prises en compte).
    • not in : Ne recherche que les objets qui ne sont pas associés à la catégorie en paramètre.
    • not in strict : Ne recherche que les objets qui ne sont pas associés à la catégorie en paramètre, de façon stricte (les sous-catégories ne sont plus prises en compte).
  • Chaîne de caractères :
    • like : Permet de faire une recherche sur une valeur incomplète. Utilisez le caractère % pour spécifier la partie inconnue. Par exemple, "cha%" retournera "chat", "chameau", etc.
  • Date :
    • >= : Supérieur ou égal.
    • <= : Inférieur ou égal.
    • > : Supérieur.
    • < : Inférieur
    • >= or null : Supérieur ou égal ou valeur nulle.
    • <= or null : Inférieur ou égal ou valeur nulle.
    • > or null : Supérieur ou valeur nulle.
    • < or null : Inférieur ou valeur nulle.
    • >= and not null : Supérieur ou égal et valeur non nulle.
    • <= and not null : Inférieur ou égal et valeur non nulle.
    • > and not null : Supérieur et valeur non nulle.
    • < and not null : Inférieur et valeur non nulle.
  • Nombre entier :
    • < : inférieur
    • <= : inférieur ou égal
    • > : supérieur
    • >= : supérieur ou égal
  • Nombre flottant (à virgule)
    • < : inférieur
    • <= : inférieur ou égal
    • > : supérieur
    • >= : supérieur ou égal
    • like : Permet de faire une recherche sur une valeur incomplète. Utilisez le caractère % pour spécifier la partie inconnue. Par exemple, "cha%" retournera "chat", "chameau", etc.

Attention : Si l'attribut operator n'est pas défini dans la balise atm-search-param, la recherche est effectuée par défaut avec les paramètres suivants :

Champ de base "texte" : like '%value%'
Champ de base "string" : like '%value%'
Champ de base "date" : like 'value%'
Champ de base "integer" (tableau) : in(value)
Champ de base "integer" (entier) : = 'value'

Voir aussi : Héritage des champs

Exemple de champ catégorie avec valeur sélectionnable :

<atm-search-param search="homePageNews" type="{Actualite:Categorie:fieldID}" value="block" mandatory="true" />

Exemple de paramètre de recherche de type "mots clés" :

<atm-search-param search="homePageNews" type="keywords" value="{request:string:keywords}" mandatory="true" />

Afficher une page donnée de résultats (le nombre de résultats d'une page est spécifié par la balise atm-search-limit)

<atm-search-page search="searchName" value="pageValue" />

  • searchName : Nom de la recherche sur lequel appliquer le paramètre.
  • pageValue : Valeur numérique de la page à afficher.

Limiter le nombre de résultats d'une page

<atm-search-limit search="searchName" value="limitValue" />

  • searchName : Nom de la recherche sur lequel appliquer la limite.
  • limitValue : Valeur numérique de la limite à appliquer. Si la valeur est 'block' vous pourrez spécifier cette valeur lors de la création de la rangée dans la page.

Ordonner les résultats

<atm-search-order search="searchName" type="orderType" direction="directionValue" />

  • searchName : Nom de la recherche sur lequel appliquer la limite.
  • orderType : Type de valeur sur lequel appliquer l'ordre, peut-être de la forme {objet:champ:fieldID} ou un nom de type fixe parmi : objectID, random, publication date after, publication date before.
  • directionValue : Sens à appliquer : asc pour croissant, desc pour décroissant. Si la valeur est 'block' vous pourrez spécifier cette valeur lors de la création de la rangée dans la page.

Fonctions

Afficher la liste des pages de la recherche en cours

<atm-function function="pages" maxpages="maxpagesValues" currentpage="currentpageValue" displayedpage="displayedpagesValue">
<pages> ... {n} ... </pages>
<currentpage> ... {n} ... </currentpage>
<start> ... {n} ... </start>
<previous> ... {n} ... </previous>
<next> ... {n} ... </next>
<end> ... {n} ... </end>
</atm-function>

Cette fonction permet d'afficher la liste de toutes les pages possibles pour la recherche.

  • maxpagesValue : Nombre de page maximum sur lesquelles boucler (habituellement : {maxpages} ).
  • currentpageValue : Numéro de la page courante de la recherche (habituellement : {currentpage} ).
  • displayedpagesValue : Nombre de pages à afficher.
  • La balise <pages> sera lue pour chaque page à lister excepté la page courante et la valeur {n} sera remplacée par le numéro de la page.
  • La balise optionnel <currentpage> sera lue pour la page en cours. Si il n'existe pas, la balise <pages> sera utilisée à la place.
  • La balise optionnel <start> sera lue pour la première page.
  • La balise optionnel <previous> sera lue pour la page précédente.
  • La balise optionnel <next> sera lue pour la page suivante.
  • La balise optionnel <end> sera lue pour la dernière page.

Balises de contrôle

Afficher le contenu de la balise si la condition est remplie

<atm-if what="condition"> ... </atm-if>

  • condition : Condition à remplir pour afficher le contenu de la balise. L'usage courant est de valider la présence d'une valeur non nulle. Cette condition peut aussi prendre toutes les formes valides d'une condition PHP (voir : Les structures de contrôle en PHP). La condition sera remplie si la valeur existe ou bien n'est pas nulle ou bien n'est pas égale à faux (false).
  • Un attribut name (facultatif) peut être ajouté si vous souhaitez exécuter la condition contraire (else) à l'aide d'une balise atm-else (voir ci-dessous). Cet attribut ne peut contenir que des caractères alphanumériques (a-zA-Z0-9_.-).

 <atm-else for="if-name"> ... </atm-else>

  • for : nom alphanumériques de la balise atm-if de référence. Le contenu de cette balise ne sera affiché que si la condition de la balise atm-if de référence n'est pas remplie.
  • Un attribut what (facultatif) peut-être ajouté si vous souhaitez ajouter une condition supplémentaire pour afficher le contenu de cette balise. L'usage courant est de valider la présence d'une valeur non nulle. Cette condition peut aussi prendre toutes les formes valides d'une condition PHP (voir : Les structures de contrôle en PHP). La condition sera remplie si la valeur existe ou bien n'est pas nulle ou bien n'est pas égale à faux (false).

Boucler sur un ensemble d'objets :

<atm-loop on="objets"> ... </atm-loop>

  • objets : Collection d'objets. Employé pour traiter tous les objets d'un ensemble d'objets multiple (dit multi-objet).
  • reverse : (facultatif) attribut qui peut être ajouté pour inverser l'ordre des résultats (valeur : booléen true, false).

Les valeurs suivantes seront remplacées dans la balise :

  • {firstloop} : Vrai si l'objet en cours est le premier de la liste d'objets.
  • {lastloop} : Vrai si l'objet en cours est le dernier de la liste d'objets.
  • {loopcount} : Numéro de l'objet en cours dans la liste d'objets.
  • {lastloop} : Vrai si l'objet en cours est le dernier de la liste d'objets.
  • {maxloops} : Nombre d'objets sur lesquels boucler. 

Assigner une valeur à une variable

<atm-setvar vartype="type" varname="name" value="varValue" />

  • type : Type de la variable à assigner : request, session ou var.
  • name : Nom de la variable à assigner. Attention, réassigner une variable existante supprimera l'ancienne valeur.
  • varValue : valeur à assigner à la variable.

Créer une balise XHTML ouvrant ou fermant

Dans certains cas de figures, il peut être intéressant de pouvoir créer une balise XHTML ouvrant ou fermant à l'intérieur d'un autre tag (une condition par exemple). Or ce cas de figure casse la syntaxe XML. Dans ce cas, vous pouvez employer les deux tags suivants :

<atm-start-tag tag="tagName" />

  • tag : Nom de la balise ouvrant à afficher.
  • Vous pouvez ajouter ensuite autant d'attributs supplémentaires que vous le souhaitez, ils seront tous ajoutés au tag généré.

<atm-end-tag tag="tagName" />

  • tag : Nom de la balise fermant à afficher.

Exemple

Votre rangée comporte le code suivant :
<atm-if what="condition1">
    <atm-start-tag tag="div" class="class1" />
</atm-if>
<atm-if what="condition2">
    <atm-start-tag tag="div" class="class2" />
</atm-if>
... du contenu XHTML ...
<atm-tag-end tag="div" />

Si la condition 1 est remplie, vous obtiendrez le code suivant :
<div class="class1">
... du contenu XHTML ...
</div>

Recharger une zone en AJAX

<atm-xml what="condition"> ... </atm-xml>

Permet de recharger une zone spécifique de la page via une requête de type AJAX.

Si la requête HTTP appelant la page en cours contient les paramètres vérifiant l'attribut condition, alors seul le contenu de la balise atm-xml sera renvoyé en réponse à la requête HTTP. Le reste du contenu de la page en cours sera ignoré.

Pour plus d'informations, étudiez les modules Polymod fournis avec la démonstration d'Automne, ils font appel à cette fonctionnalité.

  • condition : Condition à remplir pour obtenir le contenu de la balise atm-xml.

Exemple à l'aide de JQuery

Votre rangée comporte le code suivant :

<atm-xml what="{request:string:out} == 'xml'">
    ... recherche d'actualités ...
</atm-xml>

Si on effectue la requête ajax suivante vers la page comportant cette rangée :

$.ajax({
   type: "POST",
   url: pageURL,
   data: 'out=xml&cat=' + $('#cat').val(),
   success: displaySearch
});

Alors la recherche d'actualités sera relancée avec le paramètre de la catégorie selectionnée et seul le contenu de cette zone sera retourné :

<?xml version="1.0" encoding="utf-8"?>
<response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <error>0</error>
    <data><![CDATA[ ... le contenu de la balise atm-xml correspondant à la nouvelle recherche d'actualités ... ]]></data>
</response>

Référencer un élément pour le gestionnaire de cache

<atm-cache-reference element="element" />

  • element : Référencer un module à l'aide de son codename. exemples : pmedia, pnews, standard ou les utilisateurs ou groupes d'Automne à l'aide de la valeur : users.

Cette balise vous permet d'informer le gestionnaire de cache que vous employez dans du code PHP inséré dans le bloc en cours, un élément donné (module ou utilisateurs / groupes d'Automne). Ainsi, le gestionnaire de cache pourra monitorer les modifications faites sur cet élément pour rafraichir le cache si l'élément référencé vient à être modifié. Pour plus d'informations consultez le fonctionnement du cache des données Polymod.

Variables générales

Variables relatives aux pages

Les variables relatives aux pages sont de la forme {page:id:type}:

  • id : Identifiant de la page à laquelle faire référence, peut-être un identifiant numérique d'une page ou bien 'self' pour faire référence à la page courante.
  • type : type de donnée souhaité pour la page parmi les suivant : url (adresse de la page), printurl (adresse de la page d'impression), id (identifiant de la page), title (nom de la page).

Attention, si vous utilisez ceci pour générer le href d'un lien, celui-ci sera toujours affiché même si l'utilisateur n'a pas les droits pour consulter la page. Seul les liens de type atm-linx font la vérification de droit avant l'affichage

Variables relatives aux données envoyées (via une adresse ou un formulaire)

Ces variables correspondent à une variable provenant de la soumission d'un formulaire ou bien d'un paramètre du lien ayant amené à la page en cours.
Elles sont de la forme {request:type:name} :

  • type : Correspond au type de variable attendu, parmi les suivant :
    • int : nombre entier,
    • string : chaîne de caractère,
    • bool : booléen,
    • array : tableau de valeurs,
    • email : email valide,
    • date : date valide sans heure (retourne une date au format MySQL : YYYY-MM-DD),
    • datetime : date valide avec heure (retourne une date au format MySQL : YYYY-MM-DD HH:MM:SS).
    • localisedDate : date valide sans heure (retourne une date au format de votre langue actuelle : jj/mm/aaaa).
    • name : Correspond au nom de la variable souhaité (nom du paramètre dans l'url ou bien nom du champ du formulaire).

Variables de session

Ces variables sont disponibles tout au long de la navigation du visiteur sur le site. Elles sont de la forme {session:type:name} :

  • type : Correspond au type de variable attendu, parmi les suivant :
    • int : nombre entier,
    • string : chaîne de caractère,
    • bool : booléen,
    • array : tableau de valeurs,
    • email : email valide,
    • date : date valide sans heure (retourne une date au format MySQL : YYYY-MM-DD),
    • datetime : date valide avec heure (retourne une date au format MySQL : YYYY-MM-DD HH:MM:SS).
    • localisedDate : date valide sans heure (retourne une date au format de votre langue actuelle : jj/mm/aaaa).
    • name : Correspond au nom de la variable souhaité (nom de la variable de session).

Variables

Ces variables correspondent à des variables PHP classiques.
Elles sont de la forme {var:type:name} :

  • type : Correspond au type de variable attendu, parmi les suivant :
    • int : nombre entier,
    • string : chaîne de caractère,
    • bool : booléen,
    • array : tableau de valeurs,
    • email : email valide
    • date : date valide sans heure (retourne une date au format MySQL : YYYY-MM-DD),
    • datetime : date valide avec heure (retourne une date au format MySQL : YYYY-MM-DD HH:MM:SS).
    • localisedDate : date valide sans heure (retourne une date au format de votre langue actuelle : jj/mm/aaaa).
    • name : Correspond au nom de la variable souhaité (nom de la variable PHP).

Variables relatives aux utilisateurs

Les variables relatives aux utilisateurs sont de la forme {user:id:type}.

  • id : Identifiant de l'utilisateur auquel faire référence, peut être un identifiant numérique d'un utilisateur ou bien "self" pour faire référence à l'utilisateur courant (uniquement si la vérification des droits côté client est activé dans les paramètres Automne).
  • type : Correspond au type de variable attendu, parmi les suivants :
    • id : identifiant numérique de l'utilisateur,
    • login : identifiant de l'utilisateur,
    • fistName : prénom,
    • lastName : nom,
    • fullName : prénom et nom,
    • email : email,
    • language : retourne un objet CMS_language correspondant à la langue du compte utilisateur,
    • active : booléen, true pour actif, false pour inactif,
    • deleted : booléen, true pour supprimé, false pour existant

Balises de formulaires (création - modification)

Création modification d'objets coté client

<atm-form what="objet" name="formName"> ... </atm-form>

Cette balise permet de créer un formulaire de saisie pour un nouvel objet (si cette balise n'est pas dans un résultat de recherche) ou de modification pour un objet existant (si cette balise se trouve dans un résultat de recherche.

  • objet : Type d'objet à saisir (de la forme {objet})
  • formName : Nom du formulaire : identifiant unique pour le formulaire dans la rangée.

Les valeurs suivantes seront remplacées dans la balise :

  • {filled} : Vrai si le formulaire a été correctement rempli et que sa validation n'a provoqué aucune erreur.
  • {required} : Vrai si le formulaire n'a pas été correctement rempli et que des champs requis ont été laissés vides.
  • {malformed} : Vrai si le formulaire n'a pas été correctement rempli et que les values de certains champs sont incorrectes.

Cette balise peut contenir les balises suivants

Affichage des champs requis

<atm-form-required form="formName">
... {requiredname} ...
</atm-form-required>

Le contenu de la balise sera lu pour chaque champ requis lors de la saisie du formulaire.

  • formName : Nom du formulaire sur lequel appliquer la balise.

Les valeurs suivantes seront remplacées dans la balise :

  • {firstrequired} : Vrai si le champ requis en cours est le premier du formulaire en cours.
  • {lastrequired} : Vrai si le champ requis en cours est le dernier du formulaire en cours.
  • {requiredcount} : Numéro du champ requis dans le formulaire en cours.
  • {maxrequired} : Nombre de champs requis dans le formulaire en cours.
  • {requiredname} : Nom du champ requis dans le formulaire en cours.
  • {requiredfield} : Objet champ requis dans le formulaire en cours.

Affichage des champs malformés

<atm-form-malformed form="formName">
... {malformedname} ...
</atm-form-malformed>

Le contenu de la balise sera lu pour chaque champ malformé lors de la saisie du formulaire.

  • formName : Nom du formulaire sur lequel appliquer la balise.

Les valeurs suivantes seront remplacées dans la balise :

  • {firstmalformed} : Vrai si le champ malformé en cours est le premier du formulaire en cours.
  • {lastmalformed} : Vrai si le champ malformé en cours est le dernier du formulaire en cours.
  • {malformedcount} : Numéro du champ malformé dans le formulaire en cours.
  • {maxmalformed} : Nombre de champs malformés dans le formulaire en cours.
  • {malformedname} : Nom du champ malformé dans le formulaire en cours.
  • {malformedfield} : Objet champ malformé dans le formulaire en cours.

Affichage d'un champ de saisie

<atm-input field="{objet:champ}" form="formName" />

Cette balise sera remplacé par la zone de saisie (champ de formulaire) nécessaire à la saisie correcte des informations relatives au type du champ spécifié.

  • formName : Nom du formulaire sur lequel appliquer la balise.
  • {objet:champ} : Champ de l'objet géré par le formulaire sur lequel la saisie doit être effectuée.

Cette balise peut ensuite avoir tout une suite d'attributs HTML qui seront repostés sur le code HTML du champ généré (width, height, id, class, etc.).

Affichage d'un champ de saisie avec vérification complexe

<atm-input field="{objet:champ}" form="formName">
 ... <atm-input-callback return="returnValue" /> ...
</atm-input>

Cette balise permet d'effectuer des validations de champs dans un atm-form

  • returnValue : La présence de la balise atm-input-callback avec pour attribut return="valid" validera le contenu du champ, en cas d'abscence de la balise ou de valeur différente de "valid" le champ retournera une erreur de type malformed.

Cet exemple permet de rechercher si un utilisateur existe déjà pour un email donné et auquel cas, d'empêcher sa réinscription :

<atm-input id="participant-email" field="{Participant:Email}" form="quizInscription">
 <atm-search what="{Participant}" name="emailCheck">
 <atm-search-param search="emailCheck" type="{Participant:Email:fieldID}" value="{request:string:participantEmail}" mandatory="true" />
 <atm-result search="emailCheck">
 <atm-input-callback return="invalid" />
 </atm-result>
 <atm-noresult search="emailCheck">
 <atm-input-callback return="valid" />
 </atm-noresult>
 </atm-search>
</atm-input>




Haut