templates/areas/contact-form-brick/view.html.twig line 1

Open in your IDE?
  1. {% embed 'app/area-brick-layout.html.twig' %}
  2.     {% block content %}
  3.         <!-- Form -->
  4.         <section class="bg-blue-300 ">
  5.             <div class="container grid grid-cols-12 py-20 md:gap-8">
  6.                 <div class="z-0 col-span-12 overflow-hidden rounded-md rounded-b-none md:rounded-b-md md:mb-10 md:mt-10 md:col-span-6 md:col-start-1 md:row-start-1">
  7.                     {{ pimcore_image('image', {
  8.                        thumbnail: 'contact-form',
  9.                        imgAttributes: {class: 'object-cover object-center w-full h-full'},
  10.                     }) }}
  11.                 </div>
  12.                 <div class="z-10 col-span-12 p-10 bg-gray-200 rounded-md rounded-t-none md:rounded-t-md md:col-span-7 md:col-start-6 md:row-start-1">
  13.                     <h2 class="mb-6 text-2xl font-bold text-blue">
  14.                         {{ pimcore_input('title', { placeholder: 'Titel' }) }}
  15.                     </h2>
  16.                     <p class="text-lg">
  17.                         <span>{{ pimcore_input('subtitle', { placeholder: 'Subtitel' }) }}</span>
  18.                         {% if editmode %}
  19.                             {{ pimcore_input('phone', { placeholder: 'Telefoonnummer' }) }}
  20.                         {% else %}
  21.                             <a
  22.                                 href="tel:{{ pimcore_input('phone') | phone }}"
  23.                                 class="font-bold text-blue hover:underline"
  24.                             >
  25.                                 {{ pimcore_input('phone') }}
  26.                             </a>
  27.                         {% endif %}
  28.                     </p>
  29.                     <div x-data="{ error: null, sent: false, loading: false }">
  30.                         <template x-if="error">
  31.                             {# `error` get parsed to string; e.g. 'Error: Network error'. #}
  32.                             <div x-text="error" class="text-red"></div>
  33.                         </template>
  34.                         <template x-if="sent">
  35.                             {# Also see _rental-form.html.twig::form.trans.thanks #}
  36.                             <div class="text-green">{{ 'Uw aanvraag is succesvol verstuurd. Wij nemen spoedig contact met u op!' | trans | escape }}</div>
  37.                         </template>
  38.                         <template x-if="!sent">
  39.                             <form
  40.                                 x-data="axios"
  41.                                 @submit.prevent="function(event) {
  42.                                     loading = true;
  43.                                     requestUrl = '{{ requestUrl }}'
  44.                                     zapierUrl = '';
  45.                                     if (requestUrl.includes('coolworld-rentals.com') ) {
  46.                                         zapierUrl = 'https://hooks.zapier.com/hooks/catch/17870113/bzi5rzo/'
  47.                                     }
  48.                                     else {
  49.                                         zapierUrl = 'https://hooks.zapier.com/hooks/catch/11516577/3u5tjvs/'
  50.                                     }
  51.                                     grecaptcha.ready(function() {
  52.                                         grecaptcha
  53.                                             .execute('{{ recaptcha_v3_site_key }}', { action: 'form_contact' })
  54.                                             .then(function(token) {
  55.                                                 fetch('/recaptcha/verify/',
  56.                                                     {
  57.                                                         method: 'POST',
  58.                                                         body: JSON.stringify({
  59.                                                             token: token,
  60.                                                             action: 'form_contact',
  61.                                                         }),
  62.                                                     }
  63.                                                 )
  64.                                                 .then((response) => response.json())
  65.                                                 .then(function(json) {
  66.                                                     if (json.success !== true || json.passed !== true) {
  67.                                                         window.alert('{{ 'recaptcha_robot_message'|trans }}');
  68.                                                     } else {
  69.                                                         axios.post(
  70.                                                             zapierUrl,
  71.                                                             new FormData(event.target),
  72.                                                             { headers: {'Content-Type': 'application/x-www-form-urlencoded'} }
  73.                                                         ).then(response => {
  74.                                                             sent = true;
  75.                                                             //TODO add zapier url for for https://ptchr.atlassian.net/browse/COOL-180
  76.                                                             window.dataLayer = window.dataLayer || [];
  77.                                                             //TODO fill with correct data for https://ptchr.atlassian.net/browse/COOL-180
  78.                                                             window.dataLayer.push({
  79.                                                                 'event': 'contactForm',
  80.                                                                 'pimcore_id': response.config.data.get('Bezoeker ID'),
  81.                                                                 // Make sure these are the same as the input names.
  82.                                                                 'telephonenumber': response.config.data.get('Telefoonnummer'),
  83.                                                                 'email': response.config.data.get('E-mailadres'),
  84.                                                             })
  85.                                                         }).catch(e => {
  86.                                                             error = e;
  87.                                                         })
  88.                                                     }
  89.                                                 })
  90.                                                 .then(loading = false)
  91.                                             })
  92.                                     });
  93.                                 }"
  94.                             >
  95.                                 <div class="grid grid-cols-12 gap-4 my-4">
  96.                                     <div class="col-span-12">
  97.                                         <label for="message-cf" class="block font-bold mb-1.5">{{ 'Uw bericht' | trans }}*</label>
  98.                                         <!--placeholder="{{ 'Uw vragen of opmerkingen' | trans }}"-->
  99.                                         <textarea
  100.                                             id="message-cf"
  101.                                             name="Bericht"
  102.                                             required
  103.                                             class="w-full h-32 p-3 border border-gray-400 rounded-md placeholder:text-gray-600"
  104.                                         ></textarea>
  105.                                     </div>
  106.                                     <div class="col-span-12 md:col-span-6">
  107.                                         <div class="flex items-center mb-1.5">
  108.                                             <label for="first_name-cf" class="block mr-2 font-bold">{{ 'Voornaam' | trans }}*</label>
  109.                                             <!--<div class="block w-4 h-4 cursor-pointer">
  110.                                                 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
  111.                                                     <path fill="#0072BB" fill-rule="evenodd" d="M8.036 5.235c.433 0 .747-.081.942-.244.196-.162.294-.418.294-.767 0-.358-.098-.618-.294-.78-.195-.163-.51-.244-.942-.244-.433 0-.747.081-.943.243-.195.163-.293.423-.293.78 0 .35.098.606.293.768.196.163.51.244.943.244Zm1.06 6.965V5.959H6.976V12.2h2.122ZM8 14.4A6.4 6.4 0 1 1 14.4 8 6.407 6.407 0 0 1 8 14.4ZM0 8a8 8 0 0 0 16 0 8.009 8.009 0 0 0-8-8 8 8 0 0 0-8 8Z"/>
  112.                                                 </svg>
  113.                                             </div>-->
  114.                                         </div>
  115.                                         <!--placeholder="Morgan"-->
  116.                                         <input
  117.                                             type="text"
  118.                                             id="first_name-cf"
  119.                                             name="Voornaam"
  120.                                             class="w-full p-3 border border-gray-400 rounded-md placeholder:text-gray-600"
  121.                                             required
  122.                                         />
  123.                                     </div>
  124.                                     <div class="col-span-12 md:col-span-6">
  125.                                         <div class="flex items-center mb-1.5">
  126.                                             <label for="last_name-cf" class="block mr-2 font-bold">{{ 'Achternaam' | trans }}*</label>
  127.                                             <!--<div class="block w-4 h-4 cursor-pointer">
  128.                                                 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
  129.                                                     <path fill="#0072BB" fill-rule="evenodd" d="M8.036 5.235c.433 0 .747-.081.942-.244.196-.162.294-.418.294-.767 0-.358-.098-.618-.294-.78-.195-.163-.51-.244-.942-.244-.433 0-.747.081-.943.243-.195.163-.293.423-.293.78 0 .35.098.606.293.768.196.163.51.244.943.244Zm1.06 6.965V5.959H6.976V12.2h2.122ZM8 14.4A6.4 6.4 0 1 1 14.4 8 6.407 6.407 0 0 1 8 14.4ZM0 8a8 8 0 0 0 16 0 8.009 8.009 0 0 0-8-8 8 8 0 0 0-8 8Z"/>
  130.                                                 </svg>
  131.                                             </div>-->
  132.                                         </div>
  133.                                         <!--placeholder="Freeman"-->
  134.                                         <input
  135.                                             type="text"
  136.                                             id="last_name-cf"
  137.                                             name="Achternaam"
  138.                                             class="w-full p-3 border border-gray-400 rounded-md placeholder:text-gray-600"
  139.                                             required
  140.                                         />
  141.                                     </div>
  142.                                     <div class="col-span-12 md:col-span-6">
  143.                                         <div class="flex items-center mb-1.5">
  144.                                             <label for="phone-cf" class="block mr-2 font-bold">{{ 'Telefoonnummer' | trans }}*</label>
  145.                                             <!--<div class="block w-4 h-4 cursor-pointer">
  146.                                                 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
  147.                                                     <path fill="#0072BB" fill-rule="evenodd" d="M8.036 5.235c.433 0 .747-.081.942-.244.196-.162.294-.418.294-.767 0-.358-.098-.618-.294-.78-.195-.163-.51-.244-.942-.244-.433 0-.747.081-.943.243-.195.163-.293.423-.293.78 0 .35.098.606.293.768.196.163.51.244.943.244Zm1.06 6.965V5.959H6.976V12.2h2.122ZM8 14.4A6.4 6.4 0 1 1 14.4 8 6.407 6.407 0 0 1 8 14.4ZM0 8a8 8 0 0 0 16 0 8.009 8.009 0 0 0-8-8 8 8 0 0 0-8 8Z"/>
  148.                                                 </svg>
  149.                                             </div>-->
  150.                                         </div>
  151.                                         <!--placeholder="+31612345678"-->
  152.                                         <input
  153.                                             type="text"
  154.                                             id="phone-cf"
  155.                                             name="Telefoonnummer"
  156.                                             required
  157.                                             class="w-full p-3 border border-gray-400 rounded-md placeholder:text-gray-600"
  158.                                         />
  159.                                     </div>
  160.                                     <div class="col-span-12 md:col-span-6">
  161.                                         <div class="flex items-center mb-1.5">
  162.                                             <label for="email-cf" class="block mr-2 font-bold">{{ 'E-mailadres' | trans }}*</label>
  163.                                             <!--<div class="block w-4 h-4 cursor-pointer">
  164.                                                 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
  165.                                                     <path fill="#0072BB" fill-rule="evenodd" d="M8.036 5.235c.433 0 .747-.081.942-.244.196-.162.294-.418.294-.767 0-.358-.098-.618-.294-.78-.195-.163-.51-.244-.942-.244-.433 0-.747.081-.943.243-.195.163-.293.423-.293.78 0 .35.098.606.293.768.196.163.51.244.943.244Zm1.06 6.965V5.959H6.976V12.2h2.122ZM8 14.4A6.4 6.4 0 1 1 14.4 8 6.407 6.407 0 0 1 8 14.4ZM0 8a8 8 0 0 0 16 0 8.009 8.009 0 0 0-8-8 8 8 0 0 0-8 8Z"/>
  166.                                                 </svg>
  167.                                             </div>-->
  168.                                         </div>
  169.                                         <!--placeholder="info@mail.com"-->
  170.                                         <input
  171.                                             type="email"
  172.                                             id="email-cf"
  173.                                             name="E-mailadres"
  174.                                             required
  175.                                             class="w-full p-3 border border-gray-400 rounded-md placeholder:text-gray-600"
  176.                                         />
  177.                                     </div>
  178.                                     <div class="col-span-12">
  179.                                         <div class="flex items-center mb-1.5">
  180.                                             <label for="company-cf" class="block mr-2 font-bold">{{ 'Bedrijf' | trans }}*</label>
  181.                                         </div>
  182.                                         <input
  183.                                             type="text"
  184.                                             id="company-cf"
  185.                                             name="Bedrijf"
  186.                                             required
  187.                                             class="w-full p-3 border border-gray-400 rounded-md placeholder:text-gray-600"
  188.                                         />
  189.                                     </div>
  190.                                     <div class="col-span-12 md:col-span-6">
  191.                                         <div class="flex items-center mb-1.5">
  192.                                             <label for="address-cf" class="block mr-2 font-bold">{{ 'Adres' | trans }}*</label>
  193.                                         </div>
  194.                                         <input
  195.                                             type="text"
  196.                                             id="address-cf"
  197.                                             name="Adres"
  198.                                             required
  199.                                             class="w-full p-3 border border-gray-400 rounded-md placeholder:text-gray-600"
  200.                                         />
  201.                                     </div>
  202.                                     <div class="col-span-12 md:col-span-6">
  203.                                         <div class="flex items-center mb-1.5">
  204.                                             <label for="zipcode-cf" class="block mr-2 font-bold">{{ 'Postcode' | trans }}*</label>
  205.                                         </div>
  206.                                         <input
  207.                                             type="text"
  208.                                             id="zipcode-cf"
  209.                                             name="Postcode"
  210.                                             required
  211.                                             class="w-full p-3 border border-gray-400 rounded-md placeholder:text-gray-600"
  212.                                         />
  213.                                     </div>
  214.                                     <div class="col-span-12 md:col-span-6">
  215.                                         <div class="flex items-center mb-1.5">
  216.                                             <label for="city-cf" class="block mr-2 font-bold">{{ 'Plaats' | trans }}*</label>
  217.                                         </div>
  218.                                         <input
  219.                                             type="text"
  220.                                             id="city-cf"
  221.                                             name="Plaats"
  222.                                             required
  223.                                             class="w-full p-3 border border-gray-400 rounded-md placeholder:text-gray-600"
  224.                                         />
  225.                                     </div>
  226.                                     <div class="col-span-12 md:col-span-6">
  227.                                         <div class="flex items-center mb-1.5">
  228.                                             <label for="country-cf" class="block mr-2 font-bold">{{ 'Land' | trans }}*</label>
  229.                                         </div>
  230.                                         <select
  231.                                             id="country-cf"
  232.                                             name="Land"
  233.                                             required
  234.                                             class="w-full p-3 border border-gray-400 rounded-md placeholder:text-gray-600"
  235.                                         >
  236.                                             {# Also @see _rental-form.html.twig #}
  237.                                             {% for code, country in {
  238.                                                 NL: 'Nederland' | trans,
  239.                                                 BE: 'België' | trans,
  240.                                                 DE: 'Duitsland' | trans,
  241.                                                 FR: 'Frankrijk' | trans,
  242.                                                 CH: 'Zwitserland' | trans,
  243.                                                 AT: 'Oostenrijk' | trans,
  244.                                                 LU: 'Luxemburg' | trans,
  245.                                                 LI: 'Liechtenstein' | trans,
  246.                                                 DK: 'Denemarken' | trans,
  247.                                                 HU: 'Hongarije' | trans,
  248.                                                 GB: 'Verenigd Koninkrijk' | trans,
  249.                                                 SE: 'Zweden' | trans,
  250.                                                 NO: 'Noorwegen' | trans,
  251.                                                 PL: 'Polen' | trans,
  252.                                                 SK: 'Slowakije' | trans,
  253.                                                 CZ: 'Tsjechië' | trans,
  254.                                                 IT: 'Italië' | trans,
  255.                                                 ES: 'Spanje' | trans,
  256.                                                 OTHER: 'Overige' | trans,
  257.                                             } | sort %}
  258.                                                 <option value="{{ code | upper }}" {% if (data.page.country|upper) == (code|upper) %} selected {% endif %}>{{ country }}</option>
  259.                                             {% endfor %}
  260.                                         </select>
  261.                                     </div>
  262.                                     <div class="col-span-12">
  263.                                         <small class="text-sm">
  264.                                             {{ pimcore_input('fine-print', { placeholder: 'Toestemmingstekst' }) }}
  265.                                         </small>
  266.                                     </div>
  267.                                     <div class="col-span-12">
  268.                                         <p class="block font-bold mb-1.5">{{ 'Mogen we uw gegevens gebruiken?' | trans }}</p>
  269.                                         <label class="text-sm text-gray-500 cursor-pointer">
  270.                                             <input type="checkbox" name="Marketing toestemming" class="mr-1"/>
  271.                                             {% if not editmode %}
  272.                                                 <span>{{ pimcore_input('checkbox') }}</span>
  273.                                             {% endif %}
  274.                                         </label>
  275.                                         {% if editmode %}
  276.                                             {{ pimcore_input('checkbox', { placeholder: 'Checkbox tekst' }) }}
  277.                                         {% endif %}
  278.                                     </div>
  279.                                     <div class="col-span-12">
  280.                                         <input type="hidden" name="Taal" value="{{ data.page.lang | escape }}">
  281.                                         <input type="hidden" name="Paginanaam" value="{{ data.page.title | escape }}">
  282.                                         <input type="hidden" name="URL" value="{{ data.request.url | raw }}">
  283.                                         <input type="hidden" name="Bezoeker ID" value="{{ (data.visitorId ?? (visitorId ?? null)) | escape }}">
  284.                                         
  285.                                         <input type="hidden" name="gclid" id="gclid" value="{{ (data.gclid ?? (gclid ?? null)) | escape }}">
  286.                                         <input type="hidden" name="msclkid" id="msclkid" value="{{ (data.msclkid ?? (msclkid ?? null)) | escape }}">
  287.                                         <input type="hidden" name="li_fat_id" id="li_fat_id" value="{{ (data.li_fat_id ?? (li_fat_id ?? null)) | escape }}">
  288.                                         <template x-if="error">
  289.                                              {# `error` get parsed to string; e.g. 'Error: Network error'. #}
  290.                                              <div x-text="error" class="mt-6 text-red"></div>
  291.                                          </template>
  292.                                         <button type="submit" :disabled="loading" class="mt-6 button button__green disabled:opacity-50 disabled:cursor-not-allowed">
  293.                                             {{ 'Verzenden' | trans }}
  294.                                         </button>
  295.                                     </div>
  296.                                     <script>
  297.                                         document.addEventListener('readystatechange', function(event) {
  298.                                             if (document.readyState === "complete" && document.getElementsByName("Bezoeker ID")) {
  299.                                                 if (localStorage.getItem('_ptg.user')) {
  300.                                                     document.getElementsByName("Bezoeker ID")[0].value = JSON.parse(localStorage.getItem('_ptg.user')).visitorId;
  301.                                                 }
  302.                                             }
  303.                                         });
  304.                                     </script>
  305.                                 </div>
  306.                             </form>
  307.                         </template>
  308.                     </div>
  309.                 </div>
  310.             </div>
  311.         </section>
  312.     {% endblock %}
  313. {% endembed %}