Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

#[Publishable] on AbstractPage / AbstractPageData — page-level draft/live toggle

Aperta
#186 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
php, symfony

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 of Page and AbstractPageData) gets a publishedAt: ?\DateTimeInterface column 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)
  • RouteVoter gates public route resolution by the target page's publishedAt state
  • The resource_manifest endpoint 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 entities
  • Page.isTemplate pages should probably always be accessible to admins regardless of publishedAt (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 cascadeChildPaths and the children endpoint: should unpublished children be hidden from the public children list?
  • Migration: existing pages have no publishedAt — default to null (draft) or to now() (treat existing pages as already published)? Likely now() for backwards compatibility

Acceptance criteria

  • AbstractPage and/or AbstractPageData gain a publishedAt column
  • Unauthenticated GET /_/routes/{path} to a page with publishedAt: null returns 403/404
  • Admin GET /_/resource_manifest/{uuid} for an unpublished page works for ROLE_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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di components-web-app/api-components-bundle

Tutte le issue di components-web-app/api-components-bundle

Issue simili

Altre issue su PHP

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.