Browse Source

Content workflow finalized.

pull/373/head
Sebastian Stehle 7 years ago
parent
commit
9ec462c4c5
  1. 2
      src/Squidex.Domain.Apps.Entities/Contents/DefaultContentWorkflow.cs
  2. 51
      src/Squidex/app/features/content/pages/content/content-page.component.html
  3. 22
      tests/Squidex.Domain.Apps.Entities.Tests/Contents/DefaultContentWorkflowTests.cs

2
src/Squidex.Domain.Apps.Entities/Contents/DefaultContentWorkflow.cs

@ -38,7 +38,7 @@ namespace Squidex.Domain.Apps.Entities.Contents
public Task<bool> CanUpdateAsync(IContentEntity content)
{
return TaskHelper.True;
return Task.FromResult(content.Status != Status.Archived);
}
public Task<Status[]> GetNextsAsync(IContentEntity content)

51
src/Squidex/app/features/content/pages/content/content-page.component.html

@ -32,7 +32,8 @@
<div class="dropdown dropdown-options ml-1" *ngIf="content">
<sqx-preview-button [schema]="schema" [content]="content"></sqx-preview-button>
<button type="button" class="btn btn-outline-secondary btn-status" (click)="dropdown.toggle()" [class.active]="dropdown.isOpen | async" #optionsButton>
<button type="button" class="btn btn-outline-secondary btn-status" (click)="dropdown.toggle()" [disabled]="schema.isSingleton && !content.isPending"
[class.active]="dropdown.isOpen | async" #optionsButton>
<sqx-content-status
[status]="content.status"
[scheduledTo]="content.scheduleJob?.status"
@ -42,33 +43,35 @@
</sqx-content-status>
</button>
<div class="dropdown-menu" *sqxModalView="dropdown;closeAlways:true" [sqxModalTarget]="optionsButton" @fade>
<a class="dropdown-item" (click)="discardChanges()" *ngIf="content.canDraftDiscard">
Discard changes
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" (click)="publishChanges()" *ngIf="content.canDraftPublish">
Publish changes
</a>
<ng-container>
<a class="dropdown-item" *ngFor="let status of content.statusUpdates" (click)="changeStatus(status)">
Status to {{status}}
<ng-container *ngIf="content.isPending || !schema.isSingleton">
<div class="dropdown-menu" *sqxModalView="dropdown;closeAlways:true" [sqxModalTarget]="optionsButton" @fade>
<a class="dropdown-item" (click)="discardChanges()" *ngIf="content.canDraftDiscard">
Discard changes
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item dropdown-item-delete"
[class.disabled]="!content.canDelete"
(sqxConfirmClick)="delete()"
confirmTitle="Delete content"
confirmText="Do you really want to delete the content?">
Delete
<a class="dropdown-item" (click)="publishChanges()" *ngIf="content.canDraftPublish">
Publish changes
</a>
</ng-container>
</div>
<ng-container *ngIf="!schema.isSingleton">
<a class="dropdown-item" *ngFor="let status of content.statusUpdates" (click)="changeStatus(status)">
Status to {{status}}
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item dropdown-item-delete"
[class.disabled]="!content.canDelete"
(sqxConfirmClick)="delete()"
confirmTitle="Delete content"
confirmText="Do you really want to delete the content?">
Delete
</a>
</ng-container>
</div>
</ng-container>
</div>
<button type="button" class="btn btn-secondary ml-1" (click)="saveAsDraft()" *ngIf="content.canDraftPropose">

22
tests/Squidex.Domain.Apps.Entities.Tests/Contents/DefaultContentWorkflowTests.cs

@ -35,7 +35,7 @@ namespace Squidex.Domain.Apps.Entities.Contents
}
[Fact]
public async Task Should_always_be_able_to_update()
public async Task Should_be_able_to_update_published()
{
var entity = CreateContent(Status.Published);
@ -44,6 +44,26 @@ namespace Squidex.Domain.Apps.Entities.Contents
Assert.True(result);
}
[Fact]
public async Task Should_be_able_to_update_draft()
{
var entity = CreateContent(Status.Published);
var result = await sut.CanUpdateAsync(entity);
Assert.True(result);
}
[Fact]
public async Task Should_not_be_able_to_update_archived()
{
var entity = CreateContent(Status.Archived);
var result = await sut.CanUpdateAsync(entity);
Assert.False(result);
}
[Fact]
public async Task Should_get_next_statuses_for_draft()
{

Loading…
Cancel
Save