first commit
This commit is contained in:
76
themes/mms43/layouts/shortcodes/contact-form.html
Normal file
76
themes/mms43/layouts/shortcodes/contact-form.html
Normal 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>
|
||||
Reference in New Issue
Block a user