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.

Opened 12 years ago

Closed 12 years ago

#538 closed bug (fixed)

jResponseZip : on windows files are view like folders

Reported by: bastnic Owned by: Julien
Priority: normal Milestone: Jelix 1.0.4
Component: jelix:core response Version: 1.0.3
Severity: normal Keywords:
Cc: Blocked By:
Blocking: Documentation needed: no
Hosting Provider: Php version:

Description

Not on mac os and linux.

I don't understand what happened.

Attachments (3)

patch-zip.diff (5.9 KB) - added by bastnic 12 years ago.
538-jZipCreator.diff (14.4 KB) - added by Julien 12 years ago.
patch based on a wrapper for a class from phpMyAdmin
538-jZipCreator.2.diff (1.2 KB) - added by Julien 12 years ago.
new patch, no external lib

Download all attachments as: .zip

Change History (22)

Changed 12 years ago by bastnic

comment:1 Changed 12 years ago by bastnic

  • review set to review?

Vu que je n'y comprends pas grand chose à jZipCreator et donc que je ne sais pas du tout debuggué ça ET que j'en ai malgré tout besoin, je me suis mis en place cette pseudo solution qui a le mérite de fonctionner.

Mais cette solution est oh combien peu élégante.

comment:2 Changed 12 years ago by laurentj

  • review changed from review? to review-

Vu que je n'y comprends pas grand chose à jZipCreator

Bah il faut aller lire la spec de Zip, tout simplement...

Mais cette solution est oh combien peu élégante.

tout à fait d'accord, donc pour moi ça ne corrige pas le problème.

comment:3 Changed 12 years ago by bastnic

Mon but n'est pas de corriger élégamment ta solution, mon but était de proposer quelque chose qui marche pour ceux qui peuvent en avoir besoin. Donc à ne pas intégrer dans le trunk mais à garder sous le coude pour ceux qui veulent un zip qui fonctionne.

Changed 12 years ago by Julien

patch based on a wrapper for a class from phpMyAdmin

comment:4 Changed 12 years ago by Julien

  • Owner changed from laurentj to Julien
  • review changed from review- to review?

Hello,

voici un patch qui marche bien comme il faut.

J'ai fait un wrapper sur la classe zip de phpMyAdmin (a priori pas de problème de licence, GPL, mais je suis pas spécialiste), qui est placée dans le répertoire lib.

Le manifest est donc modifié aussi.

On pourrait aussi imaginer d'avoir une directive de compilation (ENABLE_PHP_ZIP ?) qui pourrait activer l'usage de l'extension ZIP native de PHP5 (un peu comme avec JSON). Il faudrait alors faire un manifest à part et ne l'inclure que si la directive est à 0.

Mais peut-être un autre patch plus tard pour ça, car là ça fonctionne comme il faut pour tout le monde.

comment:5 Changed 12 years ago by Julien

  • Status changed from new to assigned

comment:6 Changed 12 years ago by Julien

Pour info, j'ai oublié de dire, mais mon nautilus (ubuntu 7.10) voyait aussi les fichiers comme des dossiers.

comment:7 Changed 12 years ago by bastnic

En ce qui me concerne, ça me va très bien vu que très semblable à ce que je me suis bricolé à l'arrache-moyeux.

Il me semblait pas voir eu de problème avec mon nautilus, j'avais du me tromper. En tout cas mon Finder sous mac voit parfaitement tout comme il faut avec la lib de laurentj. Mais ça a l'air chiant à débugguer.

comment:8 Changed 12 years ago by Julien

Oui, sans doute un truc bizarre, j'ai déja eu d'autres problèmes aussi avec zip, en dehors du contexte PHP. Genre sur un macos 10.3.9, des fois on sait pas trop pourquoi, la commande zip n'arrive pas à produire un ZIP valide que firefox accèpte comme un XPI, alors que le zip se décompresse très bien n'importe où, et les fichiers sont bien là où ils doivent. La même commande sur un macos 10.4 marche sans problème. Idem linux, pas de problème.

Bon, par contre, je viens de voir que mon patch ne permet pas d'intégrer les dossiers vides dans l'archive ZIP :( Je ne sais pas si ça fonctionnait avant ?

Ca va être chiant à modifier, vu que je ne maitrise pas plus que toi la spec zip.

C'est pas dramatique à mon avis, mais bon, là j'ai pas le courage de chercher de suite ;)

Bref, faut arriver à un équivalent de http://fr.php.net/manual/fr/function.ziparchive-addemptydir.php

comment:9 Changed 12 years ago by Julien

bon, trouvé ;)

plus qu'à patcher comme il faut ;)

comment:10 Changed 12 years ago by Julien

  • review review? deleted

on attend, je vais y arriver ;)

comment:11 Changed 12 years ago by bastnic

Tu en es où alors ?

comment:12 Changed 12 years ago by Julien

pas eu le temps de m'y remettre, mais la solution est grosso-modo la suivante :

avant de créer le zip, faut établir la liste de tous les dossiers vides (càd qui n'ont pas de fichiers directs dedans ou de sous dossiers contenant un fichier.

Pour chaque dossier vide, il faudra donc créer une entrée dans le ZIP avec un flag spécifique.

Bref, le principe est là, je n'ai pas encore eu le temps de faire la méthode qui va donner la liste des dossiers vides.

Bref, un long week-end qui arrive, je vais bien trouver l'heure qu'il faut ;)

Changed 12 years ago by Julien

new patch, no external lib

comment:13 Changed 12 years ago by Julien

  • review set to review?

Bon, finalement j'ai trouvé plus simple que mon précédent patch...

Je dois encore régler le problème des dossiers vides, mais je voulais déjà soumette la nouvelle version du patch, comme il règle le problème de ce ticket.

Je ferai un nouveau ticket pour l'histoire des dossiers vides.

comment:14 Changed 12 years ago by laurentj

Tu pourrais expliquer ces modifications ? qu'est ce qu'elles representent ? Sur quelle partie de la spec de zip tu te bases ? Su quelle spec d'ailleurs ? un lien ?

comment:15 Changed 12 years ago by laurentj

oublie mes questions, j'ai lu un peu trop rapidement ton patch...

comment:16 Changed 12 years ago by laurentj

Si je comprend bien, j'ai fait une erreur avec ce nombre 32 : c'est la valeur en decimal à mettre, et je l'ai mis en fait en hexa au lieu de la traduire en hexa, c'est ça ?

comment:17 Changed 12 years ago by Julien

Hello,

en fait, c'est l'histoire des dossiers vides qui m'a mis sur la piste. Il faut justement toucher à cette valeur, mettre autre chose que 32 (46 de mémoire, je suis pas chez moi là).

En testant divers trucs, j'ai vu que remplacer ton 32 par 0 faisait que les fichiers étaient bien vus comme il faut. Mais comme la lib de phpMyAdmin mettait aussi la valeur 32, je me suis dit que d'une façon ou d'une autre, ta représentation de 32 n'était pas bonne, et j'ai simplement repris la technique d'assignation de la classe de phpMyAdmin.

Bref, j'ai trouvé à moitié par hasard ;)

comment:18 Changed 12 years ago by laurentj

  • review changed from review? to review+

Ok.

À commiter dans la branche 1.0.x et le trunk

comment:19 Changed 12 years ago by Julien

  • Resolution set to fixed
  • Status changed from assigned to closed

Ok c'est fait. ++

Note: See TracTickets for help on using tickets.