mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-01 15:19:09 +01:00
9269a038a4
* Direct avatar rendering This adds new template helpers for avatar rendering which output image elements with direct links to avatars which makes them cacheable by the browsers. This should be a major performance improvment for pages with many avatars. * fix avatars of other user's profile pages * fix top border on user avatar name * uncircle avatars * remove old incomplete avatar selector * use title attribute for name and add it back on blame * minor refactor * tweak comments * fix url path join and adjust test to new result * dedupe functions
136 lines
5.2 KiB
Handlebars
136 lines
5.2 KiB
Handlebars
{{template "base/head" .}}
|
|
<div class="page-content user profile">
|
|
<div class="ui container">
|
|
<div class="ui stackable grid">
|
|
<div class="ui five wide column">
|
|
<div class="ui card">
|
|
{{if eq .SignedUserName .Owner.Name}}
|
|
<a class="image poping up" href="{{AppSubUrl}}/user/settings" id="profile-avatar" data-content="{{.i18n.Tr "user.change_avatar"}}" data-variation="inverted tiny" data-position="bottom center">
|
|
{{avatar .Owner 290}}
|
|
</a>
|
|
{{else}}
|
|
<span class="image" id="profile-avatar">
|
|
{{avatar .Owner 290}}
|
|
</span>
|
|
{{end}}
|
|
<div class="content word-break profile-avatar-name">
|
|
{{if .Owner.FullName}}<span class="header text center">{{.Owner.FullName}}</span>{{end}}
|
|
<span class="username text center">{{.Owner.Name}}</span>
|
|
</div>
|
|
<div class="extra content word-break">
|
|
<ul>
|
|
{{if .Owner.Location}}
|
|
<li>{{svg "octicon-location"}} {{.Owner.Location}}</li>
|
|
{{end}}
|
|
{{if .ShowUserEmail }}
|
|
<li>
|
|
{{svg "octicon-mail"}}
|
|
<a href="mailto:{{.Owner.Email}}" rel="nofollow">{{.Owner.Email}}</a>
|
|
</li>
|
|
{{end}}
|
|
{{if .Owner.Website}}
|
|
<li>
|
|
{{svg "octicon-link"}}
|
|
<a target="_blank" rel="noopener noreferrer me" href="{{.Owner.Website}}">{{.Owner.Website}}</a>
|
|
</li>
|
|
{{end}}
|
|
{{if $.RenderedDescription}}
|
|
<li>
|
|
<div class="render-content markdown">{{$.RenderedDescription|Str2html}}</div>
|
|
</li>
|
|
{{end}}
|
|
{{range .OpenIDs}}
|
|
{{if .Show}}
|
|
<li>
|
|
<i class="fa fa-openid"></i>
|
|
<a target="_blank" rel="noopener noreferrer" href="{{.URI}}">{{.URI}}</a>
|
|
</li>
|
|
{{end}}
|
|
{{end}}
|
|
<li>{{svg "octicon-clock"}} {{.i18n.Tr "user.join_on"}} {{.Owner.CreatedUnix.FormatShort}}</li>
|
|
{{if and .Orgs .HasOrgsVisible}}
|
|
<li>
|
|
<ul class="user-orgs">
|
|
{{range .Orgs}}
|
|
{{if (or .Visibility.IsPublic (and ($.SignedUser) (or .Visibility.IsLimited (and (.HasMemberWithUserID $.SignedUserID) .Visibility.IsPrivate) ($.IsAdmin))))}}
|
|
<li>
|
|
<a class="poping up" href="{{.HomeLink}}" data-content="{{.Name}}" data-position="top center" data-variation="tiny inverted">
|
|
{{avatar .}}
|
|
</a>
|
|
</li>
|
|
{{end}}
|
|
{{end}}
|
|
</ul>
|
|
</li>
|
|
{{end}}
|
|
{{if and .IsSigned (ne .SignedUserName .Owner.Name)}}
|
|
<li class="follow">
|
|
{{if .SignedUser.IsFollowing .Owner.ID}}
|
|
<form method="post" action="{{.Link}}/action/unfollow?redirect_to={{$.Link}}">
|
|
{{$.CsrfTokenHtml}}
|
|
<button type="submit" class="ui basic red button">{{svg "octicon-person"}} {{.i18n.Tr "user.unfollow"}}</button>
|
|
</form>
|
|
{{else}}
|
|
<form method="post" action="{{.Link}}/action/follow?redirect_to={{$.Link}}">
|
|
{{$.CsrfTokenHtml}}
|
|
<button type="submit" class="ui basic green button">{{svg "octicon-person"}} {{.i18n.Tr "user.follow"}}</button>
|
|
</form>
|
|
{{end}}
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="ui eleven wide column">
|
|
<div class="ui secondary stackable pointing menu">
|
|
<a class='{{if and (ne .TabName "activity") (ne .TabName "following") (ne .TabName "followers") (ne .TabName "stars") (ne .TabName "projects")}}active{{end}} item' href="{{.Owner.HomeLink}}">
|
|
{{svg "octicon-repo"}} {{.i18n.Tr "user.repositories"}}
|
|
</a>
|
|
<a class='{{if eq .TabName "activity"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=activity">
|
|
{{svg "octicon-rss"}} {{.i18n.Tr "user.activity"}}
|
|
</a>
|
|
<a class='{{if eq .TabName "stars"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=stars">
|
|
{{svg "octicon-star"}} {{.i18n.Tr "user.starred"}}
|
|
<div class="ui label">{{.Owner.NumStars}}</div>
|
|
</a>
|
|
<a class='{{if eq .TabName "following"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=following">
|
|
{{svg "octicon-person"}} {{.i18n.Tr "user.following"}}
|
|
<div class="ui label">{{.Owner.NumFollowing}}</div>
|
|
</a>
|
|
<a class='{{if eq .TabName "followers"}}active{{end}} item' href="{{.Owner.HomeLink}}?tab=followers">
|
|
{{svg "octicon-person"}} {{.i18n.Tr "user.followers"}}
|
|
<div class="ui label">{{.Owner.NumFollowers}}</div>
|
|
</a>
|
|
</div>
|
|
|
|
{{if eq .TabName "activity"}}
|
|
{{if .Owner.KeepActivityPrivate}}
|
|
<div class="ui info message">
|
|
<p>{{.i18n.Tr "user.disabled_public_activity"}}</p>
|
|
</div>
|
|
{{end}}
|
|
{{template "user/heatmap" .}}
|
|
<div class="feeds">
|
|
{{template "user/dashboard/feeds" .}}
|
|
</div>
|
|
{{else if eq .TabName "stars"}}
|
|
<div class="stars">
|
|
{{template "explore/repo_search" .}}
|
|
{{template "explore/repo_list" .}}
|
|
{{template "base/paginate" .}}
|
|
</div>
|
|
{{else if eq .TabName "following"}}
|
|
{{template "repo/user_cards" .}}
|
|
{{else if eq .TabName "followers"}}
|
|
{{template "repo/user_cards" .}}
|
|
{{else}}
|
|
{{template "explore/repo_search" .}}
|
|
{{template "explore/repo_list" .}}
|
|
{{template "base/paginate" .}}
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{template "base/footer" .}}
|