首页专业论文技术应用政策标准解决方案常用资料经验交流教育培训企业技术专家访谈电力期刊
您现在的位置:北极星电力网 > 技术频道 > 常用资料 > 定制DominoWebAccess6.5的外观

定制DominoWebAccess6.5的外观

北极星电力网技术频道    作者:佚名   2008/8/6 13:42:59   

 关键词:  access

级别:初级

DavidDeJean,合伙人,DeJean&Clemens
VinodSeraphin,高级技术智囊团成员和架构师,IBMCorporation

2005年6月20日

开始学习为公司的用户定制DominoWebAccess6.5,并了解使用皮肤编辑工具和服务器端标签可以对客户机的外观进行哪些更改,这些工具和标签允许您更改用户界面和布局。

从一开始,DominoWebAccess(以前称为iNotesWebAccess)就专注于提供世界级的、高性能的、可伸缩的Web体验。DominoWebAccess总是包含一些配置设置,以便为客户可能想做的事提供现成的选择,以后我们将继续扩展这种可配置性。

但是许多客户不想只是进行一些简单的配置更改,他们想用这些更改以外的一些方法来修改DominoWebAccess,例如,添加或删除菜单项,或者让颜色方案与客户公司所需颜色相匹配。DominoWebAccess设计组对定制投入了越来越多的关注,有了LotusDomino6.5,DominoWebAccess模板就变得更加用户化。

在本文中,将重点介绍用来定制DominoWebAccess用户界面和屏幕布局的选项。开始,我们将讲述一些关于如何生成DominoWebAccess页面以及定制这些页面所面临的困难的背景知识。然后将回顾一些DominoWebAccess6.5的基本定制。接下来将讨论DominoWebAccess页面内使用的特殊服务器端标签,以及在皮肤中使用这些标签的方法。我们将简单了解一下基于Java的皮肤编辑工具,可以从Sandbox下载这个工具。最后,我们将看一下正为LotusDomino7中的DominoWebAccess定制所做的一些工作。

定制所面临的困难
与诸如Notes客户机之类的典型二进制可执行程序不同,整个DominoWebAccess用户界面是由HTML、JavaScript、CascadingStyleSheets和各种图形文件组成的。DominoWebAccess页面是通过这些使用设计元素的标准Web技术拼合在一起的,设计元素位于服务器上的Notes数据库Forms6.nsf中。可以通过编辑大多数DominoWebAccess页面的组件来改变这些页面的内容。但是有一些困难。

第一个困难是DominoWebAccess不是典型DominoWeb应用程序。这在很多方面都会影响定制工作。知道如何构建Domino应用程序在修改DominoWebAccess页面方面很有帮助,但是DominoWebAccess的架构没有遵循典型DominoWeb应用程序的架构。Domino开发人员将很难标识要修改的正确设计元素。此外,编程挂钩也不同。特别是经常有类似QueryOpen和QuerySave的请求——但是DominoWebAccess中没有这些Notes表单事件。

另一个困难是DominoWebAccess中使用的JavaScript代码。该代码含义模糊(即简短),从而可提高应用程序的运行时性能。下载到浏览器的字节数越少或从浏览器缓存加载的字节数越少,应用程序的性能就越高,应用程序消耗的带宽越少。所以要在类似编译的过程中优化DominoWebAccess代码,以便加快下载。DominoWebAccess源代码是在文本文件中维护的。构建新应用程序版本之后,会对源代码运行一种特殊的工具,以便创建Forms文件。这种模糊处理工具会删除所有元素,并用下面左边更简短(但含义更模糊)的名称替代右边那些有意义的对象名称。该过程生成下载较快、但是对编程人员来说比较难读的代码。可以下载完整的转换表。一个小的128KB的文件示例如下所示:

