Forums Feature Requests Thread

[Enhancement] Cross-cutting infra: Page editor has no draft / scheduled-publish — every save goes live instantly to all members

Patrick Bass · Jun 6 · 10 · 1 Locked
[Normal Priority] [Feature Enhancement] [Deployed to Production]
🚀 OP Jun 6, 2026 8:05pm

Area: Cross-cutting infra (audit p14) · Surface: AdminLegalController + AdminSitePageController · Dimension: improve-existing · Severity: minor

Competitor content tools (Circle Pages, Mighty, Discourse, every LMS page editor) let an admin draft a page, preview it privately, and either publish now or schedule for later. Mobieus' editors are publish-on-save only, so reworking the Terms or the About page means editing the live document in front of every member with no safe staging step. A 'Preview public page' button exists (legal/edit.php:58) but it previews the already-saved live version, not an unsaved draft. For a community owner rewriting their guidelines, this forces awkward off-platform drafting.

Evidence

templates/admin/legal/edit.php:243 'Saving publishes immediately. There is no draft mode.' AdminLegalController.php:102 save() writes straight to the live row consumed by PageController::renderLegalPage (PageController.php:81-90 reads LegalPage::findBySlug and renders it). AdminSitePageController.php:101 SitePage::upsert is the live read path too (PageController.php:20 about() reads SitePage::find('about-us')). No status/published_at column exists in either migration.

Suggested fix. Add a status column (draft/published) plus optional publish_at to legal_pages and site_pages; render drafts only to super-admins via a ?preview token, keep the public route serving the last-published version, and add a 'Save draft' vs 'Publish' split on the editor toolbar.

Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.


Patrick Bass
@mobieus

🚀 Jun 7, 2026 12:31pm

Shipped and deployed to production. Commit 34575952ac.

Site-page editor scheduled publish: site_page_drafts table + scheduled_at datetime input. Draft saved immediately; published at scheduled_at by the CM worker.

Closed as: deployed.


Patrick Bass
@mobieus

Log in or register to reply to this thread.