Ticket #1390 (closed defect: fixed)
Impossible de déplacer un média dans un répertoire fraîchement créé
Reported by: | philippe | Owned by: | franck |
---|---|---|---|
Priority: | normal | Milestone: | 2.6 |
Component: | module:mediamanager | Version: | 2.5 |
Severity: | minor | Keywords: | |
Cc: |
Description
Si l'on crée un nouveau répertoire dans le gestionnaire de médias et qu'on veut ensuite y déplacer un fichier, le répertoire ne s'affiche pas dans la liste des répertoires disponibles pour déplacer le fichier.
Il faut impérativement mettre un fichier quelconque dans ce répertoire pour qu'il apparaisse dans ladite liste
Change History
comment:3 follow-up: ↓ 4 Changed 12 years ago by lipki
Ce qui ce passe, c'est que la liste des dossiers disponible est créer a partir de la liste des médias enregistrés dans la bdd. Donc les dossiers vides ne sont pas pris en compte. La solution me parait être de récupérer la liste des dossiers présent dans public sans passé par la bdd. Je ne sait pas quel problème ça pourrais provoquer ?
comment:4 in reply to: ↑ 3 Changed 12 years ago by zeiram
Replying to lipki:
Je ne sait pas quel problème ça pourrais provoquer ?
De gros problèmes de performance dès que l'arborescence devient un peu conséquente (c'est le parcours complet d'un arbre avec au minimum un accès disque par nœud et par feuille...) Donc si c'est fait à chaque affichage d'une page du gestionnaire des média, ça va vite devenir insupportable...
comment:5 Changed 12 years ago by franck
Et pour compléter la réponse de zeiram, c'était le fonctionnement précédent et ça a posé des problèmes chez certains hébergeurs (OVH par exemple).
comment:6 follow-up: ↓ 8 Changed 12 years ago by lipki
flûte PR dans le vent.
Donc ....
et donc plutôt que de créer physiquement un fichier, on peut mettre à la place une entrée dans la bdd qui sera remplacer par le premier fichier, Je trouve ça très con ...
Ou on peux limité artificiellement la boucle récursive, à 100 dossiers (par exemple).
comment:7 follow-up: ↓ 9 Changed 12 years ago by lipki
Je sait pas trop, mais je pense que l'idée de franckpaul est bonne créer un fichier bidon quand on céer le dossier. Enfin juste l'entrée dans la bdd. Il faut juste penser a ce que ça implique.
Soit le l'entrée reste mais n'est pas pris en compte lors de l'affichage et la suppression du dossier. Soit le l'entrée est suprimmer quand un fichier arrive et recréer quand le dossier est de nouveaux vide.
C'est source de bug.
comment:8 in reply to: ↑ 6 Changed 12 years ago by franck
Replying to lipki:
Ou on peux limité artificiellement la boucle récursive, à 100 dossiers (par exemple).
Sur mon blog, j'en ai plusieurs centaines et j'entends déjà les premiers utilisateurs dirent : « mon dossier n'apparaît pas dans liste ! ».
Il faut, je pense, plutôt envisager de gérer un répertoire comme un média d'un type particulier. Par contre il va falloir évaluer sérieusement les impacts, ce n'est probablement pas trivial.
comment:9 in reply to: ↑ 7 Changed 12 years ago by insy
Replying to lipki:
Je sait pas trop, mais je pense que l'idée de franckpaul est bonne créer un fichier bidon quand on créer le dossier. Enfin juste l'entrée dans la bdd. Il faut juste penser a ce que ça implique.
Soit le l'entrée reste mais n'est pas pris en compte lors de l'affichage et la suppression du dossier. Soit l'entrée est supprimer quand un fichier arrive et recréer quand le dossier est de nouveaux vide.
C'est source de bug.
Je ne pense pas que ce soit une bonne idée; surtout s'il faut masquer après le fichier nouvellement créé. Bonjour la gestion.
J'ai proposé sur le commit de passer par une table dédiée, xave a pas aimé. Donc parcours récursif avec mise en cache?
comment:10 Changed 12 years ago by xave
Effectrivement, xave n'aime pas qu'on rajoute des tables dans la base. Surtout qu'on en a déjà une : celle des médias. Effectivement, considérer un répertoire comme un média d'un certain type est une idée à creuser. L'autre idée à explorer, ça serait d'oublier l'idée de récursivité et de ne lire que les sous-répertoires directs du répertoire en cours.
comment:11 Changed 12 years ago by philippe
Je crois que ça ne va pas aider à ranger les médias si on ne peut pas les déplacer dans n'importe quel répertoire. Je préfèrerais l'idée de considérer en base les répertoires comme des fichiers, c'est d'ailleurs pas le cas sous Linux ?
comment:12 Changed 12 years ago by lipki
Je fait un PR avec l'idée " quick & dirty " proposer par franckpaul dans son premier commentaire, je le garde sous le coude, je le proposerais sur le repo de dotclear si on trouve pas mieux.
Sinon je test une méthode non récursive. Avec ça on peut facilement l'arrêter si elle prend trop de temps. Et afficher un message : "Votre dossier public contient trop de sous dossier, utiliser plutôt un client ftp"
comment:13 Changed 12 years ago by philippe
Je trouve qu'on est peut-être allés un peu vite pour corriger un système qui marchait très bien *sauf* sur les mutus d'OVH ;)
comment:14 Changed 12 years ago by franck
Est-ce qu'une option, définie pour le blog ne suffirait pas ? Du genre :
- Limiter le parcours des dossiers média à ceux contenant a minima un fichier.
Coché à "true" par défaut et qu'on pourrait décocher pour utiliser le parcours récursif.
comment:15 Changed 12 years ago by bruno
Je militerais plutôt pour mettre à coté du combo un bouton "parcourir", qui ouvrirait une popup, et permettrait de choisir un répertoire. en évitant un parcours récursif de l'arborescence, mais en faisant plutôt une présentation itérative : je choisis le répertoire au niveau 1, je choisis ensuite parmi ses sous-répertoires, puis parmis les sous-sous-répertoires, ...
Le problème du parcours récursif est qu'à chaque affichage de la page media_item.php, on parcourrait récursivement toute l'arborescence, ce qui plombe les perfs...
comment:16 Changed 12 years ago by franck
Finalement mon idée de considérer les répertoires comme des fichiers médias à part entière (et d'un type particulier) me semble, même si ce n'est pas trivial à implémenter, la meilleure des solutions.
comment:17 Changed 12 years ago by lipki
Ça me chiffonne cette volonté de faire coïncider la bdd avec le dossier de média.
Ça ne prend pas en compte que l'on puisse ajouter des fichiers par ftp.
Je sait que la bdd est sensé ce mettre à jour toute seul ...
Il y a peut-être une raison que je ne connais pas au fait de dupliquer les informations sur la bdd ?
La proposition de bruno me plait bien. L'utilisateur veux parcourir ses dossier, pas un copie approximative de ses dossiers
comment:19 Changed 12 years ago by noe
En marge de cette question, voir aussi le traitement du déplacement de médias (dans la page Détails du média) : la combo box actuelle n’est pas pratique en cas d’arborescence importante.
Sélecteur par niveau d’arborescence ? Autocomplétion dans un champ libre ?
comment:20 Changed 12 years ago by franck
Dans un premier temps on va ajouter à la liste actuelle :
- le répertoire parent (si pas à la racine de la médiathèque)
- la liste des sous-répertoires du répertoire où se trouve le média
Ça permettra de débloquer le déplacement dans n'importe quel répertoire.
comment:21 Changed 12 years ago by franck <carnet.franck.paul@…>
- Status changed from new to closed
- Resolution set to fixed
(In [71c521832a9e]) Add parent and child directories of potential destination folder's list in media-item.php, (dirty) fixes #1390.
Un moyen simple —genre quick & dirty — est de créer automatiquement un média à l'intérieur du répertoire fraîchement créé.