Changeset 2854

Show
Ignore:
Timestamp:
07/29/08 17:56:15 (4 months ago)
Author:
arvind
Message:

The revision number stored for an object should be determined by the driver. New revision number is returned by save_revision which is captured and saved in a post_save callback

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/feature-revision-histories/lib/MT/Revisable.pm

    r2852 r2854  
    6969    # prioritized and thus caused problems with plugins 
    7070    # registering a post_save and saving      
    71     MT->add_callback( 'api_post_save.' . $datasource, 9, undef, \&mt_postsave_obj); 
    72     MT->add_callback( 'cms_post_save.' . $datasource, 9, undef, \&mt_postsave_obj);                
     71    MT->add_callback( 'api_post_save.' . $datasource, 9, undef, \&mt_postsave_obj ); 
     72    MT->add_callback( 'cms_post_save.' . $datasource, 9, undef, \&mt_postsave_obj );                
    7373} 
    7474 
     
    105105    # Collision Checking 
    106106    my $changed_cols = $obj->{changed_revisioned_cols}; 
    107     my $modified_by = $orig->author; 
     107    my $modified_by = $obj->author; 
    108108     
    109109    if(scalar @$changed_cols) { 
    110110        if($app->isa('MT::App::CMS')  
    111111                && $app->param('current_revision') # not submitted if a user saves again on collision 
    112                     && $app->param('current_revision') != $orig->current_revision) { 
     112                    && $app->param('current_revision') != $obj->current_revision) { 
    113113            my %param = ( 
    114114                collision   => 1, 
     
    118118            return $app->forward( "view", \%param ); 
    119119        } 
    120     }     
    121      
    122     $obj->increment_revision($orig)
     120    } 
     121     
     122    return 1
    123123} 
    124124 
     
    126126    my ($cb, $app, $obj, $orig) = @_; 
    127127     
    128     $obj->save_revision(); 
     128    my $current_revision = $obj->save_revision(); 
     129     
     130    $obj->current_revision($current_revision); 
     131    $obj->save or return $obj->error($obj->errstr); 
     132     
     133    return 1; 
    129134} 
    130135 
     
    170175} 
    171176 
    172 sub increment_revision { 
    173     my $obj = shift; 
    174     my ($orig) = @_; 
    175      
    176     my $changed_cols = $obj->{changed_revisioned_cols}; 
    177     return 1 unless scalar @$changed_cols > 0; 
    178      
    179     # We default current_revision to 0 so we can always increment 
    180     # Initial save = rev 1 
    181     my $current_revision = $obj->current_revision; 
    182     $obj->current_revision(++$current_revision); 
    183 } 
    184  
    185177sub save_revision { _handle(@_); } 
    186178sub object_from_revision { _handle(@_); } 
     
    193185    my $rev = $obj->load_revision($terms, $args) 
    194186        or return $obj->error( 
    195             MT->translate('Revision (ID: [_1]) not found.', $rev_id)); 
     187            MT->translate('Revision not found: [_1]', $obj->errstr)); 
    196188    my $rev_object = $rev->[0]; 
    197189    $obj->set_values($rev_object->column_values); 
  • branches/feature-revision-histories/lib/MT/Revisable/Local.pm

    r2852 r2854  
    100100    my $packed_obj = $obj->pack_revision();  
    101101    my $changed_cols = $obj->{changed_revisioned_cols}; 
     102    my $current_revision = $obj->current_revision; 
    102103     
    103104    require MT::Serialize; 
     
    109110        changed     => join ',', @$changed_cols 
    110111    }); 
    111     $revision->rev_number($obj->current_revision); 
     112    $revision->rev_number(++$current_revision); 
    112113    $revision->save or return; 
    113114     
    114     return 1
     115    return $current_revision
    115116} 
    116117