templates/base.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta charset="UTF-8">
  5.         <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
  6.         <title>{% block title %}{% endblock %}</title>
  7.         <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>🔵</text></svg>">
  8.         {# Run `composer require symfony/webpack-encore-bundle` to start using Symfony UX #}
  9.         {% block stylesheets %}
  10.             {{ encore_entry_link_tags('app') }}
  11.         {% endblock %}
  12.         {% block javascripts %}
  13.             {{ encore_entry_script_tags('app') }}
  14.         {% endblock %}
  15.         <link href="/js/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
  16.         <link
  17.             href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i"
  18.             rel="stylesheet">
  19.         <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
  20.         <link href="/js/vendor/toastify/toastify.min.css" rel="stylesheet">
  21.         <!-- Custom styles for this template-->
  22.         <link href="/css/sb-admin-2.css" rel="stylesheet">
  23.         {# <link href="/css/sb-admin-2.min.css" rel="stylesheet"> #}
  24.         <link href="/js/vendor/datatables/dataTables.bootstrap4.min.css" rel="stylesheet">
  25.         <script src="/js/vendor/jquery/jquery.min.js"></script>
  26. {#        <script src="/js/vendor/jquery-3.4.1.min.js"></script>#}
  27.         <script src="/js/vendor/toastify/toastify-js.js"></script>
  28.         <link href="/css/attributes.css" rel="stylesheet">
  29.         <link href="/css/styles.css" rel="stylesheet">
  30. {#        <link href="/css/messenger_styles.css" rel="stylesheet">#}
  31.         {% block styles %}{% endblock %}
  32.         {% include 'components/messenger/css/overrides.html.twig' %}
  33.         {# dev #}
  34.         <script>
  35.             {% include 'components/messenger/js/dev/logger.js.twig' %}
  36.         </script>
  37.         <script>
  38.             {% include '/js/library/StringUtils.js' %}
  39.         </script>
  40.         <script src="/js/library/event_dispatcher/event_dispatcher.js"></script>
  41.         <script>
  42.             {% include '/js/library/gallery_carousel/gallery_carousel.js.twig' %}
  43.         </script>
  44.         <script>
  45.             {% include '/js/library/month_range_slider/month_range_slider.js.twig' %}
  46.         </script>
  47.         <script src="/js/library/url_builder/url_builder.js"></script>
  48.         <script>
  49.             {% include '/js/library/dropdown/dropdown.js.twig' %}
  50.         </script>
  51.         <script>
  52.             {% include '/js/library/dropdown_with_textarea/dropdown_with_textarea.js.twig' %}
  53.         </script>
  54.         <script>
  55.             {% include '/js/library/dropdown_with_input_filter/dropdown_with_input_filter.js.twig' %}
  56.         </script>
  57.         <script>
  58.             {% include '/js/library/month_range_slider_dropdown/month_range_slider_dropdown.js.twig' %}
  59.         </script>
  60.         <script src="/js/library/dropdown/file_dropdown.js"></script>
  61.         <script>
  62.             {% include '/js/library/Dom.js' %}
  63.         </script>
  64.         <script src="/js/vendor/moment.js"></script>
  65.         <script src="/js/vendor/daterangepicker.js"></script>
  66.         <script src="/js/vendor/datepicker.js"></script>
  67.         <link href="/css/daterangepicker.css" rel="stylesheet">
  68.         <script>
  69.             {% include '/js/library/daterangepicker-custom/daterangepicker-custom.js.twig' %}
  70.         </script>
  71.         <script>
  72.             {% include '/js/library/date_range_picker_with_button/date_range_picker_with_button.js.twig' %}
  73.         </script>
  74.         <script>
  75.             {% include '/js/library/DomDispatcher/DomDispatcher.js.twig' %}
  76.         </script>
  77.         <script>
  78.             {% include '/js/library/init_bearer/init_bearer.js.twig' %}
  79.             const initBearer = new InitBearer();
  80.             const INIT_BEARERS = {
  81.                 GLOBAL_DOM_DISPATCHER: "initBearer.globalDomDispatcher",
  82.                 GLOBAL_USER_SETTINGS_MODIFIER: "initBearer.globalUserSettingsModifier",
  83.                 GLOBAL_USER_SETTINGS_FORM_SAVER: "initBearer.globalUserSettingsFormSaver",
  84.                 GLOBAL_CALENDAR_EVENTS_SELECTOR_COMPONENT: "initBearer.globalCalendarEventsSelectorComponent",
  85.             };
  86.         </script>
  87.         <script>
  88.             {% include '/js/library/entity_collection/entity_collection.js.twig' %}
  89.         </script>
  90.         <script src="/js/vendor/jquery-easing/jquery.easing.min.js"></script>
  91.         {# <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> #}
  92.         {# <script src="/js/vendor/bootstrap/js/5.3.0/bootstrap.bundle.min.js"></script> #}
  93.         <script src="/js/vendor/bootstrap/js/4.6.0/bootstrap.bundle.min.js"></script>
  94.         <script src="/js/vendor/datatables/jquery.dataTables.min.js"></script>
  95.         <script src="/js/vendor/datatables/dataTables.bootstrap4.min.js"></script>
  96.         <script src="/js/library/data_table/data_table_extensions.js"></script>
  97.         <script>
  98.             {% include '/js/library/data_table/custom_data_table.js' %}
  99.         </script>
  100.         <script>
  101.             {% include '/js/library/symfony_form_data_builder/symfony_form_data_builder.js.twig' %}
  102.         </script>
  103.         <script>
  104.             {% include '/js/library/json_object_to_components_data_binder/json_object_to_components_data_binder.js.twig' %}
  105.         </script>
  106.         <script>
  107.             {% include '/js/library/json_form_saver/json_form_saver.js.twig' %}
  108.         </script>
  109.         <style>
  110.             .svg-ship {
  111.                 max-width: 70px;
  112.                 fill: white;
  113.                 /* transform: scaleX(-1); */
  114.                 height: 50px;
  115.             }
  116.         </style>
  117.         {% block addHead %}{% endblock %}
  118.     </head>
  119.     {% set bodyClass = block('bodyClass') is defined ? block('bodyClass') : null %}
  120.     {% set bodyAttrs = block('bodyAttrs') is defined ? block('bodyAttrs') : null %}
  121.     <body{{ bodyClass ? (' class="' ~ bodyClass ~ '"')|raw }}{{ bodyAttrs ? (' ' ~ bodyAttrs)|raw }}>
  122.         <!-- Logout Modal-->
  123.         <div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
  124.             aria-hidden="true">
  125.             <div class="modal-dialog" role="document">
  126.                 <div class="modal-content">
  127.                     <div class="modal-header">
  128.                         <h5 class="modal-title" id="exampleModalLabel">Выйти сейчас?</h5>
  129.                         <button class="close" type="button" data-dismiss="modal" aria-label="Close">
  130.                             <span aria-hidden="true">×</span>
  131.                         </button>
  132.                     </div>
  133.                     <div class="modal-body">Вы выйдете автоматически через 3 часа.</div>
  134.                     <div class="modal-footer">
  135.                         <button class="btn btn-secondary" type="button" data-dismiss="modal">Отмена</button>
  136.                         <a class="btn btn-primary" href="{{ path('logout') }}">Выйти</a>
  137.                     </div>
  138.                 </div>
  139.             </div>
  140.         </div>
  141.         <!-- Window Modal-->
  142.         <div class="modal fade" id="windowModal" tabindex="-1" role="dialog" aria-labelledby="windowModalLabel"
  143.             aria-hidden="true">
  144.             <div class="modal-dialog" role="document"
  145.                  style="max-width: 700px !important;"
  146.             >
  147.                 <div class="modal-content">
  148.                     <div class="modal-header">
  149.                         <h5 class="modal-title" id="windowModalLabel">Question?</h5>
  150.                         <button class="close" type="button" data-dismiss="modal" aria-label="Close">
  151.                             <span aria-hidden="true">×</span>
  152.                         </button>
  153.                     </div>
  154.                     <div class="modal-body">Modal body</div>
  155.                     <div class="modal-footer">
  156.                         <button class="btn btn-primary">Yes</button>
  157.                         <button class="btn btn-secondary" type="button" data-dismiss="modal">No</button>
  158.                     </div>
  159.                 </div>
  160.             </div>
  161.         </div>
  162.         {% block body %}{% endblock %}
  163.         {% if userSettings is defined and userSettings.id %}
  164.             <script>
  165.                 /** @type {JsonObjectToComponentsDataBinder|null} */
  166.                 let userSettingsModifier = null;
  167.                 let userSettings = null;
  168.                 /** @type {JsonFormSaver|null} */
  169.                 let userSettingsFormSaver = null;
  170.                 initBearer.wait([INIT_BEARERS.GLOBAL_DOM_DISPATCHER]).then(() => {
  171.                     /** @type {DomDispatcher} */
  172.                     const domDispatcher = initBearer.get(INIT_BEARERS.GLOBAL_DOM_DISPATCHER);
  173.                     userSettings = {{ userSettingsJsonStr|raw }};
  174.                     console.log(userSettings)
  175.                     let userSettingsFormDataBuilder = new SymfonyFormDataBuilder("user_settings");
  176.                     userSettingsModifier = new JsonObjectToComponentsDataBinder(userSettings, {
  177.                         domDispatcherListenGroups: ["userSettingsModifier"],
  178.                         domDispatcher: domDispatcher
  179.                     });
  180.                     initBearer.set(INIT_BEARERS.GLOBAL_USER_SETTINGS_MODIFIER, userSettingsModifier);
  181.                     let userSettingsSaverOptions = {
  182.                         saveOnChanges: true,
  183.                         jsonObject: userSettings,
  184.                         componentsDataBinder: userSettingsModifier,
  185.                         symfonyFormDataBuilder: userSettingsFormDataBuilder,
  186.                         url: "{{ path('user_settings_edit_ajax', { id: userSettings.id }) }}",
  187.                         csrfToken: {{ userSettingsForm._token.vars.value|json_encode|raw }},
  188.                     };
  189.                     userSettingsFormSaver = new JsonFormSaver(userSettingsSaverOptions);
  190.                     userSettingsFormSaver.init();
  191.                     userSettingsFormSaver.eventDispatcher.on(userSettingsFormSaver.EVENTS.ON_SAVE_ERROR, () => {
  192.                         showToast("Ошибка при обновлении настроек.<br>Попробуйте обновить"
  193.                             + " страницу и совершить действие повторно.", TOAST_TYPE.ERROR);
  194.                     });
  195.                     initBearer.set(INIT_BEARERS.GLOBAL_USER_SETTINGS_FORM_SAVER, userSettingsModifier);
  196.                 });
  197.             </script>
  198.         {% endif %}
  199. {#        tipSettings:#}
  200.         {% if reviewerTipSettings is defined and reviewerTipSettings.id %}
  201.             <script>
  202.                 let reviewerTipSettings = null;
  203.                 initBearer.wait([INIT_BEARERS.GLOBAL_DOM_DISPATCHER]).then(() => {
  204.                     const domDispatcher = initBearer.get(INIT_BEARERS.GLOBAL_DOM_DISPATCHER);
  205.                     reviewerTipSettings = {{ reviewerTipSettingsJsonStr|raw }};
  206.                     let reviewerTipSettingsFormDataBuilder = new SymfonyFormDataBuilder("tip_settings");
  207.                     let reviewerTipSettingsModifier = new JsonObjectToComponentsDataBinder(reviewerTipSettings, {
  208.                         domDispatcherListenGroups: ["reviewerTipSettingsModifier"],
  209.                         domDispatcher: domDispatcher
  210.                     });
  211.                     reviewerTipSettingsModifier.setComponentBindOptions("showReviewerRecommendationsTip",
  212.                         {invert: true});
  213.                     let reviewerTipSettingsSaverOptions = {
  214.                         saveOnChanges: true,
  215.                         jsonObject: reviewerTipSettings,
  216.                         componentsDataBinder: reviewerTipSettingsModifier,
  217.                         symfonyFormDataBuilder: reviewerTipSettingsFormDataBuilder,
  218.                         url: "{{ path('moderator_tip_settings_edit', { id: reviewerTipSettings.id }) }}",
  219.                         csrfToken: {{ reviewerTipSettingsForm._token.vars.value|json_encode|raw }},
  220.                     };
  221.                     let reviewerTipSettingsFormSaver = new JsonFormSaver(reviewerTipSettingsSaverOptions);
  222.                     reviewerTipSettingsFormSaver.init();
  223.                 });
  224.             </script>
  225.         {% endif %}
  226. {#        userTipSettings:#}
  227.         {% if userTipSettings is defined and userTipSettings.id %}
  228.             <script>
  229.                 let userTipSettings = null;
  230.                 initBearer.wait([INIT_BEARERS.GLOBAL_DOM_DISPATCHER]).then(() => {
  231.                     const domDispatcher = initBearer.get(INIT_BEARERS.GLOBAL_DOM_DISPATCHER);
  232.                     userTipSettings = {{ userTipSettingsJsonStr|raw }};
  233.                     let userTipSettingsFormDataBuilder = new SymfonyFormDataBuilder("tip_settings");
  234.                     let userTipSettingsModifier = new JsonObjectToComponentsDataBinder(userTipSettings, {
  235.                         domDispatcherListenGroups: ["userTipSettingsModifier"],
  236.                         domDispatcher: domDispatcher
  237.                     });
  238.                     userTipSettingsModifier.setComponentBindOptions("showCalendarEventsPeriodTip",
  239.                         {invert: true});
  240.                     let userTipSettingsSaverOptions = {
  241.                         saveOnChanges: true,
  242.                         jsonObject: userTipSettings,
  243.                         componentsDataBinder: userTipSettingsModifier,
  244.                         symfonyFormDataBuilder: userTipSettingsFormDataBuilder,
  245.                         url: "{{ path('moderator_tip_settings_edit', { id: userTipSettings.id }) }}",
  246.                         csrfToken: {{ userTipSettingsForm._token.vars.value|json_encode|raw }},
  247.                     };
  248.                     let userTipSettingsFormSaver = new JsonFormSaver(userTipSettingsSaverOptions);
  249.                     userTipSettingsFormSaver.init();
  250.                 });
  251.             </script>
  252.         {% endif %}
  253.         <script>
  254.             {#const API_COMPARE_DATA_URL = "{{ path('api_compare_data') }}";#}
  255.         </script>
  256.         {% block addJs %}{% endblock %}
  257.         <!-- Core plugin JavaScript-->
  258.         <!-- Custom scripts for all pages-->
  259.         <script src="/js/vendor/sb-admin-2.min.js"></script>
  260.     </body>
  261. </html>