{% extends('@ElementsDemiFrontend/Layout/list-layout.html.twig') %}
{% block content %}
{% set isMapAllowed = not pimcore_checkbox('noMapAllowed').isChecked() %}
{% set showMapToggle = pimcore_checkbox('showMapToggle').isChecked() %}
{% set showMapInitially = not pimcore_checkbox('hideMapInitially').isChecked() %}
{% set useListTeaserStyle = not pimcore_checkbox('useListTiles').isChecked() %}
{% set showMap = isMapAllowed and not pimcore_device().isPhone() and ((app.request.get('showMap') is null and showMapInitially) or app.request.get('showMap') == 1) %}
{% set nearbySearchJson = '/var/tmp/typeahead/' ~ app.request.getLocale() ~ '/nearbySearch.json' %}
{% set searchJson = '/var/tmp/typeahead/hotellists' ~ document.getId() ~ '.json' %}
{% set region = document.property('region') %}
{% if not demi_improvedFileExists(searchJson, "PIMCORE_WEB_ROOT") %}
{% set searchJson = '/var/tmp/typeahead/' ~ app.request.getLocale() ~ '/hotels' ~ (region.getIsMainRegion() ? '' : ('-' ~ region.id)) ~'.json' %}
{% endif %}
{% if not editmode %}
<script type="text/javascript" data-cookieconsent="ignore">
{% if noDate and (pimcore_checkbox('autoOpenModal').isChecked() or app.request.get('openSearchOnLoad') == 1) %}
_config.openSearchOnLoad = true;
{% endif %}
{% if not searchParam.getIsAlternative() %}
_config.makeAlternativeSearchRequest = {{ makeAlternativeSearchRequest == true ? "true" : "false" }};
_config.showAlternativeResults = false;
_config.hasListMap = {{ isMapAllowed ? 'true': 'false' }};
{% endif %}
{% if demi_improvedFileExists(searchJson, "PIMCORE_WEB_ROOT") %}
_config.searchAutocompleteUrl = '/cache-buster-{{ demi_getExistingCacheFile(searchJson) }}';
{% endif %}
{% if demi_improvedFileExists(nearbySearchJson, "PIMCORE_WEB_ROOT") %}
_config.nearbySearchAutocompleteUrl = '/cache-buster-{{ demi_getExistingCacheFile(nearbySearchJson) }}';
{% endif %}
_config.acommodationMapHideBusinesses = {{ demi_core_configuration('getMapHideBusinesses', {}) ? 'true' : 'false' }}
</script>
{# Json Map Datenjs-room-selection__price-detail-content #}
{% set mapPoiJson = demi_demiUrl({
'path' : document.getFullPath() | trim ('/', 'left') }, 'demi_map_poi_json') %}
{% set accoTeaserLink = demi_demiUrl({
'path' : document.getFullPath() | trim ('/', 'left') }, 'demi_compact_teaser') %}
<script type="text/javascript" data-cookieconsent="ignore">
{% if searchParam and searchParam.getOrderRandSeed() %}
_config.urlParams = _config.urlParams || [];
_config.urlParams.push({name: "randSeed", value: "{{ searchParam.getOrderRandSeed() }}"});
{% endif %}
{# // -> JS Config für die Suche und die Liste #}
_config.accoList = true;
_config.accoListUrl = '';
_config.accoListIsPackageList = {{ isPackageSearch ? 'true' : 'false' }};
{# // -> JS Config für die map #}
_config.accommodationMap = true;
_config.accommodationMapPoisUrl = '{{ mapPoiJson }}';
_config.accommodationMapInfoboxUrl = '{{ accoTeaserLink }}';
_config.historyController = true;
</script>
{# Main #}
{% if document.getProperty("demi_housePackageContainer") or document.getProperty("demi_housePackageContainer") %}
{% set listType = document.getProperty("demi_housePackageContainer") ?: document.getProperty("demi_housePackageMasterSelfAssign") %}
{% set hasPackageContainer = true %}
{{ include('@ElementsDemiFrontend/Includes/elements/package-list-info.desktop.html.twig', {
"searchParam" : searchParam,
"listType" : listType
}) }}
{% endif %}
{{ include('@ElementsDemiFrontend/Includes/elements/search-info.desktop.html.twig', {
"searchParam" : searchParam,
"availabilityIsChecked" : availabilityIsChecked,
"isSearch" : true,
"noDate" : noDate,
"hasPackageContainer" : hasPackageContainer ?? false
}) }}
{{ include('@ElementsDemiFrontend/Includes/elements/filter-bar.desktop.html.twig', {
'filterSnippet' : pimcore_relation('filterSnippet').getData(),
'noDate' : noDate,
'searchParam' : searchParam,
'minPrice' : minPrice,
'maxPrice' : maxPrice,
'isSearch' : false
}) }}
<div class="list-with-map-container">
<div class="list__items-container js-acco-list-container {{ showMap ? '' : 'is-full-width' }}" id="list">
<div hidden>
{{ include('@ElementsDemiFrontend/Accommodation/lightboxTopbar.html.twig') }}
</div>
{{ include('@ElementsDemiFrontend/Snippet/filterSidebar/sorting.desktop.html.twig', {
'searchParam' : searchParam,
'totalCount' : paginator.getTotalItemCount()
}) }}
{% endif %}
{% if editmode %}
{{ include('@ElementsDemiFrontend/List/includes/editmode.html.twig') }}
<div class="mb-4">
<div class="alert alert-warning">
{{ include('@ElementsDemiFrontend/List/includes/list-footer.html.twig') }}
</div>
</div>
{% else %}
<div class="acco-list js-acco-list" role="alert" aria-live="assertive">
<div class="text-center my-5 js-acco-list__loading" hidden>
{{ include('@ElementsDemiFrontend/Includes/elements/spinner/loading-spinner.html.twig') }}
</div>
<div class="js-acco-list__content">
{% if searchParam.getProductIds() is empty and (document.getProperty("demi_housePackageContainer") or document.getProperty("demi_housePackageContainer")) %}
{{ 'demi.detail.no-packages' | trans }}
{% else %}
{{ include('@ElementsDemiFrontend/List/list-content.html.twig', {
'accommodationPaginator' : paginator,
'searchError' : searchError ?? null,
'error' : error
}) }}
{% endif %}
</div>
</div>
{# Preis info #}
{{ include('@ElementsDemiFrontend/Includes/elements/price-info.html.twig',
{"searchParameter" : searchParam }) }}
{# Alternative Sucheergebnisse wenn in der oberen Liste zu wenig gefunden wurde. #}
{{ include('@ElementsDemiFrontend/List/includes/acco-list-alternative-search.html.twig') }}
<section>
{% set contactSnippet = demi_core_configuration('getContactSnippet', {}) %}
{% if contactSnippet is not null %}
<hr class="hr--border-gray my-4">
{{ pimcore_inc(contactSnippet) }}
{% endif %}
</section>
<div>
{{ include('@ElementsDemiFrontend/List/includes/list-footer.html.twig') }}
</div>
</div>
{# -> Ausgabe der Map #}
{% if isMapAllowed %}
<div class="js-accommodation-map accommodation-map" {{ showMap ? '' : 'hidden' }}>
<div class="js-accommodation-map__canvas accommodation-map__canvas">
<div class="pt-5 mt-5 text-center">
<div class="mt-5">
{{ include('@ElementsDemiFrontend/Includes/elements/spinner/loading-spinner.html.twig') }}
</div>
</div>
</div>
<div
class="accommodation-map__controls accommodation-map__controls--top-right {{ demi_core_configuration('getSortingNearbySearch', {}) ? 'accommodation-map__controls--drawing' : '' }}">
<div
class="map-tooltip map-tooltip--left {{ demi_core_configuration('getSortingNearbySearch', {}) ? 'map-tooltip--bottom-left-md-down' : '' }} js-draw-on-map__tooltip"
aria-hidden="true">
{{ "demi.list.map.draw-area" | trans }}
</div>
<button type="button"
class="btn btn-white accommodation-map__control accommodation-map__control--w-a js-draw-on-map__clear {{ demi_core_configuration('getSortingNearbySearch', {}) ? 'accommodation-map__clear-btn' : '' }} mr-2"
hidden aria-hidden="true">
{{ "demi.list.map.remove-area" | trans }}
</button>
<button type="button" class="btn btn-primary accommodation-map__control js-draw-on-map"
aria-hidden="true">
<span class="demi-icon demi-icon-draw-on-map js-draw-on-map__start-drawing"></span>
<span class="demi-icon demi-icon-close js-draw-on-map__cancel-drawing" hidden></span>
</button>
</div>
<div class="accommodation-map__controls accommodation-map__controls--top-left">
{% if demi_core_configuration('getSortingNearbySearch', {}) %}
<div class="js-nearby-search-autocomplete nearby-search-autocomplete js-filter-form__autocomplete">
<div class="form-box">
<div class="row row--gutter-width-0">
<div class="col">
<label class="d-block" for="map-nearby">
<script data-cookieconsent="ignore">
_config.nearbySearch = true;
</script>
<span class="form-box__label">{{ 'demi.search.nearby-label' | trans }}</span>
<input name="nearby"
id="map-nearby"
type="text"
class="form-box__content form-control js-nearby-search-autocomplete__input"
placeholder="{{ 'demi.search.nearby' | trans }}">
</label>
</div>
<div class="col-auto">
<button class="btn btn-primary form-box__addon-button js-nearby-search-autocomplete__my-location"
type="button"
title="{{ 'demi.search.nearby.my-location' | trans }}"
aria-label="{{ 'demi.search.nearby.my-location' | trans }}">
<span class="demi-icon demi-icon-target" aria-hidden="true"></span>
</button>
</div>
</div>
</div>
</div>
{% endif %}
</div>
<div class="accommodation-map__controls btn-group-vertical">
<button type="button" class="btn accommodation-map__control js-accommodation-map__zoom-in btn-white"
aria-label="{{ 'sr.demi.map.vergrößern' | trans }}">
<span class="demi-icon demi-icon-plus"></span>
</button>
<button type="button"
class="btn accommodation-map__control js-accommodation-map__zoom-out btn-white"
aria-label="{{ 'sr.demi.map.verkleinern' | trans }}">
<span class="demi-icon demi-icon-minus"></span>
</button>
</div>
<div hidden>
<div class="js-accommodation-map__detail" role="alert" aria-live="assertive">
<div class="js-accommodation-map__detail-loading">
<div class="text-center p-3">
{{ include('@ElementsDemiFrontend/Includes/elements/spinner/loading-spinner.html.twig', {
'styleModifier' : 'mb-2'
}) }}
</div>
</div>
</div>
</div>
</div>
{% endif %}
{% endif %}
</div>
<div class="btn-group list-toggle d-lg-none" role="group">
{% if isMapAllowed %}
<button type="button" class="btn btn-default list-toggle__btn js-toggle-map-style fz16">
<span class="js-toggle-map-style__show-map"><span
class="btn__icon demi-icon demi-icon-map mr-2"></span>{{ "demi.list.map" | trans }}</span>
<span class="js-toggle-map-style__show-list" hidden><span
class="btn__icon demi-icon demi-icon-arrow-left mr-2"></span>{{ "demi.list.list" | trans }}</span>
</button>
{% endif %}
<button type="button" class="btn btn-default list-toggle__btn js-sidebar__toggle fz16"
data-target="#filter-sidebar" aria-label="icon-btn" title="icon-btn">
<span class="btn__icon demi-icon demi-icon-filter mr-2 icon-in-text"></span>{{ "demi.list.filter" | trans }}
</button>
</div>
{% endblock %}