65.9K
CodeProject 正在变化。 阅读更多。
Home

站点属性管理(SharePoint 2010)

starIconstarIconstarIconstarIconstarIcon

5.00/5 (4投票s)

2010年7月12日

CPOL

4分钟阅读

viewsIcon

51079

downloadIcon

727

提供管理 SharePoint 站点自定义属性的管理 UI

Figure 1

图 1

Figure 2

图 2

Figure 3

图 3

引言

本应用程序页面集供 Microsoft SharePoint Foundation 2010SharePoint Server 2010 使用,提供了一个管理用户界面,用于管理 SharePoint 网站的自定义属性。SharePoint 将网站的元数据存储在哈希表 SPWeb.AllProperties 中。它们通过新的 SharePoint 2010 API SPWeb.GetPropertySPWeb.AddPropertySPWeb.SetPropertySPWeb.RemoveProperty 进行访问。在构建自定义组件需要存储配置数据时,这些属性尤其有用。

背景

在 SharePoint 中有许多地方可以存储配置数据。对于委派控件,可以使用元素清单。对于 Web 部件,可以使用 .webpart 文件。对于全局配置,可以使用 web.config、自定义 SharePoint 列表,或 SPFarmSPWebApplicationSPSiteSPWebSPList 中的属性存储区。

有许多免费工具可用于解决我上面描述的一些场景,但我早在 SharePoint 2007 时就已经编写了此工具,并在将其升级到 SharePoint 2010 后,我决定将其发布在这里。我的工具仅限于将自定义属性存储在 SPWeb 中,因此用户需要是网站管理员,或者在顶级网站(我在此处使用它来存储全局配置数据)的情况下,是网站集管理员。但这应该涵盖大多数用例。将属性存储在 SPFarmSPWebApplication 中风险更大,并且需要您在生产环境中不一定拥有的更高访问权限,或者需要访问应用程序页面逻辑上应驻留的 *SharePoint 2010 Central Administration*。

描述

开发此工具的挑战在于使界面与 SharePoint 的其他应用程序页面无缝集成。我的意思是,不仅是外观和感觉,还有整个 UI 如何对用户以及幕后工作。

  • 有 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 中,该文件的*部署类型*设置为*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(@
    	"<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 日:首次发布
© . All rights reserved.