|
2 | 2 | {% import _self as self %} |
3 | 3 | <div class="afb_file_container {% if imagePreview %}with_preview{% endif %}" {{ block('data_attributes') }} |
4 | 4 | {% with {progressBar: true, img: null, fileName:null, uploadId: null, file: null} %} |
5 | | - data-prototype="{{ block('file_info')|e }}" |
| 5 | + data-prototype="{{ block('file_info')|e }}" |
6 | 6 | {% endwith %} |
7 | 7 | > |
8 | 8 | {% set disabled = true %} |
9 | 9 | {% if not form.vars.disabled %} |
10 | | - {{ block('dropzone') }} |
11 | 10 | {% set disabled = false %} |
| 11 | + {{ block('dropzone') }} |
12 | 12 | {% endif %} |
13 | 13 | {% if false == imagePreview or false == multiple %} |
14 | 14 | {{ block('file_list') }} |
|
47 | 47 | {% endblock %} |
48 | 48 |
|
49 | 49 | {% block dropzone %} |
50 | | - <label for="afb_file_input-{{ id }}" class="afb_dropzone"{% if files|length > 0 and false == multiple %} style="display:none"{% endif %}> |
| 50 | + <label for="afb_file_input-{{ id }}" class="afb_dropzone {% if files is not empty%}afb_dropzone-started{% endif %}"{% if files|length > 0 and false == multiple %} style="display:none"{% endif %}> |
51 | 51 | <h5 class="afb_dropzone-title">{{ (dropzoneLabel ?? label)|trans({}, translation_domain) }}</h5> |
52 | 52 | <input type="file" {% if multiple %}multiple{% endif %} class="afb_file_input" id="afb_file_input-{{ id }}"/> |
53 | 53 |
|
|
61 | 61 | {% set i = 0 %} |
62 | 62 | <ul class="afb_upload_container {% if false == imagePreview %}afb_no_preview{% endif %}"> |
63 | 63 | {% for file in files %} |
64 | | - {% set i = i + 1 %} |
65 | | - {% with {progressBar: false, img: sherlockode_afb_asset(mapping, file.id), fileName: sherlockode_afb_filename(mapping, file), uploadId: i, file: file} %} |
66 | | - {{ block('file_info') }} |
67 | | - {% endwith %} |
| 64 | + {% if file.id is not null %} |
| 65 | + {% set i = i + 1 %} |
| 66 | + {% with {progressBar: false, img: sherlockode_afb_asset(mapping, file.id), fileName: sherlockode_afb_filename(mapping, file), uploadId: i, file: file} %} |
| 67 | + {{ block('file_info') }} |
| 68 | + {% endwith %} |
| 69 | + {% endif %} |
68 | 70 | {% endfor %} |
69 | 71 |
|
70 | 72 | {# render the tmp uploaded file form inputs (key and token) which have not been saved yet |
71 | 73 | this will be empty in regular cases, only present on invalid forms (key/token data was just posted) #} |
72 | 74 | {% for child in form.files|default([]) %} |
73 | | - {% if child.vars.data is not empty %} |
| 75 | + {% if child.vars.data is not empty and child.vars.form.children.key is defined and child.vars.form.children.token is defined %} |
| 76 | + {% set data = child.vars.data %} |
| 77 | + {% set key = child.vars.form.children.key %} |
| 78 | + {% set token = child.vars.form.children.token %} |
74 | 79 | {% set i = i + 1 %} |
75 | | - <li class="afb_item afb_preview_{{ i }}" data-upload="{{ i }}"> |
76 | | - {{ form_widget(child) }} |
| 80 | + <li class="afb_item afb_preview_{{ i }}" data-upload="{{ i }}" data-tmp="{{ uploadMode == 'temporary' ? 1 : 0 }}"> |
| 81 | + {% if imagePreview %} |
| 82 | + <div class="afb_file_preview"> |
| 83 | + <img src="{{ sherlockode_afb_base_64_image(data) }}" alt="{{ data.getClientOriginalName }}" /> |
| 84 | + </div> |
| 85 | + {% endif %} |
| 86 | + <div class="afb_filename"><span>{{ data.getClientOriginalName }}</span></div> |
| 87 | + {% if disabled is defined and not disabled %} |
| 88 | + <a class="afb_remove_file" href="#" data-upload="{{ i }}">X</a> |
| 89 | + {% endif %} |
| 90 | + <input type="hidden" name="{{ key.vars.full_name }}" value="{{ key.vars.value }}"> |
| 91 | + <input type="hidden" name="{{ token.vars.full_name }}" value="{{ token.vars.value }}"> |
77 | 92 | </li> |
78 | 93 | {% endif %} |
79 | 94 | {% endfor %} |
|
89 | 104 | {% if imagePreview %} |
90 | 105 | <div class="afb_file_preview"> |
91 | 106 | {% if img is not null %} |
92 | | - <img src="{{ img }}"/> |
| 107 | + <img src="{{ img }}" alt="{{ fileName }}"/> |
93 | 108 | {% endif %} |
94 | 109 | </div> |
95 | 110 | {% endif %} |
|
0 commit comments