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

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

iNotes宛先選択の表示順選択肢のCustomize」の記事で、Address Pickerの表示順のView選択のCustomizeを行いましたが、Forms9_x.nsfでのCustomizeを前提にしていたため、表示順の選択肢の先頭に「DJX組織別階層」が表示できていませんでした。

 

これも、少し不便かも知れないと思い、Forms9.nsf自体をCustomizeして対応する方法を考えてみたいと思います。

 

DJXのName Pickerの選択用のViewについては、s_NamePickerDJXViewList、s_NamePickerDJXViewListExtに定義されているのですが、両方とも同じCodeが記載されています。

Codeの内容を見る限り、Forms9_x.nsfの x_NamePickerViewList と同じFormatで参照Viewの定義が行われ、NamePick.BTM.pushというFunctionでName PickerのListに追加しているように見えます。

 

 if(haiku.bEnableDJX){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;}} );NamePick.BTM.push({sViewTitle : <dwa:string id="L_DJX_DIRECTORY_TITLE_JOBTITLE"/>, DcS : '($DJXPeopleiNotesTitle)', 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;}} );NamePick.BTM.push({sViewTitle : <dwa:string id="L_DJX_DIRECTORY_TITLE_PHONETIC"/>, DcS : '($DJXPeopleiNotesFlat)', sViewInfo : '$39;MAMailAddress;NPName;Type;AltFullName;', nViewType : 1, aDefaultColumnWidths : [10], aDBPaths : ['*']} );}

 
ここに、標準の参照用Viewを加えてやれば、そのまま動作するのではないか?というのが私の考えです。
 
前回の記事で紹介しましたが、
 
L_DJX_DIRECTORY_TITLE=DJX\u90e8\u7f72\u5225\u968e\u5c64
L_DJX_DIRECTORY_TITLE_JOBTITLE=DJX\u5f79\u8077\u9806
L_DJX_DIRECTORY_TITLE_PHONETIC=DJX\u3088\u307f\u304c\u306a\u9806 
 
がDJX用の参照View Titleの定義ですので、上記Codeを見るとそれに対応していることが分かります。
 
では、ここに標準のViewを表示するためのCodeを追加してみます。
Pushで配列に追加する内容は、 x_NamePickerViewList の記載内容に置き換えます。
 
NamePick.BTM.push({sViewTitle : <dwa:string id="L_NPW_TITLE_FLATVIEW"/>, DcS : '($PeopleGroupsFlat)', sViewInfo : '$39;MAMailAddress;NPName;Type;AltFullName', nViewType : 1, aDefaultColumnWidths : [10], aDBPaths : ['*']} );
 
追加するのは、NamePick.BTM.push({sViewTitle : <dwa:string id="L_DJX_DIRECTORY_TITLE_JOBTITLE"/>の前です。
 
変更して、Forms9.nsfを置き換え、Server起動すると、以下のようになります。
 
 
問題なく表示されます。
 
後は、標準の「名前順」を削除すればば完成です。
 
では、Forms9_x.nsfのView Listを全部削除した状態にしてみます。
 
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 = [
    // for Contacts
    {
        sViewTitle : <dwa:string id="L_NPW_TITLE_FLATVIEW"/>,
        DcS : '($PeopleGroupsFlat)',
        // SPR# YJSI8FJ9DR:  due to a change in the $PeopleGroupsFlat view in mail85.ntf, "Form" column is now "Type" column to stay in-sync with pubnames.ntf
        // keep "Form", just in case "Type" fails
        sViewInfo : '$39;MAMailAddress;NPName;Type|Form;AltFullName',
        nViewType : 2,
        aDBPaths : []
    },
    // for Catalog
    {
        sViewTitle : <dwa:string id="L_NPW_TITLE_FLATVIEW"/>,
        DcS : '($PeopleGroupsFlat)',
        sViewInfo : '$39;MAMailAddress;NPName;$40;AltFullName',
        nViewType : 3,
        aDBPaths : ['*']
    },
    // for LDAP
    {
        sViewTitle : <dwa:string id="L_NPW_TITLE_FLATVIEW"/>,
        DcS : '',
        sViewInfo : 'SummaryName;MailAddress;FullName;Type;AltFullName;AltFullNameLanguage;PreferredMailFormat',
        nViewType : 4
    },
    // for normal directory


];

Serverを再起動すると以下のように表示されます。
 
 
これで、問題なく、組織階層が先頭に表示されるようになりました。
 
今回は、s_NamePickerDJXViewListだけの修正を行っています。s_NamePickerDJXViewListExtがどういう場合に利用されるのかは調査しきれていません。
 
また、この修正を行うと、DJX利用ユーザ以外(Setup時のAdministrator Userなど)は以下のErrorが発生し、Name Pickerに全くView Listが表示されなくなったり、Dialog表示が乱れたりしますので、ご注意ください。
DJXが有効でないDBでは、View Listが取得出来ず、Errorするためです。
DJXが無効となっているMail DBがある場合は、DJX Mail Templateで置換して回避することができます。
 
2022/08/16 07:48:17AM 問題が発生しました。この問題が原因で、現在の操作が失敗した可能性があります。
2022/08/16 07:48:17AM Uncaught TypeError: Cannot read properties of undefined (reading 'oInfo')
2022/08/16 07:48:17AM http://domsrv4.acme.com/iNotes/Forms9.nsf/iNotes/Proxy/?OpenDocument&Form=l_CommonNamePickerCode&l=ja&gz&CR&MX&TS=20220815T093427,55Z&TSX=20220815T094909,72Z&EFF=%2FiNotes%2FForms9_x&charset=UTF-8: 4
 
実装する場合は、DJXが有効でないMail DBが無いかなど確認したうえで、十分なテストを行い実施してください。
 
尚、Forms9.nsfのCustomizeはメーカーがサポートするものではありませんので、ご自身のリスクでお願いします。