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);
32 $self->{main} = $mainflg;
33 return bless $self,$class;
36 #==============================================================================
38 #==============================================================================
45 $self->{html} .= "</p>\n";
49 if($self->{list} == 1 && $level <= $self->{level}){
58 my $html = join("",@$obj);
60 if($level > $self->{level}){
61 while($level != $self->{level}){
62 $self->{html} .= "<ul>\n";
63 push(@{$self->{close_list}},"</ul>\n");
66 } elsif($level <= $self->{level}){
67 while($level-1 != $self->{level}){
68 if($self->{'list_close_'.$self->{level}} == 1){
69 $self->{html} .= "</li>\n";
70 $self->{'list_close_'.$self->{level}} = 0;
72 if($level == $self->{level}){
75 $self->{html} .= pop(@{$self->{close_list}});
80 $self->{html} .= "<li>".$html;
81 $self->{'list_close_'.$level} = 1;
84 #==============================================================================
86 #==============================================================================
93 $self->{html} .= "</p>\n";
97 if($self->{list} == 0 && $level <= $self->{level}){
106 my $html = join("",@$obj);
108 if($level > $self->{level}){
109 while($level != $self->{level}){
110 $self->{html} .= "<ol>\n";
111 push(@{$self->{close_list}},"</ol>\n");
114 } elsif($level <= $self->{level}){
115 while($level-1 != $self->{level}){
116 if($self->{'list_close_'.$self->{level}} == 1){
117 $self->{html} .= "</li>\n";
118 $self->{'list_close_'.$self->{level}} = 0;
120 if($level == $self->{level}){
123 $self->{html} .= pop(@{$self->{close_list}});
128 $self->{html} .= "<li>".$html;
129 $self->{'list_close_'.$level} = 1;
132 #==============================================================================
134 #==============================================================================
137 while($self->{level} != 0){
138 if($self->{'list_close_'.($self->{level})} == 1){
139 $self->{html} .= "</li>\n";
140 $self->{'list_close_'.$self->{level}} = 0;
142 $self->{html} .= pop(@{$self->{close_list}});
147 #==============================================================================
149 #==============================================================================
154 my $wiki = $self->{wiki};
156 if($self->{para}==1){
157 $self->{html} .= "</p>\n";
166 my $html = join("",@$obj);
168 # ¥á¥¤¥ó¤Îɽ¼¨Îΰè¤Ç¤Ê¤¤¤È¤
170 $self->{html} .= "<h".($level+1).">".$html."</h".($level+1).">\n";
172 # ¥á¥¤¥ó¤Îɽ¼¨Îΰè¤Î¾ì¹ç¤Ï¥¢¥ó¥«¤ò½ÐÎÏ
175 $self->{html} .= "<h".($level+1)."><a name=\"p".$self->{p_cnt}."\"><span class=\"sanchor\"> </span>".
176 $html."</a></h".($level+1).">\n";
178 $self->{html} .= "<h".($level+1)."><a name=\"p".$self->{p_cnt}."\">".$html."</a></h".($level+1).">\n";
180 # ¥Ñ¡¼¥ÈÊÔ½¸¤¬ON¤«¤ÄÊÔ½¸²Äǽ¤Ê¾ì¹ç¤ÏÊÔ½¸¥¢¥ó¥«¤ò½ÐÎÏ
181 if($self->{no_partedit}!=1){
182 my $page = $wiki->get_CGI()->param("page");
184 # ¥Ñ¡¼¥È¥ê¥ó¥¯¤¬ON¤Î¾ì¹ç¤Ï°ÜÆ°ÍѤΥ¢¥ó¥«¤ò½ÐÎÏ
185 if ($wiki->config("partlink") == 1) {
186 $part_edit .= "<a class=\"partedit\" href=\"#\">TOP</a> ";
187 $part_edit .= "<a class=\"partedit\" href=\"#p".($self->{p_cnt} - 1)."\">¢¬</a> ";
188 $part_edit .= "<a class=\"partedit\" href=\"#p".($self->{p_cnt} + 1)."\">¢</a> ";
190 # ¥Ñ¡¼¥ÈÊÔ½¸¤¬ON¤«¤ÄÊÔ½¸²Äǽ¤Ê¾ì¹ç¤ÏÊÔ½¸¥¢¥ó¥«¤ò½ÐÎÏ
191 if($wiki->config("partedit")==1 && $wiki->can_modify_page($page)){
192 unless(defined($self->{partedit}->{$page})){
193 $self->{partedit}->{$page} = 0;
195 $self->{partedit}->{$page}++;
197 # InterWiki·Á¼°¤Î¾ì¹ç
199 my $path = $self->{wiki}->config('script_name');
200 if(index($page,":")!=-1){
201 ($path,$page) = split(/:/,$page);
202 $path = $self->{wiki}->config('script_name')."/$path";
204 $part_edit .= "<a class=\"partedit\" href=\"$path?action=EDIT".
205 "&page=".&Util::url_encode($page).
206 "&artno=".$self->{partedit}->{$full}."\" rel=\"nofollow\">ÊÔ½¸</a>";
208 if($part_edit ne ""){
209 $self->{html} .= "<div class=\"partedit\">$part_edit</div>\n";
217 #==============================================================================
219 #==============================================================================
223 if($self->{para}==1){
224 $self->{html} .= "</p>\n";
233 $self->{html} .= "<hr>\n";
236 #==============================================================================
238 #==============================================================================
247 if($self->{para}==1){
248 $self->{html} .= "</p>\n";
250 } elsif($self->{wiki}->config('br_mode')==1){
251 $self->{html} .= "<br>\n";
255 #==============================================================================
257 #==============================================================================
262 if($self->{para}==1){
263 $self->{html} .= "</p>\n";
272 $self->{pre} .= Util::escapeHTML($text)."\n";
277 if($self->{pre} ne ""){
278 $self->{html} .= "<pre>".$self->{pre}."</pre>\n";
283 #==============================================================================
285 #==============================================================================
295 if($self->{table}==0){
297 $self->{html} .= "<table>\n";
305 my $html = join("",@$_);
306 if($#columns != -1 && $html eq '<<'){
307 @columns[$#columns]->{colspan}++;
309 push(@columns, {colspan => 1, html => $html});
312 $self->{html} .= "<tr>\n";
314 $self->{html} .= "<$tag colspan=\"".$_->{colspan}."\">".$_->{html}."</$tag>\n";
316 $self->{html} .= "</tr>\n";
321 if($self->{table}!=0){
323 $self->{html} .= "</table>\n";
327 #==============================================================================
329 #==============================================================================
337 if($self->{para}==1){
338 $self->{html} .= "</p>\n";
343 #==============================================================================
344 # ¹Ô½ñ¼°¤Ë³ºÅö¤·¤Ê¤¤¹Ô
345 #==============================================================================
353 my $html = join("",@$obj);
355 if($self->{para}==0){
356 $self->{html} .= "<p>";
359 $self->{html} .= $html;
361 # br¥â¡¼¥É¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï<br>¤ò¤¹
362 if($self->{wiki}->config('br_mode')==1){
363 $self->{html} .= "<br>\n";
367 #==============================================================================
369 #==============================================================================
376 my $html = join("",@$obj);
377 $self->{quote} .= "<p>".$html."</p>\n";
382 if($self->{quote} ne ""){
383 $self->{html} .= "<blockquote>".$self->{quote}."</blockquote>\n";
388 #==============================================================================
390 #==============================================================================
401 my $html1 = join("",@$obj1);
402 my $html2 = join("",@$obj2);
404 $self->{html} .= "<dl>\n<dt>".$html1."</dt>\n<dd>".$html2."</dd>\n</dl>\n";
407 #==============================================================================
409 #==============================================================================
413 return "<strong>".join("",$self->parse_line($text))."</strong>";
416 #==============================================================================
418 #==============================================================================
422 return "<em>".join("",$self->parse_line($text))."</em>";
425 #==============================================================================
427 #==============================================================================
431 return "<ins>".join("",$self->parse_line($text))."</ins>";
434 #==============================================================================
436 #==============================================================================
440 return "<del>".join("",$self->parse_line($text))."</del>";
443 #==============================================================================
445 #==============================================================================
455 if($url eq $name && $url=~/\.(gif|jpg|jpeg|bmp|png)$/i && $self->{'wiki'}->config('display_image')==1){
456 return "<img src=\"".$url."\">";
458 if($self->{wiki}->config('open_new_window')==1 &&
459 ($self->{wiki}->config('inside_same_window')==0 ||
460 ($self->{wiki}->config('inside_same_window')==1 && index($url,'://') > 0))){
461 return "<a href=\"$url\" target=\"_blank\">".Util::escapeHTML($name)."</a>";
463 return "<a href=\"$url\">".Util::escapeHTML($name)."</a>";
468 #==============================================================================
469 # Wiki¥Ú¡¼¥¸¤Ø¤Î¥¢¥ó¥«
470 #==============================================================================
476 if(!defined($name) || $name eq ""){
479 if($self->{wiki}->page_exists($page)){
480 return "<a href=\"".$self->{wiki}->create_page_url($page)."\" class=\"wikipage\">".
481 &Util::escapeHTML($name)."</a>";
483 return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".
484 "<a href=\"".$self->{wiki}->create_page_url($page)."\">?</a>";
488 #==============================================================================
490 #==============================================================================
494 return &Util::escapeHTML($text);
497 #==============================================================================
499 #==============================================================================
504 my @result = $self->{wiki}->process_plugin($plugin,$self);
508 #==============================================================================
509 # ¥Ñ¥é¥°¥é¥Õ¥×¥é¥°¥¤¥ó
510 #==============================================================================
515 if($self->{para}==1){
516 $self->{html} .= "</p>\n";
525 my $result = $self->{wiki}->process_plugin($plugin,$self);
526 if(defined($result) && $result ne ""){
527 $self->{html} .= $result;
531 #==============================================================================
533 #==============================================================================
540 my $wiki = $self->{wiki};
542 if($self->{para}==1){
543 $self->{html} .= "</p>\n";
552 $self->{html} .= "<div class=\"image\">";
553 $self->{html} .= "<img src=\"".$wiki->create_url({action=>"ATTACH",page=>$page,file=>$file})."\"";
554 $self->{html} .= " width=\"$width\"" if ($width ne "");
555 $self->{html} .= " height=\"$height\"" if ($height ne "");
556 $self->{html} .= "/>";
557 $self->{html} .= "</div>\n";
560 #==============================================================================
562 #==============================================================================
567 return "<span class=\"error\">".Util::escapeHTML($label)."</span>";