Browse Source

Updates to release v4.3.9 fixes #863 fixes #887

Kartik Visweswaran 8 years ago
parent
commit
c71dda1b69

+ 11 - 8
CHANGE.md

@@ -3,14 +3,17 @@ Change Log: `bootstrap-fileinput`
 
 
 ## version 4.3.9
 ## version 4.3.9
 
 
-**Date:** 01-Mar-2017 (_under development_)
-
-1. (enh #881): Update Spanish Translations.
-2. (bug #882): Correct image resize validation.
-3. (enh #875): Reset form based events more correctly to allow multiple bootstrap file inputs within forms.
-4. (bug #885): Correct validation for `allowedFileTypes`. 
-5. (enh #886): Append zoom modal dialog to `body` element if available to avoid multiple BS modals conflict. 
-6. Enhance events like `fileclear` and `filepreajax` to be aborted via `event.preventDefault()`.
+**Date:** 02-Mar-2017 (_under development_)
+
+1. (enh #863): New plugin method `zoom` with parameter `frameId` to allow custom triggering of zoomed preview for each thumbnail frame.
+2. (enh #881): Update Spanish Translations.
+3. (bug #882): Correct image resize validation.
+4. (enh #875): Reset form based events more correctly to allow multiple bootstrap file inputs within forms.
+5. (bug #885): Correct validation for `allowedFileTypes`. 
+6. (enh #886): Append zoom modal dialog to `body` element if available to avoid multiple BS modals conflict. 
+7. Enhance events like `fileclear` and `filepreajax` to be aborted via `event.preventDefault()`.
+8. (enh #887): New properties `msgUploadBegin` and `msgUploadEnd` to display a better progress status. The `layoutTemplates.progress` will support a new token `{status}`.
+9. Enhance uploaded thumb frames to not reset or change the frame identifier after successful upload.
 
 
 ## version 4.3.8
 ## version 4.3.8
 
 

+ 33 - 23
js/fileinput.js

@@ -69,11 +69,11 @@
             div.parentNode.removeChild(div);
             div.parentNode.removeChild(div);
             return status;
             return status;
         },
         },
-        handler: function ($el, event, callback, skipReset, skipNS) {
+        handler: function ($el, event, callback, namespace, skipReset, skipNS) {
             if (!$el || !$el.length) {
             if (!$el || !$el.length) {
                 return;
                 return;
             }
             }
-            var ev = skipNS ? event : event.split(' ').join($h.NAMESPACE + ' ') + $h.NAMESPACE;
+            var ns = namespace || $h.NAMESPACE, ev = skipNS ? event : event.split(' ').join(ns + ' ') + ns;
             if (!skipReset) {
             if (!skipReset) {
                 $el.off(ev);
                 $el.off(ev);
             }
             }
@@ -376,7 +376,7 @@
             tProgress = '<div class="progress">\n' +
             tProgress = '<div class="progress">\n' +
                 '    <div class="{class}" role="progressbar"' +
                 '    <div class="{class}" role="progressbar"' +
                 ' aria-valuenow="{percent}" aria-valuemin="0" aria-valuemax="100" style="width:{percent}%;">\n' +
                 ' aria-valuenow="{percent}" aria-valuemin="0" aria-valuemax="100" style="width:{percent}%;">\n' +
-                '        {percent}%\n' +
+                '        {status}\n' +
                 '     </div>\n' +
                 '     </div>\n' +
                 '</div>';
                 '</div>';
             tSize = ' <samp>({sizeText})</samp>';
             tSize = ' <samp>({sizeText})</samp>';
@@ -986,7 +986,7 @@
             }
             }
         },
         },
         _listen: function () {
         _listen: function () {
-            var self = this, $el = self.$element, $form = self.$form, $cont = self.$container;
+            var self = this, $el = self.$element, $form = self.$form, $cont = self.$container, n = '.' + $el.attr('id');
             $h.handler($el, 'change', $.proxy(self._change, self));
             $h.handler($el, 'change', $.proxy(self._change, self));
             if (self.showBrowse) {
             if (self.showBrowse) {
                 $h.handler(self.$btnFile, 'click', $.proxy(self._browse, self));
                 $h.handler(self.$btnFile, 'click', $.proxy(self._browse, self));
@@ -994,9 +994,9 @@
             $h.handler($cont.find('.fileinput-remove:not([disabled])'), 'click', $.proxy(self.clear, self));
             $h.handler($cont.find('.fileinput-remove:not([disabled])'), 'click', $.proxy(self.clear, self));
             $h.handler($cont.find('.fileinput-cancel'), 'click', $.proxy(self.cancel, self));
             $h.handler($cont.find('.fileinput-cancel'), 'click', $.proxy(self.cancel, self));
             self._initDragDrop();
             self._initDragDrop();
-            $h.handler($form, 'reset', $.proxy(self.reset, self), true);
+            $h.handler($form, 'reset', $.proxy(self.reset, self), n);
             if (!self.isUploadable) {
             if (!self.isUploadable) {
-                $h.handler($form, 'submit', $.proxy(self._submitForm, self), true);
+                $h.handler($form, 'submit', $.proxy(self._submitForm, self), n);
             }
             }
             $h.handler(self.$container.find('.fileinput-upload'), 'click', $.proxy(self._uploadClick, self));
             $h.handler(self.$container.find('.fileinput-upload'), 'click', $.proxy(self._uploadClick, self));
             $h.handler($(window), 'resize', function () {
             $h.handler($(window), 'resize', function () {
@@ -2530,17 +2530,18 @@
             self._setProgress(101, self.$progress, self.msgCancelled);
             self._setProgress(101, self.$progress, self.msgCancelled);
         },
         },
         _setProgress: function (p, $el, error) {
         _setProgress: function (p, $el, error) {
-            var self = this, pct = Math.min(p, 100), template = pct < 100 ? self.progressTemplate :
-                    (error ? self.progressErrorTemplate : (p <= 100 ? self.progressTemplate : self.progressCompleteTemplate)),
-                pctLimit = self.progressUploadThreshold;
+            var self = this, pct = Math.min(p, 100), out, status, pctLimit = self.progressUploadThreshold,
+                t = p <= 100 ? self.progressTemplate : self.progressCompleteTemplate,
+                template = pct < 100 ? self.progressTemplate : (error ? self.progressErrorTemplate : t);
             $el = $el || self.$progress;
             $el = $el || self.$progress;
             if (!$h.isEmpty(template)) {
             if (!$h.isEmpty(template)) {
                 if (pctLimit && pct > pctLimit && p <= 100) {
                 if (pctLimit && pct > pctLimit && p <= 100) {
-                    var out = template.replace('{percent}', pctLimit).replace('{percent}', pctLimit).replace('{percent}%', self.msgUploadThreshold);
-                    $el.html(out);
+                    out = template.replace(/\{percent}/g, pctLimit).replace(/\{status}/g, self.msgUploadThreshold);
                 } else {
                 } else {
-                    $el.html(template.replace(/\{percent}/g, pct));
+                    status = p > 100 ? self.msgUploadEnd : pct + '%';
+                    out = template.replace(/\{percent}/g, pct).replace(/\{status}/g, status);
                 }
                 }
+                $el.html(out);
                 if (error) {
                 if (error) {
                     $el.find('[role="progressbar"]').html(error);
                     $el.find('[role="progressbar"]').html(error);
                 }
                 }
@@ -2849,8 +2850,9 @@
                 .replace('{status}', status).replace('{icon}', icon).replace('{label}', label);
                 .replace('{status}', status).replace('{icon}', icon).replace('{label}', label);
         },
         },
         _renderThumbProgress: function () {
         _renderThumbProgress: function () {
-            return '<div class="file-thumb-progress hide">' + this.progressTemplate.replace(/\{percent}/g,
-                    '0') + '</div>';
+            var self = this;
+            return '<div class="file-thumb-progress hide">' + self.progressTemplate.replace(/\{percent}/g, '0')
+                .replace(/\{status}/g, self.msgUploadBegin) + '</div>';
         },
         },
         _renderFileFooter: function (caption, size, width, isError) {
         _renderFileFooter: function (caption, size, width, isError) {
             var self = this, config = self.fileActionSettings, rem = config.showRemove, drg = config.showDrag,
             var self = this, config = self.fileActionSettings, rem = config.showRemove, drg = config.showDrag,
@@ -3035,16 +3037,10 @@
                 if (file !== undefined) {
                 if (file !== undefined) {
                     newstack[i] = file;
                     newstack[i] = file;
                     newnames[i] = self._getFileName(file);
                     newnames[i] = self._getFileName(file);
-                    $thumb.attr({
-                        'id': self.previewInitId + '-' + i,
-                        'data-fileindex': i
-                    });
+                    $thumb.attr({ 'id': self.previewInitId + '-' + i, 'data-fileindex': i});
                     i++;
                     i++;
                 } else {
                 } else {
-                    $thumb.attr({
-                        'id': 'uploaded-' + $h.uniqId(),
-                        'data-fileindex': '-1'
-                    });
+                    $thumb.attr({'data-fileindex': '-1'});
                 }
                 }
             });
             });
             self.filestack = newstack;
             self.filestack = newstack;
@@ -3270,7 +3266,7 @@
         destroy: function () {
         destroy: function () {
             var self = this, $form = self.$form, $cont = self.$container, $el = self.$element;
             var self = this, $form = self.$form, $cont = self.$container, $el = self.$element;
             if ($form && $form.length) {
             if ($form && $form.length) {
-                $form.off($h.NAMESPACE);
+                $form.off('.' + self.$element.attr('id'));
             }
             }
             $el.insertBefore($cont).off($h.NAMESPACE).removeData();
             $el.insertBefore($cont).off($h.NAMESPACE).removeData();
             $cont.off().remove();
             $cont.off().remove();
@@ -3285,6 +3281,18 @@
                 $el.trigger('change.fileinput');
                 $el.trigger('change.fileinput');
             }
             }
             return $el;
             return $el;
+        },
+        zoom: function (frameId) {
+            var self = this, $frame = $('#' + frameId), $modal = self.$modal;
+            if (!$frame.length) {
+                self._log('Cannot zoom to detailed preview! Invalid frame with id: "' + frameId + '".');
+                return;
+            }
+            $h.initModal($modal);
+            $modal.html(self._getModalContent());
+            self._setZoomContent($frame);
+            $modal.modal('show');
+            self._initZoomButtons();
         }
         }
     };
     };
 
 
@@ -3477,6 +3485,8 @@
         },
         },
         msgUploadAborted: 'The file upload was aborted',
         msgUploadAborted: 'The file upload was aborted',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Validation Error',
         msgValidationError: 'Validation Error',
         msgLoading: 'Loading file {index} of {files} &hellip;',
         msgLoading: 'Loading file {index} of {files} &hellip;',

File diff suppressed because it is too large
+ 0 - 0
js/fileinput.min.js


+ 2 - 0
js/locales/LANG.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'The file upload was aborted',
         msgUploadAborted: 'The file upload was aborted',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Validation Error',
         msgValidationError: 'Validation Error',
         msgLoading: 'Loading file {index} of {files} &hellip;',
         msgLoading: 'Loading file {index} of {files} &hellip;',

+ 2 - 0
js/locales/ar.js

@@ -50,6 +50,8 @@
         },
         },
         msgUploadAborted: 'تم إلغاء رفع الملف',
         msgUploadAborted: 'تم إلغاء رفع الملف',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'خطأ التحقق من صحة',
         msgValidationError: 'خطأ التحقق من صحة',
         msgLoading: 'تحميل ملف {index} من {files} &hellip;',
         msgLoading: 'تحميل ملف {index} من {files} &hellip;',

+ 2 - 0
js/locales/bg.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'Качите файла, бе прекратена',
         msgUploadAborted: 'Качите файла, бе прекратена',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'утвърждаване грешка',
         msgValidationError: 'утвърждаване грешка',
         msgLoading: 'Зареждане на файл {index} от общо {files} &hellip;',
         msgLoading: 'Зареждане на файл {index} от общо {files} &hellip;',

+ 2 - 0
js/locales/ca.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'La càrrega d\'arxius s\'ha cancel·lat',
         msgUploadAborted: 'La càrrega d\'arxius s\'ha cancel·lat',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Error de validació',
         msgValidationError: 'Error de validació',
         msgLoading: 'Pujant fitxer {index} de {files} &hellip;',
         msgLoading: 'Pujant fitxer {index} de {files} &hellip;',

+ 2 - 0
js/locales/cr.js

@@ -50,6 +50,8 @@
         },
         },
         msgUploadAborted: 'Prijenos datoteka je prekinut',
         msgUploadAborted: 'Prijenos datoteka je prekinut',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Provjera pogrešaka',
         msgValidationError: 'Provjera pogrešaka',
         msgLoading: 'Učitavanje datoteke {index} od {files} &hellip;',
         msgLoading: 'Učitavanje datoteke {index} od {files} &hellip;',

+ 2 - 0
js/locales/cz.js

@@ -39,6 +39,8 @@
         msgInvalidFileExtension: 'Neplatná extenze souboru "{name}". Pouze "{extensions}" souborů jsou podporovány.',
         msgInvalidFileExtension: 'Neplatná extenze souboru "{name}". Pouze "{extensions}" souborů jsou podporovány.',
         msgUploadAborted: 'Nahrávání souboru bylo přerušeno',
         msgUploadAborted: 'Nahrávání souboru bylo přerušeno',
         msgUploadThreshold: 'Zpracovávám...',
         msgUploadThreshold: 'Zpracovávám...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Chyba ověření',
         msgValidationError: 'Chyba ověření',
         msgLoading: 'Nahrávání souboru {index} z {files} &hellip;',
         msgLoading: 'Nahrávání souboru {index} z {files} &hellip;',

+ 2 - 0
js/locales/da.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'Filupload annulleret',
         msgUploadAborted: 'Filupload annulleret',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Validering Fejl',
         msgValidationError: 'Validering Fejl',
         msgLoading: 'Henter fil {index} af {files} &hellip;',
         msgLoading: 'Henter fil {index} af {files} &hellip;',

+ 2 - 0
js/locales/de.js

@@ -47,6 +47,8 @@
         },
         },
         msgUploadAborted: 'Der Datei-Upload wurde abgebrochen',
         msgUploadAborted: 'Der Datei-Upload wurde abgebrochen',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Validierungs fehler',
         msgValidationError: 'Validierungs fehler',
         msgLoading: 'Lade Datei {index} von {files} hoch&hellip;',
         msgLoading: 'Lade Datei {index} von {files} hoch&hellip;',

+ 2 - 0
js/locales/el.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'Η μεταφόρτωση του αρχείου ματαιώθηκε',
         msgUploadAborted: 'Η μεταφόρτωση του αρχείου ματαιώθηκε',
         msgUploadThreshold: 'Μεταφόρτωση ...',
         msgUploadThreshold: 'Μεταφόρτωση ...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Σφάλμα Επικύρωσης',
         msgValidationError: 'Σφάλμα Επικύρωσης',
         msgLoading: 'Φόρτωση αρχείου {index} από {files} &hellip;',
         msgLoading: 'Φόρτωση αρχείου {index} από {files} &hellip;',

+ 2 - 0
js/locales/es.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'La carga de archivos se ha cancelado',
         msgUploadAborted: 'La carga de archivos se ha cancelado',
         msgUploadThreshold: 'Procesando...',
         msgUploadThreshold: 'Procesando...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No existen datos válidos para el envío.',
         msgUploadEmpty: 'No existen datos válidos para el envío.',
         msgValidationError: 'Error de validación',
         msgValidationError: 'Error de validación',
         msgLoading: 'Subiendo archivo {index} de {files} &hellip;',
         msgLoading: 'Subiendo archivo {index} de {files} &hellip;',

+ 2 - 0
js/locales/fa.js

@@ -50,6 +50,8 @@
         },
         },
         msgUploadAborted: 'The file upload was aborted',
         msgUploadAborted: 'The file upload was aborted',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'خطای اعتبار سنجی',
         msgValidationError: 'خطای اعتبار سنجی',
         msgLoading: 'بارگیری فایل {index} از {files} &hellip;',
         msgLoading: 'بارگیری فایل {index} از {files} &hellip;',

