Skip to content

Commit 4a59934

Browse files
Merge branch 'umbraco:main' into main
2 parents b074cc9 + 684c7af commit 4a59934

File tree

484 files changed

+20388
-8506
lines changed

Some content is hidden

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

484 files changed

+20388
-8506
lines changed

.github/pull_request_template.md

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,33 @@
1-
## Description
1+
## 📋 Description
22

3-
_What did you add/update/change?_
3+
<!-- A clear and concise description of what this PR changes or adds. Include context if necessary. -->
44

5-
## Type of suggestion
5+
## 📎 Related Issues (if applicable)
66

7-
* [ ] Typo/grammar fix
8-
* [ ] Updated outdated content
9-
* [ ] New content
10-
* [ ] Updates related to a new version
11-
* [ ] Other
7+
<!-- List any related issues, e.g. "Fixes #1234" -->
128

13-
## Product & version (if relevant)
9+
## ✅ Contributor Checklist
1410

11+
I've followed the [Umbraco Documentation Style Guide](https://docs.umbraco.com/contributing/documentation/style-guide) and can confirm that:
1512

13+
* [ ] Code blocks are correctly formatted.
14+
* [ ] Sentences are short and clear (preferably under 25 words).
15+
* [ ] Passive voice and first-person language (“we”, “I”) are avoided.
16+
* [ ] Relevant pages are linked.
17+
* [ ] All links work and point to the correct resources.
18+
* [ ] Screenshots or diagrams are included if useful.
19+
* [ ] Any code examples or instructions have been tested.
20+
* [ ] Typos, broken links, and broken images are fixed.
21+
22+
## Product & Version (if relevant)
23+
24+
<!-- Mention the product and all applicable versions for which the PR is being created. -->
1625

1726
## Deadline (if relevant)
1827

