NAME
Tripletail::Filter::MobileHTML - 携帯電話向け HTML 出力用フィルタ
SYNOPSIS
$TL->setContentFilter('Tripletail::Filter::MobileHTML');
$TL->print($TL->readTextFile('foo.html'));
DESCRIPTION
HTML に対して以下の処理を行う。
絵文字対応の漢字コード変換
HTTPヘッダの管理。TLのIni設定のoutputbufferingを強制的に1にセットし、Content-Lengthヘッダを出力させる。(携帯では必須)
<form action=""> が空欄の場合、自分自身の CGI 名を埋める
特定フォームデータを指定された種別のリンクに付与する
Tripletail::Filter::HTML との違いは以下の通り。
セッション用のデータを全てのリンクに追記し、クッキーでの出力はしない。
セッション
携帯端末ではクッキーが利用できない場合があるため、セッション情報を クッキーではなくフォームデータとして引き渡す必要がある。
TripletaiL では、Tripletail::Filter::MobileHTML フィルタを使うことで この作業を半自動化することができる。
Tripletail::Filter::MobileHTML フィルタは、出力時にリンクやフォームを チェックし、セッション情報を付与すべきリンク・フォームであれば、 自動的にパラメータを追加する。
セッション情報を付与すべきかどうかは、以下のように判断する。
リンクの場合は、リンクの中に
INT
というキーが存在すれば、セッション情報を 付与し、INT
キーを削除する。INT
キーがなければ、セッション情報は付与されない。<a href="tl.cgi?INT=1">セッション情報が付与されるリンク</a> <a href="tl.cgi">セッション情報が付与されないリンク</a>
INT
キーは、Form クラスの toLink メソッドを利用すると自動的に付与される。 toExtLink メソッドを利用すると、INT
キーは付与されない。<a href="<&LINKINT>">セッション情報が付与されるリンク</a> <a href="<&LINKEXT>">セッション情報が付与されないリンク</a> $template->expand({ LINKINT => $TL->newForm({ KEY => 'data' })->toLink, LINKEXT => $TL->newForm({ KEY => 'data' })->toExtLink, });
フォームの場合は、基本的にセッション情報を付与する。
セッション情報を付与したくない場合は、"extForm" in Tripletail::Template を使用するか、 フォームタグを以下のように記述する。
<form action="" EXT="1">
"extForm" in Tripletail::Template を使用すると、
EXT="1"
が付与される。EXT="1"
が付与されているフォームに関しては、セッション情報の付与を行わない。 また、EXT="1"
は出力時には削除される。
セッション情報は、 http 領域用のセッション情報は "SID + セッショングループ名"
、 https 領域用のセッション情報は "SIDS + セッショングループ名"
という名称で保存する。
絵文字変換
USER_AGENT 文字列を元に、 DoCoMo 、 Softbank ( Vodafone 、 J-PHONE )、 AU 、 ASTEL を自動判別し、 それぞれの端末用に出力します。 文字コードは Softbank 3G 以外は Shift_JIS + 各キャリアの絵文字コード、 Softbank 3G の場合は UTF-8 + Softbank 絵文字コードとなります。
それ以外の端末( Willcom や PC )の場合は、Shift_JIS コードで出力します。
携帯から送信されたフォームデータは、 DoCoMo 、 Softbank 2G 以前( J-PHONE )、 AU 、 ASTEL の場合は Shift_JIS + 各キャリアの絵文字コード、 Softbank 3G の場合は UTF-8 + Softbank 絵文字コードとして 解析します。
それ以外の端末( Willcom や PC )の場合は、Tripletail::InputFilter::HTML と同様に CCC
による文字コード判別を行います。
絵文字は、入力時に UTF-8 のプライベート領域にマップされ、出力時に絵文字に戻されます。
入力時と出力時で携帯キャリアが異なる場合は、Unicode::Japanese の絵文字変換マップに 従って変換され、出力されます。
この変換マップは、携帯キャリアが公式に提供している絵文字変換マップとは 異なる部分があります。
フィルタパラメータ
- type
-
$TL->setContentFilter('Tripletail::Filter::MobileHTML', type => 'xhtml');
'
html
' もしくは 'xhtml
' を利用可能。省略可能。フィルタが HTML を書換える際の動作を調整する為のオプション。 XHTML を出力する際に、このパラメータを
html
のままにした場合、 不正な XHTML が出力される事がある。xhtml
を指定した場合、コンテントタイプは application/xhtml+xml となる.デフォルトは '
html
'。 - contenttype
-
$TL->setContentFilter( "Tripletail::Filter::MobileHTML", contenttype => 'text/x-hdml; charset=Shift_JIS', charset => 'Shift_JIS', );
HDML 使用時に指定. それ以外の値の場合はフィルタが自動判定した値で上書きされる.
METHODS
- getSaveForm
-
my $SAVE = $TL->getContentFilter->getSaveForm;
出力フィルタが所持している保存すべきデータが入った、 Form オブジェクトを返す。
- setHeader
-
$TL->getContentFilter->setHeader($key => $value)
他の出力の前に実行する必要がある。
同じヘッダを既に出力しようとしていれば、そのヘッダの代わりに指定したヘッダを出力する。(上書きされる)
- addHeader
-
$TL->getContentFilter->addHeader($key => $value)
他の出力の前に実行する必要がある。
同じヘッダを既に出力しようとしていれば、そのヘッダに加えて指定したヘッダを出力する。(追加される)
- reset
SEE ALSO
AUTHOR INFORMATION
Copyright 2006 YMIRLINK Inc.
This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself
このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。
Address bug reports and comments to: tl@tripletail.jp
HP : http://tripletail.jp/