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 |
dpavlin |
37 |
while ( $s =~ s/^\s*\[(?:re|fwd|fw)(?:\[\d+\])*:\s+(.+)\]\s*$/$1/ig || |
11 |
|
|
$s =~ s/^\s*(?:re|fwd|fw)(?:\[\d+\])*:\s+(.+?)\s*$/$1/ig || |
12 |
dpavlin |
24 |
$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 usage_list(list,key,description) BLOCK %] |
71 |
|
|
[% IF list %] |
72 |
|
|
<div class="[% key %]"> |
73 |
|
|
[% description %] |
74 |
|
|
[% FOREACH l IN list %] |
75 |
dpavlin |
25 |
<br>[% search("${key}_phrase",l.name,param.sort_by) %] <span class="counter">[% l.usage %]</span> |
76 |
dpavlin |
24 |
[% END %] |
77 |
|
|
</div> |
78 |
|
|
[% END %] |
79 |
|
|
[% END %] |
80 |
|
|
|
81 |
|
|
|
82 |
|
|
[% PERL %] |
83 |
|
|
$stash->set( get_cal => sub { |
84 |
|
|
my $cal = shift; |
85 |
|
|
my $yyyy = shift || return "BUG2"; |
86 |
|
|
my $mm = shift || return "BUG3"; |
87 |
|
|
my $day = shift || return " "; |
88 |
|
|
|
89 |
|
|
my $url = shift || ""; |
90 |
|
|
|
91 |
|
|
return $day if (! $cal); # no calendar entries |
92 |
|
|
|
93 |
|
|
my $yyyymm = sprintf("%04d-%02d",$yyyy,$mm); |
94 |
|
|
my $dd = sprintf("%02d",$day); |
95 |
|
|
|
96 |
|
|
if ($cal->{$yyyymm}->{$dd}) { |
97 |
|
|
return "<a href=\"/$yyyy/$mm/$dd/$url\" title=\"".$cal->{$yyyymm}->{$dd}."\">$day</a>"; |
98 |
|
|
} else { |
99 |
|
|
return $day; |
100 |
|
|
} |
101 |
|
|
} ); |
102 |
|
|
[% END %] |
103 |
|
|
|
104 |
|
|
|
105 |
|
|
[% MACRO url_show_id(id) BLOCK ; |
106 |
|
|
'?show_id=' ; id ; |
107 |
dpavlin |
27 |
IF param.search ; '&search=' ; param.search ; END ; |
108 |
|
|
IF param.sort_by ; '&sort_by=' ; param.sort_by ; END ; |
109 |
dpavlin |
24 |
END %] |
110 |
|
|
|
111 |
|
|
|
112 |
dpavlin |
32 |
[% MACRO url_search(search_for) BLOCK ; |
113 |
|
|
IF param.sort_by ; "?search=" ; search_for ; "&sort_by=" ; param.sort_by ; |
114 |
|
|
ELSE ; "?search=" ; search_for ; |
115 |
dpavlin |
24 |
END ; |
116 |
|
|
END %] |
117 |
|
|
|
118 |
|
|
|
119 |
|
|
[% PERL %] |
120 |
|
|
$stash->set( sort_bar => sub { |
121 |
|
|
my ($param,$pre,$del,$post) = @_; |
122 |
|
|
|
123 |
|
|
my ($a1,$a2,$a3) = ('<a href="','">','</a>'); |
124 |
|
|
my ($ss1,$ss2) = ('<span class="sort_selected">','</span>'); |
125 |
|
|
|
126 |
|
|
my $html_search = ''; |
127 |
|
|
my $next_sep = '?'; |
128 |
|
|
|
129 |
|
|
if ($param->{search}) { |
130 |
|
|
$html_search = '?search='.$param->{search}; |
131 |
|
|
$next_sep = '&'; |
132 |
|
|
} |
133 |
|
|
|
134 |
|
|
# default sort order |
135 |
|
|
my ($sort_fld,$sort_order) = ('rank','desc'); |
136 |
|
|
($sort_fld,$sort_order) = split(/\s+/,$param->{sort_by}); |
137 |
|
|
|
138 |
|
|
my $other_order = { |
139 |
|
|
'asc' => 'desc', |
140 |
|
|
'desc' => 'asc', |
141 |
|
|
}; |
142 |
|
|
|
143 |
|
|
my $default_sort = { |
144 |
|
|
'rank' => 'desc', |
145 |
|
|
'from' => 'asc', |
146 |
|
|
'to' => 'asc', |
147 |
|
|
'date' => 'desc', |
148 |
|
|
}; |
149 |
|
|
|
150 |
|
|
my @html; |
151 |
|
|
foreach my $fld (qw(rank date from to)) { |
152 |
|
|
|
153 |
|
|
my $h = $a1 . $html_search . $next_sep . 'sort_by='; |
154 |
|
|
|
155 |
|
|
if ($sort_fld eq $fld) { |
156 |
|
|
$h .= $sort_fld." ".$other_order->{$sort_order}; |
157 |
|
|
$h .= $a2 . $ss1 . $sort_fld . $ss2 . $a3 ; |
158 |
|
|
} else { |
159 |
|
|
$h .= $fld." ".$default_sort->{$fld}; |
160 |
|
|
$h .= $a2 . $fld . $a3 ; |
161 |
|
|
} |
162 |
|
|
push @html, $h; |
163 |
|
|
|
164 |
|
|
} |
165 |
|
|
|
166 |
|
|
return $pre.join($del,@html).$post; |
167 |
|
|
|
168 |
|
|
} ); |
169 |
|
|
[% END %] |
170 |
|
|
|
171 |
dpavlin |
25 |
|
172 |
|
|
[% MACRO date(msg) BLOCK %] |
173 |
dpavlin |
32 |
<span class="date"><a href="/[% yyyy_mm(msg.date) %]/[% url_search(param.search) %]">[% msg.date %]</a></span> |
174 |
dpavlin |
25 |
[% END %] |
175 |
|
|
|
176 |
|
|
[% PERL %] |
177 |
|
|
$stash->set( yyyy_mm => sub { |
178 |
|
|
my $d = shift; |
179 |
|
|
|
180 |
|
|
if ($d =~ /^(\d{4}[\-\/]\d{2})/) { |
181 |
|
|
return $1; |
182 |
|
|
} else { |
183 |
|
|
return $d; |
184 |
|
|
} |
185 |
|
|
} ); |
186 |
|
|
[% END %] |