Systèmes de Gestion de Contenu
 
 
 
 
Joomla!
 

Joomla! est un CMS (Content management System) open-source développé par Open Source Matters. Son nom est la transcription phonétique d'un mot Swahili signifiant "tous ensemble". Il traduit la volonté affichée par les développeurs de créer un outil qui réponde aux attentes de chacun, permettant de créer des sites web de façon simple et intuitive pour les non-spécialistes, tout en laissant les développeurs libres de développer des fonctionnalités spécifiques à partir de la structure donnée.

Joomla! est le projet qui donne suite à Mambo, un CMS également développé par Open Source Matters. La version 1.0 de Joomla! était en fait la refonte de la version 4.5.2.3 de Mambo, apportant quelques améliorations de gestion des erreurs et de sécurité. Le développement se poursuit actuellement, une version 2.0 est annoncée, sans date précise. Il est à noter que pour la réalisation de cet exposé, la première version utilisée a été la version 1.0.2, car les fichiers téléchargeables sous le nom de version stable 1.0.3 contenaient de nombreuses erreurs, et qu'il a été impossible de les utiliser. La fin de cette étude est réalisée avec la version 1.0.5, deux nouvelles mises à jour apportant des corrections de bugs et de failles de sécurité ayant été rendues disponibles. Cela montre la vitalité du projet et de sa communauté.

Joomla! est développé en php, couplé à une base données mysql. Une configuration classique qui présente l'avantage de pouvoir être mise en oeuvre aisément chez la plupart des hébergeurs, par un simple dépôt des fichiers sur le serveur. Le package est fourni sous la forme d'une archive zip ou tar, qu'il suffit de décompresser sur le serveur. La première connexion au site après cette étape donne accès à une interface de configuration par formulaires qui recueille les informations nécessaires comme les logins et mots de passe de l'administrateur, et le nom de la base de données à créer. Suite à cette phase d'installation, la base de données est créée automatiquement, ainsi qu'un site par défaut, ayant pour sujet principal le CMS Joomla!. Un lien du menu principal permet de s'identifier comme administrateur, et de commencer le développement de la structure souhaitée. La première prise en main est donc extrêmement rapide et aisée, fournissant en quelques minutes un outil de publication opérationnel.

La structure mise en place par Joomla repose en fait sur deux pages principales, servant à l'affichage public du site (index.php), et à l'interface d'administration (index2.php). La séparation entre backend et frontend, entre le site public et l'administration est ainsi très claire, puisque ce sont deux templates totalement différents qui sont appelés.

Ce sont ces deux scripts qui prennent en charge tout l'affichage, les différentes pages étant conditionnées par le passage de variables par l'url, ou par les formulaires, qui définissent le contenu à afficher. L'affichage et l'apparence des pages est défini par un template, qui peut être différent selon les contenus. Ces templates sont principalement composés d'une structure xhtml généré par un script php, et d'une feuille de style css, alliée à un répertoire d'images. Ils sont facilement éditables dans l'interface d'administration, par le biais d'éditeurs wysiwyg pour le php et le css, mais également par le positionnement des modules dans des zones définies dans le template (top, right, left...).

Le contenu proprement dit du site est réparti en sections, qui peuvent elles-mêmes être subdivisées en catégories. C'est ce principe simple qui permet de définir la structuration des documents. Une finesse supplémentaire de gestion est apportée par la possibilité de définir le type d'utilisateur ayant accès au document :
  1. accès public, visible par tout le monde,
  2. accès aux personnes enregistrées, s'étant identifiée comme membres,
  3. personnes « spéciales », c'est à dire ayant un statut tel qu'auteur, éditeur, ou administrateur.

La définition de ces droits d 'accès peut se définir au niveau d'un document, aussi bien qu'au niveau d'une section ou d'une catégorie.

La base de données de Joomla contient une table nommée « jos_content » dont les champs accueillent toutes les informations relatives à un document. Cette configuration impose que tout contenu soit tapé ou copié-collé directement dans l'interface. Il n'est pas possible (en tout cas sans ajouter de module ou sans développer de fonctionnalité spécifique) d'importer de documents dans un format prédéterminé, comme des feuilles de tableurs, des documents de traitement de texte, ou des documents XML.

