#[Publishable] on AbstractPage / AbstractPageData — page-level draft/live toggle
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
Inizia con AbstractPage e AbstractPageData, quindi segui l’implementazione esistente di #[Publishable] a livello di componente e la logica dei voter, inclusi AbstractRoutableVoter e RouteVoter. Verifica la risoluzione delle route e l’endpoint resource_manifest, oltre alle interazioni con i template e i percorsi figlio. Aggiungi una copertura Behat per il diniego al pubblico, l’accesso dell’amministratore, la pubblicazione tramite PATCH e una migrazione retrocompatibile per le pagine esistenti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
#[Publishable] (with publishedAt) exists for components: a component can be in draft state even inside a published page. There is no equivalent for pages themselves.
Currently, the only "draft" signal for a page is the absence of a Route. This works before publication, but once a page is live (route exists), there is no way to take it offline without deleting the route — losing URL history and any redirects pointed at it.
Desired behaviour
AbstractPage(base ofPageandAbstractPageData) gets apublishedAt: ?\DateTimeInterfacecolumn via#[Publishable](or a new#[PublishablePage]attribute if there are conflicts with the existing component-level implementation)- Unpublished pages (
publishedAt: null) are invisible to unauthenticated users via the existing voter infrastructure (AbstractRoutableVoter,RouteVoter) - Admins can still access and edit unpublished pages via the entity IRI (same as draft components today)
RouteVotergates public route resolution by the target page'spublishedAtstate- The
resource_manifestendpoint respects the same gate
Things to consider
#[Publishable]today lives on components; its voter logic (PublishableVoter?) would need to be checked / extended for page-level entitiesPage.isTemplatepages should probably always be accessible to admins regardless ofpublishedAt(template pages are never public-facing)- Draft page data entities with an existing Route — the route should resolve to 404/403 for public traffic, not 500
- Interaction with
cascadeChildPathsand the children endpoint: should unpublished children be hidden from the public children list? - Migration: existing pages have no
publishedAt— default tonull(draft) or tonow()(treat existing pages as already published)? Likelynow()for backwards compatibility
Acceptance criteria
-
AbstractPageand/orAbstractPageDatagain apublishedAtcolumn - Unauthenticated
GET /_/routes/{path}to a page withpublishedAt: nullreturns 403/404 - Admin
GET /_/resource_manifest/{uuid}for an unpublished page works forROLE_ADMIN - Behat scenarios cover: public access denied, admin access allowed, publish via PATCH
- Backwards-compatible migration (existing pages treated as published)
- Lingua principale
- PHP
- Stelle
- 32
- Fork
- 8
- Merge medio
- 1h
- PR unite (30g)
- 186
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di components-web-app/api-components-bundle
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
components-web-app/api-components-bundle#333 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
components-web-app/api-components-bundle#325 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
components-web-app/api-components-bundle#259 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di components-web-app/api-components-bundle
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Spomky-Labs/pwa-bundle#476 ·
-
domain/discovery
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
code4romania/cpc#64 ·
I maintainer di solito rispondono entro 1 giorno
-
Admin search throws for permissions added through Admin.generalIndexItems('permissions', ...)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno