Skip to content

Commit 8eb3ef6

Browse files
Merge branch 'v9/dev' into v9/contrib
2 parents 8cd0e5a + a8e0690 commit 8eb3ef6

File tree

284 files changed

+5829
-3979
lines changed

Some content is hidden

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

284 files changed

+5829
-3979
lines changed

.github/config/codeql-config.yml

+6-12
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
name: "CodeQL config"
2-
on:
3-
push:
4-
branches: [v8/contrib,v8/dev]
5-
paths-ignore:
6-
- node_modules
7-
- Umbraco.TestData
8-
- Umbraco.Tests
9-
- Umbraco.Tests.AcceptanceTest
10-
- Umbraco.Tests.Benchmarks
11-
- bin
12-
- build.tmp
2+
133
paths:
14-
- src
4+
- src
5+
6+
paths-ignore:
7+
- '**/node_modules'
8+
- 'src/Umbraco.Web.UI/wwwroot'

.github/workflows/codeql-analysis.yml

+7-46
Original file line numberDiff line numberDiff line change
@@ -2,67 +2,28 @@ name: "Code scanning - action"
22

33
on:
44
push:
5-
branches: [v8/contrib,v8/dev,v8/bug,v8/feature]
5+
branches: ['*/dev','*/contrib']
66
pull_request:
77
# The branches below must be a subset of the branches above
8-
schedule:
9-
- cron: '0 7 * * 2'
8+
branches: ['*/dev','*/contrib']
109

1110
jobs:
1211
CodeQL-Build:
1312

14-
runs-on: windows-latest
13+
runs-on: ubuntu-latest
1514

1615
steps:
1716
- name: Checkout repository
1817
uses: actions/checkout@v2
19-
with:
20-
# We must fetch at least the immediate parents so that if this is
21-
# a pull request then we can checkout the head.
22-
fetch-depth: 2
23-
24-
# If this run was triggered by a pull request event, then checkout
25-
# the head of the pull request instead of the merge commit.
26-
- run: git checkout HEAD^2
27-
if: ${{ github.event_name == 'pull_request' }}
2818

2919
# Initializes the CodeQL tools for scanning.
3020
- name: Initialize CodeQL
3121
uses: github/codeql-action/init@v1
32-
# Override language selection by uncommenting this and choosing your languages
33-
# with:
34-
# languages: go, javascript, csharp, python, cpp, java
35-
36-
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
37-
# If this step fails, then you should remove it and run the build manually (see below)
38-
39-
# ℹ️ Command-line programs to run using the OS shell.
40-
# 📚 https://git.io/JvXDl
41-
42-
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
43-
# and modify them (or add more) to build your code if your project
44-
# uses a compiled language
45-
46-
- name: configure Pagefile
47-
uses: al-cheb/[email protected]
4822
with:
49-
minimum-size: 8GB
50-
maximum-size: 32GB
51-
52-
- run: |
53-
echo "Run Umbraco-CMS build"
54-
pwsh -command .\build\build.ps1
23+
config-file: ./.github/config/codeql-config.yml
24+
25+
- name: dotnet build
26+
run: dotnet build umbraco-netcore-only.sln
5527

5628
- name: Perform CodeQL Analysis
5729
uses: github/codeql-action/analyze@v1
58-
with:
59-
config-file: ./.github/config/codeql-config.yml
60-
61-
# This job is to prevent the workflow status from showing as failed when all other jobs are skipped - See https://github.community/t/workflow-is-failing-if-no-job-can-be-ran-due-to-condition/16873
62-
always_job:
63-
name: Always run job
64-
runs-on: ubuntu-latest
65-
steps:
66-
- name: Always run
67-
run: echo "This job is to prevent the workflow status from showing as failed when all other jobs are skipped"
68-

build/templates/UmbracoPackage/.template.config/template.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"version": {
2525
"type": "parameter",
2626
"datatype": "string",
27-
"defaultValue": "9.2.0-rc",
27+
"defaultValue": "9.3.0-rc",
2828
"description": "The version of Umbraco to load using NuGet",
2929
"replaces": "UMBRACO_VERSION_FROM_TEMPLATE"
3030
},

build/templates/UmbracoProject/.template.config/template.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
"version": {
5858
"type": "parameter",
5959
"datatype": "string",
60-
"defaultValue": "9.2.0-rc",
60+
"defaultValue": "9.3.0-rc",
6161
"description": "The version of Umbraco to load using NuGet",
6262
"replaces": "UMBRACO_VERSION_FROM_TEMPLATE"
6363
},
File renamed without changes.

