--- lib/Grep/Model/Item.pm 2007/02/20 10:32:30 37 +++ lib/Grep/Model/Item.pm 2007/07/04 09:38:51 168 @@ -33,11 +33,12 @@ column author => type is 'text'; - column issued => + column created_on => type is 'timestamp', + default is defer { DateTime->now }, filters are qw( Jifty::Filter::DateTime Jifty::DBI::Filter::DateTime ); - column modified => + column last_update => type is 'timestamp', filters are qw( Jifty::Filter::DateTime Jifty::DBI::Filter::DateTime ); @@ -51,9 +52,34 @@ my $self = shift; my $what = shift; - Jifty->log->debug("current_user_can($what) on item ", $self->id); + my $uid = Jifty->web->current_user->id; - return 1 if Jifty->web->current_user->id; + # superuser + return 1 if ( defined $uid && $uid == 0 ); + + return 1 if ( $uid && $what eq 'create' ); + + return 1 if ( $uid && ! $self->id ); + + my $owner_id = $self->in_feed->owner->id; + +# Jifty->log->debug("current_user[$uid]_can($what) on Item ", $self->id || '???', " owner ", $owner_id || '???'); + + return 1 if ( $uid && $owner_id && $uid == $owner_id ); + + # system user + return 1 if ( defined( $uid ) && $uid == 0 ); + + warn "$uid can't $what"; +} + +sub _set { + my $self = shift; + my ($val, $msg) = $self->SUPER::_set(@_); + + $self->SUPER::_set(column => 'last_update', value => defer { DateTime->now }); + + return ($val, $msg); } 1;