{% extends 'base.html.twig' %}
{% block title %}{{ parent() }}{{ currentPage is defined and currentPage != 1 ? ' - Страница №' ~ currentPage }}{% endblock %}
{% block messenger %}{% endblock %}
{% block stylesheets %}
<link rel="stylesheet" href="/css/statistics_modal.css?v=4"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.css"/>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
<link rel="stylesheet" href="/admin/plugins/datetimepicker/css/bootstrap-datetimepicker.min.css">
<link rel="stylesheet" href="/admin/plugins/datatables/jquery.dataTables.min.css"/>
<link rel="stylesheet" href="/admin/plugins/colorpicker/bootstrap-colorpicker.min.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.css">
<link rel="stylesheet" href="/css/swiper/swiper.min.css"/>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker-standalone.min.css" integrity="sha512-L0/PNISezIYAoqFXBGP9EJ4qLH8XF356+Lo92vzloQqk7HUpZ4FN1x1dUOnsUAUjHTSxXxeaD0HXfrANhtJOEA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
{{ parent() }}
<link href="/css/offers.css?v={{ offers_css }}" rel="stylesheet" type="text/css"/>
<link href="/css/foodForGift.css?v={{ food_for_gift_css }}" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"
integrity="sha512-c42qTSw/wPZ3/5LBzD+Bw5f7bSF2oxou6wEb+I/lqeaKV5FDIfMvvRp772y4jcJLKuGUOpbJMdg/BTl50fJYAw=="
crossorigin="anonymous" referrerpolicy="no-referrer"/>
{% endblock %}
{% set isOfferFavourite = app.user ? app.user.isOfferFavourite(offer) : false %}
{% set subscribed = app.user and isSubscriber(app.user) %}
{% block ogimage %}
{% if detailMediaList|length > 0 %}
<meta property="og:image"
content="{{ app.request.getSchemeAndHttpHost() }}{{ getImageURL(detailMediaList|first, 522, 322) }}"/>
<meta property="og:image:width" content="522"/>
<meta property="og:image:height" content="322"/>
{% else %}
{{ parent() }}
{% endif %}
{% endblock %}
{% block header %}
{% embed 'header.html.twig' %}
{% block headerTopMenu %}
{{ parent() }}
{% endblock %}
{% endembed %}
{% endblock %}
{% block mainColumnClass %} one-column bg-white{% endblock %}
{% block main_content %}
{% set isPickupEnabled = offer.getOnlineOrderSettings().isPickupEnabled() is defined ? offer.getOnlineOrderSettings().isPickupEnabled() %}
{% set isDeliveryEnabled = offer.getOnlineOrderSettings().isDeliveryEnabled() is defined ? offer.getOnlineOrderSettings().isDeliveryEnabled() %}
{% set ratingWithCount = getEntityRatingWithCount(constant('Slivki\\Entity\\Category::OFFER_CATEGORY_ID'), offer.getID()) %}
{% if isPickupEnabled or isDeliveryEnabled %}
<input id="deliveryMethodEnabled" type="hidden" value="{{ isDeliveryEnabled == '' ? '2' : '1' }}">
{% endif %}
<input id="offerID" type="hidden" value="{{ offer.getID() }}">
<input type="hidden" id="stock-id" value="{{ offer.getID() }}">
<input type="hidden" id="stock-link" value="{{ app.request.getSchemeAndHttpHost() ~ app.request.getRequestUri() }}">
{% if subscribed %}
<input id="allowedCodesCountBySubscription" type="hidden" value="{{ allowedCodesCountBySubscription }}">
{% endif %}
{% if app.user %}
<input type="hidden" id="customerID" value="{{ app.user.getID() }}"/>
{% endif %}
<input type="hidden" id="codeCost" value="{{ codeCost }}">
<input type="hidden" class="buyOrderAmount form-element" type="text"
value="{{ codeCost }}"/>
<div class="content-wrapper">
<div class="content-wrapper-offers" itemscope itemtype="https://schema.org/Product">
<div class="d-flex pb-2" style="padding: 10px 34px;">
<div class="col-6">
{% include 'Slivki/breadcrumbs.html.twig' with { 'parentCategoryList': parentCategoryList, 'supplierCategoryData': offer.getSupplierCategoryData() } only %}
</div>
</div>
<h3 class="offers-tittle" style="color: {{ offer.getTitleFontColor() }};">{{ offer.getTitle()|raw }}</h3>
<div class="content-offers-top">
<div class="left-top-block">
<div class="content-wrapper-carousel position-relative" style="margin-bottom: 28px">
<div class="stock-image">
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel" data-interval="3000">
<div class="background-opacity"></div>
{% if detailMediaList|length > 1 %}
<ol class="carousel-indicators">
{% for media in detailMediaList %}
{% set active = "" %}
{% if loop.index0 == 0 %}
{% set active = "active" %}
{% endif %}
<li data-target="#carousel-example-generic"
data-slide-to="{{ loop.index0 }}" class="{{ active }}"></li>
{% endfor %}
</ol>
{% endif %}
<div class="carousel-inner" role="listbox">
{% for media in detailMediaList %}
{% set active = "" %}
{% if loop.index0 == 0 %}
{% set active = "active" %}
{% endif %}
<div class="item {{ active }}">
<img itemprop="image" class="w-100 br-14 lazyload" loading="lazy"
src="{{ getImageURL(media, 1180, 728) }}"
alt="{{ media.getDescription() }}"/>
<div class="carousel-caption ">
{{ media.getDescription() }}
</div>
</div>
{% endfor %}
</div>
{% if detailMediaList|length > 1 %}
<a class="left carousel-control" href="#carousel-example-generic" role="button"
data-slide="prev">
<div class="sr-only">Назад</div>
</a>
<a class="right carousel-control" href="#carousel-example-generic" role="button"
data-slide="next">
<div class="sr-only">Далее</div>
</a>
{% endif %}
</div>
</div>
<div class="discount-block">
{{ offer.isWithoutCodes() ? 'пока без скидки' : offer.getDiscount() }}
</div>
{% if offer.isWithoutCodes() %}
<div class="button-add-follow button-add-follow-teaser fovoutite-block"
onclick="onFavouriteClickOffer({{ offer.getID() }}, {{ isOfferFavourite ? 'true' : 'false' }})"
data-html="true"
data-toggle="tooltip"
data-placement="top"
data-original-title="Добавить в <br> избранное"
>
<img src="{{ isOfferFavourite ? '/images/heart_active.svg' : '/images/offers/follow.svg' }}">
</div>
{% endif %}
</div>
</div>
<div class="right-top-block">
<div class="offers-description">
{% if pastOffer or offer.getFreeCodesCount() == 0 %}
<div class="past-offer mt-5 pt-5">
<i class="slivki-icon-minus-circled"></i>
<p>Упс, акция завершена!</p>
<a href="#offersConditions" class="buttons-link-offers">
Условия
</a>
<a href="#conditionAddress" class="buttons-link-offers">
Адрес, телефоны
</a>
<a href="#offersReview" class="buttons-link-offers">
Отзывы
</a>
</div>
{% else %}
{% if not offer.isInFreeCodesCategory() and not offer.isWithoutCodes() %}
<div class="d-flex statistic-block {% if is_granted('ROLE_ADMIN') %}justify-content-between{% endif %} col px-2 my-0">
{% if is_granted('ROLE_ADMIN') %}
<div id="statisticsButton" data-toggle="modal"
data-target="#statisticOffersPopup">
Расширенная статистика →
</div>
{% endif %}
<p class="text-dark-violet font-size-0750 text-end w-auto"
data-toggle="tooltip"
data-html="true" data-placement="top"
data-original-title="Кол-во продаж к кол-ву просмотров. <br> Конверсия за 30 дней">
Конверсия {{ getOfferConversion(offer.getID()) }}%</p>
</div>
{% endif %}
{% if not offer.isWithoutCodes() %}
<div class="d-flex offers-description--item">
<div class="col">
<p class="color-dark-gray px-0 mb-0">Взято всего:</p>
</div>
<div class="col font-bold text-end">
<p> {{ multiplePoolOfferUsedCodesCount is defined ? multiplePoolOfferUsedCodesCount : usedCodesCount }}
{{ ['промокод', 'промокода', 'промокодов']|plural(usedCodesCount) }} из {{ allCodesCount }}</p>
</div>
</div>
<div class="d-flex px-2 my-0">
<div class="col">
<p class="color-dark-gray mb-0">Взято за сутки (за месяц):</p>
</div>
<div class="col font-bold text-end pl-2">
<p>{{ todayPurchaseCount }} {{ ['промокод', 'промокода', 'промокодов']|plural(todayPurchaseCount) }} ({{ getOfferMonthlyPurchaseCount(offer.getID(), 30) > 0 ? getOfferMonthlyPurchaseCount(offer.getID(), 30) : 0 }})</p>
</div>
</div>
{% endif %}
<div class="d-flex {{ offer.isWithoutCodes() ? 'pl-2' : 'offers-description--item' }}">
<div class="col">
<p class="color-dark-gray">Просмотров:</p>
</div>
<div class="col font-bold text-end">
<p>{{ visitCount }} ({{ todayVisitCount }} за сутки)</p>
</div>
</div>
{% if not offer.isWithoutCodes() %}
<div class="d-flex px-2 my-0">
<div class="col">
<p class="color-dark-gray">До завершения: </p>
</div>
<div class="col text-end">
{% if freeCodesCount > 0 %}
<input type="hidden" id="daysLeft" value="{{ daysLeft }} "/>
<input type="hidden" id="hoursLeft" value="{{ hoursLeft }} "/>
<input type="hidden" id="minutesLeft" value="{{ minutesLeft }} "/>
<input type="hidden" id="secondsLeft"
value="{{ offer.getActiveTill().diff(date()).format('%s') }}"/>
<span id="days">{{ daysLeft }}
 </span>{{ ['день', 'дня', 'дней']|plural(daysLeft) }},
