cflayout タグとcflayoutarea タグを使用して、タブメニューを作成する事ができます。
【メインページ】
必要なCSSプロパティを設定します。
(タブ内で使用するCSS含む)
<style type="text/css">
#tabArea {
width:350px; /* 横幅 */
text-align:left;/* テキスト配置 */
}
#tab_regist,#tab_list {
padding:20px; /* 余白指定 */
}
#tab_list ul { /* マーカーを画像に変更 */
list-style-type:none;
list-style-image:url(/img/coldfusion/flower_07.gif);
}
</style>
cflayout タグとcflayoutarea タグを使用して、レイアウト領域を作成します。
<cfajaximport tags="cfform">
<!--- タブ --->
<center>
<cflayout name="tabArea" type="tab" tabHeight="200">
<!--- 新規登録タブ --->
<cflayoutarea name="tab_regist" title="新規登録"
source="sample_tab1.cfm" refreshOnActivate="true">
</cflayoutarea>
<!--- 花の名リストタブ --->
<cflayoutarea name="tab_list" title="花の名リスト"
source="sample_tab2.cfm" refreshOnActivate="true">
</cflayoutarea>
</cflayout>
</center>
メインページのcflayoutarea タグのsource 属性で指定したページを作成します。
ここでは、【新規登録タブ】と【花の名リスト タブ】を作成します。
【新規登録タブ】
サンプルでは、登録フォームの表示と、「登録する」ボタンをクリックした時のDB登録処理を指定しています。ここでは、フォーム表示部分を紹介します。
<cfform action="" method="post">
好きな花の名前
<cfinput id="name" name="name" type="text" />
<br /><br />
<center>
<cfinput id="submit" name="submit"
type="submit" value="登録する" />
</center>
</cfform>
【花の名リスト タブ】
サンプルでは、登録済みの花の名リストの表示と、アイコンをクリックした時のDB削除処理を指定しています。ここでは、花の名リスト表示部分を紹介します。
リンク先を現在のタブ内に表示させる場合には、AjaxLink 関数を使用します。
<ul>
<cfoutput query="request.select">
<li>
#name#
<a href=
"#AjaxLink('#cgi.SCRIPT_NAME#?del_id=#id#'#)">
<img src="../img/coldfusion/cancel.gif" /></a>
</li>
</cfoutput>
</ul>
タブメニューを作成する場合、cflayout タグとcflayoutarea タグを使用します。
cflayout タグでは、子の cflayoutarea 領域の外観と配置を制御します。
パラメータには以下の属性が指定できます。
| type(必須) | レイアウトのタイプ タブメニューを作成する場合はtabを指定します。 (border(ボーダー付き),hbox(水平方向),vbox(垂直方向)も指定可) |
|---|---|
| align | 子レイアウト領域のコンテンツに適用するデフォルトの配置 (それぞれの cflayoutarea タグの align 属性が優先) ・center ・justify ・left ・right |
| name | レイアウト領域の名前(ページ内で一意) |
| style | レイアウトのスタイルを定義する CSS スタイル |
| tabHeight | すべての子レイアウト領域のコンテンツ領域に適用する高さ (それぞれの cflayoutarea タグの style 属性の高さ設定で上書き可能) |
| tabPosition | タブ領域のコンテンツを基準としたタブの相対的な位置 ・bottom: タブをレイアウトの下部に表示 ・top(デフォルト): タブをレイアウトの上部に表示 |
cflayoutarea タグは常に cflayout タグの子にする必要があります。
パラメータには以下の属性が指定できます。
| align | レイアウト領域内の子コントロールの配置 (デフォルト:cflayout タグの align 属性の値) ・center ・justify ・left ・right |
|---|---|
| closable |
領域を閉じることが可能かどうかを指定するブール値 true:タブに x アイコンを表示 ユーザーは、このアイコンをクリックして領域を閉じることが可能 false(デフォルト):タブに x のアイコンは非表示 |
| disabled | タブを無効にするかどうかを指定するブール値(デフォルト:false) 無効なタブはグレーで表示されます ※selected 属性の値が true の場合は無視されます |
| initHide | 初期状態で領域を非表示にするかどうかを指定するブール値(デフォルト:false) 初期状態で非表示になっている領域を表示するには、ColdFusion.Layout.showArea または ColdFusion.Layout.showTab 関数を使用します |
| name | レイアウト領域の名前 |
| onBindError | バインド式の評価でエラーが発生した場合に実行する JavaScript 関数の名前 この関数は 2 つの属性 (HTTP ステータスコードとメッセージ) を取る必要があります。 この属性を省略し、(ColdFusion.setGlobalErrorHandler 関数を使用して) グローバルエラーハンドラを指定すると、エラーメッセージが表示されます。それ以外の場合は、デフォルトのエラーポップアップが表示されます。 |
| overflow | 子コンテンツのサイズが大きいためにコントロールがウィンドウの境界を超えてしまう場合に、子コンテンツをどのように表示するかを指定します ・auto(デフォルト): 必要に応じてスクロールバーを表示 ・hidden: 境界からはみ出したコンテンツにアクセスできないようにする ・scroll: 必要がない場合でも常に水平および垂直方向のスクロールバーを表示 ・visible: レイアウト領域の外側にコンテンツを表示(Internet Explorerでは、コンテンツサイズに合わせてレイアウト領域を拡張) |
| refreshOnActivate | タブ表示領域が表示される(たとえば、ユーザーがタブを選択する) たびに、タブのコンテンツを更新するかどうかのブール値 フォーム送信などバインドイベントが発生した時は、この属性の値に関係なく、必ずタブのコンテンツを更新します。 ・true: タブ表示領域が表示される時にも更新 ・false(デフォルト): タブ表示領域が表示される時には更新しない ※この属性を使用する場合、source 属性の指定が必要 |
| selected | このタブを最初から選択された状態にして、そのコンテンツをレイアウト内に表示するかどうかを指定するブール値 (デフォルト:最初のタブが選択された状態) |
| source | レイアウト領域のコンテンツを返す URL この属性では依存関係を持つバインド式を使用できます。 この属性を使用すると、コンテンツの取得中にアニメーションのアイコンと「ロード中...」というテキストが表示されます。 この属性で指定したファイルに AJAX 機能を使用するタグ (cfform、cfgrid、cfpod など) が含まれている場合は、cflayoutarea を含むページで cfajaximport タグを使用する必要があります。(このサンプルではメインページで使用しています) |
| style | 領域の外観を制御する CSS スタイル指定 |
| title | タブに表示されるテキスト |
レイアウト領域のコンテンツを指定するには、source 属性またはタグ本文を使用します。両方とも指定されている場合は、source 属性で指定されたコンテンツが使用され、タグ本文は無視されます。
以下のルールにより、さまざまなレイアウトを複雑に組み合わせることが可能になります。
次の JavaScript 関数を使用すると、レイアウト領域の有効化、無効化、表示、非表示、展開、折り畳み、選択などが可能になります。
| ColdFusion.Layout.createTab | 既存のタブ付きレイアウトにタブを作成します |
|---|---|
| ColdFusion.Layout.disableTab | 特定のタブを無効にして選択できないようにします |
| ColdFusion.Layout.enableTab | 特定のタブを有効にし、ユーザーがそのタブを選択して領域のコンテンツを表示できるようにします |
| ColdFusion.Layout.hideTab | タブを非表示にします |
| ColdFusion.Layout.selectTab | タブを選択して、レイアウト領域のコンテンツを表示します |
| ColdFusion.Layout.showTab | inithide 属性または hideTab() 関数によって非表示にされたタブを表示します |
AjaxLink 関数を使用すると、リンク先が現在の Ajax コンテナに表示されます。
パラメータには以下の属性が指定できます。
| URL | リンク先のURL |
|---|
この関数で指定されたリンクがブラウザでクリックされると、HTTP レスポンスによって現在のページが置き換えられるのではなく、cfdiv、cflayoutarea、cfpod、または cfwindow コントロールにリンク先の URL が渡されます。
上記のコントロール内にある a タグの href 属性の URL がこの関数で指定されている場合にのみ効果を持ちます。 そうでない場合、リンクは通常どおりに機能します。
(Hoshino 2008/10/27)