Manuel de référence
    • Introduction
    • Smart Data
    • Sécurité
    • Workflow
    • Les essentiels de l'API PHP
    • Composants graphiques
    • UIs de Smart Element
    • Internationalisation
    • Scripts
    • Module
    • API REST
    • Routes
    • Moteurs de transformation
    • Recherche générale
    • Supervision
    • Techniques avancées
    • Tableaux de bord
    • Workers
    Anakeen Platform 4
    Anakeen
    • Introduction
    • Smart Data
    • Sécurité
    • Workflow
    • Les essentiels de l'API PHP
    • Composants graphiques
    • UIs de Smart Element
    • Internationalisation
    • Scripts
    • Module
    • API REST
    • Routes
    • Moteurs de transformation
    • Recherche générale
    • Supervision
    • Techniques avancées
    • Tableaux de bord
    • Workers
    Anakeen Platform 4
    Anakeen
    • Représentation des Smart Elements

      • Introduction
        • Éléments inclus
        • Illustrations
          • Responsive design
      • Concepts
        • Rendu
        • Vue
      • Masque
        • Configuration d'un masque {#maskxml}
        • Visibilité des SmartFields {#maskvisibility}
          • Visibilité des SmartFields structurants {#maskvisibilitystruc}
      • Contrôle de vue
        • Profilage du contrôle de vue
        • Choix automatique de la vue {#autochoice}
        • Libellé du menu modifier
        • Astuces
        • Configuration d'un contrôle de vue {#viewcontrolxml}
        • Configuration générale
        • Configuration d'une vue
      • Classe de rendu
        • Classes de configuration de rendu par défaut
      • Méthodes de la classe de configuration de rendu

      • Options de rendu
        • Options de représentation type Smart Element {#smartElement-options}
          • setStickyTabs
          • setOpenFirstTab
          • setTabPlacement
        • Options de rendu communes à tout type de Smart Fields {#common-options}
          • showEmptyContent {#common-showemptycontent}
          • setLink
          • setLabelPosition {#common-setlabelposition}
          • setAttributeLabel {#common-setattributelabel}
          • setDescription {#common-setdescription}
          • displayDeleteButton {#common-displaydeletebutton}
          • setInputTooltip {#common-setinputtooltip}
          • setAutoCompleteHtmlLabel {#common-setautocompletehtmllabel}
          • addButton {#common-addbutton}
          • setTemplate {#common-settemplate}
          • addHtmlClass {#common-addhtmlclass}
          • removeHtmlClass {#common-removehtmlclass}
          • setHtmlAttribute {#common-sethtmlattribute}
          • setTranslations {#common-settranslations}
          • setCustomWidgetAttributeFunction {#common-setcustomwidgetattributefunction}
        • Options de représentation type account {#account-options}
        • Options de représentation type array {#array-options}
          • setRowCountThreshold {#array-setrowcountthreshold}
          • disableRowAdd {#array-disablerowadd}
          • disableRowDel {#array-disablerowdel}
          • disableRowMove {#array-disablerowmove}
          • setRowMinLimit {#array-setrowminlimit}
          • setRowMaxLimit {#array-setrowmaxlimit}
          • setRowMinDefault {#array-setrowmindefault}
          • setDescription (colonne de tableau) {#column-setdescription}
          • setDescription (tableau) {#array-setdescription}
          • setTranspositionWidth {#array-settranspositionwidth}
          • setTranslations {#array-settranslations}
        • Options de représentation type color {#color-options}
          • setKendoColorConfiguration {#color-setkendocolorconfiguration}
        • Options de représentation type date {#date-options}
          • setKendoDateConfiguration {#date-setkendodateconfiguration}
          • setFormat {#date-setformat}
          • setPlaceHolder {#date-setplaceholder}
        • Options de représentation type docid {#docid-options}
          • setKendoMultiSelectConfiguration {#docid-setkendomultiselectconfiguration}
          • setPlaceHolder {#docid-setplaceholder}
          • setFormat {#docid-setformat}
          • setDocumentIconSize {#docid-setdocumenticonsize}
          • addCreateDocumentButton {#docid-addcreatedocumentbutton}
        • Options de représentation type double {#double-options}
          • setDecimalPrecision {#double-setdecimalprecision}
        • Options de représentation type enum {#enum-options}
          • setDisplay {#enum-setdisplay}
          • useSourceUri {#enum-usesourceuri}
          • useFirstChoice {#enum-usefirstchoice}
          • useOtherChoice {#enum-useothertchoice}
          • setPlaceHolder {#enum-setplaceholder}
          • setTranslations {#enum-settranslations}
          • setOrderBy {#enum-setorderby}
        • Options de représentation type file {#file-options}
          • setContentDispositionInline {#file-setcontentdispositioninline}
          • setTranslations {#file-settranslations}
          • setPlaceHolder {#file-setplaceholder}
          • setMimeIconSize {#file-setmimeiconsize}
        • Options de représentation type frame {#frame-options}
          • setCollapse {#frame-setcollapse}
          • setDescription (cadre) {#frame-setdescription}
          • setResponsiveColumns {#frame-setresponsivecolumns}
        • Options de représentation type htmltext {#htmltext-options}
          • setHeight {#htmltext-setheight}
          • setToolbar {#htmltext-settoolbar}
          • setKendoEditorConfiguration {#htmltext-setKendoEditorConfiguration}
          • setAnchorsOptions {#htmltext-setanchorsoptions}
        • Options de représentation type image {#image-options}
          • setThumbnailSize {#image-setthumbnailsize}
        • Options de représentation type int {#int-options}
          • setKendoNumericConfiguration {#int-setkendonumericconfiguration}
          • setFormat {#int-setformat}
          • setTranslations {#int-settranslations}
          • setPlaceHolder {#int-setplaceholder}
        • Options de représentation type longtext {#longtext-options}
          • setMaxDisplayedLineNumber {#longtext-setmaxdisplayedlinenumber}
        • Options de représentation type money {#money-options}
          • setCurrency {#money-setcurrency}
        • Options de représentation type password {#password-options}
          • hideValue {#password-hidevalue}
          • setPlaceHolder {#password-setplaceholder}
        • Options de représentation type tab {#tab-options}
          • setTooltipLabel {#tab-settooltiplabel}
          • setDescription (onglet) {#tab-setdescription}
        • Options de représentation type text {#text-options}
          • setMaxLength {#text-setmaxlength}
          • setKendoAutoCompleteConfiguration {#text-setkendoautocompleteconfiguration}
          • setPlaceHolder {#text-setplaceholder}
          • setFormat {#text-setformat}
        • Options de représentation type time {#time-options}
          • setKendoTimeConfiguration {#time-setkendotimeconfiguration}
          • setFormat {#time-setformat}
          • setPlaceHolder {#time-setplaceholder}
        • Options de représentation type timestamp {#timestamp-options}
          • setKendoDateConfiguration {#timestamp-setkendodateconfiguration}
      • Associer une classe de rendu à un Smart Element
        • Fichiers de surcharge des éléments de rendu {#overloadRender}
          • Format
          • Prise en compte des surcharges
          • Définir l'accès à un rendu de Smart Element
          • Désactiver le calcul des etag {#disableetag}
        • Classe d'accès à un rendu de Smart Element
        • Définir les rendus dans un contrôle de vue
        • Définir un rendu par défaut pour une Smart Structure
      • Contrôleurs clients (javascript)
      • Contrôleur global
        • Méthodes du contrôleur global
          • addSmartElement
          • getScopedController
          • getControllers
          • addEventListener
          • registerFunction
          • setVerbose
      • Contrôleur restreint
        • Objets internes du contrôleur
          • Smart Element {#internal-SE}
          • Smart Field {#internal-SF}
          • Types de Smart Field {#smart-field-types}
        • Énuméré
          • Fenêtre de transition {#SE-transition}
          • Menu
        • Carte des événements du contrôleur restreint
          • Ordonnancement des événements
          • Modification
          • Sauvegarde
          • Suppression
          • Restauration
          • Passage de transition
          • Autres
        • Méthodes du contrôleur restreint de Smart Element
          • addEventListener {#addEventListener}
          • addConstraint
          • addCustomClientData
          • appendArrayRow
          • changeStateSmartElement
          • cleanSmartFieldErrorMessage
          • deleteSmartElement
          • drawTab
          • fetchSmartElement
          • getCustomServerData
          • getProperties
          • getProperty
          • getSmartFields
          • getSmartField
          • getValues
          • getValue
          • getMenus
          • getMenu
          • getCustomClientData
          • hasSmartField
          • hideSmartField
          • hasMenu
          • isLoaded
          • isModified
          • injectJS
          • injectCSS
          • insertBeforeArrayRow
          • listConstraints
          • listEventListeners
          • maskSmartElement
          • removeEventListeners
          • removeCustomClientData
          • removeArrayRow
          • restoreSmartElement
          • removeConstraint
          • reinitSmartElement
          • saveSmartElement
          • setValue
          • setSmartFieldErrorMessage
          • selectTab
          • showMessage
          • showSmartField
          • triggerEvent
          • tryToDestroy
          • unmaskSmartElement
        • Liste des événements déclenchés sur le Smart Element Ui
          • actionClick {#actionClick}
          • afterDelete
          • afterSave
          • afterRestore
          • beforeClose
          • beforeDelete
          • beforeRender
          • beforeRestore
          • beforeSave
          • beforeValidate
          • close
          • displayError
          • displayMessage
          • ready
        • Liste des événements déclenchés sur les Smart Fields
          • smartFieldAnchorClick
          • smartFieldArrayChange
          • smartFieldBeforeRender
          • smartFieldDownloadFile
          • smartFieldHelperResponse
          • smartFieldHelperSearch
          • smartFieldHelperSelect
          • smartFieldEnumResponse {#smartfieldenumresponse}
          • smartFieldEnumSearch {#smartfieldenumsearch}
          • smartFieldEnumSelect {#smartfieldenumselect}
          • smartFieldReady
          • smartFieldChange
          • smartFieldUploadFile
          • smartFieldUploadFileDone
          • smartFieldBeforeTabSelect
          • smartFieldAfterTabSelect
          • smartFieldTabChange
          • smartFieldConstraintCheck
          • smartFieldCreateDialogSmartElementReady
          • smartFieldCreateDialogSmartElementBeforeSetFormValues
          • smartFieldCreateDialogSmartElementBeforeSetTargetValue
          • smartFieldCreateDialogSmartElementBeforeClose
          • smartFieldCreateDialogSmartElementBeforeDestroy
          • beforeDisplayTransition
          • afterDisplayTransition
          • beforeTransitionClose
          • beforeTransition
          • failTransition
          • successTransition
      • Rendu de transition
        • Associer une classe de rendu de transition via le cycle de vie
        • Classe de rendu de transition
          • getCssReferences
          • getJsReferences
          • getTemplates
          • getTransitionParameters
          • getRenderOptions
    • Aide à la saisie

    # 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 :

    1. Par les fichiers de surcharge des éléments de rendu
    2. 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
    3. 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) :

    1. Recherche de la vue dans les fichiers de surcharge des éléments de rendu
    2. Recherche de la vue par défaut issue du contrôle de vue
      1. Recherche avec la classe d'accès au rendu si elle est définie
      2. Recherche avec les priorités des vues définies dans le contrôle de vue
    3. Recherche de la vue de la Smart Structure
    4. 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, parmi

      • Anakeen\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;
      }
    }
    

    ← Options de rendu Contrôleurs clients (javascript) →