Skip to content

Commit 3a7624c

Browse files
Merge branch 'v11/dev' into v11/contrib
2 parents 14af1ae + c868c60 commit 3a7624c

File tree

50 files changed

+1981
-1705
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1981
-1705
lines changed

build/azure-pipelines.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ stages:
146146
inputs:
147147
targetType: inline
148148
script: |
149-
choco install docfx --version=2.59.2 -y
149+
choco install docfx --version=2.59.4 -y
150150
if ($lastexitcode -ne 0){
151151
throw ("Error installing DocFX")
152152
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using Umbraco.Cms.Core.Mapping;
2+
using Umbraco.Cms.Infrastructure.Persistence;
3+
4+
namespace Umbraco.Cms.Persistence.SqlServer.Services;
5+
6+
public class SqlServerSpecificMapperFactory : IProviderSpecificMapperFactory
7+
{
8+
public string ProviderName => Constants.ProviderName;
9+
10+
public NPocoMapperCollection Mappers => new(() => new[] { new UmbracoDefaultMapper() });
11+
}

src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ public static class UmbracoBuilderExtensions
2222
/// </summary>
2323
public static IUmbracoBuilder AddUmbracoSqlServerSupport(this IUmbracoBuilder builder)
2424
{
25+
builder.Services.TryAddEnumerable(ServiceDescriptor
26+
.Singleton<IProviderSpecificMapperFactory, SqlServerSpecificMapperFactory>());
2527
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ISqlSyntaxProvider, SqlServerSyntaxProvider>());
2628
builder.Services.TryAddEnumerable(ServiceDescriptor
2729
.Singleton<IBulkSqlInsertProvider, SqlServerBulkSqlInsertProvider>());

src/Umbraco.Cms.Persistence.Sqlite/Mappers/SqlitePocoGuidMapper.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Globalization;
12
using NPoco;
23

34
namespace Umbraco.Cms.Persistence.Sqlite.Mappers;
@@ -28,6 +29,24 @@ public class SqlitePocoGuidMapper : DefaultMapper
2829
};
2930
}
3031

32+
if (destType == typeof(decimal))
33+
{
34+
return value =>
35+
{
36+
var result = Convert.ToDecimal(value, CultureInfo.InvariantCulture);
37+
return result;
38+
};
39+
}
40+
41+
if (destType == typeof(decimal?))
42+
{
43+
return value =>
44+
{
45+
var result = Convert.ToDecimal(value, CultureInfo.InvariantCulture);
46+
return result;
47+
};
48+
}
49+
3150
return base.GetFromDbConverter(destType, sourceType);
3251
}
3352
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@ public class HealthChecksNotificationSettings
3939
/// <summary>
4040
/// Gets or sets a value for the collection of health checks that are disabled for notifications.
4141
/// </summary>
42-
public IEnumerable<DisabledHealthCheckSettings> DisabledChecks { get; set; } =
43-
Enumerable.Empty<DisabledHealthCheckSettings>();
42+
public List<DisabledHealthCheckSettings> DisabledChecks { get; set; } =
43+
new List<DisabledHealthCheckSettings>();
4444
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public class HealthChecksSettings
1212
/// <summary>
1313
/// Gets or sets a value for the collection of healthchecks that are disabled.
1414
/// </summary>
15-
public IEnumerable<DisabledHealthCheckSettings> DisabledChecks { get; set; } =
16-
Enumerable.Empty<DisabledHealthCheckSettings>();
15+
public List<DisabledHealthCheckSettings> DisabledChecks { get; set; } =
16+
new List<DisabledHealthCheckSettings>();
1717

