Files
Umbraco-CMS/src/Umbraco.Web/PublishedCache/NuCache/ContentNodeKit.cs

50 lines
1.7 KiB
C#
Raw Normal View History

2016-05-27 14:26:28 +02:00
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Web.PublishedCache.NuCache.DataSource;
namespace Umbraco.Web.PublishedCache.NuCache
{
// what's needed to actually build a content node
2017-07-12 14:09:31 +02:00
internal struct ContentNodeKit
2016-05-27 14:26:28 +02:00
{
public ContentNode Node;
public int ContentTypeId;
public ContentData DraftData;
public ContentData PublishedData;
2016-05-30 19:54:36 +02:00
public bool IsEmpty => Node == null;
2016-05-27 14:26:28 +02:00
public bool IsNull => ContentTypeId < 0;
public static ContentNodeKit Null { get; } = new ContentNodeKit { ContentTypeId = -1 };
public void Build(
2019-04-15 13:04:14 +02:00
IPublishedContentType contentType,
IPublishedSnapshotAccessor publishedSnapshotAccessor,
IVariationContextAccessor variationContextAccessor,
bool canBePublished)
2016-05-27 14:26:28 +02:00
{
2019-02-14 08:03:00 +01:00
var draftData = DraftData;
// no published data if it cannot be published (eg is masked)
var publishedData = canBePublished ? PublishedData : null;
// we *must* have either published or draft data
// if it cannot be published, published data is going to be null
// therefore, ensure that draft data is not
if (draftData == null && !canBePublished)
draftData = PublishedData;
Node.SetContentTypeAndData(contentType, draftData, publishedData, publishedSnapshotAccessor, variationContextAccessor);
2016-05-27 14:26:28 +02:00
}
public ContentNodeKit Clone()
=> new ContentNodeKit
{
ContentTypeId = ContentTypeId,
DraftData = DraftData,
PublishedData = PublishedData,
Node = new ContentNode(Node)
};
2016-05-27 14:26:28 +02:00
}
}