mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 11:28:24 +00:00 
			
		
		
		
	Merge pull request #1662 from SergioBenitez/develop
Commit messages now rendered with line breaks and prefix spacing.
This commit is contained in:
		| @@ -96,9 +96,42 @@ func ToUtf8(content string) string { | |||||||
| 	return res | 	return res | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // Replaces all prefixes 'old' in 's' with 'new'. | ||||||
|  | func ReplaceLeft(s, old, new string) string { | ||||||
|  | 	old_len, new_len, i, n := len(old), len(new), 0, 0 | ||||||
|  | 	for ; i < len(s) && strings.HasPrefix(s[i:], old); n += 1 { | ||||||
|  | 		i += old_len | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// simple optimization | ||||||
|  | 	if n == 0 { | ||||||
|  | 		return s | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// allocating space for the new string | ||||||
|  | 	newLen := n*new_len + len(s[i:]) | ||||||
|  | 	replacement := make([]byte, newLen, newLen) | ||||||
|  |  | ||||||
|  | 	j := 0 | ||||||
|  | 	for ; j < n*new_len; j += new_len { | ||||||
|  | 		copy(replacement[j:j+new_len], new) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	copy(replacement[j:], s[i:]) | ||||||
|  | 	return string(replacement) | ||||||
|  | } | ||||||
|  |  | ||||||
| // RenderCommitMessage renders commit message with XSS-safe and special links. | // RenderCommitMessage renders commit message with XSS-safe and special links. | ||||||
| func RenderCommitMessage(msg, urlPrefix string) template.HTML { | func RenderCommitMessage(msg, urlPrefix string) template.HTML { | ||||||
| 	return template.HTML(string(RenderIssueIndexPattern([]byte(template.HTMLEscapeString(msg)), urlPrefix))) | 	cleanMsg := template.HTMLEscapeString(msg) | ||||||
|  | 	fullMessage := string(RenderIssueIndexPattern([]byte(cleanMsg), urlPrefix)) | ||||||
|  | 	msgLines := strings.Split(strings.TrimSpace(fullMessage), "\n") | ||||||
|  | 	for i := range msgLines { | ||||||
|  | 		msgLines[i] = ReplaceLeft(msgLines[i], " ", " ") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	fullMessage = strings.Join(msgLines, "<br>") | ||||||
|  | 	return template.HTML(fullMessage) | ||||||
| } | } | ||||||
|  |  | ||||||
| var TemplateFuncs template.FuncMap = map[string]interface{}{ | var TemplateFuncs template.FuncMap = map[string]interface{}{ | ||||||
|   | |||||||
| @@ -6,12 +6,12 @@ | |||||||
|     {{template "repo/commits_table" .}} |     {{template "repo/commits_table" .}} | ||||||
|     {{else}} |     {{else}} | ||||||
|     <h4 class="ui top attached info header"> |     <h4 class="ui top attached info header"> | ||||||
|       {{RenderCommitMessage .Commit.Message $.RepoLink}} |  | ||||||
|       <div class="ui right"> |       <div class="ui right"> | ||||||
|         <a class="ui blue tiny button" href="{{EscapePound .SourcePath}}"> |         <a class="ui blue tiny button" href="{{EscapePound .SourcePath}}"> | ||||||
|           {{.i18n.Tr "repo.diff.browse_source"}} |           {{.i18n.Tr "repo.diff.browse_source"}} | ||||||
|         </a> |         </a> | ||||||
|       </div> |       </div> | ||||||
|  |       {{RenderCommitMessage .Commit.Message $.RepoLink}} | ||||||
|     </h4> |     </h4> | ||||||
|     <div class="ui attached info segment"> |     <div class="ui attached info segment"> | ||||||
|       {{if .Author}} |       {{if .Author}} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user