ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter Contentでの開発
11gリリース1 (11.1.1)
B72427-04
  ドキュメント・ライブラリへ移動
ライブラリ
目次へ移動
目次
索引へ移動
索引

前
 
次
 

11 アクション・メニューの生成

この章では、Oracle WebCenter Content Serverのアクション・メニューの生成方法について説明します。

この章の内容は次のとおりです。

11.1 「アクション」メニューの生成について

旧バージョンのコンテンツ・サーバーでは、コンポーネントの作者は、検索結果ページで使用される表のようなHTML表を作成して、HTMLコードをコピーおよび貼付けする必要がありました。表の中の情報はHTMLと混合しており、データと表示は区切られていませんでした。

同じ問題は、「アクション」メニューにも当てはまっていました。表およびメニューではデータと表示が緊密に結合していたため、CSS変更で行われた変更を除き、コンテンツ・サーバーのすべての表に対してグローバルな変更を実行することはできませんでした。表とメニュー両方の特定の面を、コンポーネントでターゲットにしたり変更することも困難でした。

ページの「アクション」メニューをカスタマイズするために、開発者は、次のインクルード・ファイルのいずれかをオーバーライドして、PageMenusData ResultSetを変更することができます。これらのインクルードはすべて、DomainHome/resources/core/resources/std_page.idocファイルに定義されています。

さらに、データのResultSetを設定し、そのデータを使用してページを表示する特定のリソース・インクルードをコールすることによって、検索結果ページで使用されるような表を作成できます。ResultSetは、「キュー内のワークフロー」ページや「検索結果」ページにあるような「アクション」メニューの作成にも使用できます。

「アクション」メニューとHTML表の表示フレームワークを使用すると、開発者は、システムの残り部分のルック・アンド・フィールと一致する迅速かつ柔軟なWebページを作成できます。また、コンポーネントの作者がこれらを使用すると、サーバー上の「ヘッドライン表示」表と「サムネイル表示」表のいずれか、またはすべて、さらに「アクション」メニューのいずれかに対して、拡張、追加およびオーバーライドを容易に行うことができます。

11.2 表示表の作成

次の表示タイプごとに、検索結果ページには別々の表が使用されます。

例11-1に示すように、どのような表の設定でも、最初の手順の1つは、表示するドキュメントを取得することです。

例11-1 ドキュメントを取得するためのコード

<$QueryText = "dDocAuthor <matches> `sysadmin`"$>
<$executeService("GET_SEARCH_RESULTS")$>

11.2.1 ヘッドライン表示表

次の例は、「ヘッドライン表示」表の作成方法を示しています。ここで説明する概念は、他の表タイプの作成にも使用されます。

例11-2に示すように、このプロセスの最初の手順は、表の列を記述するResultSetを作成することです。

例11-2 表の列を記述するためのResultSet

<$exec rsCreateResultSet("ColumnProperties",
  "id,width,headerLabel,rowAlign")$>

<$exec rsAppendNewRow("ColumnProperties")$>
<$ColumnProperties.id = "dDocName"$>
<$ColumnProperties.width = "150px"$>
<$ColumnProperties.headerLabel = lc("wwDocNameTag")$>
<$ColumnProperties.rowAlign = "center"$>

<$exec rsAppendNewRow("ColumnProperties")$>
<$ColumnProperties.id = "dDocTitle"$>
<$ColumnProperties.width = "auto"$>
<$ColumnProperties.headerLabel = lc("wwTitle")$>
<$ColumnProperties.rowAlign = "left"$>

<$exec rsAppendNewRow("ColumnProperties")$>
<$ColumnProperties.id = "actions"$>
<$ColumnProperties.width = "75px"$>
<$ColumnProperties.headerLabel = lc("wwActions")$>
<$ColumnProperties.rowAlign = "center"$>

ColumnPropertiesというResultSetが作成されます。表の各行は、作成する表の列に対応しています。各列には、いくつかの属性を関連付けることができます。より共通性の高い属性をいくつか、次に示します。

  • id: これは必須の属性です。作成中の表の各列には、IDを関連付ける必要があります。このIDは、あらゆる行で何を表示するかを決定するために、後で使用されます。

  • width: 列の幅。これは、100px15emautoなどのCSS幅宣言のいずれかにでき、これによってサイズが自動指定され、表のできるだけ多くの部分が埋められます。

  • headerLabel: この列のヘッダーに表示するテキスト。

  • rowAlign: コンテンツを左詰め、右詰め、中央揃えのいずれにするかを示すもの。

  • headerURL: 列ヘッダーのテキストをURLにリンクするために使用されます。

