Project: AJAX Name Picker (Managed by Steve McDonagh)
"A JavaScript API that allows the developer to add NAB Name Picker Functionality to their forms "の提供を目標として、2007年11月のV1.0.0から2008年8月のV1.2.6まで改良・強化が続いたものです。
<動作>
1.2. 3文字以上の入力で次へ
3. リクエストURLに、?ReadViewEntriesでなく、?OpenAgentを使用しているのが特徴。ユーザ入力を引数に追加
url = NP_url+"/NP_getNameLS?openagent&type=S&name="+fieldobj.value+"&pabs=";
例:NP_getNameLS?openagent&type=S&name="tes"&pabs="names.nsf"
4. URLがYahooのJavaScriptライブラリのAjax処理に渡され実行
var request=YAHOO.util.Connect.asyncRequest('GET', url, NP_callBack)
5.6. NP_getNameLSエージェントは、HTTPリクエストのURL引数Query_String_DeCoded(0)またはPOSTの内容Request_Content(0)、を使い、LotusScript のGetAllDocumentsByKey処理によりNABの"($users)"ビューを検索
6.8. 結果をJavascriptコード(結果を追加するコードと結果データ)に整形
9.10. コールバック関数NP_callBackが戻りをevalして、配列NP_namesにpushしリスト表示
<DBへの適用>
ノーツの標準テンプレートをもとに文書ライブラリDBを作成し、そのレビュー担当者が選択入力できるようにDBに適用してみました。
実行環境: Domino8.5、IE8、FireFox3.0.15
適用手順:
(1) JavaScriptライブラリ5個、CSSファイル1個をdomino\htmlフォルダ以下に配置
(2) 入力フォーム(Document)のHTML HEADERで、それがロードされるように指定
(3) 入力フォームの onLoad に NP_createPopup();を追加
(4) 入力フォームの名前フィールド(ReviewerList)の onFocusに、次のコードを追加
NP_openPopup(this.id,"",this.name,'S',"");blur();
(複数選択フィールドですが、まず’一人選択の'S'で確認)
(5) NP_getNameLSエージェント、イメージファイル2個を移行先DBにコピー配置
結果:
FireFox3.0.15 では、候補リストの下部が、リッチテキストフィールドの裏に隠れる問題が発生しました。
リッチテキストフィールドのプロパティ WEBアクセス時の表示を、デフォルトの「OSに合う位置を使用」から「JavaScriptコントロールを使用」に変えてみたら、裏に隠れる問題は回避されましたが、
さてこれを標準のNamePickerとして多数のDBに展開できるか、続けて見ていきたいと思います。