Dokos v16 introduit un système de navigation modulaire reposant sur deux nouveaux concepts : le Dock et les barres latérales de module (Sidebars). Ces éléments remplacent l'ancien système d'épinglage des espaces de travail et introduisent une architecture en couches permettant aux applications, aux administrateurs et aux utilisateurs de personnaliser la navigation de manière indépendante.
Le Dock et les barres latérales sont organisés selon un modèle en couches superposées. Chaque couche peut enrichir ou remplacer les éléments de la couche inférieure :
| Couche | Rôle | Niveau de configuration |
|---|---|---|
| Couche applicative | L'application fournit son Dock et sa barre latérale par défaut, exportés depuis le code | Développeur d'application |
| Couche de personnalisation | L'administrateur du site ajuste les entrées du Dock et de la barre latérale pour les besoins de l'organisation | Administrateur système |
| Couche personnelle | Chaque utilisateur peut épingler des espaces de travail ou ajouter des raccourcis à son propre Dock | Utilisateur final |
Le Dock est l'unité de navigation racine de chaque application. Il remplace l'ancien système d'épinglage (companion pin) et le hook add_to_dock par une déclaration native et structurée.
Pour les développeurs d'applications — Déclarer un Dock
Une application fournit son Dock sous la forme d'un document exporté. Le Dock est défini dans un fichier JSON placé dans le dossier de l'application et est automatiquement installé lors de l'installation ou de la mise à jour de l'application.
Un Dock Item nomme soit un Sidebar typé, soit un Workspace. La structure minimale d'un Dock exporté est :
{
"doctype": "Dock",
"name": "CRM",
"module": "CRM",
"dock_items": [
{
"doctype": "Dock Item",
"label": "Tableau de bord",
"type": "Sidebar",
"sidebar": "CRM"
}
]
}
Le hook add_to_dock permet également d'injecter des entrées dynamiquement depuis le code Python de l'application.
Le Dock est éditable depuis l'interface via le formulaire Dock. Un administrateur disposant du rôle Gestionnaire d'espace de travail peut :
Exemple — Bureau Moderne L'administrateur de Bureau Moderne souhaite ajouter un accès direct aux « Candidatures reçues » dans le Dock du module RHMS. Il ouvre le Dock RHMS, ajoute un Dock Item de type Page pointant vers la liste des candidatures, puis l'enregistre. L'entrée apparaît immédiatement dans la barre de navigation de tous les utilisateurs ayant accès au module RHMS.
Lorsqu'un utilisateur est supprimé du système, son Dock personnel et ses couches de barre latérale sont automatiquement supprimés avec lui, évitant ainsi toute donnée orpheline.
Chaque module de Dokos possède désormais sa propre barre latérale (Sidebar), contenant les espaces de travail et raccourcis qui lui sont rattachés. Les barres latérales sont nommées par leur titre et sont mappées 1:1 avec les Module Defs.
Un utilisateur disposant du rôle Gestionnaire d'espace de travail peut personnaliser la barre latérale d'un module directement depuis l'interface :
Une barre latérale personnalisée peut être réinitialisée vers sa configuration standard (celle fournie par l'application) à tout moment :
Pour les développeurs — Export et livraison d'une Sidebar
Une application fournit ses barres latérales sous forme de documents exportés, placés dans le dossier de l'application. Lors de l'installation ou de la mise à jour de l'application, les barres latérales standard sont automatiquement créées ou mises à jour.
Les barres latérales sont identifiées par leur titre (champ title), qui doit être unique. Le système gère le cycle de vie complet des barres latérales standard : création, mise à jour et suppression lors de la désinstallation de l'application.
Lorsqu'un utilisateur ouvre un document, Dokos résout la barre latérale à afficher selon une logique déterministe :
La résolution est déterministe : le système utilise un comparateur d'appartenance (membership) pour déterminer l'entité propriétaire du module, puis sélectionne la barre latérale appropriée. Cette logique garantit que la bonne barre latérale est affichée quel que soit le chemin d'accès au document.
Le modèle de permissions a été inversé : au lieu de vérifier si un utilisateur a accès à un module parmi l'ensemble des modules du site, le système vérifie désormais si un utilisateur a accès à un module spécifique. Cela permet une résolution plus rapide et plus précise de la barre latérale et des entrées du Dock.
Le mode Dock-less est une option d'interface qui masque le rail de Dock latéral et le remplace par un sélecteur d'applications intégré à l'en-tête de la fenêtre.
Le mode Dock-less peut être activé au niveau du shell (interface générale) ou au niveau d'une page spécifique. Il est particulièrement adapté aux petits écrans ou aux utilisateurs qui souhaitent maximiser la surface d'affichage des documents et des listes.
Pour les développeurs — Déclarer un shell Dock-less
Un Dock peut nommer un shell, une page, ou les deux. Lorsqu'un Dock déclare un shell Dock-less, le système masque le rail et active le sélecteur d'applications dans l'en-tête. Cette déclaration se fait au niveau de la structure du Dock, pas par un mécanisme de migration.
Deux commandes bench permettent de gérer les barres latérales et les Dock au niveau du serveur :
| Commande | Rôle |
|---|---|
bench rebuild-sidebar | Reconstruit toutes les barres latérales standard depuis le code des applications |
bench rebuild-dock | Reconstruit tous les Docks applicatifs depuis le code des applications |
Ces commandes sont utiles après l'installation d'une nouvelle application ou après une mise à jour pour s'assurer que les configurations standard sont synchronisées avec le code.
Le Dock et les barres latérale bénéficient d'un système de cache spécifique :
clear-cache : la commande bench clear-cache invalide également les caches du Dock et des couches de barre latérale.Les espaces de travail — Vue d'ensemble