/[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 123 - (show annotations)
Mon Jul 14 21:45:59 2008 UTC (15 years, 9 months ago) by dpavlin
File size: 1537 byte(s)
split CRUD buttons out from Row and leave Item without any buttons
1 package Frey::Web::CRUD;
2 use Moose;
3 extends 'Frey::Web::Item';
4
5 =head1 NAME
6
7 Frey::Web::CRUD - Add/Edit/Delete buttons for L<Frey::Web::Item>
8
9 =cut
10
11 use Data::Dump qw/dump/;
12
13 sub edit_delete_buttons {
14 my $self = shift;
15
16 return unless $self->fey;
17
18 $self->add_button( 'Edit' => sub {
19 $self->remove_button( 'Delete' );
20 $self->rename_button( 'Edit' => 'Save' );
21 my $out = $self->render_edit;
22 my $f = $self->next($out);
23 my $hash = $self->set_from_hash($f);
24 warn "# Edit/Save hash = ",dump( $hash );
25 $self->fey->update( %$hash ) if $hash;
26 $self->rename_button( 'Save' => 'Edit' );
27 $self->delete_button;
28 });
29 $self->delete_button;
30 }
31
32 sub delete_button {
33 my $self = shift;
34 $self->add_button('Delete' => sub {
35 $self->fey->delete;
36 $self->next( qq|<div class="notice">Deleted id @{[$self->id]}!</div>|);
37 $self->render_as( 'none' );
38 # Strix::Schema->ClearObjectCaches(); # XXX important!
39 });
40 }
41
42 before 'main' => sub {
43 my $self = shift;
44
45 if ( ! $self->fey ) {
46 $self->add_button( 'Add' => sub {
47 my $f = shift;
48 my $hash = $self->set_from_hash($f);
49 warn "## Add hash ", $self->uuid, " => ",dump( $hash, $f );
50 delete( $hash->{id} ); # FIXME clear primary key
51 my $u = $self->fey_class->insert( %$hash );
52 warn "Inserted ",$u->id;
53 # XXX store object for later
54 $self->fey( $u );
55 # put ID in widget, so that it know it's not new
56 $self->id( $u->id );
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