Line # Revision Author
1 386 ahitrov <% $json %>
2 <%once>
3
4 use JSON::XS;
5
6 </%once>
7 <%args>
8
9 $class => undef
10 $table => undef
11 $min => 2
12 $term => undef
13 $show => 'name'
14 $search_by => 'name'
15
16 </%args>
17 <%init>
18
19 my @result;
20
21 if ( ($table || $class) && $term && length( Encode::decode('utf-8', $term) ) >= $min ) {
22 my $search_string = "%$term%";
23 my %opts;
24 if ( $class ) {
25 $opts{class} = $class;
26 } else {
27 $opts{table} = $table;
28 }
29 $opts{$search_by} = $search_string;
30 $opts{ilike} = 1;
31 392 ahitrov while ( my ($key, $val) = each %ARGS ) {
32 next if $key =~ /^(class|table|min|term|show|search_by)$/;
33 $opts{$key} = $val;
34 }
35 386 ahitrov my $docs = $keeper->get_documents( %opts, return_mode => 'array_ref', light => 1, limit => 30 );
36 if ( ref $docs eq 'ARRAY' && @$docs ) {
37 @result = map { {id => $_->id, label => Encode::decode('utf-8', $_->$show), value => Encode::decode('utf-8', $_->$show)} } @$docs;
38 }
39 }
40
41 my $json = encode_json \@result;
42
43 </%init>