Le fait que les contenus soient entièrement stockés dans une seule table contenant 25 champs implique également que l'historique des versions n'est pas conservé. Les changements sont définitifs. On peut savoir quand et par qui un contenu a été modifié pour la dernière fois, mais c'est tout. Aucun retour en arrière n'est possible, et on ne peut pas visionner le cycle de vie du document.

Par défaut, le template ajoute aux contenus des icônes permettant de générer une version pdf, ou d'imprimer.

Les éléments de base d'un contenu sont très simples, rassemblés en tête du formulaire de création : un titre, un titre court pour les menus, une section (liste déroulante), et une catégorie. Viennent ensuite les deux espaces permettant de taper directement le contenu, en mode « wysiwyg ». Le premier correpond au champ « intro_text » de la base de données. Il est destiné à accueillir un texte assez court. Si le deuxième champ texte n'est pas renseigné, il constitue le corps du document. Dans le cas contraire, il sera suivi d'un lien « read_more » qui permettra d'accéder au contenu du champ « full_text ».

Des options supplémentaires sont disponibles par le biais d'onglets. Le nombre de ces options n'est pas le même lorsqu'on crée un contenu en tant qu'administrateur dans le back-office que lorsqu'on le fait par le biais de l'interface publique. Dans tous les cas, il est possible d'associer une image à l'article - et d'en définir les propriétés (position, attribut « alt »...) -, d'agir sur le mode de publication (public destinataire, date de début et de fin de publication...), et de définir des métadonnées, sous la forme de mots-clés saisis dans un champ unique et d'une description de l'article. La création en tant qu'administrateur donne en plus accès aux options liées au contexte d'affichage de l'article, telle que l'icône de génération pdf, l'affichage du titre de section, la présence dun bouton de retour en arrière... Par défaut, ces options sont celles définies pour l'ensemble du site, mais elles peuvent être redéfinies individuellement. L'administrateur a également la possibilité de créer une entrée correspondant à ce document dans un des menus du site.

On peut déduire de cette procédure d'alimentation les trois grandes classes d'information sur les contenus qui sont présents dans la table jos_content : le contenu-même du document, ses métadonnées (auteur, date de modification, mots-clés...), et ses paramètres de publication : icône de pdf, présence du titre de section...

Le contenu textuel des documents est stocké en xhtml directement dans la base. Cela permet une moins grande finesse de gestion et de caractérisation des information que dans un CMS comme Lenya, qui accueille des documents XML permettant un balisage plus sémantique et l'application de traitement xslt des contenus. Néanmoins, le format xhtml a l'avantage d'être très simple à publier et à manipuler.

L'éditeur wysiwyg donne accés à des options de mise en forme classiques , telle que le choix de la graisse, l'italique. Il est également possible de définir l'alignement d'une zone dans la page (centré, justifié, à gauche, à droite). Une liste déroulante permet d'attribuer à une zone sélectionnée un « style » : paragraphe, titres, listes.

Il est possible d'insérer des images distantes en fournisant leur url, et en définissant leur apparence par de options précises de position par rapport au texte, de redimensionnement, ou même de définir une image alternative au passage de la souris.

Il est également possible de définir des ancres nommées, d'insérer des animations flash, de rechercher et de remplacer du texte.

Le contenu entré dans cet éditeur est dynamiquement généré en xhtml. Le code est éditable dans une pop-up, et peut être enrichi directement dans cette fenêtre. Les modifications s'effectuent en temps réel.

Lors de l'enregistrement, c'est ce code xhtml qui est directement enregistré dans les champs « intro_text » et « full_text »de la base de données.

Un document correspond donc à une entrée de la table « jos_content », dont les informations sont traitées par les scripts php, et intégrées au templates.

