Dotclear

Ticket #1390 (closed defect: fixed)

Opened 12 years ago

Last modified 12 years ago

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:1 Changed 12 years ago by franck

Un moyen simple —genre quick & dirty — est de créer automatiquement un média à l'intérieur du répertoire fraîchement créé.

comment:2 Changed 12 years ago by franck

  • Milestone changed from A definir to 2.6

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...

Last edited 12 years ago by zeiram (previous) (diff)

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 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.

Last edited 12 years ago by lipki (previous) (diff)

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:18 Changed 12 years ago by franck

  • Owner changed from xave to franck

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.

Note: See TracTickets for help on using tickets.

Sites map