my $old = dump $loaded->{$path}->{data}->{items}->[$i]->{$name};
my $new = dump $v;
if ( $old ne $new
- && ! ( $old eq 'undef' && length($content) == 0 ) # new value empty, previous undef
+ && ! ( $old eq 'undef' && length($new_content) == 0 ) # new value empty, previous undef
) {
- warn "# update $path $i $old -> $new\n";
+ my $edit = {
+ path => $path,
+ column => $name,
+ pos => $i,
+ old => $loaded->{$path}->{data}->{items}->[$i]->{$name},
+ new => $v,
+ time => $self->param('time') || time(),
+ user => $self->param('user') || $ENV{'LOGNAME'},
+ unique => {
+ map { $_ => $loaded->{$path}->{data}->{items}->[$i]->{$_}->[0] }
+ grep { defined $loaded->{$path}->{stats}->{$_}->{unique} }
+ keys %{ $loaded->{$path}->{stats} }
+ },
+ };
+ my $edit_path = $self->_permanent_path( 'edits' );
+ mkdir $edit_path unless -d $edit_path;
+ $edit_path .= '/' . $edit->{time};
+ store $edit, $edit_path;
+ utime $edit->{time}, $edit->{time}, $edit_path;
+ warn "# $edit_path ", dump($edit);
+
+ warn "# edit $path $i $old -> $new\n";
$loaded->{$path}->{data}->{items}->[$i]->{$name} = $v;
if ( defined $loaded->{$path}->{sorted}->{$name} ) {