Cette table comprend 25 champs :

  1. id : la clé primaire de l'article

  2. title : son titre

  3. title_alias : un titre court placé dans les menus

  4. intro_text : le texte principal de l'article. Il est stocké dans un champ de type text, et comprend l'ensemble du code html.

  5. full_text : comme intro_text, ce champ comprend du contenu balisé en html, qui correspond au contenu entré dans le formulaire "main text".

  6. state : définit si le contenu est publié (valeur=1) ou non (0)

  7. section_id : la référence à la clé de la section dont fait partie l'article

  8. mask : définit si le contenu est masqué

  9. catid : la référence à la catégorie dans laquelle est placé l'article

  10. created : un champ de type date, qui contient la date et l'heure de création du contenu

  11. created_by : contient l'id de l'utilisateur qui a créé le contenu

  12. created_by_alias : l'alias de l'utilisateur qui a créé le contenu

  13. modified : la date et l'heure de dernière modification de l'article

  14. modified_by : l'id de l'utilisateur qui a effectué la dernière modification

  15. publish_up : la date de début de publication

  16. publish_down : la date de fin de publication

  17. images : la liste des adresses relatives des images éventuellement associées à l'article

  18. publish_down : la date de fin de publication

  19. urls : ce champ n'est pas utilisé pour l'instant

  20. publish_down : la date de fin de publication

  21. attribs : dans ce champ sont stockées toutes les options de publication, avec des valeurs booléennes représentées par 1 ou 0. Il s'agit de définir si le titre doit être apparent, les images, s'il doit y avoir un bouton de retour en arrière, si on doit indiquer le nom de la section, de la catégorie, si on doit proposer une impression ou une édition pdf...par défaut, ces valeurs correspondent aux choix effectués pour l'ensemble des contenus et intégrés dans les paramètres des templates.

  22. version : contient le numero de version (donc le nombre de fois que le document a été modifié +1)

  23. parent_id: contient éventuellement l'id d'un contenu que le créateur a jugé pertinent de lier.

  24. ordering : le numéro d'ordre du contenu dans sa catégorie

  25. metakey : la liste des mots clés de l'article. Lors de l'affichage, ceux-ci sont intégrés à la balise des métadonnées de l'index, qui ne contiennent par défaut que le terme "joomla".

  26. Metadesc : la description de l'article

  27. access : définit le type d'utilisateur qui a accès au contenu, avec 3 valeurs possibles : 0 pour un accès public, 1 pour un accès réservé aux utilisateurs identifiés, et 2 pour un accès réservé aux utilisateurs "spéciaux".

  28. hits : le nombre de consultations de l'article.

Les utilisateurs de Joomla sont répartis en trois goupes : guest, frontend et backend, selon la partie de l'application à laquelle ils ont accès. Le groupe frontend n'a accès qu'à l'interface publique du site, tandis que le groupe backend a accès au backoffice, avec l'interface d'administration. Plusieurs rôles sont définis au sein de chacun de ces groupes, qui conditionnent les pouvoirs de l'utilisateurs.

Les documents publiés peuvent avoir trois statuts qui définissent le public susceptible de les consulter : public (accessible à tout le monde), registered (réservé aux personnes identifiées), et special (réservé aux personnes ayant un statut supérieur à registered).

  1. Registered : c'est le premier niveau d'utilisateur, qui comporte le moins de droits. Il est possible d'acquérir ce statut en passant par l'interface publique, en fournissant un nom, un pseudo et une adresse mail. L'utilisateur est alors créé dans la base, mais sans être autorisé à faire quoi que ce soit. Un mail est envoyé à l'adresse indiquée, et ce n'est qu'après validation par le lien envoyé que l'utilisateur est réellement actif. Un utilisateur « registered » n'a aucun de droit de publication, il peut juste visionner les contenus qui lui sont autorisés, c'est à dire ceux enregistrés avec le statut public ou registered.

  2. Author : Les auteurs font partie des utilisateurs spéciaux. Ce statut ne peut être attribué à un utilisateur que par l'interface d'administration. Les auteurs peuvent soumettre de nouveaux contenus, par le biais d'un éditeur wysiwyg intégré à l'interface publique. Ces contenus ne seront publiés que lorsqu'un administrateur les aura validés. Un auteur peut à tout moment mettre à jour les contenus dont il est l'auteur, ces modifications sont publiées en direct.

  3. Editor : Les éditeurs font partie des utilisateurs spéciaux. Ce statut ne peut être attribué à un utilisateur que par l'interface d'administration. Les éditeurs ont les mêmes droits que les auteurs, mais ils peuvent en plus modifier les contenus dont ils ne sont pas auteurs. Ils ont accès à tous les contenus, même ceux qui n'ont pas encore été validés.

  4. Publisher : Ils semblent avoir pour l'instant les mêmes droits que les éditeurs.