Merge branch 'release/17.0'

# Conflicts:
#	src/Umbraco.Web.UI.Client/package.json
#	version.json
This commit is contained in:
Andy Butland
2025-11-13 10:48:51 +01:00
8 changed files with 49 additions and 55 deletions

View File

@@ -1,7 +1,7 @@
{
"sdk": {
"version": "10.0.100-rc.2.25502.107",
"version": "10.0.100",
"rollForward": "latestFeature",
"allowPrerelease": true
"allowPrerelease": false
}
}

View File

@@ -30,6 +30,7 @@ public class RootMemberTypeTreeController : MemberTypeTreeControllerBase
public async Task<ActionResult<PagedViewModel<MemberTypeTreeItemResponseModel>>> Root(
CancellationToken cancellationToken,
int skip = 0,
int take = 100)
int take = 100,
bool foldersOnly = false)
=> await GetRoot(skip, take);
}

View File

@@ -1,4 +1,4 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Umbraco.Cms.Api.Common.ViewModels.Pagination;
using Umbraco.Cms.Api.Management.Services.Flags;
@@ -23,6 +23,7 @@ public class SiblingMemberTypeTreeController : MemberTypeTreeControllerBase
CancellationToken cancellationToken,
Guid target,
int before,
int after)
int after,
bool foldersOnly = false)
=> await GetSiblings(target, before, after);
}

View File

@@ -19,7 +19,7 @@ public class GlobalSettings
internal const string StaticTimeOut = "00:20:00";
internal const string StaticDefaultUILanguage = "en-US";
internal const bool StaticHideTopLevelNodeFromPath = true;
internal const bool StaticUseHttps = false;
internal const bool StaticUseHttps = true;
internal const int StaticVersionCheckPeriod = 7;
internal const string StaticIconsPath = "umbraco/assets/icons";
internal const string StaticUmbracoCssPath = "~/css";

View File

@@ -12,6 +12,7 @@ public sealed class EntityContainer : TreeEntityBase, IUmbracoEntity
{ Constants.ObjectTypes.DataType, Constants.ObjectTypes.DataTypeContainer },
{ Constants.ObjectTypes.DocumentType, Constants.ObjectTypes.DocumentTypeContainer },
{ Constants.ObjectTypes.MediaType, Constants.ObjectTypes.MediaTypeContainer },
{ Constants.ObjectTypes.MemberType, Constants.ObjectTypes.MemberTypeContainer },
{ Constants.ObjectTypes.DocumentBlueprint, Constants.ObjectTypes.DocumentBlueprintContainer },
};

View File

@@ -32,8 +32,11 @@ internal class EntityContainerRepository : EntityRepositoryBase<int, EntityConta
{
Guid[] allowedContainers =
{
Constants.ObjectTypes.DocumentTypeContainer, Constants.ObjectTypes.MediaTypeContainer,
Constants.ObjectTypes.DataTypeContainer, Constants.ObjectTypes.DocumentBlueprintContainer,
Constants.ObjectTypes.DataTypeContainer,
Constants.ObjectTypes.DocumentTypeContainer,
Constants.ObjectTypes.MediaTypeContainer,
Constants.ObjectTypes.MemberTypeContainer,
Constants.ObjectTypes.DocumentBlueprintContainer,
};
NodeObjectTypeId = containerObjectType;
if (allowedContainers.Contains(NodeObjectTypeId) == false)

View File

@@ -1,36 +1,26 @@
using Umbraco.Cms.Core.Models;
using Microsoft.Extensions.Logging;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Cache;
using Umbraco.Cms.Core.Persistence.Repositories;
using Umbraco.Cms.Infrastructure.Scoping;
namespace Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement
namespace Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement;
internal sealed class MemberTypeContainerRepository : EntityContainerRepository, IMemberTypeContainerRepository
{
/// <summary>
/// A no-op implementation of <see cref="IMemberTypeContainerRepository"/>, as containers aren't supported for members.
/// </summary>
/// <remarks>
/// Introduced to avoid inconsistencies with nullability of dependencies for type repositories for content, media and members.
/// </remarks>
internal sealed class MemberTypeContainerRepository : IMemberTypeContainerRepository
public MemberTypeContainerRepository(
IScopeAccessor scopeAccessor,
AppCaches cache,
ILogger<MemberTypeContainerRepository> logger,
IRepositoryCacheVersionService repositoryCacheVersionService,
ICacheSyncService cacheSyncService)
: base(
scopeAccessor,
cache,
logger,
Constants.ObjectTypes.MemberTypeContainer,
repositoryCacheVersionService,
cacheSyncService)
{
public void Delete(EntityContainer entity)
{
}
public bool Exists(int id) => false;
public EntityContainer? Get(Guid id) => null;
public IEnumerable<EntityContainer> Get(string name, int level) => Enumerable.Empty<EntityContainer>();
public bool HasDuplicateName(Guid parentKey, string name) => false;
public bool HasDuplicateName(int parentId, string name) => false;
public EntityContainer? Get(int id) => null;
public IEnumerable<EntityContainer> GetMany(params int[]? ids) => Enumerable.Empty<EntityContainer>();
public void Save(EntityContainer entity)
{
}
}
}

View File

@@ -207,24 +207,22 @@ export class UmbContentTypeDesignEditorPropertiesElement extends UmbLitElement {
this._ownerContentTypeUnique = workspaceContext?.structure.getOwnerContentTypeUnique();
this.#createPropertyTypeWorkspaceRoutes();
const varyByCulturePromise =
this.observe(
workspaceContext?.variesByCulture,
(variesByCulture) => {
this._ownerContentTypeVariesByCulture = variesByCulture;
},
'observeOwnerVariesByCulture',
)?.asPromise() ?? Promise.reject();
const varyBySegmentPromise =
this.observe(
workspaceContext?.variesBySegment,
(variesBySegment) => {
this._ownerContentTypeVariesBySegment = variesBySegment;
},
'observeOwnerVariesBySegment',
)?.asPromise() ?? Promise.reject();
const varyByCulturePromise = this.observe(
workspaceContext?.variesByCulture,
(variesByCulture) => {
this._ownerContentTypeVariesByCulture = variesByCulture;
},
'observeOwnerVariesByCulture',
)?.asPromise();
const varyBySegmentPromise = this.observe(
workspaceContext?.variesBySegment,
(variesBySegment) => {
this._ownerContentTypeVariesBySegment = variesBySegment;
},
'observeOwnerVariesBySegment',
)?.asPromise();
if (this.#initResolver) {
if (varyByCulturePromise && varyBySegmentPromise && this.#initResolver) {
Promise.all([varyByCulturePromise, varyBySegmentPromise])
.then(() => {
this.#initResolver?.();