Преглед изворни кода

Fix #676: Ability to configure browse button display and file select via zone click

Kartik Visweswaran пре 9 година
родитељ
комит
47bade661f

+ 7 - 0
CHANGE.md

@@ -70,6 +70,13 @@ Change Log: `bootstrap-fileinput`
 21. (enh #655): Include sass styling configuration.
 22. (enh #666): Update sortable draggable selector.
 23. (enh #674): Organize all themes in a separate `themes` folder.
+24. (enh #650, #676): Ability to configure browse button display and file select via zone click.
+    - New boolean property `showBrowse` that allows you to control the display of the browse button
+    - New boolean property `browseOnZoneClick` that allows you to select a file:
+         - **for ajax uploads** - by clicking on the preview drag/drop zone 
+         - **for form based/non-ajax uploads** - by setting `initialPreviewContent` and that will be clickable to browse files
+    - New string message property `dropZoneClickTitle` that will be appended to the `dragZoneTitle` for ajax uploads when `browseOnZoneClick` is `true`.
+
 
 ## version 4.3.1
 

+ 34 - 1
css/fileinput.css

@@ -166,6 +166,21 @@
     display: none;
 }
 
+.file-caption-main {
+    width: 100%;
+}
+
+.file-input-ajax-new .no-browse .input-group-btn,
+.file-input-new .no-browse .input-group-btn {
+    display: none;
+}
+
+.file-input-ajax-new .no-browse .form-control,
+.file-input-new .no-browse .form-control {
+    border-top-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+}
+
 .file-thumb-loading {
     background: transparent url('../img/loading.gif') no-repeat scroll center center content-box !important;
 }
@@ -224,8 +239,26 @@
 
 .file-drop-zone-title {
     color: #aaa;
-    font-size: 40px;
+    font-size: 1.6em;
     padding: 85px 10px;
+    cursor: default;
+}
+
+.file-preview .clickable,
+.clickable .file-drop-zone-title {
+    cursor: pointer;
+}
+
+.file-drop-zone.clickable:hover {
+    border: 2px dashed #999;
+}
+
+.file-drop-zone.clickable:focus {
+    border: 2px solid #5acde2;
+}
+
+.file-drop-zone .file-preview-thumbnails {
+    cursor: default;
 }
 
 .file-highlighted {

Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
css/fileinput.min.css


+ 50 - 12
js/fileinput.js

@@ -444,7 +444,7 @@
         pdf: tTagBef2 + tPdf + tTagAft,
         other: tTagBef2 + tOther + tTagAft
     };
-    defaultPreviewTypes = ['image', 'html', 'text', 'video', 'audio', 'flash', 'object'];
+    defaultPreviewTypes = ['image', 'html', 'text', 'video', 'audio', 'flash', 'pdf', 'object'];
     defaultPreviewSettings = {
         image: {width: "auto", height: "160px"},
         html: {width: "213px", height: "160px"},
@@ -463,7 +463,7 @@
         video: {width: "auto", height: "100%", 'max-width': "100%"},
         audio: {width: "100%", height: "30px"},
         flash: {width: "auto", height: "480px"},
-        object: {width: "auto", height: "480px"},
+        object: {width: "auto", height: "100%", 'min-height': "480px"},
         pdf: {width: "100%", height: "100%", 'min-height': "480px"},
         other: {width: "auto", height: "100%", 'min-height': "480px"}
     };
@@ -475,7 +475,7 @@
             return compare(vType, 'text/html') || compare(vName, /\.(htm|html)$/i);
         },
         text: function (vType, vName) {
-            return compare(vType, 'text.*') || compare(vType, /\.(xml|javascript)$/i) ||
+            return compare(vType, 'text.*') || compare(vName, /\.(xml|javascript)$/i) ||
                 compare(vName, /\.(txt|md|csv|nfo|ini|json|php|js|css)$/i);
         },
         video: function (vType, vName) {
@@ -483,7 +483,7 @@
                 compare(vName, /\.(og?|mp4|webm|mp?g|3gp)$/i));
         },
         audio: function (vType, vName) {
-            return compare(vType, 'audio.*') && (compare(vType, /(ogg|mp3|mp?g|wav)$/i) ||
+            return compare(vType, 'audio.*') && (compare(vName, /(ogg|mp3|mp?g|wav)$/i) ||
                 compare(vName, /\.(og?|mp3|mp?g|wav)$/i));
         },
         flash: function (vType, vName) {
@@ -655,6 +655,8 @@
             self.dropZoneEnabled = hasDragDropSupport() && self.dropZoneEnabled;
             self.isDisabled = self.$element.attr('disabled') || self.$element.attr('readonly');
             self.isUploadable = hasFileUploadSupport() && !isEmpty(self.uploadUrl);
+            self.isClickable = self.browseOnZoneClick && self.showPreview &&
+                (self.isUploadable && self.dropZoneEnabled || !isEmpty(self.defaultPreviewContent));
             self.slug = typeof options.slugCallback === "function" ? options.slugCallback : self._slugDefault;
             self.mainTemplate = self.showCaption ? self._getLayoutTemplate('main1') : self._getLayoutTemplate('main2');
             self.captionTemplate = self._getLayoutTemplate('caption');
@@ -930,7 +932,9 @@
         _listen: function () {
             var self = this, $el = self.$element, $form = $el.closest('form'), $cont = self.$container;
             handler($el, 'change', $.proxy(self._change, self));
-            handler(self.$btnFile, 'click', $.proxy(self._browse, self));
+            if (self.showBrowse) {
+                handler(self.$btnFile, 'click', $.proxy(self._browse, self));
+            }
             handler($form, 'reset', $.proxy(self.reset, self));
             handler($cont.find('.fileinput-remove:not([disabled])'), 'click', $.proxy(self.clear, self));
             handler($cont.find('.fileinput-cancel'), 'click', $.proxy(self.cancel, self));
@@ -946,7 +950,24 @@
                 function () {
                     self._listenFullScreen(checkFullScreen());
                 });
-
+            self._initClickable();
+        },
+        _initClickable: function () {
+            var self = this, $zone;
+            if (!self.isClickable) {
+                return;
+            }
+            $zone = self.isUploadable ? self.$dropZone : self.$preview.find('.file-default-preview');
+            addCss($zone, 'clickable');
+            $zone.attr('tabindex', -1);
+            handler($zone, 'click', function (e) {
+                var $target = $(e.target);
+                if (!$target.parents('.file-preview-thumbnails').length || $target.parents(
+                        '.file-default-preview').length) {
+                    self.$element.trigger('click');
+                    $zone.blur();
+                }
+            });
         },
         _initDragDrop: function () {
             var self = this, $zone = self.$dropZone;
@@ -1498,6 +1519,7 @@
             }
             self.$preview.html('<div class="file-default-preview">' + self.defaultPreviewContent + '</div>');
             self.$container.removeClass('file-input-new');
+            self._initClickable();
         },
         _resetPreviewThumbs: function (isAjax) {
             var self = this, out;
@@ -2326,13 +2348,17 @@
             }
         },
         _setFileDropZoneTitle: function () {
-            var self = this, $zone = self.$container.find('.file-drop-zone');
+            var self = this, $zone = self.$container.find('.file-drop-zone'), title = self.dropZoneTitle, strFiles;
+            if (self.isClickable) {
+                strFiles = isEmpty(self.$element.attr('multiple')) ? self.fileSingle : self.filePlural;
+                title += self.dropZoneClickTitle.replace('{files}', strFiles);
+            }
             $zone.find('.' + self.dropZoneTitleClass).remove();
             if (!self.isUploadable || !self.showPreview || $zone.length === 0 || self.getFileStack().length > 0 || !self.dropZoneEnabled) {
                 return;
             }
             if ($zone.find('.file-preview-frame').length === 0 && isEmpty(self.defaultPreviewContent)) {
-                $zone.prepend('<div class="' + self.dropZoneTitleClass + '">' + self.dropZoneTitle + '</div>');
+                $zone.prepend('<div class="' + self.dropZoneTitleClass + '">' + title + '</div>');
             }
             self.$container.removeClass('file-input-new');
             addCss(self.$container, 'file-input-ajax-new');
@@ -2489,8 +2515,12 @@
         },
         _initBrowse: function ($container) {
             var self = this;
-            self.$btnFile = $container.find('.btn-file');
-            self.$btnFile.append(self.$element);
+            if (self.showBrowse) {
+                self.$btnFile = $container.find('.btn-file');
+                self.$btnFile.append(self.$element);
+            } else {
+                self.$element.hide();
+            }
         },
         _initCaption: function () {
             var self = this, cap = self.initialCaption || '';
@@ -2552,7 +2582,8 @@
                     .replace(/\{dropClass}/g, dropCss),
                 css = self.isDisabled ? self.captionClass + ' file-caption-disabled' : self.captionClass,
                 caption = self.captionTemplate.replace(/\{class}/g, css + ' kv-fileinput-caption');
-            return self.mainTemplate.replace(/\{class}/g, self.mainClass)
+            return self.mainTemplate.replace(/\{class}/g, self.mainClass +
+                (!self.showBrowse && self.showCaption ? ' no-browse' : ''))
                 .replace(/\{preview}/g, preview)
                 .replace(/\{close}/g, close)
                 .replace(/\{caption}/g, caption)
@@ -2588,11 +2619,15 @@
                     }
                     break;
                 case 'browse':
