/[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

Contents of /trunk/lib/Frey/Web/CRUD.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 143 - (show 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 package Frey::Web::CRUD;
2 use Moose;
3 extends 'Frey::Web::Item';
4 with 'Frey::Web::Button';
5
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 my $id = $self->fey->id;
37 $self->fey->delete;
38 $self->next( qq|<div class="notice">Deleted id $id</div>|);
39 $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