]> _ Git - ccv-wordpress.git/commitdiff
Training request form + other adjustments. WIP #3588 @7
authorStephen Cameron <stephen@cubedesigners.com>
Thu, 16 Apr 2020 17:00:12 +0000 (19:00 +0200)
committerStephen Cameron <stephen@cubedesigners.com>
Thu, 16 Apr 2020 17:00:12 +0000 (19:00 +0200)
wp-content/mu-plugins/cube/src/Forms/Base.php
wp-content/mu-plugins/cube/src/Forms/Training.php [new file with mode: 0644]
wp-content/mu-plugins/cube/src/Shortcodes/CCVForm.php
wp-content/themes/CCV/resources/assets/styles/components/forms.styl
wp-content/themes/CCV/resources/views/forms/consultation.blade.php
wp-content/themes/CCV/resources/views/forms/training.blade.php [new file with mode: 0644]
wp-content/themes/CCV/resources/views/partials/header.blade.php

index be60094a62ea41354e22af7d796414127f27364c..5e2baf589ab6ed46f8829270b37a16f59ceb29f5 100644 (file)
@@ -72,6 +72,7 @@ class Base
             'input_class' => '',
             'show_title' => true,
             'show_labels' => true,
+            'show_icon' => true,
             'placeholder' => $field['title'],
             'field_before' => '',
             'field_after' => '',
@@ -203,8 +204,12 @@ class Base
         wp_enqueue_script('cube-flatpickr');
 
         $res  = '<div data-flatpickr="'. esc_attr(json_encode($flatpickr)) .'" class="flex">';
-        $res .= '<input type="date" placeholder="'. __('JJ/MM/AAAA') .'" name="'. $name .'" data-input>';
-        $res .= '<img src="'. asset('images/calendar.svg') .'" class="ml-2 mr-6 cursor-pointer" data-toggle>';
+        $res .= '<input type="date" placeholder="'. $settings['placeholder'] .'" name="'. $name .'" data-input>';
+
+        if ($settings['show_icon']) {
+            $res .= '<img src="' . asset('images/calendar.svg') . '" class="ml-2 mr-6 cursor-pointer" data-toggle>';
+        }
+
         $res .= '</div>';
 
         return $res;
