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 オブジェクトを返す。

$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)

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

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

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/