Tripletail::Filter::MobileHTML - 携帯電話向けHTML出力用フィルタ

# NAME

Tripletail::Filter::MobileHTML - 携帯電話向けHTML出力用フィルタ

# SYNOPSIS

      $TL->setContentFilter('Tripletail::Filter::MobileHTML');

      $TL->print($TL->readTextFile('foo.html'));

# DESCRIPTION

HTMLに対して以下の処理を行う。

- 絵文字対応の漢字コード変換

- HTTPヘッダの管理

- <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,
       });

- フォームの場合は、基本的にセッション情報を付与する。

  セッション情報を付与したくない場合は、フォームタグを以下のように記述する。

       <form action="" 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 の絵文字変換マップに 従って変換され、出力されます。

この変換マップは、携帯キャリアが公式に提供している絵文字変換マップとは 異なる部分があります。

## フィルタパラメータ

contenttype

        $TL->setContentFilter('Tripletail::Filter::MobileHTML', contenttype => 'text/html; charset=Shift_JIS');

  Content-Typeを指定する。省略可能。

  デフォルトはtext/html; charset=Shift_JIS。

type

        $TL->setContentFilter('Tripletail::Filter::MobileHTML', type => 'xhtml');

  'html' もしくは 'xhtml' を利用可能。省略可能。

  フィルタがHTMLを書換える際の動作を調整する為のオプション。 XHTMLを出力する際に、このパラメータをhtmlのままにした場合、 不正なXHTMLが出力される事がある。

  デフォルトは 'html'。

## METHODS

getSaveForm

        my $SAVE = $TL->getContentFilter->getSaveForm;

  出力フィルタが所持している保存すべきデータが入った、 Form オブジェクトを返す。

setHeader

        $TL->getContentFilter->setHeader($key => $value)

  他の出力の前に実行する必要がある。

  同じヘッダを既に出力しようとしていれば、そのヘッダの代わりに指定したヘッダを出力する。（上書きされる）

addHeader

        $TL->getContentFilter->addHeader($key => $value)

  他の出力の前に実行する必要がある。

  同じヘッダを既に出力しようとしていれば、そのヘッダに加えて指定したヘッダを出力する。（追加される）

print

  Tripletail::Filter参照

# SEE ALSO

Tripletail
Tripletail::Filter
Tripletail::Filter::HTML
Tripletail::Form

# 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/

Tripletail::Filter::MobileHTML - 携帯電話向けHTML出力用フィルタ

# INDEX

- AUTHOR INFORMATION
- DESCRIPTION
- METHODS
- NAME
- SEE ALSO
- SYNOPSIS
- Tripletail
- Tripletail::Filter
- Tripletail::Filter::HTML
- Tripletail::Form
- addHeader
- contenttype
- getSaveForm
- print
- setHeader
- type
- セッション
- フィルタパラメータ
- 絵文字変換

Tripletail::Filter::MobileHTML - 携帯電話向けHTML出力用フィルタ