cubson
Cubson has gone to sourceforge.jp
私は、sourceforge.jp XOOPS-Shade プロジェクトページへ cubson の全資源を動かし始めました。しかし私は、sourceforge.jp においてプロジェクトページを作ってしまったことを後悔しています。

Sourceforge.net は、 sf.jp より良いリポジトリです。それは、私達にとって最良のソリューションです。なぜなら、 sf.net は、多くの優れたフィーチャーと UTF-8 を持っているからです。英語は、 sf.jp においても利用可能です。しかし、このリポジトリを世界の仲間に薦めたいと考える人はいないでしょう。

しかしながら、私は、名前に
XOOPS Cube を含んでいながら活発度 0% のプロジェクトページを持つことを望んでいません。従って、私は、 cubson が良い国際的ツールであろう状態になるまで、 sf.jp XOOPS-Shade プロジェクトを保持し続けるでしょう。それから、我々は、これらのページを sf.net に動かすでしょう。

もちろん、私は、英語で書かれたあなたのメッセージを歓迎します。そして、私は、英語でドキュメントの準備をするでしょう。
cubson に関する URLs は、下記です。

Project top page

リリースニュースは、このページにあります。Sf.net は、 RSS を公表し得ます。しかし、 sf.jp は、それをすることができません。うーん、これらのニュースは、現在日本語オンリーです。私は、十分なメンバーを集めるために日本人のための容易なニュースを必要とします……うーん

Forum

あなたは、 Google adsence の位置に驚くかもしれません。このサイトは、アフィリエイトサイトのように見えます。しかし、これは、私達のディスカッションフォーラムです。記述は、あなたのアカウントを必要とします。あなたが sf.jp にあなたのアカウントを持っていないならば、登録しましょう。

Bug Tracker

これは、 cubson のためのバグ追跡者システムです。あなたは、そこで報告するのにあなたのアカウントを必要とします。

Wiki

これは、英語では難しいもののうちの 1 つです。なぜなら、この Wiki は、日本語のためのものだからです。しかし、私は、お粗末な英語で多くのドキュメントを書いてきました。私は、 sf.net における将来のプロジェクトページに備えてそれらを準備します。この wiki は、フリーであり、そして、あなたは、あなたのアカウントを必要としません。
|
Cubson may need change?
XCube名前空間の仮想サービスクラスはビジネスロジックための具体的な定義です。XCube_Serviceのサブクラスは他のモジュール、他のサイト、および携帯電話のようなスマートクライアントに接続可能です。 開発者はモジュール間連携のためにXCube_Serviceを使用するでしょう。それにより、サイトオーナーはAPIを公開可能です。つまり、XCube_Serviceはモジュール間連携とサイト間連携を抽象化するレイヤーです。

ShadeはXCube名前空間としての例です。 それには、Legacyとの互換性がありません。 開発者がShadeのために彼のモジュールを移植したいなら、彼は上手にライブラリを作らなければなりません。 しかし、それには、cubsonは良くはありません。 それは問題です。 CubsonはXCube層の一般的なモジュールを可能な限り生成するべきです。 cubsonがそれをするようになるなら、cubsonユーザはShadeのためのライブラリとして彼のモジュールのいくつかの部品を移植することができます。 そして、それができないまでも、彼はLegacyでウェブサービスを走らせることができるかもしれません。 少なくとも、cubsonはLegacyでXCube_Serviceの実装を生成させるようにならなければなりません。
|
extoolsD Project
CubsonextoosDプロジェクトの成果物です。extoolsDはextoolsの経験に基づいています。私は以前、XCube_ActionStrategy について書きました。 それは開発者のための、空の枠組みです。 コアがモジュール開発者にいかなるフレームワーク・スタイルも強制しませんので、モジュール開発者はXOOPS Cubeで自分達の独自のフレームワーク・スタイルを使用することができます。 いくつかのポピュラーなフレームワークが移植されるかもしれませんし、XOOPS Cube用のオリジナル・フレームワークがいくつか登場するかもしれません。

ExtoolsDはツールの1つではありません。それは独自のツール環境を開発したがっている開発者のためのダイナミックリンクライブラリです。 PHPXOOPS Cubeコミュニティにとっての唯一の言語ではありません。また、モジュールはXOOPS Cubeコミュニティのための唯一のプログラムではありません。 どうか、XOOPS CubeのためのツールのすべてがXOOPS Cubeコミュニティのターゲットであることを理解してください。
YouTool_1
CubsonはextoolsD.dllを使用するサンプルです。ExtoolsDライブラリは様々なツールを開発することを容易にするでしょう。

モジュールを開発して楽しむことができないなら、
RADツールを開発して楽しんでください。 RADツールを開発して楽しむことができないなら、XOOPS CubeFTPアプリケーションを開発して盛り上がりましょう。巨大なコミュニティはあなたの素晴らしいプログラムを共有することができます。

