/// <summary> /// Sets the field. /// </summary> /// <param name="field">The field.</param> /// <param name="value">The value.</param> /// <param name="config">The config.</param> /// <param name="context">The context.</param> /// <exception cref="Glass.Mapper.MapperException"> /// No item with ID {0}. Can not update Link linkField.Formatted(newId) /// or /// No item with ID {0}. Can not update Link linkField.Formatted(newId) /// </exception> public override void SetField(Field field, object value, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { Link link = value as Link; if (field == null) { return; } Guid fieldGuid = field.ID.Guid; // shortest route - we know whether or not its rich text var isInternalLink = _isInternalLinkFieldDictionary.GetOrAdd(fieldGuid, (id) => field.TypeKey == InternalLinkKey); if (isInternalLink) { InternalLinkField internalLinkField = new Sitecore.Data.Fields.InternalLinkField(field); MapToLinkField(link, internalLinkField, config); } else { LinkField linkField = new LinkField(field); if (link == null || link.Type == LinkType.NotSet) { linkField.Clear(); return; } MapToLinkField(link, linkField, config); } }
/// <summary> /// Gets the field. /// </summary> /// <param name="field">The field.</param> /// <param name="config">The config.</param> /// <param name="context">The context.</param> /// <returns>System.Object.</returns> public override object GetField(Sitecore.Data.Fields.Field field, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { if (field == null || field.Value.Trim().IsNullOrEmpty()) { return(null); } Guid fieldGuid = field.ID.Guid; // shortest route - we know whether or not its rich text var isInternalLink = _isInternalLinkFieldDictionary.GetOrAdd(fieldGuid, (id) => field.TypeKey == InternalLinkKey); Link link = new Link(); if (isInternalLink) { InternalLinkField internalLinkField = new Sitecore.Data.Fields.InternalLinkField(field); MapToLinkModel(link, internalLinkField, config); } else { LinkField linkField = new LinkField(field); MapToLinkModel(link, linkField, config); } return(link); }
static public string GetInternalLinkId(this Item item, ID fieldId) { Sitecore.Data.Fields.InternalLinkField ilf = GetField(item, fieldId); if (ilf != null && ilf.TargetItem != null) { return(ilf.TargetItem.ID.ToString()); } else { return(""); } }
static public Item GetInternalLinkItem(this Item item, ID fieldId) { Sitecore.Data.Fields.InternalLinkField ilf = GetField(item, fieldId); if (ilf != null && ilf.TargetItem != null) { return(ilf.TargetItem); } else { return(null); } }