この記事では、Lotus iNotes カスタマイズの基本的な手法を紹介します。(この情報は、Lotus iNotes 8.5 以降に適用されます。)

Spencer, Eric W., Advisory Software Engineer - iNotes Web Access, Software Developer, IBM Software Group, IBM Collaboration Solutions

Spencer, Eric W. Advisory Software Engineer - iNotes Web Access, Software Developer, IBM Software Group, IBM Collaboration Solutions



2011年 1月 21日

はじめに

この記事では、Lotus iNotes カスタマイズの基本的な手法を紹介します。この情報は、Lotus iNotes 8.5 以降に適用されます。

最初に理解しなければならないのは、Lotus iNotes は従来の Lotus Domino Web アプリケーションではないことです。従来の Lotus Domino Web アプリケーションは Lotus Notes データベースであり、 Lotus Notes テンプレートに基づいています。Lotus Notes テンプレート・ファイルには、フォーム、ビュー、他の設計要素などが含まれています。これらの設計要素により、データベースの Lotus Notes クライアントでの動作が定義されます。Lotus Domino Web サーバーは、これらの同じ設計要素をブラウザーで表示できるように、HTML に変換します。また、ビューの表示や文書のオープンなどのタスクには、URL コマンドが使用されます。

しかし、Lotus iNotes では、ほとんどすべての設計要素が、Forms ファイルと呼ばれる個別のデータベースに格納されています。これは、すべてのメール・データベースによって参照される単一のデータベースです。Lotus Domino Web サーバーには、ユーザーによる Lotus iNotes使用を認識する特殊コードがあり、通常のメール・データベース設計要素の代わりに、Lotus iNotes の要素を使用します。Lotus iNotes 設計要素は、JSP に類似したタグ・ベースの言語を使用しています。Web サーバーはタグを処理してマークアップに変換した後で、ページを Web ブラウザーに送信します。Lotus Notes メール・データベースでは、Lotus iNotes だけが使用するいくつかの設計要素がメール・テンプレートに追加されています。しかし、Lotus iNotes が使用する設計要素の大半は Forms ファイルにあります。全体がどのように機能するのかを下図に示します。

Lotus iNotes を機能させるメカニズムはいくつかの特殊項目であり、メール・テンプレートのアイコン文書にあります。これらの項目によって、特殊な Lotus iNotes 処理を行うよう Lotus Domino サーバーに指示が出され、サーバーが Forms ファイルを検索する場所も指定されます。アイコン文書の項目を下表に示します。

$HaikuFlags"1"Quickplace ページ生成ロジックを有効にします。
$WebHybridDb"1"Quickplace ページ生成内で、Lotus iNotes バリエーションを有効にします。
$FormsTemplateFile"iNotes/Forms85.nsf"共通設計要素を格納しているデータベースです。

現在、サーバーでサポートされているのは「Forms Template File」値のハード・コーディングされたリストのみです。オーバーライドする方法として、次の NOTES.INI 設定があります。

iNotes_WA_FormsFiles=iNotes/Custom85.nsf,iNotes/Forms85.nsf,iNotes/Forms8.nsf,iNotes/Forms7.nsf,iNotes/Forms6.nsf


Lotus iNotes のカスタマイズ方法

Lotus iNotes をカスタマイズするには、いくつかの方法があります。

ポリシー

8.5 から、ポリシーのサポートが追加されました。Lotus Notes クライアントの場合と同様の方法で、Lotus Domino Administrator クライアントを使用してポリシーを追加/更新します。Lotus Domino Administrator クライアントでは、メール・ポリシー設定文書に個別の「iNotes」タブがあり、ポリシーを通じて Lotus iNotes を制御するために使用できるすべての設定が含まれています。ポリシーを使用すると、次のものを制御できます。

Lotus iNotes メール・ポリシー共有メール・ポリシー共有デスクトップ・ポリシー
8.5ユーザー UI モード
機能領域
ログイン時の機能領域
最大添付ファイル・サイズ
メール・スレッド
リモート・イメージの表示
ブラウザー・キャッシュの管理
ログアウト時の消去
添付ファイルの許可
Instant messaging 機能
デフォルトのスペル・チェック辞書
Lotus iNotes ActiveX
フィードの有効化
ウィジェットの有効化
Lotus Quickr™ 統合
カレンダー購読
オフライン設定
メールの基本
フォローアップ
アテンション・インジケーター
メッセージの回収
カレンダーの基本
カレンダーの表示
通知
スケジュール
自動処理
会議室予約
メールとカレンダーの代理
右ダブルクリックでのクローズ
プリビューで文書を既読化
送信メールの保存
送信メールへの署名
送信メールの暗号化
メール通知
インターネット・メール形式
8.5.1 で追加受信ボックスの自動更新
未読カウントの有効化
未読カウントの自動更新
スクロール・ヒントの有効化
添付ファイルを開くときの警告の無効化
電子メールからのイメージのフィルタリング
プロキシー・サーブレット名/URL のペア
起動時のサイドバー表示
プリファレンスの表示
サーバーでのアーカイブの許可
ローカル・アーカイブの許可
特記事項のテキスト
特記事項の位置
各行に文字のプレフィックスを配置
特定の長さでの行の折り返し