加えて、ツール開発者のグループは、一種の(独立した)コミュニティです。私たちと共に様々な生活物を開発して楽しみましょう。どんなプログラムも書くことができないなら、ドキュメントを書くことができますよ
!
|
What is ActionForm? (6)

Conclusion

XCube_ActionForm::load() update() は、vritual (C++でいうところの)であり abstract ですので、様々な変数のために使用されることができます。cubsonによる生成コードはこれらのメンバー関数と切り換えGET/POSTをよく使用します。 以下のダイアログはcubsonのコードにおける編集のための手順を示します。 あなたは、cubsonが、XCube_ActionFormの特徴をうまく使用することを理解するでしょう。
ActionForm_Example
ご承知のとおり、cubsonXOOPS Cubeのお勧めの規則を守ります。編集において、Cubsonはプログラムを3個のオブジェクトに分けます。(オブジェクトは、ビジネスロジック(アクション)と、ActionFormXoopsSimpleObjectです) 恐らく、あなたが生成コードで編集したいポイントは、バリデーションと表示の準備です。 したがって、cubsonが基本的なコードを発生させた後にあなたは初めに、ActionFormをカスタム設計するべきです。 あなたは、ほとんどの場合、ActionFormのカスタムのためにコードを書く必要はありません。あなたは、XML構成ファイルを変更して、cubsonActionFormを作り直すことができます。

あなたは、ちょうどこのセクションでXCube_ActionFormに関する基本概念を学び終えたところです。 次のセクションで、あなたは、実際にcubsonによるActionFormのカスタマイズを経験するでしょう。
|
What is ActionForm? (5)
XCube_ActionFormは開発者のためのウェブにおけるデバイスです。 しかし、それはデータベースに接続しません。 XOOPS Cubeは、ビジネス論理とデータベースとActionFormを切り離すのを勧めます。
Load_example01
データベースに対してActionFormの値を使うために、あなたはXoopsSimpleObjectを連携させることができます。XCube_ActionFormには、そのためのインタフェースがあります。

load(&$object)

Load_example02
あなたは load() の中で$objectの値をActionFormへコピーするロジックを実装すべきです。 XCube_ActionFormは初期値を持たせることが困難です。そこで、あなたは、ActionFormを設定するのにXoopsSimpleObjectを使用することができます。 この方法は、再編集機能にとって重要です。 あなたがロード済オブジェクトをActionFormに送るなら、それはコンテンツの再編集です。 あなたが新しいオブジェクトをActionFormに送るなら、それはコンテンツの新規作成です。 言い換えれば、これは「新規作成と編集の差異の除去」です。
Load_example03
さらに、あなたは特別なローディングのためにこのメンバー関数を利用することができます。 例えば、ActionFormは文字列として$objectの整数値をコピーすることができます。

update(&$object)

あなたはActionFormの値を$OBJECTへコピーするロジックを実装するべきです。 このメンバ関数はバリデーションがうまくいった後に呼ばれなければなりません。 load()と同様に、あなたは特別なアップデートにこのメンバ関数を利用することができます。 例えば、ユーザの入力値から「変更された日時」フィールドをコピーするべきではありません。 この場合、あなたはいつもそのフィールドにtime()をセットすることができます。

Update_example02
例となる ActionForm をあなたの myannounce モジュールで見てください。

function update(&$obj)
{
  
$obj->set('update_unixtime', time());
  
$obj->set('subject', $form->get('subject'));
  
$obj->set('message', $form->get('message'));
}

このupload()'create_unixtime'を上書きしません。 そして、それは'update_unixtime'time()を使用します。 このようなテクニックは、ユーザから重要なフィールドを保護するために使用されます。 例えば、ユーザのActionFormは管理者だけが編集することができるフィールドを扱うべきではありません。 このコンセプトを理解しているなら、あなたはユーザタイプでActionFormを切り替えることができます:

$actionForm = $xoopsUser->isAdmin() ?
              new
EditForm4Admin() : new EditForm4User();
|
What is ActionForm? (4)
私は今日も、ActionFormのお勧めの手順について説明します。

Validate

ActionFormはそれの中で妥当性検査をします。 例えば、「メール」は特別なパターンがある文字列です。 ActionFormは文字列として入力値をとって来て、メールとしてそれを検査します。 この場合、文字列はフォームプロパティの情報です、そして、メールはフィールドプロパティの情報です。

フィールドプロパティ設定によって、その妥当性検査は働きます。
XCubeLegacyには、様々なフィールドプロパティがあります。 もちろん、開発者はフィールドプロパティとして彼らのバリデーションパターンを追加することができます。

値が妥当性検査に違反するなら、
ActionFormは検査と結びつけられるエラーメッセージを保持するようになります。そして、また、ワンタイムトークン(チケット)がこの過程でチェックされます。 XCube_ActionFormのワンタイムトークンは、トランザクショントークンの1種です。開発者はバリデーションとして、ワンタイムトークンを扱うことができます。

