From 6d4809132815b41a6e048904d0769c042abde1cc Mon Sep 17 00:00:00 2001 From: Nikolaj Brask-Nielsen Date: Wed, 6 Sep 2023 20:08:17 +0200 Subject: [PATCH 01/55] docs: XML warnings (#14663) * chore: Fix XML warnings * docs: Fix XML warnings * docs: Fix XML in resource designer * docs: Fix XML warnings * Revert "docs: Fix XML in resource designer" This reverts commit 8ea61c51ac161e1853ae080db7fe1b4d4cb4d2be. --- .../Media/ImageSharpImageUrlGenerator.cs | 1 + ...ServerEFCoreDistributedLockingMechanism.cs | 2 +- .../Cache/Refreshers/CacheRefresherBase.cs | 2 +- .../Refreshers/JsonCacheRefresherBase.cs | 2 +- .../EventClearingObservableCollection.cs | 2 +- .../Collections/ObservableDictionary.cs | 4 +-- .../Configuration/IUmbracoVersion.cs | 1 + src/Umbraco.Core/Constants-CharArrays.cs | 4 +-- src/Umbraco.Core/DelegateEqualityComparer.cs | 4 +-- .../ServiceProviderExtensions.cs | 4 +-- src/Umbraco.Core/ExpressionHelper.cs | 4 +-- .../Extensions/ContentExtensions.cs | 2 ++ .../Extensions/DictionaryExtensions.cs | 4 +-- .../Extensions/EnumerableExtensions.cs | 3 +- .../Extensions/PublishedContentExtensions.cs | 4 +-- .../RequestHandlerSettingsExtension.cs | 2 +- .../Extensions/StringExtensions.cs | 2 +- src/Umbraco.Core/Extensions/XmlExtensions.cs | 16 +++++----- src/Umbraco.Core/IO/MediaFileManager.cs | 1 - .../MediaPathSchemes/UniqueMediaPathScheme.cs | 4 +-- src/Umbraco.Core/Logging/DisposableTimer.cs | 2 +- src/Umbraco.Core/Logging/ProfilingLogger.cs | 2 +- src/Umbraco.Core/Media/IEmbedProvider.cs | 2 +- .../Models/Blocks/BlockGridItem.cs | 8 +---- .../Models/Blocks/IBlockReference.cs | 3 +- .../Models/ContentRepositoryExtensions.cs | 1 + src/Umbraco.Core/Models/CultureImpact.cs | 2 -- src/Umbraco.Core/Models/IMediaUrlGenerator.cs | 1 + src/Umbraco.Core/Models/Media.cs | 4 +-- .../Models/Membership/ContentPermissionSet.cs | 2 +- .../Models/Membership/EntityPermissionSet.cs | 4 +-- src/Umbraco.Core/Models/PagedResult.cs | 1 - .../HttpContextVariationContextAccessor.cs | 2 +- src/Umbraco.Core/Models/Range.cs | 4 ++- .../ContentPublishedNotification.cs | 1 - .../ModelBindingErrorNotification.cs | 2 +- .../UmbracoApplicationStartingNotification.cs | 4 +-- .../UmbracoApplicationStoppingNotification.cs | 4 +-- .../Packaging/IPackageInstallation.cs | 2 +- .../ICacheInstructionRepository.cs | 2 +- .../Repositories/IDocumentRepository.cs | 10 +++--- .../DefaultPropertyIndexValueFactory.cs | 2 +- .../PropertyEditors/VoidEditor.cs | 4 +-- .../PublishedCache/IPublishedContentCache.cs | 4 +-- .../Routing/DefaultUrlProvider.cs | 1 - src/Umbraco.Core/Routing/IPublishedRequest.cs | 3 +- .../Routing/IPublishedRequestBuilder.cs | 3 +- src/Umbraco.Core/Routing/IPublishedRouter.cs | 1 + src/Umbraco.Core/Routing/UrlProvider.cs | 1 - src/Umbraco.Core/Scoping/ILockingMechanism.cs | 4 +++ .../Security/ContentPermissions.cs | 5 --- .../Security/IIdentityUserLogin.cs | 1 - .../Security/LegacyPasswordSecurity.cs | 3 +- src/Umbraco.Core/Services/ContentService.cs | 2 +- .../Services/ICacheInstructionService.cs | 4 ++- src/Umbraco.Core/Services/IContentService.cs | 14 +++------ .../Services/IExternalLoginWithKeyService.cs | 2 +- src/Umbraco.Core/Services/IMediaService.cs | 3 -- src/Umbraco.Core/Services/IMemberService.cs | 10 +++--- .../Services/IMembershipMemberService.cs | 2 +- .../Services/IPackagingService.cs | 4 +-- src/Umbraco.Core/Services/IRelationService.cs | 5 ++- src/Umbraco.Core/Services/ITagService.cs | 4 +-- .../Services/ITrackedReferencesService.cs | 3 -- src/Umbraco.Core/Services/MemberService.cs | 31 ++++++++++--------- src/Umbraco.Core/Services/TagService.cs | 2 +- src/Umbraco.Core/Services/UserService.cs | 17 +++------- .../Sync/ElectedServerRoleAccessor.cs | 1 - src/Umbraco.Core/Sync/RefreshInstruction.cs | 3 ++ .../Templates/HtmlLocalLinkParser.cs | 1 - src/Umbraco.Core/Trees/ISearchableTree.cs | 1 - .../Web/HybridUmbracoContextAccessor.cs | 6 ++-- .../WebAssets/IRuntimeMinifier.cs | 3 +- .../Examine/IValueSetBuilder.cs | 4 +-- .../Examine/IndexPopulator.cs | 2 +- .../RecurringHostedServiceBase.cs | 2 +- .../Logging/Serilog/LoggerConfigExtensions.cs | 4 +-- .../Install/DatabaseSchemaCreator.cs | 13 +------- .../Migrations/MigrationExpressionBase.cs | 2 +- .../Upgrade/V_8_0_0/FallbackLanguage.cs | 2 +- .../Upgrade/V_8_0_0/UserForeignKeys.cs | 2 +- .../Models/MediaWithCrops.cs | 2 +- .../ModelsBuilder/Building/TextBuilder.cs | 1 + .../DatabaseProviderMetadataExtensions.cs | 1 + .../Implement/EntityRepositoryBase.cs | 4 +-- .../Implement/PermissionRepository.cs | 2 +- .../Repositories/Implement/UserRepository.cs | 4 +-- .../Persistence/UmbracoDatabase.cs | 2 +- .../Persistence/UmbracoDatabaseExtensions.cs | 3 +- .../BlockEditorPropertyValueEditor.cs | 1 - .../ImageCropperConfiguration.cs | 1 + .../Security/BackOfficeIdentityUser.cs | 4 +++ ...eteExternalLoginsOnMemberDeletedHandler.cs | 2 +- .../Security/IUmbracoUserManager.cs | 2 +- .../Services/CacheInstructionService.cs | 5 +++ .../Authorization/UserGroupHandler.cs | 1 + .../Controllers/AuthenticationController.cs | 1 - .../Controllers/CodeFileController.cs | 2 +- .../Controllers/ContentController.cs | 2 +- .../Controllers/ContentControllerBase.cs | 1 - .../Controllers/EntityController.cs | 2 +- .../Controllers/ImagesController.cs | 5 +++ .../Controllers/LogViewerController.cs | 2 +- .../Controllers/MacroRenderingController.cs | 2 +- .../Controllers/MacrosController.cs | 6 ++-- .../Controllers/MediaTypeController.cs | 2 +- .../HtmlHelperBackOfficeExtensions.cs | 13 ++------ .../Extensions/ModelStateExtensions.cs | 1 + .../Filters/ContentSaveValidationAttribute.cs | 3 +- ...CreateUnattendedUserNotificationHandler.cs | 1 + .../Security/IBackOfficeAntiforgery.cs | 5 +-- .../IBackOfficeExternalLoginProviders.cs | 1 - .../Security/PasswordChanger.cs | 2 +- .../Trees/ApplicationTreeController.cs | 1 + .../Trees/MediaTreeController.cs | 2 +- .../Extensions/FormCollectionExtensions.cs | 2 +- .../WebRootFileProviderFactory.cs | 2 +- ...ValidateUmbracoFormRouteStringAttribute.cs | 4 +-- .../Published/PublishedContentXmlAdapter.cs | 1 + .../UmbracoWebApplicationFactory.cs | 1 - .../PublishedSnapshotServiceTestBase.cs | 2 +- .../Umbraco.Core/Models/VariationTests.cs | 3 ++ .../Scoping/ScopeUnitTests.cs | 2 +- .../Controllers/MemberControllerUnitTests.cs | 1 + 124 files changed, 202 insertions(+), 217 deletions(-) diff --git a/src/Umbraco.Cms.Imaging.ImageSharp/Media/ImageSharpImageUrlGenerator.cs b/src/Umbraco.Cms.Imaging.ImageSharp/Media/ImageSharpImageUrlGenerator.cs index 5b437902f5..afcd0f35a2 100644 --- a/src/Umbraco.Cms.Imaging.ImageSharp/Media/ImageSharpImageUrlGenerator.cs +++ b/src/Umbraco.Cms.Imaging.ImageSharp/Media/ImageSharpImageUrlGenerator.cs @@ -49,6 +49,7 @@ public sealed class ImageSharpImageUrlGenerator : IImageUrlGenerator /// Initializes a new instance of the class. /// /// The supported image file types/extensions. + /// The ImageSharp middleware options. /// Contains helpers that allow authorization of image requests. /// /// This constructor is only used for testing. diff --git a/src/Umbraco.Cms.Persistence.EFCore/Locking/SqlServerEFCoreDistributedLockingMechanism.cs b/src/Umbraco.Cms.Persistence.EFCore/Locking/SqlServerEFCoreDistributedLockingMechanism.cs index d5d83f8ecf..ef9b9443ae 100644 --- a/src/Umbraco.Cms.Persistence.EFCore/Locking/SqlServerEFCoreDistributedLockingMechanism.cs +++ b/src/Umbraco.Cms.Persistence.EFCore/Locking/SqlServerEFCoreDistributedLockingMechanism.cs @@ -22,7 +22,7 @@ internal class SqlServerEFCoreDistributedLockingMechanism : IDistributedLocki private readonly Lazy> _scopeAccessor; // Hooray it's a circular dependency. /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// public SqlServerEFCoreDistributedLockingMechanism( ILogger> logger, diff --git a/src/Umbraco.Core/Cache/Refreshers/CacheRefresherBase.cs b/src/Umbraco.Core/Cache/Refreshers/CacheRefresherBase.cs index 849d42309a..0873d32cb8 100644 --- a/src/Umbraco.Core/Cache/Refreshers/CacheRefresherBase.cs +++ b/src/Umbraco.Core/Cache/Refreshers/CacheRefresherBase.cs @@ -35,7 +35,7 @@ public abstract class CacheRefresherBase : ICacheRefresher public abstract string Name { get; } /// - /// Gets the for + /// Gets the for . /// protected ICacheRefresherNotificationFactory NotificationFactory { get; } diff --git a/src/Umbraco.Core/Cache/Refreshers/JsonCacheRefresherBase.cs b/src/Umbraco.Core/Cache/Refreshers/JsonCacheRefresherBase.cs index b22cff56d2..f638ab34b0 100644 --- a/src/Umbraco.Core/Cache/Refreshers/JsonCacheRefresherBase.cs +++ b/src/Umbraco.Core/Cache/Refreshers/JsonCacheRefresherBase.cs @@ -14,7 +14,7 @@ public abstract class JsonCacheRefresherBase : Cach where TNotification : CacheRefresherNotification { /// - /// Initializes a new instance of the . + /// Initializes a new instance of the class. /// protected JsonCacheRefresherBase( AppCaches appCaches, diff --git a/src/Umbraco.Core/Collections/EventClearingObservableCollection.cs b/src/Umbraco.Core/Collections/EventClearingObservableCollection.cs index baf131ca80..3b0994c614 100644 --- a/src/Umbraco.Core/Collections/EventClearingObservableCollection.cs +++ b/src/Umbraco.Core/Collections/EventClearingObservableCollection.cs @@ -37,7 +37,7 @@ public class EventClearingObservableCollection : ObservableCollection - /// Clears all event handlers for the event + /// Clears all event handlers for the event. /// public void ClearCollectionChangedEvents() => _changed = null; diff --git a/src/Umbraco.Core/Collections/ObservableDictionary.cs b/src/Umbraco.Core/Collections/ObservableDictionary.cs index 9e52b4dae7..8d920bbe98 100644 --- a/src/Umbraco.Core/Collections/ObservableDictionary.cs +++ b/src/Umbraco.Core/Collections/ObservableDictionary.cs @@ -1,4 +1,4 @@ -using System.Collections.ObjectModel; +using System.Collections.ObjectModel; using System.Collections.Specialized; namespace Umbraco.Cms.Core.Collections; @@ -84,7 +84,7 @@ public class ObservableDictionary : ObservableCollection, } /// - /// Clears all event handlers + /// Clears all event handlers /// public void ClearCollectionChangedEvents() => _changed = null; diff --git a/src/Umbraco.Core/Configuration/IUmbracoVersion.cs b/src/Umbraco.Core/Configuration/IUmbracoVersion.cs index 3672f28dae..99a5cddfdb 100644 --- a/src/Umbraco.Core/Configuration/IUmbracoVersion.cs +++ b/src/Umbraco.Core/Configuration/IUmbracoVersion.cs @@ -1,3 +1,4 @@ +using System.Reflection; using Umbraco.Cms.Core.Semver; namespace Umbraco.Cms.Core.Configuration; diff --git a/src/Umbraco.Core/Constants-CharArrays.cs b/src/Umbraco.Core/Constants-CharArrays.cs index 832cac00e6..98a450e9c8 100644 --- a/src/Umbraco.Core/Constants-CharArrays.cs +++ b/src/Umbraco.Core/Constants-CharArrays.cs @@ -53,7 +53,7 @@ public static partial class Constants public static readonly char[] Comma = { ',' }; /// - /// Char array containing only & + /// Char array containing only & /// public static readonly char[] Ampersand = { '&' }; @@ -88,7 +88,7 @@ public static partial class Constants public static readonly char[] QuestionMark = { '?' }; /// - /// Char array containing ? & + /// Char array containing ? & /// public static readonly char[] QuestionMarkAmpersand = { '?', '&' }; diff --git a/src/Umbraco.Core/DelegateEqualityComparer.cs b/src/Umbraco.Core/DelegateEqualityComparer.cs index 8a442e8f85..44d12364cb 100644 --- a/src/Umbraco.Core/DelegateEqualityComparer.cs +++ b/src/Umbraco.Core/DelegateEqualityComparer.cs @@ -33,8 +33,8 @@ public class DelegateEqualityComparer : IEqualityComparer /// /// true if the specified objects are equal; otherwise, false. /// - /// The first object of type to compare. - /// The second object of type to compare. + /// The first object of type to compare. + /// The second object of type to compare. public bool Equals(T? x, T? y) => _equals.Invoke(x, y); /// diff --git a/src/Umbraco.Core/DependencyInjection/ServiceProviderExtensions.cs b/src/Umbraco.Core/DependencyInjection/ServiceProviderExtensions.cs index 9c2202e2aa..a12cc21dd6 100644 --- a/src/Umbraco.Core/DependencyInjection/ServiceProviderExtensions.cs +++ b/src/Umbraco.Core/DependencyInjection/ServiceProviderExtensions.cs @@ -6,7 +6,7 @@ using Umbraco.Cms.Core.Models.PublishedContent; namespace Umbraco.Extensions; /// -/// Provides extension methods to the class. +/// Provides extension methods to the class. /// public static class ServiceProviderExtensions { @@ -28,7 +28,7 @@ public static class ServiceProviderExtensions /// /// Creates an instance of a service, with arguments. /// - /// The + /// The . /// The type of the instance. /// Named arguments. /// An instance of the specified type. diff --git a/src/Umbraco.Core/ExpressionHelper.cs b/src/Umbraco.Core/ExpressionHelper.cs index 79e03d7b93..4d437e809f 100644 --- a/src/Umbraco.Core/ExpressionHelper.cs +++ b/src/Umbraco.Core/ExpressionHelper.cs @@ -167,7 +167,7 @@ public static class ExpressionHelper } /// - /// Gets a from an provided it refers to a method call. + /// Gets a from an of provided it refers to a method call. /// /// /// From expression. @@ -254,7 +254,7 @@ public static class ExpressionHelper } /// - /// Gets a from an provided it refers to member + /// Gets a from an of provided it refers to member /// access. /// /// diff --git a/src/Umbraco.Core/Extensions/ContentExtensions.cs b/src/Umbraco.Core/Extensions/ContentExtensions.cs index ba736c5b13..7d0bba26f8 100644 --- a/src/Umbraco.Core/Extensions/ContentExtensions.cs +++ b/src/Umbraco.Core/Extensions/ContentExtensions.cs @@ -320,6 +320,8 @@ public static class ContentExtensions /// Stores a file. /// /// A content item. + /// The media file manager. + /// The content type base service provider. /// The property alias. /// The name of the file. /// A stream containing the file data. diff --git a/src/Umbraco.Core/Extensions/DictionaryExtensions.cs b/src/Umbraco.Core/Extensions/DictionaryExtensions.cs index 3bbd3bdcb9..ca224a0f61 100644 --- a/src/Umbraco.Core/Extensions/DictionaryExtensions.cs +++ b/src/Umbraco.Core/Extensions/DictionaryExtensions.cs @@ -11,7 +11,7 @@ using Umbraco.Cms.Core; namespace Umbraco.Extensions; /// -/// Extension methods for Dictionary & ConcurrentDictionary +/// Extension methods for Dictionary & ConcurrentDictionary. /// public static class DictionaryExtensions { @@ -254,7 +254,7 @@ public static class DictionaryExtensions /// /// Converts a dictionary object to a query string representation such as: - /// firstname=shannon&lastname=deminick + /// firstname=shannon&lastname=deminick. /// /// /// diff --git a/src/Umbraco.Core/Extensions/EnumerableExtensions.cs b/src/Umbraco.Core/Extensions/EnumerableExtensions.cs index 6628dc4f3d..e2c0936fa4 100644 --- a/src/Umbraco.Core/Extensions/EnumerableExtensions.cs +++ b/src/Umbraco.Core/Extensions/EnumerableExtensions.cs @@ -353,7 +353,8 @@ public static class EnumerableExtensions /// /// Transforms an enumerable. /// - /// + /// + /// /// /// /// diff --git a/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs b/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs index b97c1c8161..ff4fd499f9 100644 --- a/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs +++ b/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs @@ -1253,7 +1253,7 @@ public static class PublishedContentExtensions /// /// /// This is the same as calling - /// with maxLevel + /// with maxLevel /// set to 1. /// public static IPublishedContent Root(this IPublishedContent content) => content.AncestorOrSelf(1); @@ -1270,7 +1270,7 @@ public static class PublishedContentExtensions /// /// /// This is the same as calling - /// with + /// with /// maxLevel set to 1. /// public static T? Root(this IPublishedContent content) diff --git a/src/Umbraco.Core/Extensions/RequestHandlerSettingsExtension.cs b/src/Umbraco.Core/Extensions/RequestHandlerSettingsExtension.cs index 8699950b37..383ab7f5bf 100644 --- a/src/Umbraco.Core/Extensions/RequestHandlerSettingsExtension.cs +++ b/src/Umbraco.Core/Extensions/RequestHandlerSettingsExtension.cs @@ -28,7 +28,7 @@ public static class RequestHandlerSettingsExtension return RequestHandlerSettings.DefaultCharCollection; } - /// Merges CharCollection and UserDefinedCharCollection, prioritizing UserDefinedCharCollection. + // Merges CharCollection and UserDefinedCharCollection, prioritizing UserDefinedCharCollection. return MergeUnique(requestHandlerSettings.UserDefinedCharCollection, RequestHandlerSettings.DefaultCharCollection); } diff --git a/src/Umbraco.Core/Extensions/StringExtensions.cs b/src/Umbraco.Core/Extensions/StringExtensions.cs index c1abeb8650..e7849eef12 100644 --- a/src/Umbraco.Core/Extensions/StringExtensions.cs +++ b/src/Umbraco.Core/Extensions/StringExtensions.cs @@ -194,7 +194,7 @@ public static class StringExtensions /// /// /// This methods ensures that the resulting URL is structured correctly, that there's only one '?' and that things are - /// delimited properly with '&' + /// delimited properly with '&' /// public static string AppendQueryStringToUrl(this string url, params string[] queryStrings) { diff --git a/src/Umbraco.Core/Extensions/XmlExtensions.cs b/src/Umbraco.Core/Extensions/XmlExtensions.cs index bb9e6c69b5..96e642db75 100644 --- a/src/Umbraco.Core/Extensions/XmlExtensions.cs +++ b/src/Umbraco.Core/Extensions/XmlExtensions.cs @@ -28,7 +28,7 @@ public static class XmlExtensions /// /// /// If - /// + /// /// is null, or is empty, or contains only one single /// value which itself is null, then variables are ignored. /// @@ -51,7 +51,7 @@ public static class XmlExtensions /// /// /// If - /// + /// /// is null, or is empty, or contains only one single /// value which itself is null, then variables are ignored. /// @@ -74,7 +74,7 @@ public static class XmlExtensions /// /// /// If - /// + /// /// is null, or is empty, or contains only one single /// value which itself is null, then variables are ignored. /// @@ -102,7 +102,7 @@ public static class XmlExtensions /// /// /// If - /// + /// /// is null, or is empty, or contains only one single /// value which itself is null, then variables are ignored. /// @@ -130,7 +130,7 @@ public static class XmlExtensions /// /// /// If - /// + /// /// is null, or is empty, or contains only one single /// value which itself is null, then variables are ignored. /// @@ -153,7 +153,7 @@ public static class XmlExtensions /// /// /// If - /// + /// /// is null, or is empty, or contains only one single /// value which itself is null, then variables are ignored. /// @@ -176,7 +176,7 @@ public static class XmlExtensions /// /// /// If - /// + /// /// is null, or is empty, or contains only one single /// value which itself is null, then variables are ignored. /// @@ -203,7 +203,7 @@ public static class XmlExtensions /// /// /// If - /// + /// /// is null, or is empty, or contains only one single /// value which itself is null, then variables are ignored. /// diff --git a/src/Umbraco.Core/IO/MediaFileManager.cs b/src/Umbraco.Core/IO/MediaFileManager.cs index c222c01744..f67c5363c1 100644 --- a/src/Umbraco.Core/IO/MediaFileManager.cs +++ b/src/Umbraco.Core/IO/MediaFileManager.cs @@ -121,7 +121,6 @@ public sealed class MediaFileManager /// /// The file path if a file was found /// - /// /// /// /// diff --git a/src/Umbraco.Core/IO/MediaPathSchemes/UniqueMediaPathScheme.cs b/src/Umbraco.Core/IO/MediaPathSchemes/UniqueMediaPathScheme.cs index 7b7061506d..353636c186 100644 --- a/src/Umbraco.Core/IO/MediaPathSchemes/UniqueMediaPathScheme.cs +++ b/src/Umbraco.Core/IO/MediaPathSchemes/UniqueMediaPathScheme.cs @@ -22,14 +22,14 @@ public class UniqueMediaPathScheme : IMediaPathScheme /// /// /// - /// Returning null so that does *not* + /// Returning null so that does *not* /// delete any directory. This is because the above shortening of the Guid to 8 chars /// means we're increasing the risk of collision, and we don't want to delete files /// belonging to other media items. /// /// /// And, at the moment, we cannot delete directory "only if it is empty" because of - /// race conditions. We'd need to implement locks in for + /// race conditions. We'd need to implement locks in for /// this. /// /// diff --git a/src/Umbraco.Core/Logging/DisposableTimer.cs b/src/Umbraco.Core/Logging/DisposableTimer.cs index 02bb52a19d..087ae7adb6 100644 --- a/src/Umbraco.Core/Logging/DisposableTimer.cs +++ b/src/Umbraco.Core/Logging/DisposableTimer.cs @@ -113,7 +113,7 @@ public class DisposableTimer : DisposableObjectSlim /// /// Disposes resources. /// - /// Overrides abstract class which handles required locking. + /// Overrides abstract class which handles required locking. protected override void DisposeResources() { Stopwatch.Stop(); diff --git a/src/Umbraco.Core/Logging/ProfilingLogger.cs b/src/Umbraco.Core/Logging/ProfilingLogger.cs index 9c5c8bc17e..53a9ee4f58 100644 --- a/src/Umbraco.Core/Logging/ProfilingLogger.cs +++ b/src/Umbraco.Core/Logging/ProfilingLogger.cs @@ -141,7 +141,7 @@ public sealed class ProfilingLogger : IProfilingLogger public void LogTrace(string messageTemplate, params object[] propertyValues) => Logger.LogTrace(messageTemplate, propertyValues); - ////> + /// public bool IsEnabled(LogLevel logLevel) { switch (logLevel) diff --git a/src/Umbraco.Core/Media/IEmbedProvider.cs b/src/Umbraco.Core/Media/IEmbedProvider.cs index 6760243ce6..06eb547365 100644 --- a/src/Umbraco.Core/Media/IEmbedProvider.cs +++ b/src/Umbraco.Core/Media/IEmbedProvider.cs @@ -15,7 +15,7 @@ public interface IEmbedProvider /// /// A collection of querystring request parameters to append to the API URL /// - /// ?key=value&key2=value2 + /// ?key=value&key2=value2 Dictionary RequestParams { get; } string? GetMarkup(string url, int maxWidth = 0, int maxHeight = 0); diff --git a/src/Umbraco.Core/Models/Blocks/BlockGridItem.cs b/src/Umbraco.Core/Models/Blocks/BlockGridItem.cs index eb554ef90d..abe8cc89a0 100644 --- a/src/Umbraco.Core/Models/Blocks/BlockGridItem.cs +++ b/src/Umbraco.Core/Models/Blocks/BlockGridItem.cs @@ -20,9 +20,7 @@ namespace Umbraco.Cms.Core.Models.Blocks /// The content. /// The settings UDI. /// The settings. - /// The number of rows to span - /// The number of columns to span - /// contentUdi + /// contentUdi /// or /// content public BlockGridItem(Udi contentUdi, IPublishedElement content, Udi settingsUdi, IPublishedElement settings) @@ -114,8 +112,6 @@ namespace Umbraco.Cms.Core.Models.Blocks /// The content. /// The settings UDI. /// The settings. - /// The number of rows to span - /// The number of columns to span public BlockGridItem(Udi contentUdi, T content, Udi settingsUdi, IPublishedElement settings) : base(contentUdi, content, settingsUdi, settings) { @@ -147,8 +143,6 @@ namespace Umbraco.Cms.Core.Models.Blocks /// The content. /// The settings udi. /// The settings. - /// The number of rows to span - /// The number of columns to span public BlockGridItem(Udi contentUdi, TContent content, Udi settingsUdi, TSettings settings) : base(contentUdi, content, settingsUdi, settings) { diff --git a/src/Umbraco.Core/Models/Blocks/IBlockReference.cs b/src/Umbraco.Core/Models/Blocks/IBlockReference.cs index 3a51649cca..647d1f5b2f 100644 --- a/src/Umbraco.Core/Models/Blocks/IBlockReference.cs +++ b/src/Umbraco.Core/Models/Blocks/IBlockReference.cs @@ -44,7 +44,8 @@ public interface IBlockReference : IBlockReference /// /// Represents a data item reference with content and settings for a Block editor implementation. /// -/// The type of the content. +/// The type of the content. +/// The type of the settings. public interface IBlockReference : IBlockReference { /// diff --git a/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs b/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs index d76194aa64..5b7d68a72b 100644 --- a/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs +++ b/src/Umbraco.Core/Models/ContentRepositoryExtensions.cs @@ -59,6 +59,7 @@ public static class ContentRepositoryExtensions /// /// /// + /// /// /// This is so that in an operation where (for example) 2 languages are updates like french and english, it is possible /// that diff --git a/src/Umbraco.Core/Models/CultureImpact.cs b/src/Umbraco.Core/Models/CultureImpact.cs index 684f1d058c..9ce9d9fe6a 100644 --- a/src/Umbraco.Core/Models/CultureImpact.cs +++ b/src/Umbraco.Core/Models/CultureImpact.cs @@ -182,7 +182,6 @@ public sealed class CultureImpact /// /// The culture code. /// A value indicating whether the culture is the default culture. - /// A value indicating if publishing invariant properties from non-default language. [Obsolete("Use ICultureImpactService instead.")] public static CultureImpact Explicit(string? culture, bool isDefault) { @@ -211,7 +210,6 @@ public sealed class CultureImpact /// The culture code. /// A value indicating whether the culture is the default culture. /// The content item. - /// A value indicating if publishing invariant properties from non-default language. /// /// Validates that the culture is compatible with the variation. /// diff --git a/src/Umbraco.Core/Models/IMediaUrlGenerator.cs b/src/Umbraco.Core/Models/IMediaUrlGenerator.cs index a0af9dcc0e..d54a354f38 100644 --- a/src/Umbraco.Core/Models/IMediaUrlGenerator.cs +++ b/src/Umbraco.Core/Models/IMediaUrlGenerator.cs @@ -10,6 +10,7 @@ public interface IMediaUrlGenerator /// /// The property editor alias /// The value of the property + /// The media path /// /// True if a media path was returned /// diff --git a/src/Umbraco.Core/Models/Media.cs b/src/Umbraco.Core/Models/Media.cs index d0cf05b8b9..5ee78006eb 100644 --- a/src/Umbraco.Core/Models/Media.cs +++ b/src/Umbraco.Core/Models/Media.cs @@ -58,7 +58,7 @@ public class Media : ContentBase, IMedia /// /// Changes the for the current Media object /// - /// New MediaType for this Media + /// New MediaType for this Media /// Leaves PropertyTypes intact after change internal void ChangeContentType(IMediaType mediaType) => ChangeContentType(mediaType, false); @@ -66,7 +66,7 @@ public class Media : ContentBase, IMedia /// Changes the for the current Media object and removes PropertyTypes, /// which are not part of the new MediaType. /// - /// New MediaType for this Media + /// New MediaType for this Media /// Boolean indicating whether to clear PropertyTypes upon change internal void ChangeContentType(IMediaType mediaType, bool clearProperties) { diff --git a/src/Umbraco.Core/Models/Membership/ContentPermissionSet.cs b/src/Umbraco.Core/Models/Membership/ContentPermissionSet.cs index 613a873d7a..c10a3b3da6 100644 --- a/src/Umbraco.Core/Models/Membership/ContentPermissionSet.cs +++ b/src/Umbraco.Core/Models/Membership/ContentPermissionSet.cs @@ -3,7 +3,7 @@ using Umbraco.Cms.Core.Models.Entities; namespace Umbraco.Cms.Core.Models.Membership; /// -/// Represents an -> user group & permission key value pair collection +/// Represents an -> user group & permission key value pair collection /// /// /// This implements purely so it can be used with the repository layer which is why it's diff --git a/src/Umbraco.Core/Models/Membership/EntityPermissionSet.cs b/src/Umbraco.Core/Models/Membership/EntityPermissionSet.cs index 0ae0dbf335..fce893c710 100644 --- a/src/Umbraco.Core/Models/Membership/EntityPermissionSet.cs +++ b/src/Umbraco.Core/Models/Membership/EntityPermissionSet.cs @@ -1,7 +1,7 @@ namespace Umbraco.Cms.Core.Models.Membership; /// -/// Represents an entity -> user group & permission key value pair collection +/// Represents an entity -> user group & permission key value pair collection /// public class EntityPermissionSet { @@ -20,7 +20,7 @@ public class EntityPermissionSet public virtual int EntityId { get; } /// - /// The key/value pairs of user group id & single permission + /// The key/value pairs of user group id & single permission /// public EntityPermissionCollection PermissionsSet { get; } diff --git a/src/Umbraco.Core/Models/PagedResult.cs b/src/Umbraco.Core/Models/PagedResult.cs index 6dbe6dd703..d60fb707ca 100644 --- a/src/Umbraco.Core/Models/PagedResult.cs +++ b/src/Umbraco.Core/Models/PagedResult.cs @@ -5,7 +5,6 @@ namespace Umbraco.Cms.Core.Models; /// /// Represents a paged result for a model collection /// -/// [DataContract(Name = "pagedCollection", Namespace = "")] public abstract class PagedResult { diff --git a/src/Umbraco.Core/Models/PublishedContent/HttpContextVariationContextAccessor.cs b/src/Umbraco.Core/Models/PublishedContent/HttpContextVariationContextAccessor.cs index 6d8fe9e547..277484bea7 100644 --- a/src/Umbraco.Core/Models/PublishedContent/HttpContextVariationContextAccessor.cs +++ b/src/Umbraco.Core/Models/PublishedContent/HttpContextVariationContextAccessor.cs @@ -3,7 +3,7 @@ using Umbraco.Cms.Core.Cache; namespace Umbraco.Cms.Core.Models.PublishedContent; /// -/// Implements on top of . +/// Implements on top of . /// public class HttpContextVariationContextAccessor : IVariationContextAccessor { diff --git a/src/Umbraco.Core/Models/Range.cs b/src/Umbraco.Core/Models/Range.cs index 5be2d068d4..2c287191bb 100644 --- a/src/Umbraco.Core/Models/Range.cs +++ b/src/Umbraco.Core/Models/Range.cs @@ -6,7 +6,9 @@ namespace Umbraco.Cms.Core.Models; /// Represents a range with a minimum and maximum value. /// /// The type of the minimum and maximum values. -/// +/// +/// See also of +/// public class Range : IEquatable> where T : IComparable { diff --git a/src/Umbraco.Core/Notifications/ContentPublishedNotification.cs b/src/Umbraco.Core/Notifications/ContentPublishedNotification.cs index 58bb76280b..ef911832d2 100644 --- a/src/Umbraco.Core/Notifications/ContentPublishedNotification.cs +++ b/src/Umbraco.Core/Notifications/ContentPublishedNotification.cs @@ -24,7 +24,6 @@ public sealed class ContentPublishedNotification : EnumerableObjectNotification< public ContentPublishedNotification(IEnumerable target, EventMessages messages, bool includeDescendants) : base(target, messages) => IncludeDescendants = includeDescendants; - /// public IEnumerable PublishedEntities => Target; public bool IncludeDescendants { get; } diff --git a/src/Umbraco.Core/Notifications/ModelBindingErrorNotification.cs b/src/Umbraco.Core/Notifications/ModelBindingErrorNotification.cs index 0048699e09..be9271b805 100644 --- a/src/Umbraco.Core/Notifications/ModelBindingErrorNotification.cs +++ b/src/Umbraco.Core/Notifications/ModelBindingErrorNotification.cs @@ -3,7 +3,7 @@ using System.Text; namespace Umbraco.Cms.Core.Notifications; /// -/// Contains event data for the event. +/// Contains event data for the event. /// public class ModelBindingErrorNotification : INotification { diff --git a/src/Umbraco.Core/Notifications/UmbracoApplicationStartingNotification.cs b/src/Umbraco.Core/Notifications/UmbracoApplicationStartingNotification.cs index 49eaac02f2..9172359eb0 100644 --- a/src/Umbraco.Core/Notifications/UmbracoApplicationStartingNotification.cs +++ b/src/Umbraco.Core/Notifications/UmbracoApplicationStartingNotification.cs @@ -1,10 +1,10 @@ namespace Umbraco.Cms.Core.Notifications; /// -/// Notification that occurs at the very end of the Umbraco boot process (after all s are +/// Notification that occurs at the very end of the Umbraco boot process (after all s are /// initialized). /// - /// + /// public class UmbracoApplicationStartingNotification : IUmbracoApplicationLifetimeNotification { /// diff --git a/src/Umbraco.Core/Notifications/UmbracoApplicationStoppingNotification.cs b/src/Umbraco.Core/Notifications/UmbracoApplicationStoppingNotification.cs index 8face75954..d33233d438 100644 --- a/src/Umbraco.Core/Notifications/UmbracoApplicationStoppingNotification.cs +++ b/src/Umbraco.Core/Notifications/UmbracoApplicationStoppingNotification.cs @@ -2,9 +2,9 @@ namespace Umbraco.Cms.Core.Notifications; /// - /// Notification that occurs when Umbraco is shutting down (after all s are terminated). + /// Notification that occurs when Umbraco is shutting down (after all s are terminated). /// - /// + /// public class UmbracoApplicationStoppingNotification : IUmbracoApplicationLifetimeNotification { /// diff --git a/src/Umbraco.Core/Packaging/IPackageInstallation.cs b/src/Umbraco.Core/Packaging/IPackageInstallation.cs index 7fc714bfdb..a6de843402 100644 --- a/src/Umbraco.Core/Packaging/IPackageInstallation.cs +++ b/src/Umbraco.Core/Packaging/IPackageInstallation.cs @@ -22,7 +22,7 @@ public interface IPackageInstallation /// /// Reads the package xml and returns the model /// - /// + /// /// CompiledPackage ReadPackage(XDocument? packageXmlFile); } diff --git a/src/Umbraco.Core/Persistence/Repositories/ICacheInstructionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ICacheInstructionRepository.cs index f11ddf10e3..bdd6526ed7 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ICacheInstructionRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ICacheInstructionRepository.cs @@ -3,7 +3,7 @@ using Umbraco.Cms.Core.Models; namespace Umbraco.Cms.Core.Persistence.Repositories; /// -/// Represents a repository for entities. +/// Represents a repository for entities. /// public interface ICacheInstructionRepository : IRepository { diff --git a/src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs index 15312ccbf2..b51f02fd54 100644 --- a/src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/IDocumentRepository.cs @@ -36,9 +36,8 @@ public interface IDocumentRepository : IContentRepository, IReadR /// Gets objects having an expiration date before (lower than, or equal to) a specified date. /// /// - /// The content returned from this method may be culture variant, in which case the resulting - /// should be queried - /// for which culture(s) have been scheduled. + /// The content returned from this method may be culture variant, in which case you can use + /// to get the status for a specific culture. /// IEnumerable GetContentForExpiration(DateTime date); @@ -46,9 +45,8 @@ public interface IDocumentRepository : IContentRepository, IReadR /// Gets objects having a release date before (lower than, or equal to) a specified date. /// /// - /// The content returned from this method may be culture variant, in which case the resulting - /// should be queried - /// for which culture(s) have been scheduled. + /// The content returned from this method may be culture variant, in which case you can use + /// to get the status for a specific culture. /// IEnumerable GetContentForRelease(DateTime date); diff --git a/src/Umbraco.Core/PropertyEditors/DefaultPropertyIndexValueFactory.cs b/src/Umbraco.Core/PropertyEditors/DefaultPropertyIndexValueFactory.cs index 0193f45778..28f41c5a20 100644 --- a/src/Umbraco.Core/PropertyEditors/DefaultPropertyIndexValueFactory.cs +++ b/src/Umbraco.Core/PropertyEditors/DefaultPropertyIndexValueFactory.cs @@ -5,7 +5,7 @@ namespace Umbraco.Cms.Core.PropertyEditors; /// /// Provides a default implementation for -/// , returning a single field to index containing the property value. +/// , returning a single field to index containing the property value. /// public class DefaultPropertyIndexValueFactory : IPropertyIndexValueFactory { diff --git a/src/Umbraco.Core/PropertyEditors/VoidEditor.cs b/src/Umbraco.Core/PropertyEditors/VoidEditor.cs index f272dc49bd..507d20d386 100644 --- a/src/Umbraco.Core/PropertyEditors/VoidEditor.cs +++ b/src/Umbraco.Core/PropertyEditors/VoidEditor.cs @@ -17,7 +17,7 @@ public class VoidEditor : DataEditor /// Initializes a new instance of the class. /// /// An optional alias suffix. - /// A logger factory. + /// A data value editor factory. /// /// The default alias of the editor is "Umbraco.Void". When a suffix is provided, /// it is appended to the alias. Eg if the suffix is "Foo" the alias is "Umbraco.Void.Foo". @@ -39,7 +39,7 @@ public class VoidEditor : DataEditor /// /// Initializes a new instance of the class. /// - /// A logger factory. + /// A data value editor factory. /// The alias of the editor is "Umbraco.Void". public VoidEditor( IDataValueEditorFactory dataValueEditorFactory) diff --git a/src/Umbraco.Core/PublishedCache/IPublishedContentCache.cs b/src/Umbraco.Core/PublishedCache/IPublishedContentCache.cs index 7526226302..6d5fa9b4e8 100644 --- a/src/Umbraco.Core/PublishedCache/IPublishedContentCache.cs +++ b/src/Umbraco.Core/PublishedCache/IPublishedContentCache.cs @@ -19,7 +19,7 @@ public interface IPublishedContentCache : IPublishedCache /// /// /// If - /// + /// /// is null then the settings value is used. /// /// The value of overrides defaults. @@ -40,7 +40,7 @@ public interface IPublishedContentCache : IPublishedCache /// /// /// If - /// + /// /// is null then the settings value is used. /// /// Considers published or unpublished content depending on defaults. diff --git a/src/Umbraco.Core/Routing/DefaultUrlProvider.cs b/src/Umbraco.Core/Routing/DefaultUrlProvider.cs index 97e2f73e88..c30d5453aa 100644 --- a/src/Umbraco.Core/Routing/DefaultUrlProvider.cs +++ b/src/Umbraco.Core/Routing/DefaultUrlProvider.cs @@ -47,7 +47,6 @@ public class DefaultUrlProvider : IUrlProvider /// /// Gets the other URLs of a published content. /// - /// The Umbraco context. /// The published content id. /// The current absolute URL. /// The other URLs for the published content. diff --git a/src/Umbraco.Core/Routing/IPublishedRequest.cs b/src/Umbraco.Core/Routing/IPublishedRequest.cs index 645de414d7..fa3d2779a4 100644 --- a/src/Umbraco.Core/Routing/IPublishedRequest.cs +++ b/src/Umbraco.Core/Routing/IPublishedRequest.cs @@ -1,5 +1,6 @@ using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.PublishedContent; +using Umbraco.Extensions; namespace Umbraco.Cms.Core.Routing; @@ -101,7 +102,7 @@ public interface IPublishedRequest /// This flag is based on previous Umbraco versions but it is not clear how this flag can be set by developers /// since /// collission checking only occurs in the back office which is launched by - /// + /// /// for which events do not execute. /// /// diff --git a/src/Umbraco.Core/Routing/IPublishedRequestBuilder.cs b/src/Umbraco.Core/Routing/IPublishedRequestBuilder.cs index f6cdafee78..77f8d8d53a 100644 --- a/src/Umbraco.Core/Routing/IPublishedRequestBuilder.cs +++ b/src/Umbraco.Core/Routing/IPublishedRequestBuilder.cs @@ -2,6 +2,7 @@ using System.Globalization; using System.Net; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.PublishedContent; +using Umbraco.Extensions; namespace Umbraco.Cms.Core.Routing; @@ -162,7 +163,7 @@ public interface IPublishedRequestBuilder /// This flag is based on previous Umbraco versions but it is not clear how this flag can be set by developers /// since /// collission checking only occurs in the back office which is launched by - /// + /// /// for which events do not execute. /// /// diff --git a/src/Umbraco.Core/Routing/IPublishedRouter.cs b/src/Umbraco.Core/Routing/IPublishedRouter.cs index 5434c46447..53a07ff325 100644 --- a/src/Umbraco.Core/Routing/IPublishedRouter.cs +++ b/src/Umbraco.Core/Routing/IPublishedRouter.cs @@ -26,6 +26,7 @@ public interface IPublishedRouter /// Updates the request to use the specified item, or NULL /// /// The request. + /// The published content. /// /// /// A new based on values from the original diff --git a/src/Umbraco.Core/Routing/UrlProvider.cs b/src/Umbraco.Core/Routing/UrlProvider.cs index 97385a144b..f6c8691622 100644 --- a/src/Umbraco.Core/Routing/UrlProvider.cs +++ b/src/Umbraco.Core/Routing/UrlProvider.cs @@ -21,7 +21,6 @@ namespace Umbraco.Cms.Core.Routing /// The list of URL providers. /// The list of media URL providers. /// The current variation accessor. - /// public UrlProvider(IUmbracoContextAccessor umbracoContextAccessor, IOptions routingSettings, UrlProviderCollection urlProviders, MediaUrlProviderCollection mediaUrlProviders, IVariationContextAccessor variationContextAccessor) { _umbracoContextAccessor = umbracoContextAccessor ?? throw new ArgumentNullException(nameof(umbracoContextAccessor)); diff --git a/src/Umbraco.Core/Scoping/ILockingMechanism.cs b/src/Umbraco.Core/Scoping/ILockingMechanism.cs index 22dded1652..449c4a01ed 100644 --- a/src/Umbraco.Core/Scoping/ILockingMechanism.cs +++ b/src/Umbraco.Core/Scoping/ILockingMechanism.cs @@ -6,6 +6,7 @@ public interface ILockingMechanism : IDisposable /// Read-locks some lock objects lazily. /// /// Instance id of the scope who is requesting the lock + /// Timeout for the lock /// Array of lock object identifiers. void ReadLock(Guid instanceId, TimeSpan? timeout = null, params int[] lockIds); @@ -15,6 +16,7 @@ public interface ILockingMechanism : IDisposable /// Write-locks some lock objects lazily. /// /// Instance id of the scope who is requesting the lock + /// Timeout for the lock /// Array of object identifiers. void WriteLock(Guid instanceId, TimeSpan? timeout = null, params int[] lockIds); @@ -24,6 +26,7 @@ public interface ILockingMechanism : IDisposable /// Eagerly acquires a read-lock /// /// + /// Timeout for the lock /// void EagerReadLock(Guid instanceId, TimeSpan? timeout = null, params int[] lockIds); @@ -33,6 +36,7 @@ public interface ILockingMechanism : IDisposable /// Eagerly acquires a write-lock /// /// + /// Timeout for the lock /// void EagerWriteLock(Guid instanceId, TimeSpan? timeout = null, params int[] lockIds); diff --git a/src/Umbraco.Core/Security/ContentPermissions.cs b/src/Umbraco.Core/Security/ContentPermissions.cs index db27d100c6..d43e527a62 100644 --- a/src/Umbraco.Core/Security/ContentPermissions.cs +++ b/src/Umbraco.Core/Security/ContentPermissions.cs @@ -151,8 +151,6 @@ public class ContentPermissions /// /// /// - /// - /// /// The item resolved if one was found for the id /// /// @@ -218,9 +216,6 @@ public class ContentPermissions /// /// /// - /// - /// - /// /// The item resolved if one was found for the id /// /// diff --git a/src/Umbraco.Core/Security/IIdentityUserLogin.cs b/src/Umbraco.Core/Security/IIdentityUserLogin.cs index 51035b724c..69b01fdf5a 100644 --- a/src/Umbraco.Core/Security/IIdentityUserLogin.cs +++ b/src/Umbraco.Core/Security/IIdentityUserLogin.cs @@ -5,7 +5,6 @@ namespace Umbraco.Cms.Core.Security; /// /// An external login provider linked to a user /// -/// The PK type for the user public interface IIdentityUserLogin : IEntity, IRememberBeingDirty { /// diff --git a/src/Umbraco.Core/Security/LegacyPasswordSecurity.cs b/src/Umbraco.Core/Security/LegacyPasswordSecurity.cs index 3b53509240..a960fd7998 100644 --- a/src/Umbraco.Core/Security/LegacyPasswordSecurity.cs +++ b/src/Umbraco.Core/Security/LegacyPasswordSecurity.cs @@ -218,10 +218,9 @@ public class LegacyPasswordSecurity } /// - /// Return the hash algorithm to use based on the + /// Return the hash algorithm to use based on the provided . /// /// The hashing algorithm name. - /// /// private HashAlgorithm GetHashAlgorithm(string algorithm) { diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index 0340a07735..f67c4bb62a 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -207,7 +207,7 @@ public class ContentService : RepositoryService, IContentService /// /// Used to bulk update the permissions set for a content item. This will replace all permissions - /// assigned to an entity with a list of user id & permission pairs. + /// assigned to an entity with a list of user id & permission pairs. /// /// public void SetPermissions(EntityPermissionSet permissionSet) diff --git a/src/Umbraco.Core/Services/ICacheInstructionService.cs b/src/Umbraco.Core/Services/ICacheInstructionService.cs index 0b71bde66d..25b52c09e3 100644 --- a/src/Umbraco.Core/Services/ICacheInstructionService.cs +++ b/src/Umbraco.Core/Services/ICacheInstructionService.cs @@ -36,7 +36,9 @@ public interface ICacheInstructionService /// /// Processes and then prunes pending database cache instructions. /// - /// Flag indicating if process is shutting now and operations should exit. + /// Cache refreshers. + /// Server role. + /// Cancellation token. /// Local identity of the executing AppDomain. /// Date of last prune operation. /// Id of the latest processed instruction diff --git a/src/Umbraco.Core/Services/IContentService.cs b/src/Umbraco.Core/Services/IContentService.cs index 1eb2db83bf..0d3cc80b82 100644 --- a/src/Umbraco.Core/Services/IContentService.cs +++ b/src/Umbraco.Core/Services/IContentService.cs @@ -76,12 +76,10 @@ public interface IContentService : IContentServiceBase /// IContent? GetById(int id); - new - /// /// Gets a document. /// - IContent? GetById(Guid key); + new IContent? GetById(Guid key); /// /// Gets publish/unpublish schedule for a content node. @@ -167,9 +165,8 @@ public interface IContentService : IContentServiceBase /// /// An Enumerable list of objects /// - /// The content returned from this method may be culture variant, in which case the resulting - /// should be queried - /// for which culture(s) have been scheduled. + /// The content returned from this method may be culture variant, in which case you can use + /// to get the status for a specific culture. /// IEnumerable GetContentForExpiration(DateTime date); @@ -178,9 +175,8 @@ public interface IContentService : IContentServiceBase /// /// An Enumerable list of objects /// - /// The content returned from this method may be culture variant, in which case the resulting - /// should be queried - /// for which culture(s) have been scheduled. + /// The content returned from this method may be culture variant, in which case you can use + /// to get the status for a specific culture. /// IEnumerable GetContentForRelease(DateTime date); diff --git a/src/Umbraco.Core/Services/IExternalLoginWithKeyService.cs b/src/Umbraco.Core/Services/IExternalLoginWithKeyService.cs index 54f827c899..42f0708aaa 100644 --- a/src/Umbraco.Core/Services/IExternalLoginWithKeyService.cs +++ b/src/Umbraco.Core/Services/IExternalLoginWithKeyService.cs @@ -35,7 +35,7 @@ public interface IExternalLoginWithKeyService : IService /// /// Saves the external login tokens associated with the user /// - /// + /// /// The user or member key associated with the logins /// /// diff --git a/src/Umbraco.Core/Services/IMediaService.cs b/src/Umbraco.Core/Services/IMediaService.cs index 86440b1119..1e433814f7 100644 --- a/src/Umbraco.Core/Services/IMediaService.cs +++ b/src/Umbraco.Core/Services/IMediaService.cs @@ -90,9 +90,6 @@ public interface IMediaService : IContentServiceBase /// Page number /// Page size /// Total records query would return without paging - /// Field to order by - /// Direction to order by - /// Flag to indicate when ordering by system field /// /// /// An Enumerable list of objects diff --git a/src/Umbraco.Core/Services/IMemberService.cs b/src/Umbraco.Core/Services/IMemberService.cs index b2b2b5d8d5..a1be0b4a4c 100644 --- a/src/Umbraco.Core/Services/IMemberService.cs +++ b/src/Umbraco.Core/Services/IMemberService.cs @@ -178,7 +178,7 @@ public interface IMemberService : IMembershipMemberService /// /// If no alias is supplied then the count for all Member will be returned /// Optional alias for the MemberType when counting number of Members - /// with number of Members + /// with number of Members int Count(string? memberTypeAlias = null); /// @@ -204,7 +204,7 @@ public interface IMemberService : IMembershipMemberService /// /// Gets a Member by its integer id /// - /// Id + /// Id /// /// /// @@ -278,7 +278,7 @@ public interface IMemberService : IMembershipMemberService /// Gets a list of Members based on a property search /// /// Alias of the PropertyType to search for - /// Value to match + /// Value to match /// /// The type of match to make as . Default is /// @@ -295,7 +295,7 @@ public interface IMemberService : IMembershipMemberService /// Gets a list of Members based on a property search /// /// Alias of the PropertyType to search for - /// Value to match + /// Value to match /// /// The type of match to make as . Default is /// @@ -309,7 +309,7 @@ public interface IMemberService : IMembershipMemberService /// Gets a list of Members based on a property search /// /// Alias of the PropertyType to search for - /// Value to match + /// Value to match /// /// /// diff --git a/src/Umbraco.Core/Services/IMembershipMemberService.cs b/src/Umbraco.Core/Services/IMembershipMemberService.cs index 553441f572..99e64a3686 100644 --- a/src/Umbraco.Core/Services/IMembershipMemberService.cs +++ b/src/Umbraco.Core/Services/IMembershipMemberService.cs @@ -48,7 +48,7 @@ public interface IMembershipMemberService : IService /// but that is how MS have made theirs so we'll follow that principal. /// /// to count by - /// with number of Members or Users for passed in type + /// with number of Members or Users for passed in type int GetCount(MemberCountType countType); /// diff --git a/src/Umbraco.Core/Services/IPackagingService.cs b/src/Umbraco.Core/Services/IPackagingService.cs index 40f39628be..f4102c08de 100644 --- a/src/Umbraco.Core/Services/IPackagingService.cs +++ b/src/Umbraco.Core/Services/IPackagingService.cs @@ -9,14 +9,14 @@ public interface IPackagingService : IService /// /// Returns a result from an umbraco package file (zip) /// - /// + /// /// CompiledPackage GetCompiledPackageInfo(XDocument packageXml); /// /// Installs the data, entities, objects contained in an umbraco package file (zip) /// - /// + /// /// InstallationSummary InstallCompiledPackageData(FileInfo packageXmlFile, int userId = Constants.Security.SuperUserId); diff --git a/src/Umbraco.Core/Services/IRelationService.cs b/src/Umbraco.Core/Services/IRelationService.cs index 6f8fa9b75a..5d50466d0f 100644 --- a/src/Umbraco.Core/Services/IRelationService.cs +++ b/src/Umbraco.Core/Services/IRelationService.cs @@ -167,7 +167,8 @@ public interface IRelationService : IService /// /// /// - /// + /// + /// /// IEnumerable GetPagedByRelationTypeId(int relationTypeId, long pageIndex, int pageSize, out long totalRecords, Ordering? ordering = null); @@ -213,6 +214,7 @@ public interface IRelationService : IService /// /// /// + /// /// An enumerable list of IEnumerable GetPagedParentEntitiesByChildId(int id, long pageIndex, int pageSize, out long totalChildren, params UmbracoObjectTypes[] entityTypes); @@ -223,6 +225,7 @@ public interface IRelationService : IService /// /// /// + /// /// An enumerable list of IEnumerable GetPagedChildEntitiesByParentId(int id, long pageIndex, int pageSize, out long totalChildren, params UmbracoObjectTypes[] entityTypes); diff --git a/src/Umbraco.Core/Services/ITagService.cs b/src/Umbraco.Core/Services/ITagService.cs index 5e2f164a35..93a9d2a0c4 100644 --- a/src/Umbraco.Core/Services/ITagService.cs +++ b/src/Umbraco.Core/Services/ITagService.cs @@ -1,9 +1,9 @@ -using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Models; namespace Umbraco.Cms.Core.Services; /// -/// Tag service to query for tags in the tags db table. The tags returned are only relevant for published content & +/// Tag service to query for tags in the tags db table. The tags returned are only relevant for published content & /// saved media or members /// /// diff --git a/src/Umbraco.Core/Services/ITrackedReferencesService.cs b/src/Umbraco.Core/Services/ITrackedReferencesService.cs index 5ffe5e3651..7ea2e07e03 100644 --- a/src/Umbraco.Core/Services/ITrackedReferencesService.cs +++ b/src/Umbraco.Core/Services/ITrackedReferencesService.cs @@ -55,7 +55,6 @@ public interface ITrackedReferencesService /// A boolean indicating whether to filter only the RelationTypes which are /// dependencies (isDependency field is set to true). /// - /// The total amount of items. /// A paged result of objects. PagedModel GetPagedRelationsForItem(int id, long skip, long take, bool filterMustBeIsDependency) => throw new NotImplementedException(); @@ -69,7 +68,6 @@ public interface ITrackedReferencesService /// A boolean indicating whether to filter only the RelationTypes which are /// dependencies (isDependency field is set to true). /// - /// The total amount of items. /// A paged result of objects. PagedModel GetPagedDescendantsInReferences(int parentId, long skip, long take, bool filterMustBeIsDependency) => throw new NotImplementedException(); @@ -83,7 +81,6 @@ public interface ITrackedReferencesService /// A boolean indicating whether to filter only the RelationTypes which are /// dependencies (isDependency field is set to true). /// - /// The total amount of items. /// A paged result of objects. PagedModel GetPagedItemsWithRelations(int[] ids, long skip, long take, bool filterMustBeIsDependency) => throw new NotImplementedException(); } diff --git a/src/Umbraco.Core/Services/MemberService.cs b/src/Umbraco.Core/Services/MemberService.cs index 3e5464edd9..e713a55507 100644 --- a/src/Umbraco.Core/Services/MemberService.cs +++ b/src/Umbraco.Core/Services/MemberService.cs @@ -56,7 +56,7 @@ namespace Umbraco.Cms.Core.Services /// but that is how MS have made theirs so we'll follow that principal. /// /// to count by - /// with number of Members for passed in type + /// with number of Members for passed in type public int GetCount(MemberCountType countType) { using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); @@ -87,7 +87,7 @@ namespace Umbraco.Cms.Core.Services /// /// If no alias is supplied then the count for all Member will be returned /// Optional alias for the MemberType when counting number of Members - /// with number of Members + /// with number of Members public int Count(string? memberTypeAlias = null) { using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); @@ -155,7 +155,6 @@ namespace Umbraco.Cms.Core.Services /// Email of the to create /// This value should be the encoded/encrypted/hashed value for the password that will be stored in the database /// Alias of the Type - /// Is the member approved /// IMember IMembershipMemberService.CreateWithIdentity(string username, string email, string passwordValue, string memberTypeAlias) => CreateMemberWithIdentity(username, email, username, passwordValue, memberTypeAlias); @@ -186,15 +185,16 @@ namespace Umbraco.Cms.Core.Services => CreateMemberWithIdentity(username, email, name, string.Empty, memberTypeAlias, isApproved); /// - /// Creates and persists a Member + /// Creates and persists a Member. /// /// Using this method will persist the Member object before its returned - /// meaning that it will have an Id available (unlike the CreateMember method) - /// Username of the Member to create - /// Email of the Member to create - /// Name of the Member to create - /// Alias of the MemberType the Member should be based on - /// Optional IsApproved of the Member to create + /// meaning that it will have an Id available (unlike the method). + /// Username of the Member to create. + /// Email of the Member to create. + /// Name of the Member to create. + /// Password value of the Member to create. + /// Alias of the MemberType the Member should be based on. + /// Optional IsApproved of the Member to create. /// public IMember CreateMemberWithIdentity(string username, string email, string name, string passwordValue, string memberTypeAlias, bool isApproved = true) { @@ -230,6 +230,7 @@ namespace Umbraco.Cms.Core.Services /// Username of the Member to create /// Email of the Member to create /// MemberType the Member should be based on + /// Is the member approved. /// public IMember CreateMemberWithIdentity(string username, string email, IMemberType memberType, bool isApproved) => CreateMemberWithIdentity(username, email, username, string.Empty, memberType, isApproved); @@ -246,6 +247,7 @@ namespace Umbraco.Cms.Core.Services /// Email of the Member to create /// Name of the Member to create /// MemberType the Member should be based on + /// Is the member approved /// public IMember CreateMemberWithIdentity(string username, string email, string name, IMemberType memberType, bool isApproved) => CreateMemberWithIdentity(username, email, name, string.Empty, memberType, isApproved); @@ -260,6 +262,7 @@ namespace Umbraco.Cms.Core.Services /// Name of the Member to create /// This value should be the encoded/encrypted/hashed value for the password that will be stored in the database /// MemberType the Member should be based on + /// Is the member approved /// private IMember CreateMemberWithIdentity(string username, string email, string name, string passwordValue, IMemberType memberType, bool isApproved = true) { @@ -296,7 +299,7 @@ namespace Umbraco.Cms.Core.Services /// /// Gets a Member by its integer id /// - /// Id + /// Id /// public IMember? GetById(int id) { @@ -580,7 +583,7 @@ namespace Umbraco.Cms.Core.Services /// Gets a list of Members based on a property search /// /// Alias of the PropertyType to search for - /// Value to match + /// Value to match /// The type of match to make as . Default is /// public IEnumerable? GetMembersByPropertyValue(string propertyTypeAlias, string value, StringPropertyMatchType matchType = StringPropertyMatchType.Exact) @@ -614,7 +617,7 @@ namespace Umbraco.Cms.Core.Services /// Gets a list of Members based on a property search /// /// Alias of the PropertyType to search for - /// Value to match + /// Value to match /// The type of match to make as . Default is /// public IEnumerable? GetMembersByPropertyValue(string propertyTypeAlias, int value, ValuePropertyMatchType matchType = ValuePropertyMatchType.Exact) @@ -651,7 +654,7 @@ namespace Umbraco.Cms.Core.Services /// Gets a list of Members based on a property search /// /// Alias of the PropertyType to search for - /// Value to match + /// Value to match /// public IEnumerable? GetMembersByPropertyValue(string propertyTypeAlias, bool value) { diff --git a/src/Umbraco.Core/Services/TagService.cs b/src/Umbraco.Core/Services/TagService.cs index c75863f6de..d2995414d3 100644 --- a/src/Umbraco.Core/Services/TagService.cs +++ b/src/Umbraco.Core/Services/TagService.cs @@ -7,7 +7,7 @@ using Umbraco.Cms.Core.Scoping; namespace Umbraco.Cms.Core.Services; /// -/// Tag service to query for tags in the tags db table. The tags returned are only relevant for published content & +/// Tag service to query for tags in the tags db table. The tags returned are only relevant for published content & /// saved media or members /// /// diff --git a/src/Umbraco.Core/Services/UserService.cs b/src/Umbraco.Core/Services/UserService.cs index 69e6351fbd..7f839e81d1 100644 --- a/src/Umbraco.Core/Services/UserService.cs +++ b/src/Umbraco.Core/Services/UserService.cs @@ -140,7 +140,7 @@ internal class UserService : RepositoryService, IUserService /// /// Gets a User by its integer id /// - /// Id + /// Id /// /// /// @@ -535,7 +535,7 @@ internal class UserService : RepositoryService, IUserService /// but that is how MS have made theirs so we'll follow that principal. /// /// to count by - /// with number of Users for passed in type + /// with number of Users for passed in type public int GetCount(MemberCountType countType) { using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) @@ -945,19 +945,12 @@ internal class UserService : RepositoryService, IUserService } /// - /// Saves a UserGroup + /// Saves a UserGroup. /// - /// UserGroup to save + /// UserGroup to save. /// /// If null than no changes are made to the users who are assigned to this group, however if a value is passed in - /// than all users will be removed from this group and only these users will be added - /// - /// Default is - /// True - /// otherwise set to - /// False - /// to not raise events - /// + /// than all users will be removed from this group and only these users will be added. public void Save(IUserGroup userGroup, int[]? userIds = null) { EventMessages evtMsgs = EventMessagesFactory.Get(); diff --git a/src/Umbraco.Core/Sync/ElectedServerRoleAccessor.cs b/src/Umbraco.Core/Sync/ElectedServerRoleAccessor.cs index 09c904b7bc..5bc37ee0ee 100644 --- a/src/Umbraco.Core/Sync/ElectedServerRoleAccessor.cs +++ b/src/Umbraco.Core/Sync/ElectedServerRoleAccessor.cs @@ -19,7 +19,6 @@ public sealed class ElectedServerRoleAccessor : IServerRoleAccessor /// Initializes a new instance of the class. /// /// The registration service. - /// Some options. public ElectedServerRoleAccessor(IServerRegistrationService registrationService) => _registrationService = registrationService ?? throw new ArgumentNullException(nameof(registrationService)); diff --git a/src/Umbraco.Core/Sync/RefreshInstruction.cs b/src/Umbraco.Core/Sync/RefreshInstruction.cs index 3fbf4bea50..5060e8854a 100644 --- a/src/Umbraco.Core/Sync/RefreshInstruction.cs +++ b/src/Umbraco.Core/Sync/RefreshInstruction.cs @@ -62,6 +62,9 @@ public class RefreshInstruction /// /// A private constructor to create a new instance /// + /// + /// + /// /// /// When the refresh method is we know how many Ids are being refreshed /// so we know the instruction diff --git a/src/Umbraco.Core/Templates/HtmlLocalLinkParser.cs b/src/Umbraco.Core/Templates/HtmlLocalLinkParser.cs index 1030705051..059f5f9cef 100644 --- a/src/Umbraco.Core/Templates/HtmlLocalLinkParser.cs +++ b/src/Umbraco.Core/Templates/HtmlLocalLinkParser.cs @@ -65,7 +65,6 @@ public sealed class HtmlLocalLinkParser /// Parses the string looking for the {localLink} syntax and updates them to their correct links. /// /// - /// /// public string EnsureInternalLinks(string text) { diff --git a/src/Umbraco.Core/Trees/ISearchableTree.cs b/src/Umbraco.Core/Trees/ISearchableTree.cs index 42883d0f87..1f24d33f66 100644 --- a/src/Umbraco.Core/Trees/ISearchableTree.cs +++ b/src/Umbraco.Core/Trees/ISearchableTree.cs @@ -16,7 +16,6 @@ public interface ISearchableTree : IDiscoverable /// /// /// - /// /// /// A starting point for the search, generally a node id, but for members this is a member type alias /// diff --git a/src/Umbraco.Core/Web/HybridUmbracoContextAccessor.cs b/src/Umbraco.Core/Web/HybridUmbracoContextAccessor.cs index 509a746b30..910f65f4e5 100644 --- a/src/Umbraco.Core/Web/HybridUmbracoContextAccessor.cs +++ b/src/Umbraco.Core/Web/HybridUmbracoContextAccessor.cs @@ -17,7 +17,7 @@ public class HybridUmbracoContextAccessor : HybridAccessorBase, } /// - /// Tries to get the object. + /// Tries to get the object. /// public bool TryGetUmbracoContext([MaybeNullWhen(false)] out IUmbracoContext umbracoContext) { @@ -27,12 +27,12 @@ public class HybridUmbracoContextAccessor : HybridAccessorBase, } /// - /// Clears the current object. + /// Clears the current object. /// public void Clear() => Value = null; /// - /// Sets the object. + /// Sets the object. /// /// public void Set(IUmbracoContext umbracoContext) => Value = umbracoContext; diff --git a/src/Umbraco.Core/WebAssets/IRuntimeMinifier.cs b/src/Umbraco.Core/WebAssets/IRuntimeMinifier.cs index 813618738b..75505eb16e 100644 --- a/src/Umbraco.Core/WebAssets/IRuntimeMinifier.cs +++ b/src/Umbraco.Core/WebAssets/IRuntimeMinifier.cs @@ -14,6 +14,7 @@ public interface IRuntimeMinifier /// Creates a css bundle /// /// + /// /// /// /// All files must be absolute paths, relative paths will throw @@ -36,7 +37,7 @@ public interface IRuntimeMinifier /// Creates a JS bundle /// /// - /// + /// /// /// /// All files must be absolute paths, relative paths will throw diff --git a/src/Umbraco.Infrastructure/Examine/IValueSetBuilder.cs b/src/Umbraco.Infrastructure/Examine/IValueSetBuilder.cs index d9c5fe9566..b6857b8ca7 100644 --- a/src/Umbraco.Infrastructure/Examine/IValueSetBuilder.cs +++ b/src/Umbraco.Infrastructure/Examine/IValueSetBuilder.cs @@ -3,13 +3,13 @@ using Examine; namespace Umbraco.Cms.Infrastructure.Examine; /// -/// Creates a collection of to be indexed based on a collection of +/// Creates a collection of to be indexed based on a collection of . /// /// public interface IValueSetBuilder { /// - /// Creates a collection of to be indexed based on a collection of + /// Creates a collection of to be indexed based on a collection of . /// /// /// diff --git a/src/Umbraco.Infrastructure/Examine/IndexPopulator.cs b/src/Umbraco.Infrastructure/Examine/IndexPopulator.cs index db3fe2373f..ce9ce604f4 100644 --- a/src/Umbraco.Infrastructure/Examine/IndexPopulator.cs +++ b/src/Umbraco.Infrastructure/Examine/IndexPopulator.cs @@ -4,7 +4,7 @@ using Umbraco.Cms.Core.Collections; namespace Umbraco.Cms.Infrastructure.Examine; /// -/// An that is automatically associated to any index of type +/// An that is automatically associated to any index of type /// /// public abstract class IndexPopulator : IndexPopulator diff --git a/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs b/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs index be50c069ed..c100da0ab2 100644 --- a/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs +++ b/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs @@ -12,7 +12,7 @@ namespace Umbraco.Cms.Infrastructure.HostedServices; /// Provides a base class for recurring background tasks implemented as hosted services. /// /// -/// See: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio#timed-background-tasks +/// See: . /// public abstract class RecurringHostedServiceBase : IHostedService, IDisposable { diff --git a/src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs b/src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs index 59e4eeb105..81afad16f8 100644 --- a/src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs +++ b/src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs @@ -124,9 +124,9 @@ namespace Umbraco.Extensions /// Outputs a .txt format log at /App_Data/Logs/ /// /// A Serilog LoggerConfiguration - /// + /// /// The log level you wish the JSON file to collect - default is Verbose (highest) - /// The number of days to keep log files. Default is set to null which means all logs are kept + /// [Obsolete("Will be removed in Umbraco 13.")] public static LoggerConfiguration OutputDefaultTextFile( this LoggerConfiguration logConfig, diff --git a/src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreator.cs b/src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreator.cs index b847743076..d422ea1445 100644 --- a/src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreator.cs +++ b/src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreator.cs @@ -520,19 +520,8 @@ public class DatabaseSchemaCreator } /// - /// Drops the table for the specified . + /// Drops the table for the specified /// - /// The type representing the DTO/table. - /// - /// - /// schemaHelper.DropTable<MyDto>); - /// - /// - /// - /// If has been decorated with an , the name from that - /// attribute will be used for the table name. If the attribute is not present, the name - /// will be used instead. - /// public void DropTable(string? tableName) { var sql = new Sql(string.Format(SqlSyntax.DropTable, SqlSyntax.GetQuotedTableName(tableName))); diff --git a/src/Umbraco.Infrastructure/Migrations/MigrationExpressionBase.cs b/src/Umbraco.Infrastructure/Migrations/MigrationExpressionBase.cs index 08b1b2b1ab..a2029cbef8 100644 --- a/src/Umbraco.Infrastructure/Migrations/MigrationExpressionBase.cs +++ b/src/Umbraco.Infrastructure/Migrations/MigrationExpressionBase.cs @@ -33,7 +33,7 @@ public abstract class MigrationExpressionBase : IMigrationExpression public List Expressions => _expressions ??= new List(); /// - /// This might be useful in the future if we add it to the interface, but for now it's used to hack the DeleteAppTables & DeleteForeignKeyExpression + /// This might be useful in the future if we add it to the interface, but for now it's used to hack the DeleteAppTables & DeleteForeignKeyExpression /// to ensure they are not executed twice. /// internal string? Name { get; set; } diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/FallbackLanguage.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/FallbackLanguage.cs index ee0d5157ae..1c1e043748 100644 --- a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/FallbackLanguage.cs +++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/FallbackLanguage.cs @@ -5,11 +5,11 @@ using Umbraco.Extensions; namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_8_0_0; -[Obsolete("This is not used anymore and will be removed in Umbraco 13")] /// /// Adds a new, self-joined field to umbracoLanguages to hold the fall-back language for /// a given language. /// +[Obsolete("This is not used anymore and will be removed in Umbraco 13")] public class FallbackLanguage : MigrationBase { public FallbackLanguage(IMigrationContext context) diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/UserForeignKeys.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/UserForeignKeys.cs index 06feca0411..2ec20c744d 100644 --- a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/UserForeignKeys.cs +++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/UserForeignKeys.cs @@ -3,10 +3,10 @@ using Umbraco.Cms.Infrastructure.Persistence.Dtos; namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_8_0_0; -[Obsolete("This is not used anymore and will be removed in Umbraco 13")] /// /// Creates/Updates non mandatory FK columns to the user table /// +[Obsolete("This is not used anymore and will be removed in Umbraco 13")] public class UserForeignKeys : MigrationBase { public UserForeignKeys(IMigrationContext context) diff --git a/src/Umbraco.Infrastructure/Models/MediaWithCrops.cs b/src/Umbraco.Infrastructure/Models/MediaWithCrops.cs index 04e1a6825d..c346eddb05 100644 --- a/src/Umbraco.Infrastructure/Models/MediaWithCrops.cs +++ b/src/Umbraco.Infrastructure/Models/MediaWithCrops.cs @@ -63,7 +63,7 @@ public class MediaWithCrops : MediaWithCrops public new T Content { get; } /// - /// Performs an implicit conversion from to . + /// Performs an implicit conversion from to . /// /// The media with crops. /// diff --git a/src/Umbraco.Infrastructure/ModelsBuilder/Building/TextBuilder.cs b/src/Umbraco.Infrastructure/ModelsBuilder/Building/TextBuilder.cs index 0fa866ec23..22160b0ef4 100644 --- a/src/Umbraco.Infrastructure/ModelsBuilder/Building/TextBuilder.cs +++ b/src/Umbraco.Infrastructure/ModelsBuilder/Building/TextBuilder.cs @@ -35,6 +35,7 @@ public class TextBuilder : Builder /// Initializes a new instance of the class with a list of models to generate /// and the result of code parsing. /// + /// The models builder configuration. /// The list of models to generate. public TextBuilder(ModelsBuilderSettings config, IList typeModels) : base(config, typeModels) diff --git a/src/Umbraco.Infrastructure/Persistence/DatabaseProviderMetadataExtensions.cs b/src/Umbraco.Infrastructure/Persistence/DatabaseProviderMetadataExtensions.cs index 09c0a121dc..c00f5a226e 100644 --- a/src/Umbraco.Infrastructure/Persistence/DatabaseProviderMetadataExtensions.cs +++ b/src/Umbraco.Infrastructure/Persistence/DatabaseProviderMetadataExtensions.cs @@ -1,3 +1,4 @@ +using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Install.Models; using Umbraco.Cms.Infrastructure.Persistence.SqlSyntax; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityRepositoryBase.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityRepositoryBase.cs index 611d89b6cf..25d53e00ae 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityRepositoryBase.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityRepositoryBase.cs @@ -37,7 +37,7 @@ public abstract class EntityRepositoryBase : RepositoryBase, IRead protected ILogger> Logger { get; } /// - /// Gets the isolated cache for the + /// Gets the isolated cache for the /// protected IAppPolicyCache GlobalIsolatedCache => AppCaches.IsolatedCaches.GetOrCreate(); @@ -185,7 +185,7 @@ public abstract class EntityRepositoryBase : RepositoryBase, IRead => PerformCount(query); /// - /// Get the entity id for the + /// Get the entity id for the . /// protected virtual TId GetEntityId(TEntity entity) => (TId)(object)entity.Id; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PermissionRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PermissionRepository.cs index 85a168997d..79be0f93b0 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PermissionRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PermissionRepository.cs @@ -17,7 +17,7 @@ namespace Umbraco.Cms.Infrastructure.Persistence.Repositories.Implement; /// /// /// -/// This repo implements the base class so that permissions can be +/// This repo implements the base class so that permissions can be /// queued to be persisted /// like the normal repository pattern but the standard repository Get commands don't apply and will throw /// diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs index cf2329570e..eda072f049 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs @@ -145,7 +145,7 @@ internal class UserRepository : EntityRepositoryBase, IUserRepositor /// /// /// - /// Can be used for slightly faster user lookups if the result doesn't require security data (i.e. groups, apps & start nodes). + /// Can be used for slightly faster user lookups if the result doesn't require security data (i.e. groups, apps & start nodes). /// This is really only used for a shim in order to upgrade to 7.6. /// /// @@ -160,7 +160,7 @@ internal class UserRepository : EntityRepositoryBase, IUserRepositor /// /// /// This is really only used for a shim in order to upgrade to 7.6 but could be used - /// for slightly faster user lookups if the result doesn't require security data (i.e. groups, apps & start nodes) + /// for slightly faster user lookups if the result doesn't require security data (i.e. groups, apps & start nodes) /// /// /// A non cached instance diff --git a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs index 4c88e7659a..af8eb8e1fe 100644 --- a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs +++ b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs @@ -390,7 +390,7 @@ public class UmbracoDatabase : Database, IUmbracoDatabase public new T ExecuteScalar(string sql, params object[] args) => ExecuteScalar(new Sql(sql, args)); - /// + /// public new T ExecuteScalar(Sql sql) => ExecuteScalar(sql.SQL, CommandType.Text, sql.Arguments); diff --git a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseExtensions.cs b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseExtensions.cs index 78bcc34f2b..3ba2f88daf 100644 --- a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseExtensions.cs +++ b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseExtensions.cs @@ -2,6 +2,7 @@ using NPoco; using Umbraco.Cms.Core.Persistence; using Umbraco.Cms.Infrastructure.Persistence.Dtos; using Umbraco.Cms.Infrastructure.Persistence.SqlSyntax; +using Umbraco.Cms.Infrastructure.Runtime; using Umbraco.Extensions; namespace Umbraco.Cms.Infrastructure.Persistence; @@ -21,7 +22,7 @@ internal static class UmbracoDatabaseExtensions /// /// Gets a dictionary of key/values directly from the database, no scope, nothing. /// - /// Used by to determine the runtime state. + /// Used by to determine the runtime state. public static IReadOnlyDictionary? GetFromKeyValueTable( this IUmbracoDatabase? database, string keyPrefix) diff --git a/src/Umbraco.Infrastructure/PropertyEditors/BlockEditorPropertyValueEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/BlockEditorPropertyValueEditor.cs index fbf2239828..c524c2c39b 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/BlockEditorPropertyValueEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/BlockEditorPropertyValueEditor.cs @@ -119,7 +119,6 @@ internal abstract class BlockEditorPropertyValueEditor : DataValueEditor, IDataV /// Ensure that sub-editor values are translated through their ToEditor methods /// /// - /// /// /// /// diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperConfiguration.cs b/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperConfiguration.cs index 3714a965e5..0f844b94b8 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperConfiguration.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperConfiguration.cs @@ -33,6 +33,7 @@ internal static class ImageCropperConfigurationExtensions /// /// Applies the configuration to ensure only valid crops are kept and have the correct width/height. /// + /// /// The configuration. public static void ApplyConfiguration(this ImageCropperValue imageCropperValue, ImageCropperConfiguration? configuration) { diff --git a/src/Umbraco.Infrastructure/Security/BackOfficeIdentityUser.cs b/src/Umbraco.Infrastructure/Security/BackOfficeIdentityUser.cs index b617ce5a05..008178cc19 100644 --- a/src/Umbraco.Infrastructure/Security/BackOfficeIdentityUser.cs +++ b/src/Umbraco.Infrastructure/Security/BackOfficeIdentityUser.cs @@ -108,7 +108,11 @@ public class BackOfficeIdentityUser : UmbracoIdentityUser /// /// Used to construct a new instance without an identity /// + /// + /// /// This is allowed to be null (but would need to be filled in if trying to persist this instance) + /// + /// public static BackOfficeIdentityUser CreateNew(GlobalSettings globalSettings, string? username, string email, string culture, string? name = null) { if (string.IsNullOrWhiteSpace(username)) diff --git a/src/Umbraco.Infrastructure/Security/DeleteExternalLoginsOnMemberDeletedHandler.cs b/src/Umbraco.Infrastructure/Security/DeleteExternalLoginsOnMemberDeletedHandler.cs index 4294287041..fc066e7796 100644 --- a/src/Umbraco.Infrastructure/Security/DeleteExternalLoginsOnMemberDeletedHandler.cs +++ b/src/Umbraco.Infrastructure/Security/DeleteExternalLoginsOnMemberDeletedHandler.cs @@ -14,7 +14,7 @@ public class DeleteExternalLoginsOnMemberDeletedHandler : INotificationHandler - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// public DeleteExternalLoginsOnMemberDeletedHandler(IExternalLoginWithKeyService externalLoginWithKeyService) => _externalLoginWithKeyService = externalLoginWithKeyService; diff --git a/src/Umbraco.Infrastructure/Security/IUmbracoUserManager.cs b/src/Umbraco.Infrastructure/Security/IUmbracoUserManager.cs index 714db070bb..1cbd8eb51f 100644 --- a/src/Umbraco.Infrastructure/Security/IUmbracoUserManager.cs +++ b/src/Umbraco.Infrastructure/Security/IUmbracoUserManager.cs @@ -18,7 +18,7 @@ public interface IUmbracoUserManager : IDisposable Task GetUserIdAsync(TUser user); /// - /// Get the from a + /// Get the from a /// /// The /// A representing the result of the asynchronous operation. diff --git a/src/Umbraco.Infrastructure/Services/CacheInstructionService.cs b/src/Umbraco.Infrastructure/Services/CacheInstructionService.cs index 3d7c751c58..2458705309 100644 --- a/src/Umbraco.Infrastructure/Services/CacheInstructionService.cs +++ b/src/Umbraco.Infrastructure/Services/CacheInstructionService.cs @@ -338,9 +338,14 @@ namespace Umbraco.Cms /// /// Processes the instruction batch and checks for errors. /// + /// + /// + /// /// /// Tracks which instructions have already been processed to avoid duplicates /// + /// + /// /// /// Returns true if all instructions in the batch were processed, otherwise false if they could not be due to the app being shut down /// diff --git a/src/Umbraco.Web.BackOffice/Authorization/UserGroupHandler.cs b/src/Umbraco.Web.BackOffice/Authorization/UserGroupHandler.cs index 595dcf8663..82a01ab73e 100644 --- a/src/Umbraco.Web.BackOffice/Authorization/UserGroupHandler.cs +++ b/src/Umbraco.Web.BackOffice/Authorization/UserGroupHandler.cs @@ -36,6 +36,7 @@ public class UserGroupHandler : MustSatisfyRequirementAuthorizationHandlerService for media related operations. /// Service for entity related operations. /// Accessor for back-office security. + /// App caches. public UserGroupHandler( IHttpContextAccessor httpContextAccessor, IUserService userService, diff --git a/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs b/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs index d3a47157c0..06af352884 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs @@ -650,7 +650,6 @@ public class AuthenticationController : UmbracoApiControllerBase /// Return the for the given /// /// - /// /// private UserDetail? GetUserDetail(IUser? user) { diff --git a/src/Umbraco.Web.BackOffice/Controllers/CodeFileController.cs b/src/Umbraco.Web.BackOffice/Controllers/CodeFileController.cs index 28a6012901..0e4cc3de6d 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/CodeFileController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/CodeFileController.cs @@ -633,7 +633,7 @@ public class CodeFileController : BackOfficeNotificationsController /// The style sheet data /// The style sheet combined from the CSS and the rules /// - /// Any "umbraco style rules" in the CSS will be removed and replaced with the rules passed in + /// Any "umbraco style rules" in the CSS will be removed and replaced with the rules passed in /// public string? PostInterpolateStylesheetRules(StylesheetData data) { diff --git a/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs b/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs index 1d899bb3fe..d8c306bff4 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs @@ -1962,7 +1962,7 @@ public class ContentController : ContentControllerBase /// /// /// - /// The culture used in the localization message, null by default which means will be used. + /// The culture used in the localization message, null by default which means will be used. /// private void AddVariantValidationError(string? culture, string? segment, string localizationArea, string localizationAlias, string? cultureToken = null) { diff --git a/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs b/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs index 36a60843fb..e97d7dd055 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs @@ -72,7 +72,6 @@ public abstract class ContentControllerBase : BackOfficeNotificationsController /// Handles if the content for the specified ID isn't found /// /// The content ID to find - /// Whether to throw an exception /// The error response protected NotFoundObjectResult HandleContentNotFound(object id) { diff --git a/src/Umbraco.Web.BackOffice/Controllers/EntityController.cs b/src/Umbraco.Web.BackOffice/Controllers/EntityController.cs index 036397cb4d..fedf8ceba4 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/EntityController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/EntityController.cs @@ -1251,7 +1251,7 @@ public class EntityController : UmbracoAuthorizedJsonController /// /// The type of entity. /// - /// Optional filter - Format like: "BoolVariable==true&IntVariable>=6". Invalid filters are + /// Optional filter - Format like: "BoolVariable==true&IntVariable>=6". Invalid filters are /// ignored. /// /// diff --git a/src/Umbraco.Web.BackOffice/Controllers/ImagesController.cs b/src/Umbraco.Web.BackOffice/Controllers/ImagesController.cs index 787aa0070c..90ef6e6cf4 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/ImagesController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/ImagesController.cs @@ -149,6 +149,11 @@ public class ImagesController : UmbracoAuthorizedApiController /// /// /// + /// + /// + /// + /// + /// /// /// /// If there is no media, image property or image file is found then this will return not found. diff --git a/src/Umbraco.Web.BackOffice/Controllers/LogViewerController.cs b/src/Umbraco.Web.BackOffice/Controllers/LogViewerController.cs index 74615e1fa8..c0a6f0312c 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/LogViewerController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/LogViewerController.cs @@ -13,7 +13,7 @@ using Umbraco.Cms.Web.Common.Authorization; namespace Umbraco.Cms.Web.BackOffice.Controllers; /// -/// Backoffice controller supporting the dashboard for viewing logs with some simple graphs & filtering +/// Backoffice controller supporting the dashboard for viewing logs with some simple graphs & filtering /// [PluginController(Constants.Web.Mvc.BackOfficeApiArea)] [Authorize(Policy = AuthorizationPolicies.SectionAccessSettings)] diff --git a/src/Umbraco.Web.BackOffice/Controllers/MacroRenderingController.cs b/src/Umbraco.Web.BackOffice/Controllers/MacroRenderingController.cs index b2261acb2f..efa322a88c 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/MacroRenderingController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/MacroRenderingController.cs @@ -80,7 +80,7 @@ public class MacroRenderingController : UmbracoAuthorizedJsonController /// /// /// To send a dictionary as a GET parameter the query should be structured like: - /// ?macroAlias=Test&pageId=3634¯oParams[0].key=myKey¯oParams[0].value=myVal¯oParams[1].key=anotherKey + /// ?macroAlias=Test&pageId=3634&macroParams[0].key=myKey&macroParams[0].value=myVal&macroParams[1].key=anotherKey /// ¯oParams[1].value=anotherVal /// /// diff --git a/src/Umbraco.Web.BackOffice/Controllers/MacrosController.cs b/src/Umbraco.Web.BackOffice/Controllers/MacrosController.cs index 34a28dd874..799b97144d 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/MacrosController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/MacrosController.cs @@ -286,7 +286,7 @@ public class MacrosController : BackOfficeNotificationsController /// Finds all the macro partials /// /// - /// The . + /// The . /// private IEnumerable FindPartialViewsFiles() { @@ -302,7 +302,7 @@ public class MacrosController : BackOfficeNotificationsController /// Finds all macro partials in the views folder /// /// - /// The . + /// The . /// private IEnumerable FindPartialViewFilesInViewsFolder() { @@ -369,7 +369,7 @@ public class MacrosController : BackOfficeNotificationsController /// The prefix virtual path. /// /// - /// The . + /// The . /// private IEnumerable FindPartialViewFilesInFolder(string orgPath, string path, string prefixVirtualPath) { diff --git a/src/Umbraco.Web.BackOffice/Controllers/MediaTypeController.cs b/src/Umbraco.Web.BackOffice/Controllers/MediaTypeController.cs index 09b24b11e4..6377d119c3 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/MediaTypeController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/MediaTypeController.cs @@ -135,7 +135,7 @@ public class MediaTypeController : ContentTypeControllerBase /// /// Returns a media type by alias /// - /// /// Alias of the media type + /// Alias of the media type /// public IEnumerable GetAllFiltered([FromQuery] string[] aliases) { diff --git a/src/Umbraco.Web.BackOffice/Extensions/HtmlHelperBackOfficeExtensions.cs b/src/Umbraco.Web.BackOffice/Extensions/HtmlHelperBackOfficeExtensions.cs index 1773969563..41ecde4760 100644 --- a/src/Umbraco.Web.BackOffice/Extensions/HtmlHelperBackOfficeExtensions.cs +++ b/src/Umbraco.Web.BackOffice/Extensions/HtmlHelperBackOfficeExtensions.cs @@ -16,17 +16,7 @@ public static class HtmlHelperBackOfficeExtensions /// Outputs a script tag containing the bare minimum (non secure) server vars for use with the angular app /// /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// + /// /// /// /// These are the bare minimal server variables that are required for the application to start without being @@ -52,6 +42,7 @@ public static class HtmlHelperBackOfficeExtensions /// /// /// + /// /// public static async Task AngularValueExternalLoginInfoScriptAsync(this IHtmlHelper html, IBackOfficeExternalLoginProviders externalLogins, diff --git a/src/Umbraco.Web.BackOffice/Extensions/ModelStateExtensions.cs b/src/Umbraco.Web.BackOffice/Extensions/ModelStateExtensions.cs index 915d94a68b..1b8effa5cd 100644 --- a/src/Umbraco.Web.BackOffice/Extensions/ModelStateExtensions.cs +++ b/src/Umbraco.Web.BackOffice/Extensions/ModelStateExtensions.cs @@ -36,6 +36,7 @@ public static class ModelStateExtensions /// /// /// The culture for the property, if the property is invariant than this is empty + /// internal static void AddPropertyError(this ModelStateDictionary modelState, ValidationResult result, string propertyAlias, string culture = "", string segment = "") => modelState.AddPropertyValidationError(new ContentPropertyValidationResult(result, culture, segment), diff --git a/src/Umbraco.Web.BackOffice/Filters/ContentSaveValidationAttribute.cs b/src/Umbraco.Web.BackOffice/Filters/ContentSaveValidationAttribute.cs index fb8629c461..003b6676fe 100644 --- a/src/Umbraco.Web.BackOffice/Filters/ContentSaveValidationAttribute.cs +++ b/src/Umbraco.Web.BackOffice/Filters/ContentSaveValidationAttribute.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.Logging; @@ -131,7 +131,6 @@ internal sealed class ContentSaveValidationAttribute : TypeFilterAttribute /// /// /// - /// private async Task ValidateUserAccessAsync( ContentItemSave? contentItem, ActionExecutingContext actionContext) diff --git a/src/Umbraco.Web.BackOffice/Install/CreateUnattendedUserNotificationHandler.cs b/src/Umbraco.Web.BackOffice/Install/CreateUnattendedUserNotificationHandler.cs index 1ac7f20819..11648a2618 100644 --- a/src/Umbraco.Web.BackOffice/Install/CreateUnattendedUserNotificationHandler.cs +++ b/src/Umbraco.Web.BackOffice/Install/CreateUnattendedUserNotificationHandler.cs @@ -30,6 +30,7 @@ public class CreateUnattendedUserNotificationHandler : INotificationAsyncHandler /// Listening for when the UnattendedInstallNotification fired after a sucessfulk /// /// + /// public async Task HandleAsync(UnattendedInstallNotification notification, CancellationToken cancellationToken) { UnattendedSettings? unattendedSettings = _unattendedSettings.Value; diff --git a/src/Umbraco.Web.BackOffice/Security/IBackOfficeAntiforgery.cs b/src/Umbraco.Web.BackOffice/Security/IBackOfficeAntiforgery.cs index c4e0c1d91c..594ab55576 100644 --- a/src/Umbraco.Web.BackOffice/Security/IBackOfficeAntiforgery.cs +++ b/src/Umbraco.Web.BackOffice/Security/IBackOfficeAntiforgery.cs @@ -11,8 +11,7 @@ public interface IBackOfficeAntiforgery /// /// Validates the headers/cookies passed in for the request /// - /// - /// + /// /// Task> ValidateRequestAsync(HttpContext httpContext); @@ -20,7 +19,5 @@ public interface IBackOfficeAntiforgery /// Generates tokens to use for the cookie and header antiforgery values /// /// - /// - /// void GetAndStoreTokens(HttpContext httpContext); } diff --git a/src/Umbraco.Web.BackOffice/Security/IBackOfficeExternalLoginProviders.cs b/src/Umbraco.Web.BackOffice/Security/IBackOfficeExternalLoginProviders.cs index 78ae41d66e..6d0a699f9a 100644 --- a/src/Umbraco.Web.BackOffice/Security/IBackOfficeExternalLoginProviders.cs +++ b/src/Umbraco.Web.BackOffice/Security/IBackOfficeExternalLoginProviders.cs @@ -22,7 +22,6 @@ public interface IBackOfficeExternalLoginProviders /// Returns the authentication type for the last registered external login (oauth) provider that specifies an /// auto-login redirect option /// - /// /// string? GetAutoLoginProvider(); diff --git a/src/Umbraco.Web.BackOffice/Security/PasswordChanger.cs b/src/Umbraco.Web.BackOffice/Security/PasswordChanger.cs index 8b74f6d2c3..db6832db39 100644 --- a/src/Umbraco.Web.BackOffice/Security/PasswordChanger.cs +++ b/src/Umbraco.Web.BackOffice/Security/PasswordChanger.cs @@ -17,7 +17,7 @@ internal class PasswordChanger : IPasswordChanger where TUser : Um private readonly ILogger> _logger; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// Password changing functionality /// /// Logger for this class diff --git a/src/Umbraco.Web.BackOffice/Trees/ApplicationTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/ApplicationTreeController.cs index 461d1fc82f..817f742137 100644 --- a/src/Umbraco.Web.BackOffice/Trees/ApplicationTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/ApplicationTreeController.cs @@ -32,6 +32,7 @@ public class ApplicationTreeController : UmbracoAuthorizedApiController private readonly IControllerFactory _controllerFactory; private readonly IActionDescriptorCollectionProvider _actionDescriptorCollectionProvider; + /// /// Initializes a new instance of the class. /// public ApplicationTreeController( diff --git a/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs index 00b62a17f7..0fbf606db8 100644 --- a/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs @@ -84,7 +84,7 @@ public class MediaTreeController : ContentTreeControllerBase, ISearchableTree, I /// /// Creates a tree node for a content item based on an UmbracoEntity /// - /// + /// /// /// /// diff --git a/src/Umbraco.Web.Common/Extensions/FormCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/FormCollectionExtensions.cs index e8961dba0a..dbf0d17143 100644 --- a/src/Umbraco.Web.Common/Extensions/FormCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/FormCollectionExtensions.cs @@ -9,7 +9,7 @@ public static class FormCollectionExtensions { /// /// Converts a dictionary object to a query string representation such as: - /// firstname=shannon&lastname=deminick + /// firstname=shannon&lastname=deminick /// /// /// Any keys found in this collection will be removed from the output diff --git a/src/Umbraco.Web.Common/FileProviders/WebRootFileProviderFactory.cs b/src/Umbraco.Web.Common/FileProviders/WebRootFileProviderFactory.cs index 64824dd090..c2fec29b8e 100644 --- a/src/Umbraco.Web.Common/FileProviders/WebRootFileProviderFactory.cs +++ b/src/Umbraco.Web.Common/FileProviders/WebRootFileProviderFactory.cs @@ -18,7 +18,7 @@ public class WebRootFileProviderFactory : IManifestFileProviderFactory, IGridEdi } /// - /// Creates a new instance, pointing at . + /// Creates a new instance, pointing at . /// /// /// The newly created instance. diff --git a/src/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringAttribute.cs b/src/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringAttribute.cs index 791dfc0c12..cdf3d8c135 100644 --- a/src/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringAttribute.cs +++ b/src/Umbraco.Web.Common/Filters/ValidateUmbracoFormRouteStringAttribute.cs @@ -13,8 +13,8 @@ namespace Umbraco.Cms.Web.Common.Filters; /// Attribute used to check that the request contains a valid Umbraco form request string. /// /// - /// Applying this attribute/filter to a or SurfaceController Action will ensure that the Action can only be executed - /// when it is routed to from within Umbraco, typically when rendering a form with BeginUmbracoForm. It will mean that the natural MVC route for this Action +/// Applying this attribute/filter to a or SurfaceController Action will ensure that the Action can only be executed +/// when it is routed to from within Umbraco, typically when rendering a form with BeginUmbracoForm. It will mean that the natural MVC route for this Action /// will fail with a . /// public class ValidateUmbracoFormRouteStringAttribute : TypeFilterAttribute diff --git a/tests/Umbraco.Tests.Common/Published/PublishedContentXmlAdapter.cs b/tests/Umbraco.Tests.Common/Published/PublishedContentXmlAdapter.cs index 816a5e4fba..ea02bce244 100644 --- a/tests/Umbraco.Tests.Common/Published/PublishedContentXmlAdapter.cs +++ b/tests/Umbraco.Tests.Common/Published/PublishedContentXmlAdapter.cs @@ -12,6 +12,7 @@ using Umbraco.Cms.Core.PropertyEditors; using Umbraco.Cms.Core.Strings; using Umbraco.Cms.Infrastructure.PublishedCache; using Umbraco.Cms.Infrastructure.PublishedCache.DataSource; +using Umbraco.Cms.Infrastructure.PublishedCache.Persistence; using Umbraco.Cms.Infrastructure.Serialization; using Umbraco.Cms.Tests.Common.Builders; using Umbraco.Cms.Tests.Common.Builders.Extensions; diff --git a/tests/Umbraco.Tests.Integration/TestServerTest/UmbracoWebApplicationFactory.cs b/tests/Umbraco.Tests.Integration/TestServerTest/UmbracoWebApplicationFactory.cs index bfebf0b41b..902326973b 100644 --- a/tests/Umbraco.Tests.Integration/TestServerTest/UmbracoWebApplicationFactory.cs +++ b/tests/Umbraco.Tests.Integration/TestServerTest/UmbracoWebApplicationFactory.cs @@ -16,7 +16,6 @@ public class UmbracoWebApplicationFactory : WebApplicationFactory /// Method to create the IHostBuilder - /// Method to perform an action before IHost starts public UmbracoWebApplicationFactory(Func createHostBuilder) => _createHostBuilder = createHostBuilder; protected override IHostBuilder CreateHostBuilder() => _createHostBuilder(); diff --git a/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs b/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs index 2828e812d5..46f950ee60 100644 --- a/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs +++ b/tests/Umbraco.Tests.UnitTests/TestHelpers/PublishedSnapshotServiceTestBase.cs @@ -212,7 +212,7 @@ public class PublishedSnapshotServiceTestBase } /// - /// Initializes the with a source of data + /// Initializes the with a source of data. /// protected void InitializedCache( IEnumerable contentNodeKits, diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs index d7580be8ff..ca2ae76428 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/VariationTests.cs @@ -118,6 +118,9 @@ public class VariationTests /// /// Asserts the result of /// + /// The variation to validate + /// The culture to validate + /// The segment to validate /// Validate using Exact + Wildcards flags /// Validate using non Exact + no Wildcard flags /// Validate using Exact + no Wildcard flags diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Scoping/ScopeUnitTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Scoping/ScopeUnitTests.cs index c547b1af3e..4f3cd4775f 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Scoping/ScopeUnitTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Scoping/ScopeUnitTests.cs @@ -24,7 +24,7 @@ namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Infrastructure.Scoping /// /// Creates a ScopeProvider with mocked internals. /// - /// The mock of the ISqlSyntaxProvider2, used to count method calls. + /// /// private ScopeProvider GetScopeProvider(out Mock lockingMechanism) { diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Controllers/MemberControllerUnitTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Controllers/MemberControllerUnitTests.cs index 84aa1173ef..79038453ad 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Controllers/MemberControllerUnitTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.BackOffice/Controllers/MemberControllerUnitTests.cs @@ -515,6 +515,7 @@ public class MemberControllerUnitTests /// Back office security accessor /// Password changer class /// The global settings + /// The two factor login service /// A member controller for the tests private MemberController CreateSut( IMemberService memberService, From c285caf260e3dccf5bcf1aa400eb5d468e75daca Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Wed, 28 Sep 2022 23:23:05 +0200 Subject: [PATCH 02/55] Add dropdown prevalue editor --- .../prevalueeditors/dropdown.controller.js | 53 +++++++++++++++++++ .../src/views/prevalueeditors/dropdown.html | 11 ++++ 2 files changed, 64 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.controller.js create mode 100644 src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.html diff --git a/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.controller.js b/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.controller.js new file mode 100644 index 0000000000..73f3558f34 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.controller.js @@ -0,0 +1,53 @@ +angular.module("umbraco").controller("Umbraco.PrevalueEditors.DropDownListController", + function ($scope) { + + const vm = this; + + vm.configItems = []; + vm.viewItems = []; + + function init() { + + const prevalues = ($scope.model.config ? $scope.model.config.prevalues : $scope.model.prevalues) || []; + + let items = []; + + for (let i = 0; i < prevalues.length; i++) { + const item = {}; + + if (Utilities.isObject(prevalues[i])) { + item.value = prevalues[i].value; + item.label = prevalues[i].label || prevalues[i].value; + } + else { + item.value = prevalues[i]; + item.label = prevalues[i]; + } + + items.push({ value: item.value, label: item.label }); + } + + vm.configItems = items; + + // update view model. + generateViewModel(); + } + + function generateViewModel() { + + vm.viewItems = []; + + let iConfigItem; + for (let i = 0; i < vm.configItems.length; i++) { + iConfigItem = vm.configItems[i]; + vm.viewItems.push({ + value: iConfigItem.value, + label: iConfigItem.label + }); + } + + } + + init(); + + }); diff --git a/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.html b/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.html new file mode 100644 index 0000000000..fa6f66ac3d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.html @@ -0,0 +1,11 @@ +
+ + + +
From 1f97c62a1bfdc923957dd89eee4fdbc6439c3cba Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Fri, 23 Jun 2023 00:09:18 +0200 Subject: [PATCH 03/55] Update class name --- .../src/views/prevalueeditors/dropdown.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.html b/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.html index fa6f66ac3d..adcb04da16 100644 --- a/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.html +++ b/src/Umbraco.Web.UI.Client/src/views/prevalueeditors/dropdown.html @@ -1,4 +1,4 @@ -
+
- - - - -
- - - +
+ +
+ +
+ + + + +
+
+
-
-

{{mandatoryMessage}}

-

{{datePickerForm.datepicker.errorMsg}}

-

Invalid date

-
+
+

{{mandatoryMessage}}

+

+ {{datePickerForm.datepicker.errorMsg}} +

+

+ Invalid date +

+
-

- This translates to the following time on the server: {{serverTime}}
- What does this mean? -

- -
+

+ + This translates to the following time on the server: + + {{serverTime}}
+ + What does this mean? + +

+
From 1f24b795319681c4b8b34a4018b6f5498d585ee6 Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Wed, 13 Sep 2023 08:38:54 +0200 Subject: [PATCH 13/55] Update README.md --- .github/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/README.md b/.github/README.md index e633679795..08d7fea3f6 100644 --- a/.github/README.md +++ b/.github/README.md @@ -4,6 +4,7 @@ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md) [![Follow Umbraco on Twitter](https://img.shields.io/badge/Follow-blue?logo=twitter&logoColor=fff)](https://twitter.com/intent/follow?screen_name=umbraco) [![Chat about Umbraco on Discord](https://img.shields.io/discord/869656431308189746?logo=discord&logoColor=fff)](https://discord.gg/umbraco) +[![Read what's going on in the Umbraco Discord chat now](https://img.shields.io/badge/read-discord-blue)](https://discord-chats.umbraco.com) [![Build status](https://img.shields.io/azure-devops/build/umbraco/Umbraco%2520Cms/301?logo=azurepipelines&label=Azure%20Pipelines)](https://umbraco.visualstudio.com/Umbraco%20Cms/_build?definitionId=301) [![Open in GitHub Codespaces](https://img.shields.io/badge/Open%20in%20GitHub%20Codespaces-525252?logo=github)](https://github.com/codespaces/new?hide_repo_select=true&ref=contrib&repo=10601208&machine=basicLinux32gb&devcontainer_path=.devcontainer%2Fdevcontainer.json&location=WestEurope) From 86697ff137ab6a35d5279f4c1d6991093e1bb54c Mon Sep 17 00:00:00 2001 From: Arkadiusz Biel Date: Mon, 18 Sep 2023 13:55:59 +0100 Subject: [PATCH 14/55] fix: ensured that allowed user name characters are supported in backoffice users as well (#14810) --- .../Security/ConfigureBackOfficeIdentityOptions.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.BackOffice/Security/ConfigureBackOfficeIdentityOptions.cs b/src/Umbraco.Web.BackOffice/Security/ConfigureBackOfficeIdentityOptions.cs index e3f897018a..211528afab 100644 --- a/src/Umbraco.Web.BackOffice/Security/ConfigureBackOfficeIdentityOptions.cs +++ b/src/Umbraco.Web.BackOffice/Security/ConfigureBackOfficeIdentityOptions.cs @@ -38,6 +38,8 @@ public sealed class ConfigureBackOfficeIdentityOptions : IConfigureOptions Date: Thu, 21 Sep 2023 15:02:06 +0100 Subject: [PATCH 15/55] "big PR" github action --- .github/workflows/big-pr-response.yml | 73 +++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 .github/workflows/big-pr-response.yml diff --git a/.github/workflows/big-pr-response.yml b/.github/workflows/big-pr-response.yml new file mode 100644 index 0000000000..d4123f521d --- /dev/null +++ b/.github/workflows/big-pr-response.yml @@ -0,0 +1,73 @@ +name: big-pr-resonse + +on: + pull_request: + types: [opened] + branches: + - contrib + +env: + is_hq: false + is_sweeping_pr: false + sweeping_pr_filecount: 10 + +jobs: + check-is-hq: + runs-on: ubuntu-latest + steps: + - name: Check if PR is from HQ + uses: actions/github-script@v6 + with: + script: | + const pr = context.payload.pull_request; + const response = await fetch('https://collaboratorsv2.euwest01.umbraco.io/umbraco/api/users/GetIgnoredUsers', { + method: 'POST', + headers: { + 'Authorization': 'Bearer ${{ secrets.OUR_BOT_API_TOKEN }}', + 'Content-Type': 'application/json' + } + }); + const hqUsers = await response.json(); + if(hqUsers.includes(pr.head.user.login)) { + core.exportVariable('is_hq', 'true'); + } + + check-pr-size: + runs-on: ubuntu-latest + needs: check-is-hq + if: github.env.is_hq == 'false' + permissions: + issues: write + steps: + - name: Check PR size + uses: actions/github-script@v6 + with: + script : | + const pr = context.payload.pull_request; + const fileCount = pr.changed_files; + console.log(`PR #${pr.number} has ${fileCount} files`); + if (fileCount > ${{ env.sweeping_pr_filecount }}) { + core.exportVariable('is_sweeping_pr', 'true'); + core.exportVariable('sweeping_pr_filecount', fileCount); + } + + comment-on-large-pr: + runs-on: ubuntu-latest + needs: check-pr-size + if: github.env.is_sweeping_pr == 'true' + permissions: + issues: write + steps: + - name: Comment on PR + uses: actions/github-script@v6 + with: + script: | + const pr = context.payload.pull_request; + const fileCount = parseInt(process.env.sweeping_pr_filecount); + const comment = `:warning: This PR has ${fileCount} files. Please consider splitting it into smaller PRs.`; + github.issues.createComment({ + issue_number: pr.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: comment, + }); From 336b7ff49980c9a2d7a8a70389988c936a929b62 Mon Sep 17 00:00:00 2001 From: Jason Elkin Date: Thu, 21 Sep 2023 15:02:06 +0100 Subject: [PATCH 16/55] Revert ""big PR" github action" This reverts commit a3cfbbf56a1e9bc83c995041980804cf0832dcdb. --- .github/workflows/big-pr-response.yml | 73 --------------------------- 1 file changed, 73 deletions(-) delete mode 100644 .github/workflows/big-pr-response.yml diff --git a/.github/workflows/big-pr-response.yml b/.github/workflows/big-pr-response.yml deleted file mode 100644 index d4123f521d..0000000000 --- a/.github/workflows/big-pr-response.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: big-pr-resonse - -on: - pull_request: - types: [opened] - branches: - - contrib - -env: - is_hq: false - is_sweeping_pr: false - sweeping_pr_filecount: 10 - -jobs: - check-is-hq: - runs-on: ubuntu-latest - steps: - - name: Check if PR is from HQ - uses: actions/github-script@v6 - with: - script: | - const pr = context.payload.pull_request; - const response = await fetch('https://collaboratorsv2.euwest01.umbraco.io/umbraco/api/users/GetIgnoredUsers', { - method: 'POST', - headers: { - 'Authorization': 'Bearer ${{ secrets.OUR_BOT_API_TOKEN }}', - 'Content-Type': 'application/json' - } - }); - const hqUsers = await response.json(); - if(hqUsers.includes(pr.head.user.login)) { - core.exportVariable('is_hq', 'true'); - } - - check-pr-size: - runs-on: ubuntu-latest - needs: check-is-hq - if: github.env.is_hq == 'false' - permissions: - issues: write - steps: - - name: Check PR size - uses: actions/github-script@v6 - with: - script : | - const pr = context.payload.pull_request; - const fileCount = pr.changed_files; - console.log(`PR #${pr.number} has ${fileCount} files`); - if (fileCount > ${{ env.sweeping_pr_filecount }}) { - core.exportVariable('is_sweeping_pr', 'true'); - core.exportVariable('sweeping_pr_filecount', fileCount); - } - - comment-on-large-pr: - runs-on: ubuntu-latest - needs: check-pr-size - if: github.env.is_sweeping_pr == 'true' - permissions: - issues: write - steps: - - name: Comment on PR - uses: actions/github-script@v6 - with: - script: | - const pr = context.payload.pull_request; - const fileCount = parseInt(process.env.sweeping_pr_filecount); - const comment = `:warning: This PR has ${fileCount} files. Please consider splitting it into smaller PRs.`; - github.issues.createComment({ - issue_number: pr.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: comment, - }); From 511ee96c9e0c54480b5350fa0bcabe693bdc1e0a Mon Sep 17 00:00:00 2001 From: Carl Date: Thu, 21 Sep 2023 12:28:18 +0200 Subject: [PATCH 17/55] Fix spelling mistake, and add details of additional packages Notices this spelling mistake, quick fix --- templates/Umbraco.Templates.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/Umbraco.Templates.csproj b/templates/Umbraco.Templates.csproj index 38848d398a..4a658446bc 100644 --- a/templates/Umbraco.Templates.csproj +++ b/templates/Umbraco.Templates.csproj @@ -1,7 +1,7 @@ Umbraco CMS - Templates - Coontains templates for Umbraco CMS. + Contains templates for Umbraco CMS, as well as the templates for creating new packages for the Umbraco CMS. Template false false From 4932119807b3279ef0b4960dac02ce4e12c959ff Mon Sep 17 00:00:00 2001 From: Anders Bjerner Date: Tue, 3 Oct 2023 14:43:54 +0200 Subject: [PATCH 18/55] Replaced `[MaybeNullWhen(false)]` with `[NotNullWhen(true)]` for `UdiParser.TryParse` method (#14880) * Replaced [MaybeNullWhen(false)] with [NotNullWhen(true)] for UdiParser.TryParse method * Removing some empty lines --- src/Umbraco.Core/UdiParser.cs | 8 +++---- .../Umbraco.Core/CoreThings/UdiTests.cs | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Core/UdiParser.cs b/src/Umbraco.Core/UdiParser.cs index 30448e1b45..1442d43eb2 100644 --- a/src/Umbraco.Core/UdiParser.cs +++ b/src/Umbraco.Core/UdiParser.cs @@ -70,13 +70,13 @@ public sealed class UdiParser /// The string to convert. /// An Udi instance that contains the value that was parsed. /// A boolean value indicating whether the string could be parsed. - public static bool TryParse(string? s, [MaybeNullWhen(false)] out T udi) - where T : Udi? + public static bool TryParse(string? s, [NotNullWhen(true)] out T? udi) + where T : Udi { var result = ParseInternal(s, true, false, out Udi? parsed); - if (result && parsed is T) + if (result && parsed is T t) { - udi = (T)parsed; + udi = t; return true; } diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/CoreThings/UdiTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/CoreThings/UdiTests.cs index 98bf4a608c..ccca8f9f3c 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/CoreThings/UdiTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/CoreThings/UdiTests.cs @@ -205,6 +205,28 @@ public class UdiTests Assert.Throws(() => new UdiRange(guidUdi, "x")); } + [Test] + public void TryParseTest() + { + // try parse to "Udi" + var stringUdiString = "umb://document/b9a56165-6c4e-4e79-8277-620430174ad3"; + Assert.IsTrue(UdiParser.TryParse(stringUdiString, out Udi udi1)); + Assert.AreEqual("b9a56165-6c4e-4e79-8277-620430174ad3", udi1 is GuidUdi guidUdi1 ? guidUdi1.Guid.ToString() : string.Empty); + + // try parse to "Udi" + Assert.IsFalse(UdiParser.TryParse("nope", out Udi udi2)); + Assert.IsNull(udi2); + + // try parse to "GuidUdi?" + Assert.IsTrue(UdiParser.TryParse(stringUdiString, out GuidUdi? guidUdi3)); + Assert.AreEqual("b9a56165-6c4e-4e79-8277-620430174ad3", guidUdi3.Guid.ToString()); + + // try parse to "GuidUdi?" + Assert.IsFalse(UdiParser.TryParse("nope", out GuidUdi? guidUdi4)); + Assert.IsNull(guidUdi4); + + } + [Test] public void SerializationTest() { From 930f9f67042126f5acc4ca77b3c878562dfac801 Mon Sep 17 00:00:00 2001 From: Erik-Jan Westendorp Date: Tue, 3 Oct 2023 10:14:52 +0200 Subject: [PATCH 19/55] Translate dictionary_noItemsFound --- src/Umbraco.Core/EmbeddedResources/Lang/nl.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Core/EmbeddedResources/Lang/nl.xml b/src/Umbraco.Core/EmbeddedResources/Lang/nl.xml index 0452178f92..51d04ba607 100644 --- a/src/Umbraco.Core/EmbeddedResources/Lang/nl.xml +++ b/src/Umbraco.Core/EmbeddedResources/Lang/nl.xml @@ -537,6 +537,7 @@ Er zijn geen woordenboekitems. + Er zijn geen woordenboekitems gevonden. Woordenboekitem aanmaken From 34892101a99cb5b495cda7d990b0f33115e57052 Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Tue, 3 Oct 2023 17:02:20 +0100 Subject: [PATCH 20/55] Ensure focus on specific action in block card (#14846) * Ensure focus on specific action in block card * Move if statement to parent * Change buttons in groups as well * Adjust styling --- .../components/blockcard/umb-block-card.less | 9 ++++- .../blockgrid.blockconfiguration.html | 40 +++++++++++-------- .../blocklist.blockconfiguration.html | 12 +++--- 3 files changed, 37 insertions(+), 24 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/components/blockcard/umb-block-card.less b/src/Umbraco.Web.UI.Client/src/views/components/blockcard/umb-block-card.less index b6713a3412..a40983e07c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/blockcard/umb-block-card.less +++ b/src/Umbraco.Web.UI.Client/src/views/components/blockcard/umb-block-card.less @@ -127,7 +127,12 @@ umb-block-card { right: 10px; opacity: 0; transition: opacity 120ms; - margin-right: 10px; + display: flex; + gap: 5px; + + > div { + position: relative; + } .__action { display: inline-flex; @@ -137,7 +142,7 @@ umb-block-card { width: 28px; height: 28px; background-color: white; - color:@ui-action-type; + color: @ui-action-type; &:hover { color: @ui-action-type-hover; diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/blockgrid.blockconfiguration.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/blockgrid.blockconfiguration.html index a30ef4e8db..ac92a117d8 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/blockgrid.blockconfiguration.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blockgrid/prevalue/blockgrid.blockconfiguration.html @@ -20,14 +20,18 @@ ng-click="vm.openBlockOverlay(block)" data-content-element-type-key="{{block.contentElementTypeKey}}">
- - +
+ +
+
+ +
@@ -79,14 +83,18 @@ ng-click="vm.openBlockOverlay(block)" data-content-element-type-key="{{block.contentElementTypeKey}}">
- - +
+ +
+
+ +
diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blocklist/prevalue/blocklist.blockconfiguration.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blocklist/prevalue/blocklist.blockconfiguration.html index cdefd12993..062e2dddee 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blocklist/prevalue/blocklist.blockconfiguration.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/blocklist/prevalue/blocklist.blockconfiguration.html @@ -9,12 +9,12 @@ ng-class="{'--isOpen':vm.openBlock === block}" ng-click="vm.openBlockOverlay(block)">
- +
+ +
From 1cac8ffe8886ae6d5678088cfae1fc2afc9be801 Mon Sep 17 00:00:00 2001 From: Paul Seal Date: Tue, 3 Oct 2023 17:42:29 +0100 Subject: [PATCH 21/55] =?UTF-8?q?made=20link=20to=20umbraco=20learning=20b?= =?UTF-8?q?ase=20youtube=20visible=20with=20underline=20sty=E2=80=A6=20(#1?= =?UTF-8?q?4884)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * made link to umbraco learning base youtube visible with underline style as per the other links on other dashboards. * Update membersdashboardvideos.html --------- Co-authored-by: Georgina Bidder Co-authored-by: georgebid <91198628+georgebid@users.noreply.github.com> --- src/Umbraco.Core/EmbeddedResources/Lang/bs.xml | 2 +- src/Umbraco.Core/EmbeddedResources/Lang/en.xml | 2 +- src/Umbraco.Core/EmbeddedResources/Lang/hr.xml | 2 +- .../src/views/dashboard/members/membersdashboardvideos.html | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Core/EmbeddedResources/Lang/bs.xml b/src/Umbraco.Core/EmbeddedResources/Lang/bs.xml index 212840974c..89ed8da7ea 100644 --- a/src/Umbraco.Core/EmbeddedResources/Lang/bs.xml +++ b/src/Umbraco.Core/EmbeddedResources/Lang/bs.xml @@ -2653,7 +2653,7 @@ Da upravljate svojom web lokacijom, jednostavno otvorite Umbraco backoffice i po Želite savladati Umbraco? Provedite nekoliko minuta učeći neke najbolje prakse gledajući jedan od ovih videozapisa o korištenju Umbraco-a Umbraco Learning Base Youtube kanal. Ovdje možete pronaći gomilu video materijala koji pokriva mnoge aspekte Umbraco-a.

+

Želite savladati Umbraco? Provedite nekoliko minuta učeći neke najbolje prakse gledajući jedan od ovih videozapisa o korištenju Umbraco-a Umbraco Learning Base Youtube kanal. Ovdje možete pronaći gomilu video materijala koji pokriva mnoge aspekte Umbraco-a.

]]>
Za početak diff --git a/src/Umbraco.Core/EmbeddedResources/Lang/en.xml b/src/Umbraco.Core/EmbeddedResources/Lang/en.xml index b153fbe62a..a904c8ecc0 100644 --- a/src/Umbraco.Core/EmbeddedResources/Lang/en.xml +++ b/src/Umbraco.Core/EmbeddedResources/Lang/en.xml @@ -2674,7 +2674,7 @@ To manage your website, simply open the Umbraco backoffice and start adding cont Want to master Umbraco? Spend a few minutes learning some best practices by visiting the Umbraco Learning Base Youtube channel. Here you can find a bunch of video material covering many aspects of Umbraco.

+

Want to master Umbraco? Spend a few minutes learning some best practices by visiting the Umbraco Learning Base Youtube channel. Here you can find a bunch of video material covering many aspects of Umbraco.

]]>
To get you started diff --git a/src/Umbraco.Core/EmbeddedResources/Lang/hr.xml b/src/Umbraco.Core/EmbeddedResources/Lang/hr.xml index b609cf6dee..4bdb85137f 100644 --- a/src/Umbraco.Core/EmbeddedResources/Lang/hr.xml +++ b/src/Umbraco.Core/EmbeddedResources/Lang/hr.xml @@ -2610,7 +2610,7 @@ Da bi upravljali svojom web lokacijom, jednostavno otvorite Umbraco backoffice i Želite savladati Umbraco? Provedite nekoliko minuta učeći najbolje prakse gledajući jedan od ovih videozapisa o korištenju Umbraco-a Umbraco Learning Base Youtube kanal. Ovdje možete pronaći gomilu video materijala koji pokriva mnoge aspekte Umbraco-a.

