Comment gérer les rendus d'un Smart Element
Prérequis
Afin de pouvoir suivre ce guide, il faut préalablement avoir créé un formulaire (Une SmartStructure).
Comment procéder ?
Recommandations
Si vous n'êtes pas familier avec les concepts que sont le Rendu
, les Vues
ainsi que leur fonctionnement, il est
fortement recommandé de lire la documentation associée
diponible ici
Comment gérer la visibilité des SmartFields d'un SmartElement ?
Recommandations
Les masques permettent de changer la visibilité des SmartField d'un SmartElement.
> Ainsi, il est possible de définir pour chaque SmartField de la SmartStructure sa nouvelle visibilité, ainsi que de changer son caractère obligatoire.
> [...]
Si vous n'êtes pas familier avec les Masque
et leur fonctionnement, il est fortement recommandé de lire la
documentation associée disponible ici
Dans notre cas, nous allons créer deux masques avec la commande
createSetting
:
Informations
Si la SmartStructure renseignée pour --associatedSmartStructure
existe, alors le masque est placé automatiquement dans
le dossier <SmartStructureName>Settings
Les différentes valeurs possible pour l'attribut value
de la balise <ui:visibility>
sont
listés dans la documentation
Visibilité des SmartFields pour le directeur
npx @anakeen/anakeen-cli createSetting --type Masks --name Plat_Mask_Directeur --associatedSmartStructure PLAT
<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0" xmlns:ui="https://platform.anakeen.com/4/schemas/ui/1.0">
<ui:mask xmlns:ui="https://platform.anakeen.com/4/schemas/ui/1.0" name="PLAT_MASK_DIRECTEUR" label="Plat_Mask_Directeur" structure="PLAT">
<ui:visibility-list>
<ui:visibility field="consommable_title" value="W"/> <!-- SmartField visible en consultation et en modification, et modifiable -->
<ui:visibility field="consommable_description" value="W"/> <!-- SmartField visible en consultation et en modification, et modifiable -->
<ui:visibility field="consommable_price_incl_vat" value="R"/> <!-- SmartField visible en consultation uniquement -->
<ui:visibility field="plat_type" value="S"/> <!-- SmartField visible en consultation et en modification, mais non modifiable -->
<ui:visibility field="plat_validity_date" value="S"/> <!-- SmartField visible en consultation et en modification, mais non modifiable -->
</ui:visibility-list>
<!-- Obligations de saisie des champs spécifiés -->
<ui:need-list>
<ui:need field="consommable_title" value="true"/>
<ui:need field="consommable_description" value="true"/>
</ui:need-list>
</ui:mask>
</smart:config>
Visibilité des SmartFields pour les cuisiniers
npx @anakeen/anakeen-cli createSetting --type Masks --name Plat_Mask_Cuisinier --associatedSmartStructure PLAT
<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0" xmlns:ui="https://platform.anakeen.com/4/schemas/ui/1.0">
<ui:mask xmlns:ui="https://platform.anakeen.com/4/schemas/ui/1.0" name="PLAT_MASK_CUISINIER" label="Plat_Mask_Cuisinier" structure="PLAT">
<ui:visibility-list>
<ui:visibility field="consommable_title" value="W"/> <!-- SmartField visible en consultation et en modification, et modifiable -->
<ui:visibility field="consommable_description" value="W"/> <!-- SmartField visible en consultation et en modification, et modifiable -->
<ui:visibility field="consommable_price_incl_vat" value="W"/> <!-- SmartField visible en consultation et en modification, et modifiable -->
<ui:visibility field="plat_type" value="W"/> <!-- SmartField visible en consultation et en modification, et modifiable -->
<ui:visibility field="plat_validity_date" value="W"/> <!-- SmartField visible en consultation et en modification, et modifiable -->
</ui:visibility-list>
<!-- Obligations de saisie des champs spécifiés -->
<ui:need-list>
<ui:need field="consommable_title" value="true"/>
<ui:need field="consommable_price_incl_vat" value="true"/>
<ui:need field="plat_type" value="true"/>
<ui:need field="plat_validity_date" value="true"/>
</ui:need-list>
</ui:mask>
</smart:config>
Vous pouvez lancer l'installation du module et constater l'ajout des deux nouveaux masques.
npx @anakeen/anakeen-cli deploy -c http://localhost:8080/control -s . -u admin -p anakeen --reinstall
en vous rendant, aux pages suivantes :
http://localhost:8080/devel/smartElements/PLAT_MASK_CUISINIER/view
http://localhost:8080/devel/smartElements/PLAT_MASK_DIRECTEUR/view
Maintenant que cela est fait, ces masques seront référencés dans des contrôles de vues.
Comment obtenir diverses représentations pour un même SmartElement ?
Recommandations
Les contrôles de vue permettent de spécifier des représentations alternatives pour un Smart Element.
> L'utilisateur peut choisir parmi ces représentations, en fonction de ses droits, ou alors le contrôle de vue peut déterminer dynamiquement la vue en fonction des droits de l'utilisateur.
> [...]
Si vous n'êtes pas familier avec les Contrôle de vue
et leur fonctionnement, il est fortement recommandé de lire la
documentation associée
disponible ici
Le contrôle de vue permet d'indiquer suivant les profils des utilisateurs quelle représentation sera présentée à quel utilisateur.
Créons le contrôle de vue de notre SmartStructure PLAT
avec la commande
createSetting
Informations
Si la SmartStructure renseignée pour --associatedSmartStructure
existe, alors le contrôle de vue est placé
automatiquement dans le dossier <SmartStructureName>Settings
npx @anakeen/anakeen-cli createSetting --type ViewControl --name Plat --associatedSmartStructure PLAT
Voici le fichier que la commande à généré et que l'on a complété 220-ViewControlPlat.xml
<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0" xmlns:ui="https://platform.anakeen.com/4/schemas/ui/1.0">
<!--endregion Cvdoc views : Accesses =======-->
<ui:view-control xmlns:ui="https://platform.anakeen.com/4/schemas/ui/1.0" name="CVDOC_PLAT" label="Plat" structure="PLAT">
<!--region View control configuration ======-->
<ui:view-list>
<ui:view name="EDIT_CUISINIER" label="Modifier" display-mode="edition" order="10" menu-displayed="false">
<ui:mask ref="PLAT_MASK_CUISINIER"/>
</ui:view>
<ui:view name="EDIT_DIRECTEUR" label="Modifier" display-mode="edition" order="20" menu-displayed="false">
<ui:mask ref="PLAT_MASK_DIRECTEUR"/>
</ui:view>
</ui:view-list>
<!--endregion View control configuration ===-->
</ui:view-control>
<!--region Cvdoc views : Accesses ==========-->
<smart:access-configuration name="CVDOC_PLAT" label="Profil CVDOC" profil-type="CVDOC"
access-structure="PLAT" policy="SET">
<smart:element-access access="EDIT_CUISINIER" account="role_cuisinier"/>
<smart:element-access access="EDIT_DIRECTEUR" account="role_direction"/>
</smart:access-configuration>
<!-- endregion Cvdoc views : Accesses ==========-->
</smart:config>
Dans la première partie - view Control -, nous créons deux vues une pour les cuisiniers qui utilise le masque cuisinier et une pour le directeur qui utilise le masque directeur.
Dans la seconde partie - CvDoc views : Accesses -, nous indiquons qu'il faut le profil cuisinier pour voir la première vue et qu'il faut le profil directeur pour voir la seconde.
Comment associer le contrôle de vue à la Smart Structure Plat
Il ne nous reste plus qu'une étape, il faut associer le contrôle de vue à la structure.
Il vous faut ouvrir le fichier src/vendor/Cogip/Restauratec/SmartStructures/Plat/500-PlatSettings.xml
et ajouter en
fin de fichier :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0" xmlns:ui="https://platform.anakeen.com/4/schemas/ui/1.0">
<smart:structure-configuration name="PLAT">
<smart:accesses>
<!-- Référence le profil de structure (type PFAM) -->
<smart:structure-access-configuration ref="STRUCTURE_PLAT_PROFILE" />
<!-- Référence le profil standard (PDOC) -->
<smart:element-access-configuration ref="ELEMENT_PLAT_PROFILE" />
</smart:accesses>
</smart:structure-configuration>
<ui:render ref="PLAT">
<ui:view-control ref="CVDOC_PLAT"/>
</ui:render>
</smart:config>
Vous pouvez maintenant déployer vos modifications :
npx @anakeen/anakeen-cli deploy -c http://localhost:8080/control -s . -u admin -p anakeen --reinstall
et ensuite, vous pouvez dans le development center voir l'association :
http://localhost:8080/devel/ui/PLAT/infos