Ticket #538 (closed bug: fixed)

Opened 3 months ago

Last modified 3 months ago

jResponseZip : on windows files are view like folders

Reported by: bastnic Assigned to: Julien
Priority: normal Milestone: Jelix 1.0.4
Component: jelix:core response Version: 1.0.3
Severity: normal Keywords:
Cc: Php version:
Review: review+ Hosting Provider:
Documentation needed: 0 Blocking:

Description

Not on mac os and linux.

I don't understand what happened.

Attachments

patch-zip.diff (5.9 kB) - added by bastnic on 04/14/08 11:06:09.
538-jZipCreator.diff (14.4 kB) - added by Julien on 04/23/08 23:50:27.
patch based on a wrapper for a class from phpMyAdmin
538-jZipCreator.2.diff (1.2 kB) - added by Julien on 05/03/08 18:31:48.
new patch, no external lib

Change History

04/14/08 11:06:09 changed by bastnic

  • attachment patch-zip.diff added.

04/14/08 11:07:30 changed 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.

04/14/08 11:25:04 changed 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.

04/14/08 17:02:29 changed 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.

04/23/08 23:50:27 changed by Julien

  • attachment 538-jZipCreator.diff added.

patch based on a wrapper for a class from phpMyAdmin

04/23/08 23:57:15 changed 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.

04/23/08 23:57:23 changed by Julien

  • status changed from new to assigned.

04/23/08 23:58:28 changed by Julien

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

04/24/08 00:13:11 changed 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.

04/24/08 00:25:41 changed 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

04/24/08 01:06:48 changed by Julien

bon, trouvé ;)

plus qu'à patcher comme il faut ;)

04/24/08 02:22:37 changed by Julien

  • review deleted.

on attend, je vais y arriver ;)

04/30/08 11:36:21 changed by bastnic

Tu en es où alors ?

04/30/08 13:12:30 changed 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 ;)

05/03/08 18:31:48 changed by Julien

  • attachment 538-jZipCreator.2.diff added.

new patch, no external lib

05/03/08 18:40:36 changed 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.

05/03/08 23:57:40 changed 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 ?

05/04/08 00:12:45 changed by laurentj

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

05/04/08 00:18:27 changed 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 ?

05/04/08 12:48:23 changed 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 ;)

05/04/08 13:31:11 changed by laurentj

  • review changed from review? to review+.

Ok.

À commiter dans la branche 1.0.x et le trunk

05/04/08 19:00:48 changed by Julien

  • status changed from assigned to closed.
  • resolution set to fixed.

Ok c'est fait. ++

Download in other formats: Comma-delimited Text Tab-delimited Text RSS Feed