1 |
dpavlin |
24 |
[% PERL %] |
2 |
|
|
$stash->set( search => sub { |
3 |
|
|
my ($fld,$search,$sort_by,$link_text) = @_; |
4 |
|
|
|
5 |
|
|
my $html = '<a href="?search='.$fld.':'; |
6 |
|
|
if ($fld eq "subject") { |
7 |
|
|
my $s = $search; |
8 |
|
|
|
9 |
|
|
# remove re: fdw: [list] preffixes from e-mail |
10 |
|
|
while ( $s =~ s/^\s*\[(?:re|fwd|fw):\s+(.+)\]\s*$/$1/ig || |
11 |
|
|
$s =~ s/^\s*(?:re|fwd|fw):\s+(.+?)\s*$/$1/ig || |
12 |
|
|
$s =~ s/^\[\S+\]\s*//ig || |
13 |
|
|
$s =~ s/^\[[^@]+@[\w\.]+\s*:\s+(.+)\s*\]\s*$/$1/g || |
14 |
|
|
$s =~ s/\(fwd\)\s*$//ig || |
15 |
|
|
$s =~ s/\"//g |
16 |
|
|
) { }; |
17 |
|
|
|
18 |
|
|
$html .= URI::Escape::uri_escape($s); |
19 |
|
|
} else { |
20 |
|
|
$html .= URI::Escape::uri_escape($search); |
21 |
|
|
} |
22 |
|
|
|
23 |
|
|
$html .= '&sort_by='.$sort_by if ($sort_by); |
24 |
|
|
|
25 |
|
|
$html .= '">'; |
26 |
|
|
$html .= ($link_text ? $link_text : $search); |
27 |
|
|
$html .= '</a>'; |
28 |
|
|
|
29 |
|
|
return $html; |
30 |
|
|
} ); |
31 |
|
|
[% END %] |
32 |
|
|
|
33 |
|
|
[% MACRO option(var, value, text) BLOCK %] |
34 |
|
|
<option value="[% value %]"[% IF value == param.search_fld %] selected[% END %]>[% text %]</option> |
35 |
|
|
[% END %] |
36 |
|
|
|
37 |
|
|
[% MACRO from(message) BLOCK %] |
38 |
|
|
<span class="from"> |
39 |
|
|
[% FOREACH f IN message.from %] |
40 |
|
|
[% search('from_phrase',f,param.sort_by) %][% IF !loop.last %],[% END %] |
41 |
|
|
[% END %] |
42 |
|
|
</span> |
43 |
|
|
[% END %] |
44 |
|
|
|
45 |
|
|
[% MACRO to(message) BLOCK %] |
46 |
|
|
[% IF message.to.size %] |
47 |
|
|
<span class="to">To: |
48 |
|
|
[% FOREACH f IN message.to %] |
49 |
|
|
[% search('to_phrase',f,param.sort_by) %][% IF !loop.last %], [% END %] |
50 |
|
|
[% END %] |
51 |
|
|
</span> |
52 |
|
|
[% END %] |
53 |
|
|
[% IF message.cc.size %] |
54 |
|
|
<span class="cc">Cc: |
55 |
|
|
[% FOREACH f IN message.cc %] |
56 |
|
|
[% search('cc_phrase',f,param.sort_by) %][% IF !loop.last %], [% END %] |
57 |
|
|
[% END %] |
58 |
|
|
</span> |
59 |
|
|
[% END %] |
60 |
|
|
[% IF message.bcc.size %] |
61 |
|
|
<span class="bcc">Bcc: |
62 |
|
|
[% FOREACH f IN message.bcc %] |
63 |
|
|
[% IF loop.fist %]Bcc [% END %] |
64 |
|
|
[% search('bcc_phrase',f,param.sort_by) %][% IF !loop.last %], [% END %] |
65 |
|
|
[% END %] |
66 |
|
|
</span> |
67 |
|
|
[% END %] |
68 |
|
|
[% END %] |
69 |
|
|
|
70 |
|
|
[% MACRO date(msg) BLOCK %] |
71 |
|
|
<span class="date">[% msg.date %]</span> |
72 |
|
|
[% END %] |
73 |
|
|
|
74 |
|
|
[% MACRO usage_list(list,key,description) BLOCK %] |
75 |
|
|
[% IF list %] |
76 |
|
|
<div class="[% key %]"> |
77 |
|
|
[% description %] |
78 |
|
|
[% FOREACH l IN list %] |
79 |
|
|
<br>[% search(key,l.name,param.sort_by) %] <span class="counter">[% l.usage %]</span> |
80 |
|
|
[% END %] |
81 |
|
|
</div> |
82 |
|
|
[% END %] |
83 |
|
|
[% END %] |
84 |
|
|
|
85 |
|
|
|
86 |
|
|
[% PERL %] |
87 |
|
|
$stash->set( get_cal => sub { |
88 |
|
|
my $cal = shift; |
89 |
|
|
my $yyyy = shift || return "BUG2"; |
90 |
|
|
my $mm = shift || return "BUG3"; |
91 |
|
|
my $day = shift || return " "; |
92 |
|
|
|
93 |
|
|
my $url = shift || ""; |
94 |
|
|
|
95 |
|
|
return $day if (! $cal); # no calendar entries |
96 |
|
|
|
97 |
|
|
my $yyyymm = sprintf("%04d-%02d",$yyyy,$mm); |
98 |
|
|
my $dd = sprintf("%02d",$day); |
99 |
|
|
|
100 |
|
|
if ($cal->{$yyyymm}->{$dd}) { |
101 |
|
|
return "<a href=\"/$yyyy/$mm/$dd/$url\" title=\"".$cal->{$yyyymm}->{$dd}."\">$day</a>"; |
102 |
|
|
} else { |
103 |
|
|
return $day; |
104 |
|
|
} |
105 |
|
|
} ); |
106 |
|
|
[% END %] |
107 |
|
|
|
108 |
|
|
|
109 |
|
|
[% MACRO url_show_id(id) BLOCK ; |
110 |
|
|
'?show_id=' ; id ; |
111 |
|
|
IF param.sort_by ; '&sort_by=' ; param.sort_by ; |
112 |
|
|
END ; |
113 |
|
|
END %] |
114 |
|
|
|
115 |
|
|
|
116 |
|
|
[% MACRO url_search BLOCK ; |
117 |
|
|
IF param.sort_by ; "?search=" ; param.search ; "&sort_by=" ; param.sort_by ; |
118 |
|
|
ELSE ; "?search=" ; param.search ; |
119 |
|
|
END ; |
120 |
|
|
END %] |
121 |
|
|
|
122 |
|
|
|
123 |
|
|
[% PERL %] |
124 |
|
|
$stash->set( sort_bar => sub { |
125 |
|
|
my ($param,$pre,$del,$post) = @_; |
126 |
|
|
|
127 |
|
|
my ($a1,$a2,$a3) = ('<a href="','">','</a>'); |
128 |
|
|
my ($ss1,$ss2) = ('<span class="sort_selected">','</span>'); |
129 |
|
|
|
130 |
|
|
my $html_search = ''; |
131 |
|
|
my $next_sep = '?'; |
132 |
|
|
|
133 |
|
|
if ($param->{search}) { |
134 |
|
|
$html_search = '?search='.$param->{search}; |
135 |
|
|
$next_sep = '&'; |
136 |
|
|
} |
137 |
|
|
|
138 |
|
|
# default sort order |
139 |
|
|
my ($sort_fld,$sort_order) = ('rank','desc'); |
140 |
|
|
($sort_fld,$sort_order) = split(/\s+/,$param->{sort_by}); |
141 |
|
|
|
142 |
|
|
my $other_order = { |
143 |
|
|
'asc' => 'desc', |
144 |
|
|
'desc' => 'asc', |
145 |
|
|
}; |
146 |
|
|
|
147 |
|
|
my $default_sort = { |
148 |
|
|
'rank' => 'desc', |
149 |
|
|
'from' => 'asc', |
150 |
|
|
'to' => 'asc', |
151 |
|
|
'date' => 'desc', |
152 |
|
|
}; |
153 |
|
|
|
154 |
|
|
my @html; |
155 |
|
|
foreach my $fld (qw(rank date from to)) { |
156 |
|
|
|
157 |
|
|
my $h = $a1 . $html_search . $next_sep . 'sort_by='; |
158 |
|
|
|
159 |
|
|
if ($sort_fld eq $fld) { |
160 |
|
|
$h .= $sort_fld." ".$other_order->{$sort_order}; |
161 |
|
|
$h .= $a2 . $ss1 . $sort_fld . $ss2 . $a3 ; |
162 |
|
|
} else { |
163 |
|
|
$h .= $fld." ".$default_sort->{$fld}; |
164 |
|
|
$h .= $a2 . $fld . $a3 ; |
165 |
|
|
} |
166 |
|
|
push @html, $h; |
167 |
|
|
|
168 |
|
|
} |
169 |
|
|
|
170 |
|
|
return $pre.join($del,@html).$post; |
171 |
|
|
|
172 |
|
|
} ); |
173 |
|
|
[% END %] |
174 |
|
|
|