Error Check

hasError()は、ActionFormにエラーがあるかどうかチェックします。 開発者はgetErrorMessages()メンバー関数を通じてActionFormのエラーメッセージにアクセスすることができます。

Cubsonは、ビジネスロジックを、リクエストの種類で変更することを勧めます。 それがGETかエラーであるなら、うまくいくまで入力形式を何度でも表示してください。 POSTであり、それがエラーでなければ、次の手順に行ってください。 このループによって、ユーザはそれがエラーであっても彼の入力値を失いません。
LoopDialog
例えば、myaccountモジュールで、メッセージ値なしで「送信」ボタンをクリックしてみてください。 1つのエラーメッセージが表示されるでしょう。しかし、subject は失われません。あなたはメッセージフォームを満たすまで、次の手順に行くことができません。同様に、トークンエラーの場合も、このループは働きます。
|
What is ActionForm? (3)
XCube_ActionFrom には最大の効果を得るための推奨手順があります。それは下記の手順です:

  1. Construct
  2. Prepare
  3. (Load)
  4. Fetch
  5. Validate
  6. Error Check
  7. (Update)

XCube_ActionFormはこの手順に関してフレームワークを作りませんが、Legacyモジュールは理想的な手順としてそれを使用します。 以下で典型的なコードを見てください:

$form =& new Myannounce_MessageEditForm();
$form->prepare();

$form->fetch();
$form->validate();

if (
$form->hasError()) {
  
// display error
}

事実上、コードジェネレータが様々な典型的なコードを生成するので、あなたはこれらのコードをタイプする必要はありません。 しかし、手順を理解するためにこれらのコードを読みましょう。

Initialization

new 演算子の後に prepare() が呼び出されます。 prepare() は、複雑で長い生成コードから成ります。 したがって、開発者はコンストラクタに初期化コードを書きます。初期化においては、これらの関数両方が呼ばれなければなりません。

Fetch

ActionFormは$_REQUESTからの入力値を得て、入力値をプロパティに保ちます。 フェッチの後で、get()メンバー関数はこれらの値にアクセスすることができます。

ActionFormは指定された値だけをとって来て、型設定でキャスティング変換をします。 したがって、開発者はget()を使う限り、キャスティング変換について考える必要はありません。ヌルバイトか悪い制御コードが文字列プロパティかテキスト・プロパティに送られる場合、XCube_ActionFromはプログラムを中止します。

あなたがビデオゲームプログラマーであるなら、ジョイパッドの値を得ることを想像してください。 恐らく、ジョイパッドのための特別なクラスは、ジョイパッドに関する特別な条件下で働いて、そして、値だけを保つでしょう。ほとんどの開発者は、BIOSかデバイスドライバとファイトするためにプログラムを作る必要はありません。 同様に、ActionFormを持つ開発者はいくつかのウェブの特別条件のためにプログラムを作る必要はありません。

キャスティング変換のためのフォームプロパティの型設定は、BOOL、INTFLOATSTRINGTEXTです。 TEXTCRLFを受け入れますが、STRINGはそれらを受け入れません。

さらに、開発者はそれぞれのフォームプロパティの fetch() をオーバーライドすることができます。あなたがこの特別な用法を知りたいのであれば、ソースコードにおけるコメントを読むか、またはドキュメント・システムでソースコードからドキュメントを作成してください。
|
What is ActionForm? (2)
XCube_ActionForm は、抽象クラスです。そのため、あなたは、 ActionForm メカニズムを使うために、 XCube_ActionForm のサブクラスを定義しなければなりません。例となるソースコードを読むために /modules/myannounce/admin/forms/MessageEditForm.class.php を開いてください。そこには非常に大きなクラスがあります。

これは、 XCube_ActionForm のサブクラスです。このクラスは、 prepare() におけるフォームプロパティ、及び、フィールドプロパティをセットし、load() と update() メンバ関数を実装します。あなたは、そのような複合的クラスを定義することが難しいと思うでしょう。しかし、開発者は、そのようなクラスを直接定義する必要がありません。ツールによって XML 構成ファイルからサブクラスを生成できます。/modules/myannounce/admin/.xml/message_edit.xml を見てください。これは、サブクラスを定義するための構成ファイルです。

サブクラスを定義することについて重要なことが2つあります:

  1. あなたは、 cubson または別のツールによって XML 構成ファイルから XCube_ActionForm のサブクラスを生成し得ます。
  2. 同様に、あなたは、cubson によって、データベース構造、もしくは、 XML データオブジェクト構成ファイルから XML 構成ファイルを生成し得ます。

コアチームは、 XCube_ActionForm の設計では手で ActionForm を定義することはが可能ではないと考えます。従って、我々は、 XOOPS Cube Legacy 2.1 リリース時に、公式コンバータをリリースするでしょう。そのコンバータは、 cubson のような他の機能を持っていません。しかし、 PHP プログラムですから、だれでも、それを動かすことができます。

