--- trunk/lib/Strix/View/User.pm 2008/07/10 10:33:04 79 +++ trunk/lib/Strix/View/User.pm 2008/07/10 15:29:01 82 @@ -11,52 +11,51 @@ extends 'Continuity::Widget'; #with 'BonusTypes'; +sub edit_delete_buttons { + my $self = shift; + + return unless $self->_fey; + + $self->add_button( 'Edit' => sub { + my $out = $self->render_edit; + my $f = $self->next($out); + my $hash = $self->set_from_hash($f); + $self->_fey->update( %$hash ); + }); + + $self->add_button('Delete' => sub { + print STDERR "delete ID @{[$self->id]}!\n"; + $self->_fey->delete; + $self->next("Deleted id @{[$self->id]}!"); + $self->render_as( 'deleted' ); + Strix::Schema->ClearObjectCaches(); # XXX important! + }); + +} + sub main { my ( $self ) = @_; if ( ! $self->_fey ) { $self->add_button( 'Add' => sub { - warn "## Add button callback ",dump( @_ ); my $f = shift; -# my $out = $self->render_edit; -# my $f = $self->next($out); - warn "## my uuid ",$self->uuid; - $self->set_from_hash($f, sub { - warn "## inside set_from_hash ",dump( @_ ); - my $hash = shift || die "no hash?"; - delete( $hash->{id} ); # FIXME clear primary key -# $hash->{id} = undef; - my $u = Strix::User->insert( %$hash ); - warn "Inserted ",$u->id; - $self->_fey( $u ); - $self->render_as( 'view' ); - }); + my $hash = $self->set_from_hash($f); + delete( $hash->{id} ); # FIXME clear primary key + my $u = Strix::User->insert( %$hash ); + warn "Inserted ",$u->id; + # XXX store object for later + $self->_fey( $u ); + # put ID in widget, so that it know it's not new + $self->id( $u->id ); + $self->render_as( 'view' ); + $self->edit_delete_buttons; + $self->remove_button( 'Add' ); }); } - warn "# _fey = ",dump( $self->_fey ); - - if ( $self->_fey ) { + $self->edit_delete_buttons; - $self->add_button( 'Edit' => sub { - my $out = $self->render_edit; - my $f = $self->next($out); - $self->set_from_hash($f, sub { - warn "## inside set_from_hash ",dump( @_ ); - my $hash = shift || die "no hash?"; - $self->_fey->update( %$hash ); - }); - }); - - $self->add_button('Delete' => sub { - print STDERR "delete ID @{[$self->id]}!\n"; - $self->_fey->delete; - $self->next("Deleted id @{[$self->id]}!"); - $self->render_as( 'deleted' ); - Strix::Schema->ClearObjectCaches(); # XXX important! - }); - - } + warn "# ",$self->uuid, " [", $self->id ,"] _fey = ",dump( $self->_fey ); while(1) { my $out; @@ -100,6 +99,7 @@ } warn $@ if $@; + warn ">>> ",length($out),"\n"; my $f = $self->next($out); $self->set_from_hash($f); $self->exec_buttons($f);