liberusoftware / module-cms-pages
Pages module for Liberu CMS: hierarchical pages with editorial workflow, versioning, slugs, and featured media.
Package info
github.com/liberusoftware/module-cms-pages
Type:liberu-module
pkg:composer/liberusoftware/module-cms-pages
Requires
- php: ^8.5
- filament/filament: ^5.11.0
- illuminate/contracts: ^13.38.0
- illuminate/database: ^13.38.0
- illuminate/support: ^13.38.0
- liberusoftware/module-cms-content: ^0.1
- liberusoftware/module-cms-contracts: ^0.1
- liberusoftware/module-cms-core: ^0.1
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-11-14 19:55:26 UTC
README
Repository
Source, issues, and release history: https://github.com/liberusoftware/module-cms-pages
Composer package: https://packagist.org/packages/liberusoftware/module-cms-pages
Hierarchical pages for Liberu CMS, built on the content foundation.
Depends on the Media module (declared in the descriptor) so it cannot be enabled without it. Uses the cms-content foundation for editorial workflow and versioning, and resolves featured images through the media contract — never importing the Media module's classes.
The Page model
- Workflow (via
HasWorkflow):Draft → Review → Published → Archived+ scheduling. ImplementsPublishableInterface. - Versioning (via
HasRevisions): numbered snapshots andrevertTo(). - Hierarchy:
parent()/children()self-relations. - Slugs: auto-generated (unique) from the title when left blank.
- Featured media:
featuredMedia()returns aMediaItemInterfaceresolved from the media contract, or null.
$page = Page::create(['title' => 'About Us', 'content' => '…']); $page->slug; // "about-us" $page->publish(); // → Published, emits ContentPublished $page->isLive(); // true $page->recordRevision(); $page->revertTo(1);
Repository
PageRepositoryInterface (module-internal until another module needs pages):
find, findBySlug, published, roots.
Config (config/cms-pages.php)
| Key | Default | Purpose |
|---|---|---|
default_template |
default |
Template used when none is chosen. |
Events
- Emits: via the content foundation —
ContentStateChanged,ContentPublished. - Listens: none.
Migration note
This module owns the cms_pages table. The legacy host pages table / model /
Filament resource remain in place during the strangler migration; cutover and
retirement are tracked in docs/OPEN-QUESTIONS.md.