+ 2 - 0
js/locales/fi.js

@@ -45,6 +45,8 @@
             'object': 'Olio'
             'object': 'Olio'
         },
         },
         msgUploadThreshold: 'Käsitellään...',
         msgUploadThreshold: 'Käsitellään...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'Ei ladattavaa dataa.',
         msgUploadEmpty: 'Ei ladattavaa dataa.',
         msgValidationError: 'Tiedoston latausvirhe',
         msgValidationError: 'Tiedoston latausvirhe',
         msgLoading: 'Ladataan tiedostoa {index} / {files} &hellip;',
         msgLoading: 'Ladataan tiedostoa {index} / {files} &hellip;',

+ 2 - 0
js/locales/fr.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'Le téléchargement du fichier a été interrompu',
         msgUploadAborted: 'Le téléchargement du fichier a été interrompu',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Erreur de validation',
         msgValidationError: 'Erreur de validation',
         msgLoading: 'Transmission du fichier {index} sur {files}&hellip;',
         msgLoading: 'Transmission du fichier {index} sur {files}&hellip;',

+ 2 - 0
js/locales/hu.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'A fájl feltöltés megszakítva',
         msgUploadAborted: 'A fájl feltöltés megszakítva',
         msgUploadThreshold: 'Folyamatban...',
         msgUploadThreshold: 'Folyamatban...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Érvényesítés hiba',
         msgValidationError: 'Érvényesítés hiba',
         msgLoading: '{index} / {files} töltése &hellip;',
         msgLoading: '{index} / {files} töltése &hellip;',

