templates/Slivki/mobile/base.html.twig line 446

Open in your IDE?
  1. {% set metaInfo = getMetaInfo() %}
  2. {% set path = app.request.requestUri|url_encode %}
  3. {% if app.request.query.get('path') %}
  4.     {% set path = app.request.query.get('path')|url_encode %}
  5. {% endif %}
  6. {% if path != '%2F' %}
  7.     {% set path = '?path=' ~ path %}
  8. {% else %}
  9.     {% set path = '' %}
  10. {% endif %}
  11. <!DOCTYPE html>
  12. <html lang="ru">
  13. <head>
  14.     {% include "Slivki#{regional_template_path}/mobile/meta_block.html.twig" %}
  15.     <link href="/css/flowersHotLent.css?v={{ flowers_hot_lent_css_version }}" rel="stylesheet" type="text/css" />
  16.     <link rel="stylesheet" href="/css/beauty/beauty-masters.css?v={{ beauty_masters_css_version }}" type="text/css"/>
  17.     {% block meta %}{% endblock %}
  18.     <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
  19.     <link href="/js/jgallery-1.5.5/dist/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
  20.     <link rel="stylesheet" href="/css/swiper/swiper.min.css"/>
  21.     <link href="/css/jform-styler/vanillaSelectBox.css" rel="stylesheet">
  22.     <link rel="stylesheet" href="/css/botstrap-dropdowns-v3/dropdowns.css"/>
  23.     <link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css" rel="stylesheet">
  24.     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.13/css/intlTelInput.css" />
  25.     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" integrity="sha512-yHknP1/AwR+yx26cB1y0cjvQUMvEa2PFzt1c9LlS4pRQ5NOTZFWbhBig+X9G9eYW/8m0/4OXNx8pxJ6z57x0dw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
  26.     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css" integrity="sha512-17EgCFERpgZKcm0j0fEq1YCJuyAWdz9KUtv1EjVuaOz8pDnh/0nZxmU6BBXwaaxqoi9PQXnRWqlcDB027hgv9A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
  27.     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-toast-plugin/1.3.2/jquery.toast.min.css"
  28.           integrity="sha512-wJgJNTBBkLit7ymC6vvzM1EcSWeM9mmOu+1USHaRBbHkm6W9EgM0HY27+UtUaprntaYQJF75rc8gjxllKs5OIQ=="
  29.           crossorigin="anonymous" referrerpolicy="no-referrer"/>
  30.     {% block styles %}
  31.         <link href="/mobile/css/style.css?v={{ mobile_style_css_version }}" rel="stylesheet">
  32.         <link href="/css/new_popup.css?v={{ new_popup_css_version }}" rel="stylesheet" type="text/css" />
  33.         {% if app.request.getPathInfo() == '/profile' %}
  34.             <link href="/css/crt-fonts.css?v={{ crt_fonts_css_version }}" rel="stylesheet" type="text/css" />
  35.             <link href="/css/certificate-creator/certificate-creator.css" rel="stylesheet" type="text/css" />
  36.         {% endif %}
  37.     {% endblock %}
  38.     {% block favicon %}
  39.         <!-- iPhone(first generation or 2G), iPhone 3G, iPhone 3GS -->
  40.         <link rel="apple-touch-icon" sizes="57x57" href="{{ asset('apple-touch-icon-57x57.png') }}">
  41.         <link rel="apple-touch-icon" sizes="76x76" href="{{ asset('apple-touch-icon-76x76.png') }}">
  42.         <link rel="apple-touch-icon" sizes="120x120" href="{{ asset('apple-touch-icon-120x120.png') }}">
  43.         <link rel="apple-touch-icon" sizes="152x152" href="{{ asset('apple-touch-icon-152x152.png') }}">
  44.         <link rel="apple-touch-icon" sizes="180x180" href="{{ asset('apple-touch-icon-180x180.png') }}">
  45.         <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}"/>
  46.         <!--[if IE]><link rel="shortcut icon" href="{{ asset('favicon.ico') }}"><![endif]-->
  47.     {% endblock %}
  48.     <meta name="google-site-verification" content="LZdJyY-ROJZoDrU1Akiha-FF7W_PmSiN4mJRSyWexog" />
  49.     <link rel="manifest" href="/manifest.json?v=0">
  50.     <script src="//code-eu1.jivosite.com/widget/nNpsUw68ys" async></script>
  51.     <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=ced3d85f-6a99-4208-93d6-b578ba5e8f8a"></script>
  52.     <script type="text/javascript" src="{{ slivki_metrica_url }}/js/metric.js"></script>
  53.     <script>
  54.         async function metricEvent(urlEvent, data) {
  55.             const response = await fetch(urlEvent, {
  56.                 method: 'POST',
  57.                 body: JSON.stringify(data)
  58.             });
  59.             return await response.json();
  60.         }
  61.     </script>
  62.     <!-- TikTok Code -->
  63.     <script>
  64.         !function (w, d, t) {
  65.             w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++
  66.             )ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=i,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src=i+"?sdkid="+e+"&lib="+t;e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(n,e)};
  67.             ttq.load('CAEQUGBC77U9MLGRE66G');
  68.             ttq.page();
  69.         }(window, document, 'ttq');
  70.     </script>
  71.     <!-- End TikTok Code -->
  72.     <!-- Meta Pixel Code -->
  73.     <script>
  74.         !function(f,b,e,v,n,t,s)
  75.         {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  76.             n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  77.             if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  78.             n.queue=[];t=b.createElement(e);t.async=!0;
  79.             t.src=v;s=b.getElementsByTagName(e)[0];
  80.             s.parentNode.insertBefore(t,s)}(window, document,'script',
  81.             'https://connect.facebook.net/en_US/fbevents.js');
  82.         fbq('init', '274301711683015');
  83.         fbq('track', 'PageView');
  84.     </script>
  85.     <noscript><img height="1" width="1" style="display:none"
  86.                    src="https://www.facebook.com/tr?id=274301711683015&ev=PageView&noscript=1"/></noscript>
  87.     <!-- End Meta Pixel Code -->
  88.     <noscript>
  89.         <img height="1" width="1" src="https://www.facebook.com/tr?id=1884900258504761&ev=PageView&noscript=1" style="display: none;"/>
  90.     </noscript>
  91.     <!-- End Facebook Pixel Code -->
  92.     <script type="text/javascript">(window.Image ? (new Image()) : document.createElement('img')).src = 'https://vk.com/rtrg?p=VK-RTRG-167315-4IspB';</script>
  93.     {% if fitnessOffer is defined %}
  94.         <script>
  95.             !function(f,b,e,v,n,t,s)
  96.             {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  97.                 n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  98.                 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  99.                 n.queue=[];t=b.createElement(e);t.async=!0;
  100.                 t.src=v;s=b.getElementsByTagName(e)[0];
  101.                 s.parentNode.insertBefore(t,s)}(window, document,'script',
  102.                 'https://connect.facebook.net/en_US/fbevents.js');
  103.             fbq('init', '1615676305118909');
  104.             fbq('track', 'PageView');
  105.         </script>
  106.         <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1615676305118909&ev=PageView&noscript=1"/></noscript>
  107.         <script type="text/javascript">(window.Image ? (new Image()) : document.createElement('img')).src = 'https://vk.com/rtrg?p=VK-RTRG-170417-8Uj6y';</script>
  108.     {% endif %}
  109.     <script>
  110.         var userAgent = navigator.userAgent || navigator.vendor || window.opera;
  111.         if (userAgent.indexOf('FBAN') == -1 && userAgent.indexOf('FBAV') == -1 && userAgent.indexOf('Instagram') == -1 &&
  112.             userAgent.indexOf('Skype') == -1 && userAgent.indexOf('Viber') == -1 && userAgent.indexOf('WhatsApp') == -1) {
  113.             var d = document,
  114.                 h = d.getElementsByTagName('head')[0],
  115.                 s = d.createElement('script');
  116.             s.type = 'text/javascript';
  117.             s.async = true;
  118.             s.src = '//cdn.sendpulse.com/js/push/260be6a77276a4d176159328b4b7175c_1.js?v=0';
  119.             h.appendChild(s);
  120.         }
  121.     </script>
  122.     <!-- Global site tag (gtag.js) - Google Analytics -->
  123.     {% set currentCity = getCurrentCity() %}
  124.     <!-- Global site tag (gtag.js) - Google Analytics -->
  125.     <script async src="https://www.googletagmanager.com/gtag/js?id=UA-185332166-1"></script>
  126.     <script>
  127.         window.dataLayer = window.dataLayer || [];
  128.         function gtag(){dataLayer.push(arguments);}
  129.         gtag('js', new Date());
  130.         gtag('config', 'UA-185332166-1');
  131.     </script>
  132.     <script async src="https://www.googletagmanager.com/gtag/js?id=G-VGFW27H90X"></script>
  133.     <script>
  134.         window.dataLayer = window.dataLayer || [];
  135.         function gtag(){dataLayer.push(arguments);}
  136.         gtag('js', new Date());
  137.         gtag('config', 'G-VGFW27H90X');
  138.     </script>
  139.     {% if app.user %}
  140.     <script type="text/javascript">
  141.         (function(e,t){var n=e.amplitude||{_q:[],_iq:{}};var r=t.createElement("script")
  142.         ;r.type="text/javascript"
  143.         ;r.integrity="sha384-vYYnQ3LPdp/RkQjoKBTGSq0X5F73gXU3G2QopHaIfna0Ct1JRWzwrmEz115NzOta"
  144.         ;r.crossOrigin="anonymous";r.async=true
  145.         ;r.src="https://cdn.amplitude.com/libs/amplitude-5.8.0-min.gz.js"
  146.         ;r.onload=function(){if(!e.amplitude.runQueuedFunctions){
  147.             console.log("[Amplitude] Error: could not load SDK")}}
  148.         ;var i=t.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i)
  149.         ;function s(e,t){e.prototype[t]=function(){
  150.             this._q.push([t].concat(Array.prototype.slice.call(arguments,0)));return this}}
  151.             var o=function(){this._q=[];return this}
  152.             ;var a=["add","append","clearAll","prepend","set","setOnce","unset"]
  153.             ;for(var u=0;u<a.length;u++){s(o,a[u])}n.Identify=o;var c=function(){this._q=[]
  154.                 ;return this}
  155.             ;var l=["setProductId","setQuantity","setPrice","setRevenueType","setEventProperties"]
  156.             ;for(var p=0;p<l.length;p++){s(c,l[p])}n.Revenue=c
  157.             ;var d=["init","logEvent","logRevenue","setUserId","setUserProperties","setOptOut","setVersionName","setDomain","setDeviceId", "enableTracking", "setGlobalUserProperties","identify","clearUserProperties","setGroup","logRevenueV2","regenerateDeviceId","groupIdentify","onInit","logEventWithTimestamp","logEventWithGroups","setSessionId","resetSessionId"]
  158.             ;function v(e){function t(t){e[t]=function(){
  159.                 e._q.push([t].concat(Array.prototype.slice.call(arguments,0)))}}
  160.                 for(var n=0;n<d.length;n++){t(d[n])}}v(n);n.getInstance=function(e){
  161.                 e=(!e||e.length===0?"$default_instance":e).toLowerCase()
  162.                 ;if(!n._iq.hasOwnProperty(e)){n._iq[e]={_q:[]};v(n._iq[e])}return n._iq[e]}
  163.             ;e.amplitude=n})(window,document);
  164.         amplitude.getInstance().init("bbbedb2acb30e6a6aeddaf969f31dd31");
  165.     </script>
  166.     {% endif %}
  167.     {% if category is not defined and offer is not defined %}
  168.         <script src="/js/smart-app-banner.js"></script>
  169.         <script type="text/javascript">
  170.             new SmartBanner({
  171.                 daysHidden: 15,   // days to hide banner after close button is clicked (defaults to 15)
  172.                 daysReminder: 90, // days to hide banner after "VIEW" button is clicked (defaults to 90)
  173.                 appStoreLanguage: 'ru', // language code for the App Store (defaults to user's browser language)
  174.                 title: 'Slivki - промокоды и скидки',
  175.                 author: 'Slivki',
  176.                 button: 'Посмотреть',
  177.                 store: {
  178.                     ios: 'On the App Store',
  179.                     android: 'В Google Play',
  180.                     windows: 'In Windows store'
  181.                 },
  182.                 price: {
  183.                     ios: 'FREE',
  184.                     android: 'FREE',
  185.                     windows: 'FREE'
  186.                 }
  187.                 // , theme: '' // put platform type ('ios', 'android', etc.) here to force single theme on all device
  188.                 , icon: '/images/app-icon.png' // full path to icon image if not using website icon image
  189.                 // , force: 'ios' // Uncomment for platform emulation
  190.             });
  191.         </script>
  192.     {% endif %}
  193. </head>
  194. {% set bodyClass =  '' %}
  195. {% if noToken is not defined and is_granted('ROLE_ADMIN_USER') %}
  196.     {% set bodyClass =  'a-u' %}
  197. {% endif %}
  198. <body class="{{ bodyClass }}">
  199. {% if app.debug %}
  200.     <input type="hidden" id="debugMode" value="1"/>
  201. {% endif %}
  202. <script>
  203.     (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  204.         (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  205.         m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  206.     })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
  207.     ga('create', 'UA-185332166-1', 'auto');
  208.     ga('send', 'pageview');
  209.     {% if app.user %}
  210.         ga('set', 'userId', '{{ app.user.getID() }}');
  211.     {% endif %}
  212. </script>
  213. {% if app.user %}
  214.     <input type="hidden" id="customerID" value="{{ app.user.getID() }}"/>
  215.     {% if app.user.getEmail() != '' %}
  216.         <input class="sp_push_custom_data" type="hidden" name="email" value="{{ app.user.getEmail() }}">
  217.     {% else %}
  218.         <input class="sp_push_custom_data" type="hidden" name="email" value="{{ app.user.getPhone() }}">
  219.     {% endif %}
  220. {% endif %}
  221. <input type="hidden" id="serverTime" value="{{ 'now'|date('Y-m-d H:i:s') }}">
  222. <input type="hidden" id="cityID" value="{{ currentCity.getID() }}">
  223. <input id="cityName" type="hidden" value="{{ currentCity.getID() in [constant('Slivki\\Entity\\City::DEFAULT_CITY_ID'), constant('Slivki\\Entity\\City::TASHKENT_CITY_ID')] ? '/' : getURL(constant('Slivki\\Repository\\SeoRepository::RESOURCE_URL_CITY'), currentCity.getID()) }}"/>
  224. <input type="hidden" id="rtbhUID" value="{{ getRTBHouseUID(app.user) }}">
  225. <input id="userId" type="hidden" value=" {{ app.user is not null ? app.user.ID : null }}">
  226. <input id="metricaUrl" type="hidden" value=" {{ slivki_metrica_url }}/api/v1/metric">
  227. {% set geoIpLocation = getIPLocationData() %}
  228. <input type="hidden" id="geoIpLatitude" value="{{ geoIpLocation[0] }}"/>
  229. <input type="hidden" id="geoIpLongitude" value="{{ geoIpLocation[1] }}"/>
  230. {% set subscription = app.user ? getSubscription(app.user) : null %}
  231. {% block linkToStore %}
  232.     {% if category is defined or offer is defined %}
  233.         <div id="linkToStore" class="d-flex">
  234.             <img src="/images/logomob.png" height="35" alt="">
  235.             <div class="col pl-0">
  236.                 <p class="sf-bold-font">Slivki: промокоды  и скидки</p>
  237.                 <p>В приложении</p>
  238.             </div>
  239.             <div id="deepLinksHeader" class="button-store-index-page">Открыть</div>
  240.         </div>
  241.     {% endif %}
  242. {% endblock %}
  243. {% block linkToPartner %}
  244.     {% if app.user and is_granted('ROLE_SUPPLIER') %}
  245.         <div class="bg-gray text-violet text-center py-3 px-4 sf-font font-size-14">
  246.             <div>Здравствуйте, <span class="sf-bold-font">{{ app.user.getFirstName() }}!</span></div>
  247.             <div>Здесь вы можете проверить промокод</div>
  248.             <a class="d-block text-white font-weight-bold bg-violet text-white rounded-14 py-2 px-3 text-uppercase mt-2" href="{{ base_url }}/partner">перейти в кабинет партнера</a>
  249.         </div>
  250.     {% endif %}
  251. {% endblock %}
  252. {% block messenger %}
  253.     {% include 'Slivki/jivosite/button_mobile.html.twig' %}
  254.     {% include "Slivki#{regional_template_path}/jivosite/modal_mobile.html.twig" %}
  255. {% endblock %}
  256. {% block headerBanner %}
  257.     {% if not (app.user and app.user.hasRole(constant('\\Slivki\\Entity\\UserGroup::ROLE_ADS_FREE'))) %}
  258.         <div id="headerBanner" class="head-banner-container">
  259.             {{ getTopSiteBanner(brandingBannerCategoryIDs is defined ? brandingBannerCategoryIDs : [], true, true) }}
  260.         </div>
  261.     {% endif %}
  262. {% endblock %}
  263. {% block header %}
  264. <div id="headerWrapper">
  265.     <div id="header" class="{{ app.request.get('_route') == 'deliveryOrder' ? 'no-fixed' }}">
  266.         <nav id="headerTop" class="navbar navbar-expand p-0">
  267.             <a class="navbar-brand mx-3" href="{{ base_url }}"><img src="/images/v_22.png" height="35" alt=""></a>
  268.             <div class="navbar-collapse collapse">
  269.                 <form id="headerSearchForm" class="d-inline w-100" action="{{ base_url }}/search">
  270.                     <div class="input-group">
  271.                         <input id="headerSearchInput" name="text" type="text" class="search-input form-control py-1" placeholder="Я ищу..." value="{{ app.request.query.get('text', '') }}">
  272.                         <button class="input-group-append button-search-landing" type="submit">
  273.                             <img alt="" src="/images/searchNewWhite.svg" />
  274.                         </button>
  275.                         <button class="voice-search-btn" type="button"></button>
  276.                         {% include 'search_equalizer.html.twig' with {'barCount': 36, 'barPadding': 6} only %}
  277.                     </div>
  278.                     <input type="hidden" name="sortBy" id="sortBy" value="{{ app.request.query.get('sortBy', 'default') }}">
  279.                     <input type="hidden" name="distance" id="distance" value="{{ app.request.query.get('distance', '0') }}">
  280.                     <input type="hidden" name="isVoice" id="searchByVoice"  value="false"/>
  281.                 </form>
  282.                 <ul class="list-unstyled navbar-nav">
  283.                     {% if not app.user %}
  284.                         <li class="nav-item focus-tel">
  285.                             <a href="#" class="nav-link" data-toggle="modal" data-target=".modal-auth">Войти</a>
  286.                         </li>
  287.                     {% else %}
  288.                         <li class="nav-item d-none d-sm-block">
  289.                             <a id="headerUserName" class="nav-link" href="{{ path('profile') }}">{{ app.user.getFirstName() }}</a>
  290.                         </li>
  291.                     {% endif %}
  292.                     <li class="nav-item">
  293.                         <a class="nav-link p-0" href="#" id="sidebarMenuLink">
  294.                             <i class="slivki-icon-menu text-black"></i>
  295.                         </a>
  296.                     </li>
  297.                 </ul>
  298.             </div>
  299.         </nav>
  300.         {% include "Slivki/mobile/#{regional_template_path}/header_menu.html.twig" %}
  301.     </div>
  302. </div>
  303. {% endblock %}
  304. <main id="content" class="container-fluid">
  305.     <div id="topContent" class="row no-gutters">
  306.         <div class="col-12">
  307.             {% block topContent %}{% endblock %}
  308.         </div>
  309.     </div>
  310.     <div class="row no-gutters">
  311.         <div class="col-12">
  312.             {% block content %}{% endblock %}
  313.         </div>
  314.     </div>
  315. </main>
  316. {% block footer %}
  317.     {% include "Slivki/mobile#{regional_template_path}/footer.html.twig" %}
  318. {% endblock %}
  319. <nav id="sidebarMenu">
  320.     {% set landingUrl = '/subscription-landing?utm_source=main_menu' %}
  321.     {% if app.user %}
  322.         {% set landingUrl = '/profile/subscription/manage?utm_source=main_menu' %}
  323.     {% endif %}
  324.     <div class="row sf-font h-100">
  325.         <div class="col-10 bg-white px-0 side-bar-menu">
  326.             {% if app.user and is_granted('ROLE_SUPPLIER') %}
  327.                 <div class="col w-fit-content my-3 ml-3">
  328.                     <a class="d-block text-white text-center font-weight-bold bg-violet text-white rounded-14 py-2 px-3 text-uppercase mt-2" href="/partner">кабинет партнера</a>
  329.                     <p class="text-violet sf-font mb-0 mt-1">Войдите для проверки промокода</p>
  330.                 </div>
  331.             {% endif %}
  332.             <div class="bg-light-gray p-2 d-flex user-info__wrapper">
  333.                 {% if app.user %}
  334.                     <a class="w-100" href="{{ path('profile') }}">
  335.                         <div id="userTopInfo" class="user-info">
  336.                             <p class="user-info__title"><strong>Личный кабинет</strong></p>
  337.                             <p id="username">{{ app.user.getPhone() ? '***' ~ app.user.getPhone()|phone[3:] : app.user.getEmail() }}</p>
  338.                             {% if is_granted('IS_IMPERSONATOR') %}
  339.                                 <a class="text-danger pl-2" href="{{ impersonation_exit_path(path('homepage')) }}"><i class="slivki-icon-off text-danger p-0"></i> Вернутся в свой акк</a>
  340.                             {% endif %}
  341.                         </div>
  342.                     </a>
  343.                 {% else %}
  344.                     <i class="slivki-icon-user-o user-avatar"></i>
  345.                     <a href="#" data-toggle="modal" data-target=".modal-auth" class="my-auto">Вход/Регистрация</a></li>
  346.                 {% endif %}
  347.             </div>
  348.             <ul class="list-unstyled menu-list__wrapper">
  349.                 {% if app.user and isServerFeatureEnabled(constant('Slivki\\Enum\\SwitcherFeatures::REPLENISHMENT_BALANCE')) %}
  350.                     <li>
  351.                         <a href="/oplata">
  352.                             <img class="side-bar-menu-icons" alt="Баланс" src="/images/money.svg">
  353.                             <lable style="font-weight: bold; font-size: 16px">
  354.                                 <span id="balance">{{ app.user.getFullBalance()|number_format(2, ',', '') }}</span> р
  355.                             </lable>
  356.                             <br>
  357.                             <a class="text-violet" style="margin-left: 0.5rem;">Пополнить и получить бонус</a>
  358.                         </a>
  359.                     </li>
  360.                     <li><a href="{{ path('profile') }}#profilePromocodesTab"><img class="side-bar-menu-icons" src="/images/promo-code.svg" alt="Промокод">Мои промокоды</a></li>
  361.                 {% endif %}
  362.                 {% include "Slivki/mobile#{regional_template_path}/select_city_opener.html.twig" %}
  363.                 {% include "Slivki/mobile#{regional_template_path}/translate_block.html.twig" %}
  364.                 {% if isServerFeatureEnabled(constant('Slivki\\Enum\\SwitcherFeatures::SUBSCRIPTION')) and (not app.user or (app.user and subscription is not null and subscription.status == constant('Slivki\\Bundle\\SubscriptionBundle\\Enum\\SubscriptionStatus::CANCELED'))) %}
  365.                     <li>
  366.                         <a href="{{ landingUrl }}">
  367.                             <div class="d-flex subscription-button-sidebar">
  368.                                 <div class="icon-lightning align-self-center"></div>
  369.                                 <div class="col">
  370.                                     <div class="text-violet">ПОДПИСКА</div>
  371.                                     <div>1 промокод  5 копеек</div>
  372.                                 </div>
  373.                             </div>
  374.                         </a>
  375.                     </li>
  376.                 {% endif %}
  377.                 <li class="bg-light-gray menu-list__title">
  378.                     Интересное на сайте
  379.                 </li>
  380.                 {% if getActiveSubCategories(0)|length > 1 %}
  381.                     <li><a href="javascript:void(0)" role="button" data-toggle="modal" data-target="#offerCategoryMenuPopup"><img class="side-bar-menu-icons" alt="Промокод" src="/images/category-promo.svg">Категории</a></li>
  382.                 {% else %}
  383.                     <li><a href="{{ getCurrentCityURL() }}" role="button"><i class="slivki-icon-percentage"></i>Категории</a></li>
  384.                 {% endif %}
  385.                 {% set menuItem = getTestMenuItem(2) %}
  386.                 {% if isServerFeatureEnabled(constant('Slivki\\Enum\\SwitcherFeatures::SALES')) %}
  387.                     <li><a href="{{ base_url }}{{ path('sales') }}"><img class="side-bar-menu-icons" alt="Новости" src="/images/new-news.svg">Новости скидок</a></li>
  388.                 {% endif %}
  389.                 {% if isServerFeatureEnabled(constant('Slivki\\Enum\\SwitcherFeatures::FLIERS')) %}
  390.                     <li><a href="{{ getURL(constant('Slivki\\Repository\\SeoRepository::RESOURCE_URL_SALE_CATEGORY'), constant('Slivki\\Entity\\Category::FLIER_SALE_CATEGORY_ID')) }}"><img class="side-bar-menu-icons" alt="Листовки" src="/images/listovki.svg">Листовки</a></li>
  391.                 {% endif %}
  392.                 {% if not isServerFeatureEnabled(constant('Slivki\\Enum\\SwitcherFeatures::PAYMENT_PAYME')) %}
  393.                     <li class="py-2">
  394.                         <a href="{{ landingUrl }}">
  395.                             <div class="d-flex pl-2">
  396.                                 <div class="icon-lightning align-self-center"></div>
  397.                                 <div class="col pl-2">
  398.                                     <div>Подписка</div>
  399.                                 </div>
  400.                             </div>
  401.                         </a>
  402.                     </li>
  403.                 {% endif %}
  404.                 <li><a href="/moya_akciya" onclick="ga('send', 'event', 'create-own-offer-button--mobile-menu', 'Click', '1');"><img class="side-bar-menu-icons" src="/images/add-offer.svg" alt="Добавление">Разместить свою акцию</a></li>
  405.                 {% if app.user and is_granted('ROLE_ADMIN_USER') %}
  406.                     <li><a href="/admin"><img class="side-bar-menu-icons" alt="Администрирование" src="/images/admin-new-icon.svg">Администрирование</a></li>
  407.                     <li><a href="/admin/past_offers"><img class="side-bar-menu-icons" alt="Прошедшее" src="/images/past-new.svg">Прошедшие акции</a></li>
  408.                     <li><a href="/admin/past_sales"><img class="side-bar-menu-icons" alt="Прошедшее" src="/images/past-new.svg">Прошедшие НС</a></li>
  409.                 {% endif %}
  410.                 {% if app.user and is_granted('ROLE_SUPPLIER') %}
  411.                     <li class="mar-b-5"><a href="{{ path('partner') }}"><img class="side-bar-menu-icons" src="/images/partner.svg" alt="Кабинет партнера">Кабинет партнера</a></li>
  412.                 {% endif %}
  413.             </ul>
  414.         </div>
  415.         <div class="col-2 bg-modal px-0 sidebar-overlay">
  416.             <div class="sidebar-close__wrapper">
  417.                 <i id="sidebarOverlay" class="slivki-icon-close-thin sidebar-close" data-dismiss="modal"></i>
  418.             </div>
  419.         </div>
  420.     </div>
  421. </nav>
  422. {% block popup %}
  423.     {% include 'Slivki/mobile/popup/loading_popup.html.twig' %}
  424.     {{ getMainMenu(false, false) }}
  425.     {% if app.session.flashbag.get("showMogilevMailingBonusPopup")|length > 0 %}
  426.         {% include 'Slivki/mobile/popup/mogilev_mailing_popup.html.twig' %}
  427.     {% endif %}
  428.     {% include 'Slivki/mobile/select_city.html.twig' %}
  429.     {% include 'Slivki/mobile/popup/push.html.twig' %}
  430.     {% if not app.user %}
  431.         {% include 'Slivki/mobile/popup/login.html.twig' %}
  432.         {% include 'Slivki/mobile/popup/restore_password.html.twig'%}
  433.         {% include 'Slivki/mobile/popup/succes_restore_password.html.twig'%}
  434.     {% endif %}
  435.     {% include 'Slivki/popups/deep_links_popup.html.twig' %}
  436. {% endblock %}
  437. {% block brandingBanner %}{% endblock %}
  438. {% block floatingMobileBanner %}
  439.     {% if not (app.user and app.user.hasRole(constant('\\Slivki\\Entity\\UserGroup::ROLE_ADS_FREE'))) %}
  440.         {{ getMobileFloatingBanner(brandingBannerCategoryIDs is defined ? brandingBannerCategoryIDs : [])|raw }}
  441.     {% endif %}
  442. {% endblock %}
  443. {% include 'Slivki/mobile/popup/confirm_popup.html.twig' %}
  444. {% include 'Slivki/delivery/modal/questions.html.twig' %}
  445. {% include 'Slivki/mobile/popup/alert_popup.html.twig' %}
  446. {% include 'Slivki/popups/examples_of_works_popup_small.html.twig' %}
  447. {% include 'Slivki/popups/examples_of_works_popup.html.twig' %}
  448. {% include 'Slivki/mobile/popup/new_alert_popup.html.twig' %}
  449. {% include 'Slivki/mobile/popup/mail_popup.html.twig' %}
  450. {% include "Slivki/mobile#{regional_template_path}/popup/info_message_popup.html.twig" %}
  451. {% include 'Slivki/beauty/beauty_master_popup.html.twig' %}
  452. <!-- Yandex.Metrika counter -->
  453. <script type="text/javascript" >
  454.     (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
  455.         m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
  456.     (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
  457.     ym(20933521, "init", {
  458.         clickmap:true,
  459.         trackLinks:true,
  460.         accurateTrackBounce:true
  461.     });
  462. </script>
  463. <noscript><div><img src="https://mc.yandex.ru/watch/20933521" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
  464. <!-- /Yandex.Metrika counter -->
  465. <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  466. {% set coordinate = currentCity.getCoordinate() %}
  467. <input type="hidden" id="cityCoord" value="[{{ coordinate.getLatitude() }}, {{ coordinate.getLongitude() }}]">
  468. {% block javascripts %}
  469.     <script src="/js/bodyScrollLock.min.js?v=1"></script>
  470.     <script type="module" src="/js/botsrap-custom-dropdowns/custom-dropdowns.js"></script>
  471.     <script src="/js/jform-styler/vanillaSelectBox.min.js"></script>
  472.     <script src="/js/swiper-js/swiper.min.js"></script>
  473.     <script src="https://cdn.jsdelivr.net/npm/universal-parallax@1.3.2/dist/universal-parallax.min.js"></script>
  474.     <script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js" integrity="sha512-XtmMtDEcNz2j7ekrtHvOVR4iwwaD6o/FUJe6+Zq+HgcCsk3kj4uSQQR8weQ2QVj1o0Pk6PwYLohm206ZzNfubg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  475.     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-touch-events/2.0.0/jquery.mobile-events.min.js"></script>
  476.     <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
  477.     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
  478.     <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
  479.     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js"></script>
  480.     <script src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.5.9/lottie_light.min.js"></script>
  481.     <script src="/js/jquery.maskedinput.min.js"></script>
  482.     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/5.0.5/jquery.inputmask.min.js"></script>
  483.     <script type="text/javascript" src="/js/jquery.cookie.min.js?v=1"></script>
  484.     <script src="https://yastatic.net/pcode/adfox/loader.js" crossorigin="anonymous"></script>
  485.     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.matchHeight/0.7.2/jquery.matchHeight-min.js"></script>
  486.     <script src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.13/js/intlTelInput-jquery.min.js"></script>
  487.     <script src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.13/js/utils.min.js"></script>
  488.    <script src="https://www.google.com/recaptcha/api.js"></script>
  489.     <script src="/js/common.js?v={{ common_js_version }}"></script>
  490.     <script src="/js/time_block_category/main.js?v={{ time_block_category_js }}"></script>
  491.     <script src="/mobile/js/script.js?v={{ mobile_script_js_version }}"></script>
  492.     <script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
  493.     <script src="//translate.google.com/translate_a/element.js?cb=TranslateInit"></script>
  494.     <script src="/js/gtranslate.js"></script>
  495.     <script src="/js/subscription.js?v={{ subscription_js_version }}"></script>
  496.     <script src="/js/maps_index_page/roundedControlls.js?v=1"></script>
  497.     <script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
  498.     <script src="/js/jquery.sameheight.js"></script>
  499.     <script type="module" src="/js/flowersCategoryCarousel.js?v={{ flowers_category_carousel_js_version }}"></script>
  500.     <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
  501.     <script type="module" src="/js/family_subscription/api_family_subscription.js?v={{ family_subscription_js_version }}"></script>
  502.     <script type="module" src="/js/family_subscription/family_subscription.js?v={{ family_subscription_js_version }}"></script>
  503.     <script src="//translate.google.com/translate_a/element.js?cb=TranslateInit"></script>
  504.     <script type="module" src="/js/work_examples/api_work_examples.js?v={{ api_work_examples_js_version }}"></script>
  505.     <script src="/js/helper.js?v={{ helper_version_js }}"></script>
  506.     <script src="/js/maps_index_page/roundedControlls.js?v=5"></script>
  507.     <script type="module" src="/js/beauty/mainMapBeauty.js?v={{ main_map_beauty_js_version }}"></script>
  508.     <script type="module" src="/js/beauty/masters.js?v={{ beauty_masters_js_version }}"></script>
  509.     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-toast-plugin/1.3.2/jquery.toast.min.js"
  510.             integrity="sha512-zlWWyZq71UMApAjih4WkaRpikgY9Bz1oXIW5G0fED4vk14JjGlQ1UmkGM392jEULP8jbNMiwLWdM8Z87Hu88Fw=="
  511.             crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  512. {% endblock %}
  513. {% if app.user and app.user.isGeoLocationAccepted() == null %}
  514.     <input type="hidden" id="storeGeoLocationData"/>
  515. {% endif %}
  516. <div type="hidden" id="mobileVersionIndicator"></div>
  517. <div type="hidden" id="newMobileVersionIndicator"></div>
  518. {% block RTBHouse %}
  519.     <script>
  520.         try{ (function() {
  521.             var prefix = "", hash = "TS5TS2S9bdSbgKBA4Q2H", rtbhTags = []; rtbhTags.push("pr_"+hash+""); rtbhTags.push("pr_"+hash+"_uid_"+document.getElementById('rtbhUID').value);
  522.             var key = "__rtbhouse.lid", lid = window.localStorage.getItem(key); if (!lid) {
  523.                 lid = ""; var pool = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  524.                 for (var i = 0; i < 20; i++) lid += pool.charAt(Math.floor(Math.random() * pool.length)); window.localStorage.setItem(key, lid);}
  525.             rtbhTags.push("pr_"+hash+"_lid_" + lid);
  526.             var ifr = document.createElement("iframe"),
  527.                 sr = encodeURIComponent(document.referrer ? document.referrer : ""),
  528.                 su = encodeURIComponent(document.location.href ? document.location.href : ""),
  529.                 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]);}
  530.             ifrSrc += "&su=" + su + "&sr=" + sr + "&ts=" + tmstmp;
  531.             ifr.setAttribute("src", ifrSrc); ifr.setAttribute("width", "1");
  532.             ifr.setAttribute("height", "1"); ifr.setAttribute("scrolling", "no");
  533.             ifr.setAttribute("frameBorder", "0"); ifr.setAttribute("style", "display:none");
  534.             ifr.setAttribute("referrerpolicy", "no-referrer-when-downgrade"); if(document.body){document.body.appendChild(ifr);}
  535.             else{window.addEventListener('DOMContentLoaded', function(){document.body.appendChild(ifr);});}
  536.         })();} catch(e) {} </script>
  537. {% endblock %}
  538. {% block metrikaEvent %}{% endblock %}
  539. </body>
  540. </html>