プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発
11gリリース1 (11.1.1.9.0)
E49666-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

27 コンテンツ・プレゼンタ表示テンプレートの作成

この章では、即時利用可能なコンテンツ・プレゼンタ表示テンプレート、新しい表示テンプレートの作成方法および表示テンプレートをユーザーが使用できるようにする方法について説明します。


注意:

コンテンツ・プレゼンタでは、コンテンツ・サーバーベースのコンテンツのみを使用できます。他のコンテンツ・リポジトリ接続タイプはサポートされません。

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

27.1 コンテンツ・プレゼンタ表示テンプレートについて

コンテンツ・プレゼンタ表示テンプレートは、コンテンツ・プレゼンタがポータルまたはFrameworkアプリケーション・ページ上でコンテンツ・アイテム(イメージとテキストを含む)をレンダリングする方法を定義するJSFFファイル(JSFページ・フラグメント)です。WebCenter Portalには即時利用可能な表示テンプレートがいくつか装備されており、これらを使用してすぐに作業を開始できますが、特定の表示要件を満たすために独自のテンプレートを作成することもできます。

コンテンツ・プレゼンタ表示テンプレートが値を提供する標準的な状況を次に示します。

コンテンツ・プレゼンタ表示テンプレートを使用してコンテンツを使用可能にすることによって、手動で個々のレイアウトを作成することなく、標準化されたテンプレートで複雑な表示問題を解決できます。ユーザーが表示テンプレートを使用できるようにすると、開発者を介さずに、事前定義済の部署または会社の標準に基づいてレイアウトの要件を解決できます。


ヒント:

サンプル表示テンプレートは$ORACLE_HOME/jdeveloper/webcenter/samples/contentpresenterに格納されています。これらのサンプル・ファイルは、Oracle JDeveloperに対するWebCenter Portalの拡張機能の一部としてインストールされています。

表示テンプレートでは充実したADFコンポーネントをすべて使用できるので、コンテンツを表示するために堅牢で人目を引くテンプレートをすばやく簡単に作成できます。ただし、テンプレートでこれらのコンポーネントを使用する必要はありません。

コンテンツ・プレゼンタ表示テンプレートでは、単一コンテンツ・アイテム、複数コンテンツ・アイテムまたは双方の組合せを処理できます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングしてから、単一アイテムのテンプレートをコールして選択アイテムの詳細をレンダリングできます。

各コンテンツ・アイテムは、WebCenter Contentリポジトリで定義された特定のコンテンツ・タイプに関連付けらます。コンテンツ・タイプはコンテンツ・アイテムのプロパティを定義します。コンテンツ・タイプはWebCenter Contentプロファイル定義とSite Studioのリージョン定義にマップできます。


ヒント:

コンテンツ・プレゼンタADFテンプレートを使用して、Site Studioリージョン・テンプレートではなくSite StudioとWebCenter Portalを統合することをお薦めします。推奨フローは次のとおりです。
  • Site Studioでリージョン定義を開発します。

  • JDeveloperを使用して、リージョン定義を参照するADFテンプレートを開発します。

  • テンプレートを公開してそれらをポータル・サーバーにインポートします。

  • コンテンツ・プレゼンタを使用して、コンテンツをレンダリングし、ユーザーがコンテンツを提供できるようにします。


コンテンツ・タイプはコンテンツ・リポジトリ(WebCenter Portalコンテンツ・サーバー)で作成されます。コンテンツ・プレゼンタ表示テンプレートの開発者は、選択されたコンテンツ・アイテムのページ上での表示方法を定義できるように、関連付けられたコンテンツ・タイプに定義されたプロパティの名前を知っておくことが必要です。


ヒント:

WebCenter Contentで定義されている既存コンテンツ・タイプのプロパティを判断する1つの方法は、ポータルの「コンテンツ・プレゼンタ構成」ダイアログを使用する方法です。この方法の詳細は、第27.3.8項「コンテンツ・タイプのプロパティ名の発見」を参照してください。

実行時に権限のあるエンド・ユーザーは、「コンテンツ・プレゼンタ構成」ダイアログで表示テンプレートを選択できます。コンテンツ・プレゼンタ・テンプレートの使用時期と使用方法の決定、およびベスト・プラクティスの詳細は、次のブログ・エントリを参照してください。

http://www.ateam-oracle.com/portal-and-content-content-integration-best-practices

27.2 デフォルト表示テンプレートの使用

WebCenter Portalには、デフォルトのコンテンツ・プレゼンタ表示テンプレートがいくつか装備されています。こうした事前に構築されているテンプレートは、単一コンテンツ・アイテムと複数コンテンツ・アイテムを表示するためのオプションを提供します。

たとえば、デフォルトのドキュメント詳細ビュー・テンプレートには、作成日付、変更日付、作成者のユーザー名、変更者のユーザー名およびパスを含む単一のコンテンツ・アイテムの詳細情報が表示されます。図27-7は、実行時にこのテンプレートで表示されるコンテンツ・アイテムを示しています。

図27-1 デフォルトのドキュメント詳細ビュー表示テンプレート

図27-1の説明が続きます
「図27-1 デフォルトのドキュメント詳細ビュー表示テンプレート」の説明

複数コンテンツ・アイテムの表示には、複数のコンテンツ・アイテムをアコーディオン形式で表示するアコーディオン・ビューを始め、いくつかのオプションが提供されています。この形式では、図27-2に示されているように、各アイテムを開いてその詳細を表示できます。(アコーディオン・ビューでは、常に1つのアイテムが開きます。つまり、すべてのアイテムを閉じることはできません。いつでも、どの単一アイテムを開くかのみを変更できます。)

図27-2 アコーディオン・ビュー表示テンプレート

図27-2の説明が続きます
「図27-2 アコーディオン・ビュー表示テンプレート」の説明

デフォルトの表示テンプレートの全リストは、第29.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。

27.3 コンテンツ・プレゼンタ表示テンプレートの作成

デフォルトの表示テンプレート(第27.2項「デフォルト表示テンプレートの使用」を参照)がニーズを満たさない場合、カスタムのコンテンツ・プレゼンタ・テンプレートを定義できます。


ヒント:

新しいコンテンツ・プレゼンタ表示テンプレートを作成するだけでなく、デフォルトのテンプレートの1つをコピーして変更することもできます。

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

27.3.1 コンテンツ・プレゼンタ表示テンプレートについて

コンテンツ・プレゼンタ表示テンプレートの定義方法は、ニーズに応じて異なります。一般的には、コンテンツの特定単一アイテムについて表示テンプレートを定義してから、単一アイテムの表示テンプレートへのコールを含む複数コンテンツ・アイテムの表示テンプレートを定義します。

テンプレート定義には、次のように他の表示テンプレートへのコールを含めることができます。

  • 単一コンテンツ・アイテムの表示テンプレートは、別の単一コンテンツ・アイテムの表示テンプレートをコールできます。

  • 複数コンテンツ・アイテムの表示テンプレートは、単一コンテンツ・アイテムの表示テンプレートをコールできます(次の例を参照)。

  • 複数コンテンツ・アイテムの表示テンプレートは、別の複数コンテンツ・アイテムの表示テンプレートをコールできます。

コンテンツ・プレゼンタ表示テンプレートを作成する際の基本的なタスクは、次のとおりです。

27.3.2 単一アイテムの表示テンプレートの作成

コンテンツ・プレゼンタ表示テンプレートを作成する単一コンテンツ・アイテムの例を次に示します。

  • ページ上で特定ルック・アンド・フィールで表示する個々のアイテム。

  • 特定タイプのアイテムの異なるビュー(例: 記事の短いビューと詳細ビュー)。

  • 類似アイテムの異なるバージョン(例: グループ別に異なるプロパティ・セットを使用して異なる方法でフォーマットされるプレス・リリース)。

単一コンテンツ・アイテムの表示テンプレートの定義では、表27-1にリストされているJSPタグを使用します。

表27-1 単一コンテンツ・アイテムのコンテンツ表示テンプレートのタグ

JSPタグ 説明

contentTemplateDef

必須。単一コンテンツ・アイテムのテンプレートを定義します。

属性:

var - この表示テンプレートによりレンダリングされるコンテンツ・ノードを指定します。テンプレート定義コードで、第27.3.7.1項「コンテンツ・アイテムの基本情報の取得」に記載されているEL式を使用して、ノードに関する必須情報を取得できます。

<dt:contentTemplateDef var="node">
  <af:outputText value="#{node.name}" />
</dt:contentTemplateDef>

renderProperty

オプション。指定ノード・プロパティの文字列値をインラインで取得およびレンダリングします。

属性:

id - このコンポーネントを識別します。この値は、ネーミング・コンテナである最寄りの親コンポーネント内で一意であることが必要です。

name - 取得するプロパティの名前を指定します。これがシステム・プロパティ(cm_createdBycm_createdDatecm_modifiedDateおよびcm_path)の場合は、ノード上の値が使用されます。指定しないと、primaryPropertyが定義されている場合、これが使用されます。

node - 使用するノードを指定します。この値は、マネージドBeanにバインドされた属性またはリクエスト属性変数のいずれかになります。

blockSize - バイナリ・プロパティのバイト列を読み込むための、ブロック・サイズをバイト数で指定します。デフォルトは2048バイトです。

startIndex - 印刷を開始する位置のインデックス(起点は0)をドキュメントのバイト数で指定します。デフォルトは0です。

endIndex - 印刷を停止する位置のインデックス(起点は0)をドキュメントのバイト数で指定します。デフォルトはblockSizeの値になります。

rendered - (レンダリング・レスポンス・フェーズ中に)このコンポーネントをレンダリングするか以降の任意のフォーム実行時に処理するかどうかを指定します。デフォルト値はtrueです。

<!--
  Handling of text-based primary
  properties (HTML, text, etc.).
-->
<dt:contentTemplateDef var="node">
    <cmf:renderProperty id="rp1" 
     name="#{node.primaryProperty.name}" 
     node="#{node}"/>
</dt:contentTemplateDef>

contentTemplate

オプション。contentTemplateDefの下にネストされます。

別の単一アイテム・テンプレートをコールします。

属性:

node - 必須。表示される必要があるコンテンツ・リポジトリ・ノードを指定します。

nodesHint - オプション。表示テンプレートが反復コンポーネントでコールされると、すべての可能なテンプレートの事前包含ができます。contentTemplatecontentTemplateDefタグの内部で使用されている場合は、この属性は必要ありません。

view - オプション。ターゲット・ビュー名を指定します。

id - オプション。JSFコンポーネントIDを指定します。

rendered - オプション。コンポーネントがレンダリングされるかどうかを指定します。

<dt:contentTemplateDef var="node">
  <af:outputText value="#{node.name}" >
  <dt:contentTemplate node="#{node}" 
     view="templates.pressrelease.item" 
     />
  </af:outputText>
</dt:contentTemplateDef>

単一コンテンツ・アイテムの表示テンプレートを作成するには:

  1. JDeveloperでJSFFファイルを作成します。

    1. 「ファイル」メニューから「新規」を選択します。

    2. 「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」「JSFページ・フラグメント」の順に選択します。

    3. 「OK」をクリックします。

    4. 「新規JSFページ・フラグメントの作成」ダイアログで、表示テンプレート・ファイルの名前を入力します。

    5. ポータルWebプロジェクトの oracle/webcenter/portalapp/pagesフォルダを指すように「ディレクトリ」フィールドを設定します。このディレクトリは正しいルート・パスから設定する必要があります。JDeveloperでは、ルート・パスはPROJECT_NAME > Webコンテンツになります。ファイル・システムの場合、ルート・パスはPROJECT_ROOT/public_htmlです。たとえば、PROJECT_ROOT/public_html/oracle/webcenter/portalapp/pagesになります。最初にpagesにサブフォルダを作成し、そのサブフォルダにJSFFを格納する方法をお薦めします。

  2. 「表示」「コンポーネント・パレット」の順に選択して、コンポーネント・パレットを開きます。

  3. コンポーネント・パレット最上部のドロップダウン・リスト(図27-3)で、次の手順に従います。

    • 表示テンプレート・タグのリストは、「WebCenterコンテンツ表示テンプレート」を選択します。

    • renderPropertyタグは、「WebCenterコンテンツ管理フェース」を選択します。

    図27-3 コンポーネント・パレットのコンテンツ表示テンプレート・タグ

    図27-3の説明が続きます
    「図27-3 コンポーネント・パレットのコンテンツ表示テンプレート・タグ」の説明

  4. 「ソース」ビューで、必要な表示テンプレート・タグをコンポーネント・パレットからページにドラッグ・アンド・ドロップして、テンプレートを定義します。各タグおよび必要なパラメータ値の情報は、表27-1を参照してください。

例27-1および例27-2に、単一コンテンツ・アイテム表示テンプレートの定義のサンプルを示します。これらの例のユース・ケースでは、特定のス類のドキュメント(プレス・リリース)が、会社内の2つの異なる部門によって作成され、それぞれの部門で独自のコンテンツ・タイプとプロパティを定義しています。これらのサンプル・コンテンツ・プレゼンタ表示テンプレートでは、これらの2つの異なるコンテンツ・タイプを一貫した方法で表示できます。

