Skip to content

Commit 674b4ec

Browse files
author
Sergey Semenov
committed
Merge remote-tracking branch 'firedrakes/MAGETWO-59924' into MAGETWO-59924
2 parents 6b22fda + f4d8d52 commit 674b4ec

File tree

12 files changed

+2550
-2342
lines changed

12 files changed

+2550
-2342
lines changed

app/code/Magento/Downloadable/view/adminhtml/web/template/components/file-uploader.html

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
<!--
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
-->
7+
18
<div class="admin__field-control">
29
<div class="file-uploader" data-role="drop-zone" css="_loading: isLoading">
310
<each args="data: value, as: '$file'">
@@ -16,4 +23,4 @@
1623
<span class="file-uploader-spinner"/>
1724
</div>
1825
</div>
19-
</div>
26+
</div>

app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ define([
1818
value: [],
1919
maxFileSize: false,
2020
isMultipleFiles: false,
21+
placeholderType: 'document', // 'image', 'video'
2122
allowedExtensions: false,
2223
previewTmpl: 'ui/form/element/uploader/preview',
2324
dropZone: '[data-role=drop-zone]',
@@ -116,6 +117,7 @@ define([
116117
* @returns {FileUploder} Chainable.
117118
*/
118119
addFile: function (file) {
120+
file.previewType = this.getFilePreviewType(file);
119121
file = this.processFile(file);
120122

121123
this.isMultipleFiles ?
@@ -234,6 +236,24 @@ define([
234236
return validator('validate-file-type', file.name, this.allowedExtensions);
235237
},
236238

239+
/**
240+
* Get simplified file type.
241+
*
242+
* @param {Object} file - File to be checked.
243+
* @returns {String}
244+
*/
245+
getFilePreviewType: function (file) {
246+
var type;
247+
248+
if (!file['type']) {
249+
return 'document';
250+
}
251+
252+
type = file['type'].split('/')[0];
253+
254+
return (type !== 'image' && type !== 'video') ? 'document' : type;
255+
},
256+
237257
/**
238258
* Checks if size of provided file exceeds
239259
* defined in configuration size limits.

app/code/Magento/Ui/view/base/web/templates/form/element/uploader/preview.html

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
-->
77
<div class="file-uploader-summary">
88
<div class="file-uploader-preview">
9-
<a attr="href: $parent.getFilePreview($file)" target="_blank">
9+
<a class="preview-link"
10+
css="'preview-' + $file.previewType"
11+
attr="href: $parent.getFilePreview($file), title: $file.name" target="_blank">
1012
<img
11-
class="preview-image"
13+
if="$file.previewType === 'image'"
1214
tabindex="0"
1315
event="load: $parent.onPreviewLoad.bind($parent)"
1416
attr="
@@ -29,8 +31,11 @@
2931
</div>
3032

3133
<div class="file-uploader-filename" text="$file.name"/>
34+
3235
<div class="file-uploader-meta">
33-
<text args="$file.previewWidth"/>x<text args="$file.previewHeight"/>,
36+
<span if="$file.previewType === 'image'">
37+
<text args="$file.previewWidth"/>x<text args="$file.previewHeight"/>,
38+
</span>
3439
<text args="$parent.formatSize($file.size)"/>
3540
</div>
3641
</div>

app/code/Magento/Ui/view/base/web/templates/form/element/uploader/uploader.html

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* See COPYING.txt for license details.
55
*/
66
-->
7+
78
<div class="admin__field" visible="visible" css="$data.additionalClasses">
89
<label class="admin__field-label" if="$data.label" attr="for: uid">
910
<span translate="label" attr="'data-config-scope': $data.scopeLabel"/>
@@ -28,6 +29,15 @@
2829
<label class="admin__field-error" if="error" attr="for: uid" text="error"/>
2930

3031
<each args="data: value, as: '$file'" render="$parent.getPreviewTmpl($file)"/>
32+
33+
<div if="isMultipleFiles" class="file-uploader-summary">
34+
<label attr="for: uid"
35+
class="file-uploader-placeholder"
36+
css="'placeholder-' + placeholderType">
37+
<span class="file-uploader-placeholder-text"
38+
translate="'Click here or drag and drop to add files.'"/>
39+
</label>
40+
</div>
3141
</div>
3242
</div>
33-
</div>
43+
</div>

app/design/adminhtml/Magento/backend/web/css/source/components/_file-uploader.less

Lines changed: 149 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@
1515
@file-uploader-preview__background-color: @color-white;
1616
@file-uploader-preview-focus__color: @color-blue2;
1717

18+
@file-uploader-document-icon__color: @color-gray80;
19+
@file-uploader-document-icon__size: 7rem;
20+
@file-uploader-document-icon__z-index: @data-grid-file-uploader-image__z-index + 1;
21+
22+
@file-uploader-video-icon__color: @color-gray80;
23+
@file-uploader-video-icon__size: 4rem;
24+
@file-uploader-video-icon__z-index: @data-grid-file-uploader-image__z-index + 1;
25+
26+
@file-uploader-placeholder-icon__color: @color-gray80;
27+
@file-uploader-placeholder-icon__z-index: @data-grid-file-uploader-image__z-index + 1;
28+
1829
@file-uploader-delete-icon__color: @color-brownie;
1930
@file-uploader-delete-icon__hover__color: @color-brownie-vanilla;
2031
@file-uploader-delete-icon__font-size: 2rem;
@@ -48,7 +59,6 @@
4859
// ---------------------------------------------
4960

5061
.file-uploader-area {
51-
margin-bottom: @indent__xs;
5262
position: relative;
5363

5464
input[type='file'] {
@@ -66,6 +76,11 @@
6676
}
6777
}
6878

79+
.file-uploader-summary {
80+
display: inline-block;
81+
vertical-align: top;
82+
}
83+
6984
.file-uploader-button {
7085
cursor: pointer;
7186
display: inline-block;
@@ -89,17 +104,6 @@
89104
}
90105

91106
.file-uploader-preview {
92-
background: @file-uploader-preview__background-color;
93-
border: 1px solid @file-uploader-preview__border-color;
94-
box-sizing: border-box;
95-
cursor: pointer;
96-
height: @file-uploader-preview__height;
97-
line-height: 1;
98-
margin-bottom: @indent__s;
99-
overflow: hidden;
100-
position: relative;
101-
width: @file-uploader-preview__width;
102-
103107
.action-remove {
104108
&:extend(.abs-action-reset all);
105109
.lib-icon-font (
@@ -123,12 +127,18 @@
123127
}
124128

125129
&:hover {
126-
.preview-image {
130+
.preview-image img,
131+
.preview-link:before {
127132
opacity: @file-uploader-preview__opacity;
128133
}
129134
}
130135

131-
.preview-image {
136+
.preview-link {
137+
display: block;
138+
height: 100%;
139+
}
140+
141+
.preview-image img {
132142
bottom: 0;
133143
left: 0;
134144
margin: auto;
@@ -139,6 +149,59 @@
139149
top: 0;
140150
z-index: 1;
141151
}
152+
153+
.preview-video {
154+
.lib-icon-font(
155+
@icon-video__content,
156+
@_icon-font: @icons-admin__font-name,
157+
@_icon-font-size: @file-uploader-video-icon__size,
158+
@_icon-font-color: @file-uploader-video-icon__color,
159+
@_icon-font-color-hover: @file-uploader-video-icon__color
160+
);
161+
162+
&:before {
163+
left: 0;
164+
margin-top: -@file-uploader-video-icon__size / 2;
165+
position: absolute;
166+
right: 0;
167+
top: 50%;
168+
z-index: @file-uploader-video-icon__z-index;
169+
}
170+
}
171+
172+
.preview-document {
173+
.lib-icon-font(
174+
@icon-document__content,
175+
@_icon-font: @icons-admin__font-name,
176+
@_icon-font-size: @file-uploader-document-icon__size,
177+
@_icon-font-color: @file-uploader-document-icon__color,
178+
@_icon-font-color-hover: @file-uploader-document-icon__color
179+
);
180+
181+
&:before {
182+
left: 0;
183+
margin-top: -@file-uploader-document-icon__size / 2;
184+
position: absolute;
185+
right: 0;
186+
top: 50%;
187+
z-index: @file-uploader-document-icon__z-index;
188+
}
189+
}
190+
}
191+
192+
.file-uploader-preview,
193+
.file-uploader-placeholder {
194+
background: @file-uploader-preview__background-color;
195+
border: 1px solid @file-uploader-preview__border-color;
196+
box-sizing: border-box;
197+
cursor: pointer;
198+
display: block;
199+
height: @file-uploader-preview__height;
200+
line-height: 1;
201+
margin: @indent__s @indent__m @indent__s 0;
202+
overflow: hidden;
203+
position: relative;
204+
width: @file-uploader-preview__width;
142205
}
143206

144207
.file-uploader {
@@ -154,6 +217,8 @@
154217
}
155218

156219
.file-uploader-filename {
220+
.lib-text-overflow();
221+
max-width: @file-uploader-preview__width;
157222
word-break: break-all;
158223

159224
&:first-child {
@@ -176,6 +241,76 @@
176241
}
177242
}
178243

244+
// Placeholder for multiple uploader
245+
.file-uploader-placeholder {
246+
&.placeholder-document {
247+
.lib-icon-font(
248+
@icon-document__content,
249+
@_icon-font: @icons-admin__font-name,
250+
@_icon-font-size: 5rem,
251+
@_icon-font-color: @file-uploader-placeholder-icon__color,
252+
@_icon-font-color-hover: @file-uploader-placeholder-icon__color
253+
);
254+
255+
&:before {
256+
left: 0;
257+
position: absolute;
258+
right: 0;
259+
top: 20px;
260+
z-index: @file-uploader-placeholder-icon__z-index;
261+
}
262+
}
263+
264+
&.placeholder-image {
265+
.lib-icon-font(
266+
@icon-camera__content,
267+
@_icon-font: @icons-admin__font-name,
268+
@_icon-font-size: 5rem,
269+
@_icon-font-color: @file-uploader-placeholder-icon__color,
270+
@_icon-font-color-hover: @file-uploader-placeholder-icon__color
271+
);
272+
273+
&:before {
274+
left: 0;
275+
position: absolute;
276+
right: 0;
277+
top: 20px;
278+
z-index: @file-uploader-placeholder-icon__z-index;
279+
}
280+
}
281+
282+
&.placeholder-video {
283+
.lib-icon-font(
284+
@icon-video__content,
285+
@_icon-font: @icons-admin__font-name,
286+
@_icon-font-size: 3rem,
287+
@_icon-font-color: @file-uploader-placeholder-icon__color,
288+
@_icon-font-color-hover: @file-uploader-placeholder-icon__color
289+
);
290+
291+
&:before {
292+
left: 0;
293+
position: absolute;
294+
right: 0;
295+
top: 30px;
296+
z-index: @file-uploader-placeholder-icon__z-index;
297+
}
298+
}
299+
}
300+
301+
.file-uploader-placeholder-text {
302+
bottom: 0;
303+
color: @color-blue-dodger;
304+
font-size: 1.1rem;
305+
left: 0;
306+
line-height: @line-height__base;
307+
margin-bottom: 15%;
308+
padding: 0 @indent__base;
309+
position: absolute;
310+
right: 0;
311+
text-align: center;
312+
}
313+
179314
//
180315
// Grid image uploader
181316
// ---------------------------------------------

app/design/adminhtml/Magento/backend/web/css/source/variables/_icons.less

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,4 @@
8080
@icon-clip__content: '\e643';
8181
@icon-module__content: '\e647';
8282
@icon-alert-round__content: '\e648';
83+
@icon-document__content: '\e649';
Binary file not shown.

app/design/adminhtml/Magento/backend/web/fonts/admin-icons/admin-icons.svg

Lines changed: 1 addition & 1 deletion
Loading
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)