Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Personnalisation

Le Dock et la barre latérale de module

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 la barre latérale de module

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.

Architecture en couches

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 :

CoucheRôleNiveau de configuration
Couche applicativeL'application fournit son Dock et sa barre latérale par défaut, exportés depuis le codeDéveloppeur d'application
Couche de personnalisationL'administrateur du site ajuste les entrées du Dock et de la barre latérale pour les besoins de l'organisationAdministrateur système
Couche personnelleChaque utilisateur peut épingler des espaces de travail ou ajouter des raccourcis à son propre DockUtilisateur final

Le Dock

Principe

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.

  • Un Dock par application : chaque application Dokos déclare son propre Dock contenant les entrées vers ses espaces de travail et pages principales.
  • Un Dock par couche : pour chaque application, il existe un Dock applicatif, un Dock de personnalisation et un Dock personnel — le système fusionne ces couches lors de l'affichage.
  • Types d'entrées : chaque élément du Dock (Dock Item) peut pointer vers un espace de travail (Sidebar) typé, ou vers une page spécifique.

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.

Gestion du Dock

Édition via formulaire

Le Dock est éditable depuis l'interface via le formulaire Dock. Un administrateur disposant du rôle Gestionnaire d'espace de travail peut :

  • Ajouter, réorganiser ou supprimer des Dock Items.
  • Spécifier le type de chaque entrée (Sidebar ou Page).
  • Définir le module de rattachement de chaque entrée.

Ajouter un élément au Dock

  1. Ouvrez le formulaire Dock correspondant à l'application concernée.
  2. Dans la table enfant Dock Items, cliquez sur Ajouter une ligne.
  3. Saisissez le libellé de l'entrée.
  4. Sélectionnez le type (Sidebar pour un espace de travail, ou Page pour une page spécifique).
  5. Selon le type, renseignez le Sidebar ou la Page cible.
  6. Enregistrez le formulaire.

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.

Suppression d'un utilisateur

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.

Validation et contrôles

  • Module obligatoire : chaque Dock Item doit nommer un module qui existe. Le système valide cette contrainte à l'enregistrement.
  • Couche unique par doctype : le type de couche (applicative, de personnalisation, personnelle) est déclaré par le doctype Dock lui-même, et non par un mécanisme de migration.
  • Mode développeur : en mode développeur, le Dock applicatif est rechargeable à partir du code source, ce qui permet de réinitialiser les modifications locales sans perte de la configuration standard.

Les barres latérales de module (Sidebars)

Principe

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.

Édition d'une barre latérale

Un utilisateur disposant du rôle Gestionnaire d'espace de travail peut personnaliser la barre latérale d'un module directement depuis l'interface :

  1. Ouvrez le menu de la barre latérale du module concerné (icône ⋮ dans l'en-tête).
  2. Cliquez sur Modifier la barre latérale : l'éditeur d'arrangement s'ouvre.
  3. Ajouter un élément : cliquez sur le bouton d'ajout pour insérer un nouveau raccourci.
  4. Réorganiser : faites glisser les éléments pour modifier leur ordre.
  5. Cliquez sur Enregistrer pour valider.

Réinitialisation d'une barre latérale

Une barre latérale personnalisée peut être réinitialisée vers sa configuration standard (celle fournie par l'application) à tout moment :

  1. Ouvrez l'éditeur de barre latérale.
  2. Cliquez sur Réinitialiser la barre latérale.
  3. Confirmez : les personnalisations sont annulées et les éléments standard sont restaurés.

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.

Résolution de la barre latérale à l'ouverture d'un document

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.

Permissions filtrées par module

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.

Mode Dock-less (sans rail)

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.

Activation

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.

Comportement

  • Le rail de Dock disparaît.
  • Un sélecteur d'applications apparaît dans l'en-tête.
  • Les espaces de travail restent accessibles via ce sélecteur.
  • La barre latérale de module reste fonctionnelle une fois une application sélectionnée.

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.

Commandes de maintenance

Deux commandes bench permettent de gérer les barres latérales et les Dock au niveau du serveur :

CommandeRôle
bench rebuild-sidebarReconstruit toutes les barres latérales standard depuis le code des applications
bench rebuild-dockReconstruit 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.

Cache et performances

Le Dock et les barres latérale bénéficient d'un système de cache spécifique :

  • Cache par identité de shell : les données de démarrage (boot payload) sont indexées sur l'identité du shell, ce qui évite les lectures redondantes.
  • Invalidation par clear-cache : la commande bench clear-cache invalide également les caches du Dock et des couches de barre latérale.
  • Construction par lot : les bases calculées manquantes (sidebars, docks) sont construites en un seul passage lors du démarrage, plutôt qu'individuellement.
  • Lecture unique par module : lors de la résolution de la barre latérale, le système demande une seule fois quelles couches s'appliquent, plutôt que de scanner chaque module individuellement.

Pour aller plus loin

Les espaces de travail — Vue d'ensemble