例11-3に示すように、次の手順は、表の各行にどのデータを表示するかを指定することです。

例11-3 ResultSetに表示するデータ

<$exec rsCreateResultSet("RowData","dDocName,dDocTitle,actions")$>
<$exec rsAppendNewRow("RowData")$>
<$RowData.dDocName = "<$dDocName$>"$>
<$RowData.dDocTitle = "<$dDocTitle$>"$>
<$RowData.actions = "<$include doc_info_action_image$>"$>

ColumnProperties ResultSetには、技術的に表の各列に行がある一方、RowDataにある行は1つのみです。このResultSetに入力されるデータは、次の形式になります。

<$RowData.%COLUMN_ID% = "%IDOCSCRIPT%"$>

RowData ResultSetの各列は、最終的な表に表示される実際の列を参照します。このResultSetの各列には、前に宣言されたColumnProperties ResultSetで対応するIDがあります。このResultSetの各セルには、Idoc Scriptの式が割り当てられます。さらに、これがHTMLドキュメントに書き込まれるにつれて、各行の表示中に評価されます。

次に、表に各行を表示するために、リソース・インクルードを作成する必要があります。

<$include create_slim_table_row_include$>

このリソース・インクルードを呼び出すと、slim_table_row_includeリソース・インクルードが作成されます。RowData ResultSetの解析と評価は、表の行ごとに行うのでなく、一度だけ行われます。

複数の行インクルードを設定するには(たとえば、アイテムのタイプごとに別々の行を表示する単一の表の場合)、次の手順を使用します。

  1. RowData ResultSetを削除して再作成します。

  2. 作成するリソース・インクルードの名前にrowIncludeNameを設定します。

  3. create_slim_table_row_includeをもう一度インクルードします。

例11-4は、表を表示するコードを示しています。

例11-4 表を表示するためのコード

<$include slim_table_header$>
<$loop SearchResults$>
  <$include slim_table_row_include$>
<$endloop$>
<$include slim_table_footer$>

表の外観を検索結果ページの表のようにするには、スクリプトで次の値を設定します。

<$UseRowHighlighting = true$>

「ヘッドライン表示」表に、ある特殊なカスタマイズを行うと、コンポーネントの作者または管理者は誰でも、任意の列のデータの表示方法を簡単にオーバーライドできます。例11-5は、コンポーネント内から宣言できるカスタム・インクルードを示しています。

例11-5 コンポーネント内でのカスタム・インクルード宣言

<@dynamichtml slim_table_title@>
  <b><$dDocTitle$></b>
<@end@>

dDocTitle:slimTableCellInclude=slim_table_titleIntradocDir/config/config.cfgファイルに追加されるか、またはスクリプト内から設定された場合は、定義されたカスタム・インクルードを使用して、dDocTitleを列IDとする「ヘッドライン表示」表がすべて表示されます。これによって、これらの列ではRowDataが無効となります。

11.2.2 サムネイル表示表

「サムネイル表示」の表は、別のやり方で作成されます。ResultSet ColumnPropertiesおよびRowDataは構成されません。そのかわり、例11-6に示すように、列の数が設定され、各セルのペイントにはIdocスクリプトのインクルード名が使用されます。これは、他の方法に比べて、カスタマイズの容易さもデータドリブン性も劣っていますが、このタイプの表は、構造もずっと単純です。

例11-6 「サムネイル表示」表のセルのコード

<$numDamColumns = 4$>
<$damCellIncludeName = "my_sample_dam_cell"$>
<$include dam_table_header$>
<$loop SearchResults$>
  <$include dam_table_item$>
<$endloop$>
<$include dam_table_footer$>

11.3 「アクション」メニューのカスタマイズ

カスタマイズの最初の手順は、 Actions列に「アクション」メニュー・アイコンを追加することです。例11-7では、前に使用されたサンプルの「ヘッドライン表示」表の各行に、「アクション」メニューを組み込んでいます。

例11-7 行にアクション・メニューを組み込むためのコード

<$RowData.actions = "<$include action_popup_image$>" &
  " <$include doc_info_action_image$>"$>

