{{-- v4.15.0 §B/§C/§D — LE DÉTAIL D'UNE PUBLICATION, écran `data-screen="post"` de la maquette. ⚠️ Le texte affiché est `contenu()['texte_fr']` — le contenu qui FAIT FOI, figé si la publication est décidée. Jamais `$publication->texte_fr` : sur une publication validée, la colonne brute peut avoir bougé, et le client doit relire ce qu'il a validé. ⚠️ `notes_internes` n'apparaît nulle part, sous aucune condition. ⚠️ Les boutons de décision ne sont pas grisés pour un lecteur : ils ne lui sont pas rendus. Un bouton grisé est une invitation à insister ; un bouton absent ne pose aucune question. --}}
Publication
@if ($annonce)
{{ $annonce['texte'] }}
@endif {{-- L'APERÇU SOCIAL : la publication telle qu'elle paraîtra sur le compte du client. --}}
{{ $dashboard->nomCourtDuClient() }} {{ ucfirst($publication->quandPhrase()) }} @if ($canaux !== []) @foreach ($canaux as $canal) {{ \Illuminate\Support\Str::limit($canal, 4, '') }} @endforeach @endif
@if ($visuel['type'] === 'image')
Visuel de la publication « {{ $publication->titre }} »
@else
{{ $publication->type->label() }} {{ $dashboard->nomCourtDuClient() }} {{ $publication->titre }} {{ $visuel['lien'] ? 'Le visuel est au bout du lien.' : 'Visuel à venir' }}
@endif {{-- v4.17.2 §F — LE LIEN, TOUJOURS ATTEIGNABLE. Il vivait DANS la vignette de repli : dès qu'une publication portait une image, il n'était plus rendu nulle part, et le client cherchait le lien qu'on lui avait annoncé par e-mail. Ici, il est sous le visuel — qu'il y ait une image ou non. --}} @if (filled($visuel['lien'])) Ouvrir le lien ↗ @endif @if (filled($contenu['texte_fr']))
{{ $contenu['texte_fr'] }}
@endif @if (filled($contenu['texte_ar']))
{{ $contenu['texte_ar'] }}
@endif
{{-- §C — LES GESTES. Ils n'existent que pour qui peut décider ET quand il y a quelque chose à décider. Sinon, l'écran dit simplement où en est la publication. --}}
@if ($peutDecider)
{{ $publication->statut->libelleClient() }} @if ($reponseAttendueLe) · réponse souhaitée avant le {{ $reponseAttendueLe->format('d/m/Y') }} @endif
@if ($apercu) {{-- On ne signe pas sans lire : voici l'e-mail qui partira, avec le contenu retenu. C'est ce texte qu'on relira pour prouver ce qui a été décidé. --}}
Ce qui sera envoyé
{{ $apercu['sujet'] }}
{{ $apercu['corps'] }}
@if ($apercu['destinataires'] !== [])
À : {{ implode(', ', $apercu['destinataires']) }}
@endif
@else
@if ($correctionOuverte)
@endif
@endif @else
@if ($publication->statut->attendLeClient()) Cette publication attend la validation du référent de votre marché. @else {{ $publication->statut->libelleClient() }} — il n'y a rien à décider ici. @if ($publication->lien_publie) Voir la publication en ligne ↗ @endif @endif
@endif
{{-- §D / v4.17.0 §B — LA CONVERSATION : le FIL de discussion, des deux côtés, avec les décisions comme événements. Un composant à part : lui seul se rafraîchit, jamais la page. --}} {{-- v4.17.3 §C3 — `lazy="on-load"` : LA FICHE S'AFFICHE D'ABORD. Le fil compose la conversation, compte les non-lus et écrit la lecture — tout cela au moment même où le client attend de voir ce qu'on lui propose. Il part donc dans une requête à lui, tirée dès que la page est là (et non à la première molette : le fil est en bas de l'écran, et marquer lu ne doit pas dépendre d'un geste). --}}