| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -14,6 +14,7 @@ import ( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/markup/markdown" | 
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/markup/markdown" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/setting" | 
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/setting" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						api "code.gitea.io/gitea/modules/structs" | 
					 | 
					 | 
					 | 
						api "code.gitea.io/gitea/modules/structs" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						"code.gitea.io/gitea/modules/util" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"gopkg.in/yaml.v2" | 
					 | 
					 | 
					 | 
						"gopkg.in/yaml.v2" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					) | 
					 | 
					 | 
					 | 
					) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -95,14 +96,27 @@ func unmarshal(filename string, content []byte) (*api.IssueTemplate, error) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}{} | 
					 | 
					 | 
					 | 
						}{} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if typ := it.Type(); typ == api.IssueTemplateTypeMarkdown { | 
					 | 
					 | 
					 | 
						if typ := it.Type(); typ == api.IssueTemplateTypeMarkdown { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							templateBody, err := markdown.ExtractMetadata(string(content), it) | 
					 | 
					 | 
					 | 
							if templateBody, err := markdown.ExtractMetadata(string(content), it); err != nil { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if err != nil { | 
					 | 
					 | 
					 | 
								// The only thing we know here is that we can't extract metadata from the content,
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return nil, err | 
					 | 
					 | 
					 | 
								// it's hard to tell if metadata doesn't exist or metadata isn't valid.
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
								// There's an example template:
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							it.Content = templateBody | 
					 | 
					 | 
					 | 
								//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if it.About == "" { | 
					 | 
					 | 
					 | 
								//    ---
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if _, err := markdown.ExtractMetadata(string(content), compatibleTemplate); err == nil && compatibleTemplate.About != "" { | 
					 | 
					 | 
					 | 
								//    # Title
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									it.About = compatibleTemplate.About | 
					 | 
					 | 
					 | 
								//    ---
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								//    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 { | 
					 | 
					 | 
					 | 
						} else if typ == api.IssueTemplateTypeYaml { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |