first commit

This commit is contained in:
Arnaud Delcasse
2025-12-30 12:14:33 +01:00
commit 95e3bad443
105 changed files with 4997 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
{{ $action := .Get "action" | default "/api/contact" }}
{{ $buttonText := .Get "buttonText" | default "Envoyer" }}
{{ $lastnameLabel := .Get "lastnameLabel" | default "Nom" }}
{{ $firstnameLabel := .Get "firstnameLabel" | default "Prénom" }}
{{ $privacyText := .Get "privacyText" | default "La protection de vos données est au coeur de nos préoccupations. Celles-ci sont confidentielles et ne seront utilisées que dans le cadre de la mobilité solidaire. Vous pouvez à tout moment les modifier où demander à les faire supprimer de notre base de données." }}
{{/* Récupérer les champs dynamiques : d'abord depuis le paramètre, sinon depuis le front matter */}}
{{ $fieldsParam := .Get "fields" }}
{{ $fields := slice }}
{{ if $fieldsParam }}
{{ $fields = transform.Unmarshal $fieldsParam }}
{{ else }}
{{ $fields = .Page.Params.formFields }}
{{ end }}
<form class="contact-form" action="{{ $action }}" method="POST">
<div class="contact-form-row">
<div class="contact-form-group">
<label for="lastname">{{ $lastnameLabel }}</label>
<input type="text" id="lastname" name="lastname" required />
</div>
<div class="contact-form-group">
<label for="firstname">{{ $firstnameLabel }}</label>
<input type="text" id="firstname" name="firstname" required />
</div>
</div>
{{/* Champs dynamiques */}}
{{ if $fields }}
{{ range $index, $field := $fields }}
{{ $fieldId := $field.name | default (printf "field_%d" $index) }}
{{ $fieldRequired := $field.required | default false }}
{{ if eq $field.type "multicheckboxes" }}
<div class="contact-form-group contact-form-checkboxes">
<span class="contact-form-checkbox-label">{{ $field.label }}</span>
<div class="contact-form-checkbox-options">
{{ range $optIndex, $option := $field.options }}
<label class="contact-form-checkbox">
<input type="checkbox" name="{{ $fieldId }}[]" value="{{ $option.value | default $option.label }}" />
<span>{{ $option.label }}</span>
</label>
{{ end }}
</div>
</div>
{{ else if eq $field.type "textarea" }}
<div class="contact-form-group">
<label for="{{ $fieldId }}">{{ $field.label }}</label>
<textarea id="{{ $fieldId }}" name="{{ $fieldId }}" rows="{{ $field.rows | default 6 }}" {{ if $fieldRequired }}required{{ end }}></textarea>
</div>
{{ else }}
<div class="contact-form-group">
<label for="{{ $fieldId }}">{{ $field.label }}</label>
<input type="{{ $field.type | default "text" }}" id="{{ $fieldId }}" name="{{ $fieldId }}" {{ if $fieldRequired }}required{{ end }} />
</div>
{{ end }}
{{ end }}
{{ else }}
{{/* Champs par défaut si aucun champ dynamique n'est défini */}}
<div class="contact-form-group">
<label for="email">Votre adresse mail</label>
<input type="email" id="email" name="email" required />
</div>
<div class="contact-form-group">
<label for="subject">Objet de votre demande</label>
<input type="text" id="subject" name="subject" />
</div>
<div class="contact-form-group">
<label for="message">Votre message</label>
<textarea id="message" name="message" rows="6" required></textarea>
</div>
{{ end }}
<button type="submit" class="contact-form-submit">{{ $buttonText }}</button>
<p class="contact-form-privacy">{{ $privacyText }}</p>
</form>