例27-1に示すテンプレートは、プレス・リリース・ドキュメントの見出しを表すxHeadingという名前のプロパティと、そのドキュメントの場所を表すxDestinationUrlというプロパティを使用するプレス・リリースを処理します。所定のコンテンツ・タイプに対するこうしたプロパティ名の取得方法を学ぶには、第27.3.8項「コンテンツ・タイプのプロパティ名の発見」を参照してください。

例27-1 プレス・リリース・ドキュメントのサンプル・コンテンツ・プレゼンタ表示テンプレート

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" 
          version="2.1" 
          xmlns:af="http://xmlns.oracle.com/adf/faces/rich" 
          xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates">
   <dt:contentTemplateDef var="node">
      <af:goImageLink text="#{node.propertyMap['xHeading'].value}" 
                      id="gil1" 
                      icon="#{node.icon.smallIcon}" 
                      destination="#{node.propertyMap['xDestinationUrl'].value}"
                      targetFrame="_blank">
      </af:goImageLink>
   </dt:contentTemplateDef>
</jsp:root>

例27-2に示すテンプレートは、プレス・リリース・ドキュメントの見出しを表すdDocTitleという名前のプロパティと、そのドキュメントの場所を表すxLinkUrlというプロパティを使用するプレス・リリースを処理します。

例27-2 別のプレス・リリース・ドキュメントのサンプル・コンテンツ・プレゼンタ・テンプレート

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" 
          version="2.1" 
          xmlns:af="http://xmlns.oracle.com/adf/faces/rich" 
          xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates">
   <dt:contentTemplateDef var="node">
      <af:goImageLink text="#{node.propertyMap['dDocTitle'].value}" 
                      id="gil1" 
                      icon="#{node.icon.smallIcon}" 
                      destination="#{node.propertyMap['xLinkUrl'].value}"
                      targetFrame="_blank">
      </af:goImageLink>
   </dt:contentTemplateDef>
</jsp:root>

27.3.3 複数アイテムの表示テンプレートの定義

コンテンツ・プレゼンタ表示テンプレートを作成する複数コンテンツ・アイテムの例を次に示します。

  • 1つのページに表示する一群の類似アイテム(例: 本のリストや写真による従業員名簿)。

  • 問合せ結果(例: 先週変更された全ドキュメント)。

  • WebCenter Contentフォルダの全ドキュメントのリスト。

コンテンツ・プレゼンタ表示テンプレートでは、単一アイテムと複数アイテムを組み合せることもできます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングしてから、単一アイテムのテンプレートをコールして選択アイテムの詳細をレンダリングできます。この手順の例は、A-Teamのブログ・エントリ「Enable Content Editing of Iterative Components」を参照してください。

複数コンテンツ・アイテムの表示テンプレートの定義では、表27-2にリストされているJSPタグを使用します。

表27-2 複数コンテンツ・アイテムのコンテンツ表示テンプレートのタグ

JSPタグ 説明

contentListTemplateDef

必須。複数コンテンツ・アイテムのテンプレートを定義します。

属性:

var - この表示テンプレートによりレンダリングされるコンテンツ・ノードを指定します。テンプレート定義コードで、第27.3.7.1項「コンテンツ・アイテムの基本情報の取得」に記載されているEL式を使用して、ノードに関する必須情報を取得できます。

<dt:contentListTemplateDef var="nodes">
  <af:iterator value="#{nodes}" var="node">
    <af:outputText value="#{node.name}" />
  </af:iterator>
</dt:contentListTemplateDef>

contentListTemplate

オプション。contentListTemplateDefの下にネストされます。

別の複数アイテム・テンプレートをコールします。

属性:

nodes - 必須。表示する必要があるVCRノードのリストを提供します

category - 必須。ターゲット・テンプレートのカテゴリを指定します。

view - 必須。ターゲット・ビュー名を指定します。

id - オプション。JSFコンポーネントIDを指定します。

rendered - オプション。コンポーネントがレンダリングされるかどうかを指定します。

<dt:contentListTemplateDef var="nodes">
<!--
  Reuse the default bulleted list view, but
  indent it with a <blockquote>
-->
  <f:verbatim>
    <blockquote>
  </f:verbatim>
  <dt:contentListTemplate nodes="#{nodes}" 
     category="oracle.webcenter.content.
         templates.default.category" 
     view="oracle.webcenter.content.
         templates.default.list.bulleted"/>
  <f:verbatim>
    </blockquote>
  </f:verbatim>
</dt:contentListTemplateDef>

contentTemplate

オプション。contentListTemplateDefの下にネストされます。

単一アイテム・テンプレートをコールします。

属性:

node - 必須。表示される必要があるコンテンツ・リポジトリ・ノードを指定します。

nodesHint - オプション。表示テンプレートが反復コンポーネントでコールされると、すべての可能なテンプレートの事前包含ができます。contentTemplatecontentListTemplateDefタグの内部で使用されている場合、この属性は通常必要とされます。

view - オプション。ターゲット・ビュー名を指定します。

id - オプション。JSFコンポーネントIDを指定します。

rendered - オプション。コンポーネントがレンダリングされるかどうかを指定します。

<dt:contentListTemplateDef var="nodes">
  <af:iterator rows="0" var="node" 
     varStatus="iterator" value="#{nodes}">
  <dt:contentTemplate node="#{node}" 
     view="templates.pressrelease.listitem" 
     nodesHint="#{nodes}"/>
  </af:iterator>
</dt:contentListTemplateDef>

複数コンテンツ・アイテムの表示テンプレートを定義するには:

  1. 第27.3.2項「単一アイテムの表示テンプレートの作成」の手順1から3の説明に従って、JDeveloperでJSFFファイルを作成し、コンポーネント・パレットを開きます。

  2. 「ソース」ビューで、必要な表示テンプレート・タグをコンポーネント・パレットからページにドラッグ・アンド・ドロップします。各タグと必要なパラメータ値の情報は、表27-2を参照してください。

例27-3は、複数コンテンツ・アイテムの表示テンプレートのサンプル定義を示しています。

例27-3 複数プレス・リリース表示用のサンプル表示テンプレート定義(press-release-list-view.jsff)

このテンプレート定義では、参照されるビュー(view="mycorp.content.templates.pressrelease.listitem")に従って、表示するように選択されたデータ・アイテムを順に処理します。

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" 
          xmlns:af="http://xmlns.oracle.com/adf/faces/rich" 
          xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates">
   <dt:contentListTemplateDef var="nodes">
      <af:panelGroupLayout layout="scroll" id="nodeListPanel" valign="middle">
        <af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}">
           <dt:contentTemplate node="#{node}" 
               view="mycorp.content.templates.pressrelease.listitem" 
               nodesHint="#{nodes}"/>
        </af:iterator>
      </af:panelGroupLayout>
   </dt:contentListTemplateDef>
</jsp:root>

27.3.4 レスポンシブ・テンプレートの使用

CSS3 Media Queriesを使用すると、コンテンツをレンダリングして、画面解像度などの条件に適応できます。デフォルトのコンテンツ・プレゼンタ・テンプレートである記事ビューと全記事ビューは、レスポンシブ・レイアウト用に、コンテンツ・プレゼンタ・テンプレートでCSS3 Media Queriesをどう使用するかを示す例です。これらのレスポンシブ・テンプレートの拡張方法は、第27.3.5項「レスポンシブ・テンプレートの拡張」を参照してください。コンテンツ・プレゼンタのデフォルトの表示テンプレートのパラメータは、第29.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。また、スマートフォン、タブレットなどのモバイル・デバイスのためのビューポート設定の最適化は、『Oracle WebCenter Portalでのポータルの構築』のモバイル・デバイスのポータルの最適化に関する項を参照してください。

27.3.4.1 前提条件

第27.3.4.2項「複数記事の表示」で説明されている記事ビューおよび全記事ビュー・テンプレートは、Site Studio RD_ARTICLEリージョン定義に依存します。そのため、記事ビューおよび全記事ビュー・コンテンツ・プレゼンタ・テンプレートを使用可能にするには、Site StudioをWebCenter Contentで有効にする必要があります。

Site Studioの有効化、およびコンテンツ・サーバーにRD_ARTICLEリージョン定義をシードする手順は次のとおりです。

  1. Site Studioを有効にします(『Oracle WebCenter Portalでのポータルの構築』のSite Studio統合の理解に関する項を参照)。

  2. Site Studioが有効になったら、WebCenter Portalを起動(または再起動)します(これで、RD_ARTICLEリージョン定義がシードされます)。

27.3.4.2 複数記事の表示

例27-4のテンプレート定義では、表示するように選択されたデータ・アイテムを順に処理し、3つのスタイル・クラスを使用します。

  • article: 各コンテンツ・アイテムに適用

  • article-3: ページが3列の行に分割される場合、最初の列に配置される各コンテンツ・アイテムに適用

  • article-2: ページが2列の行に分割される場合、最初の列に配置される各コンテンツ・アイテムに適用

スタイル・クラスは、articles.cssスタイル・シートに定義されています。

例27-4 複数記事表示用のサンプル表示テンプレート定義(articles.jsff)

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
          xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
          xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:rah="http://xmlns.oracle.com/webcenter/resourcehandler"
          xmlns:tr="http://myfaces.apache.org/trinidad">
   <dt:contentListTemplateDef var="nodes">
      <af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>
      <af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}"
                   id="it0">
         <h:panelGroup styleClass="#{(iterator.index % 3 == 0) ? 'article-3 ' : ''}#{(iterator.index % 2 == 0) ? 'article-2 ' : ''}article"
                       id="pg1">
            <af:commandLink immediate="true" partialSubmit="true" id="cl2">
               <rah:resourceActionBehavior id="rah1"
                                           serviceId="oracle.webcenter.content.presenter"
                                           resourceId="#{node.id}"
                                           resourceTitle="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}"
                                           useResourcePopup="never"/>
               <f:attribute name="taskFlowInstId"
                            value="a5fafea8-90e6-4972-997d-314401b6c98b"/>
               <f:attribute name="datasourceType" value="dsTypeSingleNode"/>
               <f:attribute name="datasource"
                            value="#{node.id.repositoryName}#dDocName:#{node.propertyMap['dDocName'].value}"/>
               <f:attribute name="templateView"
                            value="oracle.webcenter.content.templates.sitestudio.fullarticle"/>
               <f:attribute name="regionTemplate" value="#{false}"/>
               <af:outputText value="#{node.propertyMap['RD_ARTICLE:IMAGE'].asTextHtml}"
                              escape="false" id="ot4"/>
               <tr:panelHeader text="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}"
                               id="ph1">
                  <af:outputText value="#{node.propertyMap['RD_ARTICLE:SUMMARY'].asTextHtml}"
                                 escape="false" id="ot3"/>
               </tr:panelHeader>
            </af:commandLink>
         </h:panelGroup>
      </af:iterator>
   </dt:contentListTemplateDef>
</jsp:root>

27.3.4.3 CSS3 Media Queriesの使用

例27-5のスタイル・シートは、ブラウザの幅に応じて異なる方法でコンテンツをレンダリングするために、Media Queriesを使用します。

例27-5 CSS3 Media Queriesを使用するスタイル・シート(articles.css)

/* Default styles */
.article {
  display: block;
  float: left;
  width: 31.623931623931625%;
  margin-left: 2.564102564102564%;
  margin-bottom: 1em;
}
.article-3 {
  margin-left: 0;
  clear: both;
}
.article img {
  width: 100%;
  margin: 0 0 .25em;
  float: none;
  padding-top: 0;
  display: block;
  border: 0;
}
.article h1 {
  font-size: 1.5em;
}
 
@media only screen and (max-width : 480px) {
  /* up to width of iPhone (excluding iPhone 5 in landscape) */
  .article {
    margin-top: .5em;
    float: left;
    display: inline;
    width: 100%;
    margin-left: 0;
  }
  .article-3 {
    width: 100%;
    clear: none;
  }
  .article img {
    margin-right: 4%;
    width: 48%;
    float: left;
  }
  .article {
    font-size: 1em;
  }
  .article h1 {
    font-size: 1.25em;
  }
}
 
@media only screen and (min-width : 481px) and (max-width : 780px) {
  /* up to the width of iPad in portrait and iPhone 5 in landscape */
  .article {
    display: block;
    float: left;
    width: 48.71794871794871%;
    margin-left: 2.564102564102564%;
    clear: none;
  }
  .article-3 {
    margin-left: 2.564102564102564%;
    clear: none;
  }
  .article-2 {
    margin-left: 0;
    clear: both;
  }
  .article h1 {
    font-size: 1.25em;
  }
}
 
@media only screen and (min-width : 769px) and (max-width : 1024px) {
  /* up to the width of iPad in landscape */
}
 
@media only screen and (min-width : 1025px) {
  /* desktop */
}

27.3.5 レスポンシブ・テンプレートの拡張

次の項では、デフォルトのテンプレートがローカル要件を満たさない場合に、それらの編集に必要な手順について説明します。スマートフォン、タブレットなどのモバイル・デバイス用のビューポート設定の最適化は、『Oracle WebCenter Portalでのポータルの構築』のモバイル・デバイスのポータルの最適化に関する項を参照してください。