BdAIERichTextArea_insertHTMLBdBCSequentialAsyncAction_doCommitedBdCCCSFormControler_getRepeatingDatesAreaHtmlBdDShimmerException_getMessageFmtBdECCSFormControler_registerRescheduleDialogBdFCResPickControler_disableFieldsBdGFixupButtonWidthsBdHCCSFormControler_getCurrentWinDocCtxBdIredirViewBdJNSRichTextArea_getDataTextFormatBdKIERichTextArea_adjustHeightToFitInWindowBdLtheWelcomeFramesetBdMNPW_focusCaretBdNisDirectoryInFilesetBdOCCSMeetingAction_grantPerformBdPsCategorie

从LotusDomino7开始,Forms文件将包含名为ObfuscationList的FileResource设计元素,该元素将存储适当的映射。

皮肤给开发人员带来了另一组难题。在DominoWebAccess中,创建用户界面元素的代码被组织为皮肤和皮肤组件。皮肤布局从来都不容易获得。不过,最近我们开发了皮肤编辑工具来帮助开发人员修改皮肤和创建新的皮肤组(skingroup)。有关的详细信息,请参阅本文后面的“处理皮肤”一节。

在LotusDomino7中,皮肤现在是指FileResource设计元素,可以轻松地使用传统文本编辑器导出并修改这些元素,然后使用DominoDesigner重新导入。

DominoWebAccess模板
DominoWebAccess模板与其他Domino模板不同。它完全从标准邮件模板(Mail6.ntf)继承而来。该继承允许邮件用户利用标准模板的各种功能从Notes客户机访问邮件文件,它还允许使用DominoWebAccess从浏览器访问同一邮件文件。下图显示了DominoWebAccess模板(对于标准邮件模板,该模板为iNotes6.ntf)与用户的邮件文件(图中的JUser.nsf)之间的关系。

图1.标准邮件模板和用户的邮件文件

DominoWebAccess模板还特别引用单独的数据库Forms6.nsf,该数据库包含DominoWebAccess设计元素。DominoWebAccess使用的所有表单、子表单和大多数图形都位于这个数据库中,该数据库位于服务器上的<dominodata>\iNotes\子目录中。(邮件视图中使用的一些图像包含在Dominoicons目录中或包含在邮件模板中。)Forms6.nsf是数据库(而不是模板),因为DominoWebAccess直接向这个数据库发出URL来检索许多共享页面和元素。因为性能和磁盘空间消耗的缘故,这些页面和元素集中在Forms6.nsf中,而不是分布在单个邮件数据库中。访问某台服务器上的邮件文件的所有Web浏览器都使用这组设计元素,这些元素还被缓存在服务器上,以便获得更好的性能。

在将用户的邮件文件设置为使用iNotes6.ntf模板时,它会继承这个模板中的所有设计元素,同时还继承对共享Forms文件的引用。这两种源(模板和Forms文件)提供了构建单独DominoWebAccess页面的资源。

iNotes6.ntf模板数据库包含其他一些元素,比如支持从PersonalAddressBook和PersonalJournal的Notes客户机到DominoWebAccessContacts和Notebook区域的双向同步。还有一些仅由DominoWebAccess使用的大纲和视图,用来显示日历、日志条目和TOC(TableofContents或Top级菜单)。

定制警告
虽然可以定制DominoWebAccess,并且本文也讨论了许多定制项目,但是我们必须先进行免责声明:

IBMLotusSupport既不认可也不支持使用改变的模板或其他定制的DominoWebAccess安装。对于说明由定制模板而导致一些事件的客户,IBMLotusSupport将指示该客户恢复普通模板,以查看问题是否仍然存在。如果仍然存在问题,IBMLotusSupport将解决该问题,因为它存在于普通模板中。如果该问题在普通模板中不存在,那么IBMLotusSupport将建议客户删除所进行的修改,并提交关于下一版本预期功能的改进请求。这个策略也包括Forms6.nsf数据库。

您应该据此安排所有定制,避免对之后可能需要IBMLotus支持的重要应用程序进行定制。

一个好的开发方法是备份您打算以某种允许将所有更改倒转回LotusDomino安装的方式修改的任何数据库或设计元素。也就是说,有一些修改应该不会损害DominoWebAccess的功能。

