public virtual ContentItem New(string contentType) { var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(contentType); if (contentTypeDefinition == null) { contentTypeDefinition = new ContentTypeDefinitionBuilder().Named(contentType).Build(); } // create a new kernel for the model instance var context = new ActivatingContentContext { ContentType = contentTypeDefinition.Name, Definition = contentTypeDefinition, Builder = new ContentItemBuilder(contentTypeDefinition) }; // invoke handlers to weld aspects onto kernel Handlers.Invoke(handler => handler.Activating(context)); var context2 = new ActivatedContentContext { ContentType = contentType, ContentItem = context.Builder.Build() }; // back-reference for convenience (e.g. getting metadata when in a view) context2.ContentItem.ContentManager = this; Handlers.Invoke(handler => handler.Activated(context2)); var context3 = new InitializingContentContext { ContentType = context2.ContentType, ContentItem = context2.ContentItem, }; Handlers.Invoke(handler => handler.Initializing(context3)); Handlers.Invoke(handler => handler.Initialized(context3)); // composite result is returned return context3.ContentItem; }
protected virtual void Activated(ActivatedContentContext context) { }