+ 2 - 0
js/locales/id.js

@@ -50,6 +50,8 @@
         },
         },
         msgUploadAborted: 'Pengunggahan berkas dibatalkan',
         msgUploadAborted: 'Pengunggahan berkas dibatalkan',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Kesalahan validasi',
         msgValidationError: 'Kesalahan validasi',
         msgLoading: 'Memuat {index} dari {files} berkas &hellip;',
         msgLoading: 'Memuat {index} dari {files} berkas &hellip;',

+ 2 - 0
js/locales/it.js

@@ -51,6 +51,8 @@
         },
         },
         msgUploadAborted: 'Il caricamento del file è stata interrotta',
         msgUploadAborted: 'Il caricamento del file è stata interrotta',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Errore di convalida',
         msgValidationError: 'Errore di convalida',
         msgLoading: 'Caricamento file {index} di {files}&hellip;',
         msgLoading: 'Caricamento file {index} di {files}&hellip;',

+ 2 - 0
js/locales/ja.js

@@ -56,6 +56,8 @@
         },
         },
         msgUploadAborted: 'ファイルのアップロードが中止されました',
         msgUploadAborted: 'ファイルのアップロードが中止されました',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: '検証エラー',
         msgValidationError: '検証エラー',
         msgLoading: '{files}個中{index}個目のファイルを読み込み中&hellip;',
         msgLoading: '{files}個中{index}個目のファイルを読み込み中&hellip;',