LotusDomino6.5之前版本的定制
版本6.5的DominoWebAccess版本仅支持有限的定制,大多数更改都是通过使用DominoDesigner编辑表单数据库中的表单进行。Welcome页面和视图页面的一些更改包括:

  • 更改徽标。
    可以用其他图像文件替代屏幕左上角的徽标。必须首先为表单数据库创建包含富文本字段的表单来显示图像。然后在名为hResourcesbyName的视图中,编辑名为iwa.gif的文本,最后用您的图形替代徽标图像。
  • 修改TableofContents中的条目。
    可以重新排序或删除顶级TOC中的条目(Welcome、Mail、Calendar、ToDoList、Contacts、Notebook等)。例如,如果不想让用户看到Welcome页面,可以将其从TOC中删除。
  • 向Mail视图中的大纲添加视图或文件夹。
    可以在用户的邮件数据库中创建新的视图或文件夹(只能创建不加分类的),并将它们添加到当前视图左边的大纲中。还可以重新配置这个大纲的默认显示顺序。虽然不能在Calendar视图中修改现有视图列,但可以在Mail视图中修改它们。
  • IBM红皮书iNotesWebAccessDeploymentandAdministration中包括关于如何执行这些修改的详细说明。

    定制DominoWebAccess6.5
    在LotusDomino6.5版本中,DominoWebAccess在许多方面进行了改进,其中多个更改设计可用来使客户更容易地进行更改,特别是对DominoWebAccess的图形外观进行更改。这些更改使人们可以定制Welcome页面,向操作栏和Tools菜单添加一些项,定制DominoWebAccessRedirect登录页面以及其他操作。

    IBM红皮书DominoWebAccess6.5onLinux中包括一个非常好的DominoWebAccess定制示例的集合。

    Domino开发人员可以使用DominoDesigner修改Forms6.nsf数据库中的多个表单。例如,开发人员可以修改s_MailMemoEdit子表单,从而使电子邮件中包含地点或部门。开发人员还可以在Scene_PreSubmit函数(在Custom_JS_Extensions表单内)中编写代码,以验证新的字段。

    DominoWebAccess6.5onLinux描述了管理员和Domino开发人员可以执行的多个定制项目:

  • 修改操作栏
    Redbook使用两个例子说明了如何向操作栏添加新的菜单选项。一个例子通过添加函数来显示Web页面——在下面例子中,该页面为ITSOIBMRedbookWeb页面:

    图2.操作栏

    另一个菜单定制创建函数以显示警报、对话框或两者同时显示,它们会显示一个或多个所选文档的UNID。这些操作按钮是通过编辑Forms6.nsf文件中名为Custom_JS的表单来创建的。这两个按钮的条目被添加到名为Scene_Actions的函数中。第一个按钮不需要其他代码。第二个按钮需要新的函数ShowDocUIDs,这个函数显示了包含所选文档UID的警报框。

  • 向Tools菜单添加子函数
    这个定制将向Tools菜单添加一个条目,创建一个包含预填充主题字段的新HelpRequest邮件消息:

    图3.Tools菜单

    再次说明,要修改Forms6.nsf文件中的Custom_JS表单来添加这个条目到Tools菜单中,并添加新的函数SendHelpRequest来处理消息的创建。

  • 定制Welcome页面
    可以定制名为Custom_WelcomePage的表单,增加更多的在Welcome页面配置的Edit对话框内进行Web站点选择控制的机会。下面的屏幕显示了要在DominoDesigner中进行编辑的已打开的Custom_WelcomePage:

    图4.Custom_WelcomePage表单

    RedbooksWeb页面已经通过标题变量中的条目(ITSO)和URL变量(http://www.redbooks.ibm.com/)添加到页面列表中。保存表单并重新启动HTTP服务器后,ITSO条目会显示在配置屏幕中可用页面的列表中。将DominoWebAccess设置为随ITSO页面的显示而打开,这将产生如下所示的结果:

    图5.DominoWebAccess中的ITSO页面

  • 定制横幅
    通过修改Custom_Banner子表单,可以用其他图像或文本字符串替代DominoWebAccess徽标。该子表单包含一行HTML代码。要用文本替代徽标,请使用以下这行代码:

    <div><h2><b>Customtextgoeshere</b></h2></div>

    要用图形替代徽标,则创建图像资源并在子表单中输入到这个图像资源的路径:

    <div><imgsrc="../../../../inotes/forms6.nsf/alt-logo.gif?OpenImageResource"></div>

    还可以通过定制用于横幅背景的图像来更改横幅的外观。这比较复杂。背景图像取自名为gradblue10.jpg的文档的附件。可以在Forms6.nsf数据库的hRessourcesByName视图中找到这个文档。

    没有任何表单显示该文档存在于Forms6.nsf数据库中,所以您必须在DominoDesigner中创建这个文档。将该文档命名为Image,并在其中创建名为Body的字段和指定富文本类型。

    保存该表单后,通过Notes客户机打开hResourcesByName视图。打开gradblue10.jpg文档并分离图像文件。用图形编辑工具修改图像的颜色,然后重新附加该文件,而不更改图像的名称或大小。最后保存并关闭文档。在重新启动HTTP服务器时,DominoWebAccess将显示新的背景。

    在LotusDomino7中,DominoWebAccess使用的所有图像均作为文件存储在FileResource设计元素中。这使得提取图像更容易,从而可以用任何图像编辑器来编辑图像,然后重新插入这些图像。

  • 定制DominoWebAccessRedirect登录和重定向屏幕
    DominoWebAccessRedirect是DominoWebAccess6.5中的新功能,使用户可以登录到运行DominoWebAccessRedirect数据库的服务器中并自动重定向到不同的服务器。这种重定向允许用户访问不同服务器的邮件文件,而无需知道文件或邮件服务器的名称。

    可以将其他功能编码到DominoWebAccessRedirect中。Redbook建议您将这些功能集成到门户中,或者修改登录和重定向屏幕,以便与公司的颜色标准和设计标准相匹配。因为这些是正规Notes表单,而不是DominoWebAccess模板,所以可以在DominoDesigner中对其进行更改和改进——但是注意不要更改登录屏幕上的字段,否则登录过程可能无法正常运行。

    还可以使用Notes.ini变量iNotes_WA_LogoutRedirect指定URL,在用户从DominoWebAccess退出之后,将其重定向到该URL。可以使用这个变量使用户返回登录页面、公司门户网站页面或定制的DominoWebAccess退出页面。

  • 处理皮肤
    DominoWebAccess初次打入市场时,它利用了许多已经添加到LotusTeamWorkplace(以前称为QuickPlace)中的HTML用户界面开发。QuickPlaceUI中的一个重要概念就是皮肤或主题,它表示某一位置的统一图形外观。该产品中包含许多皮肤;创建新的Workplace时,可以选择确定其外貌的皮肤。开发人员可以调整主题的修饰来更改颜色和字体。他们可以定制Workplace中的现有表单,并且可以创建其他表单,以为了满足皮肤组的需要才具有的方式来收集信息。

    (有关定制LotusTeamWorkplace的详细信息,请参阅developerWorks:Lotus中的“DiscoveringLotusTeamWorkplacecustomization”一文和IBMRedbook“CustomizingQuickplace”。)

    遵循LotusTeamWorkplace模型,所有DominoWebAccess表单和子表单都使用pass-thruHTML(即使未设置这种特殊属性)。该pass-thruHTML包含一些特殊标签,当将响应HTML放在一起时,由服务器解释这些特殊标签:一个标签用来插入皮肤,一个标签用来插入特定皮肤组件或子表单,其他标签则用来进行其他操作,比如评估计算的块,以及确定持久存储项和仅计算项等。

    DominoWebAccess中的所有主页面——所有视图页面,所有读取或编辑对象页面和首选项页面——都使用iNotes6.nsf数据库中名为h_PageUI的表单。这个表单自身非常简单。但它包括HTML以及主体的开始和结束标签,而且还包括一些特殊标签,其中包括:

  • Computedtext
    该标签采用“@{}”形式。在大括号内,可以包含任何公式。在DominoWebAccess代码中,许多公式在存储到表单或子表单中之前都进行了编译,二进制结果都用base64进行了编码。没有编译的公式也可以放在标签之间,并会在运行时被编译和执行。
  • InsertNotesSubForm(<InsertNotesSubformname=formname>)
    该名称可以是任何子表单名称。DominoWebAccess使用计算公式确定许多已插入子表单的名称:这就是它如何可以使用一个表单显示DominoWebAccess页面的原因。
  • QuickPlaceSkin
    该标签为:<QuickPlaceSkin>。这个标签可插入相关皮肤布局的全部内容。
  • QuickPlaceSkinComponent
    该标签可以有多个参数。在最简单形式中,它包含<QuickPlaceSkinComponentname=formname>。更复杂的皮肤组件标签会包括JavaScript,它包含所有指定属性的值,然后还会插入一个子表单。
  • 下图包含这些标签的例子并显示了它们如何创建页面:

    图6.QuickPlace标签

    在表单的顶部,InsertNotesSubForm标签查找具有指定名称的子表单,并在该标签的位置插入子表单的内容。在示例中,这个子表单包含<head>开始和结束标签,并包含引入公共外部脚本文件和标准样式表的其他标签。

    同样,在表单的底部,h_HTMLTailContent子表单在所有页面的底部调用的一些标准脚本中。我们将一些看不见的HTML元素(如XML岛)和逻辑(如轮询新的消息和警告)放在这里。

    在表单的中间,QuickPlaceSkin标签在组成页面主体的HTML中。这包括一个皮肤,在这个皮肤内,有打包为皮肤组件的其他HTML,这些组件可以由皮肤重新使用。

    名为PageContent的皮肤组件包含页面的实际内容。在这个PageContent组件内,DominoWebAccess按照“演一场戏”的QuickPlace编程约定。场景只是通过特殊命名规则相关的两个子表单。具有场景名称的子表单被发送到HTML页面的内容区域,在页面的标头区域发出具有相同场景名称和_Init后缀的匹配子表单。

    下面的HTML是皮肤代码的片断。它包括定义表中屏幕布局的常见标签,以及QuickPlaceSkinComponent标签的两个偶然事故。这个标签是在具有指定皮肤组件名的子表单中调用的,它发出了与皮肤组件逻辑进行通信的脚本:

    <tablecellpadding="0"cellspacing="0"border="0"height="18"><trvalign="middle"><tdclass="s-bidi-flip"nowrapwidth="8"><imgwidth=8height=21class="s-stretch-y"src="/iNotes/Forms6.nsf/h_ResourcesByName/tools-begin.gif/$FILE/tools-begin.gif?OpenElement&MaxExpires"></td><tdclass="s-tool-texts-tool-bg"nowrap></td>:<QuickPlaceSkinComponentname=Logout><QuickPlaceSkinComponentname=ShimmerChatFormat={<tdclass="s-tool-texts-tool-bg-middle"nowrap><Item></td>}>

    皮肤编辑器
    定制DominoWebAccess的一个难题之一就是编辑皮肤。可以从Sandbox下载皮肤编辑工具。这个工具对Forms6.nsf文件进行操作,允许添加、删除或更改视图和表单页面上对象的位置和编辑样式表,以更改对象的颜色和样式。该工具如下图所示:

    图7.DominoWebAccess皮肤编辑工具

    BrowserSkins选择框显示可用皮肤组——皮肤组是一组共享相同样式表的皮肤。DominoWebAccessForms文件包括三个皮肤组:h_ShimmerSkin(用于InternetExplorer)、h_ShimmerSkin_Gecko(用于Mozilla)和h_ShimmerSkin_UB(用于不受支持的浏览器)。用于InternetExplorer和Mozilla的皮肤组之间的惟一区别是样式表。

    DominoWebAccessSkins选择框显示皮肤类型,比如h_Page、h_ListFolder、h_Edit、h_MailPage、h_Portal,等等。

    用于页面的皮肤布局由两个仅计算变量h_SetSkinGroup和h_SkinTypeOverride确定。h_SetSkinGroup指定要使用的皮肤组,h_SkinTypeOverride指定要使用的皮肤类型。有一些默认值。如果正在编辑文档,那么皮肤类型默认为h_Edit皮肤。如果h_Type==“1”(文件夹的QuickPlace标识符),那么皮肤类型为h_ListFolder。否则,皮肤类型为h_Page。

    要对DominoWebAccess页面进行更改,必须在皮肤编辑器中编辑相应的皮肤类型。为了确定要编辑的皮肤类型,需要在Web浏览器中查看页面并显示源代码。(对于InternetExplorer,则通过调用View/Source菜单项或右击显示的页面并选择Viewsource来确定要编辑的皮肤类型。)页面上的两个JavaScriptvar定义将标识当前皮肤组和类型:h_CurrentSkinName和h_CurrentSkinType。

    varh_CurrentSkinName="h_ShimmerSkin";varh_CurrentSkinType="h_ListFolder";

    LotusDomino7中的新功能
    对于DominoWebAccess,正在进行大量的工作使其在LotusDomino的下一版本中更加用户化。本文前面已经讲述了其中一些更改。主要改进包括:

  • 如前所述,公式在其表单和子表单的原始文本中将是可用的。服务器端表单/子表单缓存已经进行了改进,以便在第一次访问表单或子表单时编译公式,然后将编译结果存储到缓存内。用这种方式,不会以牺牲性能为代价来获得可定制性。
  • DominoWebAccess中的所有图像都将存储为FileResource设计元素,从而使它们更易于标识和替代。
  • 称为ObfuscationList.txt的新FileResource设计元素将包含清楚易读的代码名称到简短含义模糊的名称的映射。
  • 皮肤将更容易编辑。对于Forms7.nsf(Domino7Forms文件),将不需要本文前面提到的皮肤编辑器。所有皮肤都将存储为FileResource设计元素。相关设计元素的名称将是皮肤组名称后加上连字符,然后再加上皮肤类型名称。
  • DominoWebAccess7将支持QueryOpen和QuerySave代理。
  • 名为DominoWebAccess_tags的特殊表单将存储包含DominoWebAccess名称空间的定制标签的定义。在Forms7.nsf文件的表单和子表单内的pass-thru中,您将看到这些标签。例如:

    <DWA:getvarsincludeall="0"/>

    这个表单将提供一种避免(或至少减少)pass-thruHTML内出现这么多计算Notes公式的方法,并提供了另一种性能改进。

  • 显然,LotusDomino7将标志着DominoWebAccess的可定制性的重大提高。以后的developerWorks:Lotus文章将详细研究当对具有特定Form类型的邮件文件中的特定文档进行操作时,DominoWebAccess如何确定要演哪一场“戏”,它如何显示特定Form类型的实际字段值,如何通过定制NotesDictionary条目将其他字段添加到特定Form类型中,以及如何使用新的QueryOpen和QuerySave代理功能。

    来源:互连网
    友情链接
    北极星工程招聘网北极星电气招聘网北极星火电招聘网北极星风电招聘网北极星水电招聘网北极星环保招聘网北极星光伏招聘网北极星节能招聘网招标信息分类电子资料百年建筑网PLC编程培训

    广告直拨:   媒体合作/投稿:陈女士 13693626116

    关于北极星 | 广告服务 | 会员服务 | 媒体报道 | 营销方案 | 成功案例 | 招聘服务 | 加入我们 | 网站地图 | 联系我们 | 排行

    京ICP证080169号京ICP备09003304号-2京公网安备11010502034458号电子公告服务专项备案

    网络文化经营许可证 [2019] 5229-579号广播电视节目制作经营许可证 (京) 字第13229号出版物经营许可证新出发京批字第直200384号人力资源服务许可证1101052014340号

    Copyright © 2022 Bjx.com.cn All Rights Reserved. 北京火山动力网络技术有限公司 版权所有