src/Directory.Build.props

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />
44

55
<PropertyGroup>
6-
<Version>9.2.0</Version>
7-
<AssemblyVersion>9.2.0</AssemblyVersion>
8-
<InformationalVersion>9.2.0-rc</InformationalVersion>
9-
<FileVersion>9.2.0</FileVersion>
6+
<Version>9.3.0</Version>
7+
<AssemblyVersion>9.3.0</AssemblyVersion>
8+
<InformationalVersion>9.3.0-rc</InformationalVersion>
9+
<FileVersion>9.3.0</FileVersion>
1010
<LangVersion Condition="'$(LangVersion)' == ''">9.0</LangVersion>
1111
<NeutralLanguage>en-US</NeutralLanguage>
1212
<Company>Umbraco CMS</Company>

src/JsonSchema/AppSettings.cs

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
// Copyright (c) Umbraco.
1+
// Copyright (c) Umbraco.
22
// See LICENSE for more details.
33

44
using Umbraco.Cms.Core.Configuration.Models;
5+
using Umbraco.Deploy.Core.Configuration.DeployConfiguration;
6+
using Umbraco.Deploy.Core.Configuration.DeployProjectConfiguration;
57
using Umbraco.Forms.Core.Configuration;
68
using SecuritySettings = Umbraco.Cms.Core.Configuration.Models.SecuritySettings;
79

@@ -82,7 +84,10 @@ public class CmsDefinition
8284
public BasicAuthSettings BasicAuth { get; set; }
8385

8486
public PackageMigrationSettings PackageMigration { get; set; }
87+
8588
public LegacyPasswordMigrationSettings LegacyPasswordMigration { get; set; }
89+
90+
public ContentDashboardSettings ContentDashboard { get; set; }
8691
}
8792

8893
/// <summary>
@@ -116,6 +121,9 @@ public class FieldTypesDefinition
116121
/// </summary>
117122
public class DeployDefinition
118123
{
124+
public DeploySettings Settings { get; set; }
125+
126+
public DeployProjectConfig Project { get; set; }
119127
}
120128
}
121129
}

src/JsonSchema/JsonSchema.csproj

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
<PackageReference Include="CommandLineParser" Version="2.8.0" />
1111
<PackageReference Include="NJsonSchema" Version="10.5.2" />
1212
<PackageReference Include="System.Xml.XPath.XmlDocument" Version="4.3.0" />
13-
<PackageReference Include="Umbraco.Forms.Core" Version="9.0.1" />
13+
<PackageReference Include="Umbraco.Deploy.Core" Version="9.2.0" />
14+
<PackageReference Include="Umbraco.Forms.Core" Version="9.2.0" />
1415
</ItemGroup>
1516

1617
<ItemGroup>

src/Umbraco.Core/Actions/ActionAssignDomain.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class ActionAssignDomain : IAction
88
public const char ActionLetter = 'I';
99

1010
public char Letter => ActionLetter;
11-
public string Alias => "assignDomain";
11+
public string Alias => "assigndomain";
1212
public string Category => Constants.Conventions.PermissionCategories.AdministrationCategory;
1313
public string Icon => "home";
1414
public bool ShowInNotifier => false;
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace Umbraco.Cms.Core.Actions
2+
{
3+
public class ActionNotify : IAction
4+
{
5+
public char Letter => 'N';
6+
7+
public bool ShowInNotifier => false;
8+
9+
public bool CanBePermissionAssigned => true;
10+
11+
public string Icon => "megaphone";
12+
13+
public string Alias => "notify";
14+
15+
public string Category => Constants.Conventions.PermissionCategories.ContentCategory;
16+
}
17+
}

src/Umbraco.Core/Configuration/ContentDashboardSettings.cs renamed to src/Umbraco.Core/Configuration/Models/ContentDashboardSettings.cs

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-

