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