PARTIE VII — Annexes Annexe D — Crédits et licence Équipe Rôle Auteur Conception et développement InfraS — www.infras.fr Contact contact@infras.fr Technologies utilisées Le module InfraSStudio s'appuie sur les technologies open source suivantes : Technologie Rôle Dolibarr ERP & CRM Plateforme hôte (GPL v3+) Module Website Dolibarr Couche de stockage et de rendu des pages CKEditor Éditeur visuel des slots de texte riche (livré avec Dolibarr) FontAwesome Bibliothèque d'icônes (version Free) Inter et JetBrains Mono Typographies du Studio Licence InfraSStudio est distribué sous licence GNU General Public License v3.0 ou ultérieure (GPL-3.0+). Cette licence implique les libertés et obligations suivantes : Vous pouvez l'utiliser librement, dans un cadre commercial ou non. Vous pouvez le modifier pour répondre à vos besoins. Vous pouvez le redistribuer, à condition de conserver la même licence GPL et de mettre à disposition le code source. Aucune garantie n'est fournie : utilisation à vos risques et périls. Le texte complet de la licence est disponible dans le fichier LICENSE à la racine du module. Contribuer Vous avez identifié un bug, une amélioration possible ou souhaitez proposer une nouvelle fonctionnalité ? Plusieurs canaux existent pour contribuer : Signaler un bug : préparez votre rapport en suivant la procédure du Chapitre 26 (capture du Diagnostic, extrait de dolibarr.log , version), puis transmettez-le à l'éditeur. Suggérer une fonctionnalité : décrivez le cas d'usage concret et l'objectif visé. Les idées accompagnées d'un contexte utilisateur clair sont prioritaires. Soumettre du code : le module suit les conventions de code Dolibarr (PSR-2 modifié, tabulations, getDolGlobalString partout, GETPOST partout). Améliorer la documentation : ce wiki est ouvert aux corrections. Signalez les passages obscurs. Support Canal Usage Cette documentation Première étape avant toute question. La majorité des cas y sont couverts. Page Diagnostic Pour les problèmes techniques. Quatre-vingts pour cent des cas y trouvent leur résolution. Courriel InfraS Pour les questions spécifiques à votre installation : contact@infras.fr Fin de la documentation Vous êtes parvenu au terme de la documentation. Que vous soyez rédacteur, intégrateur ou administrateur, vous disposez désormais de l'ensemble des informations nécessaires à l'utilisation et à l'administration du module InfraSStudio. « Le développeur conserve le contrôle du HTML. L'éditeur conserve le contrôle du contenu. Chacun travaille dans son périmètre, sans empiéter sur celui de l'autre. » Annexe C — Historique des versions Les jalons importants du module. Pour le détail complet, consultez l'onglet Changelog dans l'administration du module. Version 1.9.0 — Mai 2026 (actuelle) Robustesse, portabilité et synchronisation. Nouvelle page Diagnostic dans l'administration pour vérifier l'intégration en un coup d'œil. Refactorisation complète de la gestion d'erreur (helpers centralisés, propagation setEventMessages partout). Synchronisation bidirectionnelle de l'onglet Traductions natif Dolibarr avec l'éditeur du module. Preset preset_default.php avec fichier JSON, pour livrer des champs personnalisés produit sans code. Renommage des gabarits exemples ( example-blog , example-landing ) avec alias rétrocompatibles. Portabilité multi-installations améliorée (constante INFRASSTUDIO_DOCROOT_PATTERN , journalisation de la cascade docroot). Version 1.8.x — Avril 2026 Catalogue produit dynamique et workflow brouillon/publication. Système de catalogue produit dynamique : génération automatique des wrappers solution-*.php. Workflow brouillon/publication des slots avec colonne value_draft . Éditeur de traductions produit dédié (champs natifs et champs personnalisés). Nouveau type de slot color (sélecteur de couleur HTML5). Système de blog natif via les pages Dolibarr Website ( type_container='blogpost' ). Refonte de l'éditeur en interface trois colonnes orientée slots uniquement (suppression du système de blocs). Centralisation CSRF AJAX, rescan en mode --lint . Version 1.7.x — Avril 2026 Éditeur unifié et inspecteur. Phase A : nouvel éditeur trois colonnes (arborescence, aperçu, inspecteur). Phase B : inspecteur unifié pour les slots et les blocs, click-to-edit via postMessage. Version 1.6.0 — Avril 2026 Système de design « Elevated CMS ». Refonte complète de l'apparence inspirée de Sanity, Contentful et Linear. Tokens OKLCH avec accents indigo, ochre, plum et forest. Primitives CSS réutilisables (.is-btn, .is-card, .is-grid-table, etc.). Prise en charge des thèmes clair et sombre. Version 1.5.0 — Avril 2026 Constructeur de pages par blocs (déprécié en 1.8.5). Système de blocs visuels (section, titre, texte, image, bouton, etc.). Inspecteur avec onglets Contenu, Style et Avancé. Note : le système de blocs a été retiré en 1.8.5 au profit du modèle slots uniquement, plus simple et plus stable. Version 1.4.0 — Avril 2026 Référencement et sitemap. Panneau SEO avec aperçu Google en direct. Génération automatique du sitemap.xml. Helper infrasstudio_hreflang_tags() . Version 1.3.x — Avril 2026 Création de pages depuis l'interface. Assistant « + Nouvelle page » avec choix d'un gabarit. Catalogue de gabarits (page-free, blog-standard, landing-basic). Workflow brouillon/publication des pages, duplication, suppression. Slots richtext avec CKEditor natif Dolibarr. Version 1.2.x — Avril 2026 Bibliothèque média. Table llx_infrasstudio_media et interface dédiée. Variantes automatiques (thumb, card, wide). Texte alternatif par langue. Suivi de l'utilisation (nombre de slots et de pages). Importation automatique des fichiers ajoutés hors du Studio. Sélecteur de média réutilisable (fenêtre modale). Version 1.1.x — Avril 2026 Système de slots et de shortcodes. Slots avec types text, textarea, richtext, image, url, number, select, bool. Shortcodes : product, category, dict, mysoc, extrafield. Cascade surcharge → canonique → @lang:. Scanner automatique et outil rescan en ligne de commande. Pipeline de consolidation des pages sœurs. Version 1.0.0 — Avril 2026 Première version. Squelette du module (descripteur, pages d'administration, permissions). Édition orientée slots. Édition des fichiers .lang. Premier système de shortcodes. Pour le changelog complet — Consultez htdocs/custom/infrasstudio/docs/changelog.xml ou l'onglet Changelog dans l'administration du module. Chaque version y est documentée avec ses fix, chg et add détaillés. Annexe B — Foire aux questions (FAQ) Annexe B — Foire aux questions Les questions les plus fréquemment posées. Si la vôtre n'y figure pas, consultez le glossaire ou la page Diagnostic. Installation et démarrage Le module fonctionne-t-il sans le module Website ? Non. Le module Website Dolibarr constitue une dépendance obligatoire. Activez-le en premier, puis InfraSStudio. Puis-je l'installer sur Dolibarr 17 ou 25 ? Le module prend en charge Dolibarr 18.0.0 à 24.x.x. Sur des versions hors fenêtre, l'activation est refusée. Vous pouvez la contourner en définissant la constante INFRASSTUDIO_DISABLE_CHECK_VERSION_MIN=1 , mais sans garantie de bon fonctionnement. Combien de sites puis-je gérer simultanément ? Aucune limite logicielle. Dans la configuration, cochez tous les sites Dolibarr Website que vous souhaitez gérer. Le tableau de bord affichera une carte par site. Édition au quotidien Pourquoi mes modifications ne sont-elles pas visibles publiquement ? L'enregistrement automatique conserve les modifications en brouillon, et non en publication. Cliquez sur le bouton Publier les modifications dans la barre d'outils pour les rendre visibles. Voir le Chapitre 12. Comment annuler complètement mes modifications de la journée ? Utilisez le bouton Annuler les modifications dans la barre d'outils. Une confirmation est demandée. Tous les brouillons de la page sont supprimés et l'aperçu revient à la version publique. Puis-je récupérer une ancienne version d'un slot ? L'historique est consultable dans l'inspecteur du slot (section dépliable « Historique »). La restauration automatique d'une version antérieure n'est pas encore disponible. En cas de besoin, demandez à un administrateur de récupérer la valeur depuis la base de données. Comment travailler à plusieurs sur la même page sans conflit ? L'enregistrement automatique consigne les brouillons toutes les demi-secondes. Si deux personnes éditent le même slot simultanément, c'est la dernière saisie qui est conservée. Pour un circuit de relecture propre, mettez en place une convention organisationnelle (voir Chapitre 24). Multilingue Que voit un visiteur si une langue n'est pas traduite ? Il voit la valeur canonique (généralement le français). Aucune page n'est cassée, aucun texte n'est vide. La résolution suit l'ordre : surcharge de langue, valeur canonique, valeur par défaut du slot. Mes traductions disparaissent quand je modifie le français — pourquoi ? Elles ne disparaissent pas. Les traductions sont stockées séparément (surcharges). Si la valeur d'une surcharge est identique au canonique, le mécanisme intelligent du module supprime la surcharge pour éviter une duplication inutile. Saisissez à nouveau la traduction si elle a réellement changé. Puis-je ajouter une langue qui n'existe pas dans Dolibarr ? Le module accepte n'importe quelle locale au format xx_XX . Vous devez l'activer côté site Dolibarr Website (champ « Autres langues ») et créer les fichiers .lang Dolibarr correspondants si vous souhaitez bénéficier des replis via @lang: . Catalogue produit Pourquoi mon nouveau produit ne s'affiche-t-il pas dans le catalogue web ? Vérifiez deux conditions : le produit est en tosell=1 dans Dolibarr et le champ personnalisé infrasstudio_published est coché. Sans ces deux conditions, le produit reste en brouillon et n'apparaît pas publiquement. Comment ajouter un nouvel univers à mon catalogue ? Définissez la constante INFRASSTUDIO_PRODUCT_UNIVERS_MAP avec un JSON qui associe vos catégories Dolibarr à vos univers personnalisés. Voir le Chapitre 23. Puis-je désactiver complètement le catalogue dynamique ? Oui. Ne définissez ni INFRASSTUDIO_WEBSITE_KEY ni INFRASSTUDIO_PUBLIC_DOCROOT . Le trigger et la tâche planifiée se terminent silencieusement. Aucun wrapper n'est généré. Aspects techniques et développement Puis-je créer mes propres types de slot ? Pas directement : les dix types livrés sont câblés dans le module. En revanche, vous pouvez créer vos propres shortcodes en déposant un fichier dans shortcodes/.shortcode.php . Voir le Chapitre 20. Comment migrer un site WordPress vers le module ? Il ne s'agit pas d'un import direct. Vous devrez : créer le site dans Dolibarr Website, reconstruire le HTML des pages avec votre charte, annoter les zones éditables avec des slots, puis copier le contenu depuis WordPress dans le Studio. Le travail est essentiellement manuel mais l'éditeur du Studio rend la saisie rapide. Le module fonctionne-t-il avec nginx ? Oui, à condition que la configuration nginx serve correctement les fichiers PHP du docroot Dolibarr. La majorité du module est indépendante du serveur web. Vérifiez simplement que le lien symbolique medias est bien servi (mode native), ou basculez en mode module. Puis-je versionner mes slots avec Git ? Indirectement. Les fichiers tpl.php avec leurs tokens {{slot:...}} sont versionnables (ils sont sur le disque). Les valeurs des slots sont en base de données. Pour les versionner, exportez la table llx_infrasstudio_slot avec mysqldump. Sécurité et performance Le module ralentit-il mon site public ? De manière marginale. La résolution des slots ajoute quelques requêtes SQL par page (un SELECT global). Sur une instance correctement dimensionnée, le surcoût est imperceptible. Si vous avez beaucoup de shortcodes {{product:...}} dans une boucle, l'impact peut croître. Voir le Chapitre 20 pour les bonnes pratiques. Comment sécuriser l'accès au Studio ? Utilisez les permissions Dolibarr de manière fine. N'attribuez admin qu'aux développeurs. Pour les rédacteurs, donnez uniquement readContent + editContent . Voir le Chapitre 24. Les médias sont-ils protégés contre l'envoi de fichiers malveillants ? Oui. Le module utilise finfo pour détecter le type MIME réel (et non l'extension), une liste blanche des types autorisés, et passe par dol_move_uploaded_file() qui scanne via l'antivirus configuré dans Dolibarr. Annexe A — Glossaire Liste alphabétique des termes techniques utilisés dans cette documentation et dans le module. Brouillon (draft) Modification d'un slot enregistrée mais non publiée. Visible uniquement dans l'aperçu du Studio. Stockée dans la colonne value_draft de la table llx_infrasstudio_slot . Canonique Valeur de référence d'un slot, partagée entre toutes les langues. Stockée avec lang='' . Utilisée comme valeur de repli lorsqu'une langue ne possède pas de surcharge. CKEditor Éditeur visuel inclus nativement dans Dolibarr, utilisé pour les slots de type richtext . Click-to-edit Fonctionnalité qui permet d'éditer un slot en cliquant directement sur le texte correspondant dans l'aperçu. Mise en œuvre via postMessage entre l'iframe et l'éditeur. Constante (Dolibarr) Configuration stockée dans la table llx_const . Lue via getDolGlobalString() , écrite via dolibarr_set_const() . Toutes les configurations du module commencent par INFRASSTUDIO_ . Cron Tâche planifiée Dolibarr. Le module en déclare deux : régénération horaire des wrappers solution et purge quotidienne des slots orphelins. DOL_DATA_ROOT Constante PHP de Dolibarr qui pointe vers la racine des données utilisateur (généralement /var/www/dolibarr/htdocs/documents/ ). Les médias et les fichiers tpl.php sont stockés sous cette racine. Entity Identifiant d'une entité juridique en mode multicompany Dolibarr. Chaque table contient une colonne entity . Le module respecte strictement ce cloisonnement. Extrafield (champ personnalisé) Champ personnalisé Dolibarr ajouté à un objet (produit, tiers, ticket, etc.). Stocké dans llx__extrafields . Utilisé par le module pour enrichir les données du catalogue produit. Hook Mécanisme Dolibarr permettant à un module externe d'intervenir à des points précis du code natif (rendu d'une page, sécurité, etc.). Le module utilise les hooks main , login , websitepage et websitenav . hreflang Attribut HTML qui indique à Google qu'une page est la traduction d'une autre. Émis automatiquement par le helper infrasstudio_hreflang_tags() . ISO2 et locale ISO2 désigne le code langue à deux lettres ( fr , en ). Locale désigne le code complet pays-langue ( fr_FR , en_US ). Le module utilise les locales en interne et les ISO2 dans les URLs visibles par l'utilisateur. Multicompany Mode Dolibarr permettant à plusieurs entités juridiques de cohabiter sur la même installation, avec des données cloisonnées par entity . Open Graph Protocole de balises qui permet à Facebook, LinkedIn ou WhatsApp d'afficher un aperçu enrichi lors du partage d'une URL. Géré par le panneau SEO du module. Orphelin (slot) Slot dont le token {{slot:...}} a disparu du fichier tpl.php mais dont la valeur est encore présente en base. Statut 0. Conservé pendant trente jours puis purgé par tâche planifiée. Override (surcharge de langue) Valeur d'un slot spécifique à une langue, qui surcharge la valeur canonique pour les visiteurs de cette langue. Pages sœurs (sister pages) Modèle multilingue legacy dans lequel chaque langue dispose de son propre fichier tpl.php ( about.php , about-en.php , etc.). Le module prend en charge ce modèle via le helper sister_stub.tpl.php . Permission Droit d'accès Dolibarr attribuable à un utilisateur ou à un groupe. Le module en définit sept : paramMenu, readContent, editContent, editTranslations, editMedias, publish, admin. Rescan Action de réexaminer tous les fichiers tpl.php d'un site afin de synchroniser la table des slots. Effectué manuellement via l'interface ou en ligne de commande avec rescan_slots.php . Shortcode Token {{namespace:sélecteur.champ}} qui inscrit une donnée Dolibarr en direct dans le HTML. Résolu au moment du rendu par un fournisseur PHP. À distinguer d'un slot. Sitemap Fichier sitemap.xml qui liste toutes les pages publiées d'un site. Lu par Google Search Console. Généré par le module via l'interface ou en ligne de commande. Slot Emplacement éditable nommé dans une page, déclaré par un token {{slot:...|type=...}} dans le HTML. Élément central du module. Studio L'interface principale d'édition du module, accessible via Outils → InfraSStudio. Composée de trois colonnes : arborescence, aperçu et inspecteur. Token Élément textuel délimité par {{ et }} dans le HTML. Les slots et les shortcodes sont des tokens. tpl.php (gabarit) Fichier PHP qui contient le HTML d'une page Dolibarr Website. Stocké dans DOL_DATA_ROOT//website//page.tpl.php . Trigger Événement Dolibarr déclenché lors d'opérations métier (création de produit, modification, etc.). Le module écoute les triggers PRODUCT_* et CATEGORY_*. Univers Concept éditorial du catalogue produit : un univers regroupe plusieurs catégories Dolibarr en une thématique (Supply Chain, Health, Legal, etc.). Cartographiable via constante. Variante (média) Version redimensionnée d'une image générée automatiquement (thumb 200 × 200, card 640 × 480, wide 1600 × 1200) afin d'optimiser le poids selon l'usage. Virtualhost Configuration Apache qui associe un nom de domaine à un docroot. Configuré côté administration système, en dehors du module. Wrapper (Apache) Petit fichier PHP placé dans le docroot d'un site, qui sert de point d'entrée pour une URL et inclut le bon fichier tpl.php . Généré automatiquement par Dolibarr Website. Le catalogue dynamique génère également des wrappers solution-.php . WYSIWYG Acronyme de « What You See Is What You Get ». Désigne un éditeur visuel qui affiche le résultat formaté en direct (gras, italique, listes, etc.) plutôt qu'un code source brut.