/// <summary> /// Configures the specified property info. /// </summary> /// <param name="propertyInfo">The property info.</param> /// <param name="fieldConfiguration">The field configuration.</param> /// <returns>SitecoreFieldFieldValueConfiguration.</returns> public SitecoreFieldFieldValueConfiguration Configure(PropertyInfo propertyInfo, SitecoreFieldConfiguration fieldConfiguration) { var config = new SitecoreFieldFieldValueConfiguration(); config.FieldId = new ID(this.FieldId); config.FieldValue = this.FieldValue; return config; }
public void GetField_FieldContainsInvalidValidEnum_ThrowsException() { //Assign string fieldValue = "hello world"; var fieldId = Guid.NewGuid(); var item = Helpers.CreateFakeItem(fieldId, fieldValue); var field = item.Fields[new ID(fieldId)]; var config = new SitecoreFieldConfiguration(); config.PropertyInfo = typeof(Stub).GetProperty("Property"); var mapper = new SitecoreFieldEnumMapper(); //Act var result = (StubEnum)mapper.GetField(field, config, null); //Assert }
public void Setup_SubMapperIsAssigned() { //Assign var config = new SitecoreFieldConfiguration(); config.PropertyInfo = typeof(StubClass).GetProperty("IList"); var mapper = new SitecoreFieldIEnumerableMapper(); var subMapper = new SitecoreFieldDoubleMapper(); var args = new DataMapperResolverArgs(null, config); args.DataMappers = new[] { subMapper }; //Act mapper.Setup(args); //Assert Assert.AreEqual(subMapper, mapper.Mapper); }
public void CanHandle_IncorrectConfigMappedClass_ReturnsFalse() { //Assign var mapper = new SitecoreQueryMapper(null); var config = new SitecoreFieldConfiguration(); config.PropertyInfo = typeof(StubClass).GetProperty("StubMapped"); var context = Context.Create(Utilities.CreateStandardResolver()); context.Load(new OnDemandLoader <SitecoreTypeConfiguration>(typeof(StubClass))); //Act var result = mapper.CanHandle(config, context); //Assert Assert.IsFalse(result); }
public void SetField_FielNonRichText_ValueWrittenToField() { //Assign var expected = "<p>Test with <a href=\"~/link.aspx?_id=BFD7975DF42F41E19DDA9A38E971555F&_z=z\">link</a></p>"; using (Db database = new Db { new Sitecore.FakeDb.DbItem("TestItem") { new DbField(FieldName) { } } }) { var item = database.GetItem("/sitecore/content/TestItem"); var field = item.Fields[FieldName]; var mapper = new SitecoreFieldStringMapper(); var config = new SitecoreFieldConfiguration(); config.Setting = SitecoreFieldSettings.RichTextRaw; Sitecore.Context.Site = Sitecore.Configuration.Factory.GetSite("website"); using (new ItemEditing(item, true)) { field.Value = string.Empty; } //Act using (new ItemEditing(item, true)) { mapper.SetField(field, expected, config, null); } Sitecore.Context.Site = null; //Assert Assert.AreEqual(expected, field.Value); } }
public void GetField_RichTextSettingsIsRaw_StringIsReturnedWithoutEscaping() { //Assign var fieldValue = "<p>Test with <a href=\"~/link.aspx?_id=BFD7975DF42F41E19DDA9A38E971555F&_z=z\">link</a></p>"; using (Db database = new Db { new Sitecore.FakeDb.DbItem("TestItem") { new DbField(FieldName) { Value = fieldValue } } }) { var item = database.GetItem("/sitecore/content/TestItem"); var field = item.Fields[FieldName]; var mapper = new SitecoreFieldStringMapper(); var config = new SitecoreFieldConfiguration(); config.Setting = SitecoreFieldSettings.RichTextRaw; Sitecore.Context.Site = Sitecore.Configuration.Factory.GetSite("website"); using (new ItemEditing(item, true)) { field.Value = fieldValue; } //Act var result = mapper.GetField(field, config, null) as string; Sitecore.Context.Site = null; //Assert Assert.AreEqual(fieldValue, result); } }
/// <summary> /// Configures the specified property info. /// </summary> /// <param name="propertyInfo">The property info.</param> /// <param name="config">The config.</param> public void Configure(PropertyInfo propertyInfo, SitecoreFieldConfiguration config) { config.FieldName = this.FieldName; if (config.FieldName.IsNullOrEmpty()) { config.FieldName = propertyInfo.Name; } config.Setting = this.Setting; config.CodeFirst = this.CodeFirst; if (FieldId.IsNotNullOrEmpty()) { config.FieldId = new ID(this.FieldId); } config.FieldSource = this.FieldSource; config.FieldTitle = this.FieldTitle; config.FieldType = this.FieldType; config.CustomFieldType = this.CustomFieldType; config.IsShared = this.IsShared; config.IsUnversioned = this.IsUnversioned; config.SectionName = this.SectionName; config.Setting = this.Setting; config.FieldSortOrder = this.FieldSortOrder; config.SectionSortOrder = this.SectionSortOrder; config.ValidationErrorText = this.ValidationErrorText; config.ValidationRegularExpression = this.ValidationRegularExpression; config.IsRequired = this.IsRequired; config.UrlOptions = this.UrlOptions; //code first configuration var fieldFieldValues = propertyInfo.GetCustomAttributes(typeof(SitecoreFieldFieldValueAttribute), true).Cast <SitecoreFieldFieldValueAttribute>(); var ffvConfigs = fieldFieldValues.Select(x => x.Configure(propertyInfo, config)); config.FieldValueConfigs = ffvConfigs.ToList(); base.Configure(propertyInfo, config); }
public void GetField_FieldIsEmpty_RulesListContains0Rules() { //Assign var templateId = ID.NewID; var targetId = ID.NewID; var fieldName = "Field"; using (Db database = new Db { new DbTemplate(templateId) { { fieldName, "" } }, new Sitecore.FakeDb.DbItem("Target", targetId, templateId), }) { var fieldValue = ""; var item = database.GetItem("/sitecore/content/Target"); var field = item.Fields[fieldName]; var mapper = new SitecoreFieldRulesMapper(); var config = new SitecoreFieldConfiguration(); var context = (Context)null; config.PropertyInfo = typeof(StubClass).GetProperty("Property"); mapper.Setup(new DataMapperResolverArgs(context, config)); using (new ItemEditing(item, true)) { field.Value = fieldValue; } //Act var result = mapper.GetField(field, null, null) as RuleList <StubRuleContext>; //Assert Assert.AreEqual(0, result.Count); } }
public void GetField_FieldContainsEmptyString_ReturnsNull() { //Assign string fieldValue = string.Empty; var fieldId = Guid.NewGuid(); var item = Helpers.CreateFakeItem(fieldId, fieldValue); var field = item.Fields[new ID(fieldId)]; var config = new SitecoreFieldConfiguration(); config.PropertyInfo = typeof(Stub).GetProperty("Property"); var mapper = new SitecoreFieldNullableEnumMapper(); //Act var result = (StubEnum?)mapper.GetField(field, config, null); //Assert Assert.IsNull(result); }
public void GetField_FieldContainsEmptyString_ThowsMapperException() { //Assign string fieldValue = string.Empty; var item = Database.GetItem("/sitecore/content/Tests/DataMappers/SitecoreFieldEnumMapper/GetField"); var field = item.Fields[FieldName]; var config = new SitecoreFieldConfiguration(); config.PropertyInfo = typeof(Stub).GetProperty("Property"); var mapper = new SitecoreFieldEnumMapper(); using (new ItemEditing(item, true)) { field.Value = fieldValue; } //Act var result = (StubEnum)mapper.GetField(field, config, null); //Assert }
public void Setup_SubMapperMissing_ExceptionThrown() { //Assign var config = new SitecoreFieldConfiguration(); config.PropertyInfo = typeof(StubClass).GetProperty("IEnumerable"); var mapper = new SitecoreFieldIEnumerableMapper(); var subMapper = new SitecoreFieldDoubleMapper(); var args = new DataMapperResolverArgs(null, config); args.DataMappers = new[] { subMapper }; //Act Assert.Throws <MapperException>(() => { mapper.Setup(args); }); //Assert }
public void GetField_FieldContainsData_StringIsReturned() { //Assign var fieldValue = "hello world"; var item = Database.GetItem("/sitecore/content/Tests/DataMappers/SitecoreFieldStringMapper/GetField"); var field = item.Fields[FieldName]; var mapper = new SitecoreFieldStringMapper(); var config = new SitecoreFieldConfiguration(); using (new ItemEditing(item, true)) { field.Value = fieldValue; } //Act var result = mapper.GetField(field, config, null) as string; //Assert Assert.AreEqual(fieldValue, result); }
/// <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) { return(string.Empty); } if (config.Setting == SitecoreFieldSettings.RichTextRaw) { return(field.Value); } if (_notRichTextSet.Contains(field.ID.Guid)) { return(field.Value); } if (field.TypeKey == _richTextKey) { RenderFieldArgs renderFieldArgs = new RenderFieldArgs(); renderFieldArgs.Item = field.Item; renderFieldArgs.FieldName = field.Name; renderFieldArgs.DisableWebEdit = true; CorePipeline.Run("renderField", renderFieldArgs); return(renderFieldArgs.Result.FirstPart + renderFieldArgs.Result.LastPart); //FieldRenderer renderer = new FieldRenderer(); //renderer.Item = field.Item; //renderer.FieldName = field.Name; //renderer.Parameters = string.Empty; //renderer.DisableWebEditing = true; //return renderer.Render(); } _notRichTextSet.Add(field.ID.Guid); return(field.Value); }
public void GetField_FieldContainsValidEnumInteger_ReturnsEnum() { //Assign string fieldValue = "2"; StubEnum expected = StubEnum.Value2; var fieldId = Guid.NewGuid(); var item = Helpers.CreateFakeItem(fieldId, fieldValue); var field = item.Fields[new ID(fieldId)]; var config = new SitecoreFieldConfiguration(); config.PropertyInfo = typeof(Stub).GetProperty("Property"); var mapper = new SitecoreFieldEnumMapper(); //Act var result = (StubEnum)mapper.GetField(field, config, null); //Assert Assert.AreEqual(expected, result); }
public void SetFieldValue_NullPassed_ReturnsNull() { //Assign using (Db database = new Db { new DbItem("Target") }) { var item = database.GetItem("/sitecore/content/Target"); var mapper = new SitecoreFieldItemMapper(); var config = new SitecoreFieldConfiguration(); var context = Context.Create(Utilities.CreateStandardResolver()); var service = new SitecoreService(database.Database, context); var scContext = new SitecoreDataMappingContext(null, item, service); //Act var result = mapper.SetFieldValue(null, config, scContext); //Assert Assert.Null(result); } }
public void MapToCms_SetsValueByFieldName_FieldValueUpdated() { //Assign var fieldValue = "test value set"; var fieldName = "Field"; var database = Sitecore.Configuration.Factory.GetDatabase("master"); var item = database.GetItem("/sitecore/content/Tests/DataMappers/AbstractSitecoreFieldMapper/MapToCms"); var config = new SitecoreFieldConfiguration(); config.FieldName = fieldName; config.PropertyInfo = typeof(Stub).GetProperty("Property"); var mapper = new StubMapper(null); mapper.Setup(new DataMapperResolverArgs(null, config)); mapper.Value = fieldValue; var context = new SitecoreDataMappingContext(new Stub(), item, null); using (new SecurityDisabler()) { item.Editing.BeginEdit(); item[fieldName] = string.Empty; item.Editing.EndEdit(); } //Act using (new SecurityDisabler()) { item.Editing.BeginEdit(); mapper.MapToCms(context); item.Editing.EndEdit(); } //Assert var itemAfter = database.GetItem("/sitecore/content/Tests/DataMappers/AbstractSitecoreFieldMapper/MapToCms"); Assert.AreEqual(mapper.Value, itemAfter[fieldName]); }
/// <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 File Item field.Formatted(newId)</exception> public override void SetField(Field field, object value, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { File file = value as File; var item = field.Item; FileField fileField = new FileField(field); if (file == null) { fileField.Clear(); return; } if (fileField.MediaID.Guid != file.Id) { if (file.Id == Guid.Empty) { ItemLink link = new ItemLink(item.Database.Name, item.ID, fileField.InnerField.ID, fileField.MediaItem.Database.Name, fileField.MediaID, fileField.MediaItem.Paths.FullPath); fileField.RemoveLink(link); } else { ID newId = new ID(file.Id); Item target = item.Database.GetItem(newId); if (target != null) { fileField.MediaID = newId; ItemLink link = new ItemLink(item.Database.Name, item.ID, fileField.InnerField.ID, target.Database.Name, target.ID, target.Paths.FullPath); fileField.UpdateLink(link); } else { throw new MapperException("No item with ID {0}. Can not update File Item field".Formatted(newId)); } } } }
public void SetField_ForceRenderFieldPipeline_ThrowsException() { //Assign var fieldValue = "<p>hello world</p>"; var expected = "<p>hello world</p>"; using (Db database = new Db { new Sitecore.FakeDb.DbItem("TestItem") { new DbField(FieldName) { Value = fieldValue } } }) { var item = database.GetItem("/sitecore/content/TestItem"); var field = item.Fields[FieldName]; var mapper = new SitecoreFieldStringMapper(); var config = new SitecoreFieldConfiguration(); config.Setting = SitecoreFieldSettings.ForceRenderField; config.PropertyInfo = new FakePropertyInfo(typeof(string), "String", typeof(StubClass)); using (new ItemEditing(item, true)) { field.Value = fieldValue; } //Act Assert.Throws <NotSupportedException>(() => mapper.SetField(field, fieldValue, config, null)); //Assert } }
public override object GetField(Field field, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { ImageField scImg = new ImageField(field); AdvanceImageField img = new AdvanceImageField(); var xml = new XmlDocument(); xml.LoadXml(scImg.Value); var id = xml.DocumentElement.GetAttribute("mediaid"); var cropx = xml.DocumentElement.HasAttribute("cropx") ? xml.DocumentElement.GetAttribute("cropx") : string.Empty; var cropy = xml.DocumentElement.HasAttribute("cropy") ? xml.DocumentElement.GetAttribute("cropy") : string.Empty; var focusx = xml.DocumentElement.HasAttribute("focusx") ? xml.DocumentElement.GetAttribute("focusx") : string.Empty; var focusy = xml.DocumentElement.HasAttribute("focusy") ? xml.DocumentElement.GetAttribute("focusy") : string.Empty; float cx, cy, fx, fy; float.TryParse(cropx, out cx); float.TryParse(cropy, out cy); float.TryParse(focusx, out fx); float.TryParse(focusy, out fy); img.CropX = cx; img.CropY = cy; img.FocusX = fx; img.FocusY = fy; img.Alt = scImg.Alt; img.Border = scImg.Border; img.Class = scImg.Class; img.Width = Convert.ToInt32(string.IsNullOrEmpty(scImg.Width) ? "0" : scImg.Width); img.Height = Convert.ToInt32(string.IsNullOrEmpty(scImg.Height) ? "0" : scImg.Height); img.HSpace = Convert.ToInt32(string.IsNullOrEmpty(scImg.HSpace) ? "0" : scImg.HSpace); img.Language = scImg.MediaLanguage; img.MediaId = scImg.MediaID.ToGuid(); img.Src = MediaManager.GetMediaUrl(scImg.MediaItem); img.VSpace = Convert.ToInt32(string.IsNullOrEmpty(scImg.VSpace) ? "0" : scImg.VSpace); return(img); }
public void SetField_ObjectIsInt_ThrowsException() { //Assign string objectValue = "hello world"; var fieldId = Guid.NewGuid(); var item = Helpers.CreateFakeItem(fieldId, string.Empty); var field = item.Fields[new ID(fieldId)]; var config = new SitecoreFieldConfiguration(); config.PropertyInfo = typeof(Stub).GetProperty("Property"); var mapper = new SitecoreFieldNullableEnumMapper(); //Act mapper.SetField(field, objectValue, config, null); //Assert }
/// <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 virtual object GetField(Field field, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { var fieldValue = field.Value; try { return(GetFieldValue(fieldValue, config, context)); } catch (Exception ex) { try { throw new MapperException( "Failed to map field {0} with value {1}".Formatted(field.Name, fieldValue), ex); } catch (Exception ex1) { //This is done to support NCRUNCH throw new MapperException("Failed to map field {0} with value {1}".Formatted(field.ID, fieldValue), ex); } } }
public override object GetField(Field field, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { var value = (string)base.GetField(field, config, context); var guid = field.ID.Guid; if (IsMultiLineDictionary.ContainsKey(guid) && IsMultiLineDictionary[guid]) { return(FixMultiLineFieldLineBreaks(value)); } var isMultiLine = field.TypeKey == "multi-line text"; IsMultiLineDictionary.TryAdd(guid, isMultiLine); if (!isMultiLine) { return(value); } return(FixMultiLineFieldLineBreaks(value)); }
public void SetFieldValue_ItemPassed_ReturnsId() { //Assign using (Db database = new Db { new DbItem("Target") }) { var item = database.GetItem("/sitecore/content/Target"); var mapper = new SitecoreFieldItemMapper(); var config = new SitecoreFieldConfiguration(); var context = Context.Create(Utilities.CreateStandardResolver()); var service = new SitecoreService(database.Database, context); var options = new GetItemOptionsParams(); var scContext = new SitecoreDataMappingContext(null, item, service, options); //Act var result = mapper.SetFieldValue(item, config, scContext); //Assert Assert.NotNull(result); Assert.AreEqual(item.ID.ToString(), result); } }
public void GetField_FieldContainsData_StringIsReturned() { //Assign var fieldValue = "<p>hello world</p>"; using (Db database = new Db { new Sitecore.FakeDb.DbItem("TestItem") { new DbField(FieldName) { Value = fieldValue } } }) { var item = database.GetItem("/sitecore/content/TestItem"); var field = item.Fields[FieldName]; var mapper = new SitecoreFieldStringMapper(); var config = new SitecoreFieldConfiguration(); using (new ItemEditing(item, true)) { field.Value = fieldValue; } var context = new SitecoreDataMappingContext(null, item, null, new GetItemByPathOptions()); //Act var result = mapper.GetField(field, config, context) as string; //Assert Assert.AreEqual(fieldValue, result); } }
public void GetField_FieldContainsValidEnumInteger_ReturnsEnum() { //Assign string fieldValue = "2"; StubEnum expected = StubEnum.Value2; var item = Database.GetItem("/sitecore/content/Tests/DataMappers/SitecoreFieldEnumMapper/GetField"); var field = item.Fields[FieldName]; var config = new SitecoreFieldConfiguration(); config.PropertyInfo = typeof(Stub).GetProperty("Property"); var mapper = new SitecoreFieldEnumMapper(); using (new ItemEditing(item, true)) { field.Value = fieldValue; } //Act var result = (StubEnum)mapper.GetField(field, config, null); //Assert Assert.AreEqual(expected, result); }
/// <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> public virtual void SetField(Field field, object value, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { field.Value = SetFieldValue(value, config, context); }
/// <summary> /// Gets the field value. /// </summary> /// <param name="fieldValue">The field value.</param> /// <param name="config">The config.</param> /// <param name="context">The context.</param> /// <returns> /// System.Object. /// </returns> /// <exception cref="System.NotImplementedException"></exception> public override object GetFieldValue(string fieldValue, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { //this will only be used by the SitecoreFieldIEnumerableMapper return(fieldValue); }
/// <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="System.NotSupportedException">It is not possible to save data from a rich text field when the data isn't raw. /// + Set the SitecoreFieldAttribute setting property to SitecoreFieldSettings.RichTextRaw for property {0} on type {1}.Formatted(config.PropertyInfo.Name, config.PropertyInfo.ReflectedType.FullName)</exception> public override void SetField(Sitecore.Data.Fields.Field field, object value, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { if (field == null) { return; } if (config.Setting == SitecoreFieldSettings.ForceRenderField) { throw new NotSupportedException("It is not possible to save data from a field when the data isn't raw." + "In the SitecoreFieldAttribute remove the SitecoreFieldSettings.ForceRenderField valuea for property {0} on type {1}".Formatted(config.PropertyInfo.Name, config.PropertyInfo.ReflectedType.FullName)); } if (field.Type.StartsWith("Rich Text") && config.Setting != SitecoreFieldSettings.RichTextRaw) { throw new NotSupportedException("It is not possible to save data from a rich text field when the data isn't raw." + "Set the SitecoreFieldAttribute setting property to SitecoreFieldSettings.RichTextRaw for property {0} on type {1}".Formatted(config.PropertyInfo.Name, config.PropertyInfo.ReflectedType.FullName)); } field.Value = value != null?value.ToString() : null; }
/// <summary> /// Gets the field value. /// </summary> /// <param name="fieldValue">The field value.</param> /// <param name="config">The config.</param> /// <param name="context">The context.</param> /// <returns>System.Object.</returns> public override object GetFieldValue(string fieldValue, SitecoreFieldConfiguration config, SitecoreDataMappingContext context) { Guid guid; return(Guid.TryParse(fieldValue, out guid) ? context.Service.Database.GetItem(new ID(guid)) : null); }
/// <summary> /// Configures the specified property info. /// </summary> /// <param name="propertyInfo">The property info.</param> /// <param name="config">The config.</param> public void Configure(PropertyInfo propertyInfo, SitecoreFieldConfiguration config) { config.FieldName = this.FieldName; if (config.FieldName.IsNullOrEmpty()) config.FieldName = propertyInfo.Name; config.Setting = this.Setting; config.CodeFirst = this.CodeFirst; if(FieldId.IsNotNullOrEmpty()) config.FieldId = new ID(this.FieldId); config.FieldSource = this.FieldSource; config.FieldTitle = this.FieldTitle; config.FieldType = this.FieldType; config.CustomFieldType = this.CustomFieldType; config.IsShared = this.IsShared; config.IsUnversioned = this.IsUnversioned; config.SectionName = this.SectionName; config.Setting = this.Setting; config.FieldSortOrder = this.FieldSortOrder; config.SectionSortOrder = this.SectionSortOrder; config.ValidationErrorText = this.ValidationErrorText; config.ValidationRegularExpression = this.ValidationRegularExpression; config.IsRequired = this.IsRequired; config.UrlOptions = this.UrlOptions; //code first configuration var fieldFieldValues = propertyInfo.GetCustomAttributes(typeof(SitecoreFieldFieldValueAttribute), true).Cast<SitecoreFieldFieldValueAttribute>(); var ffvConfigs = fieldFieldValues.Select(x => x.Configure(propertyInfo, config)); config.FieldValueConfigs = ffvConfigs.ToList(); base.Configure(propertyInfo, config); }
/// <summary> /// Configures the specified property info. /// </summary> /// <param name="propertyInfo">The property info.</param> /// <returns>AbstractPropertyConfiguration.</returns> public override AbstractPropertyConfiguration Configure(PropertyInfo propertyInfo) { var config = new SitecoreFieldConfiguration(); Configure(propertyInfo, config); return config; }
/// <summary> /// Sets the field value. /// </summary> /// <param name="value">The value.</param> /// <param name="config">The config.</param> /// <param name="context">The context.</param> /// <returns>System.String.</returns> public abstract string SetFieldValue(object value, SitecoreFieldConfiguration config, SitecoreDataMappingContext context);
/// <summary> /// Gets the field value. /// </summary> /// <param name="fieldValue">The field value.</param> /// <param name="config">The config.</param> /// <param name="context">The context.</param> /// <returns>System.Object.</returns> public abstract object GetFieldValue(string fieldValue, SitecoreFieldConfiguration config, SitecoreDataMappingContext context);
/// <summary> /// Configures the specified property info. /// </summary> /// <param name="propertyInfo">The property info.</param> /// <param name="config">The config.</param> public void Configure(PropertyInfo propertyInfo, SitecoreFieldConfiguration config) { config.FieldName = this.FieldName; if (config.FieldName.IsNullOrEmpty()) config.FieldName = propertyInfo.Name; config.Setting = this.Setting; config.CodeFirst = this.CodeFirst; if(FieldId.IsNotNullOrEmpty()) config.FieldId = new ID(this.FieldId); config.FieldSource = this.FieldSource; config.FieldTitle = this.FieldTitle; config.FieldType = this.FieldType; config.CustomFieldType = this.CustomFieldType; config.IsShared = this.IsShared; config.IsUnversioned = this.IsUnversioned; config.SectionName = this.SectionName; config.Setting = this.Setting; config.FieldSortOrder = this.FieldSortOrder; config.SectionSortOrder = this.SectionSortOrder; config.ValidationErrorText = this.ValidationErrorText; config.ValidationRegularExpression = this.ValidationRegularExpression; config.IsRequired = this.IsRequired; config.UrlOptions = this.UrlOptions; //code first configuration var fieldFieldValues = propertyInfo.GetCustomAttributes(typeof(SitecoreFieldFieldValueAttribute), true).Cast<SitecoreFieldFieldValueAttribute>(); ////fix: fieldfieldvalues are not passed var interfaceFromProperty = propertyInfo.DeclaringType.GetInterfaces().FirstOrDefault(inter => inter.GetProperty(propertyInfo.Name) != null); if (interfaceFromProperty != null) { fieldFieldValues = interfaceFromProperty.GetProperty(propertyInfo.Name).GetCustomAttributes(typeof(SitecoreFieldFieldValueAttribute), true).Cast<SitecoreFieldFieldValueAttribute>(); ; } var ffvConfigs = fieldFieldValues.Select(x => x.Configure(propertyInfo, config)); config.FieldValueConfigs = ffvConfigs.ToList(); base.Configure(propertyInfo, config); }