moving logic to widget class
[catagits/Reaction.git] / lib / Reaction / UI / Widget / Field / Mutable.pm
1 package Reaction::UI::Widget::Field::Mutable;
2
3 use Reaction::UI::WidgetClass;
4
5 class Mutable is 'Reaction::UI::Widget::Field', which {
6
7    before fragment widget {
8      arg 'field_id' => event_id 'value_string';
9      my $field_name = event_id 'value_string' unless defined $_{field_name};
10      arg 'field_name' => $field_name;
11      arg 'field_type' => 'text';
12      my $field_class = $field_name;
13      $field_class =~ s/\d\-//;
14      arg 'field_class' => $field_class;
15
16      # these two are to fire force_events in viewports
17      # where you can end up without an event for e.g.
18      # HTML checkbox fields
19
20      arg 'exists_event' => event_id 'exists';
21      arg 'exists_value' => 1;
22    };
23
24    implements fragment message_fragment {
25      if (my $message = $_{viewport}->message) {
26        arg message => $message;
27        render 'message';
28      }
29    };
30
31    implements fragment field_is_required {
32      my $model = $_{viewport}->model;
33      my $attr  = $_{viewport}->attribute;
34      if ( $model->attribute_is_required($attr) ) {
35          render 'field_is_required_yes';
36      } else {
37          render 'field_is_required_no';
38      }
39    };
40
41 };
42
43 1;
44
45 __END__;