19-
_When should the content be published?_
28+
<!-- When should the content be published? -->
29+
30+
## 📚 Helpful Resources
31+
32+
* 🧾 [Umbraco Contribution Guidelines](https://docs.umbraco.com/contributing)
33+
* ✍️ [Umbraco Documentation Style Guide](https://docs.umbraco.com/contributing/documentation/style-guide)

.github/styles/UmbracoDocs/Acronyms.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,4 @@ exceptions:
9090
- SSD
9191
- ASCII
9292
- CMD
93+
- NGINX

10/umbraco-cms/SUMMARY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
* [Hosting Umbraco in IIS](fundamentals/setup/server-setup/iis.md)
3535
* [File And Folder Permissions](fundamentals/setup/server-setup/permissions.md)
3636
* [Runtime Modes](fundamentals/setup/server-setup/runtime-modes.md)
37+
* [Running Umbraco in Docker](fundamentals/setup/server-setup/running-umbraco-in-docker.md)
3738
* [Umbraco in Load Balanced Environments](fundamentals/setup/server-setup/load-balancing/README.md)
3839
* [Load Balancing Azure Web Apps](fundamentals/setup/server-setup/load-balancing/azure-web-apps.md)
3940
* [Standalone File System](fundamentals/setup/server-setup/load-balancing/file-system-replication.md)
@@ -414,6 +415,7 @@
414415
* [Add Google Authentication](tutorials/add-google-authentication.md)
415416
* [Add Microsoft Entra ID authentication (Members)](tutorials/add-microsoft-entra-id-authentication.md)
416417
* [The Starter Kit](tutorials/starter-kit/README.md)
418+
* [Install the Starter Kit](tutorials/starter-kit/install-the-starter-kit.md)
417419
* [Lessons](tutorials/starter-kit/lessons/README.md)
418420
* [Customize the Starter Kit](tutorials/starter-kit/lessons/1-customize-the-starter-kit.md)
419421
* [Add a Blog Post Publication Date](tutorials/starter-kit/lessons/2-add-a-blog-post-publication-date/README.md)

10/umbraco-cms/extending/language-files.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,4 +194,4 @@ In the above example of a missing translation for "assignDomain", locate this st
194194
</language>
195195
```
196196

197-
If you modify core language files or introduce a new language, you can assist the community by sharing your updates. This can be done by [submitting a pull request](https://github.com/umbraco/Umbraco-CMS/blob/contrib/.github/CONTRIBUTING.md) so that your changes are merged into the core.
197+
If you modify core language files or introduce a new language, you can assist the community by sharing your updates. This can be done by [submitting a pull request](https://github.com/umbraco/Umbraco-CMS/blob/main/.github/CONTRIBUTING.md) so that your changes are merged into the core.

10/umbraco-cms/extending/packages/language-files-for-packages.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ The `App_Plugins` version of the `Lang` directory is case sensitive on Linux sys
2222

2323
Each language file can include one or more area. Each area contains a collection of language keys with the translation.
2424

25-
For reference on the language file format see the core [language files on GitHub](https://github.com/umbraco/Umbraco-CMS/tree/contrib/src/Umbraco.Core/EmbeddedResources/Lang)
25+
For reference on the language file format see the core [language files on GitHub](https://github.com/umbraco/Umbraco-CMS/tree/main/src/Umbraco.Core/EmbeddedResources/Lang)
2626

2727
### Sample structure
2828

10/umbraco-cms/fundamentals/design/rendering-media.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,40 @@ As with example one, we are accessing a MediaType `image` using the same Guid as
7878
It is always worth having null-checks around your code when retrieving media in case the conversion fails or Media() returns null. This makes your code more robust.
7979
{% endhint %}
8080

81+
## Working with Video files
82+
83+
If you upload a video file (such as `.mp4`) to the Media library, Umbraco will store it as a Video Media Type by default. Unlike images, video files won’t include properties like `umbracoWidth` or `umbracoHeight`, but you can still retrieve the media item and render it using the `<video>` HTML tag.
84+
85+
### Example: Rendering a Video Media item
86+
87+
```csharp
88+
@{
89+
var videoUrl = string.Empty;
90+
var videoMediaItem = Umbraco.Media(Guid.Parse("8c49c5d3-cb2a-48b2-87c9-7e2c1873e948"));
91+
92+
if (videoMediaItem != null)
93+
{
94+
videoUrl = videoMediaItem?.Url();
95+
}
96+
}
97+
98+
@if (!string.IsNullOrEmpty(videoUrl))
99+
{
100+
<video width="640" height="360" controls>
101+
<source src="@videoUrl" type="video/mp4">
102+
Your browser does not support the video tag.
103+
</video>
104+
}
105+
```
106+
107+
The example above assumes that:
108+
109+
* You've uploaded an `.mp4` file to the **Media** section.
110+
* You want to include basic playback controls in the browser.
111+
* You know the media item’s ID.
112+
113+
You can also add custom properties to your Video Media Type (for example: `thumbnail`, `autoplay`, `caption`) under **Settings** > **Media Types**.
114+
81115
### Other Media Items such as `File`
82116

83117
Accessing other media items can be performed in the same way. The techniques are not limited to the `Image` type, but it is one of the most common use cases.

10/umbraco-cms/fundamentals/setup/server-setup/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,7 @@ Best practices for running Umbraco on Azure Web Apps.
3030
## [Runtime modes](runtime-modes.md)
3131

3232
The runtime mode setting optimizes Umbraco for the best development experience or optimal production environment.
33+
34+
## [Running Umbraco in Docker](running-umbraco-in-docker.md)
35+
36+
Overview of topics to consider when running Umbraco in Docker.
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# Running Umbraco in Docker
2+
3+
Exactly how you choose to compose your Dockerfile will depend on your project specific needs. This section is not intended as a comprehensive guide, rather as an overview of topics to be aware of when hosting in Docker.
4+
5+
## What is Docker
6+
7+
Docker is a platform for developing, shipping, and running applications in containers. Multiple services exist for hosting these containers. For more information, refer to the [official Docker Documentation](https://docs.docker.com/)
8+
9+
## The Docker file system
10+
11+
By default, files created inside a container are written to an ephemeral, writable container layer.
12+
This means that the files don't persist when the container is removed, and it's challenging to get files out of the container. Additionally, this writable layer is not suitable for performance-critical data processing.
13+
14+
This has implications when running Umbraco in Docker.
15+
16+
For more information, refer to the [Docker documentation on storage](https://docs.docker.com/engine/storage/).
17+
18+
### General file system consideration
19+
20+
In general, when working with files and Docker you work in a "push" fashion with read-only layers. When you build, you take all your files and "push" them into this read-only layer.
21+
22+
This means that you should avoid making files on the fly, and instead rely on building your image.
23+
24+
In an Umbraco context, this means you should not create or edit template, script or stylesheet files via the backoffice. These should be deployed as part of your web application and not managed via Umbraco.
25+
26+
Similarly, you shouldn't use InMemory modelsbuilder, since that also relies on creating files on the disk. While this is not a hard requirement, it doesn't provide any value unless you are live editing your site.
27+
28+
Instead, configure models builder to use "source code" mode in development, and "none" in production, as [described when using runtime modes](https://docs.umbraco.com/umbraco-cms/fundamentals/setup/server-setup/runtime-modes).
29+
30+
31+
### Logs
32+
33+
Umbraco writes logs to the `/umbraco/Logs/` directory. Due to the performance implications of writing to a writable layer,
34+
and the limited size, it is recommended to mount a volume to this directory.
35+
36+
### Data
37+
38+
The `/umbraco/Data/` directory is used to store temporary files, such as file uploads. Considering the limitations of the writable layer, you should also mount a volume to this directory.
39+
40+
### Media
41+
42+
It's recommended to not store media in the writable layer. This is for similar performance reasons as logs,
43+
but also for practical hosting reasons. You likely want to persist media files between containers.
44+
45+
One solution is to use bind mounts. The ideal setup, though, is to store the media and ImageSharp cache externally. For more information, refer to the [Azure Blob Storage documentation](https://docs.umbraco.com/umbraco-cms/extending/filesystemproviders/azure-blob-storage).
46+
47+
### Required files
48+
49+
Your solution may require some specific files to run, such as license files. You will need to pass these files into the container at build time, or mount them externally.
50+
51+
## HTTPS
52+
53+
When running websites in Docker, it's common to do so behind a reverse proxy or load balancer.
54+
In these scenarios you will likely handle SSL termination at the reverse proxy. This means that Umbraco will not be aware of the SSL termination, and will complain about not using HTTPS.
55+
56+
Umbraco checks for HTTPS in two locations:
57+
58+
1. The `HstsCheck` health check - This will result in a failed healthcheck.
59+
2. The `UseHttpsValidator` - This will result in a build error, if Production runtime mode is used.
60+
61+
To avoid these checks failing, you can remove them in your project.
62+
63+
### Health Check
64+
65+
The health check must be removed via configuration, through the `appsettings.json` file, environment variables, or similar. For more information see the [Health Check documentation](../../../reference/configuration/healthchecks.md).
66+
67+
The `HstsCheck` key is `E2048C48-21C5-4BE1-A80B-8062162DF124` so the appsettings will look something like:
68+
69+
```json
70+
"Umbraco": {
71+
"CMS": {
72+
"HealthChecks" : {
73+
"DisabledChecks": [
74+
{
75+
"Id": "E2048C48-21C5-4BE1-A80B-8062162DF124"
76+
}
77+
]
78+
},
79+
{...}
80+
```
81+
82+
### Runtime mode validator
83+
84+
The `UseHttpsValidator` must be removed through code For more information see the [Runtime mode documentation](runtime-modes.md).
85+
86+
The code to remove the validator can look something like:
87+
88+
```C#
89+
using Umbraco.Cms.Core.Composing;
90+
using Umbraco.Cms.Infrastructure.Runtime.RuntimeModeValidators;
91+
92+
namespace MySite;
93+
94+
public class DockerChecksRemover : IComposer
95+
{
96+
public void Compose(IUmbracoBuilder builder)
97+
=> builder.RuntimeModeValidators().Remove<UseHttpsValidator>();
98+
}
99+
100+
```

10/umbraco-cms/implementation/integration-testing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: A guide to getting started with integration testing in Umbraco
55

66
# Integration Testing
77

8-
These examples are for Umbraco 10. They use [NUnit](https://nunit.org/) as the testing framework. Leveraging [Umbraco.Cms.Tests.Integration](https://github.com/umbraco/Umbraco-CMS/tree/contrib/tests/Umbraco.Tests.Integration) providing base classes. Beware that the Nuget package has an issue fixed in v10.3.1. So it is recommended to use this version.
8+
These examples are for Umbraco 10. They use [NUnit](https://nunit.org/) as the testing framework. Leveraging [Umbraco.Cms.Tests.Integration](https://github.com/umbraco/Umbraco-CMS/tree/main/tests/Umbraco.Tests.Integration) providing base classes. Beware that the Nuget package has an issue fixed in v10.3.1. So it is recommended to use this version.
99

1010
## Getting started
1111

10/umbraco-cms/reference/angular/directives/umbproperty.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,4 @@ var property = {
3030

3131
The `view` property specifies the URL to the property editor that should be used for this property. To use one of the built-in property editors in Umbraco, you can specify the alias (eg. `textbox`) rather than the full URL to the view (eg. `/umbraco/Views/propertyeditors/textbox/textbox.html`).
3232

33-
You can see a list of all the built-in property editors in the [propertyeditors folder on GitHub](https://github.com/umbraco/Umbraco-CMS/tree/v11/contrib/src/Umbraco.Web.UI.Client/src/views/propertyeditors).
33+
You can see a list of all the built-in property editors in the [propertyeditors folder on GitHub](https://github.com/umbraco/Umbraco-CMS/tree/83107bb31a7fe98f6c5b0a601c0e8ee898cd274b/src/Umbraco.Web.UI.Client/src/views/propertyeditors).

0 commit comments

Comments
 (0)