【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

YukiWiki2不具合報告 - [[YukiWiki2]]を使っていて気がついた不具合

YukiWiki2を使っていて気がついた不具合 以下、自由にお書きください。  

(Too many spams ... embedded comments are not allowed now, sorry.)

:用語:解説
文章1

文章2

用語
解説
文章1

文章2

ここのcssだと見かけは問題ないように見えますが、「文章1」のところが<dl>タグに 入ってしまいます。<dl>タグに字下げを適用していると、文章1だけ一緒に字下げされて しまいます。


<p>
</p>
<dl>
<dt>用語</dt>

<dd>解説</dd>
文章1
</dl>
<p>
文章2
</p>

text_to_htmlの↓この行の下に
 push(@result, shift(@saved)) if (@saved and $saved[0] eq '</pre>' and /^[^ \t]/);

以下のようなコード[a]を追加
 if (@saved and $saved[0] eq '</dl>' and /^[^:]/) {  #直前が用語解説で、解析中の行が用語解説じゃないとき
   push(@result, shift(@saved));  # 保存してある終了タグを出力&保存場所から削除
   unshift(@saved, "</p>");       # </p>を終了タグとして登録
   push(@result, "<p>");          # <p>を出力
 }
[b]
 if (/^(\*{1,3})(.+)/) {
    # $hn = 'h2', 'h3' or 'h4'
    my $hn = "h" . (length($1) + 1);
    push(@toc, '-' x length($1) . qq( <a href="#i$tocnum">) . &remove_tag(&inline($2)) . qq(</a>\n));
    push(@result, splice(@saved), qq(<$hn><a name="i$tocnum"> </a>) . &inline($2) . qq(</$hn>));
    $tocnum++;
    unshift(@saved, "</p>");       # 追加
    push(@result, "<p>");          # 追加
 } elsif (/^(-{2,3})\($/) {        

sub text_to_html {

        } else {
            &back_push('p', 1, \@saved, \@result, '');  # 追加箇所
            push(@result, &inline($_));
        }

 [[[ななみ]]]
という記述がおかしくなるようです。

[ ななみ? ] のようなデザインにしようと意図しようとしてこのようなブラケットにした場合

[ななみ?] になってしまうようです。

修正は以下の方法でいけるようです。

 #my $bracket_name = '\[\[([^\]]+?)\]\]';
 my $bracket_name ='\[\[((?!\[)[^\]]+?)\]\]';

 sub print_header {
     my ($page) = @_;
     my $bodyclass = "normal";
     my $editable = 0;
     my $admineditable = 0;
     if (&is_frozen($page) and $form{mycmd} =~ /^(read|write)$/) {
         $editable = 0;
         $admineditable = 1;
         $bodyclass = "frozen";
     } elsif (&is_editable($page) and $form{mycmd} =~ /^(read|write)$/) {
         $admineditable = 1;
         $editable = 1;
     } else {
         $editable = 0;
     }
     my $cookedpage = &encode($page);
     my $escapedpage = &escape($page);
 
     ----ここから----
 
     # robot exclusion start
     my $meta_robot;
     if (grep { $form{mycmd} eq $_ } ('edit', 'adminedit', 'adminchangepasswordform', 'create', 'diff') ) {
         $meta_robot = qq(<meta name="robots" content="noindex">);
     }
     # robot exclusion end
 
     ----ここまでを追加
 
     print <<"EOD";
 Content-type: text/html; charset=$charset
 
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     "http://www.w3.org/TR/html4/loose.dtd">
 <html lang="$lang">
 <head>
     <meta http-equiv="Content-Language" content="$lang">
     <meta http-equiv="Content-Type" content="text/html; charset=$charset">
     $meta_robot  ← この行を追加
     <title>$escapedpage @{[&escape(&get_subjectline($page))]}</title>
     <link rel="index" href="$url_cgi?$IndexPage">
     <link rev="made" href="mailto:$modifier_mail">
     <link rel="stylesheet" type="text/css" href="$url_stylesheet">
     <link rel="alternate" type="application/rss+xml" title="RSS" href="$url_cgi?$RssPage" />
 </head>
:[[ActivePerl>http://www.activestate.com/]]:Perl配布所。
[[ActivePerl?>http
//www.activestate.com/]]:Perl配布所。

改変前 wiki.css 2004/5/7 20:45:26の要点のみ

.preview {
    color: black;
    bcolor: #fcc;
}

p, dl {
    margin: 5pt;
    padding: 5pt;
}

p, pre, ul, li, dl, dt, dd {
    line-height: 140%;
}

dt {
    font-weight: bold;
}

改変後要点のみ

.preview {
    color: black;
    background-color: #fcc;
}

dl {
    margin: 5pt;
    padding: 5pt;
}

pre, ul, li, dl, dt, dd {
    line-height: 140%;
}

dt {
    font-weight: bold;
}
段落のテスト。

↑の「段落のテスト。」という文字列とこの行で既に左側マージン差がある(これは2.1.2aになる前から)。そしてこの行の後にも空行を挿れるので箇条書きとの間で段落としての空間がとても広いです。

そして上記のように箇条書き同士の間で段落をつけるのに空行を挿れると、段落としての差で空間が空きすぎる(InternetExplorer?以外不明。そしてここのyukiwiki.cgi及びwiki.cssの変更次第では反映されない可能性あり)そして箇条書きの前に空行を挿れるとこの行と↓のコメントとの間も空きますね。

 my $bracket_name = '?[?[(([^ ?r?n?f?t?x80-?x9f?xe0-?xff]|[?x80-?x9f?xe0-?xff].)+?)?]?]';
print <<"EOD";
Content-type: text/html?n?n<form>
<textarea cols="10" rows="10" name="mymsg" wrap="off">hoge?n?nend</textarea>
<textarea cols="10" rows="10" name="mymsg1" wrap="off">hoge?r?n?nend</textarea>
<textarea cols="10" rows="10" name="mymsg2">hoge?n?nend</textarea></form>
EOD
$mymsg =~ s|?n|?r?n|g if $ENV{HTTP_USER_AGENT} =~ /Opera.*Windows/;
    $rss->channel(
        title => $modifier_rss_title,
        link  => $modifier_rss_link,
-       about  => "$modifier_rss_link?RssPage",
+       about  => "$modifier_rss_link?$RssPage",