fixed field_class
[catagits/Reaction.git] / lib / Reaction / UI / Widget / Field / Mutable / ChooseMany.pm
1 package Reaction::UI::Widget::Field::Mutable::ChooseMany;
2
3 use Reaction::UI::WidgetClass;
4
5 class ChooseMany is 'Reaction::UI::Widget::Field::Mutable', which {
6
7   implements fragment action_buttons {
8     foreach my $event (
9       qw(add_all_values do_add_values do_remove_values remove_all_values)
10         ) {
11       arg "event_id_${event}" => event_id $event;
12     }
13   };
14
15   implements fragment current_values {
16     my $current_choices = $_{viewport}->current_value_choices;
17     if( @$current_choices ){
18       arg field_name => event_id 'value';
19       render hidden_value => over $current_choices;
20     } else {
21       arg field_name => event_id 'no_current_value';
22       arg '_' => {value => 1};
23       render 'hidden_value';
24     }
25   };
26
27   implements fragment selected_values {
28     arg event_id_remove_values => event_id 'remove_values';
29     render value_option => over $_{viewport}->current_value_choices;
30   };
31
32   implements fragment available_values {
33     arg event_id_add_values => event_id 'add_values';
34     render value_option => over $_{viewport}->available_value_choices;
35   };
36
37   implements fragment value_option {
38     arg option_name => $_->{name};
39     arg option_value => $_->{value};
40   };
41
42   implements fragment hidden_value {
43     arg hidden_value => $_->{value};
44   };
45
46 };
47
48 1;
49
50 __END__;
51
52 =head1 NAME
53
54 Reaction::UI::Widget::Field::ChooseMany
55
56 =head1 DESCRIPTION
57
58 See L<Reaction::UI::Widget::Field>
59
60 This needs a refactor to not be tied to a dual select box, but ENOTIME
61
62 =head1 FRAGMENTS
63
64 =head2 field
65
66 renders C<available_values>, C<action_buttons>, C<selected_values> and C<current_values>
67
68 =head2 current values
69
70 renders the viewport's current_value_choices over hidden_value
71
72 =head2 hidden_value
73
74 C<content> is the value of the current choice
75
76 =head2 available_value
77
78 rendersthe viewport's current_available_value_choices over the option fragment
79
80 =head2 selected_value
81
82 rendersthe viewport's current_selected_value_choices over the option fragment
83
84 =head2 option
85
86 C<content> is a dummy value but C<v_value> and C<v_name> are both set.
87
88 =head1 AUTHORS
89
90 See L<Reaction::Class> for authors.
91
92 =head1 LICENSE
93
94 See L<Reaction::Class> for the license.
95
96 =cut