src/cm/media/js/lib/yui/yui3-3.15.0/build/uploader-flash/uploader-flash-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('uploader-flash', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
* This module provides a UI for file selection and multiple file upload capability using
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
* Flash as a transport engine.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
* The supported features include: automatic upload queue management, upload progress
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
* tracking, file filtering, server response retrieval and error reporting.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
*
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
* @module uploader-flash
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
* @deprecated
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
*/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
// Shorthands for external modules
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
var substitute            = Y.Lang.sub,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
    UploaderQueue         = Y.Uploader.Queue;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
 * Embed a Flash applications in a standard manner and communicate with it
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
 * via External Interface.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
 * @module swf
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
    var Event = Y.Event,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
        SWFDetect = Y.SWFDetect,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
        Lang = Y.Lang,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
        uA = Y.UA,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
        Node = Y.Node,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
        Escape = Y.Escape,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
        // private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
        FLASH_CID = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
        FLASH_TYPE = "application/x-shockwave-flash",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
        FLASH_VER = "10.0.22",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
        EXPRESS_INSTALL_URL = "http://fpdownload.macromedia.com/pub/flashplayer/update/current/swf/autoUpdater.swf?" + Math.random(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
        EVENT_HANDLER = "SWF.eventHandler",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
        possibleAttributes = {align:"", allowFullScreen:"", allowNetworking:"", allowScriptAccess:"", base:"", bgcolor:"", loop:"", menu:"", name:"", play: "", quality:"", salign:"", scale:"", tabindex:"", wmode:""};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
         * The SWF utility is a tool for embedding Flash applications in HTML pages.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
         * @module swf
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
         * @title SWF Utility
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
         * @requires event-custom, node, swfdetect
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
         * Creates the SWF instance and keeps the configuration data
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
         * @class SWF
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
         * @uses Y.Event.Target
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
         * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
         * @param {String|HTMLElement} id The id of the element, or the element itself that the SWF will be inserted into.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
         *        The width and height of the SWF will be set to the width and height of this container element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
         * @param {String} swfURL The URL of the SWF to be embedded into the page.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
         * @param {Object} p_oAttributes (optional) Configuration parameters for the Flash application and values for Flashvars
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
         *        to be passed to the SWF. The p_oAttributes object allows the following additional properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
         *        <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
         *          <dt>version : String</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
         *          <dd>The minimum version of Flash required on the user's machine.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
         *          <dt>fixedAttributes : Object</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
         *          <dd>An object literal containing one or more of the following String keys and their values: <code>align,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
         *              allowFullScreen, allowNetworking, allowScriptAccess, base, bgcolor, menu, name, quality, salign, scale,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
         *              tabindex, wmode.</code> event from the thumb</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
         *        </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
function SWF (p_oElement /*:String*/, swfURL /*:String*/, p_oAttributes /*:Object*/ ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
    this._id = Y.guid("yuiswf");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
    var _id = this._id;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
    var oElement = Node.one(p_oElement);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
    var p_oAttributes = p_oAttributes || {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
    var flashVersion = p_oAttributes.version || FLASH_VER;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
    var flashVersionSplit = (flashVersion + '').split(".");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
    var isFlashVersionRight = SWFDetect.isFlashVersionAtLeast(parseInt(flashVersionSplit[0], 10), parseInt(flashVersionSplit[1], 10), parseInt(flashVersionSplit[2], 10));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
    var canExpressInstall = (SWFDetect.isFlashVersionAtLeast(8,0,0));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
    var shouldExpressInstall = canExpressInstall && !isFlashVersionRight && p_oAttributes.useExpressInstall;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
    var flashURL = (shouldExpressInstall)?EXPRESS_INSTALL_URL:swfURL;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
    var objstring = '<object ';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
    var w, h;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
    var flashvarstring = "yId=" + Y.id + "&YUISwfId=" + _id + "&YUIBridgeCallback=" + EVENT_HANDLER + "&allowedDomain=" + document.location.hostname;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
    Y.SWF._instances[_id] = this;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
    if (oElement && (isFlashVersionRight || shouldExpressInstall) && flashURL) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
        objstring += 'id="' + _id + '" ';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
        if (uA.ie) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
            objstring += 'classid="' + FLASH_CID + '" ';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
            objstring += 'type="' + FLASH_TYPE + '" data="' + Escape.html(flashURL) + '" ';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
        w = "100%";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
        h = "100%";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
        objstring += 'width="' + w + '" height="' + h + '">';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
        if (uA.ie) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
            objstring += '<param name="movie" value="' + Escape.html(flashURL) + '"/>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
        for (var attribute in p_oAttributes.fixedAttributes) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
            if (possibleAttributes.hasOwnProperty(attribute)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
                objstring += '<param name="' + Escape.html(attribute) + '" value="' + Escape.html(p_oAttributes.fixedAttributes[attribute]) + '"/>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
        for (var flashvar in p_oAttributes.flashVars) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
            var fvar = p_oAttributes.flashVars[flashvar];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
            if (Lang.isString(fvar)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
                flashvarstring += "&" + Escape.html(flashvar) + "=" + Escape.html(encodeURIComponent(fvar));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
        if (flashvarstring) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
            objstring += '<param name="flashVars" value="' + flashvarstring + '"/>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
        objstring += "</object>";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
        //using innerHTML as setHTML/setContent causes some issues with ExternalInterface for IE versions of the player
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
        oElement.set("innerHTML", objstring);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
        this._swf = Node.one("#" + _id);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
    } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
         * Fired when the Flash player version on the user's machine is
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
         * below the required value.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
         * @event wrongflashversion
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
        var event = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
        event.type = "wrongflashversion";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
        this.publish("wrongflashversion", {fireOnce:true});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
        this.fire("wrongflashversion", event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
 * The static collection of all instances of the SWFs on the page.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
 * @property _instances
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
 * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
SWF._instances = SWF._instances || {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
 * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
 * Handles an event coming from within the SWF and delegate it
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
 * to a specific instance of SWF.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
 * @method eventHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
 * @param swfid {String} the id of the SWF dispatching the event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
 * @param event {Object} the event being transmitted.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
SWF.eventHandler = function (swfid, event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
    SWF._instances[swfid]._eventHandler(event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
SWF.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
     * Propagates a specific event from Flash to JS.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
     * @method _eventHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
     * @param event {Object} The event to be propagated from Flash.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
    _eventHandler: function(event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
        if (event.type === "swfReady") {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
            this.publish("swfReady", {fireOnce:true});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
            this.fire("swfReady", event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
        } else if(event.type === "log") {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
            Y.log(event.message, event.category, this.toString());
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
            this.fire(event.type, event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
     * Calls a specific function exposed by the SWF's
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
     * ExternalInterface.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
     * @method callSWF
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
     * @param func {String} the name of the function to call
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
     * @param args {Array} the set of arguments to pass to the function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
    callSWF: function (func, args)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
    if (!args) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
          args= [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
        if (this._swf._node[func]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
        return(this._swf._node[func].apply(this._swf._node, args));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
        } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
        return null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
     * Public accessor to the unique name of the SWF instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
     * @method toString
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
     * @return {String} Unique name of the SWF instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
    toString: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
        return "SWF " + this._id;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
Y.augment(SWF, Y.EventTarget);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
Y.SWF = SWF;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
     * The FileFlash class provides a wrapper for a file pointer stored in Flash. The File wrapper
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
     * also implements the mechanics for uploading a file and tracking its progress.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
     * @module file-flash
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
     * The class provides a wrapper for a file pointer in Flash.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
     * @class FileFlash
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
     * @extends Base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
     * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
     * @param {Object} config Configuration object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
    var FileFlash = function(o) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
        FileFlash.superclass.constructor.apply(this, arguments);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
    Y.extend(FileFlash, Y.Base, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
        * Construction logic executed during FileFlash instantiation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
        * @method initializer
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
        * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
        initializer : function (cfg) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
            if (!this.get("id")) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
                this._set("id", Y.guid("file"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
        * Handler of events dispatched by the Flash player.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
        * @method _swfEventHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
        * @param {Event} event The event object received from the Flash player.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
        * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
        _swfEventHandler: function (event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
          if (event.id === this.get("id")) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
          switch (event.type) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
            /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
             * Signals that this file's upload has started.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
             *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
             * @event uploadstart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
             * @param event {Event} The event object for the `uploadstart` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
             *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
             *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
             *      <dt>uploader</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
             *          <dd>The Y.SWF instance of Flash uploader that's handling the upload.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
             *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
             */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
            case "uploadstart":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
                 this.fire("uploadstart", {uploader: this.get("uploader")});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
                 break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
            case "uploadprogress":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
                  /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
                   * Signals that progress has been made on the upload of this file.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
                   *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
                   * @event uploadprogress
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
                   * @param event {Event} The event object for the `uploadprogress` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
                   *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
                   *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
                   *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
                   *          <dd>The original event fired by the Flash uploader instance.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
                   *      <dt>bytesLoaded</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
                   *          <dd>The number of bytes of the file that has been uploaded.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
                   *      <dt>bytesTotal</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
                   *          <dd>The total number of bytes in the file (the file size)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
                   *      <dt>percentLoaded</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
                   *          <dd>The fraction of the file that has been uploaded, out of 100.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
                   *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
                   */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
                 this.fire("uploadprogress", {originEvent: event,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
                                              bytesLoaded: event.bytesLoaded,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
                                              bytesTotal: event.bytesTotal,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
                                              percentLoaded: Math.min(100, Math.round(10000*event.bytesLoaded/event.bytesTotal)/100)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
                                             });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
                 this._set("bytesUploaded", event.bytesLoaded);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
                 break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
            case "uploadcomplete":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
                  /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
                   * Signals that this file's upload has completed, but data has not yet been received from the server.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
                   *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
                   * @event uploadfinished
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
                   * @param event {Event} The event object for the `uploadfinished` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
                   *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
                   *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
                   *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
                   *          <dd>The original event fired by the Flash player instance.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
                   *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
                   */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
                 this.fire("uploadfinished", {originEvent: event});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
                 break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
            case "uploadcompletedata":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
                 * Signals that this file's upload has completed and data has been received from the server.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
                 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
                 * @event uploadcomplete
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
                 * @param event {Event} The event object for the `uploadcomplete` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
                 *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
                 *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
                 *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
                 *          <dd>The original event fired by the Flash player instance.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
                 *      <dt>data</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
                 *          <dd>The data returned by the server.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
                 *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
                 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
                 this.fire("uploadcomplete", {originEvent: event,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
                                              data: event.data});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
                 break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
            case "uploadcancel":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
                 * Signals that this file's upload has been cancelled.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
                 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
                 * @event uploadcancel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
                 * @param event {Event} The event object for the `uploadcancel` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
                 *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
                 *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
                 *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
                 *          <dd>The original event fired by the Flash player instance.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
                 *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
                 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
                 this.fire("uploadcancel", {originEvent: event});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
                 break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
            case "uploaderror":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
                /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
                 * Signals that this file's upload has encountered an error.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
                 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
                 * @event uploaderror
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
                 * @param event {Event} The event object for the `uploaderror` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
                 *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
                 *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
                 *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
                 *          <dd>The original event fired by the Flash player instance.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
                 *      <dt>status</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
                 *          <dd>The status code reported by the Flash Player. If it's an HTTP error,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
                 *                then this corresponds to the HTTP status code received by the uploader.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
                 *      <dt>statusText</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
                 *          <dd>The text of the error event reported by the Flash Player.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
                 *      <dt>source</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
                 *          <dd>Either "http" (if it's an HTTP error), or "io" (if it's a network transmission
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
                 *              error.)</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
                 *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
                 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
                 this.fire("uploaderror", {originEvent: event, status: event.status, statusText: event.message, source: event.source});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
          }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
        * Starts the upload of a specific file.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
        * @method startUpload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
        * @param url {String} The URL to upload the file to.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
        * @param parameters {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
        * @param fileFieldName {String} (optional) The name of the POST variable that should contain the uploaded file ('Filedata' by default)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
        startUpload: function(url, parameters, fileFieldName) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
        if (this.get("uploader")) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
            var myUploader = this.get("uploader"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
                fileField = fileFieldName || "Filedata",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
                id = this.get("id"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
                params = parameters || null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
            this._set("bytesUploaded", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
            myUploader.on("uploadstart", this._swfEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
            myUploader.on("uploadprogress", this._swfEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
            myUploader.on("uploadcomplete", this._swfEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
            myUploader.on("uploadcompletedata", this._swfEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
            myUploader.on("uploaderror", this._swfEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
            myUploader.callSWF("upload", [id, url, params, fileField]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
         }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
        * Cancels the upload of a specific file, if currently in progress.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
        * @method cancelUpload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
        cancelUpload: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
         if (this.get("uploader")) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
           this.get("uploader").callSWF("cancel", [this.get("id")]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
           this.fire("uploadcancel");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
         }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
    }, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
        * The identity of the class.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
        * @property NAME
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
        * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
        * @default 'file'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
        * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
        * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
        * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
        NAME: 'file',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
        * The type of transport.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
        * @property TYPE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
        * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
        * @default 'flash'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   433
        * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   434
        * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   435
        * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   436
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   437
        TYPE: "flash",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   438
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   439
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   440
        * Static property used to define the default attribute configuration of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   441
        * the File.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   442
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   443
        * @property ATTRS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   444
        * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   445
        * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   446
        * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   447
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   448
        ATTRS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   449
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   450
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   451
        * A String containing the unique id of the file wrapped by the FileFlash instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   452
        * The id is supplied by the Flash player uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   453
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   454
        * @attribute id
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   455
        * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   456
        * @initOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   457
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   458
        id: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   459
            writeOnce: "initOnly",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   460
            value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   461
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   462
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   463
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   464
        * The size of the file wrapped by FileFlash. This value is supplied by the Flash player uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   465
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   466
        * @attribute size
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   467
        * @type {Number}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   468
        * @initOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   469
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   470
        size: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   471
            writeOnce: "initOnly",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   472
            value: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   473
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   474
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   475
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   476
        * The name of the file wrapped by FileFlash. This value is supplied by the Flash player uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   477
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   478
        * @attribute name
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   479
        * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   480
        * @initOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   481
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   482
        name: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   483
            writeOnce: "initOnly",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   484
            value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   485
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   486
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   487
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   488
        * The date that the file wrapped by FileFlash was created on. This value is supplied by the Flash player uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   489
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   490
        * @attribute dateCreated
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   491
        * @type {Date}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   492
        * @initOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   493
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   494
        dateCreated: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   495
            writeOnce: "initOnly",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   496
            value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   497
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   498
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   499
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   500
        * The date that the file wrapped by FileFlash was last modified on. This value is supplied by the Flash player uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   501
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   502
        * @attribute dateModified
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   503
        * @type {Date}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   504
        * @initOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   505
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   506
        dateModified: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   507
            writeOnce: "initOnly",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   508
            value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   509
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   510
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   511
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   512
        * The number of bytes of the file that has been uploaded to the server. This value is
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   513
        * non-zero only while a file is being uploaded.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   514
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   515
        * @attribute bytesUploaded
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   516
        * @type {Date}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   517
        * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   518
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   519
        bytesUploaded: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   520
            readOnly: true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   521
            value: 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   522
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   523
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   524
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   525
        * The type of the file wrapped by FileFlash. This value is provided by the Flash player
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   526
        * uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   527
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   528
        * @attribute type
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   529
        * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   530
        * @initOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   531
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   532
        type: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   533
            writeOnce: "initOnly",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   534
            value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   535
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   536
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   537
       /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   538
        * The instance of Y.SWF wrapping the Flash player uploader associated with this file.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   539
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   540
        * @attribute uploder
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   541
        * @type {SWF}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   542
        * @initOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   543
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   544
        uploader: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   545
            writeOnce: "initOnly",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   546
            value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   547
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   548
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   549
    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   550
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   551
    Y.FileFlash = FileFlash;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   552
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   553
* This module provides a UI for file selection and multiple file upload capability
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   554
* using Flash as a transport engine.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   555
* @class UploaderFlash
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   556
* @extends Widget
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   557
* @param {Object} config Configuration object.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   558
* @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   559
* @deprecated
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   560
*/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   561
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   562
function UploaderFlash() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   563
    UploaderFlash.superclass.constructor.apply ( this, arguments );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   564
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   565
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   566
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   567
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   568
Y.UploaderFlash = Y.extend(UploaderFlash, Y.Widget, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   569
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   570
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   571
    * Stored value of the current button state (based on
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   572
    * mouse events dispatched by the Flash player)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   573
    * @property _buttonState
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   574
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   575
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   576
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   577
    _buttonState: "up",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   578
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   579
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   580
    * Stored value of the current button focus state (based
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   581
    * on keyboard and mouse events).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   582
    * @property _buttonFocus
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   583
    * @type {Boolean}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   584
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   585
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   586
    _buttonFocus: false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   587
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   588
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   589
    * Stored value of the unique id for the container that holds the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   590
    * Flash uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   591
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   592
    * @property _swfContainerId
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   593
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   594
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   595
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   596
    _swfContainerId: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   597
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   598
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   599
    * Stored reference to the instance of SWF used to host the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   600
    * Flash uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   601
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   602
    * @property _swfReference
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   603
    * @type {SWF}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   604
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   605
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   606
    _swfReference: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   607
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   608
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   609
    * Stored reference to the instance of Uploader.Queue used to manage
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   610
    * the upload process. This is a read-only property that only exists
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   611
    * during an active upload process. Only one queue can be active at
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   612
    * a time; if an upload start is attempted while a queue is active,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   613
    * it will be ignored.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   614
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   615
    * @property queue
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   616
    * @type {Uploader.Queue}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   617
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   618
    queue: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   619
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   620
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   621
    * Stored event bindings for keyboard navigation to and from the uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   622
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   623
    * @property _tabElementBindings
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   624
    * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   625
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   626
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   627
    _tabElementBindings: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   628
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   629
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   630
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   631
    * Construction logic executed during UploaderFlash instantiation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   632
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   633
    * @method initializer
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   634
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   635
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   636
    initializer : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   637
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   638
        // Assign protected variable values
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   639
        this._swfContainerId = Y.guid("uploader");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   640
        this._swfReference = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   641
        this.queue = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   642
        this._buttonState = "up";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   643
        this._buttonFocus = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   644
        this._tabElementBindings = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   645
        this._fileList = [];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   646
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   647
        // Publish available events
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   648
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   649
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   650
        * Signals that files have been selected.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   651
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   652
        * @event fileselect
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   653
        * @param event {Event} The event object for the `fileselect` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   654
        *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   655
        *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   656
        *      <dt>fileList</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   657
        *          <dd>An `Array` of files selected by the user, encapsulated
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   658
        *              in Y.FileFlash objects.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   659
        *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   660
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   661
        this.publish("fileselect");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   662
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   663
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   664
        * Signals that an upload of multiple files has been started.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   665
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   666
        * @event uploadstart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   667
        * @param event {Event} The event object for the `uploadstart`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   668
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   669
        this.publish("uploadstart");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   670
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   671
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   672
        * Signals that an upload of a specific file has started.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   673
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   674
        * @event fileuploadstart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   675
        * @param event {Event} The event object for the `fileuploadstart` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   676
        *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   677
        *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   678
        *      <dt>file</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   679
        *          <dd>A reference to the Y.File that dispatched the event.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   680
        *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   681
        *          <dd>The original event dispatched by Y.File.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   682
        *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   683
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   684
        this.publish("fileuploadstart");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   685
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   686
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   687
        * Reports on upload progress of a specific file.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   688
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   689
        * @event uploadprogress
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   690
        * @param event {Event} The event object for the `uploadprogress` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   691
        *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   692
        *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   693
        *      <dt>bytesLoaded</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   694
        *          <dd>The number of bytes of the file that has been uploaded</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   695
        *      <dt>bytesTotal</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   696
        *          <dd>The total number of bytes in the file</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   697
        *      <dt>percentLoaded</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   698
        *          <dd>The fraction of the file that has been uploaded, out of 100</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   699
        *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   700
        *          <dd>The original event dispatched by the SWF uploader</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   701
        *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   702
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   703
        this.publish("uploadprogress");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   704
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   705
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   706
        * Reports on the total upload progress of the file list.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   707
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   708
        * @event totaluploadprogress
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   709
        * @param event {Event} The event object for the `totaluploadprogress` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   710
        *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   711
        *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   712
        *      <dt>bytesLoaded</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   713
        *          <dd>The number of bytes of the file list that has been uploaded</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   714
        *      <dt>bytesTotal</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   715
        *          <dd>The total number of bytes in the file list</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   716
        *      <dt>percentLoaded</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   717
        *          <dd>The fraction of the file list that has been uploaded, out of 100</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   718
        *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   719
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   720
        this.publish("totaluploadprogress");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   721
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   722
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   723
        * Signals that a single file upload has been completed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   724
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   725
        * @event uploadcomplete
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   726
        * @param event {Event} The event object for the `uploadcomplete` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   727
        *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   728
        *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   729
        *      <dt>file</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   730
        *          <dd>The pointer to the instance of `Y.File` whose upload has been completed.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   731
        *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   732
        *          <dd>The original event fired by the SWF Uploader</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   733
        *      <dt>data</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   734
        *          <dd>Data returned by the server.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   735
        *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   736
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   737
        this.publish("uploadcomplete");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   738
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   739
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   740
        * Signals that the upload process of the entire file list has been completed.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   741
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   742
        * @event alluploadscomplete
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   743
        * @param event {Event} The event object for the `alluploadscomplete`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   744
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   745
        this.publish("alluploadscomplete");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   746
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   747
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   748
        * Signals that a error has occurred in a specific file's upload process.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   749
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   750
        * @event uploaderror
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   751
        * @param event {Event} The event object for the `uploaderror` with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   752
        *                      following payload:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   753
        *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   754
        *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   755
        *          <dd>The original error event fired by the SWF Uploader. </dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   756
        *      <dt>file</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   757
        *          <dd>The pointer at the instance of Y.FileFlash that returned the error.</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   758
        *      <dt>source</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   759
        *          <dd>The source of the upload error, either "io" or "http"</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   760
        *      <dt>message</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   761
        *          <dd>The message that accompanied the error. Corresponds to the text of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   762
        *              the error in cases where source is "io", and to the HTTP status for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   763
                                     cases where source is "http".</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   764
        *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   765
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   766
        this.publish("uploaderror");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   767
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   768
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   769
        * Signals that a mouse has begun hovering over the `Select Files` button.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   770
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   771
        * @event mouseenter
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   772
        * @param event {Event} The event object for the `mouseenter` event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   773
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   774
        this.publish("mouseenter");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   775
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   776
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   777
        * Signals that a mouse has stopped hovering over the `Select Files` button.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   778
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   779
        * @event mouseleave
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   780
        * @param event {Event} The event object for the `mouseleave` event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   781
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   782
        this.publish("mouseleave");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   783
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   784
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   785
        * Signals that a mouse button has been pressed over the `Select Files` button.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   786
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   787
        * @event mousedown
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   788
        * @param event {Event} The event object for the `mousedown` event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   789
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   790
        this.publish("mousedown");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   791
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   792
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   793
        * Signals that a mouse button has been released over the `Select Files` button.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   794
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   795
        * @event mouseup
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   796
        * @param event {Event} The event object for the `mouseup` event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   797
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   798
        this.publish("mouseup");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   799
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   800
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   801
        * Signals that a mouse has been clicked over the `Select Files` button.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   802
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   803
        * @event click
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   804
        * @param event {Event} The event object for the `click` event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   805
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   806
        this.publish("click");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   807
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   808
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   809
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   810
    * Creates the DOM structure for the UploaderFlash.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   811
    * UploaderFlash's DOM structure consists of two layers: the base "Select Files"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   812
    * button that can be replaced by the developer's widget of choice; and a transparent
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   813
    * Flash overlay positoned above the button that captures all input events.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   814
    * The `position` style attribute of the `boundingBox` of the `Uploader` widget
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   815
    * is forced to be `relative`, in order to accommodate the Flash player overlay
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   816
    * (which is `position`ed `absolute`ly).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   817
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   818
    * @method renderUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   819
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   820
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   821
    renderUI : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   822
        var boundingBox = this.get("boundingBox"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   823
            contentBox = this.get('contentBox'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   824
            selFilesButton = this.get("selectFilesButton"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   825
            flashContainer = Y.Node.create(substitute(UploaderFlash.FLASH_CONTAINER, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   826
                swfContainerId: this._swfContainerId
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   827
            })),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   828
            params = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   829
                version: "10.0.45",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   830
                fixedAttributes: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   831
                    wmode: "transparent",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   832
                    allowScriptAccess:"always",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   833
                    allowNetworking:"all",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   834
                    scale: "noscale"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   835
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   836
            };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   837
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   838
        boundingBox.setStyle("position", "relative");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   839
        selFilesButton.setStyles({width: "100%", height: "100%"});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   840
        contentBox.append(selFilesButton);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   841
        contentBox.append(flashContainer);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   842
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   843
        this._swfReference = new Y.SWF(flashContainer, this.get("swfURL"), params);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   844
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   845
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   846
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   847
    * Binds handlers to the UploaderFlash UI events and propagates attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   848
    * values to the Flash player.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   849
    * The propagation of initial values is set to occur once the Flash player
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   850
    * instance is ready (as indicated by the `swfReady` event.)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   851
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   852
    * @method bindUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   853
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   854
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   855
    bindUI : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   856
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   857
        this._swfReference.on("swfReady", function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   858
            this._setMultipleFiles();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   859
            this._setFileFilters();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   860
            this._triggerEnabled();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   861
            this._attachTabElements();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   862
            this.after("multipleFilesChange", this._setMultipleFiles, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   863
            this.after("fileFiltersChange", this._setFileFilters, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   864
            this.after("enabledChange", this._triggerEnabled, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   865
            this.after("tabElementsChange", this._attachTabElements);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   866
        }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   867
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   868
        this._swfReference.on("fileselect", this._updateFileList, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   869
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   870
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   871
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   872
        // this._swfReference.on("trace", function (ev) {console.log(ev.message);});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   873
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   874
        this._swfReference.on("mouseenter", function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   875
            this.fire("mouseenter");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   876
            this._setButtonClass("hover", true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   877
            if (this._buttonState === "down") {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   878
                this._setButtonClass("active", true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   879
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   880
        }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   881
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   882
        this._swfReference.on("mouseleave", function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   883
            this.fire("mouseleave");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   884
            this._setButtonClass("hover", false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   885
            this._setButtonClass("active", false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   886
        }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   887
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   888
        this._swfReference.on("mousedown", function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   889
            this.fire("mousedown");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   890
            this._buttonState = "down";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   891
            this._setButtonClass("active", true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   892
        }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   893
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   894
        this._swfReference.on("mouseup", function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   895
            this.fire("mouseup");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   896
            this._buttonState = "up";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   897
            this._setButtonClass("active", false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   898
        }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   899
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   900
        this._swfReference.on("click", function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   901
            this.fire("click");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   902
            this._buttonFocus = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   903
            this._setButtonClass("focus", true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   904
            Y.one("body").focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   905
            this._swfReference._swf.focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   906
        }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   907
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   908
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   909
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   910
    * Attaches keyboard bindings to enabling tabbing to and from the instance of the Flash
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   911
    * player in the Uploader widget. If the previous and next elements are specified, the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   912
    * keyboard bindings enable the user to tab from the `tabElements["from"]` node to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   913
    * Flash-powered "Select Files" button, and to the `tabElements["to"]` node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   914
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   915
    * @method _attachTabElements
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   916
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   917
    * @param ev {Event} Optional event payload if called as a `tabElementsChange` handler.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   918
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   919
    _attachTabElements : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   920
        if (this.get("tabElements") !== null && this.get("tabElements").from !== null && this.get("tabElements").to !== null) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   921
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   922
            if (this._tabElementBindings !== null) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   923
                this._tabElementBindings.from.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   924
                this._tabElementBindings.to.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   925
                this._tabElementBindings.tabback.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   926
                this._tabElementBindings.tabforward.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   927
                this._tabElementBindings.focus.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   928
                this._tabElementBindings.blur.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   929
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   930
            else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   931
                this._tabElementBindings = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   932
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   933
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   934
            var fromElement = Y.one(this.get("tabElements").from),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   935
                toElement = Y.one(this.get("tabElements").to);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   936
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   937
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   938
            this._tabElementBindings.from = fromElement.on("keydown", function (ev) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   939
                if (ev.keyCode === 9 && !ev.shiftKey) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   940
                    ev.preventDefault();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   941
                    this._swfReference._swf.setAttribute("tabindex", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   942
                    this._swfReference._swf.setAttribute("role", "button");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   943
                    this._swfReference._swf.setAttribute("aria-label", this.get("selectButtonLabel"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   944
                    this._swfReference._swf.focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   945
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   946
            }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   947
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   948
            this._tabElementBindings.to = toElement.on("keydown", function (ev) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   949
                if (ev.keyCode === 9 && ev.shiftKey) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   950
                    ev.preventDefault();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   951
                    this._swfReference._swf.setAttribute("tabindex", 0);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   952
                    this._swfReference._swf.setAttribute("role", "button");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   953
                    this._swfReference._swf.setAttribute("aria-label", this.get("selectButtonLabel"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   954
                    this._swfReference._swf.focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   955
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   956
            }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   957
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   958
            this._tabElementBindings.tabback = this._swfReference.on("tabback", function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   959
                this._swfReference._swf.blur();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   960
                setTimeout(function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   961
                    fromElement.focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   962
                }, 30);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   963
            }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   964
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   965
            this._tabElementBindings.tabforward = this._swfReference.on("tabforward", function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   966
                this._swfReference._swf.blur();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   967
                setTimeout(function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   968
                    toElement.focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   969
                }, 30);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   970
            }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   971
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   972
            this._tabElementBindings.focus = this._swfReference._swf.on("focus", function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   973
                this._buttonFocus = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   974
                this._setButtonClass("focus", true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   975
            }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   976
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   977
            this._tabElementBindings.blur = this._swfReference._swf.on("blur", function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   978
                this._buttonFocus = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   979
                this._setButtonClass("focus", false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   980
            }, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   981
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   982
        else if (this._tabElementBindings !== null) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   983
            this._tabElementBindings.from.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   984
            this._tabElementBindings.to.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   985
            this._tabElementBindings.tabback.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   986
            this._tabElementBindings.tabforward.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   987
            this._tabElementBindings.focus.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   988
            this._tabElementBindings.blur.detach();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   989
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   990
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   991
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   992
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   993
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   994
    * Adds or removes a specified state CSS class to the underlying uploader button.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   995
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   996
    * @method _setButtonClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   997
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   998
    * @param state {String} The name of the state enumerated in `buttonClassNames` attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   999
    * from which to derive the needed class name.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1000
    * @param add {Boolean} A Boolean indicating whether to add or remove the class.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1001
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1002
    _setButtonClass : function (state, add) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1003
        if (add) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1004
            this.get("selectFilesButton").addClass(this.get("buttonClassNames")[state]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1005
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1006
        else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1007
            this.get("selectFilesButton").removeClass(this.get("buttonClassNames")[state]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1008
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1009
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1010
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1011
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1012
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1013
    * Syncs the state of the `fileFilters` attribute between the instance of UploaderFlash
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1014
    * and the Flash player.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1015
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1016
    * @method _setFileFilters
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1017
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1018
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1019
    _setFileFilters : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1020
        if (this._swfReference && this.get("fileFilters").length > 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1021
            this._swfReference.callSWF("setFileFilters", [this.get("fileFilters")]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1022
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1023
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1024
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1025
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1026
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1027
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1028
    * Syncs the state of the `multipleFiles` attribute between this class
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1029
    * and the Flash uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1030
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1031
    * @method _setMultipleFiles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1032
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1033
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1034
    _setMultipleFiles : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1035
        if (this._swfReference) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1036
            this._swfReference.callSWF("setAllowMultipleFiles", [this.get("multipleFiles")]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1037
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1038
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1039
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1040
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1041
    * Syncs the state of the `enabled` attribute between this class
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1042
    * and the Flash uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1043
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1044
    * @method _triggerEnabled
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1045
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1046
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1047
    _triggerEnabled : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1048
        if (this.get("enabled")) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1049
            this._swfReference.callSWF("enable");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1050
            this._swfReference._swf.setAttribute("aria-disabled", "false");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1051
            this._setButtonClass("disabled", false);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1052
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1053
        else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1054
            this._swfReference.callSWF("disable");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1055
            this._swfReference._swf.setAttribute("aria-disabled", "true");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1056
            this._setButtonClass("disabled", true);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1057
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1058
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1059
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1060
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1061
    * Getter for the `fileList` attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1062
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1063
    * @method _getFileList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1064
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1065
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1066
    _getFileList : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1067
        return this._fileList.concat();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1068
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1069
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1070
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1071
    * Setter for the `fileList` attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1072
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1073
    * @method _setFileList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1074
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1075
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1076
    _setFileList : function (val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1077
        this._fileList = val.concat();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1078
        return this._fileList.concat();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1079
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1080
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1081
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1082
    * Adjusts the content of the `fileList` based on the results of file selection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1083
    * and the `appendNewFiles` attribute. If the `appendNewFiles` attribute is true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1084
    * then selected files are appended to the existing list; otherwise, the list is
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1085
    * cleared and populated with the newly selected files.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1086
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1087
    * @method _updateFileList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1088
    * @param ev {Event} The file selection event received from the uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1089
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1090
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1091
    _updateFileList : function (ev) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1092
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1093
        Y.one("body").focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1094
        this._swfReference._swf.focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1095
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1096
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1097
        var newfiles = ev.fileList,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1098
            fileConfObjects = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1099
            parsedFiles = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1100
            swfRef = this._swfReference,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1101
            filterFunc = this.get("fileFilterFunction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1102
            oldfiles;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1103
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1104
        Y.each(newfiles, function (value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1105
            var newFileConf = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1106
            newFileConf.id = value.fileId;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1107
            newFileConf.name = value.fileReference.name;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1108
            newFileConf.size = value.fileReference.size;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1109
            newFileConf.type = value.fileReference.type;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1110
            newFileConf.dateCreated = value.fileReference.creationDate;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1111
            newFileConf.dateModified = value.fileReference.modificationDate;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1112
            newFileConf.uploader = swfRef;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1113
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1114
            fileConfObjects.push(newFileConf);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1115
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1116
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1117
         if (filterFunc) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1118
            Y.each(fileConfObjects, function (value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1119
                var newfile = new Y.FileFlash(value);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1120
                if (filterFunc(newfile)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1121
                    parsedFiles.push(newfile);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1122
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1123
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1124
         }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1125
         else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1126
            Y.each(fileConfObjects, function (value) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1127
                parsedFiles.push(new Y.FileFlash(value));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1128
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1129
         }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1130
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1131
        if (parsedFiles.length > 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1132
            oldfiles = this.get("fileList");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1133
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1134
            this.set("fileList",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1135
                             this.get("appendNewFiles") ? oldfiles.concat(parsedFiles) : parsedFiles );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1136
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1137
            this.fire("fileselect", { fileList: parsedFiles });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1138
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1139
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1140
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1141
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1142
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1143
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1144
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1145
    * Handles and retransmits events fired by `Y.FileFlash` and `Y.Uploader.Queue`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1146
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1147
    * @method _uploadEventHandler
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1148
    * @param event The event dispatched during the upload process.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1149
    * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1150
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1151
    _uploadEventHandler : function (event) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1152
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1153
        switch (event.type) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1154
            case "file:uploadstart":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1155
                 this.fire("fileuploadstart", event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1156
                break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1157
            case "file:uploadprogress":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1158
                 this.fire("uploadprogress", event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1159
                break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1160
            case "uploaderqueue:totaluploadprogress":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1161
                 this.fire("totaluploadprogress", event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1162
                break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1163
            case "file:uploadcomplete":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1164
                 this.fire("uploadcomplete", event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1165
                break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1166
            case "uploaderqueue:alluploadscomplete":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1167
                 this.queue = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1168
                 this.fire("alluploadscomplete", event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1169
                break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1170
            case "file:uploaderror": //overflow intentional
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1171
            case "uploaderqueue:uploaderror":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1172
                 this.fire("uploaderror", event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1173
                break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1174
            case "file:uploadcancel": // overflow intentional
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1175
            case "uploaderqueue:uploadcancel":
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1176
                 this.fire("uploadcancel", event);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1177
            break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1178
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1179
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1180
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1181
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1182
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1183
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1184
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1185
    * Starts the upload of a specific file.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1186
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1187
    * @method upload
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1188
    * @param file {FileFlash} Reference to the instance of the file to be uploaded.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1189
    * @param url {String} The URL to upload the file to.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1190
    * @param [postVars] {Object} A set of key-value pairs to send as variables along with the file upload HTTP request.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1191
    *                          If not specified, the values from the attribute `postVarsPerFile` are used instead.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1192
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1193
    upload : function (file, url, postvars) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1194
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1195
        var uploadURL = url || this.get("uploadURL"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1196
            postVars = postvars || this.get("postVarsPerFile"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1197
            fileId = file.get("id");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1198
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1199
            postVars = postVars.hasOwnProperty(fileId) ? postVars[fileId] : postVars;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1200
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1201
        if (file instanceof Y.FileFlash) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1202
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1203
            file.on("uploadstart", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1204
            file.on("uploadprogress", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1205
            file.on("uploadcomplete", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1206
            file.on("uploaderror", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1207
            file.on("uploadcancel", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1208
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1209
            file.startUpload(uploadURL, postVars, this.get("fileFieldName"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1210
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1211
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1212
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1213
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1214
    * Starts the upload of all files on the file list, using an automated queue.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1215
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1216
    * @method uploadAll
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1217
    * @param url {String} The URL to upload the files to.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1218
    * @param [postVars] {Object} A set of key-value pairs to send as variables along with the file upload HTTP request.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1219
    *                          If not specified, the values from the attribute `postVarsPerFile` are used instead.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1220
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1221
    uploadAll : function (url, postvars) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1222
        this.uploadThese(this.get("fileList"), url, postvars);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1223
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1224
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1225
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1226
    * Starts the upload of the files specified in the first argument, using an automated queue.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1227
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1228
    * @method uploadThese
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1229
    * @param files {Array} The list of files to upload.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1230
    * @param url {String} The URL to upload the files to.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1231
    * @param [postVars] {Object} A set of key-value pairs to send as variables along with the file upload HTTP request.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1232
    *                          If not specified, the values from the attribute `postVarsPerFile` are used instead.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1233
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1234
    uploadThese : function (files, url, postvars) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1235
        if (!this.queue) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1236
            var uploadURL = url || this.get("uploadURL"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1237
                postVars = postvars || this.get("postVarsPerFile");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1238
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1239
            this.queue = new UploaderQueue({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1240
                simUploads: this.get("simLimit"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1241
                errorAction: this.get("errorAction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1242
                fileFieldName: this.get("fileFieldName"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1243
                fileList: files,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1244
                uploadURL: uploadURL,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1245
                perFileParameters: postVars,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1246
                retryCount: this.get("retryCount")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1247
            });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1248
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1249
            this.queue.on("uploadstart", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1250
            this.queue.on("uploadprogress", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1251
            this.queue.on("totaluploadprogress", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1252
            this.queue.on("uploadcomplete", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1253
            this.queue.on("alluploadscomplete", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1254
            this.queue.on("alluploadscancelled", function () {this.queue = null;}, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1255
            this.queue.on("uploaderror", this._uploadEventHandler, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1256
            this.queue.startUpload();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1257
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1258
            this.fire("uploadstart");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1259
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1260
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1261
},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1262
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1263
{
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1264
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1265
    * The template for the Flash player container. Since the Flash player container needs
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1266
    * to completely overlay the &lquot;Select Files&rqot; control, it's positioned absolutely,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1267
    * with width and height set to 100% of the parent.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1268
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1269
    * @property FLASH_CONTAINER
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1270
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1271
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1272
    * @default '<div id="{swfContainerId}" style="position:absolute; top:0px; left: 0px; margin: 0; padding: 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1273
    *           border: 0; width:100%; height:100%"></div>'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1274
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1275
    FLASH_CONTAINER: '<div id="{swfContainerId}" style="position:absolute; top:0px; left: 0px; margin: 0; ' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1276
                     'padding: 0; border: 0; width:100%; height:100%"></div>',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1277
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1278
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1279
    * The template for the "Select Files" button.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1280
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1281
    * @property SELECT_FILES_BUTTON
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1282
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1283
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1284
    * @default "<button type='button' class='yui3-button' tabindex='-1'>{selectButtonLabel}</button>"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1285
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1286
    SELECT_FILES_BUTTON: "<button type='button' class='yui3-button' tabindex='-1'>{selectButtonLabel}</button>",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1287
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1288
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1289
    * The static property reflecting the type of uploader that `Y.Uploader`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1290
    * aliases. The UploaderFlash value is `"flash"`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1291
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1292
    * @property TYPE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1293
    * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1294
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1295
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1296
    TYPE: "flash",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1297
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1298
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1299
    * The identity of the widget.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1300
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1301
    * @property NAME
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1302
    * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1303
    * @default 'uploader'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1304
    * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1305
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1306
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1307
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1308
    NAME: "uploader",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1309
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1310
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1311
    * Static property used to define the default attribute configuration of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1312
    * the Widget.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1313
    *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1314
    * @property ATTRS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1315
    * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1316
    * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1317
    * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1318
    */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1319
    ATTRS: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1320
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1321
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1322
        * A Boolean indicating whether newly selected files should be appended
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1323
        * to the existing file list, or whether they should replace it.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1324
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1325
        * @attribute appendNewFiles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1326
        * @type {Boolean}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1327
        * @default true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1328
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1329
        appendNewFiles : {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1330
            value: true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1331
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1332
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1333
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1334
        * The names of CSS classes that correspond to different button states
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1335
        * of the "Select Files" control. These classes are assigned to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1336
        * "Select Files" control based on the mouse states reported by the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1337
        * Flash player. The keys for the class names are:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1338
        * <ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1339
        *   <li> <strong>`hover`</strong>: the class corresponding to mouse hovering over
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1340
        *      the "Select Files" button.</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1341
        *   <li> <strong>`active`</strong>: the class corresponding to mouse down state of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1342
        *      the "Select Files" button.</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1343
        *   <li> <strong>`disabled`</strong>: the class corresponding to the disabled state
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1344
        *      of the "Select Files" button.</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1345
        *   <li> <strong>`focus`</strong>: the class corresponding to the focused state of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1346
        *      the "Select Files" button.</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1347
        * </ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1348
        * @attribute buttonClassNames
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1349
        * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1350
        * @default { hover: "yui3-button-hover",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1351
        *            active: "yui3-button-active",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1352
        *            disabled: "yui3-button-disabled",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1353
        *            focus: "yui3-button-selected"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1354
        *          }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1355
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1356
        buttonClassNames: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1357
            value: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1358
                "hover": "yui3-button-hover",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1359
                "active": "yui3-button-active",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1360
                "disabled": "yui3-button-disabled",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1361
                "focus": "yui3-button-selected"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1362
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1363
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1364
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1365
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1366
        * A Boolean indicating whether the uploader is enabled or disabled for user input.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1367
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1368
        * @attribute enabled
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1369
        * @type {Boolean}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1370
        * @default true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1371
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1372
        enabled : {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1373
            value: true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1374
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1375
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1376
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1377
        * The action  performed when an upload error occurs for a specific file being uploaded.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1378
        * The possible values are:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1379
        * <ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1380
        *   <li> <strong>`UploaderQueue.CONTINUE`</strong>: the error is ignored and the upload process is continued.</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1381
        *   <li> <strong>`UploaderQueue.STOP`</strong>: the upload process is stopped as soon as any other parallel file
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1382
        *     uploads are finished.</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1383
        *   <li> <strong>`UploaderQueue.RESTART_ASAP`</strong>: the file is added back to the front of the queue.</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1384
        *   <li> <strong>`UploaderQueue.RESTART_AFTER`</strong>: the file is added to the back of the queue.</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1385
        * </ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1386
        * @attribute errorAction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1387
        * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1388
        * @default UploaderQueue.CONTINUE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1389
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1390
        errorAction: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1391
            value: "continue",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1392
            validator: function (val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1393
                return (
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1394
                    val === UploaderQueue.CONTINUE ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1395
                    val === UploaderQueue.STOP ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1396
                    val === UploaderQueue.RESTART_ASAP ||
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1397
                    val === UploaderQueue.RESTART_AFTER
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1398
                );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1399
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1400
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1401
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1402
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1403
        * An array indicating what fileFilters should be applied to the file
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1404
        * selection dialog. Each element in the array should be an object with
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1405
        * the following key-value pairs:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1406
        * {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1407
        *   description : String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1408
         extensions: String of the form &lquot;*.ext1;*.ext2;*.ext3;...&rquot;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1409
        * }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1410
        * @attribute fileFilters
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1411
        * @type {Array}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1412
        * @default []
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1413
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1414
        fileFilters: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1415
            value: []
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1416
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1417
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1418
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1419
        * A filtering function that is applied to every file selected by the user.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1420
        * The function receives the `Y.File` object and must return a Boolean value.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1421
        * If a `false` value is returned, the file in question is not added to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1422
        * list of files to be uploaded.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1423
        * Use this function to put limits on file sizes or check the file names for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1424
        * correct extension, but make sure that a server-side check is also performed,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1425
        * since any client-side restrictions are only advisory and can be circumvented.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1426
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1427
        * @attribute fileFilterFunction
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1428
        * @type {Function}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1429
        * @default null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1430
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1431
        fileFilterFunction: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1432
            value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1433
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1434
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1435
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1436
        * A String specifying what should be the POST field name for the file
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1437
        * content in the upload request.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1438
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1439
        * @attribute fileFieldName
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1440
        * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1441
        * @default Filedata
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1442
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1443
        fileFieldName: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1444
            value: "Filedata"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1445
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1446
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1447
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1448
        * The array of files to be uploaded. All elements in the array
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1449
        * must be instances of `Y.FileFlash` and be instantiated with a `fileId`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1450
        * retrieved from an instance of the uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1451
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1452
        * @attribute fileList
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1453
        * @type {Array}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1454
        * @default []
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1455
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1456
        fileList: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1457
            value: [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1458
            getter: "_getFileList",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1459
            setter: "_setFileList"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1460
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1461
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1462
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1463
        * A Boolean indicating whether multiple file selection is enabled.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1464
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1465
        * @attribute multipleFiles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1466
        * @type {Boolean}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1467
        * @default false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1468
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1469
        multipleFiles: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1470
            value: false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1471
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1472
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1473
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1474
        * An object, keyed by `fileId`, containing sets of key-value pairs
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1475
        * that should be passed as POST variables along with each corresponding
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1476
        * file. This attribute is only used if no POST variables are specifed
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1477
        * in the upload method call.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1478
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1479
        * @attribute postVarsPerFile
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1480
        * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1481
        * @default {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1482
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1483
        postVarsPerFile: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1484
            value: {}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1485
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1486
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1487
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1488
        * The label for the "Select Files" widget. This is the value that replaces the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1489
        * `{selectButtonLabel}` token in the `SELECT_FILES_BUTTON` template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1490
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1491
        * @attribute selectButtonLabel
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1492
        * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1493
        * @default "Select Files"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1494
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1495
        selectButtonLabel: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1496
            value: "Select Files"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1497
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1498
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1499
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1500
        * The widget that serves as the "Select Files" control for the file uploader
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1501
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1502
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1503
        * @attribute selectFilesButton
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1504
        * @type {Node | Widget}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1505
        * @default A standard HTML button with YUI CSS Button skin.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1506
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1507
        selectFilesButton : {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1508
            valueFn: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1509
                return Y.Node.create(substitute(Y.UploaderFlash.SELECT_FILES_BUTTON, {selectButtonLabel: this.get("selectButtonLabel")}));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1510
             }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1511
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1512
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1513
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1514
        * The number of files that can be uploaded
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1515
        * simultaneously if the automatic queue management
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1516
        * is used. This value can be in the range between 2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1517
        * and 5.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1518
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1519
        * @attribute simLimit
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1520
        * @type {Number}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1521
        * @default 2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1522
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1523
        simLimit: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1524
            value: 2,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1525
            validator: function (val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1526
                    return (val >= 2 && val <= 5);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1527
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1528
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1529
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1530
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1531
        * The URL to the SWF file of the flash uploader. A copy local to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1532
        * the server that hosts the page on which the uploader appears is
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1533
        * recommended.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1534
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1535
        * @attribute swfURL
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1536
        * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1537
        * @default "flashuploader.swf" with a
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1538
        * random GET parameter for IE (to prevent buggy behavior when the SWF
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1539
        * is cached).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1540
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1541
        swfURL: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1542
            valueFn: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1543
                var prefix = "flashuploader.swf";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1544
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1545
                if (Y.UA.ie > 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1546
                    return (prefix + "?t=" + Y.guid("uploader"));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1547
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1548
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1549
                return prefix;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1550
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1551
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1552
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1553
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1554
        * The id's or `Node` references of the DOM elements that precede
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1555
        * and follow the `Select Files` button in the tab order. Specifying
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1556
        * these allows keyboard navigation to and from the Flash player
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1557
        * layer of the uploader.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1558
        * The two keys corresponding to the DOM elements are:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1559
        <ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1560
        *   <li> `from`: the id or the `Node` reference corresponding to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1561
        *     DOM element that precedes the `Select Files` button in the tab order.</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1562
        *   <li> `to`: the id or the `Node` reference corresponding to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1563
        *     DOM element that follows the `Select Files` button in the tab order.</li>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1564
        * </ul>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1565
        * @attribute tabElements
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1566
        * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1567
        * @default null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1568
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1569
        tabElements: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1570
            value: null
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1571
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1572
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1573
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1574
        * The URL to which file upload requested are POSTed. Only used if a different url is not passed to the upload method call.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1575
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1576
        * @attribute uploadURL
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1577
        * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1578
        * @default ""
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1579
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1580
        uploadURL: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1581
            value: ""
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1582
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1583
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1584
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1585
        * The number of times to try re-uploading a file that failed to upload before
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1586
        * cancelling its upload.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1587
        *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1588
        * @attribute retryCount
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1589
        * @type {Number}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1590
        * @default 3
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1591
        */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1592
        retryCount: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1593
            value: 3
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1594
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1595
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1596
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1597
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1598
Y.UploaderFlash.Queue = UploaderQueue;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1599
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1600
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1601
}, '@VERSION@', {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1602
    "requires": [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1603
        "swfdetect",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1604
        "escape",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1605
        "widget",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1606
        "base",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1607
        "cssbutton",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1608
        "node",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1609
        "event-custom",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1610
        "uploader-queue"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1611
    ]
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
  1612
});