Fix up after merge
This commit is contained in:
@@ -18,24 +18,24 @@ public sealed class CultureImpact
|
||||
/// </summary>
|
||||
/// <param name="culture">The culture code.</param>
|
||||
/// <param name="isDefault">A value indicating whether the culture is the default culture.</param>
|
||||
/// <param name="allowEditInvariantFromNonDefault">A value indicating if publishing invariant properties from non-default language.</param>
|
||||
internal CultureImpact(string? culture, bool isDefault = false, bool allowEditInvariantFromNonDefault = false)
|
||||
/// <param name="allowEditInvariantFromNonDefault">A value indicating if publishing invariant properties from non-default language.</param>
|
||||
internal CultureImpact(string? culture, bool isDefault = false, bool allowEditInvariantFromNonDefault = false)
|
||||
{
|
||||
if (culture != null && culture.IsNullOrWhiteSpace())
|
||||
{
|
||||
{
|
||||
throw new ArgumentException("Culture \"\" is not valid here.");
|
||||
}
|
||||
}
|
||||
|
||||
Culture = culture;
|
||||
|
||||
if ((culture == null || culture == "*") && isDefault)
|
||||
{
|
||||
{
|
||||
throw new ArgumentException("The invariant or 'all' culture can not be the default culture.");
|
||||
}
|
||||
}
|
||||
|
||||
ImpactsOnlyDefaultCulture = isDefault;
|
||||
|
||||
AllowEditInvariantFromNonDefault = allowEditInvariantFromNonDefault;
|
||||
AllowEditInvariantFromNonDefault = allowEditInvariantFromNonDefault;
|
||||
}
|
||||
|
||||
[Flags]
|
||||
@@ -145,7 +145,8 @@ public sealed class CultureImpact
|
||||
/// <param name="savingCultures"></param>
|
||||
/// <param name="defaultCulture"></param>
|
||||
/// <returns></returns>
|
||||
public static string? GetCultureForInvariantErrors(IContent? content, string?[] savingCultures, string? defaultCulture)
|
||||
public static string? GetCultureForInvariantErrors(IContent? content, string?[] savingCultures,
|
||||
string? defaultCulture)
|
||||
{
|
||||
if (content == null)
|
||||
{
|
||||
@@ -181,24 +182,24 @@ public sealed class CultureImpact
|
||||
/// </summary>
|
||||
/// <param name="culture">The culture code.</param>
|
||||
/// <param name="isDefault">A value indicating whether the culture is the default culture.</param>
|
||||
/// <param name="allowEditInvariantFromNonDefault">A value indicating if publishing invariant properties from non-default language.</param>
|
||||
[Obsolete("Use ICultureImpactService instead.")]
|
||||
/// <param name="allowEditInvariantFromNonDefault">A value indicating if publishing invariant properties from non-default language.</param>
|
||||
[Obsolete("Use ICultureImpactService instead.")]
|
||||
public static CultureImpact Explicit(string? culture, bool isDefault)
|
||||
{
|
||||
if (culture == null)
|
||||
{
|
||||
{
|
||||
throw new ArgumentException("Culture <null> is not explicit.");
|
||||
}
|
||||
}
|
||||
|
||||
if (culture.IsNullOrWhiteSpace())
|
||||
{
|
||||
{
|
||||
throw new ArgumentException("Culture \"\" is not explicit.");
|
||||
}
|
||||
}
|
||||
|
||||
if (culture == "*")
|
||||
{
|
||||
{
|
||||
throw new ArgumentException("Culture \"*\" is not explicit.");
|
||||
}
|
||||
}
|
||||
|
||||
return new CultureImpact(culture, isDefault);
|
||||
}
|
||||
@@ -210,11 +211,11 @@ public sealed class CultureImpact
|
||||
/// <param name="culture">The culture code.</param>
|
||||
/// <param name="isDefault">A value indicating whether the culture is the default culture.</param>
|
||||
/// <param name="content">The content item.</param>
|
||||
/// <param name="allowEditInvariantFromNonDefault">A value indicating if publishing invariant properties from non-default language.</param>
|
||||
/// <param name="allowEditInvariantFromNonDefault">A value indicating if publishing invariant properties from non-default language.</param>
|
||||
/// <remarks>
|
||||
/// <para>Validates that the culture is compatible with the variation.</para>
|
||||
/// </remarks>
|
||||
[Obsolete("Use ICultureImpactService instead, scheduled for removal in V12")]
|
||||
[Obsolete("Use ICultureImpactService instead, scheduled for removal in V12")]
|
||||
public static CultureImpact? Create(string culture, bool isDefault, IContent content)
|
||||
{
|
||||
// throws if not successful
|
||||
@@ -230,14 +231,15 @@ public sealed class CultureImpact
|
||||
/// <param name="isDefault">A value indicating whether the culture is the default culture.</param>
|
||||
/// <param name="variation">A content variation.</param>
|
||||
/// <param name="throwOnFail">A value indicating whether to throw if the impact cannot be created.</param>
|
||||
/// <param name="editInvariantFromNonDefault">A value indicating if publishing invariant properties from non-default language.</param>
|
||||
/// <param name="editInvariantFromNonDefault">A value indicating if publishing invariant properties from non-default language.</param>
|
||||
/// <param name="impact">The impact if it could be created, otherwise null.</param>
|
||||
/// <returns>A value indicating whether the impact could be created.</returns>
|
||||
/// <remarks>
|
||||
/// <para>Validates that the culture is compatible with the variation.</para>
|
||||
/// </remarks>
|
||||
// TODO: Remove this once Create() can be removed (V12), this already lives in CultureImpactService
|
||||
internal static bool TryCreate(string culture, bool isDefault, ContentVariation variation, bool throwOnFail, bool editInvariantFromNonDefault, out CultureImpact? impact)
|
||||
// TODO: Remove this once Create() can be removed (V12), this already lives in CultureImpactService
|
||||
internal static bool TryCreate(string culture, bool isDefault, ContentVariation variation, bool throwOnFail,
|
||||
bool editInvariantFromNonDefault, out CultureImpact? impact)
|
||||
{
|
||||
impact = null;
|
||||
|
||||
@@ -314,89 +316,10 @@ public sealed class CultureImpact
|
||||
}
|
||||
|
||||
// return specific impact
|
||||
impact = new CultureImpact(culture, isDefault, editInvariantFromNonDefault);
|
||||
impact = new CultureImpact(culture, isDefault, editInvariantFromNonDefault);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the culture code.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>Can be null (invariant) or * (all cultures) or a specific culture code.</para>
|
||||
/// </remarks>
|
||||
public string? Culture { get; }
|
||||
|
||||
public bool AllowEditInvariantFromNonDefault { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this impact impacts all cultures, including,
|
||||
/// indirectly, the invariant culture.
|
||||
/// </summary>
|
||||
public bool ImpactsAllCultures => Culture == "*";
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this impact impacts only the invariant culture,
|
||||
/// directly, not because all cultures are impacted.
|
||||
/// </summary>
|
||||
public bool ImpactsOnlyInvariantCulture => Culture == null;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this impact impacts an implicit culture.
|
||||
/// </summary>
|
||||
/// <remarks>And then it does not impact the invariant culture. The impacted
|
||||
/// explicit culture could be the default culture.</remarks>
|
||||
public bool ImpactsExplicitCulture => Culture != null && Culture != "*";
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this impact impacts the default culture, directly,
|
||||
/// not because all cultures are impacted.
|
||||
/// </summary>
|
||||
public bool ImpactsOnlyDefaultCulture {get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this impact impacts the invariant properties, either
|
||||
/// directly, or because all cultures are impacted, or because the default culture is impacted.
|
||||
/// </summary>
|
||||
public bool ImpactsInvariantProperties => Culture == null || Culture == "*" || ImpactsOnlyDefaultCulture;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this also impact impacts the invariant properties,
|
||||
/// even though it does not impact the invariant culture, neither directly (ImpactsInvariantCulture)
|
||||
/// nor indirectly (ImpactsAllCultures).
|
||||
/// </summary>
|
||||
public bool ImpactsAlsoInvariantProperties => !ImpactsOnlyInvariantCulture &&
|
||||
!ImpactsAllCultures &&
|
||||
(ImpactsOnlyDefaultCulture || AllowEditInvariantFromNonDefault);
|
||||
|
||||
public Behavior CultureBehavior
|
||||
{
|
||||
get
|
||||
{
|
||||
//null can only be invariant
|
||||
if (Culture == null) return Behavior.InvariantCulture | Behavior.InvariantProperties;
|
||||
|
||||
// * is All which means its also invariant properties since this will include the default language
|
||||
if (Culture == "*") return (Behavior.AllCultures | Behavior.InvariantProperties);
|
||||
|
||||
//else it's explicit
|
||||
var result = Behavior.ExplicitCulture;
|
||||
|
||||
//if the explicit culture is the default, then the behavior is also InvariantProperties
|
||||
if (ImpactsOnlyDefaultCulture)
|
||||
result |= Behavior.InvariantProperties;
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Flags]
|
||||
public enum Behavior : byte
|
||||
{
|
||||
AllCultures = 1,
|
||||
InvariantCulture = 2,
|
||||
ExplicitCulture = 4,
|
||||
InvariantProperties = 8
|
||||
}
|
||||
}
|
||||
public bool AllowEditInvariantFromNonDefault { get; }
|
||||
}
|
||||
|
||||
@@ -49,10 +49,4 @@ public interface IUserGroup : IEntity, IRememberBeingDirty
|
||||
/// Specifies the number of users assigned to this group
|
||||
/// </summary>
|
||||
int UserCount { get; }
|
||||
|
||||
void RemoveAllowedSection(string sectionAlias);
|
||||
|
||||
void AddAllowedSection(string sectionAlias);
|
||||
|
||||
void ClearAllowedSections();
|
||||
}
|
||||
|
||||
@@ -28,12 +28,6 @@ public class UserGroup : EntityBase, IUserGroup, IReadOnlyUserGroup
|
||||
private int? _startContentId;
|
||||
private int? _startMediaId;
|
||||
|
||||
//Custom comparer for enumerable
|
||||
private static readonly DelegateEqualityComparer<IEnumerable<string>> StringEnumerableComparer =
|
||||
new DelegateEqualityComparer<IEnumerable<string>>(
|
||||
(enum1, enum2) => enum1.UnsortedSequenceEqual(enum2),
|
||||
enum1 => enum1.GetHashCode());
|
||||
|
||||
/// <summary>
|
||||
/// Constructor to create a new user group
|
||||
/// </summary>
|
||||
|
||||
@@ -406,16 +406,16 @@ SELECT 4 AS [Key], COUNT(id) AS [Value] FROM umbracoUser WHERE userDisabled = 0
|
||||
|
||||
List<UserStartNodeDto>? startNodes = Database.Fetch<UserStartNodeDto>(sql);
|
||||
|
||||
// get groups2languages
|
||||
// get groups2languages
|
||||
|
||||
sql = SqlContext.Sql()
|
||||
.Select<UserGroup2LanguageDto>()
|
||||
.From<UserGroup2LanguageDto>()
|
||||
.WhereIn<UserGroup2LanguageDto>(x => x.UserGroupId, groupIds);
|
||||
sql = SqlContext.Sql()
|
||||
.Select<UserGroup2LanguageDto>()
|
||||
.From<UserGroup2LanguageDto>()
|
||||
.WhereIn<UserGroup2LanguageDto>(x => x.UserGroupId, groupIds);
|
||||
|
||||
var groups2languages = Database.Fetch<UserGroup2LanguageDto>(sql)
|
||||
.GroupBy(x => x.UserGroupId)
|
||||
.ToDictionary(x => x.Key, x => x);
|
||||
var groups2languages = Database.Fetch<UserGroup2LanguageDto>(sql)
|
||||
.GroupBy(x => x.UserGroupId)
|
||||
.ToDictionary(x => x.Key, x => x);
|
||||
|
||||
// map groups
|
||||
|
||||
@@ -445,14 +445,15 @@ SELECT 4 AS [Key], COUNT(id) AS [Value] FROM umbracoUser WHERE userDisabled = 0
|
||||
group.UserGroup2AppDtos = list.ToList(); // groups2apps is distinct
|
||||
}
|
||||
|
||||
// map languages
|
||||
}
|
||||
|
||||
foreach (var group in groups.Values)
|
||||
// map languages
|
||||
|
||||
foreach (var group in groups.Values)
|
||||
{
|
||||
if (groups2languages.TryGetValue(group.Id, out var list))
|
||||
{
|
||||
if (groups2languages.TryGetValue(group.Id, out var list))
|
||||
{
|
||||
group.UserGroup2LanguageDtos = list.ToList(); // groups2apps is distinct
|
||||
}
|
||||
group.UserGroup2LanguageDtos = list.ToList(); // groups2apps is distinct
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,12 +57,7 @@ public class ContentController : ContentControllerBase
|
||||
private readonly ILocalizationService _localizationService;
|
||||
private readonly ILocalizedTextService _localizedTextService;
|
||||
private readonly INotificationService _notificationService;
|
||||
private readonly ActionCollection _actionCollection;
|
||||
private readonly ISqlContext _sqlContext;
|
||||
private readonly IAuthorizationService _authorizationService;
|
||||
private readonly IContentVersionService _contentVersionService;
|
||||
private readonly ICultureImpactService _cultureImpactService;
|
||||
private readonly Lazy<IDictionary<string, ILanguage>> _allLangs;
|
||||
private readonly ILogger<ContentController> _logger;
|
||||
private readonly PropertyEditorCollection _propertyEditors;
|
||||
private readonly IPublishedUrlProvider _publishedUrlProvider;
|
||||
|
||||
Reference in New Issue
Block a user