iNotes 9をCustomizeしてみよう! -3-
<話題の履歴>
前回は、最初に最低限理解しておかなければならない項目について簡単に解説しました。
今回は、Custome_JSやCustome_JS_Lite Subformで提供されているSample Codeを動かしながら中身を見てみます。
FormsX_x.nsfが提供される前のVersionのClassic UIの場合は、Custome_JS FormがFormsX.nsfで提供されていましたが、FormsX_x.nsfにCustomize項目を格納するDBが分離されてからは、FormsX_x.nsfのSubformとしてCustome_JSやCustome_JS_Liteが提供されています。
勿論、Custome_JSがClassic UIをCustomizeするためのSubformでCustome_JS_LiteがLite UIをCustomizeするためのFormとなっています。
早速、新しいLite UIのCustome_JS_Liteを覗いてみると、以下のようになっています。
<NotesComment>
// =============================================================================
// This subform contains the callback functions for Sparkle Code
//
// D_Custom_PreActionMenu_Lite
// D_Custom_PostLoad_Lite
// D_Custom_PreSubmit_Lite
// D_Custom_TimeZones_Lite
// =============================================================================
</NotesComment>
// Include utility routines common to both Classic and Sparkle Full/Lite
<InsertNotesSubForm Name="Custom_Common_Utils">
<NotesComment>
// ===========================================================================
// Key function provided in the API_ActionsHelper_Subform_Lite subform:
// addActionsLite
// removeActionsLite
// checkActionIDs
// repositionActionsLite
// ===========================================================================
(以下略)
ここに書かれているようにAction Menuを変更したり、Load後のEvent(NotesだとPostOpen)を定義したり、Submit前のEvent(NotesだとQuerySave)を定義したりすることが出来るようになっています。
早速、Action Menuを変更してみますが、Action MenuはActionIDが分かっていないと変更することも新しいActionを追加することも出来ませんので、まずはAction IDを表示してくれる「checkActionIDs」だけを有効にしてみます。
まずは、上記Codeに書かれているようにUtilityを有効にする必要がありますが、基本のUtilityは最初から含まれるようになっていますので、そのままの状態にしておきます。
// Include utility routines common to both Classic and Sparkle Full/Lite
<InsertNotesSubForm Name="Custom_Common_Utils">
次にAction MenuのUtilityを利用する為に以下のようにCommentから外してしまいます。
<NotesComment>
// Expose this comment block to include actions helper routines for Lite mode
<InsertNotesSubForm Name=API_ActionsHelper_Subform_Lite>
</NotesComment>
<InsertNotesSubForm Name=API_ActionsHelper_Subform_Lite>
ここでお分かり頂けると思いますが、<NotesCommnet></NotesComment>で囲まれた部分はCommentとして扱われている為有効なCodeではありませんし、「//」で始まる行もCommentです。
また、<InsertNotesSubForm Name="Form_Name">というTagはiNotesの様々な場面で使われており、通常のNotesのSubformを挿入するのと同じです。
更に、Action IDの表示をさせるために、以下のように「 checkActionIDs( s_MenuID )」を有効にします。
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//
// Insert the Custom_ActionsHelper_Lite subform above to enable the helper functions to more easily add, remove
// or reposition action menu items.
//
</NotesComment>
function Custom_Scene_Actions_Lite(s_MenuID)
{
checkActionIDs( s_MenuID );
これで保存して、Forms9_x.nsfを更新し、Web BrowserからAccessしてみます。
以下のようにMenuIDが表示されるようになりますが、Function Errorを起こしています。
このErrorによりMail DBの所有者Frameが表示されていないことが分かります。
Error内容をiNotes Consoleから確認できますので、確認してみると以下のようなErrorです。
Domino Release 9.0.1FP3 (Windows/64)
$HaikuForm - 231.22
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
Extension Forms File 9.0.1
Extension Forms File user version: 0
WCAN9.0.1_20131022.1138
2015/02/11 10:17:50AM 問題が発生しました。この問題が原因で、現在の操作が失敗した可能性があります。
2015/02/11 10:17:50AM TypeError: sDescriptor is undefined
2015/02/11 10:17:50AM http://domsvr.lotus.com/mail/siwama.nsf/iNotes/Proxy/?OpenDocument&Form=l_ScriptFrame&l=ja&gz&CR&MX&TS=20150210T203245,63Z&TSX=20150211T011414,47Z&charset=UTF-8&charset=UTF-8&KIC&ua=gecko&pt: 19
今回は、このErrorの原因究明はしませんが、Utilityの中で「sDescriptor」が取れていないのだと思われます。
取り敢えず、この設定を行うと、以下のようにMenuIDが表示されるようになります。
通常の新規Mail作成の場合は、以下のようにMenuIDが表示されます。
しかし、「伝言メモ」(PhoneMessage)を開くと以下のようにMenuIDは表示されません。
これが、Lite UIのFormかClassic UIのFormかの違いなのです。
宛先設定の部分もLite UIはLinkになっているのに、Classic UIはButton表示となっていることが分かります。
また、Action ButtonのSizeも微妙に異なっています。
この辺が、以前の記事でiNotesはまだまだ完全にLite UI化が完了していないと述べた理由です。
前回紹介した、iNotesのForm一覧でも「伝言メモ」(PhoneMessage)は「s_」で始まるFormを利用していたことからこのような状態になるのです。
つまり、「伝言メモ」(PhoneMessage)などClassic UIを使っているFormのAction MenuはLite UIのCustom_JS_LiteではCustomizeできず、従来のClassic UIのCustom_JSでCustomizeをしなければならないことになるのです。
今回は、Custome_JS_LiteのActionIDの表示を行ってみました。
次回は、従来のCustome_JSのMenu Position表示を有効にしてみたいと思います。