1 ###############################################################################
5 ###############################################################################
6 package Wiki::HTMLParser;
11 @ISA = qw(Wiki::Parser);
12 #==============================================================================
14 #==============================================================================
20 if(!defined($mainflg) || $mainflg eq ""){ $mainflg = 0; }
22 my $self = Wiki::Parser->new($wiki);
31 $self->{main} = $mainflg;
32 return bless $self,$class;
35 #==============================================================================
37 #==============================================================================
44 $self->{html} .= "</p>\n";
52 my $html = join("",@$obj);
54 if($level > $self->{level}){
55 while($level != $self->{level}){
56 $self->{html} .= "<ul>\n";
57 push(@{$self->{close_list}},"</ul>\n");
60 } elsif($level <= $self->{level}){
61 while($level-1 != $self->{level}){
62 if($self->{'list_close_'.$self->{level}} == 1){
63 $self->{html} .= "</li>\n";
64 $self->{'list_close_'.$self->{level}} = 0;
66 if($level == $self->{level}){
69 $self->{html} .= pop(@{$self->{close_list}});
74 $self->{html} .= "<li>".$html;
75 $self->{'list_close_'.$level} = 1;
78 #==============================================================================
80 #==============================================================================
87 $self->{html} .= "</p>\n";
95 my $html = join("",@$obj);
97 if($level > $self->{level}){
98 while($level != $self->{level}){
99 $self->{html} .= "<ol>\n";
100 push(@{$self->{close_list}},"</ol>\n");
103 } elsif($level <= $self->{level}){
104 while($level-1 != $self->{level}){
105 if($self->{'list_close_'.$self->{level}} == 1){
106 $self->{html} .= "</li>\n";
107 $self->{'list_close_'.$self->{level}} = 0;
109 if($level == $self->{level}){
112 $self->{html} .= pop(@{$self->{close_list}});
117 $self->{html} .= "<li>".$html;
118 $self->{'list_close_'.$level} = 1;
121 #==============================================================================
123 #==============================================================================
126 while($self->{level} != 0){
127 if($self->{'list_close_'.($self->{level})} == 1){
128 $self->{html} .= "</li>\n";
130 $self->{html} .= pop(@{$self->{close_list}});
135 #==============================================================================
137 #==============================================================================
142 my $wiki = $self->{wiki};
144 if($self->{para}==1){
145 $self->{html} .= "</p>\n";
154 my $html = join("",@$obj);
156 # ¥á¥¤¥ó¤Îɽ¼¨Îΰè¤Ç¤Ê¤¤¤È¤
158 $self->{html} .= "<h".($level+1).">".$html."</h".($level+1).">\n";
160 # ¥á¥¤¥ó¤Îɽ¼¨Îΰè¤Î¾ì¹ç¤Ï¥¢¥ó¥«¤ò½ÐÎÏ
163 $self->{html} .= "<h".($level+1)."><a name=\"p".$self->{p_cnt}."\"><span class=\"sanchor\"> </span>".
164 $html."</a></h".($level+1).">\n";
166 $self->{html} .= "<h".($level+1)."><a name=\"p".$self->{p_cnt}."\">".$html."</a></h".($level+1).">\n";
168 # ¥Ñ¡¼¥ÈÊÔ½¸¤¬ON¤«¤ÄÊÔ½¸²Äǽ¤Ê¾ì¹ç¤ÏÊÔ½¸¥¢¥ó¥«¤ò½ÐÎÏ
169 if($self->{no_partedit}!=1){
170 my $page = $wiki->get_CGI()->param("page");
172 # ¥Ñ¡¼¥È¥ê¥ó¥¯¤¬ON¤Î¾ì¹ç¤Ï°ÜÆ°ÍѤΥ¢¥ó¥«¤ò½ÐÎÏ
173 if ($wiki->config("partlink") == 1) {
174 $part_edit .= "<a class=\"partedit\" href=\"#\">TOP</a> ";
175 $part_edit .= "<a class=\"partedit\" href=\"#p".($self->{p_cnt} - 1)."\">¢¬</a> ";
176 $part_edit .= "<a class=\"partedit\" href=\"#p".($self->{p_cnt} + 1)."\">¢</a> ";
178 # ¥Ñ¡¼¥ÈÊÔ½¸¤¬ON¤«¤ÄÊÔ½¸²Äǽ¤Ê¾ì¹ç¤ÏÊÔ½¸¥¢¥ó¥«¤ò½ÐÎÏ
179 if($wiki->config("partedit")==1 && $wiki->can_modify_page($page)){
180 unless(defined($self->{partedit}->{$page})){
181 $self->{partedit}->{$page} = 0;
183 $self->{partedit}->{$page}++;
185 # InterWiki·Á¼°¤Î¾ì¹ç
187 my $path = $self->{wiki}->config('script_name');
188 if(index($page,":")!=-1){
189 ($path,$page) = split(/:/,$page);
190 $path = $self->{wiki}->config('script_name')."/$path";
192 $part_edit .= "<a class=\"partedit\" href=\"$path?action=EDIT".
193 "&page=".&Util::url_encode($page).
194 "&artno=".$self->{partedit}->{$full}."\" rel=\"nofollow\">ÊÔ½¸</a>";
196 if($part_edit ne ""){
197 $self->{html} .= "<div class=\"partedit\">$part_edit</div>\n";
205 #==============================================================================
207 #==============================================================================
211 if($self->{para}==1){
212 $self->{html} .= "</p>\n";
221 $self->{html} .= "<hr>\n";
224 #==============================================================================
226 #==============================================================================
235 if($self->{para}==1){
236 $self->{html} .= "</p>\n";
238 } elsif($self->{wiki}->config('br_mode')==1){
239 $self->{html} .= "<br>\n";
243 #==============================================================================
245 #==============================================================================
250 if($self->{para}==1){
251 $self->{html} .= "</p>\n";
260 $self->{pre} .= Util::escapeHTML($text)."\n";
265 if($self->{pre} ne ""){
266 $self->{html} .= "<pre>".$self->{pre}."</pre>\n";
271 #==============================================================================
273 #==============================================================================
283 if($self->{table}==0){
285 $self->{html} .= "<table>\n";
293 my $html = join("",@$_);
294 if($#columns != -1 && $html eq '<<'){
295 @columns[$#columns]->{colspan}++;
297 push(@columns, {colspan => 1, html => $html});
300 $self->{html} .= "<tr>\n";
302 $self->{html} .= "<$tag colspan=\"".$_->{colspan}."\">".$_->{html}."</$tag>\n";
304 $self->{html} .= "</tr>\n";
309 if($self->{table}!=0){
311 $self->{html} .= "</table>\n";
315 #==============================================================================
317 #==============================================================================
325 if($self->{para}==1){
326 $self->{html} .= "</p>\n";
331 #==============================================================================
332 # ¹Ô½ñ¼°¤Ë³ºÅö¤·¤Ê¤¤¹Ô
333 #==============================================================================
341 my $html = join("",@$obj);
343 if($self->{para}==0){
344 $self->{html} .= "<p>";
347 $self->{html} .= $html;
349 # br¥â¡¼¥É¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï<br>¤ò¤¹
350 if($self->{wiki}->config('br_mode')==1){
351 $self->{html} .= "<br>\n";
355 #==============================================================================
357 #==============================================================================
364 my $html = join("",@$obj);
365 $self->{quote} .= "<p>".$html."</p>\n";
370 if($self->{quote} ne ""){
371 $self->{html} .= "<blockquote>".$self->{quote}."</blockquote>\n";
376 #==============================================================================
378 #==============================================================================
389 my $html1 = join("",@$obj1);
390 my $html2 = join("",@$obj2);
392 $self->{html} .= "<dl>\n<dt>".$html1."</dt>\n<dd>".$html2."</dd>\n</dl>\n";
395 #==============================================================================
397 #==============================================================================
401 return "<strong>".join("",$self->parse_line($text))."</strong>";
404 #==============================================================================
406 #==============================================================================
410 return "<em>".join("",$self->parse_line($text))."</em>";
413 #==============================================================================
415 #==============================================================================
419 return "<ins>".join("",$self->parse_line($text))."</ins>";
422 #==============================================================================
424 #==============================================================================
428 return "<del>".join("",$self->parse_line($text))."</del>";
431 #==============================================================================
433 #==============================================================================
443 if($url eq $name && $url=~/\.(gif|jpg|jpeg|bmp|png)$/i && $self->{'wiki'}->config('display_image')==1){
444 return "<img src=\"".$url."\">";
446 if($self->{wiki}->config('open_new_window')==1 &&
447 ($self->{wiki}->config('inside_same_window')==0 ||
448 ($self->{wiki}->config('inside_same_window')==1 && index($url,'://') > 0))){
449 return "<a href=\"$url\" target=\"_blank\">".Util::escapeHTML($name)."</a>";
451 return "<a href=\"$url\">".Util::escapeHTML($name)."</a>";
456 #==============================================================================
457 # Wiki¥Ú¡¼¥¸¤Ø¤Î¥¢¥ó¥«
458 #==============================================================================
464 if(!defined($name) || $name eq ""){
467 if($self->{wiki}->page_exists($page)){
468 return "<a href=\"".$self->{wiki}->create_page_url($page)."\" class=\"wikipage\">".
469 &Util::escapeHTML($name)."</a>";
471 return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".
472 "<a href=\"".$self->{wiki}->create_page_url($page)."\">?</a>";
476 #==============================================================================
478 #==============================================================================
482 return &Util::escapeHTML($text);
485 #==============================================================================
487 #==============================================================================
492 my @result = $self->{wiki}->process_plugin($plugin,$self);
496 #==============================================================================
497 # ¥Ñ¥é¥°¥é¥Õ¥×¥é¥°¥¤¥ó
498 #==============================================================================
503 if($self->{para}==1){
504 $self->{html} .= "</p>\n";
513 my $result = $self->{wiki}->process_plugin($plugin,$self);
514 if(defined($result) && $result ne ""){
515 $self->{html} .= $result;
519 #==============================================================================
521 #==============================================================================
528 my $wiki = $self->{wiki};
530 if($self->{para}==1){
531 $self->{html} .= "</p>\n";
540 $self->{html} .= "<div class=\"image\">";
541 $self->{html} .= "<img src=\"".$wiki->create_url({action=>"ATTACH",page=>$page,file=>$file})."\"";
542 $self->{html} .= " width=\"$width\"" if ($width ne "");
543 $self->{html} .= " height=\"$height\"" if ($height ne "");
544 $self->{html} .= "/>";
545 $self->{html} .= "</div>\n";
548 #==============================================================================
550 #==============================================================================
555 return "<span class=\"error\">".Util::escapeHTML($label)."</span>";