• R/O
  • HTTP
  • SSH
  • HTTPS

sandbox: 提交

個人用


Commit MetaInfo

修訂24612333ae5efdbe365e5fbd57462f1c846d920a (tree)
時間2017-12-07 18:59:07
作者kgsoft <kgsoft@871d...>
Commiterkgsoft

Log Message

FSWiki 3.6.4対応

Change Summary

差異

--- a/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/bbs.pm
+++ b/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/bbs.pm
@@ -27,9 +27,9 @@ sub do_action {
2727 if($name eq ""){
2828 $name = "名無しさん";
2929 } else {
30- # post_nameというキーでクッキーをセットする
30+ # fswiki_post_nameというキーでクッキーをセットする
3131 my $path = &Util::cookie_path($wiki);
32- my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M',-path=>$path);
32+ my $cookie = $cgi->cookie(-name=>'fswiki_post_name',-value=>Util::url_encode($name),-expires=>'+1M',-path=>$path);
3333 print "Set-Cookie: ",$cookie->as_string,"\n";
3434 }
3535
@@ -84,7 +84,7 @@ sub do_action {
8484
8585 foreach(@lines){
8686 $content = $content.$_."\n";
87- if(/^{{bbs\s*.*}}$/ && $flag==0){
87+ if(/^\{\{bbs\s*.*\}\}$/ && $flag==0){
8888 if($form_count==$count){
8989 $content .= "!!$subject - $name (".&Util::format_date(time()).")\n".
9090 "$message\n";
@@ -133,9 +133,9 @@ sub do_action {
133133 if($name eq ""){
134134 $name = "名無しさん";
135135 } else {
136- # post_nameというキーでクッキーをセットする
136+ # fswiki_post_nameというキーでクッキーをセットする
137137 my $path = &Util::cookie_path($wiki);
138- my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M',-path=>$path);
138+ my $cookie = $cgi->cookie(-name=>'fswiki_post_name',-value=>Util::url_encode($name),-expires=>'+1M',-path=>$path);
139139 print "Set-Cookie: ",$cookie->as_string,"\n";
140140 }
141141
--- a/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/bugtrack.pm
+++ b/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/bugtrack.pm
@@ -33,9 +33,9 @@ sub do_action {
3333 return $wiki->error("バグ内容が入力されていません。");
3434 }
3535
36- # post_nameというキーでクッキーをセットする
36+ # fswiki_post_nameというキーでクッキーをセットする
3737 my $path = &Util::cookie_path($wiki);
38- my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M',-path=>$path);
38+ my $cookie = $cgi->cookie(-name=>'fswiki_post_name',-value=>Util::url_encode($name),-expires=>'+1M',-path=>$path);
3939 print "Set-Cookie: ",$cookie->as_string,"\n";
4040
4141 #--------------------------------------------------------------------------------------------------
--- a/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/comment.pm
+++ b/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/comment.pm
@@ -21,6 +21,10 @@ sub do_action {
2121 my $count = $cgi->param("count");
2222 my $page = $cgi->param("page");
2323 my $option = $cgi->param("option");
24+
25+ if(!$wiki->can_show($page)){
26+ return $wiki->error("ページの参照権限がありません。");
27+ }
2428
2529 #--------------------------------------------------------------------------------------------------
2630 if($message){
@@ -44,9 +48,9 @@ sub do_action {
4448 if($name eq ""){
4549 $name = "名無しさん";
4650 } else {
47- # post_nameというキーでクッキーをセットする
51+ # fswiki_post_nameというキーでクッキーをセットする
4852 my $path = &Util::cookie_path($wiki);
49- my $cookie = $cgi->cookie(-name=>'post_name',-value=>$name,-expires=>'+1M',-path=>$path);
53+ my $cookie = $cgi->cookie(-name=>'fswiki_post_name',-value=>Util::url_encode($name),-expires=>'+1M',-path=>$path);
5054 print "Set-Cookie: ",$cookie->as_string,"\n";
5155 }
5256
@@ -66,7 +70,7 @@ sub do_action {
6670 # 新着順の場合
6771 if($option eq "reverse"){
6872 $content = $content.$_."\n";
69- if(/^{{comment\s*.*}}$/ && $flag==0){
73+ if(/^\{\{comment\s*.*\}\}$/ && $flag==0){
7074 if($form_count==$count){
7175 $content = $content."*$message - $name (".Util::format_date(time()).")\n";
7276 $flag = 1;
@@ -80,7 +84,7 @@ sub do_action {
8084
8185 # 投稿順の場合
8286 } else {
83- if(/^{{comment\s*.*}}$/ && $flag==0){
87+ if(/^\{\{comment\s*.*\}\}$/ && $flag==0){
8488 if($form_count==$count){
8589 $content = $content."*$message - $name (".Util::format_date(time()).")\n";
8690 $flag = 1;
@@ -93,7 +97,7 @@ sub do_action {
9397 }
9498
9599 # ページ末尾に追加の場合は最後に追加
96- if($option eq "tail"){
100+ if($option eq "tail" && check_comment($wiki, 'Footer')){
97101 $content = $content."*$message - $name (".Util::format_date(time()).")\n";
98102 $flag = 1;
99103 }
--- a/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/core.pm
+++ b/kgsoft/_ex_spam_filter_light/trunk/plugin/_ex_spam_filter_light/core.pm
@@ -40,11 +40,31 @@ sub do_action {
4040 #--------------------------------------------------------------------------
4141 # 保存処理
4242 if($cgi->param("save") ne ""){
43- if($wiki->page_exists($pagename)){
44- if($cgi->param("lastmodified") < $time){
45- return $wiki->error("ページは既に別のユーザによって更新されています。");
43+ if($wiki->config('page_max') ne '' && $wiki->config('page_max') > 0){
44+ if(length($content) > $wiki->config('page_max')){
45+ return $wiki->error('ページが保存可能な最大サイズを超えています。');
4646 }
4747 }
48+ if($wiki->page_exists($pagename) && $cgi->param("lastmodified") != $time){
49+ $buf .= "<p><span class=\"error\">ページは既に別のユーザによって更新されています。最新版との差分を確認して再度編集を行ってください。</span></p>";
50+
51+ my $mode = $wiki->get_edit_format();
52+ my $orig_source = undef;
53+ if($artno eq ""){
54+ $orig_source = $wiki->convert_from_fswiki($wiki->get_page($pagename), $mode);
55+ } else {
56+ $orig_source = $wiki->convert_from_fswiki(&read_by_part($wiki->get_page($pagename), $artno), $mode);
57+ }
58+ my $your_source = $content;
59+ $your_source =~ s/\r\n/\n/g;
60+ $your_source =~ s/\r/\n/g;
61+
62+ my $diff = plugin::core::Diff::_get_diff_html($wiki, $orig_source, $your_source);
63+ $buf .= $diff."<br>";
64+
65+ $content = $orig_source;
66+
67+ } else {
4868
4969 #--------------------------------------------------------------------------------------------------
5070 if($content){
@@ -73,37 +93,71 @@ sub do_action {
7393 }
7494 #--------------------------------------------------------------------------------------------------
7595
76- #my $save_content = $content;
77- my $mode = $wiki->get_edit_format();
78- my $save_content = $wiki->convert_to_fswiki($content,$mode);
96+ #my $save_content = $content;
97+ my $mode = $wiki->get_edit_format();
98+ my $save_content = $wiki->convert_to_fswiki($content,$mode);
7999
80- # パート編集の場合
81- if($artno ne ""){
82- $save_content = &make_save_source($wiki->get_page($pagename),$save_content,$artno,$wiki);
83- }
84- # FrontPageは削除不可
85- if($pagename eq $wiki->config("frontpage") && $save_content eq ""){
86- $buf = "<b>".&Util::escapeHTML($wiki->config("frontpage"))."は削除することはできません。</b>\n";
100+ # パート編集の場合
101+ if($artno ne ""){
102+ $save_content = &make_save_source($wiki->get_page($pagename), $save_content, $artno, $wiki);
103+ }
104+ # FrontPageは削除不可
105+ if($pagename eq $wiki->config("frontpage") && $save_content eq ""){
106+ $buf = "<b>".&Util::escapeHTML($wiki->config("frontpage"))."は削除することはできません。</b>\n";
87107
88- # それ以外の場合は処理を実行してメッセージを返却
89- } else {
90- $wiki->save_page($pagename,$save_content,$sage);
91-
92- if($content ne ""){
93- $wiki->redirect($pagename);
108+ # それ以外の場合は処理を実行してメッセージを返却
94109 } else {
95- if($artno eq ""){
96- $wiki->set_title($pagename."を削除しました");
97- return $cgi->escapeHTML($pagename)."を削除しました。";
110+ $wiki->save_page($pagename, $save_content, $sage);
111+
112+ if($content ne ""){
113+ $wiki->redirect($pagename, $artno);
98114 } else {
99- $wiki->set_title($pagename."のパートを削除しました");
100- return $cgi->escapeHTML($pagename)."のパートを削除しました。";
115+ if($artno eq ""){
116+ $wiki->set_title($pagename."を削除しました");
117+ return Util::escapeHTML($pagename)."を削除しました。";
118+ } else {
119+ $wiki->set_title($pagename."のパートを削除しました");
120+ return Util::escapeHTML($pagename)."のパートを削除しました。";
121+ }
101122 }
102123 }
103124 }
104125 #--------------------------------------------------------------------------
126+ # 差分確認処理
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('ページが保存可能な最大サイズを超えています。');
131+ }
132+ }
133+ $time = $cgi->param("lastmodified");
134+
135+ my $mode = $wiki->get_edit_format();
136+ my $orig_source = undef;
137+ if($artno eq ""){
138+ $orig_source = $wiki->convert_from_fswiki($wiki->get_page($pagename), $mode);
139+ } else {
140+ $orig_source = $wiki->convert_from_fswiki(&read_by_part($wiki->get_page($pagename), $artno), $mode);
141+ }
142+ my $your_source = $content;
143+ $your_source =~ s/\r\n/\n/g;
144+ $your_source =~ s/\r/\n/g;
145+
146+ if($orig_source eq $your_source){
147+ $buf .= '<p class="error">差分はありません。</p>';
148+ } else {
149+ my $diff = plugin::core::Diff::_get_diff_html($wiki, $your_source, $orig_source);
150+ $buf .= $diff."<br>";
151+ }
152+
153+ #--------------------------------------------------------------------------
105154 # プレビュー処理
106155 } 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('ページが保存可能な最大サイズを超えています。');
159+ }
160+ }
107161 $time = $cgi->param("lastmodified");
108162 $buf = "以下のプレビューを確認してよろしければ「保存」ボタンを押してください。<br>";
109163 if($content eq ""){
@@ -125,7 +179,7 @@ sub do_action {
125179 if($artno eq ""){
126180 $content = $wiki->get_page($pagename);
127181 } else {
128- $content = &read_by_part($wiki->get_page($pagename),$artno);
182+ $content = &read_by_part($wiki->get_page($pagename), $artno);
129183 }
130184 } elsif($template ne ""){
131185 #テンプレートを指定された場合
@@ -139,16 +193,16 @@ sub do_action {
139193 my $tmpl = HTML::Template->new(filename=>$wiki->config('tmpl_dir')."/editform.tmpl",
140194 die_on_bad_params => 0);
141195
142- $tmpl->param({SCRIPT_NAME => $wiki->config('script_name'),
196+ $tmpl->param({SCRIPT_NAME => $wiki->create_url(),
143197 PAGE_NAME => $pagename,
144- CONTENT => $wiki->convert_from_fswiki($content,$format),
198+ CONTENT => $wiki->convert_from_fswiki($content, $format),
145199 LAST_MODIFIED => $time,
146200 ACTION => 'EDIT',
147201 EXISTS_PAGE => $wiki->page_exists($pagename),
148202 SAGE => $sage});
149203
150204 if($artno ne ""){
151- $tmpl->param(OPTIONAL_PARAMS=>[{NAME=>'artno',VALUE=>$artno}]);
205+ $tmpl->param(OPTIONAL_PARAMS=>[{NAME=>'artno', VALUE=>$artno}]);
152206 }
153207
154208 $buf .= $tmpl->output();
Show on old repository browser