Browse Source

Language fixes and styling.

pull/932/head
Sebastian 4 years ago
parent
commit
ddca695ab4
  1. 44
      backend/src/Squidex.Domain.Apps.Core.Operations/ConvertContent/ResolveLanguages.cs
  2. 2
      backend/src/Squidex/Areas/Api/Config/OpenApi/XmlTagProcessor.cs
  3. 66
      backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/FieldConvertersTests.cs
  4. 3
      frontend/src/app/features/content/module.ts
  5. 2
      frontend/src/app/features/settings/pages/templates/templates-page.component.html
  6. 2
      frontend/src/app/framework/angular/forms/form-alert.component.html
  7. 3
      frontend/src/app/framework/angular/forms/form-alert.component.ts
  8. 4
      frontend/src/app/theme/_bootstrap.scss
  9. 4
      frontend/src/app/theme/_mixins.scss
  10. 4
      frontend/src/app/theme/_vars.scss

44
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;
}
}

2
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))
{

66
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()
{

3
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,

2
frontend/src/app/features/settings/pages/templates/templates-page.component.html

@ -10,7 +10,7 @@
<ng-container>
<sqx-list-view innerWidth="50rem" [isLoading]="templatesState.isLoading | async">
<sqx-form-alert [light]="true">
<div class="help" [innerHTML]="'templates.cliHint' | sqxTranslate | sqxMarkdownInline | sqxSafeHtml"></div>
<div [innerHTML]="'templates.cliHint' | sqxTranslate | sqxMarkdownInline | sqxSafeHtml"></div>
</sqx-form-alert>
<ng-container *ngIf="(templatesState.isLoaded | async) && (templatesState.templates | async); let templates">

2
frontend/src/app/framework/angular/forms/form-alert.component.html

@ -1,3 +1,3 @@
<div class="alert alert-hint mt-{{marginTop}} mb-{{marginBottom}} {{class}}" [class.light]="light">
<div class="alert alert-hint mt-{{marginTop}} mb-{{marginBottom}} {{class}}" [class.light]="light" [class.large]="large">
<i class="icon-info-outline"></i> <ng-content></ng-content>
</div>

3
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;
}

4
frontend/src/app/theme/_bootstrap.scss

@ -63,6 +63,10 @@
color: inherit;
}
&.large {
font-size: 1rem;
}
a {
color: inherit;
}

4
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;
}

4
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;

Loading…
Cancel
Save