Journal de Dev #03 - Contao Portfolio V2

Journal de Dev #03 - Contao Portfolio V2

Il y a environ un an, nous avions posé les bases d'un module Portfolio. Vous pouvez lire l'article à cette adresse. Comme nous l'avions vu, tout développement est en constante évolution. On fait une version, on collecte les retours, on corrige les bugs et on établit des directives pour produire une nouvelle version.

L'avantage de travailler sur quelque chose d'existant est que vous avez déjà une base de travail fonctionnelle ainsi qu'une liste d'améliorations à apporter. C'est bien plus simple que de devoir tout créer. Toutefois, vous devez conserver la cohérence du développement initial (ce qu'on appelle du Legacy code) et tâcher autant que possible de ne pas modifier/supprimer de données.

Comme on l'a vu dans l'article sur la gestion des répertoires Git, il est important de respecter les nomenclatures des versions.

Modifier / Supprimer les données existantes est quelque chose de tolérable quand on change de majeur. En opérant sur la structure même d'un module, il est souvent difficile de conserver les données telles qu'elles étaient. Cela n'empêche toutefois pas de prévoir des scripts de migration. Selon la popularité du module et la quantité de données à modifier, cela sera peut-être même obligatoire.

Changer de mineur ou régler des bugs implique parfois de mettre à jour les données, car on peut avoir un dysfonctionnement dans la structure même du module. Cela ne nécessite toutefois pas de changer de majeur. Le code existant doit alors être rétrocompatible avec les versions mineures précédentes.

Même si ces règles sont générales, elles peuvent être difficiles à respecter. Souvent pour des raisons de temps ou des contraintes techniques.

Quand cela arrive, il est important de transmettre les informations autrement, via le changelog ou le readme du répertoire par exemple. S'il n'est pas possible d'automatiser la migration des données, nous devons au moins faciliter la raison de ces changements ainsi qu'expliquer les opérations à effectuer manuellement.

La gestion des attributs

Le système des attributs est listé comme une des choses à améliorer. Il fonctionne, mais son interface laissait la place aux erreurs, en plus d'être peu pratique.

Plutôt que d'ouvrir une fenêtre et d'ajouter les attributs un par un, ils sont désormais tous listés dans la gestion d'un élément. Leur saisie reste optionnelle comme dans la première version.

De plus, vous pouvez désormais configurer chaque attribut pour être une liste d'options, plutôt qu'une valeur libre. Cela accélère la saisie des attributs tout en évitant les éventuelles erreurs de saisie.

Configuration d'un attribut
Gestion des attributs d'un élément

L'ajout de catégories

La première version utilisait les pages de Contao comme catégories. Cela avait l'avantage de profiter de toutes les fonctionnalités de navigation du CMS. Malheureusement, la logique d'un tel système n'est pas aussi évidente à assimiler que prévu. Si une interface doit être expliquée, c'est qu'elle n'est pas assez bonne, donc on s'y colle !

Désormais, vous pouvez créer autant de catégories que nécessaire. Des champs de base sont à disposition pour définir ce qu'est une catégorie (un intitulé, une image et une description). Un tel système a l'avantage de permettre une configuration spéciale pour chaque catégorie.

Chaque élément peut être associé à plusieurs catégories, pour afficher ce dernier à plusieurs endroits de votre site. Enfin, il est possible d'ordonner ces catégories et ces éléments comme vous le souhaitez, avec une icône de drag & drop.

Liste des catégories
Edition d'une catégorie
Liste des catégories en frontend

Les autres améliorations

En plus des améliorations majeures sur les attributs et les catégories, nous avons ajoutés des fonctionnalités pour améliorer la praticité du module.

  • Les modules de listes peuvent lister des catégories ou des éléments selon la configuration souhaitée (nombre d'éléments par page etc...)
  • Le module de lecture a également été amélioré pour proposer un design lambda, ainsi que les attributs d'un élément
  • Le cadrage des illustrations a été calqué sur celui des actualités de Contao, pour suivre la logique du CMS
Liste des éléments
Affichage d'un élément

Et pour la suite ?

Il y a toujours des choses à améliorer sur un module. Même lorsqu'on créé une nouvelle version, de nouvelles idées viennent, soit pour ajouter des fonctionnalités non-prévues, soit pour ajuster ce qui était prévu.

Amélioration des filtres et recherche libre
Maintenant que la gestion des attributs a été améliorée, il sera plus aisé de gérer les différents filtres de recherche. Cette dernière a déjà été améliorée avec la gestion des options dans un attribut. Il reste toutefois la possibilité de faire une recherche libre qui n'a pas encore été ajoutée car son utilité a été remise en question.

Ajout du multilingue
Des versions alternatives de la première version fonctionnent avec le module multilingue de Contao. Une mise à jour de la logique étant toutefois en cours, l'adaptation du module viendra un peu plus tard.

Ajout de commentaires
Contao dispose déjà d'une gestion de commentaires génériques, que l'on peut greffer à un module. Le besoin ne s'est pas présenté pour l'instant, mais cela reste une évolution intéressante.

Dans la même catégorie