2005年01月26日

●ポップアップ画面を用いたコメント投稿(その5:その4の補足)

その4:コメントフォームのカスタマイズ」で、コメント・プレビュー/コメント・エラー時のサイン・インおよびサイン・アウトについては、

<$MTRemoteSignInLink static="<$MTCommentPreviewIsStatic$>"$>

という記述がサポートされていないため「画面を誘導できません」と書きましたが、Ogawaさんのパッチを流用させて頂くという案がありましたので追記致します。
    lib/MT/Context.pm
の1110~1140行目辺りにあるサイン・イン/サイン・アウト用リンクをハンドリングするプログラムに対して下記の通り、赤字を削除して青字を追加します。
sub _hdlr_remote_sign_in_link {
    my ($ctx, $args) = @_;
    my $cfg = MT::ConfigMgr->instance;
       :
    my $comment_script = $cfg->CommentScript;
    my $static_arg = $args->{static} ? "static=1" : "static=0";
    my $static_arg;
    if (defined($args->{static})) {
        $static_arg = $args->{static} ? "static=1" : "static=0";
    } else {
        $static_arg = $ctx->stash('comment_is_static') ? "static=1" : "static=0";
    }

    my $e = $_[0]->stash('entry');
       :
}

sub _hdlr_remote_sign_out_link {
    my ($ctx, $args) = @_;
    my $cfg = MT::ConfigMgr->instance;
       :
    my $static_arg = $args->{static} ? "static=1" : "static=0";
    my $static_arg;
    if (defined($args->{static})) {
        $static_arg = $args->{static} ? "static=1" : "static=0";
    } else {
        $static_arg = $ctx->stash('comment_is_static') ? "static=1" : "static=0";
    }

    my $e = $_[0]->stash('entry')
       :
}


これでコメント・プレビューおよびコメント・エラーテンプレートの MTRemoteSignInLink および MTRemoteSignOutLink を
<$MTRemoteSignInLink$>

<$MTRemoteSignOutLink$>

と static属性を省略して記述することで、コメント・リストまたは個別エントリーアーカイブの MTRemoteSignInLink または MTRemoteSignOutLink で設定された static値を引き継ぎます。具体的には、例えば <$MTRemoteSignOutLink$> がHTMLソースに展開されると
<a href="http://~/mt-comments.cgi?__mode=handle_sign_in&static=0&entry_id=3&logout=1">サイン・アウト</a>

のように static値(0はポップアップ画面への誘導を示します)が query string に設定されます。またこれ以降の画面遷移にも引き継がれます。
誤りがありましたらご指摘よろしくお願い致します。


その1:基本動作
その2:カスタマイズ
その3:公開テンプレート修正方法
その4:コメントフォームのカスタマイズ
その5:その4の補足

Posted by yujiro at 2005年01月26日 15:00
トラックバックURL

このエントリーのトラックバックURL:
http://yujiro.dyndns.org/blog/koikikukan/mt-tb.cgi/484

トラックバック実行後、タイムアウトした旨のメッセージが表示されることがありますが、トラックバック先の処理は(これまでの経験上)正常に終了しています。正常に送信されたかどうかはトラックバック先の個別アーカイブページ等をご確認ください(タイムアウトについてはこちらの記事を参照ください)。
また同一のトラックバックが重複してしまった場合、こちらで気がついた時に適宜削除しておりますので削除のご連絡は不要です。ただし期間が空いている場合(数日とか)は気がつかない場合がありますのでご連絡ください。

コメント
コメントはまだありません。
コメントする




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

お知らせ:2005.03.13 確認ボタンクリック後、コメント内容が次ページのフォームデータに反映されなくなっています。ご迷惑おかけして申し訳ございませんが、確認後は表示されたデータをフォームデータにペーストして投稿くださいますよう、お願い致します。
コメントありがとうございます。投稿が反映されるまでに時間がかかる場合がありますが「投稿」ボタンを続けてクリックされないようお願い致します。またコメント投稿処理が終了しない場合、トップページに反映されない場合がありますがコメントは正常に投稿されています(サーバ側の不具合のようです。こちらで操作してページに反映させています)。また1回のクリックでも重複してしまう場合がありますが適宜削除しておりますのでご連絡は不要です。