src/DeloitteDigital.Atlas/FieldRendering/LinkFieldRenderingString.cs (74 lines of code) (raw):

using Microsoft.Practices.ServiceLocation; using Sitecore.Data.Fields; using Sitecore.Data.Items; namespace DeloitteDigital.Atlas.FieldRendering { /// <summary> /// The link field rendering string. /// </summary> public class LinkFieldRenderingString : FieldRenderingString, ILinkFieldRenderingString { /// <summary> /// Initializes a new instance of the LinkFieldRenderingString class /// </summary> /// <param name="item">Sitecore item</param> /// <param name="fieldName">Field name</param> public LinkFieldRenderingString(Item item, string fieldName) : base(item, fieldName) { this.LinkField = this.Item.Fields[this.FieldName]; } /// <summary> /// Gets or sets the link field. /// </summary> public LinkField LinkField { get; set; } /// <summary> /// Gets the URL only /// </summary> public string Url { get { return this.LinkField == null ? string.Empty : this.LinkField.GetFriendlyUrl(); } } /// <summary> /// Gets the target page title /// </summary> public string TargetPageTitle { get { if (this.LinkField == null || this.LinkField.TargetItem == null) { return string.Empty; } return string.IsNullOrEmpty(this.LinkField.Text) ? this.LinkField.TargetItem.DisplayName : this.LinkField.Text; } } /// <summary> /// Gets the target page title /// </summary> public string Target { get { if (this.LinkField == null) { return string.Empty; } return this.LinkField.Target; } } /// <summary> /// Gets the link title /// </summary> public string Title { get { if (this.LinkField == null) { return string.Empty; } return this.LinkField.Title; } } /// <summary> /// Gets the link text /// </summary> public string Text { get { if (this.LinkField == null) { return string.Empty; } return this.LinkField.Text; } } public string Class { get { return LinkField.Class; } } public string Description { get { return LinkField.Text; } } } }