From ddca695ab4ae3750e30ee16a0f6ee5b80d2f8692 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 19 Oct 2022 15:49:43 +0200 Subject: [PATCH] Language fixes and styling. --- .../ConvertContent/ResolveLanguages.cs | 44 ++++++------- .../Api/Config/OpenApi/XmlTagProcessor.cs | 2 +- .../ConvertContent/FieldConvertersTests.cs | 66 ++++++++++++++++++- frontend/src/app/features/content/module.ts | 3 - .../templates/templates-page.component.html | 2 +- .../angular/forms/form-alert.component.html | 2 +- .../angular/forms/form-alert.component.ts | 3 + frontend/src/app/theme/_bootstrap.scss | 4 ++ frontend/src/app/theme/_mixins.scss | 4 +- frontend/src/app/theme/_vars.scss | 4 ++ 10 files changed, 102 insertions(+), 32 deletions(-) diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/ConvertContent/ResolveLanguages.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/ConvertContent/ResolveLanguages.cs index 6d768b7c6..fe842b807 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/ConvertContent/ResolveLanguages.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/ConvertContent/ResolveLanguages.cs @@ -48,12 +48,30 @@ namespace Squidex.Domain.Apps.Core.ConvertContent if (source.TryGetNonNull(InvariantPartitioning.Key, out var value)) { - var result = new ContentFieldData + source = new ContentFieldData { [languages.Master] = value }; + } + + if (resolveFallback) + { + foreach (var languageCode in languageCodes) + { + if (source.TryGetNonNull(languageCode, out _)) + { + continue; + } - return result; + foreach (var fallback in languages.GetPriorities(languageCode)) + { + if (source.TryGetNonNull(fallback, out var fallbackValue)) + { + source[languageCode] = fallbackValue; + break; + } + } + } } while (true) @@ -76,28 +94,6 @@ namespace Squidex.Domain.Apps.Core.ConvertContent } } - if (!resolveFallback) - { - return source; - } - - foreach (var languageCode in languageCodes) - { - if (source.TryGetNonNull(languageCode, out _)) - { - continue; - } - - foreach (var fallback in languages.GetPriorities(languageCode)) - { - if (source.TryGetNonNull(fallback, out var fallbackValue)) - { - source[languageCode] = fallbackValue; - break; - } - } - } - return source; } } diff --git a/backend/src/Squidex/Areas/Api/Config/OpenApi/XmlTagProcessor.cs b/backend/src/Squidex/Areas/Api/Config/OpenApi/XmlTagProcessor.cs index 9d4c938a9..df41260ba 100644 --- a/backend/src/Squidex/Areas/Api/Config/OpenApi/XmlTagProcessor.cs +++ b/backend/src/Squidex/Areas/Api/Config/OpenApi/XmlTagProcessor.cs @@ -33,7 +33,7 @@ namespace Squidex.Areas.Api.Config.OpenApi if (description != null) { - tag.Description ??= string.Empty; + tag.Description ??= string.Empty; if (!tag.Description.Contains(description, StringComparison.Ordinal)) { diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs index 32d1a5f23..2308c8913 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs @@ -249,7 +249,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent var actual = new ContentConverter(ResolvedComponents.Empty, schema) - .Add(new ResolveLanguages(languages)) + .Add(new ResolveLanguages(languages, false)) .Convert(source); var expected = @@ -261,6 +261,41 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent Assert.Equal(expected, actual); } + [Theory] + [MemberData(nameof(InvalidValues))] + public void Should_remove_unwanted_languages_and_invariant(JsonValue value) + { + var field1 = Fields.String(1, "string", Partitioning.Language); + + var schema = + new Schema("my-schema") + .AddField(field1); + + var source = + new ContentData() + .AddField(field1.Name, + new ContentFieldData() + .AddLocalized("iv", "A") + .AddLocalized("it", "B")); + + if (value != false) + { + source[field1.Name]!["en"] = value!; + } + + var actual = + new ContentConverter(ResolvedComponents.Empty, schema) + .Add(new ResolveLanguages(languages, false, Language.DE)) + .Convert(source); + + var expected = + new ContentData() + .AddField(field1.Name, + new ContentFieldData()); + + Assert.Equal(expected, actual); + } + [Theory] [MemberData(nameof(InvalidValues))] public void Should_not_resolve_master_language_if_not_found(JsonValue value) @@ -301,6 +336,35 @@ namespace Squidex.Domain.Apps.Core.Operations.ConvertContent Assert.Equal(expected, actual); } + [Fact] + public void Should_resolve_language_from_master_and_filter() + { + var field1 = Fields.String(1, "string", Partitioning.Language); + + var schema = + new Schema("my-schema") + .AddField(field1); + + var source = + new ContentData() + .AddField(field1.Name, + new ContentFieldData() + .AddLocalized("en", "A")); + + var actual = + new ContentConverter(ResolvedComponents.Empty, schema) + .Add(new ResolveLanguages(languages, true, Language.DE)) + .Convert(source); + + var expected = + new ContentData() + .AddField(field1.Name, + new ContentFieldData() + .AddLocalized("de", "A")); + + Assert.Equal(expected, actual); + } + [Fact] public void Should_keep_invariant() { diff --git a/frontend/src/app/features/content/module.ts b/frontend/src/app/features/content/module.ts index 4a776dd58..2ee7cf034 100644 --- a/frontend/src/app/features/content/module.ts +++ b/frontend/src/app/features/content/module.ts @@ -17,9 +17,6 @@ const routes: Routes = [ component: SchemasPageComponent, canActivate: [LoadLanguagesGuard, LoadSchemasGuard], children: [ - { - path: '', - }, { path: '__calendar', component: CalendarPageComponent, diff --git a/frontend/src/app/features/settings/pages/templates/templates-page.component.html b/frontend/src/app/features/settings/pages/templates/templates-page.component.html index fec31a9af..54f724cd8 100644 --- a/frontend/src/app/features/settings/pages/templates/templates-page.component.html +++ b/frontend/src/app/features/settings/pages/templates/templates-page.component.html @@ -10,7 +10,7 @@ -
+
diff --git a/frontend/src/app/framework/angular/forms/form-alert.component.html b/frontend/src/app/framework/angular/forms/form-alert.component.html index b8ad2ef50..da8d82e0b 100644 --- a/frontend/src/app/framework/angular/forms/form-alert.component.html +++ b/frontend/src/app/framework/angular/forms/form-alert.component.html @@ -1,3 +1,3 @@ -
+
\ No newline at end of file diff --git a/frontend/src/app/framework/angular/forms/form-alert.component.ts b/frontend/src/app/framework/angular/forms/form-alert.component.ts index fd0ebae3d..e430599a7 100644 --- a/frontend/src/app/framework/angular/forms/form-alert.component.ts +++ b/frontend/src/app/framework/angular/forms/form-alert.component.ts @@ -25,4 +25,7 @@ export class FormAlertComponent { @Input() public light?: boolean | null; + + @Input() + public large?: boolean | null; } diff --git a/frontend/src/app/theme/_bootstrap.scss b/frontend/src/app/theme/_bootstrap.scss index 36f77e8e4..358c3b12e 100644 --- a/frontend/src/app/theme/_bootstrap.scss +++ b/frontend/src/app/theme/_bootstrap.scss @@ -63,6 +63,10 @@ color: inherit; } + &.large { + font-size: 1rem; + } + a { color: inherit; } diff --git a/frontend/src/app/theme/_mixins.scss b/frontend/src/app/theme/_mixins.scss index 7c5c17814..89deaa17a 100644 --- a/frontend/src/app/theme/_mixins.scss +++ b/frontend/src/app/theme/_mixins.scss @@ -24,10 +24,12 @@ } @mixin build-text-button($color) { - color: $color; + color: $color !important; &:disabled, &.disabled { + border: none; + border-radius: 0; opacity: .4; } diff --git a/frontend/src/app/theme/_vars.scss b/frontend/src/app/theme/_vars.scss index 31e15d79d..80e35983c 100644 --- a/frontend/src/app/theme/_vars.scss +++ b/frontend/src/app/theme/_vars.scss @@ -78,6 +78,10 @@ $panel-sidebar: 3.75rem; $font-small: 85%; $font-smallest: 80%; +$btn-disabled-color: inherit; +$btn-disabled-bg: inherit; +$btn-disabled-border-color: inherit; + $history-dot-size: 10px; $history-dot-offset-x: -($history-dot-size * .5 + 1px); $history-dot-sm-size: 6px;