Log language ISO codes instead of language names (#19259)

This commit is contained in:
Andy Butland
2025-05-07 08:42:39 +02:00
committed by GitHub
parent 89cd13df8f
commit 22e0720395
2 changed files with 22 additions and 28 deletions

View File

@@ -1108,14 +1108,8 @@ public class ContentService : RepositoryService, IContentService
if (culturesChanging != null)
{
IEnumerable<string>? languages = _languageRepository.GetMany()?
.Where(x => culturesChanging.InvariantContains(x.IsoCode))
.Select(x => x.CultureName);
if (languages is not null)
{
var langs = string.Join(", ", languages);
Audit(AuditType.SaveVariant, userId.Value, content.Id, $"Saved languages: {langs}", langs);
}
var langs = GetLanguageDetailsForAuditEntry(culturesChanging);
Audit(AuditType.SaveVariant, userId.Value, content.Id, $"Saved languages: {langs}", langs);
}
else
{
@@ -1625,9 +1619,7 @@ public class ContentService : RepositoryService, IContentService
if (culturesUnpublishing != null)
{
// This will mean that that we unpublished a mandatory culture or we unpublished the last culture.
var langs = string.Join(", ", allLangs
.Where(x => culturesUnpublishing.InvariantContains(x.IsoCode))
.Select(x => x.CultureName));
var langs = GetLanguageDetailsForAuditEntry(allLangs, culturesUnpublishing);
Audit(AuditType.UnpublishVariant, userId, content.Id, $"Unpublished languages: {langs}", langs);
if (publishResult == null)
@@ -1707,9 +1699,7 @@ public class ContentService : RepositoryService, IContentService
case PublishResultType.SuccessPublishCulture:
if (culturesPublishing != null)
{
var langs = string.Join(", ", allLangs
.Where(x => culturesPublishing.InvariantContains(x.IsoCode))
.Select(x => x.CultureName));
var langs = GetLanguageDetailsForAuditEntry(allLangs, culturesPublishing);
Audit(AuditType.PublishVariant, userId, content.Id, $"Published languages: {langs}", langs);
}
@@ -1717,9 +1707,7 @@ public class ContentService : RepositoryService, IContentService
case PublishResultType.SuccessUnpublishCulture:
if (culturesUnpublishing != null)
{
var langs = string.Join(", ", allLangs
.Where(x => culturesUnpublishing.InvariantContains(x.IsoCode))
.Select(x => x.CultureName));
var langs = GetLanguageDetailsForAuditEntry(allLangs, culturesUnpublishing);
Audit(AuditType.UnpublishVariant, userId, content.Id, $"Unpublished languages: {langs}", langs);
}
@@ -1741,9 +1729,7 @@ public class ContentService : RepositoryService, IContentService
{
if (culturesChanging != null)
{
var langs = string.Join(", ", allLangs
.Where(x => culturesChanging.InvariantContains(x.IsoCode))
.Select(x => x.CultureName));
var langs = GetLanguageDetailsForAuditEntry(allLangs, culturesChanging);
Audit(AuditType.SaveVariant, userId, content.Id, $"Saved languages: {langs}", langs);
}
else
@@ -3098,6 +3084,17 @@ public class ContentService : RepositoryService, IContentService
private void Audit(AuditType type, int userId, int objectId, string? message = null, string? parameters = null) =>
_auditRepository.Save(new AuditItem(objectId, type, userId, UmbracoObjectTypes.Document.GetName(), message, parameters));
private string GetLanguageDetailsForAuditEntry(IEnumerable<string> affectedCultures)
=> GetLanguageDetailsForAuditEntry(_languageRepository.GetMany(), affectedCultures);
private static string GetLanguageDetailsForAuditEntry(IEnumerable<ILanguage> languages, IEnumerable<string> affectedCultures)
{
IEnumerable<string> languageIsoCodes = languages
.Where(x => affectedCultures.InvariantContains(x.IsoCode))
.Select(x => x.IsoCode);
return string.Join(", ", languageIsoCodes);
}
private static bool IsDefaultCulture(IReadOnlyCollection<ILanguage>? langs, string culture) =>
langs?.Any(x => x.IsDefault && x.IsoCode.InvariantEquals(culture)) ?? false;

View File

@@ -59,8 +59,6 @@ internal sealed class ContentServiceTests : UmbracoIntegrationTestWithContent
private IRelationService RelationService => GetRequiredService<IRelationService>();
private ILocalizedTextService TextService => GetRequiredService<ILocalizedTextService>();
private ITagService TagService => GetRequiredService<ITagService>();
private IPublicAccessService PublicAccessService => GetRequiredService<IPublicAccessService>();
@@ -738,8 +736,7 @@ internal sealed class ContentServiceTests : UmbracoIntegrationTestWithContent
[Test]
public void Can_Unpublish_Content_Variation()
{
var content = CreateEnglishAndFrenchDocument(out var langUk, out var langFr,
out var contentType);
var content = CreateEnglishAndFrenchDocument(out var langUk, out var langFr, out var contentType);
var saved = ContentService.Save(content);
var published = ContentService.Publish(content, new[] { langFr.IsoCode, langUk.IsoCode });
@@ -1032,7 +1029,7 @@ internal sealed class ContentServiceTests : UmbracoIntegrationTestWithContent
// audit log will only show that french was published
var lastLog = AuditService.GetLogs(content.Id).Last();
Assert.AreEqual("Published languages: French (France)", lastLog.Comment);
Assert.AreEqual("Published languages: fr-FR", lastLog.Comment);
// re-get
content = ContentService.GetById(content.Id);
@@ -1042,7 +1039,7 @@ internal sealed class ContentServiceTests : UmbracoIntegrationTestWithContent
// audit log will only show that english was published
lastLog = AuditService.GetLogs(content.Id).Last();
Assert.AreEqual("Published languages: English (United Kingdom)", lastLog.Comment);
Assert.AreEqual("Published languages: en-GB", lastLog.Comment);
}
[Test]
@@ -1079,7 +1076,7 @@ internal sealed class ContentServiceTests : UmbracoIntegrationTestWithContent
// audit log will only show that french was unpublished
var lastLog = AuditService.GetLogs(content.Id).Last();
Assert.AreEqual("Unpublished languages: French (France)", lastLog.Comment);
Assert.AreEqual("Unpublished languages: fr-FR", lastLog.Comment);
// re-get
content = ContentService.GetById(content.Id);
@@ -1088,7 +1085,7 @@ internal sealed class ContentServiceTests : UmbracoIntegrationTestWithContent
// audit log will only show that english was published
var logs = AuditService.GetLogs(content.Id).ToList();
Assert.AreEqual("Unpublished languages: English (United Kingdom)", logs[^2].Comment);
Assert.AreEqual("Unpublished languages: en-GB", logs[^2].Comment);
Assert.AreEqual("Unpublished (mandatory language unpublished)", logs[^1].Comment);
}