using System; using System.Collections.Generic; namespace Umbraco.Core.Models.PublishedContent { // // we cannot implement strongly-typed content by inheriting from some sort // of "master content" because that master content depends on the actual content cache // that is being used. It can be an XmlPublishedContent with the XmlPublishedCache, // or just anything else. // // So we implement strongly-typed content by encapsulating whatever content is // returned by the content cache, and providing extra properties (mostly) or // methods or whatever. This class provides the base for such encapsulation. // /// /// Provides an abstract base class for IPublishedContent implementations that /// wrap and extend another IPublishedContent. /// public abstract class PublishedContentWrapped : IPublishedContent { protected readonly IPublishedContent Content; /// /// Initialize a new instance of the class /// with an IPublishedContent instance to wrap. /// /// The content to wrap. protected PublishedContentWrapped(IPublishedContent content) { Content = content; } /// /// Gets the wrapped content. /// /// The wrapped content, that was passed as an argument to the constructor. public IPublishedContent Unwrap() => Content; #region ContentType public virtual PublishedContentType ContentType => Content.ContentType; #endregion #region Content public virtual int Id => Content.Id; public Guid Key => Content.Key; public virtual int TemplateId => Content.TemplateId; public virtual int SortOrder => Content.SortOrder; public virtual string Name => Content.Name; public virtual string UrlName => Content.UrlName; public virtual string DocumentTypeAlias => Content.DocumentTypeAlias; public virtual int DocumentTypeId => Content.DocumentTypeId; public virtual string WriterName => Content.WriterName; public virtual string CreatorName => Content.CreatorName; public virtual int WriterId => Content.WriterId; public virtual int CreatorId => Content.CreatorId; public virtual string Path => Content.Path; public virtual DateTime CreateDate => Content.CreateDate; public virtual DateTime UpdateDate => Content.UpdateDate; public virtual Guid Version => Content.Version; public virtual int Level => Content.Level; public virtual string Url => Content.Url; public virtual PublishedItemType ItemType => Content.ItemType; public virtual bool IsDraft => Content.IsDraft; #endregion #region Tree public virtual IPublishedContent Parent => Content.Parent; public virtual IEnumerable Children => Content.Children; #endregion #region Properties public virtual IEnumerable Properties => Content.Properties; public virtual IPublishedProperty GetProperty(string alias) { return Content.GetProperty(alias); } public virtual IPublishedProperty GetProperty(string alias, bool recurse) { return Content.GetProperty(alias, recurse); } #endregion } }