この項には次のサブセクションが含まれます:

27.3.5.1 記事ビュー・テンプレートの拡張

記事ビュー・テンプレートを拡張するには次の手順を実行します。

  1. 複数アイテムを表示するために空のテンプレートを作成し(第27.3.3項「複数アイテムの表示テンプレートの定義」参照)、JDEVELOPER/webcenter/samples/contentpresenter/ディレクトリにあるarticles.jsffのコンテンツを空のテンプレートにコピーします。

  2. 次のように変更して、artices.jsffによって使用されるCSSを新しいテンプレートに埋め込みます。

    <af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>
    

    変更後:

    <af:resource type="css">
    /* Default styles */
    .article {
      display: block;
      float: left;
      width: 31.623931623931625%;
      margin-left: 2.564102564102564%;
      margin-bottom: 1em;
    }
    .article-3 {
      margin-left: 0;
      clear: both;
    }
    .article img {
      width: 100%;
      margin: 0 0 .25em;
      float: none;
      padding-top: 0;
      display: block;
      border: 0;
    }
    .article h1 {
      font-size: 1.5em;
    }
     
    @media only screen and (max-width : 480px) {
      /* up to width of iPhone */
      .article {
        margin-top: .5em;
        float: left;
        display: inline;
        width: 100%;
        margin-left: 0;
      }
      .article-3 {
        width: 100%;
        clear: none;
      }
      .article img {
        margin-right: 4%;
        width: 48%;
        float: left;
      }
      .article {
        font-size: 1em;
      }
      .article h1 {
        font-size: 1.25em;
      }
    }
     
    @media only screen and (min-width : 481px) and (max-width : 780px) {
      /* up to the width of iPad in portrait */
      .article {
        display: block;
        float: left;
        width: 48.71794871794871%;
        margin-left: 2.564102564102564%;
        clear: none;
      }
      .article-3 {
        margin-left: 2.564102564102564%;
        clear: none;
      }
      .article-2 {
        margin-left: 0;
        clear: both;
      }
      .article h1 {
        font-size: 1.25em;
      }
    }
     
    @media only screen and (min-width : 769px) and (max-width : 1024px) {
      /* up to the width of iPad in landscape */
    }
     
    @media only screen and (min-width : 1025px) {
      /* desktop */
    }
    </af:resource>
    
  3. 要件に合うように新しいテンプレートを編集します(第27.3.5.3項「デフォルトのテンプレートの適応」参照)。

  4. 新しいテンプレートをポータル・リソースとしてエクスポートします(第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」参照)。

  5. WebCenter PortalまたはFrameworkアプリケーションに新しいテンプレートをアップロードします(第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」参照)。

27.3.5.2 全記事ビュー・テンプレートの拡張

全記事ビュー・テンプレートを拡張するには、次を実行します。

  1. 単一アイテムを表示するために空のテンプレートを作成し(第27.3.2項「単一アイテムの表示テンプレートの作成」参照)、JDEVELOPER/webcenter/samples/contentpresenter/ディレクトリにあるfull-article.jsffのコンテンツを空のテンプレートにコピーします。

  2. 次のように変更して、full-artice.jsffによって使用されるCSSを新しいテンプレートに埋め込みます。

    <af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>
    

    変更後:

    <af:resource type="css">
    /* Default styles */
    .full-article h1 {
      font-size: 1.5em;
    }
    .full-article-image img {
      margin-left: 4%;
      width: 48%;
      float: right;
    }
     
    @media only screen and (max-width : 480px) {
      /* up to width of iPhone */
      .full-article-image img {
        margin-left: 0;
        width: 100%;
        float: none;
      }
    }
     
    @media only screen and (min-width : 481px) and (max-width : 780px) {
      /* up to the width of iPad in portrait */
    }
     
    @media only screen and (min-width : 769px) and (max-width : 1024px) {
      /* up to the width of iPad in landscape */
    }
     
    @media only screen and (min-width : 1025px) {
      /* desktop */
    }
    </af:resource>
    
  3. 要件に合うように新しいテンプレートを編集します(第27.3.5.3項「デフォルトのテンプレートの適応」参照)。

  4. 新しいテンプレートをポータル・リソースとしてエクスポートします(第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」参照)。

  5. 新しいテンプレートをアップロードします(第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」参照)。

27.3.5.3 デフォルトのテンプレートの適応

この項では、記事ビューおよび全記事ビュー・テンプレートに対して行う変更、およびその変更方法の概要について説明します。例:

  • Internet Explorer 8などの古いブラウザでレスポンシブ・レイアウトをサポートするようにテンプレートを更新する場合。

  • 異なるリージョン定義を操作するするようにテンプレートを更新する場合。

これらの拡張については、次の項で説明します。

27.3.5.3.1 古いブラウザ用のレスポンシブ・レイアウトのサポート

現在のレスポンシブ・テンプレートはCSS3 Media Queriesに依存しますが、古いブラウザではサポートされていません。そのため、レスポンシブ・デザインを有効にするには、Media Queriesを受理してJavaScriptを使用できる、サード・パーティのJavaScriptライブラリを使用する必要があります。

これを行うには:

27.3.5.3.2 異なるリージョン定義の使用

この項では、レスポンシブ・テンプレート内のリージョン定義の変更方法について説明します。たとえば、TITLELEADIMAGEおよびBODYという4つの要素を含む、RD_NEWSという名前のリージョン定義があるとします(第27.3.10項「カスタム・ビューにおけるSite Studioリージョン要素の参照」参照)。この場合、この新しいリージョン定義を参照するようにテンプレートを更新します。それには、RD_ARTICLESの参照をRD_NEWSに変更し、SUMMARYの参照をLEADに変更します。

ニュース・ビュー

このテンプレートは、記事ビュー・テンプレートに基づいて新しいアイテム(RD_NEWSタイプ)のリストを表示します。

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
          xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
          xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:rah="http://xmlns.oracle.com/webcenter/resourcehandler"
          xmlns:tr="http://myfaces.apache.org/trinidad">
   <dt:contentListTemplateDef var="nodes">
      <af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>
      <af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}"
                   id="it0">
         <h:panelGroup styleClass="#{(iterator.index % 3 == 0) ? 'article-3 ' : ''}#{(iterator.index % 2 == 0) ? 'article-2 ' : ''}article"
                       id="pg1">
            <af:commandLink immediate="true" partialSubmit="true" id="cl2">
               <rah:resourceActionBehavior id="rah1"
                                           serviceId="oracle.webcenter.content.presenter"
                                           resourceId="#{node.id}"
                                           resourceTitle="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}"
                                           useResourcePopup="never"/>
               <f:attribute name="taskFlowInstId"
                            value="a5fafea8-90e6-4972-997d-314401b6c98b"/>
               <f:attribute name="datasourceType" value="dsTypeSingleNode"/>
               <f:attribute name="datasource"
                            value="#{node.id.repositoryName}#dDocName:#{node.propertyMap['dDocName'].value}"/>
               <f:attribute name="templateView"
                            value="oracle.webcenter.content.templates.newsitem"/>
               <f:attribute name="regionTemplate" value="#{false}"/>
               <af:outputText value="#{node.propertyMap['RD_NEWS:IMAGE'].asTextHtml}"
                              escape="false" id="ot4"/>
               <tr:panelHeader text="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}"
                               id="ph1">
                  <af:outputText value="#{node.propertyMap['RD_NEWS:LEAD'].asTextHtml}"
                                 escape="false" id="ot3"/>
               </tr:panelHeader>
            </af:commandLink>
         </h:panelGroup>
      </af:iterator>
   </dt:contentListTemplateDef>
</jsp:root>

ニュース・アイテム・ビュー

このテンプレートは、全記事ビュー・テンプレートに基づいてニュース・アイテム全体(View ID: oracle.webcenter.content.templates.newsitem)を表示します。

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
          xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
          xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:tr="http://myfaces.apache.org/trinidad">
     <dt:contentTemplateDef var="node">
        <af:resource type="css" source="/oracle/webcenter/content/templates/seeded/articles.css"/>
        <af:panelGroupLayout id="psl1" layout="vertical">
            <tr:panelHeader text="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}"
                            styleClass="full-article" id="ph1">
                <tr:panelGroupLayout id="pgl1" styleClass="full-article-image">
                    <af:outputText value="#{node.propertyMap['RD_NEWS:IMAGE'].asTextHtml}"
                                   escape="false" id="ot4"/>
                </tr:panelGroupLayout>
                <af:outputText value="#{node.propertyMap['RD_NEWS:BODY'].asTextHtml}"
                               escape="false" id="ot3"/>
            </tr:panelHeader>
        </af:panelGroupLayout>
    </dt:contentTemplateDef>
</jsp:root>
27.3.5.3.3 テンプレートにおけるレイアウトの更新

コンテンツにより適合するようにテンプレートのレイアウトを変更するとします。たとえば、1列のレイアウトでは、記事の要約のテキストが長い場合、記事ビュー・テンプレートはそのテキストをイメージの下にも表示します。

図27-4 広いレイアウトの記事

図27-4の説明が続きます
「図27-4 広いレイアウトの記事」の説明

これを変更して、イメージの下にテキストが表示されないようにできます。

図27-5 狭いレイアウトの記事

図27-5の説明が続きます
「図27-5 狭いレイアウトの記事」の説明

これを行うには、記事ビュー・テンプレートに基づいて新しいテンプレートを作成し、テキストのブロックにスタイル・クラス(article-text)を追加して、このスタイル・クラスの表示CSSプロパティを、狭いレイアウト用のtable-cellに設定します。

<?xml version = '1.0'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
          xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
          xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:rah="http://xmlns.oracle.com/webcenter/resourcehandler"
          xmlns:tr="http://myfaces.apache.org/trinidad">
   <dt:contentListTemplateDef var="nodes">
      <af:resource type="css">
      /* Default styles */
      .article {
        display: block;
        float: left;
        width: 31.623931623931625%;
        margin-left: 2.564102564102564%;
        margin-bottom: 1em;
      }
      .article-3 {
        margin-left: 0;
        clear: both;
      }
      .article img {
        width: 100%;
        margin: 0 0 .25em;
        float: none;
        padding-top: 0;
        display: block;
        border: 0;
      }
      .article h1 {
        font-size: 1.5em;
      }
      
      @media only screen and (max-width : 480px) {
        /* up to width of iPhone */
        .article {
          margin-top: .5em;
          float: left;
          display: inline;
          width: 100%;
          margin-left: 0;
        }
        .article-3 {
          width: 100%;
          clear: none;
        }
        .article img {
          margin-right: 4%;
          width: 48%;
          float: left;
        }
        .article {
          font-size: 1em;
        }
        .article h1 {
          font-size: 1.25em;
        }
        /* Set the display CSS property to table-cell for the article-text style class in the narrow layout */
        .article-text {
          display: table-cell;
        }
      }
      
      @media only screen and (min-width : 481px) and (max-width : 780px) {
        /* up to the width of iPad in portrait */
        .article {
          display: block;
          float: left;
          width: 48.71794871794871%;
          margin-left: 2.564102564102564%;
          clear: none;
        }
        .article-3 {
          margin-left: 2.564102564102564%;
          clear: none;
        }
        .article-2 {
          margin-left: 0;
          clear: both;
        }
        .article h1 {
          font-size: 1.25em;
        }
      }
 
      @media only screen and (min-width : 769px) and (max-width : 1024px) {
        /* up to the width of iPad in landscape */
      }
 
      @media only screen and (min-width : 1025px) {
        /* desktop */
      }
      </af:resource>
      <af:iterator rows="0" var="node" varStatus="iterator" value="#{nodes}"
                   id="it0">
         <h:panelGroup styleClass="#{(iterator.index % 3 == 0) ? 'article-3 ' : ''}#{(iterator.index % 2 == 0) ? 'article-2 ' : ''}article"
                       id="pg1">
            <af:commandLink immediate="true" partialSubmit="true" id="cl2">
               <rah:resourceActionBehavior id="rah1"
                                           serviceId="oracle.webcenter.content.presenter"
                                           resourceId="#{node.id}"
                                           resourceTitle="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}"
                                           useResourcePopup="never"/>
               <f:attribute name="taskFlowInstId"
                            value="a5fafea8-90e6-4972-997d-314401b6c98b"/>
               <f:attribute name="datasourceType" value="dsTypeSingleNode"/>
               <f:attribute name="datasource"
                            value="#{node.id.repositoryName}#dDocName:#{node.propertyMap['dDocName'].value}"/>
               <f:attribute name="templateView"
                            value="oracle.webcenter.content.templates.sitestudio.fullarticle"/>
               <f:attribute name="regionTemplate" value="#{false}"/>
               <af:outputText value="#{node.propertyMap['RD_ARTICLE:IMAGE'].asTextHtml}"
                              escape="false" id="ot4"/>
               <tr:panelHeader text="#{node.propertyMap['RD_ARTICLE:TITLE'].asTextHtml}"
                               id="ph1" styleClass="article-text">
                  <af:outputText value="#{node.propertyMap['RD_ARTICLE:SUMMARY'].asTextHtml}"
                                 escape="false" id="ot3"/>
               </tr:panelHeader>
            </af:commandLink>
         </h:panelGroup>
      </af:iterator>
   </dt:contentListTemplateDef>
