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