差分表示
- 最後の更新で追加された行はこのように表示します。
- 最後の更新で削除された行はこのように表示します。
衝突画面からの直接編集を可能にします。
* [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;
}
02347