291c868046
The correct thing to do is to translate the entire phrase into a single string. The previous translation assumed all languages have a space between the "joined on" and the date (and that "joined on" comes before the date). Some languages, like Hebrew, have no space between the "joined on" and the date. For example: ```ini joined_on=נרשם ב-%s ``` ("joined" becomes נרשם, "on" is ב and when paired with a date we use a dash to connect ב with the date)
189 lines
7.4 KiB
Handlebars
189 lines
7.4 KiB
Handlebars
{{template "base/head" .}}
|
|
<div role="main" aria-label="{{.Title}}" class="page-content user profile">
|
|
<div class="ui container">
|
|
<div class="ui stackable grid">
|
|
<div class="ui five wide column">
|
|
<div class="ui card">
|
|
<div id="profile-avatar" class="content gt-df">
|
|
{{if eq .SignedUserID .ContextUser.ID}}
|
|
<a class="image" href="{{AppSubUrl}}/user/settings" data-tooltip-content="{{.locale.Tr "user.change_avatar"}}">
|
|
{{avatar $.Context .ContextUser 290}}
|
|
</a>
|
|
{{else}}
|
|
<span class="image">
|
|
{{avatar $.Context .ContextUser 290}}
|
|
</span>
|
|
{{end}}
|
|
</div>
|
|
<div class="content gt-word-break profile-avatar-name">
|
|
{{if .ContextUser.FullName}}<span class="header text center">{{.ContextUser.FullName}}</span>{{end}}
|
|
<span class="username text center">{{.ContextUser.Name}}</span>
|
|
{{if .EnableFeed}}
|
|
<a href="{{.ContextUser.HomeLink}}.rss"><i class="ui text grey gt-ml-3" data-tooltip-content="{{.locale.Tr "rss_feed"}}">{{svg "octicon-rss" 18}}</i></a>
|
|
{{end}}
|
|
<div class="gt-mt-3">
|
|
<a class="muted" href="{{.ContextUser.HomeLink}}?tab=followers">{{svg "octicon-person" 18 "gt-mr-2"}}{{.NumFollowers}} {{.locale.Tr "user.followers"}}</a> · <a class="muted" href="{{.ContextUser.HomeLink}}?tab=following">{{.NumFollowing}} {{.locale.Tr "user.following"}}</a>
|
|
</div>
|
|
</div>
|
|
<div class="extra content gt-word-break">
|
|
<ul>
|
|
{{if .ContextUser.Location}}
|
|
<li>{{svg "octicon-location"}} {{.ContextUser.Location}}</li>
|
|
{{end}}
|
|
{{if (eq .SignedUserID .ContextUser.ID)}}
|
|
<li>
|
|
{{svg "octicon-mail"}}
|
|
<a href="mailto:{{.ContextUser.Email}}" rel="nofollow">{{.ContextUser.Email}}</a>
|
|
<a href="{{AppSubUrl}}/user/settings#keep-email-private">
|
|
{{if .ShowUserEmail}}
|
|
<i class="ui right" data-tooltip-content="{{.locale.Tr "user.email_visibility.limited"}}">
|
|
{{svg "octicon-unlock"}}
|
|
</i>
|
|
{{else}}
|
|
<i class="ui right" data-tooltip-content="{{.locale.Tr "user.email_visibility.private"}}">
|
|
{{svg "octicon-lock"}}
|
|
</i>
|
|
{{end}}
|
|
</a>
|
|
</li>
|
|
{{else}}
|
|
{{if .ShowUserEmail}}
|
|
<li>
|
|
{{svg "octicon-mail"}}
|
|
<a href="mailto:{{.ContextUser.Email}}" rel="nofollow">{{.ContextUser.Email}}</a>
|
|
</li>
|
|
{{end}}
|
|
{{end}}
|
|
{{if .ContextUser.Website}}
|
|
<li>
|
|
{{svg "octicon-link"}}
|
|
<a target="_blank" rel="noopener noreferrer me" href="{{.ContextUser.Website}}">{{.ContextUser.Website}}</a>
|
|
</li>
|
|
{{end}}
|
|
{{if $.RenderedDescription}}
|
|
<li>
|
|
<div class="render-content markup">{{$.RenderedDescription|Str2html}}</div>
|
|
</li>
|
|
{{end}}
|
|
{{range .OpenIDs}}
|
|
{{if .Show}}
|
|
<li>
|
|
{{svg "fontawesome-openid"}}
|
|
<a target="_blank" rel="noopener noreferrer" href="{{.URI}}">{{.URI}}</a>
|
|
</li>
|
|
{{end}}
|
|
{{end}}
|
|
<li>{{svg "octicon-clock"}} {{.locale.Tr "user.joined_on" (DateTime "short" .ContextUser.CreatedUnix) | Safe}}</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 href="{{.HomeLink}}" data-tooltip-content="{{.Name}}">
|
|
{{avatar $.Context .}}
|
|
</a>
|
|
</li>
|
|
{{end}}
|
|
{{end}}
|
|
</ul>
|
|
</li>
|
|
{{end}}
|
|
{{if .Badges}}
|
|
<li>
|
|
<ul class="user-badges">
|
|
{{range .Badges}}
|
|
<li>
|
|
<img width="64" height="64" src="{{.ImageURL}}" alt="{{.Description}}" data-tooltip-content="{{.Description}}">
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
</li>
|
|
{{end}}
|
|
{{if and .IsSigned (ne .SignedUserID .ContextUser.ID)}}
|
|
<li class="follow">
|
|
{{if $.IsFollowing}}
|
|
<form method="post" action="{{.Link}}?action=unfollow&redirect_to={{$.Link}}">
|
|
{{$.CsrfTokenHtml}}
|
|
<button type="submit" class="ui basic red button">{{svg "octicon-person"}} {{.locale.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"}} {{.locale.Tr "user.follow"}}</button>
|
|
</form>
|
|
{{end}}
|
|
</li>
|
|
{{end}}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="ui eleven wide column">
|
|
<div class="ui secondary stackable pointing tight menu">
|
|
<a class='{{if and (ne .TabName "activity") (ne .TabName "following") (ne .TabName "followers") (ne .TabName "stars") (ne .TabName "watching") (ne .TabName "projects") (ne .TabName "code")}}active {{end}}item' href="{{.ContextUser.HomeLink}}">
|
|
{{svg "octicon-repo"}} {{.locale.Tr "user.repositories"}}
|
|
{{if .ContextUser.NumRepos}}
|
|
<div class="ui small label">{{.ContextUser.NumRepos}}</div>
|
|
{{end}}
|
|
</a>
|
|
<a href="{{.ContextUser.HomeLink}}/-/projects" class="{{if eq .TabName "projects"}}active {{end}}item">
|
|
{{svg "octicon-project-symlink"}} {{.locale.Tr "user.projects"}}
|
|
</a>
|
|
{{if .IsPackageEnabled}}
|
|
<a class='{{if eq .TabName "packages"}}active {{end}}item' href="{{.ContextUser.HomeLink}}/-/packages">
|
|
{{svg "octicon-package"}} {{.locale.Tr "packages.title"}}
|
|
</a>
|
|
{{end}}
|
|
{{if and (not $.UnitTypeCode.UnitGlobalDisabled) .IsRepoIndexerEnabled}}
|
|
<a class='{{if eq .TabName "code"}}active {{end}}item' href="{{.ContextUser.HomeLink}}/-/code">
|
|
{{svg "octicon-code"}} {{.locale.Tr "user.code"}}
|
|
</a>
|
|
{{end}}
|
|
<a class='{{if eq .TabName "activity"}}active {{end}}item' href="{{.ContextUser.HomeLink}}?tab=activity">
|
|
{{svg "octicon-rss"}} {{.locale.Tr "user.activity"}}
|
|
</a>
|
|
{{if not .DisableStars}}
|
|
<a class='{{if eq .TabName "stars"}}active {{end}}item' href="{{.ContextUser.HomeLink}}?tab=stars">
|
|
{{svg "octicon-star"}} {{.locale.Tr "user.starred"}}
|
|
{{if .ContextUser.NumStars}}
|
|
<div class="ui small label">{{.ContextUser.NumStars}}</div>
|
|
{{end}}
|
|
</a>
|
|
{{else}}
|
|
<a class='{{if eq .TabName "watching"}}active {{end}}item' href="{{.ContextUser.HomeLink}}?tab=watching">
|
|
{{svg "octicon-eye"}} {{.locale.Tr "user.watched"}}
|
|
</a>
|
|
{{end}}
|
|
</div>
|
|
|
|
{{if eq .TabName "activity"}}
|
|
{{if .ContextUser.KeepActivityPrivate}}
|
|
<div class="ui info message">
|
|
<p>{{.locale.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" .}}
|