Browse Source

Fixes

pull/479/head
Sebastian 6 years ago
parent
commit
df870cceac
  1. 4
      backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentEnricher.cs
  2. 4
      backend/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs
  3. 38
      frontend/app/features/content/pages/content/content-page.component.ts
  4. 14
      frontend/app/shared/components/forms/rich-editor.component.ts

4
backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentEnricher.cs

@ -65,6 +65,8 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
Guard.NotNull(contents);
Guard.NotNull(context);
var app = context.App;
using (Profiler.TraceMethod<ContentEnricher>())
{
var results = new List<ContentEntity>();
@ -96,6 +98,8 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries
{
content.CacheDependencies = new HashSet<object?>
{
app.Id,
app.Version,
schema.Id,
schema.Version
};

4
backend/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentDto.cs

@ -165,6 +165,8 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models
if (content.CanUpdate)
{
AddPutLink("update", controller.Url<ContentsController>(x => nameof(x.PutContent), values));
AddPatchLink("patch", controller.Url<ContentsController>(x => nameof(x.PatchContent), values));
}
if (Status == Status.Published)
@ -172,8 +174,6 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models
AddPutLink("draft/propose", controller.Url<ContentsController>(x => nameof(x.PutContent), values) + "?asDraft=true");
}
AddPatchLink("patch", controller.Url<ContentsController>(x => nameof(x.PatchContent), values));
if (content.Nexts != null)
{
foreach (var next in content.Nexts)

38
frontend/app/features/content/pages/content/content-page.component.ts

@ -107,6 +107,10 @@ export class ContentPageComponent extends ResourceOwner implements CanComponentD
this.own(
this.contentsState.selectedContent
.subscribe(content => {
const isNewContent = isOtherContent(content, this.content);
this.content = content;
this.autoSaveKey = {
schemaId: this.schema.id,
schemaVersion: this.schema.version,
@ -119,24 +123,20 @@ export class ContentPageComponent extends ResourceOwner implements CanComponentD
const clone = this.tempService.fetch();
const autosaved = this.autoSaveService.get(this.autoSaveKey);
if (clone) {
this.loadContent(clone, true);
} else {
const autosaved = this.autoSaveService.get(this.autoSaveKey);
if (autosaved && this.isOtherContent(content) && this.contentForm.hasChanges(autosaved)) {
this.dialogs.confirm('Unsaved changes', 'You have unsaved changes. Do you want to load them now?')
.subscribe(shouldLoad => {
if (shouldLoad) {
this.loadContent(autosaved, false);
} else {
this.autoSaveService.remove(this.autoSaveKey);
}
});
}
} else if (isNewContent && autosaved && this.contentForm.hasChanges(autosaved)) {
this.dialogs.confirm('Unsaved changes', 'You have unsaved changes. Do you want to load them now?')
.subscribe(shouldLoad => {
if (shouldLoad) {
this.loadContent(autosaved, false);
} else {
this.autoSaveService.remove(this.autoSaveKey);
}
});
}
this.content = content;
}));
this.own(
@ -155,10 +155,6 @@ export class ContentPageComponent extends ResourceOwner implements CanComponentD
}));
}
private isOtherContent(content: ContentDto | null | undefined) {
return !this.content || !content || content.id !== this.content.id;
}
public canDeactivate(): Observable<boolean> {
return this.checkPendingChanges('close the current content view').pipe(
tap(confirmed => {
@ -339,4 +335,8 @@ export class ContentPageComponent extends ResourceOwner implements CanComponentD
public trackByField(index: number, field: FieldDto) {
return field.fieldId + this.schema.id;
}
}
function isOtherContent(lhs: ContentDto | null | undefined, rhs: ContentDto | null | undefined) {
return !lhs || !rhs || lhs.id !== rhs.id;
}

14
frontend/app/shared/components/forms/rich-editor.component.ts

@ -210,10 +210,16 @@ export class RichEditorComponent extends StatefulControlComponent<undefined, str
let content = '';
for (const asset of assets) {
if (asset.type === 'Video') {
content += `<video src="${asset.fullUrl(this.apiUrl)}" />`;
} else {
content += `<img src="${asset.fullUrl(this.apiUrl)}" alt="${asset.fileName}" />`;
switch (asset.type) {
case 'Video':
content += `<video src="${asset.fullUrl(this.apiUrl)}" />`;
break;
case 'Video':
content += `<img src="${asset.fullUrl(this.apiUrl)}" alt="${asset.fileName}" />`;
break;
default:
content += `<a href="${asset.fullUrl(this.apiUrl)}" alt="${asset.fileName}">${asset.fileName}</a>`;
break;
}
}

Loading…
Cancel
Save