upload flash 10 + Magento fix

Posté le lundi 2 mars 2009 à 4 h 40, Read it in english with Google

Allez un peu de code ça faisait longtemps. Voila que ces bouffons d’adobe sorte une nouvelle version de leur player vectorielle Ă  2 balles et ils sont mĂŞme pas capable de respecter la compatibilitĂ©… Vous l’aurez compris je parle de la mĂ©thode d’upload de flash 10 qui n’est dĂ©sormais plus lançable en javascript pour raisons de sĂ©curitĂ©… Les mĂ©thodes FileReference.browse et FileReference.download nĂ©cessitent maintenant une action prĂ©alable de l’utilisateur pour s’activer. Comprenez par lĂ  que si vous appelez l’une de ces deux fonctions autre part qu’Ă  la suite d’une action rĂ©sultant d’un Event de type MouseEvent ou KeyboardEvent, les clients Flash 9 update 5 et Flash 10 supĂ©rieur vous renverront une exception !

Nous voilĂ  donc avec 99% des scripts d’upload du net utilisant Flash qui throw des exceptions. L’astuce pour parer ça, c’est de faire le sale, de mettre un flash transparent par dessus votre bouton et d’appeler la mĂ©thode d’upload directement dans le flash. Y a de quoi ce pendre non ? Il aurait pu mettre une petite alerte de sĂ©curitĂ© genre infobox en disant « attention un script tente de vous proposer d’uploader un fichier, acceptez, annuler », ils seraient passĂ©s pour des cons mais ils ont l’habitude maintenant; le truc c’est qu’ils sont feignants aussi. Ils prĂ©fèrent donc laissez la terre entière modifiez les scripts, et puis l’utilisateur final lui il a l’impression que c’est vous qui avez fait de la merde donc au fond ils s’en foutent.

Fix Magento upload image product

Tout ça pour dire que ça m’a fait super plaisir de bosser la-dessus ce week-end au lieu de profiter du soleil, notamment sur Magento qui est assez dur de mettre Ă  jour Ă  la 1.2.x (modification du template requise). Je me suis contentĂ© pour l’instant d’appliquer un petit fix pour ne plus avoir d’erreur d’upload d’image des produits, ça Ă©vitera d’avoir le bug d’error javascript sur flex.js lorsque vous cliquerez sur browse files. Il est assez dur Ă  trouver c’est pourquoi je vous file la soluce :
Il faut mettre Ă  jour ces 5 fichiers de la version 1.1.x Ă  la version 1.2.x (1.2.1.1 pour ma part) :
app/code/core/Mage/Adminhtml/Block/Media/Uploader.php
app/design/adminhtml/default/default/template/media/uploader.phtml
js/mage/adminhtml/flexuploader.js
js/mage/adminhtml/product.js
skin/adminhtml/default/default/media/uploader.swf

sinon pour gagner encore plus de temps, téléchargez ce fichier et décompressez le tout dans le répertoire de base de Magento : magento-flash10-fix

Qu’est-ce qu’on est niais aussi de baser nos scripts sur des techos foireuses…

5 réponses à “upload flash 10 + Magento fix”

  1. akuseru

    Moi j’utilisais SWFUpload et j’ai aussi pris de plein fouet cette magouille d’adobe. J’avais construit tout un module avec des classes dans tous les sens. Ca me permettait d’avoir une galerie d’image (vignettes) avec upload et suppression de fichiers en quelques clics. Et hop, des journĂ©es de boulot rĂ©duites Ă  nĂ©ant : merci adobe de balayer d’un revers de manche ta communautĂ©. Et le pire, c’est que j’ai aucune solution de replis. Si encore j’en avais une …

  2. Vincent

    Après avoir copiĂ© des 5 fichiers sur un magento 1.1.2, j’obtiens un message d’erreur Javascript: Element.insert is not a function
    [Break on this error]  »

    Auriez-vous une idée ?

  3. Immobilier Phuket

    Hello

    alors j’ai pris connaissance de ce bug rĂ©cemment, mais tous les posts que je trouve Ă  ce sujet parlent de javascript et flash, avec cette historie de bouton transparent etc…dans la mesure ou le bouton d’ouverture de la fenetre de sĂ©lection de fichier se trouve dans un fichier flash, pourquoi ai-je le problème sur mon movie ? car d’aprĂ©s ce que j’ai compris, la solution proposĂ©e ne s’adapte qu’aux scripts ouvrant la fenĂŞtre de sĂ©lection en javascript, est-ce correct ?

    merci pour votre aide !

  4. XoraX

    Non, il s’applique Ă  tous.

    La restriction de sĂ©curitĂ© de flash 10 implique qu’on ne peut plus lancer la selection de fichier en javascript mais Ă©galement qu’on ne peut plus lancer le tĂ©lĂ©chargement de fichier en javascript.

    Il faut que les mĂ©thodes FileReference.browse et FileReference.download soit dans un contexte (ou un sous contexte) de la mĂ©thode Button.onclik ou d’un Ă©vènement sur cette mĂ©thode et qu’il doit ĂŞtre appelĂ© par une action système. Comprenez par lĂ  qu’il doit y avoir la mĂ©thode Button.onclik ou son Ă©vènement dans le stack-trace qui serait gĂ©nĂ©rĂ© lorsque le système appel FileReference.browse ou FileReference.download.

  5. Samuel

    Tout d’abord merci pour cette astuce qui semble aider bon nombre d’entre nous.
    Malheureusement, je rencontre le même problème que Vincent, à savoir une erreur js : Element.insert is not a function.
    Je travail sur une version 1.1.3 de Magento, et l’upgrade est impossible du fait des modifications apportĂ©es au template. Auriez vous une idĂ©e qui me permette de rĂ©soudre mon problème.
    D’avance merci ;o)

Laissez un commentaire :