The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<?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-&gt;setContentFilter('Tripletail::Filter::MobileHTML');
  
  $TL-&gt;print($TL-&gt;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">&lt;form action=&quot;&quot;&gt; が空欄の場合、自分自身の 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> &lt;a href=&quot;tl.cgi?INT=1&quot;&gt;セッション情報が付与されるリンク&lt;/a&gt;
 &lt;a href=&quot;tl.cgi&quot;&gt;セッション情報が付与されないリンク&lt;/a&gt;</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> &lt;a href=&quot;&lt;&amp;LINKINT&gt;&quot;&gt;セッション情報が付与されるリンク&lt;/a&gt;
 &lt;a href=&quot;&lt;&amp;LINKEXT&gt;&quot;&gt;セッション情報が付与されないリンク&lt;/a&gt;
 
 $template-&gt;expand({
   LINKINT =&gt; $TL-&gt;newForm({ KEY =&gt; 'data' })-&gt;toLink,
   LINKEXT =&gt; $TL-&gt;newForm({ KEY =&gt; 'data' })-&gt;toExtLink,
 });</code></pre>

</li>
<li>
<p>
<span class="pod_lang">フォームの場合は、基本的にセッション情報を付与する。

</span>
</p>

<p>
<span class="pod_lang">セッション情報を付与したくない場合は、<a href="../.././Tripletail/Template.html#extForm">&quot;extForm&quot; in Tripletail::Template</a> を使用するか、
フォームタグを以下のように記述する。

</span>
</p>

<pre class="pod_verbatim"><code> &lt;form action=&quot;&quot; EXT=&quot;1&quot;&gt;</code></pre>

<p>
<span class="pod_lang"><a href="../.././Tripletail/Template.html#extForm">&quot;extForm&quot; in Tripletail::Template</a> を使用すると、<code class="pod_iseq_C">EXT=&quot;1&quot;</code> が付与される。

</span>
</p>

<p>
<span class="pod_lang"><code class="pod_iseq_C">EXT=&quot;1&quot;</code> が付与されているフォームに関しては、セッション情報の付与を行わない。
また、<code class="pod_iseq_C">EXT=&quot;1&quot;</code> は出力時には削除される。

</span>
</p>

</li>
</ul>

<p>
<span class="pod_lang">セッション情報は、 http 領域用のセッション情報は <code class="pod_iseq_C">&quot;SID + セッショングループ名&quot;</code>、
https 領域用のセッション情報は <code class="pod_iseq_C">&quot;SIDS + セッショングループ名&quot;</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-&gt;setContentFilter('Tripletail::Filter::MobileHTML', type =&gt; '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-&gt;setContentFilter(
    &quot;Tripletail::Filter::MobileHTML&quot;,
    contenttype =&gt; 'text/x-hdml; charset=Shift_JIS',
    charset     =&gt; '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-&gt;getContentFilter-&gt;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-&gt;getContentFilter-&gt;setHeader($key =&gt; $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-&gt;getContentFilter-&gt;addHeader($key =&gt; $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>