From 92ae850e102a5fab2a169d778e5d9f271bd1e72f Mon Sep 17 00:00:00 2001 From: yk Date: Tue, 5 Dec 2023 12:07:10 +0200 Subject: [PATCH 1/3] fix nre check if partnames is not null --- .../Services/ContentDefinitionService.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs index 401f4e50ad6..02b18f8f261 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs @@ -390,6 +390,10 @@ await _contentDefinitionManager.AlterTypeDefinitionAsync(typeDefinition.Name, ty public Task AlterTypePartsOrderAsync(ContentTypeDefinition typeDefinition, string[] partNames) => _contentDefinitionManager.AlterTypeDefinitionAsync(typeDefinition.Name, type => { + if (partNames is null) + { + return; + } for (var i = 0; i < partNames.Length; i++) { var partDefinition = typeDefinition.Parts.FirstOrDefault(x => x.Name == partNames[i]); From 8fbfc10bce153cb2883846e6ca9ac506e790d6b5 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Tue, 5 Dec 2023 15:34:17 -0800 Subject: [PATCH 2/3] fix other places --- .../Services/ContentDefinitionService.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs index 02b18f8f261..6d0eb98f517 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs @@ -322,7 +322,7 @@ public async Task AddFieldToPartAsync(string fieldName, string displayName, stri { if (string.IsNullOrEmpty(fieldName)) { - throw new ArgumentException("The 'fieldName' can't be null or empty.", nameof(fieldName)); + throw new ArgumentException("The '{fieldName}' can't be null or empty.", nameof(fieldName)); } var partDefinition = await _contentDefinitionManager.LoadPartDefinitionAsync(partName); @@ -394,6 +394,7 @@ public Task AlterTypePartsOrderAsync(ContentTypeDefinition typeDefinition, strin { return; } + for (var i = 0; i < partNames.Length; i++) { var partDefinition = typeDefinition.Parts.FirstOrDefault(x => x.Name == partNames[i]); @@ -407,6 +408,11 @@ public Task AlterTypePartsOrderAsync(ContentTypeDefinition typeDefinition, strin public Task AlterPartFieldsOrderAsync(ContentPartDefinition partDefinition, string[] fieldNames) => _contentDefinitionManager.AlterPartDefinitionAsync(partDefinition.Name, type => { + if (fieldNames is null) + { + return; + } + for (var i = 0; i < fieldNames.Length; i++) { var fieldDefinition = partDefinition.Fields.FirstOrDefault(x => x.Name == fieldNames[i]); @@ -441,9 +447,9 @@ public async Task GenerateFieldNameFromDisplayNameAsync(string partName, var type = await _contentDefinitionManager.LoadTypeDefinitionAsync(partName) ?? throw new ArgumentException("The part doesn't exist: " + partName); - var typePart = type.Parts.FirstOrDefault(x => x.PartDefinition.Name == partName); + var typePart = type.Parts?.FirstOrDefault(x => x.PartDefinition.Name == partName); - // Id passed in might be that of a type w/ no implicit field. + // If passed in might be that of a type w/ no implicit field. if (typePart == null) { return displayName; From 29439398acf96af2ff0600f6a292ea7795076a39 Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Tue, 5 Dec 2023 15:38:00 -0800 Subject: [PATCH 3/3] one more null check --- .../Services/ContentDefinitionService.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs index 6d0eb98f517..660da6d2bab 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Services/ContentDefinitionService.cs @@ -397,7 +397,13 @@ public Task AlterTypePartsOrderAsync(ContentTypeDefinition typeDefinition, strin for (var i = 0; i < partNames.Length; i++) { - var partDefinition = typeDefinition.Parts.FirstOrDefault(x => x.Name == partNames[i]); + var partDefinition = typeDefinition.Parts?.FirstOrDefault(x => x.Name == partNames[i]); + + if (partDefinition == null) + { + continue; + } + type.WithPart(partNames[i], partDefinition.PartDefinition, part => { part.MergeSettings(x => x.Position = i.ToString());