From 5d0c809204d3374113f67b26addafb27b2d5cfa2 Mon Sep 17 00:00:00 2001 From: soufiane Date: Mon, 23 Jun 2025 18:18:45 +0200 Subject: [PATCH] wip #7601 @6:00 --- .../src/Forms/Builder/Fields/Password.php | 12 ++ .../cube/src/Forms/Consultation.php | 129 +++++++++++- .../views/forms/consultation.blade.php | 191 +++++++++++++++++- 3 files changed, 329 insertions(+), 3 deletions(-) create mode 100644 wp-content/mu-plugins/cube/src/Forms/Builder/Fields/Password.php diff --git a/wp-content/mu-plugins/cube/src/Forms/Builder/Fields/Password.php b/wp-content/mu-plugins/cube/src/Forms/Builder/Fields/Password.php new file mode 100644 index 00000000..e54f9f9c --- /dev/null +++ b/wp-content/mu-plugins/cube/src/Forms/Builder/Fields/Password.php @@ -0,0 +1,12 @@ +get_name() .'" placeholder="'. $settings['placeholder'] .'" '. $settings['validation'] .'>'; + } +} diff --git a/wp-content/mu-plugins/cube/src/Forms/Consultation.php b/wp-content/mu-plugins/cube/src/Forms/Consultation.php index 5722bc8e..07c791d4 100644 --- a/wp-content/mu-plugins/cube/src/Forms/Consultation.php +++ b/wp-content/mu-plugins/cube/src/Forms/Consultation.php @@ -7,6 +7,7 @@ use Cube\Forms\Builder\Fields\Checkbox; use Cube\Forms\Builder\Fields\Date; use Cube\Forms\Builder\Fields\Email; use Cube\Forms\Builder\Fields\Hidden; +use Cube\Forms\Builder\Fields\Password; use Cube\Forms\Builder\Fields\Radio; use Cube\Forms\Builder\Fields\Select; use Cube\Forms\Builder\Fields\Text; @@ -53,6 +54,7 @@ class Consultation extends Base { _x('Email', 'Email', 'ccv'), _x('Phone', 'Phone', 'ccv'), ]), + Textarea::field('find_us', 'How did you find us ?'), Text::field('age', __('Âge :', 'ccv')), Text::field('occupation', __('Occupation', 'ccv')), Text::field('nationality', __('Nationality', 'ccv')), @@ -65,6 +67,12 @@ class Consultation extends Base { __('No', 'ccv'), ]), + Radio::field('idiopathic-ad-scoliosis', __('Have you been diagnosed with Idiopathic Adolescent Scoliosis?', 'ccv')) + ->options([ + __('Yes', 'ccv'), + __('No', 'ccv'), + ]), + Radio::field('chronic-pain', __('Are you suffering with (chronic) back pain and sciatica?', 'ccv')) ->options([ __('Yes', 'ccv'), @@ -92,7 +100,8 @@ class Consultation extends Base { __('No', 'ccv'), ]), - Radio::field('willing-to-travel', __('Are you willing to travel to Montpellier, France? Your stay would be, typically, 9 days in total.', 'ccv')) + + Radio::field('willing-to-travel', __('Are you willing to travel to Montpellier, France? Your stay would typically be, 9 days in total.', 'ccv')) ->options([ __('Yes', 'ccv'), __('No', 'ccv'), @@ -103,7 +112,123 @@ class Consultation extends Base { __('Yes', 'ccv'), __('No', 'ccv'), ]), - ]); + + //=== PERSONAL INFORMATION + Select::field('surgeon', __('Chirurgien spécifique', 'ccv')) + ->required(false) + ->options([ + 'Dr Guilhaume GENESTE' => 'dr.geneste@ccv-montpellier.fr', + 'Dr Grégory EDGARD-ROSA' => 'dr.edgard-rosa@ccv-montpellier.fr', + 'Dr Martin GRAU ORTIZ' => 'dr.grauortiz@ccv-montpellier.fr', + 'Dr Caroline HIRSH' => 'dr.hirsch@ccv-montpellier.fr', + ]), + Text::field('last-name', __('Nom', 'ccv')), + Text::field('first-name', __('Prénom', 'ccv')), + Radio::field('sex', __('Sexe :', 'ccv')) + ->options([ + _x('M', 'Sexe (M)', 'ccv'), + _x('F', 'Sexe (F)', 'ccv'), + ]), + Date::field('birthdate', __('Date de naissance', 'ccv')), + Text::field('size', 'Height:'), + Text::field('weight', 'Weight:'), + Text::field('profession', __('Profession', 'ccv')), + Text::field('postcode', __('Code postal', 'ccv')), + Text::field('city', __('Ville', 'ccv')), + Text::field('country', __('Pays', 'ccv')), + Text::field('phone', __('Tel', 'ccv')), + Email::field('email', __('Email', 'ccv')), + + // Social cover + Radio::field('social-cover', __('Couverture sociale :', 'ccv')) + ->options([ + __('Sécurité sociale', 'ccv'), + __('Assurance privée', 'ccv'), + __('Régime de la CMU/ASC/PUMa/CSS', 'ccv'), + __('Accident du travail', 'ccv'), + ]), + Date::field('work-accident', __('Si accident du travail à quelle date ?', 'ccv'))->required(false), + + // Chirurgical solutions + Radio::field('chirurgical-solutions', __('Êtes-vous à la recherche de solutions chirurgicales pour votre problème de dos ?', 'ccv')) + ->options([ + __('Oui, s\'il existe des solutions satisfaisantes', 'ccv'), + __('Non, pas encore à ce stade', 'ccv'), + ]), + //== SYMPTOMS + Radio::field('main-problem', __('Problème principal', 'ccv')) + ->options([ + __('Lumbar back pain', 'ccv'), + __('Sciatica', 'ccv'), + __('Idiopathic Adolescent Scoliosis', 'ccv'), + ]), + Date::field('date-first-symptoms', __('Date des premiers symptômes :', 'ccv')), + Date::field('date-pain-since', __('Douleurs permanentes depuis (le cas échéant) :', 'ccv'))->required(false), + Binary::field('pain-arms-legs', __('Avez-vous des douleurs dans les bras ou les jambes (sciatiques, cruralgies, névralgies) ?', 'ccv')), + Checkbox::field('pain-arms-legs-detail', 'If yes, please tick the relevant limbs in the diagram below:') + ->required(false) + ->options([ + __('Haut du bras droit', 'ccv'), + __('Haut du bras gauche', 'ccv'), + __('Avant-bras droit', 'ccv'), + __('Avant-bras gauche', 'ccv'), + __('Haut de la jambe droite', 'ccv'), + __('Haut de la jambe gauche', 'ccv'), + __('Bas de la jambe droite', 'ccv'), + __('Bas de la jambe gauche', 'ccv'), + ]), + + Radio::field('main-pain', __('La douleur principale est-elle ?', 'ccv')) + ->options([ + __('Dans la colonne', 'ccv'), + __('Dans les membres', 'ccv'), + __('Les deux', 'ccv'), + ]), + + Binary::field('tingling-numbness', __('Avez-vous des fourmillements ou une sensation d’engourdissement dans un des membres ? ', 'ccv')), + Date::field('tingling-numbness-date', __('Si oui depuis quand ?', 'ccv'))->required(false), + Binary::field('strength-loss', __('Avez-vous une perte de force importante dans un des membres ?', 'ccv')), + Date::field('strength-loss-date', __('Si oui depuis quand ?', 'ccv'))->required(false), + Textarea::field('symptoms', 'Tell us in a few words how your symptoms disable you most:'), + Textarea::field('surgeries', __('Indiquez ici vos précédentes chirurgies de la colonne et leurs dates (le cas échéant)', 'ccv'))->required(false), + + // Unique session identifier for uploads that go directly to CCV's NAS (upload.ccv-montpellier.fr) + // Made up of timestamp YYMMDDHHMM + nonce + Hidden::field('imagery-phone-token', __('ID sur le NAS', 'ccv'))->value(date('ymdHi') . '_' . wp_create_nonce('NAS-upload')), + + //=== TREATMENTS + Binary::field('kine-osteo', __('Kinésithérapie ou ostéopathie', 'ccv')), + Binary::field('infiltration', __('Infiltration ou thermocoagulation', 'ccv')), + Binary::field('rheumatological', __('Suivi rhumatologique ou médecine spécialisée', 'ccv')), + Binary::field('corset', __('Corset ou ceinture lombaire', 'ccv')), + Binary::field('hospitalisation', __('Séjour en hospitalisation', 'ccv')), + Textarea::field('medication', __('Indiquez ici les médicaments que vous avez pris pour vos douleurs (le cas échéant)', 'ccv'))->required(false), + //=== IMAGERY + // This is a special case and will be output manually so only using this for the e-mail label + Textarea::field('imagery-online', __('Images en ligne', 'ccv'))->required(false), // Again, a manually handled field + Checkbox::field('imagery-posted', __('Images envoyées par courrier', 'ccv'))->required(false), + Radio::field('imagery-type', __('Imagerie', 'ccv'))->required(false), + Radio::field('imagery-condition', __('IRM de moins de 6 mois', 'ccv')) + ->options([ + __('J\'ai bien noté que mon dossier ne pourra être étudié si je ne fournis pas une IRM de moins de 6 mois', 'ccv'), + ]), + + Text::field('link-1', __('Lien internet 1', 'ccv'))->required(false), + Text::field('id-1', __('Identifiant', 'ccv'))->required(false), + Password::field('pwd-1', __('Mot de passe', 'ccv'))->required(false), + Text::field('link-2', __('Lien internet 2', 'ccv'))->required(false), + Text::field('id-2', __('Identifiant 2', 'ccv'))->required(false), + Password::field('pwd-2', __('Mot de passe 2', 'ccv'))->required(false), + Text::field('link-3', __('Lien internet 3', 'ccv'))->required(false), + Text::field('id-3', __('Identifiant 3', 'ccv'))->required(false), + Password::field('pwd-3', __('Mot de passe 3', 'ccv'))->required(false), + Text::field('link-4', __('Lien internet 4', 'ccv'))->required(false), + Text::field('id-4', __('Identifiant 4', 'ccv'))->required(false), + Password::field('pwd-4', __('Mot de passe 4', 'ccv'))->required(false), + + Textarea::field('message', __('Avez vous un message (ou une demande) spécifique à nous formuler ?', 'ccv'))->required(false), + + ]); } /*public function pre_process() { diff --git a/wp-content/themes/CCV/resources/views/forms/consultation.blade.php b/wp-content/themes/CCV/resources/views/forms/consultation.blade.php index 01e369f8..b874cfc5 100644 --- a/wp-content/themes/CCV/resources/views/forms/consultation.blade.php +++ b/wp-content/themes/CCV/resources/views/forms/consultation.blade.php @@ -23,9 +23,26 @@
{!! $form->field('sexe', ['class' => 'flex items-center spaced-horizontal', 'title_class' => 'font-light mb-0']) !!} +
+ {!! $form->field('size', [ + 'class' => 'flex items-center spaced-horizontal', + 'title_class' => 'font-light mb-0', + 'input_class' => 'flex items-center w-24', + 'placeholder' => '', + 'field_after' => __('cm', 'ccv') + ]) !!} + {!! $form->field('weight', [ + 'class' => 'flex items-center spaced-horizontal', + 'title_class' => 'font-light mb-0', + 'input_class' => 'flex items-center w-24', + 'placeholder' => '', + 'field_after' => __('kg', 'ccv') + ]) !!} +
{!! $form->field('occupation', ['show_title' => false]) !!} {!! $form->field('nationality', ['show_title' => false]) !!} {!! $form->field('contact_preference', ['class' => 'flex items-center spaced-horizontal', 'title_class' => 'font-light mb-0']) !!} + {!! $form->field('find_us') !!}
@@ -66,12 +83,183 @@
  • {!! $form->field('lumbar-mri-scan') !!}
  • + + + +
    +

    {{ __('1. Vos symptômes', 'ccv') }}

    + + @php $date_placeholder = __('JJ/MM/AAAA', 'ccv'); @endphp + +
    + +
      +
    • {!! $form->field('main-problem') !!}
    • +
    • + {!! + $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' + ] + ]) + !!} +
    • +
    • + {!! + $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' + ] + ]) + !!} +
    • +
    • + {!! $form->field('pain-arms-legs') !!} + +
      + {!! $form->title('pain-arms-legs-detail', ['title_class' => 'pr-4']) !!} +
      +
      + + + {{ __('Droite', 'ccv') }} + {{ __('Gauche', 'ccv') }} + + @foreach ($form->get_field('pain-arms-legs-detail')->get_options() as $option) + + @endforeach +
      +
      +
      + +
    • +
    • {!! $form->field('main-pain') !!}
    • +
    + +
      +
    • {!! $form->field('tingling-numbness') !!}
    • +
    • + {!! + $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' + ] + ]) + !!} +
    • +
    • {!! $form->field('strength-loss') !!}
    • +
    • + {!! + $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' + ] + ]) + !!} +
    • + {!! $form->field('symptoms', ['title_class' => 'font-light']) !!} +
    + +
    + +
    + + +
    +

    {{ __('2. Vos traitements réalisés', 'ccv') }}

    + +
    + {!! $form->field('medication', ['title_class' => 'font-light']) !!} + +
    + {!! $form->field('kine-osteo') !!} + {!! $form->field('corset') !!} + {!! $form->field('hospitalisation') !!} + {!! $form->field('infiltration') !!} +
    + + {!! $form->field('rheumatological') !!} + + {!! $form->field('surgeries', ['title_class' => 'font-light']) !!} +
    + +
    + + +
    +

    {{ __('3. Votre imagerie', 'ccv') }}

    + +
    + +
    + +

    + {{ __("Faites-nous parvenir également vos imageries les plus récentes (Scanner, Radiographies…) en utilisant l'une des méthodes suivantes :", 'ccv') }} +

    + +
    + {{-- IMAGES ONLINE --}} +
    +
    + +
    +
    + {{ __('Vous avez reçu un lien pour consulter vos images en ligne ?', 'ccv') }} +
    +

    + {{ __('Collez votre lien ci-dessous ainsi que vos identifiant et mot de passe :', 'ccv') }} +

    +
    +
    +
    +
    + @for($i = 1; $i < 5; $i++) + + @endfor +
    +
    +
    +
    +

    + {{ __("Aucune demande d’avis ne pourra être étudiée sans imagerie médicale associée.", 'ccv') }} +

    + + {!! $form->button(__('Submit', 'ccv'), [ 'class' => 'btn block mt-2v mx-auto', @@ -81,6 +269,7 @@
    + {{-- Custom classes for form message container --}} @push('message_class') py-2v pl-4v pr-3v xs:px-2v -- 2.39.5