Example #1
0
        public void ChangeTypeTo <T>() where T : PropertyData
        {
            if (pageDefinition.IsNull())
            {
                return;
            }

            PageDefinitionType newType = GetPageDefinitionType <T>();

            if (newType.IsNull())
            {
                log.WarnFormat(
                    "Tried to change type of page definition named {0} associated with page type with id "
                    + "{1} but was unable to find a page definition type for the new type ({2}).",
                    pageDefinition.Name,
                    pageDefinition.PageTypeID,
                    typeof(T).Name);
                return;
            }

            log.DebugFormat(
                "Changing type of page definition named {0} associated with page type with id {1}"
                + " from type {2} to type {3}.",
                pageDefinition.Name,
                pageDefinition.PageTypeID,
                pageDefinition.Type.Name,
                newType.Name);
            pageDefinition.Type = newType;
            context.PageDefinitionRepository.Save(pageDefinition);
        }
Example #2
0
        public virtual PropertyDefinitionType MapType(PageDefinitionType pageDefinitionType)
        {
            // Replace types that has a Default Backing Types mapping with mapped type
            PropertyDefinitionType mapped;

            if (!string.IsNullOrEmpty(pageDefinitionType.TypeName) && DefaultTypeMapping.TryGetValue(pageDefinitionType.TypeName, out mapped))
            {
                mapped = mapped.Copy();
            }
            else
            {
                // All DataTypes have a mapping
                mapped = DefaultTypeMapping[pageDefinitionType.DataType].Copy();

                if (!string.IsNullOrEmpty(pageDefinitionType.TypeName))
                {
                    mapped.BackingTypeName = pageDefinitionType.TypeName;
                    // Any previously set UIHint will applies to the base type, we want to ensure that we are using legacy mode here!
                    mapped.UIHint = _options.ForceLegacyPropertyWrapper ? LegacyWrapperUIHint : null;
                }
            }

            Type nullable;

            if (_options.UseNullableValueTypes && mapped.Type != null && NullableMapping.TryGetValue(mapped.Type, out nullable))
            {
                mapped.Type = nullable;
            }

            return(mapped);
        }
Example #3
0
        public static void AddExtensionPageProperty(PageType pageType)
        {
            if (pageType.Definitions.Find(def => def.Name == "ExtensionPageProperty") == null)
            {
                if (pageType.Definitions.Find(def => def.Name == "ExtensionPageProperty") == null)
                {
                    var item = new PageDefinition();
                    item.PageTypeID       = pageType.ID;
                    item.Name             = "ExtensionPageProperty";
                    item.EditCaption      = "ExtensionPageProperty";
                    item.HelpText         = "Specialized For Extension Added By Extension (Do not remove)";
                    item.DefaultValueType = DefaultValueType.None;
                    item.DefaultValue     = "";
                    item.Type             = PageTypeManager.ExtensionPageDefinitionType;
                    item.ID                 = 0;
                    item.Searchable         = true;
                    item.Tab                = PageTypeManager.LoadExtensionTab();
                    item.DisplayEditUI      = true;
                    item.LanguageSpecific   = true;
                    item.LongStringSettings = 0;
                    item.Save();
                    item.ClearCache();
                    pageType.Definitions.Add(item);
                }
            }

            PageDefinitionType.ClearCache();
        }
Example #4
0
        public static void AddContentAreaProperty(PageType pageType, string name, string description)
        {
            Predicate <PageDefinition> match = null;

            if (pageType.Definitions.Find(def => def.Name == name) == null)
            {
                match = delegate(PageDefinition def)
                {
                    return(def.Name == name);
                };

                if (pageType.Definitions.Find(match) == null)
                {
                    var item = new PageDefinition();
                    item.PageTypeID       = pageType.ID;
                    item.Name             = name;
                    item.EditCaption      = name;
                    item.HelpText         = description;
                    item.DefaultValueType = DefaultValueType.None;
                    item.DefaultValue     = "";
                    item.Type             = PageTypeManager.ContentAreaPropertyType;
                    item.ID                 = 0;
                    item.Searchable         = true;
                    item.Tab                = PageTypeManager.LoadExtensionTab();
                    item.DisplayEditUI      = false;
                    item.LanguageSpecific   = false;
                    item.LongStringSettings = 0;
                    item.Save();
                    item.ClearCache();
                    pageType.Definitions.Add(item);
                    PageDefinitionType.ClearCache();
                }
            }
        }
