SummaryLink Class
A SummaryLink object that provides a way to store Web addresses.
Inheritance Hierarchy
System.Object
Microsoft.SharePoint.Publishing.SummaryLink
Namespace: Microsoft.SharePoint.Publishing
Assembly: Microsoft.SharePoint.Publishing (in Microsoft.SharePoint.Publishing.dll)
Syntax
'Declaration
<SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel := True)> _
<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel := True)> _
Public NotInheritable Class SummaryLink
'Usage
Dim instance As SummaryLink
[SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel = true)]
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel = true)]
public sealed class SummaryLink
Remarks
A SummaryLink is an annotated hyperlink.
At minimum, a SummaryLink object contains a titleand a linkUrl. It also contains styling information that affects how it is rendered by the SummaryLinkFieldControl or SummaryLinkWebPart.
Examples
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Publishing;
using Microsoft.SharePoint.Publishing.Fields;
using Microsoft.SharePoint.Publishing.WebControls;
using SharePointWebParts = Microsoft.SharePoint.WebPartPages;
using System.Web.UI.WebControls.WebParts;
namespace SummaryLinkFieldTest
{
static class CreateSummaryLinks
{
/// Creates SummaryLinks in a SummaryLinkField within a PublishingPage
/// This sample creates group headers and summary links within a SummaryLinkFieldValue object
/// and then applies the SummaryLinkFieldValue to a SummaryLinkField within a Page.
///
/// Pre-requisite:
/// This sample assumes that 'Content Approval' is applied to
/// the Pages document library containing the PublishingPage.
/// <param name="publishingPage">The page in which to create the summary links</param>
/// <param name="fieldName">The name of the SummaryLinkField</param>
public static void createFieldControlSummaryLinks(PublishingPage publishingPage, string fieldName)
{
// SummaryLinkFieldValue is the container for SummaryLinks and display configuration
// data.
SummaryLinkFieldValue summaryLinkValue = CreateSummaryLinks.createSummaryLinkValue();
if (publishingPage.ListItem.File.CheckOutStatus == SPFile.SPCheckOutStatus.None)
{
publishingPage.CheckOut();
}
// Replace the existing contents of the field with the newly created SummaryLinkValue
publishingPage.ListItem[fieldName] = summaryLinkValue;
publishingPage.Update();
publishingPage.CheckIn("Checking in summary link change");
publishingPage.ListItem.File.Publish("Publishing summary link change");
publishingPage.ListItem.File.Approve("Approving summary link change");
}
/// Creates SummaryLinks in a SummaryLinkWebPart within a PublishingPage
/// This sample creates group headers and summary links within a SummaryLinkFieldValue object
/// and then applies the SummaryLinkFieldValue to a SummaryLinkWebPart on a PublishingPage.
///
/// Pre-requisite:
/// This sample assumes that 'Content Approval' is applied to
/// the Pages document library containing the PublishingPage.
/// <param name="publishingPage">The page in which to create the summary links</param>
/// <param name="webRelativePageUrl">The web relative URL of the page</param>
/// <param name="webPartTitle">The Title of the web part</param>
public static void createWebPartSummaryLinks(PublishingPage publishingPage, string webRelativePageUrl, string webPartTitle)
{
SummaryLinkFieldValue summaryLinkValue = CreateSummaryLinks.createSummaryLinkValue();
if (publishingPage.ListItem.File.CheckOutStatus == SPFile.SPCheckOutStatus.None)
{
publishingPage.CheckOut();
}
SharePointWebParts.SPLimitedWebPartManager webPartManager =
publishingPage.ListItem.Web.GetLimitedWebPartManager(webRelativePageUrl,
System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
SharePointWebParts.SPLimitedWebPartCollection webParts = webPartManager.WebParts;
foreach (WebPart webPart in webParts)
{
SummaryLinkWebPart slwp = webPart as SummaryLinkWebPart;
if (slwp != null &&
string.CompareOrdinal(slwp.Title, webPartTitle) == 0)
{
// Replace the existing contents of the Web part with the newly created SummaryLinkValue
slwp.SummaryLinkValue = summaryLinkValue;
webPartManager.SaveChanges(slwp);
break;
}
}
publishingPage.Update();
publishingPage.CheckIn("Checking in summary link change");
publishingPage.ListItem.File.Publish("Publishing summary link change");
publishingPage.ListItem.File.Approve("Approving summary link change");
}
public static SummaryLinkFieldValue createSummaryLinkValue()
{
SummaryLinkFieldValue summaryLinkValue = new SummaryLinkFieldValue();
summaryLinkValue.DisplayColumns = 2;
summaryLinkValue.LinkStyle = "Bullets";
summaryLinkValue.GroupStyle = "Black";
SummaryLinkCollection summaryLinks = summaryLinkValue.SummaryLinks;
SummaryLink summaryLink;
// Add Groups and links.
// The link style set here must correspond to one of the template names in the XSL Item style
// This is not verified by the OM, but an incorrect template name results in the
// link not rendering.
// GroupA
summaryLink = summaryLinks.Add("GroupA");
summaryLink.IsGroupHeader = true;
summaryLink = summaryLinks.Add("Link1");
summaryLink.Description = "Description1";
summaryLink.Style = "Default";
summaryLink.ImageUrl = "http://www.live.com/live/1.100.7.337/img/wl_jewel.gif";
summaryLink.LinkUrl = "http://www.example.com/link1";
summaryLink = summaryLinks.Add("Link2");
summaryLink.Description = "Description2";
summaryLink.Style = "Default";
summaryLink.ImageUrl = "http://www.live.com/live/1.100.7.337/img/wl_jewel.gif";
summaryLink.LinkUrl = "http://www.example.com/link2";
// GroupB
summaryLink = summaryLinks.Add("GroupB");
summaryLink.IsGroupHeader = true;
summaryLink = summaryLinks.Add("Link3");
summaryLink.Description = "Description3";
summaryLink.Style = "Default";
summaryLink.ImageUrl = "http://www.live.com/live/1.100.7.337/img/wl_jewel.gif";
summaryLink.LinkUrl = "http://www.example.com/link3";
summaryLink.LinkToolTip = "Tooltip for link3";
return summaryLinkValue;
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Publishing
Imports Microsoft.SharePoint.Publishing.Fields
Imports Microsoft.SharePoint.Publishing.WebControls
Imports SharePointWebParts = Microsoft.SharePoint.WebPartPages
Imports System.Web.UI.WebControls.WebParts
Namespace SummaryLinkFieldTest
Friend NotInheritable Class CreateSummaryLinks
''' Creates SummaryLinks in a SummaryLinkField within a PublishingPage
''' This sample creates group headers and summary links within a SummaryLinkFieldValue object
''' and then applies the SummaryLinkFieldValue to a SummaryLinkField within a Page.
'''
''' Pre-requisite:
''' This sample assumes that 'Content Approval' is applied to
''' the Pages document library containing the PublishingPage.
''' <param name="publishingPage">The page in which to create the summary links</param>
''' <param name="fieldName">The name of the SummaryLinkField</param>
Private Sub New()
End Sub
Public Shared Sub createFieldControlSummaryLinks(ByVal publishingPage As PublishingPage, ByVal fieldName As String)
' SummaryLinkFieldValue is the container for SummaryLinks and display configuration
' data.
Dim summaryLinkValue As SummaryLinkFieldValue = CreateSummaryLinks.createSummaryLinkValue()
If publishingPage.ListItem.File.CheckOutStatus = SPFile.SPCheckOutStatus.None Then
publishingPage.CheckOut()
End If
' Replace the existing contents of the field with the newly created SummaryLinkValue
publishingPage.ListItem(fieldName) = summaryLinkValue
publishingPage.Update()
publishingPage.CheckIn("Checking in summary link change")
publishingPage.ListItem.File.Publish("Publishing summary link change")
publishingPage.ListItem.File.Approve("Approving summary link change")
End Sub
''' Creates SummaryLinks in a SummaryLinkWebPart within a PublishingPage
''' This sample creates group headers and summary links within a SummaryLinkFieldValue object
''' and then applies the SummaryLinkFieldValue to a SummaryLinkWebPart on a PublishingPage.
'''
''' Pre-requisite:
''' This sample assumes that 'Content Approval' is applied to
''' the Pages document library containing the PublishingPage.
''' <param name="publishingPage">The page in which to create the summary links</param>
''' <param name="webRelativePageUrl">The web relative URL of the page</param>
''' <param name="webPartTitle">The Title of the web part</param>
Public Shared Sub createWebPartSummaryLinks(ByVal publishingPage As PublishingPage, ByVal webRelativePageUrl As String, ByVal webPartTitle As String)
Dim summaryLinkValue As SummaryLinkFieldValue = CreateSummaryLinks.createSummaryLinkValue()
If publishingPage.ListItem.File.CheckOutStatus = SPFile.SPCheckOutStatus.None Then
publishingPage.CheckOut()
End If
Dim webPartManager As SharePointWebParts.SPLimitedWebPartManager = publishingPage.ListItem.Web.GetLimitedWebPartManager(webRelativePageUrl, System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)
Dim webParts As SharePointWebParts.SPLimitedWebPartCollection = webPartManager.WebParts
For Each webPart As WebPart In webParts
Dim slwp As SummaryLinkWebPart = TryCast(webPart, SummaryLinkWebPart)
If slwp IsNot Nothing AndAlso String.CompareOrdinal(slwp.Title, webPartTitle) = 0 Then
' Replace the existing contents of the Web part with the newly created SummaryLinkValue
slwp.SummaryLinkValue = summaryLinkValue
webPartManager.SaveChanges(slwp)
Exit For
End If
Next webPart
publishingPage.Update()
publishingPage.CheckIn("Checking in summary link change")
publishingPage.ListItem.File.Publish("Publishing summary link change")
publishingPage.ListItem.File.Approve("Approving summary link change")
End Sub
Public Shared Function createSummaryLinkValue() As SummaryLinkFieldValue
Dim summaryLinkValue As New SummaryLinkFieldValue()
summaryLinkValue.DisplayColumns = 2
summaryLinkValue.LinkStyle = "Bullets"
summaryLinkValue.GroupStyle = "Black"
Dim summaryLinks As SummaryLinkCollection = summaryLinkValue.SummaryLinks
Dim summaryLink As SummaryLink
' Add Groups and links.
' The link style set here must correspond to one of the template names in the XSL Item style
' This is not verified by the OM, but an incorrect template name results in the
' link not rendering.
' GroupA
summaryLink = summaryLinks.Add("GroupA")
summaryLink.IsGroupHeader = True
summaryLink = summaryLinks.Add("Link1")
summaryLink.Description = "Description1"
summaryLink.Style = "Default"
summaryLink.ImageUrl = "http://www.live.com/live/1.100.7.337/img/wl_jewel.gif"
summaryLink.LinkUrl = "http://www.example.com/link1"
summaryLink = summaryLinks.Add("Link2")
summaryLink.Description = "Description2"
summaryLink.Style = "Default"
summaryLink.ImageUrl = "http://www.live.com/live/1.100.7.337/img/wl_jewel.gif"
summaryLink.LinkUrl = "http://www.example.com/link2"
' GroupB
summaryLink = summaryLinks.Add("GroupB")
summaryLink.IsGroupHeader = True
summaryLink = summaryLinks.Add("Link3")
summaryLink.Description = "Description3"
summaryLink.Style = "Default"
summaryLink.ImageUrl = "http://www.live.com/live/1.100.7.337/img/wl_jewel.gif"
summaryLink.LinkUrl = "http://www.example.com/link3"
summaryLink.LinkToolTip = "Tooltip for link3"
Return summaryLinkValue
End Function
End Class
End Namespace
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.