VersionControl by Teppo

Version control features for page content.

Version Control For ProcessWire CMS/CMF

Version Control Module For ProcessWire CMS/CMF. Copyright (c) 2013-2016 Teppo Koivula

This module uses hooks provided by ProcessWire to catch page edits and stores history data in a series of custom database tables, so that it can be later retrieved, reviewed, and restored.

Note that at module settings you can define which specific fieldtypes and fields to track and for which templates tracking values should be enabled. Right out of the box tracking is disabled for all templates and fields.

While editing a page with version control enabled, revision toggle (link which opens list of previous revisions) is shown for fields with earlier revisions available. From this list user can select a revision and rollback value of the field to that specific revision.

Supported fieldtypes and inputfields


All native ProcessWire fieldtypes and inputfields, apart from those that either don't directly store values at all (repeaters fields, fieldsets) or only store hashed values (password), should be supported by the time of this writing:

  • Email
  • Datetime
  • Text (regular and multi-language)
  • Textarea (regular and multi-language)
  • Page Title (regular and multi-language)
  • Checkbox
  • Integer
  • Float
  • URL
  • Page
  • Module
  • File
  • Image
  • Selector
  • Options

Supported third party fieldtypes:

  • ProFields Textareas

If a specific fieldtype isn't listed here, it doesn't necessarily mean that it's not supported; it just hasn't been tested yet. If you know a fieldtype that works properly with this module but isn't included here, please inform the author of this module via GitHub.

You can enable support for any installed fieldtypes locally by modifying the "Compatible fieldtypes" setting, which can be found under "Advanced Settings" in module configuration screen.

Following inputfields are confirmed to be supported:

  • TinyMCE
  • CKEditor (regular and inline mode)
  • Text (+ other inputfields using <input> HTML element, such as Email)
  • Textarea (+ other inputfields using regular <textarea> HTML element)
  • Select
  • File
  • Image
  • Selector

Requirements


Please note that this module requires ProcessWire 2.4.1 or a later version. If you're still running an earlier version of ProcessWire and would like to have a similar feature, please take a look at the Version Control for Text Fields module: https://github.com/teppokoivula/VersionControlForTextFields.

Getting started


Copy (or clone with git) VersionControl folder to /site/modules/, go to Admin > Modules, hit "Check for new modules" and install Version Control. Supporting modules Process Version Control and Page Snapshot are installed automatically.

After installing this module you need to configure it before anything really starts happening. Most configuration options (essentially templates and fields this module is switched on for) can be found from Admin > Modules > Version Control (module config.) Minor settings can be found from related Process modules config: Admin > Modules > Process Version Control.

Diff Match and Patch


The Diff Match and Patch libraries offer robust algorithms to perform the operations required for synchronizing plain text. In the scope of current module, the JavaScript implementation of Diff Match and Patch is used to render diff between different revisions of a field value.

Diff Match and Patch is copyright (c) 2006 Google Inc. and released under the Apache License, Version 2.0. For more information about this library, please visit http://code.google.com/p/google-diff-match-patch/.

License


This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

(See included LICENSE file for full license text.)

Install and use modules at your own risk. Always have a site and database backup before installing new modules.

Twitter updates

  • This week ProcessWire (3.0.175) gained the ability to maintain separate read-only and read-write database connections to optimize scalability, cost and performance. The post covers why this can be so valuable and how to configure it in ProcessWire— More
    2 April 2021
  • ProcessWire 3.0.174 core updates: improvements to the new path/URL hooks and more— More
    12 March 2021
  • ProcessWire 3.0.173 adds several new requested features and this post focuses on one of my favorites: the ability to hook into and handle ProcessWire URLs, independent of pages— More
    5 March 2021

Latest news

  • ProcessWire Weekly #361
    In the 361st issue of ProcessWire Weekly we'll take  closer look at a new third party module called Copy Markdown, and check out the latest weekly update from Ryan. Read on!
    Weekly.pw / 10 April 2021
  • ProcessWire 3.0.175 adds new database scalability options
    This week ProcessWire gained the ability to maintain separate read-only and read-write database connections to optimize scalability, cost and performance. The post covers why this can be so valuable and how to configure it in ProcessWire.
    Blog / 2 April 2021
  • Subscribe to weekly ProcessWire news

“We chose ProcessWire because of its excellent architecture, modular extensibility and the internal API. The CMS offers the necessary flexibility and performance for such a complex website like superbude.de. ProcessWire offers options that are only available for larger systems, such as Drupal, and allows a much slimmer development process.” —xport communication GmbH