r31711@martha (orig r1246): groditi | 2009-10-02 17:01:17 -0400
[catagits/Reaction.git] / lib / Reaction / UI / ViewPort / Field / Mutable / File.pm
1 package Reaction::UI::ViewPort::Field::Mutable::File;
2
3 use Reaction::Types::File qw/Upload/;
4 use Reaction::Class;
5
6 use namespace::clean -except => [ qw(meta) ];
7 extends 'Reaction::UI::ViewPort::Field';
8
9 with 'Reaction::UI::ViewPort::Field::Role::Mutable::Simple'
10     => { value_type => Upload };
11
12 override apply_our_events => sub {
13   my ($self, $events) = @_;
14   my $value_key = $self->event_id_for('value_string');
15   if (my $upload = $self->ctx->req->upload($value_key)) {
16     local $events->{$value_key} = $upload;
17     return super();
18   } else {
19     return super();
20   }
21 };
22 sub adopt_value_string {
23     my($self) = @_;
24     $self->value($self->value_string) if $self->value_string;
25 };
26 override _value_string_from_value => sub { '' };
27
28 __PACKAGE__->meta->make_immutable;
29
30
31 1;