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

ページ名なしの不具合について - ページ名なしで本文を書き保存する。

管理

時間が取れるあさって以降にもうちょっと調べてから塚本さんに報告しようと思いますが、どなたか代わりにしていただければそれでも。 …塚本さんじゃなくて結城さんかなぁ。

と言う事に気付いた、テスト書込みらしいページ名なしテキスト。
         ↓

<p> てすとてすと </p> <p> あいうえおっさん

ちょっと笑ってしまいました。

rica 2003-06-30 (Mon) 00:17:29
どうやら上の手順ではなく、未完成の edit-form で生成されたフォームからの書き込みの気がする。
rica 2003-06-30 (Mon) 10:24:21

ですねえ。おそらくYukiWiki?由来のバグでしょう。とりあえずこんな感じに直してみましたが…ちょっとチェックが厳しすぎるかなぁ? - yakty

sub do_edit {
    # Walrus add [edit admin only] start
    if ($edit_admin_only) {
        &do_adminedit;
        return;
    }
    # Walrus add [edit admin only] end
    my ($page) = &unarmor_name(&armor_name($form{mypage}));
    &print_header($page);
    # yakty add [page name check] start
    if ($page ne $form{mypage}) {
       &print_message($resource{invalidname});
    } elsif (not &is_editable($page)) {
    # yakty add [page name check] end
    # if (not &is_editable($page)) {  # yakty del [page name check]
        &print_message($resource{cantchange});
    } elsif (&is_frozen($page)) {
        &print_message($resource{cantchange});
    # Walrus add [part edit] start
    } elsif ($form{mypart} =~ /^\d+$/ and $form{mypart}) {
        my $mymsg = (&read_by_part($page))[$form{mypart} - 1];
        &print_editform($mymsg, &get_info($page, $info_LastModified), admin=>0);
    # Walrus add [part edit] end
    } else {
        &print_editform($database{$page}, &get_info($page, $info_LastModified), admin=>0);
    }
    &print_footer($page);
}

うわぁ。修正案まで出ている…。やってみました。例によって何をどうチェックしているのかは解りませんが(こればっか)、名前なしではページが作れなくなりました(^-^)。
でも、ここは実験場なので、なるべく素のままにしておいたほうがいいのかなぁ。- rica 2003-06-30 (Mon) 13:16:32

最初の方で

my ($page) = &unarmor_name(&armor_name($form{mypage}));

ってあるじゃないですか。多分コレがページ名のチェック代わりだと思うんですよね。&armor_name()して&unarmor_name()して、出来たページ名を&is_editable()でチェックすると名前無し以外はチェック出来ると思うんです。
でも名前無しの場合は[[]]になっちゃって、&is_editable()もすり抜けちゃうんですよね〜。
正しいページ名だったら、&armor_name()して&unarmor_name()したら元の名前に戻るはずだと思うんで、上のチェックにしたんですが、実は

if ($page ne $form{mypage}) {

の部分は

if (length($form{mypage}) == 0) {

でも十分だと思います。 - yakty 2003-06-30 (Mon) 13:32:07

&armor_name()して&unarmor_name()して、出来たページ名を&is_editable()でチェックする

&armor_name()して&unarmor_name()したら元の名前に戻る

頭がうにゃうにゃになってしまいました(;_;)。- rica 2003-06-30 (Mon) 15:47:11
今は if (length($form{mypage}) == 0) こっちバージョン。- rica 2003-06-30 (Mon) 17:47:47

WalWiki/YukiWikiとの機能差分 に報告しておきました。- rica 2003-07-01 (Tue) 07:22:10

行頭 > で引用にならない

管理

…あれ? 行頭 > で引用にならない…(;_;)。

念のために確認。

        } elsif (/^(>{1,3})(.*)/) {
            &back_push('blockquote', length($1), \@saved, \@result);
            push(@result, &inline($2));

この行はちゃんとあります。こちらもあさって以降究明します。

(SHIMADA) 2003-06-30 (Mon) 12:37:41: 済みません。これも、[early sanitize] の副作用でした。 ↑の部分を通る前に '>' が '&gt;' に変換(サニタイズ)されているためです。

-       } elsif (/^(>{1,3})(.*)/) {
+       } elsif (/^((?:&gt;){1,3})(.*)/) {       # SHIMADA mod [early sanitize]

でどうでしょうか?

(rica) 2003-06-30 (Mon) 13:05:19 直りました(^-^)。
# …これで、全然関係ない前に考えていた別の疑問が解けたかも…。

…あ、違う

<blockquote>
<blockquote>
<blockquote>
<blockquote>
 &lt;p&gt; てすとてすと &lt;/p&gt; &lt;p&gt; あいうえおっさん 
</blockquote>
</blockquote>
</blockquote>
</blockquote>

こんな事に…。2003-06-30 (Mon) 13:18:57 rica

& g t ; の4文字分で四重<blockquote>ってことなのかなぁ。でも直し方が解らない。

またまた済みません。

-          &back_push('blockquote', length($1), \@saved, \@result);
+          &back_push('blockquote', length($1)/4, \@saved, \@result);

でどうでしょう。--SHIMADA 2003-06-30 (Mon) 17:09:46

ああ、そうかぁ。ちょっと時間ができたので、直せないかと考えてたんですが(笑)。
ちょっと質問してもいいですか? ?:&gt; ってどういう意味なんでしょう? どうして &gt; ではダメなんですか? - rica 2003-06-30 (Mon) 17:31:03

正規表現の中で普通の括弧 ( ) はその中身が $1, $2, ... という変数に代入されてしまいますが、(?: ) だとそれがないので、単にグループ化の機能だけになります。今回は ( ) を使うと元のコードの$1とか$2がずれてしまうので (?: ) を使いました。 --SHIMADA 2003-06-30 (Mon) 17:59:04

(?: ) これでひとかたまりなんですね? 実は「括弧が増えたらずれないのかなぁ」とは思ってたんです。説明ありがとうございました! - rica 2003-06-30 (Mon) 18:24:43

見つけた…。http://www.kt.rim.or.jp/~kbk/regex/regex.html#GROUPING_NOBR 本になかったので、検索してたんですが、記号って検索できないのでさっきは巧く見つけられずにいました。下手にキーワード考えないでGoogle:正規表現で一番上に出てきたんですね…。
あら、化ける。これでは? google:正規表現 化ける…。泣きたくなってきた…。

CGI&PerlポケットリファレンスのP.137あたりにも載ってますよ♪ - yakty

がーん。怠けたのがバレた…。ポケットリファレンスは別の部屋にあったので、取りに行くのをサボって、手近にあったのを見てました。ゴメンナサイm(_"_)m。- rica 2003-06-30 (Mon) 20:04:12