{{-- Les photos d'un chantier, envoyées une à une par ceux qui y sont. ⚠️ Inclus par les DEUX vues du détail (`_show_modal` et `show`), comme `rapports/_liste` : c'est ce qui les garde d'accord. Chaque photo part dès qu'elle est choisie, réduite par le navigateur ; une photo ratée (réseau) reste là, à renvoyer d'un geste, sans rien emporter avec elle (js/plannings/photos-chantier.js). Le serveur répond en JSON : le planning ne passe pas par les zones. Tout le monde qui voit le chantier voit ses photos ; ajouter demande `rapport_chantiers.create`, et chaque vignette dit d'elle-même si on peut la toucher (PhotoChantierController::peutModifier). Paramètres : $planning le modèle local (peut être nul : rien ne s'affiche) $photos collection de Photo, avec document, version.document, user $typeRapport 1, 2, ou null quand l'équipe n'attend pas de retour --}} @if ($typeRapport && $planning) @php $client = $planning->client?->libelle ?? ($planning->client_id ? __('Client :id', ['id' => $planning->client_id]) : null); $peutAjouter = auth()->user()?->can('rapport_chantiers.create'); @endphp
{{ __('Photos du chantier') }} {{ $photos->count() }}
@can('photos.view') @if ($photos->isNotEmpty()) {{ __('Voir dans la photothèque') }} @endif @endcan
@if ($peutAjouter) {{-- `accept="image/*"` : un téléphone propose l'appareil photo ou la galerie. Le champ est hors de tout formulaire : chaque photo part seule, rien n'attend un bouton « Enregistrer ». --}}
{{ __('Chaque photo part dès qu\'elle est choisie, réduite à :n px.', ['n' => \App\Services\Documents\PieceJointe::COTE_MAX]) }}
@endif
@foreach ($photos as $photo) @include('admin.plannings.photos._vignette', ['photo' => $photo]) @endforeach

{{ __('Aucune photo pour l\'instant.') }}

{{-- Ce que montre la photo touchée, sa légende, son retrait : rempli par le script à partir du modèle ci-dessous, sous la grille. --}}
@endif