/[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 48 - (show annotations)
Wed May 12 00:29:01 2004 UTC (20 years ago) by dpavlin
File size: 4536 byte(s)
another user-interface rework: titles for hrefs now show explanation of
(more clearly marked) links which work as buttons.

1 [% PERL %]
2 $stash->set( search => sub {
3 my ($fld,$search,$sort_by,$link_text,$title) = @_;
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 .= 'title="'.$title.'"' if ($title);
27 $html .= '>';
28 $html .= ($link_text ? $link_text : $search);
29 $html .= '</a>';
30
31 return $html;
32 } );
33 [% END %]
34
35 [% MACRO option(var, value, text) BLOCK %]
36 <option value="[% value %]"[% IF value == param.search_fld %] selected[% END %]>[% text %]</option>
37 [% END %]
38
39 [% MACRO from(message) BLOCK %]
40 <span class="from">
41 [% FOREACH f IN message.from %]
42 [% search('from_phrase',f,param.sort_by) %][% IF !loop.last %],[% END %]
43 [% END %]
44 </span>
45 [% END %]
46
47 [% MACRO to(message) BLOCK %]
48 [% IF message.to.size %]
49 <span class="to">To:
50 [% FOREACH f IN message.to %]
51 [% search('to_phrase',f,param.sort_by) %][% IF !loop.last %], [% END %]
52 [% END %]
53 </span>
54 [% END %]
55 [% IF message.cc.size %]
56 <span class="cc">Cc:
57 [% FOREACH f IN message.cc %]
58 [% search('cc_phrase',f,param.sort_by) %][% IF !loop.last %], [% END %]
59 [% END %]
60 </span>
61 [% END %]
62 [% IF message.bcc.size %]
63 <span class="bcc">Bcc:
64 [% FOREACH f IN message.bcc %]
65 [% IF loop.fist %]Bcc [% END %]
66 [% search('bcc_phrase',f,param.sort_by) %][% IF !loop.last %], [% END %]
67 [% END %]
68 </span>
69 [% END %]
70 [% END %]
71
72 [% MACRO usage_list(list,key,description) BLOCK %]
73 [% IF list %]
74 <div class="[% key %]">
75 [% description %]
76 [% FOREACH l IN list %]
77 <br>[% search(key,l.name,param.sort_by) %]&nbsp;<span class="counter">[% l.usage %]</span>
78 [% END %]
79 </div>
80 [% END %]
81 [% END %]
82
83
84 [% PERL %]
85 $stash->set( get_cal => sub {
86 my $cal = shift;
87 my $yyyy = shift || return "BUG2";
88 my $mm = shift || return "BUG3";
89 my $day = shift || return "&nbsp;";
90
91 my $url = shift || "";
92
93 return $day if (! $cal); # no calendar entries
94
95 my $yyyymm = sprintf("%04d-%02d",$yyyy,$mm);
96 my $dd = sprintf("%02d",$day);
97
98 if ($cal->{$yyyymm}->{$dd}) {
99 return "<a href=\"/$yyyy/$mm/$dd/$url\" title=\"".$cal->{$yyyymm}->{$dd}."\">$day</a>";
100 } else {
101 return $day;
102 }
103 } );
104 [% END %]
105
106
107 [% MACRO url_show_id(id) BLOCK ;
108 '?show_id=' ; id ;
109 IF param.search ; '&search=' ; param.search ; END ;
110 IF param.sort_by ; '&sort_by=' ; param.sort_by ; END ;
111 END %]
112
113
114 [% MACRO url_search(search_for) BLOCK ;
115 IF param.sort_by ; "?search=" ; search_for ; "&sort_by=" ; param.sort_by ;
116 ELSE ; "?search=" ; search_for ;
117 END ;
118 END %]
119
120
121 [% PERL %]
122 $stash->set( sort_bar => sub {
123 my ($param,$pre,$del,$post) = @_;
124
125 my $a_href_fmt = qq{<a href="%s" title="sort by %s">%s</a>};
126 my $ss_fmt = qq{<span class="sort_selected">%s</span>};
127
128 my $html_search = '';
129 my $next_sep = '?';
130
131 if ($param->{search}) {
132 $html_search = '?search='.$param->{search};
133 $next_sep = '&';
134 }
135
136 # default sort order
137 my ($sort_fld,$sort_order) = ('rank','desc');
138 ($sort_fld,$sort_order) = split(/\s+/,$param->{sort_by});
139
140 my $other_order = {
141 'asc' => 'desc',
142 'desc' => 'asc',
143 };
144
145 my $default_sort = {
146 'rank' => 'desc',
147 'from' => 'asc',
148 'to' => 'asc',
149 'date' => 'desc',
150 };
151
152 my @html;
153 foreach my $fld (qw(rank date from to)) {
154
155 my $url = $html_search . $next_sep . 'sort_by=';
156 my $title;
157
158 if ($sort_fld eq $fld) {
159 $url .= $sort_fld."%20".$other_order->{$sort_order};
160 $title = sprintf($ss_fmt,$sort_fld);
161 } else {
162 $url .= $fld."%20".$default_sort->{$fld};
163 $title = $fld;
164 }
165 $url .= "&full_body=1" if ($param->{full_body});
166 push @html, sprintf($a_href_fmt, $url, $fld, $title);
167
168 }
169
170 return $pre.join($del,@html).$post;
171
172 } );
173 [% END %]
174
175
176 [% MACRO date(msg) BLOCK %]
177 <span class="date"><a href="/[% yyyy_mm(msg.date) %]/[% url_search(param.search) %]">[% msg.date %]</a></span>
178 [% END %]
179
180 [% PERL %]
181 $stash->set( yyyy_mm => sub {
182 my $d = shift;
183
184 if ($d =~ /^(\d{4}[\-\/]\d{2})/) {
185 return $1;
186 } else {
187 return $d;
188 }
189 } );
190 [% END %]
191
192 [% PERL %]
193 $stash->set( id => sub {
194 my ($folder,$msgid) = split(/\s+/,shift);
195 return $msgid;
196 } );
197
198 $stash->set( folder => sub {
199 my ($folder,$msgid) = split(/\s+/,shift);
200 return $folder;
201 } );
202 [% END %]

  ViewVC Help
Powered by ViewVC 1.1.26