diff options
author | silverwind <me@silverwind.io> | 2020-12-09 01:12:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-09 01:12:15 +0100 |
commit | c05701dd7d72aea75c67fbb07df928c192474686 (patch) | |
tree | 807d295c28ad57950120e0b14596168902efde0d /modules | |
parent | 658e90a1141a03e5249770a6a670b818fe307e1d (diff) | |
download | gitea-c05701dd7d72aea75c67fbb07df928c192474686.tar.gz gitea-c05701dd7d72aea75c67fbb07df928c192474686.zip |
Fix frontpage avatars (#13853)
The frontpage uses a rather strange method to obtain the commit's avatar
which I've overlooked earlier. I don't exactly understand how it works
but this change fixes the wrong default avatars by using the function
that was in previous use.
Also introduced a few constants for size an size increase factor.
Fixes: https://github.com/go-gitea/gitea/issues/13844
Diffstat (limited to 'modules')
-rw-r--r-- | modules/repository/commits.go | 6 | ||||
-rw-r--r-- | modules/repository/commits_test.go | 6 | ||||
-rw-r--r-- | modules/templates/helper.go | 20 |
3 files changed, 19 insertions, 13 deletions
diff --git a/modules/repository/commits.go b/modules/repository/commits.go index fd8b8d927a..6b67c2c262 100644 --- a/modules/repository/commits.go +++ b/modules/repository/commits.go @@ -118,12 +118,14 @@ func (pc *PushCommits) AvatarLink(email string) string { return avatar } + size := models.DefaultAvatarPixelSize * models.AvatarRenderedSizeFactor + u, ok := pc.emailUsers[email] if !ok { var err error u, err = models.GetUserByEmail(email) if err != nil { - pc.avatars[email] = models.HashedAvatarLink(email) + pc.avatars[email] = models.SizedAvatarLink(email, size) if !models.IsErrUserNotExist(err) { log.Error("GetUserByEmail: %v", err) return "" @@ -133,7 +135,7 @@ func (pc *PushCommits) AvatarLink(email string) string { } } if u != nil { - pc.avatars[email] = u.RelAvatarLink() + pc.avatars[email] = u.RealSizedAvatarLink(size) } return pc.avatars[email] diff --git a/modules/repository/commits_test.go b/modules/repository/commits_test.go index cb00e19c2e..16677fe8a6 100644 --- a/modules/repository/commits_test.go +++ b/modules/repository/commits_test.go @@ -112,11 +112,13 @@ func TestPushCommits_AvatarLink(t *testing.T) { pushCommits.Len = len(pushCommits.Commits) assert.Equal(t, - "/user/avatar/user2/-1", + "https://secure.gravatar.com/avatar/ab53a2911ddf9b4817ac01ddcd3d975f?d=identicon&s=56", pushCommits.AvatarLink("user2@example.com")) assert.Equal(t, - "/avatar/"+fmt.Sprintf("%x", md5.Sum([]byte("nonexistent@example.com"))), + "https://secure.gravatar.com/avatar/"+ + fmt.Sprintf("%x", md5.Sum([]byte("nonexistent@example.com")))+ + "?d=identicon&s=56", pushCommits.AvatarLink("nonexistent@example.com")) } diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 0b5ae0f013..f7c10c3698 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -340,6 +340,7 @@ func NewFuncMap() []template.FuncMap { }, "svg": SVG, "avatar": Avatar, + "avatarHTML": AvatarHTML, "avatarByEmail": AvatarByEmail, "repoAvatar": RepoAvatar, "SortArrow": func(normSort, revSort, urlSort string, isDefault bool) template.HTML { @@ -519,7 +520,8 @@ func parseOthers(defaultSize int, defaultClass string, others ...interface{}) (i return size, class } -func avatarHTML(src string, size int, class string, name string) template.HTML { +// AvatarHTML creates the HTML for an avatar +func AvatarHTML(src string, size int, class string, name string) template.HTML { sizeStr := fmt.Sprintf(`%d`, size) if name == "" { @@ -548,33 +550,33 @@ func SVG(icon string, others ...interface{}) template.HTML { // Avatar renders user avatars. args: user, size (int), class (string) func Avatar(user *models.User, others ...interface{}) template.HTML { - size, class := parseOthers(28, "ui avatar image", others...) + size, class := parseOthers(models.DefaultAvatarPixelSize, "ui avatar image", others...) - src := user.RealSizedAvatarLink(size * 2) // request double size for finer rendering + src := user.RealSizedAvatarLink(size * models.AvatarRenderedSizeFactor) if src != "" { - return avatarHTML(src, size, class, user.DisplayName()) + return AvatarHTML(src, size, class, user.DisplayName()) } return template.HTML("") } // RepoAvatar renders repo avatars. args: repo, size(int), class (string) func RepoAvatar(repo *models.Repository, others ...interface{}) template.HTML { - size, class := parseOthers(28, "ui avatar image", others...) + size, class := parseOthers(models.DefaultAvatarPixelSize, "ui avatar image", others...) src := repo.RelAvatarLink() if src != "" { - return avatarHTML(src, size, class, repo.FullName()) + return AvatarHTML(src, size, class, repo.FullName()) } return template.HTML("") } // AvatarByEmail renders avatars by email address. args: email, name, size (int), class (string) func AvatarByEmail(email string, name string, others ...interface{}) template.HTML { - size, class := parseOthers(28, "ui avatar image", others...) - src := models.SizedAvatarLink(email, size*2) // request double size for finer rendering + size, class := parseOthers(models.DefaultAvatarPixelSize, "ui avatar image", others...) + src := models.SizedAvatarLink(email, size*models.AvatarRenderedSizeFactor) if src != "" { - return avatarHTML(src, size, class, name) + return AvatarHTML(src, size, class, name) } return template.HTML("") |