コード例 #1
0
        public static ContentTypeDefinition Import(this IContentDefinitionReader reader, XElement source)
        {
            var target = new ContentTypeDefinitionBuilder();

            reader.Merge(source, target);
            return(target.Build());
        }
コード例 #2
0
        public override void TypeEditorUpdated(ContentTypeDefinitionBuilder builder)
        {
            var contentTypeDefinition = builder.Build();
            var newDisplayName        = contentTypeDefinition.DisplayName;
            var newSettings           = contentTypeDefinition.Settings;

            if (newDisplayName != _oldContentTypeDisplayName)
            {
                var eventData = new Dictionary <string, object> {
                    { "ContentTypeName", builder.Current.Name },
                    { "OldDisplayName", _oldContentTypeDisplayName },
                    { "NewDisplayName", newDisplayName }
                };
                RecordContentTypeAuditTrail(ContentTypeAuditTrailEventProvider.TypeDisplayNameUpdated, eventData, contentTypeDefinition.Name);
            }

            if (!AreEqual(newSettings, _oldContentTypeSettings))
            {
                var eventData = new Dictionary <string, object> {
                    { "ContentTypeName", builder.Current.Name },
                    { "OldSettings", ToXml(_oldContentTypeSettings) },
                    { "NewSettings", ToXml(newSettings) }
                };
                RecordContentTypeAuditTrail(ContentTypeAuditTrailEventProvider.TypeSettingsUpdated, eventData, contentTypeDefinition.Name);
            }
        }
コード例 #3
0
        public static void AlterTypeDefinition(this IContentDefinitionManager manager, string name, Action <ContentTypeDefinitionBuilder> alteration)
        {
            var typeDefinition = manager.LoadTypeDefinition(name) ?? new ContentTypeDefinition(name, name.CamelFriendly());
            var builder        = new ContentTypeDefinitionBuilder(typeDefinition);

            alteration(builder);
            manager.StoreTypeDefinition(builder.Build());
        }
コード例 #4
0
        public static async Task AlterTypeDefinitionAsync(this IContentDefinitionManager manager, string name, Func <ContentTypeDefinitionBuilder, Task> alterationAsync)
        {
            var typeDefinition = manager.LoadTypeDefinition(name) ?? new ContentTypeDefinition(name, name.CamelFriendly());
            var builder        = new ContentTypeDefinitionBuilder(typeDefinition);

            await alterationAsync(builder);

            manager.StoreTypeDefinition(builder.Build());
        }
コード例 #5
0
        public void AttributesAreAppliedAsSettings()
        {
            var builder = new ContentTypeDefinitionBuilder();

            _reader.Merge(new XElement("foo", new XAttribute("x", "1")), builder);
            var type = builder.Build();

            Assert.That(type.Settings["x"], Is.EqualTo("1"));
        }
コード例 #6
0
        public void ReadingElementSetsName()
        {
            var builder = new ContentTypeDefinitionBuilder();

            _reader.Merge(new XElement("foo"), builder);
            var type = builder.Build();

            Assert.That(type.Name, Is.EqualTo("foo"));
        }
コード例 #7
0
        public void ChildElementsAreAddedAsPartsWithSettings()
        {
            var builder = new ContentTypeDefinitionBuilder();

            _reader.Merge(new XElement("foo", new XElement("bar", new XAttribute("y", "2"))), builder);
            var type = builder.Build();

            Assert.That(type.Parts.Single().PartDefinition.Name, Is.EqualTo("bar"));
            Assert.That(type.Parts.Single().Settings["y"], Is.EqualTo("2"));
        }
コード例 #8
0
        /// <summary>
        /// Removes any custom placement for a specific shape
        /// </summary>
        public static ContentTypeDefinitionBuilder ResetPlacement(this ContentTypeDefinitionBuilder builder, PlacementType placementType, string shapeType, string differentiator)
        {
            var serializer        = new JavaScriptSerializer();
            var placementSettings = GetPlacement(builder.Build(), placementType).ToList();

            placementSettings = placementSettings.Where(x => x.ShapeType != shapeType && x.Differentiator != differentiator).ToList();

            var placement = serializer.Serialize(placementSettings.ToArray());

            return(builder.WithSetting("ContentTypeSettings.Placement." + placementType, placement));
        }
コード例 #9
0
        public void PartsCanBeRemovedByNameWhenImporting()
        {
            const string partToBeRemoved = "alpha";

            var builder = new ContentTypeDefinitionBuilder();

            _reader.Merge(new XElement("foo",
                                       new XElement(partToBeRemoved),
                                       new XElement("remove", new XAttribute("name", partToBeRemoved))
                                       ), builder);
            var type = builder.Build();

            Assert.That(type.Parts.FirstOrDefault(part => part.PartDefinition.Name == partToBeRemoved), Is.Null);
        }
コード例 #10
0
        /// <summary>
        /// Defines a custom placement
        /// </summary>
        public static ContentTypeDefinitionBuilder Placement(this ContentTypeDefinitionBuilder builder, PlacementType placementType, string shapeType, string differentiator, string zone, string position)
        {
            var placement = AddPlacement(builder.Build(), placementType, shapeType, differentiator, zone, position);

            return(builder.WithSetting("ContentTypeSettings.Placement." + placementType, placement));
        }