AutorÃa | Ultima modificación | Ver Log |
YUI.add('file-flash', function (Y, NAME) {/*** The FileFlash class provides a wrapper for a file pointer stored in Flash. The File wrapper* also implements the mechanics for uploading a file and tracking its progress.* @module file-flash*//*** The class provides a wrapper for a file pointer in Flash.* @class FileFlash* @extends Base* @constructor* @param {Object} config Configuration object.*/var FileFlash = function(o) {FileFlash.superclass.constructor.apply(this, arguments);};Y.extend(FileFlash, Y.Base, {/*** Construction logic executed during FileFlash instantiation.** @method initializer* @protected*/initializer : function (cfg) {if (!this.get("id")) {this._set("id", Y.guid("file"));}},/*** Handler of events dispatched by the Flash player.** @method _swfEventHandler* @param {Event} event The event object received from the Flash player.* @protected*/_swfEventHandler: function (event) {if (event.id === this.get("id")) {switch (event.type) {/*** Signals that this file's upload has started.** @event uploadstart* @param event {Event} The event object for the `uploadstart` with the* following payload:* <dl>* <dt>uploader</dt>* <dd>The Y.SWF instance of Flash uploader that's handling the upload.</dd>* </dl>*/case "uploadstart":this.fire("uploadstart", {uploader: this.get("uploader")});break;case "uploadprogress":/*** Signals that progress has been made on the upload of this file.** @event uploadprogress* @param event {Event} The event object for the `uploadprogress` with the* following payload:* <dl>* <dt>originEvent</dt>* <dd>The original event fired by the Flash uploader instance.</dd>* <dt>bytesLoaded</dt>* <dd>The number of bytes of the file that has been uploaded.</dd>* <dt>bytesTotal</dt>* <dd>The total number of bytes in the file (the file size)</dd>* <dt>percentLoaded</dt>* <dd>The fraction of the file that has been uploaded, out of 100.</dd>* </dl>*/this.fire("uploadprogress", {originEvent: event,bytesLoaded: event.bytesLoaded,bytesTotal: event.bytesTotal,percentLoaded: Math.min(100, Math.round(10000*event.bytesLoaded/event.bytesTotal)/100)});this._set("bytesUploaded", event.bytesLoaded);break;case "uploadcomplete":/*** Signals that this file's upload has completed, but data has not yet been received from the server.** @event uploadfinished* @param event {Event} The event object for the `uploadfinished` with the* following payload:* <dl>* <dt>originEvent</dt>* <dd>The original event fired by the Flash player instance.</dd>* </dl>*/this.fire("uploadfinished", {originEvent: event});break;case "uploadcompletedata":/*** Signals that this file's upload has completed and data has been received from the server.** @event uploadcomplete* @param event {Event} The event object for the `uploadcomplete` with the* following payload:* <dl>* <dt>originEvent</dt>* <dd>The original event fired by the Flash player instance.</dd>* <dt>data</dt>* <dd>The data returned by the server.</dd>* </dl>*/this.fire("uploadcomplete", {originEvent: event,data: event.data});break;case "uploadcancel":/*** Signals that this file's upload has been cancelled.** @event uploadcancel* @param event {Event} The event object for the `uploadcancel` with the* following payload:* <dl>* <dt>originEvent</dt>* <dd>The original event fired by the Flash player instance.</dd>* </dl>*/this.fire("uploadcancel", {originEvent: event});break;case "uploaderror":/*** Signals that this file's upload has encountered an error.** @event uploaderror* @param event {Event} The event object for the `uploaderror` with the* following payload:* <dl>* <dt>originEvent</dt>* <dd>The original event fired by the Flash player instance.</dd>* <dt>status</dt>* <dd>The status code reported by the Flash Player. If it's an HTTP error,* then this corresponds to the HTTP status code received by the uploader.</dd>* <dt>statusText</dt>* <dd>The text of the error event reported by the Flash Player.</dd>* <dt>source</dt>* <dd>Either "http" (if it's an HTTP error), or "io" (if it's a network transmission* error.)</dd>* </dl>*/this.fire("uploaderror", {originEvent: event, status: event.status, statusText: event.message, source: event.source});}}},/*** Starts the upload of a specific file.** @method startUpload* @param url {String} The URL to upload the file to.* @param parameters {Object} (optional) A set of key-value pairs to send as variables along with the file upload HTTP request.* @param fileFieldName {String} (optional) The name of the POST variable that should contain the uploaded file ('Filedata' by default)*/startUpload: function(url, parameters, fileFieldName) {if (this.get("uploader")) {var myUploader = this.get("uploader"),fileField = fileFieldName || "Filedata",id = this.get("id"),params = parameters || null;this._set("bytesUploaded", 0);myUploader.on("uploadstart", this._swfEventHandler, this);myUploader.on("uploadprogress", this._swfEventHandler, this);myUploader.on("uploadcomplete", this._swfEventHandler, this);myUploader.on("uploadcompletedata", this._swfEventHandler, this);myUploader.on("uploaderror", this._swfEventHandler, this);myUploader.callSWF("upload", [id, url, params, fileField]);}},/*** Cancels the upload of a specific file, if currently in progress.** @method cancelUpload*/cancelUpload: function () {if (this.get("uploader")) {this.get("uploader").callSWF("cancel", [this.get("id")]);this.fire("uploadcancel");}}}, {/*** The identity of the class.** @property NAME* @type String* @default 'file'* @readOnly* @protected* @static*/NAME: 'file',/*** The type of transport.** @property TYPE* @type String* @default 'flash'* @readOnly* @protected* @static*/TYPE: "flash",/*** Static property used to define the default attribute configuration of* the File.** @property ATTRS* @type {Object}* @protected* @static*/ATTRS: {/*** A String containing the unique id of the file wrapped by the FileFlash instance.* The id is supplied by the Flash player uploader.** @attribute id* @type {String}* @initOnly*/id: {writeOnce: "initOnly",value: null},/*** The size of the file wrapped by FileFlash. This value is supplied by the Flash player uploader.** @attribute size* @type {Number}* @initOnly*/size: {writeOnce: "initOnly",value: 0},/*** The name of the file wrapped by FileFlash. This value is supplied by the Flash player uploader.** @attribute name* @type {String}* @initOnly*/name: {writeOnce: "initOnly",value: null},/*** The date that the file wrapped by FileFlash was created on. This value is supplied by the Flash player uploader.** @attribute dateCreated* @type {Date}* @initOnly*/dateCreated: {writeOnce: "initOnly",value: null},/*** The date that the file wrapped by FileFlash was last modified on. This value is supplied by the Flash player uploader.** @attribute dateModified* @type {Date}* @initOnly*/dateModified: {writeOnce: "initOnly",value: null},/*** The number of bytes of the file that has been uploaded to the server. This value is* non-zero only while a file is being uploaded.** @attribute bytesUploaded* @type {Date}* @readOnly*/bytesUploaded: {readOnly: true,value: 0},/*** The type of the file wrapped by FileFlash. This value is provided by the Flash player* uploader.** @attribute type* @type {String}* @initOnly*/type: {writeOnce: "initOnly",value: null},/*** The instance of Y.SWF wrapping the Flash player uploader associated with this file.** @attribute uploder* @type {SWF}* @initOnly*/uploader: {writeOnce: "initOnly",value: null}}});Y.FileFlash = FileFlash;}, '3.18.1', {"requires": ["base"]});