+

Želite savladati Umbraco? Provedite nekoliko minuta učeći najbolje prakse gledajući jedan od ovih videozapisa o korištenju Umbraco-a Umbraco Learning Base Youtube kanal. Ovdje možete pronaći gomilu video materijala koji pokriva mnoge aspekte Umbraco-a.

]]>
Za početak diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/members/membersdashboardvideos.html b/src/Umbraco.Web.UI.Client/src/views/dashboard/members/membersdashboardvideos.html index 4c2f391061..1bb4d8bf03 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dashboard/members/membersdashboardvideos.html +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/members/membersdashboardvideos.html @@ -6,7 +6,7 @@

Hours of Umbraco training videos are only a click away

-

Want to master Umbraco? Spend a few minutes learning some best practices by visiting the Umbraco Learning Base Youtube channel. Here you can find a bunch of video material coverings many aspects of Umbraco.

+

Want to master Umbraco? Spend a few minutes learning some best practices by visiting the Umbraco Learning Base Youtube channel. Here you can find a bunch of video material covering many aspects of Umbraco.

From 44a4abdfbd1bd0fc1c831ead42718ed66f27bbaf Mon Sep 17 00:00:00 2001 From: Laura Neto <12862535+lauraneto@users.noreply.github.com> Date: Tue, 3 Oct 2023 18:44:10 +0200 Subject: [PATCH 22/55] Updating contributing docs to add unwanted changes section (#14853) * Updating contributing docs to add unwanted changes section * Added new section to table of contents --- .github/CONTRIBUTING.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index c0eaf680a3..06fd873638 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -19,6 +19,7 @@ We also encourage community members to feel free to comment on others' pull requ * [What can I contribute?](#what-can-i-contribute) + [Making larger changes](#making-larger-changes) + [Pull request or package?](#pull-request-or-package) + + [Unwanted changes](#unwanted-changes) + [Ownership and copyright](#ownership-and-copyright) - [Finding your first issue: Up for grabs](#finding-your-first-issue-up-for-grabs) - [Making your changes](#making-your-changes) @@ -69,6 +70,25 @@ If you're unsure about whether your changes belong in the core Umbraco CMS or if If it doesn’t fit in CMS right now, we will likely encourage you to make it into a package instead. A package is a great way to check out popularity of a feature, learn how people use it, validate good usability and fix bugs. Eventually, a package could "graduate" to be included in the CMS. +#### Unwanted changes +While most changes are welcome, there are certain types of changes that are discouraged and might get your pull request refused. +Of course this will depend heavily on the specific change, but please take the following examples in mind. + +- **Breaking changes (code and/or behavioral) 💥** - sometimes it can be a bit hard to know if a change is breaking or not. Fortunately, if it relates to code, the build will fail and warn you. +- **Large refactors 🤯** - the larger the refactor, the larger the probability of introducing new bugs/issues. +- **Changes to obsolete code and/or property editors ✍️** +- **Adding new config options 🦾** - while having more flexibility is (most of the times) better, having too many options can also become overwhelming/confusing, especially if there are other (good/simple) ways to achieve it. +- **Whitespace changes 🫥** - while some of our files might not follow the formatting/whitespace rules (mostly old ones), changing several of them in one go would cause major merge conflicts with open pull requests or other work in progress. Do feel free to fix these when you are working on another issue/feature and end up "touching" those files! +- **Adding new extension/helper methods ✋** - keep in mind that more code also means more to maintain, so if a helper is only meaningful for a few, it might not be worth adding it to the core. + +While these are only a few examples, it is important to ask yourself these questions before making a pull request: + +- How many will benefit from this change? +- Are there other ways to achieve this? And if so, how do they compare? +- How maintainable is the change? +- What would be the effort to test it properly? +- Do the benefits outweigh the risks? + #### Ownership and copyright It is your responsibility to make sure that you're allowed to share the code you're providing us. For example, you should have permission from your employer or customer to share code. From ced8e0582d69579d6af3c4bd05dd4844aa2dabb2 Mon Sep 17 00:00:00 2001 From: thomashdk Date: Tue, 19 Sep 2023 23:21:06 +0200 Subject: [PATCH 23/55] Update umb-tabs-nav.html Added data-element="tab-{{tab.alias}}" to the dropdown tabs list --- .../src/views/components/tabs/umb-tabs-nav.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/components/tabs/umb-tabs-nav.html b/src/Umbraco.Web.UI.Client/src/views/components/tabs/umb-tabs-nav.html index 4872916791..e48c8d7f8f 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/tabs/umb-tabs-nav.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/tabs/umb-tabs-nav.html @@ -16,7 +16,7 @@ - +
+ + + Search Umbraco Issues + + + From b6f0db7b736e87e3c7a0702faec9b9731ce027c1 Mon Sep 17 00:00:00 2001 From: Ronald Barendse Date: Wed, 11 Oct 2023 11:25:05 +0200 Subject: [PATCH 34/55] Fix build logging of warnings/errors during packaging step (#14933) * Use DotNetCoreCLI for dotnet pack command * Use NBGV to get major version and set build number * Use NBGV_PublicRelease to determine stable build * Use latest Node patch versions * Generate NuGet packages during build --- Directory.Build.props | 4 ++-- build/azure-pipelines.yml | 43 ++++++++++++--------------------------- version.json | 7 ++++++- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index c8418ebedb..5b165db6e5 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -38,8 +38,8 @@ - - + + diff --git a/build/azure-pipelines.yml b/build/azure-pipelines.yml index 90501bfac1..6df86eba09 100644 --- a/build/azure-pipelines.yml +++ b/build/azure-pipelines.yml @@ -23,7 +23,7 @@ parameters: default: false variables: - nodeVersion: 18.16.0 + nodeVersion: 18.16.x dotnetVersion: 7.x dotnetIncludePreviewVersions: true solution: umbraco.sln @@ -79,29 +79,12 @@ stages: command: restore projects: $(solution) - task: DotNetCoreCLI@2 - displayName: Run dotnet build + name: build + displayName: Run dotnet build and generate NuGet packages inputs: command: build projects: $(solution) - arguments: '--configuration $(buildConfiguration) --no-restore -p:ContinuousIntegrationBuild=true' - - script: | - version="$(Build.BuildNumber)" - echo "Version: $version" - - major="$(echo $version | cut -d '.' -f 1)" - echo "Major version: $major" - - echo "##vso[task.setvariable variable=majorVersion;isOutput=true]$major" - displayName: Set major version - name: determineMajorVersion - - script: dotnet pack $(solution) --configuration $(buildConfiguration) --no-build --property:PackageOutputPath=$(Build.ArtifactStagingDirectory)/nupkg - displayName: Run dotnet pack - - script: | - sha="$(Build.SourceVersion)" - sha=${sha:0:7} - buildnumber="$(Build.BuildNumber)_$(Build.BuildId)_$sha" - echo "##vso[build.updatebuildnumber]$buildnumber" - displayName: Update build number + arguments: '--configuration $(buildConfiguration) --no-restore --property:ContinuousIntegrationBuild=true --property:GeneratePackageOnBuild=true --property:PackageOutputPath=$(Build.ArtifactStagingDirectory)/nupkg' - task: PublishPipelineArtifact@1 displayName: Publish nupkg inputs: @@ -114,11 +97,11 @@ stages: artifactName: build_output - stage: Build_Docs - condition: and(succeeded(), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), ${{parameters.buildApiDocs}})) + condition: and(succeeded(), or(eq(stageDependencies.Build.A.outputs['build.NBGV_PublicRelease'], 'True'), ${{parameters.buildApiDocs}})) displayName: Prepare API Documentation dependsOn: Build variables: - umbracoMajorVersion: $[ stageDependencies.Build.A.outputs['determineMajorVersion.majorVersion'] ] + umbracoMajorVersion: $[ stageDependencies.Build.A.outputs['build.NBGV_VersionMajor'] ] jobs: # C# API Reference - job: @@ -172,9 +155,9 @@ stages: vmImage: 'ubuntu-latest' steps: - task: NodeTool@0 - displayName: Use Node.js 10.15.0 + displayName: Use Node.js 10.15.x inputs: - versionSpec: 10.15.0 # Won't work with higher versions + versionSpec: 10.15.x # Won't work with higher versions - script: | npm ci --no-fund --no-audit --prefer-offline npx gulp docs @@ -281,7 +264,7 @@ stages: # Integration Tests (SQL Server) - job: timeoutInMinutes: 120 - condition: or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), ${{parameters.sqlServerIntegrationTests}}) + condition: or(eq(stageDependencies.Build.A.outputs['build.NBGV_PublicRelease'], 'True'), ${{parameters.sqlServerIntegrationTests}}) displayName: Integration Tests (SQL Server) strategy: matrix: @@ -477,7 +460,7 @@ stages: - Unit - Integration # - E2E # TODO: Enable when stable. - condition: and(succeeded(), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), ${{parameters.myGetDeploy}})) + condition: and(succeeded(), or(eq(stageDependencies.Build.A.outputs['build.NBGV_PublicRelease'], 'True'), ${{parameters.myGetDeploy}})) jobs: - job: displayName: Push to pre-release feed @@ -500,7 +483,7 @@ stages: dependsOn: - Deploy_MyGet - Build_Docs - condition: and(succeeded(), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), ${{parameters.nuGetDeploy}})) + condition: and(succeeded(), or(eq(stageDependencies.Build.A.outputs['build.NBGV_PublicRelease'], 'True'), ${{parameters.nuGetDeploy}})) jobs: - job: displayName: Push to NuGet @@ -523,12 +506,12 @@ stages: pool: vmImage: 'windows-latest' # Apparently AzureFileCopy is windows only :( variables: - umbracoMajorVersion: $[ stageDependencies.Build.A.outputs['determineMajorVersion.majorVersion'] ] + umbracoMajorVersion: $[ stageDependencies.Build.A.outputs['build.NBGV_VersionMajor'] ] displayName: Upload API Documention dependsOn: - Build - Deploy_NuGet - condition: and(succeeded(), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), ${{parameters.uploadApiDocs}})) + condition: and(succeeded(), or(eq(stageDependencies.Build.A.outputs['build.NBGV_PublicRelease'], 'True'), ${{parameters.uploadApiDocs}})) jobs: - job: displayName: Upload C# Docs diff --git a/version.json b/version.json index 4b04b0255b..a969172e6b 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", + "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json", "version": "12.2.0-rc", "assemblyVersion": { "precision": "build" @@ -12,7 +12,12 @@ "^refs/heads/main$", "^refs/heads/release/" ], + "release": { + "branchName": "release/{version}", + "tagName": "release-{version}" + }, "cloudBuild": { + "setAllVariables": true, "buildNumber": { "enabled": true } From 612b6039f2a45bd794411a2bfaa9afd7a43be2e9 Mon Sep 17 00:00:00 2001 From: "KNOWIT\\anndal3" Date: Tue, 3 Oct 2023 18:10:58 +0200 Subject: [PATCH 35/55] Add aria label to umbraco property --- .../directives/components/property/umbproperty.directive.js | 3 +++ .../src/views/components/property/umb-property.html | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/property/umbproperty.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/property/umbproperty.directive.js index 5a30f81d4b..11efb4b811 100644 --- a/src/Umbraco.Web.UI.Client/src/common/directives/components/property/umbproperty.directive.js +++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/property/umbproperty.directive.js @@ -64,10 +64,13 @@ function onInit() { vm.controlLabelTitle = null; + vm.controlAriaLabel = null; if (Umbraco.Sys.ServerVariables.isDebuggingEnabled) { userService.getCurrentUser().then(function (u) { if (u.allowedSections.indexOf("settings") !== -1 ? true : false) { vm.controlLabelTitle = vm.property.alias; + // capitalize first letter of the alias for screen readers + vm.controlAriaLabel = vm.property.alias.charAt(0).toUpperCase() + vm.property.alias.slice(1); } }); } diff --git a/src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html b/src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html index cc41896a0f..e3a65a215b 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/property/umb-property.html @@ -9,7 +9,7 @@
- + From 0362dcffc85fd289174f16bfb18697dc44473efa Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 12 Oct 2023 03:21:53 +0200 Subject: [PATCH 36/55] Remove submodule --- src/Umbraco.Web.UI.New.Client | 1 - 1 file changed, 1 deletion(-) delete mode 160000 src/Umbraco.Web.UI.New.Client diff --git a/src/Umbraco.Web.UI.New.Client b/src/Umbraco.Web.UI.New.Client deleted file mode 160000 index 40224f9d4b..0000000000 --- a/src/Umbraco.Web.UI.New.Client +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 40224f9d4be21da25d3844d1c642137194eb93fd From 0ece94bf46ed880f42bb99e54b0740b7ffabd6e1 Mon Sep 17 00:00:00 2001 From: Lucas Bach Bisgaard Date: Fri, 13 Oct 2023 11:34:45 +0200 Subject: [PATCH 37/55] Bug fix whre mediapicker dont load before an event fires elsewhere #14250 (#14803) --- .../mediapicker3/umbMediaPicker3PropertyEditor.component.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker3/umbMediaPicker3PropertyEditor.component.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker3/umbMediaPicker3PropertyEditor.component.js index 7811135bc0..59b798c532 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker3/umbMediaPicker3PropertyEditor.component.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/mediapicker3/umbMediaPicker3PropertyEditor.component.js @@ -80,7 +80,7 @@ vm.sortableOptions.disabled = vm.readonly || vm.singleMode; }); - vm.$onInit = function() { + vm.$onInit = function() { vm.node = vm.node || editorState.getCurrent(); // If we do not have a node on the scope, then disallow drop media @@ -179,7 +179,8 @@ vm.allowAdd = hasAccessToMedia; mediaUploader.init(uploaderOptions).then(() => { - vm.loading = false; + vm.loading = false; + $scope.$apply(); }); }); }; From b850cd3ee0551c707da4faef7950df1db9142648 Mon Sep 17 00:00:00 2001 From: Callum Whyte Date: Fri, 13 Oct 2023 13:30:13 +0200 Subject: [PATCH 38/55] Add SetMemberSignInManager builder extension (#14761) * Add SetMemberSignInManager builder extension * Added required using statement --------- Co-authored-by: Emma Garland --- .../Extensions/UmbracoApplicationBuilder.Identity.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoApplicationBuilder.Identity.cs b/src/Umbraco.Web.Common/Extensions/UmbracoApplicationBuilder.Identity.cs index ec3f0f5055..0c9f56a010 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoApplicationBuilder.Identity.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoApplicationBuilder.Identity.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Core.Security; +using Umbraco.Cms.Web.Common.Security; namespace Umbraco.Extensions; @@ -39,6 +40,17 @@ public static partial class UmbracoApplicationBuilderExtensions return builder; } + public static IUmbracoBuilder SetMemberSignInManager(this IUmbracoBuilder builder) + where TSignInManager : SignInManager, IMemberSignInManager + { + Type customType = typeof(TSignInManager); + Type signInManagerType = typeof(SignInManager); + builder.Services.Replace(ServiceDescriptor.Scoped(typeof(IMemberSignInManager), customType)); + builder.Services.AddScoped(customType, services => services.GetRequiredService(signInManagerType)); + builder.Services.Replace(ServiceDescriptor.Scoped(signInManagerType, customType)); + return builder; + } + public static IUmbracoBuilder SetMemberUserStore(this IUmbracoBuilder builder) where TUserStore : MemberUserStore { From 73fc6bdcdf1d967627d27308d5255210fa338743 Mon Sep 17 00:00:00 2001 From: Erik-Jan Westendorp Date: Tue, 12 Sep 2023 16:14:18 +0200 Subject: [PATCH 39/55] a11y improvement --- .../views/dashboard/settings/settingsdashboardintro.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/settingsdashboardintro.html b/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/settingsdashboardintro.html index 93fe6c0cbd..3930d53e24 100644 --- a/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/settingsdashboardintro.html +++ b/src/Umbraco.Web.UI.Client/src/views/dashboard/settings/settingsdashboardintro.html @@ -1,14 +1,14 @@ -

+

Start here -

+

This section contains the building blocks for your Umbraco site. Follow the below links to find out more about working with the items in the Settings section:

: -
+

Find out more: -

+
  • Read more about working with the items in Settings in the Umbraco Documentation. From b8928e9de00d664d0679a48873138f1afba75b4b Mon Sep 17 00:00:00 2001 From: Bram Hoven Date: Sat, 14 Oct 2023 02:01:59 +0200 Subject: [PATCH 40/55] Add IExceptionHandlerFeature check to dynamic route check (#14905) * Add IExceptionHandlerFeature check to dynamic route check * Decrease code complexity --- .../Routing/UmbracoRouteValueTransformer.cs | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.Website/Routing/UmbracoRouteValueTransformer.cs b/src/Umbraco.Web.Website/Routing/UmbracoRouteValueTransformer.cs index 4e4749860c..2afba1e0bb 100644 --- a/src/Umbraco.Web.Website/Routing/UmbracoRouteValueTransformer.cs +++ b/src/Umbraco.Web.Website/Routing/UmbracoRouteValueTransformer.cs @@ -1,5 +1,6 @@ using System.Net; using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Diagnostics; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Controllers; using Microsoft.AspNetCore.Mvc.Routing; @@ -166,11 +167,7 @@ public class UmbracoRouteValueTransformer : DynamicRouteValueTransformer return null!; } - // Don't execute if there are already UmbracoRouteValues assigned. - // This can occur if someone else is dynamically routing and in which case we don't want to overwrite - // the routing work being done there. - UmbracoRouteValues? umbracoRouteValues = httpContext.Features.Get(); - if (umbracoRouteValues != null) + if (CheckActiveDynamicRoutingAndNoException(httpContext)) { return null!; } @@ -198,7 +195,7 @@ public class UmbracoRouteValueTransformer : DynamicRouteValueTransformer IPublishedRequest publishedRequest = await RouteRequestAsync(umbracoContext); - umbracoRouteValues = await _routeValuesFactory.CreateAsync(httpContext, publishedRequest); + UmbracoRouteValues? umbracoRouteValues = await _routeValuesFactory.CreateAsync(httpContext, publishedRequest); // now we need to do some public access checks umbracoRouteValues = @@ -243,6 +240,30 @@ public class UmbracoRouteValueTransformer : DynamicRouteValueTransformer return newValues; } + /// + /// Check whether dynamic routing is currently active in an request where no exception has occured. + /// + /// [true] if dynamic routing is active, [false] if inactive or an exception has occured. + private static bool CheckActiveDynamicRoutingAndNoException(HttpContext httpContext) + { + // Don't execute if there are already UmbracoRouteValues assigned. + // This can occur if someone else is dynamically routing and in which case we don't want to overwrite + // the routing work being done there. + UmbracoRouteValues? umbracoRouteValues = httpContext.Features.Get(); + + // No dynamic routing is active currently. + if (umbracoRouteValues == null) + { + return false; + } + + // There is dynamic routing active so we have to check whether an exception occured in the current request. + // If this is the case we do want dynamic routing since it might be an Umbraco content page which is used as an error page. + IExceptionHandlerFeature? exceptionHandlerFeature = httpContext.Features.Get(); + + return exceptionHandlerFeature == null; + } + private async Task RouteRequestAsync(IUmbracoContext umbracoContext) { // ok, process From 70d36301abf8e7bdff13db43e3f045265bf886bd Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Sun, 17 Sep 2023 22:42:05 +0200 Subject: [PATCH 41/55] Remove duplicate name attribute in 2FA login form --- .../src/views/common/login-2fa.controller.js | 5 ++- .../src/views/common/login-2fa.html | 38 +++++++++++-------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/views/common/login-2fa.controller.js b/src/Umbraco.Web.UI.Client/src/views/common/login-2fa.controller.js index 6c57085c8b..ad821819c6 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/login-2fa.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/common/login-2fa.controller.js @@ -1,6 +1,7 @@ -angular.module("umbraco").controller("Umbraco.Login2faController", +angular.module("umbraco").controller("Umbraco.Login2faController", function ($scope, userService, authResource) { - let vm = this; + const vm = this; + vm.code = ""; vm.provider = ""; vm.providers = []; diff --git a/src/Umbraco.Web.UI.Client/src/views/common/login-2fa.html b/src/Umbraco.Web.UI.Client/src/views/common/login-2fa.html index fd444f180c..be11a78d76 100644 --- a/src/Umbraco.Web.UI.Client/src/views/common/login-2fa.html +++ b/src/Umbraco.Web.UI.Client/src/views/common/login-2fa.html @@ -1,6 +1,6 @@ -