diff --git a/10/umbraco-forms/developer/extending/adding-a-fieldtype.md b/10/umbraco-forms/developer/extending/adding-a-fieldtype.md
index a16af90542d..553ca10705d 100644
--- a/10/umbraco-forms/developer/extending/adding-a-fieldtype.md
+++ b/10/umbraco-forms/developer/extending/adding-a-fieldtype.md
@@ -166,7 +166,7 @@ To reference the file the setting should be configured with a full path to the v
[Setting("My Setting",
Description = "Help text for the setting",
View = "~/App_Plugins/UmbracoFormsCustomFields/backoffice/Common/SettingTypes/mycustomsettingfield.html",
- SupportsPlaceholders = "true"
+ SupportsPlaceholders = true
DisplayOrder = 10)]
public string MySetting { get; set; }
```
diff --git a/10/umbraco-forms/developer/themes.md b/10/umbraco-forms/developer/themes.md
index 99c9d923151..5e9b9509abb 100644
--- a/10/umbraco-forms/developer/themes.md
+++ b/10/umbraco-forms/developer/themes.md
@@ -21,7 +21,7 @@ Umbraco 10+ distributes these files as part of a Razor class library, so you won
You can obtain the latest version of the default theme Forms 10 from the following link:
-* [Forms 10 Default Theme](https://umbra.co/umbraco-forms-default-theme) (for 10.5.5 and above)
+* [Forms 10 Default Theme](https://umbra.co/umbraco-forms-default-theme) (for 10.5.6 and above)
If you are using a lower minor version of Forms than those listed, you should download an older version of the default theme.
diff --git a/10/umbraco-forms/release-notes.md b/10/umbraco-forms/release-notes.md
index 4419c43acbb..d85522ed22c 100644
--- a/10/umbraco-forms/release-notes.md
+++ b/10/umbraco-forms/release-notes.md
@@ -21,6 +21,13 @@ This section contains the release notes for Umbraco Forms 8 and 10 including all
Version 10
+[**10.5.6**](https://github.com/umbraco/Umbraco.Forms.Issues/issues?q=is%3Aissue+is%3Aclosed+label%3Arelease%2F10.5.6) **(July 9th 2024)**
+
+* Fixed issue with save button UI, when save is canceled via a notification [#1219](https://github.com/umbraco/Umbraco.Forms.Issues/issues/1219).
+* Improved date format for data values when using the **Send email** workflow [#1214](https://github.com/umbraco/Umbraco.Forms.Issues/issues/1214).
+* Removed unnecessary circular checks for conditions on workflows resolving an issue where workflow would trigger when conditions were not met [#1206](https://github.com/umbraco/Umbraco.Forms.Issues/issues/1206).
+* Fixed console error with blank values in data picker fields [#1241](https://github.com/umbraco/Umbraco.Forms.Issues/issues/1241).
+
[**10.5.5**](https://github.com/umbraco/Umbraco.Forms.Issues/issues?q=is%3Aissue+is%3Aclosed+label%3Arelease%2F10.5.5) **(April 16th 2024)**
* Corrected alignment of label `for` and input `id` attributes in the date picker field [#1200](https://github.com/umbraco/Umbraco.Forms.Issues/issues/1200).
diff --git a/12/umbraco-forms/developer/extending/adding-a-fieldtype.md b/12/umbraco-forms/developer/extending/adding-a-fieldtype.md
index 424abd7abb1..655fa56e2e3 100644
--- a/12/umbraco-forms/developer/extending/adding-a-fieldtype.md
+++ b/12/umbraco-forms/developer/extending/adding-a-fieldtype.md
@@ -165,7 +165,7 @@ To reference the file the setting should be configured with a full path to the v
[Setting("My Setting",
Description = "Help text for the setting",
View = "~/App_Plugins/UmbracoFormsCustomFields/backoffice/Common/SettingTypes/mycustomsettingfield.html",
- SupportsPlaceholders = "true"
+ SupportsPlaceholders = true
DisplayOrder = 10)]
public virtual string MySetting { get; set; }
```
diff --git a/13/umbraco-forms/.gitbook/assets/umbraco_forms_swagger.json b/13/umbraco-forms/.gitbook/assets/umbraco_forms_swagger.json
index 72ab43653f3..2e77da8be31 100644
--- a/13/umbraco-forms/.gitbook/assets/umbraco_forms_swagger.json
+++ b/13/umbraco-forms/.gitbook/assets/umbraco_forms_swagger.json
@@ -37,11 +37,22 @@
"schema": {
"type": "string"
}
+ },
+ {
+ "name": "additionalData",
+ "in": "query",
+ "description": "Additional data provided when rendering the form.",
+ "schema": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ }
}
],
"responses": {
"200": {
- "description": "Success",
+ "description": "OK",
"content": {
"application/json": {
"schema": {
@@ -124,7 +135,7 @@
}
},
"422": {
- "description": "Client Error",
+ "description": "Unprocessable Content",
"content": {
"application/json": {
"schema": {
@@ -144,16 +155,14 @@
"Show",
"Hide"
],
- "type": "integer",
- "format": "int32"
+ "type": "string"
},
"FieldConditionLogicType": {
"enum": [
"All",
"Any"
],
- "type": "integer",
- "format": "int32"
+ "type": "string"
},
"FieldConditionRuleOperator": {
"enum": [
@@ -162,11 +171,19 @@
"GreaterThen",
"LessThen",
"Contains",
+ "ContainsIgnoreCase",
"StartsWith",
- "EndsWith"
+ "StartsWithIgnoreCase",
+ "EndsWith",
+ "EndsWithIgnoreCase",
+ "NotContains",
+ "NotContainsIgnoreCase",
+ "NotStartsWith",
+ "NotStartsWithIgnoreCase",
+ "NotEndsWith",
+ "NotEndsWithIgnoreCase"
],
- "type": "integer",
- "format": "int32"
+ "type": "string"
},
"FormConditionDto": {
"type": "object",
@@ -285,6 +302,13 @@
"culture": {
"type": "string",
"nullable": true
+ },
+ "additionalData": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "nullable": true
}
},
"additionalProperties": false
@@ -305,7 +329,8 @@
},
"placeholder": {
"type": "string",
- "nullable": true
+ "nullable": true,
+ "deprecated": true
},
"cssClass": {
"type": "string",
@@ -359,8 +384,7 @@
"MarkMandatoryFields",
"MarkOptionalFields"
],
- "type": "integer",
- "format": "int32"
+ "type": "string"
},
"FormFieldPrevalueDto": {
"type": "object",
diff --git a/13/umbraco-forms/developer/ajaxforms.md b/13/umbraco-forms/developer/ajaxforms.md
index cfaae9dde4b..560a7f3d41a 100644
--- a/13/umbraco-forms/developer/ajaxforms.md
+++ b/13/umbraco-forms/developer/ajaxforms.md
@@ -43,7 +43,7 @@ The Open API specification is available from: `/umbraco/swagger/forms/swagger.js
To request the definition of a form, the following request can be made:
```none
-GET /umbraco/forms/api/v1/definitions/{id}?contentId={contentId}&culture={culture}
+GET /umbraco/forms/api/v1/definitions/{id}?contentId={contentId}&culture={culture}&additionalData[{key}]={value}&additionalData[key2]={value2}
```
The GET request requires the Guid identifying the form.
@@ -52,6 +52,8 @@ An optional `contentId` parameter can be provided, which can either be the integ
A `culture` parameter can also be provided, expected as an ISO code identifying a language used in the Umbraco installation (for example, `en-US`). This will be used to ensure the correct translation for dictionary keys is used. It will also retrieve page content from the appropriate language variant. If the parameter is not provided in the request, the default Umbraco language will be used.
+Finally, an `additionalData` parameter can be provided as a dictionary. This information will be made available when rendering the form allowing it to be used as a source for ["magic string" replacements](./magic-strings.md).
+
If the requested form is not found, a 404 status code will be returned.
A successful request will return a 200 status code. An example response is as follows. It will differ depending on the pages, fields and other settings available for the form.
@@ -398,7 +400,11 @@ It also requires a `Content-Type` header of `application/json` and accepts a bod
"dataConsent": "on"
},
"contentId": "ca4249ed-2b23-4337-b522-63cabe5587d1",
- "culture": "en-US"
+ "culture": "en-US",
+ "additionalData": {
+ "foo": "bar",
+ "baz": "buzz",
+ }
}
```
@@ -406,6 +412,8 @@ The `values` collection consists of a set of name/value pairs, where the name is
The `contentId` and `culture` parameters are optional. If provided they will be used to customize the response for the current page and language respectively.
+Similarly, the `additionalData` dictionary is optional. This data is associated with the created record and made available within workflows.
+
In the case of a validation error, a 422 "Unprocessable Entity" status code will be returned, along with a response similar to the following:
```json
diff --git a/13/umbraco-forms/developer/configuration/type-details.md b/13/umbraco-forms/developer/configuration/type-details.md
index 0ad7a1f35bc..723648393c3 100644
--- a/13/umbraco-forms/developer/configuration/type-details.md
+++ b/13/umbraco-forms/developer/configuration/type-details.md
@@ -130,6 +130,7 @@ The intention is to be able to make available details such as IDs, aliases and p
**Settings:**
+* `DisplayLayout`
* `DefaultValue`
* `ShowLabel`
@@ -206,6 +207,7 @@ The intention is to be able to make available details such as IDs, aliases and p
**Settings:**
+* `DisplayLayout`
* `DefaultValue`
* `ShowLabel`
diff --git a/13/umbraco-forms/developer/extending/adding-a-fieldtype.md b/13/umbraco-forms/developer/extending/adding-a-fieldtype.md
index 424abd7abb1..7821eecf05c 100644
--- a/13/umbraco-forms/developer/extending/adding-a-fieldtype.md
+++ b/13/umbraco-forms/developer/extending/adding-a-fieldtype.md
@@ -165,7 +165,7 @@ To reference the file the setting should be configured with a full path to the v
[Setting("My Setting",
Description = "Help text for the setting",
View = "~/App_Plugins/UmbracoFormsCustomFields/backoffice/Common/SettingTypes/mycustomsettingfield.html",
- SupportsPlaceholders = "true"
+ SupportsPlaceholders = true,
DisplayOrder = 10)]
public virtual string MySetting { get; set; }
```
@@ -174,6 +174,8 @@ public virtual string MySetting { get; set; }
`HtmlEncodeReplacedPlaceholderValues` takes effect only if `SupportsPlaceholders` is `true`. It controls whether the replaced placeholder values should be HTML encoded (as is necessary for rendering within content from a rich text editor).
+`SupportsHtml` is a flag indicating whether the setting can contain HTML content. When set to `true` it will be treated as HTML content when the value is read from the Forms delivery API.
+
`IsMandatory` if set to `true` will provide client-side validation in the backoffice to ensure the value is completed.
### Settings when inheriting
diff --git a/13/umbraco-forms/developer/extending/setting-types.md b/13/umbraco-forms/developer/extending/setting-types.md
index add989cbd80..67bca9efa8b 100644
--- a/13/umbraco-forms/developer/extending/setting-types.md
+++ b/13/umbraco-forms/developer/extending/setting-types.md
@@ -20,11 +20,12 @@ The following setting types are available and are used for the field, prevalue s
| Name | Description | Used in |
|---------------------------|-------------------------------------------------------------------|-------------------------------------------------|
| Checkbox | Uses a single checkbox for entry | |
-| DocumentMapper | Used for selection of a documenttype | The "Save as Umbraco node" workflow |
+| DocumentMapper | Used for selection of a documenttype | The "Save as Umbraco node" workflow |
| Dropdownlist | Used for selection from a list of options | |
| EmailTemplatePicker | Used for selection of an email template | The "Send email with Razor template" workflow |
| FieldMapper | Used to map fields from a form to required aliases | The "Send to URL" workflow |
| File | Used for selection of a file | The "Send email with XSLT template" workflow |
+| MultipleTextString | Uses multiple text boxes for entry | Not used in core types |
| NumericField | Uses numerical text box for entry | |
| Password | Uses password text box for entry | |
| PasswordNoAutocomplete | Uses password text box for entry (with autocomplete disabled) | |
@@ -38,7 +39,6 @@ The following setting types are available and are used for the field, prevalue s
| Textfield | Used a single-line textbox for entry | |
| TextfieldNoAutocomplete | Used a single-line textbox for entry (with autocomplete disabled) | |
| TextWithFieldPicker | Used a single-line textbox/form field list for entry | Not used in core types |
-| MultipleTextString | Used multiple textboxes for multiple entries | Not used in core types |
All of the above setting types are used in one or more field, prevalue source and workflow types available with Umbraco Forms. For the less common ones, a usage has been indicated in the table.
diff --git a/13/umbraco-forms/developer/magic-strings.md b/13/umbraco-forms/developer/magic-strings.md
index 4ab8372d881..04f5128c2ee 100644
--- a/13/umbraco-forms/developer/magic-strings.md
+++ b/13/umbraco-forms/developer/magic-strings.md
@@ -50,6 +50,12 @@ Some extra variables are:
`[$myRecursiveItem]` this allows you to parse the Umbraco Document Type property myRecursiveItem. So if the current page does not contain a value for this then it will request it from the parent up until the root or until it finds a value.
+### Additional data
+
+When rendering a form, additional data can be provided in the form of a dictionary. As well as being associated with the created record and available within workflows, they can be used for "magic string" replacements.
+
+They are accessed using this syntax: `[+additionalDataKey]`.
+
### Umbraco Form field
`{myAliasForFormField}` this allows you to display the entered value for that specific field from the form submission. Used in workflows to send an automated email back to the customer based on the email address submitted in the form. The value here needs to be the alias of the field, and not the name of the field.
@@ -82,16 +88,17 @@ For example, to truncate a string value read from an Umbraco page field with ali
Umbraco Forms ships with the following filters:
-| Filter | Function | Arguments | Example |
-| ----------------------------- | ---------- | -------------------- | ------------------------------------ |
-| Bound a number | `bound` | min and max bound | `[#field \| bound: 1: 10]` |
-| Convert string to lower case | `lower` | | `[#field \| lower]` |
-| Convert string to upper case | `upper` | | `[#field \| upper]` |
-| Truncate a string | `truncate` | number of characters | `[#field \| truncate: 10]` |
-| Format a number | `number` | format string | `[#field \| number: #0.##%]` |
-| Format a number as a currency | `currency` | | `[#field \| currency]` |
-| Format a date | `date` | format string | `[#field \| date: dd-MM-yyyy HH:mm]` |
-| HTML encode a string | `html` | | `[#field \| html]` |
+| Filter | Function | Arguments | Example |
+| ------------------------------------------------ | ----------------------- | -------------------- | ---------------------------------------------------- |
+| Bound a number | `bound` | min and max bound | `[#field \| bound: 1: 10]` |
+| Convert string to lower case | `lower` | | `[#field \| lower]` |
+| Convert string to upper case | `upper` | | `[#field \| upper]` |
+| Format a number | `number` | format string | `[#field \| number: #0.##%]` |
+| Format a number as a currency | `currency` | | `[#field \| currency]` |
+| Format a date | `date` | format string | `[#field \| date: dd-MM-yyyy HH:mm]` |
+| HTML encode a string | `html` | | `[#field \| html]` |
+| Truncate a string | `truncate` | number of characters | `[#field \| truncate: 10]` |
+
The format strings used for formatting dates and numbers are the standard or custom .NET [date](https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings) and [numeric](https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings) format strings respectively.
diff --git a/13/umbraco-forms/developer/rendering-forms.md b/13/umbraco-forms/developer/rendering-forms.md
index 552310534fd..77f17bb3060 100644
--- a/13/umbraco-forms/developer/rendering-forms.md
+++ b/13/umbraco-forms/developer/rendering-forms.md
@@ -14,18 +14,20 @@ To display a form in your view, you can make a call to a view component:
@await Component.InvokeAsync("RenderForm", new { formId = Guid.Parse("