Example #5
0
        public void MapType_WhenTypeNameIsEmpty_ShouldReturnMappedDataType()
        {
            var subject        = CreateSubject();
            var definitionType = new PageDefinitionType {
                DataType = "String"
            };

            var propertyType = subject.MapType(definitionType);

            Assert.AreEqual(typeof(string), propertyType.Type);
        }
Example #6
0
        public void MapType_WhenTypeNameHasMapping_ShouldReturnMappedTypeName()
        {
            var subject        = CreateSubject();
            var definitionType = new PageDefinitionType {
                DataType = "String", TypeName = "EPiServer.SpecializedProperties.PropertyImageUrl"
            };

            var propertyType = subject.MapType(definitionType);

            Assert.AreEqual("EPiServer.Url", propertyType.TypeName);
        }
Example #7
0
        public void MapType_WhenTypeNameHasNoMapping_ShouldReturnTypeAsBackingType()
        {
            var subject        = CreateSubject();
            var definitionType = new PageDefinitionType {
                DataType = "String", TypeName = "MyCustom.PropertyImageUrl"
            };

            var propertyType = subject.MapType(definitionType);

            Assert.AreEqual(definitionType.TypeName, propertyType.BackingTypeName);
        }
Example #8
0
        public void MapType_WhenDataTypeIsTimeSpanAndUseNullableValueTypesIsSet_ShouldReturnNullableTimeSpan()
        {
            var subject = CreateSubject(new OptionsFake {
                UseNullableValueTypes = true
            });
            var definitionType = new PageDefinitionType {
                TypeName = "EPiServer.SpecializedProperties.PropertyTimeSpan"
            };

            var propertyType = subject.MapType(definitionType);

            Assert.AreEqual(typeof(TimeSpan?), propertyType.Type);
        }
Example #9
0
        public void MapType_WhenTypeNameHasNoMappingAnOptionIsNotSet_ShouldSetUIHintToNull()
        {
            var subject = CreateSubject(new OptionsFake {
                ForceLegacyPropertyWrapper = false
            });
            var definitionType = new PageDefinitionType {
                DataType = "String", TypeName = "MyCustom.PropertyImageUrl"
            };

            var propertyType = subject.MapType(definitionType);

            Assert.IsNull(propertyType.UIHint);
        }
Example #10
0
        public void MapType_WhenDataTypeIsBooleanAndUseNullableValueTypesIsSet_ShouldReturnBoolean()
        {
            var subject = CreateSubject(new OptionsFake {
                UseNullableValueTypes = true
            });
            var definitionType = new PageDefinitionType {
                DataType = "Boolean"
            };

            var propertyType = subject.MapType(definitionType);

            Assert.AreEqual(typeof(bool), propertyType.Type);
        }
Example #11
0
        public void MapType_WhenDataTypeIsFloatAndUseNullableValueTypesIsSet_ShouldReturnNullableDouble()
        {
            var subject = CreateSubject(new OptionsFake {
                UseNullableValueTypes = true
            });
            var definitionType = new PageDefinitionType {
                DataType = "FloatNumber"
            };

            var propertyType = subject.MapType(definitionType);

            Assert.AreEqual(typeof(double?), propertyType.Type);
        }
        public void GivenPageTypePropertyDefinitionWithNativeType_GetPageDefinitionType_ReturnsCorrectPageDefinitionType()
        {
            PageTypePropertyDefinition definition = PageTypePropertyUpdaterTestsUtility.CreatePageTypePropertyDefinition();

            definition.PageTypePropertyAttribute.Type = typeof(PropertyString);
            MockRepository            fakes       = new MockRepository();
            PageDefinitionTypeFactory fakeFactory = fakes.Stub <PageDefinitionTypeFactory>();
            PageDefinitionTypeMapper  mapper      = new PageDefinitionTypeMapper(fakeFactory);
            int nativeTypeID = mapper.GetNativeTypeID(definition.PageTypePropertyAttribute.Type);
            PageDefinitionType pageDefinitionTypeFromFactory = new PageDefinitionType(1, PropertyDataType.String, TestValueUtility.CreateRandomString());

            fakeFactory.Stub(factory => factory.GetPageDefinitionType(nativeTypeID)).Return(pageDefinitionTypeFromFactory);
            fakeFactory.Replay();

            PageDefinitionType returnedPageDefinitionType = mapper.GetPageDefinitionType(definition);

            Assert.Equal <PageDefinitionType>(pageDefinitionTypeFromFactory, returnedPageDefinitionType);
        }
