use Reaction::Class;
use Reaction::Types::File;
-class File is 'Reaction::UI::ViewPort::Field', which {
+use namespace::clean -except => [ qw(meta) ];
+extends 'Reaction::UI::ViewPort::Field';
- has '+value' => (isa => 'File', required => 0);
- #has '+layout' => (default => 'file');
- override apply_our_events => sub {
- my ($self, $ctx, $events) = @_;
- my $value_key = join(':', $self->location, 'value');
- if (my $upload = $ctx->req->upload($value_key)) {
- local $events->{$value_key} = $upload;
- return super();
- } else {
- return super();
- }
- };
+has '+value' => (isa => Reaction::Types::File::File());
-};
-
-1;
-
-=head1 NAME
-
-Reaction::UI::ViewPort::Field::File
-
-=head1 DESCRIPTION
-
-=head1 SEE ALSO
+has uri => ( is => 'rw', lazy_build => 1);
-=head2 L<Reaction::UI::ViewPort::Field>
-
-=head1 AUTHORS
-
-See L<Reaction::Class> for authors.
-
-=head1 LICENSE
+has action => (isa => 'CodeRef', is => 'rw', required => 1);
+sub _build_uri {
+ my $self = shift;
+ my $c = $self->ctx;
+ my ($c_name, $a_name, @rest) = @{ $self->action->($self->model, $c) };
+ $c->uri_for($c->controller($c_name)->action_for($a_name),@rest);
+};
+sub _value_string_from_value {
+ shift->value->stringify;
+};
+
+__PACKAGE__->meta->make_immutable;
-See L<Reaction::Class> for the license.
-=cut
+1;