2-
namespace Umbraco.Cms.Core.Configuration
1+
using System.ComponentModel;
2+
3+
namespace Umbraco.Cms.Core.Configuration.Models
34
{
5+
/// <summary>
6+
/// Typed configuration options for content dashboard settings.
7+
/// </summary>
8+
[UmbracoOptions(Constants.Configuration.ConfigContentDashboard)]
49
public class ContentDashboardSettings
510
{
611
private const string DefaultContentDashboardPath = "cms";
@@ -18,6 +23,13 @@ public class ContentDashboardSettings
1823
/// Gets the path to use when constructing the URL for retrieving data for the content dashboard.
1924
/// </summary>
2025
/// <value>The URL path.</value>
21-
public string ContentDashboardPath { get; set; } = DefaultContentDashboardPath;
26+
[DefaultValue(DefaultContentDashboardPath)]
27+
public string ContentDashboardPath { get; set; } = DefaultContentDashboardPath;
28+
29+
/// <summary>
30+
/// Gets the allowed addresses to retrieve data for the content dashboard.
31+
/// </summary>
32+
/// <value>The URLs.</value>
33+
public string[] ContentDashboardUrlAllowlist { get; set; }
2234
}
2335
}

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

+21-11
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,19 @@ public class GlobalSettings
3131
internal const bool StaticSanitizeTinyMce = false;
3232

3333
/// <summary>
34-
/// Gets or sets a value for the reserved URLs.
35-
/// It must end with a comma
34+
/// Gets or sets a value for the reserved URLs (must end with a comma).
3635
/// </summary>
3736
[DefaultValue(StaticReservedUrls)]
3837
public string ReservedUrls { get; set; } = StaticReservedUrls;
3938

4039
/// <summary>
41-
/// Gets or sets a value for the reserved paths.
42-
/// It must end with a comma
40+
/// Gets or sets a value for the reserved paths (must end with a comma).
4341
/// </summary>
4442
[DefaultValue(StaticReservedPaths)]
4543
public string ReservedPaths { get; set; } = StaticReservedPaths;
4644

4745
/// <summary>
48-
/// Gets or sets a value for the timeout
46+
/// Gets or sets a value for the back-office login timeout.
4947
/// </summary>
5048
[DefaultValue(StaticTimeOut)]
5149
public TimeSpan TimeOut { get; set; } = TimeSpan.Parse(StaticTimeOut);
@@ -104,11 +102,19 @@ public class GlobalSettings
104102
public string UmbracoScriptsPath { get; set; } = StaticUmbracoScriptsPath;
105103

106104
/// <summary>
107-
/// Gets or sets a value for the Umbraco media path.
105+
/// Gets or sets a value for the Umbraco media request path.
108106
/// </summary>
109107
[DefaultValue(StaticUmbracoMediaPath)]
110108
public string UmbracoMediaPath { get; set; } = StaticUmbracoMediaPath;
111109

110+
/// <summary>
111+
/// Gets or sets a value for the physical Umbraco media root path (falls back to <see cref="UmbracoMediaPath" /> when empty).
112+
/// </summary>
113+
/// <remarks>
114+
/// If the value is a virtual path, it's resolved relative to the webroot.
115+
/// </remarks>
116+
public string UmbracoMediaPhysicalRootPath { get; set; }
117+
112118
/// <summary>
113119
/// Gets or sets a value indicating whether to install the database when it is missing.
114120
/// </summary>
@@ -130,6 +136,10 @@ public class GlobalSettings
130136
/// Gets or sets a value for the main dom lock.
131137
/// </summary>
132138
public string MainDomLock { get; set; } = string.Empty;
139+
140+
/// <summary>
141+
/// Gets or sets the telemetry ID.
142+
/// </summary>
133143
public string Id { get; set; } = string.Empty;
134144

135145
/// <summary>
@@ -163,19 +173,19 @@ public class GlobalSettings
163173
/// </summary>
164174
public bool IsPickupDirectoryLocationConfigured => !string.IsNullOrWhiteSpace(Smtp?.PickupDirectoryLocation);
165175

166-
/// Gets a value indicating whether TinyMCE scripting sanitization should be applied
176+
/// <summary>
177+
/// Gets a value indicating whether TinyMCE scripting sanitization should be applied.
167178
/// </summary>
168179
[DefaultValue(StaticSanitizeTinyMce)]
169180
public bool SanitizeTinyMce => StaticSanitizeTinyMce;
170181

171182
/// <summary>
172-
/// An int value representing the time in milliseconds to lock the database for a write operation
183+
/// Gets a value representing the time in milliseconds to lock the database for a write operation.
173184
/// </summary>
174185
/// <remarks>
175-
/// The default value is 5000 milliseconds
186+
/// The default value is 5000 milliseconds.
176187
/// </remarks>
177-
/// <value>The timeout in milliseconds.</value>
178188
[DefaultValue(StaticSqlWriteLockTimeOut)]
179189
public TimeSpan SqlWriteLockTimeOut { get; } = TimeSpan.Parse(StaticSqlWriteLockTimeOut);
180190
}
181-
}
191+
}