Lotus iNotes のポリシーの詳細については、developerWorks のこの記事 を参照してください。

コンポーネントまたは機能領域の有効化と無効化

8.5.1 から、URL 引数の &layout を使用できます。この引数を使用すると、Lotus iNotes ページのコンポーネントの有効化または無効化や、ページでのコンポーネントの配置方法の制御が可能になります。その方法の詳細については、この記事 を参照してください。

前のリリースでは、「iNotes_WA_Areas」という NOTES.INI 設定があり、Lotus iNotes で機能領域を選択的にオフにすることができました。この設定は 8.5 以降でも機能しますが、ポリシーまたは &layout 引数を利用する方がよいでしょう。

特殊なフォーム

Lotus iNotes には、一部の特殊なサブフォームで組み込みのカスタマイズ・ポイントが用意されています。サブフォームの名前は「Custom_...」で始まります。これらのカスタマイズ・ポイントを使用すると、アクション・バーへのメニュー項目の追加または削除、ビュー列の変更、マストヘッドの追加、Lotus iNotes ロゴから独自のロゴへの変更、メール・メッセージや他のエントリーの編集に使用されるリッチ・テキスト・エディターへのフォントの追加などができます。詳細については、後で説明します。

スキンとスタイルシートの編集

Lotus iNotes でページの外観を変更するには、スキンとスタイルシートを変更します。

フォームの変更

Lotus iNotes の動作を変更するとき、組み込みカスタマイズ・ポイントに必要な機能が用意されていない場合は、メインの Lotus iNotes コードを変更できます。この記事でも概要を説明しますが、より詳細な内容は他の記事に記載されています。記事の最後にあるリンクを参照してください。


新しいコード・アーキテクチャー

詳しい説明に進む前に、コードのインフラストラクチャーについて理解する必要があります。8.0.1 から、低帯域幅でのインストールのために、Lotus iNotes に新しいライト・モードが導入されました。ライト・モードは、Web 2.0 の概念 (AJAX やウィジェットなど) を数多く取り入れた、まったく新しいコード・アーキテクチャーを使用して実装されました。また、新しいタブ付き UI も含まれています。8.5 から、Lotus iNotes は新しい「ライト」コード・アーキテクチャーをフル・モードにも使い始めました。ただし、すべてが切り替わったわけではありません。フル・モードとライト・モードのすべてのビューは、新しいコード・アーキテクチャーを使用します。しかし、フル・モードの文書フォームなど、一部のフォームはまだ古い「クラシック」アーキテクチャーを使用しています。「クラシック」アーキテクチャーを使用しているフォームを以下に示します。このリストに含まれないものは、すべて新しいアーキテクチャーを使用します。

  • フル・モードのカレンダー、連絡先、タスク、ノートブックのエントリー・フォーム
  • フル・モードのメール読み込みフォーム (8.5 よりも前。8.5.1 から、メール読み込みフォームは新しい「ライト」アーキテクチャーを使用します)
  • フル・モードのメール編集フォーム (8.5.1 よりも前。8.5.2 から、メール編集フォームは新しい「ライト」アーキテクチャーを使用します)
  • ライト・モードのカレンダーと連絡先のエントリー・フォーム
  • ホーム・ページ
  • プリファレンス

Forms ファイルでは、名前に「Lite」が付いている要素が、必ずしもライト・モードでのみ使用されるのではないことに留意してください。これは、フル・モードでも、ライト・モードでもいずれの場合も可能な、新しい「ライト」コード・アーキテクチャーでの使用を意味します。


カスタマイズ・サブフォーム

前述のように、Lotus iNotes のカスタマイズに使用できるいくつかのサブフォームがあります。8.5.1 よりも前は、これらのサブフォームは Lotus iNotes の Forms ファイル (Forms8.nsf、Forms85.nsf など) にありました。しかし、8.5.1 から、拡張 Forms ファイル (Forms85_x.nsf) という個別のファイルに移動しました。拡張 Forms ファイルはオプションのファイルです。Lotus Domino サーバーに拡張 Forms ファイルがある場合、Lotus iNotes は、それに含まれているカスタマイズ・フォームとサブフォームを読み込みます。ただし、拡張 Forms ファイルはデフォルトではインストールされません。付属のテンプレートから、ユーザーが作成します。このため、Hotfix または新しいリリースをインストールしても、カスタマイズした内容は、新規リリースによって上書きされません。

拡張 Forms ファイルの作成方法については、Lotus iNotes Administrator の資料を参照してください。関連トピックについては、Lotus Domino and Notes Information Center より こちら を参照してください。

Custom_JS_Lite

拡張 Forms ファイルのメインのカスタマイズ・フォームは Custom_JS_Lite です。繰り返しになりますが、名前にある「Lite」は新しいコード・アーキテクチャーで使用される、という意味です。つまり、すべてのビューと一部の文書フォームで使用されます。「クラシック」アーキテクチャーに使用されるカスタマイズ・フォームは「Custom_JS」と呼ばれ、このフォームもまだ存在しています。唯一の違いは、前のリリースではそれがフォームであったのに対し、現在は Custom_JS と Custom_JS_Lite のどちらもサブフォームであることです。どちらのサブフォームにも、ほぼ同じ関数が含まれています。新しいアーキテクチャーのビューまたはフォームをカスタマイズするときは「Cutom_JS_Lite」を使用し、「クラシック」フォームをカスタマイズするときは「Custom_JS」を使用することだけ覚えておいてください。