Example #13
0
        public void GivenPageTypePropertyDefinitionWithNonNativeType_GetPageDefinitionType_ReturnsCorrectPageDefinitionType()
        {
            PageTypePropertyDefinition definition = PageDefinitionSynchronizationEngineTestsUtility.CreatePageTypePropertyDefinition();

            definition.PageTypePropertyAttribute.Type = typeof(PropertyXhtmlString);
            MockRepository fakes = new MockRepository();
            PageDefinitionTypeRepository fakeRepository = fakes.Stub <PageDefinitionTypeRepository>();
            PageDefinitionTypeMapper     mapper         = new PageDefinitionTypeMapper(fakeRepository, new NativePageDefinitionsMap());
            PageDefinitionType           pageDefinitionTypeFromFactory = new PageDefinitionType(1, PropertyDataType.String, TestValueUtility.CreateRandomString());
            string typeName     = definition.PageTypePropertyAttribute.Type.FullName;
            string assemblyName = definition.PageTypePropertyAttribute.Type.Assembly.GetName().Name;

            fakeRepository.Stub(factory => factory.GetPageDefinitionType(typeName, assemblyName)).Return(pageDefinitionTypeFromFactory);
            fakeRepository.Replay();

            PageDefinitionType returnedPageDefinitionType = mapper.GetPageDefinitionType(definition);

            Assert.Equal <PageDefinitionType>(pageDefinitionTypeFromFactory, returnedPageDefinitionType);
        }
Example #14
0
        public void GivenPageTypePropertyDefinition_CreateNewPageDefinition_ReturnsPageDefinitionWithCorrectType2()
        {
            PageDefinitionType expectedPageDefintionType = new PageDefinitionType(
                1, PropertyDataType.String, TestValueUtility.CreateRandomString());

            PageTypePropertyDefinition pageTypePropertyDefinition = PageTypePropertyUpdaterTestsUtility.CreatePageTypePropertyDefinition();
            PageDefinition             pageDefinition             = new PageDefinition();
            MockRepository             fakes = new MockRepository();
            PageTypePropertyUpdater    pageTypePropertyUpdater = PageTypePropertyUpdaterFactory.PartialMock(fakes);

            pageTypePropertyUpdater.Stub(
                utility => utility.GetPageDefinitionType(pageTypePropertyDefinition)
                ).Return(expectedPageDefintionType);
            pageTypePropertyUpdater.Replay();

            pageTypePropertyUpdater.SetPageDefinitionType(pageDefinition, pageTypePropertyDefinition);

            Assert.Equal <PageDefinitionType>(expectedPageDefintionType, pageDefinition.Type);
        }
        public void Map_ShouldFilterOutComposerSystemProperties()
        {
            var validProperty  = "MainBody";
            var definitionType = new PageDefinitionType {
                DataType = "String"
            };
            var source = new PageType
            {
                Name        = "SomePage",
                GUID        = Guid.NewGuid(),
                Definitions =
                {
                    new PageDefinition {
                        Name = validProperty, Type = definitionType
                    },
                    new PageDefinition {
                        Name = ComposerProperties.Page, Type = definitionType
                    },
                    new PageDefinition {
                        Name = ComposerProperties.ContainerPage, Type = definitionType
                    },
                    new PageDefinition {
                        Name = ComposerProperties.ContentFunction, Type = definitionType
                    },
                    new PageDefinition {
                        Name = ComposerProperties.NeverUsed, Type = definitionType
                    },
                    new PageDefinition {
                        Name = ComposerProperties.PersonalizationData, Type = definitionType
                    }
                }
            };

            var subject = CreateSubject();

            var result = subject.Map(source);

            Assert.AreEqual(validProperty, result.PropertyDefinitions.Single().Name);
        }
