src/Elements/Bundle/DemiFrontendBundle/Resources/views/List/list.desktop.html.twig line 1

Open in your IDE?
  1. {% extends('@ElementsDemiFrontend/Layout/list-layout.html.twig') %}
  2. {% block content %}
  3.     {% set isMapAllowed = not pimcore_checkbox('noMapAllowed').isChecked() %}
  4.     {% set showMapToggle = pimcore_checkbox('showMapToggle').isChecked() %}
  5.     {% set showMapInitially = not pimcore_checkbox('hideMapInitially').isChecked() %}
  6.     {% set useListTeaserStyle = not pimcore_checkbox('useListTiles').isChecked() %}
  7.     {% set showMap = isMapAllowed and not pimcore_device().isPhone() and ((app.request.get('showMap') is null and showMapInitially) or app.request.get('showMap') == 1) %}
  8.     {% set nearbySearchJson = '/var/tmp/typeahead/' ~ app.request.getLocale() ~ '/nearbySearch.json' %}
  9.     {% set searchJson = '/var/tmp/typeahead/hotellists' ~ document.getId() ~ '.json' %}
  10.     {% set region = document.property('region') %}
  11.     {% if not demi_improvedFileExists(searchJson, "PIMCORE_WEB_ROOT") %}
  12.         {% set searchJson = '/var/tmp/typeahead/' ~ app.request.getLocale() ~ '/hotels' ~ (region.getIsMainRegion() ? '' : ('-' ~ region.id)) ~'.json' %}
  13.     {% endif %}
  14.     {% if not editmode %}
  15.     <script type="text/javascript" data-cookieconsent="ignore">
  16.         {% if noDate and (pimcore_checkbox('autoOpenModal').isChecked() or app.request.get('openSearchOnLoad') == 1) %}
  17.         _config.openSearchOnLoad = true;
  18.         {% endif %}
  19.         {% if not searchParam.getIsAlternative() %}
  20.         _config.makeAlternativeSearchRequest = {{ makeAlternativeSearchRequest == true ? "true" : "false" }};
  21.         _config.showAlternativeResults = false;
  22.         _config.hasListMap = {{ isMapAllowed ? 'true': 'false' }};
  23.         {% endif %}
  24.         {% if demi_improvedFileExists(searchJson, "PIMCORE_WEB_ROOT") %}
  25.         _config.searchAutocompleteUrl = '/cache-buster-{{ demi_getExistingCacheFile(searchJson) }}';
  26.         {% endif %}
  27.         {% if demi_improvedFileExists(nearbySearchJson, "PIMCORE_WEB_ROOT") %}
  28.         _config.nearbySearchAutocompleteUrl = '/cache-buster-{{ demi_getExistingCacheFile(nearbySearchJson) }}';
  29.         {% endif %}
  30.         _config.acommodationMapHideBusinesses = {{ demi_core_configuration('getMapHideBusinesses', {}) ? 'true' : 'false' }}
  31.     </script>
  32.     {# Json Map Datenjs-room-selection__price-detail-content #}
  33.     {% set mapPoiJson = demi_demiUrl({
  34.         'path' : document.getFullPath() | trim ('/', 'left') }, 'demi_map_poi_json') %}
  35.     {% set accoTeaserLink = demi_demiUrl({
  36.         'path' : document.getFullPath() | trim ('/', 'left') }, 'demi_compact_teaser') %}
  37.     <script type="text/javascript" data-cookieconsent="ignore">
  38.         {% if searchParam and searchParam.getOrderRandSeed() %}
  39.         _config.urlParams = _config.urlParams || [];
  40.         _config.urlParams.push({name: "randSeed", value: "{{ searchParam.getOrderRandSeed() }}"});
  41.         {% endif %}
  42.         {# // -> JS Config für die Suche und die Liste #}
  43.         _config.accoList = true;
  44.         _config.accoListUrl = '';
  45.         _config.accoListIsPackageList = {{ isPackageSearch ? 'true' : 'false' }};
  46.         {# // -> JS Config für die map #}
  47.         _config.accommodationMap = true;
  48.         _config.accommodationMapPoisUrl = '{{ mapPoiJson }}';
  49.         _config.accommodationMapInfoboxUrl = '{{ accoTeaserLink }}';
  50.         _config.historyController = true;
  51.     </script>
  52.     {# Main #}
  53.     {% if document.getProperty("demi_housePackageContainer") or document.getProperty("demi_housePackageContainer") %}
  54.         {% set listType = document.getProperty("demi_housePackageContainer") ?: document.getProperty("demi_housePackageMasterSelfAssign") %}
  55.         {% set hasPackageContainer = true %}
  56.         {{ include('@ElementsDemiFrontend/Includes/elements/package-list-info.desktop.html.twig', {
  57.             "searchParam" : searchParam,
  58.             "listType" : listType
  59.         }) }}
  60.     {% endif %}
  61.     {{ include('@ElementsDemiFrontend/Includes/elements/search-info.desktop.html.twig', {
  62.         "searchParam" : searchParam,
  63.         "availabilityIsChecked" : availabilityIsChecked,
  64.         "isSearch" : true,
  65.         "noDate" : noDate,
  66.         "hasPackageContainer" : hasPackageContainer ?? false
  67.     }) }}
  68.     {{ include('@ElementsDemiFrontend/Includes/elements/filter-bar.desktop.html.twig', {
  69.         'filterSnippet' : pimcore_relation('filterSnippet').getData(),
  70.         'noDate' : noDate,
  71.         'searchParam' : searchParam,
  72.         'minPrice' : minPrice,
  73.         'maxPrice' : maxPrice,
  74.         'isSearch' : false
  75.     }) }}
  76.     <div class="list-with-map-container">
  77.         <div class="list__items-container js-acco-list-container {{ showMap ? '' : 'is-full-width' }}" id="list">
  78.             <div hidden>
  79.                 {{ include('@ElementsDemiFrontend/Accommodation/lightboxTopbar.html.twig') }}
  80.             </div>
  81.             {{ include('@ElementsDemiFrontend/Snippet/filterSidebar/sorting.desktop.html.twig', {
  82.                 'searchParam' : searchParam,
  83.                 'totalCount' : paginator.getTotalItemCount()
  84.             }) }}
  85.             {% endif %}
  86.             {% if editmode %}
  87.                 {{ include('@ElementsDemiFrontend/List/includes/editmode.html.twig') }}
  88.                 <div class="mb-4">
  89.                     <div class="alert alert-warning">
  90.                         {{ include('@ElementsDemiFrontend/List/includes/list-footer.html.twig') }}
  91.                     </div>
  92.                 </div>
  93.             {% else %}
  94.             <div class="acco-list js-acco-list" role="alert" aria-live="assertive">
  95.                 <div class="text-center my-5 js-acco-list__loading" hidden>
  96.                     {{ include('@ElementsDemiFrontend/Includes/elements/spinner/loading-spinner.html.twig') }}
  97.                 </div>
  98.                 <div class="js-acco-list__content">
  99.                     {% if searchParam.getProductIds() is empty and (document.getProperty("demi_housePackageContainer") or document.getProperty("demi_housePackageContainer")) %}
  100.                         {{ 'demi.detail.no-packages' | trans }}
  101.                     {% else %}
  102.                         {{ include('@ElementsDemiFrontend/List/list-content.html.twig', {
  103.                             'accommodationPaginator' : paginator,
  104.                             'searchError' : searchError ?? null,
  105.                             'error' : error
  106.                         }) }}
  107.                     {% endif %}
  108.                 </div>
  109.             </div>
  110.             {# Preis info #}
  111.             {{ include('@ElementsDemiFrontend/Includes/elements/price-info.html.twig',
  112.                 {"searchParameter" : searchParam }) }}
  113.             {# Alternative Sucheergebnisse wenn in der oberen Liste zu wenig gefunden wurde. #}
  114.             {{ include('@ElementsDemiFrontend/List/includes/acco-list-alternative-search.html.twig') }}
  115.             <section>
  116.                 {% set contactSnippet = demi_core_configuration('getContactSnippet', {}) %}
  117.                 {% if contactSnippet is not null %}
  118.                     <hr class="hr--border-gray my-4">
  119.                     {{ pimcore_inc(contactSnippet) }}
  120.                 {% endif %}
  121.             </section>
  122.             <div>
  123.                 {{ include('@ElementsDemiFrontend/List/includes/list-footer.html.twig') }}
  124.             </div>
  125.         </div>
  126.         {# -> Ausgabe der Map #}
  127.         {% if isMapAllowed %}
  128.             <div class="js-accommodation-map accommodation-map" {{ showMap ? '' : 'hidden' }}>
  129.                 <div class="js-accommodation-map__canvas accommodation-map__canvas">
  130.                     <div class="pt-5 mt-5 text-center">
  131.                         <div class="mt-5">
  132.                             {{ include('@ElementsDemiFrontend/Includes/elements/spinner/loading-spinner.html.twig') }}
  133.                         </div>
  134.                     </div>
  135.                 </div>
  136.                     <div
  137.                         class="accommodation-map__controls accommodation-map__controls--top-right {{ demi_core_configuration('getSortingNearbySearch', {}) ? 'accommodation-map__controls--drawing' : '' }}">
  138.                         <div
  139.                             class="map-tooltip map-tooltip--left {{ demi_core_configuration('getSortingNearbySearch', {}) ? 'map-tooltip--bottom-left-md-down' : '' }} js-draw-on-map__tooltip"
  140.                             aria-hidden="true">
  141.                             {{ "demi.list.map.draw-area" | trans }}
  142.                         </div>
  143.                         <button type="button"
  144.                                 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"
  145.                                 hidden aria-hidden="true">
  146.                             {{ "demi.list.map.remove-area" | trans }}
  147.                         </button>
  148.                         <button type="button" class="btn btn-primary accommodation-map__control js-draw-on-map"
  149.                                 aria-hidden="true">
  150.                             <span class="demi-icon demi-icon-draw-on-map js-draw-on-map__start-drawing"></span>
  151.                             <span class="demi-icon demi-icon-close js-draw-on-map__cancel-drawing" hidden></span>
  152.                         </button>
  153.                     </div>
  154.                     <div class="accommodation-map__controls accommodation-map__controls--top-left">
  155.                         {% if demi_core_configuration('getSortingNearbySearch', {}) %}
  156.                             <div class="js-nearby-search-autocomplete nearby-search-autocomplete js-filter-form__autocomplete">
  157.                                 <div class="form-box">
  158.                                     <div class="row row--gutter-width-0">
  159.                                         <div class="col">
  160.                                             <label class="d-block" for="map-nearby">
  161.                                                 <script data-cookieconsent="ignore">
  162.                                                     _config.nearbySearch = true;
  163.                                                 </script>
  164.                                                 <span class="form-box__label">{{ 'demi.search.nearby-label' | trans }}</span>
  165.                                                 <input name="nearby"
  166.                                                        id="map-nearby"
  167.                                                        type="text"
  168.                                                        class="form-box__content form-control js-nearby-search-autocomplete__input"
  169.                                                        placeholder="{{ 'demi.search.nearby' | trans }}">
  170.                                             </label>
  171.                                         </div>
  172.                                         <div class="col-auto">
  173.                                             <button class="btn btn-primary form-box__addon-button js-nearby-search-autocomplete__my-location"
  174.                                                     type="button"
  175.                                                     title="{{ 'demi.search.nearby.my-location' | trans }}"
  176.                                                     aria-label="{{ 'demi.search.nearby.my-location' | trans }}">
  177.                                                 <span class="demi-icon demi-icon-target" aria-hidden="true"></span>
  178.                                             </button>
  179.                                         </div>
  180.                                     </div>
  181.                                 </div>
  182.                             </div>
  183.                         {% endif %}
  184.                     </div>
  185.                 <div class="accommodation-map__controls btn-group-vertical">
  186.                     <button type="button" class="btn accommodation-map__control js-accommodation-map__zoom-in btn-white"
  187.                             aria-label="{{ 'sr.demi.map.vergrößern' | trans }}">
  188.                         <span class="demi-icon demi-icon-plus"></span>
  189.                     </button>
  190.                     <button type="button"
  191.                             class="btn accommodation-map__control js-accommodation-map__zoom-out btn-white"
  192.                             aria-label="{{ 'sr.demi.map.verkleinern' | trans }}">
  193.                         <span class="demi-icon demi-icon-minus"></span>
  194.                     </button>
  195.                 </div>
  196.                 <div hidden>
  197.                     <div class="js-accommodation-map__detail" role="alert" aria-live="assertive">
  198.                         <div class="js-accommodation-map__detail-loading">
  199.                             <div class="text-center p-3">
  200.                                 {{ include('@ElementsDemiFrontend/Includes/elements/spinner/loading-spinner.html.twig', {
  201.                                     'styleModifier' : 'mb-2'
  202.                                 }) }}
  203.                             </div>
  204.                         </div>
  205.                     </div>
  206.                 </div>
  207.             </div>
  208.         {% endif %}
  209.         {% endif %}
  210.     </div>
  211.     <div class="btn-group list-toggle d-lg-none" role="group">
  212.         {% if isMapAllowed %}
  213.             <button type="button" class="btn btn-default list-toggle__btn js-toggle-map-style fz16">
  214.                 <span class="js-toggle-map-style__show-map"><span
  215.                         class="btn__icon demi-icon demi-icon-map mr-2"></span>{{ "demi.list.map" | trans }}</span>
  216.                 <span class="js-toggle-map-style__show-list" hidden><span
  217.                         class="btn__icon demi-icon demi-icon-arrow-left mr-2"></span>{{ "demi.list.list" | trans }}</span>
  218.             </button>
  219.         {% endif %}
  220.         <button type="button" class="btn btn-default list-toggle__btn js-sidebar__toggle fz16"
  221.                 data-target="#filter-sidebar" aria-label="icon-btn" title="icon-btn">
  222.             <span class="btn__icon demi-icon demi-icon-filter mr-2 icon-in-text"></span>{{ "demi.list.filter" | trans }}
  223.         </button>
  224.     </div>
  225. {% endblock %}