ParseAsync(Context context, Q q, Schema? schema = null, CancellationToken ct = default) diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentQueryService.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentQueryService.cs index 48b2748c7a..39f60bd209 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentQueryService.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/ContentQueryService.cs @@ -22,12 +22,12 @@ public sealed class ContentQueryService( IContentEnricher contentEnricher, IContentRepository contentRepository, IContentLoader contentLoader, - IOptionsoptions, + IOptions options, ContentQueryParser queryParser) : IContentQueryService { private const string SingletonId = "_schemaId_"; - private readonly ContentOptions options = options.Value; + private readonly ContentsOptions options = options.Value; public async IAsyncEnumerable StreamAsync(Context context, string schemaIdOrName, int skip, [EnumeratorCancellation] CancellationToken ct = default) diff --git a/backend/src/Squidex.Shared/Texts.fr.resx b/backend/src/Squidex.Shared/Texts.fr.resx index b7420196ea..7a2a7a86bd 100644 --- a/backend/src/Squidex.Shared/Texts.fr.resx +++ b/backend/src/Squidex.Shared/Texts.fr.resx @@ -1132,9 +1132,6 @@ Vous ne pouvez pas vous verrouiller. - -- Enter your E-Mail Address to login with your Company Account and single sign on (SSO). @@ -1150,18 +1147,6 @@{action} avec <strong>{provider}</strong> - -Cliquez ici pour vous identifier - - -Déjà enregistré? - - -Cliquez ici pour vous inscrire - - -Pas encore de compte ? -Entrer le mot de passe diff --git a/backend/src/Squidex.Shared/Texts.it.resx b/backend/src/Squidex.Shared/Texts.it.resx index f1a640ac2c..fd23686443 100644 --- a/backend/src/Squidex.Shared/Texts.it.resx +++ b/backend/src/Squidex.Shared/Texts.it.resx @@ -1132,9 +1132,6 @@Non puoi bloccare te stesso. - -- Enter your E-Mail Address to login with your Company Account and single sign on (SSO). @@ -1150,18 +1147,6 @@{action} con <strong>{provider}</strong> - -Clicca qui per accedere - - -Sei già registrato? - - -Clicca qui per registrarti - - -Non hai ancora un account? -Inserisci la password diff --git a/backend/src/Squidex.Shared/Texts.nl.resx b/backend/src/Squidex.Shared/Texts.nl.resx index 4777b468d9..16b022f673 100644 --- a/backend/src/Squidex.Shared/Texts.nl.resx +++ b/backend/src/Squidex.Shared/Texts.nl.resx @@ -1132,9 +1132,6 @@Je kunt jezelf niet vergrendelen. - -- Enter your E-Mail Address to login with your Company Account and single sign on (SSO). @@ -1150,18 +1147,6 @@{action} met <strong> {provider} </strong> - -Klik hier om in te loggen - - -Al geregistreerd? - - -Klik hier om in te schrijven - - -Nog geen account? -Voer wachtwoord in diff --git a/backend/src/Squidex.Shared/Texts.pt.resx b/backend/src/Squidex.Shared/Texts.pt.resx index 0d43a597e8..eb556c0333 100644 --- a/backend/src/Squidex.Shared/Texts.pt.resx +++ b/backend/src/Squidex.Shared/Texts.pt.resx @@ -1132,9 +1132,6 @@Você não pode se trancar. - -- Enter your E-Mail Address to login with your Company Account and single sign on (SSO). @@ -1150,18 +1147,6 @@{action} com <strong>{provider}</strong> - -Carregue aqui para entrar - - -Já registado? - - -Carregue aqui para registar - - -Sem conta? -Introduzir Password diff --git a/backend/src/Squidex.Shared/Texts.resx b/backend/src/Squidex.Shared/Texts.resx index b5a7f9ea35..9c27ac834f 100644 --- a/backend/src/Squidex.Shared/Texts.resx +++ b/backend/src/Squidex.Shared/Texts.resx @@ -1132,9 +1132,6 @@You cannot lock yourself. - -- Enter your E-Mail Address to login with your Company Account and single sign on (SSO). @@ -1150,18 +1147,6 @@{action} with <strong>{provider}</strong> - -Click here to login - - -Already registered? - - -Click here to signup - - -No account yet? -Enter Password diff --git a/backend/src/Squidex.Shared/Texts.zh.resx b/backend/src/Squidex.Shared/Texts.zh.resx index 144156c01e..8a1756dabf 100644 --- a/backend/src/Squidex.Shared/Texts.zh.resx +++ b/backend/src/Squidex.Shared/Texts.zh.resx @@ -1132,9 +1132,6 @@你不能锁定自己。 - -- Enter your E-Mail Address to login with your Company Account and single sign on (SSO). @@ -1150,18 +1147,6 @@{action} with <strong>{provider}</strong> - -点击此处登录 - - -已经注册? - - -点击此处注册 - - -还没有账号? -输入密码 diff --git a/backend/src/Squidex.Web/Services/UrlGenerator.cs b/backend/src/Squidex.Web/Services/UrlGenerator.cs index 718d7061d1..6c9932fc56 100644 --- a/backend/src/Squidex.Web/Services/UrlGenerator.cs +++ b/backend/src/Squidex.Web/Services/UrlGenerator.cs @@ -20,11 +20,11 @@ public sealed class UrlGenerator( IGenericUrlGenerator urlGenerator, IAssetFileStore assetFileStore, IOptionsassetOptions, - IOptions contentOptions) + IOptions contentOptions) : IUrlGenerator, IHttpImageEndpoint { private readonly AssetOptions assetOptions = assetOptions.Value; - private readonly ContentOptions contentOptions = contentOptions.Value; + private readonly ContentsOptions contentOptions = contentOptions.Value; public string? AssetThumbnail(NamedId appId, string idOrSlug, AssetType assetType) { diff --git a/backend/src/Squidex/Areas/Api/Controllers/Schemas/SchemaIndexesController.cs b/backend/src/Squidex/Areas/Api/Controllers/Schemas/SchemaIndexesController.cs index 59913427fe..c1d53b0048 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Schemas/SchemaIndexesController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Schemas/SchemaIndexesController.cs @@ -79,7 +79,7 @@ public async Task PostIndex(string app, string schema, [FromBody] /// The name of the index. /// Schema index deletion added to job queue. ///Schema or app not found. - [HttpPost] + [HttpDelete] [Route("apps/{app}/schemas/{schema}/indexes/{name}")] [ProducesResponseType(StatusCodes.Status204NoContent)] [ApiPermissionOrAnonymous(PermissionIds.AppSchemasIndexes)] diff --git a/backend/src/Squidex/Areas/Frontend/Middlewares/IndexExtensions.cs b/backend/src/Squidex/Areas/Frontend/Middlewares/IndexExtensions.cs index cd7ec6fc6b..ec60bc590a 100644 --- a/backend/src/Squidex/Areas/Frontend/Middlewares/IndexExtensions.cs +++ b/backend/src/Squidex/Areas/Frontend/Middlewares/IndexExtensions.cs @@ -32,7 +32,6 @@ public static string AddOptions(this string html, HttpContext httpContext) }; var uiOptions = httpContext.RequestServices.GetService>()?.Value; - if (uiOptions != null) { var clonedOptions = uiOptions with diff --git a/backend/src/Squidex/Config/Domain/ContentsServices.cs b/backend/src/Squidex/Config/Domain/ContentsServices.cs index f47dceaac4..fe034aebf6 100644 --- a/backend/src/Squidex/Config/Domain/ContentsServices.cs +++ b/backend/src/Squidex/Config/Domain/ContentsServices.cs @@ -24,7 +24,7 @@ public static class ContentsServices { public static void AddSquidexContents(this IServiceCollection services, IConfiguration config) { - services.Configure (config, + services.Configure (config, "contents"); services.Configure (config, diff --git a/backend/src/Squidex/Config/Domain/FontendServices.cs b/backend/src/Squidex/Config/Domain/FontendServices.cs index c0a296d31b..85cb868e55 100644 --- a/backend/src/Squidex/Config/Domain/FontendServices.cs +++ b/backend/src/Squidex/Config/Domain/FontendServices.cs @@ -9,6 +9,7 @@ using Microsoft.Extensions.Options; using Squidex.AI; using Squidex.Areas.Api.Controllers.UI; +using Squidex.Domain.Apps.Entities.Contents; using Squidex.Domain.Apps.Entities.History; using Squidex.Hosting; using Squidex.Text.Translations; @@ -56,6 +57,13 @@ public static void AddSquidexFrontend(this IServiceCollection services) options.More["canUseChatBot"] = chatAgent.IsConfigured; }); + services.Configure ((services, options) => + { + var contentsOptions = services.GetRequiredService >(); + + options.More["canCreateIndexes"] = contentsOptions.Value.OptimizeForSelfHosting; + }); + services.Configure ((services, options) => { if (string.IsNullOrWhiteSpace(options.CollaborationService)) diff --git a/backend/src/Squidex/appsettings.json b/backend/src/Squidex/appsettings.json index 10f5f86e6b..3c07bb93d0 100644 --- a/backend/src/Squidex/appsettings.json +++ b/backend/src/Squidex/appsettings.json @@ -161,6 +161,9 @@ // Hide all onboarding tooltips and dialogs. "hideOnboarding": false, + // Hide the indexes UI. + "hideIndexes": false, + // Hide the today and now button. "hideDateButtons": false, diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs index 305e2b1895..efe82fab23 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/GraphQLTestBase.cs @@ -126,7 +126,7 @@ protected CachingGraphQLResolver CreateSut(params Schema[] schemas) { x.CanCache = true; }) - .Configure (x => + .Configure (x => { x.CanCache = true; }) diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/MongoDb/ContentsQueryFixture.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/MongoDb/ContentsQueryFixture.cs index 4ad3793960..21cfaf98c7 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/MongoDb/ContentsQueryFixture.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/MongoDb/ContentsQueryFixture.cs @@ -75,7 +75,7 @@ protected ContentsQueryFixture(bool selfHosting) var services = new ServiceCollection() - .AddSingleton(Options.Create(new ContentOptions { OptimizeForSelfHosting = selfHosting })) + .AddSingleton(Options.Create(new ContentsOptions { OptimizeForSelfHosting = selfHosting })) .AddSingleton(CreateAppProvider()) .AddSingleton(mongoClient) .AddSingleton(mongoDatabase) diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ContentQueryParserTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ContentQueryParserTests.cs index 184bd42470..7f855e9efa 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ContentQueryParserTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ContentQueryParserTests.cs @@ -26,7 +26,7 @@ public class ContentQueryParserTests : GivenContext public ContentQueryParserTests() { - var options = Options.Create(new ContentOptions { DefaultPageSize = 30 }); + var options = Options.Create(new ContentsOptions { DefaultPageSize = 30 }); Schema = Schema .AddString(1, "firstName", Partitioning.Invariant) diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ContentQueryServiceTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ContentQueryServiceTests.cs index 25ecc6e00e..5e619a2185 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ContentQueryServiceTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ContentQueryServiceTests.cs @@ -45,7 +45,7 @@ public ContentQueryServiceTests() A.CallTo(() => queryParser.ParseAsync(A ._, A ._, A._, CancellationToken)) .ReturnsLazily(c => Task.FromResult(c.GetArgument (1)!)); - var options = Options.Create(new ContentOptions()); + var options = Options.Create(new ContentsOptions()); sut = new ContentQueryService( AppProvider, diff --git a/frontend/.prettierrc b/frontend/.prettierrc index adc03ac843..4647d2c956 100644 --- a/frontend/.prettierrc +++ b/frontend/.prettierrc @@ -1,5 +1,6 @@ { "plugins": ["squidex-prettier-plugin-organize-attributes"], + "endOfLine": "crlf", "overrides": [ { "files": "*.html", diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f6533e98c7..28d94c4d8d 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -107,7 +107,7 @@ "karma-coverage": "~2.2.1", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", - "prettier": "^3.2.5", + "prettier": "3.3.3", "squidex-prettier-plugin-organize-attributes": "^1.0.1", "storybook": "^8.1.5", "stylelint": "16.6.1", @@ -22682,9 +22682,9 @@ } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" diff --git a/frontend/package.json b/frontend/package.json index 831f431e84..01b76c3465 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -114,7 +114,7 @@ "karma-coverage": "~2.2.1", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", - "prettier": "^3.2.5", + "prettier": "3.3.3", "squidex-prettier-plugin-organize-attributes": "^1.0.1", "storybook": "^8.1.5", "stylelint": "16.6.1", diff --git a/frontend/src/app/_theme.html b/frontend/src/app/_theme.html index 9afd23c3f7..f96941c7b8 100644 --- a/frontend/src/app/_theme.html +++ b/frontend/src/app/_theme.html @@ -1,1561 +1,1524 @@ - + - - - -Squidex theme - - - - - - - - --- -----Squidex Theme
--+ + +Squidex theme + + + + + + + + +---+Navbars
++Squidex Theme
-- ++-+-+-+Navbars
+--- +++ +----Buttons
+++- -+-+Buttons
+--- - - - - - - - Link -
- -- - - - - - - -
- -- - - - - - -
- -- - - - - - -
- --- ++- -+-+ + + + + + + + Link +
+ ++ + + + + + + +
+ ++ + + + + + +
+ ++ + + + + + +
+ ++ -- --- ++ ++- + + +-+ +-- -- + +-+ +--- + + ++ +- - ++ -+ - + - ---- -
- ---- - +-- - ++-+ +
+ ++-+ + +-- - +-+-+ + +-- - +-+-+ + +-- - +-+-+ + +-- - - +-+-+ + +-- - - +-+-+ + + +-- - - +-+-+ + + +--- - - +-+-+ + + +------ ---Typography
----Heading 1
-Heading 2
-Heading 3
-Heading 4
-Heading 5
-Heading 6
-Heading with muted text
- -Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
++++-+Typography
--Example body text
-Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.
-The following is rendered as bold text.
-The following is rendered as italicized text.
-The following is an abbreviation attr.
++-+- -+Heading 1
+Heading 2
+Heading 3
+Heading 4
+Heading 5
+Heading 6
+Heading with muted text
+ +Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
+-- ---Emphasis classes
- -Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.
-Nullam id dolor id nibh ultricies vehicula ut id elit.
-Etiam porta sem malesuada magna mollis euismod.
-Donec ullamcorper nulla non metus auctor fringilla.
-Duis mollis, est non commodo luctus, nisi erat porttitor ligula.
-Maecenas sed diam eget risus varius blandit sit amet non magna.
+++++Example body text
+ ++ Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis + dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula. +
+The following is rendered as bold text.
+The following is rendered as italicized text.
+The following is an abbreviation attr.
++- -+Emphasis classes
+ +Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.
+Nullam id dolor id nibh ultricies vehicula ut id elit.
+Etiam porta sem malesuada magna mollis euismod.
+Donec ullamcorper nulla non metus auctor fringilla.
+Duis mollis, est non commodo luctus, nisi erat porttitor ligula.
+Maecenas sed diam eget risus varius blandit sit amet non magna.
+----Blockquotes
-----+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.
- -+-+Blockquotes
----Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.
++++++++Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.
+ + +++++ + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.
- -----List Tables
+++-+-+List Tables
+------ -
+- - - -- - -Column heading -Column heading -Column heading -- -- - -Column content -Column content -Column content -- - - -- - -Column content -Column content -Column content -- - ++++ +
++ + + ++ + +Column heading +Column heading +Column heading ++ ++ + +Column content +Column content +Column content ++ + + ++ + +Column content +Column content +Column content ++ + ----List Tables (on white background)
+++-+-+List Tables (on white background)
+------ -
+- - - -- - -Column heading -Column heading -Column heading -- -- - -Column content -Column content -Column content -- - - -- - -Column content -Column content -Column content -- - ++++ +
++ + + ++ + +Column heading +Column heading +Column heading ++ ++ + +Column content +Column content +Column content ++ + + ++ + +Column content +Column content +Column content ++ + ----Forms
+++- -+-+Forms
+-