FLUID-2789: Toggling between the Flash and HTML version of uploader, will cause the Multi-file uploader's upload button to break: using Opera

Metadata

Source
FLUID-2789
Type
Bug
Priority
Blocker
Status
Closed
Resolution
Fixed
Assignee
N/A
Reporter
Justin Obara
Created
2009-05-27T12:54:15.000-0400
Updated
2009-05-29T13:35:10.000-0400
Versions
N/A
Fixed Versions
  1. 1.1
Component
  1. Uploader

Description

Toggling between the Flash and HTML version of uploader, will cause the Multi-file uploader's upload button to break

Steps to reproduce:

1) Open the uploader demo page
http://build.fluidproject.org/infusion/components/uploader/html/Uploader.html

2) Switch back and forth between the html and the flash based uploaders

3) Add a file to the multi-file uploader

4) Click the upload button

Notice that an error is thrown

Error:
JavaScript - http://build.fluidproject.org:8080/sakai-imagegallery2-web/site/AddImages/
Event thread: click
Unhandled exception: "Call to SetButtonDisabled failed"

Note - this was tested using Flash 10

Environments

Opera 9.6 (Mac OS 10.5)

Comments

  • Eli Cochran commented 2009-05-27T19:52:09.000-0400

    I've done a little research and this is a known bug with the SWFUpload and Opera. In the words of Gyphie:

    — QUOTE FROM: http://www.swfupload.org/forum/generaldiscussion/1182

    "I've found that Opera performs the worst in these tests. Basically you can't hide or perform any DOM node movements in Opera without breaking Flash movies that use External Interface to communicate to the browser.

    The work-around is to only change the Flash Movie size to 0x0 (but I'd test that you may have to do 1x1) and reposition the movie. You can't hide it or it's parent."

    — END QUOTE —

    The Upload button also fails in Opera running locally, even with out toggling. This problem may be related although I'm having trouble debugging.

  • Eli Cochran commented 2009-05-28T18:27:28.000-0400

    The solution that we've settled on is to "hide" the Uploader in a different way. Hiding using the standard .hide() and show() methods in jQuery will break the Uploader in Opera. However, we can hide by setting the height, width and padding of the Uploader to 0 and also setting visibility to hidden.

    The two patches offer up use both use this approach
    FLUID-2789.a.allbrowsers.patch :: hides the Uploader using this hack on all browsers
    FLUID-2789.b.justOpera.patch :: special-cases Opera for this fix

  • Eli Cochran commented 2009-05-29T12:46:15.000-0400

    We've decided to go with the Opera only fix, but we're changing the test for Opera since jQuery has deprecated $.browser.opera. After much hunting, we found (window.opera) which appears to only return as defined on Opera!

  • Eli Cochran commented 2009-05-29T13:11:58.000-0400

    Anastasia has committed the revised opera-only fix and we are good to go.

  • Justin Obara commented 2009-05-29T13:35:10.000-0400

    Verified fix using:

    Opera 9.6 (Mac OS 10.5, Win XP)