文档库中多个范围内的自定义SharePoint功能 - 显示为重复项

时间:2009-01-14 13:56:23

标签: sharepoint sharepoint-2007

我有一个自定义功能,它是文档库中的编辑控制块(ECB)操作,可以作为解决方案包(WSP)进行部署。当您下拉文件旁边的下拉列表时,您会看到该功能,当选择了ECB操作时,用户将被重定向到自定义应用程序页面。

我允许将此功能安装到所有4个不同的范围:Farm,WebApplication,Site和Web。它们中的每一个都将位于不同的解决方案包中,但共享相同的FeatureId,SolutionId等。假设该功能一次只安装在一个范围内。如果管理员部署它,激活它,如果我们他/她想要更改范围,停用它,一切正常。如果由于某种原因管理员没有首先停用它,ECB操作将在文档库中有重复的条目。

例如,假设我们将其安装为Site范围(网站集),然后决定我们希望它在Farm范围内,而不是首先停用它,而只是转到解决方案管理并收回并删除它。如果我们查看之前可用的网站集,我们就看不到ECB的行动。

如果我们然后添加Farm范围解决方案包并进行部署,我们现在将在网站集中看到ECB操作,即使我们尚未部署它并且feature.xml ActivateOnDefault属性设置为false。如果我们继续并激活它,我们现在将看到两个ECB行动。

有没有人有任何想法?我在下面添加了feature.xml和elements.xml。

TIA, 马格努斯

<?xml version="1.0" encoding="utf-8"?>

          

<?xml version="1.0" encoding="utf-8"?>

       RegistrationType = “清单”     RegistrationId = “101”
    位置= “EditControlBlock”     序列= “300”
    的ImageUrl = “/ _布局/图像/我的功能/ MyOtherPic.gif”     Title =“我的特色”
    Description =“我的ECB功能”     &GT;        

3 个答案:

答案 0 :(得分:0)

AFAIK,这种行为是设计的。 您需要添加或扩展FeatureReceiver 并覆盖一些方法,尤其是FeatureUninstalling 您需要在每个地方停用您的功能 它仍然被激活的地方。

您可以记录每次激活,例如使用(顶级)网络属性。

Walkthrough: Creating a SharePoint Feature Receiver and Custom Link with WSS Extensions

祝你好运!

答案 1 :(得分:0)

如果有其他人碰到这个并且碰巧看到这篇文章。

通过回缩移除特征时的行为取决于元素类型。对于我在我的情况下使用的ECB元素,如果我在feature.xml文件中为每个范围都有唯一的SolutionId和Feature Id(Id),那么如果我在不同的功能范围内安装了一个功能,它就会被删除并且不会出现重复项

答案 2 :(得分:0)