'input_class' => '',
'show_title' => true,
'show_labels' => true,
+ 'show_icon' => true,
'placeholder' => $field['title'],
'field_before' => '',
'field_after' => '',
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;
--- /dev/null
+<?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);
+ }
+}
// List of all possible forms
$templates = [
'consultation' => Forms\Consultation::class,
+ 'training' => Forms\Training::class,
];
if (array_key_exists($name, $templates)) {
// Common form styling
.form-field-title
font-weight: 400
- margin-bottom: 0.5em
+ margin-bottom: 0.75em
.form-field-input
> *:not(:last-child)
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
{{-- 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') !!}
<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>
{{-- 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']) !!}
{{-- 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') }}
<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>
<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>
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>
{{-- 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">
'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']) !!}
</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>
--- /dev/null
+{{-- 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>
<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">
</li>
@endforeach
</ul>
+ --}}
@if ($button_1)
<a href="{{ $button_1->url }}"