Jan 3, 2005

A little hack for MTCommentFields

年末に書いたエントリーですが、今更公開しておきます。

MTCommentFieldsはstaticオプションによって生成されるコメントフォームにstaticという名前のhiddenフィールドを生成します。

  • static=0の場合:
    <input type="hidden" name="static" value="0" />
    
  • static=1の場合、またはstaticオプションが未設定の場合:
    <input type="hidden" name="static" value="1" />
    

このstaticフィールドは、フォームのサブミット後、およびTypeKeyサイン・イン/サイン・アウト後、に誘導するページを「mt-comments.cgiが生成するコメント・リスト」にするか、「個別エントリーアーカイブ」にするかを選択する機能を持ちます。

問題になるのは、staticオプションとしてあらかじめ定められた静的な値(0/1)しか設定できないということです。ここで自然な拡張を試みます。

mt31-comment_fields.patch

このパッチは、MTCommentFieldsのstaticオプションの振る舞いを以下のように変更します。

  • static=0の場合:
    <input type="hidden" name="static" value="0" />
    
  • static=1の場合:
    <input type="hidden" name="static" value="1" />
    
  • staticオプションが未設定の場合:
    <input type="hidden" name="static" value="MTCommentPreviewIsStaticの値" />
    

つまり、MTCommentFieldsにstaticオプションを与えない場合、直前のフォームで入力されたstaticの値に従ったinputフィールドを生成します。これにより、コメントポストのエントリポイントとなるテンプレート(「mt-comments.cgiが生成するコメント・リスト」または「個別エントリーアーカイブ」)においてstaticかdynamicかを指定すれば、その後遷移するすべてのフォームにおいてその指定が有効になります。

このパッチは以下のエントリにあるようなコメンティングシステムを支援することができます。

小粋空間: ポップアップ画面を用いたコメント投稿(その3:公開テンプレート修正方法)

またそれだけではなく、誤ったstatic値をテンプレートに記述してしまうことで生じる混乱を避けることができます。例えば、個別エントリーアーカイブではstatic=1としてあるのに、コメントプレビューやコメントエラーのどちらか、あるいは両方にstatic=0と記述すると、コメント後に誘導されるページが状況によって異なるという混乱が生じます。が、こうしたテンプレート記述時の人為的なミスを幾分自動的に避けられます。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com