Browse Source

Fix for image assets.

pull/728/head
Sebastian 5 years ago
parent
commit
64290a25f1
  1. 2
      backend/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/IAssetInfo.cs
  2. 13
      backend/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/Validators/AssetsValidator.cs
  3. 2
      backend/src/Squidex.Domain.Apps.Entities/Assets/IAssetEntity.cs
  4. 13
      backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/Validators/AssetsValidatorTests.cs
  5. 14
      backend/tests/Squidex.Domain.Apps.Core.Tests/TestHelpers/TestAssets.cs
  6. 9
      frontend/app/framework/angular/forms/file-drop.directive.ts

2
backend/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/IAssetInfo.cs

@ -20,6 +20,8 @@ namespace Squidex.Domain.Apps.Core.ValidateContent
string FileHash { get; }
string MimeType { get; }
string Slug { get; }
AssetMetadata Metadata { get; }

13
backend/src/Squidex.Domain.Apps.Core.Operations/ValidateContent/Validators/AssetsValidator.cs

@ -1,4 +1,4 @@
// ==========================================================================
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
@ -76,12 +76,9 @@ namespace Squidex.Domain.Apps.Core.ValidateContent.Validators
foundIds.Add(asset.AssetId);
ValidateCommon(asset, path, addError);
ValidateIsImage(asset, path, addError);
if (asset.Type != AssetType.Image)
{
ValidateNonImage(path, addError);
}
else
if (asset.Type == AssetType.Image)
{
ValidateImage(asset, path, addError);
}
@ -123,9 +120,9 @@ namespace Squidex.Domain.Apps.Core.ValidateContent.Validators
}
}
private void ValidateNonImage(ImmutableQueue<string> path, AddError addError)
private void ValidateIsImage(IAssetInfo asset, ImmutableQueue<string> path, AddError addError)
{
if (properties.MustBeImage)
if (properties.MustBeImage && asset.Type != AssetType.Image && asset.MimeType != "image/svg+xml")
{
addError(path, T.Get("contents.validation.image"));
}

2
backend/src/Squidex.Domain.Apps.Entities/Assets/IAssetEntity.cs

@ -22,8 +22,6 @@ namespace Squidex.Domain.Apps.Entities.Assets
DomainId ParentId { get; }
string MimeType { get; }
bool IsProtected { get; }
long FileVersion { get; }

13
backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ValidateContent/Validators/AssetsValidatorTests.cs

@ -25,6 +25,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent.Validators
private readonly IAssetInfo document = TestAssets.Document(DomainId.NewGuid());
private readonly IAssetInfo image1 = TestAssets.Image(DomainId.NewGuid());
private readonly IAssetInfo image2 = TestAssets.Image(DomainId.NewGuid());
private readonly IAssetInfo imageSvg = TestAssets.Svg(DomainId.NewGuid());
[Fact]
public async Task Should_not_add_error_if_assets_are_valid()
@ -66,6 +67,16 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent.Validators
Assert.Empty(errors);
}
[Fact]
public async Task Should_not_add_error_if_asset_is_an_image()
{
var sut = Validator(new AssetsFieldProperties { MustBeImage = true });
await sut.ValidateAsync(CreateValue(imageSvg.AssetId, image1.AssetId), errors);
Assert.Empty(errors);
}
[Fact]
public async Task Should_add_error_if_references_are_required()
{
@ -240,7 +251,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent.Validators
{
return ids =>
{
var result = new List<IAssetInfo> { document, image1, image2 };
var result = new List<IAssetInfo> { document, image1, image2, imageSvg };
return Task.FromResult<IReadOnlyList<IAssetInfo>>(result);
};

14
backend/tests/Squidex.Domain.Apps.Core.Tests/TestHelpers/TestAssets.cs

@ -21,6 +21,8 @@ namespace Squidex.Domain.Apps.Core.TestHelpers
public string FileHash { get; set; }
public string MimeType { get; set; }
public string Slug { get; set; }
public long FileSize { get; set; }
@ -61,5 +63,17 @@ namespace Squidex.Domain.Apps.Core.TestHelpers
.SetPixelHeight(600)
};
}
public static AssetInfo Svg(DomainId id)
{
return new AssetInfo
{
AssetId = id,
FileName = "MyImage.png",
FileSize = 1024 * 8,
Type = AssetType.Unknown,
MimeType = "image/svg+xml"
};
}
}
}

9
frontend/app/framework/angular/forms/file-drop.directive.ts

@ -8,13 +8,6 @@
import { Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2 } from '@angular/core';
import { Types } from '@app/framework/internal';
const ImageTypes: ReadonlyArray<string> = [
'image/jpeg',
'image/png',
'image/jpg',
'image/gif',
];
@Directive({
selector: '[sqxDropFile]',
})
@ -204,7 +197,7 @@ export class FileDropDirective {
}
private isImage(file: { type: string }) {
return !this.onlyImages || ImageTypes.indexOf(file.type) >= 0;
return !this.onlyImages || file.type.indexOf('image/') === 0;
}
}

Loading…
Cancel
Save