src/Elements/Bundle/DemiFrontendBundle/Resources/views/Includes/teaser/room-teaser.mobile.html.twig line 1

Open in your IDE?
  1. {#
  2. /**
  3.  * @var \\Pimcore\\Templating\\GlobalVariables app
  4.  * #
  5.  * @var productData array
  6.  * @var accommodation \\Elements\\Demi\\Model\\AccommodationServiceProvider
  7.  * @var settlerCode string
  8.  * @var bookOnRequest bool
  9.  * @var availabilityIsChecked bool
  10.  * @var hasSingleRoomRow bool
  11.  * @var searchParam \\Elements\\Demi\\Accommodation\\Search\\Parameter
  12.  */ #}
  13. {% if searchParam is not defined or searchParam.getDateFrom() is empty %}
  14.     {% set fromDate = null %}
  15. {% else %}
  16.     {% set fromDate = demi_getSearchFrom() %}
  17. {% endif %}
  18. {% if productData is iterable and productData.roomRow[0] is defined and productData.products[0] is defined %}
  19.     {% set possibleIndices = productData.roomRow | keys %}
  20.     {% set i = possibleIndices | first %}
  21.     {% set roomRow = productData.roomRow[i].getRowObject() %}
  22.     {% set product = productData.products[i] %}
  23.     {% set accommodationProduct = pimcore_object(product.getProductId()) %}
  24.     {% if accommodationProduct and accommodationProduct.isPublished() %}
  25.         <li>
  26.             {% set id = product.getProductId() %}
  27.             {% set title = accommodationProduct.getName() %}
  28.             {% if product is not null and roomRow is not null %}
  29.                 {% set priceData = product.getPriceData() %}
  30.                 {% set price = product.getPrice() %}
  31.                 {% set showVacancy = true %}
  32.                 {% set showSelection = true %}
  33.                 {% set vacancyCount = product.getUnits() %}
  34.                 {% set promotionText = null %}
  35.                 {% if product.getCancellationInformation() is not empty %}
  36.                     {% set cancellationInformation = product.getCancellationInformation() %}
  37.                     {% set displayInfo = demi_getCancellationDisplayInfo(cancellationInformation,searchParam.getDateFrom()) %}
  38.                     {% set freeCancelText = displayInfo.getFreeCancellationText() %}
  39.                     {% set promotionText = freeCancelText == ""  ? null : freeCancelText %}
  40.                 {% endif %}
  41.             {% elseif product is not null %}
  42.                 {% set price = product.getBasePrice() %}
  43.                 {% set showVacancy = false %}
  44.                 {% set showSelection = false %}
  45.                 {% set vacancyCount = 0 %}
  46.                 {% set priceInfo = product.getPriceInfo() %}
  47.                 {% if priceInfo is not empty %}
  48.                     {% set priceInfoText = include('@ElementsDemiFrontend/Includes/priceInfoStr.html.twig', {'type': priceInfo['type'], 'nights': priceInfo['nights']}) %}
  49.                 {% endif %}
  50.             {% endif %}
  51.             {% if searchParam.getDateFrom() is not null %}
  52.                 {%  if searchParam is instanceof('\Elements\Demi\Lts\Accommodation\Search\Parameter') %}
  53.                     {% set mealArray =  product.getPossibleMealCodes() %}
  54.                 {% elseif searchParam is instanceof('\Elements\Demi\Package\Search\Parameter') %}
  55.                     {% set  mealArray =  [] %}
  56.                 {% else %}
  57.                     {% set mealArray = accommodationProduct.getValidMeals(searchParam.getPeriod(), searchParam.getDateFrom()) %}
  58.                 {% endif %}
  59.                 {% set liveMeal = product.getMealCode() %}
  60.                 {% set liveMealObj = demi_getClassByStringAndIdentifier("\\Elements\\Demi\\Model\\MealType", "getByFid", liveMeal) %}
  61.                 {% if liveMeal not in mealArray|keys %}
  62.                     {% set mealArray = mealArray|merge([liveMealObj]) %}
  63.                 {% endif %}
  64.             {% else %}
  65.                 {% set mealArray = accommodationProduct.getValidMeals(0) %}
  66.             {% endif %}
  67.             {% set images = accommodationProduct is not null ? demi_getRoomPictures(accommodationProduct,fromDate) : [] %}
  68.             <div id="room-row-collapse-parent-{{ product.getProductId() }}"
  69.                 class="js-room-selection__room"
  70.                  data-availability-reference-id="{{ product.getAvailabilityReference() is same as "Service" ? product.getServiceId() : product.getProductId() }}"
  71.                  data-room-id="{{ product.getProductId() }}"
  72.                  data-tracking-variant="{{ demi_impressionVariant(accommodationProduct ?: product, tvbPackage) }}"
  73.                  data-tracking-variant-id="{{ product.getProductId() }}"
  74.                  data-settler-code="{{ settlerCode }}"
  75.                  data-booking-type="{{ product.getBookable() ? 'bookable' : 'onrequest' }}">
  76.                 <div class="card box-shadow mt-3 {{ hasSingleRoomRow ? 'js-room-selection__room-row' : 'z-1' }}"
  77.                         {% if hasSingleRoomRow %}
  78.                             {% if productData is iterable and  productData['products'] is iterable and productData['roomRow'] is iterable %}
  79.                                 {% set done = false %}
  80.                                 {% for productIndex, product in productData['products'] %}
  81.                                     {% if not done %}
  82.                                         {% set roomRowIndexSingleRoom = productData['roomRow'][productIndex].getIndex() %}
  83.                                         {% set done = true %}
  84.                                     {% endif %}
  85.                                 {% endfor %}
  86.                             {% else %}
  87.                                 {% set roomRowIndexSingleRoom = 0 %}
  88.                             {% endif %}
  89.                             data-room-row-id="{{ roomRowIndexSingleRoom is defined ? roomRowIndexSingleRoom : 0 }}"
  90.                             data-initial-price="{{ price | number_format(2, '.', '') }}"
  91.                             {% if priceData is defined and priceData is not null and priceData.getPriceBeforeSpecial() > product.getPrice() %}
  92.                                 data-initial-price-before-special="{{ priceData.getPriceBeforeSpecial() | number_format(2, '.', '') }}"
  93.                             {% endif %}
  94.                             data-room-row-title="{{ title|escape }}"
  95.                         {% endif %}
  96.                 >
  97.                     <section class="teaser teaser--body-padding">
  98.                         <div class="row row--gutter-width-10">
  99.                             <div class="col-4 d-flex flex-column">
  100.                                 {% if priceData is defined and priceData is not null and priceData.getSpecialPriceType() is same as "None" and priceData.getSpecialPriceName() is not empty %}
  101.                                     <div class="teaser__label bg-warning text-center p-1 small text-white strong">
  102.                                         {% if priceData.getSplitPay() and priceData.getSplitStay()  and priceData.getSplitPay() != priceData.getSplitStay() %}
  103.                                             {{ demi_fillTranslation({
  104.                                                 '[STAY]' : priceData.getSplitStay(),
  105.                                                 '[PAY]' : priceData.getSplitPay()
  106.                                             }, 'demi.price-special-type.splitpay') }}
  107.                                         {% else %}
  108.                                             {{ priceData.getSpecialPriceName() }}
  109.                                         {% endif %}
  110.                                     </div>
  111.                                 {% endif %}
  112.                                 {% if priceData is defined and priceData is not null and priceData.getSpecialPriceType() and priceData.getSpecialPriceType()!= priceData.getSpecialPriceName() and priceData.getSpecialPriceType() is not same as "None" %}
  113.                                     <div class="teaser__label bg-warning text-center p-1 small text-white strong">
  114.                                         {{ ("demi.price-special-type." ~ priceData.getSpecialPriceType() | lower) | trans }}
  115.                                     </div>
  116.                                 {% endif %}
  117.                                 {% set galUrl = '#' ~ (accommodationProduct is not null ? accommodationProduct.getId() : '') ~ '-imgs-overlay' %}
  118.                                 {% if images|length == 0 %}
  119.                                     {% set images = [demi_core_configuration('getTeaserFallbackImage',[])] %}
  120.                                     {% set galUrl = '' %}
  121.                                 {% endif %}
  122.                                 <button type="button" class="teaser__img btn-no-styling js-overlay__toggle figure js-tracking--click-piwik"
  123.                                         data-target="{{ galUrl }}"
  124.                                         data-tracking-category="Gallery"
  125.                                         data-tracking-action="open"
  126.                                         {% if  (images[0]) %}
  127.                                         style="background-image:url({{ images[0].getThumbnail('demi-mobile-room-teaser') }});">
  128.                                     {{ images[0].getThumbnail('demi-mobile-room-teaser').getHTML({ 'imgAttributes': {'class': 'sr-only', 'alt': 'demi.image-alt-prefix'|trans ~ ' '~  (accommodationProduct is not null ? accommodationProduct.getName() : product.getDescription()) }})|raw }}
  129.                                     {% if images|length > 1 %}
  130.                                         <span class="figure__overlay p-1">1/{{ images|length }}</span>
  131.                                     {% endif %}
  132.                                     {% endif %}
  133.                                 </button>
  134.                             </div>
  135.                             <div class="col-8 teaser__body collapsed js-tracking--click-piwik"
  136.                                  data-toggle="collapse"
  137.                                  data-target="#detail-{{ id }}"
  138.                                  data-tracking-category="Product"
  139.                                  data-tracking-action="click detail"
  140.                                  data-tracking-label="{{ id }}"
  141.                             >
  142.                                 <div class="teaser__main-body">
  143.                                     <h3 class="mb-1 text-primary">
  144.                                         <a href="#detail-{{ id }}"
  145.                                            aria-controls="detail-{{ id }}"
  146.                                            aria-expanded="false"
  147.                                            data-toggle="collapse"
  148.                                            class="collapsed"
  149.                                         >{{ title }}</a>
  150.                                     </h3>
  151.                                     {% if hasSingleRoomRow %}
  152.                                             <div class="mb-1 small text-muted">
  153.                                                 <div class="media">
  154.                                                     <div class="demi-icon demi-icon-person mr-1 icon-in-text"
  155.                                                          aria-hidden="true"></div>
  156.                                                     <div class="media-body">
  157.                                                         {% if roomRow is not null %}
  158.                                                             {% set adults = roomRow.getAdults() %}
  159.                                                             {% set children = roomRow.getChildAges()|length %}
  160.                                                             {% set adultsStr = adults > 1 ? adults ~ " " ~ 'demi.detail.room.occupancy.adults'|trans : adults ~ " " ~ 'demi.detail.room.occupancy.adult'|trans %}
  161.                                                             {% set childrenStr = children > 1 ? children ~ " " ~ 'demi.detail.room.occupancy.children'|trans : children ~ " " ~ 'demi.detail.room.occupancy.child'|trans %}
  162.                                                         {% else %}
  163.                                                             {% set adultsStr = accommodationProduct.getBedsMin() ~ "-" ~ accommodationProduct.getBedsMax() ~ " " ~ 'demi.detail.room.occupancy.persons'|trans %}
  164.                                                         {% endif %}
  165.                                                         {{ adultsStr }}
  166.                                                         {% if children is defined and children|length > 0 %}
  167.                                                             , {{ childrenStr }}
  168.                                                         {% endif %}
  169.                                                     </div>
  170.                                                 </div>
  171.                                             </div>
  172.                                     {% endif %}
  173.                                     {% if showVacancy %}
  174.                                         {{  include('@ElementsDemiFrontend/Includes/elements/vacancy-info.html.twig', {'vacancyCount':vacancyCount, 'tvbPackage':tvbPackage}) }}
  175.                                     {% endif %}
  176.                                 </div>
  177.                                 {% if hasSingleRoomRow %}
  178.                                     <hr class="my-1">
  179.                                     <div>
  180.                                         {% if liveMealObj is defined and liveMealObj is not empty %}
  181.                                             <div class="mb-1 small text-muted">
  182.                                                 <span class="js-room-selection__meal-text">
  183.                                                     {{ liveMealObj.getText() }}
  184.                                                 </span>
  185.                                                 {% if mealArray|length > 1 %}
  186.                                                     <label for="meal-selector-{{ product.getProductId() }}" tabindex="0"
  187.                                                            class="btn-no-styling increased-click-area js-room-selection__add">
  188.                                                         <span class="demi-icon demi-icon-edit icon-in-text"
  189.                                                               title="{{ "demi.detail.change-meal"|trans }}"
  190.                                                               aria-label="{{ "demi.detail.change-meal"|trans }}"></span>
  191.                                                     </label>
  192.                                                 {% endif %}
  193.                                             </div>
  194.                                         {% endif %}
  195.                                         <div class="row align-items-baseline">
  196.                                             <div class="col">
  197.                                                 {% if priceData is defined and priceData is not null and priceData.getPriceBeforeSpecial() > product.getPrice() %}
  198.                                                     <span class="sr-only">{{ 'demi.detail.room.old-price'|trans }}</span>
  199.                                                     <s class="text-muted js-room-selection__price-before-special">{{ demi_paymentGetPriceObject(priceData.getPriceBeforeSpecial(), accommodation) }}</s>
  200.                                                 {% endif %}
  201.                                                 {% if priceInfoText is defined %}
  202.                                                     <div class="small text-muted">
  203.                                                         {{ priceInfoText }}
  204.                                                     </div>
  205.                                                 {% endif %}
  206.                                             </div>
  207.                                             {% if (price is not null and price > 0) %}
  208.                                                 <strong class="col col-auto mr-auto">
  209.                                                 <span class="price text-success" aria-live="polite">
  210.                                                     <span class="js-room-selection__price">
  211.                                                         {% if roomRow is empty %}
  212.                                                             {{ 'demi.price-from-short'|trans }}
  213.                                                         {% endif %} {{ demi_paymentGetPriceObject(price, accommodation) }}
  214.                                                     </span>
  215.                                                     <span class="js-room-selection__price-loading" hidden>
  216.                                                         <span class="circle-spinner circle-spinner--small float-left mr-1"
  217.                                                               aria-label="{{ 'demi.content-loading'|trans }}"
  218.                                                               title="{{ 'demi.content-loading'|trans }}"></span>
  219.                                                     </span>
  220.                                                 </span>
  221.                                                     {% if  priceData is defined and priceData is not null %}
  222.                                                         <button type="button" data-target="#price-info-{{ id }}-room-row-0"
  223.                                                                 class="btn-no-styling increased-click-area js-overlay__toggle text-gray-medium js-tracking--click-piwik"
  224.                                                                 data-tracking-category="Product"
  225.                                                                 data-tracking-action="click price"
  226.                                                                 data-tracking-label="{{ id }}"
  227.                                                         >
  228.                                                     <span class="demi-icon demi-icon-info-circle icon-in-text"
  229.                                                           title="{{ 'demi.detail.room.price-info'|trans }}"
  230.                                                           aria-label="{{ 'demi.detail.room.price-info'|trans }}"></span>
  231.                                                         </button>
  232.                                                     {% endif %}
  233.                                                 </strong>
  234.                                             {% endif %}
  235.                                         </div>
  236.                                     </div>
  237.                                 {% endif %}
  238.                                 <a class="teaser__collapse-arrow collapsed demi-icon demi-icon-chevron-down"
  239.                                    aria-expanded="false"
  240.                                    aria-controls="detail-{{ id }}"
  241.                                    href="#detail-{{ id }}"
  242.                                    data-toggle="collapse"
  243.                                    title="{{ 'demi.detail.room.show-details'|trans }}"
  244.                                    aria-label="{{ 'demi.detail.room.show-details'|trans }}"></a>
  245.                             </div>
  246.                         </div>
  247.                     </section>
  248.                         {{ include("@ElementsDemiFrontend/Includes/teaser/room-details.html.twig", {
  249.                             "accommodationProduct": accommodationProduct,
  250.                             "images": images,
  251.                             "availabilityIsChecked": availabilityIsChecked,
  252.                             "dateFrom": searchParam.getDateFrom()
  253.                         }) }}
  254.                     {% if hasSingleRoomRow %}
  255.                     <div class="card-body">
  256.                         {{ include("@ElementsDemiFrontend/Includes/teaser/room-buttons.html.twig", {
  257.                             'accommodationProduct': accommodationProduct,
  258.                             'product': product,
  259.                             'mealArray': mealArray,
  260.                             'liveMealObj': liveMealObj is defined ? liveMealObj : null,
  261.                             'availabilityIsChecked': availabilityIsChecked,
  262.                             'promotionText': promotionText is defined ? promotionText : null
  263.                         }) }}
  264.                     </div>
  265.                     {% if priceData is defined and priceData is not null %}
  266.                     {{ include('@ElementsDemiFrontend/Includes/overlays/price-info.html.twig', {
  267.                         'title': 'demi.detail.room.price-info'|trans ,
  268.                         'id': 'price-info-' ~ id ~ '-room-row-0',
  269.                         'priceData': priceData,
  270.                         'accommodationProduct': accommodationProduct,
  271.                         'roomRow': roomRow,
  272.                         'roomRowIndex': 0,
  273.                         'productSet': product,
  274.                     }) }}
  275.                     <script>
  276.                     _config.ajaxOverlay = true;
  277.                     </script>
  278.                     {% endif %}
  279.                     {% endif %}
  280.                 </div>
  281.                 {% if not hasSingleRoomRow %}
  282.                     <div class="teaser-detail mx-2">
  283.                         <div class="card box-shadow">
  284.                             {% for productIndex, product in productData['products'] %}
  285.                                 {% set roomRow = productData['roomRow'][productIndex].getRowObject() %}
  286.                                 {% set accommodationProduct = pimcore_object(product.getProductId()) %}
  287.                                 {% set id = accommodationProduct ? accommodationProduct.getId() : product.getProductId() %}
  288.                                 {% set title = accommodationProduct.getName() %}
  289.                                 {% if product is not null and roomRow is not null %}
  290.                                     {% set priceData = product.getPriceData() %}
  291.                                     {% set price = product.getPrice() %}
  292.                                     {% set showVacancy = true %}
  293.                                     {% set showSelection = true %}
  294.                                     {% set vacancyCount = product.getUnits() %}
  295.                                 {% elseif product is not null %}
  296.                                     {% set price = product.getBasePrice() %}
  297.                                     {% set showVacancy = false %}
  298.                                     {% set showSelection = false %}
  299.                                     {% set vacancyCount = 0 %}
  300.                                     {% set priceInfo = product.getPriceInfo() %}
  301.                                     {% set priceInfoText = include('@ElementsDemiFrontend/Includes/priceInfoStr.html.twig', {'type': priceInfo['type'], 'nights': priceInfo['nights']}) %}
  302.                                 {% endif %}
  303.                                 {% if searchParam.getDateFrom() is not null %}
  304.                                     {% if searchParam is instanceof('\Elements\Demi\Package\Search\Parameter') %}
  305.                                         {% set mealArray =  [] %}
  306.                                     {% else %}
  307.                                         {% set mealArray = accommodationProduct.getValidMeals(searchParam.getPeriod(), fromDate) %}
  308.                                     {% endif %}
  309.                                     {% set liveMeal = product.getMealCode() %}
  310.                                     {% set liveMealObj = demi_getClassByStringAndIdentifier("\\Elements\\Demi\\Model\\MealType", "getByFid", liveMeal) %}
  311.                                     {% if liveMeal not in mealArray|keys %}
  312.                                         {% set mealArray = mealArray|merge([liveMealObj]) %}
  313.                                     {% endif %}
  314.                                 {% else %}
  315.                                     {% set mealArray = accommodationProduct.getValidMeals(0, fromDate) %}
  316.                                 {% endif %}
  317.                                     {% set serviceImages = accommodationProduct.getService().getImages(null, fromDate) %}
  318.                                     {% set productImages = accommodationProduct.getImages(null, fromDate) %}
  319.                                     {% set images = productImages|merge(serviceImages) %}
  320.                                 <div class="js-room-selection__room-row"
  321.                                      data-room-row-id="{{ productIndex }}"
  322.                                      data-initial-price="{{ product.getPrice() | number_format(2, '.', '') }}"
  323.                                         {% if  (priceData and priceData.getPriceBeforeSpecial() > product.getPrice()) %}
  324.                                             data-initial-price-before-special="{{ priceData.getPriceBeforeSpecial() | number_format(2, '.', '') }}"
  325.                                         {% endif %}
  326.                                      data-room-row-title="{{ title|escape }}">
  327.                                     {% if  (productIndex) %}
  328.                                         <hr class="m-0">
  329.                                     {% endif %}
  330.                                     <div class="card-body p-2">
  331.                                         {% set translation = 'demi.detail.room.select-headline-'~ (accommodationProduct.getAccommodationType()|lower) %}
  332.                                         <h4 class="h3 font-medium">{{ translation|trans }} {{ productIndex + 1 }}</h4>
  333.                                             <div class="mb-1 small text-muted">
  334.                                                 <div class="media">
  335.                                                     <div class="demi-icon demi-icon-person mr-1 icon-in-text" aria-hidden="true"></div>
  336.                                                     <div class="media-body">
  337.                                                         {% if roomRow is not null %}
  338.                                                             {% set adults = roomRow.getAdults() %}
  339.                                                             {% set children = roomRow.getChildAges()|length %}
  340.                                                             {% set adultsStr = adults > 1 ? adults ~ " " ~ 'demi.detail.room.occupancy.adults'|trans : adults ~ " " ~ 'demi.detail.room.occupancy.adult'|trans %}
  341.                                                             {% set childrenStr = children > 1 ? children ~ " " ~ 'demi.detail.room.occupancy.children'|trans : children ~ " " ~ 'demi.detail.room.occupancy.child'|trans %}
  342.                                                         {% else %}
  343.                                                             {% set adultsStr = accommodationProduct.getBedsMin() ~ "-" ~ accommodationProduct.getBedsMax()~ " ".translate('demi.detail.room.occupancy.persons') %}
  344.                                                         {% endif %}
  345.                                                         {{ adultsStr }}
  346.                                                         {% if  (children > 0) %}
  347.                                                             , {{ childrenStr }}
  348.                                                         {% endif %}
  349.                                                     </div>
  350.                                                 </div>
  351.                                             </div>
  352.                                         {% if  (liveMealObj) %}
  353.                                         <div class="mb-1 small text-muted">
  354.                                                 <span class="js-room-selection__meal-text">
  355.                                                     {{ liveMealObj.getText() }}
  356.                                                 </span>
  357.                                             {% if  mealArray|length > 1 %}
  358.                                             <label for="meal-selector-{{ product.getProductId() }}" tabindex="0"
  359.                                                            class="btn-no-styling increased-click-area js-room-selection__add">
  360.                                                         <span class="demi-icon demi-icon-edit icon-in-text"
  361.                                                               title="{{ 'demi.detail.change-meal'|trans }}"
  362.                                                               aria-label="{{ 'demi.detail.change-meal'|trans }}"></span>
  363.                                                     </label>
  364.                                                 {% endif %}
  365.                                             </div>
  366.                                         {% endif %}
  367.                                         <div class="row align-items-baseline">
  368.                                             <div class="col">
  369.                                                 {% if priceData is not null  and priceData.getPriceBeforeSpecial() > product.getPrice() %}
  370.                                                     <span class="sr-only">{{ 'demi.detail.room.old-price'|trans }}</span>
  371.                                                     <s class="text-muted js-room-selection__price-before-special">{{ demi_paymentGetPriceObject(priceData.getPriceBeforeSpecial(), accommodation) }}</s>
  372.                                                 {% endif %}
  373.                                                 {% if priceInfoText is not empty %}
  374.                                                     <div class="small text-muted">
  375.                                                         {{ priceInfoText }}
  376.                                                     </div>
  377.                                                 {% endif %}
  378.                                             </div>
  379.                                             {% if  price is defined and price > 0 %}
  380.                                             <strong class="col col-auto mr-auto">
  381.                                                 <span class="price text-success" aria-live="polite">
  382.                                                     <span class="js-room-selection__price">
  383.                                                         {% if roomRow is null %}
  384.                                                             {{ 'demi.price-from-short'|trans }}
  385.                                                         {% endif %} {{ demi_paymentGetPriceObject(price, accommodation) }}
  386.                                                     </span>
  387.                                                     <span class="js-room-selection__price-loading" hidden>
  388.                                                         <span class="circle-spinner circle-spinner--small float-left mr-1"
  389.                                                               aria-label="{{ 'demi.content-loading'|trans }}"
  390.                                                               title="{{ 'demi.content-loading'|trans }}"></span>
  391.                                                     </span>
  392.                                                 </span>
  393.                                                 {% if priceData is not null %}
  394.                                                 <button type="button" data-target="#price-info-{{ id }}-room-row-{{ productIndex }}"
  395.                                                         class="btn-no-styling increased-click-area js-overlay__toggle text-gray-medium">
  396.                                                     <span class="demi-icon demi-icon-info-circle icon-in-text"
  397.                                                           title="{{ 'demi.detail.room.price-info'|trans }}"
  398.                                                           aria-label="{{ 'demi.detail.room.price-info'|trans }}"></span>
  399.                                                 </button>
  400.                                                 {% endif %}
  401.                                             </strong>
  402.                                             {% endif %}
  403.                                         </div>
  404.                                             <div class="mt-2">
  405.                                                 {{ include("@ElementsDemiFrontend/Includes/teaser/room-buttons.html.twig", {
  406.                                                     'accommodationProduct': accommodationProduct,
  407.                                                     'product': product,
  408.                                                     'mealArray': mealArray,
  409.                                                     'liveMealObj': liveMealObj,
  410.                                                     'availabilityIsChecked': availabilityIsChecked,
  411.                                                     'showSelection': showSelection,
  412.                                                     'promotionText': promotionText
  413.                                                 }) }}
  414.                                             </div>
  415.                                     </div>
  416.                                     {% if priceData is not null %}
  417.                                         {{  include('@ElementsDemiFrontend/Includes/overlays/price-info.html.twig',
  418.                                             {
  419.                                                 'title': 'demi.detail.room.price-info'|trans,
  420.                                                 'id': 'price-info-' ~ id ~ '-room-row-' ~ productIndex,
  421.                                                 'priceData': priceData,
  422.                                                 'accommodationProduct': accommodationProduct,
  423.                                                 'roomRow': roomRow,
  424.                                                 'roomRowIndex': productIndex,
  425.                                                 'productSet': product
  426.                                             }) }}
  427.                                     {% endif %}
  428.                                 </div>
  429.                             {% endfor %}
  430.                         </div>
  431.                     </div>
  432.                 {% endif %}
  433.                     {{ include('@ElementsDemiFrontend/Includes/overlays/img-gallery.html.twig', {
  434.                         'imagesTypes': ['Service', 'Product'],
  435.                         'accommodation': accommodation,
  436.                         'accommodationProduct': accommodationProduct,
  437.                         'lazyLoadAll': true
  438.                     }) }}
  439.             </div>
  440.         </li>
  441.     {% endif %}
  442. {% endif %}