more Widget updates. this breaks old-style templates, also changed how VPs behave...
[catagits/Reaction.git] / lib / Reaction / UI / Widget / Field / ChooseMany.pm
1 package Reaction::UI::Widget::Field::ChooseMany;
2
3 use Reaction::UI::WidgetClass;
4
5 class ChooseMany is 'Reaction::UI::Widget::Field', which {
6
7   field renders [qw/available_values action_buttons selected_values current_values/];
8
9   current_values renders [ hidden_value over func('viewport', 'current_value_choices')  ];
10   hidden_value   renders [ string { $_->{value} } ];
11
12   available_values renders [ option over func('viewport', 'available_value_choices') ];
13   selected_values  renders [ option over func('viewport', 'current_value_choices')   ];
14   option renders [string {"DUMMY"}], { v_value => sub {$_->{value}}, v_name => sub {$_->{name}} };
15
16 };
17
18 1;
19
20
21 =for layout widget
22
23 [% label %]
24 <br />
25 [% message %]
26 [% field %]
27
28 =for layout field
29
30 <table>
31   <tr>
32     <td> [% available_values %] </td>
33     <td>  [% action_buttons %]  </td>
34     <td>
35       [% selected_values %]
36       [% current_values  %]
37     </td>
38   </tr>
39 </table>
40
41 =for layout available_values
42
43 <select size="10" multiple="multiple"  name="[% viewport.event_id_for('add_values') | html %]">
44   [% content %]
45 </select>
46
47 =for layout selected_values
48
49 <select size="10" multiple="multiple"  name="[% viewport.event_id_for('remove_values') | html %]">
50   [% content %]
51 </select>
52
53 =for layout current_values
54
55 [% content %]
56
57 =for layout hidden_value
58
59 <input type="hidden" name="[% viewport.event_id_for('value') | html %]" value="[% content | html %]">
60
61 =for layout option
62
63 <option value="[% v_value | html %]">[% v_name | html %]</option>
64
65 =for layout action_buttons
66
67 <input type="submit" value="&gt;&gt;" name="[% viewport.event_id_for('add_all_values') | html %]" />
68 <input type="submit" value="&gt;" name="[% viewport.event_id_for('do_add_values') | html %]" /> <br />
69 <input type="submit" value="&lt;" name="[% viewport.event_id_for('do_remove_values') | html %]" /> <br />
70 <input type="submit" value="&lt;&lt;" name="[% viewport.event_id_for('remove_all_values') | html %]" /> <br />
71
72 =for layout label
73
74 <!-- This conditional goes away when mst comes up with something better -->
75 [% IF content %]
76   <label> [% content | html %]: </label>
77 [% END %]
78
79 =for layout message
80
81 <!-- This conditional goes away when mst comes up with something better -->
82 [% IF content %]
83   <span> [% content | html %] </span> <br />
84 [% END %]
85
86 =cut