mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-26 18:00:34 +00:00
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
This commit is contained in:
parent
658e90a114
commit
c05701dd7d
13 changed files with 78 additions and 65 deletions
|
@ -40,6 +40,12 @@ func DefaultAvatarLink() string {
|
||||||
// determined by the avatar-hosting service.
|
// determined by the avatar-hosting service.
|
||||||
const DefaultAvatarSize = -1
|
const DefaultAvatarSize = -1
|
||||||
|
|
||||||
|
// DefaultAvatarPixelSize is the default size in pixels of a rendered avatar
|
||||||
|
const DefaultAvatarPixelSize = 28
|
||||||
|
|
||||||
|
// AvatarRenderedSizeFactor is the factor by which the default size is increased for finer rendering
|
||||||
|
const AvatarRenderedSizeFactor = 2
|
||||||
|
|
||||||
// HashEmail hashes email address to MD5 string.
|
// HashEmail hashes email address to MD5 string.
|
||||||
// https://en.gravatar.com/site/implement/hash/
|
// https://en.gravatar.com/site/implement/hash/
|
||||||
func HashEmail(email string) string {
|
func HashEmail(email string) string {
|
||||||
|
|
|
@ -118,12 +118,14 @@ func (pc *PushCommits) AvatarLink(email string) string {
|
||||||
return avatar
|
return avatar
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size := models.DefaultAvatarPixelSize * models.AvatarRenderedSizeFactor
|
||||||
|
|
||||||
u, ok := pc.emailUsers[email]
|
u, ok := pc.emailUsers[email]
|
||||||
if !ok {
|
if !ok {
|
||||||
var err error
|
var err error
|
||||||
u, err = models.GetUserByEmail(email)
|
u, err = models.GetUserByEmail(email)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
pc.avatars[email] = models.HashedAvatarLink(email)
|
pc.avatars[email] = models.SizedAvatarLink(email, size)
|
||||||
if !models.IsErrUserNotExist(err) {
|
if !models.IsErrUserNotExist(err) {
|
||||||
log.Error("GetUserByEmail: %v", err)
|
log.Error("GetUserByEmail: %v", err)
|
||||||
return ""
|
return ""
|
||||||
|
@ -133,7 +135,7 @@ func (pc *PushCommits) AvatarLink(email string) string {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if u != nil {
|
if u != nil {
|
||||||
pc.avatars[email] = u.RelAvatarLink()
|
pc.avatars[email] = u.RealSizedAvatarLink(size)
|
||||||
}
|
}
|
||||||
|
|
||||||
return pc.avatars[email]
|
return pc.avatars[email]
|
||||||
|
|
|
@ -112,11 +112,13 @@ func TestPushCommits_AvatarLink(t *testing.T) {
|
||||||
pushCommits.Len = len(pushCommits.Commits)
|
pushCommits.Len = len(pushCommits.Commits)
|
||||||
|
|
||||||
assert.Equal(t,
|
assert.Equal(t,
|
||||||
"/user/avatar/user2/-1",
|
"https://secure.gravatar.com/avatar/ab53a2911ddf9b4817ac01ddcd3d975f?d=identicon&s=56",
|
||||||
pushCommits.AvatarLink("user2@example.com"))
|
pushCommits.AvatarLink("user2@example.com"))
|
||||||
|
|
||||||
assert.Equal(t,
|
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"))
|
pushCommits.AvatarLink("nonexistent@example.com"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -340,6 +340,7 @@ func NewFuncMap() []template.FuncMap {
|
||||||
},
|
},
|
||||||
"svg": SVG,
|
"svg": SVG,
|
||||||
"avatar": Avatar,
|
"avatar": Avatar,
|
||||||
|
"avatarHTML": AvatarHTML,
|
||||||
"avatarByEmail": AvatarByEmail,
|
"avatarByEmail": AvatarByEmail,
|
||||||
"repoAvatar": RepoAvatar,
|
"repoAvatar": RepoAvatar,
|
||||||
"SortArrow": func(normSort, revSort, urlSort string, isDefault bool) template.HTML {
|
"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
|
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)
|
sizeStr := fmt.Sprintf(`%d`, size)
|
||||||
|
|
||||||
if name == "" {
|
if name == "" {
|
||||||
|
@ -548,33 +550,33 @@ func SVG(icon string, others ...interface{}) template.HTML {
|
||||||
|
|
||||||
// Avatar renders user avatars. args: user, size (int), class (string)
|
// Avatar renders user avatars. args: user, size (int), class (string)
|
||||||
func Avatar(user *models.User, others ...interface{}) template.HTML {
|
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 != "" {
|
if src != "" {
|
||||||
return avatarHTML(src, size, class, user.DisplayName())
|
return AvatarHTML(src, size, class, user.DisplayName())
|
||||||
}
|
}
|
||||||
return template.HTML("")
|
return template.HTML("")
|
||||||
}
|
}
|
||||||
|
|
||||||
// RepoAvatar renders repo avatars. args: repo, size(int), class (string)
|
// RepoAvatar renders repo avatars. args: repo, size(int), class (string)
|
||||||
func RepoAvatar(repo *models.Repository, others ...interface{}) template.HTML {
|
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()
|
src := repo.RelAvatarLink()
|
||||||
if src != "" {
|
if src != "" {
|
||||||
return avatarHTML(src, size, class, repo.FullName())
|
return AvatarHTML(src, size, class, repo.FullName())
|
||||||
}
|
}
|
||||||
return template.HTML("")
|
return template.HTML("")
|
||||||
}
|
}
|
||||||
|
|
||||||
// AvatarByEmail renders avatars by email address. args: email, name, size (int), class (string)
|
// AvatarByEmail renders avatars by email address. args: email, name, size (int), class (string)
|
||||||
func AvatarByEmail(email string, name string, others ...interface{}) template.HTML {
|
func AvatarByEmail(email string, name string, others ...interface{}) template.HTML {
|
||||||
size, class := parseOthers(28, "ui avatar image", others...)
|
size, class := parseOthers(models.DefaultAvatarPixelSize, "ui avatar image", others...)
|
||||||
src := models.SizedAvatarLink(email, size*2) // request double size for finer rendering
|
src := models.SizedAvatarLink(email, size*models.AvatarRenderedSizeFactor)
|
||||||
|
|
||||||
if src != "" {
|
if src != "" {
|
||||||
return avatarHTML(src, size, class, name)
|
return AvatarHTML(src, size, class, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
return template.HTML("")
|
return template.HTML("")
|
||||||
|
|
|
@ -11,23 +11,23 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
<div class="ui right">
|
<div class="ui right">
|
||||||
{{if eq .HookType "gitea"}}
|
{{if eq .HookType "gitea"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/gitea-sm.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/gitea-sm.png">
|
||||||
{{else if eq .HookType "gogs"}}
|
{{else if eq .HookType "gogs"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/gogs.ico">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/gogs.ico">
|
||||||
{{else if eq .HookType "slack"}}
|
{{else if eq .HookType "slack"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/slack.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/slack.png">
|
||||||
{{else if eq .HookType "discord"}}
|
{{else if eq .HookType "discord"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/discord.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/discord.png">
|
||||||
{{else if eq .HookType "dingtalk"}}
|
{{else if eq .HookType "dingtalk"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/dingtalk.ico">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/dingtalk.ico">
|
||||||
{{else if eq .HookType "telegram"}}
|
{{else if eq .HookType "telegram"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/telegram.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/telegram.png">
|
||||||
{{else if eq .HookType "msteams"}}
|
{{else if eq .HookType "msteams"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/msteams.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/msteams.png">
|
||||||
{{else if eq .HookType "feishu"}}
|
{{else if eq .HookType "feishu"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/feishu.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/feishu.png">
|
||||||
{{else if eq .HookType "matrix"}}
|
{{else if eq .HookType "matrix"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/matrix.svg">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/matrix.svg">
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</h4>
|
</h4>
|
||||||
|
|
|
@ -10,23 +10,23 @@
|
||||||
{{if .PageIsSettingsHooksNew}}{{.i18n.Tr "repo.settings.add_webhook"}}{{else}}{{.i18n.Tr "repo.settings.update_webhook"}}{{end}}
|
{{if .PageIsSettingsHooksNew}}{{.i18n.Tr "repo.settings.add_webhook"}}{{else}}{{.i18n.Tr "repo.settings.update_webhook"}}{{end}}
|
||||||
<div class="ui right">
|
<div class="ui right">
|
||||||
{{if eq .HookType "gitea"}}
|
{{if eq .HookType "gitea"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/gitea-sm.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/gitea-sm.png">
|
||||||
{{else if eq .HookType "gogs"}}
|
{{else if eq .HookType "gogs"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/gogs.ico">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/gogs.ico">
|
||||||
{{else if eq .HookType "slack"}}
|
{{else if eq .HookType "slack"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/slack.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/slack.png">
|
||||||
{{else if eq .HookType "discord"}}
|
{{else if eq .HookType "discord"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/discord.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/discord.png">
|
||||||
{{else if eq .HookType "dingtalk"}}
|
{{else if eq .HookType "dingtalk"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/dingtalk.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/dingtalk.png">
|
||||||
{{else if eq .HookType "telegram"}}
|
{{else if eq .HookType "telegram"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/telegram.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/telegram.png">
|
||||||
{{else if eq .HookType "msteams"}}
|
{{else if eq .HookType "msteams"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/msteams.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/msteams.png">
|
||||||
{{else if eq .HookType "feishu"}}
|
{{else if eq .HookType "feishu"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/feishu.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/feishu.png">
|
||||||
{{else if eq .HookType "matrix"}}
|
{{else if eq .HookType "matrix"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/matrix.svg">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/matrix.svg">
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</h4>
|
</h4>
|
||||||
|
|
|
@ -90,7 +90,7 @@
|
||||||
<p class="text grey">
|
<p class="text grey">
|
||||||
{{ if gt .Publisher.ID 0 }}
|
{{ if gt .Publisher.ID 0 }}
|
||||||
<span class="author">
|
<span class="author">
|
||||||
{{avatar .Publisher 28 "img-10"}}
|
{{avatar .Publisher 20}}
|
||||||
<a href="{{AppSubUrl}}/{{.Publisher.Name}}">{{.Publisher.Name}}</a>
|
<a href="{{AppSubUrl}}/{{.Publisher.Name}}">{{.Publisher.Name}}</a>
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -117,7 +117,7 @@
|
||||||
{{if .OriginalAuthor}}
|
{{if .OriginalAuthor}}
|
||||||
{{svg "octicon-mark-github" 16 "mr-2"}}{{.OriginalAuthor}}
|
{{svg "octicon-mark-github" 16 "mr-2"}}{{.OriginalAuthor}}
|
||||||
{{else if .Publisher}}
|
{{else if .Publisher}}
|
||||||
{{avatar .Publisher 28 "img-10"}}
|
{{avatar .Publisher 20}}
|
||||||
<a href="{{AppSubUrl}}/{{.Publisher.Name}}">{{.Publisher.GetDisplayName}}</a>
|
<a href="{{AppSubUrl}}/{{.Publisher.Name}}">{{.Publisher.GetDisplayName}}</a>
|
||||||
{{else}}
|
{{else}}
|
||||||
Ghost
|
Ghost
|
||||||
|
|
|
@ -6,31 +6,31 @@
|
||||||
<div class="ui blue tiny button">{{.i18n.Tr "repo.settings.add_webhook"}}</div>
|
<div class="ui blue tiny button">{{.i18n.Tr "repo.settings.add_webhook"}}</div>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
<a class="item" href="{{.BaseLink}}/gitea/new">
|
<a class="item" href="{{.BaseLink}}/gitea/new">
|
||||||
<img class="img-10" src="{{StaticUrlPrefix}}/img/gitea-sm.png">Gitea
|
<img width="20" height="20" src="{{StaticUrlPrefix}}/img/gitea-sm.png">Gitea
|
||||||
</a>
|
</a>
|
||||||
<a class="item" href="{{.BaseLink}}/gogs/new">
|
<a class="item" href="{{.BaseLink}}/gogs/new">
|
||||||
<img class="img-10" src="{{StaticUrlPrefix}}/img/gogs.ico">Gogs
|
<img width="20" height="20" src="{{StaticUrlPrefix}}/img/gogs.ico">Gogs
|
||||||
</a>
|
</a>
|
||||||
<a class="item" href="{{.BaseLink}}/slack/new">
|
<a class="item" href="{{.BaseLink}}/slack/new">
|
||||||
<img class="img-10" src="{{StaticUrlPrefix}}/img/slack.png">Slack
|
<img width="20" height="20" src="{{StaticUrlPrefix}}/img/slack.png">Slack
|
||||||
</a>
|
</a>
|
||||||
<a class="item" href="{{.BaseLink}}/discord/new">
|
<a class="item" href="{{.BaseLink}}/discord/new">
|
||||||
<img class="img-10" src="{{StaticUrlPrefix}}/img/discord.png">Discord
|
<img width="20" height="20" src="{{StaticUrlPrefix}}/img/discord.png">Discord
|
||||||
</a>
|
</a>
|
||||||
<a class="item" href="{{.BaseLink}}/dingtalk/new">
|
<a class="item" href="{{.BaseLink}}/dingtalk/new">
|
||||||
<img class="img-10" src="{{StaticUrlPrefix}}/img/dingtalk.ico">Dingtalk
|
<img width="20" height="20" src="{{StaticUrlPrefix}}/img/dingtalk.ico">Dingtalk
|
||||||
</a>
|
</a>
|
||||||
<a class="item" href="{{.BaseLink}}/telegram/new">
|
<a class="item" href="{{.BaseLink}}/telegram/new">
|
||||||
<img class="img-10" src="{{StaticUrlPrefix}}/img/telegram.png">Telegram
|
<img width="20" height="20" src="{{StaticUrlPrefix}}/img/telegram.png">Telegram
|
||||||
</a>
|
</a>
|
||||||
<a class="item" href="{{.BaseLink}}/msteams/new">
|
<a class="item" href="{{.BaseLink}}/msteams/new">
|
||||||
<img class="img-10" src="{{StaticUrlPrefix}}/img/msteams.png">Microsoft Teams
|
<img width="20" height="20" src="{{StaticUrlPrefix}}/img/msteams.png">Microsoft Teams
|
||||||
</a>
|
</a>
|
||||||
<a class="item" href="{{.BaseLink}}/feishu/new">
|
<a class="item" href="{{.BaseLink}}/feishu/new">
|
||||||
<img class="img-10" src="{{StaticUrlPrefix}}/img/feishu.png">Feishu
|
<img width="20" height="20" src="{{StaticUrlPrefix}}/img/feishu.png">Feishu
|
||||||
</a>
|
</a>
|
||||||
<a class="item" href="{{.BaseLink}}/matrix/new">
|
<a class="item" href="{{.BaseLink}}/matrix/new">
|
||||||
<img class="img-10" src="{{StaticUrlPrefix}}/img/matrix.svg">Matrix
|
<img width="20" height="20" src="{{StaticUrlPrefix}}/img/matrix.svg">Matrix
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,23 +8,23 @@
|
||||||
{{if .PageIsSettingsHooksNew}}{{.i18n.Tr "repo.settings.add_webhook"}}{{else}}{{.i18n.Tr "repo.settings.update_webhook"}}{{end}}
|
{{if .PageIsSettingsHooksNew}}{{.i18n.Tr "repo.settings.add_webhook"}}{{else}}{{.i18n.Tr "repo.settings.update_webhook"}}{{end}}
|
||||||
<div class="ui right">
|
<div class="ui right">
|
||||||
{{if eq .HookType "gitea"}}
|
{{if eq .HookType "gitea"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/gitea-sm.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/gitea-sm.png">
|
||||||
{{else if eq .HookType "gogs"}}
|
{{else if eq .HookType "gogs"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/gogs.ico">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/gogs.ico">
|
||||||
{{else if eq .HookType "slack"}}
|
{{else if eq .HookType "slack"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/slack.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/slack.png">
|
||||||
{{else if eq .HookType "discord"}}
|
{{else if eq .HookType "discord"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/discord.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/discord.png">
|
||||||
{{else if eq .HookType "dingtalk"}}
|
{{else if eq .HookType "dingtalk"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/dingtalk.ico">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/dingtalk.ico">
|
||||||
{{else if eq .HookType "telegram"}}
|
{{else if eq .HookType "telegram"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/telegram.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/telegram.png">
|
||||||
{{else if eq .HookType "msteams"}}
|
{{else if eq .HookType "msteams"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/msteams.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/msteams.png">
|
||||||
{{else if eq .HookType "feishu"}}
|
{{else if eq .HookType "feishu"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/feishu.png">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/feishu.png">
|
||||||
{{else if eq .HookType "matrix"}}
|
{{else if eq .HookType "matrix"}}
|
||||||
<img class="img-13" src="{{StaticUrlPrefix}}/img/matrix.svg">
|
<img width="26" height="26" src="{{StaticUrlPrefix}}/img/matrix.svg">
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</h4>
|
</h4>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<tr class="commit-list">
|
<tr class="commit-list">
|
||||||
<th colspan="2">
|
<th colspan="2">
|
||||||
{{if .LatestCommitUser}}
|
{{if .LatestCommitUser}}
|
||||||
{{avatar .LatestCommitUser 28 "img-12"}}
|
{{avatar .LatestCommitUser 24}}
|
||||||
{{if .LatestCommitUser.FullName}}
|
{{if .LatestCommitUser.FullName}}
|
||||||
<a href="{{AppSubUrl}}/{{.LatestCommitUser.Name}}"><strong>{{.LatestCommitUser.FullName}}</strong></a>
|
<a href="{{AppSubUrl}}/{{.LatestCommitUser.Name}}"><strong>{{.LatestCommitUser.FullName}}</strong></a>
|
||||||
{{else}}
|
{{else}}
|
||||||
|
@ -11,7 +11,7 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{if .LatestCommit.Author}}
|
{{if .LatestCommit.Author}}
|
||||||
{{avatarByEmail .LatestCommit.Author.Email .LatestCommit.Author.Name 28 "img-12"}}
|
{{avatarByEmail .LatestCommit.Author.Email .LatestCommit.Author.Name 24}}
|
||||||
<strong>{{.LatestCommit.Author.Name}}</strong>
|
<strong>{{.LatestCommit.Author.Name}}</strong>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
|
@ -85,7 +85,7 @@
|
||||||
{{range $push.Commits}}
|
{{range $push.Commits}}
|
||||||
{{ $commitLink := printf "%s/commit/%s" $repoLink .Sha1}}
|
{{ $commitLink := printf "%s/commit/%s" $repoLink .Sha1}}
|
||||||
<li>
|
<li>
|
||||||
{{avatarByEmail .AuthorEmail .AuthorName 28 "img-8 mr-2"}}
|
{{avatarHTML ($push.AvatarLink .AuthorEmail) 16 "mr-2" .AuthorName}}
|
||||||
<a class="commit-id mr-2" href="{{$commitLink}}">{{ShortSha .Sha1}}</a>
|
<a class="commit-id mr-2" href="{{$commitLink}}">{{ShortSha .Sha1}}</a>
|
||||||
<span class="text truncate light grey">
|
<span class="text truncate light grey">
|
||||||
{{RenderCommitMessage .Message $repoLink $.ComposeMetas}}
|
{{RenderCommitMessage .Message $repoLink $.ComposeMetas}}
|
||||||
|
|
|
@ -312,6 +312,12 @@ a.muted:hover,
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* fix misaligned images in webhook dropdown */
|
||||||
|
.ui.dropdown .menu > .item > img {
|
||||||
|
margin-top: -.25rem;
|
||||||
|
margin-bottom: -.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
.ui.selection.dropdown .menu > .item {
|
.ui.selection.dropdown .menu > .item {
|
||||||
border-color: var(--color-secondary);
|
border-color: var(--color-secondary);
|
||||||
}
|
}
|
||||||
|
@ -1101,16 +1107,6 @@ footer {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.generate-img(16);
|
|
||||||
.generate-img(@n, @i: 1) when (@i =< @n) {
|
|
||||||
.img-@{i} {
|
|
||||||
width: (2px * @i) !important;
|
|
||||||
height: (2px * @i) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.generate-img(@n, (@i + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Conditional display
|
// Conditional display
|
||||||
@media @mediaMdAndUp {
|
@media @mediaMdAndUp {
|
||||||
.mobile-only,
|
.mobile-only,
|
||||||
|
@ -1660,6 +1656,11 @@ a.ui.basic.label:hover {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* prevent stacking context issue on webhook dropdown */
|
||||||
|
.ui.segment {
|
||||||
|
position: static;
|
||||||
|
}
|
||||||
|
|
||||||
.ui.segment,
|
.ui.segment,
|
||||||
.ui.segments,
|
.ui.segments,
|
||||||
.ui.attached.segment {
|
.ui.attached.segment {
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.full-screen-width { width: 100vw !important; }
|
.full-screen-width { width: 100vw !important; }
|
||||||
.full-screen-height { height: 100vw !important; }
|
.full-screen-height { height: 100vh !important; }
|
||||||
|
|
||||||
.rounded { border-radius: var(--border-radius) !important; }
|
.rounded { border-radius: var(--border-radius) !important; }
|
||||||
.rounded-top { border-radius: var(--border-radius) var(--border-radius) 0 0 !important; }
|
.rounded-top { border-radius: var(--border-radius) var(--border-radius) 0 0 !important; }
|
||||||
|
|
Loading…
Reference in a new issue