/[Frey]/trunk/lib/Frey/Web/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/Web/CRUD.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 143 - (hide annotations)
Wed Jul 16 14:17:46 2008 UTC (15 years, 9 months ago) by dpavlin
File size: 1502 byte(s)
huge refactor of code into more distinct classes

- Frey::Collection is now generally reusable from browser and designer
- Frey::Web::Item is now (bare) class instead of role
- Frey::Web::Layout now encapsulates different layouts for items
1 dpavlin 123 package Frey::Web::CRUD;
2     use Moose;
3 dpavlin 143 extends 'Frey::Web::Item';
4 dpavlin 129 with 'Frey::Web::Button';
5 dpavlin 123
6     =head1 NAME
7    
8     Frey::Web::CRUD - Add/Edit/Delete buttons for L<Frey::Web::Item>
9    
10     =cut
11    
12     use Data::Dump qw/dump/;
13    
14     sub edit_delete_buttons {
15     my $self = shift;
16    
17     return unless $self->fey;
18    
19     $self->add_button( 'Edit' => sub {
20     $self->remove_button( 'Delete' );
21     $self->rename_button( 'Edit' => 'Save' );
22     my $out = $self->render_edit;
23     my $f = $self->next($out);
24     my $hash = $self->set_from_hash($f);
25     warn "# Edit/Save hash = ",dump( $hash );
26     $self->fey->update( %$hash ) if $hash;
27     $self->rename_button( 'Save' => 'Edit' );
28     $self->delete_button;
29     });
30     $self->delete_button;
31     }
32    
33     sub delete_button {
34     my $self = shift;
35     $self->add_button('Delete' => sub {
36 dpavlin 135 my $id = $self->fey->id;
37 dpavlin 123 $self->fey->delete;
38 dpavlin 135 $self->next( qq|<div class="notice">Deleted id $id</div>|);
39 dpavlin 123 $self->render_as( 'none' );
40     # Strix::Schema->ClearObjectCaches(); # XXX important!
41     });
42     }
43    
44     before 'main' => sub {
45     my $self = shift;
46    
47     if ( ! $self->fey ) {
48     $self->add_button( 'Add' => sub {
49     my $f = shift;
50     my $hash = $self->set_from_hash($f);
51     warn "## Add hash ", $self->uuid, " => ",dump( $hash, $f );
52     delete( $hash->{id} ); # FIXME clear primary key
53     my $u = $self->fey_class->insert( %$hash );
54     warn "Inserted ",$u->id;
55     # XXX store object for later
56     $self->fey( $u );
57     $self->render_as( 'view' );
58     $self->edit_delete_buttons;
59     $self->remove_button( 'Add' );
60     });
61     }
62    
63     $self->edit_delete_buttons;
64    
65     };
66    
67     1;

  ViewVC Help
Powered by ViewVC 1.1.26