第4章

ポータルレイアウトの操作

この章では、ポータルレイアウトを使用してパーソナル、共有、およびコンテナページの外観をコントロールする方法について説明します。この章の節は次のとおりです。

 
Top of page

ポータルレイアウトについて

「ポータルレイアウト」は、選択されたポートレットのセットがページに表示される方法を定義するテンプレートです。 exteNd Directorポータルアプリケーションの各パーソナル、共有、およびコンテナページは、ポータルレイアウトを使用して、選択されたポートレットがページに配置される方法を指定します。 exteNd Directorは、ユーザが選択したポートレットをポータルレイアウトから切り離すため、選択したポートレットに影響を与えずにページのレイアウトを簡単に変更できます。

 
Top of section

事前定義されたレイアウト

exteNd Directorには、事前定義されたレイアウトが付属しています。 次のレイアウトは、すべてのユーザが使用できます。

レイアウト

説明

プレビュー

1 Column

単一のカラムを作成します。 The portlet flow is top to bottom.

1Column

2 Columns

同じサイズの2つのカラムを作成します。 ポートレットフローは、カラム内で上から下に流れます。

2Column

2 Columns 30/70

比例するサイズの2つのカラムを作成します。 最初のカラムは、ページ幅の30%を占有し、2つめのカラムはページ幅の70%を占有します。

2Column3070

3 Columns

同じサイズの3つのカラムを作成します。 ポートレットフローは、カラム内で上から下に流れます。

3Column

Classic Portal Layout

ヘッダ領域、3つのカラム、およびフッタ領域を作成します。

ClassicPortalLayout

Header Content

ヘッダ領域およびコンテンツ領域を作成します。

HeaderContent

Header Nav Content

ヘッダ領域、ナビゲーションバー、およびコンテンツ領域を作成します。

HeaderNavContent

Header NavContent Footer

ヘッダ領域、ナビゲーションバー、コンテンツ領域、およびフッタ領域を作成します。

HeaderNavContentFooter

次のレイアウトは、レイアウト管理者のみが使用できます。

レイアウト

説明

プレビュー

My NovellLayout

サンプルXHTMLレイアウトを作成します。

mynovell preview

 
Top of section

独自のレイアウトの作成

独自のレイアウトを作成することもできます。 作成するには、で説明されているように、exteNd Directorのポータルレイアウトとポータルレイアウト定義ウィザードを使用します。

 
Top of section

ポータルレイアウトに関連付けられたファイル

ポータルアプリケーションの各レイアウトは、次のファイルをそれぞれ提供する必要があります。

ファイル

説明

レイアウト記述子ファイル

レイアウトを説明します。 このXMLファイルは次の情報を指定します。

  • 表示名

  • 説明

  • Preview imageファイル

  • レイアウト定義ファイルへのリファレンス

  • レイアウト定義フォーマット(XMLまたはXHTML)

レイアウト記述子ファイルには、任意の名前を指定できます。

レイアウト定義ファイル

レイアウトの物理特性をXMLまたはXHTML形式で指定します。 このファイルは次の情報を提供します。

  • レイアウト内のセクション

  • メインページの幅

  • 各セクションの幅

  • 特定のセクションでのポートレットの流れ(左から右または上から下)

レイアウト定義ファイルは通常、記述子ファイルと同じ名前を持ち、Def (定義の略)が追加されます。たとえば、記述子ファイルの名前がHeaderContent.xmlの場合、レイアウト定義ファイルはHeaderContentDef.xmlとなります。この命名規則をお勧めしますが、必須ではありません。

グラフィックファイルのサポート

レイアウトのプレビューイメージを定義します。

レイアウト記述子およびレイアウト定義ファイルは、リソースセット内の[portal-layout]ディレクトリに保存されます。

レイアウトの内部識別子は、XML拡張子を除いたその記述子ファイルの名前です。

For more information    リソースセット内のファイル場所の詳細については、『exteNd Directorアプリケーションの開発』のリソースおよびJavaクラスのサブディレクトリに関する節を参照してください。

 
Top of page

レイアウト記述子ファイル

ポータルアプリケーションに使用される各レイアウトは、レイアウト記述子ファイルが必要です。 レイアウト記述子ファイルには、任意の名前を指定できます。 レイアウト記述子ファイルは、次のレイアウト情報を指定します。

要素名

説明

portal-layout

ポータルレイアウトのルートノード

display-name

ポータルアプリケーションのユーザインタフェースでレイアウトの識別に使用される名前。

description

レイアウトの説明。

preview-image

レイアウトの外観を示す小さなイメージ。

このイメージのパスは、完全修飾されたURLまたはポータル置換文字列を含むURLです。

For more information    ポータル置換文字列の詳細については、を参照してください。

layout-definition-file

レイアウト定義ファイルのパス。このファイルは実際のレイアウトを含みます。

layout-definition-format

レイアウトの形式。レイアウト定義には、次の形式のいずれかを使用できます。

  • text/xml (XML用)

  • text/xhtml (XHTML用)

HTMLは、サポートされたレイアウト定義形式ではありません。

