微软 365和SharePoint的基本要素

显示带有标签的帖子 救命 . 显示所有帖子
显示带有标签的帖子 救命 . 显示所有帖子

2007年8月27日,星期一

将自定义帮助页面添加到SharePoint很复杂!

我一直在想一阵的是如何扩展SharePoint帮助系统。前阵子我写过 如何在SharePoint中修改“系统”页面 通过有效地添加新页面-我使用的示例是:

  • 自定义的回收站页面,其中仅显示当前用户删除的项目
  • 一个自定义的“中央管理”页面,其中包含特定于我的虚拟组织的管理员的消息

当实现这样的自定义时,我认为能够添加自定义帮助以伴随新功能会很有用。因此,今天我着手研究SharePoint帮助系统,以了解如何执行此操作。不幸的是,到目前为止,我的回答是这很困难,而且我还没有弄清所有问题!但是,我想详细说明我发现的内容,希望它对某人仍然有用,或者知道的人可以发表评论或链接并完成拼图。

因此,明确地说,我在谈论如何添加自定义 应用 帮助页面-与WSS和MOSS SDK参考的2 .chm文件无关。在站点或中央管理页面中,应用程序帮助页面从顶部栏中的帮助图标链接到:

如您所料,此图标(及其后面的链接)由页面的母版页提供。单击该链接将调用一个名为TopHelpButtonClick()的JavaScript函数。 core.js 打开帮助窗口-在大多数页面上都会传递“ NavBarHelpHome”参数,尽管值得注意的是,这些页面链接到除 默认 帮助页面会覆盖此值。由于所有页面都说中央管理器共享相同的母版页(并且JS调用位于母版页中,而不是实际页面中),因此core.js中的代码将检查该页面本身是否指定了替代。因此,各个页面可以使用以下脚本块覆盖母版页中指定的帮助位置:

< 脚本 类型 ="文字/ javascript " 语言 =" 的JavaScript ">

        变种  navBarHelpOverrideKey = “ OSSCentralAdmin ”;

</ 脚本 >


然后,Core.js将使用此替代参数而不是'NavBarHelpHome'构建链接,这意味着页面可以轻松链接到自定义页面,而不是默认页面。为了链接到自定义帮助页面,您的页面将需要覆盖此值。

此处使用的值链接到存储在C:\ Program Files \ Common Files \ 微软 Shared \ Web服务器扩展\ 12 \ TEMPLATE \ XML \ HELP中的一组映射文件中的值。对于上面显示的值,我们发现映射文件之一“ OssSearchAdmin_HelpKeymap.xml”包含以下内容:

 

< 帮助图 >

    <> OSSCentralAdmin </>

    < collectionId >MS.SEARCH.ADMIN。清单</ collectionId >

    < contextId >MS.SEARCH.ADMIN.OSSCentralAdmin</ contextId >

</ 帮助图 >


此目录中的映射文件集都包含相似的条目,即,每个页面都有一个对应的条目,用于指定默认帮助页面的替代。由于这些文件似乎没有遵循任何命名约定,因此我敢冒险将任何具有正确架构的XML文件放入此处,帮助系统将其选中。当找到这些引用指向的内容时,事情变得很有趣!使用Visual Studio“在文件中查找”在“ 12”目录中进行的初始搜索不会产生任何结果,但是与大多数其他情况一样,值得进一步研究。在\\ 12 \ HCCab \ 1033 \目录中是一组.cab文件,这些文件存储SharePoint帮助系统中使用的帮助文件。在上面的示例中,“ MS.Search.Admin.HC.cab”文件是被引用的文件。在内部,我们看到许多文件,其中一个名为“ MS.SEARCH.ADMIN。清单.xml”,您会注意到该文件的值是 < collectionId > 在上面的映射中。一个.cab文件的内容如下:



到目前为止,快速回顾了一下-我们发现了如何覆盖显示的初始帮助页面,以及指定的键如何链接到打包为“ HCCab \”中cab文件的一组帮助文件。<localeId>' directory.

