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

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

revision 73 by dpavlin, Wed Jul 9 20:43:48 2008 UTC revision 87 by dpavlin, Thu Jul 10 19:36:39 2008 UTC
# Line 17  Don't quite know what this will be yet. Line 17  Don't quite know what this will be yet.
17  =cut  =cut
18    
19  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
   
20  use Data::UUID;  use Data::UUID;
21  use Moose;  use Moose;
22  with 'Continuity::Coro::Moose';  with 'Continuity::Coro::Moose';
23    
24  # List of callbacks, buttons for now  # List of callbacks, buttons for now
25  has callback => ( is => 'rw', default => sub {{}} );  has callback => ( is => 'rw', default => sub {{}} );
26    has callback_order => ( is => 'rw', isa => 'ArrayRef', default => sub { [] });
27    
28  has renderer => ( is => 'rw', isa => 'HashRef', default => sub {{}});  has renderer => ( is => 'rw', isa => 'HashRef', default => sub {{}});
29    
# Line 41  sub field_name { Line 41  sub field_name {
41    return $self->uuid . '-' . $name;    return $self->uuid . '-' . $name;
42  }  }
43    
44    sub render_iterator {
45            confess "BACKWARD INCOMATIBLE CHANGE: render_iterator works ONLY with 2 params!" unless $#_ == 1;
46            my ($self, $iterator) = @_;
47            my %attrmap = %{ $self->meta->get_attribute_map };
48            my $out;
49            while( my ($name, $attr) = each %attrmap ) {
50                    my $reader = $attr->get_read_method;
51                    my $val = $self->$reader || '';
52                    my $field_name = $self->field_name($name);
53                    $out .= $iterator->( $name, $field_name, $attr->label, $val ) || '';    # || '' to shut warnings
54            }
55            return $out;
56    }
57            
58    
59  # This renders an input form. Need to make the renderer selection dynamic  # This renders an input form. Need to make the renderer selection dynamic
60  sub render_edit {  sub render_edit {
61    my ($self) = @_;    my ($self) = @_;
# Line 89  sub render_view { Line 104  sub render_view {
104  }  }
105    
106  sub set_from_hash {  sub set_from_hash {
107          my ($self, $f, $callback) = @_;          my ($self, $f) = @_;
108          my %attrmap = %{ $self->meta->get_attribute_map };          my %attrmap = %{ $self->meta->get_attribute_map };
109          my $hash;          my $hash;
110          while( my ($name, $attr) = each %attrmap ) {          while( my ($name, $attr) = each %attrmap ) {
# Line 100  sub set_from_hash { Line 115  sub set_from_hash {
115                          $hash->{ $name } = $f->{$field_name};                          $hash->{ $name } = $f->{$field_name};
116                  }                  }
117          }          }
118          warn "# hash = ",dump( $hash );          warn "# set_from_hash ", $self->uuid," produced hash = ",dump( $hash ) if $hash;
119          $callback->( $hash ) if defined $hash && defined $callback;          return $hash;
120  }  }
121    
122  sub add_button {  sub add_button {
123    my ($self, $name, $callback) = @_;    my ($self, $name, $callback) = @_;
124    $self->callback->{$name} = $callback;    $self->callback->{$name} = $callback;
125      push @{ $self->callback_order }, $name;
126      warn "## callback_order = ",dump( $self->callback_order );
127    }
128    
129    sub remove_button {
130            my ( $self, $name ) = @_;
131            delete( $self->callback->{$name} );
132            my @new_order = grep { !/\Q$name\E/ } @{ $self->callback_order };
133            warn "# remove_button $name new order = ",dump( @new_order );
134            $self->callback_order( \@new_order );
135  }  }
136    
137  sub render_buttons {  sub render_buttons {
138    my ($self) = @_;    my ($self) = @_;
139    my $out = '';    my $out = '';
140    foreach my $name (keys %{$self->callback}) {    foreach my $name ( @{ $self->callback_order } ) {
141      my $btn_name = $self->field_name($name);      my $btn_name = $self->field_name($name);
142      $out .= qq{      $out .= qq{
       <br>  
143        <input type="submit" name="@{[$btn_name]}" value="$name">        <input type="submit" name="@{[$btn_name]}" value="$name">
144      };      };
145    }    }

Legend:
Removed from v.73  
changed lines
  Added in v.87

  ViewVC Help
Powered by ViewVC 1.1.26