Télécharger la liste

Description du projet

Geeklogの機能拡張を行います。
GLの携帯対応の開発スピードアップやソースの保全のために開発場所をSourceForgeに移します。
携帯対応だけに閉じたプロジェクトにしたくないのでちょっと大げさなプロジェクト名にしてます。

Système requise

System requirement is not defined
gl-mobile
0.3

Livrée : 2008-05-19 01:12
gl-mobile 0.3 (1 files Cacher)

Notes de release

Geeklog携帯対応 v.0.3

20080519 リリースパッケージを更新しました。以前のものにはCSVディレクトリが含まれてしまっていましたが、これを削除しました。事実上問題はありませんが、旧版をインストールしてしまった方で気になる方は申し訳ありませんが手動でCVSディレクトリを削除してください。

#この内容は以下のURLで参照できます。
<http://im-ltd.ath.cx/dokuwiki/doku.php?id=geekcell>
<http://sourceforge.jp/projects/gl-enhance/wiki/Geeklog%E6%90%BA%E5%B8%AF%E3%83%8F%E3%83%83%E3%82%AF>

===== Geeklogの携帯対応パッケージ Version 0.3 =====

Geeklogのケータイ対応パッケージ新バージョンをリリースします。

大変長らくお待たせしました。相変わらず強引でAd Hocなハックですが、それなりに向上しましたのでぜひ使ってみてください。

とくにこのハックは以下の環境でしか動作確認していません。他の環境での動作についてご報告いただければありがたいです。
* OS: FreeBSD 7.0
* Webサーバ: Apache 2.2.6
* DBサーバ: MySQL 5.1.22
* PHP: 5.2.5


==== Errata ====

以下はFixされていない既知のバグです。
* コメントに対するコメントを書き込もうとすると、タイトルが文字化けします。タイトルを適宜入力しなおせば、正しく書き込めます。
* DoCoMoの端末からアクセスして、ホームページをブックマークすると、セッションIDが付加されたURLが登録されます。そのURLでアクセスしても新しいセッションが開始されるため、実害はありません。


==== Version 0.3の新機能 ====
* 画像を縮小して表示できます。$CUSTOM_MOBILE_CONF['image_size']で縦または横の最大値を指定します。デフォルトは150pxです。
* ブロックの内容にアクセスできます。header.thtmlまたはfooter.thtmlに'<a href="mobileblocks.php">ブロック</a>'といったリンクを記述してください。左右のブロックへのリンクが表示され、クリックするとそれぞれのブロックの内容が表示されます。
* Windows Mobileの端末をPCとして扱うためのフラグを設けました。$CUSTOM_MOBILE_CONF['force_wm_as_pc']をtrueにするとWindows Mobile端末からIE MobileまたはNetFrontでアクセスした場合、ケータイ用の変換を行いません。
* PCでmobileテーマまたはmobile_3gテーマを選択してしまったときに、マイアカウントへのリンクを表示してすぐテーマを変更できるようにしました。

