/// <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);
        }
예제 #3
0
        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("");
            }
        }
예제 #4
0
        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);
            }
        }