From 0bb143e6463e82b38e2d59fe994e2072d90fe697 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Mon, 20 May 2019 15:32:00 +0200 Subject: [PATCH] Fix for asset form. Fix for asset url. --- .../Assets/AssetContentController.cs | 38 ++++++++++--------- .../Frontend/Middlewares/WebpackMiddleware.cs | 23 +++++------ src/Squidex/app/framework/state.ts | 4 +- src/Squidex/app/shared/state/assets.forms.ts | 1 + 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs b/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs index b7bd86d8e..65dd776eb 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs @@ -8,6 +8,7 @@ using System; using System.IO; using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Net.Http.Headers; using Squidex.Domain.Apps.Entities.Assets; @@ -47,7 +48,8 @@ namespace Squidex.Areas.Api.Controllers.Assets /// /// Get the asset content. /// - /// The id of the asset. + /// The name of the app. + /// The id or slug of the asset. /// Optional suffix that can be used to seo-optimize the link to the image Has not effect. /// The optional version of the asset. /// The target width of the asset, if it is an image. @@ -59,17 +61,27 @@ namespace Squidex.Areas.Api.Controllers.Assets /// 404 => Asset or app not found. /// [HttpGet] - [Route("assets/{id}/{*more}")] + [Route("assets/{app}/{idOrSlug}/{*more}")] [ProducesResponseType(typeof(FileResult), 200)] [ApiCosts(0.5)] - public async Task GetAssetContent(Guid id, string more, + [AllowAnonymous] + public async Task GetAssetContentBySlug(string app, string idOrSlug, string more, [FromQuery] long version = EtagVersion.Any, [FromQuery] int? width = null, [FromQuery] int? height = null, [FromQuery] int? quality = null, [FromQuery] string mode = null) { - var entity = await assetRepository.FindAssetAsync(id); + IAssetEntity entity; + + if (Guid.TryParse(idOrSlug, out var guid)) + { + entity = await assetRepository.FindAssetAsync(guid); + } + else + { + entity = await assetRepository.FindAssetBySlugAsync(App.Id, idOrSlug); + } return DeliverAsset(entity, version, width, height, quality, mode); } @@ -77,8 +89,7 @@ namespace Squidex.Areas.Api.Controllers.Assets /// /// Get the asset content. /// - /// The name of the app. - /// The id or slug of the asset. + /// The id of the asset. /// Optional suffix that can be used to seo-optimize the link to the image Has not effect. /// The optional version of the asset. /// The target width of the asset, if it is an image. @@ -90,26 +101,17 @@ namespace Squidex.Areas.Api.Controllers.Assets /// 404 => Asset or app not found. /// [HttpGet] - [Route("assets/{app}/{idOrSlug}/{*more}")] + [Route("assets/{id}/{*more}")] [ProducesResponseType(typeof(FileResult), 200)] [ApiCosts(0.5)] - public async Task GetAssetContent(string app, string idOrSlug, string more, + public async Task GetAssetContent(Guid id, string more, [FromQuery] long version = EtagVersion.Any, [FromQuery] int? width = null, [FromQuery] int? height = null, [FromQuery] int? quality = null, [FromQuery] string mode = null) { - IAssetEntity entity; - - if (Guid.TryParse(idOrSlug, out var guid)) - { - entity = await assetRepository.FindAssetAsync(guid); - } - else - { - entity = await assetRepository.FindAssetBySlugAsync(App.Id, idOrSlug); - } + var entity = await assetRepository.FindAssetAsync(id); return DeliverAsset(entity, version, width, height, quality, mode); } diff --git a/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs b/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs index 7c0546ae5..737c0c395 100644 --- a/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs +++ b/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs @@ -25,28 +25,25 @@ namespace Squidex.Areas.Frontend.Middlewares public async Task Invoke(HttpContext context) { - if (context.IsIndex()) + if (context.IsIndex() && context.Response.StatusCode != 304) { - if (context.Response.StatusCode != 304) + using (var client = new HttpClient()) { - using (var client = new HttpClient()) - { - var result = await client.GetAsync(WebpackUrl); + var result = await client.GetAsync(WebpackUrl); - context.Response.StatusCode = (int)result.StatusCode; + context.Response.StatusCode = (int)result.StatusCode; - if (result.IsSuccessStatusCode) - { - var html = await result.Content.ReadAsStringAsync(); + if (result.IsSuccessStatusCode) + { + var html = await result.Content.ReadAsStringAsync(); - html = AdjustBase(html, context.Request.PathBase); + html = AdjustBase(html, context.Request.PathBase); - await context.Response.WriteHtmlAsync(html); - } + await context.Response.WriteHtmlAsync(html); } } } - else if (context.IsHtmlPath()) + else if (context.IsHtmlPath() && context.Response.StatusCode != 304) { var responseBuffer = new MemoryStream(); var responseBody = context.Response.Body; diff --git a/src/Squidex/app/framework/state.ts b/src/Squidex/app/framework/state.ts index dbb773df2..eb5827147 100644 --- a/src/Squidex/app/framework/state.ts +++ b/src/Squidex/app/framework/state.ts @@ -71,7 +71,9 @@ export class Form { if (this.form.valid) { const value = this.transformSubmit(fullValue(this.form)); - this.disable(); + if (value) { + this.disable(); + } return value; } else { diff --git a/src/Squidex/app/shared/state/assets.forms.ts b/src/Squidex/app/shared/state/assets.forms.ts index 7d711093a..115433fad 100644 --- a/src/Squidex/app/shared/state/assets.forms.ts +++ b/src/Squidex/app/shared/state/assets.forms.ts @@ -57,6 +57,7 @@ export class AnnotateAssetForm extends Form