Line # Revision Author
1 8 ahitrov@rambler.ru % if ( $error ) {
2 <font color="red"><% $error %></font>
3 % } else {
4 % foreach my $id ( @values ) {
5 % if ( ref $id eq 'ARRAY' && scalar @$id == 2 ) {
6 % my $checked = exists $ids{$id->[0]} ? ' checked' : '';
7 <input <% $prop->{readonly} ? 'readonly ' : '' %>type="checkbox" name="<% $name %>_<% $id->[0] %>" value="<% $value %>" <% $checked %>><% $id->[1] %><br>
8 % } else {
9 % my $checked = exists $ids{$id} ? ' checked' : '';
10 <input <% $prop->{readonly} ? 'readonly ' : '' %>type="checkbox" name="<% $name %>_<% $id %>" value="<% $value %>" <% $checked %>><% $id %><br>
11 % }
12 % }
13 % }
14 <%args>
15
16 $object
17 $name => undef
18 $value => 1
19 $check => undef
20 $prop => {}
21
22 </%args>
23 <%init>
24
25 my ($objects, $error);
26
27 44 ahitrov@rambler.ru # Если оно хранится в поле типа integer[] то нам вернется массив, если в data, то ссылка на массив.
28 # Просекаем фишку
29 8 ahitrov@rambler.ru my @ids = ref($object->$name) eq 'ARRAY' ? @{ $object->$name } : $object->$name;
30 my %ids = map { $_ => 1 } @ids;
31 389 ahitrov my @values;
32 if ( $prop && ref $prop ) {
33 if ( exists $prop->{lookup_opts} && ref $prop->{lookup_opts} eq 'HASH' ) {
34 @values = $keeper->get_documents (
35 %{$prop->{lookup_opts}},
36 names => 1,
37 );
38 } elsif ( exists $prop->{values} && ref $prop->{values} eq 'ARRAY' ) {
39 @values = @{ $prop->{values} };
40 } elsif ( exists $prop->{cases} && ref $prop->{cases} eq 'ARRAY' ) {
41 @values = @{ $prop->{cases} };
42 }
43 } else {
44 $error = 'Похоже неверное описание lookup_opts в документе';
45 }
46 8 ahitrov@rambler.ru
47 44 ahitrov@rambler.ru $error = 'Не определен набор значений для поля' unless @values;
48 8 ahitrov@rambler.ru
49 </%init>