Domino Web AccessをCustomizeしてみよう ! -4- | Lotus Notes/Domino (R) をこよなく愛して。。。。

Domino Web AccessをCustomizeしてみよう ! -4-

<話題の履歴>


Domino Web AccessをCustomizeしてみよう ! -3-

Domino Web AccessをCustomizeしてみよう ! -2-

Domino Web AccessをCustomizeしてみよう ! -1-



前回は、DJX版のDWAのAddress Pickerがどのように実現されているのかを見てみました。



今回は、これを参考に標準版のDWAのAddress PickerがCustomize可能かどうかを実際に試してみることにします。


ただ、このCustomizeは私が知る限り、TechnoteやHelpの記述は見つかりませんので、IBMとしてCustomizeをサポートしているかどうかの確認はできていませんので、もし、実施される場合は、ご自身のリスクでお願いします。



では、まず、この"x_NamePickerViewList" Subformに書かれている内容を理解していくことから初めてみます。


以下では、Domino 7 IE版のDWAを使って内容を見ていくことにします。


注)以下に出てくるCodeは部分的にCopyしたりしているため、CodeにCopy Right表示はありませんが、IBMのCodeのCopyですので、IBMに知的所有権が存在しますので、ご注意ください。


DWA 7のAddress Pickerは以下のようになっています。


DWA_AddressPicker_1


これと、"x_NamePickerViewList" Subformの内容を比較して見ていくことにしましょう。

Address Pickerでは、上記のようにDomino Directoryを選択すると、"List by name"、"Notes name hierarchy"、"Corporate hierarchy"、"Categorized by language"という4つのViewが選択できます。


また、Contactsを選ぶと、"List by name"のみが選択できるようになっています。


一方、Forms7.nsfの"x_NamePickerViewList" Subformの内容は以下のようになっています。


この内容を見れば、//for contactsで始まる部分がAddress PickerのContactsのListになり、//for normal directoryで始まる部分がDomino Directoryを選択した場合のView Listになっていることがわかります。


CK.Rs = 600;
CK.Br = 400;
CK.nViewListWidth = 300;
CK.BTM = [
// for Contacts
{
sViewTitle : "List by name",
DcS : '($PeopleGroupsFlat)',
sViewInfo : '$39;MAMailAddress;NPName;Form;AltFullName',
nViewType : 2,
aDBPaths : []
},
// for Catalog
{
sViewTitle : "List by name",
DcS : '($PeopleGroupsFlat)',
sViewInfo : '$39;MAMailAddress;NPName;$40;AltFullName',
nViewType : 3,
aDBPaths : ['*']
},
// for LDAP
{
sViewTitle : "List by name",
DcS : '',
sViewInfo : 'SummaryName;MailAddress;FullName;Type;AltFullName',
nViewType : 4
},
// for normal directory
{
sViewTitle : "List by name",
DcS : '($PeopleGroupsFlat)',
sViewInfo : '$39;MAMailAddress;NPName;Type;AltFullName',
nViewType : 1,
aDBPaths : ['*']
},
{
sViewTitle : "Notes name hierarchy",
DcS : '($PeopleGroupsHier)',
sViewInfo : '$11;MAMailAddress;$24;Type;AltFullName;$8',
nViewType : 1,
aDBPaths : ['*']
},
{
sViewTitle : "Corporate hierarchy",
DcS : '($PeopleGroupsCorpHier)',
sViewInfo : '$60;MAMailAddress;NPName;Type;AltFullName;$55',
nViewType : 1,
aDefaultColumnWidths : [10],
aDBPaths : ['*']
},
{
sViewTitle : "Categorized by language",
DcS : '($PeopleGroupsByLang)',
sViewInfo : '$11;MAMailAddress;NPName;Type;AltFullName;$8',
nViewType : 1,
aDefaultColumnWidths : [10],
aDBPaths : ['*']
}
];


他に、//for Catalog、//for LDAPという部分がありますが、標準ではDirectory CatalogもLDAPを参照するようにも構成されていませんので、Address Pickerにはこれらは選択肢として現れていないわけです。


では、Domino Directoryの場合の、Viewの内容の定義を見てみましょう。


{
sViewTitle : "List by name",
DcS : '($PeopleGroupsFlat)',
sViewInfo : '$39;MAMailAddress;NPName;Type;AltFullName',
nViewType : 1,
aDBPaths : ['*']
},



sViewTitleはAddress Picker Dialogで表示するViewの名前になっていることがわかります。

DcSは実際のDomino DirectoryのViewの設計要素の名前となっています。


では、sViewInfoは何を表しているのでしょうか?


DWAではViewの情報にAccessする際にProgrammatic Nameを使ってAccessすることが多いのですが、この値も実はViewの列のProgrammatic Nameなのです。


実際に、Domino Directoryの"($PeopleGroupsFlat)" Viewを開いて、列のPropertyを確認してみるとそれがわかります。


一列目は、Propertyの"Advanced"タブで確認すると、"$28"となっており、2番目が"39"、"MAMailAddress"、"NPName"、"Type"、"AltFullName"はViewに定義された列のProgrammatic Nameとなっていることが確認できます。


DWA_AddressPicker_2


つまり、sViewInfoでは利用する列を定義していることがわかります。


nViewTypeはどうやら分類に使われていて、"1"を指定することが、Domino Directoryを表しているようです。


また、aDBPathsはDB Pathを表しているようで、Domino内のDBの場合は"*"、UserのMail DB内(つまりContactsの場合)は指定なしとなっているようです。


また、"x_NamePickerViewList" Subformの一番最初に記載されている、以下の部分は、Dialogで表示するSizeを表しているのではないかと思えます。


CK.Rs = 600;
CK.Br = 400;
CK.nViewListWidth = 300


これで、ある程度は内容が理解できたのではないでしょうか?


私自身、DWAの全てのCodeが読めるわけではありませんので、ここに書いた内容は誤っているかも知れません。



では、次回以降、これらの内容を実際に変更してどのように変化が生じるかを見ながら、Customizeを行っていくことにします。



<続く>