- Il disegno è bozza e si salva da solo; i dati del territorio si modificano dall'editor e valgono subito nel gestionale. - Un solo "Pubblica" (immagine + PDF), uguale in editor e gestione: anteprima preparata in coda su disco privato, conferma obbligatoria, rifiutata se nel frattempo è cambiato qualcosa di stampato. - Stati Bozza / Pubblicata / Modifiche da pubblicare, calcolati sull'impronta di confine e dati stampati e sul PDF in uso. - Gestione riscritta: stato, ricerca, filtri, storico paginato. - Editor ridisegnato a tre zone, utilizzabile anche su tablet e telefono. - Avvisi via evento (trait Avvisa + <x-avvisi>). - .gitattributes: script shell sempre LF, altrimenti il container locale su Windows non parte. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
1.2 KiB
PHP
34 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Settings;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Services\Piantine\PubblicazionePiantina;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
/**
|
|
* Il PDF dell'anteprima di una pubblicazione, da guardare prima di confermare.
|
|
*
|
|
* Lo prepara PubblicazionePiantina in una cartella privata: qui lo si serve
|
|
* soltanto, senza toccare il PDF in vigore del territorio. Il token è casuale
|
|
* e scade con l'anteprima; la rotta resta comunque riservata
|
|
* all'amministratore come il resto delle piantine.
|
|
*/
|
|
class PiantinaAnteprimaController extends Controller
|
|
{
|
|
public function __invoke(string $token, PubblicazionePiantina $pubblicazione): Response
|
|
{
|
|
$percorso = $pubblicazione->pdfAnteprima($token);
|
|
|
|
abort_if($percorso === null, 404);
|
|
|
|
return response()->file($percorso, [
|
|
'Content-Type' => 'application/pdf',
|
|
// `inline`: si apre nel visualizzatore del browser invece di
|
|
// finire fra i download, che di un'anteprima non se ne fa niente.
|
|
'Content-Disposition' => 'inline; filename="anteprima-piantina.pdf"',
|
|
'Cache-Control' => 'no-store, max-age=0',
|
|
]);
|
|
}
|
|
}
|