==============
L'aide système
==============
 
:Authors: Benjamin POUSSIN
:Contact: poussin@codelutin.com
:Revision: $Revision$
:Date: $Date$
 
.. sectnum::
 
.. contents:: Sommaire
  
Dans ce document nous tâcherons de recenser les besoins essentiels
pour une fonctionnalité d'aide sytème. Puis nous verrons de quelle
manière il faut envisager son intégration dans Glasnost.
 
La problèmatique
----------------

L'aide système doit servir à intégrer toute l'aide développée pour
Glasnost dans Glasnost. Cela veut dire pouvoir à tout instant, pour un
utilisateur demander de l'aide et la voir apparaître.

Il doit aussi permettre à un utilisateur souhaitant créer un site basé
sur Glasnost, d'ajouter sa propre documentation pour son site. Par
exemple pour indiquer quelle structure doit avoir un article pour une
meilleure intégration dans le site, ou pour documenter une *Fiche*
spécifiquement créée pour le site.

Il y a donc deux types de documentation, la documentation Glasnost de
base, livrée avec Glasnost, et la documentation qu'un administrateur
de site peut vouloir ajouter pour ses utilisateurs.


Les problèmes
*************

Plusieurs hôtes virtuels
~~~~~~~~~~~~~~~~~~~~~~~~

Le premier problème est la possibilité sur un même serveur d'héberger
plusieurs sites. Comment faire en sorte que chaque hôte ait la possibilité
de modifier l'aide pour ses utilisateurs ?

Plusieurs types d'interfaces utilisateurs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Le deuxième problème est l'existence de plusieurs types d'interfaces
utilisateurs pour Glasnost. Interface HTML, interface GTK+, ... Il
faut que l'aide soit intégrée le mieux possible au type du client. Par
exemple en client HTML, nous n'avons pas la possibilité de faire
apparaître des boîtes de dialogue GTK+.

Les contraintes
***************

Il existe aussi quelques contraintes. On peut citer :

- Le support multi-langues pour l'aide
- Pouvoir écrire, modifier et supprimer des parties de l'aide système
  directement dans Glasnost.


Analyse
-------

Au vu des contraintes et des capacités de Glasnost, l'idée la plus
pertinente pour faire le module d'aide système est d'utiliser Glasnost
lui même. Il répond à toutes les demandes: si l'aide est écrite sous
forme d'articles Glasnost ou d'objets Glasnost, ils pourront
complètement s'intégrer au client dans lequel ils devront s'afficher
(HTML, GTK+, ...); le support multi-langue existe dans Glasnost;
enfin un article Glasnost est éditable, modifiable sous Glasnost.

Comment intégrer l'aide dans Glasnost ?
***************************************

Maintenant que l'on sait que Glasnost répond lui même à la demande du
module d'aide système il faut maintenant trouver comment l'intégrer
pour que ces données ne se mélangent pas avec les données de
l'utilisateur. 

Le mieux est de recourir à un site virtuel spécifique pour l'aide
système. Ce site aura quelques particularités, par exemple il pourra ne
pas être éditable.

Le site système
***************

Il existe deux façons de faire les sites systèmes, qui répondent aux
contraintes initiales.

La première est de créer un site **system** immuable et un site **system**
pour chaque **virtual host**.

Avantage:

- Mutualisation d'une partie de l'aide donc moins de place disque et mémoire
  utilisé.


Désavantage:

- On ne peut pas supprimer des parties de l'aide système de base
- On ne peut pas ajouter de l'aide spécifique pour le site
- Faire la distinction entre les deux parties de l'aide système peut-être
  plus difficile à mettre en place.

La seconde solution est de dupliquer le site système de base pour chaque
virtual host créé et de permettre à l'administrateur du site de
modifier l'aide, d'ajouter des article, de supprimer des articles.

Avantage:

- On peut supprimer les documentations que l'on ne souhaite pas
- On peut ajouter de l'aide spécifique
- Sans doute plus simple à mettre en oeuvre

Désavantage:

- Chaque site aura sa propre aide, donc duplication d'information

Pour pallier à la duplication d'information inutile, on peut mettre en
place une option lors de la création d'un site virtuel qui permet
d'indiquer si l'on souhaite une aide système propre à son site ou si
l'aide système de base est suffisante.


Dans les deux cas de figure, l'administrateur du site virtual sera le
seul à pouvoir accèder au site système de son site virtuel.

La deuxième approche semble meilleure car elle permet de prendre en
compte plus de contrainte. Dans cette solution un site virtuel aura
une information supplémentaire qui sera le site virtuel d'aide à
utiliser. Ce sera par défaut le site système de base non
modifiable. On aura par ailleurs la possibilité de cloner ce site 
système de base pour l'hôte virtuel et ainsi de modifier l'aide pour 
un hôte en particulier.

Conclusion
----------

La solution adoptée permet de couvrir toutes les demandes et d'être
très simple à implanter car une très grande partie est déjà couverte
par Glasnost.