ところで、もしあなたが struts を知っていれば、これらの XML のフォーマットが struts ライクであることに気づくでしょう。しかし、 XOOPS Cube は、これらの XML を決して直接扱いませんから、このフォーマットは、重要事項ではありません。フォーマットを必要とするものは、コンバータであり、そして、各々のフォーマットは、各々のツールにおいて異なります。様々なフォーマットを扱う様々なツールがリリースされれば、あなたの好みのフォーマットを選択することができるようになります。
|
What is ActionForm? (1)
私は、 cubsonマニュアルを編集し始めました。それは、このブログのリミックスです。古いエントリは、決して修正されませんが、そのマニュアルは、最新の情報をカバーするために、アップデートされます。例えば、gigamaster氏は、英語の OS における正しいガイダンスを私に教えて暮れました。私は、そのようなレポートによってマニュアルをアップデートします。ですから、ユーザーは、ブログのアーカイブではなく、マニュアルを読むべきです。

さて、私は、今週末まであなたに
XCube における ActionForm を説明します。あなたが myannounce モジュールを持っていないならば、マニュアルに行って、そして、それを作成してください。

あなたのコントロールパネルの
myannounce モジュールにおいて "create new" をクリックしてください。myannounce モジュールのメッセージ入力フォームは、主題、及び、メッセージを必要とします。あなたが何もフォームにインプットしなかったならば、エラーメッセージが現れ、そして、再入力を要求します。XOOPS Cube 2.1 における入力フォームの大部分は、同じ行動をします。入力フォームは、エラーリクエストが次のページに通過することを決して可能にしません。

これらのコントロールは、
ActionForm によってもたらされます。ActionForm は、妥当性検査を担当しています。ActionForm は、ウェブプログラミングにおいて非常にポピュラーです。コアチームは、開発者のためのサンプルとしてそれらの ActionForm クラスを作成しました。ライブラリを持たない開発者は、コアにおいて定義されるライブラリを使うべきです。これは、義務ではなく、単にライブラリです。従って、開発者が有益なライブラリを持っているならば、彼は、自身のライブラリを選択できます。

XCube_ActionFormは次のような目的を持っています:

  • 入力値を $_REQUEST から得て、magic_quotes_gpc がオンなら stripslashes() を行います。
  • 型安全。フォームプロパティ設定に従って値をキャストします。
  • フィールドプロパティ設定に従って妥当性検査を行います。
  • ワンタイムトークンをバリデーションに統合します。
  • 新規作成と編集の差異を取り除きます。
  • データオブジェクトと値を交換するためのインターフェイスを実装します。

つまり、XCube_ActionFormはデータオブジェクトの外側で入力値の管理とチェックを行います。
|
Cubson First Step Guide (4)
myannounce モジュールをテストする際、あなたは、いくらかの問題に気づくでしょう。生成されたテンプレートは、あまりにもラフです。それらは、編集されるべきです。

それでは、コントロールパネルから編集を始めましょう。XOOPS Cube Legacy 2.1 において、コントロールパネルは、テンプレートシステムを使います。コントロールパネルのテンプレートシステムは、コントロールパネルのテンプレートシステムは、ファイルベース ( あなたが DB テンプレートによって使うことができない ) です。あなたがテンプレートファイルを変更したとき、表示は、同時にアップデートされます。

コントロールパネルを見てください。

「メッセージ」カラムは、我々にとって不必要です。なぜなら、我々は、ビューアイコンをクリックしてメッセージを見るからです。メッセージは、リストに直接現れる必要がありません。

/admin/templates/message_list.html を開いて、そして、それを編集してください。初めに、「メッセージ」カラムを削除してください。次に、 messsages を表示するコードを削除してください :

<td><{$obj->getVar('message')}></td>

このページを再ロードして、そして、メッセージの除去を確認してください。

続けて、公開側のテンプレートを編集してください。リストの編集リンク、削除リンクをクリックすると、エラーが発生します。これらのリンクを削除してください。そのため、コントロールカラムは、不必要となります。メッセージカラム、及び、コントロールカラムを削除してください。そして、このテンプレートを再ロードするために、このモジュールをアップデートしてください。

我々は、テンプレートワークをちょうど終えました。それでもなお、いくらかの悪いものがあります。いくらかのメッセージをポストした後で、メッセージリストを見てください。最新のメッセージは、リストの最後に加えられます。あなたは、最新のメッセージが先頭にあることを望むでしょう。それには、アクションフィルタフォームを編集するとよいでしょう。

私は、アクションフィルタフォームに関する説明を次のステップガイドに先送りします。
/forms/MessageFilterForm.class.php を開いて、そして、下記と同様にそれを編集してください :

// define('MESSAGE_SORT_KEY_DEFAULT', MESSAGE_SORT_KEY_ID);
define('MESSAGE_SORT_KEY_DEFAULT', -MESSAGE_SORT_CREATE_UNIXTIME);

