vendor/uvdesk/support-center-bundle/Resources/views/Templates/layout.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html lang="{{app.request.getLocale()}}">
  3.     <head>
  4.         <link rel="manifest" href="{{ asset('manifest.json') }}" >    
  5.         <link rel="stylesheet" href="{{ asset('bundles/uvdesksupportcenter/css/knowledgebase.css') }}">
  6.         <link rel="preconnect" href="https://fonts.googleapis.com">
  7.         <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  8.         <link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
  9.         
  10.         <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
  11.         <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
  12.         <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>
  13.         <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.validation/0.11.5/backbone-validation-min.js"></script>
  14.         <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.paginator/2.0.8/backbone.paginator.min.js"></script>
  15.         
  16.         <script src = "{{ asset('bundles/uvdesksupportcenter/js/common.js') }}"></script>
  17.         <script src = "{{ asset('bundles/uvdesksupportcenter/js/uikit.front.js') }}"></script>
  18.         <script src = "{{ asset('bundles/uvdeskcoreframework/js/dropdown.js') }}"></script>
  19.         
  20.         {% set websiteDetails = user_service.getWebsiteDetails('knowledgebase') %}
  21.         {% set websiteConfiguration = user_service.getWebsiteConfiguration('knowledgebase') %}
  22.         {% set themeTemplate = user_service.getWebsiteView() %}
  23.         {% set canonical = app.request.server.get('REQUEST_SCHEME')~'://'~app.request.server.get('HTTP_HOST')~app.request.server.get('PATH_INFO') %}
  24.         <link rel="canonical" href="{% block canonical %}{{canonical}}{% endblock %}">
  25.         {% if websiteDetails and (websiteDetails.favicon) %}
  26.             <link rel="icon" sizes="16x16" href="{{websiteDetails.favicon ? websiteDetails.favicon : null}}" />
  27.         {% else %}
  28.             <link rel="icon" sizes="16x16" href="{{ asset('favicon.ico') }}" />
  29.         {% endif %}
  30.         {% if websiteDetails %}
  31.             <title>{% block title %}{% trans %}HelpDesk{% endtrans %} {{ websiteDetails.name ? websiteDetails.name : 'Knowledge Base'|trans }} {% endblock %}</title>
  32.             {% if websiteConfiguration.metaDescription %}
  33.                 <meta name="description" content="{% block metaDescription %}{{ websiteConfiguration.metaDescription }}{% endblock %}"/>
  34.             {% endif %}
  35.             {% if websiteConfiguration.metaKeywords %}
  36.                 <meta name="keywords" content="{% block metaKeywords %}{{ websiteConfiguration.metaKeywords }}{% endblock %}"/>
  37.             {% endif %}
  38.             <meta http-equiv="Content-Type" content="text/html;" charset="{{ _charset }}"/>
  39.             <meta name="robots" content="INDEX,FOLLOW" />
  40.             <meta name="viewport" content="width=device-width, initial-scale=1">
  41.             <meta property="og:locale" content="{{app.request.getLocale()}}" />
  42.             <meta property="og:type" content="article" />
  43.             <meta property="og:title" content="{% block ogtitle %}{% trans %}HelpDesk{% endtrans %} {{ websiteDetails.name ? websiteDetails.name : 'Knowledge Base'|trans }}{% endblock %}" />
  44.             <meta property="og:url" content="{% block ogcanonical %}{{canonical}}{% endblock %}" />
  45.             <meta property="og:site_name" content="{{ websiteDetails.name ? websiteDetails.name : 'Knowledge Base'|trans }}" />
  46.             {% if websiteDetails.logo %}
  47.                 <meta property="og:image" content="{{ websiteDetails.logo }}" />
  48.             {% endif %}
  49.             <meta name="twitter:card" content="summary" />
  50.             <meta name="twitter:title" content="{% block twtitle %}{% trans %}HelpDesk{% endtrans %} {{ websiteDetails.name ? websiteDetails.name : 'Knowledge Base'|trans }}{% endblock %}" />
  51.             <link rel='dns-prefetch' href='//www.google.com' />
  52.             <link rel='dns-prefetch' href='//fonts.googleapis.com' />
  53.             <link rel='dns-prefetch' href='//fonts.gstatic.com' />
  54.             <link rel='dns-prefetch' href='//cdn.uvdesk.com' />
  55.         {% endif %}
  56.         {% if websiteConfiguration %}
  57.             {% block head %}
  58.                 {% include "@UVDeskSupportCenter/Knowledgebase/websiteSettings.html.twig" %}
  59.             {% endblock %}
  60.         {% endif %}
  61.         {% if websiteConfiguration %}
  62.             {% if uvdesk_service.isDarkSkin(websiteConfiguration.brandColor) %}
  63.                 {% include '@UVDeskSupportCenter/Knowledgebase/darkSkin.html.twig' %}
  64.             {% else %}
  65.                 {% include '@UVDeskSupportCenter/Knowledgebase/lightSkin.html.twig' %}
  66.             {% endif %}
  67.         {% endif %}
  68.         {% block templateCSS %}{% endblock %}
  69.     </head>
  70.     {% set bodyClass = '' %}
  71.     {% set bodySkinClass = '' %}
  72.    
  73.     <body class="{{ bodySkinClass ~ ' ' ~ bodyClass }}">
  74.         {% set broadcastMessage = uvdesk_service.getValidBroadcastMessage(websiteConfiguration.broadcastMessage is defined ? websiteConfiguration.broadcastMessage : '') %}
  75.         {% if broadcastMessage %}
  76.             <div class="uv-kb-info" id="uv-kb-info-broadcast">
  77.                 <p>{{ broadcastMessage.message is defined ? broadcastMessage.message | raw : '' }}</p>
  78.                 <span class="uv-kb-info-remove" onclick="document.getElementById('uv-kb-info-broadcast').remove()"></span>
  79.             </div>
  80.         {% endif %}
  81.         <div class="uv-notifications-wrapper">
  82.             {% if uvdesk_service.requestHeadersSent() == false %}
  83.                 {% for flashMessage in app.session.flashbag.get('success') %}
  84.                     <div class="uv-notification page-load uv-success">
  85.                         <span class="uv-notification-close"></span>
  86.                         <p>{{ flashMessage|raw }}</p>
  87.                     </div>
  88.                 {% endfor %}
  89.                 {% for flashMessage in app.session.flashbag.get('warning') %}
  90.                     <div class="uv-notification page-load uv-error">
  91.                         <span class="uv-notification-close"></span>
  92.                         <p>{{ flashMessage|raw }}</p>
  93.                     </div>
  94.                 {% endfor %}
  95.             {% endif %}
  96.             
  97.             <noscript>
  98.                 <div class="uv-notification uv-error">
  99.                     <p>{% trans %}Your browser does not support JavaScript or You disabled JavaScript, Please enable those !{% endtrans %}</p>
  100.                 </div>
  101.                 <style>.uv-loader-view {display: none;}</style>
  102.             </noscript>
  103.         </div>
  104.         {% block header %}
  105.          
  106.             {% include "@UVDeskSupportCenter/Templates/header.html.twig" %}
  107.         {% endblock %}
  108.         {% include "@UVDeskSupportCenter/Templates/breadcrumbs.html.twig" %}
  109.         {% block tabHeader %}
  110.         {% endblock %}
  111.         {% block wrapper %}
  112.             <div class="uv-body">
  113.                 <div class="uv-container">
  114.                     {% block body %}
  115.                         <div class="uv-cta-wrapper">
  116.                             <div class="uv-cta-lt">
  117.                                 <svg
  118.                                 xmlns="http://www.w3.org/2000/svg"
  119.                                 xmlns:xlink="http://www.w3.org/1999/xlink"
  120.                                 width="60px" height="60px">
  121.                                 <path fill-rule="evenodd"  fill="rgb(124, 116, 241)"
  122.                                 d="M57.000,12.000 L51.000,12.000 L50.984,38.993 L12.000,39.000 L12.000,45.000 C12.000,46.649 13.351,48.000 15.000,48.000 L48.000,48.000 L60.000,60.000 L60.000,15.000 C60.000,13.351 58.649,12.000 57.000,12.000 ZM45.000,30.000 L45.000,3.000 C45.000,1.351 43.649,0.000 42.000,0.000 L3.000,0.000 C1.351,0.000 -0.000,1.351 -0.000,3.000 L-0.000,45.000 L12.000,33.000 L42.000,33.000 C43.649,33.000 45.000,31.649 45.000,30.000 Z"/>
  123.                                 </svg>
  124.                             </div>
  125.                             <div class="uv-cta-rt">
  126.                                 <h2>{{"Unable to find an answer?"|trans}}</h2>
  127.                                 <p>{{"Looking for anything specific article which resides in general queries? Just browse the various relevant folders and categories and then you will find the desired article."|trans}}
  128.                                 </p>
  129.                                 {% if websiteConfiguration is defined and websiteConfiguration.ticketCreateOption is defined %}
  130.                                     <a href="{{ path('helpdesk_customer_create_ticket') }}" class="uv-btn uv-margin-top-15">{{'Contact Us'|trans}}</a>
  131.                                 {% endif %}
  132.                             </div>
  133.                         </div>
  134.                     </div>
  135.                 {% endblock %}
  136.             </div>
  137.         {% endblock %}
  138.         {% block footer %}
  139.             {% include "@UVDeskSupportCenter/Templates/footer.html.twig" %}
  140.             {% include "@UVDeskSupportCenter/Templates/pagination.html.twig" %}
  141.             <!-- Loader Template-->
  142.             <script type="text/template" id="loader-tmp">
  143.                 <div class="uv-loader">
  144.                     <span></span>
  145.                     <span></span>
  146.                     <span></span>
  147.                 </div>
  148.             </script>
  149.             <!-- Loader Template-->
  150.             <!-- Full View Loader Template-->
  151.             <script type="text/template" id="full-view-loader">
  152.                 <div class="uv-loader-view">
  153.                     <div class="uv-loader">
  154.                         <span></span>
  155.                         <span></span>
  156.                         <span></span>
  157.                     </div>
  158.                 </div>
  159.             </script>
  160.             <!-- //Full View Loader Template-->
  161.             <!-- Notification Template -->
  162.             <script type="text/template" id="notification-template">
  163.                 <div class="uv-notification <% if(alertClass == 'danger') { %>uv-error<% } else { %> <%= 'uv-' + alertClass %> <% } %>">
  164.                     <span class="uv-notification-close"></span>
  165.                     <p><%= alertMessage %> </p>
  166.                 </div>
  167.             </script>
  168.             <script type="text/javascript">
  169.                 var warningResponse = {
  170.                     'alertClass' : 'danger',
  171.                     'alertMessage' : '{{ "Error : Something went wrong, please try again later"|trans }}',
  172.                 };
  173.             if ("serviceWorker" in navigator) {
  174.                     navigator.serviceWorker
  175.                         .register("{{ asset('sw.js') }}")
  176.                         .then(serviceWorker => {
  177.                             console.log("Service Worker registered: ", serviceWorker);
  178.                         })
  179.                         .catch(error => {
  180.                             console.error("Error registering the Service Worker: ", error);
  181.                         });
  182.                 }
  183.          
  184.             </script>
  185.  <script type="text/javascript">
  186.                 let deferredPrompt; // Allows to show the install prompt
  187.                 var btnAdd = document.getElementById("install_button");
  188.                 window.addEventListener('beforeinstallprompt', function(event) {
  189.                     console.log('before');
  190.             // Prevent Chrome 67 and earlier from automatically showing the prompt
  191.                     e.preventDefault();
  192.                     // Stash the event so it can be triggered later.
  193.                     deferredPrompt = e;
  194.                 });
  195.                 // Installation must be done by a user gesture! Here, the button click
  196.                 btnAdd.addEventListener('click', (e) => {
  197.                     // hide our user interface that shows our A2HS button
  198.                     btnAdd.style.display = 'none';
  199.                     // Show the prompt
  200.                     deferredPrompt.prompt();
  201.                     // Wait for the user to respond to the prompt
  202.                     deferredPrompt.userChoice
  203.                         .then((choiceResult) => {
  204.                             if (choiceResult.outcome === 'accepted') {
  205.                                 console.log('User accepted the A2HS prompt');
  206.                             } else {
  207.                                 console.log('User dismissed the A2HS prompt');
  208.                             }
  209.                             deferredPrompt = null;
  210.                         });
  211.                 });
  212.             </script>
  213.             <script src="https://www.gstatic.com/firebasejs/7.16.1/firebase-app.js"></script>
  214.             <script src="https://www.gstatic.com/firebasejs/7.16.1/firebase-messaging.js"></script>
  215.             <!-- <script>
  216.             (function () {
  217.                 let js = document.createElement('script');
  218.                 js.type = 'text/javascript';
  219.                 js.async = 1;
  220.                 js.src = 'https://go.botmaker.com/rest/webchat/p/A8Y3236CWS/init.js';
  221.                 document.body.appendChild(js);
  222.             })();
  223.             </script> -->
  224.          <script>
  225.                 var config = {
  226.                     messagingSenderId: "700107588170",
  227.                     apiKey: "AIzaSyDP7S4mc83BPE2OE8nSq4oFQY-q5zceHTk",
  228.                     projectId: "sgsupportcenter",
  229.                     appId: "1:700107588170:web:788a956e13111c1d27dcb3"
  230.                 };
  231.                 firebase.initializeApp(config);
  232.                 const messaging = firebase.messaging();
  233.                 messaging
  234.                     .requestPermission()
  235.                     .then(function () {
  236.                         //MsgElem.innerHTML = "Notification permission granted."
  237.                         console.log("Notification permission granted.");
  238.                         // get the token in the form of promise
  239.                         return messaging.getToken()
  240.                     })
  241.                     .then(function(token) {
  242.                   fetch('https://iid.googleapis.com/iid/v1/' + token + '/rel/topics/all', {
  243.                             method: 'POST',
  244.                             headers: new Headers({
  245.                                 'Authorization': 'key=AAAAowGqAko:APA91bH7GR2vHQ6HXP99sSa6s5U7t5XnDYSn_81uoQC4LxuuFGcNVTy5YSbKCRFh0PLd47B22pCCTL_h-tfOyaVIQ6joEkz4cdSSe-xuFwIl1dRye5TS2qml82k_LovpEYYcTlSVusnx' 
  246.                             })
  247.                         }).then(response => {
  248.                             if (response.status < 200 || response.status >= 400) {
  249.                                 throw 'Error subscribing to topic: ' + response.status + ' - ' + response.text();
  250.                             }
  251.                             console.log('Subscribed to "' + topic + '"');
  252.                         }).catch(error => {
  253.                             console.error(error);
  254.                         })
  255.             
  256.                         // print the token on the HTML page
  257.                         //TokenElem.innerHTML = "Device token is : <br>" + token
  258.                     })
  259.                     .catch(function (err) {
  260.                       //  ErrElem.innerHTML = ErrElem.innerHTML + "; " + err
  261.                         console.log("Unable to get permission to notify.", err);
  262.                     });
  263.             </script>
  264.             <script>
  265.                 console.log(window.location.pathname.split( '/' ))
  266.                 if($("#uv-kb-info-broadcast p").text()){
  267.                     var apiKey = "AIzaSyBzVmrEVgd5Bb0r8bbgl3ZznsNuRGnO3RM"; // prod
  268.                     //var apiKey = "AIzaSyAenP2qCf3xrpbuLvzqzmsne0lJDewwP0w"; // test
  269.                     var url = "https://translation.googleapis.com/language/translate/v2?key="+apiKey+"";
  270.                     url += "&source=es";
  271.                     url += "&target="+window.location.pathname.split( '/' )[2];
  272.                     url += "&q=" + $("#uv-kb-info-broadcast p").text();
  273.                     $.get(url, function (data, status) {
  274.                         console.log(data)
  275.                         $("#uv-kb-info-broadcast").html('<p class="MsoNormal" style="box-sizing: border-box; font-family: tahoma, arial, verdana, sans-serif; font-size: 12px; margin-bottom: 0cm; text-align: justify; line-height: normal;">'+data.data.translations[0].translatedText+'</p>');
  276.                     });
  277.                 }
  278.             </script>
  279.             {% include('@UVDeskSupportCenter/Themes/cookiePolicy.html.twig') %}
  280.         {% endblock %}
  281.     </body>
  282. </html>