karma****@users*****
karma****@users*****
2006年 10月 19日 (木) 19:19:47 JST
Update of /cvsroot/jetspeed-japan/jetspeed-2-trans/ja/xdocs/guides In directory sf-cvs:/tmp/cvs-serv26857/ja/xdocs/guides Modified Files: guide-decorators.xml Log Message: reviewed jetspeed-2-trans/ja/xdocs/guides/guide-decorators.xml 1.3 -> 1.4 (modified) http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/jetspeed-japan/jetspeed-2-trans/ja/xdocs/guides/guide-decorators.xml.diff?r1=1.3&r2=1.4 =================================================================== RCS file: jetspeed-2-trans/ja/xdocs/guides/guide-decorators.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- guide-decorators.xml 2006/05/25 03:55:48 1.3 +++ guide-decorators.xml 2006/10/19 10:19:47 1.4 @@ -38,9 +38,7 @@ </p> </div> <p> -デコレーターとは 動的に作成されるフラグメント(画面の一部分)の周りを囲むもので 静的もしくは、半静的な マークアップランゲージで記述 -できるものと 定義されます。デコレーターは、 通常 Velocityテンプレートもしくは、JSPテンプレートとして書かれます。このガイドでは、主に -Velocityスクリプト言語で デコレーターを作成する方法について書きます。しかし、ここに書かれる 標準的な方法とアプローチ手段は、大体の所、 +デコレーターとは 動的に作成されるフラグメント(画面の一部分)の周りを囲むもので 静的もしくは、半静的な マークアップランゲージで記述できるものと 定義されます。デコレーターは、 通常 Velocityテンプレートもしくは、JSPテンプレートとして書かれます。このガイドでは、主に Velocity スクリプト言語で デコレーターを作成する方法について書きます。しかし、ここに書かれる 標準的な方法とアプローチ手段は、大体の所、 他のスクリプト言語で、デコレーションを作成する際にも応用可能です。 </p> @@ -62,21 +60,14 @@ </p> </div> <p> - ページを構築する際に使用するデコレーションの種類には 次の2つがあります。;ポートレット と レイアウト(ページ)。 + ページを構築する際に使用するデコレーションの種類にはポートレットとレイアウト(ページ)の2つがあります。</p> <p> - ポートレットのデコレーションとは Jetspeedの ウインドウの装飾にあたります。これは、それぞれのポートレット部分を - 作成されるコンテンツ部分をHTML (XHTML, VXML, etc) で 囲むもので、適切なタイトルの表示や、ウインドウの状態や - ポートレットのモードの変化と連携して変わるボタン群の表示を担当します。 + ポートレットのデコレーションとは Jetspeed のウインドウの装飾にあたります。これは、個々のポートレットフラグメントの HTML (XHTML, VXML, etc) で表示されるコンテンツ部分を囲むもので、適切なタイトルの表示や、ウインドウの状態やポートレットのモードの変化と連携して変わるボタン群の表示を担当します。 </p> <p> - レイアウトもしくはページのデコレーションとは、1つPSMLファイルを元に表される1つのポータルページの ヘッダー部分とフッター部分の装飾を - 提供するものです。(参考: PSMLについての更なる情報については、<a href="guide-psml.html">PSMLを扱ってデザインをする人のための資料</a>) - これらのデコレーションは、ページとポートレットの一般的なスタイル情報を持ちます。 - ポートレット内部のスタイル情報は、デコレーターのスタイル情報によって上書きされます。 + レイアウトもしくはページのデコレーションとは、1つPSMLファイルを元に表される1つのポータルページの ヘッダー部分とフッター部分の装飾を提供するものです (参考: PSMLについての更なる情報については、<a href="guide-psml.html">PSMLを扱ってデザインをする人のための資料</a>) 。これらのデコレーションは、ページとポートレットの一般的なスタイル情報を持ちます。ポートレット内部のスタイル情報は、デコレーターのスタイル情報によって上書きされます。 </p> -</p> - </section> <section name="[Decoration File Structure] デコレーションのファイル構成"> @@ -92,11 +83,7 @@ </p> </div> <p> - 全てのデコレーション用のファイルは、webアプリケーションのルートディレクトリの直下にある<code>decrorations</code>というディレクトリに - 保存されます。このディレクトリの下の 重要な2つのディレクトリが、レイアウト装飾用の<code>layout</code>ディレクトリと - ポートレット装飾用の<code>portlet</code>ディレクトリです。個別のデコレーションは、これら2つのディレクトリの下に、それぞれ独自のディレクトリを持ちます。 - Jetspeedは、<code>layout</code> か <code>portlet</code> の下に あなたが に作成するディレクトリの名称で、 - デコレーターファイルの場所を特定します。では、これが どういう仕組みで働くかについての 更なる詳細をこのガイドの続き で見ていきましょう。 + 全てのデコレーション用のファイルは、webアプリケーションのルートディレクトリの直下にある<code>decorations</code>というディレクトリに保存されます。このディレクトリの下の 重要な2つのディレクトリが、レイアウト装飾用の<code>layout</code>ディレクトリとポートレット装飾用の<code>portlet</code>ディレクトリです。個別のデコレーションは、これら2つのディレクトリの下に、それぞれ独自のディレクトリを持ちます。Jetspeedは、<code>layout</code> か <code>portlet</code> の下に あなたが に作成するディレクトリの名称で、デコレーターファイルの場所を特定します。では、これが どういう仕組みで働くかについての 更なる詳細をこのガイドの続き で見ていきましょう。 </p> </section> @@ -126,9 +113,7 @@ </p> </div> <p> - この中の3つのファイル;decorator.properties, header.vm, と footer.vm は、<code>/decorations/layout</code>の - 下に作成したディレクトリに直接置いてください。styles.css は、あなた作ったデコレーションのサブディレクトリ<code>css/</code> - に入れます。[訳注:すなわち/YOUR_WEB_APP/decorations/layout/YOUR_DECORATION_NAME/cssディレクトリにスタイルシートを置く。] + この中の3つのファイル;decorator.properties, header.vm, と footer.vm は、<code>/decorations/layout</code>の下に作成したディレクトリに直接置いてください。styles.css は、あなた作ったデコレーションのサブディレクトリ <code>css/</code> に入れます。[訳注:すなわち/YOUR_WEB_APP/decorations/layout/YOUR_DECORATION_NAME/cssディレクトリにスタイルシートを置く。] </p> </subsection> @@ -143,10 +128,7 @@ </p> </div> <p> - decorator.properties ファイルは、あなたのレイアウト デコレーションの基本情報を保持します。 - 実際のところ、このファイルは 空白でも構いませんが、他のAPIが使用可能なデコレーションを探すのに使用されるため - ファイル自体は存在する必要があります。ということで、下の定義にあるプロパティは 全てオプションであると仮定しても - 問題ありません。 + decorator.properties ファイルは、あなたのレイアウト デコレーションの基本情報を保持します。実際のところ、このファイルは 空白でも構いませんが、他のAPIが使用可能なデコレーションを探すのに使用されるためファイル自体は存在する必要があります。ということで、下の定義にあるプロパティは 全てオプションであると仮定しても問題ありません。 </p> <div class="original"> <table> @@ -204,7 +186,7 @@ 見ることになります。 </td> <td> - あなたのデコレーション名がデフォルト値と なります。 + あなたのデコレーション名がデフォルト値となります。 </td> </tr> <tr> @@ -244,11 +226,9 @@ </p> </div> <p> - ファイル<strong>header.vm</strong>は、あなたのポータルページのトップ部分を表します。 - 機能的なヘッダーテンプレートを記述すのに必要になる基本事項について 以下に 各セクションごとに 書いてあります。 + ファイル<strong>header.vm</strong>は、あなたのポータルページのトップ部分を表します。機能的なヘッダーテンプレートを記述すのに必要になる基本事項について 以下に 各セクションごとに 書いてあります。 <br/><br/> - <strong>注意:</strong>前提事項として、読者は、HTMLとCSSについての十分な知識があると仮定してあります。 - デコレーションを開発するに当たって、基本的なVelocityの知識は、あれば良いくらいで、必須の知識ではありません。 + <strong>注意:</strong>前提事項として、読者は、HTMLとCSSについての十分な知識があると仮定してあります。デコレーションを開発するに当たって、基本的なVelocityの知識は、あれば良いくらいで、必須の知識ではありません。 </p> <source> @@ -285,17 +265,7 @@ </p> </div> <p> - さて、<code>#defineLayoutObjects()</code>を含む行ですが、これは、前の2行ほどは その目的について意味が あまり明らかではありません。 - <code>#defineLayoutObjects()</code>は、いわゆる Velocityの世界で マクロと 言われるものです。 - マクロは、事前に定義された Velocityの小さなコードで、Velocityテンプレートの中で再利用されます。 - これから使用する全てのグローバル マクロ(このマクロも含む)は、<code>WEB-INF/jetspeed_macros.vm</code>で定義されています。 - 後ほど、 このガイドの中で、もし あなたが そうしたいのであれば、自分のデコレーションを作成するにあたって - 便利であるカスタムマクロの作成方法について議論します。では、<code>#defineLayoutObjects()</code>にもどりましょう。 - <code>#defineLayoutObjects()</code>は、様々な値をVelocityに対して追加し、それらは、header.vm, - footer.vm,他のマクロと そして全てのポートレット デコレーション テンプレートの内部でアクセス可能になります。 - ここで、<code>#defineLayoutObjects()</code>に関する話を 簡単にやめることはできますが、Velocityをまだはじめたことが - ない人のために Velocityの内部の動きを見ていく方が 助けになる気がします。では 余計な事をいうのはこれくらいにして、 - コードは、こうなっています。 + さて、<code>#defineLayoutObjects()</code>を含む行ですが、これは、前の2行ほどは その目的について意味が あまり明らかではありません。<code>#defineLayoutObjects()</code>は、いわゆる Velocityの世界で マクロと 言われるものです。マクロは、事前に定義された Velocityの小さなコードで、Velocityテンプレートの中で再利用されます。これから使用する全てのグローバル マクロ(このマクロも含む)は、<code>WEB-INF/jetspeed_macros.vm</code>で定義されています。後ほど、 このガイドの中で、もし あなたが そうしたいのであれば、自分のデコレーションを作成するにあたって便利であるカスタムマクロの作成方法について議論します。では、<code>#defineLayoutObjects()</code>にもどりましょう。<code>#defineLayoutObjects()</code>は、様々な値をVelocityに対して追加し、それらは、header.vm, footer.vm,他のマクロと そして全てのポートレット デコレーション テンプレートの内部でアクセス可能になります。ここで、<code>#defineLayoutObjects()</code>に関する話を 簡単にやめることはできますが、Velocityをまだはじめたことがない人のために Velocityの内部の動きを見ていく方が 助けになる気がします。では 余計な事をいうのはこれくらいにして、コードは、こうなっています。 </p> <source> <![CDATA[ @@ -333,23 +303,9 @@ </p> </div> <p> - むむ、この中ではいったい何がおきているのでしょうか?さて、1行目には、<code>#set()</code>があります。これは Velocityで指示子と - 呼ばれるものです。指示子は オリジナルの関数であり マクロではありません。<code>#set()</code>は、非常にわかりやすいですね。 - イコール記号の 右辺にある値を 受け取り 左辺へ 割り当てるものです。素晴らしい、これは、かなりわかり易いですね。しかし、 - どうやってこの値を取り扱えばいいのでしょうか?いったい<code>$JS2RequestContext.locale</code>は、どこから現れたのでしょう? - では、すこしだけ戻って、Velocityのオブジェクトをどうやって使うか書きたいと思います。全てのVelocityテンプレートで利用可能なオブジェクト - は、<code>$someObject</code>という書き方で参照することができます。メソッドの実行は、<code>$someObject.getFoo()</code> の様に - 書くことで 実行できます。getFoo()を実行してみましょう。実は、引数を取らないgetterメソッドは、<code>$someObject.foo</code> - こんな風に書けるというのは、さらに素晴らしい事です。この<code>$JS2RequestContext</code>に関していうと、これは、<code>org.apache.jetspeed.RequestContext</code> - のインスタンスで、JetspeedがVelocityで使用できるように、インスタンス化されます。それで、<code>org.apache.jetspeed.RequestContext</code> - をJava docを見るとわかりますが、<code>$JS2RequestContext.locale</code>は、<code>java.util.Locale</code>のインスタンスを - 渡してくれ、これは、現在のポートレットのユーザのロケールになります。これ以上は シンプルにはできないでしょう? + むむ、この中ではいったい何がおきているのでしょうか?さて、1行目には、<code>#set()</code>があります。これは Velocityで指示子と呼ばれるものです。指示子は オリジナルの関数であり マクロではありません。<code>#set()</code>は、非常にわかりやすいですね。イコール記号の 右辺にある値を 受け取り 左辺へ 割り当てるものです。素晴らしい、これは、かなりわかりやすいですね。しかし、どうやってこの値を取り扱えばいいのでしょうか?いったい<code>$JS2RequestContext.locale</code>は、どこから現れたのでしょう?では、すこしだけ戻って、Velocityのオブジェクトをどうやって使うか書きたいと思います。全てのVelocityテンプレートで利用可能なオブジェクトは、<code>$someObject</code>という書き方で参照することができます。メソッドの実行は、<code>$someObject.getFoo()</code> の様に書くことで 実行できます。getFoo()を実行してみましょう。実にすばらしいことに、引数を取らないgetterメソッドは、<code>$someObject.foo</code>という風に書けます。この<code>$JS2RequestContext</code>に関していうと、これは、<code>org.apache.jetspeed.RequestContext</code> のインスタンスでVelocityで使用できるように、、Jetspeedによってインスタンス化されます。そして、<code>org.apache.jetspeed.RequestContext</code>の Javadoc を見るとわかりますが、<code>$JS2RequestContext.locale</code>は、現在のポートレットのユーザのロケールとなる、<code>java.util.Locale</code>のインスタンスを渡してくれます。これ以上は シンプルにはできないでしょう? <br/><br/> - 次に 出てくるのは、 <code>#set($rootFragment = $jetspeed.currentFragment)</code> の行ですね、またset()の組 - 今回は、<code>$rootFragment</code> と呼ばれるものを作成していすね。これは、 - <a href="http://portals.apache.org/jetspeed-2/multiproject/jetspeed-api/apidocs/org/apache/jetspeed/om/page/ContentFragment.html">org.apache.jetspeed.om.page.ContentFragment</a> - のインスタンスです。<code>$jetspeed.currentFragment</code>が何をするのかは、このガイドでは、重要ではないので、 - 飛ばして 先に進みます。 + 次に 出てくるのは、<code>#set($rootFragment = $jetspeed.currentFragment)</code> という別の set の行ですね。今回は、<code>$rootFragment</code> と呼ばれるものを作成していすね。これは、<a href="http://portals.apache.org/jetspeed-2/multiproject/jetspeed-api/apidocs/org/apache/jetspeed/om/page/ContentFragment.html">org.apache.jetspeed.om.page.ContentFragment</a> のインスタンスです。<code>$jetspeed.currentFragment</code>が何をするのかは、このガイドでは、重要ではないので、飛ばして 先に進みます。 </p> <br/><br/> @@ -370,10 +326,8 @@ </p> </div> <p> - おお、<code>$request</code>です。やっと親しみのあるものが出てきました。これは、実際に<code>javax.servlet.http.HttpServletRequest</code>の - インスタンスで、我々はここから Jetspeedから Velocityに 渡された オブジェクトを取り出します。 - 本当のオブジェクトは、それぞれ - <a href="http://portals.apache.org/jetspeed-2/multiproject/jetspeed-api/apidocs/org/apache/jetspeed/portalsite/PortalSiteRequestContext.html">org.apache.jetspeed.portalsite.PortalSiteRequestContext</a> + おお、<code>$request</code>です。やっと親しみのあるものが出てきました。これは、実際に<code>javax.servlet.http.HttpServletRequest</code>のインスタンスで、我々はここから Jetspeedから Velocityに 渡された オブジェクトを取り出します。本当のオブジェクトは、それぞれ + <a href="http://portals.apache.org/jetspeed-2/multiproject/jetspeed-api/apidocs/org/apache/jetspeed/portalsite/PortalSiteRequestContext.html">org.apache.jetspeed.portalsite.PortalSiteRequestContext</a> と <a href="http://portals.apache.org/jetspeed-2/multiproject/jetspeed-api/apidocs/org/apache/jetspeed/decroation/Theme.html">org.apache.jetspeed.decoration.Theme</a> です。もうちょっと後で これら全てのオブジェクトのよい利用方法を見ていきます。 @@ -386,8 +340,7 @@ </p> </div> <p> - このセクションでは、レイアウトデコレーションの<HEAD>タグを適切にコーディングするための情報を書きます。 - では、さっそく コードを見てみましょう。 + このセクションでは、レイアウトデコレーションの<HEAD>タグを適切にコーディングするための情報を書きます。では、さっそく コードを見てみましょう。 </p> <source> <![CDATA[ @@ -417,14 +370,7 @@ </p> </div> <p> - 最初に、<code><![CDATA[ <base href="#BaseHref()">]]></code>から始めましょう。これは、 - WEBのリソースの場所の解決をするためのベースを定義する際に使用します。<code><![CDATA[ <base>]]></code>に - ついての深い議論については、<a href="http://www.w3schools.com/tags/tag_base.asp">W3C Schools Reference</a>を - 見てください。もし すでに あなたがJetspeedで、遊んだ経験があるのであれば 気づいたかもしれませんが、 - このタグは、非常にややこしいURLリライトの問題を解決してくれ、常に 整合性を保ちながら - HTMLファイルやスタイルシートへのパスを提供してくれます。BASEタグを定義することにより、この問題は全て解決されます。 - <code>#BaseHref()</code>マクロに関していうと、これは、単に あなたのWEBアプリケーションのルートディレクトリへの絶対パス - を作成します。実際のコードは、サーブレットAPIを使って記述するとこうなります。: + 最初に、<code><![CDATA[ <base href="#BaseHref()">]]></code>から始めましょう。これは、WEBのリソースの場所の解決をするためのベースを定義する際に使用します。<code><![CDATA[ <base>]]></code>についての深い議論については、<a href="http://www.w3schools.com/tags/tag_base.asp">W3C Schools Reference</a>を見てください。もしすでにあなたが Jetspeed で遊んだ経験があるのであれば、一貫した html やスタイルシートへのパスを取得するのを妨げる、幾通りもの非常にややこしい URL リライトの問題に気づくでしょう。BASEタグを定義することにより、この問題は全て解決されます。<code>#BaseHref()</code>マクロに関していうと、これは、単に あなたのWEBアプリケーションのルートディレクトリへの絶対パスを作成します。実際のコードは、サーブレットAPIを使って記述するとこうなります。: </p> <source> HttpServletRequest request; @@ -465,10 +411,7 @@ </p> </div> <p> - - このガイドを書いている今の時点では、オリジナルのJetspeed2サーバを実行させるためには、 - ほとんど Java Scriptを書く必要はありません。しかし、今後、設定機能や管理機能でAJAXを利用しようと考えているので - 近い将来変わるかもしれません。 + このガイドを書いている今の時点では、オリジナルのJetspeed 2サーバを実行させるためには、ほとんど Java Scriptを書く必要はありません。しかし、今後、設定機能や管理機能でAJAXを利用しようと考えているので近い将来変わるかもしれません。 </p> </subsection>