Custom_JS_Lite サブフォームには、新しいアーキテクチャーのすべてのビューまたはフォームでも使用できる JavaScript があります。これには、前述のカスタマイズ (アクション・バーの変更など) を行うために使用できるいくつかの関数が含まれています。また、このサブフォームは、各ページで利用する独自の JavaScript を配置する場所でもあります。しかし、ユーザーごと、またはメール・ファイルごとに式を計算する必要がある場合は、ブラウザー・キャッシュの問題を避けるために、l_SessionInfo、f_SessionInfo、または s_SessionInfo の各フォームに JavaScript を配置してください。

Custom_JS_Lite には、2 種類の関数があります。1 つはコールバック関数で、ユーザーが独自のコードを追加できるスタブ関数です。これらの関数は、特定のイベントが発生したとき (ページがサーバーに送信されるときなど) に呼び出されます。もう 1 つはヘルパー関数で、ユーザーのカスタマイズ・コードから呼び出せる関数です。8.5.1 から、ほとんどのヘルパー関数のコードが Custom_JS および Custom_JS_Lite から削除されました。しかし、まだコードから呼び出すことは可能です。また、Custom_JS および Custom_JS_Lite でのヘルパー関数の使い方に関するコメントもあります。

主なコールバック関数とその使い方を以下で説明します。

Scene_Actions_Lite - アクション・バーの構築中に呼び出されます。アクション・バー項目を変更する関数は、ここに追加します。アクション・バー項目を追加、削除、および位置変更するヘルパー関数があります。詳細については後述します。

Scene_PostLoad_Lite - ページ上の各ウィジェットがロードされた後に呼び出されます。これは、ページがロードされた後に各ページで 1 回だけ呼び出される「クラシック」バージョンの Scene_Postload とは異なる点に注意してください。

Scene_PreSubmit - ページが送信される直前に呼び出されます。たとえば、メール・メッセージを送信するときです。

アクション・バーを変更するために呼び出すことができるヘルパー関数を以下に示します。ヘルパー関数は、Scene_Actions_Lite コールバック関数内で呼び出します。ヘルパー関数を使用する場合は、Custom_JS_Lite で次の行をアンコメントしてください。

<InsertNotesSubForm Name=API_ActionsHelper_Subform_Lite>

addActionsLite - 新規メニューまたはサブメニューをアクション・バーに追加します。

removeActionsLite - 新規メニューまたはサブメニューをアクション・バーから削除します。

repositionActionsLite - メニューまたはサブメニューの位置を変更します。

checkActionIDs - メニュー ID を表示します。addActionsLite、removeActionsLite、および repositionActionsLite への呼び出しで使う必要がある ID を表示するときに、この関数を呼び出します。カスタマイズした内容を稼働中のシステムに移行する前に、忘れずにこの関数を削除してください。

checkActionPositions - 「クラシック」フォームで、メニュー位置の数値を表示します。

Custom_JS サブフォームおよび Custom_JS_Lite サブフォームに含まれるコメントに、コールバック関数とヘルパー関数の使い方に関する追加情報が記載されています。

その他のカスタマイズ・サブフォーム

Custom_Welcome - Web ページ・パネルの選択肢に Web サイトを追加します。

Custom_JS_Edit - 新規フォントをリッチ・テキスト・エディターに追加します。

Custom_Masthead - マストヘッドをページの一番上に追加します。

Custom_CSS - CSS スタイルを追加します。

Custom_Banner_Lite - 表示されたロゴを変更します。

設計要素とカスタマイズ・サブフォームの編集

上記のカスタマイズ・サブフォームまたは他の Lotus iNotes 設計要素を変更するには、Lotus Domino Designer で Forms ファイルまたは拡張 Forms ファイルを編集します。変更方法は、他の Lotus Notes アプリケーションの場合と同様です。フォームとサブフォームは、通常の場所である、それぞれのリストに存在しています。また、イメージ要素とスキン要素は、ファイルとして「リソース」に格納されています。

独自の HTML ファイルやイメージ・ファイルを Forms ファイルや拡張 Forms ファイルに追加したい場合は、「リソース」->「ファイル」セクションで追加できます。そして、カスタマイズ・コード内で次のようにファイルを参照します。

src="/iNotes/formsfile/image.png"

formsfile = Forms85.nsf or Forms85_x.nsf

background-image:url(@{formsfile}/imagefile.gif?OpenFileResource&MX);

formsfile = s_FF for main Forms file and s_EFF for Extension Forms file

また、独自のファイルを Lotus Domino サーバーのファイル・システムに置くこともできます。次のディレクトリーに配置します。

<Domino data directory>\\domino\\html ディレクトリー

そして、次のようにファイルを参照します。

src="/file.html"

Scene_PreSubmit コールバックを使用する簡単な例を紹介しましょう。この例では、送信する電子メールに含まれる受信者の数をチェックするコードが追加されています。受信者が 4 人を超える場合は、ユーザーに確認を求めるメッセージがポップアップします。ユーザーが「いいえ」を選択すると、電子メールは送信されません。

