コード例 #1
0
        /// <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);
        }
コード例 #2
0
 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;
 }
コード例 #3
0
        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);
            }));
        }
コード例 #4
0
 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();
 }
コード例 #5
0
 public abstract BsonClassMap Create(Definitions.ItemDefinition definition, IEnumerable <Definitions.ItemDefinition> allDefinitions);