using System; using System.Collections.Generic; namespace Umbraco.Core.Models.PublishedContent { /// /// /// Represents a published content item. /// /// /// Can be a published document, media or member. /// public interface IPublishedContent : IPublishedElement { #region Content // todo - IPublishedContent properties colliding with models // we need to find a way to remove as much clutter as possible from IPublishedContent, // since this is preventing someone from creating a property named 'Path' and have it // in a model, for instance. we could move them all under one unique property eg // Infos, so we would do .Infos.SortOrder - just an idea - not going to do it in v8 /// /// Gets the unique identifier of the content item. /// int Id { get; } /// /// Gets the name of the content item. /// /// /// The value of this property is contextual. When the content type is multi-lingual, /// this is the name for the 'current' culture. Otherwise, it is the invariant name. /// string Name { get; } /// /// Gets the url segment of the content item. /// /// /// The value of this property is contextual. When the content type is multi-lingual, /// this is the name for the 'current' culture. Otherwise, it is the invariant url segment. /// string UrlSegment { get; } /// /// Gets the sort order of the content item. /// int SortOrder { get; } /// /// Gets the tree level of the content item. /// int Level { get; } /// /// Gets the tree path of the content item. /// string Path { get; } /// /// Gets the identifier of the template to use to render the content item. /// int? TemplateId { get; } /// /// Gets the identifier of the user who created the content item. /// int CreatorId { get; } /// /// Gets the name of the user who created the content item. /// string CreatorName { get; } /// /// Gets the date the content item was created. /// DateTime CreateDate { get; } /// /// Gets the identifier of the user who last updated the content item. /// int WriterId { get; } /// /// Gets the name of the user who last updated the content item. /// string WriterName { get; } /// /// Gets the date the content item was last updated. /// /// /// For published content items, this is also the date the item was published. /// This date is always global to the content item, see GetCulture().Date for the /// date each culture was published. /// DateTime UpdateDate { get; } /// /// Gets the url of the content item. /// /// /// The value of this property is contextual. It depends on the 'current' request uri, /// if any. In addition, when the content type is multi-lingual, this is the url for the /// 'current' culture. Otherwise, it is the invariant url. /// string Url { get; } /// /// Gets the url of the content item. /// /// /// The value of this property is contextual. It depends on the 'current' request uri, /// if any. In addition, when the content type is multi-lingual, this is the url for the /// specified culture. Otherwise, it is the invariant url. /// string GetUrl(string culture = null); /// /// Gets culture infos for a culture. /// PublishedCultureInfo GetCulture(string culture = null); /// /// Gets culture infos. /// /// /// Contains only those culture that are available. For a published content, these are /// the cultures that are published. For a draft content, those that are 'available' ie /// have a non-empty content name. /// IReadOnlyDictionary Cultures { get; } /// /// Gets the type of the content item (document, media...). /// PublishedItemType ItemType { get; } /// /// Gets a value indicating whether the content is draft. /// /// /// A content is draft when it is the unpublished version of a content, which may /// have a published version, or not. /// When retrieving documents from cache in non-preview mode, IsDraft is always false, /// as only published documents are returned. When retrieving in preview mode, IsDraft can /// either be true (document is not published, or has been edited, and what is returned /// is the edited version) or false (document is published, and has not been edited, and /// what is returned is the published version). /// bool IsDraft(string culture = null); /// /// Gets a value indicating whether the content is published. /// /// bool IsPublished(string culture = null); #endregion #region Tree /// /// Gets the parent of the content item. /// /// The parent of root content is null. IPublishedContent Parent { get; } /// /// Gets the children of the content item. /// /// Children are sorted by their sortOrder. IEnumerable Children { get; } #endregion } }