diff --git a/wp-content/mu-plugins/cube/src/Forms/Training.php b/wp-content/mu-plugins/cube/src/Forms/Training.php
new file mode 100644 (file)
index 0000000..125ecbf
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+namespace Cube\Forms;
+
+class Training extends Base
+{
+    public function register_scripts() {
+        parent::register_scripts();
+    }
+
+
+    function register_fields() {
+
+        parent::register_fields();
+
+        //== IDENTITY
+        $this->addField('last-name', _x('Nom', 'Nom de famille', 'ccv'), self::TEXT);
+        $this->addField('first-name', __('Prénom', 'ccv'), self::TEXT);
+        $this->addField('birth-date', __('Date de naissance', 'ccv'), self::DATE);
+        $this->addField('phone', __('Tel', 'ccv'), self::TEXT);
+        $this->addField('email', __('Mail', 'ccv'), self::EMAIL);
+        $this->addField('country-residence', __('Pays de résidence', 'ccv'), self::TEXT);
+        $this->addField('country-training', __('Pays de formation chirurgicale', 'ccv'), self::TEXT);
+
+        $this->addField('speciality', __('Spécialité chirurgicale', 'ccv'), self::RADIO,
+            [
+                __('Neurochirurgien', 'ccv'),
+                __('Chirurgien orthopédiste avec chirurgie du rachis exclusif', 'ccv'),
+                __('Chirurgien orthopédiste généraliste', 'ccv'),
+            ]
+        );
+
+        $this->addField('status', __('Statut', 'ccv'), self::RADIO,
+            [
+                __('Etudiant (interne, fellow)', 'ccv'),
+                __('Chirurgien en activité', 'ccv'),
+            ]
+        );
+
+        //== AREA OF INTERVENTION
+        $this->addField('experience-lumbar-anterior', __("Quel niveau d'expertise avez-vous dans ce domaine ?", 'ccv'), self::RADIO,
+            [
+                __("Pas d'expérience", 'ccv'),
+                __('Moins de 20 chirurgies', 'ccv'),
+                __('Entre 20 et 100', 'ccv'),
+                __('Plus de 100 chirurgies', 'ccv'),
+            ]
+        );
+
+        $this->addField('experience-scoliosis', __("Quel niveau d’expertise avez-vous dans la chirurgie de la scoliose ?", 'ccv'), self::RADIO,
+            [
+                __("Pas d'expérience", 'ccv'),
+                __('Moins de 20 chirurgies', 'ccv'),
+                __('Entre 20 et 100', 'ccv'),
+                __('Plus de 100 chirurgies', 'ccv'),
+            ]
+        );
+
+        //== TYPE OF TRAINING
+        // Since this question has a complex layout, the options are set in the template (formation.blade.php)
+        $this->addField('training-type', __('Par quel type de formation au CCV Montpellier êtes-vous intéressé ?', 'ccv'), self::RADIO, null);
+    }
+}
index 9e3f8bf847af1f8dc5857d1b62f6a4829d7d2631..090f92e97e1f462c760aac6bba3afe7eeefc0685 100644 (file)
@@ -32,6 +32,7 @@ class CCVForm {
         // List of all possible forms
         $templates = [
             'consultation' => Forms\Consultation::class,
+            'training' => Forms\Training::class,
         ];
 
         if (array_key_exists($name, $templates)) {
index 0ba0f1b7c2a1664d11ff69c25cb52774af12a35d..d7e7bc2ab8131676de68b69fc9514b8ba7fc5510 100644 (file)
@@ -102,7 +102,7 @@ input[type="submit"]
 // Common form styling
 .form-field-title
   font-weight: 400
-  margin-bottom: 0.5em
+  margin-bottom: 0.75em
 
 .form-field-input
   > *:not(:last-child)
@@ -112,7 +112,7 @@ input[type="submit"]
     white-space: nowrap // Ensure text stays beside input control
 
 .form-field-date
-  input
+  &.date-field-compact input
     width: 5.5em
     text-align: center
     padding: 0
index f352b43be6a757700b967895a910625aab65c706..bcbce1073fcb14e469156e6ce5eb3b288627fd5e 100644 (file)
@@ -1,29 +1,42 @@
 {{-- CONSULTATION FORM --}}
 @php /* @var $form \Cube\Forms\Consultation */ @endphp
 
-{{--Todo: check out Tailwind forms: https://tailwindcss-custom-forms.netlify.com/ --}}
-{{--Todo: check visibleIf for ideas: https://www.useragentman.com/blog/2010/06/20/visibleif-html5-custom-data-attributes-with-javascript-make-dynamic-interactive-forms/--}}
-
-{{--
-LINKS
-
-https://www.smashingmagazine.com/2012/07/12-commandments-software-localization/
-https://www.cleverbridge.com/corporate/3-tips-to-localize-your-form-fields/
-
-https://parsleyjs.org/doc/#installation-localization
-https://github.com/flatpickr/flatpickr
---}}
-
 {{-- SYMPTOMS --}}
 <div class="bg-light text-block-body py-2v pl-4v pr-3v xs:px-2v">
-  <h2>{{ __('1. Vos symptômes') }}</h2>
+  <h2>{{ __('1. Vos symptômes', 'ccv') }}</h2>
+
+  @php $date_placeholder = __('JJ/MM/AAAA', 'ccv'); @endphp
 
   <div class="form-cols-2 mt-1v">
 
     <ul class="spaced-lg">
       <li>{!! $form->field('main-problem') !!}</li>
-      <li>{!! $form->field('date-first-symptoms', ['class' => 'flex items-center spaced-horizontal', 'title_class' => 'mb-0', 'flatpickr' => ['maxDate' => 'today']]) !!}</li>
-      <li>{!! $form->field('date-pain-since', ['class' => 'flex items-center spaced-horizontal', 'title_class' => 'mb-0', 'flatpickr' => ['maxDate' => 'today']]) !!}</li>
+      <li>
+        {!!
+          $form->field('date-first-symptoms', [
+            'placeholder' => $date_placeholder,
+            'class' => 'flex items-center spaced-horizontal',
+            'title_class' => 'mb-0',
+            'input_class' => 'date-field-compact',
+            'flatpickr' => [
+              'maxDate' => 'today'
+            ]
+          ])
+        !!}
+      </li>
+      <li>
+        {!!
+          $form->field('date-pain-since', [
+            'placeholder' => $date_placeholder,
+            'class' => 'flex items-center spaced-horizontal',
+            'title_class' => 'mb-0',
+            'input_class' => 'date-field-compact',
+            'flatpickr' => [
+                'maxDate' => 'today'
+            ]
+          ])
+        !!}
+      </li>
       <li>
         {!! $form->field('pain-arms-legs') !!}
 
@@ -49,9 +62,33 @@ https://github.com/flatpickr/flatpickr
     <ul class="spaced-lg">
       <li>{!! $form->field('main-pain') !!}</li>
       <li>{!! $form->field('tingling-numbness') !!}</li>
-      <li>{!! $form->field('tingling-numbness-date', ['class' => 'flex items-center spaced-horizontal', 'title_class' => 'mb-0', 'flatpickr' => ['maxDate' => 'today']]) !!}</li>
+      <li>
+        {!!
+          $form->field('tingling-numbness-date', [
+            'placeholder' => $date_placeholder,
+            'class' => 'flex items-center spaced-horizontal',
+            'title_class' => 'mb-0',
+            'input_class' => 'date-field-compact',
+            'flatpickr' => [
+                'maxDate' => 'today'
+            ]
+          ])
+        !!}
+      </li>
       <li>{!! $form->field('strength-loss') !!}</li>
-      <li>{!! $form->field('strength-loss-date', ['class' => 'flex items-center spaced-horizontal', 'title_class' => 'mb-0', 'flatpickr' => ['maxDate' => 'today']]) !!}</li>
+      <li>
+        {!!
+          $form->field('strength-loss-date', [
+            'placeholder' => $date_placeholder,
+            'class' => 'flex items-center spaced-horizontal',
+            'title_class' => 'mb-0',
+            'input_class' => 'date-field-compact',
+            'flatpickr' => [
+                'maxDate' => 'today'
+            ]
+          ])
+        !!}
+      </li>
     </ul>
 
   </div>
@@ -60,7 +97,7 @@ https://github.com/flatpickr/flatpickr
 
 {{-- TREATMENTS --}}
 <div class="bg-white py-2v pl-4v pr-3v xs:px-2v">
-  <h2>{{ __('2. Vos traitements réalisés') }}</h2>
+  <h2>{{ __('2. Vos traitements réalisés', 'ccv') }}</h2>
 
   <div class="spaced-lg mt-1v">
     {!! $form->field('medication', ['title_class' => 'font-light']) !!}
@@ -79,7 +116,7 @@ https://github.com/flatpickr/flatpickr
 
 {{-- IMAGERY --}}
 <div class="bg-light py-2v pl-4v pr-3v xs:px-2v">
-  <h2>{{ __('3. Votre imagerie') }}</h2>
+  <h2>{{ __('3. Votre imagerie', 'ccv') }}</h2>
 
   <p class="text-lg my-1v">
     {{ __("IRM, Scanner, Radiographies, faites-nous parvenir vos imageries les plus récentes en utilisant l'une des méthodes suivantes :", 'ccv') }}
@@ -93,26 +130,26 @@ https://github.com/flatpickr/flatpickr
       <label for="imagery_cd" class="imagery-icon">@svg('imagery-cd')</label>
       <div class="ml-4">
         <div class="text-lg font-normal leading-tight mb-2">
-          {{ __('Vos images sont sur un CD ?') }}
+          {{ __('Vos images sont sur un CD ?', 'ccv') }}
         </div>
         <p>
           {{ __("Envoyez-nous l'ensemble des fichiers contenus sur votre CD en cliquant sur le lien ci-dessous :", "ccv") }}
         </p>
 
-        <a href="javascript://" class="btn" data-update-imagery-type>{{ __('Envoyer vos fichiers') }}</a>
+        <a href="javascript://" class="btn mt-6" data-update-imagery-type>{{ __('Envoyer vos fichiers', 'ccv') }}</a>
       </div>
     </div>
 
     {{-- IMAGES ONLINE --}}
     <div class="imagery-type-wrapper flex mb-8">
-      <input type="radio" id="imagery_web" name="imagery-type" value="{{ __('Images en ligne') }}">
+      <input type="radio" id="imagery_web" name="imagery-type" value="{{ __('Images en ligne', 'ccv') }}">
       <label for="imagery_web" class="imagery-icon">@svg('imagery-web')</label>
       <div class="ml-4">
         <div class="text-lg font-normal leading-tight mb-2">
-          {{ __('Vous avez reçu un lien pour consulter vos images en ligne ?') }}
+          {{ __('Vous avez reçu un lien pour consulter vos images en ligne ?', 'ccv') }}
         </div>
         <p class="mb-0! pb-2">
-          {{ __('Collez votre lien ci-dessous ainsi que vos identifiant et mot de passe :') }}
+          {{ __('Collez votre lien ci-dessous ainsi que vos identifiant et mot de passe :', 'ccv') }}
         </p>
         <textarea name="imagery-online" class="min-h-0 h-20" data-update-imagery-type></textarea>
       </div>
@@ -124,22 +161,22 @@ https://github.com/flatpickr/flatpickr
       <label for="imagery_phone" class="imagery-icon">@svg('imagery-phone')</label>
       <div class="ml-4">
         <div class="text-lg font-normal leading-tight mb-2">
-          {{ __('Vous remplissez cette demande depuis votre téléphone ?') }}
+          {{ __('Vous remplissez cette demande depuis votre téléphone ?', 'ccv') }}
         </div>
         <p>
-          {{ __('Prenez vos images en photo et envoyez-les directement depuis votre téléphone.') }}
+          {{ __('Prenez vos images en photo et envoyez-les directement depuis votre téléphone.', 'ccv') }}
         </p>
-        <a href="javascript://" class="btn" data-update-imagery-type>{{ __('Parcourir') }}</a>
+        <a href="javascript://" class="btn mt-6" data-update-imagery-type>{{ __('Parcourir') }}</a>
       </div>
     </div>
 
     {{-- IMAGES SENT BY POST --}}
     <div class="imagery-type-wrapper flex mb-8">
-      <input type="radio" id="imagery_post" name="imagery-type" value="{{ __('Images envoyé par courrier') }}">
+      <input type="radio" id="imagery_post" name="imagery-type" value="{{ __('Images envoyé par courrier', 'ccv') }}">
       <label for="imagery_post" class="imagery-icon">@svg('imagery-post')</label>
       <div class="ml-4">
         <div class="text-lg font-normal leading-tight mb-2">
-          {{ __('Vous pouvez aussi nous envoyer vos images par courrier :') }}
+          {{ __('Vous pouvez aussi nous envoyer vos images par courrier :', 'ccv') }}
         </div>
         <p>
           CCV MONTPELLIER<br>
@@ -148,10 +185,10 @@ https://github.com/flatpickr/flatpickr
           34170 Castelnau-le-Lez<br>
         </p>
 
-        <div class="custom-checkbox">
+        <div class="custom-checkbox mt-6">
           <label>
             <input type="checkbox" id="images_sent_by_post">
-            <span class="form-label">{{ __('Cochez cette case si vous envoyez vos images par courrier', 'ccv') }}</span>
+            <span class="form-label text-xs">{{ __('Cochez cette case si vous envoyez vos images par courrier', 'ccv') }}</span>
           </label>
         </div>
       </div>
@@ -166,7 +203,7 @@ https://github.com/flatpickr/flatpickr
 
 {{-- CONTACT DETAILS --}}
 <div class="bg-white py-2v pl-4v pr-3v xs:px-2v">
-  <h2>{{ __('4. Vos informations') }}</h2>
+  <h2>{{ __('4. Vos informations', 'ccv') }}</h2>
 
   <div class="form-cols-2 mt-1v">
 
@@ -187,7 +224,7 @@ https://github.com/flatpickr/flatpickr
         'title_class' => 'font-light mb-0',
         'input_class' => 'flex items-center w-16',
         'placeholder' => '',
-        'field_after' => __('ans')
+        'field_after' => __('ans', 'ccv')
       ]) !!}
       {!! $form->field('message', ['title_class' => 'font-light']) !!}
 
@@ -211,6 +248,6 @@ https://github.com/flatpickr/flatpickr
 
   </div>
 
-  <button class="btn block mt-1v ml-auto">{{ __('Envoyer votre demande') }}</button>
+  <button class="btn block mt-1v ml-auto">{{ __('Envoyer votre demande', 'ccv') }}</button>
 
 </div>
diff --git a/wp-content/themes/CCV/resources/views/forms/training.blade.php b/wp-content/themes/CCV/resources/views/forms/training.blade.php
new file mode 100644 (file)
index 0000000..918372b
--- /dev/null
@@ -0,0 +1,132 @@
+{{-- TRAINING FORM --}}
+@php /* @var $form \Cube\Forms\Training */ @endphp
+
+{{-- IDENTITY --}}
+<div class="bg-light text-block-body py-2v pl-4v pr-3v xs:px-2v">
+  <h2>{{ __('1. Votre identité', 'ccv') }}</h2>
+
+  <div class="form-cols-2 mt-1v">
+
+    <div class="spaced-lg">
+      {!! $form->field('last-name', ['show_title' => false]) !!}
+      {!!
+        $form->field('birth-date', [
+          'show_title' => false,
+          'placeholder' => __('Date de naissance (JJ/MM/AAAA)', 'ccv'),
+          'class' => 'flex items-center spaced-horizontal',
+          'title_class' => 'mb-0',
+          'input_class' => 'w-full',
+          'show_icon' => false,
+        ])
+      !!}
+      {!! $form->field('phone', ['show_title' => false]) !!}
+      {!! $form->field('country-residence', ['show_title' => false]) !!}
+    </div>
+
+    <div class="spaced-lg">
+      {!! $form->field('first-name', ['show_title' => false]) !!}
+      {!! $form->field('email', ['show_title' => false]) !!}
+      {!! $form->field('country-training', ['show_title' => false]) !!}
+    </div>
+
+  </div>
+
+  <div class="my-2v spaced-lg">
+    {!! $form->field('speciality') !!}
+    {!! $form->field('status') !!}
+  </div>
+
+</div>
+
+{{-- AREA OF INTERVENTION --}}
+<div class="bg-white py-2v pl-4v pr-3v xs:px-2v">
+  <h2>{{ __('2. Domaine d’intervention', 'ccv') }}</h2>
+
+  <div class="mt-1v">
+
+    <p class="text-lg font-normal mt-10 mb-4">
+      {{ __('Êtes-vous intéressé principalement par la chirurgie lombaire par voie antérieure (TDR & ALIF) ?', 'ccv') }}
+    </p>
+    <ul class="text-block-body">
+      <li>{!! $form->field('experience-lumbar-anterior') !!}</li>
+    </ul>
+
+    <p class="text-lg font-normal mt-12 mb-4">
+      {{ __('Êtes-vous intéressé principalement par la chirurgie percutanée de la scoliose avec pré-implantation scanner ?', 'ccv') }}
+    </p>
+    <ul class="text-block-body">
+      <li>{!! $form->field('experience-scoliosis') !!}</li>
+    </ul>
+
+  </div>
+
+</div>
+
+{{-- TYPE OF TRAINING --}}
+<div class="bg-light py-2v pl-4v pr-3v xs:px-2v">
+  <h2>{{ __('3. Type de formation', 'ccv') }}</h2>
+
+  @php
+    $training_field = 'training-type'; // Field name
+    $training = [ // Text used for radio values and labels
+      __('Visite ponctuelle sur 1 journée avec 2 à 5 interventions', 'ccv'),
+      __('Formation sur 3 à 5 jours aux côtés des différents chirurgiens du CCV', 'ccv'),
+      __('Fellowship au CCV pour une durée variable', 'ccv'),
+    ];
+  @endphp
+
+  {!! $form->title($training_field, ['title_class' => 'text-lg font-normal']) !!}
+
+  <div class="spaced mt-1v">
+
+    {{-- OPTION 1 --}}
+    <div class="bg-white px-8 py-4 text-lg font-normal custom-checkbox">
+      <label>
+        <input type="radio" name="{{ $training_field }}" value="{{ $training[0] }}">
+        <span class="form-label flex items-center">
+        <span class="flex-1 ml-4">
+          {{ $training[0] }}
+          <span class="font-light text-base block">
+            {{ __('Interventions aux côtés du chirurgien et discussion technique de dossier, indications, trucs et astuces opératoires entre les interventions.', 'ccv') }}
+          </span>
+        </span>
+      </span>
+      </label>
+    </div>
+
+    {{-- OPTION 2 --}}
+    <div class="bg-white px-8 py-4 text-lg font-normal custom-checkbox">
+      <label>
+        <input type="radio" name="{{ $training_field }}" value="{{ $training[1] }}">
+        <span class="form-label flex items-center">
+        <span class="flex-1 ml-4">
+          {{ $training[1] }}
+          <span class="font-light text-base block">
+            {{ __('Choix des interventions chaque jour parmi les 5 à 12 chirurgies quotidiennes du CCV. Formation théorique plus structurée sur les abords, les indications, la gestion des complications & discussion de dossiers.', 'ccv') }}
+          </span>
+        </span>
+      </span>
+      </label>
+    </div>
+
+    {{-- OPTION 3 --}}
+    <div class="bg-white px-8 py-4 text-lg font-normal custom-checkbox">
+      <label>
+        <input type="radio" name="{{ $training_field }}" value="{{ $training[2] }}">
+        <span class="form-label flex items-center">
+        <span class="flex-1 ml-4">
+          {{ $training[2] }}
+          <span class="font-light text-base block">
+            {{ __('CV et lettre de motivation exigés.', 'ccv') }}
+          </span>
+          <a href="#" class="btn mt-6">{{ __('Joindre vos documents', 'ccv') }}</a>
+        </span>
+      </span>
+      </label>
+    </div>
+
+  </div>
+
+  <button class="btn text-lg block mt-2v mx-auto">{{ __('Envoyer votre demande', 'ccv') }}</button>
+
+</div>
index f404030bcfd525dcecf8917f48f2e50c26b1a040..f13b62a3b2e703273290a673502743091530761e 100644 (file)
@@ -15,6 +15,7 @@
 
     <div class="nav-secondary absolute top-0 right-0 flex items-center">
 
+      {{-- Language switcher (temporarily disabled)
       <ul class="locales flex mr-2">
         @foreach ($languages as $lang)
           <li class="mr-4">
@@ -24,6 +25,7 @@
           </li>
         @endforeach
       </ul>
+      --}}
 
       @if ($button_1)
         <a href="{{ $button_1->url }}"