+ 2 - 0
js/locales/kr.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: '파일 업로드가 중단되었습니다.',
         msgUploadAborted: '파일 업로드가 중단되었습니다.',
         msgUploadThreshold: '업로드 중...',
         msgUploadThreshold: '업로드 중...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: '업로드 가능 데이터가 존재하지 않습니다.',
         msgUploadEmpty: '업로드 가능 데이터가 존재하지 않습니다.',
         msgValidationError: '유효성 오류',
         msgValidationError: '유효성 오류',
         msgLoading: '파일 {files} 중 {index}번째를 로딩하고 있습니다. &hellip;',
         msgLoading: '파일 {files} 중 {index}번째를 로딩하고 있습니다. &hellip;',

+ 2 - 0
js/locales/kz.js

@@ -38,6 +38,8 @@
         msgInvalidFileExtension: '"{name}" тыйым салынған файл кеңейтімі. Тек "{extensions}" рұқсат.',
         msgInvalidFileExtension: '"{name}" тыйым салынған файл кеңейтімі. Тек "{extensions}" рұқсат.',
         msgUploadAborted: 'Файлды жүктеу доғарылды',
         msgUploadAborted: 'Файлды жүктеу доғарылды',
         msgUploadThreshold: 'Өңдеу...',
         msgUploadThreshold: 'Өңдеу...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Тексеру қатесі',
         msgValidationError: 'Тексеру қатесі',
         msgLoading: '{index} файлды {files} &hellip; жүктеу',
         msgLoading: '{index} файлды {files} &hellip; жүктеу',

