diff --git a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
index d086da45b..675833005 100644
--- a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
+++ b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
@@ -124,7 +124,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
var context = Context();
var contents = await contentQuery.QueryAsync(context, Q.Empty.WithIds(ids).Ids);
- var response = ContentsDto.FromContents(contents, context, this, app, null);
+ var response = ContentsDto.FromContents(contents.Count, contents, context, this, app, null);
if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys)
{
@@ -159,7 +159,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
var context = Context();
var contents = await contentQuery.QueryAsync(context, name, Q.Empty.WithIds(ids).WithODataQuery(Request.QueryString.ToString()));
- var response = ContentsDto.FromContents(contents, context, this, app, name);
+ var response = ContentsDto.FromContents(contents.Total, contents, context, this, app, name);
if (ShouldProvideSurrogateKeys(response))
{
diff --git a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs
index 50c30d51e..9f664880e 100644
--- a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs
+++ b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs
@@ -30,6 +30,12 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models
[Required]
public ContentDto[] Items { get; set; }
+ ///
+ /// The possible statuses.
+ ///
+ [Required]
+ public string[] Statuses { get; set; }
+
public string ToEtag()
{
return Items.ToManyEtag(Total);
@@ -40,24 +46,18 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models
return Items.ToSurrogateKeys();
}
- public static ContentsDto FromContents(IList contents, QueryContext context, ApiController controller, string app, string schema)
+ public static ContentsDto FromContents(long total, IEnumerable contents, QueryContext context,
+ ApiController controller,
+ string app,
+ string schema)
{
var result = new ContentsDto
{
- Total = contents.Count,
- Items = contents.Select(x => ContentDto.FromContent(x, context, controller, app, schema)).ToArray()
+ Total = total,
+ Items = contents.Select(x => ContentDto.FromContent(x, context, controller, app, schema)).ToArray(),
};
- return result.CreateLinks(controller, app, schema);
- }
-
- public static ContentsDto FromContents(IResultList contents, QueryContext context, ApiController controller, string app, string schema)
- {
- var result = new ContentsDto
- {
- Total = contents.Total,
- Items = contents.Select(x => ContentDto.FromContent(x, context, controller, app, schema)).ToArray()
- };
+ result.Statuses = new string[] { "Archived", "Draft", "Published" };
return result.CreateLinks(controller, app, schema);
}
diff --git a/src/Squidex/app/features/administration/state/event-consumers.state.ts b/src/Squidex/app/features/administration/state/event-consumers.state.ts
index 278578beb..671adbbdc 100644
--- a/src/Squidex/app/features/administration/state/event-consumers.state.ts
+++ b/src/Squidex/app/features/administration/state/event-consumers.state.ts
@@ -7,7 +7,7 @@
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
-import { distinctUntilChanged, map, tap } from 'rxjs/operators';
+import { tap } from 'rxjs/operators';
import {
DialogService,
@@ -31,12 +31,10 @@ type EventConsumersList = ImmutableArray;
@Injectable()
export class EventConsumersState extends State {
public eventConsumers =
- this.changes.pipe(map(x => x.eventConsumers),
- distinctUntilChanged());
+ this.project(x => x.eventConsumers);
public isLoaded =
- this.changes.pipe(map(x => !!x.isLoaded),
- distinctUntilChanged());
+ this.project(x => !!x.isLoaded);
constructor(
private readonly dialogs: DialogService,
diff --git a/src/Squidex/app/features/administration/state/users.state.ts b/src/Squidex/app/features/administration/state/users.state.ts
index 4e3fda2cb..fdaf13365 100644
--- a/src/Squidex/app/features/administration/state/users.state.ts
+++ b/src/Squidex/app/features/administration/state/users.state.ts
@@ -7,7 +7,7 @@
import { Injectable } from '@angular/core';
import { Observable, of } from 'rxjs';
-import { catchError, distinctUntilChanged, map, tap } from 'rxjs/operators';
+import { catchError, tap } from 'rxjs/operators';
import '@app/framework/utils/rxjs-extensions';
@@ -56,24 +56,19 @@ export type UsersResult = { total: number, users: UsersList };
@Injectable()
export class UsersState extends State {
public users =
- this.changes.pipe(map(x => x.users),
- distinctUntilChanged());
+ this.project(x => x.users);
public usersPager =
- this.changes.pipe(map(x => x.usersPager),
- distinctUntilChanged());
+ this.project(x => x.usersPager);
public selectedUser =
- this.changes.pipe(map(x => x.selectedUser),
- distinctUntilChanged());
+ this.project(x => x.selectedUser);
public isLoaded =
- this.changes.pipe(map(x => !!x.isLoaded),
- distinctUntilChanged());
+ this.project(x => !!x.isLoaded);
public canCreate =
- this.changes.pipe(map(x => !!x.canCreate),
- distinctUntilChanged());
+ this.project(x => !!x.canCreate);
constructor(
private readonly dialogs: DialogService,
@@ -119,7 +114,7 @@ export class UsersState extends State {
this.snapshot.usersPager.pageSize,
this.snapshot.usersPager.skip,
this.snapshot.usersQuery).pipe(
- tap(({ total, items, _links, canCreate }) => {
+ tap(({ total, items, canCreate, _links }) => {
if (isReload) {
this.dialogs.notifyInfo('Users reloaded.');
}
diff --git a/src/Squidex/app/features/content/pages/contents/contents-filters-page.component.html b/src/Squidex/app/features/content/pages/contents/contents-filters-page.component.html
index 224f33408..b11d154e4 100644
--- a/src/Squidex/app/features/content/pages/contents/contents-filters-page.component.html
+++ b/src/Squidex/app/features/content/pages/contents/contents-filters-page.component.html
@@ -11,6 +11,18 @@
+
+
+
+