wiki:fr/drafts/modules/medias
developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

module medias

Gestion de fichiers médias qui peuvent être rattachés à des objets particuliers.

Note : "media" et autres noms sont temporaires. Ce ne sont pas les noms définitifs.

specs fonctionnelles

l'objectif de ce module est de permettre de gérer des fichiers medias (images, videos etc) et autres pièces jointes (pdf par ex). Il doit fournir des services, de manière à pouvoir l'utiliser conjointement avec d'autres modules, dits clients, de type cms, blog etc.

Une ressource est un objet des modules "clients", comme un article, un billet, à laquelle sera rattaché un fichier du gestionnaire de medias.

Pour rattacher ou détacher un fichier à une ressource, un module client appellera le service adéquate du module media.

Lors de la mise à jour ou la suppression d'un fichier dans le gestionnaire média, celui-ci devra envoyer un évènement pour que les modules clients en soient informés, et agir en conséquence.

objets prévues

  • contrôleur pour download/upload d'un fichier
  • service :
    • liste des fichiers dispos
    • liste des fichiers attribués à une ressource
    • ajout/mise à jour d'un fichier
    • suppression d'un fichier
    • ajout d'une rubrique
    • suppression d'une rubrique
    • lier un fichier avec une ressource
    • enlever le lien d'un fichier avec une ressource
  • module annexe pour l'administration des fichiers, comportant un contrôleur :
    • liste des fichiers (par rubrique)
    • ajout d'un fichier
    • suppression d'un fichier

specs techniques

  • fichiers stockés dans var/medias/

Le service devra envoyé les évènements suivant (nom à confirmer):

  • mediaCanDelete avant suppression, pour savoir si la suppression est vraiment possible
  • mediaDeleteDone aprés suppression, pour faire savoir que le fichier a été supprimé
  • mediaUpdated pour faire savoir qu'un fichier a été mis à jour

à etudier

Il faut stocker les "liens" entre les ressources et les fichiers. Deux solutions :

une table unique gérée par le module média

il faudra dans cette table stocker :

  • type de ressource
  • id de la ressource
  • id du fichier

Reste à savoir comment par exemple lister les intitulés de chaque ressource, voir même générer les liens vers ces ressources, quand on veut, dans le gestionnaire de media, savoir par quoi est utilisé un fichier (et encore faut-il savoir : quels types de liens met-on ? celui pour voir la ressource ? pour éditer la ressource ? sur l'admin ? sur le front ? ...)

Autre inconvénient : dur de faire des jointures entre les tables des ressources et la table des fichiers, étant donné qu'ici le champs de l'id de la ressource, ne peut être une clé étrangère sur une table précise...

une table par module client

Chaque module client gére sa propre table de liaison. Cela permet de faire des requètes normales :

  • id de la ressource
  • id du fichier

Mais cela demande plus de travail au developpeur du module client (peut être peut on limiter en fournissant dans le module media, une api qui prendrait en paramètre le selecteur de la dao correspondante à la table de liaison)

Quand le gestionnaire de media veut la liste des ressources qui utilise un fichier, il faut passer par un évènement. Cela peut faire pas mal de requête au final. Mais c'est peut être raisonnable dans la mesure où ce genre de chose n'est fait que dans un backoffice, moins "visité" donc où les perfs sont moins critiques.

Last modified 14 years ago Last modified on Jan 23, 2007, 6:15:49 PM