</jsp:root>

27.3.6 コンテンツ・プレゼンタ表示テンプレートでのイメージ・レンディションの使用

異なる状況においては異なるイメージのレンディションを使用する場合があります。たとえば、デスクトップ・ブラウザを使用してイメージを含むページを表示する場合、大きくて解像度の高いイメージを使用する場合があります。ただし、同じページをモバイル・デバイスで表示する場合、スクリーン・サイズは小さく、ダウンロード・スピードは遅くなることが予想されるため、解像度の高いイメージは適切でない可能性があります。モバイル・デバイスでは、小さくて解像度の低いバージョンやレンディションのイメージの方が適しています。コンテンツ・プレゼンタ表示テンプレートには、イメージのどのレンディションをどの状況で表示するかを指定する機能があります。

異なるイメージ・レンディションの使用を可能にするために、コンテンツ・プレゼンタ表示テンプレートではEL式を使用してどのイメージ・レンディションをいつ使用するかを決定できます。


注意:

イメージ・レンディションはCMISではサポートされていません。

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

27.3.6.1 前提条件

イメージ・レンディションのフル・サポートには、イメージがチェックインされているWebCenter ContentでDigital Asset Management (DAM)が有効になっている必要があります。DAMが有効でない場合、サポートが個別のwebレンディションおよびthumbnailレンディションのみに制限されます。DAMを有効にする詳細は、『Oracle WebCenter Portalの管理』のDigital Asset Managerの有効化に関する項を参照してください。

DAMが有効な場合、イメージがチェックインする際に様々なレンディションが自動的に作成され、チェックイン時にレンディション・セットによって判断されます。DAMによっていくつかの組込みレンディション・セットが提供されますが、WebCenter Content管理者も新しいレンディション・セットを作成することができます。個々のレンディションは、適切なEL式を使用することでコンテンツ・プレゼンタ表示テンプレートの名前で参照できます。

DAMおよびレンディション・セットの詳細は、『Oracle WebCenter Contentのマネージング』の「イメージおよびビデオ変換の操作」の章を参照してください。


注意:

WebCenter Portalでは、イメージのみの複数のレンディションをサポートします(ビデオはサポートしません)。

また、次のその他の前提条件が満たされている必要があります。

  • WebCenter Contentリリース11gR1 (11.1.1.9.0)以降を使用する必要があります。

  • WebCenter PortalおよびWebCenter Contentは同じOHSフロントエンドを使用する必要があります。

  • webContextRootパラメータは、WebCenter PortalがWebCenter Contentオブジェクトを検索できるように、共通OHSフロントエンドに従って指定する必要があります(例、/cs)。

  • WebCenter PortalとWebCenter Content間で、シングル・サインオンが使用可能である必要があります。

27.3.6.2 イメージ・ドキュメントのイメージ・レンディション情報の取得

コンテンツ・プレゼンタ表示テンプレートでイメージ・ドキュメントのイメージ・レンディション情報を取得するには、次のEL式を使用します。

node.renditionsMap['renditionName:renditionProperty']

ここで:

  • renditionNameは次のようになります。

    • DAM実装では、適切なレンディション・セットからのレンディションの名前です。たとえば、webthumbnailpreviewまたはlowresです。

    • 非DAM実装では、webまたはthumbnailです。


      注意:

      renditionNameでは、大文字と小文字を区別しないため、previewPreviewと同じレンディションを指します。

  • renditionPropertyは必須のレンディション情報です。

    多くの場合、ページにレンディションを表示できるようにイメージ・レンディションのURLを取得します。これには、urlプロパティを使用します。

    nametypewidthheightresolutionsizeまたはcontentTypeなどのレンディションに関するその他の情報も取得できます。


    注意:

    webレンディションおよびthumbnailレンディションでは、sizecontentTypeおよびurlを適用でき、nameはwebレンディションやthumbnailレンディションの名前ではなく、ネイティブ・ファイルの名前を返します。

たとえば、イメージのpreviewレンディションを表示するには、次の情報をテンプレートに追加します。

<af:image source="#{node.renditionsMap['preview:url']}" shortDesc="Preview rendition" id="imageContent3"/>

注意:

可能である場合、urlはWebCenter Contentのイメージ・レンディションの静的レンディションURLを指します。静的URL特定できない場合、urlはWebCenter Portal showPropertyサーブレットを使用します。

例27-6は、イメージのカルーセルを表示するコンテンツ・プレゼンタ・ディスプレイ・テンプレートを示します。カルーセルがデスクトップ・デバイスに表示される場合(rendered="#{DeviceAgent.desktop})、イメージにはa200レンディションが使用されます(node.renditionsMap['a200:url'])。カルーセルがモバイル・デバイスに表示される場合(rendered="#{DeviceAgent.mobile})、小さいthumbnailレンディションが使用されます(node.renditionsMap['thumbnail:url'])。

例27-6 イメージ・レンディションを使用するコンテンツ・プレゼンタ・テンプレート

<?xml version='1.0' encoding='utf-8'?>
<!-- Copyright (c) 2014 Oracle and/or its affiliates.
All rights reserved. -->
 
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
          xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
          xmlns:dt="http://xmlns.oracle.com/webcenter/content/templates"
          xmlns:f="http://java.sun.com/jsf/core">
  <dt:contentListTemplateDef var="nodes">
    <af:carousel id="c1"
                 value="#{nodes}"
                 var="node"
                 emptyText="#{templateBundle.EMPTY_NODES}"
                 inlineStyle="#{DeviceAgent.desktop ? '' : 'height:200px;'}">
      <f:facet name="nodeStamp">
        <af:carouselItem id="ci1"
                         text="#{node.isFolder ? node.name : (empty node.propertyMap['dDocTitle'] ?
                               node.name : node.propertyMap['dDocTitle'].value.stringValue)}"
                         shortDesc="#{not empty node.propertyMap['xComments'].value.stringValue ?
                                    node.propertyMap['xComments'].value.stringValue :
                                    node.primaryProperty.value.binaryValue.name}">
          <af:image id="cimg1"
                    source="#{node.primaryProperty.isImage ? node.renditionsMap['a200:url'] :
                            node.icon.largeIcon}"
                    shortDesc="#{node.primaryProperty.value.binaryValue.name}"
                    rendered="#{DeviceAgent.desktop}"/>
          <af:image id="cimg2"
                    source="#{node.primaryProperty.isImage ? node.renditionsMap['thumbnail:url'] : node.icon.largeIcon}"
                    shortDesc="#{node.primaryProperty.value.binaryValue.name}"
                    rendered="#{DeviceAgent.mobile}"/>
 
                </af:carouselItem>
            </f:facet>
        </af:carousel>
    </dt:contentListTemplateDef>
</jsp:root> 

27.3.6.3 Site Studioリージョン要素のイメージ・レンディションの取得

Site Studioリージョン定義にあるイメージのイメージ・レンディションの扱いは、Site Studio内でリージョン定義が定義されている方法によって決まります。元のイメージを定義する単一リージョン要素を含むリージョン定義、または各イメージ・レンディションで別々のリージョン要素を含むリージョン定義を含むいずれかのリージョン定義を持つことができます。コンテンツ・プレゼンタ表示テンプレートでは、リージョン定義が設定されている方法に従って適切なEL式を使用する必要があります。

たとえば、リージョン定義には元のイメージの単一のリージョン要素(myimage) が含まれる場合があり、そのため、特定のイメージ・レンディションを表示するには、WebCenter Contentからどのレンディションを取得するかを指定できるEL式を使用する必要があります(たとえば、highresまたはlowres)。あるいは、デスクトップ・ブラウザに適しているレンディションに1つの要素(desktop)、モバイル・デバイスに適しているレンディションに1つの要素(mobile)など、様々なイメージ・レンディションごとにそれぞれのリージョン要素がリージョン定義にある場合、使用するレンディションを定義するリージョン要素を直接指すEL式を使用できます。


ヒント:

将来、さらにイメージ・レンディションを追加する可能性が高い場合は(たとえば、新しいデバイス用に)、新規レンディションが追加されるたびに新しいリージョン要素を作成することなくコンテンツ・プレゼンタ表示テンプレートに含めることができるため、単一イメージ・リージョン要素でリージョン定義を作成することには意味があります。

  • 元のイメージを定義する単一のリージョン要素がリージョン定義に含まれている場合、使用するイメージのレンディションを指定することもできます。

    node.propertyMap['regionDefinitionName:elementName/Rendition:renditionName'].asTextHtml
    
  • 特定のイメージ・レンディションを定義するリージョン定義でリージョン要素を参照するには、次のEL式を使用します。

    node.propertyMap['regionDefinitionName:elementName'].asTextHtml
    

ここで:

  • regionDefinitionNameはリージョン定義の名前です。

  • elementNameはリージョン要素の名前です。

  • renditionNameは次のようになります。

    • DAM実装では、適切なレンディション・セットからのレンディションの名前です。たとえば、webthumbnailhighresまたはlowresです。

    • 非DAM実装では、webまたはthumbnailです。


      注意:

      renditionNameでは、大文字と小文字を区別しないため、previewPreviewと同じレンディションを指します。

EL式は、該当するイメージ・レンディションのURLを示すsrc要素とともにHTML imgタグを戻します。


注意:

可能な場合は、src URLはWebCenter Contentのイメージ・レンディションの静的レンディションURLを指します。静的URL特定できない場合、urlはWebCenter Portal showPropertyサーブレットを使用します。

図27-6は、記事のSite Studioリージョン定義(RD_REUSEIMG)を表示します。定義には、記事のタイトル、サマリー、本体およびイメージのリージョン要素が含まれます。単一のイメージ・リージョン要素は元のイメージ(Image)を定義します。

図27-6 単一イメージ・リージョン要素付きのリージョン定義

図27-6の説明が続きます
「図27-6 単一のイメージ・リージョン要素付きのリージョン定義」の説明

モバイル・デバイス上でイメージの低解像度レンディション(lowres)を使用するには、次のコードを使用します。

<af:outputText value="#{node.propertyMap['RD_REUSEIMG:Image/Rendition:lowres'].asTextHtml}" escape="false" id="olmaget" rendered="#{DeviceAgent.mobile}"/>

注意:

指定したrenditionNameがイメージに存在しない場合は、イメージのプライマリ・レンディションがかわりに使用されます。

図27-7では、別々の記事に別々のリージョン定義(RD_NAMEDREND)を示します(記事のイメージに可能な別々のレンディションの個別のリージョン要素を含みます)。BaseImageThumbnailImageA100ImageおよびA200Image

図27-7 名前付きレンディションのリージョン要素付きのリージョン定義

図27-7の説明が続きます
「図27-7 名前付きレンディションのリージョン要素付きのリージョン定義」の説明

モバイル・デバイス上でイメージをレンダリングするためにThumbnailImageリージョン要素を使用するには、次のコードを使用します。

<af:outputText value="#{node.propertyMap['RD_NAMEDREND:ThumbnailImage'].asTextHtml}" escape="false" id="olmaget" rendered="#{DeviceAgent.mobile}"/>

注意:

(元のイメージではなく)明示的に特定のイメージ・レンディションを参照するリージョン要素に指定したrenditionNameでEL式を使用する場合、(renditionNameによって指定されたレンディションではなく)リージョン要素によって定義されたレンディションが返されます。

WYSIWYGまたは静的リスト・リージョン要素内では、node.propertyMap['regionDefinitionName:elementName'] EL式を使用して、イメージの特定のレンディションを参照できます。あるいは、要素内のすべてのイメージの特定のレンディションを使用するために、WYSIWGまたは静的リスト・リージョン要素内で元のイメージを参照してからnode.propertyMap['regionDefinitionName:elementName/Rendition:renditionName']EL式を使用することができます。

例27-7では、特定のレンディション(Preview)が静的リスト・リージョン要素(paragraph)内のイメージにどのように使用されるかを示します。

例27-7 静的リスト・リージョン要素内のイメージ・レンディションの使用

<af:iterator value="#{node.propertyMap['RD_MYREGION:paragraph/Rendition:Preview'].values}"
             var="row"
             id="i1"
             rendered="#{DeviceAgent.desktop}">
  <af:showDetailItem text="#{row.nestedValue[0].value}" id="sdi1" stretchChildren="first">
    <af:panelGroupLayout layout="horizontal" id="tt" inlineStyle="padding:5px;">
      <af:outputText escape="false" value="#{row.nestedValue[1].value}" id="ld1"/>
      <af:outputText escape="false" value="#{row.nestedValue[2].value}" id="ld2"/>
    </af:panelGroupLayout>
  </af:showDetailItem>
</af:iterator>

例27-8で、RD_MYREGION:bodyはWYSIWYGリージョン要素に対応します。WYSIWYG要素内のすべてのイメージはA100レンディションを使用してレンダリングされます。

例27-8 WYSIWYGリージョン要素内のイメージ・レンディションの使用

