An error occurred while processing the template.
Java method "com.liferay.portal.kernel.util.Http.URLtoString(String)" threw an exception when invoked on com.liferay.portal.template.TemplateContextHelper$HttpWrapper object "com.liferay.portal.template.TemplateContextHelper$HttpWrapper@6a7905b7"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #local response = CONSTANTS.CURRENT_H...  [in template "fiesta-americana-theme_SERVLET_CONTEXT_/templates/utils/api-hotels.ftl" in function "getHotelsByBrand" at line 16, column 3]
	- Reached through: #assign dataHotels = getHotelsByBrand...  [in template "20115#20151#BRAND-HERO-TEMPLATE-1.0.0" at line 14, column 1]
----
1<#import "${fullTemplatesPath}/shared/cta-button.ftl" as cta> 
2 
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
4<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
5<#include "${fullTemplatesPath}/init_custom.ftl"> 
6<#include "${fullTemplatesPath}/utils/api-hotels.ftl"> 
7<#include "${fullTemplatesPath}/utils/json.ftl"> 
8<#include "${fullTemplatesPath}/utils/dictionary.ftl"> 
9<#assign _HOTEL_PLUS_BOOKING_URL = {"es_ES": "http://hospedate.fiestamericana.com", "en_US": "https://res.posadas.globalbookingsolutions.com"} > 
10<#assign _HOTEL_PLUS_BOOKING_TEXT = {"es_ES": "hotel & vuelo", "en_US": "hotel & flight"} > 
11 
12 
13 
14<#assign dataHotels = getHotelsByBrand(Brand.getData())> 
15 
16<!-- partial: component/block/brand-hero/brand-hero.hbs --> 
17<section class="brand-hero" data-component="brand-hero" data-scroll-component data-hotels="${toJSON(dataHotels, ['travelClickCode', 'hotelCode', 'state', 'articleId', 'city', 'country', 'title'])?html}"> 
18  <div class="brand-hero-wrapper"> 
19    <div class="visual-wrapper"> 
20      <#if (VideoFile?? && VideoFile.getData()?has_content) > 
21        <div class="video-wrapper main-visual"> 
22          <video autoplay muted loop src="${VideoFile.getData()}" class="visual" data-video-player ></video> 
23        </div> 
24      <#else> 
25        <!-- partial: component/general/picture/picture.hbs --> 
26        <#if ImageLarge.getData()?? && ImageLarge.getData() != ""> 
27        <picture class="main-visual" data-component="picture"> 
28          <source media="(min-width: 1440px)" srcset="${ImageLarge.getData()}"> 
29          <source media="(min-width: 768px)" srcset="${ImageSmall.getData()}"> 
30          <img class="visual" src="${ImageSmall.getData()}"  alt="${ImageLarge.getAttribute("alt")}" data-fileentryid="${ImageLarge.getAttribute("fileEntryId")}"> 
31        </picture> 
32        </#if> 
33        <!-- / component/general/picture/picture.hbs --> 
34      </#if> 
35    </div> 
36    <div class="form-wrapper"> 
37      <div class="input-container" data-hero-item> 
38        <div class="title" data-hero-item> 
39          ${Title.getData()} 
40        </div> 
41        <div data-hero-item> 
42 
43          <!-- partial: component/general/auto-complete-input-field/auto-complete-input-field.hbs --> 
44          <div class="auto-complete-input-field" data-component="auto-complete-input-field"> 
45 
46            <div class="input-field-wrapper"> 
47              <label class="custom-input-label input-field-copy" for="brandHeroSearch" data-input-label> 
48                <span class="copy">${_SEARCH_DESTINATIONS[locale]}</span> 
49              </label> 
50              <div class="input-wrapper is-bar"> 
51 
52 
53                <input class="input-field input-field-copy" id="brandHeroSearch" type="text" placeholder="" data-input-field value=""> 
54                <div class="type-ahead input-field-copy" data-type-ahead></div> 
55 
56 
57 
58 
59                <script type="text/html" id="suggestion-item-template"> 
60                  <div class="option" data-bind="{ 
61                  html: label, 
62                  css: { 
63                    selected: value === ($data.selected && $data.selected() && $data.selected().value) 
64                  }, 
65                  click: $data.click, 
66                  }"></div> 
67                </script> 
68 
69 
70 
71                <div class="suggestions-wrapper" data-suggestions-list> 
72                </div> 
73 
74 
75 
76              </div> 
77 
78 
79 
80            </div> 
81 
82 
83 
84          </div> 
85          <!-- / component/general/auto-complete-input-field/auto-complete-input-field.hbs --> 
86        </div> 
87      </div> 
88      <div class="link-wrapper" data-hero-item> 
89 
90        <!-- partial: component/general/cta-link/cta-link.hbs --> 
91        <a href="${homeURL}/destinations#hero" class="cta-link outlined destination-link" title="${_EXPLORE_OUR_DESTINATIONS[locale]}" data-component="cta-link"> 
92          <span class=" copy">${_EXPLORE_OUR_DESTINATIONS[locale]}</span> 
93 
94          <!-- partial: component/general/button-arrow/button-arrow.hbs --> 
95          <div class="button-arrow direction-right size-small outlined destination-link" data-component="button-arrow"> 
96 
97            <!-- partial: component/general/icon/icon.hbs --> 
98            <span class="icon circle-hover-icon" data-component="icon" data-icon="circle"></span> 
99            <!-- / component/general/icon/icon.hbs --> 
100 
101            <!-- partial: component/general/icon/icon.hbs --> 
102            <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
103            <!-- / component/general/icon/icon.hbs --> 
104            <div class="chevron-wrapper"> 
105 
106              <!-- partial: component/general/icon/icon.hbs --> 
107              <span class="icon chevron-icon" data-component="icon" data-icon="chevron-right"></span> 
108              <!-- / component/general/icon/icon.hbs --> 
109            </div> 
110          </div> 
111          <!-- / component/general/button-arrow/button-arrow.hbs --> 
112        </a> 
113        <!-- / component/general/cta-link/cta-link.hbs --> 
114      </div> 
115    </div> 
116 
117      <div data-indicator-item> 
118        <div class="mobile-indicator"> 
119          <p>${_DISCOVER_MORE[locale]}</p> 
120          <!-- partial: component/general/icon/icon.hbs --> 
121          <span class="icon " data-component="icon" data-icon="chevron-down"></span> 
122          <!-- / component/general/icon/icon.hbs --> 
123        </div> 
124 
125        <!-- partial: component/general/scroll-indicator/scroll-indicator.hbs --> 
126        <div class="scroll-indicator" data-component="scroll-indicator" data-scroll-indicator data-scroll-component> 
127          <!-- partial: component/general/icon/icon.hbs --> 
128          <span class="icon " data-component="icon" data-icon="scroll-indicator"></span> 
129          <!-- / component/general/icon/icon.hbs --> 
130        </div> 
131        <!-- / component/general/scroll-indicator/scroll-indicator.hbs --> 
132      </div> 
133  </div> 
134  <div class="booking-form-wrapper" data-booking-form-wrapper> 
135 
136    <!-- partial: component/block/booking-form/booking-form.hbs --> 
137    <div class="booking-form" data-component="booking-form"> 
138      <div class="booking-form-content"> 
139        <form class="form" action="" data-booking-form> 
140          <input value="fiesta-americana" name="brand" type="hidden"> 
141          <div class="custom-input hotel-select select"> 
142            <div class="label-wrapper"> 
143              <label class="label" for="foo"> 
144                Hotel 
145              </label> 
146            </div> 
147            <div class="input"> 
148 
149              <!-- partial: component/general/icon/icon.hbs --> 
150              <span class="icon drop-down-icon" data-component="icon" data-icon="chevron-down"></span> 
151              <!-- / component/general/icon/icon.hbs --> 
152              <script type="text/html" id="hotel-option-template"> 
153                <option data-bind="{ 
154                    html: $data.title, 
155                    value: $index, 
156                  }"></option> 
157              </script> 
158              <select class="placeholder-copy" name="hotel" data-hotel-selection required></select> 
159            </div> 
160          </div> 
161 
162          <div class="date-picker-wrapper"> 
163 
164            <!-- partial: component/general/date-range-picker/date-range-picker.hbs --> 
165            <div class="date-range-picker" data-component="date-range-picker"  data-locale="${locale}" data-scroll-component data-start-label="${_ARRIVAL_DATE[locale]}" data-end-label="${_DEPARTURE_DATE[locale]}" data-max-date-in-months-from-now="24" data-required="true" data-default-number-of-nights="2" data-minimum-nights="1" data-start-placeholder="${_SELECT[locale]}" data-end-placeholder="${_SELECT[locale]}"> 
166            </div> 
167            <!-- / component/general/date-range-picker/date-range-picker.hbs --> 
168          </div> 
169          <div class="persons-total"> 
170 
171            <!-- partial: component/form/custom-number-input/custom-number-input.hbs --> 
172            <div class="custom-input number total-adults" data-component="custom-input-number" data-value="2" data-min="1" data-max="10"> 
173              <div class="label-wrapper"> 
174                <label class="label"> 
175                  ${_ADULTS[locale]} 
176                </label> 
177              </div> 
178              <div class="input"> 
179                <div class="placeholder-copy"> 
180                  <div class="button" data-minus-button> 
181 
182                    <!-- partial: component/general/icon/icon.hbs --> 
183                    <span class="icon total-adults" data-component="icon" data-icon="minus"></span> 
184                    <!-- / component/general/icon/icon.hbs --> 
185                  </div> 
186                  <input class="value" type="number" data-bind="value: String(value()).padStart(2, '0')" maxlength="2" min="1" max="10" value="2"> 
187                  <div class="button" data-plus-button> 
188 
189                    <!-- partial: component/general/icon/icon.hbs --> 
190                    <span class="icon total-adults" data-component="icon" data-icon="plus"></span> 
191                    <!-- / component/general/icon/icon.hbs --> 
192                  </div> 
193                </div> 
194              </div> 
195              <input type="hidden" name="adults" min="1" max="6" value="2" data-bind="value: value"> 
196            </div> 
197            <!-- / component/form/custom-number-input/custom-number-input.hbs --> 
198 
199            <!-- partial: component/form/custom-number-input/custom-number-input.hbs --> 
200            <div class="custom-input number total-children" data-component="custom-input-number" data-value="0" data-min="0" data-max="3"> 
201              <div class="label-wrapper"> 
202                <label class="label"> 
203                  ${_CHILDREN[locale]} 
204                </label> 
205              </div> 
206              <div class="input"> 
207                <div class="placeholder-copy"> 
208                  <div class="button" data-minus-button> 
209 
210                    <!-- partial: component/general/icon/icon.hbs --> 
211                    <span class="icon total-children" data-component="icon" data-icon="minus"></span> 
212                    <!-- / component/general/icon/icon.hbs --> 
213                  </div> 
214                  <input class="value" type="number" data-bind="value: String(value()).padStart(2, '0')" maxlength="2" min="0" max="3" value="0"> 
215                  <div class="button" data-plus-button> 
216 
217                    <!-- partial: component/general/icon/icon.hbs --> 
218                    <span class="icon total-children" data-component="icon" data-icon="plus"></span> 
219                 <#import "${fullTemplatesPath}/shared/cta-button.ftl" as cta> 
220 
221<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
222<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
223<#include "${fullTemplatesPath}/init_custom.ftl"> 
224<#include "${fullTemplatesPath}/utils/api-hotels.ftl"> 
225<#include "${fullTemplatesPath}/utils/json.ftl"> 
226<#include "${fullTemplatesPath}/utils/dictionary.ftl"> 
227<#assign _HOTEL_PLUS_BOOKING_URL = {"es_ES": "http://hospedate.fiestamericana.com", "en_US": "https://res.posadas.globalbookingsolutions.com"} > 
228<#assign _HOTEL_PLUS_BOOKING_TEXT = {"es_ES": "hotel & vuelo", "en_US": "hotel & flight"} > 
229 
230 
231 
232<#assign dataHotels = getHotelsByBrand(Brand.getData())> 
233 
234<!-- partial: component/block/brand-hero/brand-hero.hbs --> 
235<section class="brand-hero" data-component="brand-hero" data-scroll-component data-hotels="${toJSON(dataHotels, ['travelClickCode', 'hotelCode', 'state', 'articleId', 'city', 'country', 'title'])?html}"> 
236  <div class="brand-hero-wrapper"> 
237    <div class="visual-wrapper"> 
238      <#if (VideoFile?? && VideoFile.getData()?has_content) > 
239        <div class="video-wrapper main-visual"> 
240          <video autoplay muted loop src="https://www.fiestamericana.com/videos/video-hero-FA.mp4" class="visual" data-video-player ></video> 
241        </div> 
242      <#else> 
243        <!-- partial: component/general/picture/picture.hbs --> 
244        <#if ImageLarge.getData()?? && ImageLarge.getData() != ""> 
245        <picture class="main-visual" data-component="picture"> 
246          <source media="(min-width: 1440px)" srcset="${ImageLarge.getData()}"> 
247          <source media="(min-width: 768px)" srcset="${ImageSmall.getData()}"> 
248          <img class="visual" src="${ImageSmall.getData()}"  alt="${ImageLarge.getAttribute("alt")}" data-fileentryid="${ImageLarge.getAttribute("fileEntryId")}"> 
249        </picture> 
250        </#if> 
251        <!-- / component/general/picture/picture.hbs --> 
252      </#if> 
253    </div> 
254    <div class="form-wrapper"> 
255      <div class="input-container" data-hero-item> 
256        <div class="title" data-hero-item> 
257          ${Title.getData()} 
258        </div> 
259        <div data-hero-item> 
260 
261          <!-- partial: component/general/auto-complete-input-field/auto-complete-input-field.hbs --> 
262          <div class="auto-complete-input-field" data-component="auto-complete-input-field"> 
263 
264            <div class="input-field-wrapper"> 
265              <label class="custom-input-label input-field-copy" for="brandHeroSearch" data-input-label> 
266                <span class="copy">${_SEARCH_DESTINATIONS[locale]}</span> 
267              </label> 
268              <div class="input-wrapper is-bar"> 
269 
270 
271                <input class="input-field input-field-copy" id="brandHeroSearch" type="text" placeholder="" data-input-field value=""> 
272                <div class="type-ahead input-field-copy" data-type-ahead></div> 
273 
274 
275 
276 
277                <script type="text/html" id="suggestion-item-template"> 
278                  <div class="option" data-bind="{ 
279                  html: label, 
280                  css: { 
281                    selected: value === ($data.selected && $data.selected() && $data.selected().value) 
282                  }, 
283                  click: $data.click, 
284                  }"></div> 
285                </script> 
286 
287 
288 
289                <div class="suggestions-wrapper" data-suggestions-list> 
290                </div> 
291 
292 
293 
294              </div> 
295 
296 
297 
298            </div> 
299 
300 
301 
302          </div> 
303          <!-- / component/general/auto-complete-input-field/auto-complete-input-field.hbs --> 
304        </div> 
305      </div> 
306      <div class="link-wrapper" data-hero-item> 
307 
308        <!-- partial: component/general/cta-link/cta-link.hbs --> 
309        <a href="${homeURL}/destinations#hero" class="cta-link outlined destination-link" title="${_EXPLORE_OUR_DESTINATIONS[locale]}" data-component="cta-link"> 
310          <span class=" copy">${_EXPLORE_OUR_DESTINATIONS[locale]}</span> 
311 
312          <!-- partial: component/general/button-arrow/button-arrow.hbs --> 
313          <div class="button-arrow direction-right size-small outlined destination-link" data-component="button-arrow"> 
314 
315            <!-- partial: component/general/icon/icon.hbs --> 
316            <span class="icon circle-hover-icon" data-component="icon" data-icon="circle"></span> 
317            <!-- / component/general/icon/icon.hbs --> 
318 
319            <!-- partial: component/general/icon/icon.hbs --> 
320            <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
321            <!-- / component/general/icon/icon.hbs --> 
322            <div class="chevron-wrapper"> 
323 
324              <!-- partial: component/general/icon/icon.hbs --> 
325              <span class="icon chevron-icon" data-component="icon" data-icon="chevron-right"></span> 
326              <!-- / component/general/icon/icon.hbs --> 
327            </div> 
328          </div> 
329          <!-- / component/general/button-arrow/button-arrow.hbs --> 
330        </a> 
331        <!-- / component/general/cta-link/cta-link.hbs --> 
332      </div> 
333    </div> 
334 
335      <div data-indicator-item> 
336        <div class="mobile-indicator"> 
337          <p>${_DISCOVER_MORE[locale]}</p> 
338          <!-- partial: component/general/icon/icon.hbs --> 
339          <span class="icon " data-component="icon" data-icon="chevron-down"></span> 
340          <!-- / component/general/icon/icon.hbs --> 
341        </div> 
342 
343        <!-- partial: component/general/scroll-indicator/scroll-indicator.hbs --> 
344        <div class="scroll-indicator" data-component="scroll-indicator" data-scroll-indicator data-scroll-component> 
345          <!-- partial: component/general/icon/icon.hbs --> 
346          <span class="icon " data-component="icon" data-icon="scroll-indicator"></span> 
347          <!-- / component/general/icon/icon.hbs --> 
348        </div> 
349        <!-- / component/general/scroll-indicator/scroll-indicator.hbs --> 
350      </div> 
351  </div> 
352  <div class="booking-form-wrapper" data-booking-form-wrapper> 
353 
354    <!-- partial: component/block/booking-form/booking-form.hbs --> 
355    <div class="booking-form" data-component="booking-form"> 
356      <div class="booking-form-content"> 
357        <form class="form" action="" data-booking-form> 
358          <input value="fiesta-americana" name="brand" type="hidden"> 
359          <div class="custom-input hotel-select select"> 
360            <div class="label-wrapper"> 
361              <label class="label" for="foo"> 
362                Hotel 
363              </label> 
364            </div> 
365            <div class="input"> 
366 
367              <!-- partial: component/general/icon/icon.hbs --> 
368              <span class="icon drop-down-icon" data-component="icon" data-icon="chevron-down"></span> 
369              <!-- / component/general/icon/icon.hbs --> 
370              <script type="text/html" id="hotel-option-template"> 
371                <option data-bind="{ 
372                    html: $data.title, 
373                    value: $index, 
374                  }"></option> 
375              </script> 
376              <select class="placeholder-copy" name="hotel" data-hotel-selection required></select> 
377            </div> 
378          </div> 
379 
380          <div class="date-picker-wrapper"> 
381 
382            <!-- partial: component/general/date-range-picker/date-range-picker.hbs --> 
383            <div class="date-range-picker" data-component="date-range-picker"  data-locale="${locale}" data-scroll-component data-start-label="${_ARRIVAL_DATE[locale]}" data-end-label="${_DEPARTURE_DATE[locale]}" data-max-date-in-months-from-now="24" data-required="true" data-default-number-of-nights="2" data-minimum-nights="1" data-start-placeholder="${_SELECT[locale]}" data-end-placeholder="${_SELECT[locale]}"> 
384            </div> 
385            <!-- / component/general/date-range-picker/date-range-picker.hbs --> 
386          </div> 
387          <div class="persons-total"> 
388 
389            <!-- partial: component/form/custom-number-input/custom-number-input.hbs --> 
390            <div class="custom-input number total-adults" data-component="custom-input-number" data-value="2" data-min="1" data-max="10"> 
391              <div class="label-wrapper"> 
392                <label class="label"> 
393                  ${_ADULTS[locale]} 
394                </label> 
395              </div> 
396              <div class="input"> 
397                <div class="placeholder-copy"> 
398                  <div class="button" data-minus-button> 
399 
400                    <!-- partial: component/general/icon/icon.hbs --> 
401                    <span class="icon total-adults" data-component="icon" data-icon="minus"></span> 
402                    <!-- / component/general/icon/icon.hbs --> 
403                  </div> 
404                  <input class="value" type="number" data-bind="value: String(value()).padStart(2, '0')" maxlength="2" min="1" max="10" value="2"> 
405                  <div class="button" data-plus-button> 
406 
407                    <!-- partial: component/general/icon/icon.hbs --> 
408                    <span class="icon total-adults" data-component="icon" data-icon="plus"></span> 
409                    <!-- / component/general/icon/icon.hbs --> 
410                  </div> 
411                </div> 
412              </div> 
413              <input type="hidden" name="adults" min="1" max="6" value="2" data-bind="value: value"> 
414            </div> 
415            <!-- / component/form/custom-number-input/custom-number-input.hbs --> 
416 
417            <!-- partial: component/form/custom-number-input/custom-number-input.hbs --> 
418            <div class="custom-input number total-children" data-component="custom-input-number" data-value="0" data-min="0" data-max="3"> 
419              <div class="label-wrapper"> 
420                <label class="label"> 
421                  ${_CHILDREN[locale]} 
422                </label> 
423              </div> 
424              <div class="input"> 
425                <div class="placeholder-copy"> 
426                  <div class="button" data-minus-button> 
427 
428                    <!-- partial: component/general/icon/icon.hbs --> 
429                    <span class="icon total-children" data-component="icon" data-icon="minus"></span> 
430                    <!-- / component/general/icon/icon.hbs --> 
431                  </div> 
432                  <input class="value" type="number" data-bind="value: String(value()).padStart(2, '0')" maxlength="2" min="0" max="3" value="0"> 
433                  <div class="button" data-plus-button> 
434 
435                    <!-- partial: component/general/icon/icon.hbs --> 
436                    <span class="icon total-children" data-component="icon" data-icon="plus"></span> 
437                    <!-- / component/general/icon/icon.hbs --> 
438                  </div> 
439                </div> 
440              </div> 
441              <input type="hidden" name="children" min="0" max="6" value="0" data-bind="value: value"> 
442            </div> 
443            <!-- / component/form/custom-number-input/custom-number-input.hbs --> 
444          </div> 
445          <div class="cta-wrapper"> 
446            <!-- partial: component/general/cta-button/cta-button.hbs --> 
447            <@cta.button text="${_BOOK_HERE[locale]}" class="primary"/> 
448            <!-- / component/general/cta-button/cta-button.hbs --> 
449 
450            <input type="submit" style="display: none"> 
451            <!-- partial: component/general/cta-button/cta-button.hbs --> 
452            <@cta.button text="${_HOTEL_PLUS_BOOKING_TEXT[locale]}" url="${_HOTEL_PLUS_BOOKING_URL[locale]}" class="primary is-outline hotel-link" /> 
453            <!-- / component/general/cta-button/cta-button.hbs --> 
454            <a href="#" class="cancel-link" data-reservation-cancel> 
455              <!-- partial: component/general/icon/icon.hbs --> 
456              <span class="icon " data-component="icon" data-icon="menu-cross"></span> 
457              <!-- / component/general/icon/icon.hbs --> 
458            </a> 
459          </div> 
460        </form> 
461      </div> 
462    </div> 
463    <!-- / component/block/booking-form/booking-form.hbs --> 
464  </div> 
465</section> 
466<!-- / component/block/brand-hero/brand-hero.hbs --> 
467              <!-- / component/general/icon/icon.hbs --> 
468            </a> 
469          </div> 
470        </form> 
471      </div> 
472    </div> 
473    <!-- / component/block/booking-form/booking-form.hbs --> 
474  </div> 
475</section> 
476<!-- / component/block/brand-hero/brand-hero.hbs --> 
An error occurred while processing the template.
Java method "com.liferay.portal.kernel.util.Http.URLtoString(String)" threw an exception when invoked on com.liferay.portal.template.TemplateContextHelper$HttpWrapper object "com.liferay.portal.template.TemplateContextHelper$HttpWrapper@6a7905b7"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #local response = CONSTANTS.CURRENT_H...  [in template "fiesta-americana-theme_SERVLET_CONTEXT_/templates/utils/api-offers.ftl" in function "getOffersByBrand" at line 6, column 3]
	- Reached through: #assign offersData = getOffersByBrand...  [in template "20115#20151#OFFERS-CAROUSEL-TEMPLATE-1.0.0" at line 9, column 1]
