# Masque
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.
Remarques
- Il est important ici de rappeler que la visibilité des SmartFields ne garantit aucunement la confidentialité des informations, puisque les SmartFields Hidden sont quand même présents dans la DOM comme dans le SmartElement, les visibilités des SmartFields structurants impactent celles des SmartFields qu'ils contiennent.
- Ainsi, il est souvent plus efficace de changer la visibilité d'une frame que de l'ensemble de ses SmartFields (voir le calcul de visibilité pour plus de détails).
- Lors de l'import de masques, une contrainte vérifie que l'ensemble des SmartFields référencés dans le masque existent dans la SmartStructure à laquelle est rattaché le masque.
# Configuration d'un masque
La structure suivante sera la même "base" adoptée pour tout nouveau masque :
<?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 name="{NAME}" label="{labelName}" structure="{SMARTSTRUCTURE}">
[...]
</ui:mask>
</smart:config>
Deux balises viennent ensuite se greffer à <ui:mask>
smart:config/ui:mask/ui:visibility-list
contiendra une liste de<ui:visibility>
ayant pour attributs :smart:config/ui:mask/ui:visibility-list/ui:visibility/@field*
: Nom duSmartField
concerné par le masquesmart:config/ui:mask/ui:visibility-list/ui:visibility/@value*
:H
,O
,R
,S
,U
,W
> (Voir la partie visibilité des SmartFields)
<ui:visibility-list>
<ui:visibility field="field_id_1" value="H"/> <!-- SmartField caché : présent dans la DOM mais non affiché -->
<ui:visibility field="field_id_2" value="O"/> <!-- SmartField visible en modification uniquement et modifiable -->
<ui:visibility field="field_id_3" value="R"/> <!-- SmartField visible en consultation uniquement -->
<ui:visibility field="field_id_4" value="S"/> <!-- SmartField visible en consultation & modification mais non modifiable -->
<ui:visibility field="field_id_5" value="U"/> <!-- SmartField(Array) visible en consultation et modification. Nombre de ligne statique. -->
<ui:visibility field="field_id_6" value="W"/> <!-- SmartField visible en consultation & modification et modifiable -->
[...]
</ui:visibility-list>
smart:config/ui:mask/ui:need-list
contiendra une liste de<ui:need>
ayant eux aussi pour attributs :smart:config/ui:mask/ui:ui:need-list/ui:need/@field*
: Nom duSmartField
concerné par le masquesmart:config/ui:mask/ui:ui:need-list/ui:need/@value*
:true
/false
<ui:need-list>
<ui:need field="other_field_id_1" value="true"></ui:need>
<ui:need field="other_field_id_2" value="true"></ui:need>
[...]
</ui:need-list>
Remarque
Si l'une ou l'autre des listes ne vous est pas nécessaire, il faut tout de même renseigner une balise vide
Exemple:
<ui:need-list/>
# Visibilité des SmartFields
La visibilité d'un SmartField est une caractéristique de présentation de sa valeur.
Elle ne contrôle pas l'accès mais seulement la présentation de la valeur.
Les différentes visibilités disponibles sont les suivantes :
H
: SmartField caché : présent dans la dom, il ne sera pas affiché.
O
: SmartField visible en modification uniquement, et modifiable.
R
: SmartField visible uniquement en consultation.
S
: SmartField visible en consultation et en modification, mais non modifiable.
U
(applicable uniquement au type array) : Array affiché en consultation et en modification, mais dont le
nombre de lignes ne peut pas être modifié.
W
: SmartField visible en consultation et en modification, et modifiable
Visibilité | Mode | Visible sur la page | Présent dans la DOM | Modifiable par requête |
---|---|---|---|---|
H | Consultation | Non | Non | |
R | Oui | Oui | ||
W | Oui | Oui | ||
O | Non | Non | ||
S | Oui | Oui | ||
H | Édition | Non | Oui | Oui |
R | Non | Oui | Oui | |
W | Oui | Oui | Oui | |
O | Oui | Oui | Oui | |
S | Oui | Oui | Oui |
Sécurité
Il est important de distinguer la visibilité et les droits : La visibilité n'offre pas de protection contre l'accès à l'information.
# Visibilité des SmartFields structurants
Les visibilités des SmartFields structurants impactent celle des SmartFields qu'ils contiennent. Ainsi, par exemple, un
SmartField W
dans un cadre H
sera en fait en H
. Voici la table qui récapitule ces cas :
SmartField structurant | SmartField | Visibilité résultante |
---|---|---|
H | H | H |
H | O | H |
H | R | H |
H | S | H |
H | U | H |
H | W | H |
O | H | H |
O | O | O |
O | R | R |
O | S | S |
O | U | U |
O | W | O |
R | H | H |
R | O | R |
R | R | R |
R | S | R |
R | U | R |
R | W | R |
S | H | H |
S | O | O |
S | R | R |
S | S | S |
S | U | U |
S | W | S |
W | H | H |
W | O | O |
W | R | R |
W | S | S |
W | U | U |
W | W | W |
Les tableaux en visibilité U
sont transparents lors de cette propagation. Pour les SmartFields contenus dans un
tableau en visibilité U
, il faut donc regarder le SmartField structurant du-dit tableau.