4.4 Fichiers de surcharge des éléments de rendu

Il est possible de paramétrer le rendu sans modifier le code existant.

4.4.1 Format

Les fichiers de configurationau sont au format format JSON, et doivent être placés dans le répertoire DOCUMENT/customRender.d du serveur.

Seuls les fichiers dont l'extension est .json sont pris en compte.

Chaque surcharge s'applique explicitement à une famille désignée, et n'est pas propagée à ses sous-familles.

le fichiers est la représentation json d'un tableau à 3 dimensions :

  1. la première dimension est obligatoirement "families"
  2. la deuxième dimension référence une famille par son nom logique
  3. la troisième dimensionindique le nom d'un paramètre.

Exemple :

{
  "families": {
    "MY_FAMILY": {
        "renderAccessClass": "My\\MyRenderAccess",
        "disableTag" : true
        },
    "MY_WORKFLOWFAMILY": {
        "renderAccessTransition": "My\\MyTransitionAccess"
    }
  }
}

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

./wsh.php --app=DOCUMENT --action=LOAD_RENDERPARAMETERS

Cette commande peut aussi être lancée depuis le navigateur en tant qu'administrateur.

http://<yourDomain>/?app=DOCUMENT&action=LOAD_RENDERPARAMETERS

Cette commande applique les différents fichiers de configuration. Les paramètres sont fusionnés dans l'ordre croissant des noms de fichiers. Il est d'usage de préfixer le nom du fichier par 2 chiffres afin de rendre l'ordre plus explicite.

Pour une même famille, les différents paramètres sont cumulés.

Exemple :

DOCUMENT/customRender.d/10_myRender.json
{
  "families": {
    "YOUR_FIRSTFAMILY": {
        "renderAccessClass": "My\\MySecondRenderAccess",
        "disableTag" : true
        },
    "MY_FIRSTFAMILY": {
        "renderAccessClass": "My\\MyFirstRenderAccess"
    }
  }
}
DOCUMENT/customRender.d/20_myRender.json
{
  "families": {
    "YOUR_FIRSTFAMILY": {
        "renderAccessClass": "My\\MyOtherRenderAccess",
            "applyRefresh" : true
        },
    "MY_SECONDFAMILY": {
        "renderAccessClass": "My\\MySecondRenderAccess"
    }
  }
}

Les fichiers sont pris dans l'ordre alphabétique, soit :

  1. 10_myRender.json
  2. 20_myRender.json

Le paramétrage résultant est le suivant :

{
    "families": {
        "YOUR_FIRSTFAMILY": {
            "renderAccessClass": "My\\MyOtherRenderAccess",
            "disableTag": true,
            "applyRefresh": true
        },
        "MY_FIRSTFAMILY": {
            "renderAccessClass": "My\\MyFirstRenderAccess"
        },
        "MY_SECONDFAMILY": {
            "renderAccessClass": "My\\MySecondRenderAccess"
        }
    }
}

4.4.3 Réactiver la méthode Doc::refresh()

Par défaut l'appel à la méthode Doc::refresh() n'est pas effectué lors de la récupération d'un rendu. cela est nécessaire pour s'assurer que 2 Get successifs au même doucment retournet la même réponse (aspect REST de l'API).

Par contre, elle est effectuée lors de l'enregistrement (POST, PUT) via la méthode Doc::store().

Si l'option applyRefresh vaut true, alors la méthode Doc::refresh() est appelée à chaque récupération (GET) de rendu.

Dans ce cas, l'etag est calculé après l'appel à la méthode Doc::refresh(). Si le document n'a pas été modifié et si cette méthode ne modifie pas non plus le document, l'etag n'est pas modifié.

Exemple :

{
    "families": {
        "MY_FAMILY": {
            "applyRefresh": true
        }
    }
}

4.4.4 Désactiver le calcul des etag

Par défaut, l'api HTTP calcule des etag.

Lorsque ce n'est pas nécessaire, ou que ce calcul ets trop couteux, il est posible 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 :

{
  "families": {
    "MY_FAMILY": {
        "disableEtag": true
    }
  }
}

4.4.5 Définir l'accès à un rendu de document

Le paramètre renderAccessClass indique la classe d'accès à un rendu de document.

Exemple :

{
  "families": {
    "MY_FAMILY": {
        "renderAccessClass": "My\\MyRenderAccess"
    }
  }
}

4.4.6 Définir l'accès à un rendu de transition

Le paramètre renderTransitionClass indique la classe d'accès à un rendu de transition.

Exemple :

{
  "families": {
    "MY_WORKFLOWFAMILY": {
        "renderTransitionClass": "My\\MyTransitionAccess"
    }
  }
}
×