run-role-map

ポータルページをこのレイアウトで実行できる役割のセット。 run-role-mapを指定しない場合、すべてのユーザがこのレイアウトでポータルページを実行できます。

重要:   レイアウトにrun-role-mapを指定した場合、対応するlist-role-mapを指定する必要があります。

list-role-map

選択リストからこのレイアウトを表示できる役割のセット。 list-role-mapを指定しない場合、すべてのユーザがこのレイアウトを表示できます。

次に、Header Contentというレイアウトのレイアウト記述子ファイルの例を示します。レイアウト記述子ファイルはHeaderContent.xmlです。

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE portal-layout PUBLIC "-//SilverStream Software, LLC//DTD Portal Layout 5.0//EN" "portal-layout_5_0.dtd">
  <portal-layout>
  <display-name>Header Content</display-name>
  <description>Header and content sections</description>
  <preview-image>$RESOURCE_URL$/portal-layout/images/HeaderContent.gif</preview-image>
  <layout-definition-file>HeaderContentDef.xml</layout-definition-file>
  <layout-definition-format>text/xml</layout-definition-format>
  </portal-layout>

文字列$RESOURCE_URL$は、ポータル置換文字列の例です。置換文字列には、ランタイム、ポータルアプリケーションのコンテキストベース情報を含めることができます。 置換文字列は、ユーザの現在のテーマまたは現在表示されているポータルIDなど、ランタイムにダイナミックに変更する事項を参照するキーワードです。これらのキーワードはランタイムに検出されると、現在のHTTP要求または現在のポータルコンテキストの情報に基づいて、置換されます。

For more information    ポータル置換文字列の詳細については、を参照してください。

 
Top of page

レイアウト定義ファイル

ポータルレイアウトのレイアウト定義ファイは、レイアウト内のセクション、メインページの幅、および各セクションの幅を説明します。 レイアウト定義は、特定のセクションでのポートレットの流れ(左から右または上から下)も指定します。

レイアウト定義には、次の形式のいずれかを使用できます。

HTMLは、サポートされたレイアウト定義形式ではありません。

レイアウト記述子ファイルの<layout-definition-format>要素で使用する形式を指定します。

 
Top of section

XML形式

XMLを使用してレイアウト定義を指定する場合、次の要素を使用してレイアウトを定義する必要があります。

要素名

説明

portal-layout-def

ポータルレイアウト定義のルートノード

section-container

1つまたは複数のセクションを含むことができるレイアウト内の領域。 section-containerがタイプの場合、要素に生成されるHTMLはテーブル行(<tr>)です。

section-containerがカラムタイプの場合、要素に生成されるHTMLはテーブルセル(<td>)です。

s3-section

section-container内のセクション。 各s3-sectionは、1つまたは複数のポートレットを表示できます。 S3-sectionは、ユーザがセクションで目的のポートレットを選択できるように実行時に使用されます。

各s3-sectionは次のものを指定します。

  • セクション内のポートレットが上から下(垂直フロー)または左から右(水平フロー)に流れるのかを示すflow属性

  • およびスタイル設定

  • セクションの識別子

s3-component

XHTMLレイアウトの任意の場所にコンテンツを配置できます。

次に、HeaderContentというレイアウトのXMLレイアウト定義ファイルの例を示します。レイアウト定義ファイルはHeaderContentDef.xmlです。

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE portal-layout-def PUBLIC "-//SilverStream Software, LLC//DTD Portal Layout Def 4.0//EN" "portal-layout-def_4_0.dtd">
  <portal-layout-def>
  <section-container type="row">
  <s3-section flow="vertical" id="1" style="padding-bottom:5px;padding-right:5px;" width="100%"/>
  </section-container>
  <section-container type="row">
  <s3-section flow="vertical" id="2" style="padding-bottom:5px;" width="100%"/>
  </section-container>
  </portal-layout-def>

For more information    ポータルレイアウトの各要素がHTMLでどのように変換されているかを見るには、リソースセットのportal-styleフォルダにあるPortalLayout.xslをWebアプリケーションで参照してください。

 
Top of section

XHTML形式

XHTMLでレイアウト定義を指定すると、XMLよりさらにレイアウトを制御できます。 XHTMLレイアウトは、パーソナル、共有、およびコンテナページで使用できます。たとえば、XHTMLを使用して、Webサイトに特定の企業外観をブランディングします。 コンテナぺージでブランディングを定義すると、このコンテナページ内に表示される各パーソナルページはそのブランディングを持ちます。

XHTMLフォーマットを使用すると、マークアップは正しく作成されます。ドキュメントが正しく作成されていることを確認するには、次のガイドラインに従います。

ユーザが選択したポートレットを配置するためのスペースを予約するには、XHTMLドキュメント全体に<s3-section>タグを配置することが必要です。 XHTMLレイアウトは、範囲指定パスを使用して、ポータルリソースを直接指定できます。 たとえば、次の範囲指定パスは、リソースセットのイメージにアクセスする方法を示します。

  <img src="${Portal/Uri/Context/resource/   portal-layout/images/mynovell_logo.jpg}"/>

