新規作成 | 管理 | 差分 | 検索 | FrontPage | ページ一覧 | 更新履歴 | RSS

PlugIn/edit-form - 追記編集フォーム(修正版)

管理

追記編集フォーム(修正版)

$plugin->def("edit-form",
  "追記編集フォーム",
  sub {
    my $page = shift;
    my $cookedpage = CGI::escapeHTML($page);
    my $lastmod = get_info($page, $info_LastModified);
    my @parts = read_by_part($page);
    my $part = scalar(@parts) + 1;
    return "\n " .
qq|<form action="wiki.cgi" method="post">| .
qq|<input type="hidden" name="myLastModified" value="$lastmod">| .
qq|<input type="hidden" name="mypage" value="$cookedpage">| .
qq|<input type="hidden" name="mypart" value="$part">| .
qq|<textarea cols="60" rows="10" name="mymsg">| .
qq|</textarea><br>| .
qq|<input type="checkbox" name="mytouch" value="on" checked="checked">タイムスタンプを更新<br>| .
qq|<input type="submit" name="mypreview_edit" value="プレビュー">| .
qq|<input type="submit" name="mypreview_write" value="保存する"><br>    | .
qq|</form>|;
    }
);

全体が pre ブロックになるように、行頭に空白をあけて1行に出力されるようにしてみました。 あとページ名以外の引数はなくしました。 --SHIMADA 2003-07-27 (Sun) 20:47:38

デバッグ

管理

生成されたページのソースを見ると、mypage が空になってますね。 CGI::escapeHTML が怪しいっぽいです。 パラメータはすでにエスケープ済みのはずなので、

   sub {
     my $page = shift;
-    my $cookedpage = CGI::escapeHTML($page);
     my $lastmod = get_info($page, $info_LastModified);

の部分と

 qq|<form action="wiki.cgi" method="post">| .
 qq|<input type="hidden" name="myLastModified" value="$lastmod">| .
-qq|<input type="hidden" name="mypage" value="$cookedpage">| .
+qq|<input type="hidden" name="mypage" value="$page">| .
 qq|<input type="hidden" name="mypart" value="$part">| .

でどうでしょう? --SHIMADA

名無しページが出来てしまいました。っていうかページ名なしの不具合について の if (length($form{mypage}) == 0) { の修正しても名無しファイルが出来ちゃいますね(プレビューでも動作の確認は出来ますが)。- rica 2003-07-27 (Sun) 22:48:43

お騒がせしました。そんなわけで、ただ今、上の修正入ってないばーじょんです。- rica 2003-07-28 (Mon) 09:02:49

CSS の pre 要素の指定がハデだと、ちょっと鬱陶しい事になるかもしれませんね…(自分家のことか…?)。- rica 2003-07-28 (Mon) 13:10:36