client/js/uploader.basic.api.js
function(spec) {
            var self = this,
                acceptFiles = spec.accept || this._options.validation.acceptFiles,
                allowedExtensions = spec.allowedExtensions || this._options.validation.allowedExtensions,
                button;

            function allowMultiple() {
                if (qq.supportedFeatures.ajaxUploading) {
                    // Workaround for bug in iOS7+ (see #1039)
                    if (self._options.workarounds.iosEmptyVideos &&
                        qq.ios() &&
                        !qq.ios6() &&
                        self._isAllowedExtension(allowedExtensions, ".mov")) {

                        return false;
                    }

                    if (spec.multiple === undefined) {
                        return self._options.multiple;
                    }

                    return spec.multiple;
                }

                return false;
            }

            button = new qq.UploadButton({
                acceptFiles: acceptFiles,
                element: spec.element,
                focusClass: this._options.classes.buttonFocus,
                folders: spec.folders,
                hoverClass: this._options.classes.buttonHover,
                ios8BrowserCrashWorkaround: this._options.workarounds.ios8BrowserCrash,
                multiple: allowMultiple(),
                name: this._options.request.inputName,
                onChange: function(input) {
                    self._onInputChange(input);
                },
                title: spec.title == null ? this._options.text.fileInputTitle : spec.title
            });

            this._disposeSupport.addDisposer(function() {
                button.dispose();
            });

            self._buttons.push(button);

            return button;
        }
function(spec) {
            var self = this,
                acceptFiles = spec.accept || this._options.validation.acceptFiles,
                allowedExtensions = spec.allowedExtensions || this._options.validation.allowedExtensions,
                button;

            function allowMultiple() {
                if (qq.supportedFeatures.ajaxUploading) {
                    // Workaround for bug in iOS7+ (see #1039)
                    if (self._options.workarounds.iosEmptyVideos &&
                        qq.ios() &&
                        !qq.ios6() &&
                        self._isAllowedExtension(allowedExtensions, ".mov")) {

                        return false;
                    }

                    if (spec.multiple === undefined) {
                        return self._options.multiple;
                    }

                    return spec.multiple;
                }

                return false;
            }

            button = new qq.UploadButton({
                acceptFiles: acceptFiles,
                element: spec.element,
                focusClass: this._options.classes.buttonFocus,
                folders: spec.folders,
                hoverClass: this._options.classes.buttonHover,
                ios8BrowserCrashWorkaround: this._options.workarounds.ios8BrowserCrash,
                multiple: allowMultiple(),
                name: this._options.request.inputName,
                onChange: function(input) {
                    self._onInputChange(input);
                },
                title: spec.title == null ? this._options.text.fileInputTitle : spec.title
            });

            this._disposeSupport.addDisposer(function() {
                button.dispose();
            });

            self._buttons.push(button);

            return button;
        }
function ( spec ) { var self = this , acceptFiles = spec . accept || this . _options . validation . acceptFiles , allowedExtensions = spec . allowedExtensions || this . _options . validation . allowedExtensions , button ; function allowMultiple ( ) { if ( qq . supportedFeatures . ajaxUploading ) { // Workaround for bug in iOS7+ (see #1039) if ( self . _options . workarounds . iosEmptyVideos && qq . ios ( ) && ! qq . ios6 ( ) && self . _isAllowedExtension ( allowedExtensions , ".mov" ) ) { return false ; } if ( spec . multiple === undefined ) { return self . _options . multiple ; } return spec . multiple ; } return false ; } button = new qq . UploadButton ( { acceptFiles : acceptFiles , element : spec . element , focusClass : this . _options . classes . buttonFocus , folders : spec . folders , hoverClass : this . _options . classes . buttonHover , ios8BrowserCrashWorkaround : this . _options . workarounds . ios8BrowserCrash , multiple : allowMultiple ( ) , name : this . _options . request . inputName , onChange : function ( input ) { self . _onInputChange ( input ) ; } , title : spec . title == null ? this . _options . text . fileInputTitle : spec . title } ) ; this . _disposeSupport . addDisposer ( function ( ) { button . dispose ( ) ; } ) ; self . _buttons . push ( button ) ; return button ; }
Generate a tracked upload button.

@param spec Object containing a required `element` property
along with optional `multiple`, `accept`, and `folders`.
@returns {qq.UploadButton}
@private
Generate a tracked upload button .