WSS或者MOSS的文档库中通常都通过Send To菜单来提供将文档下载或者邮件发送,你可以通过Download a Copy菜单项来打开/下载一份文档,但又的时候我们可能不想提供这样的方法,那如何来修改定制Send To菜单呢?
CreateMenu函数最终还会调用一些列的子函数来创建特定菜单的内容,而在最后它会调用CreateMenuEx函数来对像Meeting列表,Doc列表,Version等菜单项生成。
在上边的代码片段中我们可以看到针对ctx.listBaseType==1的文档列表调用了AddDocLibMenuItems函数来进行附加处理生成针对文档库的特定处理菜单项。而在这个函数中你最终会发现一个AddSendSubMenu这个函数,它做什么呢?顾名思义,就是产生SendTo菜单的。我们首先把这个函数的内容全部清空,只剩下函数声明,看看发生了什么?
你已经看不到Send To这个菜单项了,如果想移除Download a Copy那看来就得在这里边做文章了。
if (currentItemFSObjType !=1 && ctx.listBaseType==1 && (serverFileRedirect==null || serverFileRedirect=="" || HasRights(0x0, 0x20))) { if (ctx.listTemplate !=109 && ctx.listTemplate !=119) AddWorkspaceMenuItem(sm, ctx); strAction="STSNavigate('"+ ctx.HttpRoot+ "/_layouts/download.aspx?"+ "SourceUrl="+ currentItemEscapedFileUrl+ "&Source="+GetSource()+"&FldUrl="+escapeProperly(ctx.SendToLocationUrl)+"')"; menuOption=CAMOpt(sm, L_DownloadACopy_Text, strAction, ""); menuOption.id="ID_DownloadACopy"; } |
这里可以很清晰地看到是用上边的几句话生成了SendTo菜单。Ok,可以开始修改了,像它内置的一样,我们用ctx.listName或者ctx.listTemplate来可以限定针对 不同文档库类型或者特定文档列表的生成。比如我们对于一个自己定义的文档库不需要生成Send To的Download a Copy菜单,可以这么写:
if (currentItemFSObjType !=1 && ctx.listBaseType==1 && ctx.listName != "{A72CF38B-F456-496F-8ED3-FE2122CDE4FF}" && (serverFileRedirect==null || serverFileRedirect=="" || HasRights(0x0, 0x20))) { if (ctx.listTemplate !=109 && ctx.listTemplate !=119) AddWorkspaceMenuItem(sm, ctx); strAction="STSNavigate('"+ ctx.HttpRoot+ "/_layouts/download.aspx?"+ "SourceUrl="+ currentItemEscapedFileUrl+ "&Source="+GetSource()+"&FldUrl="+escapeProperly(ctx.SendToLocationUrl)+"')"; menuOption=CAMOpt(sm, L_DownloadACopy_Text, strAction, ""); menuOption.id="ID_DownloadACopy"; } |
结果正如预料的一样,Download a Copy菜单项消失。
在CORE.js里便定义了一系列在客户端操作时生成的交互菜单,路径,甚至于导入导出操作等等,有些时候我们不妨通过改变CORE.js来轻松的实现一些小的功能。当然,因为这属于系统本身的库,我们还是建议大多数情况下不要更改。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述