vendor/uvdesk/core-framework/Resources/views/Templates/layout.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <title>{% block title %}HelpDesk{% endblock %}</title>
  5.         <meta name="viewport" content="width=device-width, initial-scale=1">
  6.         <link rel="icon" type="image/x-icon" sizes="16x16 32x32 48x48" href="{{ asset('favicon.ico') }}" />
  7.         <!-- Stylesheets -->
  8.         <link href="{{ asset('bundles/uvdeskcoreframework/css/_uikit.css') }}" type="text/css" rel="stylesheet" media="all" />
  9.         <link href="{{ asset('bundles/uvdeskcoreframework/css/_custom.css') }}" type="text/css" rel="stylesheet" media="all" />
  10.         <link href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" type="text/css" rel="stylesheet">
  11.         <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css" type="text/css" rel="stylesheet">
  12.         <!-- Custom CSS -->
  13.         {% set websiteConfiguration = user_service.getWebsiteConfiguration('knowledgebase') %}
  14.         {% set website = user_service.getWebsiteDetails('helpdesk') %}
  15.         {{ include('@UVDeskCoreFramework/Templates/lightskin.html.twig') }}
  16.         <!-- Custom Stylesheets -->
  17.         {% for stylesheet in uvdesk_extensibles.getRegisteredComponent('Webkul\\UVDesk\\CoreFrameworkBundle\\Dashboard\\Dashboard').getDashboardTemplate().getStylesheetResources() %}
  18.             <link href="{{ asset(stylesheet) }}" type="text/css" rel="stylesheet" media="all" />
  19.         {% endfor %}
  20.         
  21.         {% block templateCSS %}{% endblock %}
  22.         <!-- Scripts -->
  23.         <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  24.         <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.1/underscore-min.js"></script>
  25.         <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.4.0/backbone-min.js"></script>
  26.         <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.validation/0.11.5/backbone-validation-min.js"></script>
  27.         <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.paginator/2.0.8/backbone.paginator.min.js"></script>
  28.         <script src="{{ asset('bundles/uvdeskcoreframework/js/_dropdown.js') }}"></script>
  29.         <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/6.2.0/d3.min.js"></script>
  30.         <script src="{{ asset('bundles/uvdeskcoreframework/js/viewer.js') }}"></script>
  31.         <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  32.         <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.0/moment.min.js"></script>    
  33.         <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>
  34.     </head>
  35.     {% set bodyClass = '' %}
  36.     {% set bodySkinClass = '' %}
  37.     {% if app.request.locale == "ar" %}
  38.         {% set bodyClass = 'uv-rtl' %}
  39.     {% endif %}
  40.     
  41.     <body class="{{ bodySkinClass ~ ' ' ~ bodyClass }}">
  42.         <div class="uv-notifications-wrapper">
  43.             <noscript>
  44.                 <div class="uv-notification page-load uv-error">
  45.                     <p>{% trans %}Your browser does not support JavaScript or You disabled JavaScript, Please enable those !{% endtrans %}</p>
  46.                 </div>
  47.                 <style>.uv-loader-view {display: none;}</style>
  48.             </noscript>
  49.             {% if uvdesk_service.requestHeadersSent() == false %}
  50.                 {% for flashMessage in app.session.flashbag.get('success') %}
  51.                     <div class="uv-notification page-load uv-success">
  52.                         <span class="uv-notification-close"></span>
  53.                         <p>{{ flashMessage|raw }}</p>
  54.                     </div>
  55.                 {% endfor %}
  56.                 
  57.                 {% for flashMessage in app.session.flashbag.get('warning') %}
  58.                     <div class="uv-notification page-load uv-error">
  59.                         <span class="uv-notification-close"></span>
  60.                         <p>{{ flashMessage|raw }}</p>
  61.                     </div>
  62.                 {% endfor %}
  63.             {% endif %}
  64.         </div>
  65.         <div class="uv-loader-view">
  66.             <div class="uv-loader">
  67.                 <span></span>
  68.                 <span></span>
  69.                 <span></span>
  70.             </div>
  71.         </div>
  72.         <div class="uv-pop-up-overlay" id="confirm-modal">
  73.             <div class="uv-pop-up-box uv-pop-up-slim">
  74.                 <span class="uv-pop-up-close"></span>
  75.                 <h2>{{ 'Confirm Action'|trans }}</h2>
  76.                 <p>{{ 'Are you sure? You want to perform this action.'|trans }}</p>
  77.                 <div class="uv-pop-up-actions">
  78.                     <a href="#" class="uv-btn uv-btn-error confirm">{{ 'Confirm'|trans }}</a>
  79.                     <a href="#" class="uv-btn cancel">{{ 'Cancel'|trans }}</a>
  80.                 </div>
  81.             </div>
  82.         </div>
  83.         {% set currentUser = user_service.getSessionUser() %}
  84.         {% if currentUser is not empty and currentUser.getAgentInstance() is not empty %}
  85.             {% set currentUserDetails = currentUser.getAgentInstance().getPartialDetails() %}
  86.         {% endif %}
  87.         {% block sidebar %}
  88.             {% if currentUser is defined and currentUser is not empty %}
  89.                 {% include "@UVDeskCoreFramework/Templates/sidebar.html.twig" %}
  90.             {% endif %}
  91.         {% endblock %}
  92.         {% block pageWrapper %}
  93.             <div class="uv-paper">
  94.                 {% block pageHeader %}
  95.                     {% include "@UVDeskCoreFramework/Templates/header.html.twig" %}
  96.                 {% endblock %}
  97.                 <div class="uv-wrapper">
  98.                     <div class="uv-container">
  99.                         {% block pageContent %}{% endblock %}
  100.                     </div>
  101.                 </div>
  102.             </div>
  103.         {% endblock %}
  104.         
  105.         {% block footer %}
  106.             <script>
  107.                 // Show loader by default
  108.                 document.addEventListener('DOMContentLoaded', function() {
  109.                     // Ensure the loader is visible
  110.                     document.querySelector('.uv-loader-view').style.display = 'block';
  111.                 });
  112.                 // Hide loader once the page is fully loaded
  113.                 window.onload = function() {
  114.                     // Hide the loader
  115.                     if (document.querySelector('.uv-loader-view'))
  116.                         document.querySelector('.uv-loader-view').style.display = 'none';
  117.                 };
  118.             </script>
  119.             <script src="{{ asset('bundles/uvdeskcoreframework/js/_common.js') }}"></script>
  120.             {% include "@UVDeskCoreFramework/Templates/pagination.html.twig" %}
  121.             {# Confirm Action Dialog #}
  122.             <div class="uv-pop-up-overlay" id="confirm-modal">
  123.                 <div class="uv-pop-up-box uv-pop-up-slim">
  124.                     <span class="uv-pop-up-close"></span>
  125.                     <h2>{{ 'Confirm Action'|trans }}</h2>
  126.                     <p>{{ 'Are you sure? You want to perform this action.'|trans }}</p>
  127.                     <div class="uv-pop-up-actions">
  128.                         <a href="#" class="uv-btn uv-btn-error confirm">{{ 'Confirm'|trans }}</a>
  129.                         <a href="#" class="uv-btn cancel">{{ 'Cancel'|trans }}</a>
  130.                     </div>
  131.                 </div>
  132.             </div>
  133.             {# Loader Template #}
  134.             <script type="text/template" id="loader-tmp">
  135.                 <div class="uv-loader">
  136.                     <span></span>
  137.                     <span></span>
  138.                     <span></span>
  139.                 </div>
  140.             </script>
  141.             {# Full View Loader Template #}
  142.             <script type="text/template" id="full-view-loader">
  143.                 <div class="uv-loader-view">
  144.                     <div class="uv-loader">
  145.                         <span></span>
  146.                         <span></span>
  147.                         <span></span>
  148.                     </div>
  149.                 </div>
  150.             </script>
  151.             {# Notification Template #}
  152.             <script type="text/template" id="notification-template">
  153.                 <div class="uv-notification <% if(alertClass == 'danger') { %>uv-error<% } else { %> <%= 'uv-' + alertClass %> <% } %>">
  154.                     <span class="uv-notification-close"></span>
  155.                     <p><%= alertMessage %> </p>
  156.                 </div>
  157.             </script>
  158.             <script type="text/javascript">
  159.                 var warningResponse = {
  160.                     'alertClass' : 'danger',
  161.                     'alertMessage' : '{{ "Error : Something went wrong, please try again later"|trans }}',
  162.                 };
  163.             </script>
  164.             {% if currentUser is defined and currentUser is not empty %}
  165.                 <script type="text/javascript">
  166.                     setInterval(async () => {
  167.                         try {
  168.                             const response = await fetch('{{ path('helpdesk_member_session_check') }}', {
  169.                                 credentials: 'include'
  170.                             });
  171.                             if (! response.ok) {
  172.                                 if (
  173.                                     response.status === 401 
  174.                                     || response.status === 440
  175.                                 ) {
  176.                                     window.location.href = '{{ path('helpdesk_member_handle_login') }}';
  177.                                 }
  178.                             } else {
  179.                                 const data = await response.json();
  180.                                 console.log('Session status:', data.session);
  181.                             }
  182.                         } catch (err) {
  183.                             console.error('Error checking session:', err);
  184.                         }
  185.                     }, 20 * 60 * 1000); // Every 20 minutes
  186.                 </script>
  187.             {% endif %}
  188.         {% endblock %}
  189.         {# Custom Javascript #}
  190.         {% for javascript in uvdesk_extensibles.getRegisteredComponent('Webkul\\UVDesk\\CoreFrameworkBundle\\Dashboard\\Dashboard').getDashboardTemplate().getJavascriptResources() %}
  191.             <script src="{{ asset(javascript) }}" type="text/javascript"></script>
  192.         {% endfor %}
  193.     </body>
  194. </html>