Example #16
0
        public static void AddContentAreaProperty(PageType pageType, string name, string description)
        {
            Predicate <PageDefinition> match = null;

            if (pageType.Definitions.Find(def => def.Name == name) == null)
            {
                match = delegate(PageDefinition def)
                {
                    return(def.Name == name);
                };

                if (pageType.Definitions.Find(match) == null)
                {
                    var item = new PageDefinition
                    {
                        PageTypeID       = pageType.ID,
                        Name             = name,
                        EditCaption      = name,
                        HelpText         = string.IsNullOrEmpty(description) ? string.Empty : description,
                        DefaultValueType = DefaultValueType.None,
                        DefaultValue     = "",
                        Type             = PageTypeManager.ContentAreaPropertyType,
                        ID                 = 0,
                        Searchable         = true,
                        Tab                = PageTypeManager.LoadExtensionTab(),
                        DisplayEditUI      = false,
                        LanguageSpecific   = false,
                        LongStringSettings = 0
                    };
                    item.Save();
                    item.ClearCache();
                    pageType.Definitions.Add(item);
                    PageDefinitionType.ClearCache();
                }
            }
        }
        public void GivenPageTypePropertyDefinitionWithNonNativeType_GetPageDefinitionType_ReturnsCorrectPageDefinitionType()
        {
            PageTypePropertyDefinition definition = PageTypePropertyUpdaterTestsUtility.CreatePageTypePropertyDefinition();
            definition.PageTypePropertyAttribute.Type = typeof(PropertyXhtmlString);
            MockRepository fakes = new MockRepository();
            PageDefinitionTypeFactory fakeFactory = fakes.Stub<PageDefinitionTypeFactory>();
            PageDefinitionTypeMapper mapper = new PageDefinitionTypeMapper(fakeFactory);
            PageDefinitionType pageDefinitionTypeFromFactory = new PageDefinitionType(1, PropertyDataType.String, TestValueUtility.CreateRandomString());
            string typeName = definition.PageTypePropertyAttribute.Type.FullName;
            string assemblyName = definition.PageTypePropertyAttribute.Type.Assembly.GetName().Name;
            fakeFactory.Stub(factory => factory.GetPageDefinitionType(typeName, assemblyName)).Return(pageDefinitionTypeFromFactory);
            fakeFactory.Replay();

            PageDefinitionType returnedPageDefinitionType = mapper.GetPageDefinitionType(definition);

            Assert.Equal<PageDefinitionType>(pageDefinitionTypeFromFactory, returnedPageDefinitionType);
        }
        public void GivenPageTypePropertyDefinitionWithNativeType_GetPageDefinitionType_ReturnsCorrectPageDefinitionType()
        {
            PageTypePropertyDefinition definition = PageDefinitionSynchronizationEngineTestsUtility.CreatePageTypePropertyDefinition();
            definition.PageTypePropertyAttribute.Type = typeof(PropertyString);
            MockRepository fakes = new MockRepository();
            PageDefinitionTypeRepository fakeRepository = fakes.Stub<PageDefinitionTypeRepository>();
            PageDefinitionTypeMapper mapper = new PageDefinitionTypeMapper(fakeRepository, new NativePageDefinitionsMap());
            int nativeTypeID = new NativePageDefinitionsMap().GetNativeTypeID(definition.PageTypePropertyAttribute.Type);
            PageDefinitionType pageDefinitionTypeFromFactory = new PageDefinitionType(1, PropertyDataType.String, TestValueUtility.CreateRandomString());
            fakeRepository.Stub(factory => factory.GetPageDefinitionType(nativeTypeID)).Return(pageDefinitionTypeFromFactory);
            fakeRepository.Replay();

            PageDefinitionType returnedPageDefinitionType = mapper.GetPageDefinitionType(definition);

            Assert.Equal<PageDefinitionType>(pageDefinitionTypeFromFactory, returnedPageDefinitionType);
        }
        public void GivenPageTypePropertyDefinition_CreateNewPageDefinition_ReturnsPageDefinitionWithCorrectType2()
        {
            PageDefinitionType expectedPageDefintionType = new PageDefinitionType(
                1, PropertyDataType.String, TestValueUtility.CreateRandomString());

            PageTypePropertyDefinition pageTypePropertyDefinition = PageTypePropertyUpdaterTestsUtility.CreatePageTypePropertyDefinition();
            PageDefinition pageDefinition = new PageDefinition();
            MockRepository fakes = new MockRepository();
            PageTypePropertyUpdater pageTypePropertyUpdater = PageTypePropertyUpdaterFactory.PartialMock(fakes);
            pageTypePropertyUpdater.Stub(
                utility => utility.GetPageDefinitionType(pageTypePropertyDefinition)
                ).Return(expectedPageDefintionType);
            pageTypePropertyUpdater.Replay();

            pageTypePropertyUpdater.SetPageDefinitionType(pageDefinition, pageTypePropertyDefinition);

            Assert.Equal<PageDefinitionType>(expectedPageDefintionType, pageDefinition.Type);
        }
Example #20
0
 public virtual PageDefinitionType GetPageDefinitionType(string typeName, string assemblyName)
 {
     return(PageDefinitionType.Load(typeName, assemblyName));
 }
Example #21
0
 public virtual PageDefinitionType GetPageDefinitionType(int id)
 {
     return(PageDefinitionType.Load(id));
 }