Reimplemented IsPublished on PublishedContent

This commit is contained in:
Bjarke Berg
2019-01-25 12:56:53 +01:00
parent 38ec97bbe3
commit 66959baabe
3 changed files with 29 additions and 9 deletions

View File

@@ -16,5 +16,8 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource
[JsonProperty("isDraft")]
public bool IsDraft { get; set; }
[JsonProperty("isPublished")]
public bool IsPublished { get; set; }
}
}

View File

@@ -296,7 +296,10 @@ namespace Umbraco.Web.PublishedCache.NuCache
/// <inheritdoc />
public override bool IsPublished(string culture = null)
{
// fixme I don't understand this - and it does probably not do what's expected
if (!IsDraft(culture))
{
return true;
}
if (!ContentType.VariesByCulture())
{
@@ -307,8 +310,13 @@ namespace Umbraco.Web.PublishedCache.NuCache
if (culture == null)
culture = VariationContextAccessor?.VariationContext?.Culture ?? "";
//If the current culture is not a draft, it must be the published version
return _contentData.CultureInfos.TryGetValue(culture, out var cvar) && !cvar.IsDraft;
if (_contentData.CultureInfos.TryGetValue(culture, out var variant))
{
return variant.IsPublished;
}
return false;
}
#endregion

View File

@@ -1202,16 +1202,25 @@ namespace Umbraco.Web.PublishedCache.NuCache
// sanitize - names should be ok but ... never knows
if (content.GetContentType().VariesByCulture())
{
var infos = content is IContent document
? (published
? document.PublishCultureInfos
: document.CultureInfos)
: content.CultureInfos;
IReadOnlyDictionary<string, ContentCultureInfos> infos = content.CultureInfos;
var publishedCultures = new HashSet<string>();
if (content is IContent document)
{
if (published)
{
infos = document.PublishCultureInfos;
}
publishedCultures = new HashSet<string>(document.PublishedCultures);
}
foreach (var (culture, info) in infos)
{
var cultureIsDraft = !published && content is IContent d && d.IsCultureEdited(culture);
cultureData[culture] = new CultureVariation { Name = info.Name, Date = content.GetUpdateDate(culture) ?? DateTime.MinValue, IsDraft = cultureIsDraft };
cultureData[culture] = new CultureVariation { Name = info.Name, Date = content.GetUpdateDate(culture) ?? DateTime.MinValue, IsDraft = cultureIsDraft, IsPublished = publishedCultures.Contains(culture)};
}
}