Skip to content

Commit 0efdcb6

Browse files
Merge branch 'main' into v17/update-repository-docs
2 parents 47ad88b + e22d974 commit 0efdcb6

File tree

89 files changed

+933
-394
lines changed

Some content is hidden

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

89 files changed

+933
-394
lines changed

13/umbraco-engage/getting-started/for-developers/troubleshooting-installations.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ The most common reasons for this are:
1616

1717
* Database connectivity issues.
1818
* Incompatible SQL Server version.
19-
* No COLUMNS STORE index support on Azure SQL lower than S3.
19+
* No columnstore index support on Azure SQL lower than S3.
2020

2121
### Exception
2222

@@ -41,7 +41,7 @@ await app.BootUmbracoAsync();
4141

4242
#### When having database connectivity issues
4343

44-
1. Remove the row with the `Umbraco.Core.Upgrader.State+Umbraco.Engage` key from the `umbracoKeyValue` table in the database if it exists. 
44+
1. Remove the row with the `Umbraco.Core.Upgrader.State+Umbraco.Engage` key from the `umbracoKeyValue` table in the database if it exists.
4545
2. Remove all existing umbracoEngage\* tables from the database if they exist.
4646
3. Restart the site.
4747

@@ -51,10 +51,10 @@ await app.BootUmbracoAsync();
5151
When running Azure SQL on lower tiers and querying columnstore indexes, performance may decrease. Depending on the amount of data being processed, this can also lead to timeouts. This configuration is not recommended for production environments.
5252
{% endhint %}
5353

54-
Azure SQL lower than S3 doesn't support creating COLUMN STORE indexes. To work around this follow these steps: 
54+
Azure SQL lower than S3 doesn't support creating columnstore indexes. To work around this follow these steps:
5555

5656
1. Scale your Azure SQL environment to S3.
5757
2. Restart the site.
5858
3. Scale back to your initial Azure SQL tier.
5959

60-
The columnstore indexes are created and can be used in a lower tier.
60+
The columnstore indexes are created and can be used in a lower tier.

13/umbraco-forms/developer/themes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ You can obtain the latest version of the Forms default theme from the following
2626
* [13.2.4](./files/umbraco-forms-default-theme-13.2.4.zip)
2727
* [13.3.0](./files/umbraco-forms-default-theme-13.3.0.zip)
2828
* [13.5.0](./files/umbraco-forms-default-theme-13.5.0.zip)
29-
* [13.7.0-rc](./files/umbraco-forms-default-theme-13.7.0-rc.zip)
29+
* [13.7.0](./files/umbraco-forms-default-theme-13.7.0.zip)
3030

3131
You should use the theme available for the highest version that's less or equal to the version of Forms you have installed. For example, when using Umbraco Forms 13.4.0, and no file for that version is available use version 13.3.0 instead.
3232

13/umbraco-forms/release-notes.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ If you are upgrading to a new major version, you can find information about the
1616

1717
This section contains the release notes for Umbraco Forms 13 including all changes for this version.
1818

