1 ##########################################################################################
3 # ¥¹¥Ñ¥à¥Õ¥£¥ë¥¿¡¼¥×¥é¥°¥¤¥ó¡Ê³Ø½¬µ¡Ç½Ìµ¤·ÈÇ¡Ë
4 #¡Êcore::EditPage¥×¥é¥°¥¤¥ó¡Ê¥Ú¡¼¥¸¤ÎÊÔ½¸¡Ë¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¡Ë
6 ##########################################################################################
9 use plugin::core::EditPage;
11 # plugin::core::EditPage¤Îdo_action¥á¥½¥Ã¥É¤ÎÃÖ¤´¹¤¨
12 package plugin::core::EditPage;
17 my $cgi = $wiki->get_CGI;
19 my $pagename = $cgi->param("page");
20 my $format = $wiki->get_edit_format();
21 my $content = $cgi->param("content");
22 my $sage = $cgi->param("sage");
23 my $template = $cgi->param("template");
24 my $artno = $cgi->param("artno");
25 my $time = $wiki->get_last_modified($pagename);
28 my $login = $wiki->get_login_info();
31 return $wiki->error("¥Ú¡¼¥¸¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
33 if($pagename =~ /([\|\[\]])|^:|([^:]:[^:])/){
34 return $wiki->error("¥Ú¡¼¥¸Ì¾¤Ë»ÈÍѤǤ¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£");
36 if(!$wiki->can_modify_page($pagename)){
37 return $wiki->error("¥Ú¡¼¥¸¤ÎÊÔ½¸¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
40 #--------------------------------------------------------------------------
42 if($cgi->param("save") ne ""){
43 if($wiki->config('page_max') ne '' && $wiki->config('page_max') > 0){
44 if(length($content) > $wiki->config('page_max')){
45 return $wiki->error('¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
48 if($wiki->page_exists($pagename) && $cgi->param("lastmodified") != $time){
49 $buf .= "<p><span class=\"error\">¥Ú¡¼¥¸¤Ï´û¤ËÊ̤Υ桼¥¶¤Ë¤è¤Ã¤Æ¹¹¿·¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ºÇ¿·ÈǤȤκ¹Ê¬¤ò³Îǧ¤·¤ÆºÆÅÙÊÔ½¸¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£</span></p>";
51 my $mode = $wiki->get_edit_format();
52 my $orig_source = undef;
54 $orig_source = $wiki->convert_from_fswiki($wiki->get_page($pagename), $mode);
56 $orig_source = $wiki->convert_from_fswiki(&read_by_part($wiki->get_page($pagename), $artno), $mode);
58 my $your_source = $content;
59 $your_source =~ s/\r\n/\n/g;
60 $your_source =~ s/\r/\n/g;
62 my $diff = plugin::core::Diff::_get_diff_html($wiki, $orig_source, $your_source);
65 $content = $orig_source;
69 #--------------------------------------------------------------------------------------------------
71 unless(&plugin::_ex_spam_filter_light::Install::judgment_text($content)){
72 my $time = Util::format_date(time());
73 my $file = $wiki->config('log_dir')."/spam_page.txt";
74 if(open(SPAM_LOG, ">>$file")){
75 print SPAM_LOG "-" x 70 . "\n";
76 print SPAM_LOG "$pagename:$artno ($time)\n";
77 print SPAM_LOG "-" x 70 . "\n";
78 print SPAM_LOG "$content\n";
81 my $error_message = $wiki->error("ÊÔ½¸¤µ¤ì¤¿Ê¸¾Ï¤Ï¥¹¥Ñ¥àʸ¾Ï¤ÈȽÄꤵ¤ì¤Þ¤·¤¿¡£\n");
82 $content = Util::escapeHTML($content);
83 $content =~ s/\n/<br>/g;
84 $error_message .= "<p>\n";
85 $error_message .= "<div>Åê¹Æ¤µ¤ì¤¿Ê¸¾Ï¡§</div>\n";
86 $error_message .= "<div>¡ã¥Ú¡¼¥¸Ì¾¡ä</div>\n";
87 $error_message .= "<div>$pagename</div>\n";
88 $error_message .= "<div>¡ãËÜʸ¡ä</div>\n";
89 $error_message .= "<div>$content</div>\n";
90 $error_message .= "</p>\n";
91 return $error_message;
94 #--------------------------------------------------------------------------------------------------
96 #my $save_content = $content;
97 my $mode = $wiki->get_edit_format();
98 my $save_content = $wiki->convert_to_fswiki($content,$mode);
102 $save_content = &make_save_source($wiki->get_page($pagename), $save_content, $artno, $wiki);
104 # FrontPage¤Ïºï½üÉÔ²Ä
105 if($pagename eq $wiki->config("frontpage") && $save_content eq ""){
106 $buf = "<b>".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£</b>\n";
108 # ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï½èÍý¤ò¼Â¹Ô¤·¤Æ¥á¥Ã¥»¡¼¥¸¤òÊÖµÑ
110 $wiki->save_page($pagename, $save_content, $sage);
113 $wiki->redirect($pagename, $artno);
116 $wiki->set_title($pagename."¤òºï½ü¤·¤Þ¤·¤¿");
117 return Util::escapeHTML($pagename)."¤òºï½ü¤·¤Þ¤·¤¿¡£";
119 $wiki->set_title($pagename."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿");
120 return Util::escapeHTML($pagename)."¤Î¥Ñ¡¼¥È¤òºï½ü¤·¤Þ¤·¤¿¡£";
125 #--------------------------------------------------------------------------
127 } elsif($cgi->param("diff") ne ""){
128 if($wiki->config('page_max') ne '' && $wiki->config('page_max') > 0){
129 if(length($content) > $wiki->config('page_max')){
130 return $wiki->error('¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
133 $time = $cgi->param("lastmodified");
135 my $mode = $wiki->get_edit_format();
136 my $orig_source = undef;
138 $orig_source = $wiki->convert_from_fswiki($wiki->get_page($pagename), $mode);
140 $orig_source = $wiki->convert_from_fswiki(&read_by_part($wiki->get_page($pagename), $artno), $mode);
142 my $your_source = $content;
143 $your_source =~ s/\r\n/\n/g;
144 $your_source =~ s/\r/\n/g;
146 if($orig_source eq $your_source){
147 $buf .= '<p class="error">º¹Ê¬¤Ï¤¢¤ê¤Þ¤»¤ó¡£</p>';
149 my $diff = plugin::core::Diff::_get_diff_html($wiki, $your_source, $orig_source);
150 $buf .= $diff."<br>";
153 #--------------------------------------------------------------------------
155 } elsif($cgi->param("preview") ne ""){
156 if($wiki->config('page_max') ne '' && $wiki->config('page_max') > 0){
157 if(length($content) > $wiki->config('page_max')){
158 return $wiki->error('¥Ú¡¼¥¸¤¬Êݸ²Äǽ¤ÊºÇÂ祵¥¤¥º¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£');
161 $time = $cgi->param("lastmodified");
162 $buf = "°Ê²¼¤Î¥×¥ì¥Ó¥å¡¼¤ò³Îǧ¤·¤Æ¤è¤í¤·¤±¤ì¤Ð¡ÖÊݸ¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£<br>";
164 if($pagename eq $wiki->config("frontpage") && $artno eq ""){
165 $buf = $buf."<b>¡Ê".&Util::escapeHTML($wiki->config("frontpage"))."¤Ïºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¡Ë</b>";
168 $buf = $buf."<b>¡Ê¥Ú¡¼¥¸ÆâÍƤ϶õ¤Ç¤¹¡£¹¹¿·¤¹¤ë¤È¤³¤Î¥Ú¡¼¥¸¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£¡Ë</b>";
170 $buf = $buf."<b>¡Ê¥Ú¡¼¥¸ÆâÍƤ϶õ¤Ç¤¹¡£¹¹¿·¤¹¤ë¤È¤³¤Î¥Ñ¡¼¥È¤Ïºï½ü¤µ¤ì¤Þ¤¹¡£¡Ë</b>";
174 $content = $wiki->convert_to_fswiki($content,$format);
175 $buf = $buf."<br>".$wiki->process_wiki($content);
177 } elsif($wiki->page_exists($pagename)) {
178 #¥Ú¡¼¥¸¤¬Â¸ºß¤¹¤ë¾ì¹ç
180 $content = $wiki->get_page($pagename);
182 $content = &read_by_part($wiki->get_page($pagename), $artno);
184 } elsif($template ne ""){
185 #¥Æ¥ó¥×¥ì¡¼¥È¤ò»ØÄꤵ¤ì¤¿¾ì¹ç
186 $content = $wiki->get_page($template);
189 #--------------------------------------------------------------------------
191 $wiki->set_title($pagename."¤ÎÊÔ½¸",1);
193 my $tmpl = HTML::Template->new(filename=>$wiki->config('tmpl_dir')."/editform.tmpl",
194 die_on_bad_params => 0);
196 $tmpl->param({SCRIPT_NAME => $wiki->create_url(),
197 PAGE_NAME => $pagename,
198 CONTENT => $wiki->convert_from_fswiki($content, $format),
199 LAST_MODIFIED => $time,
201 EXISTS_PAGE => $wiki->page_exists($pagename),
205 $tmpl->param(OPTIONAL_PARAMS=>[{NAME=>'artno', VALUE=>$artno}]);
208 $buf .= $tmpl->output();
211 $buf .= $wiki->get_editform_plugin();