同じく /admin/forms/MessageFilterForm.class.php を開いて、そして、それを編集してください。この作業によって、あなたは、オーダについての振る舞いを変えました。

結論

我々は、シンプルなテーブルによってシンプルなモジュールを開発しました。Cubson は、本物のデータベースにおいてテーブル構造によるコードを生成し得ます。しかしながら、生成されたテンプレートがあまりにもラフであるので、あなたは、それらを編集するべきです。

ノート

それが SQL ファイルを含まないので、我々が開発したこのモジュールは、配布できません。そのため、モジュールをダウンロードしたユーザーがそれをインストールするとき、必要なテーブルは、データベースに作成されません。あなたがこのモジュールを公開するときは、 sql/mysql.sql を書かなければなりません。
|
Cubson First Step Guide (3)
私は、cubsonのいくらかのバグを解消して、それを更新しました。あなたは、このサイトのダウンロード・ページからバージョン0.43を得ることができます。

さて、
myannounceモジュールを開発することを再開しましょう。私達は、これまでにmyannounceモジュールの管理画面機能を開発しました。今日のエントリでは、公開の機能を完了させます。それに先立ち、私達は、このモジュールの公開側の機能を確認するべきです。myannounceモジュールは、どんな特徴を持っていますか?

  • 第一に、管理者のみがコントロールパネルでメッセージを登録することができる。
  • 第二に、ユーザーはメッセージのリストとメッセージの内容にアクセスすることができる。

したがって、編集機能と削除機能が、公開側で不必要です。ウィザード・コマンドは4種類の動作によって使われる多くのファイルを生成しますので、あなたは編集機能と削除機能に関するファイルを削除するべきです。cubsonコンソール上で以下のとおりタイプしてください:

cubson> wizard message

あなたは、モジュール・ディレクトリで以下のファイル・ツリーを見るでしょう。

myannounce_tree_2

これらのファイルから以下のファイルを削除してください。

  • .xml/message_delete.xml
  • .xml/message_edit.xml
  • actions/MessageDeleteAction.class.php
  • actions/MessageEditAction.class.php
  • forms/MessageDeleteForm.class.php
  • forms/MessageEditForm.class.php
  • templates/myannounce_message_delete.html
  • templates/myannounce_message_edit.html

次に、あなたが取り除いたテンプレート・ファイルの名前をリストアップするxoops_vesrion.phpを開き、それらのファイルを取り除いて、添え字番号を編集してください。myannounce_message_edit.htmlmyannounce_message_delete.htmlは不必要です。あなたがそれを編集しなければ、このモジュールの情報は削除されたファイルの名前を保ち続けて、いつかトラブルを起こします。以下が、正しいコードです:

//
// Templates. You must never change [cubson] chunk to get the help of cubson.
//
//$modversion['templates'][]['file'] = 'myannounce'_xxxxx.html';
//$modversion['templates'][]['description'] = 'myannounce'_xxxxx.html';
##[cubson:templates]
$modversion['templates'][0]['file'] = 'myannounce_message_list.html';
$modversion['templates'][1]['file'] = 'myannounce_message_view.html';
##[/cubson:templates]

テンプレートをロードするために、管理画面でモジュールをアップデートしてください。最後に、あなたはあなたが昨日の登録において修正した管理画面の
index.phpと同様にindex.phpを書き直さなければなりません。index.phpを開き、「Default」を「MessageList」で置き換えてください。

オーケー、公開側の機能は、今まさに完成しました。アクセスして、テストしなさい。しかし、これは終わりではありません。私達は、チューニングのために作業を続ける必要があります。
|
Cubson First Step Guide (2)

Make-project

まず初めに、XOOPS Cube にプロジェクトを作りましょう。cubsonコンソール上で次のようにタイプしてください。

cubson> make-project myannounce

MyannounceディレクトリはあなたのXOOPS Cubeのモジュールディレクトリに作られました。make-projectは、SQLファイルやアイコンといった付加的なファイルを追加しません。それでは、すぐに、このモジュールをインストールしてください。

Create tables

発表モジュールは管理者が掲示するメッセージを示します。 したがって、それには、以下のデータモデルがあるものとします:

  • ID
  • Created datetime
  • Modified datetime
  • Subject
  • Messsage

IDは、プライマリーキーかつ autoincrement である数値です。 次に、Cubsondatatimeとしてunixtimeを扱います。 もちろん、そのようなスタイルには、いくつかの問題があります。 しかし、2006年に、私たちは、作業時間を記録するのにそれを使用することができます。 次に、 subject はvarcharで、メッセージはテキストになります。

'{XOOPS_DB_PREFIX}_myannounce_message' テーブルを以下同様に作成してください。もしあなたの XOOPS_DB_PREFIX xoops であるなら、 xoops_myannounce_message を作成してください:

