Ver código fonte

Update to release v5.0.0

Kartik Visweswaran 6 anos atrás
pai
commit
d635155749
77 arquivos alterados com 1540 adições e 356 exclusões
  1. 45 0
      CHANGE.md
  2. 11 9
      README.md
  3. 2 2
      bower.json
  4. 1 20
      css/fileinput-rtl.css
  5. 1 1
      css/fileinput-rtl.min.css
  6. 128 12
      css/fileinput.css
  7. 1 1
      css/fileinput.min.css
  8. 141 151
      examples/index.html
  9. 780 38
      js/fileinput.js
  10. 1 1
      js/fileinput.min.js
  11. 8 0
      js/locales/LANG.js
  12. 36 28
      js/locales/ar.js
  13. 8 0
      js/locales/az.js
  14. 8 0
      js/locales/bg.js
  15. 8 0
      js/locales/ca.js
  16. 8 0
      js/locales/cr.js
  17. 8 0
      js/locales/cs.js
  18. 8 0
      js/locales/da.js
  19. 8 0
      js/locales/de.js
  20. 8 0
      js/locales/el.js
  21. 8 0
      js/locales/es.js
  22. 8 0
      js/locales/et.js
  23. 8 0
      js/locales/fa.js
  24. 7 0
      js/locales/fi.js
  25. 8 0
      js/locales/fr.js
  26. 8 0
      js/locales/gl.js
  27. 8 0
      js/locales/he.js
  28. 8 0
      js/locales/hu.js
  29. 8 0
      js/locales/id.js
  30. 8 0
      js/locales/it.js
  31. 8 0
      js/locales/ja.js
  32. 8 0
      js/locales/ka.js
  33. 8 0
      js/locales/kr.js
  34. 8 0
      js/locales/kz.js
  35. 8 0
      js/locales/lt.js
  36. 8 0
      js/locales/nl.js
  37. 8 0
      js/locales/no.js
  38. 8 0
      js/locales/pl.js
  39. 8 0
      js/locales/pt-BR.js
  40. 8 0
      js/locales/pt.js
  41. 8 0
      js/locales/ro.js
  42. 8 0
      js/locales/ru.js
  43. 8 0
      js/locales/sk.js
  44. 8 0
      js/locales/sl.js
  45. 8 0
      js/locales/sv.js
  46. 8 0
      js/locales/th.js
  47. 8 0
      js/locales/tr.js
  48. 8 0
      js/locales/uk.js
  49. 8 0
      js/locales/uz.js
  50. 8 0
      js/locales/vi.js
  51. 8 0
      js/locales/zh-TW.js
  52. 8 0
      js/locales/zh.js
  53. 2 2
      nuget/Package.nuspec
  54. 2 2
      package.json
  55. 1 1
      scss/fileinput-rtl.scss
  56. 22 54
      scss/fileinput.scss
  57. 1 1
      scss/themes/explorer-fa/theme.scss
  58. 1 1
      scss/themes/explorer-fas/theme.scss
  59. 1 1
      scss/themes/explorer/theme.scss
  60. 1 1
      themes/explorer-fa/theme.css
  61. 2 1
      themes/explorer-fa/theme.js
  62. 1 1
      themes/explorer-fa/theme.min.css
  63. 1 1
      themes/explorer-fa/theme.min.js
  64. 1 1
      themes/explorer-fas/theme.css
  65. 12 11
      themes/explorer-fas/theme.js
  66. 1 1
      themes/explorer-fas/theme.min.css
  67. 1 1
      themes/explorer-fas/theme.min.js
  68. 1 1
      themes/explorer/theme.css
  69. 1 1
      themes/explorer/theme.js
  70. 1 1
      themes/explorer/theme.min.css
  71. 1 1
      themes/explorer/theme.min.js
  72. 2 1
      themes/fa/theme.js
  73. 2 2
      themes/fa/theme.min.js
  74. 2 1
      themes/fas/theme.js
  75. 2 2
      themes/fas/theme.min.js
  76. 2 1
      themes/gly/theme.js
  77. 2 2
      themes/gly/theme.min.js

+ 45 - 0
CHANGE.md

@@ -1,6 +1,51 @@
 Change Log: `bootstrap-fileinput`
 =================================
 
