... | ... |
@@ -101,7 +101,85 @@ |
101 | 101 |
{% else %} |
102 | 102 |
{% set status = 'pending' %} |
103 | 103 |
{% endif %} |
104 |
- <div class="row u-items-flex-start my-1 status status--{{ status }}"> |
|
104 |
+ {% if booking.checked_in == '1' %} |
|
105 |
+ {% set checkin_state = 'checked_in' %} |
|
106 |
+ {% else %} |
|
107 |
+ {% set checkin_state = 'pending' %} |
|
108 |
+ {% endif %} |
|
109 |
+ <div class="row u-items-flex-start my-1 status status--{{ status }} checkin--{{ checkin_state }}"> |
|
110 |
+ <div class="col-11 m-0"> |
|
111 |
+ <div class="row u-items-flex-start pt-0"> |
|
112 |
+ <div class="col-1"> |
|
113 |
+ <i class="status-icon" title="{{ ('MSC.wa_approval_status.'~status)|trans([], 'contao_default') }}">{{ ('MSC.wa_approval_status.'~status)|trans([], 'contao_default') }}</i> |
|
114 |
+ <i class="toggle-icon" title="Details ein-/ausblenden"></i> |
|
115 |
+ </div> |
|
116 |
+ <div class="col-4 rebsorten icon-reben-outline"> |
|
117 |
+ <div class="t-label">Mitglied</div> |
|
118 |
+ {% if booking.member is not null %} |
|
119 |
+ <div> |
|
120 |
+ {% if booking.member.memberno is defined %} |
|
121 |
+ <span>{{ booking.member.memberno }}</span>{% endif %} |
|
122 |
+ <span>{{ booking.member.firstname }} {{ booking.member.lastname }}</span> |
|
123 |
+ {% if booking.member.phone is defined %} |
|
124 |
+ <span>{{ booking.member.phone }}</span>{% endif %} |
|
125 |
+ </div> |
|
126 |
+ {% endif %} |
|
127 |
+ </div> |
|
128 |
+ <div class="col-4 behaelter icon-behaelter-outline"> |
|
129 |
+ <div class="t-label">Anliefernde Sorten</div> |
|
130 |
+ {{ booking.sorte|join(', ') }} |
|
131 |
+ </div> |
|
132 |
+ <div class="col-3 behaelter icon-behaelter-outline"> |
|
133 |
+ <div class="t-label">Gebuchte Behälterkapazität</div> |
|
134 |
+ {{ booking.behaelter }} |
|
135 |
+ </div> |
|
136 |
+ <div class="additional-facts col-12 p-0 m-0"> |
|
137 |
+ <div class="row u-items-flex-start pb-0"> |
|
138 |
+ <div class="col-1"> |
|
139 |
+ <i>{{ ('MSC.wa_checkin_status.'~checkin_state)|trans([], 'contao_default') }}</i> |
|
140 |
+ </div> |
|
141 |
+ <div class="col-4 rebsorten icon-reben-outline"> |
|
142 |
+ {% if booking.member.email is defined %} |
|
143 |
+ <div> |
|
144 |
+ <a href="mailto:{{ booking.member.email }}">{{ booking.member.email }}</a> |
|
145 |
+ </div> |
|
146 |
+ {% endif %} |
|
147 |
+ </div> |
|
148 |
+ <div class="col-4 behaelter icon-behaelter-outline"> |
|
149 |
+ <div class="t-label">Lage</div> |
|
150 |
+ {{ booking.lage|join(', ') }} |
|
151 |
+ </div> |
|
152 |
+ <div class="col-3 behaelter icon-behaelter-outline"> |
|
153 |
+ <div class="t-label">Ernteart</div> |
|
154 |
+ {{ booking.ernteart|join(', ') }} |
|
155 |
+ </div> |
|
156 |
+ {% if booking.checked_in %} |
|
157 |
+ <div class="col-1"> </div> |
|
158 |
+ <div class="col-10 behaelter_nummern"> |
|
159 |
+ <div class="t-label">Eingecheckte Behälternummern</div> |
|
160 |
+ {% for behaelter in booking.behaelter_numbers %} |
|
161 |
+ {% if loop.index != 1 %}, {% endif %}{{ behaelter.behaelter }} [M:{{ behaelter.member }}] |
|
162 |
+ {% endfor %} |
|
163 |
+ </div> |
|
164 |
+ {% endif %} |
|
165 |
+ </div> |
|
166 |
+ </div> |
|
167 |
+ </div> |
|
168 |
+ </div> |
|
169 |
+ <div class="col u-text-right action"> |
|
170 |
+ <a |
|
171 |
+ href="/contao?do=weinanlieferung&table=tl_vr_wa_reservation&act=edit&id={{ booking.id }}&rt={{ request_token }}&ref={{ ref }}" |
|
172 |
+ {# onclick="Backend.openModalIframe({'title':'Quellelement ID {{ booking.id }} bearbeiten','url':this.href});return false" #} |
|
173 |
+ title="Element ID {{ booking.id }} bearbeiten" |
|
174 |
+ ><img src="/system/themes/flexible/icons/edit.svg" width="16" height="16" alt="Element ID {{ booking.id }} bearbeiten"></a> |
|
175 |
+ <a |
|
176 |
+ href="/contao?do=weinanlieferung&table=tl_vr_wa_reservation&act=delete&id={{ booking.id }}&rt={{ request_token }}" |
|
177 |
+ onclick="if(!confirm('Soll das Element ID {{ booking.id }} wirklich gelöscht werden?'))return false;Backend.getScrollOffset()" |
|
178 |
+ title="Element ID {{ booking.id }} löschen" |
|
179 |
+ ><img src="/system/themes/flexible/icons/delete.svg" width="16" height="16" alt="Element ID {{ booking.id }} löschen"></a> |
|
180 |
+ </div> |
|
181 |
+ </div> |
|
182 |
+ {#<div class="row u-items-flex-start my-1 status status--{{ status }}"> |
|
105 | 183 |
<div class="col-1"> |
106 | 184 |
<i class="status-icon" title="{{ ('MSC.wa_approval_status.'~status)|trans([], 'contao_default') }}">{{ ('MSC.wa_approval_status.'~status)|trans([], 'contao_default') }}</i> |
107 | 185 |
</div> |
... | ... |
@@ -150,7 +228,7 @@ |
150 | 228 |
<div class="col px-1 u-text-right action"> |
151 | 229 |
<a |
152 | 230 |
href="/contao?do=weinanlieferung&table=tl_vr_wa_reservation&act=edit&id={{ booking.id }}&rt={{ request_token }}&ref={{ ref }}" |
153 |
- {# onclick="Backend.openModalIframe({'title':'Quellelement ID {{ booking.id }} bearbeiten','url':this.href});return false" #} |
|
231 |
+ #}{# onclick="Backend.openModalIframe({'title':'Quellelement ID {{ booking.id }} bearbeiten','url':this.href});return false" #}{# |
|
154 | 232 |
title="Element ID {{ booking.id }} bearbeiten" |
155 | 233 |
><img src="/system/themes/flexible/icons/edit.svg" width="16" height="16" alt="Element ID {{ booking.id }} bearbeiten"></a> |
156 | 234 |
<a |
... | ... |
@@ -159,7 +237,7 @@ |
159 | 237 |
title="Element ID {{ booking.id }} löschen" |
160 | 238 |
><img src="/system/themes/flexible/icons/delete.svg" width="16" height="16" alt="Element ID {{ booking.id }} löschen"></a> |
161 | 239 |
</div> |
162 |
- </div> |
|
240 |
+ </div>#} |
|
163 | 241 |
{% endfor %} |
164 | 242 |
</div> |
165 | 243 |
{% endfor %} |
... | ... |
@@ -173,4 +251,24 @@ |
173 | 251 |
|
174 | 252 |
</div> |
175 | 253 |
</div> |
254 |
+<script> |
|
255 |
+document.addEventListener('DOMContentLoaded', function() { |
|
256 |
+ // Add click event listeners to all toggle icons |
|
257 |
+ document.querySelectorAll('.toggle-icon').forEach(function(icon) { |
|
258 |
+ icon.addEventListener('click', function() { |
|
259 |
+ // Toggle the active class on the icon |
|
260 |
+ this.classList.toggle('active'); |
|
261 |
+ |
|
262 |
+ // Find the closest row and then find the additional-facts div within it |
|
263 |
+ var row = this.closest('.row'); |
|
264 |
+ var additionalFacts = row.querySelector('.additional-facts'); |
|
265 |
+ |
|
266 |
+ // Toggle the show class on the additional-facts div |
|
267 |
+ if (additionalFacts) { |
|
268 |
+ additionalFacts.classList.toggle('show'); |
|
269 |
+ } |
|
270 |
+ }); |
|
271 |
+ }); |
|
272 |
+}); |
|
273 |
+</script> |
|
176 | 274 |
{% endblock %} |
... | ... |
@@ -91,6 +91,7 @@ |
91 | 91 |
width: 100%; |
92 | 92 |
margin-left: 0; |
93 | 93 |
padding: 0 0.5rem; |
94 |
+ box-sizing: border-box; |
|
94 | 95 |
} |
95 | 96 |
|
96 | 97 |
@media screen and (min-width: 768px) { |
... | ... |
@@ -6373,3 +6374,27 @@ |
6373 | 6374 |
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-thumb-down' width='100%25' height='100%25' viewBox='0 0 24 24' stroke-width='1.5' stroke='%23ff2825' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M7 13v-8a1 1 0 0 0 -1 -1h-2a1 1 0 0 0 -1 1v7a1 1 0 0 0 1 1h3a4 4 0 0 1 4 4v1a2 2 0 0 0 4 0v-5h3a2 2 0 0 0 2 -2l-1 -5a2 3 0 0 0 -2 -2h-7a3 3 0 0 0 -3 3' /%3E%3C/svg%3E"); |
6374 | 6375 |
} |
6375 | 6376 |
|
6377 |
+ |
|
6378 |
+.toggle-icon { |
|
6379 |
+ display: block; |
|
6380 |
+ width: 16px; |
|
6381 |
+ height: 16px; |
|
6382 |
+ margin-top: 8px; |
|
6383 |
+ cursor: pointer; |
|
6384 |
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); |
|
6385 |
+ background-size: 16px 16px; |
|
6386 |
+ background-repeat: no-repeat; |
|
6387 |
+ background-position: center; |
|
6388 |
+} |
|
6389 |
+ |
|
6390 |
+.toggle-icon.active { |
|
6391 |
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='18 15 12 9 6 15'%3E%3C/polyline%3E%3C/svg%3E"); |
|
6392 |
+} |
|
6393 |
+ |
|
6394 |
+.additional-facts { |
|
6395 |
+ display: none; |
|
6396 |
+} |
|
6397 |
+ |
|
6398 |
+.additional-facts.show { |
|
6399 |
+ display: block; |
|
6400 |
+} |