本文へジャンプ

ソフトウェア > Lotus > Lotus Developer Domain > 製品別技術情報 > Lotus Notes/Domino > 

LDD Today

WebアプリケーションをNotesアプリケーションのように動作させる方法

Lotus Software
by Dean Menzel
レベル:中級者
対 象: Notes/Domino
原文の掲載:2002年8月1日

LDD Today の原文(US)

WebアプリケーションをNotesアプリケーションのように動作させることができます。JavaScriptのonDblClickイベントとonKeyPressイベントを利用すると、文書をダブルクリックして編集し、Escキーを押して閉じることができるようになります。そのためには、HTML Body AttributesオブジェクトとHTML Head Contentオブジェクトにコードを追加し、このコードを処理するための非表示の表示用の計算結果テキスト・フィールドをフォーム上に4つ作成します。

注:以下のコードが動作するのは、Microsoft Internet Explorer 5.5以降だけです。また、アプリケーションのURLが、Domino URLコマンド構文フォーマットを使用していることを確認してください。たとえば、Webブラウザーで文書を読み込みモードで開くには、URLに?OpenDocument URLコマンドが必要です。

Domino DesignerでWebアプリケーションのフォームを開き、[オブジェクト]ウィンドウで[HTML Body Attributes]を選択します。次のコードをコピー・アンド・ペーストします。

"onKeyPress=\"pageOnKeyPress()\" onDblClick=\"pageOnDblClick()\"

onKeyPressイベントとonDblClickイベントが<BODY>開始タグの中に表示されます。これにより、文書内の任意の場所をダブルクリックすると文書が編集モードで開き、編集モードのときにEscキーを押すと、文書の保存を促すメッセージが表示されます。

[HTML Head Content]に、以下のコードをコピー・アンド・ペーストします。

pathparts:=@Explode(@Middle(path_info;0;"?");"/");
ViewPath:=@Implode(@Subset(pathparts;@Elements(pathparts)-1);"/") + "? openview";

"<SCRIPT>" +
"function pageOnKeyPress(){" +
@If(!allowedToEdit;"return";"")+
"/* ESC key pressed */ " +
"if(event.keyCode==27){" +
@If(@IsDocBeingEdited;
"if(confirm(\"Do you wish to save?\"))document.forms[0].submit();else return;";
"var thisRef=location.href.toLowerCase();"+
"if(thisRef.indexOf(\"openview\")==-1)location.href='/"+ViewPath+"'"
) +
"}" +
"}" +
"function pageOnDblClick(){" +
"location.href='"+@Middle(path_info;0;"?")+"?"+@ReplaceSubstring (@LowerCase(query_string);"opendocument";"editdocument")+"';" + "}" +

"</SCRIPT>"

onKeyPressイベントとonDblClickイベントのJavaScriptは、式言語を使用して動的に計算されます。pageOnKeyPress()関数は、ページが読み込みモードか編集モードかに応じて動的に計算され、読み込みモードのときにEscキーを押すと元のビューに戻り、編集モードの場合には文書の保存を促すメッセージが表示されます。

HTML Head ContentとHTML Body Attributesにコードを追加したら、次に、そのコードを処理するためのフィールドをいくつかフォームに作成します。

まず最初に、path_infoとquery_stringという2つのフィールドを作成します。この2つのフィールドを使用して、正しいDomino URLコマンド構文とURLをWebブラウザーのために特定します。まず、非表示の表示用の計算結果テキスト・フィールドをフォーム上に2つ作成し、それぞれにpath_infoとquery_stringという名前を付けます。その後、プログラマー・ムペインで、フィールドの値としてこれらのフィールド名を入力します。

次に、3つ目の非表示の表示用の計算結果フィールドをフォーム上に作成し、$$Returnという名前を付けます。その後、プログラムペインに、フィールドの値として以下のコードをコピー・アンド・ペーストします。

thisDBFilePath:=@ReplaceSubstring(@Subset(@DbName;-1);"\\";"/");

@If(@Contains(@LowerCase(query_string);"savedocument");
"["+path_info+"?"+@ReplaceSubstring(@LowerCase (query_string);"savedocument";"opendocument")+"]";
"["+thisDBFilePath+"/default/"+@Text(@DocumentUniqueID)+"? opendocument]")

最後に、4つ目の非表示の表示用の計算結果テキスト・フィールドをフォームに追加して、allowedToEditという名前を付けます。その後、プログラムペインで、フィールドの値として@True式を追加します。このallowedToEditフィールドは、ユーザーがdouble-clickイベントで文書を編集モードで開くことができるようにしているかどうかを判定します。allowedToEditの式は、@Trueか@Falseに評価されます。この式は、任意のACLセキュリティー・モデルから計算できます。

Webアプリケーションにこれらの変更を加えると、アクションを実行するたびにボタンを探してクリックしなくても済むようになるため、Notesクライアントを使い慣れたユーザーにとってはWebが格段に使いやすくなります。
 
上に戻る