aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/issue/template/unmarshal.go30
-rw-r--r--modules/structs/issue.go4
2 files changed, 24 insertions, 10 deletions
diff --git a/modules/issue/template/unmarshal.go b/modules/issue/template/unmarshal.go
index e695d1e1cc..24587b0fed 100644
--- a/modules/issue/template/unmarshal.go
+++ b/modules/issue/template/unmarshal.go
@@ -14,6 +14,7 @@ import (
"code.gitea.io/gitea/modules/markup/markdown"
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
+ "code.gitea.io/gitea/modules/util"
"gopkg.in/yaml.v2"
)
@@ -95,14 +96,27 @@ func unmarshal(filename string, content []byte) (*api.IssueTemplate, error) {
}{}
if typ := it.Type(); typ == api.IssueTemplateTypeMarkdown {
- templateBody, err := markdown.ExtractMetadata(string(content), it)
- if err != nil {
- return nil, err
- }
- it.Content = templateBody
- if it.About == "" {
- if _, err := markdown.ExtractMetadata(string(content), compatibleTemplate); err == nil && compatibleTemplate.About != "" {
- it.About = compatibleTemplate.About
+ if templateBody, err := markdown.ExtractMetadata(string(content), it); err != nil {
+ // The only thing we know here is that we can't extract metadata from the content,
+ // it's hard to tell if metadata doesn't exist or metadata isn't valid.
+ // There's an example template:
+ //
+ // ---
+ // # Title
+ // ---
+ // Content
+ //
+ // It could be a valid markdown with two horizontal lines, or an invalid markdown with wrong metadata.
+
+ it.Content = string(content)
+ it.Name = filepath.Base(it.FileName)
+ it.About, _ = util.SplitStringAtByteN(it.Content, 80)
+ } else {
+ it.Content = templateBody
+ if it.About == "" {
+ if _, err := markdown.ExtractMetadata(string(content), compatibleTemplate); err == nil && compatibleTemplate.About != "" {
+ it.About = compatibleTemplate.About
+ }
}
}
} else if typ == api.IssueTemplateTypeYaml {
diff --git a/modules/structs/issue.go b/modules/structs/issue.go
index 27ec81f728..70f5e1ba8e 100644
--- a/modules/structs/issue.go
+++ b/modules/structs/issue.go
@@ -170,7 +170,7 @@ func (it IssueTemplate) Type() IssueTemplateType {
if ext := filepath.Ext(it.FileName); ext == ".md" {
return IssueTemplateTypeMarkdown
} else if ext == ".yaml" || ext == ".yml" {
- return "yaml"
+ return IssueTemplateTypeYaml
}
- return IssueTemplateTypeYaml
+ return ""
}