diff --git a/src/Squidex.Domain.Apps.Entities/Apps/Templates/CreateBlogCommandMiddleware.cs b/src/Squidex.Domain.Apps.Entities/Apps/Templates/CreateBlogCommandMiddleware.cs index 93e9747b9..6eeac4e55 100644 --- a/src/Squidex.Domain.Apps.Entities/Apps/Templates/CreateBlogCommandMiddleware.cs +++ b/src/Squidex.Domain.Apps.Entities/Apps/Templates/CreateBlogCommandMiddleware.cs @@ -105,6 +105,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Templates var command = new CreateSchema { Name = "posts", + Publish = true, Properties = new SchemaProperties { Label = "Posts" @@ -136,8 +137,9 @@ namespace Squidex.Domain.Apps.Entities.Apps.Templates IsListField = true, MaxLength = 100, MinLength = 0, - Label = "Slug" - } + Label = "Slug (Autogenerated)" + }, + IsDisabled = true }, new CreateSchemaField { @@ -158,7 +160,6 @@ namespace Squidex.Domain.Apps.Entities.Apps.Templates var schemaId = new NamedId(command.SchemaId, command.Name); - await publishAsync(new PublishSchema { SchemaId = schemaId }); await publishAsync(new ConfigureScripts { SchemaId = schemaId, @@ -205,8 +206,9 @@ namespace Squidex.Domain.Apps.Entities.Apps.Templates IsListField = true, MaxLength = 100, MinLength = 0, - Label = "Slug" - } + Label = "Slug (Autogenerated)" + }, + IsDisabled = true }, new CreateSchemaField { @@ -227,7 +229,6 @@ namespace Squidex.Domain.Apps.Entities.Apps.Templates var schemaId = new NamedId(command.SchemaId, command.Name); - await publishAsync(new PublishSchema { SchemaId = schemaId }); await publishAsync(new ConfigureScripts { SchemaId = schemaId, diff --git a/src/Squidex.Domain.Apps.Entities/Schemas/Commands/CreateSchema.cs b/src/Squidex.Domain.Apps.Entities/Schemas/Commands/CreateSchema.cs index f303e5c95..afbd735f5 100644 --- a/src/Squidex.Domain.Apps.Entities/Schemas/Commands/CreateSchema.cs +++ b/src/Squidex.Domain.Apps.Entities/Schemas/Commands/CreateSchema.cs @@ -20,6 +20,8 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Commands public SchemaProperties Properties { get; set; } + public bool Publish { get; set; } + public string Name { get; set; } Guid IAggregateCommand.AggregateId diff --git a/src/Squidex.Domain.Apps.Entities/Schemas/State/SchemaState.cs b/src/Squidex.Domain.Apps.Entities/Schemas/State/SchemaState.cs index 5a8755b82..5d06deb3b 100644 --- a/src/Squidex.Domain.Apps.Entities/Schemas/State/SchemaState.cs +++ b/src/Squidex.Domain.Apps.Entities/Schemas/State/SchemaState.cs @@ -70,6 +70,11 @@ namespace Squidex.Domain.Apps.Entities.Schemas.State schema = schema.Update(@event.Properties); } + if (@event.Publish) + { + schema = schema.Publish(); + } + if (@event.Fields != null) { foreach (var eventField in @event.Fields) diff --git a/src/Squidex.Domain.Apps.Events/Schemas/SchemaCreated.cs b/src/Squidex.Domain.Apps.Events/Schemas/SchemaCreated.cs index c44595bbc..2e7c6ec2b 100644 --- a/src/Squidex.Domain.Apps.Events/Schemas/SchemaCreated.cs +++ b/src/Squidex.Domain.Apps.Events/Schemas/SchemaCreated.cs @@ -19,5 +19,7 @@ namespace Squidex.Domain.Apps.Events.Schemas public SchemaFields Fields { get; set; } public SchemaProperties Properties { get; set; } + + public bool Publish { get; set; } } } diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/CreateSchemaDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/CreateSchemaDto.cs index 80b0d9a3b..cb6a04ae7 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/CreateSchemaDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/CreateSchemaDto.cs @@ -28,5 +28,10 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models /// Optional fields. /// public List Fields { get; set; } + + /// + /// Set it to true to autopublish the schema. + /// + public bool Publish { get; set; } } } diff --git a/src/Squidex/Pipeline/ApiExceptionFilterAttribute.cs b/src/Squidex/Pipeline/ApiExceptionFilterAttribute.cs index ae8ec9899..c0248029e 100644 --- a/src/Squidex/Pipeline/ApiExceptionFilterAttribute.cs +++ b/src/Squidex/Pipeline/ApiExceptionFilterAttribute.cs @@ -62,28 +62,7 @@ namespace Squidex.Pipeline error.StatusCode = statusCode; return new ObjectResult(error) { StatusCode = statusCode }; - } - - public override void OnActionExecuting(ActionExecutingContext context) - { - if (!context.ModelState.IsValid) - { - var errors = new List(); - - foreach (var m in context.ModelState) - { - foreach (var e in m.Value.Errors) - { - if (!string.IsNullOrWhiteSpace(e.ErrorMessage)) - { - errors.Add(new ValidationError(e.ErrorMessage, m.Key)); - } - } - } - - throw new ValidationException("The model is not valid.", errors); - } - } + }+ public void OnException(ExceptionContext context) {