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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 82 - (hide annotations)
Thu Jul 10 15:29:01 2008 UTC (15 years, 9 months ago) by dpavlin
Original Path: trunk/lib/Strix/View/User.pm
File size: 2951 byte(s)
some cleanup CRUD works, version bump [0.06]
1 dpavlin 63 package Strix::View::User;
2    
3 dpavlin 71 use Data::Dump qw/dump/;
4    
5 dpavlin 63 use metaclass 'Moose::Meta::Class' => (
6     attribute_metaclass => 'Continuity::Meta::Attribute::FormField'
7     );
8    
9     use Moose;
10    
11     extends 'Continuity::Widget';
12     #with 'BonusTypes';
13    
14 dpavlin 82 sub edit_delete_buttons {
15     my $self = shift;
16    
17     return unless $self->_fey;
18    
19     $self->add_button( 'Edit' => sub {
20     my $out = $self->render_edit;
21     my $f = $self->next($out);
22     my $hash = $self->set_from_hash($f);
23     $self->_fey->update( %$hash );
24     });
25    
26     $self->add_button('Delete' => sub {
27     print STDERR "delete ID @{[$self->id]}!\n";
28     $self->_fey->delete;
29     $self->next("Deleted id @{[$self->id]}!");
30     $self->render_as( 'deleted' );
31     Strix::Schema->ClearObjectCaches(); # XXX important!
32     });
33    
34     }
35    
36 dpavlin 74 sub main {
37     my ( $self ) = @_;
38    
39     if ( ! $self->_fey ) {
40     $self->add_button( 'Add' => sub {
41     my $f = shift;
42 dpavlin 82 my $hash = $self->set_from_hash($f);
43     delete( $hash->{id} ); # FIXME clear primary key
44     my $u = Strix::User->insert( %$hash );
45     warn "Inserted ",$u->id;
46     # XXX store object for later
47     $self->_fey( $u );
48     # put ID in widget, so that it know it's not new
49     $self->id( $u->id );
50     $self->render_as( 'view' );
51     $self->edit_delete_buttons;
52     $self->remove_button( 'Add' );
53 dpavlin 74 });
54 dpavlin 79 }
55 dpavlin 74
56 dpavlin 82 $self->edit_delete_buttons;
57 dpavlin 79
58 dpavlin 82 warn "# ",$self->uuid, " [", $self->id ,"] _fey = ",dump( $self->_fey );
59 dpavlin 79
60 dpavlin 74 while(1) {
61 dpavlin 79 my $out;
62     if ( $self->render_as eq 'edit' ) {
63     $out = $self->render_iterator(
64     qq|<div class="editform">|,
65     sub {
66     #warn "# edit render_iterator ",dump( @_ );
67     my ( $name, $field_name, $label, $val ) = @_;
68     return if $name =~ /^_/;
69     return qq|
70     <div class=fieldholder>
71     <div class=label>$label</div>
72     <div class=field>
73     <input type=text id="$field_name" name="$field_name" value="$val">
74     </div>
75     </div>
76     |;
77     },
78     qq|</div>|
79     );
80     } elsif ( $self->render_as eq 'view' ) {
81     $out = $self->render_iterator(
82     qq|<div class="view">|,
83     sub {
84     #warn "# view render_iterator ",dump( @_ );
85     my ( $name, $field_name, $label, $val ) = @_;
86     return if $name =~ /^_/;
87     return qq|
88     <div class=fieldholder>
89     <div class=label>$label</div>
90     <div class=field>$val</div>
91     </div>
92     </div>
93     |;
94     },
95     qq|</div>|
96     );
97     } else {
98     warn "no renderer ",dump( $self->render_as ), " skipping...";
99     }
100    
101 dpavlin 74 warn $@ if $@;
102 dpavlin 82 warn ">>> ",length($out),"\n";
103 dpavlin 71 my $f = $self->next($out);
104 dpavlin 74 $self->set_from_hash($f);
105     $self->exec_buttons($f);
106     }
107 dpavlin 71 };
108    
109 dpavlin 63 use Data::Dump qw/dump/;
110    
111     use Strix::User;
112     my $m = Strix::User->meta;
113    
114     foreach ( $m->get_attribute_list ) {
115 dpavlin 74 my $attr = $m->get_attribute( $_ );
116 dpavlin 63 warn ">> $_\n";
117    
118 dpavlin 74 # FIXME primary key would have to be read-only!
119    
120 dpavlin 63 has $_ => (
121     is => $attr->_is_metadata,
122     label => ucfirst($_),
123     required => $attr->is_required,
124     );
125    
126     }
127    
128 dpavlin 71 has _foo => (
129 dpavlin 63 is => 'rw',
130     label => 'Foo',
131     );
132    
133 dpavlin 71 has _fey => (
134     is => 'rw',
135     label => 'Fey object',
136     isa => 'Strix::User',
137     );
138    
139 dpavlin 63 1;

  ViewVC Help
Powered by ViewVC 1.1.26