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

WalWiki/カスタマイズ/衝突画面から直接編集

編集

衝突画面からの直接編集を可能にします。

[direct edit conflict]

編集

更新の衝突時に、自分が追加したテキストおよび、衝突時の差分を表示し、
その画面から直接編集することが可能になります。

conflict.txtの修正

編集

例)

更新の衝突が発生しました。

他の人が、このページを更新してしまったようです。

以下に、
あなたの追加したテキストがありますので、
再度編集し直してください。

conflict()内の変更

編集
sub conflict {
    my ($page, $rawmsg) = @_;
    if ($form{myLastModified} eq &get_info($page, $info_LastModified)) {
        return 0;
    # Walrus add [ignore comment conflict] start
    } elsif ($ignore_comment_conflict and $form{mycmd} eq 'comment') {
        return 0;
    # Walrus add [allow comment in frozen] end
    }
    open(FILE, $file_conflict) or &print_error("(conflict)");
    my $content = join('', <FILE>);
    &code_convert(\$content, $kanjicode);
    close(FILE);

    # yakty add [direct edit conflict] start

    # refresh database
    &close_db;
    &open_db;
    # diff text
    my @msg1 = split(/\x0D\x0A|\x0D|\x0A/, $database{$form{mypage}});
    my @msg2 = split(/\x0D\x0A|\x0D|\x0A/, $rawmsg);
    my $diffmsg = &difftext(\@msg1, \@msg2);
    my @addtxt;
    foreach (split(/\n/, $diffmsg)){
        if(/^\+(.*)$/){
            push(@addtxt, ' ' . $1) 
        } elsif(@addtxt[-1] ne ''){
            push(@addtxt, '');
        }
    }

    $content .= "\n" . join("\n", @addtxt) . "\n";

    # yakty add [direct edit conflict] end

    &print_header($page);
    &print_content($content);

    # yakty add [direct edit conflict] start
    &open_diff;
    $_ = &escape($diffbase{$form{mypage}});
    &close_diff;
    print qq(<h3>$resource{difftitle}</h3>);
    print qq($resource{diffnotice});
    print qq(<pre class="diff">);
    foreach (split(/\n/, $_)) {
        if (/^\+(.*)/) {
            print qq(<b class="added">$1</b>\n);
        } elsif (/^\-(.*)/) {
            print qq(<s class="deleted">$1</s>\n);
        } elsif (/^\=(.*)/) {
            #print qq(<span class="same">$1</span>\n);
        } else {
            print qq|??? $_\n|;
        }
    }
    print qq(</pre>);
    print qq(<hr>);

    $content .= "\n" . join("\n", @addtxt) . "\n";
    my $admin = &valid_password($form{mypassword}) ? 1 : 0;
    $form{mypreview} = 0;
    undef $form{mypart};
    &print_editform($database{$form{mypage}}, &get_info($page, $info_LastModified), admin => $admin);
    # yakty add [direct edit conflict] end

    #&print_editform($rawmsg, $form{myLastModified}, frozen=>0, conflict=>1);    # yakty del [direct edit conflict]
    &print_footer($page);
    return 1;
}

01948