NAME

Jifty::Plugin::RecordHistory - track all changes made to a record class

SYNOPSIS

Add the following to your config:

framework:
    Plugins:
        - RecordHistory: {}

Add the following to one or more record classes:

use Jifty::Plugin::RecordHistory::Mixin::Model::RecordHistory;

DESCRIPTION

When you use Jifty::Plugin::RecordHistory::Mixin::Model::RecordHistory in a record class, we add a changes method which returns an Jifty::Plugin::RecordHistory::Model::ChangeCollection. These changes describe the updates made to the record, including its creation. Some changes also have change_fields which describe updates to the individual fields of the record.

You do not need to do anything beyond adding RecordHistory to your plugins and using the mixin to your record class(es) to enjoy transaction history. The mixin even hooks into Jifty itself to observe record creation, updates, and deletions.

Grouping

By default, the only mechanism that groups together change_fields onto a single change object is Jifty::Action::Record::Update (and its subclasses that do not override take_action). But if you want to make a number of field updates that need to be grouped into a single logical change, you can call start_change and end_change yourself on the record object.

Views

If you want to display changes for a record class, mount the following into your view tree to expose a default view at /foo/history?id=42 (or you can of course set id via dispatcher rule).

use Jifty::Plugin::RecordHistory::View;
alias Jifty::Plugin::RecordHistory::View under '/foo/history', {
    object_type => 'Foo',
};

Alternatively, if you want to extend the default templates, you can subclass Jifty::Plugin::RecordHistory::View in the same way as Jifty::View::Declare::CRUD.

SEE ALSO

Jifty::Plugin::ActorMetadata

AUTHOR

Shawn M Moore <sartak@bestpractical.com>

LICENSE

Jifty::Plugin::RecordHistory is Copyright 2011 Best Practical Solutions, LLC. Jifty::Plugin::RecordHistory is distributed under the same terms as Perl itself.