r21703@martha (orig r863): groditi | 2008-08-20 20:38:47 -0400
groditi [Fri, 22 Aug 2008 17:12:19 +0000 (17:12 +0000)]
 container support built into fields and an example of usage in ComponentUI

1  2 
lib/Reaction/UI/ViewPort/Action.pm
lib/Reaction/UI/ViewPort/Object.pm

@@@ -21,14 -6,16 +21,13 @@@ use MooseX::Types::Moose qw/Int/
  use Reaction::Types::Core qw/NonEmptySimpleStr/;
  
  use namespace::clean -except => [ qw(meta) ];
- extends Object;
 -
 -extends 'Reaction::UI::ViewPort::Object::Mutable';
  with 'Reaction::UI::ViewPort::Action::Role::OK';
  
 -#this has to fucking go. it BLOWS.
 -has method => (
 -  is => 'rw',
 -  isa => NonEmptySimpleStr,
 -  default => sub { 'post' }
 -);
 +has model => (
 +  is => 'ro',
 +  isa => 'Reaction::InterfaceModel::Action',
 +  required => 1
 + );
  
  has changed => (
    is => 'rw',
@@@ -158,22 -69,10 +157,22 @@@ Reaction::UI::ViewPort::Object::Mutabl
  
  =head1 SYNOPSIS
  
 +  use aliased 'Reaction::UI::ViewPort::Object::Mutable';
 +
 +  $self->push_viewport(Mutable,
 +    layout => 'register',
 +    model => $action,
 +    next_action => [ $self, 'redirect_to', 'accounts', $c->req->captures ],
 +    ctx => $c,
 +    field_order => [
 +      qw / contact_title company_name email address1 address2 address3
 +           city country post_code telephone mobile fax/ ],
 +  );
 +
  =head1 DESCRIPTION
  
- This subclass of L<Reaction::UI::ViewPort::Object> is used for rendering a
- collection of C<Reaction::UI::ViewPort::Field::Mutable::*> objects for user editing.
+ This subclass of L<Reaction::UI::ViewPort::Object::Mutable> is used for 
+ rendering a complete form supporting Apply, Close and OK.
  
  =head1 ATTRIBUTES
  
@@@ -48,11 -96,12 +53,13 @@@ sub _build_fields 
      my $attr = $param_attrs{$field_name};
      my $meth = $self->builder_cache->{$field_name} ||= $self->get_builder_for($attr);
      my $field = $self->$meth($attr, ($args->{$field_name} || {}));
-     push(@fields, $field) if $field;
+     next unless $field;
+     push(@fields, $field);
    }
    return \@fields;
- };
+ }
 +
  sub _build_computed_field_order {
    my ($self) = @_;
    my %excluded = map { $_ => undef } @{ $self->excluded_fields };