<span id="hours">{{ hoursLeft }} </span>час{{ ['', 'а', 'ов']|plural(hoursLeft) }}
{% endif %}
</div>
</div>
{% endif %}
<div class="d-flex offers-description--item js-to-review-block">
<div class="col">
<p class="color-dark-gray">Отзывов:</p>
</div>
<div class="col font-bold text-end">
<p>{{ commentsAmount }} (<r data-html="true"
data-toggle="tooltip"
data-placement="top"
data-original-title="Рейтинг компании <br> за 90 дней">
<span class="yellow-span">★</span>{{ offer.getRating() }}</r>)</p>
</div>
</div>
<div class="d-flex offer-price-block">
<div class="col px-2">
<p class="color-dark-gray">Стоимость:</p>
</div>
<div class="col text-end">
<span id="offerRegularPrice"
class="regular-price">{{ offer.getRegularPrice() }}</span>
<span class="discount-price"> {{ offer.getOfferPrice()|replace({'(': '<span id="details-offer-price">(', ')': ')</span>'})|raw }}</span>
</div>
</div>
{% if offer.isWithoutCodes() %}
<a href="/moya_akciya" target="_blank">
<img class="mt-3" src="/images/without_codes.png"/>
</a>
{% endif %}
{% endif %}
</div>
{% if offer.getFreeCodesCount() > 0 and not offer.isWithoutCodes() %}
<div class="buttons-wrapper-offers">
{% if hasDelivery is defined %}
{% if not offer.isBuyCodeDisable() %}
{% include 'Slivki/offers/buy_button.html.twig' %}
{% endif %}
{% if offer.isFoodOnlineOrderAllowedOnSite() %}
<a id="deliveryBtn" href="{{ getLinkFoodOnlineOrder(offer) }}"
class="d-flex justify-content-center align-items-center text-uppercase button-by-code button">
Заказать онлайн {{ offer.getDiscount() }}
</a>
{% endif %}
{% if offer.isGiftCertificateOnlineOrderAllowedOnSite() %}
{% if offer.getID() == constant('Slivki\\Entity\\Offer::MINSK_WORLD_CERTIFICATE_OFFER_ID') %}
<a id="deliveryBtn" href="{{ getLinkGiftCertificateOnlineOrder(offer) }}"
class="d-flex justify-content-center align-items-center text-uppercase button-by-code button">
Получить скидку {{ offer.getDiscount() }}
</a>
{% elseif offer.getID() in constant('Slivki\\Entity\\Offer::FREESTYLE_OFFER_IDS') %}
<a id="deliveryBtn2" href="{{ getLinkGiftCertificateOnlineOrderByOnlyCode(offer) }}"
class="d-flex justify-content-center align-items-center text-uppercase button-by-code button">
ПОЛУЧИТЬ СКИДКУ {{ offer.getDiscount() }}
</a>
{% elseif not offer.isFoodOnlineOrderAllowedOnSite() %}
<a id="deliveryBtn" href="{{ getLinkGiftCertificateOnlineOrder(offer) }}"
class="d-flex justify-content-center align-items-center text-uppercase button-by-code button">
Оплатить онлайн {{ offer.getDiscount() }}
</a>
{% endif %}
{% endif %}
{% if offer.isTireOnlineOrderAllowedOnSite() %}
<a id="deliveryBtn" href="/online-zapis/{{ offer.getID() }}"
class="d-flex justify-content-center align-items-center text-uppercase button-by-code button">
Онлайн-запись
</a>
{% endif %}
{% elseif isAllowedByOnlyCode %}
<div class="col">
{% include 'Slivki/offers/buy_button.html.twig' %}
</div>
{% endif %}
{% if not pastOffer and offer.getFreeCodesCount() > 0 and offer.isOnlineOrderGiftEnabled() and offer.isFoodOnlineOrderAllowedOnSite() %}
<div class="col">
<a class="button-gift" data-toggle="modal" data-target="#choiceGiftModal">
<div class="button-gift-text">
<p>ЕДА В ПОДАРОК 😋</p>
<p>Подарю сам или подарят мне</p>
</div>
<div class="button-gift-item-button">
<div class="new">NEW</div>
</div>
</a>
</div>
{% endif %}
{% if app.user() and not pastOffer %}
<div class="button-add-follow fovoutite-block"
onclick="onFavouriteClickOffer({{ offer.getID() }}, {{ isOfferFavourite ? 'true' : 'false' }})"
data-html="true"
data-toggle="tooltip"
data-placement="top"
data-original-title="Добавить в <br> избранное"
>
<img src="{{ isOfferFavourite ? '/images/heart_active.svg' : '/images/offers/follow.svg' }}">
</div>
{% endif %}
</div>
{% endif %}
</div>
</div>
<div id="conditions_offers" class="d-flex" style="{{ pastOffer ? 'display: none!important' : '' }}">
<div class="content-wrapper-col-left">
<div id="offersConditions" class="offers-conditions active" style="max-height: fit-content;">
<div class="offer-titles mb-2 mt-0"><h2>Условия</h2></div>
{% set isOfferFavourite = app.user ? app.user.isOfferFavourite(offer) : false %}
<div id="startOfOfferCondition"></div>
{% if offer.getID() != 239232 %}
{% endif %}
{% if not offer.isWithoutCodes() and offer.getID() != 140553 %}
<p>
{% set codeTill = offer.getCodeActiveTill() %}
{% set codeFrom = offer.getActiveTill()|date_modify('-1 day') %}
{% set codeFrom = codeFrom > codeTill ? codeTill : codeFrom %}
{% if not offer.isHideFeatures() %}
- Получить промокод можно до {{ codeFrom|date('d.m') }}, воспользоваться {{ offer.getID() != 134390 ? 'до' }} {{ codeTill|date('d.m.y') }}
<br/>
{% endif %}
{% if offer.isShowPriceInConditions() and not offerIsFreeForUser %}
- Стоимость промокода: {{ codeCost }} руб.
{% endif %}
</p>
{% endif %}
<div class="offer-details-conditions offers-conditions p-0">
{{ offer.getConditions()|raw }}
{# Таблица с прейскурантом для акции с квестами "Ящик Пандоры" #}
{% if offer.getID() == 143528 %}
{% include 'Slivki/offers/table_for_pandorra_box_offer2.html.twig' %}
{% elseif offer.getID() == 282234 %}
{% include 'Slivki/offers/table_for_pandorra_box_offer4.html.twig' %}
{% endif %}
{% if not offer.isWithoutCodes() %}
{% include "Slivki#{regional_template_path}/phrase_subscription_in_offer_page.html.twig" %}
{% endif %}
{% if not offer.isHideFeatures() %}
</br>
<div class="offer-titles mb-2 mt-0"><h2>Особенности</h2></div>
<div class="offer-details-conditions">
{% if not offer.isWithoutCodes() %}
- Скидка предоставляется только при наличии промокода.
{% endif %}
{{ offer.getFeatures()|raw }}
</div>
- Поставщик несет полную ответственность перед потребителем за достоверность информации.
{% endif %}
</div>
<div id="endOfOfferCondition"></div>
<div class="clear"></div>
</div>
{% if offer.getShopMedias()|length > 0 %}
<div class="offer-titles mb-2 mt-0"><h2>Галерея</h2></div>
{% endif %}
<div id="offerConditionsSlider" class="my-4 screenshots {{ offer.getShopMedias()|length == 0 or freeCodesCount == 0 ? 'empty' }}">
{% if offer.getShopMedias()|length > 0 %}
<div class="screenshot-container">
{% if galleryVideos.getVideos() is defined and galleryVideos.getVideos()|length > 0 %}
<div class="screenshot screenshot-story" data-toggle="modal" data-target="#detailsStoryPopup">
<img src="{{ galleryVideos.getImageUrl() }}" width="300"
alt="Видео" border="0"/>
<div class="screenshot-story-btn"></div>
<div class="screenshot-story-tittle">{{ galleryVideos.getTitle() }}</div>
</div>
{% endif %}
{% for media in offer.getShopMedias() %}
<div class="screenshot">
<a href="{{ getImageURL(media, 0, 0) }}" title="{{ media.getDescription() }}"
data-lightbox="image">
<img src="{{ getImageURL(media, 300, 0) }}" width="300"
alt="{{ media.getDescription() }}" border="0"/>
</a>
</div>
{% endfor %}
</div>
{% endif %}
</div>
<div id="examplesOfWorksBlock" class="">
<div class="headerBlockCategory examples d-none bg-white px-0 pb-0 bg-transpanent examples-block-offer-header">
<div class="offer-titles"><h5 class="m-0">Примеры работ{#<div class="example-of-works-count-container"><span>1234</span></div>#}</h5></div>
<div class="examples-works-tooltip-filter">
<div class="tooltip-content">
<div class="tooltip-title border-bottom-f d-flex">Показать сначала:</div>
<div class="radio">
<input id="dateFilter" type="radio" name="filter" checked data-direction="DESC" value="workExample.createdAt">
<label for="dateFilter" class="cursor-pointer">По дате добавления</label>
</div>
<div class="radio">
<input id="locationFilter" type="radio" name="filter" data-direction="ASC" value="distance">
<label for="locationFilter" class="cursor-pointer">Поблизости</label>
</div>
<div class="radio">
<input id="priceUpFilter" type="radio" name="filter" data-direction="ASC" value="workExample.price">
<label for="priceUpFilter" class="cursor-pointer">По возврастанию цены</label>
</div>
<div class="radio">
<input id="priceDownFilter" type="radio" name="filter" data-direction="DESC" value="workExample.price">
<label for="priceDownFilter" class="cursor-pointer">По убыванию цены</label>
</div>
<div class="tooltip-title border-top-f d-flex">Диапазон цены:</div>
<div id="workExamplePriceRangeInputs" class="price-range-inputs d-flex">
<div class="price-range-input"><input type="number" placeholder="Цена от" id="priceFrom" name="priceFrom" min="0" max="199" step="1"></div>
<div class="price-range-input"><input type="number" placeholder="Цена до" id="priceTo" name="priceTo" min="0" max="200" step="1"></div>
</div>
<div id="workExampleRangeSlider" class="range-slider">
<div class="range-labels">
<span id="workSimplesRangeLableStart" class="range-label range-label-start"></span>
<span>-</span>
<span id="workSimplesRangeLableEnd" class="range-label range-label-end"></span>
</div>
<input class="work-simples-input" type="range" name="startRange" id="startRange">
<input class="work-simples-input" type="range" name="finishRange" id="finishRange">
<div class="track-wrapper">
<div class="track"></div>
<div id="workSimplesSliderBetween" class="range-between"></div>
<div id="workSimplesTumbLeft" class="thumb left"></div>
<div id="workSimplesTumbRight" class="thumb right"></div>
</div>
</div>
<div id="buttonFilterBoxExamplesWork" class="buttonFilterBox">Показать</div>
</div>
<div id="buttonFilterBoxExamplesWork" class="examples-works-filter"></div>
</div>
</div>
{% include 'Slivki/works-examples/examples_of_works_gallery.html.twig' %}
</div>
<div id="beautyMastersBlock" class="beauty-masters-container beauty-masters-offer desk">
<div id="beautyMastersHeader" class="tittleBlockCategory position-relative offer-titles mb-2 mt-0 d-none"><h2>Мастера</h2></div>
{% include 'Slivki/beauty/beauty_masters.html.twig' %}
</div>
<div id="offersDescription" class="offers-conditions mt-3">
{% if offer.isShowProductsInOfferDescription() %}
<div id="foodItemsBlock">
<div class="offer-titles mb-2 mt-0"><h2>Описание</h2></div>
{% if isPickupEnabled and isDeliveryEnabled %}
<div id="fixedFiltersOffer" class="w-auto px-2 d-flex" style="position: relative;background: linear-gradient(180deg, #A839FF 0%, #6747e5 100%), #6747E5;border-radius: 8px;padding: 10px 0;">
<div class="col d-flex align-items-center text-white justify-content-end px-0"></div>
<div class="switch-delivery-pickup-block px-0 ">
<a data-type-delivery="1" class="switch-delivery-pickup-item button-tab-delivery delivery-type active">
<p class="m-0">Доставка</p>
<small>удобно👌</small>
</a>
<a data-type-delivery="2" class="switch-delivery-pickup-item pickup-type button-tab-pickup">
<p class="m-0"> Самовывоз</p>
<small>еще дешевле🔥</small>
</a>
</div>
</div>
{% endif %}
<div id="foodBlock"></div>
<div id="foodOptionsBlock"></div>
</div>
{% endif %}
<div class="description" id="descriptionText">
{% for offerDescription in offer.getDescriptionList() %}
{% set offerDescriptionSliderImages = offerDescription.getEntityDescriptionSliderImages() %}
{% if offerDescriptionSliderImages|length > 0 %}
<div class="sale-description-carousel">
<div id="saleDescriptionSliderFor{{ offerDescription.getID() }}"
class="sale-description-slider-for">
{% for offerDescriptionSliderImage in offerDescriptionSliderImages %}
<div><img data-lazy="{{ offerDescriptionSliderImage.getImageUrl() }}"/>
</div>
{% endfor %}
</div>
</div>
{% endif %}
{{ addLazyAndLightboxImagesInDescription(offerDescription.getDescription())|raw }}
{# <div id="showMoreDescription"#}
{# class="{{ addLazyAndLightboxImagesInDescription(offerDescription.getDescription())|raw == "" or addLazyAndLightboxImagesInDescription(offerDescription.getDescription())|raw == '<p><span style="color: #ecf0f1;">.</span></p>' ? 'd-none' : "" }}">#}
{# <div class="w-100 position-absolute bottom-0"#}
{# style="background: linear-gradient(360deg, #FFFFFF 15.15%, rgba(255, 255, 255, 0) 206.06%);"></div>#}
{# <p class="w-100 position-absolute bottom-0">Подробнее</p>#}
{# </div>#}
{% endfor %}
</div>
</div>
<div class="tab-pane fade" id="offerLocationTab">
<i class="fa fa-spinner fa-spin"></i>
</div>
<div id="offersReview" class="offers-review">
{{ comments|raw }}
</div>
</div>
<div class="content-wrapper-col-right">
<div id="conditionAddress">
<div class="offer-titles mb-2 mt-0"><h2>Контакты</h2></div>
<div style="display:none">{{ offer.getAddress() }}</div>
<div id="offerConditionLogo">
{{ offer.getLogo()|raw }}
</div>
<div id="dataFromLocation">
<div class="move-data">
{% if geoLocations|length > 0 %}
<div class="geo-location-block" style="display: block">
{% include 'Slivki/offers/geo_location_data.html.twig' with {'offer': offer} only %}
<div id="offerGeoLocationData" data-json="{{ offerGeoLocationData }}"></div>
<div class="distance">
<i class="slivki-icon slivki-icon-direction"></i> <img class='ajaxLoader'
src='/images/ajax-loader-16x16.gif'
alt='Загрузка...'/><span></span>
</div>
<div class="offer-details-map category-map-wrapper category-map"
id="offerMapCanvas">
<div id="mapCollapseBtn" class="button button--map-collapse capsuled"
onclick="offerMapToggleSize();">Развернуть
</div>
<a id="setUserLocationBtn" href="#" class="capsuled">Указать
местоположение</a>
<div id="zoomIn"></div>
<div id="zoomOut"></div>
</div>
</div>
{% endif %}
<div class="before-map" style="clear:both;"></div>
</div>
</div>
{% if (offer.getLocation()|preg_replace("/<[^>]*>/", '')|replace({"\n": '', "\r": '', ' ': '', ' ': ''}) != '') %}
{{ offer.getLocation()|raw }}
{% set phoneNumbers = offer.getPhoneNumbers() %}
{% if phoneNumbers.count() > 0 %}
<div class="text-bold">Телефон{{ phoneNumbers.count() > 1 ? 'ы' }}:</div>
{% endif %}
{% for phoneNumber in phoneNumbers %}
{{ phoneNumber.getNumber() }} {{ phoneNumber.getLabel() }}<br/>
{% endfor %}
{% else %}
{% set geoLocationsCount = geoLocations.count() %}
{% set commonWoringHours = offer.getCommonWorkingHours() %}
{% if commonWoringHours != '' %}
<br>
<div class="text-bold">Время работы:</div>
{{ commonWoringHours|raw }}
{% endif %}
{% for geoLocation in geoLocations %}
{% set margin = false %}
<div class="offer-details-geolocation-item my-3">
<div class="font-bold font-size-17">г. {{ geoLocation.getCity() }}, {{ geoLocation.getStreet() }}, {{ geoLocation.getHouse() }}<br>{{ geoLocation.getLabel() }}</div>
<div class="location-more-info {{ geoLocationsCount > 2 ? 'hidden' }}">
{% if geoLocation.getWorkingHours()|trim != '' %}
{% set margin = true %}
<div class="offer-details-work-hours">Время работы:
</div> {{ geoLocation.getWorkingHours()|nl2br|raw }}
{% endif %}
{% set phoneNumbers = geoLocation.getPhoneNumbers() %}
{% if phoneNumbers.count() > 0 %}
{% set margin = true %}
<span>
<div class="offer-details-phone-item">
<div class="short-phone-item" style="display: inline-block">
{% if phoneNumbers|length > 0 %}
{{ phoneNumbers[0].getShortPhoneNumber() }}...
{% endif %}
</div>
<div class="full-phone-item" style="display: none">
{% for phoneNumber in phoneNumbers %}
{{ phoneNumber.getNumber() }} {{ phoneNumber.getLabel() }}<br/>
{% endfor %}
</div>
<a data-offer-id="{{ offer.getID() }}"
class="text-slivki location-more-info-toggle">Показать номер</a>
</div>
{% endif %}
{% if margin %}
<br>
{% endif %}
</span>
</div>
{% if geoLocationsCount > 2 %}
<a data-id="{{ geoLocation.getID() }}"
class="text-slivki location-more-info-toggle">Подробнее</a>
{% endif %}
</div>
{% endfor %}
{# {% if geoLocationsCount > 4 %} #}
{# <div class="text-center"> #}
{# <a id="showMoreAddressInDetailsLink" class="button" href="#">Еще адреса</a> #}
{# </div> #}
{# {% endif %} #}
{% set phoneNumbersWithoutGeoLocations = offer.getPhoneNumbersWithoutGeoLocations() %}
{% if phoneNumbersWithoutGeoLocations|length > 0 %}
<div class="text-bold">Телефон{{ phoneNumbersWithoutGeoLocations|length > 1 ? 'ы' }}:
</div>
<div class="offer-details-phone-item">
<div class="short-phone-item" style="display: inline-block">
{% if phoneNumbersWithoutGeoLocations|length > 0 %}
{{ phoneNumbersWithoutGeoLocations[0].getShortPhoneNumber() }}...
{% endif %}
</div>
<div class="full-phone-item" style="display: none">
{% for phoneNumber in phoneNumbersWithoutGeoLocations %}
{{ phoneNumber.getNumber() }} {{ phoneNumber.getLabel() }}<br/>
{% endfor %}
</div>
<a data-offer-id="{{ offer.getID() }}"
class="text-slivki location-more-info-toggle">Показать номер</a>
</div>
{% endif %}
{% endif %}
<div class="offer-details-legal-info">{{ offer.getLegal()|raw }}</div>
{% if offer.getTelegram() != null or offer.getViber() != null %}
<div class="contact-container d-flex py-2 px-1">
{% if offer.getTelegram() != null %}
<a href="https://t.me/{{ offer.getTelegram() }}" target="_blank">
<img alt="Telegram" src="/images/telegram-icon-stretch.png"/>
<p>Написать в Telegram</p>
</a>
{% endif %}
{% if offer.getViber() != null %}
<a href="viber://chat?number={{ offer.getViber() }}" target="_blank">
<img alt="Viber" src="/images/viber-icon-stretch.png"/>
<p>Написать в Viber</p>
</a>
{% endif %}
</div>
{% endif %}
</div>
{% include 'Slivki/offers/share.html.twig' %}
{% include "Slivki#{regional_template_path}/jivosite/button_offers_page.html.twig" %}
<p class="tittle-messenger-offers d-none">Мы всегда рады помочь: служба поддержки Slivki.by ответит на
любой
ваш вопрос</p>
</div>
</div>
</div>
{% if (pastOffer or freeCodesCount == 0) and relatedOfferListHtml is defined %}
<div class="col px-3">
<div class="related-offers-title">Другие похожие предложения:</div>
<div class="related-offers-list stock-group-list">
{{ relatedOfferListHtml|raw }}
</div>
</div>
{% endif %}
</div>
{% if lastPurchaseText is defined %}
<div id="lastPurchaseNofify"><a href="#"><i class="slivki-icon-close-thin"></i></a>Последний раз промокод<br>получен {{ lastPurchaseText }}
</div>
{% endif %}
{% endblock %}
{% block popups %}
{{ parent() }}
{% if not pastOffer %}
{% include 'Slivki/popups/header_offers.html.twig' %}
{% endif %}
{% include 'Slivki/share_block.html.twig' %}
{% include 'Slivki/orderAsGift/foodForGift.html.twig' %}
{% if galleryVideos.getVideos() is defined and galleryVideos.getVideos()|length > 0 %}
{% include 'Slivki/popups/details-story-popup.html.twig' %}
{% endif %}
{% include 'Slivki/popups/comment_media_block_popup.html.twig' %}
{% include 'Slivki/popups/statistics_popup.html.twig' %}
{% include 'Slivki/mobile/popup/buy_codes_avways_app.html.twig' %}
{% include 'Slivki/delivery/modal/details.html.twig' with {'isOfferPage': true} %}
{% if offer.isGiftCertificateOffer() %}
{% include 'Slivki/popups/step_buy_certificate.twig' with {'deliveryLink': deliveryLink} %}
{% endif %}
{% if app.user %}
{% include 'Slivki/popups/mail_offers.html.twig' %}
{% include 'Slivki/popups/rating_edit_popup.html.twig' %}
{% include 'Slivki/popups/popup_subscription_limited.html.twig' %}
{% if not isMobileDevice() or offerIsFreeForUser %}
{% if not codeCostInCurrency is defined and codeCostInCurrency is not null %}
{% set codeCostInCurrency = null %}
{% endif %}
{% include 'Slivki/popups/confirm_box.html.twig' with {'codeCost': codeCost, 'offerID': offer.getID(), 'codeCostInCurrency': codeCostInCurrency} %}
{% include 'Slivki/popups/confirm_subscription_card_popup.html.twig' with {'creditCards': app.user.getActiveCreditCards()} %}
{% endif %}
{% if not isMobileDevice() %}
{% include 'Slivki/popups/add_comment_popup.html.twig' with {'id': 'addVoteBox'} %}
{% include 'Slivki/popups/edit_comment_popup.html.twig' with {'id': 'editVoteBox'} %}
{% include 'Slivki/popups/comment_censor_message.html.twig' with {'id': 'commentCensorMessage'} %}
{% endif %}
{% else %}
{% if not isMobileDevice() %}
{% include 'Slivki/popups/comment_only_registered_popup.html.twig' with {'id': 'onlyRegistered'} %}
{% endif %}
{% endif %}
{% endblock %}
{% block javascripts %}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js"
integrity="sha512-jNDtFf7qgU0eH/+Z42FG4fw3w7DM/9zbgNPe3wfJlCylVDTT3IgKW5r92Vy9IHa6U50vyMz5gRByIu4YIXFtaQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
<script src="//api-maps.yandex.ru/2.1.29/?lang=ru-RU" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/locale/ru.min.js" integrity="sha512-QezkC2mljFGA2zQBPe+FrNA7i2RVFaYOfdQHk6icEap1TZX/Q6MNx+0AOTr9msSec0LsMrpURxfgJSbodYoiLg==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fecha/2.3.3/fecha.min.js"></script>
<script src="/js/hotel-datepicker-3.6.5/hotel-datepicker.min.js"></script>
<script src="/js/swiper-js/swiper.min.js"></script>
<script src="/js/story-slider/story-slider-js.js?v={{ story_slider_js_version }}"></script>
{{ parent() }}
<script src="/js/offer.js?v={{ offer_js_version }}"></script>
<script src="/js/offer/offerDescriptionItems.js?v={{ offer_description_items_js_version }}"></script>
<script src="/js/common-old.js?v={{ common_old_js_version }}"></script>
<script type="text/javascript">
{% if preview is defined and preview %}
var offerPreview = 1;
{% else %}
var offerPreview = 0;
{% endif %}
{% if app.request.query.has('checkOrder') %}
initCheckOfferOrderStatus({{ app.request.get('checkOrder') }});
{% endif %}
</script>
<script src="/js/offer-new.js?v={{ offer_new_js_version }}"/>
{% endblock %}
{% block assetsBottom %}
{{ parent() }}
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js" integrity="sha512-Y+0b10RbVUTf3Mi0EgJue0FoheNzentTMMIE2OreNbqnUPNbQj8zmjK3fs5D2WhQeGWIem2G2UkKjAL/bJ/UXQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="//yastatic.net/share2/share.js" charset="utf-8"></script>
<script async src="//embedr.flickr.com/assets/client-code.js" charset="utf-8"></script>
<script type="text/javascript" src="/js/statistics_offer/statistics_offer.js?v={{ statistics_offer_js_version }}" charset="utf-8"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/easy-pie-chart/2.1.6/jquery.easypiechart.min.js" integrity="sha512-DHNepbIus9t4e6YoMBSJLwl+nnm0tIwMBonsQQ+W9NKN6gVVVbomJs9Ii3mQ+HzGZiU5FyJLdnAz9a63ZgZvTQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/easy-pie-chart/2.1.6/easypiechart.min.js" integrity="sha512-1yldf7W5suy0ko2u4OGU1qyeGrzh9+A3uyWGH4ws8MbndaWxZsgnzy6uqqBq7NUU/ImI1Js5kqDbunovCN1JqA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.4/dist/Chart.min.js"></script>
<script type="module" src="/js/work_examples/work_examples.js?v={{ work_examples_js_version }}"></script>
<script type="module" src="/js/beauty/masters.js?v={{ beauty_masters_js_version }}"></script>
{% endblock %}
{% block RTBHouse %}
<script>
try {
(function () {
var prefix = "", hash = "TS5TS2S9bdSbgKBA4Q2H", rtbhTags = [];
rtbhTags.push("pr_" + hash + "_offer_" + document.getElementById('offerID').value);
rtbhTags.push("pr_" + hash + "_uid_" + document.getElementById('rtbhUID').value);
var key = "__rtbhouse.lid", lid = window.localStorage.getItem(key);
if (!lid) {
lid = "";
var pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < 20; i++) lid += pool.charAt(Math.floor(Math.random() * pool.length));
window.localStorage.setItem(key, lid);
}
rtbhTags.push("pr_" + hash + "_lid_" + lid);
var ifr = document.createElement("iframe"),
sr = encodeURIComponent(document.referrer ? document.referrer : ""),
su = encodeURIComponent(document.location.href ? document.location.href : ""),
ifrSrc = "https://" + prefix + "creativecdn.com/tags?type=iframe",
tmstmp = encodeURIComponent("" + Date.now());
for (var i = 0; i < rtbhTags.length; i++) {
ifrSrc += "&id=" + encodeURIComponent(rtbhTags[i]);
}
ifrSrc += "&su=" + su + "&sr=" + sr + "&ts=" + tmstmp;
ifr.setAttribute("src", ifrSrc);
ifr.setAttribute("width", "1");
ifr.setAttribute("height", "1");
ifr.setAttribute("scrolling", "no");
ifr.setAttribute("frameBorder", "0");
ifr.setAttribute("style", "display:none");
ifr.setAttribute("referrerpolicy", "no-referrer-when-downgrade");
if (document.body) {
document.body.appendChild(ifr);
} else {
window.addEventListener('DOMContentLoaded', function () {
document.body.appendChild(ifr);
});
}
})();
} catch (e) {
} </script>
{% endblock %}