Просмотр исходного кода

Merge branch 'master' of https://github.com/unaio/una

AntonLV 8 лет назад
Родитель
Сommit
005a283f33

+ 8 - 0
inc/classes/BxDolUploader.php

@@ -415,6 +415,14 @@ abstract class BxDolUploader extends BxDolFactory
         return $sTextRestrictions;
     }
 
+    protected function getMaxUploadFileSize ()
+    {
+        $oStorage = BxDolStorage::getObjectInstance($this->_sStorageObject);
+        if (!$oStorage)
+            return 0;
+        return $oStorage->getMaxUploadFileSize(bx_get_logged_profile_id());
+    }
+
     protected function getGhostTemplateVars($aFile, $iProfileId, $iContentId, $oStorage, $oImagesTranscoder)
     {
         return array();

+ 26 - 37
inc/js/classes/BxDolUploader.js

@@ -256,10 +256,10 @@ function BxDolUploaderHTML5 (sUploaderObject, sStorageObject, sUniqId, options)
         if (null != this._uploader)
             this._uploader = null;
 
-        var _options = {            
-            element: $('#' + this._sDivId).get(0),
-            action: sUrlRoot + 'storage_uploader.php',
-            multiple: $this.isMultiple(),
+        var _options = {
+            url: sUrlRoot + 'storage_uploader.php',
+            uploadMultiple: false,
+            maxFiles: $this.isMultiple() ? 50 : 1,
             params: {
                 uo: this._sUploaderObject,
                 so: this._sStorageObject,
@@ -269,36 +269,24 @@ function BxDolUploaderHTML5 (sUploaderObject, sStorageObject, sUniqId, options)
                 p: this._isPrivate,
                 a: "upload"
             },
-            onSubmit: function(id, fileName){
-                $this.onBeforeUpload('');
-            },
-            onProgress: function(id, fileName, loaded, total){
-                $this.onProgress({
-                    id: id, 
-                    fileName: fileName, 
-                    loaded: loaded, 
-                    total: total
-                });
-            },
-            onComplete: function(id, fileName, responseJSON){
-                $this.onUploadCompleted('');
-            },
-
-            onCancel: function(id, fileName){
-                $this.onUploadCompleted(_t('_sys_uploader_upload_canceled'));
-            },
-
-            messages: {
-                onLeave: _t('_sys_uploader_confirm_leaving_page')
-            },
-
-            showMessage: function(message){ 
-                $this._showError(message, true); 
-            }
-
         };
-        qq.extend(_options, o);
-        this._uploader = new qq.FileUploader(_options);
+
+        this._uploader = new Dropzone('#' + this._sDivId, $.extend({}, _options, o));
+        
+        this._uploader.on('queuecomplete', function (file) {
+            $this.onUploadCompleted('');
+        });
+        this._uploader.on('addedfile', function (file) {
+            $this.onBeforeUpload('');
+        });        
+        this._uploader.on('totaluploadprogress', function (uploadProgress) {
+            $this.onProgress({
+                total: uploadProgress
+            });
+        });
+        this._uploader.on('error', function (oFile, sErrorMsg) {
+            $this._showError(sErrorMsg, true); 
+        });
     }
 
     this.onUploadCompleted = function (sErrorMsg) {        
@@ -306,17 +294,18 @@ function BxDolUploaderHTML5 (sUploaderObject, sStorageObject, sUniqId, options)
         if (sErrorMsg.length)
             this._showError(sErrorMsg);        
         
-        if (0 == this._uploader.getInProgress()) {
+        if (0 == this._uploader.getQueuedFiles().length && 0 == this._uploader.getUploadingFiles().length) {
             this._isUploadsInProgress = false;
             this.restoreGhosts();
-            if (!this._isErrorShown)
+            if (!this._isErrorShown) {
                 $('#' + this._sPopupContainerId).dolPopupHide({});
+                this._uploader.removeAllFiles();
+            }
         }
     }
 
     this.cancelAll = function () {
-        this._uploader._handler.cancelAll();
-        $('#' + this._sFormContainerId + ' .' + this._uploader._options.classes.list).html('');        
+        this._uploader.removeAllFiles(true);
     }
 
     this.onBeforeUpload = function (params) {

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
plugins_public/dropzone/dropzone.min.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
plugins_public/dropzone/dropzone.min.js


+ 1 - 0
template/css/general.css

@@ -334,4 +334,5 @@
         display: block;
         text-align: center;
     }
+}
 

+ 12 - 6
template/scripts/BxBaseUploaderHTML5.php

@@ -31,7 +31,10 @@ class BxBaseUploaderHTML5 extends BxDolUploader
     public function addCssJs ()
     {
         parent::addCssJs ();
-        $this->_oTemplate->addJs('fileuploader.js');
+        $this->_oTemplate->addJs('dropzone/dropzone.min.js');
+        $this->_oTemplate->addCss(array(
+            BX_DIRECTORY_PATH_PLUGINS_PUBLIC . 'dropzone/|dropzone.min.css',
+        ));
     }
 
     /**
@@ -61,6 +64,7 @@ class BxBaseUploaderHTML5 extends BxDolUploader
             'div_id' => $this->_sDivId,
             'content_id' => $iContentId,
             'storage_private' => $isPrivate,
+            'max_file_size' => $this->getMaxUploadFileSize(),
         ));
     }
 
@@ -76,15 +80,17 @@ class BxBaseUploaderHTML5 extends BxDolUploader
         if (!$isMultiple)
             $this->deleteGhostsForProfile($iProfileId, $iContentId);
 
-        if (bx_get('qqfile'))
-            $iId = $oStorage->storeFileFromXhr(bx_get('qqfile'), $bPrivate, $iProfileId, $iContentId);
-        else
-            $iId = $oStorage->storeFileFromForm($_FILES['qqfile'], $bPrivate, $iProfileId, $iContentId);
+        if (bx_get('file')) {
+            $iId = $oStorage->storeFileFromXhr(bx_get('file'), $bPrivate, $iProfileId, $iContentId);
+        } 
+        else {
+            $iId = $oStorage->storeFileFromForm($_FILES['file'], $bPrivate, $iProfileId, $iContentId);
+        }
 
         if ($iId) {
             $aResponse = array ('success' => 1);
         } else {
-            $this->appendUploadErrorMessage(_t('_sys_uploader_err_msg', isset($_FILES['qqfile']['name']) ? $_FILES['qqfile']['name'] : bx_get('qqfile'), $oStorage->getErrorString()));
+            $this->appendUploadErrorMessage(_t('_sys_uploader_err_msg', isset($_FILES['file']['name']) ? $_FILES['file']['name'] : bx_get('file'), $oStorage->getErrorString()));
             $aResponse = array ('error' => $this->getUploadErrorMessages());
         }
 

+ 6 - 36
template/uploader_form_html5.html

@@ -1,43 +1,13 @@
 <div id="__form_container_id__" class="bx-uploader-form-cont bx-popup-width">
     <div class="bx-def-padding-sec-bottom">__restrictions_text__</div>
-    <div id="__errors_container_id__"></div>
-    <div id="__div_id__"></div>
+    <div id="__div_id__" class="dropzone" style="overflow-y:scroll;"></div>
+
+    <div class="bx-uploader-html5 bx-def-margin-top bx-clearfix">
+        <div class="bx-btn" onclick="__uploader_instance_name__.onClickCancel()"><bx_text:_sys_uploader_close /></div>
+    </div>
 </div>
 <script>
     __uploader_instance_name__.initUploader({
-        template: '<div class="bx-uploader-html5">' + 
-                '<ul class="bx-uploader-html5-list bx-def-margin-bottom"></ul>' +
-                '<div class="bx-btn bx-btn-primary bx-uploader-html5-button bx-def-margin-sec-right"><bx_text_js:_sys_uploader_html5_shoose_file /></div>' + 
-                '<div class="bx-btn" onclick="__uploader_instance_name__.onClickCancel()"><bx_text:_sys_uploader_close /></div>' + 
-                '<div class="bx-clear">&nbsp;</div>' +  
-                '<div class="bx-uploader-html5-drop-area bx-def-margin-sec-top bx-def-z-index-front"><bx_text_js:_sys_uploader_html5_drop_area /></div>' +
-             '</div>',
-
-        // template for one item in file list
-        fileTemplate: '<li>' +
-                '<span class="bx-uploader-html5-file"></span>' +
-                '<span class="bx-uploader-html5-spinner"></span>' +
-                '<span class="bx-uploader-html5-size"></span>' +
-                '<a class="bx-uploader-html5-cancel" href="#"><bx_text_js:_Cancel /></a>' +
-                '<span class="bx-uploader-html5-failed-text"><bx_text_js:_Failed /></span>' +
-            '</li>',
-        
-        classes: {
-            // used to get elements from templates
-            button: 'bx-uploader-html5-button',
-            drop: 'bx-uploader-html5-drop-area',
-            dropActive: 'bx-uploader-html5-drop-area-active',
-            list: 'bx-uploader-html5-list',
-                        
-            file: 'bx-uploader-html5-file',
-            spinner: 'bx-uploader-html5-spinner',
-            size: 'bx-uploader-html5-size',
-            cancel: 'bx-uploader-html5-cancel',
-
-            // added to list item when upload completes
-            // used in css to hide progress spinner
-            success: 'bx-uploader-html5-success',
-            fail: 'bx-uploader-html5-fail'
-        }
+        'maxFilesize': __max_file_size__/1024.0/1024.0,
     });
 </script>

Некоторые файлы не были показаны из-за большого количества измененных файлов