ajoute les devoirs maison (chantier vrai cockpit, étape 3) : rendu en texte libre, suivi des rendus, notation
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
bd74eaf20f
commit
33531de44d
17 changed files with 582 additions and 2 deletions
52
portail/resources/views/devoirs/show.blade.php
Normal file
52
portail/resources/views/devoirs/show.blade.php
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
@extends('layouts.vitrine')
|
||||
|
||||
@section('titre', $devoir->titre)
|
||||
|
||||
@section('contenu')
|
||||
<div class="mx-auto max-w-4xl px-5 py-14 lg:px-10">
|
||||
<p class="font-mono text-sm font-semibold"><a href="{{ route('mes-classes.devoirs.index', $classe) }}" class="underline underline-offset-4">Devoirs · {{ $classe->nom }}</a></p>
|
||||
<div class="mt-1 flex flex-wrap items-start justify-between gap-4">
|
||||
<div>
|
||||
<h1 class="text-4xl font-extrabold tracking-tight">{{ $devoir->titre }}</h1>
|
||||
<p class="mt-2 font-mono text-sm font-semibold {{ $devoir->echeanceDepassee() ? 'text-[#A63D2A]' : '' }}">{{ $devoir->echeanceDepassee() ? 'Échéance dépassée le' : 'À rendre avant le' }} {{ $devoir->echeance->timezone(config('app.fuseau_utilisateurs'))->translatedFormat('d/m/Y H:i') }}</p>
|
||||
</div>
|
||||
<form action="{{ route('mes-classes.devoirs.destroy', [$classe, $devoir]) }}" method="post" data-confirmer="Supprimer ce devoir et tous ses rendus ?">
|
||||
@csrf
|
||||
<button type="submit" class="font-bold text-[#A63D2A] underline underline-offset-4">Supprimer</button>
|
||||
</form>
|
||||
</div>
|
||||
<p class="mt-4 whitespace-pre-wrap font-semibold">{{ $devoir->consigne }}</p>
|
||||
|
||||
<section class="mt-8 rounded-2xl border border-[#e3e5e8] bg-white" aria-labelledby="t-rendus">
|
||||
<h2 id="t-rendus" class="px-6 pt-6 text-xl font-extrabold">Rendus ({{ $rendus->count() }}/{{ $eleves->count() }})</h2>
|
||||
<ul class="mt-4 divide-y divide-[#e3e5e8]">
|
||||
@foreach ($eleves as $eleve)
|
||||
@php($rendu = $rendus->get($eleve->id))
|
||||
<li class="p-6">
|
||||
<div class="flex flex-wrap items-center justify-between gap-3">
|
||||
<span class="text-lg font-extrabold">{{ $eleve->nomAffiche() }}</span>
|
||||
@if ($rendu)
|
||||
<span class="font-mono text-sm font-semibold text-[#3C8A5A]">Rendu le {{ $rendu->rendu_a->timezone(config('app.fuseau_utilisateurs'))->translatedFormat('d/m/Y H:i') }}</span>
|
||||
@else
|
||||
<span class="font-mono text-sm font-semibold text-[#5f6368]">Pas encore rendu</span>
|
||||
@endif
|
||||
</div>
|
||||
@if ($rendu)
|
||||
<p class="mt-3 whitespace-pre-wrap rounded-xl border border-[#e3e5e8] bg-[#f8f9fa] p-4 font-semibold">{{ $rendu->reponse }}</p>
|
||||
<form action="{{ route('mes-classes.devoirs.noter', [$classe, $devoir, $rendu]) }}" method="post" class="mt-3 flex items-center gap-2">
|
||||
@csrf
|
||||
<label class="font-bold">Note <input type="number" name="note" min="0" max="20" value="{{ $rendu->note }}" class="w-20 rounded-xl border border-[#c4c7c5] bg-white px-2 py-1 font-semibold"> / 20</label>
|
||||
<button type="submit" class="inline-flex h-9 items-center rounded-full bg-[#0b57d0] px-4 text-sm font-bold text-white">Enregistrer</button>
|
||||
</form>
|
||||
@endif
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
<script nonce="{{ Vite::cspNonce() }}">
|
||||
document.querySelectorAll('form[data-confirmer]').forEach(function (f) {
|
||||
f.addEventListener('submit', function (e) { if (!window.confirm(f.dataset.confirmer)) e.preventDefault(); });
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
Loading…
Add table
Add a link
Reference in a new issue