==== Version 0.3の改善点 ====
* 細かなバグの改修を行っています。
* Softbank用にpid、sid、uidをURLエンコードするのをURLの中だけに限定した(Thanks to [[http://www.geeklog.jp/forum/viewtopic.php?showtopic=9027|むっちゃんさん]])。
* URLからのパラメータのUTF変換を、値のみしかしていなかったが名前も変換するようにした(Thanks to [[http://hiroron.com/|ひろろんさん]])。
* CUSTOM_refresh()でmb_detect_encoding()が誤動作して「次へ」が文字化けすることがあるのを修正。
* HTTP_GET_VARSを使っていたところを_GETに変更
* mobile_blocks.phpでCOM_applyFilter()を使うように修正
* その他正規表現の修正

==== Version 0.2の新機能 ====
*ケータイ用、PC用のコンテンツを記述可能。以下のように特別なHTMLコメントを使ってケータイ専用/PC専用のコンテンツを記述することができます。
<code php>
<!--mobile_only
<p>ケータイからのアクセスですね。</p>
/mobile_only-->
<!--not_for_mobile-->
<p>PCからのアクセスですね。</p>
<!--/not_for_mobile-->
</code>

*新しいケータイ向けのコンテンツを記述可能。この機能は安全のためデフォルトでは無効になっています。
*3Gケータイなら3G用のテーマを使用します。3G用のテーマはmobile_3gです。ただし、この配布物に含まれる3G用のテーマはmobileと同じものです。適宜修正してお使いください。
*3Gケータイでは、以下のタグを削除しません。
*SCRIPT, EMBED, DIV, STYLE, CLASS
*テーブルが使えるケータイではテーブルをそのまま表示します。

====Version 0.2の改善点====

*セッションの継続性の向上。ログインしたときのセッションの継続性が格段に向上しました。特に以前はほとんど実用にならなかったDoCoMo端末でのセッション管理が実現できました。
*セキュリティの向上。セッションハイジャック、セッション固定攻撃に対する対策を行いました。もちろん完全とはいえませんが、以前のバージョンよりセキュリティは向上しています。
*テーマのリファイン。ケータイ用のテーマを、ProfessionalCSSをベースにリファインしました。
*ケータイでの可読性を考慮し、メニューをページの最後に移動しました。
*これによる操作性の低下を補うため、アクセスキーを設定しました。以下のメニューの先頭の数字キーを押すことで、それぞれのページにジャンプします。
*1.ホーム
*2.ログアウト
*3.記事投稿
*4.掲示板
*5.記事一覧
*6.検索

*設定用の変数の定義。動作を変更するための設定用の変数を定義しました。PHPに詳しくない方でも、ある程度動作の制御ができるようになったと思います。設定用の変数については後述します。

*APIの定義。APIというほどのことはありませんが、有用な関数、定数、変数を外部から使うために仕様を定義しました。APIについては後述します。

*コードの見直し。
*命名規則を見直しました。
*公開される関数、変数は"CUSTOM_MOBILE_"で始まる
*公開される定数はMOBILE_で始まる
*公開されない関数、変数は_mobileで始まる
*メインテナンス性の向上。ケータイ用に変換する変換テーブルを別に切り出し、メインテナンス性を向上させました。

==== これは何? ====
Geeklogの携帯対応パッケージです。Geeklogサイトが携帯からアクセスできるようになります。

Geeklog Japaneseで配布されている最新安定標準パッケージ、[[http://www.geeklog.jp/filemgmt/viewcat.php?cid=7|Geeklog日本語版 1.4.1(20080129)]]に対する差分です。


==== できること ====

* 携帯からアクセスすると、自動的に携帯用のページを生成します。
* 標準インストールでは文字エンコードがUTF-8ですが、携帯で読めるShift JISに変換されます。
* 携帯では対応していないtableタグなどを出力しません。
* 画像は携帯で読み込めるよう縮小されます。
* 携帯からログインできます。
* DocomoなどCookieに対応していない端末のためにCookieなしでセッション管理を行います。
* 携帯から記事の投稿、閲覧ができます。
* 携帯から掲示板(Forum)の投稿、閲覧ができます。
* 左右のブロックは表示されませんが、mobileblocks.phpを介してブロックの機能にアクセスできます。

これらの機能はクライアントのUser Agentによって携帯電話だと判定した場合にだけ有効になります。通常のブラウザからアクセスした場合は今までどおりのページが表示されます。

==== できないこと ====

* Dokuwikiプラグインが表示されません。
* その他多くのプラグインでテストされていません。


==== インストール方法 ====
- このページからgl-mobile-20080512.tgzをダウンロードします。
- 念のためバックアップを取ってください。
- ファイルのコピー
- tarファイルを展開するとprivateとpublicというディレクトリが現れます。
- private配下のファイルをconfig.phpがあるディレクトリにコピーします。
- public配下のファイルをlib-common.phpがあるディレクトリにコピーします。

なお、public/layout/{mobile|mobile_3g}は現在の標準パッケージとは異なります。お好みでインストールしてください。
データベースの修正はありませんので、Geeklogのインストール手順(/admin/install/install.php)を行う必要はありません。


==== 設定と動作の詳細 ====

private/system/custom/custom_cellular.phpの冒頭にある以下の変数を変更することで、ケータイハックの動作を変更することができます。

|$CUSTOM_MOBILE_CONF['debug']|真のときprivate/logs/errors.logにデバッグ文を出力します。|
|$CUSTOM_MOBILE_CONF['use_mobile_content']|真のときモバイル用、PC用のコンテンツ変換を行います。デフォルトは真です。|
|$CUSTOM_MOBILE_CONF['force_2g_content']|真のとき強制的に2G用コンテンツに変換します。script、embed、スタイルシート関連のタグが削除され、テーブルも出力されません。偽であれば、3Gケータイに限ってscript、embed、スタイルシート関連のタグを出力します。デフォルトは真です。|
|$CUSTOM_MOBILE_CONF['force_wm_as_pc']|真のときWindows Mobile端末からのアクセスの場合、携帯用の変換を行いません。デフォルトは偽です。|
|$CUSTOM_MOBILE_CONF['force_cut_table']|真のとき強制的にテーブルタグを削除します。偽であれば、テーブルに対応したケータイに限ってテーブル関連のタグをそのまま出力します。デフォルトは真です。|
|$CUSTOM_MOBILE_CONF['cut_comment']|真のときHTMLコメントを削除します。偽にするとコメントはそのまま出力されます。テーマのデバッグ時には偽にすると便利です。デフォルトは真です。|
|$CUSTOM_MOBILE_CONF['convert_to_sjis']|真のとき、入出力をSJISに変換します。HTMLで記述する場合、各キャリアはShift JIS以外のエンコードを認めていませんので、基本的に真にしておいてください。デフォルトは真です。|
|$CUSTOM_MOBILE_CONF['host_charset']|サーバのエンコードを指定します。ご自身のサーバの設定に合わせてUTF-8かEUC_JPを指定します。デフォルトはUTF-8です。|




==== API ====

* 定数
* MOBILE_UA_NOT_CELLULAR
* MOBILE_UA_OTHER
* MOBILE_UA_DOCOMO
* MOBILE_UA_AU
* MOBILE_UA_SOFTBANK
* MOBILE_UA_WILCOM
* MOBILE_UA_WM: 未使用
* MOBILE_UA_OTHER_3G
* MOBILE_UA_DOCOMO_3G
* MOBILE_UA_AU_3G
* MOBILE_UA_SOFTBANK_3G
* MOBILE_UA_WILCOM_3G: 未使用
* MOBILE_UA_WM_3G

* 変数

|$CUSTOM_MOBILE_UA|上記の定数のいずれかが設定されています。|

* 関数

|function CUSTOM_MOBILE_is_cellular()|ケータイかどうかを判定します。ケータイであれば真を返します。|
|function CUSTOM_MOBILE_is_3g()|3Gケータイかどうかを判定します。3Gケータイであれば真を返します。|
|function CUSTOM_MOBILE_is_table_enabled()|テーブルが使えるケータイかどうか判定します。テーブルが使えれば真を返します。|
|function CUSTOM_MOBILE_debug($msg)|$CUSTOM_MOBILE_CONF['debug']が真ならerrors.logに$msgを書き込みます。この変数が偽であれば何もしません。|


==== 3Gの判定 ====

このハックでは以下のものを3Gケータイと判定しています。
* DoCoMo: FOMAでXHTML対応
* AU: WAP2.0対応
* SoftBank: SoftBank 3Gシリーズ
* Windows Mobile, PDAのNetFront
* その他: Yahooのボットなど

この判定を変更したい場合は_mobile_parse_ua()を適宜修正してください。

==== テーブルが使えるケータイの判定 ====

このハックでは以下のものをテーブルが使えるケータイと判定しています。

* AU、またはSoftBankで3Gのもの
* その他: Windows Mobile, その他のPDAのNetFront

この判定を変更したい場合は_mobile_parse_ua()、CUSTOM_MOBILE_is_table_enabled()を適宜修正してください。

DoCoMoの端末はXHTMLであればテーブルが使えますがHTMLの場合は、iモードHTMLのバージョン6以上でないと使えません。iモードHTMLのバージョンを簡単に判定する方法がないため、デフォルトではDoCoMo端末はテーブルが使えないものと判定します。

3G端末のコンテンツをXHTMLで記述する場合など、DoCoMoの3Gケータイをテーブルが有効な端末と判定したい場合は、CUSTOM_MOBILE_is_table_enabled()でコメントアウトされている以下の行をアンコメントしてください。
<code php>
return (
$CUSTOM_MOBILE_UA == MOBILE_UA_OTHER_3G ||
//$CUSTOM_MOBILE_UA == MOBILE_UA_DOCOMO_3G ||
$CUSTOM_MOBILE_UA == MOBILE_UA_AU_3G ||
$CUSTOM_MOBILE_UA == MOBILE_UA_SOFTBANK_3G
);
</code>

==== 注意事項 ====

* 通常のブラウザから携帯用のテーマであるmobileを選択してしまうと、ブロックが表示されないため、ほかのテーマに変更することができなくなります。この場合はttp://サイト名/usersettings.php?mode=editをブラウザのアドレスバーに入力してテーマを変更してください。

* Cookieが使えないDoCoMoの端末ではURLにセッションIDが埋め込まれます。これはCookieを使ったセッション管理よりセキュリティが低くなります。それなりの対策は行っていますが、この点には十分ご注意ください。

* php.iniで、以下が設定されているとSJISへの変換を2重にしてしまうため文字化けが起こる場合があります。
* output_handler = mb_output_handler
* mbstring.encoding_translation = on

php.iniか.htaccessでこれらを無効にしてください。



==== ファイル一覧 ====
<code>
package
|-- private
| `-- system
| `-- custom
| `-- custom_cellular.php
`-- public
|-- imageresizer.php
|-- layout
| |-- mobile
| `-- mobile_3g
`-- mobileblocks.php

</code>

public/layout以下のテーマの詳細は省略します。


==== ダウンロード ====
{{gl-mobile-20080512.tgz|}} ケータイハックv0.3

Changelog

SourceForgeでの最初のリリースです。
・custom_celular.php
細かな記述の変更
・mobile{_3g}/header.thtml
PCでmobileテーマを選択したときにマイアカウントへのリンクを表示