Files
Umbraco-CMS/src/Umbraco.Web/Models/PublishedContentBase.cs

112 lines
3.0 KiB
C#
Raw Normal View History

2018-06-29 19:52:40 +02:00
using System;
using System.Collections.Generic;
using System.Diagnostics;
using Umbraco.Core;
using Umbraco.Core.Models.PublishedContent;
namespace Umbraco.Web.Models
{
/// <summary>
/// Provide an abstract base class for <c>IPublishedContent</c> implementations.
/// </summary>
/// <remarks>This base class does which (a) consistently resolves and caches the Url, (b) provides an implementation
2018-06-29 19:52:40 +02:00
/// for this[alias], and (c) provides basic content set management.</remarks>
2019-06-21 15:46:16 +10:00
[DebuggerDisplay("Content Id: {Id}")]
2018-06-29 19:52:40 +02:00
public abstract class PublishedContentBase : IPublishedContent
{
#region ContentType
2019-04-15 13:04:14 +02:00
public abstract IPublishedContentType ContentType { get; }
2018-06-29 19:52:40 +02:00
2018-04-28 16:34:43 +02:00
#endregion
2018-06-29 19:52:40 +02:00
#region PublishedElement
/// <inheritdoc />
public abstract Guid Key { get; }
#endregion
#region PublishedContent
/// <inheritdoc />
public abstract int Id { get; }
/// <inheritdoc />
public virtual string Name => this.Name();
2018-06-29 19:52:40 +02:00
/// <inheritdoc />
public virtual string UrlSegment => this.UrlSegment();
2018-06-29 19:52:40 +02:00
/// <inheritdoc />
public abstract int SortOrder { get; }
/// <inheritdoc />
public abstract int Level { get; }
/// <inheritdoc />
public abstract string Path { get; }
/// <inheritdoc />
public abstract int? TemplateId { get; }
2018-06-29 19:52:40 +02:00
/// <inheritdoc />
public abstract int CreatorId { get; }
/// <inheritdoc />
public abstract string CreatorName { get; }
/// <inheritdoc />
public abstract DateTime CreateDate { get; }
/// <inheritdoc />
public abstract int WriterId { get; }
/// <inheritdoc />
public abstract string WriterName { get; }
/// <inheritdoc />
public abstract DateTime UpdateDate { get; }
/// <inheritdoc />
public virtual string Url => this.Url();
2018-06-29 19:52:40 +02:00
/// <inheritdoc />
public abstract IReadOnlyDictionary<string, PublishedCultureInfo> Cultures { get; }
/// <inheritdoc />
public abstract PublishedItemType ItemType { get; }
2018-06-29 19:52:40 +02:00
/// <inheritdoc />
public abstract bool IsDraft(string culture = null);
2018-06-29 19:52:40 +02:00
2019-01-24 15:22:20 +01:00
/// <inheritdoc />
public abstract bool IsPublished(string culture = null);
2018-06-29 19:52:40 +02:00
#endregion
#region Tree
/// <inheritdoc />
public abstract IPublishedContent Parent { get; }
/// <inheritdoc />
public virtual IEnumerable<IPublishedContent> Children => this.Children();
2018-06-29 19:52:40 +02:00
/// <inheritdoc />
public abstract IEnumerable<IPublishedContent> ChildrenForAllCultures { get; }
2018-06-29 19:52:40 +02:00
#endregion
#region Properties
/// <inheritdoc cref="IPublishedElement.Properties"/>
public abstract IEnumerable<IPublishedProperty> Properties { get; }
/// <inheritdoc cref="IPublishedElement.GetProperty(string)"/>
public abstract IPublishedProperty GetProperty(string alias);
#endregion
}
}