Home>Programmation>UML>MoreCMS

Projet : CMS

1) Définition et origine du projet

CMS = Content Management System. C'est une méthode de publication d'information orientée contenu.

Contrairement à un programme traditionnel qui sert à gérer des données, les données sont indépendantes de la présentation. Ce qui veut dire entre autres choses qu'avec un contenu donné on peut changer leur représentation, et même le programme qui les utilise (traditionnellement on doit tout changer).

L'autre avantage est que les informations sont enregistrées sous forme de base de données, ce qui permet le tri, la sélection, la recherche, et les références entre deux types de données, par exemple technologie->état de l'art (citations, liens, ouvrages...), logiciels->éditeurs, ...

Mes propres besoins étaient
- pouvoir faire un blog : des réflexions ou des tutoriaux sur des sujets classables (par thématique)
- archiver mes favoris d'adresses internet

en fait un problème qui m'est souvent apparu, est par exemple une astuce de programmation c++ : comme je fais de la programmation principalement, mais que je peux vouloir partager des astuces dans d'autres domaines, dois-je la ranger dans
programmation>C++>astuces
ou
astuces>programmation>c++

Aucun CMS ne me permet cela, le mien doit être orienté autour de ce cas d'utilisation.

2) Support

J'utilise le moteur de templates Smarty. Il permet de séparer le contenu de la présentation, mais n'est pas spécialement conçu pour gérer des projets complexes. C'est une excellente base pour ce type de réalisation. Bien sûr il utilise php alors que J2EE aurait été bienvenu et plus professionnel, mais en attendant un effort de la part des fournisseurs d'hébergement, on peut faire du vrai code objet quand on veut. En tout cas le framework de Smarty encourage très nettement ce mode de conception. La base de données est sur MySql, ce qui lui permet d'être utilisée sur Free par exemple. La modularité code objet permet cependant d'utiliser toute autre source de données.

3) Description UML

Un projet de ce type est assez lourd, UML requiert une élaboration parfois longue, mais si on a de son projet une idée très précise de ce que l'on veut faire tout s'enchaine très vite. Le projet UML est géré sur ArgoUML. Je n'ai représenté ici que le diagramme de Classes :

Schéma :
Diagramme de Classes 

 

Les classes principales sont :

- Rubriques : les thèmes pour les blogs ou les favoris. Une rubrique possède un parent (ex : C++ -> Programmation) ou est "root"). En fait il n'y a qu'une rubrique "root", elle concerne le blog lui même.

- Membres : la liste de utilisateurs enregistrés, et de leurs droits respectifs

- Session : définit l'identité et les droits de l'utilisateur en cours, c'est à dire celui qui s'est loggé

- Entry est l'objet généralisé de tous les types de données pouvant être saisies. Elle est dérivée en Links (favoris) ou News (infos).
L'entrée possède un Créateur, une Rubrique, deux dates (création, modification)

Il doit lui être rajouté une troisième date à dessin de tri, en effet la modification d'un article peut justifier qu'il apparaisse en tête des articles les plus récents (les plus importants) mais pas dans tous les cas. La personne mettant à jour l'article pourra choisir au cas par cas si la date de classement doit être ajustée sur celle de modification.

- DbConnecteur n'est pas visible aux utilisateurs, ne sert à accéder à la base de données

- Smarty_Framework représente l'installation de Smarty et ses classes, Smarty_siteFree l'architecture du ftp pour free. Ne sont là que que pour les besoins de compilation.

4) Mise en œuvre

Le projet est fonctionnel et est en ligne : chdfree.

La souplesse d'utilisation n'étant pas encore parfaite, le site n'est pas encore exploité comme je le voudrais. Les liens sont parsemés d'exemples d'évolutions.

A faire

- rationalisation de la présentation par utilisation de CSS, puis choix de préférences utilisateurs (voir exemples)

- mieux protéger le loggin contre les attaques (temporisation, ...)

- accepter des "invités" pour tester l'interface ou pour écrire des articles temporaires.

- accepter de commentaires sur les rubriques affichées ?

- éditeur de rubriques

- sélection des rubriques pour affichage

- affichage partiel des dernières rubriques sur la page d'accueil (couper l'article, et afficher "lire l'article entier...")

- bouton "archivage" devant supprimer un article de la page d'accueil, et procédé de visualisation des archives

- moteur de recherche

- helpers automatiques sur certains mots clés ? Usage : définitions, liens, publicités...


Valid XHTML 1.0 Transitional