aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Reaction/UI/ViewPort/Field/Mutable/File.pm
blob: ffbcbc9e067b101b3a6e43a06e491d3f06d5b7c9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package Reaction::UI::ViewPort::Field::Mutable::File;

use Reaction::Types::File qw/Upload/;
use Reaction::Class;

class File is 'Reaction::UI::ViewPort::Field', which {
  does 'Reaction::UI::ViewPort::Field::Role::Mutable::Simple';

  has '+value' => (isa => Upload);

  override apply_our_events => sub {
    my ($self, $ctx, $events) = @_;
    my $value_key = $self->event_id_for('value_string');
    if (my $upload = $ctx->req->upload($value_key)) {
      local $events->{$value_key} = $upload;
      return super();
    } else {
      return super();
    }
  };

  implements adopt_value_string => sub {
      my($self) = @_;
      $self->value($self->value_string) if $self->value_string;
  };

  overrides _value_string_from_value => sub { '' };

};

1;