+ 2 - 0
js/locales/nl.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'Het uploaden van bestanden is afgebroken',
         msgUploadAborted: 'Het uploaden van bestanden is afgebroken',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Bevestiging fout',
         msgValidationError: 'Bevestiging fout',
         msgLoading: 'Bestanden laden {index} van de {files} &hellip;',
         msgLoading: 'Bestanden laden {index} van de {files} &hellip;',

+ 2 - 0
js/locales/pl.js

@@ -39,6 +39,8 @@
         msgInvalidFileExtension: 'Złe rozszerzenie dla pliku "{name}". Tylko następujące rozszerzenia plików są obsługiwane: "{extensions}".',
         msgInvalidFileExtension: 'Złe rozszerzenie dla pliku "{name}". Tylko następujące rozszerzenia plików są obsługiwane: "{extensions}".',
         msgUploadAborted: 'Przesyłanie pliku zostało przerwane',
         msgUploadAborted: 'Przesyłanie pliku zostało przerwane',
         msgUploadThreshold: 'Przetwarzanie...',
         msgUploadThreshold: 'Przetwarzanie...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Błąd walidacji',
         msgValidationError: 'Błąd walidacji',
         msgLoading: 'Wczytywanie pliku {index} z {files} &hellip;',
         msgLoading: 'Wczytywanie pliku {index} z {files} &hellip;',

