# cubeUtils モジュール

### 1.これは何?

CubeUtilsモジュールは、XOOPS Cube2.1に対する、ある程度実用的なユーティリティー群です。

XOOPS 2.0.x JP用のSysUtilモジュールにて用意していたGIJOE氏開発の以下のHACKと同等機能を、
XOOPS Cube2.1のPreload機能及びDelegate機構を使用して実装したモジュールです。

- AutoLogin
- EMLH(Easiest Multi Language Hack)
- iGoogle Gadget Block (試験実装)

### 2.どうやって使うの?

このモジュールが動く環境は、XOOPS Cube2.1以降が前提となります。

- AutoLoginを有効にする場合
  管理画面でcubeUtilsモジュールの一般設定にて、
  - 「Auto Login 機能を使用する」を「はい」に設定
  - 「Auto Login の持続時間」にて、どの程度の期間AutoLogin状態を保持するかを設定して下さい。
- Multi Languageを使用される場合
  標準では、日本語と英語の切替ができるような設定になっていますが、 これ以外の言語切替を行いたい場合には、/modules/cubeUtils/include/conf_ml.dist.php を conf_ml.phpにコピーを行って、カストマイズを行って下さい。
  但し、Hodajuku Distribution同梱のものでは、preloadが無効になっています。必要な場合には、
  /preload/disabled ディレクトリー内のMultiLanguagePreLoad.class.phpを/preloadに移動して下さい。

> [ja]日本語[/ja][en]English[/en]

の様に記述することによって、日英両対応のコンテンツが作成出来ます。

> [ja]mlimg[/ja]

を文書に挿入すると、言語切り替え用国旗イメージを表示する事ができます。

- iGoogleを使用される場合(試験実装)
  この機能は、Xoops Cube Legacyのブロックを、iGoogleのガジェットとして公開可能にする機能です。対象となるブロックは、ゲストユーザが参照可能なブロックに限定しています。
  公開の手順としては、
  1. 互換モジュールの「ブロックのインストール」にて「iGoogle Gadgetブロック」を追加し、このオプションで、実際にGadgetとして公開したいブロックを指定します。
  2. この設定を行うと、もとのブロックを参照した新ブロックが作成され、ブロックが２重に表示されますので、元のブロックのほうを削除します。(ALTSYSのブロック管理で非表示に設定するほうが簡単です）
  3. 新しいブロックには左下に「+Google」アイコンが表示されますので、これをクリックすることによってこのブロックをiGoogle上に表示することが可能となります。

### 3.どのように作られているの

#### 1) AutoLogin

AutoLogin機能は、基本的には、Legacy_Controller.SetupUserのDelegate関数を実装する事によって実現されています。
実際には、ログインブロックでの入力内容をクッキーに記憶したり、破棄したりするためにそのほかにも幾つかのDelegate関数が実装されています。

Legacy_Controller.SetupUser
  セッションが継続していなくても、クッキーにログイン情報が格納してれば、自動ログインを試みる
Site.CheckLogin.Success
  ログイン画面にてログインが成功したときにログイン情報をもとにしてクッキーを生成する
Site.Logout
  ログアウト時に、保存したクッキーを破棄する
Legacypage.User.Access
  RemenberMe付きのログイン画面を表示させる

これらのDelegate関数の定義と実装については、モジュールPreload機能によって自動的に読み込まれるようになっています。
(/modules/cubeUtils/preload/AutoLoginHack.class.php)

#### 2)EMLH(Easiest Multi Language Hack)

Legacy_Controller.GetLanguageName Delegate関数の実装を行い、この関数内でGETパラメータ、クッキー、ブラウザの
プリファレンスを元にして、表示言語を決定します。
このDelegate関数の定義については、preFilter()の段階で行う必要があるため、モジュール内Preloadでは無く、
/preloadにMultiLanguagePreLoad.class.php を配置しています。
言語タグの扱いについては、EMLHと同様 ob_filteringにて実現しています。
別途CacheSystemでのID生成にもフックを加えて、言語毎のCacheを保存する事を可能にしています。

### 4.変更履歴

- 2006-08-21 : Version 0.1リリース
- 2006-09-02 : GIJOE氏からの不具合報告に対応した Version 0.2リリース
- 2006-09-04 : plusangel氏からの不具合報告に対応した Version 0.3リリース
- 2006-09-25 : XOOPS Cube 2.1 Alpha5以降で変更になったCacheシステムに対応したVersion 0.4リリース
- 2006-10-22 : XOOPS Cube 2.1 Beta1に対応したVersion 0.5リリース
- 2008-02-27 : Hodajuku Distribution同梱に対応して、XOOPS Cube 2.1 Beta時代の古いロジックを削除して、Version 0.6リリース
- 2008-03-16 : iGoogle Gadgetブロック機能を追加、ログオン画面の表示方法を変更し、Version 0.7リリース