清单文件显然是.cab中文件的索引如何链接的关键。顺便说一句,对于那些熟悉构建SharePoint解决方案包的人来说,这里使用的架构与那里使用的“ manifest.xml”文件完全无关。 查看这些清单文件中的一个文件的内容,让我印象深刻的第一件事是它看起来像系统生成的文件-一方面 父/子和链接关系很多 这将是复杂的 手工记录。摘录如下:

<? XML文件 ="1.0"?>

< 救命 Collection >

  < 名称 >SearchCentralAdmin</ 名称 >

  < ID >MS.SEARCH.ADMIN。清单</ ID >

  < 更改日期 >2006-10-13 21:53:57Z</ 更改日期 >

  < 创建日期 >2006-10-13 21:53:57Z</ 创建日期 >

  < 作者 > 微软 </ 作者 >

  <>11.0.9413.2</>

  < lcid >1033</ lcid >

  < 默认 HelpItem >搜索管理员HA10175815</ 默认 HelpItem >

  < 品牌形象 />

  < rootCategory >搜索管理员MSCH10176169</ rootCategory >

  < 反馈 节目 ="" />

  < 救命 Item s >

    < 救命 Item >

      < ID >MS.ADARCH.ADMIN.HA10047848</ ID >

      < 父母 >

        < 父母 排序 ="4" =" 真正 ">搜索引擎管理员CH10176336</ 父母 >

        < 父母 排序 ="4" =" 真正 ">搜索引擎管理员CH10176336</ 父母 >

      </ 父母 >

      <relatedItemsPointingToMe>

        < 项目 排序 ="1">MS.ADARCH.ADMIN.HA10047848</ 项目 >

        < 项目 排序 ="1">MS.SEARCH.ADMIN.ManageSearchService</ 项目 >

        < 项目 排序 ="1">MS.SEARCH.ADMIN.SearchServerSettings</ 项目 >

      </relatedItemsPointingToMe>

    </ 救命 Item >

    < 救命 Item >

      < ID >搜索引擎管理员HA10047852</ ID >

      < 父母 >

        < 父母 排序 ="6" =" 真正 ">搜索管理员AD CH10176338</ 父母 >

      </ 父母 >

      <relatedItemsPointingToMe>

        < 项目 排序 ="1">MS.SEARCH.ADMIN.LogSummary</ 项目 >

        < 项目 排序 ="1">MS.SEARCH.ADMIN.LogViewer</ 项目 >

      </relatedItemsPointingToMe>

    </ 救命 Item >


但是,要检查的一件事是在 < 默认 HelpItem > 确实是最初加载的页面 帮助窗口打开时。就是这样!

 

我不禁想到,已经使用了帮助文件生成器,可能有必要使用相同的方法来添加自定义帮助页面。 当我开始钻研时,我主要希望找到一些由 nDoc 要么 沙堡 某处,但似乎确实使用了一些我不熟悉的东西。 Robohelp也许?

 

如果有人能对此有所启示,我很想听听。同时,我注意到其他人通过传递自定义参数然后修改core.js来拦截该问题并打开一个完全自定义的帮助窗口,而不是直接插入现有的帮助系统,从而找到了解决该问题的替代方法。 Ragav Jagannathan关于他的方法的帖子可以在这里找到- http://ragavj.blogspot.com/2007/04/custom-help-window-can-be-opened-by.html。正如Ragav正确指出的那样,自定义core.js文件不受支持,因此在沿这条路线走之前,您应该仔细考虑。

[更新-   尼克·斯旺 MSN要我指出 在Central Admin网站上有一个文档库,其中包含帮助文件。有趣的是,这是存储在文件系统上HCCab文件夹中的同一组文件!很难从IIS日志中得知实际上已提取了哪些文件集,因为 它们似乎是通过动态加载的 '/_layouts/helpContent.aspx'和'/_layouts/help.aspx' pages. Interesting!]