この例では、「クラシック」メール・メッセージ・フォームをカスタマイズすることに注意してください。したがって、変更は Custom_JS に行います。

function Scene_PreSubmit( s_SceneName, o_Window, s_SubmitAction ){
<NotesComment>
// This function will be called just before a form except native Lite mode form 
// (Memo in read/edit mode, Notice in read mode)
// is submitted, but after Domino Web Access has done its own validation.
// Return false to stop the submission of the FORM.
</NotesComment>

if (s_SceneName == "s_MailMemo" && (s_SubmitAction == "h_ShimmerSend" ||
   s_SubmitAction == "h_ShimmerSendAndFile" ) ) {

      var oDoc = window.document;

      var aSendTo = oDoc.getElementById('dispSendTo').value.split(",");
      var aCopyTo = oDoc.getElementById('dispCopyTo').value.split(",");		
      var aBlindCopy = oDoc.getElementById('dispBlindCopyTo').value.split(",");		

      if (aSendTo.length + aCopyTo.length + aBlindCopy.length > 4) {
         if( !window.confirm("Total number of recipients is larger than 4." +  
            "Are you sure you want to send?") ) {  
               return false;
         }
      }
}


return s_SubmitAction;
}

この例では、Scene_PreSubmit が false を返すと、送信アクションが中断されることがわかります。通常の送信処理を続行したい場合は、s_SubmitAction を返す必要があります。

また、s_SceneName パラメーターを使用して、どのフォームが使用されているのかをチェックしていることもわかります。役に立つと思われる s_SceneName の他の値を以下に示します。

メール・メッセージs_MailMemo
メール・メッセージ - ライト・モードMemo
カレンダー・エントリーs_Appointment
タスク項目s_ToDo
連絡先エントリーs_Contact
ノートブック・エントリーs_NotebookPage

s_SubmitAction パラメーターは、どの送信アクションが実行されているのかをチェックするために使用されます。s_SubmitAction の他の値は次のとおりです。

h_Exitキャンセル
h_ShimmerSendメッセージの送信
h_ShimmerSendAndFileメッセージの送信と保存
h_Jump保存
h_TempSave保存 (ウィンドウを閉じない)
h_SpellCheckスペル・チェック
h_Linkリンクの挿入
h_Imageイメージの挿入

アクション・バー項目の変更例については、Scene_Actions() および Scene_Actions_Lite() コールバック関数のサンプル・コードを参照してください。コードをアンコメントすると、実際に機能することがわかります。Custom_JS および Custom_JS_Lite で、アクションのヘルパー・サブフォームを必ず有効にしてください。これを行うには、Custom_JS および Custom_JS_Lite の先頭付近にある InsertNotesSubForm タグを囲んでいる NotesComment タグを削除します。

<InsertNotesSubForm Name=API_ActionsHelper_Subform>

<InsertNotesSubForm Name=API_ActionsHelper_Subform_Lite>


Lotus iNotes の外観のカスタマイズ

スキンとスキン・グループ

Lotus iNotes ページのレイアウトはスキンによって定義されます。スキンは、スキン・グループにグループ化されます。スキン・グループは、ページを記述する HTML が含まれるレイアウト・ファイルと、CSS スタイル定義が含まれるスタイルシートを保持しています。8.5.1 よりも前は、ブラウザー (IE、Mozilla、Safari など) ごとに個別のスキン・グループがありました。8.5.1 以降は、1 つのグループだけがあり、条件に応じてスタイルシートのセクションを含めるメカニズムを持っています。詳細については、この記事を参照してください。

スキン・ファイルは、「リソース」->「ファイル」セクションのメイン Forms ファイル (Forms85.nsf) にあります。スキン・ファイルの命名は次の規則に従います。最初のパートがスキン・グループで、2 番目のパートがスキン名です。たとえば、「f_ShimmerSkin-h_ListFolder」となります。

スキン・グループの命名規則は次のとおりです。

l_ShimmerSkin...ライト・モード
f_ShimmerSkin...フル・モード
h_ShimmerSkin...- 「クラシック」フォーム
- 8.0.x フル・モード
- 7.x 以前のリリース

スキン・グループの例を示します。

f_ShimmerSkinIE 用
f_ShimmerSkin_GeckoFirefox 用
f_ShimmerSkin_SafariSafari 用
f_ShimmerSkin_UBサポートされていないブラウザー
f_ShimmerSkin_ACC使用されていません

使用されているスタイルシートは次のとおりです。

h_StylesheetViewビューに使用
h_StylesheetDocuments文書に使用 -- ライト・モードのメールおよび会議通知のみ
h_StylesheetOverride「クラシック」フォームに使用
h_Stylesheetビューまたは文書に限定されないものに使用
h_StylesheetPortalWebSphere Portal に使用

例: f_ShimmerSkin_Gecko-h_StyleSheetDocuments

どのスキンが使用されるのか

Lotus iNotes ページのレイアウトを変更する前に、どのスキン・ファイルを変更するのかを確認する必要があります。使用されるスキン・レイアウト・ファイルは次のとおりです。

