++ dopo un'operazione si torna alla pagina di partenza, con i suoi filtri

- Gli elenchi tengono ricerca, filtri e ordinamento nell'indirizzo
  (#[Url]); la pagina c'era già.
- I link verso schede e operazioni (data-ritorno) portano ?da= con la
  pagina di partenza, o il da già ricevuto: si risale all'origine
  (elenco -> scheda -> Rientra -> elenco filtrato).
- Ritorno::valida accetta solo percorsi interni: niente rimandi esterni.
- Trait RicordaRitorno: redirect dopo il salvataggio, Annulla e
  "Torna indietro" usano la pagina di partenza. Senza da, tutto come prima.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Francesco Picone
2026-10-19 15:04:42 +02:00
parent 0c530b65b3
commit bc465f53f5
32 changed files with 451 additions and 58 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Livewire\Assegnazioni;
use App\Livewire\Concerns\RicordaRitorno;
use Livewire\Component;
use Livewire\Attributes\Computed;
use Livewire\Attributes\Locked;
@@ -16,6 +17,8 @@ use Illuminate\Support\Facades\Notification;
class Assegna extends Component
{
use RicordaRitorno;
// ─── Invio del link ─────────────────────────────────────────
//
// Dopo l'assegnazione non si torna subito alla pagina: si sceglie il
@@ -234,7 +237,7 @@ class Assegna extends Component
session()->flash('success', $inviato
? "Territorio {$numero} assegnato a {$nome}: link inviato."
: "Territorio {$numero} assegnato a {$nome}. Il link è ancora da inviare: lo trovi segnalato nell'elenco.");
return $this->redirect(route('assegnazioni.assegna'), navigate: true);
return $this->redirect($this->destinazione(route('assegnazioni.assegna')), navigate: true);
}
private function assegnazioneInInvio(): ?Assegnazione

View File

@@ -3,12 +3,15 @@
namespace App\Livewire\Assegnazioni;
use Livewire\Attributes\Locked;
use App\Livewire\Concerns\RicordaRitorno;
use Livewire\Component;
use App\Models\Assegnazione;
use App\Models\Campagna;
class Rientra extends Component
{
use RicordaRitorno;
public Assegnazione $assegnazione;
public string $returned_at = '';
public bool $showCampaignPrompt = false;
@@ -109,7 +112,7 @@ class Rientra extends Component
}
session()->flash('success', "Territorio {$territorio->numero} rientrato da {$proclamatore->nome_completo} dopo {$this->assegnazione->giorni} giorni.");
return $this->redirect(route('territori.show', $territorio), navigate: true);
return $this->redirect($this->destinazione(route('territori.show', $territorio)), navigate: true);
}
public function render()