Lotus Notes/Domino (R) をこよなく愛して。。。。 -4ページ目

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はメーカーがサポートするものではありませんので、ご自身のリスクでお願いします。
 
 

iNotes宛先選択の表示順選択肢のCustomize

iNotesをDJX環境で利用しているUserもある程度はいらっしゃるのではないでしょうか?

 

標準のまま、iNotesをDJX環境で利用すると、以下のように、標準の表示順選択、DJXの表示順選択が表示され、非常に煩雑な状態になります。

 

 

この表示順の選択肢は、過去の記事にも書きましたが、標準の表示順選択肢、DJX特有の表示順選択肢の順で表示されます。

 

みなさんご存知のように、標準の表示順選択肢については、Forms9_x.nsfのSubformのx_NamePickerViewListを使ってCustomizeすることができます。

しかしながら、DJX特有の表示順選択肢については、Forms9_x.nsfのSubformのx_NamePickerViewListでCustomizeすることはできません。

というのは、DJXは組織Code/役職Codeから並び順を制御してアドレス選択リスト上の表示順を制御するようになっており、これが、Forms9.nsf本体で制御されているからです。

 

しかし、上記のような表示順選択表示では、少しUserにとっては不親切です。DJXかどうかなんて、Userは知ったことではありません。

 

では、少しだけ、見た目を変えて、シンプルな表示にしてみましょう。

 

通常必要なのは、以下の4種類ではないでしょうか?

 

 ・ 名前順(標準)

 ・ 部署階層(DJX)

 ・ 役職順(DJX)

 ・ よみがな順(DJX)

 

では、先ずは、DJX関係の表示名を変更してみましょう。全て先頭のDJXの文字を外すことにします。

 

みなさん、ご存知だと思いますが、iNotesの表示文字は、Forms9.nsfのResourceのFileに定義されているdwa_ja.properties内に記載されています。

以下の部分がDJX特有のものです。以下がAddress Picker Dialogで表示される表示順選択肢の文字となっています。

全て先頭に"DJX"が付いていることが分かります。

 

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"の文字を削除して保存し、ServerのForms9.nsfを置き換えます。

Serverを起動して確認すると、以下のように、"DJX"の文字が無くなったことが確認できます。

 

 

次に、標準で提供されている、「Notes名の階層」、「組織の階層」、「言語別」を消します。

 

「Notes名の階層」は殆どのUserがO(組織)のみでOU(組織単位)を使っていない場合が多く、全く無意味だと思いますし、「言語別」はDJX環境を使われている場合、全員日本語になっていて無意味です。

また、「組織の階層」はDJXの部署別階層で代替することができ、標準の「組織の階層」は組織Code順に並ばないので、並び順を重視する日本人には受けが悪いです(そのために、組織名の前に組織Codeを付加して組織名としているUserもいます)。

 

さて、標準のビューを消すために、まず、HCL iNotes Extention Forms(11)(forms9_x.ntf)を使い、ServerのiNotesフォルダにForms9_x.nsfを作成します。

Subformのx_NamePickerViewListを開き、「for normal directory」部分の以下の部分(「名前順」)以外を削除して保存します。

 

    // for normal directory
    {
        sViewTitle : <dwa:string id="L_NPW_TITLE_FLATVIEW"/>,
        DcS : '($PeopleGroupsFlat)',
        sViewInfo : '$39;MAMailAddress;NPName;Type;AltFullName',
        nViewType : 1,
        aDBPaths : ['*']
    }

 

Serverを再起動すると、以下のように、シンプルな表示になります。

 

 

これで、分かりやすい表示になったのではないかと思います。

尚、最初に書きましたが、Viewの表示は、標準の表示順選択肢、DJX特有の表示順選択肢の順を崩すことはできません。

つまり、「部署の階層」を標準として先頭に表示することはできないのです。

どうしても「部署の階層」を先頭に表示したい場合は、DJXの選択肢を表示させないようにして、標準のViewの表示順序を変更するしかありません。

但し、その場合は、部署Code順に並べたり、役職Code順に並べたりすることはできなくなります。

 

皆さんも、是非試してみてください。

 

尚、Forms9.nsfのCustomizeはメーカーがサポートするものではありませんので、ご自身のリスクでお願いします。

 

 

iNotesの会議招集の会議室/リソース選択Dialogの高さ不足

iNotesをEdge(Chrome)/Firefoxで利用した際、V11.0.1FP5/V12.0.1FP1のiNotesのCalendarの会議招集作成画面で、会議室/リソースの検索画面で選択ダイアログの高さが足りず、会議室/リソース選択域とボタンが重なった状態で表示されるという障害があります。

 

この障害はEdge(Chrome)/Firefoxの両方で発生します。具体的には以下の部分ですが、Firefoxの場合は重なりが少なく軽傷です。

 

 

ボタンと選択域が完全に重なっている訳ではありませんので、操作上は支障はなく、単に見た目の問題です。

 

この障害は、iNotesのUI表示を行っているForms9の設計を修正することにより、回避することが可能です。

 

発生Version:V11.0.1FP5/V12.0.1FP1

発生Browser:Edge(Chrome)/Firefox

 

変更対象:Forms9.nsf

設計要素:Subform

【Edge(Chrome)】

設計名称: l_AppointmentEditCode_Safari

変更部分:function HZa(sId) 内の com_ibm_dwa_ui_dialog_height

 変更前:com_ibm_dwa_ui_dialog_height="475px"

 変更後:com_ibm_dwa_ui_dialog_height="495px"

【Firefox】

設計名称: l_AppointmentEditCode_Gecko

変更部分:function HZa(sId) 内の com_ibm_dwa_ui_dialog_height

 変更前:com_ibm_dwa_ui_dialog_height="475px"

 変更後:com_ibm_dwa_ui_dialog_height="490px"

 

変更すると、以下のように正常に表示されるようになります。

 

 

尚、Forms9.nsfの設計はシステムDBのため、Server稼働中に設計置換を行うことはできません。

Server停止してForms9.nsfを置き換えることになりますので、ご注意ください。

 

また、Forms9.nsfのCustomizeはメーカーがサポートするものではありませんので、ご自身のリスクでお願いします。