Re, Maintenant que la branche sexy n'a plus de gestionnaire de médias, je remets sur le tapis le sujet de refonte du gestionnaire de médias, qui reviendra sous forme d'un plugin.
Les limitations de l'ancien gestionnaire de médias : * peu d'extensibilité * pas ouvert vers les médias externes * limité à 1 media_path par blog. Le nouveau modèle proposé : * Ajout d'un "media provider" (ex typique : un couple media_path/media_url, mais extensible à d'autres types de fournisseurs : youtube, flickr, ...) * Les médias sont tous associés à un media provider * Ajout d'une table dc_media_meta pour mieux gérer les métadonnées des médias * Ajout d'urlhandlers dédiés aux médias * Nouveaux templates tpl:Media Plutôt que de continuer à paraphraser une vieille page sur le sujet, ci-dessous un copier-coller de la réflexion : Refonte du gestionnaire de médias Le but de cette page est de dégrossir la prochaine cible du gestionnaire de médias Classes core dcMedia - rendre cette classe indépendante du provider de médias. - fournir des méthodes type getPosts de dcCore - permettre d'étendre chaque recordset via le media provider associé dcMediaProviders Classe abstraite, à étendre en dcMediaLocal, dcMediaYoutube, dcMediaFlickr - Permet d'avoir les informations sur un média donné (URL, miniature, inventaire, ...) - Permet de synchroniser les médias (nouveaux, supprimés, ...) Coté public - URLHandlers : proposer un URLHandler pour afficher un média (le plugin dlManager a déjà défini des URLs<http://lab.dotclear.org/browser/plugins/dlManager/trunk/_prepend.php>et des fichiers template<http://lab.dotclear.org/browser/plugins/dlManager/trunk/default-templates>-- Moe) - proposer les templates liés à ce urlhandler - nouveaux templates : <tpl:Media></tpl:Media> ... Coté admin - Proposer une vision sous forme de liste, pas forcément dépendante du répertoire. Un répertoire devient un filtre comme un autre - Points d'extension coté liste de médias, sélection multiple, actions groupées (déplacement, suppression, regénération, ...) - Points d'extension coté affichage média (rotation, redéfinition miniatures, manipulation métadonnées, ...) Tables dc_media Objectif : limiter les impacts sur la modification de cette table Structure actuelle : - media_id (bigint) : id du média - user_id (varchar 32) : utilisateur - media_path (varchar 255) : chemin du répertoire public - media_title (varchar 255) : titre du média - media_file (varchar 255) : nom du fichier contenant le média (répertoire inclus) - media_dir (varchar 255) : répertoire contenant le média - media_meta (text) : métadonnées de l'image (structure xml) - media_dt, media_creadt, media_upddt - media_private (smallint) Evolutions à porter : - Remplacer media_path par mp_id, avec jointure avec dc_media_pro (le media_path est alors porté par la table dc_media_pro) dc_media_pro Nouvelle table, elle décrit les fournisseurs de médias : Champs : - mp_id (bigint) : identifiant du provider - mp_type (varchar 64): type du provider ("file", "youtube", "flickr") - mp_name (varchar 255) : nom du provider ("Compte youtube de toto") - ... (à compléter selon étude) dc_blog_media_pro Nouvelle table, elle associe des media providers à un blog : Champs : - blog_id () : identifiant du blog - mp_id (bigint) : identifiant du media provider dc_media_meta L'idée de cette table est de calquer les mécanismes de dc_meta, mais pour les médias. En plus d'avoir des métadonnées des médias dans un champ de dc_ media, elles sont en plus stockées en table. Cela permet un requêtage plus complet sur les médias. Structure proposée : comme dc_meta, à savoir : - media_id( bigint) : id du média - meta_value (varchar 255) : contenu de la métadonnée - meta_type (varchar 64) : nom de la métadonnée dc_post_media Cette table a un rôle très limité actuellement, elle sert uniquement à la gestion des pièces jointes. Elle prendrait un sens beaucoup plus complet si ont pouvait qualifier le type de lien post <-> média Nouvelle structure : - post_id (bigint) : id du billet - media_id (bigint) : id du média - link_type (varchar 64) : type de lien entre billet et média Exemples de link_type : "attach" pour une pièce jointe (valeur par défaut pour rétrocompatibilité), "embed" pour un média inclus dans un billet (par exemple pour propager un renommage d'un média au sein d'un billet, gérer les effets de bord à ma suppression d'un média)
_______________________________________________ Dev mailing list [email protected] http://ml.dotclear.org/listinfo/dev
