To participate you must create an account on apostrophenow.org. If you have already done so, click Login.

Changeset 4556 for plugins

Show
Ignore:
Timestamp:
02/07/12 17:12:53 (3 months ago)
Author:
wjohnald
Message:

Wrote an ajax queuing mechanism for the uploader using jQuery deferred objects. Wrote a file handler that was properly reviewed by Tom. Need to flesh out the controller action to add to the media library

Location:
plugins/apostropheMediaEnhancementsPlugin/trunk
Files:
3 added
3 modified

Legend:

Unmodified
Added
Removed
  • plugins/apostropheMediaEnhancementsPlugin/trunk/lib/action/BaseaEnhancedMediaActions.class.php

    r4551 r4556  
    1212        if ($request->getMethod() == "POST") 
    1313        { 
    14             if (isset($_GET['aFile'])) { 
    15                 $this->file = new qqUploadedFileXhr(); 
    16             } elseif (isset($_FILES['aFile'])) { 
    17                 $this->file = new qqUploadedFileForm(); 
    18             } 
     14            $files = aEnhancedMediaTools::getInstance()->handleHtml5Upload($request); 
    1915 
    20             var_dump($this->file); 
     16            var_dump($files); 
     17            die; 
    2118        } 
    2219    } 
  • plugins/apostropheMediaEnhancementsPlugin/trunk/modules/aMedia/templates/html5UploadSuccess.php

    r4551 r4556  
    11<h1>Drag and Drop Upload!  -- REMIX</h1> 
    22 
    3 <form> 
    4     <input id="fileupload" type="file" name="aFile[]" multiple> 
     3<form enctype="multipart/form-data" method="POST" action="/admin/media/html5Upload"> 
     4    <?php /*<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo ini_get('upload_max_filesize') ?>" /> */ ?> 
     5    <input id="fileupload" type="file" name="aFile[]" multiple /> 
     6    <input type="submit" /> 
    57</form> 
    68 
     
    1921    $('#fileupload').aFileUploader({ 
    2022        'dragenter': function () { console.log("dragenter"); }, 
    21         'dragleave': function () { console.log("dragleave"); }, 
    22         'invalidFile': function (file) { console.log(file.name + " is invalid."); }, 
    23         'ajaxTransferSuccess': function(data) { console.log(data); } 
     23        'dragleave': function () { console.log("dragleave"); } 
     24        //'invalidFile': function (file) { console.log(file.name + " is invalid."); }, 
     25        //'ajaxTransferSuccess': function(data) { console.log(data); } 
    2426    }); 
    2527}); 
  • plugins/apostropheMediaEnhancementsPlugin/trunk/web/js/apostrophe.html5.uploader.js

    r4551 r4556  
    1414            "name": "aFile", 
    1515            "url": "/admin/media/html5Upload", 
     16            "maxAjaxUploads": 1, 
    1617 
    1718            // Drag handlers 
     
    5657                $input.bind("change", function () { 
    5758                    handleFiles(this.files); 
     59                    //$input.closest('form').submit(); 
    5860                }); 
    5961            } else { 
     
    7072            function handleFiles(files) 
    7173            { 
     74                var requests = []; 
     75                 
    7276                for (var i = 0; i < files.length; i++) { 
    7377 
     
    7579 
    7680                    if (file.size > 0) { 
    77                         upload(file); 
     81                        requests.push(upload(file)); 
    7882                    } 
    7983                    else 
     
    8690 
    8791                } 
     92 
     93                function executeNextRequest() { 
     94                    var req = requests.shift(); 
     95 
     96                    if (typeof(req) == 'function') { 
     97                        $.when(req()).then(function(){ executeNextRequest();}); 
     98                    } 
     99                } 
     100 
     101                for (var i = 0; i < defaults.maxAjaxUploads; i++) 
     102                { 
     103                    executeNextRequest(); 
     104                } 
    88105            } 
    89106 
     
    119136            function upload(file) 
    120137            { 
     138                // deferred object will allow us to chain events based on resolution of ajax 
     139                var deferred = $.Deferred(); 
     140                var aSendFunction; 
     141 
    121142                // xmlHttpRequest is the easiest way to deal with posting data 
    122143                var xmlHttpRequest = new XMLHttpRequest(); 
     
    133154                            } 
    134155                        } 
     156                        deferred.resolve(); 
    135157                    } 
    136158                } 
     
    142164                if (window.FileReader) { // Firefox and Chrome 
    143165                    var fileReader = new FileReader; 
     166 
     167                    var aSendFunction = null; 
    144168 
    145169                    // attach events to the FileReader 
     
    181205 
    182206                        xmlHttpRequest.setRequestHeader("Content-Type", "multipart/form-data;boundary=" + boundary); 
    183                         xmlHttpRequest.sendAsBinary(data); 
     207 
     208                        aSendFunction = function() { 
     209                            xmlHttpRequest.sendAsBinary(data); 
     210 
     211                            return deferred.promise(); 
     212                        } 
    184213                    } else if (window.FormData) { // Chrome 
    185214                        var formData = new FormData(); 
    186215                        formData.append(defaults.name, file); 
    187                         xmlHttpRequest.send(formData); 
     216 
     217                        aSendFunction = function() { 
     218                            xmlHttpRequest.send(formData); 
     219 
     220                            return deferred.promise(); 
     221                        } 
    188222                    } 
    189223                } else if (window.FormData) { // Safari 
    190224                    var formData = new FormData(); 
    191225                    formData.append(defaults.name, file); 
    192                     xmlHttpRequest.send(formData); 
    193                 } 
     226 
     227                    aSendFunction = function() { 
     228                        xmlHttpRequest.send(formData); 
     229 
     230                        return deferred.promise(); 
     231                    } 
     232 
     233                } 
     234 
     235                return aSendFunction; 
    194236            } 
    195237        });