NAME
Tripletail::Filter::MobileHTML - 携帯電話向けHTML出力用フィルタ
SYNOPSIS
$TL->setContentFilter('Tripletail::Filter::MobileHTML', charset => 'Shift_JIS');
$TL->print($TL->readTextFile('foo.html'));
DESCRIPTION
HTMLに対して以下の処理を行う。
漢字コード変換(デフォルトShift_JIS、常にUnicode::Japaneseを使う)
HTTPヘッダの管理
<form action=""> が空欄の場合、自分自身のCGI名を埋める
特定フォームデータを指定された種別のリンクに付与する
Tripletail::Filter::HTML との違いは以下の通り。
文字コード変換にEncodeを使わず、常にUnicode::Japaneseを使用。
セッション用のデータを全てのリンクに追記し、クッキーでの出力はしない。
セッション
携帯端末ではクッキーが利用できない場合があるため、セッション情報を クッキーではなくフォームデータとして引き渡す必要がある。
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, });
フォームの場合は、基本的にセッション情報を付与する。
セッション情報を付与したくない場合は、フォームタグを以下のように記述する。
<form action="" EXT="1">
EXT="1"
が付与されているフォームに関しては、セッション情報の付与を行わない。 また、EXT="1"
は出力時には削除される。
セッション情報は、http領域用のセッション情報は "SID + セッショングループ名"
、 https領域用のセッション情報は "SIDS + セッショングループ名"
という名称で保存する。
フィルタパラメータ
- charset
-
$TL->setContentFilter('Tripletail::Filter::MobileHTML', charset => 'Shift_JIS');
出力文字コードを指定する。省略可能。
使用可能なコードは次の通り。 UTF-8,Shift_JIS,EUC-JP,ISO-2022-JP
デフォルトはShift_JIS。
- contenttype
-
$TL->setContentFilter('Tripletail::Filter::MobileHTML', contenttype => 'text/html; charset=sjis');
Content-Typeを指定する。省略可能。
デフォルトはtext/html; charset=(charasetで指定された文字コード)。
- type
-
$TL->setContentFilter('Tripletail::Filter::MobileHTML', type => 'xhtml');
'html' もしくは 'xhtml' を利用可能。省略可能。
フィルタがHTMLを書換える際の動作を調整する為のオプション。 XHTMLを出力する際に、このパラメータをhtmlのままにした場合、 不正なXHTMLが出力される事がある。
デフォルトは 'html'。
METHODS
- getSaveForm
-
my $SAVE = $TL->getContentFilter->getSaveForm;
出力フィルタが所持している保存すべきデータが入った、 Form オブジェクトを返す。
- setDecideLink
-
$TL->getContentFilter->setDecideLink(\&func);
リンク種別を決定する関数を設定する。 値を渡さないとデフォルトの判別処理に戻す。
関数の戻り値が1であれば、同じTLライブラリで作成された環境へのリンクとして、リンクの書き換えを行う。 関数の戻り値が0であれば、リンクの書き換えは行わない。
デフォルトの判別処理は以下の関数で行っている。
sub defaultDecideLink { my (%param) = @_; if($param{'link'} =~ m/^https?/) { return 0; } elsif($param{'link'} =~ m/^javascript/i) { return 0; } elsif($param{'link'} =~ m/^(?:mailto|ftp):/) { return 0; } elsif(not length $param{'link'}) { return 0; } else { return 1; } }
- setHeader
-
$TL->getContentFilter->setHeader($key => $value)
他の出力の前に実行する必要がある。
同じヘッダを既に出力しようとしていれば、そのヘッダの代わりに指定したヘッダを出力する。(上書きされる)
- addHeader
-
$TL->getContentFilter->addHeader($key => $value)
他の出力の前に実行する必要がある。
同じヘッダを既に出力しようとしていれば、そのヘッダに加えて指定したヘッダを出力する。(追加される)
SEE ALSO
AUTHOR INFORMATION
Copyright 2006 YMIRLINK Inc. All Rights Reserved.
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/