/[Frey]/trunk/lib/Frey/ORM/CRUD.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/Frey/ORM/CRUD.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 135 - (hide annotations)
Tue Jul 15 17:14:10 2008 UTC (15 years, 10 months ago) by dpavlin
Original Path: trunk/lib/Frey/Web/CRUD.pm
File size: 1515 byte(s)
cleanup field handling (just first step)
1 dpavlin 123 package Frey::Web::CRUD;
2     use Moose;
3 dpavlin 129 extends 'Frey';
4     with 'Frey::Web::Item';
5     with 'Frey::Web::Button';
6 dpavlin 123
7     =head1 NAME
8    
9     Frey::Web::CRUD - Add/Edit/Delete buttons for L<Frey::Web::Item>
10    
11     =cut
12    
13     use Data::Dump qw/dump/;
14    
15     sub edit_delete_buttons {
16     my $self = shift;
17    
18     return unless $self->fey;
19    
20     $self->add_button( 'Edit' => sub {
21     $self->remove_button( 'Delete' );
22     $self->rename_button( 'Edit' => 'Save' );
23     my $out = $self->render_edit;
24     my $f = $self->next($out);
25     my $hash = $self->set_from_hash($f);
26     warn "# Edit/Save hash = ",dump( $hash );
27     $self->fey->update( %$hash ) if $hash;
28     $self->rename_button( 'Save' => 'Edit' );
29     $self->delete_button;
30     });
31     $self->delete_button;
32     }
33    
34     sub delete_button {
35     my $self = shift;
36     $self->add_button('Delete' => sub {
37 dpavlin 135 my $id = $self->fey->id;
38 dpavlin 123 $self->fey->delete;
39 dpavlin 135 $self->next( qq|<div class="notice">Deleted id $id</div>|);
40 dpavlin 123 $self->render_as( 'none' );
41     # Strix::Schema->ClearObjectCaches(); # XXX important!
42     });
43     }
44    
45     before 'main' => sub {
46     my $self = shift;
47    
48     if ( ! $self->fey ) {
49     $self->add_button( 'Add' => sub {
50     my $f = shift;
51     my $hash = $self->set_from_hash($f);
52     warn "## Add hash ", $self->uuid, " => ",dump( $hash, $f );
53     delete( $hash->{id} ); # FIXME clear primary key
54     my $u = $self->fey_class->insert( %$hash );
55     warn "Inserted ",$u->id;
56     # XXX store object for later
57     $self->fey( $u );
58     $self->render_as( 'view' );
59     $self->edit_delete_buttons;
60     $self->remove_button( 'Add' );
61     });
62     }
63    
64     $self->edit_delete_buttons;
65    
66     };
67    
68     1;

  ViewVC Help
Powered by ViewVC 1.1.26