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 #==============================================================================
281 if($self->{table}==0){
283 $self->{html} .= "<table>\n";
284 $self->{html} .= "<tr>\n";
286 my $html = join("",@$_);
287 $self->{html} .= "<th>".$html."</th>\n";
289 $self->{html} .= "</tr>\n";
292 $self->{html} .= "<tr>\n";
294 my $html = join("",@$_);
295 $self->{html} .= "<td>".$html."</td>\n";
297 $self->{html} .= "</tr>\n";
303 if($self->{table}!=0){
305 $self->{html} .= "</table>\n";
309 #==============================================================================
311 #==============================================================================
319 if($self->{para}==1){
320 $self->{html} .= "</p>\n";
325 #==============================================================================
326 # ¹Ô½ñ¼°¤Ë³ºÅö¤·¤Ê¤¤¹Ô
327 #==============================================================================
335 my $html = join("",@$obj);
337 if($self->{para}==0){
338 $self->{html} .= "<p>";
341 $self->{html} .= $html;
343 # br¥â¡¼¥É¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï<br>¤ò¤¹
344 if($self->{wiki}->config('br_mode')==1){
345 $self->{html} .= "<br>\n";
349 #==============================================================================
351 #==============================================================================
358 my $html = join("",@$obj);
359 $self->{quote} .= "<p>".$html."</p>\n";
364 if($self->{quote} ne ""){
365 $self->{html} .= "<blockquote>".$self->{quote}."</blockquote>\n";
370 #==============================================================================
372 #==============================================================================
383 my $html1 = join("",@$obj1);
384 my $html2 = join("",@$obj2);
386 $self->{html} .= "<dl>\n<dt>".$html1."</dt>\n<dd>".$html2."</dd>\n</dl>\n";
389 #==============================================================================
391 #==============================================================================
395 return "<strong>".join("",$self->parse_line($text))."</strong>";
398 #==============================================================================
400 #==============================================================================
404 return "<em>".join("",$self->parse_line($text))."</em>";
407 #==============================================================================
409 #==============================================================================
413 return "<ins>".join("",$self->parse_line($text))."</ins>";
416 #==============================================================================
418 #==============================================================================
422 return "<del>".join("",$self->parse_line($text))."</del>";
425 #==============================================================================
427 #==============================================================================
437 if($url eq $name && $url=~/\.(gif|jpg|jpeg|bmp|png)$/i && $self->{'wiki'}->config('display_image')==1){
438 return "<img src=\"".$url."\">";
440 if($self->{wiki}->config('open_new_window')==1 &&
441 ($self->{wiki}->config('inside_same_window')==0 ||
442 ($self->{wiki}->config('inside_same_window')==1 && index($url,'://') > 0))){
443 return "<a href=\"$url\" target=\"_blank\">".Util::escapeHTML($name)."</a>";
445 return "<a href=\"$url\">".Util::escapeHTML($name)."</a>";
450 #==============================================================================
451 # Wiki¥Ú¡¼¥¸¤Ø¤Î¥¢¥ó¥«
452 #==============================================================================
458 if(!defined($name) || $name eq ""){
461 if($self->{wiki}->page_exists($page)){
462 return "<a href=\"".$self->{wiki}->create_page_url($page)."\" class=\"wikipage\">".
463 &Util::escapeHTML($name)."</a>";
465 return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".
466 "<a href=\"".$self->{wiki}->create_page_url($page)."\">?</a>";
470 #==============================================================================
472 #==============================================================================
476 return &Util::escapeHTML($text);
479 #==============================================================================
481 #==============================================================================
486 my @result = $self->{wiki}->process_plugin($plugin,$self);
490 #==============================================================================
491 # ¥Ñ¥é¥°¥é¥Õ¥×¥é¥°¥¤¥ó
492 #==============================================================================
497 if($self->{para}==1){
498 $self->{html} .= "</p>\n";
507 my $result = $self->{wiki}->process_plugin($plugin,$self);
508 if(defined($result) && $result ne ""){
509 $self->{html} .= $result;
513 #==============================================================================
515 #==============================================================================
522 my $wiki = $self->{wiki};
524 if($self->{para}==1){
525 $self->{html} .= "</p>\n";
534 $self->{html} .= "<div class=\"image\">";
535 $self->{html} .= "<img src=\"".$wiki->create_url({action=>"ATTACH",page=>$page,file=>$file})."\"";
536 $self->{html} .= " width=\"$width\"" if ($width ne "");
537 $self->{html} .= " height=\"$height\"" if ($height ne "");
538 $self->{html} .= "/>";
539 $self->{html} .= "</div>\n";
542 #==============================================================================
544 #==============================================================================
549 return "<span class=\"error\">".Util::escapeHTML($label)."</span>";