src/Umbraco.Core/Constants-Configuration.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace Umbraco.Cms.Core
1+
namespace Umbraco.Cms.Core
22
{
33
public static partial class Constants
44
{
@@ -54,6 +54,7 @@ public static class Configuration
5454
public const string ConfigUserPassword = ConfigPrefix + "Security:UserPassword";
5555
public const string ConfigRichTextEditor = ConfigPrefix + "RichTextEditor";
5656
public const string ConfigPackageMigration = ConfigPrefix + "PackageMigration";
57+
public const string ConfigContentDashboard = ConfigPrefix + "ContentDashboard";
5758
}
5859
}
5960
}

src/Umbraco.Core/Constants-Conventions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ public static class Member
235235
/// The standard properties group name for membership properties.
236236
/// </summary>
237237
public const string StandardPropertiesGroupName = "Membership";
238-
}
238+
}
239239

240240
/// <summary>
241241
/// Defines the alias identifiers for Umbraco member types.

src/Umbraco.Core/Constants-HealthChecks.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace Umbraco.Cms.Core
1+
namespace Umbraco.Cms.Core
22
{
33
/// <summary>
44
/// Defines constants.
@@ -20,15 +20,16 @@ public static class LiveEnvironment
2020

2121
public const string CompilationDebugCheck = "https://umbra.co/healthchecks-compilation-debug";
2222
}
23+
2324
public static class Configuration
2425
{
2526
public const string MacroErrorsCheck = "https://umbra.co/healthchecks-macro-errors";
2627
public const string TrySkipIisCustomErrorsCheck = "https://umbra.co/healthchecks-skip-iis-custom-errors";
2728
public const string NotificationEmailCheck = "https://umbra.co/healthchecks-notification-email";
2829
}
30+
2931
public static class FolderAndFilePermissionsCheck
3032
{
31-
3233
public const string FileWriting = "https://umbra.co/healthchecks-file-writing";
3334
public const string FolderCreation = "https://umbra.co/healthchecks-folder-creation";
3435
public const string FileWritingForPackages = "https://umbra.co/healthchecks-file-writing-for-packages";
@@ -37,7 +38,7 @@ public static class FolderAndFilePermissionsCheck
3738

3839
public static class Security
3940
{
40-
41+
public const string UmbracoApplicationUrlCheck = "https://umbra.co/healthchecks-umbraco-application-url";
4142
public const string ClickJackingCheck = "https://umbra.co/healthchecks-click-jacking";
4243
public const string HstsCheck = "https://umbra.co/healthchecks-hsts";
4344
public const string NoSniffCheck = "https://umbra.co/healthchecks-no-sniff";
@@ -46,7 +47,6 @@ public static class Security
4647

4748
public static class HttpsCheck
4849
{
49-
5050
public const string CheckIfCurrentSchemeIsHttps = "https://umbra.co/healthchecks-https-request";
5151
public const string CheckHttpsConfigurationSetting = "https://umbra.co/healthchecks-https-config";
5252
public const string CheckForValidCertificate = "https://umbra.co/healthchecks-valid-certificate";

src/Umbraco.Core/Constants-Security.cs

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public static class Security
5050
/// providers need to be setup differently and each auth type for the back office will be prefixed with this value
5151
/// </remarks>
5252
public const string BackOfficeExternalAuthenticationTypePrefix = "Umbraco.";
53+
public const string MemberExternalAuthenticationTypePrefix = "UmbracoMembers.";
5354

5455
public const string StartContentNodeIdClaimType = "http://umbraco.org/2015/02/identity/claims/backoffice/startcontentnode";
5556
public const string StartMediaNodeIdClaimType = "http://umbraco.org/2015/02/identity/claims/backoffice/startmedianode";

src/Umbraco.Core/Constants-SystemDirectories.cs

+2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public static class SystemDirectories
4343

4444
public const string AppPlugins = "/App_Plugins";
4545
public static string AppPluginIcons => "/Backoffice/Icons";
46+
public const string CreatedPackages = "/created-packages";
47+
4648

4749
public const string MvcViews = "~/Views";
4850

0 commit comments

Comments
 (0)