$source1 = $wiki->convert_from_fswiki($source1, $format);
$source2 = $wiki->convert_from_fswiki($source2, $format);
- my $diff_text = "";
-=pod
- my @msg1 = split(/\n/,$source1);
- return "¥Ú¡¼¥¸¤¬Â礤¹¤®¤ë¤¿¤áº¹Ê¬¤òɽ¼¨¤Ç¤¤Þ¤»¤ó¡£" if($#msg1 >= 999);
- my @msg2 = split(/\n/,$source2);
- return "¥Ú¡¼¥¸¤¬Â礤¹¤®¤ë¤¿¤áº¹Ê¬¤òɽ¼¨¤Ç¤¤Þ¤»¤ó¡£" if($#msg2 >= 999);
-=cut
+ return (&_get_diff_html($source1, $source2), $source2 ne "");
+}
+
+#==============================================================================
+# º¹Ê¬HTML¤òÀ¸À®¤¹¤ë´Ø¿ô
+#==============================================================================
+sub _get_diff_html {
+ my $self = shift;
+ my $source1 = shift;
+ my $source2 = shift;
+
my @msg1 = _str_jfold($source1, 1);
my @msg2 = _str_jfold($source2, 1);
my $msgrefA = \@msg2;
my $msgrefB = \@msg1;
+ my $diff_text = "";
+
traverse_sequences($msgrefA, $msgrefB,
{
MATCH => sub {
}
});
- return ($diff_text, $source2 ne "");
+ return $diff_text;
}
#==============================================================================
###############################################################################
package plugin::core::EditPage;
use strict;
+use plugin::core::Diff;
#==============================================================================
# ¥³¥ó¥¹¥È¥é¥¯¥¿
#==============================================================================
#--------------------------------------------------------------------------
# Êݸ½èÍý
if($cgi->param("save") ne ""){
- if($wiki->page_exists($pagename)){
- if($cgi->param("lastmodified") != $time){
- return $wiki->error("¥Ú¡¼¥¸¤Ï´û¤ËÊ̤Υ桼¥¶¤Ë¤è¤Ã¤Æ¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£");
- }
- }
- #my $save_content = $content;
- my $mode = $wiki->get_edit_format();
- my $save_content = $wiki->convert_to_fswiki($content,$mode);
+ if($wiki->page_exists($pagename) && $cgi->param("lastmodified") != $time){
+ $buf .= "<p><span class=\"error\">¥Ú¡¼¥¸¤Ï´û¤ËÊ̤Υ桼¥¶¤Ë¤è¤Ã¤Æ¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£</span></p>";
+
+ my $mode = $wiki->get_edit_format();
+ my $orig_source = $wiki->convert_from_fswiki($wiki->get_page($pagename), $mode);
+ my $your_source = $content;
+ $your_source =~ s/\r\n/\n/g;
+ $your_source =~ s/\r/\n/g;
+
+ my $diff = plugin::core::Diff::_get_diff_html($wiki, $orig_source, $your_source);
+ $diff =~ s/\n/<br>/g;
+
+ $buf .= qq|
+ <ul>
+ <li>Äɲ䵤줿Éôʬ¤Ï<ins class="diff">¤³¤Î¤è¤¦¤Ë</ins>ɽ¼¨¤µ¤ì¤Þ¤¹¡£</li>
+ <li>ºï½ü¤µ¤ì¤¿Éôʬ¤Ï<del class="diff">¤³¤Î¤è¤¦¤Ë</del>ɽ¼¨¤µ¤ì¤Þ¤¹¡£</li>
+ </ul>
+ <div class="diff">$diff</div>
+ |;
+
+ $content = $orig_source;
+
+ } else {
+ #my $save_content = $content;
+ my $mode = $wiki->get_edit_format();
+ my $save_content = $wiki->convert_to_fswiki($content,$mode);
- # ¥Ñ¡¼¥ÈÊÔ½¸¤Î¾ì¹ç
- if($artno ne ""){
- $save_content = &make_save_source($wiki->get_page($pagename),$save_content,$artno,$wiki);
- }
- # FrontPage¤Ïºï½üÉÔ²Ä
- if($pagename eq $wiki->config("frontpage") && $save_content eq ""){
- $buf = "<b>".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£</b>\n";
+ # ¥Ñ¡¼¥ÈÊÔ½¸¤Î¾ì¹ç
+ if($artno ne ""){
+ $save_content = &make_save_source($wiki->get_page($pagename),$save_content,$artno,$wiki);
+ }
+ # FrontPage¤Ïºï½üÉÔ²Ä
+ if($pagename eq $wiki->config("frontpage") && $save_content eq ""){
+ $buf = "<b>".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£</b>\n";
- # ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï½èÍý¤ò¼Â¹Ô¤·¤Æ¥á¥Ã¥»¡¼¥¸¤òÊÖµÑ
- } else {
- $wiki->save_page($pagename,$save_content,$sage);
-
- if($content ne ""){
- $wiki->redirect($pagename);
+ # ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï½èÍý¤ò¼Â¹Ô¤·¤Æ¥á¥Ã¥»¡¼¥¸¤òÊÖµÑ
} else {
- if($artno eq ""){
- $wiki->set_title($pagename."¤òºï½ü¤·¤Þ¤·¤¿");
- return Util::escapeHTML($pagename)."¤òºï½ü¤·¤Þ¤·¤¿¡£";
+ $wiki->save_page($pagename,$save_content,$sage);
+
+ if($content ne ""){
+ $wiki->redirect($pagename);
} else {
- $wiki->set_title($pagename."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿");
- return Util::escapeHTML($pagename)."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿¡£";
+ if($artno eq ""){
+ $wiki->set_title($pagename."¤òºï½ü¤·¤Þ¤·¤¿");
+ return Util::escapeHTML($pagename)."¤òºï½ü¤·¤Þ¤·¤¿¡£";
+ } else {
+ $wiki->set_title($pagename."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿");
+ return Util::escapeHTML($pagename)."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿¡£";
+ }
}
}
}