aboutsummaryrefslogtreecommitdiffstats
path: root/modules/issue
diff options
context:
space:
mode:
Diffstat (limited to 'modules/issue')
-rw-r--r--modules/issue/template/unmarshal.go30
1 files changed, 22 insertions, 8 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 {