+## version 5.0.0 
+
+### MAJOR RELEASE
+
+**Date:** _under development_
+
+- (enh #1378): Allow throttling / delaying xhr progress updates.
+    - New property `uploadProgressDelay` in microseconds - will default to `100`  - this will control how frequent the xhr upload progress will be checked. If set to null or 0 - will do it every microsecond.
+    - New property `maxAjaxThreads` (will default to `5`) that will allow to spawn only this limit of ajax requests in parallel.
+    - The above is complemented by `resumableUploadOptions['maxThreads']` (defaults to 4) which is applicable for spawning number of ajax chunk requests for resumable uploads. The `resumableUploadOptions['maxThreads']` property must be less than or equal to `maxThreads` - else it will be over-ridden by `maxThreads` global setting.
+- (enh #1377): Display extended upload statistics like bitrate and pending time.
+    - add `layoutTemplates['stats']` for displaying stats
+    ```js
+    layoutTemplates.stats = '<div class="text-info file-upload-stats">' +
+        '<span class="pending-time">{pendingTime}</span> ' +
+        '<span class="upload-speed">{uploadSpeed}</span>' +
+        '</div>';
+    ```
+    - token `{stats}` will be replaced with above
+    - by default '{stats}' will be appended at the end of `layoutTemplates['progress']`
+    - display pending time remaining and upload speed within stats
+    - enhance xhr progress to support updating stats
+- (enh #1374): Allow exif data of images to be read from server.
+    - `initialPreviewConfig` sent from the server can contain the `exif` property as an object.
+    - allows auto orientation of JPEG image files based on exif orientation
+    - `autoOrientImageInitial` is a new boolean property that controls whether images need to be auto-oriented based on exif orientation.
+- (enh #1373): Selectively disable file selection and preview for certain file extensions.
+        - `allowedPreviewTypes` (existing)
+        - `allowedPreviewMimeTypes` (existing)
+        - `allowedPreviewExtensions` (new)
+        - `disabledPreviewTypes` (new)
+        - `disabledPreviewExtensions` (new) - defaults to `['msi', 'exe', 'com', 'zip', 'rar', 'app', 'vb', 'scr']`
+        - `disabledPreviewMimeTypes` (new) - defaults to `['application/octet-stream']`
+- (enh #1370): Add ability for pausing and resuming uploads
+- (enh #1368): Better enhanced file management and queuing. 
+    - New `fileManager` and `resumableManager` internal objects. 
+    - `filestack` property has been removed
+    - `addToFileStack` and `updateFileStack` methods have been removed
+- (enh #1321): Add ability to define separate thumbnail and zoom images / file data. 
+- (enh #1264, #1145): Allow configurable file actions as a callback. 
+    - The `showXXX` properties in `fileActionSettings` ca3n now be setup as a callback.
+    - Can read any property from the `initialPreviewConfig` for initial preview thumbnails
+- (enh #1249, #290): Add capability for resumable and chunk uploads.
+    - New properties `enableResumableUpload` and `resumableUploadOptions`
+
 ## version 4.5.3
 
 **Date:** 21-Mar-2019

+ 11 - 9
README.md

@@ -17,7 +17,9 @@
 [![Packagist Downloads](https://poser.pugx.org/kartik-v/bootstrap-fileinput/downloads)](https://packagist.org/packages/kartik-v/bootstrap-fileinput)
 [![Monthly Downloads](https://poser.pugx.org/kartik-v/bootstrap-fileinput/d/monthly)](https://packagist.org/packages/kartik-v/bootstrap-fileinput)
 
-An enhanced HTML 5 file input for Bootstrap 3.x and 4.x with file preview for various files, offers multiple selection, and more. The plugin allows you a simple way to setup an advanced file picker/upload control built to work specially with Bootstrap CSS3 styles. It enhances the file input functionality further, by offering support to preview a wide variety of files i.e. images, text, html, video, audio, flash, and objects. In addition, it includes AJAX based uploads, dragging &amp; dropping files, viewing upload progress, and selectively previewing, adding, or deleting files.
+An enhanced HTML 5 file input for Bootstrap 3.x and 4.x with file preview for various files, offers multiple selection, resumable chunk uploads, and more. The plugin allows you a simple way to setup an advanced file picker/upload control built to work specially with Bootstrap 3.x or 4.x CSS3 styles. It enhances the file input functionality further, by offering support to preview a wide variety of files i.e. images, text, html, video, audio, flash, and objects. In addition, it includes AJAX based uploads, dragging &amp; dropping files, viewing upload progress, and selectively previewing, adding, or deleting files. 
+
+> NOTE: Version 5.x is a significant rewrite. With version 5.x, the plugin code has been revamped with enhanced file management, resumable chunk uploads support, and other new features. You can go through [the enhancements and issue log documented for 5.0.0 milestone](https://github.com/kartik-v/bootstrap-fileinput/issues?q=is%3Aissue+milestone%3A5.0.0+is%3Aclosed).   
 
 ![Krajee Default Theme](https://lh3.googleusercontent.com/8m5BKa-o2_W63OuL-NJtAYOxelboHccfsDojxdqhmVCxY49LTiSVK8rOywzup2EDJlXcda_SsKkMVA=w1366-h768-rw-no)
 
@@ -75,19 +77,19 @@ Step 1: Load the following assets in your header.
 ```html
 <!-- bootstrap 4.x is supported. You can also use the bootstrap css 3.3.x versions -->
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
-<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.2/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css" />
+<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.0/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css" />
 <!-- if using RTL (Right-To-Left) orientation, load the RTL CSS file after fileinput.css by uncommenting below -->
-<!-- link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.2/css/fileinput-rtl.min.css" media="all" rel="stylesheet" type="text/css" /-->
+<!-- link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.0/css/fileinput-rtl.min.css" media="all" rel="stylesheet" type="text/css" /-->
 <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
 <!-- piexif.min.js is needed for auto orienting image files OR when restoring exif data in resized images and when you 
     wish to resize images before upload. This must be loaded before fileinput.min.js -->
-<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.2/js/plugins/piexif.min.js" type="text/javascript"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.0/js/plugins/piexif.min.js" type="text/javascript"></script>
 <!-- sortable.min.js is only needed if you wish to sort / rearrange files in initial preview. 
     This must be loaded before fileinput.min.js -->
-<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.2/js/plugins/sortable.min.js" type="text/javascript"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.0/js/plugins/sortable.min.js" type="text/javascript"></script>
 <!-- purify.min.js is only needed if you wish to purify HTML content in your preview for 
     HTML files. This must be loaded before fileinput.min.js -->
-<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.2/js/plugins/purify.min.js" type="text/javascript"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.0/js/plugins/purify.min.js" type="text/javascript"></script>
 <!-- popper.min.js below is needed if you use bootstrap 4.x. You can also use the bootstrap js 
    3.3.x versions without popper.min.js. -->
 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
@@ -95,11 +97,11 @@ Step 1: Load the following assets in your header.
     dialog. bootstrap 4.x is supported. You can also use the bootstrap js 3.3.x versions. -->
 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" type="text/javascript"></script>
 <!-- the main fileinput plugin file -->
-<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.2/js/fileinput.min.js"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.0/js/fileinput.min.js"></script>
 <!-- optionally if you need a theme like font awesome theme you can include it as mentioned below -->
-<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.2/themes/fa/theme.js"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.0/themes/fa/theme.js"></script>
 <!-- optionally if you need translation for your language then include  locale file as mentioned below -->
-<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.5.2/js/locales/(lang).js"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/5.0.0/js/locales/(lang).js"></script>
 ```
 
 If you noticed, you need to load the `jquery.min.js` and `bootstrap.min.css` in addition to the `fileinput.min.css` and `fileinput.min.js`. The theme file `themes/fa/theme.js` can be optionally included for the font awesome icons styling. The locale file `<lang>.js` can be optionally included for translating for your language if needed.

+ 2 - 2
bower.json

@@ -1,6 +1,6 @@
 {
     "name": "bootstrap-fileinput",
-    "version": "4.5.3",
+    "version": "5.0.0",
     "homepage": "https://github.com/kartik-v/bootstrap-fileinput",
     "authors": [
         "Kartik Visweswaran <[email protected]>"
@@ -25,7 +25,7 @@
     ],
     "dependencies": {
         "jquery": ">= 1.9.0",
-        "bootstrap": ">= 3.0.0"
+        "bootstrap": ">= 3.4.1"
     },
     "license": "BSD-3-Clause",
     "ignore": [

+ 1 - 20
css/fileinput-rtl.css

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee RTL (Right To Left) default styling for bootstrap-fileinput.
@@ -13,86 +13,67 @@
 .kv-rtl .close, .kv-rtl .krajee-default .file-actions, .kv-rtl .krajee-default .file-other-error {
     float: left;
 }
-
 .kv-rtl .krajee-default.file-preview-frame, .kv-rtl .krajee-default .file-drag-handle, .kv-rtl .krajee-default .file-upload-indicator {
     float: right;
 }
-
 .kv-rtl .file-zoom-dialog, .kv-rtl .file-error-message pre, .kv-rtl .file-error-message ul {
     text-align: right;
 }
-
 .kv-rtl {
     direction: rtl;
 }
-
 .kv-rtl .floating-buttons {
     left: 10px;
     right: auto;
 }
-
 .kv-rtl .floating-buttons .btn-kv {
     margin-left: 0;
     margin-right: 3px;
 }
-
 .kv-rtl .file-caption-icon {
     left: auto;
     right: 8px;
 }
-
 .kv-rtl .file-drop-zone {
     margin: 12px 12px 12px 15px;
 }
-
 .kv-rtl .btn-prev {
     right: 1px;
     left: auto;
 }
-
 .kv-rtl .btn-next {
     left: 1px;
     right: auto;
 }
-
 .kv-rtl .pull-right, .kv-rtl .float-right {
     float: left !important;
 }
-
 .kv-rtl .pull-left, .kv-rtl .float-left {
     float: right !important;
 }
-
 .kv-rtl .kv-zoom-title {
     direction: ltr;
 }
-
 .kv-rtl .krajee-default.file-preview-frame {
     box-shadow: -1px 1px 5px 0 #a2958a;
 }
-
 .kv-rtl .krajee-default.file-preview-frame:not(.file-preview-error):hover {
     box-shadow: -3px 3px 5px 0 #333;
 }
-
 .kv-rtl .kv-zoom-actions .btn-kv {
     margin-left: 0;
     margin-right: 3px;
 }
-
 .kv-rtl .file-caption.icon-visible .file-caption-name {
     padding-left: 0;
     padding-right: 15px;
 }
-
 .kv-rtl .input-group-btn > .btn:last-child {
     border-radius: 4px 0 0 4px;
 }
-
 .kv-rtl .input-group .form-control:first-child {
     border-radius: 0 4px 4px 0;
 }
-
 .kv-rtl .btn-file input[type=file] {
     left: auto;
     right: 0;

+ 1 - 1
css/fileinput-rtl.min.css

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee RTL (Right To Left) default styling for bootstrap-fileinput.

+ 128 - 12
css/fileinput.css

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee default styling for bootstrap-fileinput.
@@ -14,6 +14,7 @@
     width: 0;
     height: 0;
 }
+
 .file-no-browse {
     position: absolute;
     left: 50%;
@@ -27,32 +28,48 @@
     outline: none;
     box-shadow: none;
 }
-.kv-hidden, .file-caption-icon, .file-zoom-dialog .modal-header:before, .file-zoom-dialog .modal-header:after, .file-input-new .file-preview, .file-input-new .close, .file-input-new .glyphicon-file, .file-input-new .fileinput-remove-button, .file-input-new .fileinput-upload-button, .file-input-new .no-browse .input-group-btn, .file-input-ajax-new .fileinput-remove-button, .file-input-ajax-new .fileinput-upload-button, .file-input-ajax-new .no-browse .input-group-btn, .hide-content .kv-file-content {
+
+.kv-hidden, .file-caption-icon, .file-zoom-dialog .modal-header:before, .file-zoom-dialog .modal-header:after, .file-input-new .file-preview, .file-input-new .close, .file-input-new .glyphicon-file, .file-input-new .fileinput-remove-button, .file-input-new .fileinput-upload-button, .file-input-new .no-browse .input-group-btn, .file-input-ajax-new .fileinput-remove-button, .file-input-ajax-new .fileinput-upload-button, .file-input-ajax-new .no-browse .input-group-btn, .hide-content .kv-file-content, .is-locked .fileinput-upload-button, .is-locked .fileinput-remove-button {
     display: none;
 }
+
 .btn-file input[type=file], .file-caption-icon, .file-preview .fileinput-remove, .krajee-default .file-thumb-progress, .file-zoom-dialog .btn-navigate, .file-zoom-dialog .floating-buttons {
     position: absolute;
 }
+
+.file-caption-icon .kv-caption-icon {
+    line-height: inherit;
+}
+
 .file-input, .file-loading:before, .btn-file, .file-caption, .file-preview, .krajee-default.file-preview-frame, .krajee-default .file-thumbnail-footer, .file-zoom-dialog .modal-dialog {
     position: relative;
 }
+
 .file-error-message pre, .file-error-message ul, .krajee-default .file-actions, .krajee-default .file-other-error {
     text-align: left;
 }
+
 .file-error-message pre, .file-error-message ul {
     margin: 0;
 }
+
 .krajee-default .file-drag-handle, .krajee-default .file-upload-indicator {
     float: left;
-    margin: 5px 0 -5px;
+    margin-top: 10px;
     width: 16px;
     height: 16px;
 }
+
 .krajee-default .file-thumb-progress .progress, .krajee-default .file-thumb-progress .progress-bar {
     height: 11px;
     font-family: Verdana, Helvetica, sans-serif;
     font-size: 9px;
 }
+
+.krajee-default .file-thumb-progress .progress, .kv-upload-progress .progress {
+    background-color: #ccc;
+}
+
 .krajee-default .file-caption-info, .krajee-default .file-size-info {
     display: block;
     white-space: nowrap;
@@ -62,17 +79,21 @@
     height: 15px;
     margin: auto;
 }
+
 .file-zoom-content > .file-object.type-video, .file-zoom-content > .file-object.type-flash, .file-zoom-content > .file-object.type-image {
     max-width: 100%;
     max-height: 100%;
     width: auto;
 }
+
 .file-zoom-content > .file-object.type-video, .file-zoom-content > .file-object.type-flash {
     height: 100%;
 }
+
 .file-zoom-content > .file-object.type-pdf, .file-zoom-content > .file-object.type-html, .file-zoom-content > .file-object.type-text, .file-zoom-content > .file-object.type-default {
     width: 100%;
 }
+
 .file-loading:before {
     content: " Loading...";
     display: inline-block;
@@ -83,13 +104,16 @@
     color: #999;
     background: transparent url(../img/loading.gif) top left no-repeat;
 }
+
 .file-object {
     margin: 0 0 -5px 0;
     padding: 0;
 }
+
 .btn-file {
     overflow: hidden;
 }
+
 .btn-file input[type=file] {
     top: 0;
     left: 0;
@@ -101,11 +125,13 @@
     cursor: inherit;
     display: block;
 }
+
 .btn-file ::-ms-browse {
     font-size: 10000px;
     width: 100%;
     height: 100%;
 }
+
 .file-caption .file-caption-name {
     width: 100%;
     margin: 0;
@@ -115,15 +141,19 @@
     background: none;
     outline: none;
 }
+
 .file-caption.icon-visible .file-caption-icon {
     display: inline-block;
 }
+
 .file-caption.icon-visible .file-caption-name {
     padding-left: 15px;
 }
+
 .file-caption-icon {
     left: 8px;
 }
+
 .file-error-message {
     color: #a94442;
     background-color: #f2dede;
@@ -132,14 +162,17 @@
     border-radius: 4px;
     padding: 15px;
 }
+
 .file-error-message pre {
     margin: 5px 0;
 }
+
 .file-caption-disabled {
     background-color: #eee;
     cursor: not-allowed;
     opacity: 1;
 }
+
 .file-preview {
     border-radius: 5px;
     border: 1px solid #ddd;
@@ -147,50 +180,67 @@
     width: 100%;
     margin-bottom: 5px;
 }
+
 .file-preview .btn-xs {
     padding: 1px 5px;
     font-size: 12px;
     line-height: 1.5;
     border-radius: 3px;
 }
+
 .file-preview .fileinput-remove {
     top: 1px;
     right: 1px;
     line-height: 10px;
 }
+
 .file-preview .clickable {
     cursor: pointer;
 }
+
 .file-preview-image {
     font: 40px Impact, Charcoal, sans-serif;
     color: #008000;
 }
+
 .krajee-default.file-preview-frame {
     margin: 8px;
-    border: 1px solid rgba(0, 0, 0, 0.2);
-    box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
+    border: 1px solid rgba(0,0,0,0.2);
+    box-shadow: 0 0 10px 0 rgba(0,0,0,0.2);
     padding: 6px;
     float: left;
     text-align: center;
 }
+
 .krajee-default.file-preview-frame .kv-file-content {
     width: 213px;
     height: 160px;
 }
+
+.krajee-default .file-preview-other-frame {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+
 .krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered {
     width: 400px;
 }
+
 .krajee-default.file-preview-frame[data-template="audio"] .kv-file-content {
     width: 240px;
     height: 55px;
 }
+
 .krajee-default.file-preview-frame .file-thumbnail-footer {
     height: 70px;
 }
+
 .krajee-default.file-preview-frame:not(.file-preview-error):hover {
-    border: 1px solid rgba(0, 0, 0, 0.3);
-    box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.4);
+    border: 1px solid rgba(0,0,0,0.3);
+    box-shadow: 0 0 10px 0 rgba(0,0,0,0.4);
 }
+
 .krajee-default .file-preview-text {
     display: block;
     color: #428bca;
@@ -200,67 +250,94 @@
     padding: 8px;
     resize: none;
 }
+
 .krajee-default .file-preview-html {
     border: 1px solid #ddd;
     padding: 8px;
     overflow: auto;
 }
+
 .krajee-default .file-other-icon {
     font-size: 6em;
+    line-height: 1;
 }
+
 .krajee-default .file-footer-buttons {
     float: right;
 }
+
 .krajee-default .file-footer-caption {
     display: block;
     text-align: center;
     padding-top: 4px;
     font-size: 11px;
     color: #777;
-    margin-bottom: 15px;
+    margin-bottom: 30px;
 }
+
+.file-upload-stats {
+    font-size: 10px;
+    text-align: center;
+    width: 100%;
+}
+
+.kv-upload-progress .file-upload-stats {
+    font-size: 12px;
+    margin: -10px 0 5px;
+}
+
 .krajee-default .file-preview-error {
     opacity: 0.65;
     box-shadow: none;
 }
+
 .krajee-default .file-thumb-progress {
     height: 11px;
     top: 37px;
     left: 0;
     right: 0;
 }
+
 .krajee-default.kvsortable-ghost {
     background: #e1edf7;
     border: 2px solid #a1abff;
 }
+
 .krajee-default .file-preview-other:hover {
     opacity: 0.8;
 }
+
 .krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover {
     color: #000;
 }
+
 .kv-upload-progress .progress {
     height: 20px;
     margin: 10px 0;
     overflow: hidden;
 }
+
 .kv-upload-progress .progress-bar {
     height: 20px;
     font-family: Verdana, Helvetica, sans-serif;
 }
+
 /*noinspection CssOverwrittenProperties*/
 .file-zoom-dialog .file-other-icon {
     font-size: 22em;
     font-size: 50vmin;
 }
+
 .file-zoom-dialog .modal-dialog {
     width: auto;
 }
+
 .file-zoom-dialog .modal-header {
     display: flex;
     align-items: center;
     justify-content: space-between;
 }
+
 .file-zoom-dialog .btn-navigate {
     padding: 0;
     margin: 0;
@@ -272,24 +349,30 @@
     font-size: 4em;
     color: #1c94c4;
 }
+
 .file-zoom-dialog .btn-navigate:not([disabled]):hover {
     outline: none;
     box-shadow: none;
     opacity: 0.6;
 }
+
 .file-zoom-dialog .floating-buttons {
     top: 5px;
     right: 10px;
 }
+
 .file-zoom-dialog .btn-navigate[disabled] {
     opacity: 0.3;
 }
+
 .file-zoom-dialog .btn-prev {
     left: 1px;
 }
+
 .file-zoom-dialog .btn-next {
     right: 1px;
 }
+
 .file-zoom-dialog .kv-zoom-title {
     font-weight: 300;
     color: #999;
@@ -298,20 +381,25 @@
     white-space: nowrap;
     text-overflow: ellipsis;
 }
+
 .file-input-new .no-browse .form-control {
     border-top-right-radius: 4px;
     border-bottom-right-radius: 4px;
 }
+
 .file-input-ajax-new .no-browse .form-control {
     border-top-right-radius: 4px;
     border-bottom-right-radius: 4px;
 }
+
 .file-caption-main {
     width: 100%;
 }
+
 .file-thumb-loading {
     background: transparent url(../img/loading.gif) no-repeat scroll center center content-box !important;
 }
+
 .file-drop-zone {
     border: 1px dashed #aaa;
     border-radius: 4px;
@@ -320,76 +408,99 @@
     margin: 12px 15px 12px 12px;
     padding: 5px;
 }
+
 .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-drop-zone-title {
     color: #aaa;
     font-size: 1.6em;
     padding: 85px 10px;
     cursor: default;
 }
+
 .file-highlighted {
     border: 2px dashed #999 !important;
     background-color: #eee;
 }
+
 .file-uploading {
     background: url(../img/loading-sm.gif) no-repeat center bottom 10px;
     opacity: 0.65;
 }
+
 .file-zoom-fullscreen .modal-dialog {
     min-width: 100%;
     margin: 0;
 }
+
 .file-zoom-fullscreen .modal-content {
     border-radius: 0;
     box-shadow: none;
     min-height: 100vh;
 }
+
 .file-zoom-fullscreen .modal-body {
     overflow-y: auto;
 }
+
 .floating-buttons {
     z-index: 3000;
 }
+
 .floating-buttons .btn-kv {
     margin-left: 3px;
     z-index: 3000;
 }
+
+.kv-zoom-actions .btn-kv {
+    margin-left: 3px;
+}
+
 .file-zoom-content {
     height: 480px;
     text-align: center;
 }
+
 .file-zoom-content .file-preview-image {
     max-height: 100%;
 }
+
 .file-zoom-content .file-preview-video {
     max-height: 100%;
 }
+
 .file-zoom-content > .file-object.type-image {
     height: auto;
     min-height: inherit;
 }
+
 .file-zoom-content > .file-object.type-audio {
     width: auto;
     height: 30px;
 }
+
 @media (min-width: 576px) {
     .file-zoom-dialog .modal-dialog {
         max-width: 500px;
     }
 }
+
 @media (min-width: 992px) {
     .file-zoom-dialog .modal-lg {
         max-width: 800px;
     }
 }
+
 @media (max-width: 767px) {
     .file-preview-thumbnails {
         display: flex;
@@ -397,38 +508,43 @@
         align-items: center;
         flex-direction: column;
     }
+
     .file-zoom-dialog .modal-header {
         flex-direction: column;
     }
 }
+
 @media (max-width: 350px) {
     .krajee-default.file-preview-frame:not([data-template="audio"]) .kv-file-content {
         width: 160px;
     }
 }
+
 @media (max-width: 420px) {
     .krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered {
         width: 100%;
     }
 }
+
 .file-loading[dir=rtl]:before {
     background: transparent url(../img/loading.gif) top right no-repeat;
     padding-left: 0;
     padding-right: 20px;
 }
+
 .file-sortable .file-drag-handle {
     cursor: move;
     opacity: 1;
 }
+
 .file-sortable .file-drag-handle:hover {
     opacity: 0.7;
 }
+
 .clickable .file-drop-zone-title {
     cursor: pointer;
 }
-.kv-zoom-actions .btn-kv {
-    margin-left: 3px;
-}
+
 .file-preview-initial.sortable-chosen {
     background-color: #d9edf7;
-}
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 1
css/fileinput.min.css


+ 141 - 151
examples/index.html

@@ -1,140 +1,130 @@
 <!DOCTYPE html>
-<!-- release v4.5.3, copyright 2014 - 2019 Kartik Visweswaran -->
+<!-- release v5.0.0, copyright 2014 - 2019 Kartik Visweswaran -->
 <!--suppress JSUnresolvedLibraryURL -->
 <html lang="en">
 <head>
-	<meta charset="UTF-8"/>
-	<title>Krajee JQuery Plugins - &copy; Kartik</title>
-
-	<link rel="stylesheet"
-	      href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
-	      crossorigin="anonymous">
-	<link href="../css/fileinput.css" media="all" rel="stylesheet" type="text/css"/>
-	<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css"
-	      crossorigin="anonymous">
-	<link href="../themes/explorer-fas/theme.css" media="all" rel="stylesheet" type="text/css"/>
-	<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
-	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.bundle.min.js"
-	        crossorigin="anonymous"></script>
-	<script src="../js/plugins/piexif.js" type="text/javascript"></script>
-	<script src="../js/plugins/sortable.js" type="text/javascript"></script>
-	<script src="../js/fileinput.js" type="text/javascript"></script>
-	<script src="../js/locales/fr.js" type="text/javascript"></script>
-	<script src="../js/locales/es.js" type="text/javascript"></script>
-	<script src="../themes/fas/theme.js" type="text/javascript"></script>
-	<script src="../themes/explorer-fas/theme.js" type="text/javascript"></script>
+    <meta charset="UTF-8"/>
+    <title>Krajee JQuery Plugins - &copy; Kartik</title>
+    
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" crossorigin="anonymous">
+    <link href="../css/fileinput.css" media="all" rel="stylesheet" type="text/css"/>
+    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" crossorigin="anonymous">
+    <link href="../themes/explorer-fas/theme.css" media="all" rel="stylesheet" type="text/css"/>
+    <script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
+    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
+    <script src="../js/plugins/piexif.js" type="text/javascript"></script>
+    <script src="../js/plugins/sortable.js" type="text/javascript"></script>
+    <script src="../js/fileinput.js" type="text/javascript"></script>
+    <script src="../js/locales/fr.js" type="text/javascript"></script>
+    <script src="../js/locales/es.js" type="text/javascript"></script>
+    <script src="../themes/fas/theme.js" type="text/javascript"></script>
+    <script src="../themes/explorer-fas/theme.js" type="text/javascript"></script>
 </head>
 <body>
 <div class="container my-4">
-	<h1>Bootstrap File Input Examples
-		<small><a href="https://github.com/kartik-v/bootstrap-fileinput-samples"><i
-				class="glyphicon glyphicon-download"></i> Download Sample Files</a></small>
-	</h1>
-	<hr>
-	<form enctype="multipart/form-data">
-		<div class="file-loading">
-			<input id="kv-explorer" type="file" multiple>
-		</div>
-		<br>
-		<div class="file-loading">
-			<input id="file-0a" class="file" type="file" multiple data-min-file-count="1"
-			       data-theme="fas">
-		</div>
-		<br>
-		<button type="submit" class="btn btn-primary">Submit</button>
-		<button type="reset" class="btn btn-outline-secondary">Reset</button>
-	</form>
-	<hr>
-	<form enctype="multipart/form-data">
-		<label for="file-0b">Test invalid input type</label>
-		<div class="file-loading">
-			<input id="file-0b" name="file-0b" class="file" type="text" multiple
-			       data-min-file-count="1" data-theme="fas">
-		</div>
-		<script>
+    <h1>Bootstrap File Input Examples
+        <small><a href="https://github.com/kartik-v/bootstrap-fileinput-samples"><i
+                class="glyphicon glyphicon-download"></i> Download Sample Files</a></small>
+    </h1>
+    <hr>
+    <form enctype="multipart/form-data">
+        <div class="file-loading">
+            <input id="kv-explorer" type="file" multiple>
+        </div>
+        <br>
+        <div class="file-loading">
+            <input id="file-0a" class="file" type="file" multiple data-min-file-count="1" data-theme="fas">
+        </div>
+        <br>
+        <button type="submit" class="btn btn-primary">Submit</button>
+        <button type="reset" class="btn btn-outline-secondary">Reset</button>
+    </form>
+    <hr>
+    <form enctype="multipart/form-data">
+        <label for="file-0b">Test invalid input type</label>
+        <div class="file-loading">
+            <input id="file-0b" name="file-0b" class="file" type="text" multiple data-min-file-count="1" data-theme="fas">
+        </div>
+        <script>
             $(document).on('ready', function () {
-                $('#file-0b').fileinput();
+                $("#file-0b").fileinput();
             });
-		</script>
-	</form>
-	<hr>
-	<form enctype="multipart/form-data">
-		<div class="file-loading">
-			<input id="file-0c" class="file" type="file" multiple data-min-file-count="3"
-			       data-theme="fas">
-		</div>
-		<hr>
-		<div class="form-group">
-			<div class="file-loading">
-				<input id="file-0d" class="file" type="file" data-theme="fas">
-			</div>
-		</div>
-		<hr>
-		<div class="form-group">
-			<div class="file-loading">
-				<input id="file-1" type="file" multiple class="file" data-overwrite-initial="false"
-				       data-min-file-count="2" data-theme="fas">
-			</div>
-		</div>
-		<hr>
-		<div class="form-group">
-			<div class="file-loading">
-				<input id="file-2" type="file" class="file" readonly data-show-upload="false"
-				       data-theme="fas">
-			</div>
-		</div>
-		<hr>
-		<div class="form-group">
-			<div class="file-loading">
-				<label>Preview File Icon</label>
-				<input id="file-3" type="file" multiple>
-			</div>
-		</div>
-		<hr>
-		<div class="form-group">
-			<div class="file-loading">
-				<input id="file-4" type="file" class="file" data-upload-url="#" data-theme="fas">
-			</div>
-		</div>
-		<hr>
-		<div class="form-group">
-			<button class="btn btn-warning" type="button">Disable Test</button>
-			<button class="btn btn-info" type="reset">Refresh Test</button>
-			<button class="btn btn-primary">Submit</button>
-			<button class="btn btn-outline-secondary" type="reset">Reset</button>
-		</div>
-		<hr>
-		<div class="form-group">
-			<div class="file-loading">
-				<input type="file" class="file" id="test-upload" multiple data-theme="fas">
-			</div>
-			<div id="errorBlock" class="help-block"></div>
-		</div>
-		<hr>
-		<div class="form-group">
-			<div class="file-loading">
-				<input id="file-5" class="file" type="file" multiple data-preview-file-type="any"
-				       data-upload-url="#" data-theme="fas">
-			</div>
-		</div>
-	</form>
+        </script>
+    </form>
+    <hr>
+    <form enctype="multipart/form-data">
+        <div class="file-loading">
+            <input id="file-0c" class="file" type="file" multiple data-min-file-count="3" data-theme="fas">
+        </div>
+        <hr>
+        <div class="form-group">
+            <div class="file-loading">
+                <input id="file-0d" class="file" type="file" data-theme="fas">
+            </div>
+        </div>
+        <hr>
+        <div class="form-group">
+            <div class="file-loading">
+                <input id="file-1" type="file" multiple class="file" data-overwrite-initial="false" data-min-file-count="2" data-theme="fas">
+            </div>
+        </div>
+        <hr>
+        <div class="form-group">
+            <div class="file-loading">
+                <input id="file-2" type="file" class="file" readonly data-show-upload="false" data-theme="fas">
+            </div>
+        </div>
+        <hr>
+        <div class="form-group">
+            <div class="file-loading">
+                <label>Preview File Icon</label>
+                <input id="file-3" type="file" multiple>
+            </div>
+        </div>
+        <hr>
+        <div class="form-group">
+            <div class="file-loading">
+                <input id="file-4" type="file" class="file" data-upload-url="#" data-theme="fas">
+            </div>
+        </div>
+        <hr>
+        <div class="form-group">
+            <button class="btn btn-warning" type="button">Disable Test</button>
+            <button class="btn btn-info" type="reset">Refresh Test</button>
+            <button class="btn btn-primary">Submit</button>
+            <button class="btn btn-outline-secondary" type="reset">Reset</button>
+        </div>
+        <hr>
+        <div class="form-group">
+            <div class="file-loading">
+                <input type="file" class="file" id="test-upload" multiple data-theme="fas">
+            </div>
+            <div id="errorBlock" class="help-block"></div>
+        </div>
+        <hr>
+        <div class="form-group">
+            <div class="file-loading">
+                <input id="file-5" class="file" type="file" multiple data-preview-file-type="any" data-upload-url="#" data-theme="fas">
+            </div>
+        </div>
+    </form>
 
 
-	<hr>
-	<h4>Multi Language Inputs</h4>
-	<form enctype="multipart/form-data">
-		<label>French Input</label>
-		<div class="file-loading">
-			<input id="file-fr" name="file-fr[]" type="file" multiple>
-		</div>
-		<hr style="border: 2px dotted">
-		<label>Spanish Input</label>
-		<div class="file-loading">
-			<input id="file-es" name="file-es[]" type="file" multiple>
-		</div>
-	</form>
-	<hr>
-	<br>
+    <hr>
+    <h4>Multi Language Inputs</h4>
+    <form enctype="multipart/form-data">
+        <label>French Input</label>
+        <div class="file-loading">
+            <input id="file-fr" name="file-fr[]" type="file" multiple>
+        </div>
+        <hr style="border: 2px dotted">
+        <label>Spanish Input</label>
+            <div class="file-loading">
+                <input id="file-es" name="file-es[]" type="file" multiple>
+            </div>
+    </form>
+    <hr>
+    <br>
 </div>
 </body>
 <script>
@@ -150,11 +140,11 @@
         uploadUrl: '#',
         allowedFileExtensions: ['jpg', 'png', 'gif']
     });
-    $('#file-0').fileinput({
+    $("#file-0").fileinput({
         theme: 'fas',
         'allowedFileExtensions': ['jpg', 'png', 'gif']
     });
-    $('#file-1').fileinput({
+    $("#file-1").fileinput({
         theme: 'fas',
         uploadUrl: '#', // you must set a valid URL here else you will get an error
         allowedFileExtensions: ['jpg', 'png', 'gif'],
@@ -171,40 +161,40 @@
      alert('File Selected. Name: ' + l + ', Num: ' + n);
      });
      */
-    $('#file-3').fileinput({
+    $("#file-3").fileinput({
         theme: 'fas',
         showUpload: false,
         showCaption: false,
-        browseClass: 'btn btn-primary btn-lg',
-        fileType: 'any',
-        previewFileIcon: '<i class=\'glyphicon glyphicon-king\'></i>',
+        browseClass: "btn btn-primary btn-lg",
+        fileType: "any",
+        previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
         overwriteInitial: false,
         initialPreviewAsData: true,
         initialPreview: [
-            'http://lorempixel.com/1920/1080/transport/1',
-            'http://lorempixel.com/1920/1080/transport/2',
-            'http://lorempixel.com/1920/1080/transport/3'
+            "http://lorempixel.com/1920/1080/transport/1",
+            "http://lorempixel.com/1920/1080/transport/2",
+            "http://lorempixel.com/1920/1080/transport/3"
         ],
         initialPreviewConfig: [
-            {caption: 'transport-1.jpg', size: 329892, width: '120px', url: '{$url}', key: 1},
-            {caption: 'transport-2.jpg', size: 872378, width: '120px', url: '{$url}', key: 2},
-            {caption: 'transport-3.jpg', size: 632762, width: '120px', url: '{$url}', key: 3}
+            {caption: "transport-1.jpg", size: 329892, width: "120px", url: "{$url}", key: 1},
+            {caption: "transport-2.jpg", size: 872378, width: "120px", url: "{$url}", key: 2},
+            {caption: "transport-3.jpg", size: 632762, width: "120px", url: "{$url}", key: 3}
         ]
     });
-    $('#file-4').fileinput({
+    $("#file-4").fileinput({
         theme: 'fas',
         uploadExtraData: {kvId: '10'}
     });
-    $('.btn-warning').on('click', function () {
-        var $el = $('#file-4');
+    $(".btn-warning").on('click', function () {
+        var $el = $("#file-4");
         if ($el.attr('disabled')) {
             $el.fileinput('enable');
         } else {
             $el.fileinput('disable');
         }
     });
-    $('.btn-info').on('click', function () {
-        $('#file-4').fileinput('refresh', {previewClass: 'bg-info'});
+    $(".btn-info").on('click', function () {
+        $("#file-4").fileinput('refresh', {previewClass: 'bg-info'});
     });
     /*
      $('#file-4').on('fileselectnone', function() {
@@ -215,26 +205,26 @@
      });
      */
     $(document).ready(function () {
-        $('#test-upload').fileinput({
+        $("#test-upload").fileinput({
             'theme': 'fas',
             'showPreview': false,
             'allowedFileExtensions': ['jpg', 'png', 'gif'],
             'elErrorContainer': '#errorBlock'
         });
-        $('#kv-explorer').fileinput({
+        $("#kv-explorer").fileinput({
             'theme': 'explorer-fas',
             'uploadUrl': '#',
             overwriteInitial: false,
             initialPreviewAsData: true,
             initialPreview: [
-                'http://lorempixel.com/1920/1080/nature/1',
-                'http://lorempixel.com/1920/1080/nature/2',
-                'http://lorempixel.com/1920/1080/nature/3'
+                "http://lorempixel.com/1920/1080/nature/1",
+                "http://lorempixel.com/1920/1080/nature/2",
+                "http://lorempixel.com/1920/1080/nature/3"
             ],
             initialPreviewConfig: [
-                {caption: 'nature-1.jpg', size: 329892, width: '120px', url: '{$url}', key: 1},
-                {caption: 'nature-2.jpg', size: 872378, width: '120px', url: '{$url}', key: 2},
-                {caption: 'nature-3.jpg', size: 632762, width: '120px', url: '{$url}', key: 3}
+                {caption: "nature-1.jpg", size: 329892, width: "120px", url: "{$url}", key: 1},
+                {caption: "nature-2.jpg", size: 872378, width: "120px", url: "{$url}", key: 2},
+                {caption: "nature-3.jpg", size: 632762, width: "120px", url: "{$url}", key: 3}
             ]
         });
         /*

Diferenças do arquivo suprimidas por serem muito extensas
+ 780 - 38
js/fileinput.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 1
js/fileinput.min.js


+ 8 - 0
js/locales/LANG.js

@@ -19,10 +19,13 @@
         removeTitle: 'Clear selected files',
         cancelLabel: 'Cancel',
         cancelTitle: 'Abort ongoing upload',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Upload',
         uploadTitle: 'Upload selected files',
         msgNo: 'No',
         msgNoFilesSelected: 'No files selected',
+        msgPaused: 'Paused',
         msgCancelled: 'Cancelled',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Detailed Preview',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Processing...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Validation Error',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Error while resizing the image.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 36 - 28
js/locales/ar.js

@@ -20,15 +20,18 @@
         removeTitle: 'إزالة الملفات المختارة',
         cancelLabel: 'إلغاء',
         cancelTitle: 'إنهاء الرفع الحالي',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'رفع',
         uploadTitle: 'رفع الملفات المختارة',
         msgNo: 'لا',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'ألغيت',
-        msgPlaceholder: 'Select {files}...',
+        msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'معاينة تفصيلية',
-        msgFileRequired: 'You must select a file to upload.',
-        msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
+        msgFileRequired: 'You must select a file to upload.',
+        msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
         msgSizeTooLarge: 'الملف "{name}" (<b>{size} ك.ب</b>) تعدى الحد الأقصى المسموح للرفع <b>{maxSize} ك.ب</b>.',
         msgFilesTooLess: 'يجب عليك اختيار <b>{n}</b> {files} على الأقل للرفع.',
         msgFilesTooMany: 'عدد الملفات المختارة للرفع <b>({n})</b> تعدت الحد الأقصى المسموح به لعدد <b>{m}</b>.',
@@ -37,25 +40,26 @@
         msgFileNotReadable: 'الملف "{name}" غير قابل للقراءة.',
         msgFilePreviewAborted: 'تم إلغاء معاينة الملف "{name}".',
         msgFilePreviewError: 'حدث خطأ أثناء قراءة الملف "{name}".',
-        msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
+        msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
         msgInvalidFileType: 'نوعية غير صالحة للملف "{name}". فقط هذه النوعيات مدعومة "{types}".',
         msgInvalidFileExtension: 'امتداد غير صالح للملف "{name}". فقط هذه الملفات مدعومة "{extensions}".',
-        msgFileTypes: {
-            'image': 'image',
-            'html': 'HTML',
-            'text': 'text',
-            'video': 'video',
-            'audio': 'audio',
-            'flash': 'flash',
-            'pdf': 'PDF',
-            'object': 'object'
-        },
+        msgFileTypes: {
+            'image': 'image',
+            'html': 'HTML',
+            'text': 'text',
+            'video': 'video',
+            'audio': 'audio',
+            'flash': 'flash',
+            'pdf': 'PDF',
+            'object': 'object'
+        },
         msgUploadAborted: 'تم إلغاء رفع الملف',
-        msgUploadThreshold: 'Processing...',
-        msgUploadBegin: 'Initializing...',
-        msgUploadEnd: 'Done',
+        msgUploadThreshold: 'Processing...',
+        msgUploadBegin: 'Initializing...',
+        msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
-        msgUploadError: 'Error',
+        msgUploadError: 'Error',
         msgValidationError: 'خطأ التحقق من صحة',
         msgLoading: 'تحميل ملف {index} من {files} &hellip;',
         msgProgress: 'تحميل ملف {index} من {files} - {name} - {percent}% منتهي.',
@@ -67,21 +71,25 @@
         msgImageHeightLarge: 'طول ملف الصورة "{name}" لا يمكن أن يتعدى {size} px.',
         msgImageResizeError: 'لم يتمكن من معرفة أبعاد الصورة لتغييرها.',
         msgImageResizeException: 'حدث خطأ أثناء تغيير أبعاد الصورة.<pre>{errors}</pre>',
-        msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
-        msgAjaxProgressError: '{operation} failed',
-        ajaxOperations: {
-            deleteThumb: 'file delete',
-            uploadThumb: 'file upload',
-            uploadBatch: 'batch file upload',
-            uploadExtra: 'form data upload'
-        },
+        msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
+        msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
+        ajaxOperations: {
+            deleteThumb: 'file delete',
+            uploadThumb: 'file upload',
+            uploadBatch: 'batch file upload',
+            uploadExtra: 'form data upload'
+        },
         dropZoneTitle: 'اسحب وأفلت الملفات هنا &hellip;',
         dropZoneClickTitle: '<br>(or click to select {files})',
         fileActionSettings: {
             removeTitle: 'إزالة الملف',
             uploadTitle: 'رفع الملف',
-            uploadRetryTitle: 'Retry upload',
-            downloadTitle: 'Download file',
+            uploadRetryTitle: 'Retry upload',
+            downloadTitle: 'Download file',
             zoomTitle: 'مشاهدة التفاصيل',
             dragTitle: 'Move / Rearrange',
             indicatorNewTitle: 'لم يتم الرفع بعد',

+ 8 - 0
js/locales/az.js

@@ -20,10 +20,13 @@
         removeTitle: 'Seçilmiş faylları təmizlə',
         cancelLabel: 'İmtina et',
         cancelTitle: 'Cari yükləməni dayandır',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Yüklə',
         uploadTitle: 'Seçilmiş faylları yüklə',
         msgNo: 'xeyir',
         msgNoFilesSelected: 'Heç bir fayl seçilməmişdir',
+        msgPaused: 'Paused',
         msgCancelled: 'İmtina edildi',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'İlkin baxış',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'Yükləmə...',
         msgUploadBegin: 'Yoxlama...',
         msgUploadEnd: 'Fayl(lar) yükləndi',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Yükləmə üçün verilmiş məlumatlar yanlışdır',
         msgUploadError: 'Error',
         msgValidationError: 'Yoxlama nəticəsi səhvir',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'Faylın ölçülərini dəyişmək mümkün olmadı.<pre>{errors}</pre>',
         msgAjaxError: '{operation} əməliyyatı zamanı səhv baş verdi. Təkrar yoxlayın!',
         msgAjaxProgressError: '{operation} əməliyyatı yerinə yetirmək mümkün olmadı.',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'faylı sil',
             uploadThumb: 'faylı yüklə',

+ 8 - 0
js/locales/bg.js

@@ -19,10 +19,13 @@
         removeTitle: 'Изчисти избраните',
         cancelLabel: 'Откажи',
         cancelTitle: 'Откажи качването',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Качи',
         uploadTitle: 'Качи избраните файлове',
         msgNo: 'Не',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'Отменен',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Детайлен преглед',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Processing...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'утвърждаване грешка',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Грешка при промяна на размера на изображението.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/ca.js

@@ -19,10 +19,13 @@
         removeTitle: 'Treure arxius seleccionats',
         cancelLabel: 'Cancel',
         cancelTitle: 'Avortar la pujada en curs',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Pujar arxiu',
         uploadTitle: 'Pujar arxius seleccionats',
         msgNo: 'No',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'cancel·lat',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Vista prèvia detallada',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Processing...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Error de validació',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Error en canviar la mida de la imatge.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/cr.js

@@ -20,10 +20,13 @@
         removeTitle: 'Ukloni označene datoteke',
         cancelLabel: 'Odustani',
         cancelTitle: 'Prekini trenutno otpremanje',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Otpremi',
         uploadTitle: 'Otpremi označene datoteke',
         msgNo: 'Ne',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'Otkazan',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Detaljni pregled',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'Processing...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Provjera pogrešaka',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'Greška prilikom promjene veličine slike.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/cs.js

@@ -19,10 +19,13 @@
         removeTitle: 'Vyčistit vybrané soubory',
         cancelLabel: 'Storno',
         cancelTitle: 'Přerušit  nahrávání',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Nahrát',
         uploadTitle: 'Nahrát vybrané soubory',
         msgNo: 'Ne',
         msgNoFilesSelected: 'Nevybrány žádné soubory',
+        msgPaused: 'Paused',
         msgCancelled: 'Zrušeno',
         msgPlaceholder: 'Vybrat {files}...',
         msgZoomModalHeading: 'Detailní náhled',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Zpracovávám...',
         msgUploadBegin: 'Inicializujem...',
         msgUploadEnd: 'Hotovo',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Pro nahrávání nejsou k dispozici žádné platné údaje.',
         msgUploadError: 'Chyba',
         msgValidationError: 'Chyba ověření',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Chyba při změně velikosti obrázku.<pre>{errors}</pre>',
         msgAjaxError: 'Došlo k chybě v {operation}. Prosím zkuste to znovu později!',
         msgAjaxProgressError: '{operation} - neúspěšné',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'odstranit soubor',
             uploadThumb: 'nahrát soubor',

+ 8 - 0
js/locales/da.js

@@ -19,10 +19,13 @@
         removeTitle: 'Fjern valgte filer',
         cancelLabel: 'Fortryd',
         cancelTitle: 'Afbryd nuv&aelig;rende upload',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Upload',
         uploadTitle: 'Upload valgte filer',
         msgNo: 'Ingen',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'aflyst',
         msgPlaceholder: 'V&aelig;lg {files}...',
         msgZoomModalHeading: 'Detaljeret visning',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Arbejder...',
         msgUploadBegin: 'Initialiserer...',
         msgUploadEnd: 'Udf&oslash;rt',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Ingen gyldig data tilg&aelig;ngelig til upload.',
         msgUploadError: 'Fejl',
         msgValidationError: 'Valideringsfejl',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Fejl ved at &aelig;ndre st&oslash;rrelsen p&aring; billedet.<pre>{errors}</pre>',
         msgAjaxError: 'Noget gik galt med {operation} operationen. Fors&oslash;g venligst senere!',
         msgAjaxProgressError: '{operation} fejlede',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'fil slet',
             uploadThumb: 'fil upload',

+ 8 - 0
js/locales/de.js

@@ -17,10 +17,13 @@
         removeTitle: 'Ausgewählte löschen',
         cancelLabel: 'Abbrechen',
         cancelTitle: 'Hochladen abbrechen',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Hochladen',
         uploadTitle: 'Hochladen der ausgewählten Dateien',
         msgNo: 'Keine',
         msgNoFilesSelected: 'Keine Dateien ausgewählt',
+        msgPaused: 'Paused',
         msgCancelled: 'Abgebrochen',
         msgPlaceholder: '{files} auswählen...',
         msgZoomModalHeading: 'ausführliche Vorschau',
@@ -51,6 +54,7 @@
         msgUploadThreshold: 'Wird bearbeitet ...',
         msgUploadBegin: 'Wird initialisiert ...',
         msgUploadEnd: 'Erledigt',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Keine gültigen Daten zum Hochladen verfügbar.',
         msgUploadError: 'Fehler',
         msgValidationError: 'Validierungsfehler',
@@ -66,6 +70,10 @@
         msgImageResizeException: 'Fehler beim Ändern der Größe des Bildes.<pre>{errors}</pre>',
         msgAjaxError: 'Bei der Aktion {operation} ist ein Fehler aufgetreten. Bitte versuche es später noch einmal!',
         msgAjaxProgressError: '{operation} fehlgeschlagen',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'Datei löschen',
             uploadThumb: 'Datei hochladen',

+ 8 - 0
js/locales/el.js

@@ -19,10 +19,13 @@
         removeTitle: 'Εκκαθάριση αρχείων',
         cancelLabel: 'Ακύρωση',
         cancelTitle: 'Ακύρωση μεταφόρτωσης',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Μεταφόρτωση',
         uploadTitle: 'Μεταφόρτωση επιλεγμένων αρχείων',
         msgNo: 'Όχι',
         msgNoFilesSelected: 'Δεν επιλέχθηκαν αρχεία',
+        msgPaused: 'Paused',
         msgCancelled: 'Ακυρώθηκε',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Λεπτομερής Προεπισκόπηση',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Μεταφόρτωση ...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Σφάλμα Επικύρωσης',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Σφάλμα κατά την αλλαγή μεγέθους της εικόνας. <pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/es.js

@@ -19,10 +19,13 @@
         removeTitle: 'Quitar archivos seleccionados',
         cancelLabel: 'Cancelar',
         cancelTitle: 'Abortar la subida en curso',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Subir archivo',
         uploadTitle: 'Subir archivos seleccionados',
         msgNo: 'No',
         msgNoFilesSelected: 'No hay archivos seleccionados',
+        msgPaused: 'Paused',
         msgCancelled: 'Cancelado',
         msgPlaceholder: 'Seleccionar {files}...',
         msgZoomModalHeading: 'Vista previa detallada',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Procesando...',
         msgUploadBegin: 'Inicializando...',
         msgUploadEnd: 'Hecho',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No existen datos válidos para el envío.',
         msgUploadError: 'Error',
         msgValidationError: 'Error de validación',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Error al cambiar el tamaño de la imagen.<pre>{errors}</pre>',
         msgAjaxError: 'Algo ha ido mal con la operación {operation}. Por favor, inténtelo de nuevo mas tarde.',
         msgAjaxProgressError: 'La operación {operation} ha fallado',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'Archivo borrado',
             uploadThumb: 'Archivo subido',

+ 8 - 0
js/locales/et.js

@@ -19,10 +19,13 @@
         removeTitle: 'Clear selected files',
         cancelLabel: 'Tühista',
         cancelTitle: 'Abort ongoing upload',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Salvesta',
         uploadTitle: 'Salvesta valitud failid',
         msgNo: 'No',
         msgNoFilesSelected: 'No files selected',
+        msgPaused: 'Paused',
         msgCancelled: 'Cancelled',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Detailed Preview',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Processing...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Validation Error',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Error while resizing the image.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/fa.js

@@ -20,10 +20,13 @@
         removeTitle: 'پاکسازی فایل‌های انتخاب شده',
         cancelLabel: 'لغو',
         cancelTitle: 'لغو بارگزاری جاری',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'بارگذاری',
         uploadTitle: 'بارگذاری فایل‌های انتخاب شده',
         msgNo: 'نه',
         msgNoFilesSelected: 'هیچ فایلی انتخاب نشده است',
+        msgPaused: 'Paused',
         msgCancelled: 'لغو شد',
         msgPlaceholder: 'انتخاب {files}...',
         msgZoomModalHeading: 'نمایش با جزییات',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'در حال پردازش...',
         msgUploadBegin: 'در حال شروع...',
         msgUploadEnd: 'انجام شد',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'هیچ داده معتبری برای بارگذاری موجود نیست.',
         msgUploadError: 'Error',
         msgValidationError: 'خطای اعتبار سنجی',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'خطا در هنگام تغییر اندازه تصویر.<pre>{errors}</pre>',
         msgAjaxError: 'به نظر مشکلی در حین {operation} روی داده است. لطفا دوباره تلاش کنید!',
         msgAjaxProgressError: '{operation} لغو شد',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'حذف فایل',
             uploadThumb: 'بارگذاری فایل',

+ 7 - 0
js/locales/fi.js

@@ -19,6 +19,8 @@
         removeTitle: 'Tyhj&auml;nn&auml; valitut tiedostot',
         cancelLabel: 'Peruuta',
         cancelTitle: 'Peruuta lataus',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Lataa',
         uploadTitle: 'Lataa valitut tiedostot',
         msgNoFilesSelected: '',
@@ -48,6 +50,7 @@
         msgUploadThreshold: 'Käsitellään...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Ei ladattavaa dataa.',
         msgUploadError: 'Error',
         msgValidationError: 'Tiedoston latausvirhe',
@@ -57,6 +60,10 @@
         msgFoldersNotAllowed: 'Raahaa ja pudota ainoastaan tiedostoja! Ohitettu {n} raahattua kansiota.',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/fr.js

@@ -19,10 +19,13 @@
         removeTitle: 'Retirer les fichiers sélectionnés',
         cancelLabel: 'Annuler',
         cancelTitle: "Annuler l'envoi en cours",
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Transférer',
         uploadTitle: 'Transférer les fichiers sélectionnés',
         msgNo: 'Non',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'Annulé',
         msgPlaceholder: 'Sélectionner le(s) {files}...',
         msgZoomModalHeading: 'Aperçu détaillé',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'En cours...',
         msgUploadBegin: 'Initialisation...',
         msgUploadEnd: 'Terminé',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Aucune donnée valide disponible pour transmission.',
         msgUploadError: 'Erreur',
         msgValidationError: 'Erreur de validation',
@@ -68,6 +72,10 @@
         msgImageResizeException: "Erreur lors du redimensionnement de l'image.<pre>{errors}</pre>",
         msgAjaxError: "Une erreur s'est produite pendant l'opération de {operation}. Veuillez réessayer plus tard.",
         msgAjaxProgressError: 'L\'opération "{operation}" a échoué',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'suppression du fichier',
             uploadThumb: 'transfert du fichier',

+ 8 - 0
js/locales/gl.js

@@ -19,10 +19,13 @@
         removeTitle: 'Quitar aquivos seleccionados',
         cancelLabel: 'Cancelar',
         cancelTitle: 'Abortar a subida en curso',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Subir arquivo',
         uploadTitle: 'Subir arquivos seleccionados',
         msgNo: 'Non',
         msgNoFilesSelected: 'Non hay arquivos seleccionados',
+        msgPaused: 'Paused',
         msgCancelled: 'Cancelado',
         msgPlaceholder: 'Seleccinar {files}...',
         msgZoomModalHeading: 'Vista previa detallada',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Procesando...',
         msgUploadBegin: 'Inicializando...',
         msgUploadEnd: 'Feito',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Non existen datos válidos para o envío.',
         msgUploadError: 'Erro',
         msgValidationError: 'Erro de validación',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Erro ao cambiar o tamaño da imaxe. <pre>{errors}</pre>',
         msgAjaxError: 'Algo foi mal ca operación {operation}. Por favor, inténtao de novo máis tarde.',
         msgAjaxProgressError: 'A operación {operation} fallou',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'Arquivo borrado',
             uploadThumb: 'Arquivo subido',

+ 8 - 0
js/locales/he.js

@@ -20,10 +20,13 @@
         removeTitle: 'נקה קבצים נבחרים',
         cancelLabel: 'ביטול',
         cancelTitle: 'ביטול העלאה מתמשכת',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'טעינה',
         uploadTitle: 'טעינת קבצים נבחרים',
         msgNo: 'לא',
         msgNoFilesSelected: 'לא נבחרו קבצים',
+        msgPaused: 'Paused',
         msgCancelled: 'מבוטל',
         msgPlaceholder: 'בחר {files}...',
         msgZoomModalHeading: 'תצוגה מקדימה מפורטת',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'מעבד...',
         msgUploadBegin: 'מאתחל ...',
         msgUploadEnd: 'בוצע',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'אין נתונים זמינים להעלאה.',
         msgValidationError: 'שגיאת אימות',
         msgLoading: 'טוען קובץ {index} של {files} &hellip;',
@@ -67,6 +71,10 @@
         msgImageResizeException: 'שגיאה בעת שינוי גודל התמונה.<pre>{errors}</pre>',
         msgAjaxError: 'משהו השתבש עם {operation} המערכת. יש לנסות מאוחר יותר!',
         msgAjaxProgressError: '{operation} נכשל',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'קובץ נמחק',
             uploadThumb: 'קובץ הועלה',

+ 8 - 0
js/locales/hu.js

@@ -19,10 +19,13 @@
         removeTitle: 'Kijelölt fájlok törlése',
         cancelLabel: 'Mégse',
         cancelTitle: 'Feltöltés megszakítása',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Feltöltés',
         uploadTitle: 'Kijelölt fájlok feltöltése',
         msgNo: 'Nem',
         msgNoFilesSelected: 'Nincs fájl kiválasztva',
+        msgPaused: 'Paused',
         msgCancelled: 'Megszakítva',
         msgPlaceholder: 'Válasz {files}...',
         msgZoomModalHeading: 'Részletes Előnézet',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Folyamatban...',
         msgUploadBegin: 'Inicializálás...',
         msgUploadEnd: 'Kész',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Nincs érvényes adat a feltöltéshez.',
         msgUploadError: 'Error',
         msgValidationError: 'Érvényesítés hiba',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Hiba történt a méretezés közben.<pre>{errors}</pre>',
         msgAjaxError: 'Hiba történt a művelet közben ({operation}). Kérjük, próbálja később!',
         msgAjaxProgressError: 'Hiba! ({operation})',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'fájl törlés',
             uploadThumb: 'fájl feltöltés',

+ 8 - 0
js/locales/id.js

@@ -20,10 +20,13 @@
         removeTitle: 'Hapus berkas terpilih',
         cancelLabel: 'Batal',
         cancelTitle: 'Batalkan proses pengunggahan',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Unggah',
         uploadTitle: 'Unggah berkas terpilih',
         msgNo: 'Tidak',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'Dibatalkan',
         msgPlaceholder: 'Pilih {files}...',
         msgZoomModalHeading: 'Pratinjau terperinci',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'Memproses...',
         msgUploadBegin: 'Menyiapkan...',
         msgUploadEnd: 'Selesai',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Tidak ada data valid yang tersedia untuk diunggah.',
         msgUploadError: 'Kesalahan',
         msgValidationError: 'Kesalahan saat memvalidasi',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'Kesalahan saat mengubah ukuran gambar.<pre>{errors}</pre>',
         msgAjaxError: 'Terjadi kesalahan ketika melakukan operasi {operation}. Silahkan coba lagi nanti!',
         msgAjaxProgressError: '{operation} gagal',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'Hapus berkas',
             uploadThumb: 'Unggah berkas',

+ 8 - 0
js/locales/it.js

@@ -21,10 +21,13 @@
         removeTitle: 'Rimuovi i file selezionati',
         cancelLabel: 'Annulla',
         cancelTitle: 'Annulla i caricamenti in corso',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Carica',
         uploadTitle: 'Carica i file selezionati',
         msgNo: 'No',
         msgNoFilesSelected: 'Nessun file selezionato',
+        msgPaused: 'Paused',
         msgCancelled: 'Annullato',
         msgPlaceholder: 'Seleziona {files}...',
         msgZoomModalHeading: 'Anteprima dettagliata',
@@ -55,6 +58,7 @@
         msgUploadThreshold: 'In lavorazione...',
         msgUploadBegin: 'Inizializzazione...',
         msgUploadEnd: 'Fatto',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Dati non disponibili',
         msgUploadError: 'Errore',
         msgValidationError: 'Errore di convalida',
@@ -70,6 +74,10 @@
         msgImageResizeException: 'Errore durante il ridimensionamento dell\'immagine.<pre>{errors}</pre>',
         msgAjaxError: 'Qualcosa non ha funzionato con l\'operazione {operation}. Per favore riprova più tardi!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'eliminazione file',
             uploadThumb: 'caricamento file',

+ 8 - 0
js/locales/ja.js

@@ -26,10 +26,13 @@
         removeTitle: '選択したファイルを削除',
         cancelLabel: 'キャンセル',
         cancelTitle: 'アップロードをキャンセル',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'アップロード',
         uploadTitle: '選択したファイルをアップロード',
         msgNo: 'いいえ',
         msgNoFilesSelected: 'ファイルが選択されていません',
+        msgPaused: 'Paused',
         msgCancelled: 'キャンセル',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'プレビュー',
@@ -60,6 +63,7 @@
         msgUploadThreshold: '処理中...',
         msgUploadBegin: '初期化中...',
         msgUploadEnd: '完了',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'アップロードに有効なデータがありません',
         msgUploadError: 'エラー',
         msgValidationError: '検証エラー',
@@ -75,6 +79,10 @@
         msgImageResizeException: '画像のリサイズ時にエラーが発生しました。<pre>{errors}</pre>',
         msgAjaxError: '{operation}実行中にエラーが発生しました。時間をおいてもう一度お試しください。',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'ファイル削除',
             uploadThumb: 'ファイルアップロード',

+ 8 - 0
js/locales/ka.js

@@ -20,10 +20,13 @@
         removeTitle: 'არჩეული ფაილების წაშლა',
         cancelLabel: 'გაუქმება',
         cancelTitle: 'მიმდინარე ატვირთვის გაუქმება',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'ატვირთვა',
         uploadTitle: 'არჩეული ფაილების ატვირთვა',
         msgNo: 'არა',
         msgNoFilesSelected: 'ფაილები არ არის არჩეული',
+        msgPaused: 'Paused',
         msgCancelled: 'გაუქმებულია',
         msgPlaceholder: 'აირჩიეთ {files}...',
         msgZoomModalHeading: 'დეტალურად ნახვა',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'მუშავდება...',
         msgUploadBegin: 'ინიციალიზაცია...',
         msgUploadEnd: 'დასრულებულია',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'ატვირთვისთვის დაუშვებელი მონაცემები.',
         msgUploadError: 'ატვირთვის შეცდომა',
         msgValidationError: 'ვალიდაციის შეცდომა',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'შეცდომა სურათის ზომის შეცვლისას.<pre>{errors}</pre>',
         msgAjaxError: 'დაფიქსირდა შეცდომა ოპერაციის {operation} შესრულებისას. ცადეთ მოგვიანებით!',
         msgAjaxProgressError: 'ვერ მოხერხდა ოპერაციის {operation} შესრულება',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'ფაილის წაშლა',
             uploadThumb: 'ფაილის ატვირთვა',

+ 8 - 0
js/locales/kr.js

@@ -19,10 +19,13 @@
         removeTitle: '선택한 파일들 지우기',
         cancelLabel: '취소',
         cancelTitle: '진행중인 업로드 중단',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: '업로드',
         uploadTitle: '선택한 파일 업로드',
         msgNo: '아니요',
         msgNoFilesSelected: '선택한 파일이 없습니다',
+        msgPaused: 'Paused',
         msgCancelled: '취소되었습니다',
         msgPlaceholder: '{files} 선택...',
         msgZoomModalHeading: '세부 정보',
@@ -53,6 +56,7 @@
         msgUploadThreshold: '처리하는 중...',
         msgUploadBegin: '초기화 중...',
         msgUploadEnd: '완료',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: '업로드 가능한 데이터가 존재하지 않습니다.',
         msgUploadError: '오류',
         msgValidationError: '유효성 오류',
@@ -68,6 +72,10 @@
         msgImageResizeException: '이미지 사이즈 재조정이 다음 이유로 실패했습니다.<pre>{errors}</pre>',
         msgAjaxError: '{operation} 실행 도중 실패했습니다. 잠시 후 다시 시도해 주세요!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/kz.js

@@ -20,10 +20,13 @@
         removeTitle: 'Таңдалған файлдарды жою',
         cancelLabel: 'Күшін жою',
         cancelTitle: 'Ағымдағы жүктеуді болдырмау',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Жүктеу',
         uploadTitle: 'Таңдалған файлдарды жүктеу',
         msgNo: 'жоқ',
         msgNoFilesSelected: 'Файл таңдалмады',
+        msgPaused: 'Paused',
         msgCancelled: 'Күші жойылған',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Алдын ала толық көру',
@@ -41,6 +44,7 @@
         msgUploadThreshold: 'Өңдеу...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Тексеру қатесі',
@@ -56,6 +60,10 @@
         msgImageResizeException: 'Суреттің мөлшерлерін өзгерткен кезде қателік пайда болды.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/lt.js

@@ -20,10 +20,13 @@
         removeTitle: 'Pašalinti pasirinktus failus',
         cancelLabel: 'Atšaukti',
         cancelTitle: 'Atšaukti vykstantį įkėlimą',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Įkelti',
         uploadTitle: 'Įkelti pasirinktus failus',
         msgNo: 'Ne',
         msgNoFilesSelected: 'Nepasirinkta jokių failų',
+        msgPaused: 'Paused',
         msgCancelled: 'Atšaukta',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Detali Peržiūra',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'Vykdoma...',
         msgUploadBegin: 'Inicijuojama...',
         msgUploadEnd: 'Baigta',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Nėra teisingų duomenų įkėlimui.',
         msgUploadError: 'Klaida',
         msgValidationError: 'Validacijos Klaida',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'Klaida keičiant paveikslėlio matmenis.<pre>{errors}</pre>',
         msgAjaxError: 'Kažkas nutiko vykdant {operation} operaciją. Prašome pabandyti vėliau!',
         msgAjaxProgressError: '{operation} operacija nesėkminga',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'failo trynimo',
             uploadThumb: 'failo įkėlimo',

+ 8 - 0
js/locales/nl.js

@@ -19,10 +19,13 @@
         removeTitle: 'Verwijder geselecteerde bestanden',
         cancelLabel: 'Annuleren',
         cancelTitle: 'Annuleer upload',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Upload',
         uploadTitle: 'Upload geselecteerde bestanden',
         msgNo: 'Nee',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'Geannuleerd',
         msgPlaceholder: 'Selecteer {files}...',
         msgZoomModalHeading: 'Gedetailleerd voorbeeld',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Verwerken...',
         msgUploadBegin: 'Initialiseren...',
         msgUploadEnd: 'Gedaan',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Geen geldige data beschikbaar voor upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Bevestiging fout',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Fout bij het verkleinen van de foto.<pre>{errors}</pre>',
         msgAjaxError: 'Er ging iets mis met de {operation} actie. Gelieve later opnieuw te proberen!',
         msgAjaxProgressError: '{operation} mislukt',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'bestand verwijderen',
             uploadThumb: 'bestand uploaden',

+ 8 - 0
js/locales/no.js

@@ -19,10 +19,13 @@
         removeTitle: 'Fjern valgte filer',
         cancelLabel: 'Avbryt',
         cancelTitle: 'Stopp pågående opplastninger',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Last opp',
         uploadTitle: 'Last opp valgte filer',
         msgNo: 'Nei',
         msgNoFilesSelected: 'Ingen filer er valgt',
+        msgPaused: 'Paused',
         msgCancelled: 'Avbrutt',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Detaljert visning',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Prosesserer...',
         msgUploadBegin: 'Initialiserer...',
         msgUploadEnd: 'Ferdig',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Ingen gyldige data tilgjengelig for opplastning.',
         msgUploadError: 'Error',
         msgValidationError: 'Valideringsfeil',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'En feil oppstod under endring av størrelse .<pre>{errors}</pre>',
         msgAjaxError: 'Noe gikk galt med {operation} operasjonen. Vennligst prøv igjen senere!',
         msgAjaxProgressError: '{operation} feilet',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/pl.js

@@ -19,10 +19,13 @@
         removeTitle: 'Usuń zaznaczone pliki',
         cancelLabel: 'Przerwij',
         cancelTitle: 'Anuluj wysyłanie',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Wgraj',
         uploadTitle: 'Wgraj zaznaczone pliki',
         msgNo: 'Nie',
         msgNoFilesSelected: 'Brak zaznaczonych plików',
+        msgPaused: 'Paused',
         msgCancelled: 'Odwołany',
         msgPlaceholder: 'Wybierz {files}...',
         msgZoomModalHeading: 'Szczegółowy podgląd',
@@ -43,6 +46,7 @@
         msgUploadThreshold: 'Przetwarzanie...',
         msgUploadBegin: 'Rozpoczynanie...',
         msgUploadEnd: 'Gotowe!',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Brak poprawnych danych do przesłania.',
         msgUploadError: 'Błąd',
         msgValidationError: 'Błąd walidacji',
@@ -58,6 +62,10 @@
         msgImageResizeException: 'Błąd podczas zmiany rozmiaru obrazu.<pre>{errors}</pre>',
         msgAjaxError: 'Coś poczło nie tak podczas {operation}. Spróbuj ponownie!',
         msgAjaxProgressError: '{operation} nie powiodło się',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'usuwanie pliku',
             uploadThumb: 'przesyłanie pliku',

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

@@ -19,10 +19,13 @@
         removeTitle: 'Remover arquivos selecionados',
         cancelLabel: 'Cancelar',
         cancelTitle: 'Interromper envio em andamento',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Enviar',
         uploadTitle: 'Enviar arquivos selecionados',
         msgNo: 'Não',
         msgNoFilesSelected: 'Nenhum arquivo selecionado',
+        msgPaused: 'Paused',
         msgCancelled: 'Cancelado',
         msgPlaceholder: 'Selecionar {files}...',
         msgZoomModalHeading: 'Pré-visualização detalhada',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Processando...',
         msgUploadBegin: 'Inicializando...',
         msgUploadEnd: 'Concluído',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Nenhuma informação válida para upload.',
         msgUploadError: 'Erro de Upload',
         msgValidationError: 'Erro de validação',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Erro ao redimensionar a imagem.<pre>{errors}</pre>',
         msgAjaxError: 'Algo deu errado com a operação {operation}. Por favor tente novamente mais tarde!',
         msgAjaxProgressError: '{operation} falhou',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'Exclusão de arquivo',
             uploadThumb: 'Upload de arquivos',

+ 8 - 0
js/locales/pt.js

@@ -19,10 +19,13 @@
         removeTitle: 'Remover ficheiros seleccionados',
         cancelLabel: 'Cancelar',
         cancelTitle: 'Abortar carregamento ',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Carregar',
         uploadTitle: 'Carregar ficheiros seleccionados',
         msgNo: 'Não',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'Cancelado',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Pré-visualização detalhada',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Processing...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Erro de validação',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Erro ao redimensionar a imagem.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/ro.js

@@ -20,10 +20,13 @@
         removeTitle: 'Curăță fișierele selectate',
         cancelLabel: 'Renunță',
         cancelTitle: 'Anulează încărcarea curentă',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Încarcă',
         uploadTitle: 'Încarcă fișierele selectate',
         msgNo: 'Nu',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'Anulat',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Previzualizare detaliată',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'Processing...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Eroare de validare',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'Eroare la redimensionarea imaginii.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/ru.js

@@ -20,10 +20,13 @@
         removeTitle: 'Очистить выбранные файлы',
         cancelLabel: 'Отмена',
         cancelTitle: 'Отменить текущую загрузку',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Загрузить',
         uploadTitle: 'Загрузить выбранные файлы',
         msgNo: 'нет',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'Отменено',
         msgPlaceholder: 'Выбрать {files}...',
         msgZoomModalHeading: 'Подробное превью',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'Обработка...',
         msgUploadBegin: 'Инициализация...',
         msgUploadEnd: 'Готово',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Недопустимые данные для загрузки',
         msgUploadError: 'Ошибка загрузки',
         msgValidationError: 'Ошибка проверки',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'Ошибка при изменении размера изображения.<pre>{errors}</pre>',
         msgAjaxError: 'Произошла ошибка при выполнении операции {operation}. Повторите попытку позже!',
         msgAjaxProgressError: 'Не удалось выполнить {operation}',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'удалить файл',
             uploadThumb: 'загрузить файл',

+ 8 - 0
js/locales/sk.js

@@ -19,10 +19,13 @@
         removeTitle: 'Vyčistiť vybraté súbory',
         cancelLabel: 'Storno',
         cancelTitle: 'Prerušiť  nahrávanie',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Nahrať',
         uploadTitle: 'Nahrať vybraté súbory',
         msgNo: 'Nie',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'Zrušené',
         msgPlaceholder: 'Vybrať {files}...',
         msgZoomModalHeading: 'Detailný náhľad',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Spracovávam...',
         msgUploadBegin: 'Inicializujem...',
         msgUploadEnd: 'Hotovo',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Na nahrávanie nie sú k dispozícii žiadne platné údaje.',
         msgUploadError: 'Chyba',
         msgValidationError: 'Chyba overenia',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Chyba pri zmene veľkosti obrázka.<pre>{errors}</pre>',
         msgAjaxError: 'Pri operácii {operation} sa vyskytla chyba. Skúste to prosím neskôr!',
         msgAjaxProgressError: '{operation} - neúspešné',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'odstrániť súbor',
             uploadThumb: 'nahrať súbor',

+ 8 - 0
js/locales/sl.js

@@ -20,10 +20,13 @@
         removeTitle: 'Počisti izbrane datoteke',
         cancelLabel: 'Prekliči',
         cancelTitle: 'Prekliči nalaganje',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Naloži',
         uploadTitle: 'Naloži izbrane datoteke',
         msgNo: 'Ne',
         msgNoFilesSelected: 'Nobena datoteka ni izbrana',
+        msgPaused: 'Paused',
         msgCancelled: 'Preklicano',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Podroben predogled',
@@ -51,6 +54,7 @@
         msgUploadThreshold: 'Procesiram...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Napaki pri validiranju',
@@ -66,6 +70,10 @@
         msgImageResizeException: 'Napaka pri spreminjanju velikosti slike.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/sv.js

@@ -19,10 +19,13 @@
         removeTitle: 'Rensa valda filer',
         cancelLabel: 'Avbryt',
         cancelTitle: 'Avbryt pågående uppladdning',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Ladda upp',
         uploadTitle: 'Ladda upp valda filer',
         msgNo: 'Nej',
         msgNoFilesSelected: 'Inga filer valda',
+        msgPaused: 'Paused',
         msgCancelled: 'Avbruten',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'detaljerad förhandsgranskning',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Bearbetar...',
         msgUploadBegin: 'Påbörjar...',
         msgUploadEnd: 'Färdig',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Ingen giltig data tillgänglig för uppladdning.',
         msgUploadError: 'Error',
         msgValidationError: 'Valideringsfel',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Fel vid storleksändring av bilden.<pre>{errors}</pre>',
         msgAjaxError: 'Något gick fel med {operation} operationen. Försök igen senare!',
         msgAjaxProgressError: '{operation} misslyckades',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/th.js

@@ -19,10 +19,13 @@
         removeTitle: 'ลบไฟล์ที่เลือกทิ้ง',
         cancelLabel: 'ยกเลิก',
         cancelTitle: 'ยกเลิกการอัพโหลด',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'อัพโหลด',
         uploadTitle: 'อัพโหลดไฟล์ที่เลือก',
         msgNo: 'ไม่',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'ยกเลิก',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'ตัวอย่างละเอียด',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'Processing...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'ข้อผิดพลาดในการตรวจสอบ',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'ข้อผิดพลาดขณะปรับขนาดภาพ<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/tr.js

@@ -19,10 +19,13 @@
         removeTitle: 'Seçilen dosyaları sil',
         cancelLabel: 'İptal',
         cancelTitle: 'Devam eden yüklemeyi iptal et',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Yükle',
         uploadTitle: 'Seçilen dosyaları yükle',
         msgNo: 'Hayır',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'İptal edildi',
         msgPlaceholder: 'Seçilen {files}...',
         msgZoomModalHeading: 'Detaylı Önizleme',
@@ -53,6 +56,7 @@
         msgUploadThreshold: 'İşlem yapılıyor...',
         msgUploadBegin: 'Başlıyor...',
         msgUploadEnd: 'Başarılı',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Yüklemek için geçerli veri mevcut değil.',
         msgUploadError: 'Hata',
         msgValidationError: 'Doğrulama Hatası',
@@ -68,6 +72,10 @@
         msgImageResizeException: 'Görüntü boyutlandırma sırasında hata.<pre>{errors}</pre>',
         msgAjaxError: '{operation} işlemi ile ilgili bir şeyler ters gitti. Lütfen daha sonra tekrar deneyiniz!',
         msgAjaxProgressError: '{operation} işlemi başarısız oldu.',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'dosya silme',
             uploadThumb: 'dosya yükleme',

+ 8 - 0
js/locales/uk.js

@@ -20,10 +20,13 @@
         removeTitle: 'Видалити вибрані файли',
         cancelLabel: 'Скасувати',
         cancelTitle: 'Скасувати поточне відвантаження',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Відвантажити',
         uploadTitle: 'Відвантажити обрані файли',
         msgNo: 'Немає',
         msgNoFilesSelected: '',
+        msgPaused: 'Paused',
         msgCancelled: 'Cкасовано',
         msgPlaceholder: 'Оберіть {files}...',
         msgZoomModalHeading: 'Детальний превью',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'Обробка...',
         msgUploadBegin: 'Ініціалізація...',
         msgUploadEnd: 'Готово',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'Немає доступних даних для відвантаження.',
         msgUploadError: 'Помилка',
         msgValidationError: 'Помилка перевірки',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'Помилка при зміні розміру зображення.<pre>{errors}</pre>',
         msgAjaxError: 'Щось не так із операцією {operation}. Будь ласка, спробуйте пізніше!',
         msgAjaxProgressError: 'помилка {operation}',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'видалити файл',
             uploadThumb: 'відвантажити файл',

+ 8 - 0
js/locales/uz.js

@@ -20,10 +20,13 @@
         removeTitle: 'Tanlangan fayllarni tozalash',
         cancelLabel: 'Bekor qilish',
         cancelTitle: 'Joriy yuklab olishni bekor qilish',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Yuklab olish',
         uploadTitle: 'Tanlangan fayllarni yuklash',
         msgNo: 'No',
         msgNoFilesSelected: 'No files selected',
+        msgPaused: 'Paused',
         msgCancelled: 'Cancelled',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Detailed Preview',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'Processing...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Fayl yuklash xatosi',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'Error while resizing the image.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/vi.js

@@ -20,10 +20,13 @@
         removeTitle: 'Bỏ tập tin đã chọn',
         cancelLabel: 'Hủy',
         cancelTitle: 'Hủy upload',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: 'Upload',
         uploadTitle: 'Upload tập tin đã chọn',
         msgNo: 'Không',
         msgNoFilesSelected: 'Không tập tin nào được chọn',
+        msgPaused: 'Paused',
         msgCancelled: 'Đã hủy',
         msgPlaceholder: 'Select {files}...',
         msgZoomModalHeading: 'Chi tiết xem trước',
@@ -54,6 +57,7 @@
         msgUploadThreshold: 'Đang xử lý...',
         msgUploadBegin: 'Initializing...',
         msgUploadEnd: 'Done',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: 'No valid data available for upload.',
         msgUploadError: 'Error',
         msgValidationError: 'Lỗi xác nhận',
@@ -69,6 +73,10 @@
         msgImageResizeException: 'Resize hình ảnh bị lỗi.<pre>{errors}</pre>',
         msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
         msgAjaxProgressError: '{operation} failed',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

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

@@ -20,10 +20,13 @@
         removeTitle: '清除選取檔案',
         cancelLabel: '取消',
         cancelTitle: '取消上傳中檔案',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: '上傳',
         uploadTitle: '上傳選取檔案',
         msgNo: '沒有',
         msgNoFilesSelected: '未選擇檔案',
+        msgPaused: 'Paused',
         msgCancelled: '取消',
         zoomTitle: '詳細資料',
         msgPlaceholder: '選擇 {files}...',
@@ -55,6 +58,7 @@
         msgUploadThreshold: '處理中...',
         msgUploadBegin: '正在初始化...',
         msgUploadEnd: '完成',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: '無效的文件上傳.',
         msgUploadError: '上傳錯誤',
         msgValidationError: '驗證錯誤',
@@ -70,6 +74,10 @@
         msgImageResizeException: '錯誤而調整圖像大小。<pre>{errors}</pre>',
         msgAjaxError: '{operation} 發生錯誤. 請重試!',
         msgAjaxProgressError: '{operation} 失敗',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: 'file delete',
             uploadThumb: 'file upload',

+ 8 - 0
js/locales/zh.js

@@ -20,10 +20,13 @@
         removeTitle: '清除选中文件',
         cancelLabel: '取消',
         cancelTitle: '取消进行中的上传',
+        pauseLabel: 'Pause',
+        pauseTitle: 'Pause ongoing upload',
         uploadLabel: '上传',
         uploadTitle: '上传选中文件',
         msgNo: '没有',
         msgNoFilesSelected: '未选择文件',
+        msgPaused: 'Paused',
         msgCancelled: '取消',
         msgPlaceholder: '选择 {files}...',
         msgZoomModalHeading: '详细预览',
@@ -54,6 +57,7 @@
         msgUploadThreshold: '处理中...',
         msgUploadBegin: '正在初始化...',
         msgUploadEnd: '完成',
+        msgUploadResume: 'Resuming upload...',
         msgUploadEmpty: '无效的文件上传.',
         msgUploadError: '上传出错',
         msgValidationError: '验证错误',
@@ -69,6 +73,10 @@
         msgImageResizeException: '调整图像大小时发生错误。<pre>{errors}</pre>',
         msgAjaxError: '{operation} 发生错误. 请重试!',
         msgAjaxProgressError: '{operation} 失败',
+        msgDuplicateFile: 'File "{name}" of same size "{size} KB" has already been selected earlier. Skipping duplicate selection.',
+        msgResumableUploadRetriesExceeded:  'Upload aborted beyond <b>{max}</b> retries for file <b>{file}</b>! Error Details: <pre>{error}</pre>',
+        msgPendingTime: '{time} remaining',
+        msgCalculatingTime: 'calculating time remaining',
         ajaxOperations: {
             deleteThumb: '删除文件',
             uploadThumb: '上传文件',

+ 2 - 2
nuget/Package.nuspec

@@ -3,7 +3,7 @@
   <metadata>
     <id>bootstrap-fileinput</id>
 	<title>bootstrap-fileinput</title>
-    <version>4.5.3</version>
+    <version>5.0.0</version>
     <authors>Kartik Visweswaran</authors>
     <owners>Kartik Visweswaran</owners>
     <licenseUrl>https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md</licenseUrl>
@@ -15,7 +15,7 @@
     <copyright>Copyright 2014 - 2019</copyright>
     <tags>bootstrap bootstrap-fileinput</tags>
     <dependencies>
-      <dependency id="bootstrap" version="3.3.0" />
+      <dependency id="bootstrap" version="3.4.1" />
     </dependencies>
   </metadata>
 </package>

+ 2 - 2
package.json

@@ -1,6 +1,6 @@
 {
     "name": "bootstrap-fileinput",
-    "version": "4.5.3",
+    "version": "5.0.0",
     "homepage": "https://github.com/kartik-v/bootstrap-fileinput",
     "authors": [
         "Kartik Visweswaran <[email protected]>"
@@ -27,7 +27,7 @@
     ],
     "dependencies": {
         "jquery": ">= 1.9.0",
-        "bootstrap": ">= 3.0.0"
+        "bootstrap": ">= 3.4.1"
     },
     "main": "./js/fileinput.js",
     "style": "./css/fileinput.css",

+ 1 - 1
scss/fileinput-rtl.scss

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee RTL (Right To Left) default styling for bootstrap-fileinput.

+ 22 - 54
scss/fileinput.scss

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee default styling for bootstrap-fileinput.
@@ -17,6 +17,7 @@ $vanilla-ice: #f2dede !default;
 $oyster-pink: #ebccd1 !default;
 $gallery: #eee !default;
 $alto: #ddd !default;
+$celeste: #ccc !default;
 $green: #008000 !default;
 $mine-shaft: #333 !default;
 $boston-blue: #428bca !default;
@@ -55,45 +56,36 @@ $border: 1px !default;
 @function multiply($pixels, $multiplier) {
     @return $pixels * $multiplier;
 }
-
 //@extend-elements
 %set-invisible {
     width: 0;
     height: 0;
 }
-
 %set-hidden {
     display: none;
 }
-
 %set-absolute {
     position: absolute;
 }
-
 %set-relative {
     position: relative;
 }
-
 %set-text-left {
     text-align: left;
 }
-
 %set-error {
     @extend %set-text-left;
     margin: 0;
 }
-
 %set-indicator {
     margin: $pad 0 (-$pad);
     width: multiply($pad, 3.2);
     height: multiply($pad, 3.2);
 }
-
 %set-progress {
     height: multiply($pad, 2.2);
     font-size: multiply($pad, 1.8);
 }
-
 %set-caption {
     display: block;
     white-space: nowrap;
@@ -103,34 +95,27 @@ $border: 1px !default;
     height: multiply($pad, 3);
     margin: auto;
 }
-
 %set-object {
     max-width: 100%;
     max-height: 100%;
     width: auto;
 }
-
 %set-object-video {
     @extend %set-object;
     height: 100%;
 }
-
 %set-object-default {
     width: 100%;
 }
-
 .kv-hidden {
     @extend %set-hidden;
 }
-
 .hide-content .kv-file-content {
     @extend %set-hidden;
 }
-
 .file-input {
     @extend %set-relative;
 }
-
 .file-no-browse {
     @extend %set-absolute;
     left: 50%;
@@ -144,7 +129,6 @@ $border: 1px !default;
     outline: none;
     box-shadow: none;
 }
-
 .file-loading {
     input[type=file] {
         @extend %set-invisible;
@@ -161,16 +145,13 @@ $border: 1px !default;
         background: transparent $url-0 top left no-repeat;
     }
 }
-
 input[type=file].file-loading {
     @extend %set-invisible;
 }
-
 .file-object {
     margin: 0 0 (-$pad) 0;
     padding: 0;
 }
-
 .btn-file {
     @extend %set-relative;
     overflow: hidden;
@@ -192,7 +173,6 @@ input[type=file].file-loading {
         height: 100%;
     }
 }
-
 .file-caption {
     @extend %set-relative;
     .file-caption-name {
@@ -213,13 +193,11 @@ input[type=file].file-loading {
         }
     }
 }
-
 .file-caption-icon {
     @extend %set-hidden;
     @extend %set-absolute;
     left: multiply($pad, 1.6);
 }
-
 .file-error-message {
     color: $apple-blossom;
     background-color: $vanilla-ice;
@@ -235,13 +213,11 @@ input[type=file].file-loading {
         @extend %set-error;
     }
 }
-
 .file-caption-disabled {
     background-color: $gallery;
     cursor: not-allowed;
     opacity: 1;
 }
-
 .file-preview {
     @extend %set-relative;
     border-radius: multiply($radius, 1.25);
@@ -265,12 +241,10 @@ input[type=file].file-loading {
         cursor: pointer;
     }
 }
-
 .file-preview-image {
     font: multiply($pad, 8) $font-0, $font-1, $font-2;
     color: $green;
 }
-
 .krajee-default {
     &.file-preview-frame {
         @extend %set-relative;
@@ -299,6 +273,11 @@ input[type=file].file-loading {
             height: 55px;
         }
     }
+    .file-preview-other-frame {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
     .file-preview-text {
         display: block;
         color: $boston-blue;
@@ -321,6 +300,7 @@ input[type=file].file-loading {
     }
     .file-other-icon {
         font-size: 6em;
+        line-height: 1;
     }
     .file-footer-buttons {
         float: right;
@@ -351,6 +331,7 @@ input[type=file].file-loading {
         right: 0;
         .progress {
             @extend %set-progress;
+            color: $celeste;
         }
         .progress-bar {
             @extend %set-progress;
@@ -377,20 +358,28 @@ input[type=file].file-loading {
         color: $black;
     }
 }
-
+.file-upload-stats {
+    font-size: 9px;
+    text-align: center;
+    width: 100%;
+}
 .kv-upload-progress {
     .progress {
         height: multiply($pad, 4);
         line-height: multiply($pad, 4);
         margin: multiply($pad, 2) 0;
         overflow: hidden;
+        color: $celeste;
     }
     .progress-bar {
         height: multiply($pad, 4);
         font-family: Verdana, Helvetica, sans-serif;
     }
+    .file-upload-stats {
+        font-size: 11px;
+        margin: -10px 0 5px;
+    }
 }
-
 .file-zoom-dialog {
     .file-other-icon {
         //noinspection CssOverwrittenProperties
@@ -453,7 +442,6 @@ input[type=file].file-loading {
         text-overflow: ellipsis;
     }
 }
-
 .file-input-new {
     .file-preview {
         @extend %set-hidden;
@@ -480,7 +468,6 @@ input[type=file].file-loading {
         }
     }
 }
-
 .file-input-ajax-new {
     .fileinput-remove-button {
         @extend %set-hidden;
@@ -498,15 +485,12 @@ input[type=file].file-loading {
         }
     }
 }
-
 .file-caption-main {
     width: 100%;
 }
-
 .file-thumb-loading {
     background: transparent $url-0 no-repeat scroll center center content-box !important;
 }
-
 .file-drop-zone {
     border: $border dashed $silver-chalice;
     border-radius: $radius;
@@ -527,24 +511,20 @@ input[type=file].file-loading {
         cursor: default;
     }
 }
-
 .file-drop-zone-title {
     color: $silver-chalice;
     font-size: 1.6em;
     padding: multiply($pad, 17) multiply($pad, 2);
     cursor: default;
 }
-
 .file-highlighted {
     border: multiply($border, 2) dashed $mountain-mist !important;
     background-color: $gallery;
 }
-
 .file-uploading {
     background: $url-1 no-repeat center bottom multiply($pad, 2);
     opacity: 0.65;
 }
-
 .file-zoom-fullscreen {
     .modal-dialog {
         min-width: 100%;
@@ -559,7 +539,6 @@ input[type=file].file-loading {
         overflow-y: auto;
     }
 }
-
 .floating-buttons {
     z-index: 3000;
     .btn-kv {
@@ -567,7 +546,9 @@ input[type=file].file-loading {
         z-index: 3000;
     }
 }
-
+.kv-zoom-actions .btn-kv {
+    margin-left: multiply($pad, 0.6);
+}
 .file-zoom-content {
     height: multiply($pad, 96);
     text-align: center;
@@ -607,19 +588,16 @@ input[type=file].file-loading {
         }
     }
 }
-
 @media(min-width: 576px) {
     .file-zoom-dialog .modal-dialog {
         max-width: 500px;
     }
 }
-
 @media(min-width: 992px) {
     .file-zoom-dialog .modal-lg {
         max-width: 800px;
     }
 }
-
 @media(max-width: 767px) {
     .file-preview-thumbnails {
         display: flex;
@@ -631,25 +609,21 @@ input[type=file].file-loading {
         flex-direction: column;
     }
 }
-
 @media(max-width: 350px) {
     .krajee-default.file-preview-frame:not([data-template="audio"]) .kv-file-content {
         width: 160px;
     }
 }
-
 @media(max-width: 420px) {
     .krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered {
         width: 100%;
     }
 }
-
 .file-loading[dir=rtl]:before {
     background: transparent $url-0 top right no-repeat;
     padding-left: 0;
     padding-right: multiply($pad, 4);
 }
-
 .file-sortable .file-drag-handle {
     cursor: move;
     opacity: 1;
@@ -657,15 +631,9 @@ input[type=file].file-loading {
         opacity: 0.7;
     }
 }
-
 .clickable .file-drop-zone-title {
     cursor: pointer;
 }
-
-.kv-zoom-actions .btn-kv {
-    margin-left: multiply($pad, 0.6);
-}
-
 .file-preview-initial.sortable-chosen {
     background-color: $link-water;
 }

+ 1 - 1
scss/themes/explorer-fa/theme.scss

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer Font Awesome theme style for bootstrap-fileinput. Load this theme file after loading `fileinput.css`.

+ 1 - 1
scss/themes/explorer-fas/theme.scss

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer Font Awesome theme style for bootstrap-fileinput. Load this theme file after loading `fileinput.css`.

+ 1 - 1
scss/themes/explorer/theme.scss

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer theme style for bootstrap-fileinput. Load this theme file after loading `fileinput.css`.

+ 1 - 1
themes/explorer-fa/theme.css

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer Font Awesome 4.x theme style for bootstrap-fileinput. Load this theme file after loading

+ 2 - 1
themes/explorer-fa/theme.js

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer Font Awesome theme configuration for bootstrap-fileinput. 
@@ -81,6 +81,7 @@
         browseIcon: '<i class="fa fa-folder-open"></i>',
         removeIcon: '<i class="fa fa-trash"></i>',
         cancelIcon: '<i class="fa fa-ban"></i>',
+        pauseIcon: '<i class="fa fa-pause"></i>',
         uploadIcon: '<i class="fa fa-upload"></i>',
         msgValidationErrorIcon: '<i class="fa fa-exclamation-circle"></i> '
     };

+ 1 - 1
themes/explorer-fa/theme.min.css

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer Font Awesome 4.x theme style for bootstrap-fileinput. Load this theme file after loading

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 1
themes/explorer-fa/theme.min.js


+ 1 - 1
themes/explorer-fas/theme.css

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer Font Awesome 5.x theme style for bootstrap-fileinput. Load this theme file after loading

+ 12 - 11
themes/explorer-fas/theme.js

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer Font Awesome theme configuration for bootstrap-fileinput. 
@@ -13,7 +13,7 @@
  * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
  */
 (function ($) {
-    "use strict";
+    'use strict';
     var teTagBef = '<tr class="file-preview-frame {frameClass}" id="{previewId}" data-fileindex="{fileindex}"' +
         ' data-fileid="{fileid}" data-template="{template}"', teContent = '<td class="kv-file-content">\n';
     $.fn.fileinputThemes['explorer-fas'] = {
@@ -46,15 +46,15 @@
             tagAfter: '</td>\n{footer}</tr>\n'
         },
         previewSettings: {
-            image: {height: "60px"},
-            html: {width: "100px", height: "60px"},
-            text: {width: "100px", height: "60px"},
-            video: {width: "auto", height: "60px"},
-            audio: {width: "auto", height: "60px"},
-            flash: {width: "100%", height: "60px"},
-            object: {width: "100%", height: "60px"},
-            pdf: {width: "100px", height: "60px"},
-            other: {width: "100%", height: "60px"}
+            image: {height: '60px'},
+            html: {width: '100px', height: '60px'},
+            text: {width: '100px', height: '60px'},
+            video: {width: 'auto', height: '60px'},
+            audio: {width: 'auto', height: '60px'},
+            flash: {width: '100%', height: '60px'},
+            object: {width: '100%', height: '60px'},
+            pdf: {width: '100px', height: '60px'},
+            other: {width: '100%', height: '60px'}
         },
         frameClass: 'explorer-frame',
         fileActionSettings: {
@@ -81,6 +81,7 @@
         browseIcon: '<i class="fas fa-folder-open"></i>',
         removeIcon: '<i class="fas fa-trash-alt"></i>',
         cancelIcon: '<i class="fas fa-ban"></i>',
+        pauseIcon: '<i class="fas fa-pause"></i>',
         uploadIcon: '<i class="fas fa-upload"></i>',
         msgValidationErrorIcon: '<i class="fas fa-exclamation-circle"></i> '
     };

+ 1 - 1
themes/explorer-fas/theme.min.css

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer Font Awesome 5.x theme style for bootstrap-fileinput. Load this theme file after loading

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 1
themes/explorer-fas/theme.min.js


+ 1 - 1
themes/explorer/theme.css

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer theme style for bootstrap-fileinput. Load this theme file after loading `fileinput.css`.

+ 1 - 1
themes/explorer/theme.js

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer theme configuration for bootstrap-fileinput. Load this theme file after loading `fileinput.js`.

+ 1 - 1
themes/explorer/theme.min.css

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer theme style for bootstrap-fileinput. Load this theme file after loading `fileinput.css`.

+ 1 - 1
themes/explorer/theme.min.js

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Krajee Explorer theme configuration for bootstrap-fileinput. Load this theme file after loading `fileinput.js`.

+ 2 - 1
themes/fa/theme.js

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Font Awesome icon theme configuration for bootstrap-fileinput. Requires font awesome assets to be loaded.
@@ -41,6 +41,7 @@
         browseIcon: '<i class="fa fa-folder-open"></i>',
         removeIcon: '<i class="fa fa-trash"></i>',
         cancelIcon: '<i class="fa fa-ban"></i>',
+        pauseIcon: '<i class="fa fa-pause"></i>',
         uploadIcon: '<i class="fa fa-upload"></i>',
         msgValidationErrorIcon: '<i class="fa fa-exclamation-circle"></i> '
     };

+ 2 - 2
themes/fa/theme.min.js

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Font Awesome icon theme configuration for bootstrap-fileinput. Requires font awesome assets to be loaded.
@@ -9,4 +9,4 @@
  *
  * Licensed under the BSD-3-Clause
  * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
- */!function(a){"use strict";a.fn.fileinputThemes.fa={fileActionSettings:{removeIcon:'<i class="fa fa-trash"></i>',uploadIcon:'<i class="fa fa-upload"></i>',uploadRetryIcon:'<i class="fa fa-repeat"></i>',downloadIcon:'<i class="fa fa-download"></i>',zoomIcon:'<i class="fa fa-search-plus"></i>',dragIcon:'<i class="fa fa-arrows"></i>',indicatorNew:'<i class="fa fa-plus-circle text-warning"></i>',indicatorSuccess:'<i class="fa fa-check-circle text-success"></i>',indicatorError:'<i class="fa fa-exclamation-circle text-danger"></i>',indicatorLoading:'<i class="fa fa-hourglass text-muted"></i>'},layoutTemplates:{fileIcon:'<i class="fa fa-file kv-caption-icon"></i> '},previewZoomButtonIcons:{prev:'<i class="fa fa-caret-left fa-lg"></i>',next:'<i class="fa fa-caret-right fa-lg"></i>',toggleheader:'<i class="fa fa-fw fa-arrows-v"></i>',fullscreen:'<i class="fa fa-fw fa-arrows-alt"></i>',borderless:'<i class="fa fa-fw fa-external-link"></i>',close:'<i class="fa fa-fw fa-remove"></i>'},previewFileIcon:'<i class="fa fa-file"></i>',browseIcon:'<i class="fa fa-folder-open"></i>',removeIcon:'<i class="fa fa-trash"></i>',cancelIcon:'<i class="fa fa-ban"></i>',uploadIcon:'<i class="fa fa-upload"></i>',msgValidationErrorIcon:'<i class="fa fa-exclamation-circle"></i> '}}(window.jQuery);
+ */!function(a){"use strict";a.fn.fileinputThemes.fa={fileActionSettings:{removeIcon:'<i class="fa fa-trash"></i>',uploadIcon:'<i class="fa fa-upload"></i>',uploadRetryIcon:'<i class="fa fa-repeat"></i>',downloadIcon:'<i class="fa fa-download"></i>',zoomIcon:'<i class="fa fa-search-plus"></i>',dragIcon:'<i class="fa fa-arrows"></i>',indicatorNew:'<i class="fa fa-plus-circle text-warning"></i>',indicatorSuccess:'<i class="fa fa-check-circle text-success"></i>',indicatorError:'<i class="fa fa-exclamation-circle text-danger"></i>',indicatorLoading:'<i class="fa fa-hourglass text-muted"></i>'},layoutTemplates:{fileIcon:'<i class="fa fa-file kv-caption-icon"></i> '},previewZoomButtonIcons:{prev:'<i class="fa fa-caret-left fa-lg"></i>',next:'<i class="fa fa-caret-right fa-lg"></i>',toggleheader:'<i class="fa fa-fw fa-arrows-v"></i>',fullscreen:'<i class="fa fa-fw fa-arrows-alt"></i>',borderless:'<i class="fa fa-fw fa-external-link"></i>',close:'<i class="fa fa-fw fa-remove"></i>'},previewFileIcon:'<i class="fa fa-file"></i>',browseIcon:'<i class="fa fa-folder-open"></i>',removeIcon:'<i class="fa fa-trash"></i>',cancelIcon:'<i class="fa fa-ban"></i>',pauseIcon:'<i class="fa fa-pause"></i>',uploadIcon:'<i class="fa fa-upload"></i>',msgValidationErrorIcon:'<i class="fa fa-exclamation-circle"></i> '}}(window.jQuery);

+ 2 - 1
themes/fas/theme.js

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Font Awesome 5 icon theme configuration for bootstrap-fileinput. Requires font awesome 5 assets to be loaded.
@@ -41,6 +41,7 @@
         browseIcon: '<i class="fas fa-folder-open"></i>',
         removeIcon: '<i class="fas fa-trash-alt"></i>',
         cancelIcon: '<i class="fas fa-ban"></i>',
+        pauseIcon: '<i class="fas fa-pause"></i>',
         uploadIcon: '<i class="fas fa-upload"></i>',
         msgValidationErrorIcon: '<i class="fas fa-exclamation-circle"></i> '
     };

+ 2 - 2
themes/fas/theme.min.js

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Font Awesome 5 icon theme configuration for bootstrap-fileinput. Requires font awesome 5 assets to be loaded.
@@ -9,4 +9,4 @@
  *
  * Licensed under the BSD-3-Clause
  * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
- */!function(a){"use strict";a.fn.fileinputThemes.fas={fileActionSettings:{removeIcon:'<i class="fas fa-trash-alt"></i>',uploadIcon:'<i class="fas fa-upload"></i>',uploadRetryIcon:'<i class="fas fa-redo-alt"></i>',downloadIcon:'<i class="fas fa-download"></i>',zoomIcon:'<i class="fas fa-search-plus"></i>',dragIcon:'<i class="fas fa-arrows-alt"></i>',indicatorNew:'<i class="fas fa-plus-circle text-warning"></i>',indicatorSuccess:'<i class="fas fa-check-circle text-success"></i>',indicatorError:'<i class="fas fa-exclamation-circle text-danger"></i>',indicatorLoading:'<i class="fas fa-hourglass text-muted"></i>'},layoutTemplates:{fileIcon:'<i class="fas fa-file kv-caption-icon"></i> '},previewZoomButtonIcons:{prev:'<i class="fas fa-caret-left fa-lg"></i>',next:'<i class="fas fa-caret-right fa-lg"></i>',toggleheader:'<i class="fas fa-fw fa-arrows-alt-v"></i>',fullscreen:'<i class="fas fa-fw fa-arrows-alt"></i>',borderless:'<i class="fas fa-fw fa-external-link-alt"></i>',close:'<i class="fas fa-fw fa-times"></i>'},previewFileIcon:'<i class="fas fa-file"></i>',browseIcon:'<i class="fas fa-folder-open"></i>',removeIcon:'<i class="fas fa-trash-alt"></i>',cancelIcon:'<i class="fas fa-ban"></i>',uploadIcon:'<i class="fas fa-upload"></i>',msgValidationErrorIcon:'<i class="fas fa-exclamation-circle"></i> '}}(window.jQuery);
+ */!function(a){"use strict";a.fn.fileinputThemes.fas={fileActionSettings:{removeIcon:'<i class="fas fa-trash-alt"></i>',uploadIcon:'<i class="fas fa-upload"></i>',uploadRetryIcon:'<i class="fas fa-redo-alt"></i>',downloadIcon:'<i class="fas fa-download"></i>',zoomIcon:'<i class="fas fa-search-plus"></i>',dragIcon:'<i class="fas fa-arrows-alt"></i>',indicatorNew:'<i class="fas fa-plus-circle text-warning"></i>',indicatorSuccess:'<i class="fas fa-check-circle text-success"></i>',indicatorError:'<i class="fas fa-exclamation-circle text-danger"></i>',indicatorLoading:'<i class="fas fa-hourglass text-muted"></i>'},layoutTemplates:{fileIcon:'<i class="fas fa-file kv-caption-icon"></i> '},previewZoomButtonIcons:{prev:'<i class="fas fa-caret-left fa-lg"></i>',next:'<i class="fas fa-caret-right fa-lg"></i>',toggleheader:'<i class="fas fa-fw fa-arrows-alt-v"></i>',fullscreen:'<i class="fas fa-fw fa-arrows-alt"></i>',borderless:'<i class="fas fa-fw fa-external-link-alt"></i>',close:'<i class="fas fa-fw fa-times"></i>'},previewFileIcon:'<i class="fas fa-file"></i>',browseIcon:'<i class="fas fa-folder-open"></i>',removeIcon:'<i class="fas fa-trash-alt"></i>',cancelIcon:'<i class="fas fa-ban"></i>',pauseIcon:'<i class="fas fa-pause"></i>',uploadIcon:'<i class="fas fa-upload"></i>',msgValidationErrorIcon:'<i class="fas fa-exclamation-circle"></i> '}}(window.jQuery);

+ 2 - 1
themes/gly/theme.js

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Glyphicon (default) theme configuration for bootstrap-fileinput.
@@ -39,6 +39,7 @@
         browseIcon: '<i class="glyphicon glyphicon-folder-open"></i>&nbsp;',
         removeIcon: '<i class="glyphicon glyphicon-trash"></i>',
         cancelIcon: '<i class="glyphicon glyphicon-ban-circle"></i>',
+        pauseIcon: '<i class="glyphicon glyphicon-pause"></i>',
         uploadIcon: '<i class="glyphicon glyphicon-upload"></i>',
         msgValidationErrorIcon: '<i class="glyphicon glyphicon-exclamation-sign"></i> '
     };

+ 2 - 2
themes/gly/theme.min.js

@@ -1,5 +1,5 @@
 /*!
- * bootstrap-fileinput v4.5.3
+ * bootstrap-fileinput v5.0.0
  * http://plugins.krajee.com/file-input
  *
  * Glyphicon (default) theme configuration for bootstrap-fileinput.
@@ -9,4 +9,4 @@
  *
  * Licensed under the BSD-3-Clause
  * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
- */!function(i){"use strict";i.fn.fileinputThemes.gly={fileActionSettings:{removeIcon:'<i class="glyphicon glyphicon-trash"></i>',uploadIcon:'<i class="glyphicon glyphicon-upload"></i>',zoomIcon:'<i class="glyphicon glyphicon-zoom-in"></i>',dragIcon:'<i class="glyphicon glyphicon-move"></i>',indicatorNew:'<i class="glyphicon glyphicon-plus-sign text-warning"></i>',indicatorSuccess:'<i class="glyphicon glyphicon-ok-sign text-success"></i>',indicatorError:'<i class="glyphicon glyphicon-exclamation-sign text-danger"></i>',indicatorLoading:'<i class="glyphicon glyphicon-hourglass text-muted"></i>'},layoutTemplates:{fileIcon:'<i class="glyphicon glyphicon-file kv-caption-icon"></i>'},previewZoomButtonIcons:{prev:'<i class="glyphicon glyphicon-triangle-left"></i>',next:'<i class="glyphicon glyphicon-triangle-right"></i>',toggleheader:'<i class="glyphicon glyphicon-resize-vertical"></i>',fullscreen:'<i class="glyphicon glyphicon-fullscreen"></i>',borderless:'<i class="glyphicon glyphicon-resize-full"></i>',close:'<i class="glyphicon glyphicon-remove"></i>'},previewFileIcon:'<i class="glyphicon glyphicon-file"></i>',browseIcon:'<i class="glyphicon glyphicon-folder-open"></i>&nbsp;',removeIcon:'<i class="glyphicon glyphicon-trash"></i>',cancelIcon:'<i class="glyphicon glyphicon-ban-circle"></i>',uploadIcon:'<i class="glyphicon glyphicon-upload"></i>',msgValidationErrorIcon:'<i class="glyphicon glyphicon-exclamation-sign"></i> '}}(window.jQuery);
+ */!function(i){"use strict";i.fn.fileinputThemes.gly={fileActionSettings:{removeIcon:'<i class="glyphicon glyphicon-trash"></i>',uploadIcon:'<i class="glyphicon glyphicon-upload"></i>',zoomIcon:'<i class="glyphicon glyphicon-zoom-in"></i>',dragIcon:'<i class="glyphicon glyphicon-move"></i>',indicatorNew:'<i class="glyphicon glyphicon-plus-sign text-warning"></i>',indicatorSuccess:'<i class="glyphicon glyphicon-ok-sign text-success"></i>',indicatorError:'<i class="glyphicon glyphicon-exclamation-sign text-danger"></i>',indicatorLoading:'<i class="glyphicon glyphicon-hourglass text-muted"></i>'},layoutTemplates:{fileIcon:'<i class="glyphicon glyphicon-file kv-caption-icon"></i>'},previewZoomButtonIcons:{prev:'<i class="glyphicon glyphicon-triangle-left"></i>',next:'<i class="glyphicon glyphicon-triangle-right"></i>',toggleheader:'<i class="glyphicon glyphicon-resize-vertical"></i>',fullscreen:'<i class="glyphicon glyphicon-fullscreen"></i>',borderless:'<i class="glyphicon glyphicon-resize-full"></i>',close:'<i class="glyphicon glyphicon-remove"></i>'},previewFileIcon:'<i class="glyphicon glyphicon-file"></i>',browseIcon:'<i class="glyphicon glyphicon-folder-open"></i>&nbsp;',removeIcon:'<i class="glyphicon glyphicon-trash"></i>',cancelIcon:'<i class="glyphicon glyphicon-ban-circle"></i>',pauseIcon:'<i class="glyphicon glyphicon-pause"></i>',uploadIcon:'<i class="glyphicon glyphicon-upload"></i>',msgValidationErrorIcon:'<i class="glyphicon glyphicon-exclamation-sign"></i> '}}(window.jQuery);

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff