Please note that a lot has changed since writing this initial post.. please read through the topic, the VersionX Documentation and the VersionX Roadmap to find out where this project is heading. You may also find a login to a demo setup on the second page, first post of this topic to see it in action.
I’ve been working on this for a lil’ while now, and just wanted to share you what I want it to do and how it works.
Basicly, I want it to be a basic versioning addon which keeps track of modifications and allows you to put older versions back in place. That way it can, besides keeping track of what happened, also act as a sort of backup.
Features at time of writing:
- Record changes in documents, symlinks, static resources (the reference, not the file itself) and weblinks in the current database
- Show all resource fields (unfortunately: no tvs yet) of a revision saved, as well as keeping track what the last revision before this revision was or new resource and the time it happened
- Compare revisions "content" field with the prior revisions "content" field (using xpdorevisioncontrol)
- All recording is done using xPDO/MODx objects, so it should be future proof-ish.
- No hacking of the core.
What still needs work before beta / pl release:
- UI (want to do it in ModExt, but got stuck when I just couldn’t get anything on the screen :/ So using plain evil tables now)
-- Also includes filtering options / search
- Also record TV changes associated with a resource
- Possibly comparing other fields, besides the content field
- Allow comparing between different revisions, not just the prior revision
- Change settings
- Install via package manager (with install options?)
- Iron out stupid bugs
(like one that’s giving an error in the error log for every revision being listed...) Fixed 22/12/2010! The class_key field in the db was giving xPDO the impression it was actually a modResource. Same thing happened earlier to the content field. Renaming the field in the db/schema/modal solved the problem.
- Clean up code
Other features on the wishlist which may or may not make it into a beta / pl release:
- Store data in a separate database
- Perhaps (needs discussion) possibility to store as files to save the db/db server
- Export/backup feature
- Grab a copy of all existing resources upon install
- Settings to determine which fields are visible in the main grid
- I18n (using lexicons)
- Keep versioning history of chunks and snippets
- Show overview of version history for a specific resource on the resource editing page (SilverStripe-ish), on different tab if possible. (OnDocFormRender plugin)
- Highlighting (Sticking?) certain revisions
- (Save as draft / load draft)
I’ve attached a few screenshots, but please bear in mind I did nothing with the UI, except for some tables to have a simple overview while working on it.
As Versioning is a much requested feature, and people have a lot of different ideas about it, I would like to hear what your ideas are and how they relate to my progress so far. If there’s interest in the way I’m developing it, I’ll keep you guys posted on the progress and see if I can get you guys an alpha some time soon. (tho probably not this year)