Content Versioning - A Sneak Peek at Joomla's Newest Proposed Feature

versioning JoomlaUPDATE: Click here for an updated version of this article.

Joomla! 3.2 is about four months away and there's another really big and exciting feature in development: Content Versioning!

That's right! Content Versioning! And it's not just content versioning for the Joomla core, but an API will be provided for extension developers to use the feature for their extensions.

In this article, I'll take you through a little bit of the background information, then get right to the screenshots through the Content Versioning system, its current UI (User Interface) and its features.

At the end of the article, I'll provide information about how you can test the latest development version (no pun intended) and how you can provide feedback to the main developer of the feature, Mark Dexter, so that it can be improved for you, your clients, and/or your organization, as well as all of Joomla's users.

Background Information

One of the best things about Joomla's new development strategy is that it allows new features to be added to the latest series every 6 months, on the condition that the new features can't break existing features, i.e. everything has to continue working as it did previously.

Joomla 3.1 saw the addition of the dynamic Tags feature, which was a highly requested feature. Joomla 3.2, the next release in the Joomla 3 series, will be released sometime in November of 2013 and though we don't know for certain what new features will get in, at this point, it appears very likely that the new proposed Content Versioning feature will get in, especially since it has been submitted very early in the process and the code that has been written so far is quite stable.

In case some are unfamiliar with content versioning, let's quickly go over what it is. Content versioning is also known as version control and it's a form of version management. It's a way to keep track of previous versions of articles and other content, so that if a mistake happens, it can be determined when it occurred and/or it can be reverted. For example, if someone accidentally deletes a paragraph or messes up all the formatting of an article, it can be reverted to the previous version of the article that worked. Some content versioning systems also allow you to compare and contrast two previous versions, as well as do other advanced features.

With that mind, let's get to the exciting part, the screenshots.

Saving a Revision

media_1369195922886.png

Revisioning will actually occur automatically (if it's enabled), but you can optionally include a Version Name.

Accessing the Revisions

media_1369193612529.png

Currently the "Prior Versions" button is within the main content area, however it's going to be moved to the toolbar to provide consistency between extensions.

A List of Revisions

media_1369196150510.png

The revisions are all listed in descending order, with the latest revision listed first. To revert back to the version you'd like, select it and click the "Load Version" button. You will not lose any of your revisions by doing this, so you can freely load any that you'd like, and if you change your mind load another one.

There's also a Preview Version button to preview it before loading.

In the next screenshot, I'll demonstrate the Compare Versions feature.

media_1369219907401.png

To compare two versions, select the two versions that you'd like to compare, then click the Compare Versions button. 

media_1369220337679.png

The left column is the first revision that's selected (oldest first), the middle column is the second revision, and the third column represents the changes that have occurred between the two versions. I'll zoom into the third column, so that you can see it better.

media_1369220483671.png

As you can see, it highlights the changes for you, in order to make it easier to notice what has changed. A green highlight signifies an addition in the second version, while a red highlight signifies a deletion in the second version.

As you can also see, it keeps track of all the data about an item (e.g. ID, Asset ID, Title, Alias, Publishing State, Category ID, Created Date, etc). So if an employee accidentally changes a setting on the article and you're trying to figure out who did it to prevent it from happening again, you now have a way of finding out.

Content Versioning's Global Options

media_1369221225347.png

Content Versioning currently has two global options: Save History and Maximum Versions.

The Save History option turns the feature off/on, while the Maximum Versions options specifies how many versions to store before recycling the oldest version (so it doesn't take up space in the database, if it's not needed).

Front-end Version Control

media_1369221412682.png

Currently, changes through front-end editing are automatically stored, but there isn't a way to revert, preview, or compare revisions through the front-end. This feature has yet to be added. We can do an updated blog post once more features are added to the Content Versioning system.

That ends the preview of the proposed Content Versioning system at its current state of development. As you've seen, it's easy to use, simple, clean, elegant, and it does the job well. One other thing that you couldn't have noticed from the screenshots, but you can when you test, is that it's very fast. I was pleasantly surprised at how fast the screens load when items are saved, reverted, previewed, and compared.

Do You Want to Test Content Versioning?

If you'd like to test the feature live and provide feedback, here's how:

  1. Download the latest development version at https://github.com/dextercowley/joomla-cms/archive/versions-2.zip
  2. Install it as you normally would Joomla
  3. Test it throughly and write down your observations while testing
  4. Create an account at JoomlaCode (http://joomlacode.org/gf/account/?action=UserAdd) if you don't have one already (registration is free).
  5. Send your feedback to Mark Dexter in the feature tracker item for Content Versioning: http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=30944

Testing and providing feedback is a great way to contribute to Joomla and improve features before they launch. It helps to improve the software for you, your clients, and/or your organization, as well as all of Joomla's users.