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 FileHash { get; }
string MimeType { get; }
string Slug { get; } string Slug { get; }
AssetMetadata Metadata { get; } AssetMetadata Metadata { get; }

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

@ -1,4 +1,4 @@
// ========================================================================== // ==========================================================================
// Squidex Headless CMS // Squidex Headless CMS
// ========================================================================== // ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt) // Copyright (c) Squidex UG (haftungsbeschraenkt)
@ -76,12 +76,9 @@ namespace Squidex.Domain.Apps.Core.ValidateContent.Validators
foundIds.Add(asset.AssetId); foundIds.Add(asset.AssetId);
ValidateCommon(asset, path, addError); ValidateCommon(asset, path, addError);
ValidateIsImage(asset, path, addError);
if (asset.Type != AssetType.Image) if (asset.Type == AssetType.Image)
{
ValidateNonImage(path, addError);
}
else
{ {
ValidateImage(asset, path, addError); 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")); 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; } DomainId ParentId { get; }
string MimeType { get; }
bool IsProtected { get; } bool IsProtected { get; }
long FileVersion { 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 document = TestAssets.Document(DomainId.NewGuid());
private readonly IAssetInfo image1 = TestAssets.Image(DomainId.NewGuid()); private readonly IAssetInfo image1 = TestAssets.Image(DomainId.NewGuid());
private readonly IAssetInfo image2 = TestAssets.Image(DomainId.NewGuid()); private readonly IAssetInfo image2 = TestAssets.Image(DomainId.NewGuid());
private readonly IAssetInfo imageSvg = TestAssets.Svg(DomainId.NewGuid());
[Fact] [Fact]
public async Task Should_not_add_error_if_assets_are_valid() 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); 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] [Fact]
public async Task Should_add_error_if_references_are_required() public async Task Should_add_error_if_references_are_required()
{ {
@ -240,7 +251,7 @@ namespace Squidex.Domain.Apps.Core.Operations.ValidateContent.Validators
{ {
return ids => 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); 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 FileHash { get; set; }
public string MimeType { get; set; }
public string Slug { get; set; } public string Slug { get; set; }
public long FileSize { get; set; } public long FileSize { get; set; }
@ -61,5 +63,17 @@ namespace Squidex.Domain.Apps.Core.TestHelpers
.SetPixelHeight(600) .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 { Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2 } from '@angular/core';
import { Types } from '@app/framework/internal'; import { Types } from '@app/framework/internal';
const ImageTypes: ReadonlyArray<string> = [
'image/jpeg',
'image/png',
'image/jpg',
'image/gif',
];
@Directive({ @Directive({
selector: '[sqxDropFile]', selector: '[sqxDropFile]',
}) })
@ -204,7 +197,7 @@ export class FileDropDirective {
} }
private isImage(file: { type: string }) { private isImage(file: { type: string }) {
return !this.onlyImages || ImageTypes.indexOf(file.type) >= 0; return !this.onlyImages || file.type.indexOf('image/') === 0;
} }
} }

Loading…
Cancel
Save