templates/timobracht/_includes/footer.html.twig line 1

Open in your IDE?
  1.     
  2.     <footer class="bg-red">
  3.       <a class="scroll-top" href="#start"><span class="lsf">up</span></a>
  4.       <div class="copyright">
  5.         <div class="row">
  6.           <div class="col-12 col-sm-9">
  7.             &copy; 2025 {{'timobracht-contact-name1'|trans}} {{'timobracht-contact-name2'|trans}}, {{'timobracht-contact-street'|trans}}, {{'timobracht-contact-city'|trans}}, Tel. {{'timobracht-contact-mail'|trans}} | <a href="#" data-bs-toggle="modal" data-bs-target="#modalImpressum">Impressum</a> | <a href="#" data-bs-toggle="modal" data-bs-target="#modalDatenschutz">Datenschutz</a>
  8.           </div>
  9.           <div class="col-12 col-sm-3 text-end">
  10.             <a href="https://78-media.de" target="_blank">78media</a>
  11.           </div>
  12.         </div>
  13.       </div>
  14.     </footer>
  15.     <!-- Modals -->
  16.     <div class="modal fade" id="modalImpressum" tabindex="-1" aria-labelledby="modalImpressumLabel" aria-hidden="true">
  17.       <div class="modal-dialog">
  18.         <div class="modal-content">
  19.           <div class="modal-header">
  20.             <h5 class="modal-title" id="modalImpressumLabel">Impressum</h5>
  21.             <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  22.           </div>
  23.           <div class="modal-body">
  24.             {{ pimcore_inc('/timobracht-coaching/Home/footer/impressum') }}
  25.           </div>
  26.           <div class="modal-footer">
  27.           </div>
  28.         </div>
  29.       </div>
  30.     </div>
  31.     
  32.     <div class="modal fade" id="modalDatenschutz" tabindex="-1" aria-labelledby="modalDatenschutzLabel" aria-hidden="true">
  33.       <div class="modal-dialog">
  34.         <div class="modal-content">
  35.           <div class="modal-header">
  36.             <h5 class="modal-title" id="modalDatenschutzLabel">Datenschutzerkl&auml;rung</h5>
  37.             <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  38.           </div>
  39.           <div class="modal-body">
  40.             {{ pimcore_inc('/timobracht-coaching/Home/footer/datenschutz') }}
  41.           </div>
  42.           <div class="modal-footer">
  43.           </div>
  44.         </div>
  45.       </div>
  46.     </div>
  47.     
  48.     <!-- let's start javascripting -->
  49.     <script src="/themes/{{ siteConfig.getTemplate }}/js/jquery-3.6.0.min.js"></script>
  50.     <script src="/themes/{{ siteConfig.getTemplate }}/js/bootstrap.bundle.min.js"></script>
  51.     <script src="/themes/{{ siteConfig.getTemplate }}/js/jquery-scrollto.js"></script>
  52.     <script src="/themes/{{ siteConfig.getTemplate }}/js/jquery.inview.min.js"></script>
  53.     <script src="/themes/{{ siteConfig.getTemplate }}/js/jquery.fancybox.min.js"></script>
  54.     <script>
  55.     
  56.     $().ready(function() {
  57.     
  58.       // get enviroment dimensions
  59.       var viewportHeight  = $(window).height();
  60.       var viewportWidth   = $(window).width();
  61.       var displayHeight   = $('html').height();     
  62.       // re-adjust on resize ...  
  63.       $(window).resize(function() 
  64.       {
  65.           var viewportHeight  = $(window).height();
  66.           var viewportWidth   = $('html').width();           
  67.       });
  68.       // navbar
  69.       $('#nav-icon3').click(function(){
  70.             $(this).toggleClass('open');
  71.         });
  72.       $('.navbar .nav-link').click(function() {
  73.           $('.navbar-collapse').removeClass('show');
  74.           $('#nav-icon3').removeClass('open');
  75.       });
  76.       // background images
  77.       $('.section-bg-image').each(function() {
  78.           var img = $(this).data('src');
  79.           $(this).css("background-image", "url('" + img + "')");
  80.       });
  81.       // scroll to
  82.       $('a[href*=\\#]').bind("click", function(event) {
  83.               event.preventDefault();
  84.               var target = $(this).attr("href");  
  85.           
  86.           if (!target.match(/slider(.*)/i)) { 
  87.                   $('html,body').animate({
  88.                        scrollTop: $(target).offset().top
  89.                   }, 2000);
  90.           }       
  91.       });
  92.       
  93.       $('.btn-continue').click(function() {
  94.           $(this).addClass('animate__animated animate__zoomOut');
  95.       });
  96.       // top bar
  97.       var minified = false;
  98.       $(window).scroll(function() {
  99.           var y = $(window).scrollTop();
  100.           // console.log('Y: ' + y);
  101.           if ( y > viewportHeight*.75 )
  102.           {             
  103.               if ( minified == false )
  104.               {
  105.                   $('.site-logo').addClass('logo-minified');
  106.                   $('.navbar').addClass('navbar-minified');
  107.                   minified = true;
  108.               }              
  109.           }
  110.           else
  111.           {
  112.               $('.site-logo').removeClass('logo-minified');
  113.               $('.navbar').removeClass('navbar-minified');
  114.               minified = false;
  115.           }
  116.       });
  117.       
  118.       // gallery
  119.       $('.gallery-image').mouseover(function() {
  120.           var e = $(this).find('.icon');
  121.           e.fadeIn();
  122.       }).mouseleave(function() {
  123.           var e = $(this).find('.icon');
  124.           e.fadeOut();    
  125.       });
  126.       // animate on scroll
  127.       $('.scroll-animated,.scroll-animated-inverted').bind('inview', function(event, visible) {
  128.           if ( visible ) { 
  129.               $(this).animate({
  130.                   top: '0px',
  131.                   opacity: 1
  132.               }, 600);
  133.           }
  134.       });
  135.       
  136.       $('.scroll-animated-fade-in').bind('inview', function(event, visible) {
  137.           if ( visible ) { 
  138.               $(this).animate({
  139.                   opacity: 1
  140.               }, 1200);
  141.           }
  142.       });
  143.       
  144.       // booking form
  145.       $('#contactSetRoomType1,#contactSetRoomType2').change(function() {
  146.           let s = $(this).prop('checked');
  147.           let v = $(this).val();
  148.           console.log('Changing room type state to: ' + v);
  149.           $('#contactRoomType').val(v);
  150.           
  151.           if (s===true && $(this).attr('id')=='contactSetRoomType2') {
  152.               $('#contactRoomType2Data').fadeIn();
  153.               $('#contactFirstname2,#contactLastname2,#contactSeminar2,#contactSize2').addClass('check-finput');
  154.               console.log('Adding 2 bed room guest 2 name. Status: ' + s);
  155.           } else {
  156.               $('#contactRoomType2Data').fadeOut();
  157.               $('#contactFirstname2,#contactLastname2,#contactSeminar2,#contactSize2').removeClass('check-finput');
  158.               console.log('Removing 2 bed room guest 2 name. Status: ' + s);
  159.           }
  160.           console.log('Room type set: ' + $('#contactRoomType').val());
  161.       });
  162.       
  163.       $('#contactSeminar2').click(function() {
  164.           if ($(this).prop('checked'))
  165.               $(this).val('JA');
  166.           else
  167.               $(this).val('Nein');
  168.       });
  169.       
  170.       // check form input
  171.       /**
  172.       $('.check-finput').keyup(function() {
  173.           let formComplete = true;
  174.           $('.check-finput').each(function() {          
  175.               // console.log('Check input: ' + $(this).attr('name') + ' -> ' + $(this).val());          
  176.               if ($(this).attr('type')=='checkbox' && $(this).prop('checked')!='1')
  177.                   formComplete = false;
  178.               else if ($(this).val() == '')
  179.                   formComplete = false;            
  180.           });
  181.           if (formComplete)
  182.               $('#submitBookingForm').fadeIn();
  183.           else
  184.               $('#submitBookingForm').hide();          
  185.       });
  186.       **/
  187.       
  188.       // submit form data
  189.       $('#submitBookingForm').click(function() {          
  190.           let formToken = $('#contactToken').val();
  191.           let formFirstname = $('#contactFirstname').val();
  192.           let formLastname = $('#contactLastname').val();
  193.           let formEmail = $('#contactEmail').val();
  194.           let formEmailAddress = $('#emailAddress').val();
  195.           let formMessage = $('#contactMessage').val();
  196.           let formComplete = true;
  197.           
  198.           $('.check-finput').each(function() {
  199.               if($(this).attr('required')) {
  200.                   if ($(this).attr('type')=='checkbox' && $(this).prop('checked')!='1')
  201.                       formComplete = false;
  202.                   else if ($(this).val() == '')
  203.                       formComplete = false;
  204.                   console.log('Form complete status (' + $(this).attr('required') + '): ' + formComplete);                
  205.               }            
  206.           });
  207.           
  208.           if (!formComplete) {
  209.               alert('Bitte alle Pflichtangaben ausfuellen!');
  210.               return;
  211.           }
  212.           
  213.           let formId = 'bookingForm';
  214.           let formFields = $('#'+formId).find('.check-finput').toArray();
  215.           let formQueryString = {};
  216.           for (i = 0; i < formFields.length; i += 1) {
  217.               console.log('Parse element ' + formFields[i].getAttribute('name') + ' -> value: ' + formFields[i].value);
  218.               input_id = formFields[i].getAttribute('name');
  219.               input_value = formFields[i].value;              
  220.               formQueryString[input_id] = input_value;
  221.           }
  222.          
  223.           $.ajax({
  224.               url : "/contact/sendmail",
  225.               type : "POST",
  226.               data : formQueryString,
  227.               dataType : "text",
  228.               success : function(data, jqXHR) {                 
  229.                   console.log('Response: ' + data);                  
  230.                   var r = data;
  231.                   var s = JSON.parse(r);                 
  232.                   console.log('Json: ' + s);                                   
  233.                   if (s.code == '400')
  234.                       $('#submitContactMessage').html(s.message).fadeIn();
  235.                   else
  236.                       $('#bookingForm').html(s.message);  
  237.               },
  238.               error : function(XMLHttpRequest, textStatus, errorThrown) {
  239.                   $('#bookingForm').html('Es ist ein Fehler aufgetreten. Bitte kontaktieren Sie uns telefonisch oder per E-Mail');
  240.               }
  241.           });           
  242.       });    
  243.       
  244.     });
  245.     
  246.     </script>
  247.     
  248.     <script language="javascript">
  249.       function setCookie(cname, cvalue, exdays) {
  250.         var d = new Date();
  251.         d.setTime(d.getTime() + (exdays*24*60*60*1000));
  252.         var expires = "expires="+ d.toUTCString();
  253.         document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
  254.       }
  255.       
  256.       function getCookie(c_name) {
  257.         var i, x, y, ARRcookies = document.cookie.split(";");
  258.         for (i = 0; i < ARRcookies.length; i++) {
  259.           x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
  260.           y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
  261.           x = x.replace(/^\s+|\s+$/g, "");
  262.           if (x == c_name) {
  263.               return unescape(y);
  264.           }
  265.         }
  266.       }
  267.       function validateEmail(email)
  268.       {
  269.           // var mailformat = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
  270.           if( email.match( /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ ) )         
  271.               return true;
  272.           else
  273.               return false;
  274.       }
  275.     
  276.     </script>