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> |