当前位置: 首页 > news >正文

MOSS Tip:如何更改文档库的SendTo菜单

WSS或者MOSS的文档库中通常都通过Send To菜单来提供将文档下载或者邮件发送,你可以通过Download a Copy菜单项来打开/下载一份文档,但又的时候我们可能不想提供这样的方法,那如何来修改定制Send To菜单呢?

 2008120818041616.jpg

 

SharePoint 默认安装路径 C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033 目录下,有一个 CORE.js ,在这里你可以找到所有对于这个 Context menu 的定义。 CreateMenu 函数负责了对这个 Context Menu 的创建。

 

CreateMenu函数最终还会调用一些列的子函数来创建特定菜单的内容,而在最后它会调用CreateMenuEx函数来对像Meeting列表,Doc列表,Version等菜单项生成。

 2008120818052382.jpg

在上边的代码片段中我们可以看到针对ctx.listBaseType==1的文档列表调用了AddDocLibMenuItems函数来进行附加处理生成针对文档库的特定处理菜单项。而在这个函数中你最终会发现一个AddSendSubMenu这个函数,它做什么呢?顾名思义,就是产生SendTo菜单的。我们首先把这个函数的内容全部清空,只剩下函数声明,看看发生了什么?

 2008120818054935.jpg

你已经看不到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 ToDownload 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菜单项消失。

 通过这样的方法你还可以添加自己的菜单项,并导航到你自己写的Feature中来处理。

CORE.js里便定义了一系列在客户端操作时生成的交互菜单,路径,甚至于导入导出操作等等,有些时候我们不妨通过改变CORE.js来轻松的实现一些小的功能。当然,因为这属于系统本身的库,我们还是建议大多数情况下不要更改。

转载于:https://www.cnblogs.com/zlgcool/archive/2008/12/08/1350606.html

相关文章:

  • 完整的全站黑白css代码为:
  • 如何使用ASP.Net加密Cookie
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • 关于URLRewriter配置中与项目其他组件权限的关系!
  • 很远的张楚何勇
  • 以表达式作为参数传入SQL的存储过程中去
  • 关闭数据库的xp_cmdshell命令以防止黑客攻击
  • 探索 Java 同步机制
  • 第三方支付接口,银行接口(附下载),third party bank interface
  • 过年之-在家
  • SharePoint 2007 权限代码分享
  • ajax:简单搜索实践篇
  • IT经典定律
  • xmlhttp-JS-实现用户是否注册无刷新验证
  • 实现Apache,Tomcat集群和负载均衡Session共用
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【译】理解JavaScript:new 关键字
  • Django 博客开发教程 8 - 博客文章详情页
  • ES6--对象的扩展
  • ES学习笔记(12)--Symbol
  • jQuery(一)
  • rc-form之最单纯情况
  • Redash本地开发环境搭建
  • 聊聊redis的数据结构的应用
  • 目录与文件属性:编写ls
  • 前端面试之闭包
  • 实现简单的正则表达式引擎
  • 转载:[译] 内容加速黑科技趣谈
  • No resource identifier found for attribute,RxJava之zip操作符
  • 2017年360最后一道编程题
  • ​学习一下,什么是预包装食品?​
  • # Java NIO(一)FileChannel
  • #大学#套接字
  • (2)STM32单片机上位机
  • (39)STM32——FLASH闪存
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (pojstep1.1.2)2654(直叙式模拟)
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十六)Flask之蓝图
  • (十一)c52学习之旅-动态数码管
  • (算法二)滑动窗口
  • (学习日记)2024.01.09
  • (已解决)什么是vue导航守卫
  • (转)jQuery 基础
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • *** 2003
  • .gitignore文件---让git自动忽略指定文件
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NetCore项目nginx发布
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)