/[suikacvs]/markup/h2h/implementation/classic/H2H/V090/default/theme.ph
Suika

Contents of /markup/h2h/implementation/classic/H2H/V090/default/theme.ph

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Sat Jul 19 12:46:44 2003 UTC (22 years, 11 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Branch point for: norakuro-d
Imported to CVS

1
2 =pod
3
4 H2H -- Default Template (for Diary)
5
6 Copyright 2001 the Watermelon Project.
7
8 2001-05-20 wakaba
9 - Fix new/sub id counting bug.
10 2001-04-07 wakaba
11 - Add `ACRONYM' and `ABBR' commands.
12 2001-04-03 wakaba
13 - Revision of most part.
14 2001-03-31 wakaba
15 - New file.
16
17 =cut
18
19 package H2H;
20 $nl = "\x0d\x0a"; ## Newline character(s).
21
22 ## -- Information about this template.
23 package H2H::Template;
24 $basepath = $H2H::themepath.'default/';
25 $header = $basepath.'head.htt';
26 $footer = $basepath.'foot.htt';
27
28 ## Initialization of theme.
29 sub init {
30 package H2H::Command;
31 $_new = 0;
32 $_sub = 0;
33 $_fn = 0;
34 $fn = '';
35 ($d{mon}, $d{day}) = (@_[1,2]);
36 ($d{y}, $d{m}, $d{d}) = ($_[0], substr('0'.$_[1],-2), substr('0'.$_[2],-2));
37 $prefix = $_[3] || 'f'.$d{y}.$d{m}.$d{d};
38 package H2H::HnfFile;
39 undef $tree;
40 }
41
42 ## -- Page
43 package H2H::URI;
44 $mine = 'http://suika.fam.cx/~wakaba/d/';
45 $diary = $mine;
46 $glossary{_} = '_glossary_#';
47 $glossary{person} = '_person_#';
48 $resolve = '/uri?uri=';
49
50 package H2H::Page;
51 $uri = ''; ## Base URI.
52 $diaryuri = ''; ## Diary Base URI.
53 $glossaryuri = '.temp/g.ja.html';
54 $personuri = '';
55 $basepath = ''; ## URI base path of related files.
56 $uriuri = '/uri-res/N2L?';
57
58 sub start {
59 return unless $H2H::Template::header;
60 my $ret;
61 open TEMP, $H2H::Template::header; while (<TEMP>) {$ret .= $_} close TEMP;
62 $ret =~ s/%title%/$_[0]/g; $ret =~ s/%baseuri%/$basepath/g;
63 $ret =~ s/%YYYY%/$H2H::Command::d{y}/g if $H2H::Command::d{y};
64 $ret =~ s/%MM%/$H2H::Command::d{m}/g if $H2H::Command::d{m};
65 $ret;
66 }
67 sub end {
68 return unless $H2H::Template::footer;
69 my $ret;
70 open TEMP, $H2H::Template::footer; while (<TEMP>) {$ret .= $_} close TEMP;
71 $ret =~ s/%title%/$_[0]/g; $ret =~ s/%baseuri%/$basepath/g;
72 $ret;
73 }
74
75 package HNS::Hnf::UserVar;
76 %Templates = (
77 TENKI => '[Å·µ¤:%value]',
78 BASHO => "(%value)",
79 TAION => 'Âβ¹: %valueÅÙ(ÀÝ»á)',
80 LUNCH => 'Ãë¿©: %value',
81 TAIJU => " ÂνÅ:%valueKg",
82 SUIMIN => " ¿ç̲:%value»þ´Ö",
83 BGM => " BGM:%value",
84 HOSU => " %valueÊâ",
85 HON => " ÆÉ½ñ:%value",
86 KITAKU => " µ¢Âð»þ´Ö:%value",
87 WALK => " »¶Êâ:%value",
88 RUN => " ¥¸¥ç¥®¥ó¥°:%value",
89 KEYWORD => '[¸°:%value]',
90 CAT => '[ʬÎà:%value]',
91 KION => '[µ¤²¹:%value]',
92 T1 => '1¸Â:%value',
93 T2 => '2¸Â:%value',
94 T3 => '3¸Â:%value',
95 T4 => '4¸Â:%value',
96 T5 => '5¸Â:%value',
97 T6 => '6¸Â:%value',
98 T7 => '7¸Â:%value',
99 SP => '%value',
100 );
101
102
103 package H2H::Command;
104
105 sub startP {'<p>'}
106 sub endP {'</p>'}
107
108 sub startCITE {
109 ($cite, $citet) = @_;
110 $cite = _link2uri($cite);
111 $cite ? '<blockquote cite="'.$cite.'">' : '<blockquote>'}
112 sub endCITE {
113 $cite ? '<cite title="°úÍѸµ"><a href="'.$cite.'">'.($citet||$cite).
114 '</a></cite></blockquote>':
115 $citet ? '<cite title="°úÍѸµ">'.$citet.'</cite></blockquote>':
116 '</blockquote>';
117 }
118
119 sub startUL {'<ul>'}
120 sub endUL {'</ul>'."\n"}
121 sub startOL {'<ol>'}
122 sub endOL {'</ol>'."\n"}
123 sub textLI {'<li>'.$_[0].'</li>'}
124
125 sub startPRE {'<pre>'}
126 sub endPRE {'</pre>'}
127
128 sub startDIV {$_[0] ? '<div class="'.$_[0].'">' : '<div>'}
129 sub endDIV {'</div>'."\n"}
130
131 sub startYAMI {
132 $_[0] ? '<span class="yamimi">'.$_[0].'</span>':
133 '<div class="yami">';
134 }
135 sub endYAMI {'</div>'}
136
137 sub startNEW {
138 my $new = &_new(); $_sub = 0;
139 my $secname = $_[0];
140 $H2H::HnfFile::tree .= '<li><a href="'.'#d'.$d{day}.'-'.$new.'">'
141 .$secname.'</a>';
142 my $link = _link2uri($_[1]);
143 if ($link) {
144 $secname = '<a href="'.$link.'">'.$secname.'</a>';
145 }
146 '<div class="section" id="d'.$d{day}.'-'.$new.'">'.$H2H::nl.
147 '<h3><a href="'.$H2H::Page::uriuri.'urn:x-suika.fam.cx:fuyubi:'.
148 "$d{y}:$d{m}:$d{d}:${new}\" class=\"self\">".
149 '¡ú</a> '.$secname.'</h3>';
150 }
151 sub _new {$_new++; $_new}
152 sub endNEW {
153 $H2H::HnfFile::tree .= '</li>'."\n";
154 &H2H::HnfFile::footnote().'</div>'.$H2H::nl
155 }
156
157 sub startSUB {
158 my $new = $_new;
159 my $sub = &_sub;
160 my $secname = $_[0];
161 my $link = _link2uri($_[1]);
162 if ($link) {
163 $secname = '<a href="'.$link.'">'.$secname.'</a>';
164 }
165 '<div class="subsection" id="d'.$d{day}.'-'.$new.'-'.$sub.'">'.$H2H::nl.
166 '<h4><a href="'.$H2H::Page::uriuri.'urn:x-suika.fam.cx:fuyubi:'.
167 "$d{y}:$d{m}:$d{d}:${new}:${sub}\" class=\"self\">".
168 '@</a> '.$secname.'</h4>';
169 }
170 sub _sub {$_sub++; $_sub}
171 sub endSUB {'</div>'.$H2H::nl}
172
173 sub startFN {my $_fn = &_fn;
174 $fn .= "<li id=\"d$d{day}-fn${_fn}\">".
175 '<a href="'.$H2H::Page::uriuri.'urn:x-suika.fam.cx:fuyubi'.
176 ":$d{y}:$d{m}:$d{d}:fn${_fn}\" class=\"self\">*${_fn}</a> ";
177 "<a href=\"#d$d{day}-fn${_fn}\" class=\"fn\">*${_fn}</a>"
178 }
179 sub _fn {$_fn++; $_fn}
180 sub textFN {$fn .= $_[0]}
181 sub endFN {$fn .= '</li>'."\n"}
182
183 sub textLINK {my $link = _link2uri(shift); _dolink($link, $_[0])}
184 sub textLIMG {'<a href="'.$_[0].'"><img src="'.$_[1].'" alt="'.$_[2].'" /></a>'}
185 sub textLMG {'<a href="'.$_[0].'"><img src="'.$_[0].'" alt="'.$_[1].'" /></a>'}
186
187 sub textPERSON {'[<a href="'.$H2H::Page::personuri.
188 '#person_'.$_[0].'">'.$_[1].'</a>]'}
189
190 sub textCOMMENT {'<!-- '.$_[0].' -->'}
191 sub textCOMMENT2 {''}
192
193 sub textRUBY {'<ruby><rb>'.$_[0].'</rb><rp>(</rp><rt>'.$_[1].
194 '</rt><rp>)</rp></ruby>'}
195 sub textACRONYM {'<acronym title="'.$_[1].'">'.$_[0].'</acronym>'}
196 sub textABBR {'<abbr title="'.$_[1].'">'.$_[0].'</abbr>'}
197
198 sub textLDIARY {my ($y, $m, $d, $t) = @_;
199 $m = substr('0'.$m,-2); $d = substr('0'.$d,-2);
200 '<a href="'.$H2H::Page::uriuri."urn:x-suika.fam.cx:fuyubi:".
201 "$y:$m:$d\">".
202 $t.'</a>'}
203 sub textLDIARY2 {my ($f, $t, $y, $m) = ($_[0], $_[1]);
204 my ($d, $s, $ss, $ret);
205 if ($f =~ /^(\d{4})(\d{2})(?:(\d{2})(?:i(\d{2})(?:s(\d{2}))?)?)?/)
206 {($y, $m, $d, $s, $ss) = ($1, $2, $3, $4, $5)}
207 $ret = '<a href="'.$H2H::Page::uriuri."urn:x-suika.fam.cx:fuyubi:".
208 "$y:$m";
209 $ret .= ":$d" if $d;
210 $ret .= ":$s" if $d && $s;
211 $ret .= ":$ss" if $d && $s && $ss;
212 $ret .= "\">${t}</a>"}
213 sub textSEE {&textLDIARY2(@_)}
214
215 sub _dolink {
216 my ($href, $content, $title) = @_;
217 my $ret;
218 if ($href) {
219 $ret = '<a href="'.$href.'"';
220 $ret.= $title ? ' title="'.$title.'">' : '>';
221 $ret.= $content.'</a>';
222 } else {$ret = $content}
223 $ret =~ tr/\x0d\x0a//d;
224 $ret;
225 }
226
227 sub _link2uri {
228 my $link = shift;
229 if ($link eq '.') {
230 ## Dummy.
231 undef $link;
232 } elsif ($link =~ /[({](\d{4}),?(\d{2}),?(\d{2})(?:[i,]?(\d{2})(?:[s,]?(\d{2}))?)?[)}]/) {
233 ## Diary
234 my ($i, $s) = ($4, $5);
235 $link = $H2H::Page::uriuri."urn:x-suika.fam.cx:fuyubi:$1:$2:$3";
236 $link.= ':'.$i if $i;
237 $link.= ':'.$s if $i && $s;
238 } elsif ($link =~ /\?[({]([A-Za-z0-9_.-]+)[}}]/) {
239 ## Glossary
240 $link = $H2H::Page::glossaryuri.'#'.$1;
241 } elsif ($link =~ /^urn:/i) {
242 $link = $H2H::Page::uriuri.&Suika::CGI::Encode::uri($link);
243 }
244 $link;
245 }
246
247 package H2H::HnfFile;
248
249 sub start {'<div class="day" id="'.$H2H::Command::prefix.'">'.$H2H::nl.
250 '<h2><a href="'.$H2H::Page::uri.'#'.$H2H::Command::prefix.
251 '" class="self"><img src="favicon" class="favicon" alt="¢£" title="ÅßÍͤ⤹¤Ê¤ë¡ùÆüµ­¤È¤¤¤¦¤â¤Î¡£" /></a> '.
252 $H2H::Command::d{y}.'ǯ'.$H2H::Command::d{m}.'·î'.
253 $H2H::Command::d{d}.'Æü</h2>'.
254 '<div class="header">'.$H2H::nl}
255 sub endheader {'</div>'.$H2H::nl}
256 sub end {
257 <<EOH;
258 <form class="postmsg" method="post" action="/~wakaba/sendmsg" accept-charset="junet, iso-2022-jp-3, iso-2022-jp">
259 <input type="hidden" name="subject" value="[Å߯ü] ${H2H::Command::d{y}}ǯ${H2H::Command::d{m}}·î${H2H::Command::d{d}}Æü" />
260 <strong class="itemname" title="µ¹¤·¤±¤ì¤Ð¡¢¡ÖÆÉ¤ó¤À¤è¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ²¼¤µ¤¤¡£´¶ÁÛ¤¬¤¢¤ë¤È¡¢Æüµ­¤ò½ñ¤¯Îå¤ß(Ææ)¤Ë¤Ê¤ê¤Þ¤¹¡£">¸æ´¶ÁÛ</strong>:
261
262 <span class="fs">
263 <label><input type="radio" name="f" value="5" />ºÇ¹â!</label>
264 <label><input type="radio" name="f" value="4" />ÎÉ</label>
265 <label><input type="radio" name="f" value="3" checked="checked" />ÉáÄÌ</label>
266 <label><input type="radio" name="f" value="2" />°­</label>
267 <label><input type="radio" name="f" value="1" />ºÇÄã</label>
268 </span>
269
270 <label class="comments"><nobr>°ì¸À(¤â¤·¤¢¤ì¤Ð¡£): <input type="text" name="comment" value="" /></nobr></label>
271 <label class="names"><nobr>̾Á°(¤è¤í¤·¤±¤ì¤Ð¡£): <input type="text" name="name" value="" /></nobr></label>
272
273 <input type="submit" value="ÆÉ¤ó¤À¤è¡£" class="readsubmit" title="²¡¤·¤¿¤ê¤·¤Æ¤â²èÌ̤¬ÊѤï¤Ã¤¿¤ê¤Ï¶²¤é¤¯¤·¤Þ¤»¤ó¤¬¡¢ÌäÂꤢ¤ê¤Þ¤»¤ó¡£" />
274 </form>
275 </div>
276 EOH
277 }
278
279 sub headervar {
280 my ($name, $val, $href) = @_;
281 my $ret = $HNS::Hnf::UserVar::Templates{$name};
282 $val = '<a href="'.$href.'">'.$val.'</a>' if $href;
283 $ret =~ s/\%value/$val/g;
284 $ret = $H2H::Error::invalidheader.$name unless $ret;
285 if ($name eq 'TENKI') {
286 $ret =~ s#&hare;#<img src="hare" class="xbm_font" alt="¦è" />#g;
287 $ret =~ s#&kumori;#<img src="kumori" class="xbm_font" alt="¦é" />#g;
288 $ret =~ s#&ame;#<img src="ame" class="xbm_font" alt="¦ê" />#g;
289 $ret =~ s#&yuki;#<img src="yuki" class="xbm_font" alt="¦ë" />#g;
290 }
291 '<span class="var '.$name.'">'.$ret.'</span>';
292 }
293 sub footnote {
294 return unless $H2H::Command::fn;
295 my $ret = '<ol class="footnote">'.$H2H::Command::fn.'</ol>';
296 undef $H2H::Command::fn; $ret;
297 }
298
299 sub tree {'<ol class="tree">'.$tree.'</ol>' if $tree}
300
301
302 package H2H::Error;
303 $invalidheader = 'ÉÔÀµ¤ÊÍøÍѼÔÊÑ¿ô¤Ç¤¹: ';
304
305
306 package Suika::CGI::Encode;
307
308 sub uri {
309 my $s = shift;
310 $s =~ s/([^A-Za-z0-9_@.-])/sprintf('%%%02X', ord($1))/eg;
311 $s;
312 }
313
314 1;

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24