Définition :
Le générateur de modules, dit « Polymod » (pour Polymorphic module) est un module Automne dont la particularité est d'être hautement configurable et évolutif.
Il a été créé dans le but de répondre aux besoins les plus courants en terme de gestion de données structurées et ce sans avoir à saisir de code PHP spécifique.
Contexte :
Nous avons pu faire les constats suivants :
- Les applications de gestion de données sur le Web répondent à des critères identiques dans une majeure partie des cas. Développer indépendamment chaque application de gestion de contenu dynamique équivaut donc à reprendre une partie des existants et leurs apporter quelques modifications pour satisfaire aux nouvelles exigences.
- Considérant l'évolution d'Automne, développer des modules qui tiennent compte de toutes les fonctionnalités fournies par le noyau est de plus en plus long. De plus, les risques possibles de cas non prévus sont d'autant plus importants.
- Les évolutions des modules spécifiques ne suivent pas obligatoirement les évolutions fonctionnelle du noyau d'Automne.
Solution :
Conscient de ces problèmes inhérents au modèle de développement, et aidé de notre expérience acquise après de nombreuses années de travail, nous avons pu définir un modèle de module configurable dont les capacités de configuration pourraient répondre au plus grand nombre des besoins recensés en terme d'application de gestion de données dynamiques.
Concrètement :
Les applications telles que :
- Gestion d'actualités (ou de billets de type Blog),
- Gestion documentaire,
- Gestion photographique,
- Gestion de liens,
- Annuaire,
- Agenda,
- etc.
ont pour objectif de gérer des données essentiellement textuelles associées à des fichiers ou des images. Ces données sont accompagnées d'un certain nombre d'attributs : langue, catégorie, auteur, etc.
Nous pouvons donc définir un certain nombre d'éléments de base (imaginez des briques de Lego) que nous pourrons assembler les unes aux autres pour constituer un produit répondant à un besoin donné.
Ces briques élémentaires sont les suivantes (liste non exhaustive) :
- Champ de texte court
- Champ de texte long (mis en forme ou non)
- Champ nombre entier
- Champ image
- Champ fichier
- Champ catégorie
- Champ lien
- Champ date
- Champ langue
- Champ utilisateur
Chacun de ces champs pouvant ensuite en fonction de son type avoir plusieurs paramètres associés (par exemple, pour le champ date on peut avoir besoin de stocker une date ainsi qu'une heure, ou bien une date seule peut être suffisante).
De plus, l'association d'un ensemble de ces éléments constituera un élément particulier pouvant lui aussi devenir une partie d'un élément de plus grande envergure.
Exemple :
Pour simplifier la compréhension de ces concepts, prenons un exemple particulier : nous souhaitons modéliser une bibliothèque.
On peut diviser une bibliothèque en un ensemble de rayonnages permettant de classer des livres par thème, auteur, etc.
Un livre est un élément comportant lui aussi un ensemble d'éléments distincts : couverture, chapitres, auteur(s), type d'ouvrage, thème, etc.
On peut encore subdiviser les chapitres en un ensemble d'éléments : titre et pages. Chaque page possédant un ensemble de paragraphes ainsi qu'une numérotation.
Les auteurs eux aussi peuvent être décrit de façon plus détaillée : nom, prénom, nationalité, biographie, date de naissance, coordonnées, etc.
Bref, chaque élément de notre bibliothèque peut-être ainsi subdivisé jusqu'à arriver à un niveau élémentaire d'information, et c'est là que nous retrouvons nos briques élémentaires de contenu. Ces briques sont donc assemblées entre elles pour définir des structures plus importantes, elles mêmes assemblées pour définir des structures encore plus complexes.
Ce qu'il est possible de réaliser :
Comme nous venons de le voir, les possibilités offertes par un tel système sont assez vastes mais pour autant, il n'est pas possible de tout faire. Le générateur de module (Polymod) est capable de réaliser un assemblage de briques élémentaires de contenu pour décrire des contenus ayant une structure complexe mais à l'heure actuelle, il n'est capable « que » de cela.
Il n'est donc pas possible actuellement de réaliser des actions à partir de ces assemblages. Par action, nous pouvons prendre le cas par exemple d'une newsletter. Elle est constituée d'un ensemble de contenu (qui pourraient être gérés par le Polymod) et ce contenu est ensuite envoyé par email à un ensemble de destinataires. Cette action d'envoyer du contenu n'est pas encore à la portée du système.
Pour préciser il est possible :
Coté administration d'Automne :
- Créer, et gérer les structures de contenu de chaque module.
- Insérer du contenu dans ces différentes structures.
- Rechercher ces différents contenus.
- Gérer les droits d'accès en modification de ces différents contenus.
Coté public d'Automne (sur le site web géré par Automne) :
- Créer et gérer un ensemble de rangées permettant la recherche et l'affichage de ces contenus.
- Réaliser des flux RSS de ces différents contenus.
- Gérer les droits d'accès en lecture de ces différents contenus.
- Créer des plug-in pour l'éditeur visuel (Wysiwyg) permettant l'emploi de ces contenus dans les rangées de type texte des différentes pages du site.
Et pour en savoir plus :
- Création / modification / suppression d'un module
- Création / modification / suppression d'un objet
- Création / modification d'un champ
- Création / modification d'un plugin Wysiwyg
- Création / modification d'un flux RSS