# Associer une classe de rendu à un Smart Element
La configuration de rendu de Smart Element peut être associée à un Smart Element de trois façons différentes :
- Par les fichiers de surcharge des éléments de rendu
- Dans le contrôle de vue associé
- par une classe d'accès à un rendu
- par une classe de configuration de rendu de Smart Element associée à une vue
- Dans la définition de la classe de la Smart Structure
L'interface de rendu recherche la configuration dans l'ordre suivant (la première vue trouvée est applicable) :
- Recherche de la vue dans les fichiers de surcharge des éléments de rendu
- Recherche de la vue par défaut issue du contrôle de vue
- Recherche avec la classe d'accès au rendu si elle est définie
- Recherche avec les priorités des vues définies dans le contrôle de vue
- Recherche de la vue de la Smart Structure
- Utilisation de la vue système
# Fichiers de surcharge des éléments de rendu
Il est possible de paramétrer le rendu sans modifier le code existant.
# Format
Les fichiers de configuration sont au format XML.
WARNING
Seuls les fichiers dont l'extension est .xml
sont pris en compte.
WARNING
Chaque surcharge s'applique explicitement à une Smart Structure désignée, et n'est pas propagée à ses sous-structures.
le fichier indique :
- La classe d'accès au rendu
- le contrôle de vue associé
Exemple :
<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:render ref="MY_STRUCTURE">
<ui:render-access class="MyRenderClass"/>
<ui:view-control ref="MY_VIEW_CONTROL"/>
</ui:render>
</smart:config>
# Prise en compte des surcharges
Pour que les fichiers soient pris en compte, il est nécessaire de lancer la commande suivante après leur déploiement :
./ank.php --script=importConfiguration --file=myStructureConfig.xml
Cette commande applique le fichier de configuration.
# Définir l'accès à un rendu de Smart Element
L'attribut class
de la balise ui:render-access
indique le chemin vers
classe d'accès à un rendu de Smart Element.
Exemple :
<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:render ref="MY_STRUCTURE">
<ui:render-access class="PATH/TO/RENDER/CLASS"/>
<ui:view-control ref="MY_VIEW_CONTROL"/>
</ui:render>
</smart:config>
# Désactiver le calcul des etag
Par défaut, la requête qui délivre les données de rendu des Smart Element calculent des
etag
.
Lorsque ce n'est pas nécessaire, ou que ce calcul est trop coûteux, il est possible de désactiver ce calcul au moyen du
paramètre disableETag
.
Lorsque disableETag
vaut true
, l'etag n'est ni calculé, ni transmis ni vérifié.
Exemple :
<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:render ref="MY_STRUCTURE">
<ui:render-access class="" disable-etag="true"/>
<ui:view-control ref="MY_VIEW_CONTROL"/>
</ui:render>
</smart:config>
# Classe d'accès à un rendu de Smart Element
L'interface PHP Anakeen\Ui\IRenderConfigAccess
permet de choisir un rendu en fonction du Smart Element et du mode.
La seule méthode à implémenter est la méthode getRenderConfig
Anakeen\Ui\IRenderConfig getRenderConfig(string $mode, \Anakeen\Core\Internal\SmartElement $document)
Les paramètres sont :
mode
: Le mode de rendu, parmiAnakeen\Ui\RenderConfigManager::EditMode
(édition)Anakeen\Ui\RenderConfigManager::CreateMode
(création)Anakeen\Ui\RenderConfigManager::ViewMode
(consultation)
document
: L'objet\Anakeen\Core\Internal\SmartElement
en cours.
Cette méthode doit retourner une instance d'une classe implémentant l'interface
Anakeen\Ui\IRenderConfig
compatible avec le mode
demandé.
L'objet de configuration retourné peut être fonction des données du Smart Element ou en fonction de l'utilisateur. Cela donne toute liberté quant-au choix de la configuration.
Si la méthode retourne null
, c'est le rendu par défaut qui sera appliqué.
Exemple :
namespace My;
class MyAccess implements \Anakeen\Ui\IRenderConfigAccess
{
/**
* @param string $mode
* @return \Anakeen\Ui\IRenderConfig
*/
public function getRenderConfig($mode, \Anakeen\Core\Internal\SmartElement $document)
{
switch ($mode) {
case \Anakeen\Ui\RenderConfigManager::CreateMode:
case \Anakeen\Ui\RenderConfigManager::EditMode:
return new MyRenderConfigEdit($this);
case \Anakeen\Ui\RenderConfigManager::ViewMode:
return new MyRenderConfigView($this);
}
return null;
}
}
# Définir les rendus dans un contrôle de vue
L'installation du module User Interfaces, a pour effet de surcharger le contrôle de vue d'origine.
Deux Smart Fields pour la configuration du contrôle de vue sont ajoutés :
cv_renderclass
: classe de configuration de rendu de Smart Element. Multiple, défini pour chaque vue.cv_renderaccessclass
: classe d'accès à un rendu.
Le Smart Field cv_renderclass
indique la classe de rendu à utiliser pour la vue donnée.
S'il est indiqué, le masque est appliqué. Le Smart Element fourni en argument aux différentes méthodes de la configuration de rendu, et en particulier lors de l'attribution des visibilités a déjà le masque du contrôle de vue appliqué.
Si une vue indique une classe de rendu non standard (différent de Anakeen\Ui\DefaultView
et Anakeen\Ui\DefaultEdit
)
et n'indique pas de zone, alors cette vue sera ignorée par les interfaces traditionnelles fournies par le module Smart
Data Engine.
Le contrôle de vue peut aussi indiquer une classe d'accès à un rendu dans le
Smart Field Classe d'accès au rendu (cv_renderaccessclass
). Cette classe est utilisée lorsqu'aucune vue spécifique
n'est demandée explicitement. Elle permet de choisir un rendu en fonction du mode et du Smart Element.
Si la méthode ::getRenderConfig()
de cette classe retourne null
, alors le choix du rendu est celui désigné par le
contrôle de vue en fonction du mode, des droits et des priorités de chacune des vues.
# Définir un rendu par défaut pour une Smart Structure
La définition du rendu par défaut se fait en implémentant l'interface
Anakeen\Ui\IRenderConfigAccess
sur la classe de la Smart
Structure. Cette interface demande une seule méthode :
\Anakeen\Ui\IRenderConfig getRenderConfig(string $mode, \Anakeen\Core\Internal\SmartElement $document)
Voir la définition de la classe d'accès à un rendu de Smart Element.
WARNING
Dans ce cas, l'objet $document
reçu par la méthode est l'objet lui-même (this
).
Exemple :
namespace My;
class MyStructure extends \Anakeen\Core\Internal\SmartStructure implements \Anakeen\Ui\IRenderConfigAccess
{
/**
* @param string $mode
* @return \Anakeen\Ui\IRenderConfig
*/
public function getRenderConfig($mode, \Anakeen\Core\Internal\SmartElement $document)
{
switch ($mode) {
case \Anakeen\Ui\RenderConfigManager::CreateMode:
case \Anakeen\Ui\RenderConfigManager::EditMode:
return new MyRenderConfigEdit($this);
case \Anakeen\Ui\RenderConfigManager::ViewMode:
return new MyRenderConfigView($this);
}
return null;
}
}