h_ListFolder - h_SkinTypeOverride が設定されていない限り、すべてのビューに使用されます。

h_MailPage - 「ライト」アーキテクチャーの文書フォームに使用されます。

「クラシック」フォームでは、スキンを識別するために、2 つの変数がページで定義されています。

  • h_CurrentSkinName 変数はスキン・グループを識別します。
  • h_CurrentSkinType 変数はスキンの種類を次のように識別します。
  • h_MailPage: メール・メッセージ、連絡先、ノートブック・ページ
  • h_ApptPage: 会議、予定、タスク

スキンの詳細

前述のように、スキン・ファイルは、Lotus iNotes ページを記述する HTML を保持しています。各スキンには、さまざまなスキン・コンポーネントが含まれています。これにより、ページ上でのさまざまなコンポーネントの追加または削除がたいへん容易になります。

スキンのサンプル HTML セグメントを以下に示します。いくつかのスキン・コンポーネントが含まれています。

<div id="e-maintabs-container" class="s-toppanel">
<InsertNotesSubForm name="ShimmerMainTabs_SkinComponent_Lite">
</div>
<div class="s-toppanel" style="height:1.5em;">
<InsertNotesSubForm name="Modepanel_SkinComponent_Lite">
</div>

Modepanel_SkinComponent_Lite のようなスキン・コンポーネントが、InsertNotesSubForm タグを使用して挿入されていることがわかります。これは、前に説明した特殊な Lotus iNotes タグの 1 つです。また、QuickPlaceSkinComponent タグを使用して、スキン・コンポーネントが挿入されていることもわかります。さらに、「com_ibm_dwa_ui_widget_class」属性を持つ要素もあります。これらは Lotus iNotes ウィジェットであり、後で詳しく説明します。

最後に、<v:fill> タグ (IE) または <canvas> タグ (Mozilla) がスキン・ファイルに含まれることもあります。これらは、グラデーションの塗りつぶしを定義します。グラデーションの塗りつぶしの色のすべての仕様は、dwa.properties という 1 つのファイルに収められています。

もう 1 つ注意したいのが、Lotus iNotes では多数の CSS スタイルを使用して、ページでの項目の位置を決めていることです。これらのスタイルは、s-stack、s-basicpanel、s_toppanel のような名前のクラスにあります。スタイルの詳細については、この記事 を参照してください。

スキンの変更

Lotus iNotes ページのレイアウトを変更するには、「リソース」->「ファイル」セクションのメイン Forms ファイルにある 1 つ以上のスキン・レイアウト・ファイルを編集します。スタイルまたは色を変更したい場合は、拡張 Forms ファイルにある Custom_CSS サブフォームにオーバーライド・スタイルを追加します。使用されているスタイルを調べるには、メイン Forms ファイル内のスタイルシートを見るか、DOM インスペクターを使用します。グラデーションの塗りつぶしの色をオーバーライドするには、拡張 Forms ファイルの「ファイル」セクションに dwa.properties ファイルを作成し、このファイルにオーバーライドする色の仕様を追加します。オーバーライドできる色や、色の指定方法については、メイン Forms ファイルに含まれる dwa.properites ファイルを参照してください。

Lotus iNotes ページの外観を変更する例を紹介します。この例では、上部の領域を少し明るい色にして、Lotus iNotes ロゴを変更します。これを行うには、拡張 Forms ファイルに次のような変更を加えます。

1. スタイルシート内のスタイルを更新します。この場合は、右上のボタン領域の背景色を変更するだけです。「s-modepanel」クラスを Custom_CSS サブフォームに追加し、目的の色に変更することにより、このクラスをオーバーライドします。

.s-modepanel {
	background-color:#93AED2;
	-moz-border-radius-bottomleft:4px;
}

2. グラデーションの塗りつぶしの色を更新します。上部の領域で残っている色は、グラデーションの塗りつぶしです。「リソース」->「ファイル」セクションで dwa.properties ファイルを作成し、オーバーライド色の仕様を追加することで、これをオーバーライドします。グラデーションの塗りつぶしは、4 つの整数のセット [P1, R1, G1, B1, P2, R2, G2, B2, ...] で指定されることに注意してください。

Pn = 長方形のパーセント (0 = 一番上、100 = 一番下)
Rn = 赤の値
Gn = 緑の値
Bn = 青の値

色の指定方法の詳細については、メイン Forms ファイルにある dwa.properties のコメントを参照してください。

# Top most area
D_GRADIENT_TOPTOOLBAR=[0, 255, 255, 255, 100, 235, 235, 235]
D_BORDER_TOPTOOLBAR=#306090

# Mode panel
D_GRADIENT_MODEPANEL=[0, 215, 215, 215, 100, 71, 119, 183]
D_STROKE_MODEPANEL=#D7D7D7
D_GRADIENT_MODEPANEL_HIGHLIGHTED=[0, 255, 194, 89, 100, 247, 160, 44]
D_STROKE_MODEPANEL_HIGHLIGHTED=#B57131