+                    if (!self.showBrowse) {
+                        return '';
+                    }
                     tmplt = self._getLayoutTemplate('btnBrowse');
                     break;
                 default:
                     return '';
             }
+
             css += type === 'browse' ? ' btn-file' : ' fileinput-' + type + ' fileinput-' + type + '-button';
             if (!isEmpty(label)) {
                 label = ' <span class="' + self.buttonLabelClass + '">' + label + '</span>';
@@ -3058,16 +3093,18 @@
     $.fn.fileinput.defaults = {
         language: 'en',
         showCaption: true,
+        showBrowse: true,
         showPreview: true,
         showRemove: true,
         showUpload: true,
         showCancel: true,
         showClose: true,
         showUploadedThumbs: true,
+        browseOnZoneClick: false,
         autoReplace: false,
         previewClass: '',
         captionClass: '',
-        mainClass: '',
+        mainClass: 'file-caption-main',
         mainTemplate: null,
         purifyHtml: true,
         fileSizeGetter: null,
@@ -3204,6 +3241,7 @@
         msgImageResizeError: 'Could not get the image dimensions to resize.',
         msgImageResizeException: 'Error while resizing the image.<pre>{errors}</pre>',
         dropZoneTitle: 'Drag & drop files here &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         previewZoomButtonTitles: {
             prev: 'View previous file',
             next: 'View next file',

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
js/fileinput.min.js


+ 1 - 0
js/locales/LANG.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Could not get the image dimensions to resize.',
         msgImageResizeException: 'Error while resizing the image.<pre>{errors}</pre>',
         dropZoneTitle: 'Drag & drop files here &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Remove file',
             uploadTitle: 'Upload file',

+ 1 - 0
js/locales/ar.js

@@ -48,6 +48,7 @@
         msgImageResizeError: 'لم يتمكن من معرفة أبعاد الصورة لتغييرها.',
         msgImageResizeException: 'حدث خطأ أثناء تغيير أبعاد الصورة.<pre>{errors}</pre>',
         dropZoneTitle: 'اسحب وأفلت الملفات هنا &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'إزالة الملف',
             uploadTitle: 'رفع الملف',

+ 1 - 0
js/locales/bg.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Не може да размерите на изображението, за да промените размера.',
         msgImageResizeException: 'Грешка при промяна на размера на изображението.<pre>{errors}</pre>',
         dropZoneTitle: 'Пуснете файловете тук &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Махни файл',
             uploadTitle: 'Качване на файл',

+ 1 - 0
js/locales/ca.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'No s\'ha pogut obtenir les dimensions d\'imatge per canviar la mida.',
         msgImageResizeException: 'Error en canviar la mida de la imatge.<pre>{errors}</pre>',
         dropZoneTitle: 'Arrossegueu i deixeu anar aquí els arxius &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Eliminar arxiu',
             uploadTitle: 'Pujar arxiu',

+ 1 - 0
js/locales/cr.js

@@ -48,6 +48,7 @@
         msgImageResizeError: 'Nije mogao dobiti dimenzije slike na veličinu.',
         msgImageResizeException: 'Greška prilikom promjene veličine slike.<pre>{errors}</pre>',
         dropZoneTitle: 'Prevucite datoteke ovde &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Uklonite datoteku',
             uploadTitle: 'Postavi datoteku',

+ 1 - 0
js/locales/cz.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Nelze získat rozměry obrázku změnit velikost.',
         msgImageResizeException: 'Chyba při změně velikosti obrázku.<pre>{errors}</pre>',
         dropZoneTitle: 'Táhni a pusť soubory sem &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Odstranit soubor',
             uploadTitle: 'nahrát soubor',

+ 1 - 0
js/locales/da.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Kunne ikke få billedets dimensioner for at ændre størrelsen.',
         msgImageResizeException: 'Fejl ved at ændre størrelsen på billedet.<pre>{errors}</pre>',
         dropZoneTitle: 'Drag & drop filer her &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Fjern fil',
             uploadTitle: 'Upload fil',

+ 1 - 0
js/locales/de.js

@@ -45,6 +45,7 @@
         msgImageResizeError: 'Konnte nicht die Bildabmessungen zu ändern.',
         msgImageResizeException: 'Fehler beim Ändern der Größe des Bildes.<pre>{errors}</pre>',
         dropZoneTitle: 'Dateien hierher ziehen &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Datei entfernen',
             uploadTitle: 'Datei hochladen',

+ 1 - 0
js/locales/el.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Δεν θα μπορούσε να πάρει τις διαστάσεις της εικόνας για να αλλάξετε το μέγεθος.',
         msgImageResizeException: 'Σφάλμα κατά την αλλαγή μεγέθους της εικόνας.<pre>{errors}</pre>',
         dropZoneTitle: 'Σύρετε τα αρχεία εδώ &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Αφαιρέστε το αρχείο',
             uploadTitle: 'Ανεβάστε το αρχείο',

+ 1 - 0
js/locales/es.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'No se pudo obtener las dimensiones de imagen para cambiar el tamaño.',
         msgImageResizeException: 'Error al cambiar el tamaño de la imagen.<pre>{errors}</pre>',
         dropZoneTitle: 'Arrastre y suelte aquí los archivos &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Eliminar archivo',
             uploadTitle: 'Subir archivo',

+ 1 - 0
js/locales/fa.js

@@ -48,6 +48,7 @@
         msgImageResizeError: 'یافت نشد ابعاد تصویر را برای تغییر اندازه.',
         msgImageResizeException: 'خطا در هنگام تغییر اندازه تصویر.<pre>{errors}</pre>',
         dropZoneTitle: 'فایل‌ها را بکشید و در اینجا رها کنید &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'حذف فایل',
             uploadTitle: 'آپلود فایل',

+ 1 - 0
js/locales/fi.js

@@ -37,6 +37,7 @@
         msgSelected: '{n} tiedostoa valittu',
         msgFoldersNotAllowed: 'Raahaa ja pudota ainoastaan tiedostoja! Ohitettu {n} raahattua kansiota.',
         dropZoneTitle: 'Raahaa ja pudota tiedostot t&auml;h&auml;n &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Remove file',
             uploadTitle: 'Upload file',

+ 1 - 0
js/locales/fr.js

@@ -47,6 +47,7 @@
         msgImageResizeError: "Impossible d'obtenir les dimensions de l'image à redimensionner.",
         msgImageResizeException: "Erreur lors du redimensionnement de l'image.<pre>{errors}</pre>",
         dropZoneTitle: 'Glissez et déposez les fichiers ici&hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Supprimer le fichier',
             uploadTitle: 'Télécharger un fichier',

+ 1 - 0
js/locales/hu.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Nem lehet megszerezni a kép méretei átméretezni.',
         msgImageResizeException: 'Hiba történt a méretezés.<pre>{errors}</pre>',
         dropZoneTitle: 'Fájlok húzása ide &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'A fájl eltávolítása',
             uploadTitle: 'fájl feltöltése',

+ 1 - 0
js/locales/id.js

@@ -48,6 +48,7 @@
         msgImageResizeError: 'Tak dapat menentukan dimensi gambar untuk mengubah ukuran.',
         msgImageResizeException: 'Kesalahan saat mengubah ukuran gambar.<pre>{errors}</pre>',
         dropZoneTitle: 'Tarik dan lepaskan berkas disini &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Hapus berkas',
             uploadTitle: 'Unggah berkas',

+ 1 - 0
js/locales/it.js

@@ -49,6 +49,7 @@
         msgImageResizeError: "Impossibile ottenere le dimensioni dell'immagine per ridimensionare.",
         msgImageResizeException: "Errore durante il ridimensionamento dell'immagine.<pre>{errors}</pre>",
         dropZoneTitle: 'Trascina i file qui&hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Rimuovere il file',
             uploadTitle: 'Caricare un file',

+ 1 - 0
js/locales/ja.js

@@ -54,6 +54,7 @@
         msgImageResizeError: 'リサイズ時に画像サイズが取得できませんでした',
         msgImageResizeException: '画像のリサイズ時にエラーが発生しました。<pre>{errors}</pre>',
         dropZoneTitle: 'ファイルをドラッグ&ドロップ&hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         slugCallback: function(text) {
             return text ? text.split(/(\\|\/)/g).pop().replace(/[^\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\u31f0-\u31ff\u3200-\u32ff\uff00-\uffef\-.\\\/ ]+/g, '') : '';
         },

+ 1 - 0
js/locales/nl.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Kon de foto afmetingen niet lezen om te verkleinen.',
         msgImageResizeException: 'Fout bij het verkleinen van de foto.<pre>{errors}</pre>',
         dropZoneTitle: 'Drag & drop bestanden hier &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Verwijder bestand',
             uploadTitle: 'bestand uploaden',

+ 1 - 0
js/locales/pl.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Nie udało się uzyskać wymiary obrazu, aby zmienić rozmiar.',
         msgImageResizeException: 'Błąd podczas zmiany rozmiaru obrazu.<pre>{errors}</pre>',
         dropZoneTitle: 'Przeciągnij i upuść pliki tu &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Usuń plik',
             uploadTitle: 'przesyłanie pliku',

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

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Could not get the image dimensions to resize.',
         msgImageResizeException: 'Erro ao redimensionar a imagem.<pre>{errors}</pre>',
         dropZoneTitle: 'Arraste e solte os arquivos aqui&hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Remover arquivo',
             uploadTitle: 'Carregar arquivo',

+ 1 - 0
js/locales/pt.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Could not get the image dimensions to resize.',
         msgImageResizeException: 'Erro ao redimensionar a imagem.<pre>{errors}</pre>',
         dropZoneTitle: 'Arrastar e largar ficheiros aqui &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Remover arquivo',
             uploadTitle: 'Carregar arquivo',

+ 1 - 0
js/locales/ro.js

@@ -48,6 +48,7 @@
         msgImageResizeError: 'Nu a putut obține dimensiunile imaginii pentru a redimensiona.',
         msgImageResizeException: 'Eroare la redimensionarea imaginii.<pre>{errors}</pre>',
         dropZoneTitle: 'Trage fișierele aici &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Scoateți fișier',
             uploadTitle: 'Incarca fisier',

+ 1 - 0
js/locales/ru.js

@@ -48,6 +48,7 @@
         msgImageResizeError: 'Не удалось получить размеры изображения, чтобы изменить размер.',
         msgImageResizeException: 'Ошибка при изменении размера изображения.<pre>{errors}</pre>',
         dropZoneTitle: 'Перетащите файлы сюда &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Удалить файл',
             uploadTitle: 'Загрузить файл',

+ 1 - 0
js/locales/sk.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Nemožno získať rozmery obrázku zmeniť veľkosť.',
         msgImageResizeException: 'Chyba pri zmene veľkosti obrázka.<pre>{errors}</pre>',
         dropZoneTitle: 'Tiahni a pusť súbory tu &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'odstrániť súbor',
             uploadTitle: 'nahrať súbor',

+ 1 - 0
js/locales/th.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'ไม่สามารถรับขนาดภาพเพื่อปรับขนาด',
         msgImageResizeException: 'ข้อผิดพลาดขณะปรับขนาดภาพ<pre>{errors}</pre>',
         dropZoneTitle: 'Drag & drop ไฟล์ตรงนี้ &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'ลบไฟล์',
             uploadTitle: 'อัปโหลดไฟล์',

+ 1 - 0
js/locales/tr.js

@@ -47,6 +47,7 @@
         msgImageResizeError: 'Görüntü boyutlarını yeniden boyutlandırmak için alınamadı.',
         msgImageResizeException: 'Görsel boyutlandırma sırasında hata.<pre>{errors}</pre>',
         dropZoneTitle: 'Dosyaları buraya sürükleyip bırakın &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Dosyayı kaldır',
             uploadTitle: 'Dosyayı yükle',

+ 1 - 0
js/locales/uk.js

@@ -48,6 +48,7 @@
         msgImageResizeError: 'Не вдалося розміри зображення, щоб змінити розмір.',
         msgImageResizeException: 'Помилка при зміні розміру зображення.<pre>{errors}</pre>',
         dropZoneTitle: 'Перетягніть файли сюди &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'Видалити файл',
             uploadTitle: 'Загрузити файл',

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

@@ -49,6 +49,7 @@
         msgImageResizeError: '無法獲取的圖像尺寸調整。',
         msgImageResizeException: '錯誤而調整圖像大小。<pre>{errors}</pre>',
         dropZoneTitle: '拖曳檔案至此 &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: '刪除檔案',
             uploadTitle: '上傳檔案',

+ 1 - 0
js/locales/zh.js

@@ -48,6 +48,7 @@
         msgImageResizeError: '无法获取的图像尺寸调整。',
         msgImageResizeException: '错误而调整图像大小。<pre>{errors}</pre>',
         dropZoneTitle: '拖拽文件到这里 &hellip;',
+        dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: '删除文件',
             uploadTitle: '上传文件',

Неке датотеке нису приказане због велике количине промена