@extends('frontend.mediknode.layout.mainlayout') @section('content') @component('frontend.mediknode.components.breadcrumb') @slot('title') {{ $form->name }} @endslot @slot('li_1') {{ $form->name }} @endslot @endcomponent
@component('frontend.mediknode.components.buttons', ['event' => $event]) @endcomponent
@if (session('success'))
{{ session('success') }}
@endif @if (session('error'))
{{ session('error') }}
@endif @if (!session('success')) @if ($form->description)
{!! $form->description !!}
@endif @if ($form->is_closed) {{-- Formulaire clôturé : on garde les conditions ci-dessus, on masque les champs et on affiche le message de clôture --}}
La soumission est clôturée.
@else
@csrf @foreach ($form->fields as $field) @php $settings = $field->settings ?? null; if ($settings && is_array($settings) && isset($settings['is_backoffice_only']) && $settings['is_backoffice_only']) { continue; } $fieldKey = 'field_' . $field->id; $resolvedValue = old($fieldKey, $field->default_value); $isReadonly = false; if ($settings && is_array($settings)) { if (isset($settings['prefill'])) { $prefill = $settings['prefill']; if (is_string($prefill)) { if (str_starts_with($prefill, 'user->')) { $attr = substr($prefill, strlen('user->')); if (isset($user) && isset($user->$attr)) { $resolvedValue = $user->$attr; } } elseif ( str_starts_with($prefill, 'event->') ) { $attr = substr($prefill, strlen('event->')); if (isset($event) && isset($event->$attr)) { $resolvedValue = $event->$attr; } } else { // literal value or direct user attribute name if ( isset($user) && isset($user->{$prefill}) ) { $resolvedValue = $user->{$prefill}; } else { $resolvedValue = $prefill; } } } } if ( isset($settings['readonly']) && $settings['readonly'] ) { $isReadonly = true; } } @endphp
@switch($field->type) @case('text') required ? 'required' : '' }} {{ $isReadonly ? 'readonly' : '' }} autocomplete="off"> @break @case('textarea') @if ($field->settings && isset($field->settings['max_words']))
@endif @break @case('select') @if ($isReadonly) @endif @break @case('radio') @if ($field->options) @foreach ($field->options as $optIndex => $option)
id, $resolvedValue) == trim($option) ? 'checked' : '' }} {{ $field->required ? 'required' : '' }} {{ $isReadonly ? 'disabled' : '' }}>
@endforeach @if ($isReadonly) @endif @endif @break @case('checkbox')
id) ? 'checked' : '' }} {{ $field->required ? 'required' : '' }}>
@break @case('number') required ? 'required' : '' }} @if ($field->settings && isset($field->settings['min'])) min="{{ $field->settings['min'] }}" @endif @if ($field->settings && isset($field->settings['max'])) max="{{ $field->settings['max'] }}" @endif> @break @case('url') required ? 'required' : '' }} {{ $isReadonly ? 'readonly' : '' }}> @break @case('date') required ? 'required' : '' }} {{ $isReadonly ? 'readonly' : '' }}> @break @case('video') {{-- Champ caché qui recevra le driveFileId après upload --}}
required ? 'required' : '' }} data-field-id="{{ $field->id }}" data-required="{{ $field->required ? '1' : '0' }}">

🔒 Confidentialité : Votre vidéo est transférée directement vers l'espace de stockage sécurisé de l'organisation. Aucun autre participant ne peut consulter votre travail. Ne fermez pas cette page avant la confirmation.

@break @endswitch @if ($field->help_text)
{{ $field->help_text }}
@endif @error('field_' . $field->id) {{ $message }} @enderror
Le champ "{{ $field->label }}" est obligatoire.
@endforeach
@endif @if ($form->footer_html)
{!! $form->footer_html !!}
@endif @endif
@component('frontend.mediknode.components.scrolltotop') @endcomponent @endsection