Merge remote-tracking branch 'origin/v14/dev' into v15/dev
# Conflicts: # global.json
This commit is contained in:
@@ -21,16 +21,21 @@ public class SearchDocumentItemController : DocumentItemControllerBase
|
||||
_documentPresentationFactory = documentPresentationFactory;
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
[Obsolete("Scheduled to be removed in v16, use the non obsoleted method instead")]
|
||||
public async Task<IActionResult> Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100)
|
||||
=> await SearchFromParent(cancellationToken, query, skip, take);
|
||||
|
||||
[HttpGet("search")]
|
||||
[MapToApiVersion("1.0")]
|
||||
[ProducesResponseType(typeof(PagedModel<DocumentItemResponseModel>), StatusCodes.Status200OK)]
|
||||
public async Task<IActionResult> Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100)
|
||||
public async Task<IActionResult> SearchFromParent(CancellationToken cancellationToken, string query, int skip = 0, int take = 100, Guid? parentId = null)
|
||||
{
|
||||
PagedModel<IEntitySlim> searchResult = _indexedEntitySearchService.Search(UmbracoObjectTypes.Document, query, skip, take);
|
||||
PagedModel<IEntitySlim> searchResult = _indexedEntitySearchService.Search(UmbracoObjectTypes.Document, query, parentId, skip, take);
|
||||
var result = new PagedModel<DocumentItemResponseModel>
|
||||
{
|
||||
Items = searchResult.Items.OfType<IDocumentEntitySlim>().Select(_documentPresentationFactory.CreateItemResponseModel),
|
||||
Total = searchResult.Total
|
||||
Total = searchResult.Total,
|
||||
};
|
||||
|
||||
return await Task.FromResult(Ok(result));
|
||||
|
||||
@@ -21,16 +21,21 @@ public class SearchMediaItemController : MediaItemControllerBase
|
||||
_mediaPresentationFactory = mediaPresentationFactory;
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
[Obsolete("Scheduled to be removed in v16, use the non obsoleted method instead")]
|
||||
public async Task<IActionResult> Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100)
|
||||
=> await SearchFromParent(cancellationToken, query, skip, take, null);
|
||||
|
||||
[HttpGet("search")]
|
||||
[MapToApiVersion("1.0")]
|
||||
[ProducesResponseType(typeof(PagedModel<MediaItemResponseModel>), StatusCodes.Status200OK)]
|
||||
public async Task<IActionResult> Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100)
|
||||
public async Task<IActionResult> SearchFromParent(CancellationToken cancellationToken, string query, int skip = 0, int take = 100, Guid? parentId = null)
|
||||
{
|
||||
PagedModel<IEntitySlim> searchResult = _indexedEntitySearchService.Search(UmbracoObjectTypes.Media, query, skip, take);
|
||||
PagedModel<IEntitySlim> searchResult = _indexedEntitySearchService.Search(UmbracoObjectTypes.Media, query, parentId, skip, take);
|
||||
var result = new PagedModel<MediaItemResponseModel>
|
||||
{
|
||||
Items = searchResult.Items.OfType<IMediaEntitySlim>().Select(_mediaPresentationFactory.CreateItemResponseModel),
|
||||
Total = searchResult.Total
|
||||
Total = searchResult.Total,
|
||||
};
|
||||
|
||||
return await Task.FromResult(Ok(result));
|
||||
|
||||
@@ -13,4 +13,8 @@ namespace Umbraco.Cms.Core.Services;
|
||||
public interface IIndexedEntitySearchService
|
||||
{
|
||||
PagedModel<IEntitySlim> Search(UmbracoObjectTypes objectType, string query, int skip = 0, int take = 100, bool ignoreUserStartNodes = false);
|
||||
|
||||
// default implementation to avoid breaking changes falls back to old behaviour
|
||||
PagedModel<IEntitySlim> Search(UmbracoObjectTypes objectType, string query, Guid? parentId, int skip = 0, int take = 100, bool ignoreUserStartNodes = false)
|
||||
=> Search(objectType,query, skip, take, ignoreUserStartNodes);
|
||||
}
|
||||
|
||||
@@ -356,8 +356,16 @@ public class BackOfficeExamineSearcher : IBackOfficeExamineSearcher
|
||||
throw new ArgumentNullException(nameof(entityService));
|
||||
}
|
||||
|
||||
UdiParser.TryParse(searchFrom, true, out Udi? udi);
|
||||
searchFrom = udi == null ? searchFrom : entityService.GetId(udi).Result.ToString();
|
||||
if (Guid.TryParse(searchFrom, out Guid guid))
|
||||
{
|
||||
searchFrom = entityService.GetId(guid, objectType).Result.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
// fallback to Udi for legacy reasons as the calling methods take string?
|
||||
UdiParser.TryParse(searchFrom, true, out Udi? udi);
|
||||
searchFrom = udi == null ? searchFrom : entityService.GetId(udi).Result.ToString();
|
||||
}
|
||||
|
||||
TreeEntityPath? entityPath =
|
||||
int.TryParse(searchFrom, NumberStyles.Integer, CultureInfo.InvariantCulture, out var searchFromId) &&
|
||||
|
||||
@@ -20,6 +20,15 @@ internal sealed class IndexedEntitySearchService : IIndexedEntitySearchService
|
||||
}
|
||||
|
||||
public PagedModel<IEntitySlim> Search(UmbracoObjectTypes objectType, string query, int skip = 0, int take = 100, bool ignoreUserStartNodes = false)
|
||||
=> Search(objectType, query, null, skip, take, ignoreUserStartNodes);
|
||||
|
||||
public PagedModel<IEntitySlim> Search(
|
||||
UmbracoObjectTypes objectType,
|
||||
string query,
|
||||
Guid? parentId,
|
||||
int skip = 0,
|
||||
int take = 100,
|
||||
bool ignoreUserStartNodes = false)
|
||||
{
|
||||
UmbracoEntityTypes entityType = objectType switch
|
||||
{
|
||||
@@ -37,7 +46,8 @@ internal sealed class IndexedEntitySearchService : IIndexedEntitySearchService
|
||||
pageSize,
|
||||
pageNumber,
|
||||
out var totalFound,
|
||||
ignoreUserStartNodes: ignoreUserStartNodes);
|
||||
ignoreUserStartNodes: ignoreUserStartNodes,
|
||||
searchFrom: parentId?.ToString());
|
||||
|
||||
Guid[] keys = searchResults.Select(
|
||||
result =>
|
||||
|
||||
@@ -2,7 +2,10 @@ import {
|
||||
UmbBundleExtensionInitializer,
|
||||
UmbServerExtensionRegistrator
|
||||
} from "@umbraco-cms/backoffice/extension-api";
|
||||
import { umbExtensionsRegistry } from "@umbraco-cms/backoffice/extension-registry";
|
||||
import {
|
||||
UmbAppEntryPointExtensionInitializer,
|
||||
umbExtensionsRegistry
|
||||
} from "@umbraco-cms/backoffice/extension-registry";
|
||||
import type { UmbElement } from "@umbraco-cms/backoffice/element-api";
|
||||
import { UmbControllerBase } from "@umbraco-cms/backoffice/class-api";
|
||||
import { UUIIconRegistryEssential } from "@umbraco-cms/backoffice/external/uui";
|
||||
@@ -21,6 +24,7 @@ export class UmbSlimBackofficeController extends UmbControllerBase {
|
||||
constructor(host: UmbElement) {
|
||||
super(host);
|
||||
new UmbBundleExtensionInitializer(host, umbExtensionsRegistry);
|
||||
new UmbAppEntryPointExtensionInitializer(host, umbExtensionsRegistry);
|
||||
new UmbServerExtensionRegistrator(host, umbExtensionsRegistry).registerPublicExtensions();
|
||||
|
||||
this.#uuiIconRegistry.attach(host);
|
||||
|
||||
Reference in New Issue
Block a user