Création du système de gestion de contenu chrono-site
L’adresse des sites utilisés et décrits dans ce document se trouve en annexe 5 à la fin
A- Définition du problème :
C'est en enseignant l'option informatique aux lycée que l'idée m'est venue de créer une application permettant de construire en ligne et en quelques clics un site de qualité. Il faut dire que, après avoir simplifié la construction d'un site au maximum j'avais encore (depuis plusieurs années) des réflexions du genre "il y a beaucoup trop d'étapes, on ne sait jamais où on en est rendu !". Et pourtant il suffisait d'enregistrer avec Openoffice ou un autre traitement de texte en opensource (il en existe un certain nombre) ses pages dans son dossier personnel (sur le réseau) puis d'aller chez l'hébergeur pour les aspirer... point d'adresse ftp à utiliser ! Malgré ces simplifications c'était encore trop lourd pour certains ! J'avais depuis longtemps abandonné l'utilisation de Dreamweaver 2.0 sur le réseau.... les élèves n'ayant pas très bien compris l'histoire des comptes écrasaient sans s'en apercevoir le compte de leur prédécesseur réseau !
Dans le même temps les élèves de CM2 de mon épouse lui font part de leur envie de mettre les photos du dernier voyage de classe sur le site de l'école...! C'était alors l'arrivée de SPIP en France. Les premiers essais avec ce système de gestion de contenu ce sont montrés décevants : les profs qui ont participé aux essais avaient plutôt envie d'insérer des photos sur leur site alors que SPIP ayant été créé pour des journalistes ne proposait pas de façon simple et directe l'insertion d'images !
B- Premiers jets
Je me suis alors mis au travail avec les CM2 de mon épouse... Ils ont justement un compte-rendu d'activité à placer sur internet ! Parfait, je vais profiter de cette occasion pour me lancer dans la création d'un système auteur simple permettant de placer des informations (avec images surtout) sur un site avec le moins de manipulations possibles ! Il me faut disposer d'une base de données dans laquelle les informations et textes seront mémorisées et d'un dossier de téléchargement dans lequel les images seront stockées ! Je connais bien le langage php et les requêtes sur les bases de données de type mysql, c'est décidé je pars sur un système en php !
Dans un premier temps je créé simplement une feuille de saisie dans laquelle les élèves peuvent insérer des textes ou des images : les images sont toujours assorties d'une légende (qui peut être vide !) .... Bien entendu un système de liens hypertexte est possible et chaque élément (texte ou image peut être lié soit à une autre feuille su site soit à une adresse http ou bien une boîte aux lettres) .
C'est parti : les élèves de CM2 commencent à placer les images de leur voyage sur le site de la classe (c'était un site sur free.fr qui est donc lié à une base de données)
Très vite des problèmes se posent : les pages sont créées mais il faut structurer l'ensemble de cette activité : menu et sous-menus ! Je rajoute alors deux modules : création de nouveaux thèmes et organisation des thèmes ! La partie organisation permet de déplacer les pages créées ou les thèmes pour structurer le site ! Ca fonctionne déjà beaucoup mieux et nous pouvons terminer ce premier essai d'activité sur le site. En effet un groupe de jeunes a visité le château de la Chabotterie en Vendée, donc de nombreuses photos sont à notre disposition car pour cette sortie pas de nuit à l'hôtel mais dans des grands dortoirs du château qui est un monument du patrimoine historique de la Bretagne. !
D- Dans le même temps au lycée (février 2001)
Depuis plusieurs mois déjà au lycée fonctionne un système d'informations que j'ai développé pour montrer au conseil de direction que le système d’informations (à cette époque en intranet et peu efficace) peut être automatisé et allégé ! L’idée était bonne et ce système a du succès. Il s'agit d'un Feuillet Internet de Liaison (FIL) qui est distribué aux enseignants tous les vendredi soir et qui est écrit directement par les membres du conseil de direction à partir d'un système de back-office sur Internet ! En clair chacun des membres du conseil de direction peut saisir des informations à partir de n'importe quel poste équipé d'internet .
Ce système laisse de suite les enseignants du lycée rêveurs quand à mes possibilités de développement internet et me font part de leur envie d'avoir un site d'établissement permettant à chacun d'eux de fabriquer des pages relatives à leur matière !
Je décide alors de structurer le système créé pour les élèves de CM2, de lui donner un nom et de l'utiliser sur le site du Lycée pour que les enseignants puissent y déposer leurs activités et documents ! Le nom choisi est chrono-site car mon objectif est vraiment de donner aux enseignants (et élèves) la possibilité de créer des pages très rapidement (et de les modifier tout aussi facilement). Il est déjà bien clair pour moi qu'un webmestre d'établissement scolaire n'était pas là pour déposer des informations sur le site mais plutôt pour structurer et fédérer un système de création de site ! En fait, mettre en place une gestion de contenu pour que le maximum d'enseignants puissent alimenter le site !
Il me manque alors un élément très important pour les enseignants : la possibilité d'insérer des documents ! Je décide d’utiliser la même fonction d'upload de fichier que pour les images et ajoute un nouveau module dans la barrette de mise en forme : téléchargement de documents ! Pour permettre aux enseignants de mettre leurs documents sur le site je leur créé un espace particulier avec toutes les disciplines...
Chrono-site est tout proche alors de sa version finale !
F- Mise à disposition de chrono-site
Le site de notre Lycée avec son système de gestion de contenu commence à faire des envieux ! En effet, beaucoup d'établissements scolaires ont commencé un site sous la responsabilité d'un seul et unique webmestre ! Ca fait très lourd ! Si ce dernier quitte l'établissement le site est difficile à reprendre ! Et souvent les mises à jour ne se font que lorsque celui-ci a un peu de temps .. le site périclite et s’éteint !
On me fait comprendre alors de façon assez insistante qu'il serait bien que le système utilisé à NDBN soit à disposition d'autres établissements ! Certains établissements ayant déjà fait des essais avec le CMS SPIP qui les a déçu par la difficulté de prise en main et surtout la difficulté d'insérer des images !
Je me décide donc à structurer l'ensemble de mes travaux pour en faire un module php utilisable sur n'importe quel serveur avec base de données (free par exemple, ou bien serveur académique dédié)
J’en profite pour utiliser chrono-site sur le site des « Ateliers de géométrie » que je viens de mettre en licence GNU/GPL
Cela me prend quelques semaines et j'arrive à la structure suivante :
Système chrono-site développé en php et fonctionnant sur une base de données mysql.
Les unités sont décrites en Annexe 1
Fonctionnement de chrono-site... Il faut d'abord se souvenir que tout a été pensé (et repensé) pour que les pages soient d'une construction totalement évidente pour les non spécialistes en informatique ! Et surtout que l'on puisse y insérer images et documents d'une façon directe et très simple !!
1* Pour construire une page (unité chrono/chrono_saisie_02.php) il suffit de superposer des modules (textes, images, tableaux, documents) qui sont formatés à l'aide de styles pour pouvoir obtenir un formatage visible en direct ! Il suffit donc de cliquer sur un bouton pour changer le style (en direct) du paragraphe ! Par contre pour formater un seul groupe de mot du paragraphe il faut utiliser les classiques balises html ! Cela ne sera fait qu'après une première approche classique ! C'est exactement ce qui se passe au lycée ! Après un premier temps de découverte du fonctionnement du système auteur de chrono-site les auteurs (enseignants et élèves) ont des envies et veulent aller plus loin ! Ils sont alors tout prêts à utiliser les balises html qui leurs sont proposées dans la documentation officielle de chrono-site ! Des sites de démonstrations sont à disposition sur le site officiel de chrono-site pour faire des essais !
2* En cliquant sur enregistrer le module chrono_enr_01.php va enregistrer le titre de la page dans la table de la base nommée chrono_titre (voir annexe 3) ainsi que la date et un numéro d'ordre; Puis il va enregistrer tous les modules un par un dans la table chrono_contenu en mettant pour chacun un ordre (lequel en haut ?) et un parent (le numéro du titre)... Les éléments de tableaux sont enregistrés dans la table chrono_tablo avec comme parent le chrono_contenu auquel ils sont reliés... La structure ainsi créée permet de déplacer, modifier ou détruire n'importe quel élément de page ou n'importe quelle page ! De plus l'index ordre peut d'être modifié pour déplacer les pages dans la structure ! Aussi un système permet de faire passer une page d'un thème dans l'autre ! Ainsi la page qui se trouve tout en haut peut monter dans le thème du dessus ! Chacune des tables de la base a un champ numero qui est en auto-incrément et donne donc la sécurité du champ unique à la table !
3* Les éléments sont enregistrés dans chrono_contenu avec leur styles. Par exemple :
Accéder à la démo 2 chez free&#FFFFFF&# FF0000&normal && center & 216&130&12px
En fait la chaîne est constituée du texte suivi de son format (un peu suivant le principe des codes de contrôle utilisés sur les traitements de textes !) ...Dans l'exemple ci-dessus la chaîne sera éclatée avant d'être affichée (fonction split du php) et découpée suivant les caractères & ...on trouvera donc ceci :
Elément de la chaîne | utilisation |
Accéder à la démo 2 chez free = | Texte à afficher |
#FFFFFF | Fond de couleur blanche |
#FF0000 | Caractères de couleur rouge |
Normal | Ni gras ni italique ni souligné |
(vide) | Sans cadre |
center | Texte centré |
216 | Numéro de la couleur de fond |
130 | Numéro de la couleur de fonte |
12px | Hauteur du texte |
En fait, chaque paragraphe est enregistré dans la table chrono_contenu avec son formatage !
4* Par contre les images et documents ne sont pas stockés dans la base de données ! Dans la table chrono_contenu ne sont enregistrées que les adresses serveur des images, documents etc ! Ces derniers sont enregistrés dans le dossier chrono_upload (leur nom est construit par chrono_site dans chrono_enr_01.php )… Il est calculé de façon à éviter le piège des écrasements (enregistrer une image avec un nom déjà utilisé !) …de la façon suivante :
Le mot chrono suivi du numéro de la fiche dans chrono_titre (unique) suivi du numéro de paragraphe dans chrono_contenu auquel est rajoutée l’extension ! Ce qui peut donner des noms du genre chrono65_5.jpg (image) ou chrono128_1.pdf (document)…
5* Affichage sur le site lui-même : lorsque le visiteur appelle une page c'est toujours la page index.php qui intervient avec en paramètre le numéro de titre qui a été cliqué... Index va donc chercher dans la table chrono_titre (voir annexe 3) le titre appelé puis relève tous les éléments de chrono_contenu dont le champ parent correspond au numéro de titre puis éventuellement les éléments de tableaux associés à chaque élément de contenu...
Si besoin est, documents et images sont chargés du dossier chrono_upload !
Conclusion : aucune page html ! Il suffit de sauvegarder la base et le dossier chrono_upload pour faire un back-up ou une sauvegarde du site !
6* Il me faut maintenant étudier le système des comptes privés et publics et des restrictions d’accès ! J’utilise les variables de session plutôt que les protections de dossier .htaccess car ces derniers sont trop différents d’un serveur à l’autre ! Certains exigent des mots de passe criptés et d’autre non etc. Les variables de sessions sont plus homogènes et gérées de façon identiques sur tous les serveurs ! Elles permettent aussi de sécuriser plus facilement le site ! Un fichier comptes_01.txt contient les identifiants et les mots de passe ainsi que la chaîne des droits (voir annexe 2)
7* Il reste à faire un fichier d’installation qui va créer les tables de la base de données ! Les fichiers php seront archivés (format zip) … pour être téléchargés rapidement et l’installation d’un système chrono-site se passera donc ainsi :
Avant toute installation il faut bien entendu disposer d'un compte d'hébergement avec base de données (une partie du site officiel de chrono-site est consacrée aux différents hébergeurs)
Pour installer un site en chrono-site il suffit de :
1- Télécharger l'archive zip
2- Décompresser ce fichier dans un dossier de votre disque dur.
3- A l'aide de votre éditeur habituel prendre le temps de modifier avec soin le contenu du fichier "variables.php" ! De la précision de ces informations dépend la réussite de l'installation. Cet éditeur peut être un éditeur simple tel le bloc-notes !
4- Expédier alors l'ensemble des fichiers et dossiers décompressés sur votre espace hébergé à l'aide de votre client ftp habituel (Filezilla, dreamweaver ou autre).
5- Dernière étape : exécuter le fichier "installe.php" en tapant dans la ligne d'adresse quelque chose comme ceci "http://jlepine.free.fr/installe.php" (vous remplacerez évidemment jlepine.free.fr par l'adresse de votre site).... Cliquez sur installer la base de données ..... puis sur revenir à la page d'accueil de mon site !
6- Détruisez alors le fichier "installe.php du serveur pour que personne ne puisse vous réinitialiser la base !
Chrono-site est ainsi structuré et prêt à l’emploi il ne reste plus qu’à le mettre à disposition : j’en profite pour le mettre en licence GNU/GPL (comme je l’ai déjà fait pour les « Ateliers de géométrie » licence en annexe 4 ) de façon à pouvoir profiter de la communauté des développeurs (ce qui, au demeurant, fonctionne très bien puisque l’on trouve sur le site des démos qui n’ont pas été faites par moi !) …. Je réserve un espace sur le serveur logiciels de chronosite (comme pour les « ateliers de géométrie ») puis j’y installe les fichiers de chrono-site dans un système chrono-site (récursivité indispensable)
G- Ajout des annuaires
Dans un second temps des annuaires de liens et de courriers sont ajoutés (je les avais développés pour le lycée).
Un système anti-spam est créé pour l’occasion ! Il fonctionne de la façon suivante : lorsqu’une adresse email est piochée dans la base de données le symbole @ est remplacé par un double point d’exclamation ! ce qui peut donner nestor!!free.fr plutôt que nestor@free.fr ! De plus le mot clé mailto est remplacé par l’appel d’une procédure javascript qui activera l’adresse lors du click sur le lien …. L’adresse email tant recherchée par les robots spammeurs n’apparaîtra qu’au moment de l’écriture du message et ça les robots ne peuvent le déclencher !
H- En projet : le calendrier et le FIL
Il s'agira en fait d'un module additionnel calqué sur la salle des profs virtuelle que j’ai développé pour notre établissement :
En préparation pour début juillet deux modules :
a- Un calendrier permettant à la secrétaire de direction de saisir l’information (réunions, sorties, conseils de classe..) Et aux enseignants de consulter le planning a tout moment à partir de leur salle des profs virtuelle (en fait chaque enseignant a accès à sa salle personnelle avec comme identifiant la 1ère lettre de son prénom collée à son nom et comme mot de passe son numéro de photocopieur (6 chiffres). Ce planning est bien sur imprimable !
b- Un module d’informations nommé FIL (Feuillet Internet de Liaison) qui, une fois installé sur chrono-site, permettra à l'établissement de gérer un système d'informations en direct à partir d'administrateurs désignés ...
Ce Feuillet pourra fonctionner sur plusieurs établissements (nous l'utilisons depuis plus d'un an sur quelques établissements de la région)
Ce Feuillet génère automatiquement une (ou plusieurs) page(s) imprimable(s) à n'importe quel moment de la semaine ou de la quinzaine (ou du mois !)....
Les informations saisies par les membres désignés (dans notre établissement : les membres du conseil de direction) sont conservées dans un fichier et donc réutilisables à tout moment ..... Le FIL est consultable (accès restreint ou public) à tout moment sur Internet. Comme toutes les fiches restent dans un fichier il est possible de faire une sélection de l'information : un consultant peut par exemple obtenir (et imprimer) toutes les informations du niveau collège concernant les sorties pédagogiques depuis deux ans ! En annexe 5 l’adresse de la salle des profs virtuelle dans laquelle vous pouvez entrer avec mes codes personnels
K- Dans l’avenir ….
Beaucoup d’établissements utilisent déjà chrono-site (on les a en exemples sur le site officiel) et pour l’instant peu de doléances sont remontées ! Je compte beaucoup plus sur les petites remarques journalières de mes collègues pour améliorer chrono-site ….. On peut voir au niveau du livre d’or et du forum du site officiel que le système chrono-site répond à un véritable besoin.. Il a été prévu pour le monde scolaire et se trouve utilisé également pour les sites personnels et associatifs !
Annexe 1 : liste des unités
Dossier | Unité | Description |
chrono | Chrono_01.php | Fichier principal appelle les deux cadres suivants |
| Chrono_liste_01.php | Dans le cadre de gauche déroule la liste des pages |
| Chrono_saisie_02.php | Système auteur de chrono-site dans le cadre de gauche |
| Chrono_enr_01.php | Enregistre la page dans la base et le dossier chrono_upload |
| Chrono_copy_01.php | Duplique une page en changeant juste son titre (+bis) |
| Chrono_archive.php | Envoie une page vers le dossier archives |
| Chrono_theme_01.php | Permet de choisir le thème ou d’en définir de nouveaux |
| Chrono_organise.php | Pour réorganiser les menus de gauche |
| Nettoie_tempo.php | Nettoie la base ainsi que les pages non validées |
| Index.htm | Pour empêcher le listage du dossier |
| Plantage.htm | Page affichée en cas d’erreur d'identification |
| Class_03.css | Le fichier de styles du système auteur |
| Chrono_help_01.htm | Fichier principal d’aide en ligne |
| Chrono_help_02.htm | Fichier secondaire d’aide en ligne |
| Chrono_help_03.htm | Fichier secondaire d’aide en ligne |
| Images | Dossier contenant les images utilisées pour le système auteur |
|
|
|
Myadmin | -------- | Dossier importé directement du site de gestion de base de données eskuel |
| Plantage.htm | Unité ajoutée dans ce dossier affichée en cas de mauvaise identification |
|
|
|
Lanceur | Interface_01.php | Affiche l’interface du bureau après avoir été validé par lanceur.php |
| Lanceur.php | Utilise le fichier ident_01.php pour vérifier l’identification avant d’afficher interface_01.php ci-dessus |
| Ident_01.php | Utilise la variable $fichier du fichier variables.php pour vérifier l’identité |
| Ident_fiche.php | Pour modifier ou ajouter de nouveaux compte dans le fichier défini par $fichier (/sekret/comptes_01.txt) |
| Plantage.htm | Affiché en cas d’erreur d’identification |
| Index.htm | Pour empêcher le listage du dossier |
| Puces | Dossier contenant les puces (paragraphes) |
|
|
|
Sekret | Comptes_01.txt | Fichier des indentifiants |
| .htaccess | Bloque l’ouverture (« deny from all ») |
annuaires | Liens_01.php | Affiche l’annuaire des liens |
| Courriers_01.php | Affiche l’annuaire des courriels |
| Faq_01.php | Affiche la Foire Aux Questions |
| Admin_faq.php | Pour administrer (ajout modif) la FAQ |
| Liens_admin.php | Pour administrer (ajout modif) les Liens |
| Courriers_admin.php | Pour administrer (ajout modif) les Courriels |
| Niveaux_admin.php | Pour gérer les fichiers de niveaux (par défaut les niveaux scolaires et les disciplines) |
| Index.htm | Pour empêcher le listage du dossier |
|
|
|
stats | ---------- | Dossier importer du système de statistique kietu |
|
|
|
Images |
| Dossier des images utilisées (fonds, boutons etc) |
|
|
|
Chrono_upload |
| Dossier de téléchargement = récupère sur le serveur les images et les documents avec un nom unique |
|
|
|
Style | ----------- | Permet de changer les style de polices |
|
|
|
Sessions |
| Dossier vide utile chez les hébergeurs comme free qui ont besoins de ce dossier à la racine du site pour gérer les variables de sessions |
. |
|
|
| Admin_forum.php | Gérer le forum (=poste modérateur) |
| Admin_livredor.php | Pour détruire les messages du livre d’or non corrects ! |
| Forum.php | Affiche le forum |
| Livredor.php | Affiche le livre d’or |
| Class_01.php | La feuille de styles pour les polices non touchable |
| Class_03.php | Styles modifiables par l’utilisateur |
| Class_back.php | Feuille de style originale (remise en place de class_03.php si l’utilisateur clique sur le bouton « original ») |
| Cherche_01.php | Moteur de recherche sur le site |
| Archives.php | Affiche les fiches qui ont été archivées ! |
| Skins.php | Contient toutes informations d’habillage du site |
| Coder_skins.php | Fiche appelée par le bouton habillage |
| Valide_skins.php | Enregistre les modifications dans la tables skins ! |
| Konnect.php | Contient les variables de connection à la base et inclus le fichier d’habillage (skins.php) |
| Konnect0.php | Variables de connexion sans le fichier skins.php |
| Entete01.php (02, 03, 04, 05) | Un de ces cinq fichiers est inclus dans index.php en fonction du choix de disposition fait dans l’habillage |
| Index.php | Fichier principal qui inclus les fichiers variables.php skins.php et entete0x.php |
| Lecteur_01.php | Fichier appelé pour afficher une fiche sans menu (fiche appelée par un lien) |
| Varaibles.php | Fichier contenant les variables de connexion à la base et les identifiants administrateur ! Contient aussi les titres des différents menus ! |
| Installe.php | A exécuter une seule fois pour installer les tables de la base de données (à détruire du serveur ensuite) |
Annexe 2 : fonctionnement des comptes
Annexe 3 : la table chrono_titre :
Top of Form 1
Nom | Type | Null autorisé | Valeur par défaut | Extra | |
numero | int(11) | Non |
| auto_increment | |
titre | varchar(255) | Non |
|
| |
koul_fond | varchar(100) | Non |
|
| |
lien | varchar(150) | Non |
|
| |
date | datetime | Non | 0000-00-00 00:00:00 |
| |
auteurs | varchar(255) | Non |
|
| |
certifie | smallint(1) | Non | 0 |
| |
theme | smallint(3) | Non | 1 |
| |
ident | varchar(30) | Non |
|
| |
niveau | smallint(3) | Non | 1 |
| |
ordre | int(11) | Non | 0 |
| |
pseudo | varchar(30) | Non |
|
| |
matiere | smallint(2) | Non | 4 |
| |
enregistre | smallint(1) | Non | 1 |
| |
Type : | MyISAM |
| |||
Enregistrements : | 43 | ||||
Taille des données : | 5532 | ||||
Date de création : | 2004-01-28 15:39:04 | ||||
Date de dernière vérification : | 2004-05-13 06:45:06 | ||||
Annexe 4 : la licence GNU/GPL
unité variables.php
Copyright 2003,2010 Lépine JEAN
This file is part of Système Chrono-site.
Le système chrono-site is free software;
you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
Le système chrono-site is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Le système chrono-site ; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Annexe 5 : les adresses internet des sites cités ci-dessus
Site de billard de la compagnie CFBL qui a commencé dans une version chronosite et a utilisé abondamment le générateur de formulaire chronoform | |
| Le site de déstockage de laptopservice qui permet à certaines équipe de chercheurs de s'équiper de pc portables à bas prix. |
| Un site de vacances sur les plages de Noirmoutier |
| Le des logiciels de Antoine Bourbak |
|
Fonctionnement des comptes et des groupes 1* Accès privés = en création modification sans modérateur ! Marie et Jean font partie du groupe maths , ils peuvent donc créer et modifier des pages dans les thèmes géométrie et algèbre (liés au groupe maths) Lucien est administrateur et peut créer des pages dans tous les thèmes ! Par contre il ne créer ou modifier de nouveaux chapitres ! Ceci est réservé à l’administrateur général (celui dont les codes sont définis dans le fichier variables.php) 2* Accès publics = en création modification avec modérateur ! Elea et maeva font partie du groupe europe, elles peuvent donc créer des pages dans les thèmes grèce, musique et angleterre qui sont liés au groupe europe ! Par contre elles sont en mode public et donc devront être modérées par un des admin privés ! Lisiane est administrateur et peut donc créer des pages dans tous les chapitres public ! 3* Restriction de la consultation de certains dossiers Yan peut consulter les pages des thèmes musiques et angleterre. (restreint au groupe 3èmes) Jak pourra consulter les pages du thème algèbre (restreint au groupe lycée) Bernard peut consulter tous les thèmes dont l’accès a été restreint, il peut donc consulter tous les thèmes ! |