<af:outputText value="#{node.propertyMap['RD_MYREGION:body/Rendition:A100'].asTextHtml}"
               escape="false" id="ot5"/>

注意:

WYSIWYGまたは静的リスト要素が特定のイメージ・レンディションを定義する要素を指す場合、そのレンディションは、Rendition:renditionName構文を使用して指定したレンディションにかわって使用されます。

27.3.7 EL式を使用したコンテンツ・アイテム情報の取得

この項では、コンテンツ・アイテムに関する特定情報を取得および表示するためにコンテンツ・プレゼンタ表示テンプレートの定義で使用できるEL式について説明します。

第27.3.2項「単一アイテムの表示テンプレートの作成」および第27.3.3項「複数アイテムの表示テンプレートの定義」で説明したコンテンツ・プレゼンタ表示テンプレートを定義するときに、次の表で説明するEL式を使用します。これらの式は、表27-1および表27-2で説明したJSPタグとともに使用されます。

この項には次のサブセクションが含まれます:

27.3.7.1 コンテンツ・アイテムの基本情報の取得

表27-3にリストされているEL式を使用すると、表示テンプレートでコンテンツ・アイテムの基本情報を表示できます。

表27-3 基本コンテンツ情報を取得するためのEL式

EL式 説明

#{node.createdBy}

ノードの作成者のユーザー名を返します。

#{node.createdDate}

ノードの作成日を返します。

#{node.hasParentNode}

現在のノードが有効な親ノードIDを持っている場合または親がないノードの場合、trueを返します。

#{node.icon}

現在のWebアプリケーションで定義されたアイコン・サービスを返します。

#{node.id}

ノードの識別子を返します。

#{node.isFolder}

このノードがフォルダまたはコンテナと関連付けられている場合、trueを返します。

#{node.isInherited}

このノードが別のオブジェクト・クラス定義によって継承された場合、trueを返します。

#{node.modifiedBy}

ノードの最終更新者のユーザー名を返します。

#{node.modifiedDate}

ノードの最終更新日を返します。

#{node.name}

ノードの名前を返します。

#{node.parentId}

親ノードの識別子を返します。

#{node.path}

ノードのパスを返します。

#{node.primaryProperty}

ノードの主要プロパティがある場合、それを返します。

#{node.propertyMap}

プロパティ名をキーとする、ラップされたプロパティ・オブジェクトのマップを作成して返します。プロパティには#{node.propertyMap['myProp']}または#{node.propertyMap.myProp}としてアクセスできます。

#{node.url}

このノードの主要プロパティがある場合、そのノード・プロパティURLサービスのインスタンスを返します。デフォルトでは、#{node.url.renderUrl}に解決されます。これは#{node.primaryProperty.url}のショートカットです。


27.3.7.2 コンテンツ・アイテムのプロパティおよび値の操作

表27-4表27-5で説明されているEL式を使用して、コンテンツ・アイテムのノード・プロパティとプロパティ値に対するアクションを実行します。


ヒント:

所定のコンテンツ・タイプに定義されたプロパティ名を判断するには、第27.3.8項「コンテンツ・タイプのプロパティ名の発見」を参照してください。

表27-4 コンテンツ・アイテムのノード・プロパティのEL式

EL式 説明

#{node.propertyMap['myProp'].asTextHtml}

タイプがテキストまたはHTMLの場合、テキストまたはHTMLとしてこのプロパティを返します。isHTMLまたはisPlainTexttrueの場合、テキストまたはHTMLは文字列として返されます。

#{node.propertyMap['myProp'].hasValue}

このプロパティに値が関連付けられている場合、trueを返します。

#{node.propertyMap['myProp'].icon}

現在のWebアプリケーションで定義されたアイコン・サービスを返します。

#{node.propertyMap['myProp'].indexedName}

複数値を持つプロパティのインデックス付き名前を返します。たとえば、colorという名前の複数値を持つノード・プロパティにblueredorangeが含まれている場合、red値のインデックス付き名前はcolor[1]になります。#{node.propertyMap['color[2]'].value.stringValue}というEL式は、このリストのorangeというcolorを参照します。

#{node.propertyMap['myProp'].isAudio}

プロパティのMIMEタイプがaudio/の場合、trueを返します。

#{node.propertyMap['myProp'].isBinary}

現在のプロパティのタイプがProperty.BINARYの場合、trueを返します。

#{node.propertyMap['myProp'].isBoolean}

現在のプロパティのタイプがProperty.BOOLEANの場合、trueを返します。

#{node.propertyMap['myProp'].isCalendar}

現在のプロパティのタイプがProperty.CALENDARの場合、trueを返します。

#{node.propertyMap['myProp'].isDouble}

現在のプロパティのタイプがProperty.DOUBLEの場合、trueを返します。

#{node.propertyMap['myProp'].isExcel}

プロパティのMIMEタイプがapplication/vnd.ms-excelapplication/excelapplication/x-excelまたはapplication/x-msexcelの場合、trueを返します。

#{node.propertyMap['myProp'].isGIF}

プロパティのMIMEタイプがimage/gifの場合、trueを返します。

#{node.propertyMap['myProp'].isHTML}

プロパティのMIMEタイプがtext/htmlの場合、trueを返します。

#{node.propertyMap['myProp'].isImage}

プロパティのMIMEタイプがimage/の場合、trueを返します。

#{node.propertyMap['myProp'].isJPEG}

プロパティのMIMEタイプがimage/jpegの場合、trueを返します。

#{node.propertyMap['myProp'].isLink}

現在のプロパティのタイプがProperty.LINKの場合、trueを返します。

#{node.propertyMap['myProp'].isLong}

現在のプロパティのタイプがProperty.LONGの場合、trueを返します。

#{node.propertyMap['myProp'].isMSWord}

プロパティのMIMEタイプがapplication/vnd.ms-wordまたはapplication/mswordの場合、trueを返します。

#{node.propertyMap['myProp'].isMultiValued}

このプロパティが複数値を持つ場合、trueを返します。

#{node.propertyMap['myProp'].isNested}

現在のプロパティのタイプがProperty.NESTEDの場合、trueを返します。

#{node.propertyMap['myProp'].isPDF}

プロパティのMIMEタイプがapplication/pdfの場合、trueを返します。

#{node.propertyMap['myProp'].isPlainText}

プロパティのMIMEタイプがtext/plainの場合、trueを返します。

#{node.propertyMap['myProp'].isPNG}

プロパティのMIMEタイプがimage/pngの場合、trueを返します。

#{node.propertyMap['myProp'].isPowerPoint}

プロパティのMIMEタイプがapplication/vnd.ms-powerpointapplication/mspowerpointまたはapplication/x-mspowerpointの場合、trueを返します。

#{node.propertyMap['myProp'].isPrimaryProperty}

このプロパティが主要プロパティの場合、trueを返します。

#{node.propertyMap['myProp'].isRequired}

このプロパティが必須の場合、trueを返します。

#{node.propertyMap['myProp'].isRetricted}

このプロパティが制限付きの場合、trueを返します。

#{node.propertyMap['myProp'].isRichText}

プロパティのMIMEタイプがtext/richtextの場合、trueを返します。

#{node.propertyMap['myProp'].isString}

現在のプロパティのタイプがProperty.STRINGの場合、trueを返します。

#{node.propertyMap['myProp'].isTextBased}

このプロパティがテキスト・ベース(isHTMLisPlainTextisStringisCalendarisBooleanisDoubleisLong)の場合、trueを返します。

#{node.propertyMap['myProp'].isVideo}

プロパティのMIMEタイプがvideo/の場合、trueを返します。

#{node.propertyMap['myProp'].isXML}

プロパティのMIMEタイプがtext/xmlの場合、trueを返します。

#{node.propertyMap['myProp'].isZip}

プロパティのMIMEタイプがapplication/zipの場合、trueを返します。

#{node.propertyMap['myRefNode'].linkAsNode}

myRefNodeプロパティをノードとして返します。ここで、myRefNodeはリンク・プロパティ・タイプです。プロパティはEL式で参照できます。

:
#{node.propertyMap['myRefNode'].linkAsNode.primaryProperty.url.renderUrl}

#{node.propertyMap['myProp'].name}

プロパティの名前を返します。

#{node.propertyMap['myProp'].nestedProperty}

この単一値プロパティのネストされたプロパティを取得して、プロパティのリストを返します。

#{node.propertyMap['myProp'].type}

このプロパティ値のデータ型を返します。たとえば、StringIntegerLongなどです。

#{node.propertyMap['myProp'].url}

このプロパティのURLサービスを返します。

#{node.propertyMap['myProp'].value}

このプロパティの値サービスを返します。

#{node.propertyMap['myProp'].nestedProperties}

静的リストの要素を返します。例:

 <af:iterator var="listItem"
  value="#{node.propertyMap['ARTICLE_RGD:Paragraphs'].nestedProperties}"
  varStatus="vs">
  <af:outputText id="ot1" value='#{listItem[0].value}'/>
  <af:outputText id="ot3" value="#{listItem[1].value}"/>
  </af:iterator>

#node.propertyMap['regionDefName:elementName'].asTextHtml}

Site StudioデータをHTMLテキストとして返します。例:

#node.propertyMap['RD_NEWS:LEAD'].asTextHtml}

要素名(LEAD)には、接頭辞としてリージョン定義名(RD_NEWS)が付きます。第27.3.10項「カスタム・ビューにおけるSite Studioリージョン要素の参照」も参照してください。


表27-5 コンテンツ・アイテムのノード・プロパティ値のEL式

EL式 説明

#{node.propertyMap['myProp'].value.binaryValue}

バイナリ・プロパティ・タイプまたは添付ファイルのカスタム属性を返します。binaryValueに使用できる属性は次のとおりです。

  • contentType – バイナリ・コンテンツのMIMEタイプを返します(例: textまたはhtml)。

  • name – バイナリ・コンテンツのファイル名を返します(例: index.html)。

  • size – バイナリ・コンテンツのサイズを返します。サイズを返せない場合、-1を返します。

#{node.propertyMap['myProp'].value.booleanValue}

このプロパティの値をjava.lang.Booleanとして返します。

#{node.propertyMap['myProp'].value.calendarValue}

このプロパティの値をjava.util.Calendarとして返します。

#{node.propertyMap['myProp'].value.doubleValue}

このプロパティの値をjava.lang.Doubleとして返します。

#{node.propertyMap['myProp'].value.longValue}

このプロパティの値をjava.lang.Longとして返します。

#{node.propertyMap['myProp'].value.orderedPosition}

プロパティが複数値を持つ場合、プロパティのインデックスを返します。

:
#{node.propertyMap['address[0]'].value.orderedPosition},

#{node.propertyMap['myProp'].value.stringValue}

このプロパティの値をjava.lang.Stringとして返します。

:
#{node.propertyMap['firstName'].value.stringValue}


27.3.7.3 コンテンツ・アイテムのアイコンおよびURLの操作

表27-6表27-7で、コンテンツ・アイテムとプロパティに関連付けられたアイコンとURLを操作するためのEL式について説明します。

表27-6 コンテンツ・アイテムのノードまたはプロパティ・アイコンのEL式

EL式 説明

#{node.icon.largeIcon}

#{node.propertyMap['myDoc'].icon.largeIcon}

大きいアイコンのイメージ・リソースのURLを返します。

:
<af:image source="#{node.propertyMap['projectFolder'].largeIcon}"/>

#{node.icon.smallIcon}

#{node.propertyMap['myDoc'].icon.smallIcon}

小さいアイコンのイメージ・リソースのURLを返します。

:
<af:image source="#{node.icon.smallIcon}" />


表27-7 コンテンツ・アイテムのノードURLのEL式

EL式 説明

#{node.url.downloadUrl}

バイナリ・コンテンツへのURLを作成します。ダウンロードを強制し、オペレーティング・システムはコンテンツ・タイプに基づいてコンテンツをレンダリングします。

:
<af:goLink destination="#{node.url.downloadUrl}" targetFrame="_blank"/>

#{node.url.renderUrl}

バイナリ・コンテンツへのURLを作成します。コンテンツ・タイプに基づいてブラウザがコンテンツをレンダリングできるようにします。

デフォルトでは、#{node.url}#{node.url.renderUrl}に解決します。

:
<af:goLink destination="#{node.url.renderUrl}" targetFrame="_blank"/>


27.3.7.4 イメージ・レンディションの操作

表27-8では、イメージの特定のレンディションに関する情報(そのレンディションを使用してイメージをレンダリングするためのURLを含む)を取得するために使用できるEL式を示します。

表27-9では、Site Studioリージョン要素用に別のイメージ・レンディションを取得するために使用できるEL式を示します。

イメージ・レンティションの詳細は、第27.3.6項「コンテンツ・プレゼンタ表示テンプレートでのイメージ・レンディションの使用」を参照してください。

表 27-8 イメージ・ドキュメントのイメージ・レンディション用EL式

EL式 説明

#{node.renditionsMap['renditionName:url']}

イメージ・レンディションのURLを返します。例:

