Skip to content

Commit 94e8bc1

Browse files
Merge branch 'v13/dev' into contrib
2 parents 704aebe + 06fdf8d commit 94e8bc1

File tree

13 files changed

+97
-28
lines changed

13 files changed

+97
-28
lines changed

src/Umbraco.Cms.Api.Delivery/DependencyInjection/UmbracoBuilderExtensions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using Umbraco.Cms.Api.Delivery.Routing;
1616
using Umbraco.Cms.Api.Delivery.Security;
1717
using Umbraco.Cms.Api.Delivery.Services;
18+
using Umbraco.Cms.Api.Delivery.Services.QueryBuilders;
1819
using Umbraco.Cms.Core;
1920
using Umbraco.Cms.Core.Configuration.Models;
2021
using Umbraco.Cms.Core.DeliveryApi;
@@ -55,6 +56,7 @@ public static IUmbracoBuilder AddDeliveryApi(this IUmbracoBuilder builder)
5556
builder.Services.AddSingleton<IApiAccessService, ApiAccessService>();
5657
builder.Services.AddSingleton<IApiContentQueryService, ApiContentQueryService>();
5758
builder.Services.AddSingleton<IApiContentQueryProvider, ApiContentQueryProvider>();
59+
builder.Services.AddSingleton<IApiContentQueryFactory, ApiContentQueryFactory>();
5860
builder.Services.AddSingleton<IApiMediaQueryService, ApiMediaQueryService>();
5961
builder.Services.AddTransient<IMemberApplicationManager, MemberApplicationManager>();
6062
builder.Services.AddTransient<IRequestMemberAccessService, RequestMemberAccessService>();