+ 2 - 0
js/locales/pt-BR.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'O envio do arquivo foi abortado',
         msgUploadAborted: 'O envio do arquivo foi abortado',
         msgUploadThreshold: 'Processando...',
         msgUploadThreshold: 'Processando...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Erro de validação',
         msgValidationError: 'Erro de validação',
         msgLoading: 'Enviando arquivo {index} de {files}&hellip;',
         msgLoading: 'Enviando arquivo {index} de {files}&hellip;',

+ 2 - 0
js/locales/pt.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'O upload do arquivo foi abortada',
         msgUploadAborted: 'O upload do arquivo foi abortada',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Erro de validação',
         msgValidationError: 'Erro de validação',
         msgLoading: 'A carregar ficheiro {index} de {files} &hellip;',
         msgLoading: 'A carregar ficheiro {index} de {files} &hellip;',

+ 2 - 0
js/locales/ro.js

@@ -50,6 +50,8 @@
         },
         },
         msgUploadAborted: 'Fișierul Încărcarea a fost întrerupt',
         msgUploadAborted: 'Fișierul Încărcarea a fost întrerupt',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Eroare de validare',
         msgValidationError: 'Eroare de validare',
         msgLoading: 'Se încarcă fișierul {index} din {files} &hellip;',
         msgLoading: 'Se încarcă fișierul {index} din {files} &hellip;',

+ 2 - 0
js/locales/ru.js

@@ -50,6 +50,8 @@
         },
         },
         msgUploadAborted: 'Выгрузка файла прервана',
         msgUploadAborted: 'Выгрузка файла прервана',
         msgUploadThreshold: 'Обработка...',
         msgUploadThreshold: 'Обработка...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'Недопустимые данные для загрузки',
         msgUploadEmpty: 'Недопустимые данные для загрузки',
         msgValidationError: 'Ошибка проверки',
         msgValidationError: 'Ошибка проверки',
         msgLoading: 'Загрузка файла {index} из {files} &hellip;',
         msgLoading: 'Загрузка файла {index} из {files} &hellip;',

