From cbcdff7fa707d0ce526683040d64f043027fe771 Mon Sep 17 00:00:00 2001 From: "m.huber" Date: Fri, 5 Jul 2024 23:14:17 +0200 Subject: [PATCH 1/2] Issue Templates: add option to have dropdown printed list --- .../issue-pull-request-templates.en-us.md | 1 + modules/issue/template/template.go | 11 ++++- modules/issue/template/template_test.go | 43 ++++++++++++++++--- 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/docs/content/usage/issue-pull-request-templates.en-us.md b/docs/content/usage/issue-pull-request-templates.en-us.md index 5220e0c7a01f0..8aaa2bd1181c4 100644 --- a/docs/content/usage/issue-pull-request-templates.en-us.md +++ b/docs/content/usage/issue-pull-request-templates.en-us.md @@ -268,6 +268,7 @@ Attributes: | label | A brief description of the expected user input, which is displayed in the form. | Required | String | - | - | | description | A description of the dropdown to provide extra context or guidance, which is displayed in the form. | Optional | String | Empty String | - | | multiple | Determines if the user can select more than one option. | Optional | Boolean | false | - | +| list | If true, display as a list. If false, print items on one line with commas. | Optional | Boolean | false | - | | options | An array of options the user can choose from. Cannot be empty and all choices must be distinct. | Required | String array | - | - | Validations: diff --git a/modules/issue/template/template.go b/modules/issue/template/template.go index cf5fcf28e5dae..0a105c723c197 100644 --- a/modules/issue/template/template.go +++ b/modules/issue/template/template.go @@ -88,6 +88,9 @@ func validateYaml(template *api.IssueTemplate) error { if err := validateBoolItem(position, field.Attributes, "multiple"); err != nil { return err } + if err := validateBoolItem(position, field.Attributes, "list"); err != nil { + return err + } if err := validateOptions(field, idx); err != nil { return err } @@ -340,7 +343,13 @@ func (f *valuedField) WriteTo(builder *strings.Builder) { } } if len(checkeds) > 0 { - _, _ = fmt.Fprintf(builder, "%s\n", strings.Join(checkeds, ", ")) + if list, ok := f.Attributes["list"].(bool); ok && list { + for _, check := range checkeds { + _, _ = fmt.Fprintf(builder, "- %s\n", check) + } + } else { + _, _ = fmt.Fprintf(builder, "%s\n", strings.Join(checkeds, ", ")) + } } else { _, _ = fmt.Fprint(builder, blankPlaceholder) } diff --git a/modules/issue/template/template_test.go b/modules/issue/template/template_test.go index 481058754d0f6..349dbeabb0894 100644 --- a/modules/issue/template/template_test.go +++ b/modules/issue/template/template_test.go @@ -216,6 +216,20 @@ body: `, wantErr: "body[0](dropdown): 'multiple' should be a bool", }, + { + name: "dropdown invalid list", + content: ` +name: "test" +about: "this is about" +body: + - type: "dropdown" + id: "1" + attributes: + label: "a" + list: "on" +`, + wantErr: "body[0](dropdown): 'list' should be a bool", + }, { name: "checkboxes invalid description", content: ` @@ -807,7 +821,7 @@ body: - type: dropdown id: id5 attributes: - label: Label of dropdown + label: Label of dropdown (one line) description: Description of dropdown multiple: true options: @@ -816,8 +830,21 @@ body: - Option 3 of dropdown validations: required: true - - type: checkboxes + - type: dropdown id: id6 + attributes: + label: Label of dropdown (list) + description: Description of dropdown + multiple: true + list: true + options: + - Option 1 of dropdown + - Option 2 of dropdown + - Option 3 of dropdown + validations: + required: true + - type: checkboxes + id: id7 attributes: label: Label of checkboxes description: Description of checkboxes @@ -836,8 +863,9 @@ body: "form-field-id3": {"Value of id3"}, "form-field-id4": {"Value of id4"}, "form-field-id5": {"0,1"}, - "form-field-id6-0": {"on"}, - "form-field-id6-2": {"on"}, + "form-field-id6": {"1,2"}, + "form-field-id7-0": {"on"}, + "form-field-id7-2": {"on"}, }, }, @@ -849,10 +877,15 @@ body: Value of id4 -### Label of dropdown +### Label of dropdown (one line) Option 1 of dropdown, Option 2 of dropdown +### Label of dropdown (list) + +- Option 2 of dropdown +- Option 3 of dropdown + ### Label of checkboxes - [x] Option 1 of checkboxes From 7c01c699c4add2276a3de0e10fbf71c47b175d2d Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Sat, 6 Jul 2024 16:01:57 +0200 Subject: [PATCH 2/2] move change into docs repo: https://gitea.com/gitea/docs/pulls/19 --- docs/content/usage/issue-pull-request-templates.en-us.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/content/usage/issue-pull-request-templates.en-us.md b/docs/content/usage/issue-pull-request-templates.en-us.md index 8aaa2bd1181c4..5220e0c7a01f0 100644 --- a/docs/content/usage/issue-pull-request-templates.en-us.md +++ b/docs/content/usage/issue-pull-request-templates.en-us.md @@ -268,7 +268,6 @@ Attributes: | label | A brief description of the expected user input, which is displayed in the form. | Required | String | - | - | | description | A description of the dropdown to provide extra context or guidance, which is displayed in the form. | Optional | String | Empty String | - | | multiple | Determines if the user can select more than one option. | Optional | Boolean | false | - | -| list | If true, display as a list. If false, print items on one line with commas. | Optional | Boolean | false | - | | options | An array of options the user can choose from. Cannot be empty and all choices must be distinct. | Required | String array | - | - | Validations: