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

Open in your IDE?
  1. {#
  2. /**
  3.  * @var \Pimcore\Templating\PhpEngine $this
  4.  * @var \Pimcore\Templating\PhpEngine $view
  5.  * @var \Pimcore\Templating\GlobalVariables $app
  6.  * #
  7.  * @var \Elements\Bundle\DemiFrontendBundle\Templating\Helper\Filter $demiFilterHelper
  8.  * @var \Elements\Demi\Accommodation\Search\Parameter $searchParam
  9.  * @var \Zend\Paginator\Paginator $paginator
  10.  * @var int $totalPages
  11.  * @var bool $noDate
  12.  * @var boolean $editmode
  13.  * @var $isPackageSearch
  14.  */
  15. #}
  16. {% do jsConfig("_config").add('noDate', noDate) %}
  17. {% set pages = demi_getPagesArray(accommodationPaginator) %}
  18. {% if searchParam is instanceof("\\Elements\\Demi\\Accommodation\\Search\\Parameter") %}
  19.     {% set resultCount = (pages.totalCount ?? pages.totalItemCount) ?: 0  %}
  20. {% elseif searchParam is instanceof("\\Elements\\Demi\\Pacakge\\Search\\Parameter") %}
  21.     {% set resultCount = accommodationPaginator.getTotalItemCount() %}
  22. {% endif %}
  23. {% set error = error is defined ? error : '' %}
  24. {% set searchError = searchError is defined ? searchError : '' %}
  25. {% set isMapAllowed = not pimcore_checkbox('noMapAllowed').isChecked() %}
  26.     {% set showMapToggle = pimcore_checkbox('showMapToggle').isChecked() %}
  27.     {% set showMapInitially = not pimcore_checkbox('hideMapInitially').isChecked() %}
  28.     {% set useListTeaserStyle = not pimcore_checkbox('useListTiles').isChecked() %}
  29.     {% set showMap = isMapAllowed and not pimcore_device().isPhone() and ((app.request.get('showMap') is null and showMapInitially) or app.request.get('showMap') == 1) %}
  30. {% set listView = not accommodationListTilesEnabled or (showMap and useListTeaserStyle) or pimcore_device().isPhone() %}
  31. {% set filterTexte = [] %}
  32.  {% if app.request.get('mapPoly') %}
  33.      {% set filterTexte = filterTexte|merge([{
  34.          'name' : 'notBookOnly',
  35.          'value' : 'on',
  36.          'text' : "demi.filter.only-not-bookable" | trans,
  37.      }]) %}
  38.  {% endif %}
  39. <script type="text/javascript" data-cookieconsent="ignore">
  40.     _config.viewType = "list";
  41.     _config.accoListAlternativeUrl = "{{ accoListAlternativeUrl is defined ? accoListAlternativeUrl|raw : '' }}";
  42.     _config.totalResultCount = {{ resultCount }};
  43.     {% if not pimcore_device().isPhone() %}
  44.     _config.showOnMapLinks = "true";
  45.     {% endif %}
  46.     _config.minPrice = {{ minPrice }};
  47.     _config.maxPrice = {{ maxPrice }};
  48. </script>
  49. {% if error is not empty or searchError is not empty %}
  50.     {{ include('@ElementsDemiFrontend/Checkout/includes/error-container.html.twig', {
  51.         'error' : error ?: searchError,
  52.         'styleModifier' : 'mb-0 mt-0',
  53.         'isList' : true
  54.     }) }}
  55. {% endif %}
  56. <div class="{{ listView ? '' : 'container mt-4' }}">
  57.     {% if searchParam is instanceof("\\Elements\\Demi\\Accommodation\\Search\\Parameter") and searchParam.getOrderKey() is iterable and searchParam.getOrderKey()|first == "nearbySearchAsc" %}
  58.         {% set nearbySearchObject = pimcore_object(app.request.get('nearbySearchId')) %}
  59.         {% set nearbySearchName = null %}
  60.         {% if nearbySearchObject is instanceof("\\Pimcore\\Model\\DataObject\\Concrete") %}
  61.             {% set nearbySearchName = nearbySearchObject.getName() %}
  62.         {% elseif app.request.get('nearbySearchId') == 'location'%}
  63.             {% set  nearbySearchName = 'demi.search.nearby.my-location'|trans %}
  64.         {% endif %}
  65.         {% if  nearbySearchName is not null %}
  66.             <h3 class="mt-3">{{ demi_fillTranslation({
  67.                     "[OBJECT]" : nearbySearchName
  68.                 },"demi.list.nearby-search.title" ) }}</h3>
  69.         {% endif %}
  70.     {% endif %}
  71.     {{ include('@ElementsDemiFrontend/List/includes/list-top.html.twig', {
  72.         'searchParam' : searchParam,
  73.         'noDate' : noDate,
  74.         'resultCount' : resultCount,
  75.         'page' : accommodationPaginator.getCurrentPageNumber(),
  76.         'totalPages' : pages.pageCount
  77.     }) }}
  78.     {% set extraClasses = showMap ? 'row row--gutter-width-20 row--vertical-gutter-20' : 'row row--gutter-width-30 row--vertical-gutter-30 mb-5' %}
  79.     <ul class="list-unstyled {{ listView ? '' : extraClasses }}">
  80.         {% set hrClass = pimcore_device().isPhone() ? "hr--bold hr--light my-3" : "hr--border-gray my-0" %}
  81.         {% set addPositions = (accommodationPaginator.getCurrentPageNumber() - 1) * demi_getItemCountPerPage(accommodationPaginator) %}
  82.         {% set colClass = listView ? '' : ('d-flex flex-column ' ~ (showMap ? 'col-6' : 'col-sm-6 col-md-4 col-xl-3')) %}
  83.         {% set templateType = listView ? '@ElementsDemiFrontend/Includes/teaser/acco-teaser.html.twig' :
  84.             '@ElementsDemiFrontend/Includes/teaser/acco-teaser-card.html.twig' %}
  85.         {% for accommodationItem in accommodationPaginator %}
  86.         <li class="{{ colClass }}">
  87.             {{  include(templateType, {
  88.                 'accommodationItem' : accommodationItem,
  89.                 'isPackageSearch' : isPackageSearch,
  90.                 'styleModifier' : 'js-acco-list__item flex-fill',
  91.                 'noDate' : noDate,
  92.                 'position' : loop.index + addPositions,
  93.                 'nearbySearchName' : nearbySearchName ?? null,
  94.                 'tvbPackage' : null,
  95.                 'bodyPadding' : false,
  96.                 'housePackageMaster' : null,
  97.                 'targetBlank' : false
  98.             }) }}
  99.             {% if listView %}
  100.                 <hr class="{{ hrClass }}">
  101.             {% endif %}
  102.         </li>
  103.         {% endfor %}
  104.     </ul>
  105.     {% if searchParam is instanceof ("\\Elements\\Demi\\Accommodation\\Search\\Parameter") and pages.pageCount >= 1 %}
  106.         {% set templateName = demi_getDeviceDependentTemplate('@ElementsDemiFrontend/Includes/elements/', 'paging', container) %}
  107.         {{ include(templateName, demi_getPaginatorVariables(accommodationPaginator)|merge([{"searchParam" : searchParam}])) }}
  108.     {% endif %}
  109.     {% if resultCount <= minResult %}
  110.     <section class="container text-center mt-3">
  111.         {% if resultCount == 0 %}
  112.             <h3 class="text-primary text-danger h4">{{ 'demi.list.no-results' | trans }}</h3>
  113.             {% if not searchParam.getIsAlternative() %}
  114.                 <script type="text/javascript" data-cookieconsent="ignore">
  115.                     _config.makeAlternativeSearchRequest = {{  makeAlternativeSearchRequest == true ? "true" : "false" }};
  116.                 </script>
  117.             {% endif %}
  118.         {% elseif searchParam is instanceof ("\\Elements\\Demi\\Accommodation\\Search\\Parameter") and demi_hasRemovableFilter(searchParam) %}
  119.             <h3 class="text-primary">{{ 'demi.list.few-results' | trans }}</h3>
  120.         {% else %}
  121.             {% if not searchParam.getIsAlternative() %}
  122.                 <script type="text/javascript" data-cookieconsent="ignore">
  123.                     _config.makeAlternativeSearchRequest = {{  makeAlternativeSearchRequest == true ? "true" : "false" }};
  124.                 </script>
  125.             {% endif %}
  126.         {% endif %}
  127.         <div class="js-quick-filter">
  128.             <div class="mt-3">
  129.                 {{ 'demi.list.try-remove-filter' | trans }}:
  130.             </div>
  131.             <div class="mt-3">
  132.                 <div class="js-quick-filter__list"></div>
  133.             </div>
  134.             <div class="mt-3">
  135.                 <button type="button" class="btn btn-small btn btn-success-dark btn-sm js-remove-all-filter">
  136.                     <script data-cookieconsent="ignore">
  137.                         _config.removeAllFilter = true;
  138.                     </script>
  139.                     <span aria-hidden="true" class="btn__icon demi-icon demi-icon-close-circle mr-1"></span>
  140.                     {{ 'demi.list.remove-all-filters' | trans}}
  141.                 </button>
  142.             </div>
  143.         </div>
  144.     </section>
  145.     {% endif %}
  146.     {% if not noDate and document.getEditable('useBookOnly') and document.getEditable('useBookOnly').isChecked() %}
  147.         {% set filterTexte = filterTexte|merge([{
  148.             'name' : 'notBookOnly',
  149.             'value' : 'on',
  150.             'text' : "demi.filter.only-not-bookable" | trans,
  151.         }]) %}
  152.         {% set lastPage = demi_getPagesArray(paginator)['lastPageInRange'] <= paginator.getCurrentPageNumber() %}
  153.         {% if lastPage and not searchParam.getNotBookOnly() %}
  154.             {{ include('@ElementsDemiFrontend/List/includes/bookOnlyLink.html.twig') }}
  155.         {% endif %}
  156.     {% endif %}
  157. </div>
  158. <script type="text/javascript" data-cookieconsent="ignore">
  159.     _filterTexte = window['_filterTexte'] || [];
  160.     _filterTexte.push.apply( _filterTexte, {{ filterTexte | json_encode | raw }});
  161. </script>
  162. {% if not editmode and not pimcore_device().isPhone() %}
  163.     {% do elements_head_meta().setDescription(pimcore_wysiwyg('description').getData(), false) %}
  164.     <section class="js-search-data__hide-if-submitted">
  165.         <hr class="hr--border-gray my-4">
  166.         <div class="container wysiwyg">
  167.             {{ pimcore_wysiwyg('description') }}
  168.         </div>
  169.     </section>
  170. {% endif %}