基于SharePoint文档库的回收站功能

基于文档库通过事件处理程序制作sharepoint文档库的回收站功能。
可供参考的文章如下:
方法1: http://msdn.microsoft.com/msdnmag/issues/05/02/RecycleBinforWSS/toc.asp?frame=true
使用镜像文档库,主文档库上载文档的时候同时保存到镜像文档库里,删除主文档库文件同时讲镜像文档库里对应文件移动到回收站文档库里。
 
在iis中加载自定义dll,在sharepoint之前处理删除文档请求,避免使用镜像文档库。减少冗余数据。有样例程序但没有源码。
 
方法3:
简单的数据库trigger。

在这里采用的方法为第一种。
原理简述:
开启此功能的sharepoint站点上有多个主文档库和一个镜像文档库、一个回收站文档库。
主文档库上传或更新的时候,触发DocRecycleHandler,将文档库的内容同步到镜像文档库中。
主文档库可以有多个,在镜像文档库中用同名子文件夹区分。
当删除主文档库中的内容时,触发DocRecycleHandler,将镜像文档库中对应内容移动到回收站文档库中。
在回收站文档库中对某文件进行“Restore”操作,触发DocRestoreHandler,将此文件恢复到对应主文档库和镜像文档库中。
 
因为文档库默认是没有Restore操作的,所以我们可以通过重写页面的javascript来重载文件标题的下拉菜单。具体方法可参考上文提到的第一种方法的参考文章。
 
在把文件夹从镜像库移动到回收站时,要注意文件夹在回收站库是否已经存在,因为SPFolder的MoveTo和CopyTo都没有强制覆盖的选项。
我是通过一个简单的递归重写了CopyTo方法。
 
演示截屏:
主文档库中创建几个测试文件夹:

 
在操作主文档库的同时,事件触发程序将镜像文档库内容与主文档库同步:
 
在主文档库的某文件夹里上传一个文件:
 
删除这个文件夹:
 
镜像文档库中对应文件夹也相应删除并转移至回收站文档库:
 
在回收站里对某文件使用Restore方法:
 
此文件就被恢复回主文档库中:
 
这就是一个比较完整的回收站实施样例了。
开发细节近期附上,不过要请示 Kaneboy同学先。。。

你可能感兴趣的:(SharePoint)