iviewcapture_date_05_06_2006_time_16_45_08

  • id int(10) not null default 0 autoincrement, primary key
  • create_unixtime int(10)
  • update_unixtime int(10)
  • subject varchar(255) not null
  • message varchar(255) not null

iviewcapture_date_05_06_2006_time_16_44_28

Cubsonには、テーブルのための命名規則があります。 あなたはXOOPS_DB_PREFIXとモジュール名を実体名に加えなければなりません。 次に、コントロールパネル側で基本制御コードを生成してください。

cubson> wizard -a message

List View Edit Delete が myannounce モジュールの admin ディレクトリに、発生されます。しかし、アドミンのフロントコントローラがまだ変更されていないので、あなたはサイドメニューからそれにアクセスすることができません。

/modules/myannounce/admin/index.php を見てください。 これはモジュール毎フロントコントローラです。 それはAction Frameの特徴を通してあなたの簡単なフレームワークを扱います。 このコントローラは$actionリクエストによってロジックファイル(action)を呼びます。 $actionを送らないなら、それはデフォルト値を使用します。デフォルト値は「デフォルト」リテラルです。 あなたはそれを"MessageList"に取り替えなければなりません。オーケー、"/modules/admin/index.php"は"/modules/admin/index.php?action=MessageList"と等しくなりました。

再び管理機能にアクセスしてください。動きましたか?
|
Cubson First Step Guide (1)
私たちはcubsonのチュートリアルでアナウンス・モジュールを開発しました。 cubsonの働きを学ぶために、チュートリアル生成を使用せずに、同様のモジュールを開発しましょう。

cubsonはデータ・ドリブン型のモジュールを生成することができます。したがって、cubsonを走らせる前に、あなたはデータモデルのための実体の定義を準備する必要があります。にそうしました。 XMLファイルは、実体を定義するために役に立ちます。しかし、それは書くために多くの時間を必要とします。 私は、データベースのテーブルからそれを生成させる方法を勧めます。cubsonには、XMLと実際のデータベースのための抽象化レイヤーがあります。したがって、あなたは、データベースをXMLに変換するか、もしくは、コード生成にデータベースを直接使用することができます。

cubson_database
言い換えれば、通常、cubsonユーザはデータベースを作ることから開発を始めます。 あなたが最初のチュートリアルでテーブルを作成する必要がなかった理由はチュートリアル作成コマンドがサンプルテーブルのためのSQLファイルを作成したからです。チュートリアルでは、あなたは2ステップでアナウンス・モジュールを開発しました。あなたがチュートリアル作成コマンドなしで同様のモジュールをどのように開発するかは、cubsonの手順を理解する良い手段です。

それでは、開発を始めましょう。この場合、あなたは
mysqlで直接テーブルを作成しなければなりません。phpMyAdminは、テーブルを作成するために役に立ちます。 あなたがXSASXAMPPを使用するなら、phpMyAdminは既にあなたの環境にインストールされています。もしそれを持っていないなら、次回までにダウンロードしてインストールしださい。
|
XCのモジュール不足を恐れないで
Legacy モジュールは、多くの X2JP モジュールを機能させるために、古いバッドコードを保持します。現在のユーザーのサイトを保護することは、ニーズです。しかし、私が思うに、完璧な互換性は、マストではありません。その理由は、大部分のモジュールがセキュリティホールを持っているかもしれないことであり、そして、容易にそれらをリメイクできるということです。

私が先日
cubson extools について書いたので、 cubson のメイン・フィーチャーのことはご存じかと思います。 cubson は、 XCube_ActionStrategy のサブクラスとしてのシンプル・フレームワークと、その枠組みから呼ばれる様々なクラスを生成します。

cubson は未完成品です。しかしながら、バージョン 0.42 以降、それは、あなたに XOOPS の新しい開発スタイルを経験させることができる状態になりました。cubson における経験のために 20 分間のあなたの自由時間をください。まず初めに、.NET Framework ODBC をインストールするために、 15 分を使ってください。それから、シンプルなモジュールを作成するために最後の 5 分を使いましょう。

初めに、
cubson を動かすために、あなたのローカル・コンピュータをセットアップしましょう。先日のエントリでインストレーション・ガイドを読みましょう。

次に、あなたのデスクトップ上で
cubson アイコンをダブルクリックしてください。 cubson ユーザーは、最初はデータベーステーブルを設計しなければなりません。しかし、 cubson は、チュートリアルのためにいくらかのサンプル SQL ファイルを収録しています。従って、あなたは、今回テーブルを作成する必要がありません。では、 cubson コンソールの上で次のようにタイプしてください。

cubson> make-tutorial announce

このコマンドは、基本的なモジュールのディレクトリを作り、そして、チュートリアルの概念に従って、 SQL ファイルとアイコンを追加します。

