templates/extends/base.html.twig line 1

Open in your IDE?
  1. {# @var app \App\Twig\AppVariable #}<!DOCTYPE html>
  2. <html lang="en">
  3.     <head>
  4.         {% if app.environment == 'prod' %}
  5.             <!-- Matomo -->
  6.             <script type="text/javascript">
  7.                 var _paq = window._paq || [];
  8.                 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  9.                 {% if app.user %}
  10.                 _paq.push(['setUserId', '{{ app.user.email|lower|trim }}'])
  11.                 {% endif %}
  12.                 _paq.push(['trackPageView']);
  13.                 _paq.push(['enableLinkTracking']);
  14.                 (function() {
  15.                     var u="//analytics.siefspace.eu/";
  16.                     _paq.push(['setTrackerUrl', u+'matomo.php']);
  17.                     _paq.push(['setSiteId', '1']);
  18.                     var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
  19.                     g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  20.                 })();
  21.             </script>
  22.             <!-- End Matomo Code -->
  23.         {% endif %}
  24.         <meta charset="utf-8">
  25.         <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  26.         <title>{% block title %}Welcome{% endblock %} | Concawe SIEF.space</title>
  27.         <link rel="stylesheet" href="{{ preload(asset('build/vendor.css'), {as: 'style'}) }}">
  28.         <link rel="stylesheet" href="{{ preload(asset('build/component/environment.css'), {as: 'style'}) }}">
  29.         <link rel="stylesheet" href="{{ preload(asset('build/app/global.css'), {as: 'style'}) }}">
  30.         <script src="{{ preload(asset('ckeditor5/build/ckeditor.js'), {as: 'script'}) }}"></script>
  31.         {% block stylesheets %}{% endblock %}
  32.     </head>
  33.     <body data-page="{{ app.request.get('_route') }}" data-ratchet-url="{{ ratchet_url }}" data-env="{{ environment }}">
  34.         <header class="container">
  35.             <div class="row">
  36.                 <div class="col-xs-12">
  37.                     <img src="{{ asset('build/images/concawe.png') }}" alt="Concawe" id="logo">
  38.                 </div>
  39.             </div>
  40.         </header>
  41.         {% block nav %}
  42.             <div class="container sticky-top">
  43.                 <nav class="navbar navbar-expand-lg navbar-dark bg-primary frame">
  44.                     <a class="navbar-brand" href="{{ url('dashboard') }}">SIEF.space</a>
  45.                     <button class="navbar-toggler" type="button" data-toggle="collapse"
  46.                             data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
  47.                             aria-expanded="false" aria-label="Toggle navigation">
  48.                         <span class="navbar-toggler-icon"></span>
  49.                     </button>
  50.                     <div class="collapse navbar-collapse" id="navbarSupportedContent">
  51.                         <ul class="navbar-nav mr-auto">
  52.                             {% if app.user.validEntityCount >= 1 %}
  53.                                 <li class="nav-item dropdown">
  54.                                     <div class="btn-group" id="my-sief-page">
  55.                                         <a class="nav-link {{ nav_class('my-sief-page.') }}" href="{{ url('my-sief-page.dashboard') }}">
  56.                                             My SIEF page
  57.                                         </a>
  58.                                         <a id="cyMySief" class="nav-link {{ nav_class('my-sief-page.') }} dropdown-toggle dropdown-toggle-split"
  59.                                            data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" href="#">
  60.                                             <span class="sr-only">
  61.                                                 Toggle dropdown
  62.                                             </span>
  63.                                         </a>
  64.                                         <div class="dropdown-menu">
  65.                                                 <a id="cyMySiefSubstances" class="dropdown-item {{ nav_class('my-sief-page.substances') }}" href="{{ url('my-sief-page.substances') }}">Substances</a>
  66.                                                 {% if app.user.invoiceCount > 0 %}
  67.                                                     <a class="dropdown-item {{ nav_class('my-sief-page.invoices') }}" href="{{ url('my-sief-page.invoices.index') }}">Invoices</a>
  68.                                                 {% endif %}
  69.                                                 <a id="cyMySiefContracts" class="dropdown-item {{ nav_class('my-sief-page.contracts') }}" href="{{ url('my-sief-page.contracts.index') }}">Contracts</a>
  70.                                                 <a class="dropdown-item {{ nav_class('client.files.') }}" href="{{ url('client.files.index', {folder: null}) }}">Files</a>
  71.                                                 <a class="dropdown-item {{ nav_class('my-sief-page.uses.questionnaires') }}" href="{{ url('my-sief-page.uses.questionnaires.index') }}">Uses questionnaires</a>
  72.                                                 {% if has_benzene_questionnaires() %}
  73.                                                     <a class="dropdown-item {{ nav_class('my-sief-page.benzene.') }}" href="{{ url('my-sief-page.benzene.index') }}">Naphtha questionnaires</a>
  74.                                                 {% endif %}
  75.                                                 <div class="dropdown-divider"></div>
  76.                                             {% if not app.user.memberEntities.empty and not app.user.nonMemberEntities.empty %}
  77.                                                 <a class="dropdown-item {{ nav_class('my-sief-page.legal-entities.create.non-member') }}" href="{{ url('my-sief-page.legal-entities.create', {step: 1, member: 0}) }}">
  78.                                                     Create non-member legal entity {{ nav_sr('my-sief-page.legal-entities.create.non-member') }}
  79.                                                 </a>
  80.                                                 <a class="dropdown-item {{ nav_class('my-sief-page.legal-entities.create.member') }}" href="{{ url('my-sief-page.legal-entities.create', {step: 1, member: 1}) }}">
  81.                                                     Create member legal entity {{ nav_sr('my-sief-page.legal-entities.create.member') }}
  82.                                                 </a>
  83.                                             {% else %}
  84.                                                 <a class="dropdown-item {{ nav_class('my-sief-page.legal-entities.create') }}" href="{{ url('my-sief-page.legal-entities.create', {step: 1}) }}">
  85.                                                     Create legal entity {{ nav_sr('my-sief-page.legal-entities.create') }}
  86.                                                 </a>
  87.                                             {% endif %}
  88.                                             {% if not app.user.entities.empty %}
  89.                                                 {% if not app.user.nonMemberEntities.empty %}
  90.                                                     <a id="cyMySiefTransfer" class="dropdown-item {{ nav_class('my-sief-page.legal-entity.transfer') }}" href="{{ url('my-sief-page.legal-entity.transfer') }}">
  91.                                                         Transfer legal entity {{ nav_sr('my-sief-page.legal-entity.transfer') }}
  92.                                                     </a>
  93.                                                 {% endif %}
  94.                                                 <a id="cyMySiefTransferOverview" class="dropdown-item {{ nav_class('my-sief-page.overview.transfer') }}" href="{{ url('my-sief-page.overview.transfer') }}">
  95.                                                     Incoming transfers {{ nav_sr('my-sief-page.overview.transfer') }}
  96.                                                 </a>
  97.                                             {% endif %}
  98.                                             <div class="dropdown-divider"></div>
  99.                                             <a class="dropdown-item {{ nav_class('sanctions.') }}" href="{{ url('sanctions') }}">EU sanctions compliance certification</a>
  100.                                             <!--
  101.                                             <div class="dropdown-divider"></div>
  102.                                             <h6 class="dropdown-header">Submissions</h6>
  103.                                             <a class="dropdown-item disabled" href="">CLP</a>
  104.                                             <a class="dropdown-item disabled" href="">iSIP</a>
  105.                                             -->
  106.                                         </div>
  107.                                     </div>
  108.                                 </li>
  109.                             {% endif %}
  110.                             {% if app.user.hasActiveLeadRegistrants %}
  111.                                 <li class="nav-item">
  112.                                     <a class="nav-link {{ nav_class('lead-registrant.') }}" href="{{ url('lead-registrant.index') }}">Lead Registrant</a>
  113.                                 </li>
  114.                             {% endif %}
  115.                             <li class="nav-item">
  116.                                 <a class="nav-link {{ nav_class('client.news.') }}" href="{{ url('client.news.index', {page: 1}) }}">News</a>
  117.                             </li>
  118.                             <li class="nav-item dropdown {{ nav_class('about-us') }}">
  119.                                 <div class="btn-group">
  120.                                     <a class="nav-link {{ nav_class('about-us') }}" href="{{ url('about-us') }}">
  121.                                         About us {{ nav_sr('about-us') }}
  122.                                     </a>
  123.                                     <a class="nav-link {{ nav_class('about-us') }} dropdown-toggle dropdown-toggle-split"
  124.                                        data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" href="#">
  125.                                         <span class="sr-only">
  126.                                             Toggle dropdown
  127.                                         </span>
  128.                                     </a>
  129.                                     <div class="dropdown-menu">
  130.                                         <a class="dropdown-item {{ nav_class('about-us.team') }}" href="{{ url('about-us.team') }}">The SIEF team</a>
  131.                                     </div>
  132.                                 </div>
  133.                             </li>
  134.                             <li class="nav-item">
  135.                                 <a class="nav-link {{ nav_class('help') }}" href="{{ url('help') }}">Help</a>
  136.                             </li>
  137.                         </ul>
  138.                         <ul class="navbar-nav my-2 my-lg-0">
  139.                             {% if app.user.staff %}
  140.                                 <li class="nav-item dropdown">
  141.                                     <div class="btn-group">
  142.                                         <div class="btn-group">
  143.                                             <a class="nav-link {{ nav_class('staff.') }}" href="{{ url('staff.setup.dashboard') }}">
  144.                                                 Setup
  145.                                             </a>
  146.                                             <a id="cySetup" class="nav-link {{ nav_class('staff.setup.') }} dropdown-toggle dropdown-toggle-split"
  147.                                                data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" href="#">
  148.                                                 <span class="sr-only">
  149.                                                     Toggle dropdown
  150.                                                 </span>
  151.                                             </a>
  152.                                             <div class="dropdown-menu">
  153.                                                 <a class="dropdown-item {{ nav_class('staff.settings.') }}" href="{{ url('staff.settings.index') }}">System settings</a>
  154.                                                 <a class="dropdown-item {{ nav_class('staff.templates.') }}" href="{{ url('staff.templates.index', {page: 1}) }}">Templates</a>
  155.                                                 <a class="dropdown-item {{ nav_class('staff.contracts.') }}" href="{{ url('staff.contracts.index', {page: 1}) }}">Contract templates</a>
  156.                                                 <a class="dropdown-item {{ nav_class('staff.setup.signatories.') }}" href="{{ url('staff.setup.signatories.index') }}">Contract signatories</a>
  157.                                                 <a class="dropdown-item {{ nav_class('staff.emails') }}" href="{{ url('staff.emails') }}">E-mail messages</a>
  158.                                                 <a class="dropdown-item {{ nav_class('setup.staff.uses.questionnaire') }}" href="{{ url('setup.staff.uses.questionnaire.index') }}">Uses questionnaire templates</a>
  159.                                                 <a class="dropdown-item {{ nav_class('staff.help') }}" href="{{ url('staff.help') }}">Help documents</a>
  160.                                                 <a class="dropdown-item {{ nav_class('staff.staff-members') }}" href="{{ url('staff.staff-members') }}">Staff members</a>
  161.                                                 <a id="cySetupUsers" class="dropdown-item {{ nav_class('staff.users.') }}" href="{{ url('staff.users.index', {page: 1}) }}">Users</a>
  162.                                                 <!--
  163.                                                 <div class="dropdown-divider"></div>
  164.                                                 <h6 class="dropdown-header">Submissions</h6>
  165.                                                 <a class="dropdown-item disabled" href="">CLP</a>
  166.                                                 <a class="dropdown-item disabled" href="">CLP Overrides</a>
  167.                                                 <a class="dropdown-item disabled" href="">iSIP</a>
  168.                                                 -->
  169.                                             </div>
  170.                                         </div>
  171.                                     </div>
  172.                                 </li>
  173.                                 <li class="nav-item dropdown">
  174.                                     <div class="btn-group">
  175.                                         <a class="nav-link {{ nav_class('staff.management.') }}" href="{{ url('staff.management.dashboard') }}">
  176.                                             Management
  177.                                         </a>
  178.                                         <a id="cyManagement" class="nav-link {{ nav_class('staff.management.') }} dropdown-toggle dropdown-toggle-split"
  179.                                            data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" href="#">
  180.                                         <span class="sr-only">
  181.                                             Toggle dropdown
  182.                                         </span>
  183.                                         </a>
  184.                                         <div class="dropdown-menu">
  185.                                             <a class="dropdown-item {{ nav_class('staff.inventory.') }}" href="{{ url('staff.inventory.index') }}">Substance inventory</a>
  186.                                             <a id="cyManagementMemberCompanies" class="dropdown-item {{ nav_class('staff.member-company.') }}" href="{{ url('staff.member-company.index', {page: 1}) }}">Member companies</a>
  187.                                             <a class="dropdown-item {{ nav_class('staff.billing-company.') }}" href="{{ url('staff.billing-company.index', {page: 1}) }}">Billing companies</a>
  188.                                             <a id="cyManagementLegalEntities" class="dropdown-item {{ nav_class('staff.invitations.') }}" href="{{ url('staff.invitations.index', {page: 1}) }}">Legal entities</a>
  189.                                             <div class="dropdown-divider"></div>
  190.                                             <a id="cyManagementTransfers" class="dropdown-item {{ nav_class('staff.transfer.') }}" href="{{ url('staff.transfer', {page: 1}) }}">Transfer requests</a>
  191.                                             <a class="dropdown-item {{ nav_class('staff.conversion.member.overview') }}" href="{{ url('staff.conversion.member.overview', {page: 1}) }}">Member conversion</a>
  192.                                             <a class="dropdown-item {{ nav_class('staff.conversion.member.overview') }}" href="{{ url('staff.registration.status', {page: 1}) }}">Registration Status</a>
  193.                                             <div class="dropdown-divider"></div>
  194.                                             <a class="dropdown-item {{ nav_class('staff.uses-questionnaires') }}" href="{{ url('staff.uses-questionnaires.index', {page: 1}) }}">Export uses questionnaires</a>
  195.                                             <a class="dropdown-item {{ nav_class('staff.dossiers.') }}" href="{{ url('staff.dossiers.index', {page: 1}) }}">Dossiers</a>
  196.                                             <a class="dropdown-item {{ nav_class('staff.lead-registrants.') }}" href="{{ url('staff.lead-registrants.index', {page: 1}) }}">Lead Registrants</a>
  197.                                             <a class="dropdown-item {{ nav_class('staff.files.') }}" href="{{ url('staff.files.index', {folder: null}) }}">Files</a>
  198.                                             <a class="dropdown-item {{ nav_class('staff.news.') }}" href="{{ url('staff.news.index', {page: 1}) }}">News</a>
  199.                                             <a class="dropdown-item {{ nav_class('.staff.token-dispatching.') }}" href="{{ url('.staff.token-dispatching.index') }}">Token dispatching</a>
  200.                                             <a class="dropdown-item {{ nav_class('staff.mail-archive') }}" href="{{ url('staff.mail-archive.index') }}">Mail archive</a>
  201.                                         </div>
  202.                                     </div>
  203.                                 </li>
  204.                                 <li class="nav-item dropdown">
  205.                                     <div class="btn-group">
  206.                                         <a  class="nav-link {{ nav_class('staff.follow-up.') }}" href="{{ url('staff.follow-up.dashboard') }}">
  207.                                             Follow-up
  208.                                         </a>
  209.                                         <a id='cyFollowUp' class="nav-link {{ nav_class('staff.follow-up.') }} dropdown-toggle dropdown-toggle-split"
  210.                                            data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" href="#">
  211.                                         <span class="sr-only">
  212.                                             Toggle dropdown
  213.                                         </span>
  214.                                         </a>
  215.                                         <div class="dropdown-menu">
  216.                                             <a id="cyStaffRequests" class="dropdown-item {{ nav_class('staff.requests') }}" href="{{ url('staff.requests', {page: 1}) }}">Staff requests</a>
  217.                                             <div class="dropdown-divider"></div>
  218.                                             <a id="cyLegalEntities" class="dropdown-item {{ nav_class('staff.non-member.orders.') }}" href="{{ url('staff.non-member.orders.index', {page: 1}) }}">Legal entities</a>
  219.                                             <a class="dropdown-item {{ nav_class('staff.follow-up.transfer.') }}" href="{{ url('staff.follow-up.transfer.index', {page: 1}) }}">Transfer requests</a>
  220.                                             <a class="dropdown-item {{ nav_class('staff.questionnaire.index') }}" href="{{ url('staff.questionnaire.index', {page: 1}) }}">Uses questionnaires</a>
  221.                                             <a class="dropdown-item {{ nav_class('staff.non-member.tonnage-proof') }}" href="{{ url('staff.non-member.tonnage-proof') }}">Tonnage band proof</a>
  222.                                             <a class="dropdown-item {{ nav_class('staff.follow-up.section-1.2-1.4.') }}" href="{{ url('staff.follow-up.section-1.2-1.4.index') }}">Section 1.2 and 1.4</a>
  223.                                             <a class="dropdown-item {{ nav_class('staff.follow-up.benzene-export.') }}" href="{{ url('staff.follow-up.benzene-export.index', {page: 1}) }}">Naphtha questionnaires</a>
  224.                                             <div class="dropdown-divider"></div>
  225.                                             <a class="dropdown-item {{ nav_class('staff.reporting.') }}" href="{{ url('staff.reporting.index') }}">Reporting</a>
  226.                                             <a class="dropdown-item {{ nav_class('staff.payments') }}" href="{{ url('staff.payments') }}">Invoice payments</a>
  227.                                             <a class="dropdown-item {{ nav_class('staff.non-member.reminder-exclusions.') }}" href="{{ url('staff.non-member.reminder-exclusions.index', {page: 1}) }}">Invoice reminder exclusions</a>
  228.                                             <a class="dropdown-item {{ nav_class('staff.non-member.reinvoicing') }}" href="{{ url('staff.non-member.reinvoicing.index', {page: 1}) }}">Reinvoicing</a>
  229.                                         </div>
  230.                                     </div>
  231.                                 </li>
  232.                             {% endif %}
  233.                             <li class="nav-item dropdown">
  234.                                 <div class="btn-group">
  235.                                     <a class="nav-link text-truncate {{ nav_class('account.') }}" href="{{ url('account.dashboard') }}">
  236.                                         {{ app.user.name }} {{ nav_sr('account.') }}
  237.                                     </a>
  238.                                     <a id="cyUserDropdown"class="nav-link {{ nav_class('account.') }} dropdown-toggle dropdown-toggle-split"
  239.                                        data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"
  240.                                        href="#">
  241.                                     <span class="sr-only">
  242.                                         Toggle dropdown
  243.                                     </span>
  244.                                     </a>
  245.                                     <div class="dropdown-menu dropdown-menu-right">
  246.                                         <a class="dropdown-item {{ nav_class('account.profile') }}" href="{{ url('account.profile') }}">
  247.                                             My profile {{ nav_sr('account.profile') }}
  248.                                         </a>
  249.                                         <a class="dropdown-item {{ nav_class('account.history') }}" href="{{ url('account.history', {page: 1}) }}">
  250.                                             Sign-in history {{ nav_sr('account.history') }}
  251.                                         </a>
  252.                                         <a class="dropdown-item {{ nav_class('account.notifications') }}" href="{{ url('account.notifications', {type: null}) }}">
  253.                                             Notification settings {{ nav_sr('account.notifications') }}
  254.                                         </a>
  255.                                         <div class="dropdown-divider"></div>
  256.                                         {% if is_granted('IS_IMPERSONATOR')  %}
  257.                                             <a id="cyLeaveImpersonation" class="dropdown-item" href="{{ path('dashboard', {'_impersonate_user': '_exit'}) }}">
  258.                                                 <em class="fa fa-sign-out"></em>
  259.                                                 Exit Impersonation
  260.                                             </a>
  261.                                         {% else %}
  262.                                             <a class="dropdown-item" href="{{ url('security.sign-out') }}">
  263.                                                 <em class="fa fa-sign-out"></em>
  264.                                                 Sign out
  265.                                             </a>
  266.                                         {% endif %}
  267.                                     </div>
  268.                                 </div>
  269.                             </li>
  270.                             {% if app.user and filter is defined %}
  271.                                 <li class="nav-item">
  272.                                     <button id="btnFilter" class="btn btn-primary{% if filter.vars.active %} text-warning{% endif %}" type="button" title="{% if filter.vars.active %}Filtering is active{% else %}Filter data{% endif %}" data-toggle="modal" data-target="#filter">
  273.                                         <em class="fa fa-filter"></em>
  274.                                     </button>
  275.                                 </li>
  276.                             {% endif %}
  277.                             {% if app.user and app.user.staff %}
  278.                                 <li class="nav-item">
  279.                                     <a id="btnSpotlight" class="btn btn-primary" title="Search (ctrl+space)" data-toggle="modal" href="#spotlight">
  280.                                         <em class="fa fa-search"></em>
  281.                                     </a>
  282.                                 </li>
  283.                             {% endif %}
  284.                             {% if app.user and not app.user.notifications.empty %}
  285.                                 <li class="nav-item">
  286.                                     <button id="btnNotifications" class="btn btn-primary" type="button" title="{{ app.user.notifications.count }} notification(s)" data-toggle="modal" data-target="#notifications">
  287.                                         <span class="badge badge-danger badge-pill">{{ app.user.notifications.count }}</span>
  288.                                     </button>
  289.                                 </li>
  290.                             {% elseif app.user and app.user.notifications.empty and app.user.staff %}
  291.                                 <li class="nav-item">
  292.                                     <a href="{{ url('staff.requests') }}" class="btn btn-primary" type="button" title="no notification(s)">
  293.                                         <span class="badge badge-light badge-pill">0</span>
  294.                                     </a>
  295.                                 </li>
  296.                             {% endif %}
  297.                         </ul>
  298.                     </div>
  299.                 </nav>
  300.             </div>
  301.         {% endblock %}
  302.         {% block sanctions %}
  303.             {% if should_show_sanctions_grace_period_notification() %}
  304.                 <div class="container" id="sanctions_grace_period">
  305.                     <div class="alert alert-danger">
  306.                         <div>
  307.                             {% template from 'sanctions.grace-period.flash' described_as 'Persistent flash message shown during sanctions grace period' %}
  308.                                 <p>
  309.                                     <strong>sanctions.grace-period.flash</strong> -
  310.                                     Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusantium, aliquid architecto aut eos fugiat
  311.                                     ipsam magnam ratione voluptatum. Architecto deserunt fugiat fugit ipsa, laborum magni odit officia
  312.                                     totam.
  313.                                 </p>
  314.                             {% endtemplate %}
  315.                             <div class="text-right">
  316.                                 <a href="{{ url('sanctions') }}" class="btn btn-danger">
  317.                                     Go to my EU sanctions compliance certification tasks
  318.                                     <em class="ml-1 fa fa-chevron-circle-right"></em>
  319.                                 </a>
  320.                             </div>
  321.                         </div>
  322.                     </div>
  323.                 </div>
  324.             {% endif %}
  325.         {% endblock %}
  326.         {% block flash %}
  327.             <div class="container">
  328.                 <div id="flash">
  329.                     {% for label, messages in app.flashes %}
  330.                         <div class="card card-small frame" id="flash-{{ label }}">
  331.                             <div class="card-header bg-{{ label }} text-white">
  332.                                 <button type="button" class="float-right" data-toggle="dismiss"
  333.                                         data-target="#flash-{{ label }}">
  334.                                     <em class="fa fa-times"></em>
  335.                                 </button>
  336.                                 <div class="align-middle">
  337.                                     {% if label == 'success' %}
  338.                                         Success notices
  339.                                     {% elseif label == 'warning' %}
  340.                                         Warnings
  341.                                     {% elseif label == 'danger' %}
  342.                                         Error notices
  343.                                     {% elseif label == 'info' %}
  344.                                         Informational notices
  345.                                     {% else %}
  346.                                         {{ label }}
  347.                                     {% endif %}
  348.                                     <sup class="badge badge-pill badge-light">{{ messages|length }}</sup>
  349.                                 </div>
  350.                             </div>
  351.                             <div class="card-body">
  352.                                 <ul class="list-group">
  353.                                     {% for message in messages %}
  354.                                         <li class="list-group-item">{{ message }}</li>
  355.                                     {% endfor %}
  356.                                 </ul>
  357.                             </div>
  358.                             <div class="card-footer text-right">
  359.                                 <button type="button" class="btn btn-{{ label }} btn-sm" data-toggle="dismiss"
  360.                                         data-target="#flash-{{ label }}">
  361.                                     <em class="fa fa-times"></em> Dismiss
  362.                                 </button>
  363.                             </div>
  364.                         </div>
  365.                     {% endfor %}
  366.                 </div>
  367.             </div>
  368.         {% endblock %}
  369.         {% if app.user %}
  370.             <a class="btn btn-primary btn-badge {% if app.environment == "dev" %}messaging-dev{% endif %}" href="{{ url('messenger.index', {page: 1}) }}" id="messaging">
  371.                 <span>
  372.                     <em class="fa fa-2x fa-comments">
  373.                         {% if message_count() > 0 %}
  374.                             <span class="badge badge-danger badge-circle">{{ message_count() }}</span>
  375.                         {% else %}
  376.                             <span class="badge badge-dark badge-circle">0</span>
  377.                         {% endif %}
  378.                     </em>
  379.                 </span>
  380.                 <span class="slider">
  381.                     You have {% if message_count() > 0 %}{{ message_count()|toWords }}{% else %}no{% endif %}<br> unread
  382.                     message{% if message_count() != 1 %}s{% endif %}.
  383.                 </span>
  384.             </a>
  385.             <div class="modal fade" id="notifications" tabindex="-1" role="dialog" aria-hidden="true" data-counter="{{ app.user.notifications.count }}">
  386.                 <div class="modal-dialog" role="document">
  387.                     <div class="modal-content">
  388.                         <div class="modal-header">
  389.                             <h5 class="modal-title" id="exampleModalLabel">Notifications</h5>
  390.                             <div class="modal-body p-0">
  391.                                 {% if app.user.staff %}
  392.                                     <a href="{{ url('ajax.notifications.all.dismiss') }}" class=" float-right btn-sm btn-danger">Clear all</a>
  393.                                 {% endif %}
  394.                             </div>
  395.                             <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  396.                                 <span aria-hidden="true">&times;</span>
  397.                             </button>
  398.                         </div>
  399.                         <div class="modal-body p-0">
  400.                             <div class="list-group list-group-flush">
  401.                                 {% for notification in app.user.notifications %}
  402.                                     <a href="{{ url('notification', {notification: notification.id}) }}" class="list-group-item list-group-item-action d-flex justify-content-between align-items-center">
  403.                                         {{ notification.text }}
  404.                                         <div class="no-wrap ml-3" data-dismiss-notification="{{ url('ajax.notifications.dismiss', {notification: notification.id}) }}">
  405.                                             {% if app.user.staff %}
  406.                                                 <div class="btn btn-sm btn-secondary" title="Dismiss notification">
  407.                                                     <span class="fa fa-trash"></span>
  408.                                                 </div>
  409.                                             {% endif %}
  410.                                             <div class="btn btn-sm btn-primary"><span class="fa fa-chevron-right"></span></div>
  411.                                         </div>
  412.                                     </a>
  413.                                 {% endfor %}
  414.                             </div>
  415.                         </div>
  416.                         <div class="modal-footer">
  417.                             {% if app.user.staff %}
  418.                                 <a href="{{ url('staff.requests') }}" class="btn btn-primary">Show all</a>
  419.                             {% endif %}
  420.                             <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  421.                         </div>
  422.                     </div>
  423.                 </div>
  424.             </div>
  425.             <div class="modal fade" id="spotlight" tabindex="-1" role="dialog" aria-hidden="true" data-url="{{ url('spotlight') }}">
  426.                 <div class="modal-dialog" role="document">
  427.                     <div class="modal-content">
  428.                         <div class="modal-header">
  429.                             <h5 class="modal-title" id="exampleModalLabel">Search</h5>
  430.                             <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  431.                                 <span aria-hidden="true">&times;</span>
  432.                             </button>
  433.                         </div>
  434.                         <div class="modal-body">
  435.                             <div class="input-group">
  436.                                 <input type="search" class="form-control" placeholder="Your query">
  437.                                 <div class="input-group-append">
  438.                                     <button class="btn btn-primary" type="button">
  439.                                         <em class="fa fa-search search-icon"></em>
  440.                                         <span class="sr-only">Search</span>
  441.                                     </button>
  442.                                 </div>
  443.                             </div>
  444.                             <div class="search-results mt-3">
  445.                             </div>
  446.                         </div>
  447.                         <div class="modal-footer">
  448.                             <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  449.                         </div>
  450.                     </div>
  451.                 </div>
  452.             </div>
  453.             <div class="modal fade" id="pdf-preview" tabindex="-1" role="dialog" aria-hidden="true">
  454.                 <div class="modal-dialog mw-100 {% block preview_width %}w-75{% endblock %} mh-100 h-75" role="document">
  455.                     <div class="modal-content h-100">
  456.                         <div class="modal-header">
  457.                             <h5 class="modal-title"></h5>
  458.                             <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  459.                                 <span aria-hidden="true">&times;</span>
  460.                             </button>
  461.                         </div>
  462.                         <div class="modal-body p-0">
  463.                             <iframe src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="></iframe>
  464.                         </div>
  465.                         <div class="modal-footer">
  466.                             <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  467.                         </div>
  468.                     </div>
  469.                 </div>
  470.             </div>
  471.             <div class="modal fade" id="img-preview" tabindex="-1" role="dialog" aria-hidden="true">
  472.                 <div class="modal-dialog mw-100 {{ block('preview_width') }} mh-100 h-75" role="document">
  473.                     <div class="modal-content h-100">
  474.                         <div class="modal-header">
  475.                             <h5 class="modal-title"></h5>
  476.                             <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  477.                                 <span aria-hidden="true">&times;</span>
  478.                             </button>
  479.                         </div>
  480.                         <div class="modal-body p-0">
  481.                             <iframe src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="></iframe>
  482.                         </div>
  483.                         <div class="modal-footer">
  484.                             <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  485.                         </div>
  486.                     </div>
  487.                 </div>
  488.             </div>
  489.             {% if filter is defined %}
  490.                 {{ form_start(filter) }}
  491.                 <div class="modal container fade" id="filter" tabindex="-1" role="dialog" aria-hidden="true">
  492.                     <div class="modal-dialog" role="document">
  493.                         <div class="modal-content">
  494.                             <div class="modal-header">
  495.                                 <h5 class="modal-title">Data filter</h5>
  496.                                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  497.                                     <span aria-hidden="true">&times;</span>
  498.                                 </button>
  499.                             </div>
  500.                             <div class="modal-body">
  501.                                 {% block filter %}
  502.                                 {% endblock %}
  503.                             </div>
  504.                             <div class="modal-footer">
  505.                                 {{ form_widget(filter.filter) }}
  506.                                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
  507.                                 {{ form_widget(filter.clear) }}
  508.                             </div>
  509.                         </div>
  510.                     </div>
  511.                 </div>
  512.                 {{ form_end(filter) }}
  513.             {% endif %}
  514.         {% endif %}
  515.         {% if app.environment != 'prod' %}
  516.             <p id="environment">
  517.                 {% if app.environment == 'dev' %}
  518.                     <a title="Open database" data-placement="left" href="https://{{ app.request.host }}:8037" target="_blank">
  519.                         <em class="fa fa-database"></em>
  520.                     </a>
  521.                 {% endif %}
  522.                 <a title="Open mailbox" data-placement="left" href="{{ mailbox_url() }}" target="_blank">
  523.                     <em class="fa fa-inbox"></em>
  524.                 </a>
  525.                 <a title="Issue tracker" data-placement="left" href="https://youtrack.torfs.org" target="_blank">
  526.                     <em class="fa fa-bug"></em>
  527.                 </a>
  528.                 <span title="Application version/environment" data-placement="left">{{ app_version }}</span>
  529.             </p>
  530.         {% endif %}
  531.         {% block body %}{% endblock %}
  532.         {% if app.user and not is_granted('IS_IMPERSONATOR') %}
  533.             {{ include('includes/tutorial.html.twig', {user: app.user}) }}
  534.         {% endif %}
  535.         {% block extra %}{% endblock %}
  536.         {% if 'catAccCookies' is not cookie %}
  537.             <div id="cookie-notice">
  538.                 <p>
  539.                     This website uses cookies for essential functionalities. Read about how we use cookies and how you
  540.                     can control them by clicking &quot;Read more&quot; or accept cookies by clicking
  541.                     &quot;Accept cookies&quot;.
  542.                 </p>
  543.                 <button class="btn btn-primary">Accept cookies</button>
  544.                 <a class="btn btn-secondary" href="https://www.concawe.eu/cookies-policy" target="_blank">Read more</a>
  545.             </div>
  546.         {% endif %}
  547.         <script src="{{ preload(asset('build/runtime.js'), {as: "script"}) }}"></script>
  548.         <script src="{{ preload(asset('build/vendor.js'), {as: "script"}) }}"></script>
  549.         <script src="{{ preload(asset('build/app/global.js'), {as: "script"}) }}"></script>
  550.         {% block javascripts %}{% endblock %}
  551.     </body>
  552. </html>