Globinours/app/Views/animal_form.php

717 lines
50 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/** @var array $animal */
/** @var array $statuses */
/** @var array $speciesOptions */
// Liste races (tu pourras lexternaliser plus tard en table ref)
$breeds = [
'Chat Européen',
'Abyssin','Bengal','British Shorthair','Chartreux','Maine Coon','Norvégien',
'Persan','Ragdoll','Siamois','Sphynx','Sacré de Birmanie','Scottish Fold',
'Autre / Inconnu',
];
$statuses = ['refuge' => t('status.refuge'),'fa' => t('status.fa'),'fa_permanente' => t('status.fa_permanente'),'chat_libre' => t('status.chat_libre'),'quarantaine' => t('status.quarantaine'),'soin' => t('status.soin'),'isolation' => t('status.isolation'),'hospitalise' => t('status.hospitalise'),'reserve' => t('status.reserve'),'adopte' => t('status.adopte'),'enfui' => t('status.enfui')];
if (in_array((string)($animal['status'] ?? ''), ['decede','décédé'], true)) {
$statuses['decede'] = t('status.decede');
}
$sexLabels = [
'M' => t('sex.male'),
'F' => t('sex.female'),
'U' => t('animals.to_define'),
];
$hairTypes = [
'' => t('animals.to_define'),
'court' => t('animals.short_hair'),
'mi-long' => t('animals.medium_hair'),
'long' => t('animals.long_hair'),
'frise' => t('animals.curly_hair'),
'sans-poil' => t('animals.hairless'),
];
$lifeProfileOptions = [
'unknown' => t('animals.test_unknown'),
'yes' => 'Oui',
'no' => 'Non',
];
$coatColors = [
'Bicolore Noir / Blanc',
'Bicolore Gris / Blanc',
'Bicolore Roux / Blanc',
'Bicolore Tigré et Blanc',
'Gris',
'Roux',
'Noir',
'Chocolat',
'Blanc',
'Tricolore / Calico',
'Écaille de tortue',
'Colourpoint / Siamois',
'Tigré / Tabby',
];
$breed = (string)($animal['breed'] ?? '');
$id = (int)($animal['id'] ?? 0);
$isEdit = $id > 0;
$isArchivedEdit = $isEdit && !empty($animal['archived_at']);
$status = (string)($animal['status'] ?? 'refuge');
$sex = (string)($animal['sex'] ?? 'U');
$birth_is_estimated = (int)($animal['birth_is_estimated'] ?? 0);
$birth_estimated_months = (int)($animal['birth_estimated_months'] ?? 0);
$estYears = $birth_estimated_months > 0 ? intdiv($birth_estimated_months, 12) : '';
$estMonths = $birth_estimated_months > 0 ? ($birth_estimated_months % 12) : '';
?>
<div class="row row-cards">
<div class="col-12">
<form method="post" action="/animal/save" class="card">
<div class="card-body">
<input type="hidden" name="id" value="<?= $id ?>">
<?php if ($isArchivedEdit): ?><input type="hidden" name="status" value="<?= h($status) ?>">
<div class="alert alert-info">📦 <?= h(t('animal.archive_edit_help')) ?></div><?php endif; ?>
<div class="row g-3">
<!-- IDENTITÉ -->
<div class="col-12">
<div class="card card-sm">
<div class="card-status-top bg-primary"></div>
<div class="card-body">
<div class="d-flex align-items-center mb-3">
<span class="status status-blue me-2"></span>
<h4 class="m-0"><?= h(t('animal.tab.identity')) ?></h4>
</div>
<div class="row g-3">
<div class="col-12 col-md-8">
<label class="form-label"><?= h(t('common.name')) ?></label>
<input class="form-control" name="name" value="<?= h($animal['name'] ?? '') ?>"
required>
</div>
<div class="col-12 col-md-4">
<label class="form-label required"><?= h(t('animal.species')) ?></label>
<select class="form-select" name="species" id="animalSpecies" required>
<?php foreach (($speciesOptions ?? []) as $option): ?>
<option value="<?= h($option['code']) ?>"
data-category="<?= h($option['category']) ?>"
<?= SpeciesService::normalize((string)($animal['species'] ?? 'chat')) === $option['code'] ? 'selected' : '' ?>>
<?= h($option['icon'] . ' ' . $option['name']) ?><?= empty($option['active']) ? ' (' . h(t('common.disabled')) . ')' : '' ?>
</option>
<?php endforeach; ?>
</select>
<div class="form-hint"><?= h(t('animal.form.species_hint')) ?></div>
</div>
<div class="col-12 col-md-4">
<label class="form-label"><?= h(t('common.weight')) ?></label>
<input class="form-control" name="initial_weight" type="number" step="0.01"
min="0" value="<?= h($animal['initial_weight'] ?? '') ?>"
placeholder="ex: 4.25">
<div class="form-hint"><?= h(t('animal.form.weight_hint')) ?></div>
</div>
<div class="col-12 col-md-4">
<label class="form-label"><?= h(t('animal.status')) ?></label>
<select class="form-select" name="status_display" id="status"
<?= $isArchivedEdit ? 'disabled' : '' ?>>
<?php foreach ($statuses as $k => $label): ?>
<option value="<?= h($k) ?>" <?= ($status === $k) ? 'selected' : '' ?>>
<?= h($label) ?></option>
<?php endforeach; ?>
</select>
<div class="form-hint"><?= h(t('animal.form.status_hint')) ?></div>
</div>
<div class="col-12 col-md-4" id="refugeRoomField">
<label class="form-label"><?= h(t('animal.form.shelter_room')) ?></label>
<select class="form-select" name="refuge_room"
<?= $isArchivedEdit ? 'disabled' : '' ?>>
<option value=""><?= h(t('animal.assign')) ?></option>
<?php foreach (($shelterRooms ?? []) as $room): ?><option
value="<?= h($room['code']) ?>"
data-status="<?= h($room['status_code']) ?>"
<?= (($animal['refuge_room'] ?? '') === $room['code']) ? 'selected' : '' ?>>
<?= h($room['name']) ?></option><?php endforeach; ?>
</select>
</div>
<div class="col-12 col-md-4" id="fosterContactField">
<label class="form-label"><?= h(t('animal.form.foster')) ?></label>
<select class="form-select" name="foster_contact_id">
<option value=""><?= h(t('animal.form.provide_later')) ?></option>
<?php foreach (($fosterContacts ?? []) as $contact): ?>
<option value="<?= (int)$contact['id'] ?>"
<?= (int)($currentFosterId ?? 0) === (int)$contact['id'] ? 'selected' : '' ?>>
<?= h($contact['name'] . (!empty($contact['city']) ? ' · ' . $contact['city'] : '')) ?>
</option>
<?php endforeach; ?>
</select>
<div class="form-hint"><?= h(t('animal.form.foster_hint')) ?></div>
</div>
<div class="col-12 d-none" id="freeCatFields">
<div class="card bg-green-lt border-green-lt">
<div class="card-body py-3">
<div class="d-flex align-items-center gap-2 mb-3"><span
aria-hidden="true">🌿</span>
<div><strong><?= h(t('freecat.journey')) ?></strong>
<div class="text-muted small">
<?= h(t('freecat.journey_help')) ?></div>
</div>
</div>
<div class="row g-3">
<div class="col-md-6"><label
class="form-label"><?= h(t('freecat.site')) ?></label><input
class="form-control" name="free_cat_site_name"
value="<?= h($animal['free_cat_site_name'] ?? '') ?>"
maxlength="180"
placeholder="<?= h(t('freecat.site_example')) ?>"></div>
<div class="col-md-3"><label
class="form-label"><?= h(t('common.city')) ?></label><input
class="form-control" name="free_cat_city"
value="<?= h($animal['free_cat_city'] ?? '') ?>"
maxlength="120"></div>
<div class="col-md-3"><label
class="form-label"><?= h(t('freecat.tracking_state')) ?></label><select
class="form-select"
name="free_cat_tracking_status"><?php foreach (['present' => t('freecat.present'),'missing' => t('freecat.missing'),'moved' => t('freecat.moved')] as $key => $label): ?>
<option value="<?= h($key) ?>"
<?= ($animal['free_cat_tracking_status'] ?? 'present') === $key ? 'selected' : '' ?>>
<?= h($label) ?></option><?php endforeach; ?></select>
<div class="form-hint"><?= h(t('freecat.death_help')) ?></div>
</div>
<div class="col-md-6"><label
class="form-label"><?= h(t('freecat.precise_location')) ?>
<span
class="text-muted">(<?= h(t('common.internal')) ?>)</span></label><input
class="form-control" name="free_cat_address"
value="<?= h($animal['free_cat_address'] ?? '') ?>"
maxlength="255"
placeholder="<?= h(t('freecat.address_placeholder')) ?>">
</div>
<div class="col-md-6"><label
class="form-label"><?= h(t('freecat.caretaker')) ?></label><select
class="form-select" name="free_cat_caretaker_contact_id">
<option value=""><?= h(t('common.not_provided')) ?></option>
<?php foreach (($freeCatCaretakers ?? []) as $contact): ?>
<option value="<?= (int)$contact['id'] ?>"
<?= (int)($animal['free_cat_caretaker_contact_id'] ?? 0) === (int)$contact['id'] ? 'selected' : '' ?>>
<?= h($contact['name'] . (!empty($contact['city']) ? ' · ' . $contact['city'] : '')) ?>
</option><?php endforeach; ?>
</select>
<div class="form-hint"><?= h(t('freecat.directory_person')) ?>
</div>
</div>
<div class="col-md-6"><label
class="form-label"><?= h(t('freecat.capture_date')) ?></label><input
class="form-control" type="date" name="free_cat_captured_at"
value="<?= h($animal['free_cat_captured_at'] ?? '') ?>">
</div>
<div class="col-md-6"><label
class="form-label"><?= h(t('freecat.release_date')) ?></label><input
class="form-control" type="date" name="free_cat_released_at"
value="<?= h($animal['free_cat_released_at'] ?? '') ?>">
</div>
</div>
</div>
</div>
</div>
<?php if (!empty($animal['id'])): ?>
<div class="col-12 col-md-4">
<label class="form-label"><?= h(t('animal.form.location_reason')) ?></label>
<input class="form-control" name="location_change_reason" maxlength="255"
placeholder="Facultatif : changement de salle, retour de FA…"
<?= $isArchivedEdit ? 'disabled' : '' ?>>
<div class="form-hint"><?= h(t('animal.form.location_reason_hint')) ?></div>
</div>
<?php endif; ?>
<div class="col-12 col-md-4">
<label class="form-label"><?= h(t('animal.breed')) ?></label>
<input class="form-control" name="breed" list="breedSuggestions"
value="<?= h($breed) ?>" placeholder="Race ou type, facultatif">
<datalist id="breedSuggestions"><?php foreach ($breeds as $b): ?><option
value="<?= h($b) ?>"><?php endforeach; ?></datalist>
</div>
<div class="col-12 col-md-6">
<label class="form-label"><?= h(t('animal.coat')) ?></label>
<?php $currentColor = trim((string)($animal['color'] ?? '')); ?>
<div class="input-group">
<span class="input-group-text"><span id="coatColorSwatch"
class="coat-swatch"
style="<?= h(coat_swatch_style($currentColor)) ?>"></span></span>
<select class="form-select" name="color" id="coatColorSelect">
<option value="" data-swatch="<?= h(coat_swatch_style('')) ?>"
<?= $currentColor === '' ? 'selected' : '' ?>>
<?= h(t('animals.to_define')) ?></option>
<?php if ($currentColor !== '' && !in_array($currentColor, $coatColors, true)): ?>
<option value="<?= h($currentColor) ?>"
data-swatch="<?= h(coat_swatch_style($currentColor)) ?>" selected>
<?= h($currentColor) ?> (valeur actuelle)</option>
<?php endif; ?>
<?php foreach ($coatColors as $coatColor): ?>
<option value="<?= h($coatColor) ?>"
data-swatch="<?= h(coat_swatch_style($coatColor)) ?>"
<?= $currentColor === $coatColor ? 'selected' : '' ?>>
<?= h($coatColor) ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="col-12 col-md-6">
<label class="form-label"><?= h(t('animal.form.hair_type')) ?></label>
<select class="form-select" name="hair_type">
<?php foreach ($hairTypes as $value => $label): ?>
<option value="<?= h($value) ?>"
<?= ((string)($animal['hair_type'] ?? '') === $value) ? 'selected' : '' ?>>
<?= h($label) ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="col-12 col-md-3">
<label class="form-label"><?= h(t('animal.sex')) ?></label>
<select class="form-select" name="sex">
<option value="U" <?= $sex === 'U' ? 'selected' : '' ?>>
<?= h(t('animals.to_define')) ?></option>
<option value="M" <?= $sex === 'M' ? 'selected' : '' ?>>
<?= h(t('sex.male')) ?></option>
<option value="F" <?= $sex === 'F' ? 'selected' : '' ?>>
<?= h(t('sex.female')) ?></option>
</select>
</div>
<div class="col-12 col-md-3">
<label class="form-label"><?= h(t('animal.form.sterilization')) ?></label>
<select class="form-select" name="sterilization_status"
id="sterilizationStatus">
<option value="unknown"
<?= (($animal['sterilization_status'] ?? 'unknown') === 'unknown') ? 'selected' : '' ?>>
<?= h(t('common.unknown')) ?></option>
<option value="no"
<?= (($animal['sterilization_status'] ?? 'unknown') === 'no') ? 'selected' : '' ?>>
<?= h(t('animals.not_sterilized')) ?></option>
<option value="yes"
<?= (($animal['sterilization_status'] ?? 'unknown') === 'yes') ? 'selected' : '' ?>>
<?= h(t('animal.sterilized')) ?></option>
</select>
</div>
<div class="col-12 row g-3 m-0 p-0 <?= (($animal['sterilization_status'] ?? 'unknown') === 'yes') ? '' : 'd-none' ?>"
id="sterilizationDetails">
<div class="col-md-4"><label
class="form-label"><?= h(t('animal.form.sterilization_date')) ?></label><input
class="form-control" type="date" name="sterilization_date"
value="<?= h($animal['sterilization_date'] ?? '') ?>"></div>
<div class="col-md-4"><label
class="form-label"><?= h(t('animal.form.veterinarian')) ?></label><select
class="form-select" name="sterilization_vet_contact_id">
<option value=""><?= h(t('common.not_provided')) ?></option>
<?php foreach (($sterilizationVets ?? []) as $contact): ?><option
value="<?= (int)$contact['id'] ?>"
<?= ((int)($animal['sterilization_vet_contact_id'] ?? 0) === (int)$contact['id']) ? 'selected' : '' ?>>
<?= h($contact['name']) ?></option><?php endforeach; ?>
</select></div>
<div class="col-md-4"><label
class="form-label"><?= h(t('animal.form.clinic')) ?></label><select
class="form-select" name="sterilization_clinic_contact_id">
<option value=""><?= h(t('common.not_provided')) ?></option>
<?php foreach (($sterilizationClinics ?? []) as $contact): ?><option
value="<?= (int)$contact['id'] ?>"
<?= ((int)($animal['sterilization_clinic_contact_id'] ?? 0) === (int)$contact['id']) ? 'selected' : '' ?>>
<?= h($contact['name']) ?></option><?php endforeach; ?>
</select></div>
</div>
<div class="col-12">
<hr class="my-1">
<h5 class="mb-0"><?= h(t('animal.form.identification')) ?></h5>
</div>
<div class="col-12 col-md-3"><label
class="form-label"><?= h(t('animal.form.type')) ?></label><select
class="form-select" name="identification_type">
<option value="unknown"
<?= (($animal['identification_type'] ?? 'unknown') === 'unknown') ? 'selected' : '' ?>>
<?= h(t('animal.form.none_identification')) ?></option>
<option value="microchip"
<?= (($animal['identification_type'] ?? 'unknown') === 'microchip') ? 'selected' : '' ?>>
<?= h(t('animal.microchip')) ?></option>
<option value="tattoo"
<?= (($animal['identification_type'] ?? 'unknown') === 'tattoo') ? 'selected' : '' ?>>
<?= h(t('animal.tattoo')) ?></option>
</select></div>
<div class="col-12 col-md-3"><label
class="form-label"><?= h(t('animal.form.number')) ?></label><input
class="form-control" name="chip_id"
value="<?= h($animal['chip_id'] ?? '') ?>"
placeholder="<?= h(t('animal.form.chip_number')) ?>"></div>
<div class="col-12 col-md-3"><label
class="form-label"><?= h(t('animal.form.implant_date')) ?></label><input
class="form-control" type="date" lang="<?= h(I18n::locale()) ?>"
name="identification_date"
value="<?= h($animal['identification_date'] ?? '') ?>"></div>
<div class="col-12 col-md-3"><label
class="form-label"><?= h(t('animal.form.registration')) ?></label><select
class="form-select" name="identification_registration_status">
<option value="unknown"
<?= (($animal['identification_registration_status'] ?? 'unknown') === 'unknown') ? 'selected' : '' ?>>
<?= h(t('common.unknown')) ?></option>
<option value="pending"
<?= (($animal['identification_registration_status'] ?? 'unknown') === 'pending') ? 'selected' : '' ?>>
<?= h(t('animal.form.pending')) ?></option>
<option value="registered"
<?= (($animal['identification_registration_status'] ?? 'unknown') === 'registered') ? 'selected' : '' ?>>
<?= h(t('animal.form.registered')) ?></option>
</select></div>
<div class="col-12">
<hr class="my-1">
<h5 class="mb-0"><?= h(t('animal.form.adoption')) ?></h5>
</div>
<div class="col-12 col-md-4"><label
class="form-label"><?= h(t('animal.form.availability')) ?></label><select
class="form-select" name="adoption_availability" id="adoptionAvailability">
<option value="unknown"
<?= (($animal['adoption_availability'] ?? 'unknown') === 'unknown') ? 'selected' : '' ?>>
<?= h(t('animals.to_define')) ?></option>
<option value="not_available"
<?= (($animal['adoption_availability'] ?? 'unknown') === 'not_available') ? 'selected' : '' ?>>
<?= h(t('animal.form.not_available')) ?></option>
<option value="available"
<?= (($animal['adoption_availability'] ?? 'unknown') === 'available') ? 'selected' : '' ?>>
<?= h(t('animals.available_title')) ?></option>
</select></div>
<div class="col-12 col-md-4" id="adoptionAvailableFrom"><label
class="form-label"><?= h(t('animal.form.available_from')) ?></label><input
class="form-control" type="date" lang="<?= h(I18n::locale()) ?>"
name="adoption_available_from"
value="<?= h($animal['adoption_available_from'] ?? '') ?>"></div>
<div class="col-12 col-md-4" id="adoptionUnavailableReason"><label
class="form-label"><?= h(t('animal.form.unavailable_reason')) ?></label><input
class="form-control" name="adoption_unavailability_reason" maxlength="255"
value="<?= h($animal['adoption_unavailability_reason'] ?? '') ?>"
placeholder="Soins, sociabilisation…"></div>
<div class="col-12">
<div class="card card-sm bg-green-lt">
<div class="card-body"><label class="form-check"><input
class="form-check-input" type="checkbox"
name="website_published" value="1"
<?= !empty($animal['website_published']) ? 'checked' : '' ?>><span
class="form-check-label fw-bold"><?= h(t('public_site.publish_animal')) ?></span></label>
<div class="form-hint mb-2">
<?= h(t('public_site.publish_animal_help')) ?></div><label
class="form-label"><?= h(t('public_site.public_description')) ?></label><textarea
class="form-control" name="website_description" rows="4"
maxlength="5000"
placeholder="<?= h(t('public_site.public_description_example')) ?>"><?= h($animal['website_description'] ?? '') ?></textarea>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="text-muted"><?= h(t('animal.rescue_location')) ?></div>
<input class="form-control" type="text" name="rescue_address"
value="<?= h($animal['rescue_address'] ?? '') ?>"
placeholder="<?= h(t('animal.rescue_location_placeholder')) ?>">
<div class="text-muted small mt-1"><?= h(t('animal.geocode_help')) ?></div>
</div>
<div class="col-md-4">
<div class="text-muted"><?= h(t('animal.form.current_location')) ?></div>
<input class="form-control" type="text" name="current_address"
value="<?= h($animal['current_address'] ?? '5 RUE NOTRE DAME 29260 LESNEVEN') ?>"
<?= $isArchivedEdit ? 'readonly' : '' ?> disabled>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- PROFIL DE VIE -->
<div class="col-12">
<div class="card card-sm">
<div class="card-status-top bg-cyan"></div>
<div class="card-body">
<div class="d-flex align-items-center mb-3">
<span class="status status-cyan me-2"></span>
<div>
<h4 class="m-0"><?= h(t('animal.form.life_profile')) ?></h4>
<div class="text-muted small"><?= h(t('animal.form.life_profile_hint')) ?></div>
</div>
</div>
<div class="row g-3">
<?php foreach ([
'compatibility_dogs' => ['🐶',t('animal.compatible_dogs')],
'compatibility_cats' => ['🐱',t('animal.compatible_cats')],
'compatibility_children' => ['🧒',t('animal.compatible_children')],
'house_trained' => ['🧼',t('animal.house_trained')],
] as $field => $profile): ?>
<div class="col-12 col-sm-6 col-lg-3">
<label class="form-label"><span aria-hidden="true"><?= $profile[0] ?></span>
<?= h($profile[1]) ?></label>
<select class="form-select" name="<?= h($field) ?>">
<?php foreach ($lifeProfileOptions as $value => $label): ?><option
value="<?= h($value) ?>"
<?= (($animal[$field] ?? 'unknown') === $value) ? 'selected' : '' ?>>
<?= h($label) ?></option><?php endforeach; ?>
</select>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
</div>
<!-- ÂGE -->
<div class="col-12">
<div class="card card-sm">
<div class="card-status-top bg-red"></div>
<div class="card-body">
<div class="d-flex align-items-center mb-3">
<span class="status status-red me-2"></span>
<h4 class="m-0"><?= h(t('animal.form.age')) ?></h4>
</div>
<div class="row g-3 align-items-start">
<div class="col-12 col-md-5">
<label class="form-label"><?= h(t('animal.form.birth_date')) ?></label>
<input class="form-control" type="date" name="birth_date"
value="<?= h($animal['birth_date'] ?? '') ?>">
</div>
<div class="col-12 col-md-2">
<label class="form-label"><?= h(t('animal.form.estimated_birth')) ?></label>
<div class="pt-2">
<label class="form-check form-switch">
<input class="form-check-input" type="checkbox"
name="birth_is_estimated" value="1" id="birth_is_estimated"
<?= $birth_is_estimated ? 'checked' : '' ?>>
<span class="form-check-label">Oui</span>
</label>
</div>
</div>
<div class="col-6 col-md-2">
<label class="form-label"><?= h(t('animal.form.estimated_years')) ?></label>
<input class="form-control" type="number" min="0" max="40"
name="birth_est_years" value="<?= h($estYears) ?>" placeholder="ex: 7">
</div>
<div class="col-6 col-md-3">
<label class="form-label"><?= h(t('animal.form.estimated_months')) ?></label>
<input class="form-control" type="number" min="0" max="11"
name="birth_est_months" value="<?= h($estMonths) ?>" placeholder="ex: 4">
</div>
</div>
</div>
</div>
</div>
<!-- LOCALISATION -->
<div class="col-12">
<div class="card card-sm">
<div class="card-status-top bg-orange"></div>
<div class="card-body">
<div class="d-flex align-items-center mb-3">
<span class="status status-orange me-2"></span>
<h4 class="m-0"><?= h(t('animal.form.location')) ?></h4>
</div>
<div class="row g-3">
<div class="col-md-6">
<label class="form-label"><?= h(t('animal.form.origin_city')) ?></label>
<input type="text" name="rescue_location_name" class="form-control"
value="<?= h($animal['rescue_location_name'] ?? '') ?>"
placeholder="<?= h(t('common.city_example')) ?>">
<div class="form-hint"><?= h(t('animal.form.origin_hint')) ?></div>
<input type="hidden" name="rescue_lat"
value="<?= h($animal['rescue_lat'] ?? '') ?>">
<input type="hidden" name="rescue_lng"
value="<?= h($animal['rescue_lng'] ?? '') ?>">
</div>
<div class="col-md-6">
<label class="form-label"><?= h(t('animal.form.current_location')) ?></label>
<input type="text" name="location_name" class="form-control"
value="<?= h($animal['location_name'] ?? '5 Rue Notre Dame 29260 LESNEVEN') ?>"
readonly>
<div class="form-hint"><?= h(t('animal.form.current_location_hint')) ?></div>
<input type="hidden" name="location_lat"
value="<?= h($animal['location_lat'] ?? '') ?>">
<input type="hidden" name="location_lng"
value="<?= h($animal['location_lng'] ?? '') ?>">
</div>
</div>
</div>
</div>
</div>
<!-- ENTRÉE AU REFUGE -->
<div class="col-12">
<div class="card card-sm">
<div class="card-status-top bg-green"></div>
<div class="card-body">
<div class="d-flex align-items-center mb-3">
<span class="status status-green me-2"></span>
<div>
<h4 class="m-0"><?= h(t('animal.form.intake')) ?></h4>
<div class="text-muted small"><?= h(t('animal.form.intake_hint')) ?></div>
</div>
</div>
<div class="row g-3">
<div class="col-12 col-md-4" id="intakeWrap">
<label class="form-label"><?= h(t('animal.form.intake_date')) ?></label>
<input class="form-control" type="date" name="intake_date"
value="<?= h($animal['intake_date'] ?? '') ?>">
</div>
<div class="col-12 col-md-4">
<label class="form-label"><?= h(t('animal.form.intake_type')) ?></label>
<select class="form-select"
name="intake_type"><?php foreach (($intakeTypes ?? []) as $value => $label): ?>
<option value="<?= h($value) ?>"
<?= (($animal['intake_type'] ?? 'unknown') === $value) ? 'selected' : '' ?>>
<?= h($label) ?></option><?php endforeach; ?></select>
</div>
<div class="col-12 col-md-4">
<label class="form-label"><?= h(t('animal.form.intake_reason')) ?></label>
<select class="form-select"
name="intake_reason"><?php foreach (($intakeReasons ?? []) as $value => $label): ?>
<option value="<?= h($value) ?>"
<?= (($animal['intake_reason'] ?? 'unknown') === $value) ? 'selected' : '' ?>>
<?= h($label) ?></option><?php endforeach; ?></select>
</div>
<div class="col-12 col-md-6">
<label class="form-label"><?= h(t('animal.form.depositor')) ?></label>
<select class="form-select" name="depositor_contact_id" id="depositorContact">
<option value=""><?= h(t('animal.form.no_depositor')) ?></option>
<?php foreach (($depositors ?? []) as $contact): ?><option
value="<?= (int)$contact['id'] ?>"
<?= ((int)($animal['depositor_contact_id'] ?? 0) === (int)$contact['id']) ? 'selected' : '' ?>>
<?= h($contact['name'] . (!empty($contact['city']) ? ' · ' . $contact['city'] : '')) ?>
</option><?php endforeach; ?><option value="new">
<?= h(t('animal.form.new_depositor')) ?></option>
</select>
</div>
<div class="col-12 col-md-6 d-none" id="newDepositorWrap">
<label class="form-label"><?= h(t('animal.form.new_depositor_name')) ?></label>
<input class="form-control" name="new_depositor_name" maxlength="160"
placeholder="Personne ou structure">
<div class="form-hint"><?= h(t('animal.form.depositor_hint')) ?></div>
</div>
<div class="col-12">
<label class="form-label"><?= h(t('animal.form.circumstances')) ?></label>
<textarea class="form-control" name="intake_circumstances" rows="3"
placeholder="<?= h(t('animal.intake_circumstances_placeholder')) ?>"><?= h($animal['intake_circumstances'] ?? '') ?></textarea>
</div>
<div class="col-12 col-md-6" id="quUntilWrap">
<label class="form-label"><?= h(t('animal.form.quarantine_exit')) ?></label>
<input class="form-control" value="<?= h($animal['quarantine_until'] ?? '') ?>"
readonly>
<div class="form-hint">
<?= h(t('animal.form.quarantine_hint', ['count' => AppSettings::int('quarantine_days', 1, 90)])) ?>
</div>
</div>
<div class="col-12">
<label class="form-label"><?= h(t('common.notes')) ?></label>
<textarea class="form-control" name="notes"
rows="5"><?= h($animal['notes'] ?? '') ?></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card-footer d-flex justify-content-between">
<a class="btn" href="/animals">Annuler</a>
<button class="btn btn-primary" type="submit"><?= h(t('common.save')) ?></button>
</div>
</form>
</div>
</div>
<script>
(function() {
const status = document.getElementById('status');
const intakeWrap = document.getElementById('intakeWrap');
const quUntilWrap = document.getElementById('quUntilWrap');
const refugeRoomField = document.getElementById('refugeRoomField');
const fosterContactField = document.getElementById('fosterContactField');
const freeCatFields = document.getElementById('freeCatFields');
const coatSelect = document.getElementById('coatColorSelect');
const coatSwatch = document.getElementById('coatColorSwatch');
function sync() {
const v = (status.value || '').toLowerCase();
const show = (v === 'quarantaine');
quUntilWrap.style.display = show ? '' : 'none';
const roomSelect = refugeRoomField.querySelector('select');
const hasRooms = Array.from(roomSelect.options).some(option => option.dataset.status === v);
refugeRoomField.style.display = hasRooms ? '' : 'none';
roomSelect.querySelectorAll('option[data-status]').forEach(option => option.hidden = option.dataset
.status !== v);
if (roomSelect.selectedOptions[0]?.hidden) roomSelect.value = '';
fosterContactField.style.display = (v === 'fa' || v === 'fa_permanente') ? '' : 'none';
freeCatFields?.classList.toggle('d-none', v !== 'chat_libre');
}
status.addEventListener('change', sync);
sync();
function syncCoatSwatch() {
const option = coatSelect?.options[coatSelect.selectedIndex];
if (coatSwatch && option) coatSwatch.style.cssText = option.dataset.swatch || 'background:#d9dde3';
}
coatSelect?.addEventListener('change', syncCoatSwatch);
syncCoatSwatch();
const sterilizationStatus = document.getElementById('sterilizationStatus');
const sterilizationDetails = document.getElementById('sterilizationDetails');
const syncSterilization = () => sterilizationDetails?.classList.toggle('d-none', sterilizationStatus
?.value !== 'yes');
sterilizationStatus?.addEventListener('change', syncSterilization);
syncSterilization();
const depositorContact = document.getElementById('depositorContact');
const newDepositorWrap = document.getElementById('newDepositorWrap');
const syncDepositor = () => newDepositorWrap?.classList.toggle('d-none', depositorContact?.value !== 'new');
depositorContact?.addEventListener('change', syncDepositor);
syncDepositor();
const adoptionAvailability = document.getElementById('adoptionAvailability');
const adoptionAvailableFrom = document.getElementById('adoptionAvailableFrom');
const adoptionUnavailableReason = document.getElementById('adoptionUnavailableReason');
const syncAdoption = () => {
const value = adoptionAvailability?.value;
adoptionAvailableFrom?.classList.toggle('d-none', value !== 'available');
adoptionUnavailableReason?.classList.toggle('d-none', value !== 'not_available');
};
adoptionAvailability?.addEventListener('change', syncAdoption);
syncAdoption();
})();
</script>