moritz-sauer-13 / silverstripe-page-status
Traffic light page completion status indicators for SilverStripe CMS editors
Package info
github.com/moritz-sauer-13/silverstripe-page-status
Type:silverstripe-vendormodule
pkg:composer/moritz-sauer-13/silverstripe-page-status
Requires
README
Traffic light completion status for SilverStripe CMS pages. Gives editors a quick overview of which pages still need attention.
Requirements
- SilverStripe CMS ^6
- lekoala/silverstripe-cms-actions
Installation
composer require moritzsauer/silverstripe-page-status
Then run dev/build?flush=1.
What it does
Each page gets a PageStatus field with three states:
| Key | Default label | Meaning |
|---|---|---|
created |
Created | Page exists, no content yet |
progress |
In Progress | Being filled, still incomplete |
done |
Done | Fully maintained |
Where the status is visible and editable:
- SiteTree — small coloured dot next to every page title (hover for tooltip)
- Page edit form — dropdown in the action toolbar at the bottom
- Batch actions — set status on multiple pages at once via the tree's multi-select
- Reports — "Pflegestatus der Seiten" lists all pages filterable by status
Status changes create a new draft version but do not publish the page.
Configuration
Override statuses, colours and default in your project's YAML:
MoritzSauer\PageStatus\Service\StatusRegistry: default_status: created statuses: created: color: '#dc3545' text_color: '#ffffff' sort: 10 progress: color: '#ffc107' text_color: '#212529' sort: 20 done: color: '#28a745' text_color: '#ffffff' sort: 30
Override labels in your project's lang/de.yml:
de: MoritzSauer\PageStatus: STATUS_created: 'Mein Label'
Adding a custom status key requires only two steps:
- Add the key to the YAML config above
- Add the lang keys (
STATUS_<key>andSTATUS_<key>_DESC) — label falls back to the key name if omitted
The page-edit action button is registered automatically via allMethodNames(). For a matching batch action, add a subclass of AbstractSetPageStatusBatchAction and register it in _config.php.