http://mymachine.example.com:8888/cs/groups/
personalspaces/@pewebcenter/
@799c4d7d-255c-46c8-80f5-0d06c848dd65/documents/
document/awrf/mdax/~edisp/~extract/
ID_001642~3~staticrendition/preview.gif

可能である場合、urlはWebCenter Contentのイメージ・レンディションの静的レンディションURLを指します。静的URL特定できない場合、urlはWebCenter Portal showPropertyサーブレットを使用します。

#{node.renditionsMap['renditionName:name']}

レンディションの名前、たとえばwebthumbnailまたはhighresを返します。

webレンディションおよびthumbnailレンディションでは、nameはwebレンディションまたはthumbnailレンディションではなく、ネイティブ・ファイルの名前を返します。

#{node.renditionsMap['renditionName:type']}

イメージ・レンディションのファイル・タイプ(たとえば、preview)を返します。

typeプロパティは、webレンディションおよびthumbnailレンディションでは有効ではありません。

#{node.renditionsMap['renditionName:width']}

ピクセルでイメージ・レンディションの幅(たとえば、250)を返します。

widthプロパティは、webレンディションおよびthumbnailレンディションでは有効ではありません。

#{node.renditionsMap['renditionName:height']}

ピクセルでイメージ・レンディションの高さ(たとえば、34)を返します。

heightプロパティは、webレンディションおよびthumbnailレンディションでは有効ではありません。

#{node.renditionsMap['renditionName:resolution']}

イメージ・レンディションの解像度(DPI)(たとえば、96 dpi)を返します。

resolutionプロパティは、webレンディションおよびthumbnailレンディションでは有効ではありません。

#{node.renditionsMap['renditionName:size']}

イメージ・レンディションのファイル・サイズ(たとえば、3133)を返します。

#{node.renditionsMap['renditionName:contentType']}

イメージ・レンディションのMIMEタイプ(たとえば、image/gif)を返します。


表27-9 Site Studioリージョン要素のイメージ・レンディション用EL式

EL式 説明

#{node.propertyMap['regionDefinitionName:elementName'].asTextHtml}

特定の要素に定義されているイメージのURLに設定されているsrc要素とともにHTML imgタグを返します。例:

<img src="http://mymachine.example.com:9400
/cs/idcplg?IdcService=GET_FILE&amp;dDocName=
id_038497&amp;RevisionSelectionMethod=LatestReleased" 
alt="S3-1" class="">

このELを使用して、イメージの特定のレンディションを定義するSite Studioリージョン要素を示します。

可能な場合は、URLはWebCenter Contentのイメージ・レンディションの静的レンディションURLを指します。静的URL特定できない場合、urlはWebCenter Portal showProperty サーブレットを使用します。

#{node.propertyMap['regionDefinitionName:elementName/Rendition:renditionName'].asTextHtml}

特定の要素に定義されているイメージの特定のイメージ・レンディションのURLに設定されているsrc要素とともにHTML imgタグを返します。例:

<img src="/cs/groups/wc081512c/
@sb5cdcaa4610341a8bb8387effdf21790/documents/document/
awrf/mdm4/~edisp/~extract/
ID_038497~1~staticrendition/preview.gif" alt="S3-1" 
class=""> 

指定したイメージ・レンディションがイメージに存在しない場合、元のイメージのURLが返されます。

このELを使用して、指定したrenditionNameを表示する元のイメージを定義するSite Studioリージョン要素を示します。

可能な場合は、URLはWebCenter Contentのイメージ・レンディションの静的レンディションURLを指します。静的URL特定できない場合、urlはWebCenter Portal showProperty サーブレットを使用します。


27.3.7.5 グループ・ポータル情報の操作

表27-10および表27-11に、コンテンツ・プレゼンタ・テンプレートでのグループ・ポータル情報の操作に使用できるEL式を示します。

表27-10 基本グループ・ポータル情報のEL式

EL式 説明

#{spaceContext.currentSpace.metadata.createdBy}

#{spaceContext.space[portalName].metadata.createdBy}

現在のグループ・ポータルまたは指定したグループ・ポータルを作成したユーザーを返します。

#{spaceContext.currentSpace.metadata.creationDate}

#{spaceContext.space[portalName].metadata.creationDate}

現在のポータルまたは指定したポータルが作成された日時を表すjava.util.Calendarオブジェクトを返します。

#{spaceContext.currentSpace.metadata.customAttributes[attributeName]}

#{spaceContext.space[portalName].metadata.customAttributes[attributeName]}

attributeNameというポータルの特定のカスタム属性の値を返します。

#{spaceContext.currentSpace.metadata.defaultLanguage}

#{spaceContext.space[portalName].metadata.defaultLanguage}

現在のポータルまたは指定したポータルのデフォルト言語を返します。

#{spaceContext.currentSpace.metadata.description}

#{spaceContext.space[portalName].metadata.description}

現在のポータルに関連付けられた説明と表示名を、ポータルが作成された言語で返します。ポータル名が翻訳されている場合、翻訳された名前は表示されません。

例: #{spaceContext.space['FinanceProject'].metadata.description}

財務活動に従事するすべての複合チームを評価します。

#{spaceContext.currentSpace.metadata.displayName}

#{spaceContext.space[portalName].metadata.displayName}

現在のポータルまたは指定したポータルに関連付けられた表示名を、ポータルが作成された言語で返します。ポータル名が翻訳されている場合、ポータルが作成された名前が表示されます。

例:

Web20Portalという名前のグループ・ポータルの表示名がWeb 2.0 Portalの場合、

#{spaceContext.space['Web20Portal'].metadata.displayName}

これは、Web 2.0 Portalと評価されます。

#{spaceContext.currentSpace.metadata.guid}

#{spaceContext.space[portalName].metadata.guid}

現在のポータルまたは指定したポータルに関連付けられた一意のIDを返します。

#{spaceContext.space[portalName].metadata.icon}

#{spaceContext.currentSpace.metadata.icon}

現在のポータルまたは指定したポータルに関連付けられたアイコンへのURLを返します。

#{spaceContext.currentSpace.metadata.keywords}

#{spaceContext.space[portalName].metadata.keywords}

現在のポータルまたは指定したポータルに関連付けられた検索可能なキーワードのカンマ区切りリストを返します。

#{spaceContext.currentSpace.metadata.lastUpdatedDate}

#{spaceContext.space[portalName].metadata.lastUpdatedDate}

現在のグループ・ポータルまたは指定したグループ・ポータルが最後に更新された日時を表すjava.util.Calendarオブジェクトを返します。

#{spaceContext.space[portalName].metadata.logo}

#{spaceContext.currentSpace.metadata.logo}

現在のポータルまたは指定したポータルのロゴに関連付けられたイメージへのパスを返します。

#{spaceContext.currentSpace.metadata.name}

#{spaceContext.space[portalName].metadata.name}

通常、ポータルのバックエンドでプリティURLで使用される、現在のポータルまたは指定したポータルの名前を返します。

#{spaceContext.currentSpace.metadata.groupSpaceURI}

#{spaceContext.space[portalName].metadata.groupSpaceURI}

現在のポータルまたは指定したポータルのプリティURLを返します。

#{spaceContext.currentSpace.metadata.closed}

#{spaceContext.space[portalName].metadata.closed}

ポータルが閉じられているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.discoverable}

#{spaceContext.space[portalName].metadata.discoverable}

ユーザーがポータルの存在を検索または「マイ・ポータル」のリストからの取得によって検出できるかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.offline}

#{spaceContext.space[portalName].metadata.offline}

ポータルが遮断されているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.publishRSS}

#{spaceContext.space[portalName].metadata.publishRSS}

ポータルがRSSフィードを公開しているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.selfRegistration}

#{spaceContext.space[portalName].metadata.selfRegistration}

ユーザーによるポータルのサブスクライブが許可されているかどうかを示すブール値を返します。

#{spaceContext.currentSpace.metadata.unsubscriptionApprovalRequired}

#{spaceContext.space[portalName].metadata.unsubscriptionApprovalRequired}

現在のポータルまたは指定したポータルからのサブスクライブ解除に承認が必要かどうかを表すブール値を返します。


表27-11 ポータルUI情報のEL式

EL式 説明

#{spaceContext.space[portalName].metadata.uiMetadata.gsSiteTemplateId}

#{spaceContext.currentSpace.metadata.uiMetadata.gsSiteTemplateId}

現在のポータルまたは指定したポータルに関連付けられたページ・テンプレートのIDを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.rcForGSPages}

#{spaceContext.currentSpace.metadata.uiMetadata.rcForGSPages}

現在のポータルまたは指定したポータルに関連付けられたリソース・カタログのIDを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.rcForGSSiteTemplates}

#{spaceContext.currentSpace.metadata.uiMetadata.rcForGSSiteTemplates}

現在のポータルのページ・テンプレートに関連付けられたリソース・カタログのIDを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.gsSiteStructureId}

#{spaceContext.currentSpace.metadata.uiMetadata.gsSiteStructureId}

現在のポータルに関連付けられたナビゲーション・モデルのIDを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.skin}

#{spaceContext.currentSpace.metadata.uiMetadata.skin}

現在のポータルに関連付けられたADF Facesスキン・ファミリを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.footerHidden}

#{spaceContext.currentSpace.metadata.uiMetadata.footerHidden}

ポータルのフッターが非表示かどうかを表すブール値を返します。

#{spaceContext.space[portalName].metadata.uiMetadata.copyrightMessage}

#{spaceContext.currentSpace.metadata.uiMetadata.copyrightMessage}

ポータルで使用する著作権メッセージを返します。

#{spaceContext.space[portalName].metadata.uiMetadata.privacyPolicyUrl}

#{spaceContext.currentSpace.metadata.uiMetadata.privacyPolicyUrl}

従っているプライバシ・ポリシー・ドキュメントのURLを返します。


27.3.8 コンテンツ・タイプのプロパティ名の発見

コンテンツ・プレゼンタ表示テンプレートの開発者は、選択されたコンテンツ・アイテムのページ上での表示方法を定義できるように、関連付けられたコンテンツ・タイプに定義されたプロパティの名前を知っておくことが必要です。

各コンテンツ・アイテムは、WebCenter Contentリポジトリで定義された特定のコンテンツ・タイプに関連付けらます。コンテンツ・タイプはWebCenter Contentプロファイル定義とSite Studioのリージョン定義にマップできます。タイプは、WebCenter Contentに作成され、コンテンツ・アイテムのプロパティを定義します。コンテンツ・アイテムのコンテンツ・タイプのプロパティ名は、表示名とは異なり、コンテンツ・サーバーから取得する必要があります。詳細は、『Oracle WebCenter Contentのマネージング』のコンテンツ・タイプの定義に関する項を参照してください。


注意:

RESTサービスを使用しても、コンテンツ・タイプのプロパティ名を取得できます。詳細は、第31章「コンテンツ管理REST API」を参照してください。

27.3.9 表示テンプレートにおける外部ファイルの参照

場合によっては、CSSファイルのような外部ファイルを表示テンプレートで参照する必要があります。このようなすべての参照では、Webアプリケーションのルートへの相対パスか絶対パスを指定します。例:

  • 絶対パスhttp://host:port/mypath/file.css

  • 相対パス/webcenter/mypath/file.css

外部ファイルに対するローカル参照は使用しないでください。第27.5項「コンテンツ・プレゼンタ表示テンプレートの有効化」で説明されているように、外部ファイルへのローカル参照は、コンテンツ・プレゼンタ表示テンプレートのWebCenter Portalアプリケーションへのアップロードに含まれないため、動作しません。

27.3.10 カスタム・ビューにおけるSite Studioリージョン要素の参照

カスタム表示テンプレートを使用してSite Studioリージョン定義要素を表示できます。たとえば、TITLELEADIMAGEおよびBODYという4つの要素を持つRD_NEWSというSite Studioリージョン定義があると仮定します。コンテンツ・プレゼンタ表示テンプレートでは、次のようなノード・プロパティEL式を使用して、これらの要素を参照できます。

#node.propertyMap['RD_NEWS:LEAD'].asTextHtml}

例27-9は、こうしたSite Studioリージョン要素をcontentTemplateDef定義に含める方法を示します。

例27-9 テンプレートにおけるSite Studioリージョン要素の参照

<dt:contentTemplateDef var="node">
   <af:panelGroupLayout layout="vertical" id="pgl3">
     <af:panelGroupLayout layout="horizontal" valign="top" inlineStyle="background-color:#FFF; padding:10px;" id="pgl4">
         <af:panelGroupLayout layout="vertical" id="pgl2" valign="top">
            <af:outputText value="#{node.propertyMap['dInDate'].value.calendarValue}" id="ot3" styleClass="bodytext" converter="javax.faces.DateTime"/>
          </af:panelGroupLayout>
          <af:spacer width="10px;" id="s1" inlineStyle="background-color:#DDD; color:white;"/>
          <af:panelGroupLayout layout="vertical" id="pgl1" valign="top">
             <af:outputText value="#{node.propertyMap['xTargetGroup'].value}" id="ot12" inlineStyle="background-color:#0A9FC0; color:white; text-align:left; padding:5px;"/>
            <af:goLink text="#{node.propertyMap['RD_NEWS:TITLE'].asTextHtml}" id="gil1" 
                destination="#{'/faces/home/news-viewer?news_id='}#{node.propertyMap['dDocName'].value}" styleClass="newstitle"/>
           <af:outputText value="#{node.propertyMap['RD_NEWS:LEAD'].asTextHtml}" id="ot2" styleClass="bodytext"/>  
         </af:panelGroupLayout>
       <af:panelGroupLayout layout="vertical" id="pgl32" valign="top" styleClass="newsimage">
         <af:outputText value="#{node.propertyMap['RD_NEWS:IMAGE'].asTextHtml}" escape="false" id="ot1"  inlineStyle="max-width:100px;"/>
       </af:panelGroupLayout>
     </af:panelGroupLayout>
     <af:panelGroupLayout layout="horizontal" id="aaaa">
     </af:panelGroupLayout>
   </af:panelGroupLayout>
