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>

Masque directeur

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>

Masque directeur

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.

CVDOC vue

CVDOC vue

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

DEVEL cvdoc

Et ensuite ?

Comment envoyer un mail par la programmation