次に、生成されたモジュールをインストールしてください。もちろん、あなたは、このモジュールにおいて何もまだすることができません。しかしながら、サンプルのテーブルが、モジュール・インストールを通じて作成されました。テーブルさえあれば、
cubson は、よく機能し得ます。cubson コンソール上で下記のとおりタイプしてください。

cubson> wizard -a message

いくらかのクラス、及び、テンプレートが、あなたのために生成されました。このモジュールのコントロールパネルにアクセスしてください。あなたは、リストを見て、新しいデータを作成し、そして、それを削除することができます。はい、このツールの管理ツールは完成しました。次に、公開サイドにおいてそのような機能を作成しましょう。

cubson> wizard message

同様に、いくらかのクラス、及び、テンプレートは、生成されます。あなたは、これらの新しいテンプレートを XOOPS Cube へロードするために、モジュールをアップデートする必要があります。それから、公開側で「 announce 」モジュールにアクセスを試みてください。

あなたは、それを仕上げるために、このモジュールのクラスとテンプレートを調整する必要があります。しかし、基本的な機能は、ほんの
2 ステップで構築されました。生成されたコードは、新しい XOOPS Cube の特徴を最大限に利用します。それは、安全であり、そして、カスタマイズに向いています。開発を楽しんでください !
|
cubson のインストール
cubson は Windows 専用 CUIツールです。それは、.NET Framework2.0ODBC Driverをインストールする必要があります。あなたが VisualStudio.NET を使って開発しているなら、あなたはすでにこれらの環境をインストールしているかもしれません。そのうえで、あなたは開発のためにローカルのAMPサーバを使用するべきです。 例えば、それは、XSASOXTSまたはXAMPPなどです。

私は cubson のセットアップ手順について説明を始めます。以下のスクリーンショットは、私のコンピュータでキャプチャーしたヒントです。自分の環境と読み替えながら、それらをご覧ください。

  1. XSAS/OXTS/XAMPP のインストール
  2. XOOPS Cube Legacy 2.1 のインストール
  3. .NET Framework 2.0 のインストール
  4. ODBC のインストール
  5. MySQL ODBC Driver のインストール&設定
  6. 環境変数 XOOPS_ROOT_PATH を設定
  7. cubson のインストール

Windows 2000 以降のOSを使用してください。Windows XP を使用するなら、問題は全くありません。

XSAS のインストール

cubson は開発用クライアントアプリケーションですので、あなたはローカルの AMP サーバをインストールしなければなりません。 XSAS XOOPS で最も有名な AMP サーバです。 OXTS XSAS より良いのですが、あなたは、作者に尋ねるために日本語を勉強しなければならないかもしれません。 XAMPP は世界一メジャーな AMP サーバです。 もちろん、あなたはそれを使用することができます。 そして、OCEAN-NETによって造られる xaio があります。

XOOPS Cube Legacy 2.1 のインストール

2.1 ブランチを CVS からチェックアウトするか、もしくは、アルファ3をインストールしてください。

.NET 2.0 Framework のインストール

cubson が C# 2.0 フィーチャーを含むので、あなたは .NET Framework2.0 をインストールしなければなりません。あなたが .NET Framework1.0 をインストールしたなら、それは cubson を実行することができません。あなたが英語以外の言語を使用していて、その言語パッケージが提供されているなら、それをダウンロードしてください。したがって、あなたはあなたの母国語で書かれているマイクロソフトのサイトでランタイムを捜すべきです。 あなたの母国語のパッケージが存在しているなら、それへのリンクはダウンロードページに書かれるかもしれません。

しかし、言語パッケージは主に例外エラーの表示に使用されるので、あなたは言語パッケージを全く必要としないかもしれません。 通常、それを見ることはありません。

.NET ODBC Data Provider のインストール

cubson はデータベースからエンティティに関する情報を得ます。したがって、 ODBC は、データベースに接続するために必須です。私は、 GPL についての議論の引き金とならないように mysql ライブラリを使用しません(cubson はライセンスとして BSD か X11 を持つようになる予定です)。 ODBC はデータベースの種類をある程度抽象化します。そのため、将来、あなたは cubson に postgreSQL を使用することができるようになります。

ここからODBC Data Providerと最新のMDACをダウンロードしてください。 あなたはそのページでMDACへのリンクを見るでしょう。 次に、それらをインストールしてください。

MySQL ODBC ドライバのインストール

mysql_odbc_installer01
ODBC はどんなデータベースにも依存しません。したがって、あなたは、ODBCが受け入れることができるあなたのデータベースのODBC Driverをインストールする必要があります。 ここからMySQL ODBC Driver(Windows版)を手に入れてください。 MSIパッケージは容易にインストールできます。インストールウィザードで「typical」を選択してください。

mysql_odbc_installer02
ローカルマシンのMySQL(XSASか何か)を走らせて、ODBCの設定を開始しましょう。コントロールパネルの「管理ツール」をダブルクリックしてください。

