Browse Source

Improve news.

pull/861/head
Sebastian 4 years ago
parent
commit
a2996f2206
  1. 2
      backend/src/Squidex/Areas/Api/Controllers/News/Models/FeaturesDto.cs
  2. 26
      backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs
  3. 2
      backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/ScriptingCompleterTests.cs
  4. 4
      frontend/src/app/features/apps/pages/news-dialog.component.html
  5. 4
      frontend/src/app/features/apps/pages/news-dialog.component.scss
  6. 2
      frontend/src/app/features/settings/pages/asset-scripts/asset-scripts-page.component.ts

2
backend/src/Squidex/Areas/Api/Controllers/News/Models/FeaturesDto.cs

@ -15,7 +15,7 @@ namespace Squidex.Areas.Api.Controllers.News.Models
/// The latest features. /// The latest features.
/// </summary> /// </summary>
[LocalizedRequired] [LocalizedRequired]
public List<FeatureDto> Features { get; set; } public List<FeatureDto> Features { get; } = new List<FeatureDto>();
/// <summary> /// <summary>
/// The recent version. /// The recent version.

26
backend/src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs

@ -13,7 +13,7 @@ namespace Squidex.Areas.Api.Controllers.News.Service
{ {
public sealed class FeaturesService public sealed class FeaturesService
{ {
private const int FeatureVersion = 19; private const int FeatureVersion = 21;
private readonly QueryContext flatten = QueryContext.Default.Flatten(); private readonly QueryContext flatten = QueryContext.Default.Flatten();
private readonly IContentsClient<NewsEntity, FeatureDto> client; private readonly IContentsClient<NewsEntity, FeatureDto> client;
@ -44,30 +44,38 @@ namespace Squidex.Areas.Api.Controllers.News.Service
{ {
var result = new FeaturesDto var result = new FeaturesDto
{ {
Version = FeatureVersion Version = version
}; };
if (client != null && version < FeatureVersion) if (client != null && version < FeatureVersion)
{ {
try try
{ {
var query = new ContentQuery var query = new ContentQuery();
if (version == 0)
{
query.Filter = $"data/version/iv eq {FeatureVersion}";
}
else
{ {
Filter = $"data/version/iv ge {FeatureVersion}" query.Filter = $"data/version/iv le {FeatureVersion} and data/version/iv gt {version}";
}; }
var features = await client.GetAsync(query, flatten, ct); var features = await client.GetAsync(query, flatten, ct);
result.Features = features.Items.Select(x => x.Data).ToList(); result.Features.AddRange(features.Items.Select(x => x.Data).ToList());
if (features.Items.Count > 0)
{
result.Version = features.Items.Max(x => x.Version);
}
} }
catch catch
{ {
result.Features = new List<FeatureDto>();
} }
} }
result.Features ??= new List<FeatureDto>();
return result; return result;
} }
} }

2
backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/ScriptingCompleterTests.cs

@ -190,7 +190,7 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting
AssertAssetTrigger(result); AssertAssetTrigger(result);
} }
private void AssertAssetTrigger(IReadOnlyList<ScriptingValue> result) private static void AssertAssetTrigger(IReadOnlyList<ScriptingValue> result)
{ {
AssertCompletion(result, AssertCompletion(result,
PresetActor("event.actor"), PresetActor("event.actor"),

4
frontend/src/app/features/apps/pages/news-dialog.component.html

@ -7,10 +7,12 @@
<div class="help"> <div class="help">
<h1>{{ 'news.headline' | sqxTranslate }}</h1> <h1>{{ 'news.headline' | sqxTranslate }}</h1>
<div *ngFor="let feature of features; trackBy: trackByFeature"> <div *ngFor="let feature of features; trackBy: trackByFeature; let last = last">
<h4>{{feature.name}}</h4> <h4>{{feature.name}}</h4>
<div [innerHTML]="feature.text | sqxHelpMarkdown"></div> <div [innerHTML]="feature.text | sqxHelpMarkdown"></div>
<hr [class.hidden]="last" />
</div> </div>
</div> </div>
</ng-container> </ng-container>

4
frontend/src/app/features/apps/pages/news-dialog.component.scss

@ -13,3 +13,7 @@
margin-bottom: 1.5rem; margin-bottom: 1.5rem;
} }
} }
hr {
margin: 3rem 7rem;
}

2
frontend/src/app/features/settings/pages/asset-scripts/asset-scripts-page.component.ts

@ -15,7 +15,7 @@ import { AppsState, AssetCompletions, AssetScriptsState, AssetsService, EditAsse
templateUrl: './asset-scripts-page.component.html', templateUrl: './asset-scripts-page.component.html',
}) })
export class AssetScriptsPageComponent extends ResourceOwner implements OnInit { export class AssetScriptsPageComponent extends ResourceOwner implements OnInit {
public assetScript = 'Annotate'; public assetScript = 'annotate';
public assetCompletions: Observable<AssetCompletions> = EMPTY; public assetCompletions: Observable<AssetCompletions> = EMPTY;
public editForm = new EditAssetScriptsForm(); public editForm = new EditAssetScriptsForm();

Loading…
Cancel
Save