From: Chris W. <la...@us...> - 2004-12-05 08:52:11
|
Update of /cvsroot/openinteract/OpenInteract2/pkg/base_theme/OpenInteract2/Action In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16278/pkg/base_theme/OpenInteract2/Action Modified Files: Theme.pm Log Message: update packages to move as many messages as possible out of code and into message files; use new add_status/add_error shortcuts Index: Theme.pm =================================================================== RCS file: /cvsroot/openinteract/OpenInteract2/pkg/base_theme/OpenInteract2/Action/Theme.pm,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Theme.pm 18 Feb 2004 05:23:09 -0000 1.10 --- Theme.pm 5 Dec 2004 08:51:20 -0000 1.11 *************** *** 22,27 **** $log ||= get_logger( LOG_APP ); ! $log->is_info && ! $log->info( "Listing themes in system" ); my $items = eval { CTX->lookup_object( 'theme' ) --- 22,26 ---- $log ||= get_logger( LOG_APP ); ! $log->is_info && $log->info( "Listing themes in system" ); my $items = eval { CTX->lookup_object( 'theme' ) *************** *** 30,38 **** if ( $@ ) { $log->error( "Error fetching themes: $@" ); ! $self->param_add( error_msg => "Failed to fetch themes: $@" ); $items = []; } ! $log->is_debug && ! $log->debug( "Found ", scalar @{ $items }, " themes" ); return $self->generate_content( { theme_list => $items }, --- 29,36 ---- if ( $@ ) { $log->error( "Error fetching themes: $@" ); ! $self->add_error_key( 'base_theme.error.fetch_all', $@ ); $items = []; } ! $log->is_debug && $log->debug( "Found ", scalar @{ $items }, " themes" ); return $self->generate_content( { theme_list => $items }, *************** *** 64,69 **** if ( $@ ) { $properties = {}; ! $self->param_add( ! error_msg => "Failed to fetch theme properties: $@" ); } my @property_list = map { $properties->{ $_ } } --- 62,66 ---- if ( $@ ) { $properties = {}; ! $self->add_error_key( 'base_theme.error.fetch_prop', $@ ); } my @property_list = map { $properties->{ $_ } } *************** *** 77,82 **** }; if ( $@ ) { ! $self->param_add( error_msg => "Failed to fetch all themes for " . ! "filling list of parents: $@" ); } # Mark every property that's from a different theme than this one. --- 74,78 ---- }; if ( $@ ) { ! $self->add_error_key( 'base_theme.error.fetch_all_for_parent', $@ ); } # Mark every property that's from a different theme than this one. *************** *** 121,126 **** if ( $@ ) { $log->error( "Failed to fetch theme properties: $@" ); ! $self->param_add( ! error_msg => "Failed to fetch theme properties: $@" ); } --- 117,121 ---- if ( $@ ) { $log->error( "Failed to fetch theme properties: $@" ); ! $self->add_error_key( 'base_theme.error.fetch_prop', $@ ); } *************** *** 139,192 **** next PROPERTY unless ( $changed or $removed ); - # Grab this property's theme ID for comparison later - - my $tp_theme_id = $tp->theme->{theme_id}; if ( $changed ) { ! $tp->{value} = $request->param( "value_$tp_id" ); ! $tp->{description} = $request->param( "desc_$tp_id" ); ! if ( $theme_id != $tp_theme_id ) { ! $log->is_debug && ! $log->debug( "Property $tp->{prop} needs to ", ! "be cloned/modified." ); ! my $save_tp = $tp->clone({ theme_id => $theme_id }); ! eval { $save_tp->save }; ! if ( $@ ) { ! $self->param_add( ! error_msg => "Cannot add property $tp->{prop}: $@" ); ! $log->error( "Cannot add property [$tp->{prop}]; ", ! "Error: $@" ); ! } ! } ! else { ! $log->is_debug && ! $log->debug( "Property $tp->{prop} needs to ", ! "be edited in place." ); ! eval { $tp->save }; ! if ( $@ ) { ! $self->param_add( ! error_msg => "Cannot update property [$tp->{prop}]: $@" ); ! $log->error( "Cannot update property [$tp->{prop}]; ", ! "Error: $@" ); ! } ! } } - elsif ( $removed ) { ! $log->is_debug && ! $log->debug( "Property $tp->{prop} must be removed." ); ! if ( $theme_id != $tp_theme_id ) { ! $self->param_add( ! error_msg => "Cannot remove property [$tp->{prop}] " . ! "since it belongs to another theme." ); ! } ! else { ! eval { $tp->remove }; ! if ( $@ ) { ! $self->param_add( ! error_msg => "Cannot remove property [$tp->{prop}]: $@" ); ! $log->error( "Cannot remove property [$tp->{prop}]; ", ! "Error: $@" ); ! } ! } } } --- 134,142 ---- next PROPERTY unless ( $changed or $removed ); if ( $changed ) { ! $self->_create_or_update_property( $theme_id, $tp ); } elsif ( $removed ) { ! $self->_remove_property( $theme_id, $tp ); } } *************** *** 204,209 **** eval { $new_tp->save }; if ( $@ ) { ! $self->param_add( ! error_msg => "Cannot create property [$new_tp->{prop}]: $@" ); } } --- 154,159 ---- eval { $new_tp->save }; if ( $@ ) { ! $self->add_error_key( 'base_theme.error.add_prop', ! $new_tp->{prop}, $@ ); } } *************** *** 216,219 **** --- 166,216 ---- } + sub _create_or_update_property { + my ( $self, $theme_id, $prop ) = @_; + my $request = CTX->request; + my $prop_theme_id = $prop->theme->id; + my $prop_id = $prop->id; + $prop->{value} = $request->param( "value_$prop_id" ); + $prop->{description} = $request->param( "desc_$prop_id" ); + if ( $theme_id != $prop_theme_id ) { + $log->is_debug && + $log->debug( "Prop $prop->{prop} needs to be cloned/modified." ); + my $save_tp = $prop->clone({ theme_id => $theme_id }); + eval { $save_tp->save }; + if ( $@ ) { + $self->add_error_key( 'base_theme.error.add_prop', + $prop->{prop}, $@ ); + $log->error( "Cannot add property '$prop->{prop}': $@" ); + } + } + else { + $log->is_debug && + $log->debug( "Prop $prop->{prop} needs to be edited in place." ); + eval { $prop->save }; + if ( $@ ) { + $self->add_error_key( 'base_theme.error.update_prop', + $prop->{prop}, $@ ); + $log->error( "Cannot update prop '$prop->{prop}': $@" ); + } + } + } + + sub _remove_property { + my ( $self, $theme_id, $prop ) = @_; + my $prop_theme_id = $prop->theme->id; + $log->is_debug && + $log->debug( "Property $prop->{prop} must be removed." ); + if ( $theme_id != $prop_theme_id ) { + $self->add_error_key( 'base_theme.error.remove_prop_belongs', $prop->{prop} ); + } + else { + eval { $prop->remove }; + if ( $@ ) { + $self->add_error_key( 'base_theme.error.remove_prop', $prop->{prop}, $@ ); + $log->error( "Cannot remove property '$prop->{prop}': $@" ); + } + } + } + 1; *************** *** 285,287 **** =head1 AUTHORS ! Chris Winters E<lt>ch...@cw...E<gt> \ No newline at end of file --- 282,284 ---- =head1 AUTHORS ! Chris Winters E<lt>ch...@cw...E<gt> |