templates/pages/aqua_form.html.twig line 1

Open in your IDE?
  1. {# @var pageinfo \App\Controller\PageInfo #}
  2. {# @var objectinfo \App\Controller\Objects\ObjectInfo #}
  3. {# @var settings \App\Controller\Objects\AquaSettings #}
  4. {% extends 'base.html.twig' %}
  5.  {% block theme %}
  6.      <link rel="stylesheet" href="/assets/css/style.light-blue-700.min.css">
  7.      <link rel="stylesheet" href="/assets/custom/css/media.min.{{ app.request.server.get('APP_PREVCACHE') }}.css">
  8.  {% endblock %}
  9. {% block body %}
  10.     <div class="ms-hero-page ms-hero-bg-info mb-6" style="background: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), url('{{ objectinfo.background.small }}');">
  11.         {% if pageinfo.info != '' %}
  12.             <div class="container" style="position: relative; top: -80px">
  13.             <div id="id-header-news">
  14.                 <i class="fa fa-info-circle"></i>
  15.                 <div class="marquee">
  16.                     <div class="marquee-content">{{ pageinfo.info|raw }}</div>
  17.                 </div>
  18.             </div>
  19.             </div>
  20.         {% endif %}
  21.         <div class="text-center color-white mt-6 mb-6 index-1">
  22.             <h1>{{ objectinfo.title }}</h1>
  23.             <p class="lead lead-lg mb-4">{{ objectinfo.subtitle }}</p>
  24.             {% if objectinfo.buttons|length == 1 %}
  25.                 {% set button = objectinfo.buttons[0] %}
  26.                 {# @var button \App\Controller\Objects\Link #}
  27.                 <a href="{{ button.link }}" class="btn btn-object">{{ button.title }}</a>
  28.             {% elseif objectinfo.buttons|length > 0 %}
  29.                 {% set b = 1 %}
  30.                 {% for button in objectinfo.buttons %}
  31.                     {# @var button \App\Controller\Objects\Link #}
  32.                     <a href="{{ button.link }}" class="btn btn-object">{{ button.title }}</a>
  33.                     {% if b < objectinfo.buttons|length %}
  34.                         <img src="/assets/custom/img/kascv_logo_white_50_notext.png" class="btn-separator">
  35.                     {% endif %}
  36.                     {% set b = b + 1 %}
  37.                 {% endfor %}
  38.             {% endif %}
  39.         </div>
  40.     </div>
  41. <div class="container" style="margin-top: -110px">
  42.     <div class="row">
  43.         <div class="col-lg-9">
  44.             {% if objectinfo.alert != '' %}
  45.             <div class="alert alert-warning alert-light wow zoomInRight animation-delay-1" role="alert">
  46.                 <strong><i class="zmdi zmdi-alert-triangle"></i> Upozornění!</strong><br>{{ objectinfo.alert }}
  47.             </div>
  48.             {% endif %}
  49.             <article class="card card-primary wow zoomInRight animation-delay-1 mb-4" style="visibility: visible; animation-name: zoomInRight;">
  50.                 <div class="card-body overflow-hidden card-body-big" style="min-height: {% if objectinfo.alert != '' %}1330px{% else %}1460px{% endif %}">
  51.                     <form class="form-horizontal" autocomplete="off" name="aqua-reg-form">
  52.                         <fieldset>
  53.                             <legend>Osobní údaje</legend>
  54.                             <div class="form-group row justify-content-end">
  55.                                 <label for="id-date" class="col-lg-3 col-md-4 col-sm-5 control-label">Datum narození účastníka</label>
  56.                                 <div class="col-lg-5 col-lg-offset-1 col-md-4 col-sm-7">
  57.                                     <input name="date" id="id-date" type="text" class="form-control" placeholder="01.01.2016">
  58.                                 </div>
  59.                                 <div class="col-lg-3 col-md-4 col-sm-0"></div>
  60.                             </div>
  61.                             <div class="form-group row justify-content-end">
  62.                                 <label for="id-firstname" class="col-lg-3 col-md-4 col-sm-5 control-label">Jméno účastníka</label>
  63.                                 <div class="col-lg-5 col-lg-offset-1 col-md-4 col-sm-7">
  64.                                     <input name="firstname" id="id-firstname" type="text" class="form-control" placeholder="Jan">
  65.                                 </div>
  66.                                 <div class="col-lg-3 col-md-4 col-sm-0"></div>
  67.                             </div>
  68.                             <div class="form-group row justify-content-end">
  69.                                 <label for="id-lastname" class="col-lg-3 col-md-4 col-sm-5 control-label">Příjmení účastníka</label>
  70.                                 <div class="col-lg-5 col-lg-offset-1 col-md-4 col-sm-7">
  71.                                     <input name="lastname" id="id-lastname" type="text" class="form-control" placeholder="Novák">
  72.                                 </div>
  73.                                 <div class="col-lg-3 col-md-4 col-sm-0"></div>
  74.                             </div>
  75.                             <div class="form-group row justify-content-end">
  76.                                 <label for="id-email" class="col-lg-3 col-md-4 col-sm-5 control-label">E-mail zákonného zástupce</label>
  77.                                 <div class="col-lg-5 col-lg-offset-1 col-md-4 col-sm-7">
  78.                                     <input name="email" id="id-email" type="email" class="form-control" placeholder="josef.novak@email.cz">
  79.                                 </div>
  80.                                 <div class="col-lg-3 col-md-4 col-sm-0"></div>
  81.                             </div>
  82.                             <div class="form-group row justify-content-end">
  83.                                 <label for="id-phone" class="col-lg-3 col-md-4 col-sm-5 control-label">Telefon zákonného zástupce</label>
  84.                                 <div class="col-lg-5 col-lg-offset-1 col-md-4 col-sm-7">
  85.                                     <input name="phone" id="id-phone" type="text" class="form-control" placeholder="(+420) 777 666 555">
  86.                                 </div>
  87.                                 <div class="col-lg-3 col-md-4 col-sm-0"></div>
  88.                             </div>
  89.                             <div class="form-group row justify-content-end row">
  90.                                 <div class="col-lg-10 col-lg-offset-2">
  91.                                     <div class="togglebutton">
  92.                                         <label>
  93.                                             <input type="checkbox" name="browsave" id="id-browsave"> uložit vyplněné informace pro příště
  94.                                         </label>
  95.                                     </div>
  96.                                 </div>
  97.                             </div>
  98.                             <hr/>
  99.                             <legend>Kurz</legend>
  100.                             <div class="row">
  101.                                 <div class="col-lg-1 col-md-0"></div>
  102.                                     <div class="col-lg-10 col-md-12" id="id-courses">
  103.                                     </div>
  104.                             </div>
  105.                             <hr/>
  106.                             <legend>Den a čas</legend>
  107.                             <div class="row">
  108.                                 <div class="col-lg-1 col-md-0"></div>
  109.                                 <div class="col-lg-10 col-md-12" id="id-termines">
  110.                                 </div>
  111.                             </div>
  112.                             <hr/>
  113.                             <legend>Potvrzení</legend>
  114.                             <div class="form-group row justify-content-end">
  115.                                 <label for="id-note" class="col-lg-2 col-md-4 col-sm-5 control-label">Poznámka</label>
  116.                                 <div class="col-lg-7 col-lg-offset-1 col-md-4 col-sm-7">
  117.                                     <textarea name="note" class="form-control" rows="3" id="id-note"></textarea>
  118.                                     <span class="help-block">Zde můžete uvést Vaší poznámku k registraci</span>
  119.                                 </div>
  120.                                 <div class="col-lg-3 col-md-4 col-sm-0"></div>
  121.                             </div>
  122.                             <div class="form-group row justify-content-end">
  123.                                 <label for="id-note" class="col-lg-2 col-md-4 col-sm-5 control-label">Podmínky plavecké školy</label>
  124.                                 <div class="col-lg-8 col-lg-offset-1 col-md-4 col-sm-7">
  125.                                     {{ settings.formCond|raw }}
  126.                                 </div>
  127.                                 <div class="col-lg-2 col-md-4 col-sm-0"></div>
  128.                             </div>
  129.                             <div class="form-group row justify-content-end row">
  130.                                 <div class="col-lg-10 col-lg-offset-2">
  131.                                     <div class="togglebutton">
  132.                                         <label>
  133.                                             <input type="checkbox" name="cond" id="id-cond" value="1"> souhlasím s podmínkami
  134.                                         </label>
  135.                                     </div>
  136.                                     <hr/>
  137.                                 </div>
  138.                             </div>
  139.                             <div class="form-group row justify-content-end">
  140.                                 <label for="id-note" class="col-lg-2 col-md-4 col-sm-5 control-label">Zpracování údajů</label>
  141.                                 <div class="col-lg-8 col-lg-offset-1 col-md-4 col-sm-7">
  142.                                     <p>Odesláním přihlášky souhlasím se zpracováním osobních údajů.
  143.                                     <p>Při zpracovávání osobních údajů se řídíme právními předpisy, zejména zákonem č. 101/2000 Sb., o ochraně osobních údajů a obecným nařízením o ochraně osobních údajů (GDPR).</p>
  144.                                     <p>Zpracování osobních údajů probíhá pouze v rozsahu daným konkrétním účelem zpracování.</p>
  145.                                 </div>
  146.                                 <div class="col-lg-2 col-md-4 col-sm-0"></div>
  147.                             </div>
  148.                             <div class="form-group row justify-content-end row">
  149.                                 <div class="col-lg-10 col-lg-offset-2">
  150.                                     <div class="togglebutton">
  151.                                         <label>
  152.                                             <input type="checkbox" name="gdpr" id="id-gdpr" value="1"> souhlasím se zpracováním
  153.                                         </label>
  154.                                     </div>
  155.                                 </div>
  156.                             </div>
  157.                             <hr/>
  158.                             <div class="form-group row justify-content-end">
  159.                                 <div class="col-lg-10">
  160.                                     <button type="button" class="btn btn-raised btn-primary" id="id-submit">Odeslat</button>
  161.                                 </div>
  162.                             </div>
  163.                         </fieldset>
  164.                     </form>
  165.                 </div>
  166.             </article>
  167.         </div>
  168.         {% include 'partials/sidecol.html.twig' %}
  169.     </div>
  170. </div>
  171. <div class="g-recaptcha"
  172.      data-sitekey="{{ g_site_key }}"
  173.      data-callback="onCaptchaValidatePost"
  174.      data-size="invisible" style="position: absolute; right: 0px; bottom: -10px">
  175. </div>
  176. {% endblock %}
  177. {% block map %}
  178.     <iframe style="width: 100%; height: 300px" id="id-gmap-embed" src="{{ objectinfo.mapLink }}"></iframe>
  179. {% endblock %}
  180. {% block address %}
  181.     <h3 class="ms-footbar-title mb-2 ms-footer-text">{{ objectinfo.title }}</h3>
  182.     <div class="ms-footbar-title">
  183.         <img src="/assets/custom/img/kascv_logo_white_50_notext.png">
  184.         <h3 class="no-m ms-site-title"><span>KULTURA</span>A<span>SPORT</span>CHOMUTOV</h3>
  185.     </div>
  186.     <address class="no-mb">
  187.         <p><i class="zmdi zmdi-pin mr-1"></i> {{ objectinfo.addressStreet }}</p>
  188.         <p><i class="zmdi zmdi-map mr-1"></i> {{ objectinfo.addressCity }}, {{ objectinfo.addressPostal }}</p>
  189.         {% if objectinfo.contactPhone != '' %}
  190.         <p><i class="zmdi zmdi-email mr-1"></i> <a href="mailto:{{ objectinfo.contactPhone }}">{{ objectinfo.contactPhone }}</a></p>
  191.         {% endif %}
  192.         {% if objectinfo.contactMail != '' %}
  193.         <p><i class="fa fa-fax mr-1"></i>{{ objectinfo.contactMail }}</p>
  194.         {% endif %}
  195.         <p><i class="color-danger-light zmdi zmdi-phone mr-1"></i> <a href="/kontakty">Kontakty</a></p>
  196.     </address>
  197. {% endblock %}
  198. {% block javascripts %}
  199.     {{ parent() }}
  200.     <script src="https://www.google.com/recaptcha/api.js" async defer></script>
  201.     <script src="/assets/js/component-carousels-1.js"></script>
  202.     <script type="text/javascript">
  203.         let age = 0;
  204.         let course = 0;
  205.         $(function() {
  206.             LoadCourses();
  207.             LoadTermines();
  208.             LoadPersonalInfo();
  209.             $( "#id-date" ).blur(function() {
  210.                 ValidateDate();
  211.             });
  212.             $('#id-browsave').click(function() {
  213.                 SavePersonalInfo();
  214.             });
  215.             ValidateDate();
  216.             $('#id-submit').click(function() {
  217.                 Submit();
  218.             });
  219.         });
  220.         function LoadCourses() {
  221.             $( "#id-courses" ).load( "/aquasvet/prihlaska-na-kurz/kurzy-"+age, function() {
  222.                 $('#id-table-courses-radios tr:not(.disabled)').click(function() {
  223.                     $(this).find('input:radio').prop('checked', true);
  224.                     course = $(this).find('input:radio').val();
  225.                     LoadTermines();
  226.                 });
  227.             });
  228.         }
  229.         function LoadTermines() {
  230.             $( "#id-termines" ).load( "/aquasvet/prihlaska-na-kurz/terminy-"+course, function() {
  231.                 $('#id-table-less tr').click(function() {
  232.                     $(".subst-check").each(function() {
  233.                         $(this).prop('checked', false);
  234.                     });
  235.                     $(".less-check").each(function() {
  236.                         $(this).prop('checked', false);
  237.                     });
  238.                     $(this).find('input:radio').prop('checked', true);
  239.                 });
  240.             });
  241.         }
  242.         function onCaptchaValidatePost() {
  243.             Submit();
  244.         }
  245.         function ValidateDate() {
  246.             let date = $('#id-date').val();
  247.             if (date=='') {
  248.                 toastr.error('zadejte datum narození');
  249.             }
  250.             else if (!isValidDateCZ(date)) {
  251.                 toastr.error('špatný formát data narození');
  252.             }
  253.             else {
  254.                 let oData = new FormData(document.forms.namedItem('aqua-reg-form'));
  255.                 let oReq = new XMLHttpRequest();
  256.                 oReq.open("POST", '/aquasvet/prihlaska-na-kurz/datum', true);
  257.                 oReq.onload = function(oEvent) {
  258.                     try {
  259.                         let json = JSON.parse(trim(oEvent.target.responseText));
  260.                         if (json.message=='OK') {
  261.                             /*CheckRadioAge(json.age);*/
  262.                             /*toastr.info('podle věku '+json.age+' zvolte kurz');*/
  263.                             age = json.age;
  264.                             LoadCourses();
  265.                         }
  266.                         else {
  267.                             age = 0;
  268.                             LoadCourses();
  269.                             toastr.error(json.message);
  270.                             $('#'+json.focus).select();
  271.                         }
  272.                     }
  273.                     catch(e) {
  274.                         console.log(trim(oEvent.target.responseText));
  275.                         console.log(e);
  276.                     }
  277.                 };
  278.                 oReq.send(oData);
  279.             }
  280.         }
  281.         function Submit() {
  282.             let date = $('#id-date').val();
  283.             if (date=='') {
  284.                 toastr.error('zadejte datum narození');
  285.                 $('#id-date').focus();
  286.             }
  287.             else {
  288.                 $('#id-submit').attr('disabled', true);
  289.                 $('#id-submit').addClass('btn-disabled');
  290.                 $('#id-submit').html('Odesílám');
  291.                 let oData = new FormData(document.forms.namedItem('aqua-reg-form'));
  292.                 oData.set('g-recaptcha-response', grecaptcha.getResponse());
  293.                 let oReq = new XMLHttpRequest();
  294.                 oReq.open("POST", '/aquasvet/prihlaska-na-kurz/odeslani', true);
  295.                 oReq.onload = function(oEvent) {
  296.                     try {
  297.                         let json = JSON.parse(trim(oEvent.target.responseText));
  298.                         if (json.error=='0') {
  299.                             /*CheckRadioAge(json.age);*/
  300.                             /*toastr.info('podle věku '+json.age+' zvolte kurz');*/
  301.                             toastr.success(json.message);
  302.                             setTimeout(function(){ goTo('/aquasvet/kurzy-plavani') }, 2000);
  303.                         }
  304.                         else {
  305.                             toastr.error(json.message);
  306.                         }
  307.                         if (json.focus!='') {
  308.                             $([document.documentElement, document.body]).animate({
  309.                                 scrollTop: $('#'+json.focus).offset().top - 100
  310.                             }, 500);
  311.                             setTimeout(function(){
  312.                                 $('#'+json.focus).select();
  313.                             }, 1000);
  314.                         }
  315.                         if (json.reload!='') {
  316.                             if (json.reload == 'termines') {
  317.                                 LoadTermines();
  318.                             }
  319.                         }
  320.                     }
  321.                     catch(e) {
  322.                         console.log(trim(oEvent.target.responseText));
  323.                         console.log(e);
  324.                         toastr.error('chyba zpracování');
  325.                     }
  326.                     $('#id-submit').attr('disabled', false);
  327.                     $('#id-submit').removeClass('btn-disabled');
  328.                     $('#id-submit').html('Odeslat');
  329.                 };
  330.                 if (grecaptcha.getResponse()=='') {
  331.                     grecaptcha.execute();
  332.                 }
  333.                 else {
  334.                     oReq.send(oData);
  335.                 }
  336.             }
  337.         }
  338.         function SavePersonalInfo() {
  339.             if ($('#id-browsave').is(':checked')) {
  340.                 localStorage.setItem("date", $('#id-date').val());
  341.                 localStorage.setItem("firstname", $('#id-firstname').val());
  342.                 localStorage.setItem("lastname", $('#id-lastname').val());
  343.                 localStorage.setItem("email", $('#id-email').val());
  344.                 localStorage.setItem("phone", $('#id-phone').val());
  345.             }
  346.             else {
  347.                 localStorage.setItem("date", "");
  348.                 localStorage.setItem("firstname", "");
  349.                 localStorage.setItem("lastname", "");
  350.                 localStorage.setItem("email", "");
  351.                 localStorage.setItem("phone", "");
  352.             }
  353.         }
  354.         function LoadPersonalInfo() {
  355.             let date         = localStorage.getItem("date");
  356.             let firstname     = localStorage.getItem("firstname");
  357.             let lastname     = localStorage.getItem("lastname");
  358.             let email         = localStorage.getItem("email");
  359.             let phone         = localStorage.getItem("phone");
  360.             if (date=='' || date==null || date=='undefined') {
  361.                 $('#id-browsave').attr('checked', false);
  362.             }
  363.             else {
  364.                 $('#id-browsave').attr('checked', true);
  365.             }
  366.             if ($('#id-date').val()=='') $('#id-date').val(date);
  367.             if ($('#id-firstname').val()=='') $('#id-firstname').val(firstname);
  368.             if ($('#id-lastname').val()=='') $('#id-lastname').val(lastname);
  369.             if ($('#id-email').val()=='') $('#id-email').val(email);
  370.             if ($('#id-phone').val()=='') $('#id-phone').val(phone);
  371.             return false;
  372.         }
  373.         function isDate(value) {
  374.             if (value == "") return false;
  375.             let dtArr = value.split(".");
  376.             if (dtArr.length != 3) return false;
  377.             let dx = new Date(dtArr[2], dtArr[1] - 1, dtArr[0]);
  378.             if (dx.getDate() != dtArr[0]) return false;
  379.             if (dx.getMonth() + 1 != dtArr[1]) return false;
  380.             return true;
  381.         }
  382.     </script>
  383. {% endblock %}