intro.md 4.6 KB

Introduction

Objectifs

Les objectifs principaux de cette usine à site sont les suivants:

  • Fournir un site internet à chaque structure cliente, ainsi qu'un compte administrateur pour ce même site
  • Permettre à chaque structure de créer, modifier, et supprimer les pages et leurs contenus, dans la limite des droits que leurs confèrent leur licence Opentalent
  • Intégrer automatiquement les flux de données issues du réseau Opentalent (évènements, partenaires, structures adhérentes...)
  • Donner un lien d'accès à l'espace membres de la structure (i.e. le logiciel Opentalent)

A ces objectifs initiaux s'ajoutent certaines fonctionnalités attendues, dont les principales:

  • la possibilité de choisir entre plusieurs templates de site
  • l'intégration des réseaux sociaux
  • un système de gestion des actualités
  • le respect de la réglementation (cookies, RGPD, mentions légales)
  • la possibilité de restreindre l'accès à certaines pages aux seuls adhérents
  • la possibilité d'attribuer les droits d'éditions à d'autres utilisateurs membres de la structure
  • un système de suivi des statistiques de consultation du site
  • un formulaire de contact

Difficultés et choix techniques

Modularité et dépendances

Typo3 intègre un système d'extensions bien conçu, ce qui autorise un développement organisé et modulaire dans lequel chaque problématique peut correspondre à une extension dédiée.

Cependant, le risque lié à une multiplication des extensions reste une interdépendance de ces extensions (l'effet "spaghetti")

Pour éviter ça, on se tiendra donc à ce principe:

  • l'extension "noyau" OtCore ne dépend d'aucune autre extension
  • toutes les autres extensions ne peuvent dépendre que de la seule extension: OtCore
graph TD;
    OtCore-->OtAdmin;
    OtCore-->OtTemplating;
    OtCore-->OtConnect;
    OtCore-->OtStats;
    OtCore-->...etc.;

Design

La multiplicité des contenus, des templates et des supports rend le design graphique délicat à maintenir.

Afin de permettre une maintenabilité du code front, les choix suivants ont été faits:

  • une extension unique est responsable du templating: OtTemplating
  • chaque template est indépendant des autres, et dispose de ses propres layouts, partials, assets
  • cependant, tous les templates implémentent les même modèles de page (page d'accueil, liste des évènements, liste des adhérents...)
  • les assets de chaque template sont organisés de manière similaire, en respectant entre autre la méthode SMACCS
  • un/des site(s) de démonstration, contenant tous les types de pages et de contenus, permettent de constater l'aspect graphique de ces éléments.

Authentification

Le partage d'une authentification entre le logiciel et les sites est effectué par l'intermédiaire de cookies.

L'extension dédiée OtConnect permet de soumettre ces cookies à l'API pour obtenir l'identité de l'utilisateur connecté.

Ce fonctionnement rencontre cependant des difficultés liées aux règles de sécurité des navigateurs liées aux cookies, ainsi qu'aux structures possédant leur propre nom de domaine (domaines qui ne sont donc plus en .opentalent.fr)

Nombre de sites

Tout adapté qu'il soit à l'architecture multi-sites, Typo3 n'a pas été pensé pour héberger une telle quantité de sites. De nombreuses difficultés liées à ce nombre ont donc dû être contournées.

C'est la raison d'être de l'extension OtOptimizer, dont le rôle est de surcharger le fonctionnement de certaines fonctions natives de Typo3 pour des raisons de performance.

Cohérence avec les données Opentalent

Les sites doivent être à tout moment cohérents avec les données de la base de données Opentalent (structures, utilisateurs, paramètre...).

Pour ce faire, l'extension OtAdmin fournit une API accessible par HTTP et en ligne de commande. Cette API est appellées par des hooks côté logiciel et permet de déclencher par exemple la création d'un nouveau site, sa mise à jour, ou son archivage.

Typoscript

LE Typoscript. C'est le langage historique de Typo3. Très puissant, mais... fiou.

Bref, le Typoscript étant assez difficile d'accès, le choix a été fait de privilégier l'usage du langage de templating Fluid dès que c'était possible.

Plus d'infos ici.


Et si vous avez lu jusqu'ici, vous avez mérité un cookie:

cookie