これによって、適切な列にアクション・イメージが挿入されます。ただし、それをクリックしても何も起りません。実際のメニューがHTMLページに書き込まれているわけではないからです。例11-8は、このメニューの構成に使用するデータを作成するコードを示しています。

例11-8 アクション・メニューを構成するデータ

<$exec rsCreateResultSet("PopupProps",
  "label,onClick,function,class,id,ifClause")$>

<$exec rsAppendNewRow("PopupProps")$>
<$PopupProps.label = lc("wwCheckOut")$>
<$PopupProps.function = "<$HttpCgiPath$>?IdcService=CHECKOUT" &
  "&dID=<$dID$>&dDocName=<$url(dDocName)$>" & 
  "&dDocTitle=<$url(dDocTitle)$>"$>
<$PopupProps.class = "document"$>
<$PopupProps.id = "checkout"$>

<$exec rsAppendNewRow("PopupProps")$>
<$PopupProps.label = lc("wwGetNativeFile")$>
<$PopupProps.function = "<$HttpCgiPath$>?IdcService=GET_FILE" &
  "&dID=<$dID$>&dDocName=<$url(dDocName)$>" & 
  "&allowInterrupt=1"$>
<$PopupProps.ifClause = "showNativeFileLink"$>
<$PopupProps.class = "document"$>
<$PopupProps.id = "getNativeFile"$>

<$exec rsAppendNewRow("PopupProps")$>
<$PopupProps.label = lc("wwTest")$>
<$PopupProps.function = "javascript:alert('<$js(dDocName)$>');"$>
<$PopupProps.ifClause = "showTestAction"$>
<$PopupProps.class = "debug"$>
<$PopupProps.id = "alertDocName"$>

このコードでは、PopupPropsというResultSetが作成され、その各行は作成中のメニューのアクションに対応しています。各アクションには、いくつかの属性を関連付けることができます。より共通性の高い属性をいくつか、次に示します。

例11-9に示すように、このデータが設定されたら、この「アクション」メニューを書き込むIdocスクリプトのリソースの作成に使用できます。

例11-9 「アクション」メニューを書き込むためのリソース

<$include create_action_popup_container_include$>

このリソースは、create_slim_table_row_includeのように機能します。action_popup_container_includeというIdocスクリプトの新規リソースが作成されます。その名前を変更するために、スクリプトで<$actionPopupContainerIncludeName = new_include_name$>と設定できます。

例11-10は、「ヘッドライン表示」表の各行でこのインクルードが呼び出されるようにするコードを示しています。

例11-10 表の各行でインクルードを呼び出すためのコード

<$exec rsCreateResultSet("PopupData", "actions")$>
<$exec rsAppendNewRow("PopupData")$>
<$PopupData.actions="<$include action_popup_container_include$>"$>

このコードでは、RowData ResultSetに類似したPopupData ResultSetが作成されます。これは同じような構造になっており、ユーザーがアクション・イメージをクリックするまで非表示になっている「アクション」メニューのコンテナの出力先として使用されます。

ここで作成された表には「アクション」メニューがあり、これは、適切なイメージをクリックするたびに検索結果ページに通常表示されるものに似ています。

これらのアクションの編集は、PopupProps ResultSetに行を追加するか、またはそのResultSetから行を削除したり、すでに存在している行を編集することによって行われます。このタイプのカスタマイズ以外にも、disabledActionPopupClasses変数およびdisabledActionPopupIds変数を設定することによって、アクションを非表示にすることができます。例11-11に示すように、これらは、config/config.cfgファイルまたはIdocスクリプト自体で設定できます。

例11-11 「アクション」メニューでアイテムを非表示にするためのコード

<$disabledActionPopupClasses = "workflow,folders"$>
<$disabledActionPopupIds = "getNativeFile,alertDocName"$>

これらの変数を設定すると、workflowfoldersのいずれかをクラスとするアクション、またはgetNativeFilealertDocNameのいずれかをIDとするアクションが、常に非表示となります。これらの変数を使用すると、コンテンツ・サーバーの管理者およびコンポーネントの作者は、グローバルに、または特定のページで、特定のアクションを非表示にすることができます。

コンポーネントの作者は、Idocスクリプトのリソース・インクルードの数をオーバーライドして、グローバルに、またはターゲットを絞って、この領域の機能を変更できます。次に示すインクルードは、利用可能なリソース・インクルードのごく一部です。