19+
### [13.7.0](https://github.com/umbraco/Umbraco.Forms.Issues/issues?q=is%3Aissue%20state%3Aopen%20label%3Arelease%2F13.7.0) (October 30th 2025)
20+
* All items detailed under release candidates for 13.7.0.
21+
1922
### [13.7.0-rc2](https://github.com/umbraco/Umbraco.Forms.Issues/issues?q=is%3Aissue%20state%3Aopen%20label%3Arelease%2F13.7.0) (October 27th 2025)
2023
* Improved redirects in UmbracoFormsController for handling IContentFinder and virtual pages [#1456](https://github.com/umbraco/Umbraco.Forms.Issues/issues/1456)
2124
* Fix prevalue source to sort by caption by default, not value [#1438](https://github.com/umbraco/Umbraco.Forms.Issues/issues/1438)

13/umbraco-workflow/release-notes.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ Check the [Version Specific Upgrade Notes](upgrading/version-specific.md) articl
1717

1818
This section contains the release notes for Umbraco Workflow 13 including all changes for this version.
1919

20+
### 13.4.6 (October 31 2025)
21+
* Fixes a bug where rejected tasks were shown as pending approval for users belonging to the rejecting group.
22+
* Fixes a bug where Advanced Search could not find property editor views.
23+
* Updates Umbraco.Licenses dependency to 13.3.3.
24+
2025
### [13.4.5](https://github.com/umbraco/Umbraco.Workflow.Issues/issues?q=is%3Aissue+is%3Aclosed+label%3Arelease%2F13.4.5) (July 30 2025)
2126
* Ensures inherited group members are always populated [#111](https://github.com/umbraco/Umbraco.Workflow.Issues/issues/111)
2227
* Adds an option to disable the remote version check [#99](https://github.com/umbraco/Umbraco.Workflow.Issues/issues/99)

15/umbraco-cms/reference/configuration/securitysettings.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ A full configuration with all default values can be seen here:
2020
"UsernameIsEmail": true,
2121
"MemberRequireUniqueEmail": true,
2222
"AllowedUserNameCharacters": "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+\\",
23+
"BackOfficeHost": "http://your-domain.com",
2324
"UserPassword": {
2425
"RequiredLength": 10,
2526
"RequireNonLetterOrDigit": false,
@@ -84,6 +85,10 @@ By default Umbraco will not allow creation of more than one member account with
8485

8586
Defines the allowed characters for a username.
8687

88+
### BackOffice Host
89+
90+
Use this setting to override the Backoffice host URL. This is useful when the Backoffice client runs from a different origin than the Umbraco server. For example, in proxied, cloud-hosted setups, or when developing locally using Vite or another dev server.
91+
8792
### User default lockout time
8893

8994
Use this setting to configure how long time a User is locked out of the Umbraco backoffice when a lockout occurs. The setting accepts an integer which defines the lockout in minutes.

15/umbraco-cms/reference/management/using-services/contentservice.md

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
description: Example on how to create and publish content programmatically using the ContentService.
2+
description: Example on how to create and publish content programmatically using the `IContentService`.
33
---
44

55
# Content Service
@@ -8,7 +8,9 @@ Learn how to use the Content Service.
88

99
## Creating content programmatically
1010

11-
In the example below, a new page is programmatically created using the content service. It is assumed that there are two document types, namely Catalogue and Product. In this case, a new Product is added underneath the Catalogue page. Add the below code in the Catalogue template.
11+
In the example below, a new content item is programmatically created using the content service. It is assumed that there are two document types, namely *Catalogue* and *Product*. A new *Product* node will be created under the *Catalogue* page.
12+
13+
Create a new C# class file (for example, `MyProject/Services/PublishContentDemo.cs`) inside your web project.
1214

1315
```csharp
1416
using Umbraco.Cms.Core.Models;
@@ -36,9 +38,12 @@ public class PublishContentDemo
3638
// Set the value of the property with alias 'price'
3739
demoProduct.SetValue("price", "1500");
3840

39-
// Save and publish the child item
41+
// Save content first
4042
_contentService.Save(demoProduct);
41-
_contentService.Publish(demoProduct, ["en-us", "da"]);
43+
44+
// Publish content
45+
var userId = 0; // 0 = system user
46+
_contentService.Publish(demoProduct, new[] { "*" }, userId); // use "*" for invariant content
4247
}
4348
}
4449
```
@@ -54,35 +59,39 @@ For information on how to retrieve multilingual languages, see the [Retrieving l
5459

5560
## Publishing content programmatically
5661

57-
The ContentService is also used for publishing operations.
62+
The `IContentService` is also used for publishing existing content. The following example shows how to publish a page and all its descendants.
5863

59-
The following example shows a page being published with all descendants.
64+
Create a new C# class file (for example, `MyProject/Services/PublishBranchContentDemo.cs`) inside your web project.
6065

6166
```csharp
6267
using Umbraco.Cms.Core.Models;
6368
using Umbraco.Cms.Core.Services;
6469

6570
namespace Umbraco.Cms.Web.UI.Custom;
6671

67-
public class PublishContentDemo
72+
public class PublishBranchContentDemo
6873
{
6974
private readonly IContentService _contentService;
7075

71-
public PublishContentDemo(IContentService contentService) => _contentService = contentService;
76+
public PublishBranchContentDemo(IContentService contentService) => _contentService = contentService;
7277

7378
public void Publish(Guid key)
7479
{
75-
IContent? content = _contentService.GetById(key)
80+
var parentKey = Guid.Parse("b6fbbb31-a77f-4f9c-85f7-2dc4835c7f31");
81+
82+
var content = _contentService.GetById(key)
7683
?? throw new InvalidOperationException($"Could not find content with key: {key}.");
7784

78-
_contentService.PublishBranch(content, PublishBranchFilter.Default, ["en-us", "da"]);
85+
var userId = 0;
86+
_contentService.PublishBranch(content, PublishBranchFilter.Default, new[] { "*" }, userId);
7987
}
8088
}
8189
```
8290

8391
The `PublishBranchFilter` option can include one or more of the following flags:
8492

85-
- `Default` - publishes existing published content with pending changes.
86-
- `IncludeUnpublished` - publishes unpublished content and existing published with pending changes.
87-
- `ForceRepublish` - publishes existing published content with or without pending changes.
93+
- `Default` - publishes only nodes with pending changes.
94+
- `IncludeUnpublished` - publishes unpublished content and existing nodes with pending changes.
95+
- `ForceRepublish` - republishes all nodes, even if unchanged.
8896
- `All` - combines `IncludeUnpublished` and `ForceRepublish`.
97+
- For multilingual content, replace `"*"` with the array of cultures, for example, `new[] { "en-us", "da" }`.

16/umbraco-cms/.gitbook.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,4 @@ redirects:
147147
customizing/extending-overview/extension-registry/extension-registry: customizing/extending-overview/extension-registry/register-extensions.md
148148
customizing/extending-overview/extension-types/workspaces/workspace-action-menu-item: customizing/extending-overview/extension-types/workspaces/workspace-action-menu-items.md
149149
customizing/extending-overview/extension-types/workspaces/workspace-footer-app: customizing/extending-overview/extension-types/workspaces/workspace-footer-apps.md
150+
customizing/extending-overview/extension-kind: customizing/extending-overview/extension-types/kind.md

16/umbraco-cms/SUMMARY.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,9 @@
153153
* [Vite Package Setup](customizing/development-flow/vite-package-setup.md)
154154
* [Extensions Overview](customizing/extending-overview/README.md)
155155
* [Extension Registry](customizing/extending-overview/extension-registry/README.md)
156+
* [Extension Manifest Introduction](customizing/extending-overview/extension-registry/extension-manifest.md)
156157
* [Register an Extension](customizing/extending-overview/extension-registry/register-extensions.md)
157-
* [Extension Manifest](customizing/extending-overview/extension-registry/extension-manifest.md)
158-
* [Replace, Exclude or Unregister](customizing/extending-overview/extension-registry/replace-exclude-or-unregister.md)
158+
* [Replace, Exclude, or Unregister](customizing/extending-overview/extension-registry/replace-exclude-or-unregister.md)
159159
* [Extension Types](customizing/extending-overview/extension-types/README.md)
160160
* [App Entry Point](customizing/extending-overview/extension-types/app-entry-point.md)
161161
* [Backoffice Entry Point](customizing/extending-overview/extension-types/backoffice-entry-point.md)
@@ -188,7 +188,8 @@
188188
* [Workspace Context](customizing/extending-overview/extension-types/workspaces/workspace-context.md)
189189
* [Workspace Views](customizing/extending-overview/extension-types/workspaces/workspace-views.md)
190190
* [Workspace Footer Apps](customizing/extending-overview/extension-types/workspaces/workspace-footer-apps.md)
191-
* [Extension Kind](customizing/extending-overview/extension-kind.md)
191+
* [Collections](customizing/extending-overview/extension-types/collections/README.md)
192+
* [Collection View](customizing/extending-overview/extension-types/collections/collection-view.md)
192193
* [Extension Conditions](customizing/extending-overview/extension-conditions.md)
193194
* [Custom Extension types](customizing/extending-overview/custom-extension-type.md)
194195
* [Foundation](customizing/foundation/README.md)

16/umbraco-cms/customizing/back-office-signs.md

Lines changed: 84 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ For example, a Document scheduled for future publishing will have a Flag defined
2323
A Flag can be the determinant for a Sign by declaring the `forEntityFlags` as part of its Manifest.
2424

2525
Example:
26+
2627
```json
2728
...
2829
forEntityFlags: "Umb.ScheduledForPublish",
@@ -33,7 +34,88 @@ Using this binding lets the server determine which signs are present in the resp
3334

3435
## Displaying a Sign
3536

37+
To display a Sign in the backoffice, register an `entitySign` extension.
38+
39+
Typically, you’ll bind it to one or more flags returned in the server response using the `forEntityFlags` property. However, you can also provide your own logic to determine when a Sign should appear.
40+
41+
If you're using an icon variant, set `kind` to `icon` and provide both `meta.iconName` and `meta.label`. This ensures the user interface has the necessary visual and accessible information to render the Sign correctly.
42+
43+
### Example: Rendering an Entity Sign from a Server Flag
44+
45+
```typescript
46+
import type { UmbExtensionManifest } from "@umbraco-cms/backoffice/extension-registry";
47+
import { UMB_DOCUMENT_ENTITY_TYPE } from "@umbraco-cms/backoffice/document";
48+
49+
export const manifests: UmbExtensionManifest = {
50+
type: "entitySign",
51+
kind: "icon",
52+
alias: "Umb.EntitySign.Document.IsProtected",
53+
name: "Is Protected Document Entity Sign",
54+
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE], // Where it can appear
55+
forEntityFlags: ["Umb.IsProtected"], // <---Binding part-When it should appear
56+
weight: 1000,
57+
meta: {
58+
iconName: "icon-lock", // Built-in or custom icon name
59+
label: "Protected", // Visible/accessible label
60+
iconColorAlias: "red",
61+
},
62+
};
63+
```
64+
65+
When an entity includes the `Umb.IsProtected` flag, this Sign appears next to it in the UI, indicating that the item is protected.
66+
67+
![Screenshot of Recently Created sign](../reference/images/protected-entity-sign.png)
68+
69+
### Example: Rendering an Entity Sign with Custom Logic
70+
71+
The following Sign appears next to any document created within the past week. This Sign isn’t controlled by server flags.
72+
73+
```typescript
74+
import type { UmbExtensionManifest } from "@umbraco-cms/backoffice/extension-registry";
75+
import { UMB_DOCUMENT_ENTITY_TYPE } from "@umbraco-cms/backoffice/document";
76+
77+
export const manifests: UmbExtensionManifest = {
78+
type: "entitySign",
79+
kind: "icon",
80+
alias: "Umb.EntitySign.Document.RecentlyCreated",
81+
name: "Recently Created Document Sign",
82+
forEntityTypes: [UMB_DOCUMENT_ENTITY_TYPE],
83+
element: () => import("./recently-created-sign.element.ts"),
84+
meta: {
85+
iconName: "icon-umbraco",
86+
label: "Recently Created",
87+
},
88+
};
89+
```
90+
91+
And in `recently-created-sign.element.ts`:
92+
93+
```typescript
94+
@customElement("umb-recently-created-sign")
95+
export class UmbRecentlyCreatedSignElement extends UmbLitElement {
96+
@state() private _createDate?: string;
97+
98+
override connectedCallback(): void {
99+
super.connectedCallback();
100+
this.consumeContext(UMB_TREE_ITEM_CONTEXT, (ctx) => {
101+
const item = ctx?.getTreeItem?.() ?? (ctx as any).item;
102+
this._createDate = item?.createDate;
103+
this.requestUpdate();
104+
});
105+
}
106+
107+
protected override render() {
108+
if (!this._createDate) return null;
109+
const created = new Date(this._createDate);
110+
const weekAgo = new Date();
111+
weekAgo.setDate(weekAgo.getDate() - 7);
112+
return created > weekAgo ? html`<div>New</div>` : null;
113+
}
114+
}
115+
```
116+
117+
![Screenshot of Recently Created sign](../reference/images/custom-entity-sign.png)
118+
36119
{% hint style="info" %}
37-
The client extension for backoffice signs will be available in Umbraco 16.4 / 17.0.
120+
Client extensions for backoffice signs are available in Umbraco version 16.4.
38121
{% endhint %}
39-

0 commit comments

Comments
 (0)