src/Umbraco.Cms.Api.Delivery/Services/ApiContentQueryProvider.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Examine;
1+
using Examine;
22
using Examine.Search;
33
using Microsoft.Extensions.Logging;
44
using Microsoft.Extensions.Options;
@@ -27,6 +27,7 @@ internal sealed class ApiContentQueryProvider : IApiContentQueryProvider
2727
public ApiContentQueryProvider(
2828
IExamineManager examineManager,
2929
ContentIndexHandlerCollection indexHandlers,
30+
IApiContentQueryFactory apiContentQueryFactory,
3031
IOptions<DeliveryApiSettings> deliveryApiSettings,
3132
ILogger<ApiContentQueryProvider> logger)
3233
{
@@ -41,7 +42,7 @@ public ApiContentQueryProvider(
4142

4243
// for the time being we're going to keep these as internal implementation details.
4344
// perhaps later on it will make sense to expose them through the DI.
44-
_selectorBuilder = new ApiContentQuerySelectorBuilder(deliveryApiSettings.Value);
45+
_selectorBuilder = new ApiContentQuerySelectorBuilder(deliveryApiSettings.Value, apiContentQueryFactory);
4546
_filterBuilder = new ApiContentQueryFilterBuilder(fieldTypes, _logger);
4647
_sortBuilder = new ApiContentQuerySortBuilder(fieldTypes, _logger);
4748

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using Examine;
2+
using Examine.Lucene.Providers;
3+
using Examine.Lucene.Search;
4+
using Examine.Search;
5+
using Umbraco.Cms.Infrastructure.Examine;
6+
7+
namespace Umbraco.Cms.Api.Delivery.Services.QueryBuilders
8+
{
9+
internal sealed class ApiContentQueryFactory : IApiContentQueryFactory
10+
{
11+
/// <inheritdoc/>
12+
public IQuery CreateApiContentQuery(IIndex index)
13+
{
14+
// Needed for enabling leading wildcards searches
15+
BaseLuceneSearcher searcher = index.Searcher as BaseLuceneSearcher ?? throw new InvalidOperationException($"Index searcher must be of type {nameof(BaseLuceneSearcher)}.");
16+
17+
IQuery query = searcher.CreateQuery(
18+
IndexTypes.Content,
19+
BooleanOperation.And,
20+
searcher.LuceneAnalyzer,
21+
new LuceneSearchOptions { AllowLeadingWildcard = true });
22+
23+
return query;
24+
}
25+
}
26+
}

src/Umbraco.Cms.Api.Delivery/Services/QueryBuilders/ApiContentQuerySelectorBuilder.cs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
using Examine;
2-
using Examine.Lucene.Providers;
3-
using Examine.Lucene.Search;
42
using Examine.Search;
53
using Umbraco.Cms.Core.Configuration.Models;
64
using Umbraco.Cms.Core.DeliveryApi;
@@ -13,11 +11,15 @@ namespace Umbraco.Cms.Api.Delivery.Services.QueryBuilders;
1311
internal sealed class ApiContentQuerySelectorBuilder
1412
{
1513
private readonly DeliveryApiSettings _deliveryApiSettings;
14+
private readonly IApiContentQueryFactory _queryFactory;
1615
private readonly string _fallbackGuidValue;
1716

18-
public ApiContentQuerySelectorBuilder(DeliveryApiSettings deliveryApiSettings)
17+
public ApiContentQuerySelectorBuilder(
18+
DeliveryApiSettings deliveryApiSettings,
19+
IApiContentQueryFactory queryFactory)
1920
{
2021
_deliveryApiSettings = deliveryApiSettings;
22+
_queryFactory = queryFactory;
2123

2224
// A fallback value is needed for Examine queries in case we don't have a value - we can't pass null or empty string
2325
// It is set to a random guid since this would be highly unlikely to yield any results
@@ -26,14 +28,7 @@ public ApiContentQuerySelectorBuilder(DeliveryApiSettings deliveryApiSettings)
2628

2729
public IBooleanOperation Build(SelectorOption selectorOption, IIndex index, string culture, ProtectedAccess protectedAccess, bool preview)
2830
{
29-
// Needed for enabling leading wildcards searches
30-
BaseLuceneSearcher searcher = index.Searcher as BaseLuceneSearcher ?? throw new InvalidOperationException($"Index searcher must be of type {nameof(BaseLuceneSearcher)}.");
31-
32-
IQuery query = searcher.CreateQuery(
33-
IndexTypes.Content,
34-
BooleanOperation.And,
35-
searcher.LuceneAnalyzer,
36-
new LuceneSearchOptions { AllowLeadingWildcard = true });
31+
IQuery query = _queryFactory.CreateApiContentQuery(index);
3732

3833
IBooleanOperation selectorOperation = selectorOption.Values.Length == 1
3934
? query.Field(selectorOption.FieldName, selectorOption.Values.First())
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using Examine;
2+
using Examine.Search;
3+
4+
namespace Umbraco.Cms.Api.Delivery.Services.QueryBuilders
5+
{
6+
/// <summary>
7+
/// Used to create an <see cref="IQuery"/> instance for content items for the content delivery api.
8+
/// </summary>
9+
public interface IApiContentQueryFactory
10+
{
11+
/// <summary>
12+
/// Creates an <see cref="IQuery"/> for content items for the content delivery api.
13+
/// </summary>
14+
/// <param name="index">The <see cref="IIndex"/>.</param>
15+
/// <returns>An <see cref="IQuery"/> instance.</returns>
16+
IQuery CreateApiContentQuery(IIndex index);
17+
}
18+
}

src/Umbraco.Core/Configuration/Models/RichTextEditorSettings.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,11 @@ public class RichTextEditorSettings
146146
[DefaultValue(StaticInvalidElements)]
147147
public string InvalidElements { get; set; } = StaticInvalidElements;
148148

149+
/// <summary>
150+
/// Cloud API Key for TinyMCE. This is required to use TinyMCE premium plugins.
151+
/// </summary>
152+
public string? CloudApiKey { get; set; }
153+
149154
public class RichTextEditorCommand
150155
{
151156
[Required]

src/Umbraco.Core/Models/ContentEditing/RichTextEditorConfiguration.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,7 @@ public class RichTextEditorConfiguration
1919

2020
[DataMember(Name = "customConfig")]
2121
public IDictionary<string, string>? CustomConfig { get; set; }
22+
23+
[DataMember(Name = "cloudApiKey")]
24+
public string? CloudApiKey { get; set; }
2225
}

src/Umbraco.Web.BackOffice/PropertyEditors/RichTextPreValueController.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ public RichTextEditorConfiguration GetConfiguration()
3030
new RichTextEditorCommand { Alias = x.Alias, Mode = x.Mode, Name = x.Name }),
3131
ValidElements = settings.ValidElements,
3232
InvalidElements = settings.InvalidElements,
33-
CustomConfig = settings.CustomConfig
33+
CustomConfig = settings.CustomConfig,
34+
CloudApiKey = settings.CloudApiKey,
3435
};
3536

3637
return config;

src/Umbraco.Web.UI.Client/package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Umbraco.Web.UI.Client/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"ng-file-upload": "12.2.13",
5252
"nouislider": "15.7.1",
5353
"spectrum-colorpicker2": "2.0.10",
54-
"tinymce": "6.7.3",
54+
"tinymce": "6.8.1",
5555
"typeahead.js": "0.11.1",
5656
"underscore": "1.13.6",
5757
"wicg-inert": "3.1.2"

0 commit comments

Comments
 (0)