/[mws]/trunk/templates/macros.tt2
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/templates/macros.tt2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 42 - (show annotations)
Mon May 10 22:04:01 2004 UTC (19 years, 11 months ago) by dpavlin
File size: 4385 byte(s)
minor improvements and beginning of (non functional in this revision!) support
for folders

1 [% 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)(?:\[\d+\])*:\s+(.+)\]\s*$/$1/ig ||
11 $s =~ s/^\s*(?:re|fwd|fw)(?:\[\d+\])*:\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 usage_list(list,key,description) BLOCK %]
71 [% IF list %]
72 <div class="[% key %]">
73 [% description %]
74 [% FOREACH l IN list %]
75 <br>[% search("${key}_phrase",l.name,param.sort_by) %]&nbsp;<span class="counter">[% l.usage %]</span>
76 [% 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 "&nbsp;";
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 IF param.search ; '&search=' ; param.search ; END ;
108 IF param.sort_by ; '&sort_by=' ; param.sort_by ; END ;
109 END %]
110
111
112 [% 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 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
172 [% MACRO date(msg) BLOCK %]
173 <span class="date"><a href="/[% yyyy_mm(msg.date) %]/[% url_search(param.search) %]">[% msg.date %]</a></span>
174 [% 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 %]
187
188 [% PERL %]
189 $stash->set( id => sub {
190 my ($folder,$msgid) = split(/\s+/,shift);
191 return $msgid;
192 } );
193
194 $stash->set( folder => sub {
195 my ($folder,$msgid) = split(/\s+/,shift);
196 return $folder;
197 } );
198 [% END %]

  ViewVC Help
Powered by ViewVC 1.1.26