/[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 - (hide 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 wakaba 1.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