# Tab widget
D_GRADIENT_TAB=[0, 40, 63, 94, 100, 40, 63, 94]
D_STROKE_TAB=#1e2f47
D_GRADIENT_TAB_HIGHLIGHTED=[0, 255, 255, 255, 100, 255, 255, 255]
D_STROKE_TAB_HIGHLIGHTED=#1e2f47
D_GRADIENT_TAB_SELECTED=[0, 255, 255, 255, 100, 255, 255, 255]
D_STROKE_TAB_SELECTED=#1e2f47

3. ロゴを変更します。「リソース」->「ファイル」セクションに newlogo.gif ファイルを追加することにより、新しいロゴを挿入します。次に、Custom_Banner_Lite サブフォームを編集して、新規ロゴ・ファイルを指定します。また、次に示すコードのブロックを囲んでいる NotesComment タグを削除し、IMG タグの xoffset 属性および yoffset 属性を削除することに注意してください。

<table class="s-leftpanel" 
style="left:4px;height:1.7em;table-layout:fixed;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td id="CustomProductLogo" style="vertical-align:middle;padding:0px 6px;"> <script> var EDh = 'AAA.DSq.ELU(event, this.id, \'Eli\');'; var sHtml = '<img id="e-aboutlogo"
class="s-handcursor s-cell-center" onclick="' + EDh + '"' + ' alt="' + <dwa:string id="L_ABOUT_LOGO_ALT_TEXT"/> + '" title="' + <dwa:string id="L_ABOUT_LOGO_ALT_TEXT"/> + '"' + ' width="111" height="16"' + ' src="' + parent.AAA.BYp('newlogo.gif', true) + '">'; document.write(sHtml); </script><!-- --></td> </tr> </tbody> </table> <style>#ProductLogo {display:none}</style>

この例では、Firefox での Lotus iNotes の外観を更新しています。IE および/または Safari での外観を更新するには、同様の変更を行います。結果を以下に表示します。

更新前

更新後

ウルトラ・ライト・モードのカスタマイズ

ウルトラ・ライト・モードには、フル・モードおよびライト・モードのように多数のカスタマイズ機能はありません。しかし、基本的な情報がいくつか含まれています。

ウルトラ・ライト・モードでは、スキンを使用しません。8.5 よりも前は、すべてのスタイルが次の 2 つのスタイルシートに含まれていました。

iphone.css - モバイル・デバイスに使用されます。
standard.css - デスクトップ・ブラウザーに使用されます (Firefox のみがサポートされています)。

8.5 以降は、スタイルシートが「m_StyleSheet」というプレフィックスで始まるフォームに移動しました。デバイスのタイプごとに 1 つのスタイルシートがあります。例を示します。

m_StyleSheet_Andriod
m_StyleSheet_Gecko
m_StyleSheet_iDevice

レイアウトとコードは、「m_xxx」という名前のサブフォームにまとめられています。また、イメージは「mxxx」という名前のファイルにあります。


Lotus iNotes Web ページの作成

Lotus iNotes の組み込みカスタマイズ・ポイントを使用してできることは、基本的なタイプのカスタマイズです。Lotus iNotes の動作変更など、より複雑なカスタマイズをするには、コード・アーキテクチャーとページの作成方法をもう少し詳しく理解する必要があります。以下の説明は、ほんの紹介に過ぎません。より詳しい情報については、このセクションに関する他の Wiki 記事で参照できます。

最初に理解すべきことは、すべてのフォームおよびサブフォームはパススルー HTML であることです。スキンおよびサブフォームを挿入するために、特殊な Lotus iNotes タグが使用されます。また、Lotus iNotes では、いくつかの標準 Lotus Domino Web コマンド (OpenDocument など) も使用されます。

繰り返しになりますが、8.5 では、8.0.1 のライト・モードのために導入された新しいコード・アーキテクチャーが使用されることを思い出してください。しかし、一部のフォームでは、まだ「クラシック」コードを使用しています。このため、カスタマイズを行うときは、適切な場所に変更を加えるために、カスタマイズしたいページが新しいアーキテクチャーを使用しているか、まだ「クラシック」アーキテクチャーを使用しているのかを把握する必要があります。

Lotus iNotes で使用されるコードの多くは、サブフォームにあります。必要に応じて各ビューまたは各文書に、複数のサブフォームがロードされます。サブフォームの命名規則は次のとおりです。

xxxCodeIE 用
xxxCode_GeckoFirefox 用
xxxCode_SafariSafari 用
f_xxxフル・モードでのみ使用
l_xxxフル・モードおよびライト・モードで使用

サブフォームのロード時にサブフォーム名を表示するには、次の NOTES.INI 設定を使用できます。サブフォーム名はサーバー・コンソールに表示されます。

iNotes_WA_Debug_SubForms=1

また、Firebug や Visual Studio などの JavaScript デバッガーを使用して、現在ロードされているフォームおよびサブフォームを表示することもできます。

「クラシック」フォーム (フル・モードのメール・メモ、予定、連絡先、タスク、およびノートブックなどの各フォーム) の場合は、いくつかの標準サブフォームが使用されます。「クラシック」フォームは iframe 内にロードされ、8.5 よりも前のリリースの場合とほぼ同様に機能します。標準サブフォームは次のとおりです。

