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

Diff of /trunk/lib/Frey/Web/Item.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.63  
changed lines
  Added in v.79

  ViewVC Help
Powered by ViewVC 1.1.26