templates/base.html.twig line 1

Open in your IDE?
  1. {% apply spaceless %}
  2.     <!DOCTYPE html>
  3.     <html lang="de">
  4.     <head>
  5.         <meta charset="utf-8">
  6.         <title>{% if app.request.server.get('WEB_UMGEBUNG') != 'WEB' %}{{ app.request.server.get('WEB_UMGEBUNG') }}-{% endif %}{% block metaTitle %}handwerkXcampus{% endblock %}</title>
  7.         {% if app.request.server.get('WEB_UMGEBUNG') != 'WEB' %}
  8.             <meta name="robots" content="noindex">
  9.         {% endif %}
  10.         <!-- SEO Meta Tags-->
  11.         <meta name="description"
  12.               content="{% block metaDescription %}Der handwerkXcampus bietet einen einfachen Zugang zu Weiterbildung in der SHK Branche. Wir bieten eine große Auswahl an OnDemand-Kursen und Schulungen in Präsenz und Online, die direkt auf das Handwerk abgestimmt sind. So können sich Mitarbeiter aus dem Handwerk in den Bereichen Technik, Sicherheit und Gesetzgebung weiterbilden.{% endblock %}">
  13.         <meta name="keywords" content="Handwerk, Weiterbildung, Schulungen im Handwerk, SHK Weiterbildungen">
  14.         <!-- Viewport-->
  15.         <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
  16.         <!-- Favicon and Touch Icons-->
  17.         <link rel="shortcut icon" type="image/x-icon" href="{{ asset('favicons') }}/favicon.ico">
  18.         <link rel="icon" type="image/x-icon" href="{{ asset('favicons') }}/favicon.ico">
  19.         <link rel="icon" type="image/gif" href="{{ asset('favicons') }}/favicon.gif">
  20.         <link rel="icon" type="image/png" href="{{ asset('favicons') }}/favicon.png">
  21.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon.png">
  22.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-57x57.png" sizes="57x57">
  23.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-60x60.png" sizes="60x60">
  24.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-72x72.png" sizes="72x72">
  25.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-76x76.png" sizes="76x76">
  26.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-114x114.png" sizes="114x114">
  27.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-120x120.png" sizes="120x120">
  28.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-128x128.png" sizes="128x128">
  29.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-144x144.png" sizes="144x144">
  30.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-152x152.png" sizes="152x152">
  31.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-180x180.png" sizes="180x180">
  32.         <link rel="apple-touch-icon" href="{{ asset('favicons') }}/apple-touch-icon-precomposed.png">
  33.         <link rel="icon" type="image/png" href="{{ asset('favicons') }}/favicon-16x16.png" sizes="16x16">
  34.         <link rel="icon" type="image/png" href="{{ asset('favicons') }}/favicon-32x32.png" sizes="32x32">
  35.         <link rel="icon" type="image/png" href="{{ asset('favicons') }}/favicon-96x96.png" sizes="96x96">
  36.         <link rel="icon" type="image/png" href="{{ asset('favicons') }}/favicon-160x160.png" sizes="160x160">
  37.         <link rel="icon" type="image/png" href="{{ asset('favicons') }}/favicon-192x192.png" sizes="192x192">
  38.         <link rel="icon" type="image/png" href="{{ asset('favicons') }}/favicon-196x196.png" sizes="196x196">
  39.         <meta name="msapplication-TileImage" content="{{ asset('favicons') }}/win8-tile-144x144.png">
  40.         <meta name="msapplication-square70x70logo" content="{{ asset('favicons') }}/win8-tile-70x70.png">
  41.         <meta name="msapplication-square144x144logo" content="{{ asset('favicons') }}/win8-tile-144x144.png">
  42.         <meta name="msapplication-square150x150logo" content="{{ asset('favicons') }}/win8-tile-150x150.png">
  43.         <meta name="msapplication-wide310x150logo" content="{{ asset('favicons') }}/win8-tile-310x150.png">
  44.         <meta name="msapplication-square310x310logo" content="{{ asset('favicons') }}/win8-tile-310x310.png">
  45.         <link rel="manifest" href="{{ asset('css/site.webmanifest') }}">
  46.         <link rel="mask-icon" color="#fe6a6a" href="{{ asset('img/asafari-pinned-tab.svg') }}">
  47.         <meta name="msapplication-TileColor" content="#ffffff">
  48.         <meta name="theme-color" content="#ffffff">
  49.         <!-- Vendor Styles including: Font Icons, Plugins, etc.-->
  50.         <link rel="stylesheet" media="screen" href="{{ asset('vendor/simplebar/dist/simplebar.min.css') }}"/>
  51.         <link rel="stylesheet" media="screen" href="{{ asset('vendor/tiny-slider/dist/tiny-slider.css') }}"/>
  52.         <link rel="stylesheet" media="screen" href="{{ asset('vendor/lightgallery.js/dist/css/lightgallery.min.css') }}"/>
  53.         <link rel="stylesheet" type="text/css" href="{{ asset('assets/css/icons.min.css') }}"/>
  54.         <!-- Main Theme Styles + Bootstrap-->
  55.         <link rel="stylesheet" media="screen" href="{{ asset('css/theme.min.css') }}">
  56.         <!-- Quill css -->
  57.         <link href="{{ asset('hyper5/vendor/jquery-toast-plugin/jquery.toast.min.css') }}" rel="stylesheet" type="text/css"/>
  58.         <link href="{{ asset('hyper5/vendor/jstree/themes/default/style.min.css') }}" rel="stylesheet" type="text/css">
  59.         <link rel="stylesheet" media="screen" href="{{ asset('vendor/nouislider/dist/nouislider.min.css') }}"/>
  60.         <link rel="stylesheet" media="screen" href="{{ asset('vendor/drift-zoom/dist/drift-basic.min.css') }}"/>
  61.         <!-- Eigene CSS Datei -->
  62.         <link rel="stylesheet" media="screen" href="{{ asset('css/campus.css') }}?V=28"/>
  63.         {% if not app.session.get('appUser') and app.request.server.get('WEB_UMGEBUNG') != 'LOCAL' %}
  64.             {% if not is_granted('ROLE_MITGLIED') %}
  65.                 <script type="text/javascript" charset="UTF-8" src="//cdn.cookie-script.com/s/1a5771b0c569557353339494055e4e80.js"></script>
  66.                 <script type="text/javascript" charset="UTF-8" data-cookiescriptreport="report" src="//report.cookie-script.com/r/1a5771b0c569557353339494055e4e80.js"></script>
  67.                 {#
  68.                 <script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="b58eb13a-043c-4f6e-84fd-881aad6a11db" data-blockingmode="auto"
  69.                         type="text/javascript"></script>
  70.                 #}
  71.             {% endif %}
  72.         {% endif %}
  73.         {% if app.request.server.get('WEB_UMGEBUNG') == 'WEB' %}
  74.             <!-- Google tag (gtag.js) -->
  75.             <script async src="https://www.googletagmanager.com/gtag/js?id=G-JNWK6WEJRQ"></script>
  76.             <script>
  77.                 window.dataLayer = window.dataLayer || [];
  78.                 function gtag() {
  79.                     dataLayer.push(arguments);
  80.                 }
  81.                 gtag('js', new Date());
  82.                 gtag('config', 'G-JNWK6WEJRQ');
  83.             </script>
  84.         {% endif %}
  85.         {% include('/user/firma/_firmenfarben.html.twig') %}
  86.         <!-- bundle -->
  87.         <script src="{{ asset('assets/js/vendor.min.js') }}"></script>
  88.         <script src="{{ asset('amcharts4/core.js') }}"></script>
  89.         <script src="{{ asset('amcharts4/charts.js') }}"></script>
  90.         <script src="{{ asset('amcharts4/animated.js') }}"></script>
  91.         <script>
  92.             jQuery(function ($) {
  93.                 window.appNavMenuNachLinksWischen = function () {
  94.                     let erstePosX = 0
  95.                     let letztePosX = 0
  96.                     document.addEventListener('touchstart', e => {
  97.                         erstePosX = e.changedTouches[0].screenX
  98.                     })
  99.                     document.addEventListener('touchend', e => {
  100.                         let meineStrecke = erstePosX - e.changedTouches[0].screenX
  101.                         if ($('.offcanvasMenuNachLinksSchiessen').hasClass('show')) {
  102.                             if (meineStrecke > 100) {
  103.                                 $('.offcanvasMenuSchliessenButton').trigger('click');
  104.                                 setTimeout(function () {
  105.                                     $('.offcanvasMenuNachLinksSchiessen').css('left', 0);
  106.                                 }, 500)
  107.                             } else {
  108.                                 $('.offcanvasMenuNachLinksSchiessen').css('left', 0);
  109.                             }
  110.                         }
  111.                     })
  112.                     document.addEventListener('touchmove', e => {
  113.                         let movePos = e.changedTouches[0].screenX
  114.                         let meineStrecke = erstePosX - movePos
  115.                         if ($('.offcanvasMenuNachLinksSchiessen').hasClass('show')) {
  116.                             if (movePos > letztePosX) {
  117.                                 $('.offcanvasMenuNachLinksSchiessen').css('left', 0);
  118.                             }
  119.                             if (meineStrecke > 25) {
  120.                                 $('.offcanvasMenuNachLinksSchiessen').css('left', (meineStrecke - 24) * -1);
  121.                             }
  122.                             letztePosX = movePos;
  123.                         }
  124.                     })
  125.                 }
  126.                 window.appNavHauptmenuNachObenWischen = function () {
  127.                     let erstePosY = 0
  128.                     document.addEventListener('touchstart', e => {
  129.                         erstePosY = e.changedTouches[0].screenY
  130.                     })
  131.                     document.addEventListener('touchend', e => {
  132.                         let meineStrecke = erstePosY - e.changedTouches[0].screenY
  133.                         if ($('.mobil-hauptmenu').hasClass('show')) {
  134.                             if (meineStrecke > 50) {
  135.                                 $('.button-mobiles-menu').trigger('click');
  136.                             }
  137.                         }
  138.                     })
  139.                 }
  140.                 window.appNavHauptmenuNachObenWischen();
  141.             });
  142.         </script>
  143.     </head>
  144.     <body class="handheld-toolbar-enabled">
  145.     {% include('/user/firma/_firmenfarben.html.twig') %}
  146.     <main class="page-wrapper">
  147.         <!-- Navbar Marketplace-->
  148.         <!-- Remove "navbar-sticky" class to make navigation bar scrollable with the page.-->
  149.         <header class="bg-light shadow-sm navbar-sticky navbar-stuck">
  150.             <div class="navbar navbar-expand-lg navbar-light">
  151.                 <div class="container">
  152.                     <div id="hauptseite-zurueck-symbol" class="navbar-toolbar d-none hauptseite-zurueck-symbol">
  153.                         <a id="hauptseite-zurueck-link" class="navbar-tool me-2 hauptseite-zurueck-link" href="">
  154.                             <span class="navbar-tool-tooltip zindex-10">zurück</span>
  155.                             <div class="navbar-tool-icon-box bg-secondary"><i class="navbar-tool-icon mdi mdi-arrow-left-bold-outline fs-4"></i></div>
  156.                         </a>
  157.                     </div>
  158.                     <div id="hauptseite-campus-logo" class="hauptseite-campus-logo">
  159.                         <a class="navbar-brand d-none d-sm-block flex-shrink-0 order-lg-1 me-0" href="{{ path ('user_start') }}">
  160.                             <img src="{{ asset('img/campus/logo/Logo.png') }}" width="120" alt="Campus">
  161.                         </a>
  162.                         <a class="navbar-brand d-sm-none me-0 me-md-2 order-lg-1 p-0" href="{{ path ('user_start') }}">
  163.                             <img src="{{ asset('img/campus/logo/Logo_klein.png') }}" width="48" alt="Campus">
  164.                             {#
  165.                             <img src="{{ asset('img/campus/logo/Logo.png') }}" width="90" alt="Campus">
  166.                             #}
  167.                         </a>
  168.                     </div>
  169.                     {% include('/nav/user_navigation_rechts.html.twig') %}
  170.                     {% include('/nav/user_navigation_links.html.twig') %}
  171.                 </div>
  172.             </div>
  173.             <div class="search-box collapse" id="searchBox">
  174.                 <div class="card pt-2 pb-4 border-0 rounded-0">
  175.                     <div class="container">
  176.                         <div class="input-group"><i class="ci-search position-absolute top-50 start-0 translate-middle-y text-muted fs-base ms-3"></i>
  177.                             {% include('/nav/user_navigation_suche.html.twig') %}
  178.                         </div>
  179.                     </div>
  180.                 </div>
  181.             </div>
  182.         </header>
  183.         {% if app.request.server.get('WEB_UMGEBUNG') != 'WEB' %}
  184.             {% if app.user.provisorischerMitarbeiter is not defined or app.user.provisorischerMitarbeiter == 0 %}
  185.                 <div class="text-center bg-warning text-white fw-bolder">
  186.                     <h3 class="fw-bolder"> {{ app.request.server.get('WEB_UMGEBUNG') }} - Version</h3>
  187.                 </div>
  188.             {% else %}
  189.                 <div class="text-center bg-danger fw-bolder p-1">
  190.                     <h3 class="fw-bolder text-white p-0 m-0">Inaktiver Account <small>(provisorischer Mitarbeiter)</small></h3>
  191.                 </div>
  192.             {% endif %}
  193.         {% else %}
  194.         {% endif %}
  195.         {% if is_granted("IS_IMPERSONATOR") %}
  196.             {% if app.user.userProfil.celseoSupportFreigabe != null %}
  197.                 <div class="text-center bg-success text-white fw-bolder">
  198.                     <h5 class="pt-1 mb-0 text-white fw-bolder">Support Freigabe seit {{ app.user.userProfil.celseoSupportFreigabe|date('H:i:s') }}</h5>
  199.                 </div>
  200.             {% else %}
  201.                 <div class="text-center bg-danger text-white fw-bolder">
  202.                     <h5 class="pt-1 mb-0 text-white fw-bolder">Keine Supportfreigabe</h5>
  203.                 </div>
  204.             {% endif %}
  205.         {% endif %}
  206.         {% if app.request.server.get('MAINTENANCE_HINWEIS') != '0' %}
  207.             {% include('/meldungen.html.twig') %}
  208.         {% endif %}
  209.         {% block body %}
  210.         {% endblock %}
  211.     </main>
  212.     {% if not app.session.get('appUser') %}
  213.         <div class="{% if is_granted("ROLE_CELSEO_MASTERADMIN") %}d-none d-md-block{% endif %}">
  214.             <div class="mt-5">&nbsp;</div>
  215.             <!-- Footer-->
  216.             <footer class="footer pt-4 hintergrundfarbe schriftfarbe">
  217.                 <div class="container pt-2 pb-0">
  218.                     <div class="row">
  219.                         <div class="col-md-5 text-center text-md-start mb-4">
  220.                             <div class="text-nowrap mb-3">
  221.                                 <a class="d-inline-block align-middle mt-n2 me-2" href="#"><img class="d-block" src="{{ asset('img/campus/logo/Logo_weiss.png') }}" width="117"
  222.                                                                                                 alt="Cartzilla"></a>
  223.                             </div>
  224.                             <p class="fs-sm text-white opacity-70 pb-1">Finde dein Weiterbildungsangebot!<br>Mach dich fit für die Zukunft.</p>
  225.                             {#
  226.                             <h6 class="d-inline-block pe-3 me-3 border-end border-light">
  227.                             <span class="text-white fw-bolder h4">78 </span><span class="fw-normal text-white">Seminare</span>
  228.                             </h6>
  229.                             <h6 class="d-inline-block me-3">
  230.                             <span class="text-white fw-bolder h4">128 </span><span class="fw-normal text-white">Praxisvideos</span>
  231.                             </h6>
  232.                             <div class="widget mt-4 text-md-nowrap text-center text-md-start">
  233.                                 <a class="btn-social bs-light bs-facebook me-2 mb-2" href="#"><i class="ci-facebook"></i></a>
  234.                                 <a class="btn-social bs-light bs-dribbble me-2 mb-2" href="#"><i class="ci-instagram"></i></a>
  235.                                 <a class="btn-social bs-light bs-behance me-2 mb-2" href="#"><i class="ci-youtube"></i></a>
  236.                                 <a class="btn-social bs-light bs-pinterest me-2 mb-2" href="#"><i class="ci-phone"></i></a>
  237.                             </div>
  238.                             #}
  239.                         </div>
  240.                         <!-- Mobile dropdown menu (visible on screens below md)-->
  241.                         <div class="col-12 d-md-none text-center mb-4 pb-2">
  242.                             <div class="btn-group dropdown d-block mx-auto mb-3">
  243.                                 <button class="btn btn-outline-light border-light dropdown-toggle" type="button" data-bs-toggle="dropdown">Kategorien</button>
  244.                                 <ul class="dropdown-menu my-1">
  245.                                     {#<li><a class="dropdown-item" href="{{ path ('user_konfigurator_auswahl') }}">Stärkenkompas</a></li>#}
  246.                                     <li><a class="dropdown-item seminarlink-navigationsleiste" href="#">Seminare</a></li>
  247.                                     <li><a class="dropdown-item" href="{{ path ('user_lieferanten') }}">Lieferanten</a></li>
  248.                                 </ul>
  249.                             </div>
  250.                             <div class="btn-group dropdown d-block mx-auto mb-10">
  251.                                 <button class="btn btn-outline-light border-light dropdown-toggle" type="button" data-bs-toggle="dropdown">Rechtliches</button>
  252.                                 <ul class="dropdown-menu my-1">
  253.                                     <li><a class="dropdown-item" href="#">Datenschutz</a></li>
  254.                                     <li><a class="dropdown-item" href="#">Impressum</a></li>
  255.                                     <li><a class="dropdown-item" href="#">AGB´s</a></li>
  256.                                 </ul>
  257.                             </div>
  258.                         </div>
  259.                         <!-- Desktop menu (visible on screens above md)-->
  260.                         <div class="col-md-3 d-none d-md-block text-center text-md-start mb-4">
  261.                             <div class="widget widget-links widget-light pb-2">
  262.                                 <h3 class="widget-title text-light">Kategorien</h3>
  263.                                 <ul class="widget-list">
  264.                                     {#<li class="widget-list-item"><a class="widget-list-link" href="{{ path ('user_konfigurator_auswahl') }}">Stärkenkompass</a></li>#}
  265.                                     <li class="widget-list-item"><a class="widget-list-link seminarlink-navigationsleiste" href="#">Seminare</a></li>
  266.                                     {% if is_granted('ROLE_FIRMA') %}
  267.                                         <li class="widget-list-item"><a class="widget-list-link" href="{{ path ('user_lieferanten') }}">Lieferanten</a></li>
  268.                                     {% endif %}
  269.                                 </ul>
  270.                             </div>
  271.                         </div>
  272.                         <div class="col-md-4 d-none d-md-block text-center text-md-start mb-4">
  273.                             <div class="widget widget-links widget-light pb-2">
  274.                                 <h3 class="widget-title text-light">Rechtliches</h3>
  275.                                 <ul class="widget-list">
  276.                                     <li class="widget-list-item"><a class="widget-list-link" href="{{ path('datenschutz') }}">Datenschutz</a></li>
  277.                                     <li class="widget-list-item"><a class="widget-list-link" href="{{ path('impressum') }}">Impressum</a></li>
  278.                                     <li class="widget-list-item"><a class="widget-list-link" href="{{ path('agb') }}">AGB´s</a></li>
  279.                                     {# <li class="widget-list-item"><a class="widget-list-link" href="{{ path('teilnahmebedingungen') }}">Teilnahmebedingungen</a></li> #}
  280.                                 </ul>
  281.                             </div>
  282.                         </div>
  283.                     </div>
  284.                 </div>
  285.             </footer>
  286.         </div>
  287.     {% else %}
  288.         <div class="mb-5">&nbsp;</div>
  289.     {% endif %}
  290.     <div class="loading-screen d-none">
  291.     <span>
  292.         <i class="mdi mdi-spin mdi-loading"></i>
  293.     </span>
  294.     </div>
  295.     <div class="handheld-toolbar d-lg-none">
  296.         <div class="d-table table-layout-fixed w-100 pb-4">
  297.             <a id="zurueck-mobil-ansicht"
  298.                class="d-table-cell handheld-toolbar-item hauptseite-zurueck-symbol hauptseite-zurueck-link border-0 d-none" href="">
  299.                 <span class="handheld-toolbar-icon"><i class="mdi mdi-arrow-left-bold-outline fs-5 p-0"></i></span>
  300.             </a>
  301.             <a id="home-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0" href="{{ path ('user_start') }}">
  302.                 <span class="handheld-toolbar-icon"><i class="ci-home"></i></span>
  303.             </a>
  304.             <a id="dashboard-mobil-ansicht"
  305.                class="d-table-cell handheld-toolbar-item border-0 d-none" href="{{ path ('user_firma',{id:0, seite:'info'}) }}">
  306.                 <span class="handheld-toolbar-icon"><i class="mdi mdi-view-dashboard-outline fs-5 p-0"></i></span>
  307.             </a>
  308. {#
  309.             <a id="staerkenkompass-mobil-ansicht"
  310.                class="d-table-cell handheld-toolbar-item staerkenkompass-zurueck-symbol border-0 d-none" href="{{ path ('user_konfigurator_auswahl') }}">
  311.                 <span class="handheld-toolbar-icon"><i class="mdi mdi-compass-outline fs-5 p-0"></i></span>
  312.             </a>
  313.             #}
  314.             <a id="staerkenkompass-mobil-ansicht"
  315.                class="d-table-cell handheld-toolbar-item staerkenkompass-zurueck-symbol border-0 d-none seminarlink-navigationsleiste" href="#">
  316.                 <span class="handheld-toolbar-icon"><i class="mdi mdi-card-search-outline fs-5 p-0"></i></span>
  317.             </a>
  318.             <a id="seminarfilter-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0 hintergrundfarbe d-none" href="#"
  319.                data-bs-toggle="offcanvas" data-bs-target="#seminarfilter-sidebar">
  320.                 <span class="handheld-toolbar-icon"><i class="ci-filter-alt schriftfarbe"></i></span>
  321.             </a>
  322.             <a id="interne-schulungen-schulungsinhalt-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0 hintergrundfarbe d-none" href="#"
  323.                data-bs-toggle="offcanvas" data-bs-target="#interne-schulungen-schulungsinhalt-sidebar">
  324.                 <span class="handheld-toolbar-icon"><i class="ci-view-list schriftfarbe fs-5 p-0"></i></span>
  325.             </a>
  326.             <a id="chat-mobil-ansicht"
  327.                class="d-table-cell handheld-toolbar-item staerkenkompass-zurueck-symbol border-0 d-none" href="{{ path ('user_firma',{id:0, seite:'chat-alle'}) }}">
  328.                 <span class="handheld-toolbar-icon"><i class="uil-comment fs-5 p-0"></i></span>
  329.             </a>
  330.             <a id="favoriten-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0 favoriten-handy-navigation-link d-none"
  331.                href="{% if is_granted('ROLE_MITGLIED') %}{{ path ('user_profil_mein_profil_info', {seite:'favoriten'}) }}{% else %}{{ path ('user_gast_favoriten') }}{% endif %}">
  332.                 <span class="handheld-toolbar-icon"><i class="ci-heart"></i></span>
  333.             </a>
  334.             <a id="firmeninfo-menu-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0 hintergrundfarbe d-none" href="#"
  335.                data-bs-toggle="offcanvas" data-bs-target="#firmeninfo-menu-sidebar">
  336.                 <span class="handheld-toolbar-icon"><i class="ci-view-list schriftfarbe"></i></span>
  337.             </a>
  338.             <a id="interne-schulungen-menu-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0 hintergrundfarbe d-none" href="#"
  339.                data-bs-toggle="offcanvas" data-bs-target="#interne-schulungen-menu-sidebar">
  340.                 <span class="handheld-toolbar-icon"><i class="ci-view-list schriftfarbe"></i></span>
  341.             </a>
  342.             <a id="lieferanten-videos-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0 hintergrundfarbe d-none" href="#"
  343.                data-bs-toggle="offcanvas" data-bs-target="#lieferanten-videos-menu-sidebar">
  344.                 <span class="handheld-toolbar-icon"><i class="ci-view-list schriftfarbe"></i></span>
  345.             </a>
  346.             <a id="aufDerBaustelle-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0 hintergrundfarbe d-none" href="#"
  347.                data-bs-toggle="offcanvas" data-bs-target="#aufDerBaustelle-menu-sidebar">
  348.                 <span class="handheld-toolbar-icon"><i class="mdi mdi-google-maps schriftfarbe fs-5 p-0"></i></span>
  349.             </a>
  350.             <a id="account-menu-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0 hintergrundfarbe d-none" href="#"
  351.                data-bs-toggle="offcanvas" data-bs-target="#account-menu-sidebar">
  352.                 <span class="handheld-toolbar-icon"><i class="ci-view-list schriftfarbe"></i></span>
  353.             </a>
  354.             {#
  355.             <a id="navigation-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0" href="javascript:void(0)" data-bs-toggle="collapse" data-bs-target="#navbarCollapse"
  356.                onclick="window.scrollTo(0, 0)">
  357.                 <span class="handheld-toolbar-icon"><i class="ci-menu"></i></span>
  358.             </a>
  359.             #}
  360.             <a id="warenkorb-mobil-ansicht" class="d-table-cell handheld-toolbar-item border-0 warenkorb-handy-navigation-link d-none"
  361.                href="{{ path ('user_profil_mein_profil_info', {seite:'warenkorb'}) }}">
  362.                 <span class="handheld-toolbar-icon"><i class="ci-cart"></i>
  363.                     <span id="warenkorb-handy-navigation-anzahl"
  364.                           class="badge bg-primary rounded-pill ms-1"
  365.                           style="visibility: hidden">0
  366.                     </span>
  367.                 </span>
  368.             </a>
  369.             <a id="faq-mobil-ansicht" class="d-table-cell handheld-toolbar-item hintergrundfarbe d-none" href="#" data-bs-toggle="offcanvas" data-bs-target="#help-sidebar">
  370.                 <span class="handheld-toolbar-icon"><i class="mdi mdi-help-circle-outline schriftfarbe"></i></span>
  371.             </a>
  372.         </div>
  373.     </div>
  374.     <!-- Back To Top Button--><a class="btn-scroll-top" href="#top" data-scroll><span class="btn-scroll-top-tooltip text-muted fs-sm me-2">Top</span><i
  375.                 class="btn-scroll-top-icon ci-arrow-up"> </i></a>
  376.     <!-- Vendor scrits: js libraries and plugins-->
  377.     {# <script src="{{ asset('vendor/bootstrap/dist/js/bootstrap.bundle.min.js') }}"></script> #}
  378.     <script src="{{ asset('vendor/simplebar/dist/simplebar.min.js') }}"></script>
  379.     <script src="{{ asset('vendor/tiny-slider/dist/min/tiny-slider.js') }}"></script>
  380.     <script src="{{ asset('vendor/smooth-scroll/dist/smooth-scroll.polyfills.min.js') }}"></script>
  381.     <script src="{{ asset('vendor/nouislider/dist/nouislider.min.js') }}"></script>
  382.     <script src="{{ asset('vendor/drift-zoom/dist/Drift.min.js') }}"></script>
  383.     <!-- Main theme script-->
  384.     <script src="{{ asset('js/theme.min.js') }}?V=2"></script>
  385.     <!-- plugin js -->
  386.     <script src="{{ asset('assets/js/vendor/dropzone.min.js') }}"></script>
  387.     <!-- init js -->
  388.     <script src="{{ asset('assets/js/ui/component.fileupload.js') }}"></script>
  389.     <!-- eigene js -->
  390.     <script src="{{ asset('js/campus.js') }}?V=7"></script>
  391.     <script src="{{ asset('hyper5/vendor/jstree/jstree.min.js') }}"></script>
  392.     <script src="{{ asset('hyper5/vendor/jquery-toast-plugin/jquery.toast.min.js') }}"></script>
  393.     <script src="{{ asset('hyper5/js/pages/demo.toastr.js') }}"></script>
  394.     <script>
  395.         var tooltipList;
  396.         var tooltipTriggerList;
  397.         if ($('#seminarfilter-aktivieren').length != 0) {
  398.             $('#seminarfilter-mobil-ansicht').removeClass('d-none')
  399.         }
  400.         if ($('#interne-schulungen-aktivieren').length != 0) {
  401.             $('#interne-schulungen-menu-mobil-ansicht').removeClass('d-none')
  402.         }
  403.         if ($('#interne-schulungen-schulungsinhalt-aktivieren').length != 0) {
  404.             $('#interne-schulungen-schulungsinhalt-mobil-ansicht').removeClass('d-none')
  405.         }
  406.         if ($('#lieferanten-videos-aktivieren').length != 0) {
  407.             $('#lieferanten-videos-mobil-ansicht').removeClass('d-none')
  408.         }
  409.         if ($('#firmeninfo-menu-aktivieren').length != 0) {
  410.             $('#firmeninfo-menu-mobil-ansicht').removeClass('d-none')
  411.         }
  412.         if ($('#account-menu-aktivieren').length != 0) {
  413.             $('#account-menu-mobil-ansicht').removeClass('d-none')
  414.         }
  415.         if ($('#faq-mobil-aktivieren').length != 0) {
  416.             $('#faq-mobil-ansicht').removeClass('d-none')
  417.         }
  418.         function loadTooltips() {
  419.             if (typeof tooltipList === 'object') {
  420.                 tooltipTriggerList.map(function (tooltipTriggerEl) {
  421.                     bootstrap.Tooltip.getInstance(tooltipTriggerEl).dispose();
  422.                 });
  423.             }
  424.             tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
  425.             tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
  426.                 return new bootstrap.Tooltip(tooltipTriggerEl)
  427.             });
  428.         }
  429.         jQuery(function ($) {
  430.             $(document).on('change', '#switch-user-celseo-support', function (event) {
  431.                 let confirmNachricht;
  432.                 let confirmBestaetigen;
  433.                 let celseoSupportAktiv = 0;
  434.                 $('.switch-user-celseo-support:checked').each(function (index, checkboxAktiv) {
  435.                     celseoSupportAktiv = $(checkboxAktiv).attr('data-aktiv');
  436.                 });
  437.                 celseoSupportAktiv = parseInt(celseoSupportAktiv);
  438.                 if (celseoSupportAktiv === 1) {
  439.                     $('.switch-user-celseo-support').prop('checked', false)
  440.                     confirmNachricht = 'Möchtest du zulassen, dass der Support zur Problemlösung Zugriff auf dein Campus-Profil bekommt?<br>Die Freigabe wird automatisch um Mitternacht deaktiviert, wenn sie nicht vorzeitig von dir beendet wird.'
  441.                     confirmBestaetigen = 'Profil freigeben'
  442.                 } else {
  443.                     $('.switch-user-celseo-support').prop('checked', true)
  444.                     confirmNachricht = 'Zugriff für den Support deaktivieren?'
  445.                     confirmBestaetigen = 'Freigabe deaktivieren'
  446.                 }
  447.                 $('.offcanvasMenuSchliessenButton').trigger('click');
  448.                 window.confirmModal('Support-Freigabe', '', confirmNachricht, confirmBestaetigen, function () {
  449.                     $.ajax({
  450.                         'url': '{{ path('celseo_support_freigabe') }}',
  451.                         'method': 'post',
  452.                         'data': {
  453.                             'celseoSupportAktiv': celseoSupportAktiv,
  454.                         },
  455.                         'success': function (response) {
  456.                             if (celseoSupportAktiv === 1) {
  457.                                 $('.switch-user-celseo-support').prop('checked', true)
  458.                                 $('#freigabe-celseo-support-symbol').css("visibility", "visible")
  459.                             } else {
  460.                                 $('.switch-user-celseo-support').prop('checked', false)
  461.                                 $('#freigabe-celseo-support-symbol').css("visibility", "hidden")
  462.                             }
  463.                         },
  464.                         'error': function (response) {
  465.                             console.log('Fehler bei Ajax-Link' + response)
  466.                         }
  467.                     });
  468.                 });
  469.             });
  470.             $('.dropdown-click').on('click', function () {
  471.                 $('.dropdown-menu', $(this)).toggleClass('show');
  472.             });
  473.             $.ajax({
  474.                 'url': '{{ path('user_start_navbar_seminare') }}',
  475.                 'method': 'GET',
  476.                 'success': function (response) {
  477.                     $('#user-navbar-link-seminare').html(response);
  478.                 },
  479.                 'error': function (response) {
  480.                     console.log('Fehler beim Seminar Laden', response);
  481.                 }
  482.             });
  483.             $(document).on('change', '.input-suchbegriff', function (event) {
  484.                 event.preventDefault();
  485.                 let jsonData = {};
  486.                 jsonData.schulungsart = [];
  487.                 jsonData.branche = [];
  488.                 jsonData.kategorie = [];
  489.                 jsonData.themengebiet = [];
  490.                 jsonData.zielgruppe = [];
  491.                 jsonData.anbieter = [];
  492.                 jsonData.suchbegriff = $(this).val();
  493.                 window.location.href = '/user/start/seminarfilter?filter=' + encodeURIComponent(JSON.stringify(jsonData));
  494.             });
  495.             $(document).on('click', '.nav-link-suchfilter-seminare', function (event) {
  496.                 event.preventDefault();
  497.                 let linkArt = $(this).attr('data-seminare-link-art')
  498.                 let linkid = $(this).attr('data-seminare-link-id')
  499.                 let jsonData = {};
  500.                 jsonData.schulungsart = [];
  501.                 jsonData.branche = [];
  502.                 jsonData.kategorie = [];
  503.                 jsonData.themengebiet = [];
  504.                 jsonData.zielgruppe = [];
  505.                 jsonData.anbieter = [];
  506.                 jsonData.suchbegriff = '';
  507.                 if ($('.input-suchbegriff').length > 0) {
  508.                     jsonData.suchbegriff = $('.input-suchbegriff').val();
  509.                 }
  510.                 if (linkArt === 'schulungsart') {
  511.                     jsonData.schulungsart.push(linkid);
  512.                 }
  513.                 if (linkArt === 'kategorie') {
  514.                     let linkid2 = $(this).attr('data-seminare-link-id2')
  515.                     jsonData.branche.push(linkid2);
  516.                     jsonData.kategorie.push(linkid);
  517.                 }
  518.                 if (linkArt === 'themengebiet') {
  519.                     jsonData.themengebiet.push(linkid);
  520.                 }
  521.                 if (linkArt === 'zielgruppe') {
  522.                     jsonData.zielgruppe.push(linkid);
  523.                 }
  524.                 if (linkArt === 'anbieter') {
  525.                     jsonData.anbieter.push(linkid);
  526.                 }
  527.                 window.location.href = '/user/start/seminarfilter?filter=' + encodeURIComponent(JSON.stringify(jsonData));
  528.             });
  529.             $(document).on('click', '.seminarlink-navigationsleiste', function (event) {
  530.                 event.preventDefault();
  531.                 let jsonData = {};
  532.                 jsonData.schulungsart = [];
  533.                 jsonData.branche = [];
  534.                 jsonData.kategorie = [];
  535.                 jsonData.themengebiet = [];
  536.                 jsonData.zielgruppe = [];
  537.                 jsonData.anbieter = [];
  538.                 jsonData.suchbegriff = '';
  539.                 window.location.href = '/user/start/seminarfilter?filter=' + encodeURIComponent(JSON.stringify(jsonData));
  540.             });
  541.             window.toastSpeichern = function (text, farbe, zeit, position = 'mid-center') {
  542.                 $.toast({
  543.                     text: text, // Text in der Benachrichtigung
  544.                     heading: '', // Optionale Überschrift
  545.                     icon: farbe, // Durch ändern des Icons wird die Hintergrundfarbe etc geregelt, info, error, warning, success
  546.                     showHideTransition: 'fade', // fade, slide oder plain
  547.                     allowToastClose: false, // Darf der Toast geschlossen werden? true - false
  548.                     hideAfter: zeit, // 1 Sekunde = 1000
  549.                     stack: 1, // Anzahl wie viele Toast übereinander gelegt werden können
  550.                     position: position, // bottom-left, bottom-right, bottom-center, top-left, top-right, top-center, mid-center
  551.                     loader: false,  // Balken anzeigen true - false
  552.                     loaderBg: '#9EC600',  // Farbe des Balken
  553.                     beforeShow: function () {
  554.                     }, // will be triggered before the toast is shown
  555.                     afterShown: function () {
  556.                     }, // will be triggered after the toat has been shown
  557.                     beforeHide: function () {
  558.                     }, // will be triggered before the toast gets hidden
  559.                     afterHidden: function () {
  560.                     }  // will be triggered after the toast has been hidden
  561.                 });
  562.             }
  563.             let userJaNein = false;
  564.             {% if is_granted('ROLE_MITGLIED') %}
  565.             userJaNein = true;
  566.             {% endif %}
  567.             /* if (userJaNein || Cookiebot.consent.marketing) {
  568.                  $.ajax({
  569.                      'url': '{{ path('campus_online_statistik') }}',
  570.                     'method': 'GET',
  571.                     'success': function (response) {
  572.                     },
  573.                     'error': function (response) {
  574.                     }
  575.                 });
  576.             }*/
  577.         });
  578.     </script>
  579.     {% if is_granted('ROLE_MITGLIED') %}
  580.         <script>
  581.             jQuery(function ($) {
  582.                 window.chatConnection = null;
  583.                 window.refreshUserNotification = null;
  584.                 window.websocketConnected = false;
  585.                 function connectWebocket() {
  586.                     window.chatConnection = new WebSocket('{{ app.request.server.get('WEBSOCKET_ROUTE') }}');
  587.                     window.chatConnection.onopen = function (e) {
  588.                         console.log("Connection established!");
  589.                         window.websocketConnected = true;
  590.                         /*let $chatSimplebar = $('.simplebar-content-wrapper', $('#chat-frame-wrapper'));
  591.                         $chatSimplebar[0].scrollTop = $chatSimplebar[0].scrollHeight;*/
  592.                     };
  593.                     window.chatConnection.onmessage = function (e) {
  594.                         let messageData = JSON.parse(e.data);
  595.                         let now = new Date();
  596.                         let showMessage;
  597.                         if (messageData.type === 'single') {
  598.                             showMessage = parseInt($('#chat-frame-wrapper').attr('data-chat-userid')) === parseInt(messageData.sender);
  599.                         } else {
  600.                             showMessage = parseInt($('#chat-frame-wrapper').attr('data-chat-userid')) === parseInt(messageData.empfaenger);
  601.                         }
  602.                         if (showMessage) {
  603.                             const chatField = document.querySelector('#chatcontent');
  604.                             const newElement = document.createElement("li");
  605.                             /* let bildHTML = '';
  606.                              if(messageData['bild'].length > 0) {
  607.                                  if(messageData['projektgruppe'] !== -1) {
  608.                                      bildHTML = `<img src="/user/firma/gruppenchat/upload_datei/ansehen/${messageData['bild']}" class="img-fluid chat-image mt-2 mb-2" onload="window.scrollChatDown()">`;
  609.                                  } else {
  610.                                      bildHTML = `<img src="/user/firma/chat/upload_datei/ansehen/${messageData['chatId']}" class="img-fluid chat-image mt-2 mb-2" onload="window.scrollChatDown()">`;
  611.                                  }
  612.                              }
  613.                              let strNachricht = `<li class="clearfix chat-li" data-chat-id="${messageData.chatId}">
  614.                                              <div class="chat-avatar">
  615.                                                  <img src="${messageData.senderProfilbild}" class="rounded-circle" alt="Profilbild">
  616.                                                  <i>${addZero(now.getHours())}:${addZero(now.getMinutes())}</i>
  617.                                              </div>
  618.                                              <div class="conversation-text">
  619.                                                  <div class="ctext-wrap">
  620.                                                      <i>${messageData.senderName}</i>
  621.                                                      ${bildHTML}
  622.                                                      <p>${messageData.message}</p>
  623.                                                  </div>
  624.                                              </div>
  625.                                          </li>`;*/
  626.                             $.ajax({
  627.                                 'url': '{{ path('user_firma_chat_nachricht_lesen') }}',
  628.                                 'method': 'post',
  629.                                 'data': {
  630.                                     'chatId': messageData['chatId']
  631.                                 },
  632.                                 'success': function (response) {
  633.                                     let strNachricht = response;
  634.                                     setTimeout(() => {
  635.                                         let lastChatID = $('.chat-li').last().attr('data-chat-id') ?? 0;
  636.                                         if (parseInt(lastChatID) !== messageData['chatId']) {
  637.                                             newElement.innerHTML = strNachricht;
  638.                                             chatField.appendChild(newElement);
  639.                                             let $chatSimplebar = $('.simplebar-content-wrapper', $('#chat-frame-wrapper'));
  640.                                             $chatSimplebar[0].scrollTop = $chatSimplebar[0].scrollHeight;
  641.                                         }
  642.                                         if ($('#user-chat-geöffnet').length != 0) {
  643.                                             $.ajax({
  644.                                                 'url': '/notification/chat/loeschen',
  645.                                                 'method': 'post',
  646.                                                 'data': {
  647.                                                     ['sender']: messageData.sender,
  648.                                                     ['empfaenger']: messageData.empfaenger,
  649.                                                     ['gruppenID']: messageData.gruppenID,
  650.                                                 },
  651.                                                 'success': function (response) {
  652.                                                     console.log('Chat Notification gelöscht' + response)
  653.                                                 },
  654.                                                 'error': function (response) {
  655.                                                     console.log('Fehler beim Chat Notification löschen' + response)
  656.                                                 }
  657.                                             });
  658.                                         } else {
  659.                                             window.refreshUserNotification();
  660.                                         }
  661.                                     }, messageData['bild'].length > 0 > 0 ? 3000 : 0);
  662.                                 },
  663.                                 'error': function (response) {
  664.                                     console.log('Fehler beim Chat Nachricht lesen' + response)
  665.                                 }
  666.                             });
  667.                         } else {
  668.                             window.refreshUserNotification();
  669.                         }
  670.                     };
  671.                     window.chatConnection.onclose = function (e) {
  672.                         console.log('Socket is closed. Reconnect will be attempted in 5 second.', e.reason);
  673.                         window.websocketConnected = false;
  674.                         setTimeout(function () {
  675.                             connectWebocket();
  676.                         }, 5000);
  677.                     };
  678.                 }
  679.                 let letzteUrl = '';
  680.                 window.refreshUserNotification = function () {
  681.                     let neueUrl = window.location.href;
  682.                     let urlSenden = '';
  683.                     if (neueUrl !== letzteUrl) {
  684.                         urlSenden = neueUrl
  685.                         letzteUrl = neueUrl
  686.                     }
  687.                     $.ajax({
  688.                         'url': '{{ path('user_start_navbar_warenkorb') }}',
  689.                         'method': 'GET',
  690.                         'success': function (response) {
  691.                             $('#user-navigation-warenkorb').html(response);
  692.                         },
  693.                         'error': function (response) {
  694.                             console.log('Fehler beim Warenkorb Laden', response);
  695.                         }
  696.                     });
  697.                     $.ajax({
  698.                         'url': '{{ path('notification_message_user') }}',
  699.                         'method': 'post',
  700.                         'data': {
  701.                             'url': urlSenden,
  702.                         },
  703.                         'success': function (response) {
  704.                             $('#user-navigation-notification').html(response);
  705.                         },
  706.                         'error': function (response) {
  707.                             console.log('Fehler beim Message Laden', response);
  708.                         }
  709.                     });
  710.                 }
  711.                 $(document).on('click', '.user-mobile-navi a', function (event) {
  712.                     if ($(window).width() < 992 && !$(this).hasClass('accordion-button')) {
  713.                         $(this).closest('.user-mobile-navi').removeClass('show');
  714.                     }
  715.                 });
  716.                 try {
  717.                     connectWebocket();
  718.                 } catch (e) {
  719.                     console.error(e);
  720.                 }
  721.                 setInterval(refreshUserNotification, 60000);
  722.                 window.refreshUserNotification();
  723.                 function addZero(i) {
  724.                     if (i < 10) {
  725.                         i = "0" + i
  726.                     }
  727.                     return i;
  728.                 }
  729.                 $(document).on('click', '.link-warenkorb-loeschen', function (event) {
  730.                     event.preventDefault();
  731.                     let href = $(this).attr('href');
  732.                     $.ajax({
  733.                         'url': href,
  734.                         'method': 'get',
  735.                         'success': function (response) {
  736.                             window.refreshUserNotification();
  737.                         },
  738.                         'error': function (response) {
  739.                             console.log('Fehler bei Ajax-Link' + response)
  740.                         }
  741.                     });
  742.                 });
  743.                 window.scrollChatDown = function () {
  744.                     let $chatSimplebar = $('.simplebar-content-wrapper', $('#chat-frame-wrapper'));
  745.                     $chatSimplebar[0].scrollTop = $chatSimplebar[0].scrollHeight;
  746.                 }
  747.                 {% if app.user.firmenProfil != null and app.request.server.get('WEB_UMGEBUNG') != 'WEB' %}
  748.                 $.ajax({
  749.                     'url': '{{ path('user_start_navbar_intranet_verbindungen') }}',
  750.                     'method': 'get',
  751.                     'success': function (response) {
  752.                         $('#admin-celseo-intranet-zugang').html(response);
  753.                     },
  754.                     'error': function (response) {
  755.                         console.log('Fehler bei Ajax-Link' + response)
  756.                     }
  757.                 });
  758.                 $(document).on('click', '.btn-celseo-intranet-login', function (event) {
  759.                     event.preventDefault();
  760.                     let href = $(this).attr('href');
  761.                     $.ajax({
  762.                         'url': href,
  763.                         'method': 'post',
  764.                         'success': function (response) {
  765.                             if (!response['error']) {
  766.                                 window.location.href = response['link'];
  767.                             } else {
  768.                                 window.toastSpeichern('Error', 'error', 4000);
  769.                             }
  770.                         },
  771.                         'error': function (response) {
  772.                             console.log('Fehler bei Ajax-Link' + response)
  773.                         }
  774.                     });
  775.                 });
  776.                 {% endif %}
  777.             });
  778.         </script>
  779.     {% endif %}
  780.     </body>
  781.     </html>
  782. {% endapply %}