(このスクリーンショットはWindows2000と日本語に関する例です。もしあなたが、英語でスクリーンショットを得ることができるなら、それを私に提供していただけませんか?)

mysql_odbc_installer03
データソース(ODBC)をダブルクリック。

mysql_odbc_installer04
ユーザーDSNもしくはシステムDSNのタブを押して、「追加」ボタンを押してください。

mysql_odbc_installer05
データソースから先ほどインストールした MySQL ODBC Driver を選択してください。

mysql_odbc_installer06
データソース名「xcube」によってあなたのターゲット・データベースにアクセスするためにセットアップしてください。

環境変数XOOPS_ROOT_PATHを設定

cubson_install_env.serendipityThumb
環境変数「XOOPS_ROOT_PATH」に XOOPS Cube のルートパスを設定してください。 コントロールパネルは、ユーザの環境変数を設定するために便利です。 環境変数を有効化するために、再ログインもしくは再起動が必要かもしれません。

cubson のインストール

このサイトのダウンロードページから最新のcubsonをダウンロードしてください。 そして、それをインストールしてください。 旧式のバージョンをインストールしたなら、あなたが新しいバージョンをインストールし始める前にそれをアンインストールしてください。 cubsonをアップデートするとき、あなたはいつもそれをするべきです。
|
cubson 対 extools
私は、今まさに英語で使用可能な cubson を作り終えました。私は、いくらかの特徴をチェックし、それをダウンロードページに置き、そして、ドキュメントを書き始めるでしょう。cubson は、モジュール開発者を支える良いツールのうちの 1 つになると思います。cubson は、 XC 2.1 の Legacy モジュールグループを開発するために使われました。あなたが XC 2.1 で見ることができるフレームワーク・プログラング・ライクなコードは cubson によって生成されたものです。

cubson は、 exFrame & extools と呼ばれる尊い犠牲の上に築かれています。exFrame は、 XOOPS2 のための mojavi2 ライクなシンプルなフレームワークと、易しいコンポーネントを持っていました。さらに、Ryujiさん意外は誰も exFrame に興味を抱かなかったので、コード・ジェネレーター extools を開発しました。それは、いくらかの開発物にとって有益でした。
しかし、それは、ベストではありません。

私は、 exFrame および extools に関する反省と共に cubson を開発しました。まず初めに、cubson は、昨日説明された ActionFrame のサブクラスであるシンプルなフレームワークを作ります。そして、データベースから、シンプル・フレームワークが受け入れ得る様々なクラスを作ります。

差異を見てください:

コンセプト

* cubson はコンポーネントのサブクラスの代わりにインラインコードを生成します。
* extools は exComponent と呼ばれるコンポーネントのサブクラスを生成します。

基底クラス群

* cubson の場合、シンプルフレームワークの基底クラスはそれぞれのモジュールの中に作られます。従って、多くのコード・クローンが発生します。それはモジュール単位のカスタマイズに向いています。
* extools の場合、基底クラスは exFrame に収録されています。それは差異と単位のカスタマイズに向いています。

ライブラリ

* cubson の場合、開発者は exFrame のような多くのライブラリを使用できません。しかし、彼らは XOOPS Cube プロジェクトで作られたいくつかのスマートなクラスを使うことができます。
* extools の場合、開発者は exFrame の多くの太ったライブラリを使うことができます。

XoopObject

* cubson が生成したコードは XoopsSimpleObject と XoopsObjectGenericHandler を使います。ご承知の通り、これらのクラスは XoopsObject より良く、型安全です。
* extools が生成したコードは、 exXoopsObject と exXoopsObjectHandler を使います。これらのクラスは XoopsObject と比較してただのデブです。

ActionForm

* cubson が生成したコードは XCube_ActionForm と XCube_Validator を使います。これらのクラスはよく整理されています。
* extools が生成したコードは exActionForm を使います。 exActionForm は XCube_ActionForm のための尊い犠牲でした……

テンプレート

* Cubson は XoopsForm とコンポーネントなしでテンプレートを構築します。デザイナーは容易にそれらを変更し得ます。
* extools はコンポーネント・スタビライザとしてのテンプレートを生成します。それを変更することは困難です。

ツール同期

* cubson は1回の呼び出しで自動的に複数のコマンドを呼び出します。たとえば、ひとつのコマンドがメッセージカタログを要請すると、別のコマンドがそれを受け取ります。
* extools は1回で複数のコマンドを呼び出すことはできません。

開発言語

* cubson は extoolsD.dll の一部です。それはGUI版のためにC#で書かれています。cubson は extoolsD プロジェクトにおける CUI フロントエンドです。C# はもちろん PHP ではありませんが、 PHP プログラマが C# を使うことは容易なことです。
* extools は PHP プログラムです。PHP プログラマは容易にそれをカスタマイズし得ます。

環境

* cubson は XOOPS Cube 2.1 専用です。
* extools はいくつかの XOOPS で動作します。
|