From 2a15feec4026d0d28a596d0396f6ef923ab7b7ea Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 15 Aug 2018 15:13:27 +1000 Subject: [PATCH] Fixes state issue to ensure that non-created variants show up as not-created --- src/Umbraco.Core/Models/Content.cs | 12 +++++++++--- .../ContentEditing/ContentVariationDisplay.cs | 19 +------------------ .../ContentItemDisplayVariationResolver.cs | 7 ++++--- .../Models/Mapping/ContentMapperProfile.cs | 1 - 4 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/Umbraco.Core/Models/Content.cs b/src/Umbraco.Core/Models/Content.cs index 5902eed901..caa7a2a3e4 100644 --- a/src/Umbraco.Core/Models/Content.cs +++ b/src/Umbraco.Core/Models/Content.cs @@ -213,17 +213,23 @@ namespace Umbraco.Core.Models [IgnoreDataMember] public IEnumerable PublishedCultures => _publishInfos?.Keys ?? Enumerable.Empty(); + //fixme should this return false if ID == 0? + //fixme should this return false if IsCultureAvailable(culture) is false? /// public bool IsCulturePublished(string culture) - => _publishInfos != null && _publishInfos.ContainsKey(culture); //fixme should this return false if ID == 0? + => _publishInfos != null && _publishInfos.ContainsKey(culture); + //fixme should this return false if ID == 0? + //fixme should this return false if IsCultureAvailable(culture) is false? /// public bool WasCulturePublished(string culture) - => _publishInfosOrig != null && _publishInfosOrig.ContainsKey(culture); //fixme should this return false if ID == 0? + => _publishInfosOrig != null && _publishInfosOrig.ContainsKey(culture); + //fixme should this return false if ID == 0? + //fixme should this return false if IsCultureAvailable(culture) is false? /// public bool IsCultureEdited(string culture) - => !IsCulturePublished(culture) || (_editedCultures != null && _editedCultures.Contains(culture)); //fixme should this return false if ID == 0? + => !IsCulturePublished(culture) || (_editedCultures != null && _editedCultures.Contains(culture)); /// [IgnoreDataMember] diff --git a/src/Umbraco.Web/Models/ContentEditing/ContentVariationDisplay.cs b/src/Umbraco.Web/Models/ContentEditing/ContentVariationDisplay.cs index 353d317a05..4ada93fa04 100644 --- a/src/Umbraco.Web/Models/ContentEditing/ContentVariationDisplay.cs +++ b/src/Umbraco.Web/Models/ContentEditing/ContentVariationDisplay.cs @@ -77,23 +77,6 @@ namespace Umbraco.Web.Models.ContentEditing [DataMember(Name = "publishDate")] public DateTime? PublishDate { get; set; } - - /// - /// Determines if the content variant for this culture has been created - /// - [DataMember(Name = "exists")] - public bool Exists { get; set; } - - ///// - ///// Determines if this is the variant currently being edited - ///// - //[DataMember(Name = "current")] - //public bool IsCurrent { get; set; } - - ///// - ///// If the variant is a required variant for validation purposes - ///// - //[DataMember(Name = "mandatory")] - //public bool Mandatory { get; set; } + } } diff --git a/src/Umbraco.Web/Models/Mapping/ContentItemDisplayVariationResolver.cs b/src/Umbraco.Web/Models/Mapping/ContentItemDisplayVariationResolver.cs index 5f6a255a9e..4313b112ab 100644 --- a/src/Umbraco.Web/Models/Mapping/ContentItemDisplayVariationResolver.cs +++ b/src/Umbraco.Web/Models/Mapping/ContentItemDisplayVariationResolver.cs @@ -53,14 +53,15 @@ namespace Umbraco.Web.Models.Mapping variant.Language = x; variant.Name = source.GetCultureName(x.IsoCode); - variant.Exists = source.IsCultureAvailable(x.IsoCode); // segments ?? - + var publishedState = source.PublishedState == PublishedState.Unpublished //if the entire document is unpublished, then flag every variant as unpublished ? PublishedState.Unpublished : source.IsCulturePublished(x.IsoCode) ? PublishedState.Published : PublishedState.Unpublished; - var isEdited = source.Id > 0 && source.IsCultureEdited(x.IsoCode); + + //it can only be 'edited' if the content item is persisted and if the variant has a name and it's flagged as edited + var isEdited = source.Id > 0 && source.IsCultureAvailable(x.IsoCode) && source.IsCultureEdited(x.IsoCode); //now we can calculate the content state if (!isEdited && publishedState == PublishedState.Unpublished) diff --git a/src/Umbraco.Web/Models/Mapping/ContentMapperProfile.cs b/src/Umbraco.Web/Models/Mapping/ContentMapperProfile.cs index c3151eaa54..2fd487e097 100644 --- a/src/Umbraco.Web/Models/Mapping/ContentMapperProfile.cs +++ b/src/Umbraco.Web/Models/Mapping/ContentMapperProfile.cs @@ -68,7 +68,6 @@ namespace Umbraco.Web.Models.Mapping CreateMap() .ForMember(dest => dest.PublishDate, opt => opt.MapFrom(src => src.PublishDate)) .ForMember(dest => dest.Properties, opt => opt.Ignore()) - .ForMember(dest => dest.Exists, opt => opt.Ignore()) .ForMember(dest => dest.Segment, opt => opt.Ignore()) .ForMember(dest => dest.Language, opt => opt.Ignore()) .ForMember(dest => dest.State, opt => opt.Ignore())