Commit 30e80411c9870c4f1ba8efc7fc55369d08112e7d
1 parent
92f8d2d5
Exists in
master
and in
2 other branches
Change restore to require a file
Showing
1 changed file
with
27 additions
and
4 deletions
Show diff stats
subjects/templates/subjects/restore.html
@@ -72,10 +72,10 @@ | @@ -72,10 +72,10 @@ | ||
72 | {% csrf_token %} | 72 | {% csrf_token %} |
73 | 73 | ||
74 | <div class="form-group is-fileinput"> | 74 | <div class="form-group is-fileinput"> |
75 | - <input type="file" id="zip_file" name="zip_file" class="form-control" accept=".zip" /> | 75 | + <input type="file" id="zip_file" name="zip_file" class="form-control" accept=".zip" data-mimetypes="['application/zip', 'application/octet-stream']" required /> |
76 | 76 | ||
77 | <div class="input-group common-file-input"> | 77 | <div class="input-group common-file-input"> |
78 | - <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose your file...' %}"> | 78 | + <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose your file...' %}" required> |
79 | <span class="input-group-btn input-group-sm"> | 79 | <span class="input-group-btn input-group-sm"> |
80 | <button type="button" class="btn btn-fab btn-fab-mini"> | 80 | <button type="button" class="btn btn-fab btn-fab-mini"> |
81 | <i class="material-icons">attach_file</i> | 81 | <i class="material-icons">attach_file</i> |
@@ -88,8 +88,18 @@ | @@ -88,8 +88,18 @@ | ||
88 | </div> | 88 | </div> |
89 | </div> | 89 | </div> |
90 | 90 | ||
91 | + <div class="col-lg-12 col-md-12 col-sm-12 alert alert-danger alert-dismissible client-file-errors" style="display:none" role="alert"> | ||
92 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
93 | + <span aria-hidden="true">×</span> | ||
94 | + </button> | ||
95 | + <ul> | ||
96 | + <li class="format">{% trans 'File not supported.' %}</li> | ||
97 | + </ul> | ||
98 | + </div> | ||
99 | + | ||
100 | + | ||
91 | <div class="row text-center"> | 101 | <div class="row text-center"> |
92 | - <input type="submit" value="{% trans 'Restore' %}" class="btn btn-success btn-raised" /> | 102 | + <input type="submit" value="{% trans 'Restore' %}" disabled class="btn btn-success btn-raised" /> |
93 | </div> | 103 | </div> |
94 | </form> | 104 | </form> |
95 | </div> | 105 | </div> |
@@ -127,10 +137,23 @@ | @@ -127,10 +137,23 @@ | ||
127 | // file selection | 137 | // file selection |
128 | function FileSelectHandler(e) { | 138 | function FileSelectHandler(e) { |
129 | var files = e.target.files || e.dataTransfer.files, | 139 | var files = e.target.files || e.dataTransfer.files, |
130 | - parent = $(e.target.offsetParent); | 140 | + parent = $(e.target.offsetParent), |
141 | + mimeTypes = $(e.target).data('mimetypes'), | ||
142 | + submit_btn = $(e.target).closest("form").find("input[type='submit']"); | ||
143 | + | ||
144 | + $(".client-file-errors").hide(); | ||
145 | + $(submit_btn).prop('disable', false); | ||
146 | + $(submit_btn).prop('disabled', false); | ||
131 | 147 | ||
132 | // process all File objects | 148 | // process all File objects |
133 | for (var i = 0, f; f = files[i]; i++) { | 149 | for (var i = 0, f; f = files[i]; i++) { |
150 | + if (!mimeTypes.includes(f.type)) { | ||
151 | + $(submit_btn).prop('disable', true); | ||
152 | + $(submit_btn).prop('disabled', true); | ||
153 | + | ||
154 | + $(".client-file-errors").show(); | ||
155 | + } | ||
156 | + | ||
134 | parent.find('.filedrag').html(f.name); | 157 | parent.find('.filedrag').html(f.name); |
135 | } | 158 | } |
136 | } | 159 | } |