1 |
dpavlin |
24 |
<%args> |
2 |
dpavlin |
44 |
$q |
3 |
|
|
$max => 10 |
4 |
dpavlin |
28 |
$item_fragment => 'long' |
5 |
dpavlin |
24 |
$coll => undef |
6 |
dpavlin |
44 |
$result_moniker => 'search' |
7 |
|
|
$result => undef |
8 |
dpavlin |
24 |
</%args> |
9 |
|
|
<%init> |
10 |
|
|
|
11 |
|
|
use Data::Dump qw/dump/; |
12 |
|
|
|
13 |
dpavlin |
44 |
$result ||= Jifty->web->response->result( $result_moniker ); |
14 |
|
|
if ( $result and $result->content('search') ) { |
15 |
|
|
$coll = $result->content('search'); |
16 |
dpavlin |
43 |
} elsif (! defined($coll)) { |
17 |
dpavlin |
44 |
warn "called without result for $result_moniker"; |
18 |
dpavlin |
24 |
} |
19 |
dpavlin |
40 |
|
20 |
dpavlin |
44 |
warn "notes: ",dump($result->message, $result->error) if ($result); |
21 |
|
|
|
22 |
dpavlin |
52 |
my $pos = 1; |
23 |
dpavlin |
40 |
|
24 |
dpavlin |
52 |
my ($prev,$next) = (undef, $pos + 1); |
25 |
dpavlin |
50 |
|
26 |
dpavlin |
24 |
</%init> |
27 |
dpavlin |
44 |
% if ($result and $result->message) { |
28 |
|
|
<div class="grep-note"> |
29 |
|
|
<div class="message"><% $result->message %></div> |
30 |
|
|
</div> |
31 |
|
|
% } |
32 |
|
|
% if ($result and $result->error) { |
33 |
|
|
<div class="grep-note"> |
34 |
|
|
<div class="error"><% $result->error %></div> |
35 |
|
|
</div> |
36 |
|
|
% } |
37 |
dpavlin |
24 |
% if ($coll) { |
38 |
dpavlin |
52 |
% my $count = $coll->count; |
39 |
dpavlin |
24 |
<div class="results"> |
40 |
dpavlin |
52 |
% while ( my $i = $coll->next and $pos <= $max ) { |
41 |
|
|
% $next = ( $pos == $max or $pos == $count ) ? undef : $pos + 1; |
42 |
|
|
<& "/fragments/item/$item_fragment", item => $i, pos => $pos, prev => $prev, next => $next &> |
43 |
|
|
% $prev = $pos++; |
44 |
dpavlin |
24 |
% } |
45 |
|
|
</div> |
46 |
dpavlin |
52 |
% if ($pos > $max and $pos < $count ) { |
47 |
dpavlin |
40 |
<div class="grep-note"> |
48 |
|
|
<div class="message"> |
49 |
|
|
Found more than <% $max %> results for '<% $q %>', refine search query.... |
50 |
|
|
</div> |
51 |
|
|
</div> |
52 |
|
|
% } |
53 |
dpavlin |
24 |
% } |