</dt:contentTemplateDef>

OTNの詳細

複数のテンプレートでSite Studioリージョン要素を参照する方法を示す完全なエンドツーエンドの例は、WebCenterアーキテクチャ・チームのブログ・エントリ(http://www.ateam-oracle.com/content-presenter-cmis-complete)を参照してください。

27.3.11 コンテンツ・プレゼンタ表示テンプレートの使用

コンテンツ・タスク・フローでの表示テンプレートの使用の詳細は、第29.5項「コンテンツ・タスク・フローのページへの追加」および第29.7.1項「コンテンツ・プレゼンタ・タスク・フローのパラメータと即時利用可能な表示テンプレート」を参照してください。Portal Frameworkアプリケーションへの表示テンプレートの統合の詳細は、第27.5項「コンテンツ・プレゼンタ表示テンプレートの有効化」を参照してください。


注意:

コンテンツ・プレゼンタの表示テンプレートを使用してWikiページをPortal Frameworkアプリケーションで表示すると、デフォルトでそのWikiページ内のリンクがドキュメント・ビューアで表示されます。コンテンツ・プレゼンタを使用してWikiページのリンクを表示する場合、adf-config.xmlファイルを編集する必要があります。詳細は、第30.3.5項「コンテンツ・プレゼンタでのWikiページ・リンクの表示」を参照してください。

27.4 ページへのコンテンツ・プレゼンタ・タスク・フローの追加

設計時または実行時にコンテンツ・プレゼンタ・タスク・フローを追加できます。設計時のJDeveloperを使用したコンテンツ・プレゼンタの追加の詳細は、第29章「ポータル・ページへのコンテンツ・タスク・フローおよびドキュメント・コンポーネントの追加」を参照してください。実行時のコンテンツ・プレゼンタの追加の詳細は、『Oracle WebCenter Portalでのポータルの構築』の「コンテンツ・プレゼンタを使用したコンテンツの公開」の章を参照してください。

27.5 コンテンツ・プレゼンタ表示テンプレートの有効化

この項では、ポータルまたはFrameworkアプリケーションのコンテンツ・プレゼンタでコンテンツ・プレゼンタ表示テンプレートを使用する方法を説明します。


注意:

ローカルで構成されたJDev環境を使用してPortal Frameworkアプリケーションを開発する場合、アプリケーションでコンテンツ・プレゼンタ表示テンプレートを使用するには、第27.5.1項「ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート」の説明に従ってポータル・リソースとしてエクスポートします。第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」で説明されているアップロード・タスクの実行は不要です。

27.5.1 ポータル・リソースとしてのコンテンツ・プレゼンタ表示テンプレートのエクスポート

この項では、ポータル・リソースとしてコンテンツ・プレゼンタ表示テンプレートをエクスポートする方法を説明します。この手順は、実行時にポータルおよびコンテンツ・プレゼンタにコンテンツ・プレゼンタ表示テンプレートを追加する際に必要です。

  1. 前述の第27.3項「コンテンツ・プレゼンタ表示テンプレートの作成」の説明に従ってコンテンツ・プレゼンタ表示テンプレートを作成します。

  2. アプリケーション・ナビゲータで、コンテンツ・プレゼンタ表示テンプレート・ファイル(JSFFファイル)を右クリックし、「ポータル・リソースの作成」を選択します。

  3. 「ポータル・リソースの作成」ダイアログに入力します。このダイアログは、単一アイテムと複数アイテムのどちらのテンプレートを作成するかによって異なります。単一アイテムのテンプレートのダイアログは図27-8に示されています。複数アイテムのテンプレートのダイアログは図27-9に示されています。

    図27-8 単一アイテムのテンプレートの「ポータル・リソースの作成」ダイアログ

    図27-8の説明が続きます
    「図27-8 単一アイテムのテンプレートの「ポータル・リソースの作成」ダイアログ」の説明

    図27-9 複数アイテムのテンプレートの「ポータル・リソースの作成」ダイアログ

    図27-9の説明が続きます
    「図27-9 複数アイテムのテンプレートの「ポータル・リソースの作成」ダイアログ」の説明

    通常は「ポータル・リソースの作成」ダイアログのデフォルト設定で十分ですが、「ビューID」フィールドに一意の値を入力する必要があります。「表示名」は、実行時に表示テンプレートのドロップダウン・メニューに表示される名前です。

    OTNの詳細

    ビューIDパラメータは人間が判読可能な形式を意図しているので、自動的には生成されません。たとえば、ビューIDを使用して、あるテンプレートを別のテンプレートからプログラムによって参照できます。たとえば、複数コンテンツ・アイテムのテンプレートで各アイテムのタブをレンダリングし、選択されたタブの下で使用される単一アイテムのテンプレートをコールして、選択されたアイテムの詳細をレンダリングできます。また、たとえば、コンテンツ・プレゼンタ・タスク・フローのパラメータとしてビューIDを渡すことで、あるテンプレートを別のテンプレートに含めることができます。これを示す詳細な例は、WebCenterアーキテクチャ・チームのブログ・エントリ(http://www.ateam-oracle.com/content-presenter-cmis-complete)を参照してください。第27.3.10項「カスタム・ビューにおけるSite Studioリージョン要素の参照」も参照してください。

    単一アイテムのテンプレート用の「ポータル・リソースの作成」ダイアログには、他に次の属性が含まれます。

    • テンプレート・タイプ – テンプレートが単一アイテムと複数アイテムのどちらのテンプレートかを反映します。

    • コンテンツ・リポジトリ名 – デフォルトでは、ポータル・リソースは、アプリケーションのデフォルト・コンテンツ接続に関連付けられたリポジトリを使用します。ポータル内で使用するためにポータル・リソースをエクスポートする場合、ポータルの接続名で使用されるものと一致するリポジトリを選択する必要があります。

    • コンテンツ・タイプ – テンプレートが有効なコンテンツ・タイプを選択できます。メニューに表示されるコンテンツ・タイプのリストは、選択されたコンテンツ・リポジトリに応じて異なります。

    • コンテンツ・タイプのデフォルト・ビュー – 「True」に設定すると、表示テンプレートが、リポジトリとコンテンツ・タイプの所定の組合せに使用するデフォルト・テンプレートであることを指定します。

    • ビューID – この項で前述したように、テンプレートをプログラム的に参照するために使用する一意の値。

    複数アイテムのテンプレート用の「ポータル・リソースの作成」ダイアログには、他に次の属性が含まれます。

    • テンプレート・タイプ – テンプレートが単一アイテムと複数アイテムのどちらのテンプレートかを反映します。

    • カテゴリ名 – 表示テンプレートのカテゴリに指定する名前。カテゴリを説明する名前を指定するか、「デフォルトのテンプレート」のカテゴリ名を使用できます。

    • カテゴリID – カテゴリのID。カテゴリ名として「デフォルトのテンプレート」を選択すると、このフィールドは読取り専用となり、oracle.webcenter.content.templates.default.categoryが設定されます。新しいカテゴリを作成する場合、この値には一意の文字列を指定できます。たとえば、oracle.webcenter.content.templates.pressrelease.categoryを指定できます。2つのリソースが同じIDを持つ場合、それらはユーザー・インタフェースで同じグループにまとめられます。

    • ビューID – この項で前述したように、テンプレートをプログラム的に参照するために使用する一意の値。


      注意:

      「ポータル・リソースの作成」ダイアログの他のフィールドの詳細は、第9.6.3項「ポータル・リソースをJDeveloperからエクスポートする方法」を参照してください。

  4. 終了したら、ダイアログで「OK」をクリックします。

  5. コンテンツ・プレゼンタ表示テンプレート(JSFF)ファイルを再度右クリックして、今回は「ポータル・リソースのエクスポート」を選択します。

  6. 「ポータル・リソースのエクスポート」ダイアログで、エクスポートしたポータル・リソース(JSPX)・ファイルを配置するディレクトリを入力するか参照します。このファイルはファイル・システムの任意の場所に配置できます。

  7. 「ポータル・リソースのエクスポート」ダイアログで「OK」をクリックします。

これで、コンテンツ・プレゼンタ表示テンプレートがポータル・リソースとしてエクスポートされたので、次の手順でそれをポータルにアップロードします。表示テンプレートのポータル・リソースをアップロードすると、ポータル・ページにコンテンツ・プレゼンタを追加するときに、表示テンプレートのリストから使用可能になります。

27.5.2 新しいコンテンツ・プレゼンタ表示テンプレートのアップロード

新しい表示テンプレートは、リソース・マネージャを含むデプロイ済のポータルまたはFrameworkアプリケーションにアップロードできます。アプリケーション管理者がコンテンツ・プレゼンタ表示テンプレートをポータルまたはFrameworkアプリケーションにアップロードするには:


注意:

コンテンツ・プレゼンタ表示テンプレートおよびターゲット・アプリケーションを開発した設計時のFrameworkアプリケーションとポータルで、同じリポジトリ接続名と詳細にする必要があります。また、表示テンプレートの外部ファイルへの参照は、絶対パスまたは相対パス参照で指定する必要があります。第27.3.9項「表示テンプレートにおける外部ファイルの参照」を参照してください。


注意:

WebCenter Portalインスタンス内の特定のポータルのスコープからのアップロードは、ポータルの管理ツールのアプリケーション・スコープからのアップロードとは異なります。詳細は、第55.1.5項「JDeveloperでのWebCenter Portalアセットの編集」の、アプリケーションレベル・リソースとポータルレベル・リソースの項を参照してください。

  1. ポータルまたはFrameworkアプリケーションを開きます。

  2. 「管理」をクリックします。

    管理者権限を持っている必要があります。

  3. 「共有アセット」を選択します。

  4. 「外観とレイアウト」の「コンテンツ・プレゼンタ」をクリックします。

  5. 図27-10に示された「アップロード」を選択します。

    図27-10 表示テンプレート・ポータル・リソースのアップロード

    図27-10の説明が続きます
    「図27-10 表示テンプレート・ポータル・リソースのアップロード」の説明

  6. 「新しいコンテンツ・プレゼンタのアップロード」ダイアログで、ファイル・システム上に保存したポータル・リソース・ファイルに移動します。

  7. テンプレート・ファイルを選択したら、「OK」をクリックします。操作に成功した場合、「情報」ダイアログが「リソースは正常にアップロードされました。」というメッセージとともに表示されます。

  8. 図27-11に示すように、コンテンツ・プレゼンタ・テンプレートのリストから該当するコンテンツ・プレゼンタ表示テンプレートを見つけてそれを選択します。

    図27-11 テンプレートの表示と非表示の状態の切替え

    図27-11の説明が続きます
    「図27-11 テンプレートの表示と非表示の状態の切替え」の説明

  9. テンプレートをユーザーに表示し、コンテンツ・プレゼンタで使用できるようにするには、「使用可能」チェック・ボックスを選択します。

これで、新しいコンテンツ・プレゼンタ表示テンプレートを、ポータルまたはFrameworkアプリケーションのコンテンツ・プレゼンタで使用する準備が整いました。

27.5.3 新しいコンテンツ・プレゼンタ表示テンプレートのテスト

この項では、コンテンツ・プレゼンタを使用してコンテンツ・プレゼンタ表示テンプレートをテストする方法を説明します。

  1. コンテンツ・プレゼンタ表示テンプレートを追加したポータルまたはFrameworkアプリケーションを現在実行中でない場合、これを起動します。このアプリケーションには、コンテンツ・プレゼンタが使用できるWebCenter Content接続が必要です。ポータルでは、前の項で説明されている設定手順を完了したばかりの場合、「管理」ページの右上隅のポータルに戻るリンクをクリックします。

  2. 新しいコンテンツ・プレゼンタ表示テンプレートを使用するポータルまたはFrameworkアプリケーションに移動します。それを編集できる必要があることに注意してください。

  3. オプションとして、表示テンプレートをテストするために新しいページを作成します。「ページ・アクション」メニューから「新規ページの作成」を選択します。次に、「保存」「閉じる」を選択します。

  4. 新規ページまたは既存のページで、「ページ・アクション」メニューから「ページの編集」を選択します。

  5. コンテンツ・プレゼンタを追加するページの部分で「コンテンツの追加」ボタンを選択します。

  6. 図27-12に示すように、「コンテンツの追加」ダイアログで「コンテンツ管理」フォルダを開きます。

    図27-12 コンテンツ管理フォルダのオープン

    図27-12の説明が続きます
    「図27-12 コンテンツ管理フォルダのオープン」の説明

  7. 「コンテンツの追加」ダイアログで、コンテンツ・プレゼンタの隣の「追加」ボタンをクリックします。

  8. 「コンテンツの追加」ダイアログを閉じます。

  9. コンテンツ・プレゼンタ・ツール・バーでタスク・フローの「編集」アイコンを選択します(図27-13を参照)。

    図27-13 「編集」アイコンの選択

    図27-13の説明が続きます
    「図27-13 「編集」アイコンの選択」の説明

  10. これが新しいページの場合、「コンテンツ」タブで1つ以上のコンテンツ・アイテムを選択します。

  11. 「コンテンツ・プレゼンタ構成」ウィンドウで、「テンプレート」タブを選択します。

  12. 図27-14に示されているように、「テンプレート」メニューからコンテンツ・プレゼンタ表示テンプレートを選択します。

    図27-14 コンテンツ・プレゼンタ表示テンプレートの選択

    図27-14の説明が続きます
    「図27-14 コンテンツ・プレゼンタ表示テンプレートの選択」の説明

このコンテンツ・プレゼンタ・テンプレートが、コンテンツ・プレゼンタ・インスタンスに適用されます。コンテンツ・プレゼンタと表示テンプレートの使用の詳細は、第29.2項「ドキュメント・タスク・フローの理解」第27.2項「デフォルト表示テンプレートの使用」を参照してください。

27.6 実行時の処理

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

27.6.1 実行時の概要

コンテンツ・プレゼンタ表示テンプレートを定義したら、コンテンツ・プレゼンタ・タスク・フロー・パラメータでコンテンツと表示テンプレートを指定して、アプリケーションのページにコンテンツ・プレゼンタ・タスク・フローを追加できます(第29.6項「コンテンツ・タスク・フローのパラメータの変更」第27.2項「デフォルト表示テンプレートの使用」を参照)。

アプリケーションにドキュメント・サービスを統合する場合(第28章「ドキュメントの統合」を参照)、『Oracle WebCenter Portalでのポータルの構築』の「コンテンツ・プレゼンタを使用したコンテンツの公開」の章で説明されているように、アプリケーションのエンド・ユーザーは「コンテンツ・プレゼンタ構成」ダイアログでコンテンツとコンテンツ・プレゼンタ表示テンプレートを選択して、アプリケーションの編集可能なページにコンテンツを含めることができます。「コンテンツ・プレゼンタ構成」ダイアログで公開する表示テンプレートをコンテンツ・プレゼンタが識別する方法については、第27.6.2項「選択されたコンテンツ・アイテムの表示テンプレートの識別」を参照してください。

27.6.2 選択されたコンテンツ・アイテムの表示テンプレートの識別

実行時にユーザーが「コンテンツ・プレゼンタ構成」ダイアログでコンテンツを選択すると、コンテンツ・プレゼンタはリソース・マネージャをチェックして、選択されたコンテンツ・アイテムに適した表示テンプレートを識別し、ユーザーが選択できるように「コンテンツ・プレゼンタ構成」ダイアログの「テンプレート」ページに有効なテンプレートのリストを公開します。第9章「ポータル・リソース管理の概要」も参照してください。アップロードしたテンプレートも、選択可能になるように、リソースのリストで使用可能にする必要があります。詳細は、第27.5.2項「新しいコンテンツ・プレゼンタ表示テンプレートのアップロード」を参照してください。

単一コンテンツ・アイテムのテンプレートの場合は、コンテンツ・プレゼンタは次の優先順位に従って有効なテンプレートのリストを生成します。

  1. リソース・マネージャで、コンテンツ・アイテムのコンテンツ・リポジトリとコンテンツ・タイプに一致するテンプレート定義をチェックします。

  2. デフォルトのコンテンツ・リポジトリ(*)と指定のコンテンツ・タイプに一致するテンプレート定義を追加します。

  3. 継承されたコンテンツ・タイプに一致するテンプレート定義を追加します。

  4. デフォルトのコンテンツ・リポジトリ(*)とデフォルトのコンテンツ・タイプ(*)に一致するテンプレート定義を追加します。

複数コンテンツ・アイテムのテンプレートの場合は、コンテンツ・プレゼンタは次の優先順位に従って有効なテンプレートのリストを生成します。

  1. リソース・マネージャで、選択されたテンプレート・カテゴリに関連付けられたテンプレート定義をチェックします。

  2. デフォルト・カテゴリ(*)に関連付けられたテンプレート定義を追加します。

たとえば、ユーザーが複数コンテンツ・アイテム(フォルダの複数の子、検索の複数の結果など)を選択した場合、「コンテンツ・プレゼンタ構成」ダイアログには、コンテンツ・アイテムのリポジトリに基づいて、カテゴリのリストとそのカテゴリおよびデフォルト・カテゴリに関連付けられたテンプレートのリストが表示されます。


注意:

「コンテンツ・プレゼンタ構成」ダイアログでユーザーがテンプレートを選択すると、そのテンプレートを使用して実行中のアプリケーションで選択されたコンテンツ・アイテムが表示されます。後でなんらかの理由でそのテンプレートがリソース・マネージャから削除された場合、コンテンツ・プレゼンタは前述の優先順位に従ってコンテンツ・アイテムを表示するために最も一致度の高いテンプレートを自動的に選択します。

27.7 キャッシュ・メカニズムとしてのCoherenceの構成

デフォルトでは、コンテンツ・プレゼンタはローカル(インメモリー)キャッシュを使用するように構成されています。ただし、本番環境のすべてのタイプでCoherenceを使用することをお薦めします。これは、高可用性(HA)環境での要件です。この項では、Frameworkアプリケーションのキャッシング・メカニズムとしてCoherenceを使用可能にする方法を説明します。


注意:

ご使用のCoherenceのライセンスは、購入したライセンス・オプションによっては複数ノードの環境をサポートしない可能性があります。ライセンス契約の内容を確認するには、『ライセンス情報』のOracle Coherenceに関する項を確認してください。

Coherenceの構成ファイルを変更することで、WebCenterポータルおよびFrameworkアプリケーションの両方に対してCoherenceでのコンテンツ・キャッシュを有効にできます。WebCenter Portalでは、『Oracle WebCenter Portalの管理』のコンテンツ・プレゼンタのキャッシュ設定の変更に関する項で説明している手順のみが必要です。ただし、Frameworkアプリケーションでは、構成ファイルをアプリケーション(EAR)クラスパスまたはサーバーのシステム・クラスパスに追加するには、追加の手順が必要です。

この項には次のサブセクションが含まれます:

27.7.1 EARクラスパスへのCoherence構成ファイルの追加

EARクラスパスにXMLファイルを追加するには、次を実行します。

  1. 『Oracle WebCenter Portalの管理』のコンテンツ・プレゼンタのキャッシュ設定の変更に関する項で説明している手順を実行します。

  2. アプリケーションのsrcディレクトリの下に(例: WebCenterPortalCoherence/src)、APP-INF/classesという名前のディレクトリを作成し、そこに、content-coherence-cache-config.xml)を配置します。

  3. アプリケーションのアプリケーション・プロパティを開き、「デプロイ」を選択します。

  4. EARファイルに含まれているプロファイルを編集します(図27-15を参照)。

    図27-15 XMLファイルへのEARクラスパスの追加

    図27-15の説明が続きます
    「図27-15 EARクラスパスへのXMLファイルの追加」の説明

  5. Packagingという名前の新しいファイル・グループを追加します。「型」Packagingのままにします。

  6. 「フィルタ」ペインでclassesおよびcontent-coherence-cache-config.xmlファイルが選択されていることを確認します。

  7. アプリケーションをデプロイし、デプロイされた管理対象サーバーを再起動します。アプリケーションをデプロイしたら、Coherenceを有効にする必要があります。

27.7.2 Coherence構成の検証

アプリケーションがデプロイされた管理対象サーバーを再起動した後、コマンドラインからjconsoleと入力し、WC_Spacesに対応するプロセスを選択してJConsoleを開き、サーバーに接続します。JConsoleの「MBean」タブでCoherenceを確認します。また、WC_Spaces-diagnostic.logファイルには次のような出力があります。

2013-06-26 14:45:47.321/1278.178 Oracle Coherence GE 3.6.0.4 &lt;Info&gt;
(thread=[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default
(self-tuning)', member=n/a): Loaded cache configuration from
"zip:/oracle/app/admin/domains/webcenter/servers/WC_CustomPortal/tmp/_WL_
user/WebCenterPortalCoherence_application1_
V2.0/i092wg/APP-INF/lib/portal-coherence.jar!/content-coherence-cache-config.xml"

27.8 コンテンツ・プレゼンタ表示テンプレートのパフォーマンスの最適化

コンテンツ・プレゼンタ表示テンプレートで表示するためにコンテンツ・ノードを取得すると、ほとんどのコンテンツ・アイテム・ノード・プロパティ値はノードとともに即座に取得されますが、一部の値は後で必要な場合のみロードされます。ノード・プロパティ値の選別的なロードは、パフォーマンスの違いをもたらすほか、ユーザーや開発者に透過的です。

コンテンツ・プレゼンタ表示テンプレートの開発者は、異なるプロパティ値がロードされたことに気付いた場合、テンプレートのパフォーマンスを最適化できます。たとえば、一般的なリストの表示テンプレートの場合、ノードを最初に取得したときに即座にロードされるプロパティのみを参照して、後で必要なときにロードされるプロパティを避けると、より高速にレンダリングされます。

2番目の考慮点は、ノードの取得方法(検索による方法と親IDによるフェッチする方法)によって決まります。検索(「問合せの結果」など)のためのノード取得時には即座にロードされるプロパティが、他の取得方法(「フォルダの下のコンテンツ」など)では後でロードされる可能性があります。表27-12は、取得メカニズム別に、ノード取得時にノード・プロパティが即座にロードされるかどうかを示しています。

表27-12に示されているノード・プロパティに関する情報は、『Oracle WebCenter Content構成リファレンス』を参照してください。

表27-12 ノード取得メカニズム別のノード・プロパティのロード

OCSグローバル・プロファイル・プロパティ ノードの初回取得時にロードするか
親IDによる取得(「フォルダの下のコンテンツ」) 検索(「問合せの結果」) UUIDによる取得(「単一のコンテンツ・アイテム」と「アイテムのリスト」)

VaultFileSize

N

Y

Y

dCheckoutUser

Y

N

Y

dCreateDate

Y

Y

Y

dDocAccount

Y

Y

Y

dDocAuthor

Y

Y

Y

dDocName

Y

Y

Y

dDocTitle

Y

Y

Y

dDocType

Y

Y

Y

dFormat

Y

Y

Y

dID

Y

Y

Y

dInDate

Y

Y

Y

dIsCheckedOut

Y

N

Y

dOutDate

Y

Y

Y

dReleaseDate

Y

N

Y

dReleaseState

Y

N

Y

dRevClassID

Y

N

Y

dRevLabel

Y

Y

Y

dRevRank

Y

N

Y

dRevisionID

Y

Y

Y

dSecurityGroup

Y

Y

Y

dStatus

Y

N

Y

dWebExtension

Y

Y

Y

dWorkflowState

N

N

Y

idcPrimaryFile

Y

Y

Y

idcRenditions

N

N

Y

xCollectionID

Y

Y

Y

xComments

Y

Y

Y

xForceFolderSecurity

Y

Y

Y

xHidden

Y

Y

Y

xInihibitUpdate

Y

Y

Y

xReadOnly

Y

Y

Y


27.9 コンテンツ・プレゼンタのヒント、チュートリアルと例

次の補足チュートリアルと例は、コンテンツ・プレゼンタの使用方法を詳細に示します。

  • 「Using Content Presenter Templates」: Site Builderでリージョン定義を構築し、(Site Studioのリージョン・テンプレートではなく)コンテンツ・プレゼンタ・テンプレートの基礎としてそのリージョン定義を使用して、そのテンプレートをPortal Frameworkアプリケーション・ページに追加する方法について説明します。

    http://yonaweb.be/webcenter_tutorial/using_content_presenter_templates

  • 「UCM, Site Studio and Templates」: WebCenter Portal内のコンテンツのやり取りを行うコンポーネント(コンテンツ・サーバー、Site Studioおよびコンテンツ・プレゼンタ)について説明します。

    http://www.ateam-oracle.com/portal-and-content-components-part-1-ucm-site-studio-and-templates-2-of-7

  • 「Content Presenter-CMIS-Complete」: コンテンツ・プレゼンタ・ベースのページや複雑なCMISおよびカスタム・テンプレートを使用して、フィルタリング可能なコンテンツ・リスト・ビューアを作成する手順を説明します。

    http://www.ateam-oracle.com/content-presenter-cmis-complete

  • PortalおよびContent - コンテンツ統合 - ベスト・プラクティス - コンテンツをポータルに統合する際に考慮するいくつかのベスト・プラクティスに注目します。

    http://www.ateam-oracle.com/portal-and-content-content-integration-best-practices/