templates/base.html.twig line 1

Open in your IDE?
  1. {% set v = 'now'|date('U') %}
  2. <!DOCTYPE html>
  3. <html lang="en">
  4.     <head>
  5.         <meta charset="UTF-8" />
  6.         <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
  7.         
  8.         <link rel="icon" type="image/png" href="/assets/doggy/paw-icon.png">
  9.         <title>{% block title %} Doggy {% endblock %}</title>
  10.         <meta name="csrf-token" content="{{ csrf_token('general') }}">
  11.         
  12.             <link rel="stylesheet" href="/style.css?v={{ v }}20260608-03" />
  13.         <link rel="stylesheet" href="/toastr/toastr.min.css" />
  14.         <link rel="stylesheet" href="/fonts/fonts.css" />
  15.         
  16.         <link
  17.               rel="stylesheet"
  18.               href="/css/swiper-bundle.min.css"
  19.               />
  20.         <link
  21.               rel="stylesheet"
  22.               href="/css/ion.rangeSlider.min.css"
  23.             />
  24.         
  25.         {# reCAPTCHA is temporarily disabled for local registration testing.
  26.         <script src="/js/recaptcha/api.js" async defer></script>
  27.         #}
  28.         
  29.         <script src="/assets/butterup/butterup.min.js"></script>
  30.         <link rel="stylesheet" href="/assets/butterup/butterup.min.css?v={{ v }}101">
  31.         
  32.         <script src="/js/socket.io-1.4.5.js"></script>
  33.         
  34.         {% block stylesheets %}{% endblock %}
  35.     </head>
  36.     <body>
  37.         <div data-barba="wrapper">
  38.             {% include 'components/header.html.twig' %}
  39.             {% include 'components/sidebar.html.twig' %}
  40.             {% include 'components/mobile/mobile.html.twig' %}
  41.             
  42.             <!-- Мейн контент -->
  43.             <main data-barba="container" data-barba-namespace="{{ app.request.attributes.get('_route') }}">
  44.                 {% block body %}{% endblock %}
  45.             </main>
  46.             {% include 'components/footer.html.twig' %}
  47.             {% include 'components/modals/modals.html.twig' %}
  48.         </div>
  49.         
  50.         <div id="loader" class="loader">
  51.             <img src="/assets/doggy/paw-icon.png" alt="" />
  52.         </div>
  53.     </body>
  54.     
  55.     <script src="/js/barba.umd.js"></script>
  56.     <script src="/js/gsap.min.js"></script>
  57.     <script src="/js/jquery-3.6.0.min.js"></script>
  58.     <script src="/js/ion.rangeSlider.min.js"></script>
  59.     <script src="js/swiper-bundle.min.js"></script>
  60.     <script src="js/apexcharts.js"></script>
  61.     <script src="/toastr/toastr.min.js"></script>
  62.     <script src="/assets/js/countup.js"></script>
  63.     <script type="module">
  64.     
  65.     import {
  66.         initSwipers,
  67.         destroySwipers
  68.     } from '/assets/js/swipers.js?v={{ v }}101';
  69.     import {
  70.         initDice,
  71.         destroyDice
  72.     } from '/assets/js/pages/games/dice.js?v={{ v }}102';
  73.     import {
  74.         initMines,
  75.         destroyMines
  76.     } from '/assets/js/pages/games/mines.js?v={{ v }}102';
  77.     import {
  78.         initFaqToggle,
  79.         destroyFaqToggle
  80.     } from '/assets/js/pages/faq.js?v={{ v }}101';
  81.     import {
  82.         initRef,
  83.         destroyRef
  84.     } from '/assets/js/pages/referral.js?v={{ v }}103';
  85.     import {
  86.         initProfile,
  87.         destroyProfile
  88.     } from '/assets/js/pages/profile.js?v={{ v }}102';
  89.     import {
  90.         initBonus,
  91.     } from '/assets/js/pages/bonus.js?v={{ v }}103';
  92.     import {
  93.         initTournamentPage,
  94.     } from '/assets/js/pages/tournament.js?v={{ v }}101';
  95.     import {
  96.         initSlots,
  97.     } from '/assets/js/pages/games/slots.js?v={{ v }}101';
  98.     import {
  99.         initSlot,
  100.     } from '/assets/js/pages/play.js?v={{ v }}101';
  101.     barba.init({
  102.         sync: true,
  103.         
  104.         views: [
  105.             {
  106.                 namespace: 'main_page',
  107.                 afterEnter({
  108.                     next
  109.                 }) {
  110.                     initSwipers(next.container);
  111.                     initSlots(next.container, true);
  112.                 },
  113.                 beforeLeave() {
  114.                     destroySwipers();
  115.                     destroySlots();
  116.                 },
  117.             },
  118.             {
  119.                 namespace: 'dice_page',
  120.                 afterEnter({
  121.                     next
  122.                 }) {
  123.                     initDice();
  124.                 },
  125.                 beforeLeave() {
  126.                     destroyDice();
  127.                 },
  128.             },
  129.             {
  130.                 namespace: 'mines_page',
  131.                 afterEnter({
  132.                     next
  133.                 }) {
  134.                     initMines();
  135.                 },
  136.                 beforeLeave() {
  137.                     destroyMines();
  138.                 },
  139.             },
  140.             {
  141.                 namespace: 'faq_page',
  142.                 afterEnter({
  143.                     next
  144.                 }) {
  145.                     initFaqToggle();
  146.                 },
  147.                 beforeLeave() {
  148.                     destroyFaqToggle();
  149.                 },
  150.             },
  151.             {
  152.                 namespace: 'referral_page',
  153.                 afterEnter({
  154.                     next
  155.                 }) {
  156.                     initRef();
  157.                 }
  158.             },
  159.             {
  160.                 namespace: 'bonus_page',
  161.                 afterEnter({
  162.                     next
  163.                 }) {
  164.                     initBonus();
  165.                 }
  166.             },
  167.             {
  168.                 namespace: 'tours_page',
  169.                 afterEnter({
  170.                     next
  171.                 }) {
  172.                     initTournamentPage();
  173.                 }
  174.             },
  175.             {
  176.                 namespace: 'lobby_page',
  177.                 afterEnter({
  178.                     next
  179.                 }) {
  180.                     initSlots(next.container, false);
  181.                 },
  182.                 beforeLeave() {
  183.                     destroySlots();
  184.                 },
  185.             },
  186.             {
  187.                 namespace: 'profile_page',
  188.                 afterEnter({
  189.                     next
  190.                 }) {
  191.                     initProfile();
  192.                 },
  193.                 beforeLeave() {
  194.                     destroyProfile();
  195.                 },
  196.             },
  197.             {
  198.                 namespace: 'play_slot',
  199.                 afterEnter({
  200.                     next
  201.                 }) {
  202.                     initSlot(next.container);
  203.                 },
  204.             },
  205.         ],
  206.         transitions: [{
  207.             name: 'fade',
  208.             async leave({
  209.                 current
  210.             }) {
  211.                 await gsap.to(current.container, {
  212.                     opacity: 0,
  213.                     duration: 0.3
  214.                 });
  215.             },
  216.             enter({
  217.                 next
  218.             }) {
  219.                 gsap.from(next.container, {
  220.                     opacity: 0,
  221.                     duration: 0.3
  222.                 });
  223.             }
  224.         }]
  225.     });
  226.     
  227.     barba.hooks.beforeEnter(() => {
  228.         document.querySelectorAll('img[src$=".svg"]').forEach(img => {
  229.             img.style.opacity = '0';
  230.             img.style.transition = 'opacity 0.3s';
  231.         });
  232.     });
  233.         
  234.     barba.hooks.afterEnter(() => {
  235.         updateSidebarActive();
  236.         $('html, body').animate({
  237.             scrollTop: 0
  238.         }, 0);  
  239.         
  240.         const params = new URLSearchParams(window.location.search);
  241.         if (params.get('denied') === 'deposit') {
  242.             n('Для запуска слота нужно пополнить баланс минимум на 200 ₽ за последние 7 дней', 'info');
  243.         }
  244.         
  245.         document.querySelectorAll('img[src$=".svg"]').forEach(img => {
  246.             const oldSrc = img.getAttribute('src');
  247.             if (oldSrc) {
  248.                 img.setAttribute('src', oldSrc.split('?')[0] + '?reload=' + new Date().getTime());
  249.                 img.onload = () => {
  250.                     img.style.opacity = '1';
  251.                 };
  252.             }
  253.         });
  254.     });
  255.     
  256.     function updateSidebarActive() {
  257.         document
  258.             .querySelectorAll('.sidebar-link')
  259.             .forEach(el => {
  260.                 const href = el.getAttribute('href');
  261.                 el.classList.toggle('active', window.location.pathname.startsWith(href));
  262.             });
  263.         
  264.         document
  265.             .querySelectorAll('.mobile-link')
  266.             .forEach(el => {
  267.                 const href = el.getAttribute('href');
  268.                 el.classList.toggle('active', window.location.pathname.startsWith(href));
  269.             });
  270.     }
  271.     
  272.     var globalrole = 0;
  273.         
  274.     </script>
  275.     
  276.     {% if user %} 
  277.     <script> 
  278.         globalrole = {{ user.admin }};
  279.     </script>
  280.     {% endif %}
  281.     <script src="/assets/js/auth.js?v={{ v }}102"></script>
  282.     <script src="/script.js?v={{ v }}104"></script>
  283.     {% block javascripts %}{% endblock %}
  284. </html>