/// <summary>Check that the source item type is allowed below the destination. Throws an exception if the item isn't allowed.</summary> /// <param name="source">The child item</param> /// <param name="destination">The parent item</param> public virtual bool IsTypeAllowedBelowDestination(ContentItem source, ContentItem destination) { if (destination != null) { Definitions.ItemDefinition sourceDefinition = definitions.GetDefinition(source); Definitions.ItemDefinition destinationDefinition = definitions.GetDefinition(destination); return(destinationDefinition.IsChildAllowed(definitions, destination, sourceDefinition)); } return(true); }
public TemplateInfo(Definitions.ItemDefinition d) : this() { Title = d.Title; Description = d.Description; Discriminator = d.Discriminator; ToolTip = d.ToolTip; IconUrl = d.IconUrl; IconClass = d.IconClass; TypeName = d.ItemType.Name; TemplateKey = d.TemplateKey; }
protected BsonClassMap Create <T>(Definitions.ItemDefinition definition, IEnumerable <Definitions.ItemDefinition> allDefinitions) where T : ContentItem { return(new BsonClassMap <T>(cm => { cm.SetDiscriminator(definition.Discriminator); BsonSerializer.RegisterDiscriminatorConvention(definition.ItemType, new IgnoreProxyTypeDiscriminatorConvention()); foreach (var type in allDefinitions.Select(d => d.ItemType).Where(t => definition.ItemType.IsAssignableFrom(t))) { cm.AddKnownType(type); } cm.AutoMap(); cm.SetCreator(() => { try { return database.IdentityMap.Current ?? CreateItem <T>(definition, proxies, database); } finally { database.IdentityMap.Current = null; } }); foreach (var p in definition.Properties.Values .Where(p => p.Info != null) .Where(p => typeof(ContentItem).IsAssignableFrom(p.Info.PropertyType)) .Where(p => p.Info.DeclaringType == definition.ItemType)) { if (p.Info.CanRead && p.Info.CanWrite) { cm.GetMemberMap(p.Name).SetSerializer(new ContentItemReferenceSerializer(database)); } else { cm.UnmapProperty(p.Name); } } cm.SetIgnoreExtraElements(true); })); }
public void LoadZonesOf(Definitions.ItemDefinition definition, ContentItem contentItem) { DataSource = definition.AvailableZones.Union(contentItem.Children.FindZoneNames().Where(zn => !string.IsNullOrEmpty(zn)).Select(zn => new AvailableZoneAttribute(zn, zn))); DataBind(); }
public abstract BsonClassMap Create(Definitions.ItemDefinition definition, IEnumerable <Definitions.ItemDefinition> allDefinitions);