Add complete French (fr) and Chinese (zh) translations for all documentation: - Root files: README, CHANGELOG, SECURITY, BETA-RELEASE - docs/: All 16 core documentation files - DOCS/: All 19 deep-dive documents including embedded/ and archive/ - package/secubox/: All 123+ package READMEs - Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/ Total: 346 translation files created Each file includes language switcher links for easy navigation between English, French, and Chinese versions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
444 lines
14 KiB
Markdown
444 lines
14 KiB
Markdown
# 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
|