CMFEdition overview

« Return to page index

Overview of the product and its features

1. Versioning in Plone

Content versioning in Plone, a long awaited feature.

Versioning is about tracking changes over time

Information, in whatever form: documents, spreadsheets, web pages, or source code, changes over time. Save as new version screenshot
Tracking changes of a document over time is what a versioning system does.
In particular a versioning system records who made a specific change, it allows backing-out undesirable changes, it gives the ability to record why a specific change was made and to know what the document contents were at a specific point in time.

Versioning a content is basically archiving important document versions, to have control on changes over time. Can I modify a content without retracting it, that is edit it while the published version of it stays visible to everyone? No, you can't. This feature, often confused with versioning is more appropriately a staging feature. If you want staging in Plone you have to use a stagin product like PloneMultisite.

Versioning must work with staging, workflow, i18n, ...

Versioning is independent from staging or multisite implementation (PloneMultisite), from versions repository (storage) and from contents implementation; in fact versioning can be added at any time in the system, as contents do not need to be aware that they are versioned.
Versioning must work with multilingual content also: CMFEditions can work with LinguaPlone.

Any content can be versioned: CMF Default, ATContent Types, custom Archetypes based contents. CMFEditions supports the versionining of composite folderish objects and versioning of references.
The save as new version (or save important) creates a new version, but can also trigger things like translation invalidation, events (for example for content subscription), etc.

2. Features

what current versioning system does.

Versions tab screenshot

Save as new version

At any time a new version can be created. Every new version is like a snapshot of the content at a given time.

Number of version

The versioning system manages an internal version number (automatically calculated), and an external version number that can be either calculated or manually entered by users.

Date/time stored in version change (timestamp)

Current datetime is stored along with version number and comment to identify the version.

Adding a comment to the saved version

Optionally the user will be able to type into the 'New Version Comment' field a brief note describing the key changes he has made or to describe it.

User information

Versioning keeps track of the user that did the version.

Workflow status information

The history view shows not only the work in progress but also the major workflow changes, versioning keeps track of the status of the document at different times. The system does not automatically saves as a new version the document when it is published. This is possible writing a simple versioning policy.

Version browsing

It is possible to access and view previous versions of a document from the versioning action of the document. The view call the default view for the content, but it is possible to define custom views that show also comments, or show the metadata, etc.

Rollback to version

It is possible to rollback (revert) to a previous version. Rolling back to a version make the old version the current one. The system can be configured to perform some action both on rollback and on save as new version. For example by default when rolling back the workflow state is set to the current one, overriding the old version one.

Versioned metadata

Metadata are versioned as well. On new version the metadata is already filled with values of the previous version.

Version and document comments

All comments to the object are stored in the version (i.e. rollback brings back also the comments).

Compare version*

It is possible to select two versions of the document and compare its attributes / metadata.
* requires CMFDiffTool

Folderish objects support

It is possible to save versions of folderish objects; to version a folderish object it must be registered in a config panel; all children objects are recursively versioned togheter with the parent. Rolling back the parent rolls back also the children, no matter if they were changed, deleted, moved...

It is also possible to version the children one by one independently. When parent is versioned every child is saved as a new version (the system does not check if the child had changed since last version, though; this is consistent with the freedom granted to the users to create new versions even if the object has not changed).

References support
References (ATReferences) are supported as well. CMFEditions adresses two main use cases: i) references are stored in versions and restored after a rollback and ii) references are invariant to the version (i.e. not restored after a rollback). Configuration is possible at field level.Version history collapsable screenshot

Notes

  • The system do not provide branching or locking facilities yet.
  • Copying versioned objects: copying an object with versions copies the object without the versions informations. The pasted object is a brand new copy with no versions.
  • Delete version and purge options are not yet available, yet planned.
  • Reference cascading is not supported.