1818
/// <summary>
1919
/// Gets or sets a value for the healthcheck notification settings.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Umbraco.Cms.Core.Configuration.Models;
88
public class RichTextEditorSettings
99
{
1010
internal const string StaticValidElements =
11-
"+a[id|style|rel|data-id|data-udi|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|reversed|start|style|type],-ul[class|style],-li[class|style],br[class],img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align|umbracoorgwidth|umbracoorgheight|onresize|onresizestart|onresizeend|rel|data-id],-sub[style|class],-sup[style|class],-blockquote[dir|style|class],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[class|align|style],-pre[class|align|style],address[class|align|style],-h1[id|dir|class|align|style],-h2[id|dir|class|align|style],-h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|style|dir|class|align|style],hr[class|style],small[class|style],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],object[class|id|width|height|codebase|*],param[name|value|_value|class],embed[type|width|height|src|class|*],map[name|class],area[shape|coords|href|alt|target|class],bdo[class],button[class],iframe[*],figure,figcaption,video[*],audio[*],picture[*],source[*],canvas[*]";
11+
"+a[id|style|rel|data-id|data-udi|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-s[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|reversed|start|style|type],-ul[class|style],-li[class|style],br[class],img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align|umbracoorgwidth|umbracoorgheight|onresize|onresizestart|onresizeend|rel|data-id],-sub[style|class],-sup[style|class],-blockquote[dir|style|class],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[class|align|style],-pre[class|align|style],address[class|align|style],-h1[id|dir|class|align|style],-h2[id|dir|class|align|style],-h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|style|dir|class|align|style],hr[class|style],small[class|style],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],object[class|id|width|height|codebase|*],param[name|value|_value|class],embed[type|width|height|src|class|*],map[name|class],area[shape|coords|href|alt|target|class],bdo[class],button[class],iframe[*],figure,figcaption,video[*],audio[*],picture[*],source[*],canvas[*]";
1212

1313
internal const string StaticInvalidElements = "font";
1414

src/Umbraco.Core/EmbeddedResources/Snippets/RegisterMember.cshtml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
// Set to true if you want the member editable properties shown.
1919
// It will only displays properties marked as "Member can edit" on the "Info" tab of the Member Type.
2020
.WithCustomProperties(false)
21+
// By default the member will be logged in automatically after registration.
22+
// Set this to false if the member should not be logged in automatically.
23+
.WithAutomaticLogIn(true)
2124
.Build();
2225

2326
var success = TempData["FormSuccess"] != null;
@@ -39,7 +42,8 @@ else
3942
new {
4043
MemberTypeAlias = registerModel.MemberTypeAlias,
4144
UsernameIsEmail = registerModel.UsernameIsEmail,
42-
RedirectUrl = registerModel.RedirectUrl
45+
RedirectUrl = registerModel.RedirectUrl,
46+
AutomaticLogIn = registerModel.AutomaticLogIn
4347
}))
4448
{
4549
<h2>Create a new account.</h2>

src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseConfigureStep.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ public DatabaseConfigureStep(
3636

3737
public override Task<InstallSetupResult?> ExecuteAsync(DatabaseModel databaseSettings)
3838
{
39-
if (!_databaseBuilder.ConfigureDatabaseConnection(databaseSettings, false))
39+
if (databaseSettings is null && string.IsNullOrWhiteSpace(_connectionStrings.CurrentValue.ConnectionString) is false)
40+
{
41+
return Task.FromResult<InstallSetupResult?>(null);
42+
}
43+
44+
if (!_databaseBuilder.ConfigureDatabaseConnection(databaseSettings!, false))
4045
{
4146
throw new InstallException("Could not connect to the database");
4247
}

src/Umbraco.Infrastructure/Install/PackageMigrationRunner.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
using Microsoft.Extensions.DependencyInjection;
2+
using Microsoft.Extensions.Logging;
13
using Umbraco.Cms.Core;
4+
using Umbraco.Cms.Core.DependencyInjection;
25
using Umbraco.Cms.Core.Events;
36
using Umbraco.Cms.Core.Logging;
47
using Umbraco.Cms.Core.Migrations;
@@ -32,7 +35,8 @@ public PackageMigrationRunner(
3235
PackageMigrationPlanCollection packageMigrationPlans,
3336
IMigrationPlanExecutor migrationPlanExecutor,
3437
IKeyValueService keyValueService,
35-
IEventAggregator eventAggregator)
38+
IEventAggregator eventAggregator,
39+
ILogger<PackageMigrationRunner> logger)
3640
{
3741
_profilingLogger = profilingLogger;
3842
_scopeProvider = scopeProvider;
@@ -43,6 +47,27 @@ public PackageMigrationRunner(
4347
_packageMigrationPlans = packageMigrationPlans.ToDictionary(x => x.Name);
4448
}
4549

50+
[Obsolete("Use constructor that takes ILogger, this will be removed in V13")]
51+
public PackageMigrationRunner(
52+
IProfilingLogger profilingLogger,
53+
ICoreScopeProvider scopeProvider,
54+
PendingPackageMigrations pendingPackageMigrations,
55+
PackageMigrationPlanCollection packageMigrationPlans,
56+
IMigrationPlanExecutor migrationPlanExecutor,
57+
IKeyValueService keyValueService,
58+
IEventAggregator eventAggregator)
59+
: this(
60+
profilingLogger,
61+
scopeProvider,
62+
pendingPackageMigrations,
63+
packageMigrationPlans,
64+
migrationPlanExecutor,
65+
keyValueService,
66+
eventAggregator,
67+
StaticServiceProvider.Instance.GetRequiredService<ILogger<PackageMigrationRunner>>())
68+
{
69+
}
70+
4671
/// <summary>
4772
/// Runs all migration plans for a package name if any are pending.
4873
/// </summary>

0 commit comments

Comments
 (0)