<prefix>+Dictionaryスキーマを定義します。スキーマは、フォームに格納されたすべてのフィールドです。
<prefix>+Read_InitHTMLの <head> 部に配置される内容です。文書が読み込みモード
<prefix>+ReadHTMLの <body> 部に配置される内容です。文書が読み込みモードのときに使用されます。
<prefix>+Edit_InitHTMLの <head> 部に配置される内容です。文書が編集モードのときに使用されます。
<prefix>+EditHTMLの <body> 部に配置される内容です。文書が編集モードのときに使用されます。

<prefix> は文書の種類に応じて決められます。

  • s_MailMemo
  • s_MeetingNotice
  • s_Appointment
  • s_Contact
  • s_ToDo
  • s_Notebook

サブフォーム名の例:

s_AppointmentEdit_Init

特殊なサーバー・サイド・タグ

前述のように、Lotus iNotes はいくつかの特殊なサーバー・サイド・タグを使用して、その Web ページを作成します。ここでは、JSP に類似した、内部で開発されたタグ言語を使用します。いくつかの重要なタグを以下で説明します。

<InsertNotesSubForm Name=SubFormName>サブフォームの挿入に使用します。計算結果の値を名前にすることができます。例を示します。
Name=@{...}

@If を使用し、空のストリングを指定すると、条件に応じて挿入できます。

8.5.1 から、ユーザーは独自のサブフォームを拡張 Forms ファイルに追加できるようになりました。拡張 Forms ファイル内のサブフォームには、「optional」属性を指定します。

<InsertNotesSubForm optional="yes" name=your_custom_subform>
<QuickPlaceSkin>現在のスキン・グループのスキン・タイプの内容を挿入します。
<QuickPlaceSkinComponent Name=xxx>「xxx_SkinComponent」という名前のサブフォームの内容を挿入します。オプションの「Format」属性と「Argument」属性があります (一部のスキン・コンポーネントによって使用されます)。この属性は、スキン・コンポーネントからアクセスできる JavaScript の arg に変換されます。「Format」属性は特殊な <Item> タグをサポートします。このタグを使用すると、ランタイムにタグを非表示にするよう判断される場合に、一部のマークアップを除外できます。実際のタグの内容が、この場所に出力されます。例を示します。

<QuickPlaceSkinComponent Name="Logout" Argument="0" Format={<td class="s-toptoolbar-text s-toptoolbar-bg-middle" nowrap><Item></td>}>
<NotesField Name=ItemName>永続フィールドを定義します。属性は次のとおりです。
- Type=Text|TextList|RichText|Mime|Number|NumberList| Time|TimeList
- InitialValue=xxx (文書内に項目がない場合に評価されます)
- Value=xxx (ページが生成されて保存されるときに評価されます)
- includeif={@formula} (条件によるインクルード)
<NotesVar Name=ItemName>表示用の計算結果だけの項目を定義します。NotesField と同じ属性があります。
<NotesDictionary>...
</NotesDictionary>
NotesField タグおよび NotesVar タグは、NotesDictionary ブロック内に配置する必要があります。
<NotesComment>...
</NotesComment>
どのような応答についても、クライアントに返さない内容を含めるブロックです。
@{....}計算結果テキスト。このタグ内で、Lotus Domino Web ベースの式を指定できます。

また、特殊なフィルターを通じて出力を実行できます。
- jsdata: JavaScript ストリング・データ (アポストロフィーはエスケープされます)
- html: 有効な html データ
- xml: 有効な xml データ

例:

haiku.CalendarProfileOwnerName = '@{{@Name([Canonicalize]; @GetProfileField("calendarprofile";"Owner"))};jsData}';

@block の他にも、特殊な Lotus iNotes @DBCommand があります。次の @DBCommand は、Lotus iNotes 特有のさまざまなサーバー・コマンドを呼び出すために使用されます。

@DbCommand("Haiku";"<command name>" [;"Arg1";"Arg2";...])

主なコマンドは次のとおりです。

h_Vars文書内のすべての非システム項目を値付きの JavaScript 変数として出力します。

オプションの引数:
- Arg1: 処理されている現在の DB 内にある 文書の UNID (指定されない場合は現在の文書)
- Arg2: プレフィックス・ストリング (各項目の前に付加するストリング。項目を他の JavaScript オブジェクトのプロパティーとして渡すときに役立ちます)(デフォルト: "var ")
- Arg 3: "1" = 現在の文書上のすべての項目を出力します (デフォルト)。"0" = NotesDictionary ブロックで指定されている場合にのみ出力します。
h_RunAgent指定されたエージェントを実行します (ページ出力に役立ちます)。

必須の引数:
Arg 1: エージェントの名前

オプションの引数:
Arg 2: 共通エージェント -- "0" = エージェントは現在処理中の DB にあります (デフォルト)。"1" = Forms ファイル内; "2" = 拡張 Forms ファイル内 (8.5.2 から使用可能)

NotesFields および NotesVars を定義する例を示します。

