[ 新規 ] [ 検索 | 一覧 | 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;
 }


02347