diff --git a/14/umbraco-ui-builder/advanced/repositories.md b/14/umbraco-ui-builder/advanced/repositories.md index a460ef49b59..f49db720184 100644 --- a/14/umbraco-ui-builder/advanced/repositories.md +++ b/14/umbraco-ui-builder/advanced/repositories.md @@ -45,6 +45,16 @@ public class PersonRepository : Repository { protected override long GetCountImpl(Expression> whereClause) { ... } + + protected override IEnumerable GetRelationsByParentIdImpl(int parentId, string relationAlias) + { + ... + } + + protected override TJunctionEntity SaveRelationImpl(TJunctionEntity entity) + { + ... + } } ```` diff --git a/14/umbraco-ui-builder/collections/related-collections.md b/14/umbraco-ui-builder/collections/related-collections.md index d1b40d5b54f..cb8ef2345ba 100644 --- a/14/umbraco-ui-builder/collections/related-collections.md +++ b/14/umbraco-ui-builder/collections/related-collections.md @@ -72,6 +72,7 @@ public class StudentCourse ## Defining a related collection You can get started with related collection through a two step process: + 1. Add collection definition 2. Add related collection entity picker and definition @@ -118,3 +119,48 @@ collectionConfig.Editor(editorConfig => {% hint style="info" %} **Relation Config Alias:** The relation config alias must correspond to the related collection picker field alias! (e.g. `studentsCourses`) {% endhint %} + +## Defining repository methods + +### **IEnumerable GetRelationsByParentIdImpl(int parentId, string relationAlias)** + +Retrieves the related collections based on the ID of the parent entity. + +```csharp +{ + var db = _scopeProvider.CreateScope().Database; + var sql = db.SqlContext.Sql() + .Select(new[] { "StudentId", "CourseId" } ) + .From("StudentsCourses") + .Where($"studentId = @0", parentId); + + var result = db.Fetch(sql); + + return result; +} +``` + +### **StudentCourse SaveRelationImpl(StudentCourse entity)** + +Adds a new related collection to the current parent entity. + +```csharp +{ + var db = _scopeProvider.CreateScope().Database; + + var type = entity.GetType(); + var studentId = type.GetProperty("StudentId").GetValue(entity); + var courseId = type.GetProperty("CourseId").GetValue(entity); + + // delete relation if exists + db.Execute("DELETE FROM StudentsCourses WHERE StudentId = @0 AND CourseId = @1", + studentId, + courseId); + + db.Execute("INSERT INTO StudentsCourses (StudentId, CourseId) VALUES (@0, @1)", + studentId, + courseId); + + return entity; +} +``` diff --git a/15/umbraco-cms/SUMMARY.md b/15/umbraco-cms/SUMMARY.md index 99b886c5b12..09e817fb285 100644 --- a/15/umbraco-cms/SUMMARY.md +++ b/15/umbraco-cms/SUMMARY.md @@ -109,7 +109,7 @@ * [Using Umbraco services](reference/management/using-services/README.md) * [Content Type Service](reference/management/using-services/contenttypeservice.md) * [Management API](reference/management-api/README.md) - * [External Access](reference/management-api/external-access.md) + * [External Access](reference/management-api/external-access.md) * [Cache & Distributed Cache](reference/cache/README.md) * [Cache Seeding](reference/cache/cache-seeding.md) * [Examples](reference/cache/examples/README.md) diff --git a/15/umbraco-cms/fundamentals/setup/server-setup/azure-web-apps.md b/15/umbraco-cms/fundamentals/setup/server-setup/azure-web-apps.md index c4c7e739681..83708d80af7 100644 --- a/15/umbraco-cms/fundamentals/setup/server-setup/azure-web-apps.md +++ b/15/umbraco-cms/fundamentals/setup/server-setup/azure-web-apps.md @@ -33,7 +33,9 @@ You need to add these configuration values. E.g in a json configuration source l } } ``` + You can also copy the following JSON directly into your Azure Web App configuration via the Advanced Edit feature. + ![image](https://github.com/umbraco/UmbracoDocs/assets/11179749/ae53a26b-c45a-4b71-932a-0682f3d264a8) ```json @@ -54,6 +56,8 @@ You can also copy the following JSON directly into your Azure Web App configurat } ``` +Remember to add an `ASPNETCORE_ENVIRONMENT` variable with values `Development`, `Staging`, or `Production`. + The minimum recommended Azure SQL Tier is "S2", however noticeable performance improvements are seen in higher Tiers If you are load balancing or require the scaling ("scale out") ability of Azure Web Apps then you need to consult the [Load Balancing documentation](load-balancing/). This is due to the fact that a lot more needs to be configured to support scaling/auto-scaling. diff --git a/15/umbraco-cms/release-candidate-guide.md b/15/umbraco-cms/release-candidate-guide.md index 4d150146e46..70b836b67a9 100644 --- a/15/umbraco-cms/release-candidate-guide.md +++ b/15/umbraco-cms/release-candidate-guide.md @@ -67,6 +67,14 @@ Here is a list of all the articles that are new to this version or have been upd * [Creating a Custom Seed Key Provider](extending/creating-custom-seed-key-provider.md) * [Cache Settings](reference/configuration/cache-settings.md) * [Cache Seeding](reference/cache/cache-seeding.md) +* [API Users](fundamentals/data/users/api-users.md) +* [External Access](reference/management-api/external-access.md) + +* New UI for the Rich Text Editor: Tiptap + * [Rich Text Editor](fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/README.md) + * [Configuration](fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/configuration.md) + * [Blocks](fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/blocks.md) + * [Change Rich Text Editor UI](fundamentals/backoffice/property-editors/built-in-umbraco-property-editors/rich-text-editor/change-rich-text-editor-ui.md) ### Updated articles diff --git a/15/umbraco-commerce/getting-started/the-licensing-model.md b/15/umbraco-commerce/getting-started/the-licensing-model.md index 7e26653ae39..b9f20e99a53 100644 --- a/15/umbraco-commerce/getting-started/the-licensing-model.md +++ b/15/umbraco-commerce/getting-started/the-licensing-model.md @@ -62,7 +62,9 @@ Once you have received your license code it needs to be installed on your site. ```json "Umbraco": { "Licenses": { - "Umbraco.Commerce": "YOUR_LICENSE_KEY" + "Products": { + "Umbraco.Commerce": "YOUR_LICENSE_KEY" + } } } ``` diff --git a/15/umbraco-commerce/key-concepts/webhooks.md b/15/umbraco-commerce/key-concepts/webhooks.md index 2961df4937a..391a6d5be3d 100644 --- a/15/umbraco-commerce/key-concepts/webhooks.md +++ b/15/umbraco-commerce/key-concepts/webhooks.md @@ -4,7 +4,7 @@ description: Webhook configuration in Umbraco Commerce. # Webhooks -Umbraco Commerce makes use of the webhooks feature added in Umbraco v13. See the [Webooks documentation](/umbraco-cms/reference/webhooks) for general webooks configuration. +Umbraco Commerce makes use of the webhooks feature added in Umbraco v13. See the [Webhooks documentation](https://docs.umbraco.com/umbraco-cms/reference/webhooks) for general webooks configuration. # Events diff --git a/15/umbraco-deploy/installation/the-licensing-model.md b/15/umbraco-deploy/installation/the-licensing-model.md index a7bc4929eb4..2a945852563 100644 --- a/15/umbraco-deploy/installation/the-licensing-model.md +++ b/15/umbraco-deploy/installation/the-licensing-model.md @@ -60,7 +60,9 @@ For example, in `appsettings.json`: ... }, "Licenses": { - "Umbraco.Deploy.OnPrem": "" + "Products": { + "Umbraco.Deploy.OnPrem": "" + } }, "Deploy": { ... @@ -120,7 +122,9 @@ Then configure a random string as an authorization key in configuration. This is ```json "Umbraco": { "Licenses": { - "Umbraco.Deploy.OnPrem": "" + "Products": { + "Umbraco.Deploy.OnPrem": "" + } }, "LicensesOptions": { "EnableScheduledValidation": false, diff --git a/15/umbraco-workflow/installation/licensing.md b/15/umbraco-workflow/installation/licensing.md index 87358c901b4..70332f30e35 100644 --- a/15/umbraco-workflow/installation/licensing.md +++ b/15/umbraco-workflow/installation/licensing.md @@ -17,7 +17,9 @@ Once you have received your license code it needs to be installed on your site. ```json "Umbraco": { "Licenses": { - "Umbraco.Workflow": "YOUR_LICENSE_KEY" + "Products": { + "Umbraco.Workflow": "YOUR_LICENSE_KEY" + } } } ```