[ 新規 | 編集 | 差分 ] [ 検索 | 一覧 | FrontPage ] [ 履歴 (RSS) | 差分履歴 (RSS) ] [ ログイン ]
【PR】Amazon | SL-C3000 | SL-C1000(3/18発売!) | SL-C860 | SL-6000W | SL-6000L | SL-6000N

WalWikiからの変更箇所

編集

WalWiki/カスタマイズに移動します。

同一ページ内複数コメント

編集

最新の実装はWalWiki/カスタマイズの方をご覧下さい。とりあえずここも残しておきます。

グローバル変数を使ってるのがちょっと気にくわないんだけどこれ以上スマートな実装を思いつかなかった…
もっとスマートな実装方法があれば教えて下さい。
こんな感じに動作します。

グローバル変数定義

編集
my $comment_no = -1;

inline()内の変更

編集
    # yakty add [multi comment] start
#    $line =~ s!(
#                    (\Q$embed_comment\E)
#                        |
#                    (\Q$embed_rcomment\E)
#               )
#            !
#               &make_link($1)
#            !gex;
    # yakty add [multi comment] end
    $line =~ s!
                (
                    ((mailto|http|https|ftp):([^\x00-\x20()<>\x7F-\xFF])*)  # Direct http://...
                        |
                    ($bracket_name)             # [[likethis]], [[#comment]], [[Friend:remotelink]]
                        |
                    ($interwiki_definition)     # [[Friend http://somewhere/?q=sjis($1)]]
                        |
                    ($wiki_name)                # LocalLinkLikeThis
                )
            !
#               &make_link($1)                  # Walrus del [link cache]
#                (defined($link_cache{$1})) ? $link_cache{$1} : (length($_ = &make_link($1)) < 1024) ? ($link_cache{$1} = $_) : $_ # Walrus add [link cache] # yakty del [multi comment]
                (defined($link_cache{$1})) ? $link_cache{$1} :                          # yakty add [multi comment]
                ($1 eq $embed_comment or $1 eq $embed_rcomment) ? &make_link($1) :      # yakty add [multi comment]
                (length($_ = &make_link($1)) < 1024) ? ($link_cache{$1} = $_) : $_      # yakty add [multi comment]
            !gex;

embedded_to_html()内の変更

編集
        my $lastmodified = &get_info($form{mypage}, $info_LastModified);
        $comment_no++; # yakty add [multi comment]
        return <<"EOD";
<form action="$url_cgi" method="post">
    <input type="hidden" name="mycmd" value="comment">
    <input type="hidden" name="mypage" value="$escapedmypage">
    <input type="hidden" name="myLastModified" value="$lastmodified">
    <input type="hidden" name="mytouch" value="on">
    <input type="hidden" name="mycmtno" value="$comment_no">
    $resource{yourname}
    <input type="text" name="myname" value="" size="10">
    <input type="text" name="mymsg" value="" size="80">
    <input type="submit" value="$resource{commentbutton}">
</form>
EOD

do_comment()内の変更

編集
sub do_comment {
    my ($content) = $database{$form{mypage}};
    my $datestr = &get_now;
    my $namestr = $form{myname} ? " ''[[$form{myname}]]'' : " : " ";
    # yakty del [multi comment] start
    #if ($content =~ s/(\Q$embed_comment\E)/- $datestr$namestr$form{mymsg}\n$1/) {
    #    ;
    #} else {
    #    $content =~ s/(\Q$embed_rcomment\E)/$1\n- $datestr$namestr$form{mymsg}/;
    #}
    # yakty del [multi comment] end
    # yakty add [multi comment] start
    my (@txt) = split(/\n/, $content);
    my $cmtno = 0 + $form{mycmtno};
    my $cmtcnt = 0;
    #for(my $i=0; $i<$#txt; $i++){
    for(my $i=0; $i<=$#txt; $i++){   # ちょっと間違えてた
        my $line = $txt[$i];
        next if($line =~ /^\s.*$/);
        if($cmtcnt < $cmtno){
            if($line =~ /((\Q$embed_comment\E)|(\Q$embed_rcomment\E))/){
                $cmtcnt++;
            }
        } else {
            if($line =~ /((\Q$embed_comment\E)|(\Q$embed_rcomment\E))/){
                if($1 eq $embed_comment){
                    $line =~ s/(\Q$embed_comment\E)/- $datestr$namestr$form{mymsg}\n$1/;
                } elsif($1 eq $embed_rcomment){
                    $line =~ s/(\Q$embed_rcomment\E)/$1\n- $datestr$namestr$form{mymsg}/;
                }
                $txt[$i] = $line;
                last;
            }
        }
    }
    $content = join("\n", @txt);
    # yakty add [multi comment] end
    if ($form{mymsg}) {
        $form{mymsg} = $content;
        $form{mytouch} = 'on';
        &do_write;
    } else {
        $form{mycmd} = 'read';
        &do_read;
    }
}

ご意見等

編集

ご意見等があればこちらにどうぞ。

[[#rcomment]]

05139