# Plan d'intégration des boutons Aide/Info du site SecuBox > **Languages:** [English](../DOCS/HELP_INTEGRATION_PLAN.md) | Francais | [中文](../DOCS-zh/HELP_INTEGRATION_PLAN.md) **Version :** 1.0 **Date :** 2025-12-28 **Statut :** Phase de planification ## Apercu Ce document decrit la strategie d'integration du site marketing/documentation SecuBox avec les modules LuCI OpenWrt, offrant un acces transparent a la documentation d'aide via des boutons aide/info dans chaque module. ## Architecture actuelle ### Emplacement du site web - **URL distante :** `https://secubox.cybermood.eu/` - **Chemin local du routeur :** `/www/luci-static/secubox/` - **URL d'acces :** `http://[adresse-ip-routeur]/luci-static/secubox/` ### Structure des modules Tous les modules SecuBox suivent un modele coherent : ``` luci-app-{nom-module}/ ├── htdocs/luci-static/resources/ │ ├── view/{nom-module}/ │ │ ├── overview.js (tableau de bord principal) │ │ └── *.js (autres vues) │ └── {nom-module}/ │ ├── api.js │ ├── theme.js (optionnel) │ └── *.css ``` ### Modules principaux 1. **luci-app-secubox** - Hub de controle central 2. **luci-app-system-hub** - Surveillance systeme 3. **luci-app-network-modes** - Configuration reseau 4. **luci-app-client-guardian** - Gestion des clients 5. **luci-app-bandwidth-manager** - Mise en forme du trafic 6. **luci-app-cdn-cache** - Mise en cache CDN 7. **luci-app-traffic-shaper** - Gestion QoS 8. **luci-app-wireguard-dashboard** - Gestion VPN 9. **luci-app-crowdsec-dashboard** - Surveillance de securite 10. **luci-app-netdata-dashboard** - Metriques de performance ## Strategie d'integration ### Phase 1 : Utilitaires d'aide partages (RECOMMANDE) Creer une bibliotheque de boutons d'aide centralisee que tous les modules peuvent utiliser. #### Etapes d'implementation 1. **Creer le module d'aide partage** ```javascript // Emplacement : luci-app-secubox/htdocs/luci-static/resources/secubox/help.js 'use strict'; 'require baseclass'; return baseclass.extend({ /** * Creer un element bouton d'aide * @param {string} moduleName - Identifiant du module (ex: 'network-modes') * @param {string} position - Position du bouton : 'header', 'footer', 'floating' * @param {object} options - Options personnalisees */ createHelpButton: function(moduleName, position, options) { var opts = options || {}; var helpUrl = this.getHelpUrl(moduleName); var buttonClass = 'sb-help-btn sb-help-' + position; return E('a', { 'class': buttonClass, 'href': helpUrl, 'target': opts.target || '_blank', 'title': opts.title || _('Voir l\'aide et la documentation') }, [ E('span', { 'class': 'sb-help-icon' }, opts.icon || '❓'), opts.showLabel !== false ? E('span', { 'class': 'sb-help-label' }, opts.label || _('Aide')) : null ]); }, /** * Obtenir l'URL d'aide pour un module * @param {string} moduleName - Identifiant du module */ getHelpUrl: function(moduleName) { var baseUrl = '/luci-static/secubox/'; var moduleMap = { 'secubox': 'index.html#modules', 'system-hub': 'demo-secubox-hub.html', 'network-modes': 'demo-network-modes.html', 'client-guardian': 'demo-client-guardian.html', 'bandwidth-manager': 'demo-bandwidth.html', 'cdn-cache': 'demo-cdn-cache.html', 'traffic-shaper': 'demo-traffic-shaper.html', 'wireguard-dashboard': 'demo-wireguard.html', 'crowdsec-dashboard': 'demo-crowdsec.html', 'netdata-dashboard': 'demo-netdata.html', 'netifyd-dashboard': 'demo-netifyd.html', 'auth-guardian': 'demo-auth.html', 'vhost-manager': 'demo-vhost.html', 'ksm-manager': 'demo-ksm-manager.html', 'media-flow': 'demo-media.html' }; return baseUrl + (moduleMap[moduleName] || 'index.html'); }, /** * Ouvrir l'aide dans une modale (pour aide integree) * @param {string} moduleName - Identifiant du module */ openHelpModal: function(moduleName) { var helpUrl = this.getHelpUrl(moduleName); var iframe = E('iframe', { 'src': helpUrl, 'style': 'width: 100%; height: 70vh; border: none; border-radius: 8px;' }); ui.showModal(_('Aide et documentation'), [ E('div', { 'style': 'min-height: 70vh;' }, [iframe]), E('div', { 'class': 'right', 'style': 'margin-top: 1rem;' }, [ E('button', { 'class': 'btn', 'click': ui.hideModal }, _('Fermer')) ]) ]); } }); ``` 2. **Creer les styles CSS communs** ```css /* Emplacement : luci-app-secubox/htdocs/luci-static/resources/secubox/help.css */ /* Styles de base du bouton d'aide */ .sb-help-btn { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border-radius: 8px; text-decoration: none; font-weight: 500; transition: all 0.3s ease; border: 2px solid transparent; cursor: pointer; } .sb-help-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4); border-color: rgba(255, 255, 255, 0.3); } .sb-help-icon { font-size: 1.2em; } /* Position en-tete */ .sb-help-header { margin-left: auto; padding: 0.4rem 0.8rem; font-size: 0.9em; } /* Position pied de page */ .sb-help-footer { margin-top: 2rem; } /* Bouton flottant (bas-droite) */ .sb-help-floating { position: fixed; bottom: 2rem; right: 2rem; z-index: 1000; border-radius: 50%; width: 60px; height: 60px; padding: 0; justify-content: center; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } .sb-help-floating .sb-help-label { display: none; } .sb-help-floating .sb-help-icon { font-size: 1.8em; } /* Ajustements theme sombre */ [data-theme="dark"] .sb-help-btn { background: linear-gradient(135deg, #4c51bf 0%, #553c9a 100%); } ``` 3. **Mettre a jour chaque module** **Exemple : luci-app-network-modes/htdocs/luci-static/resources/view/network-modes/overview.js** ```javascript 'use strict'; 'require view'; 'require dom'; 'require ui'; 'require network-modes.api as api'; 'require secubox/help as Help'; // AJOUTER CECI return view.extend({ title: _('Modes reseau'), load: function() { return api.getAllData(); }, render: function(data) { var self = this; // ... code existant ... var view = E('div', { 'class': 'network-modes-dashboard' }, [ // Charger le CSS d'aide E('link', { 'rel': 'stylesheet', 'href': L.resource('secubox/help.css') }), // En-tete avec bouton d'aide E('div', { 'class': 'nm-header' }, [ E('div', { 'class': 'nm-logo' }, [ E('div', { 'class': 'nm-logo-icon' }, '🌐'), E('div', { 'class': 'nm-logo-text' }, ['Configuration ', E('span', {}, 'reseau')]) ]), E('div', { 'class': 'nm-mode-badge ' + currentMode }, [ E('span', { 'class': 'nm-mode-dot' }), currentModeInfo ? currentModeInfo.name : currentMode ]), // AJOUTER LE BOUTON D'AIDE Help.createHelpButton('network-modes', 'header', { icon: '📖', label: _('Aide') }) ]), // ... reste de l'interface ... ]); return view; } }); ``` ### Phase 2 : Approches alternatives #### Approche A : Bouton d'aide flottant Ajouter un bouton d'aide flottant global qui apparait sur toutes les pages des modules SecuBox. **Avantages :** - Non intrusif - Experience utilisateur coherente sur tous les modules - Facile a implementer globalement **Inconvenients :** - Peut chevaucher d'autres elements flottants - Moins facilement reperable #### Approche B : Integration dans l'en-tete Ajouter des boutons d'aide dans l'en-tete de chaque tableau de bord de module. **Avantages :** - Tres visible - Placement naturel - Suit les conventions d'interface courantes **Inconvenients :** - Necessite des modifications dans chaque module - Peut encombrer l'en-tete sur petits ecrans #### Approche C : Integration aux actions rapides Ajouter l'aide comme action rapide dans les modules disposant de panneaux d'actions (comme le tableau de bord SecuBox). **Avantages :** - S'integre au modele d'interface existant - Regroupe avec les autres utilitaires - Coherent avec le design actuel **Inconvenients :** - Ne fonctionne que pour les modules avec panneaux d'actions - Moins visible ## Plan d'implementation recommande ### Etape 1 : Creer les fondations (Semaine 1) 1. Creer le module utilitaire `secubox/help.js` 2. Creer la feuille de style `secubox/help.css` 3. Deployer sur le routeur de test 4. Verifier l'accessibilite ### Etape 2 : Integrer les modules principaux (Semaine 2) Mettre a jour ces modules critiques en premier : 1. `luci-app-secubox` (tableau de bord principal) 2. `luci-app-system-hub` 3. `luci-app-network-modes` Tester sur le routeur de production. ### Etape 3 : Deployer sur tous les modules (Semaine 3) Mettre a jour les modules restants : 1. `luci-app-client-guardian` 2. `luci-app-bandwidth-manager` 3. `luci-app-cdn-cache` 4. `luci-app-traffic-shaper` 5. `luci-app-wireguard-dashboard` 6. `luci-app-crowdsec-dashboard` 7. `luci-app-netdata-dashboard` 8. Autres modules ### Etape 4 : Tests utilisateurs et perfectionnement (Semaine 4) 1. Recueillir les retours utilisateurs 2. Ajuster le positionnement/style 3. Ajouter la localisation si necessaire 4. Documenter pour les utilisateurs finaux ## Correspondance module vers page d'aide | Module | Page d'aide | Statut | |--------|-------------|--------| | secubox | index.html#modules | Disponible | | system-hub | demo-secubox-hub.html | Disponible | | network-modes | demo-network-modes.html | Disponible | | client-guardian | demo-client-guardian.html | Disponible | | bandwidth-manager | demo-bandwidth.html | Disponible | | cdn-cache | demo-cdn-cache.html | Disponible | | traffic-shaper | demo-traffic-shaper.html | Disponible | | wireguard-dashboard | demo-wireguard.html | Disponible | | crowdsec-dashboard | demo-crowdsec.html | Disponible | | netdata-dashboard | demo-netdata.html | Disponible | | netifyd-dashboard | demo-netifyd.html | Disponible | | auth-guardian | demo-auth.html | Disponible | | vhost-manager | demo-vhost.html | Disponible | | ksm-manager | demo-ksm-manager.html | Disponible | | media-flow | demo-media.html | Disponible | ## Flux de deploiement ### Mises a jour du site web ```bash # Depuis le repertoire secubox-openwrt ./secubox-tools/deploy-website.sh root@192.168.8.191 ../secubox-website ``` ### Mises a jour des modules avec integration de l'aide ```bash # Construire et deployer un module individuel ./secubox-tools/deploy-network-modes.sh root@192.168.8.191 # Ou construire tous les modules ./secubox-tools/local-build.sh build-all ``` ## Liste de verification des tests - [ ] Le bouton d'aide apparait dans l'en-tete du module - [ ] Le bouton d'aide pointe vers la bonne page de documentation - [ ] La page d'aide s'ouvre dans un nouvel onglet (ou modale si configure) - [ ] Le style est coherent sur tous les modules - [ ] Le bouton est responsive sur appareils mobiles - [ ] Support du theme sombre/clair - [ ] Support de la localisation (si applicable) - [ ] Pas d'erreurs JavaScript dans la console - [ ] Fonctionne sur le routeur local et en deploiement distant ## Ameliorations futures ### Fonctionnalites avancees 1. **Aide contextuelle** - Differentes URL d'aide selon la page/section actuelle - Liens profonds vers des sections specifiques de la documentation 2. **Infobulles d'aide integrees** - Infobulles au survol pour des elements d'interface specifiques - Astuces rapides sans quitter la page 3. **Recherche dans l'aide** - Champ de recherche dans la modale d'aide - Recherche plein texte dans toute la documentation 4. **Tutoriels interactifs** - Guides pas a pas - Visites guidees pour les nouveaux utilisateurs 5. **Integration du journal des modifications** - Afficher "Nouveautes" lors des mises a jour de version - Lien vers les notes de version ## Considerations techniques ### Performance - Les ressources d'aide sont des fichiers statiques (pas d'appels API) - Surcharge JavaScript minimale (~2Ko) - CSS charge uniquement si necessaire - Pas d'impact sur les fonctionnalites principales du module ### Compatibilite - Fonctionne avec LuCI 18.06+ - Compatible avec tous les navigateurs modernes - Degradation elegante pour les anciens navigateurs ### Securite - Tout le contenu d'aide servi depuis la meme origine - Pas de dependances externes - Pas de risques XSS (HTML/CSS/JS statiques) ### Maintenance - Utilitaire d'aide centralise (point de mise a jour unique) - Modifications des modules minimales (1-3 lignes par module) - Mises a jour du site web independantes des mises a jour des modules ## References - **Script de deploiement :** `secubox-tools/deploy-website.sh` - **Modele de module :** `secubox-tools/deploy-module-template.sh` - **Depot du site web :** `/home/reepost/CyberMindStudio/_files/secubox-website/` - **Deploiement actuel :** `http://192.168.8.191/luci-static/secubox/` ## Questions et decisions a prendre 1. **Position du bouton :** En-tete, flottant, ou les deux ? 2. **Modale vs nouvel onglet :** L'aide doit-elle s'ouvrir en modale ou nouvel onglet ? 3. **UX mobile :** Comment le bouton d'aide doit-il se comporter sur petits ecrans ? 4. **Localisation :** Supporter plusieurs langues pour le contenu d'aide ? 5. **Analytique :** Suivre l'utilisation de l'aide (dans le respect de la vie privee) ? ## Statut d'approbation - [ ] Approche technique approuvee - [ ] Design UI/UX approuve - [ ] Calendrier d'implementation approuve - [ ] Plan de test approuve - [ ] Strategie de deploiement approuvee