Class CGIKit::Context
In: docs/rdoc_ja.rb
Parent: Object

CGIKit::ContextはコンテキストIDを扱うクラスです。 コンテキストIDとはコンポーネントやエレメントにつけられるIDで、 フォームデータやアクションを処理する際に コンポーネント・エレメントを特定するために使われます。

コンテキストIDはURLの最後に付加されます。 "app.cgi/c/027ef63d3e72f4f2/0.7.0" の場合、"0.7.0" がコンテキストIDです。

フォーム関連のエレメントでは、 name 属性を省略すると name 属性値にコンテキストIDが設定されます。 属性値を指定すると name 属性にコンテキストIDが設定されませんが、 リクエスト・レスポンスループ時にコンテキストIDを補完して実行するので、 name 属性も自由に設定することができます。

フォーマット

コンテキストIDは、ピリオドで区切ったコンポーネントIDと エレメントIDから構成されます。 先頭の桁がコンポーネントIDで、以降の桁がエレメントIDです。 例えば "1.5.4" の場合、 1 がコンポーネントIDで、 5 と 4 がそれぞれエレメントIDになります。

コンテキストIDは内容を含むエレメントがあると桁が増えます。 内容を含むエレメントとは、RepetitionConditionalLinkなどです。 "1.5.4" の場合なら、間の 5 が内容を含むエレメントのIDということになります。

コンテキストIDの操作については DynamicElement も参照してください。

コンポーネントID

コンポーネントIDは、ページ表示に使うComponentオブジェクトのIDです。 アクションメソッドで nil を返すと、ページ表示に使った Componentオブジェクトが再度使われるので、コンポーネントIDは変わりません。 アクションメソッドでComponentオブジェクトを生成したり、Linkのpage属性を使うと 新しいコンポーネントIDが発行されます。

エレメントID

コンポーネントで使うエレメント、DynamicElementオブジェクトのIDです。 同じ設定のエレメントが複数回展開されても、エレメントIDは重複しません。 例えばコンテキストIDが "0.1" のRepetitionTextFieldを3回繰り返すと、 生成されるコンテキストIDはそれぞれ "0.1.1", "0.1.2", "0.1.3" になります。

Methods

Constants

SEPARATOR = "."   コンテキストIDの各要素を区切る文字。

External Aliases

in_form -> in_form?

Attributes

application  [RW]  Applicationオブジェクト。
component  [RW]  エレメントと同期するコンポーネント (Componentオブジェクト) 。 リクエストされたページか、サブコンポーネントになります。
in_form  [RW]  コンテキストがFormエレメント内で実行されているかどうか。
request  [RW]  Requestオブジェクト。
request_handler_key  [RW]  リクエストハンドラキー
response  [RW]  Responseオブジェクト。
sender_id  [RW]  リクエストを送信したコンテキストID。

Public Class methods

Public Instance methods

<<( string )

Alias for append

このメソッドを実行したエレメントにアクションが要求されていれば真を返します。 主に invoke_action で使われます。

例えばコンテキストIDが "3.2" のLinkエレメントがクリックされたとき、 リクエスト・レスポンスループ中のLinkエレメントの コンテキストIDが一致すれば真を返します。

See Also: Element#invoke_action

Ajaxコンポーネントアクション用のURLを生成します。

コンテキストIDに string を追加します。 コンテキストIDが "0.1" のときに "MyName" を追加すると "0.1.MyName" になります。

See Also: append_zero, increment, delete, delete_all

コンテキストIDに 0 を追加します。 コンテキストIDが "0.1" なら "0.1.0" になります。

See Also: append, increment, delete, delete_all

URLを生成します。

key:リクエストハンドラキー。
path:セッションID、コンテキストIDの次に付加する文字列。
query:クエリ文字列。
is_secure:真であれば、 https で始まるURLになります。
port:ポート番号を指定します。

See Also: url, Application#url

コンポーネントアクション用のURLを返します。 このURLをクリックすると、 このメソッドを実行したエレメントを指定することになります。 例えばLinkエレメントでは action属性が指定された場合に、 このメソッドでリンクのURLを生成します。

query:クエリ文字列。
is_secure:真であれば、 https で始まるURLになります。

See Also: direct_action_url, Element#invoke_action, Element#append_to_response, Component, Link, Submit

コンポーネントID (コンテキストIDの先頭の桁) を返します。

See Also: component_id=

コンポーネントIDをセットします。 コンテキストIDの先頭の桁を cid に変更します。

See Also: component_id

コンテキストIDを返します。 digit が真であれば、数値だけで構成されたコンテキストIDを返します。

See Also: context_id=

コンテキストIDを id に変更します。

See Also: context_id

このメソッドを実行したエレメントがフォーム内にあり、 かつそのフォームがリクエストされていれば真を返します。 in_form と異なるのは、フォームが表示されただけでは真にならないことです。 フォームが表示され、送信ボタンが押されると真になります。 フォーム要素のデフォルト値を操作するときに使われます。

See Also: in_form?

コンテキストIDの最後の桁を削除します。 "0.0.1.1" であれば "0.0.1" になります。

See Also: delete_all, increment, append

コンテキストIDをすべて削除します。

See Also: delete, increment, append

ダイレクトアクションクラス action_class の action_name メソッドを 呼び出すURLを返します。

query:クエリ文字列。
sid:真であれば、 https で始まるURLになります。

See Also: DirectAction

エレメントID (コンテキストIDの最後の桁) を返します。

See Also: component_id, context_id

セッションを保持していれば真を返します。

See Also: session

コンテキストがフォーム内にあるかかどうかを設定します。

See Also: Form

コンテキストIDの最後の桁の数値を 1 増やします。 string を指定すると、最後の桁が string に変更されます。

See Also: append, delete, delete_all

RSSアクションクラス action_class の action_name メソッドを 呼び出すURLを返します。

See Also: RSS::RSSAction

セッションを返します。セッションがなければ生成します。

See Also: Session, has_session?

URLを生成します。

key:リクエストハンドラキー。
path:セッションID、コンテキストIDの次に付加する文字列。
query:クエリ文字列。

See Also: complete_url

[Validate]