+ 2 - 0
js/locales/sk.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'Súbor nahrávania bol prerušený',
         msgUploadAborted: 'Súbor nahrávania bol prerušený',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Chyba overenia',
         msgValidationError: 'Chyba overenia',
         msgLoading: 'Nahrávanie súboru {index} z {files} &hellip;',
         msgLoading: 'Nahrávanie súboru {index} z {files} &hellip;',

+ 2 - 0
js/locales/sl.js

@@ -48,6 +48,8 @@
         },
         },
         msgUploadAborted: 'Nalaganje datoteke je bilo preklicano',
         msgUploadAborted: 'Nalaganje datoteke je bilo preklicano',
         msgUploadThreshold: 'Procesiram...',
         msgUploadThreshold: 'Procesiram...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Napaki pri validiranju',
         msgValidationError: 'Napaki pri validiranju',
         msgLoading: 'Nalaganje datoteke {index} od {files} &hellip;',
         msgLoading: 'Nalaganje datoteke {index} od {files} &hellip;',

+ 2 - 0
js/locales/th.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'อัปโหลดไฟล์ถูกยกเลิก',
         msgUploadAborted: 'อัปโหลดไฟล์ถูกยกเลิก',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'ข้อผิดพลาดในการตรวจสอบ',
         msgValidationError: 'ข้อผิดพลาดในการตรวจสอบ',
         msgLoading: 'กำลังโหลดไฟล์ {index} จาก {files} &hellip;',
         msgLoading: 'กำลังโหลดไฟล์ {index} จาก {files} &hellip;',

+ 2 - 0
js/locales/tr.js

@@ -49,6 +49,8 @@
         },
         },
         msgUploadAborted: 'Dosya yükleme iptal edildi',
         msgUploadAborted: 'Dosya yükleme iptal edildi',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Doğrulama Hatası',
         msgValidationError: 'Doğrulama Hatası',
         msgLoading: 'Dosya yükleniyor {index} / {files} &hellip;',
         msgLoading: 'Dosya yükleniyor {index} / {files} &hellip;',

+ 2 - 0
js/locales/uk.js

@@ -50,6 +50,8 @@
         },
         },
         msgUploadAborted: 'Вивантаження файлу перервана',
         msgUploadAborted: 'Вивантаження файлу перервана',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Помилка перевірки',
         msgValidationError: 'Помилка перевірки',
         msgLoading: 'Загрузка файла {index} із {files} &hellip;',
         msgLoading: 'Загрузка файла {index} із {files} &hellip;',

+ 2 - 0
js/locales/vi.js

@@ -50,6 +50,8 @@
         },
         },
         msgUploadAborted: 'Đã dừng upload',
         msgUploadAborted: 'Đã dừng upload',
         msgUploadThreshold: 'Đang xử lý...',
         msgUploadThreshold: 'Đang xử lý...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: 'Lỗi xác nhận',
         msgValidationError: 'Lỗi xác nhận',
         msgLoading: 'Đang nạp {index} tập tin trong số {files} &hellip;',
         msgLoading: 'Đang nạp {index} tập tin trong số {files} &hellip;',

+ 2 - 0
js/locales/zh-TW.js

@@ -51,6 +51,8 @@
         },
         },
         msgUploadAborted: '該文件上傳被中止',
         msgUploadAborted: '該文件上傳被中止',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: '驗證錯誤',
         msgValidationError: '驗證錯誤',
         msgLoading: '載入第 {index} 個檔案,共 {files} &hellip;',
         msgLoading: '載入第 {index} 個檔案,共 {files} &hellip;',

+ 2 - 0
js/locales/zh.js

@@ -50,6 +50,8 @@
         },
         },
         msgUploadAborted: '该文件上传被中止',
         msgUploadAborted: '该文件上传被中止',
         msgUploadThreshold: 'Processing...',
         msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadEmpty: 'No valid data available for upload.',
         msgValidationError: '验证错误',
         msgValidationError: '验证错误',
         msgLoading: '加载第 {index} 文件 共 {files} &hellip;',
         msgLoading: '加载第 {index} 文件 共 {files} &hellip;',

Some files were not shown because too many files changed in this diff