----
1<#import "${fullTemplatesPath}/shared/cta-button.ftl" as cta> 
2 
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
4<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
5<#include "${fullTemplatesPath}/utils/api-offers.ftl"> 
6<#include "${fullTemplatesPath}/utils/dictionary.ftl"> 
7<#include "${fullTemplatesPath}/utils/media-links.ftl"> 
8<#include "${fullTemplatesPath}/utils/general.ftl"> 
9<#assign offersData = getOffersByBrand(Brand.getData())> 
10<!-- partial: component/block/hotel-info/hotel-info.hbs --> 
11<#if offersData?size != 0> 
12  <#assign low = [] /> 
13  <#assign high = [] /> 
14  <#list offersData as offer> 
15    <#if offer.metaTags?seq_contains("portal") > 
16 
17      <#if offer.metaTags?seq_contains("p1") > 
18        <#assign low = low + [offer] /> 
19      <#else> 
20        <#assign high = high + [offer] /> 
21      </#if> 
22    <#else> 
23      <h1>Error: no se encontraron Ofertas con el tag 'portal' para la marca ${Brand.getData()}</h1> 
24    </#if> 
25  </#list> 
26 
27  <#assign orderedOffers = low + high > 
28 
29 
30  <section class="hotel-info content-spacing is-hidden" data-component="hotel-info" data-scroll-component> 
31    <div class="content-wrapper"> 
32      <div class="main-title-wrapper"> 
33        <h2 class="heading-2 main-title"> 
34          <span>${Title.getData()}</span> 
35        </h2> 
36      </div> 
37    </div> 
38 
39    <div data-visual-container> 
40      <ol class="hotel-list" data-visual-carousel> 
41      <#list orderedOffers as Offer> 
42        <#assign medialinks = [] /> 
43        <#if Offer.mediaLinks?? && Offer.mediaLinks?has_content> 
44          <#assign medialinks = Offer.mediaLinks/> 
45        </#if> 
46        <#assign imageLarge = getOfferImageXL(medialinks) /> 
47        <#assign imageSmall = getOfferImageXS(medialinks) /> 
48 
49        <#--  <#assign tomorrow = (.now?long + 1 * 86400000)?number_to_date?string("dd/MM/yyyy")/>  --> 
50        <#--  <#assign now = now?string("dd/MM/yyyy") />  --> 
51        <#--  <#assign languageid = (locale == 'es_ES')?then(2,1) />  --> 
52        <#--  <#assign promoURL = "https://reservations.travelclick.com/"+Offer.travelclickHotelCode+"?hotelCode="+Offer.travelclickHotelCode +"?datein="+now+"&dateout="+tomorrow+"&languageid="+languageid+"&adults=0&children=0&rooms=1"/>  --> 
53        <#assign promoURL = Offer.travelclickHotelCode /> 
54 
55        <li class="hotel-item" data-visual-item> 
56          <div class="content-wrapper"> 
57            <div class="hotel"> 
58              <div class="copy-wrapper"> 
59                <div class="copy-padding"> 
60                  <div class="title-wrapper"> 
61                    <span class="overline-type">${_HOTELS_FROM[locale]}</span> 
62                    <h3 class="heading-4 title"> 
63                      <span>${Offer.name}</span> 
64                    </h3> 
65                  </div> 
66 
67                  <p class="copy-1 copy">${removeHtml(Offer.shortDescription)}</p> 
68 
69                  <div class="price-button-wrapper"> 
70 
71                    <!-- partial: component/general/from-price/from-price.hbs --> 
72                    <div class="from-price price-size-" data-component="from-price"> 
73                     <!-- <span class="from-copy detail-type">${_STARTING_FROM[locale]}</span> --> 
74                      <div class="price-wrapper"> 
75                        <span class="price-copy">${Offer.amount}</span> 
76                        <!--<span class="currency-copy detail-type">${_CURRENCY[locale]}</span>--> 
77                      </div> 
78                    </div> 
79                    <!-- / component/general/from-price/from-price.hbs --> 
80 
81                    <!-- partial: component/general/cta-button/cta-button.hbs --> 
82                    <@cta.button text="${_SEE_MORE[locale]}" url=promoURL class="primary"/> 
83                    <!-- / component/general/cta-button/cta-button.hbs --> 
84                  </div> 
85                </div> 
86              </div> 
87 
88              <div class="visual-wrapper" data-visual-wrapper> 
89                <!-- partial: component/general/picture/picture.hbs --> 
90                <picture class="main-visual" data-component="picture"> 
91                  <source media="(min-width: 768px)" srcset="${imageLarge}"> 
92                  <img class="visual" src="${imageSmall}" alt="${Offer.name}"> 
93                </picture> 
94                <!-- / component/general/picture/picture.hbs --> 
95              </div> 
96            </div> 
97          </div> 
98        </li> 
99      </#list> 
100      </ol> 
101    </div> 
102 
103    <div class="content-wrapper timeline-wrapper"> 
104      <div class="progress-bounds" data-bounds> 
105        <div class="progress-bar-wrapper" data-progress-bar-wrapper> 
106          <div class="progress-bar" data-progress-bar> 
107            <div class="progress" data-progress></div> 
108          </div> 
109          <div class="progress-knob" data-progress-knob> 
110            <!-- partial: component/general/icon/icon.hbs --> 
111            <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
112            <!-- / component/general/icon/icon.hbs --> 
113          </div> 
114          <ol class="progress-markers" data-progress-markers> 
115          <#list orderedOffers as Offer> 
116            <li class="progress-marker-wrapper"> 
117              <div class="progress-marker" data-progress-marker> 
118                <div class="marker-internal-wrapper"> 
119                  <!-- partial: component/general/icon/icon.hbs --> 
120                  <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
121                  <!-- / component/general/icon/icon.hbs --> 
122                </div> 
123                <div class="marker-external-wrapper"> 
124                  <!-- partial: component/general/icon/icon.hbs --> 
125                  <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
126                  <!-- / component/general/icon/icon.hbs --> 
127                </div> 
128              </div> 
129              <span class="promo-name" data-promo-name> 
130                <span class="line-1"></span> 
131                <span>${Offer.name}</span> 
132              </span> 
133            </li> 
134          </#list> 
135          </ol> 
136        </div> 
137      </div> 
138 
139      <div class="bullets-cta-wrapper"> 
140        <div class="bullets-wrapper"> 
141          <!-- partial: component/general/bullets/bullets.hbs --> 
142          <ol class="bullet-list" data-bullet-list data-component="bullets"> 
143          <#list orderedOffers as Offer> 
144            <li class="bullet" data-bullet> 
145              <span class="icon"></span> 
146            </li> 
147          </#list> 
148          </ol> 
149          <!-- / component/general/bullets/bullets.hbs --> 
150        </div> 
151 
152        <!-- partial: component/general/cta-link/cta-link.hbs --> 
153        <a href="${CtaLink.getData()}" class="cta-link outlined " title="${CtaLink.CtaText.getData()}" data-component="cta-link"> 
154          <span class="button-type copy">${CtaLink.CtaText.getData()}</span> 
155          <!-- partial: component/general/button-arrow/button-arrow.hbs --> 
156          <div class="button-arrow direction-right size-small outlined " data-component="button-arrow"> 
157 
158            <!-- partial: component/general/icon/icon.hbs --> 
159            <span class="icon circle-hover-icon" data-component="icon" data-icon="circle"></span> 
160            <!-- / component/general/icon/icon.hbs --> 
161 
162            <!-- partial: component/general/icon/icon.hbs --> 
163            <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
164            <!-- / component/general/icon/icon.hbs --> 
165            <div class="chevron-wrapper"> 
166 
167              <!-- partial: component/general/icon/icon.hbs --> 
168              <span class="icon chevron-icon" data-component="icon" data-icon="chevron-right"></span> 
169              <!-- / component/general/icon/icon.hbs --> 
170            </div> 
171          </div> 
172          <!-- / component/general/button-arrow/button-arrow.hbs --> 
173        </a> 
174        <!-- / component/general/cta-link/cta-link.hbs --> 
175      </div> 
176    </div> 
177 
178  </section> 
179  <!-- / component/block/hotel-info/hotel-info.hbs --> 
180 
181<#else> 
182  <h1>Error: no se encontraron Ofertas para la marca ${Brand.getData()}</h1> 
183</#if>