Losing content is the most annoying story in most CMSs. CPalius now keeps an automatic revision on every Node save.
What is stored
NodeSnapshot captures the editorial slice: title, slug, status, moderation_state, data (JSON body + SEO), published_at, category and tag ids. Identity fields such as type and locale are not part of the snapshot — they are the record's identity, not its content.
How it works
- NodeRevisionListener takes a snapshot on Node post-persist / post-update (same pattern as NodeIndexListener).
- If the same content hash repeats back-to-back, no revision is written — no noise.
- Restore never overwrites the old row; it creates a new revision from the current state. History always moves forward.
- The PruneNodeRevisionsTask cron trims revisions beyond the per-node limit (default 25).
Settings and UI
content.revisions.enabled and content.revisions.max_per_node are managed from AACP. The /aacp/content/{id}/revisions screen shows the revision list, diffs and a restore button. Capability: content.revision.manage.
The engine lives in core; Blog, Pages and every future content module gain this history with no extra code.
Comments (0)
No comments yet. Be the first to write one.
Leave a comment
Your comment will appear after it is reviewed.