站点属性管理(SharePoint 2010)





5.00/5 (4投票s)
提供管理 SharePoint 站点自定义属性的管理 UI
引言
本应用程序页面集供 Microsoft SharePoint Foundation 2010 和 SharePoint Server 2010 使用,提供了一个管理用户界面,用于管理 SharePoint 网站的自定义属性。SharePoint 将网站的元数据存储在哈希表 SPWeb.AllProperties 中。它们通过新的 SharePoint 2010 API SPWeb.GetProperty、SPWeb.AddProperty、SPWeb.SetProperty 和 SPWeb.RemoveProperty 进行访问。在构建自定义组件需要存储配置数据时,这些属性尤其有用。
背景
在 SharePoint 中有许多地方可以存储配置数据。对于委派控件,可以使用元素清单。对于 Web 部件,可以使用 .webpart 文件。对于全局配置,可以使用 web.config、自定义 SharePoint 列表,或 SPFarm
、SPWebApplication
、SPSite
、SPWeb
和 SPList
中的属性存储区。
有许多免费工具可用于解决我上面描述的一些场景,但我早在 SharePoint 2007 时就已经编写了此工具,并在将其升级到 SharePoint 2010 后,我决定将其发布在这里。我的工具仅限于将自定义属性存储在 SPWeb
中,因此用户需要是网站管理员,或者在顶级网站(我在此处使用它来存储全局配置数据)的情况下,是网站集管理员。但这应该涵盖大多数用例。将属性存储在 SPFarm
或 SPWebApplication
中风险更大,并且需要您在生产环境中不一定拥有的更高访问权限,或者需要访问应用程序页面逻辑上应驻留的 *SharePoint 2010 Central Administration*。
描述
开发此工具的挑战在于使界面与 SharePoint 的其他应用程序页面无缝集成。我的意思是,不仅是外观和感觉,还有整个 UI 如何对用户以及幕后工作。
- 有 3 个应用程序页面。它们是 MngSiteProperties.aspx(管理页面)、AddSiteProperty.aspx(添加页面)和 EditSiteProperty.aspx(编辑页面)。这 3 个页面都继承自
WebAdminPageBase
,并重写了RequireSiteAdministrator
以返回true
。 - UI 元素尽可能使用内置的 SharePoint 元素进行渲染。使用的元素包括用户控件 ToolBar.ascx、ToolBarButton.ascx、InputFormSection.ascx、InputFormControl.ascx、ButtonSection.ascx 以及自定义控件 SPGridView 和 InputFormTextBox。
- 所有 UI 字符串都存储在资源文件中。应用程序页面中使用的 UI 字符串存储在应用程序全局资源文件 QuestechSiteProperty.resx 中。在 Visual Studio 2010 中,该文件的*部署类型*设置为*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.aspx 和 EditSiteProperty.aspx 的代码隐藏中回调启动器,我在操作成功完成后会执行以下操作。
page.Response.Clear(); page.Response.Write(String.Format(@ "<script language=""javascript"" type=""text/javascript""> window.frameElement.commonModalDialogClose(1, ""{0}""); </script>", returnValue)); page.Response.End();
这会向浏览器渲染 SP.UI.ModalDialog.commonModalDialogClose,使其关闭当前对话框并将
returnValue
传递给启动器回调函数。 - 由于网站属性由 SharePoint 存储在哈希表中,因此属性值可能是一个对象而不是简单的字符串。管理页面将使用
ToString
列出属性值,但在编辑页面中,“确定”按钮将被禁用,以阻止编辑(如果检测到属性值不是字符串)。 - 必须格外小心,不要编辑任何内置的网站属性,除非您知道自己在做什么。
- 应用程序页面通过站点功能 *QuestechSiteProperty* 使用 CustomAction 在*网站设置*中公开。
提供的 Visual Studio 2010 解决方案包括构建和部署此工具所需的所有支持文件,但不包括强命名密钥文件(key.snk)。它充分利用了内置的 SharePoint 集成。不再需要第三方工具或自定义的预生成/后生成脚本来构建 SharePoint 解决方案文件。
安装
打开*SharePoint 2010 Management Shell*,使用 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"
转到*SharePoint 2010 Central Administration/System Settings/Manage farm solutions*。将已安装的解决方案部署到选定的 Web 应用程序。在部署了该解决方案的网站集(site collection)中,转到顶级网站或任何子网站以激活站点功能 *Questech Systems Site Property*。现在,“Questech Systems Custom Settings”部分应该在“Site Settings”中可用。
历史
- 2010 年 7 月 11 日:首次发布