iNotes宛先選択の表示順選択肢のCustomize (続々) | Lotus Notes/Domino (R) をこよなく愛して。。。。

iNotes宛先選択の表示順選択肢のCustomize (続々)

iNotes宛先選択の表示順選択肢のCustomize (続)」の記事で、Address Pickerの表示順のView選択のCustomizeを行いましたが、DJX Userは問題が無いのですが、DJXを使っていないUserで表示上の問題が発生することが分かりました。

 

前回見たように、DJXのAddress Pickerの表示順のViewへのListの追加は単にJavaScriptでPushしてNamePick.BTM配列に要素を加えているだけのように見えます。
Forms9_x.nsfのx_NamePickerViewListも内容を見る限り、単にNamePick.BTMを定義しているだけです。
 
NamePick.Rs = <dwa:string id="D_NAMEPICK_WINDOW_WIDTH" quotes="none"/>;
NamePick.Br = <dwa:string id="D_NAMEPICK_WINDOW_HEIGHT" quotes="none"/>;
NamePick.nViewListWidth = 300;
NamePick.BTM = [(中略)];

 

Forms9.nsf内の標準のView Pick Listを定義している部分を探してみると、s_NamePickerViewListがあり、これが制御しているようです。

 

<NotesDictionary><NotesVar name="s_LotusLiveSaaSArg" initialvalue={@If(@DbCommand("Haiku";"s_GetEnvironmentVar";"SAAS_VirtualizedDirectory")="1";"&lln";"")}><NotesVar name="s_PortfolioThemeArg" initialvalue={@If(s_LotusLiveSaaSArg="&lln" | "0"!=@DbCommand("Haiku";"s_GetEnvironmentVar";"PortfolioTheme");"&pt";"")}></NotesDictionary> function NamePick(){} <InsertNotesSubForm optional="yes" name=x_NamePickerViewList> function NamePickExt(){} <InsertNotesSubForm optional="yes" name=x_NamePickerViewListExt> function GuO(){return haiku.bShowExtraInfoOnNamePicker ? NamePickExt : NamePick;} if (!NamePick.Rs){<InsertNotesSubForm name=@{@If("&lln"=s_LotusLiveSaaSArg;"LL_NamePickerViewList";"s_CoreNamePickerViewList")}>} if (!NamePickExt.Rs){<InsertNotesSubForm name=@{@If("&lln"=s_LotusLiveSaaSArg;"LL_NamePickerViewListExt";"s_CoreNamePickerViewListExt")}>}

 

上記のCodeからすると、Forms9_x.nsfが定義されている場合はx_NamePickerViewListを読み込み、そうでない場合は、s_CoreNamePickerViewListを読み込むようです。

 

再度、DJXのCodeを見てみると、単にView定義だけでなく、Functionも含めてNamePick.BTM配列にPushしていますので、この部分も含めてx_NamePickerViewListに記載することで動作してくれるのではないかと思われるのです。

 

 

NamePick.BTM.push({sViewTitle : <dwa:string id="L_DJX_DIRECTORY_TITLE"/>, DcS : '($DJXPeopleiNotesHier)', sViewInfo : '$60;MAMailAddress;NPName;Type;AltFullName;$64;JobTitle', nViewType : 1, aDefaultColumnWidths : [10], aDBPaths : ['*'], fnDisplayName : function (sTmp, Yc, CXb, Cwx){if(!Cwx.sViewInfo) return sTmp;var GoU=Cwx.sViewInfo.split(';')[5];if(Yc && Yc.getAttribute('name') == GoU && !CXb.jN()){var nPos=sTmp.indexOf('|');if(nPos != -1) sTmp=sTmp.substring(sTmp.indexOf('|')+1);} return sTmp;}} )

 

x_NamePickerViewListの記載形式にすると、以下のようになります。

 

    {
        sViewTitle : <dwa:string id="L_DJX_DIRECTORY_TITLE"/>,
        DcS : '($DJXPeopleiNotesHier)',
        sViewInfo : '$60;MAMailAddress;NPName;Type;AltFullName;$64;JobTitle',
        nViewType : 1,
        aDefaultColumnWidths : [10],
        aDBPaths : ['*'],
        fnDisplayName : function (sTmp, Yc, CXb, Cwx){if(!Cwx.sViewInfo) return sTmp;var GoU=Cwx.sViewInfo.split(';')[5];if(Yc && Yc.getAttribute('name') == GoU && !CXb.jN()){var nPos=sTmp.indexOf('|');if(nPos != -1) sTmp=sTmp.substring(sTmp.indexOf('|')+1);} return sTmp;}
    }

 

 
では、これをx_NamePickerViewListに記載してServerを再起動してみます。
 
以下のように表示され、問題なくDJX組織階層表示ができるようです。
 
 
しかし、この場合も、DJX Mail Templateで作成されていないUserのMail DBではDJX特有のFunctionが無い為だと思いますが、組織Codeと組織名の分離が行われず、繋がった状態の表示となってしまいます。
 
 
面倒なのでこれ以上の調査はしないことにしますが、定義されているFunction内でDJXに関係する変数のCheckを行っていると思われます。
 
まあ、この方法でDJXでないMail DBで利用した際にErrorにはならないというメリットはあるかも知れませんが、DJX環境でお使いの場合には全てのMail DBをDJX設計に置き換えておけば良いだけの話で大したメリットにもならないかも知れません。
というのは、DJXのView選択肢を消すには、DJXのCodeを完全に殺し、且つ、x_NamePickerViewListに全てを移植する必要があるためです。
個人的には、s_NamePickerDJXViewListをCustomizeする方が楽かな?と思いますが、わざわざDJX組織階層をDefaultの先頭にしなくても良いかな?とも思います(最初だけで、2回目以降は前回使った物を覚えているので)。
 
Forms9.nsfへのDJX実装がもう少し賢く出来ていたらと思いますが、V9状態で凍結されたため、今となってはどうしようもないですね。
 
尚、Forms9.nsfのCustomizeはメーカーがサポートするものではありませんので、ご自身のリスクでお願いします。