[Histoire] [Comment ça marche] [A vous!]
"Les Livres d'Or" est l'évolution (logique?) de mon premier programme en perl. Il date de 1996 et permet à des visiteurs de laisser des messages sur une page HTML. Les premières versions ressemblaient à un Livre d'Or classique mais il a rapidement évolué vers quelque chose de plus fun, avec l'envoi de mail, des formulaires avec des humeurs, un envoi de mail automatique au webmaster, etc.
Au début, comme je bossais chez un ISP il n'y a pas de problèmes pour l'hébergement, mais maintenant que j'occupe un poste un peu plus commercial (expert avant-vente), c'est moins évident. Avec d'autres potes qui ne pouvaient plus profiter de l'hébergement fourni par leur école (ben oui, il faut bien en sortir un jour!), nous avons monté une asso : DSPNet (Développement de Sites Personnels sur le Net) qui aide les particuliers et les assos à développer leur site et trouver un hébergeur voire les héberger.
J'ai donc essayé de reprendre le programme pour en faire quelque chose de plus "présentable" mais le code était vraiement infect... Pas moyen de retrouver mes billes et encore moins de le faire évoluer. Alors pour la première fois depuis longtemps je me suis mis à réfléchir avant de coder (c'ést pourquoi je dis "depuis longtemps" ;o) ). J'ai donc commencé à concevoir un modèle où tous les livres seraient génériques et où chaque utilisateur pourrait avoir plusieurs livres (en différentes langues éventuellement). J'ai donc commencé à coder ce programme en repartant de l'ancien, puis une version bricolée, puis avec des morceaux anciens et nouveaux.... Puis j'ai tout éffacé et recommencé de zéro ! :o)
Suite à la naissance de ma fille (septembre 1999), j'ai pris quelques jours de congé et j'ai terminé le programme en une semaine. Je dois dire un grand merci à ma petite famille (elle se reconaitra :o) ) de m'avoir permis de me concentrer là-dessus :o)
(il faut que je retrouve le dessin que j'avais fait...)
En fait la plus grosse partie du programme est "conf.pl", c'est à dire le programme qui sert à configurer les livres. Cette partie n'est accessible qu'aux utilisateurs authentifiés. "lo.pl" est la partie qui est appellée depuis les livres et qui gère les messages et "admin.pl" est la partie qui gère les utilisateurs.
Conf.pl
Ce programme lit :
- les livres d'or génériques
- les livres d'or de l'utilisateur
- le fichier de configuration générique des utilisateurs
- le fichier de configuration de l'utilisateur
Ces données sont envoyées à un formulaire, et lorsque l'utilisateur le valide, tous les fichiers de l'utilisateur sont réécris (y conpris les livres d'Or).
Lo.pl
Ce programme insère les messages dans les livres d'or, il a donc besoin des fichiers de config de l'utilisateur et des livres génériques.
Admin.pl
Ce programme gère la liste d'attente des demandes des livres d'or et permet d'ajouter/modifier/supprimer des utilisateurs.
Les livres génériques
Ce sont des sortes de template, mais en un peu plus fin puisque la gestion des messages intère une sorte de language qui permet d'afficher ou non certains champs.
Exemple : fr1.html (première version française).
Tous les champs à modifier sont placés entre +++! et !+++ . Ces valeurs sont définies dans un fichier qui n'est pas accessible à l'utilisateur mais qui peut évoluer. Tout est suffisament générique pour ne pas avoir à le modifier.
Les "prototypes" (enfin moi j'appelle ça les prototypes parceque je n'avais pas d'autre idée sur le moment :o) ) :
Chaque champ est séparé par une tabulation. Dans l'odre : nom, type, valeur par défaut, description. Exemple :
BIENVENUE SCALAR Bienvenue... Message de bienvenueAutre exemple plus complexe (un champ par ligne) :
(nom) NEWMSGINTRO (type) SCALAR (valeur par défaut) +++!nickname$MANDATORY$TEXT!+++ (+++!email$OPTIONAL$EMAIL$email!+++ +++!url$OPTIONAL$URL$Page!+++) (description) Ligne de présentaion de chaque nouveau message.Comme on le voit dans cet exemple, de nouveaux champs apparaissent à l'intérieur des prototypes. En fait ce sont eux qui prendront les valeurs saisies par le visiteur.
Les champs séparés par des "$" sont :
- le nom du champ, c'est à dire le nom du bouton (par exemple le nickname)
- (optionnel) la condition du champ : "OPTIONAL" par défaut. Dans ce cas le champ apparait quelque soit la valeur saisie. L'autre valeur possible est "MANDATORY", dans ce cas, si aucune valeur n'est saisie le visiteur se fait jeter (dans l'exemple si dessus, si l'utilisateur ne rentre pas le nickname, le message ne sera pas pris en compte).
- (optionnel) le type : TEXT ou EMAIL ou URL permettent de définir si un champ est valide ou non. Si le champ n'est pas valide et que la condition est "MANDATORY" alors le message ne sera pas pris en compte.
- (optionnel) la valeur : c'est une chaine de caractère où les "%s" seront remplacés par la valeur associée au nom du champ (exemple : si le champ est "nickname", la valeur sera cette saisie dans la champ nickname, c'est à dire "Mizou-mizou" par exemple :o) ). La valeur par défaut est "%s".
Hep! Vous là! Oui, vous qui lisez ces lignes! J'ai besoin de vous ! :o)
Il est possible de créer à l'aide du principe décrit (ou presque) ci-dessus de nouveaux livres en d'autres langues, avec des présentations complètement différentes! Si vous avez l'habitude de concevoir des sites, votre aide pourrait m'être très utile ! Kirin (membre de DSPNet ;o) ) a fait une version anglaise (kr2.html) mais vous pouvez faire la vôtre vous aussi. N'hésitez pas à me demander !
Ecrivez à lo@dspnet.fr.eu.org
Merci d'avance !
Livres d'Or Nouvelle Génération © Bépé 1996-1999