]> source.dussan.org Git - gitea.git/commitdiff
Fix commit expand button to not go to commit link (#8745)
authorLauris BH <lauris@nix.lv>
Fri, 1 Nov 2019 04:48:30 +0000 (06:48 +0200)
committerGitHub <noreply@github.com>
Fri, 1 Nov 2019 04:48:30 +0000 (06:48 +0200)
* Fix commit expand button to not go to commit link

* Fix message rendering to have correct HTML in result

* Fix check for empty commit message

* Code optimization

modules/templates/helper.go
public/js/index.js

index b5287bf97130124d64e7f98a569996afc467fece..bdcaa12754abc909c832f79ba075762903ed3860 100644 (file)
@@ -19,6 +19,7 @@ import (
        "runtime"
        "strings"
        "time"
+       "unicode"
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/base"
@@ -338,34 +339,46 @@ func RenderCommitMessageLink(msg, urlPrefix, urlDefault string, metas map[string
 // RenderCommitMessageLinkSubject renders commit message as a XXS-safe link to
 // the provided default url, handling for special links without email to links.
 func RenderCommitMessageLinkSubject(msg, urlPrefix, urlDefault string, metas map[string]string) template.HTML {
-       cleanMsg := template.HTMLEscapeString(msg)
+       msgLine := strings.TrimLeftFunc(msg, unicode.IsSpace)
+       lineEnd := strings.IndexByte(msgLine, '\n')
+       if lineEnd > 0 {
+               msgLine = msgLine[:lineEnd]
+       }
+       msgLine = strings.TrimRightFunc(msgLine, unicode.IsSpace)
+       if len(msgLine) == 0 {
+               return template.HTML("")
+       }
+
        // we can safely assume that it will not return any error, since there
        // shouldn't be any special HTML.
-       fullMessage, err := markup.RenderCommitMessageSubject([]byte(cleanMsg), urlPrefix, urlDefault, metas)
+       renderedMessage, err := markup.RenderCommitMessageSubject([]byte(template.HTMLEscapeString(msgLine)), urlPrefix, urlDefault, metas)
        if err != nil {
                log.Error("RenderCommitMessageSubject: %v", err)
-               return ""
-       }
-       msgLines := strings.Split(strings.TrimSpace(string(fullMessage)), "\n")
-       if len(msgLines) == 0 {
                return template.HTML("")
        }
-       return template.HTML(msgLines[0])
+       return template.HTML(renderedMessage)
 }
 
 // RenderCommitBody extracts the body of a commit message without its title.
 func RenderCommitBody(msg, urlPrefix string, metas map[string]string) template.HTML {
-       cleanMsg := template.HTMLEscapeString(msg)
-       fullMessage, err := markup.RenderCommitMessage([]byte(cleanMsg), urlPrefix, "", metas)
+       msgLine := strings.TrimRightFunc(msg, unicode.IsSpace)
+       lineEnd := strings.IndexByte(msgLine, '\n')
+       if lineEnd > 0 {
+               msgLine = msgLine[lineEnd+1:]
+       } else {
+               return template.HTML("")
+       }
+       msgLine = strings.TrimLeftFunc(msgLine, unicode.IsSpace)
+       if len(msgLine) == 0 {
+               return template.HTML("")
+       }
+
+       renderedMessage, err := markup.RenderCommitMessage([]byte(template.HTMLEscapeString(msgLine)), urlPrefix, "", metas)
        if err != nil {
                log.Error("RenderCommitMessage: %v", err)
                return ""
        }
-       body := strings.Split(strings.TrimSpace(string(fullMessage)), "\n")
-       if len(body) == 0 {
-               return template.HTML("")
-       }
-       return template.HTML(strings.Join(body[1:], "\n"))
+       return template.HTML(renderedMessage)
 }
 
 // RenderNote renders the contents of a git-notes file as a commit message.
index bfcf36f52866f64db42195493fb2527e3169e248..53650890f0c97b540a41b981723621bb9cdf64d4 100644 (file)
@@ -2994,7 +2994,8 @@ function initFilterBranchTagDropdown(selector) {
     });
 }
 
-$(".commit-button").click(function() {
+$(".commit-button").click(function(e) {
+    e.preventDefault();
     $(this).parent().find('.commit-body').toggle();
 });