DDEHTML

Zones Dynamiques (zones-states 0.1*)

Navigation entre plusieurs documents dans un même contexte basés sur un système de cache "layout / zones states"

zones-states permet la navigations entre plusieurs documents dans un même contexte (généralement connu sous le nom de SPA pour Single Page Application).

zones-states identifie des layouts grace à l'attribut d-layout placé sur le body d'un document (ex : one-column, two-columns...). Des zones sont identifiées par le couple d'attributs id et d-zone.

La valeur de l'attribut "d-zone" est la clef d'état qui sert à identifier l'état de la zone pour le cache. Une même zone a plusieurs états mis en cache au cours de la navigation.

Au cours de la navigation, lorsqu'une réponse fournie un état de zone déjà en cache (c'est à dire un élément HTML avec un couple d'attributs id;d-zone déjà stocké par le client), c'est le dernier état en mémoire qui sera utilisé. La zone de la réponse sera ignorée Un layout déjà chargé (identifié par l'attribut d-layout) sera également réutilisé.

Chaque requête fournira les headers Ignored-Layouts et Ignored-Zones en format JSON qui renseigneront le serveur sur les d-layout et les d-zones déjà chargés par le client.

Exemple :


/* Ignored Layouts */

[
  "one-column", "two-columns" 
]

/* Ignored Zones */

{
"first": [
  "one_context",
  "another_context"
],
"second": [
  "one_context"
]
}

Le serveur reste libre d'alléger ses réponses en fonction de ce qui sera ignoré par le client.

Le header CSRF-Token livré dans chaque requête permet de sécurisé la transaction. Une réponse 401 ou une page complète 200 devra être retournée si le jeton ne correspond pas en cas de requête GET ou HEAD. Dans ce cas le serveur DOIT rejeter les requêtes POST PUT DELETE et PATCH. Le jeton est initialisé dans le head du document :

<meta name="csrf-token" content="123456-security-token-ABC000">

Cette dde-unit est inspiré du Z Framework et de Turbo Frame, mais remplace le pattern "fragments" par celui de "zones states". Elle n'est pas une alternative au pattern "fragments" qui pourra être définit dans une autre dde-unit.