SharePoint 2010 自定义属性管理工具

在SharePoint 2010中,网站元数据通常存储在哈希表SPWeb.AllProperties中,可以通过新的SharePoint 2010 API进行访问和管理,如SPWeb.GetPropertySPWeb.AddPropertySPWeb.SetPropertySPWeb.RemoveProperty。这些属性对于构建自定义组件时存储配置数据非常有用。

SharePoint提供了多种存储配置数据的方式,例如委托控件可以使用元素清单,Web部件可以使用.webpart文件,全局配置可以使用web.config、自定义SharePoint列表或SPFarmSPWebApplicationSPSiteSPWebSPList的属性包。虽然市面上有许多免费工具可以覆盖上述部分场景,但作者之前为SharePoint2007编写的工具升级到SharePoint 2010后,决定将其发布出来。

该工具仅限于在SPWeb中存储自定义属性,因此用户需要是站点管理员,或者在顶级站点中使用它来存储全局配置数据,需要是站点集合管理员。它应该能够覆盖大多数使用案例。在SPFarmSPWebApplication中存储属性风险更高,可能需要更高的访问权限,这在生产环境中可能不一定有,或者需要访问SharePoint 2010中央管理。

描述

开发这个工具的挑战在于使界面与SharePoint的其他应用程序页面无缝对接。这意味着不仅要有相似的外观和感觉,还要有整个用户界面和后台的工作方式。

共有3个应用程序页面:MngSiteProperties.aspx(管理页面)、AddSiteProperty.aspx(添加页面)和EditSiteProperty.aspx(编辑页面)。所有3个页面都继承自WebAdminPageBase,并重写RequireSiteAdministrator以返回true

UI元素尽可能使用内置的SharePoint元素进行渲染。使用的元素包括用户控件ToolBar.ascxToolBarButton.ascxInputFormSection.ascxInputFormControl.ascxButtonSection.ascx和自定义控件SPGridViewInputFormTextBox

所有UI字符串都存储在资源文件中。应用程序页面中使用的UI字符串存储在应用程序全局资源文件QuestechSiteProperty.resx中。该文件在Visual Studio 2010中的Deployment Type设置为AppGlobalResource

MngSiteProperties.aspx中,站点属性列表在SPGridView中渲染,并包裹在UpdatePanel中,将在下一点中解释更多。使用ItemTemplate渲染到编辑页面的超链接,将属性名称作为查询字符串传递。必须小心对属性名称进行URL编码,因此不能使用HyperLinkField

使用新的SharePoint模态对话框机制启动添加和编辑操作,具体是函数SP.UI.ModalDialog.commonModalDialogOpen。编写了一个回调函数,在添加或编辑操作成功完成后手动刷新UpdatePanel。或者可以使用SP.UI.ModalDialog.RefreshPage,但这会刷新整个页面,并使用表单提交!

通常在使用SharePoint模态对话框时,应在新的SharePoint客户端API中编写服务器逻辑,或者将其打包在WCF中。这允许在逻辑完成后轻松回调到启动器。但作者还没有准备好完全重写SharePoint 2007的代码。因此,在AddSiteProperty.aspxEditSiteProperty.aspx的代码后台中的操作事件成功完成后,执行以下操作:

page.Response.Clear(); page.Response.Write( String.Format(@" ", returnValue)); page.Response.End();

这将渲染SP.UI.ModalDialog.commonModalDialogClose到浏览器,使其关闭当前对话框,并将returnValue传递给启动器回调函数。

由于站点属性由SharePoint存储在哈希表中,属性值可能是对象而不仅仅是字符串。管理页面将使用ToString列出属性值,但如果检测到属性值不是字符串,则编辑页面中的OK按钮将被禁用,不允许编辑。

在编辑任何内置站点属性时要格外小心,除非知道自己在做什么。

应用程序页面通过站点功能QuestechSitePropertySite Settings中暴露。提供的Visual Studio 2010解决方案包括构建和部署此工具所需的所有支持文件,除了强名称密钥文件(key.snk)。它充分利用了内置的SharePoint集成。不再需要第三方工具或自定义预构建和后构建脚本来构建SharePoint解决方案文件。

安装

打开SharePoint2010管理外壳,使用Add-SPSolution添加解决方案文件QuestechSiteProperty.wsp,如下所示:

Add-SPSolution "C:\QuestechSystems.SiteProperty\bin\Release\QuestechSiteProperty.wsp"

或者使用stsadm,添加解决方案文件QuestechSiteProperty.wsp,如下所示:

stsadm -o addsolution -filename "C:\QuestechSystems.SiteProperty\bin\Release\QuestechSiteProperty.wsp"
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485