XHMTLレイアウトには、ポータルコンテナページとして使用されている場合、HTML、HEAD、およびBODYタグだけを含めることができます。

次に、MyNovellというレイアウトのXHTMLレイアウト定義ファイルの例を示します。 (ポータルコンテナページです。) レイアウト定義ファイルはMyNovell.htmlです。

  <html>
  <head>
  <title>MyNovell.com</title>
  <s3-component id="ThemeTester" mode="link-only"/>
  <script language="JavaScript" type="text/JavaScript">
   onLoadFct = [];
   function compareOnLoadPriority(a, b) {
    if (a != undefined &amp;&amp; b != undefined) { 
     if ( a.priority &lt; b.priority ) return -1
     if ( a.priority &gt; b.priority ) return 1
    }
    return 0
   }
  function runOnLoad() {
    var lg = onLoadFct.length;
    if (lg &gt; 0) {
     if (lg &gt; 1) onLoadFct.sort(compareOnLoadPriority);
     var i = 0;
     while(i &lt; lg) {
      if (onLoadFct[i] != undefined) {
       (eval(onLoadFct[i].fct))();
      }
      i++;
     }
    }
   }
  function setOnLoad(priority,fct) {
    var pos = onLoadFct.length;
    onLoadFct[onLoadFct.length] = {}
    onLoadFct[pos].priority = priority;
    onLoadFct[pos].fct = fct;
   }
  </script>
  </head>
  <body margintop="0" bgcolor="#336699" marginleft="0" onLoad="runOnLoad()">
  <table border="0" width="100%" bgcolor="#336699">
    <tr>
      <td>
  <table border="0" width="100%">
          <tr>
            <td width="300"><img src="${Portal/Uri/Context/resource/portal-layout/images/mynovell_logo.jpg}"/></td>
            <td width="65"><a href="../../portlet/Personalize"><img border="0" src="${Portal/Uri/Context/resource/portal-layout/images/mynovell_personalize.gif}"/></a></td>
            <td width="65"><a href=""><img border="0" src="${Portal/Uri/Context/resource/portal-layout/images/mynovell_myportal.gif}"/></a></td>
            <td></td>
          </tr>
        </table>
  </td>
    </tr>
    <tr>
      <td>
        
  	 <s3-component id="PhoneList" instance="page_phome"/>
  	 <table border="0" height="500" cellpadding="0" cellspacing="0" width="100%"> 
          <tr>
            <td rowspan="3" width="165">
              <table width="100%" height="95%" border="0">
                <tr>
                  <td valign="top">
                    <!-- Here is section 1 where portal components will go at runtime -->
                    <s3-section id="1" style="padding-bottom:5px;"/>
                  </td>
                </tr>
              </table>          
            </td>
            <td width="65" valign="bottom" style="background:url(${Portal/Uri/Context/resource/portal-layout/images/mynovell_topleft.gif}) no-repeat top left;"></td>
            <td height="42" style="background:url(${Portal/Uri/Context/resource/portal-layout/images/mynovell_top.gif}) top left;"></td>
            <td width="61" height="42" valign="bottom" style="background:url(${Portal/Uri/Context/resource/portal-layout/images/mynovell_topright.gif}) no-repeat top right;"></td>
          </tr>
          <tr>
            <td style="background:url(${Portal/Uri/Context/resource/portal-layout/images/mynovell_left.gif}) repeat-y top left;"></td>
            <td bgcolor="white" valign="top">
              <!-- Here is section 2 where portal components will go at runtime -->
    <s3-section id="2"/>
            </td>
            <td style="background:url(${Portal/Uri/Context/resource/portal-layout/images/mynovell_right.gif}) repeat-y top right;"></td>
          </tr>
          <tr>
            <td width="65" height="66" valign="top" style="background:url(${Portal/Uri/Context/resource/portal-layout/images/mynovell_bottomleft.gif}) no-repeat top left;"></td>
            <td style="background:url(${Portal/Uri/Context/resource/portal-layout/images/mynovell_bottom.gif}) repeat-x bottom left;"></td>
            <td width="61" height="66" valign="top" style="background:url(${Portal/Uri/Context/resource/portal-layout/images/mynovell_bottomright.gif}) no-repeat top right;"></td>
          </tr>
        </table>
  </td>
    </tr>
  </table>
  </body>
  </html>

 
Top of page

レイアウトAPIの操作

exteNd DirectorAPIは、レイアウトを操作する2つのインタフェースを提供します。

EbiLayoutManagerは、EbiLayoutInfoオブジェクトにアクセスするメソッドを提供します。EbiLayoutInfoは、表示名および説明を含め、レイアウトに関するさまざまな種類の情報を取得するメソッドを提供します。 EbiLayoutInfoインタフェースは、レイアウトのプレビューおよびサムネイルイメージのURIへのアクセスも提供します。

EbiLayoutManagerオブジェクトにアクセスするには、PortalサブシステムのEboFactoryクラスのgetLayoutManager()メソッドを使用する必要があります。



Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.  more ...