永続フィールドを作成する< NotesField Name=“Subject” Type=Text>
初期値を持つフィールドを作成する< NotesField Name="From" Authorfield="Yes" Initialvalue={@UserName(0)}>
プロファイル文書からの値を持つ表示フィールドを作成する< NotesVar Name=EnableSignature Type=Text Value={@GetProfileField("calendarprofile"; "EnableSignature")}>
@DBCommand からの値を持つ表示フィールドを作成する<NotesVar Name=NotesAgentIsEnabled Type=Text Initialvalue={@DbCommand("haiku"; "s_IsAgentEnabled"; "OutOfOffice")}>

7.0 から、式を呼び出す @DBCommands の多くは「dwa」タグに移行されました。このタグは、式エバリュエーターを呼び出さずに、必要な関数をサーバー上で直接呼び出します。このタグは標準 XML で指定します。定義はメイン Forms ファイルの dwa_tags フォームにあります。

定義の例

<tagdefinition name="getvars" outputformat="jscript">
<description>Provide access to the h_Vars functionality.</description>
<argument type="text" optional="yes" name="unidstring" />
<argument type="text" optional="yes" name="prefixstring" />
<argument type="text" optional="yes" name="includeall" value="1" />
<bodyfunction namespace="haiku" builtin="h_Vars" />
</tagdefinition>

使用例

<dwa:getvars includeall="0" />
<dwa:getvars unidstring="{ComputedItemContainingUnid}" />

QueryOpen エージェント、QuerySave エージェント

他の Lotus Domino アプリケーションと同様に、Lotus iNotes も QueryOpen エージェントと QuerySave エージェントをサポートしています。これらのエージェントは、次の NOTES.INI 設定を設定することで有効になります。

iNotes_WA_QueryAgents=1

これらのエージェントを有効にするには、次の NotesVar のいずれか、または両方をページで設定します。

$$QueryOpenAgent
$$QuerySaveAgent

これらのエージェントの使い方の詳細については、developerWorks のこの記事 を参照してください。

Lotus iNotes ウィジェット

8.5 の新しいコード・アーキテクチャーでは、Lotus iNotes はより多くのウィジェットを使用します。その一部は、右側のサイドバーに表示される Dojo ウィジェットです。しかし、内部で開発されたウィジェットも多数あり、これらは Lotus iNotes ウィジェットと呼ばれています。このため、ページ上に表示されている要素には、スキン・コンポーネント以外にも、Lotus iNotes ウィジェットがあります。ウィジェットとスキン・コンポーネントの違いは、ウィジェットのコンテンツがクライアント・コードによって生成される点です。これに対し、スキン・コンポーネントはサーバー・サイドで生成されます。ウィジェットもパフォーマンスに有利な遅延ロードが可能です。

ユーザーは既存の Lotus iNotes ウィジェットをカスタマイズすることも、独自のウィジェットを作成することもできます。Lotus iNotes ウィジェットの構文に関する詳細については、この記事 を参照してください。

簡潔に述べると、ウィジェットには UI ウィジェットと非 UI ウィジェットがあります。UI ウィジェットはルート要素 (通常は <div>) を持ち、「com_ibm_dwa_ui_widget_class」属性を持っています。ウィジェットのコードは、l_JSBase サブフォーム、または l_JSRead フォームおよび l_StdPageOperations フォームに含まれるサブフォームに存在します。

ウィジェットをカスタマイズするには、Scene_PostLoad_Lite コールバック関数にコードを追加します。例を示します。

if (s_SceneName == 'e-switcher-mail:FZM') {
        // customize view switcher widget (FZM = com_ibm_dwa_ui_switcher)
}

デバッグ・ツール

Lotus iNotes ページの要素を調べ、Lotus iNotes JavaScript コードの表示およびデバッグを行うために使用できるツールがいくつかあります。DOM インスペクターおよび JavaScript デバッガーのリストを以下に示します。

FirefoxVenkman
Firebug
IEVisual InterDev
Visual Studio
Developer Toolbar
SafariWeb Inspector

デバッガーでコードを見るときは、JavaScript が難読化されている点に注意してください。つまり、関数および変数の多くが 2、3 文字の名前に短縮され、ホワイト・スペースが削除されています。これは、ネットワーク上でブラウザーに送信しなければならないバイト数を減らすためです。

残念ながらこのために、コードが読みにくくなっています。少しでも読みやすくするために、元の関数名を短縮名に変換するときに使用する難読化テーブルが Forms ファイルに用意されています。これは ObfuscationList.txt というファイルで、「リソース」->「ファイル」セクションにあります。


その他の情報

新しい「ライト」アーキテクチャーの詳細については、この記事 を参照してください。

「クラシック」アーキテクチャーでのデータ操作に関するより詳細な例については、この記事 を参照してください。

「ライト」アーキテクチャーでのデータ操作に関する類似例については、この記事 を参照してください。

また、Lotus Notes/Domino Wiki のこのセクションで、他の記事も確認してください。

8.5 での Lotus iNotes のカスタマイズに関して質問がある場合は、developerWorks の Lotus Notes/Domino 8.5 Forum を使用できます。「Lotus iNotes / Customization」セクションに質問を投稿してください。

最後になりますが、IBM はカスタマイズした Lotus iNotes Forms ファイルを正式にサポートしていません。Lotus iNotes のカスタマイズに関するサポートポリシーについては、こちら を参照してください。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=617613
ArticleTitle=Lotus iNotes のカスタマイズの基本
publish-date=01212011