Exemplo n.º 1
0
 public static void SetItemData(object target, Type targetType, Item item, bool isLazyLoad)
 {
     foreach (var property in targetType.GetProperties())
     {
         if (property == null || string.IsNullOrEmpty(property.Name) || !property.CanWrite)
         {
             continue;
         }
         SitecoreItemFieldAttribute attribute = (SitecoreItemFieldAttribute)property.GetCustomAttribute(_types[DataTypes.SitecoreItemFieldAttribute]);
         if (attribute == null)
         {
             SitecoreItemPropertyAttribute propAttribute = (SitecoreItemPropertyAttribute)property.GetCustomAttribute(_types[DataTypes.SitecoreItemPropertyAttribute]);
             if (propAttribute == null)
             {
                 SitecoreItemAttribute itemAttribute = (SitecoreItemAttribute)property.GetCustomAttribute(_types[DataTypes.SitecoreItemAttribute]);
                 if (itemAttribute != null)
                 {
                     property.SetValue(target, item);
                 }
             }
             else
             {
                 property.SetValue(target, GetSitecoreItemPropertyValue(property.PropertyType, item, propAttribute));
             }
         }
         else
         {
             property.SetValue(target, GetSitecoreItemFieldValue(property.PropertyType, item, attribute, isLazyLoad));
         }
     }
 }
Exemplo n.º 2
0
        public static void SetFieldValueFromDatabase(object target, bool isLazyLoad)
        {
            List <PropertyInfo> properties       = target.GetType().GetProperties().ToList();
            PropertyInfo        uniqueIdProperty = properties.FirstOrDefault(property =>
            {
                IndexFieldAttribute attribute = property.GetCustomAttributes <IndexFieldAttribute>().FirstOrDefault(attr => attr.IndexFieldName == BuiltinFields.UniqueId);
                return(attribute != null);
            });

            if (uniqueIdProperty != null)
            {
                object uniqueIdValue = uniqueIdProperty.GetValue(target);
                if (uniqueIdValue.GetType() == typeof(ItemUri))
                {
                    ItemUri uri         = (ItemUri)uniqueIdValue;
                    Item    contextItem = null;
                    if (uri != null && (contextItem = Database.GetItem(uri)) != null)
                    {
                        properties.ForEach(property =>
                        {
                            if (property != null && property.GetValue(target) == null && !string.IsNullOrEmpty(property.Name) && property.CustomAttributes.Any() && property.CanWrite)
                            {
                                SitecoreItemFieldAttribute attribute        = property.GetCustomAttribute <SitecoreItemFieldAttribute>();
                                SitecoreItemPropertyAttribute propAttribute = property.GetCustomAttribute <SitecoreItemPropertyAttribute>();
                                SitecoreItemAttribute itemAttribute         = property.GetCustomAttribute <SitecoreItemAttribute>();
                                if (attribute != null)
                                {
                                    property.SetValue(target, GetSitecoreItemFieldValue(property.PropertyType, contextItem, attribute, isLazyLoad));
                                }
                                else if (propAttribute != null)
                                {
                                    property.SetValue(target, GetSitecoreItemPropertyValue(property.PropertyType, contextItem, propAttribute));
                                }
                                else if (itemAttribute != null)
                                {
                                    property.SetValue(target, contextItem);
                                }
                            }
                        });
                    }
                }
            }
        }
Exemplo n.º 3
0
        private static object GetSitecoreItemPropertyValue(Type propertyType, Item item, SitecoreItemPropertyAttribute attribute)
        {
            object value = null;

            switch (attribute.ItemInfoType)
            {
            case SitecoreItemInfo.Id:
                value = item.ID;
                break;

            case SitecoreItemInfo.DisplayName:
                value = item.DisplayName;
                break;

            case SitecoreItemInfo.FullPath:
                value = item.Paths.FullPath;
                break;

            case SitecoreItemInfo.Language:
                value = item.Language;
                break;

            case SitecoreItemInfo.Name:
                value = item.Name;
                break;

            case SitecoreItemInfo.Path:
                value = item.Paths.Path;
                break;

            case SitecoreItemInfo.TemplateId:
                value = item.TemplateID;
                break;

            case SitecoreItemInfo.TemplateName:
                value = item.TemplateName;
                break;

            case SitecoreItemInfo.Version:
                value = item.Version;
                break;

            case SitecoreItemInfo.HasLayout:
                value = item.Visualization.Layout != null;
                break;

            case SitecoreItemInfo.Uri:
                value = item.Uri;
                break;

            case SitecoreItemInfo.Url:
                value = LinkManager.GetItemUrl(item, LinkManager.GetDefaultUrlOptions());
                break;
            }
            return(value);
        }