summaryrefslogtreecommitdiffstats
path: root/templates/shared/user
diff options
context:
space:
mode:
authorDaniel Baumann <daniel@debian.org>2024-10-18 20:33:49 +0200
committerDaniel Baumann <daniel@debian.org>2024-10-18 20:33:49 +0200
commitdd136858f1ea40ad3c94191d647487fa4f31926c (patch)
tree58fec94a7b2a12510c9664b21793f1ed560c6518 /templates/shared/user
parentInitial commit. (diff)
downloadforgejo-dd136858f1ea40ad3c94191d647487fa4f31926c.tar.xz
forgejo-dd136858f1ea40ad3c94191d647487fa4f31926c.zip
Adding upstream version 9.0.0.HEADupstream/9.0.0upstreamdebian
Signed-off-by: Daniel Baumann <daniel@debian.org>
Diffstat (limited to 'templates/shared/user')
-rw-r--r--templates/shared/user/authorlink.tmpl1
-rw-r--r--templates/shared/user/avatarlink.tmpl1
-rw-r--r--templates/shared/user/blocked_users.tmpl83
-rw-r--r--templates/shared/user/name.tmpl1
-rw-r--r--templates/shared/user/namelink.tmpl1
-rw-r--r--templates/shared/user/org_profile_avatar.tmpl16
-rw-r--r--templates/shared/user/profile_big_avatar.tmpl129
7 files changed, 232 insertions, 0 deletions
diff --git a/templates/shared/user/authorlink.tmpl b/templates/shared/user/authorlink.tmpl
new file mode 100644
index 0000000..d57a635
--- /dev/null
+++ b/templates/shared/user/authorlink.tmpl
@@ -0,0 +1 @@
+<a class="author text black tw-font-semibold muted"{{if gt .ID 0}} href="{{.HomeLink}}"{{end}}>{{.GetDisplayName}}</a>{{if .IsBot}}<span class="ui basic label tw-p-1">bot</span>{{end}}
diff --git a/templates/shared/user/avatarlink.tmpl b/templates/shared/user/avatarlink.tmpl
new file mode 100644
index 0000000..5e3ed7a
--- /dev/null
+++ b/templates/shared/user/avatarlink.tmpl
@@ -0,0 +1 @@
+<a class="avatar"{{if gt .user.ID 0}} href="{{.user.HomeLink}}"{{end}}>{{ctx.AvatarUtils.Avatar .user}}</a>
diff --git a/templates/shared/user/blocked_users.tmpl b/templates/shared/user/blocked_users.tmpl
new file mode 100644
index 0000000..e83a039
--- /dev/null
+++ b/templates/shared/user/blocked_users.tmpl
@@ -0,0 +1,83 @@
+<h4 class="ui top attached header">
+ {{ctx.Locale.Tr "user.block.title"}}
+</h4>
+<div class="ui attached segment">
+ <p>{{ctx.Locale.Tr "user.block.info_1"}}</p>
+ <ul>
+ <li>{{ctx.Locale.Tr "user.block.info_2"}}</li>
+ <li>{{ctx.Locale.Tr "user.block.info_3"}}</li>
+ <li>{{ctx.Locale.Tr "user.block.info_4"}}</li>
+ <li>{{ctx.Locale.Tr "user.block.info_5"}}</li>
+ <li>{{ctx.Locale.Tr "user.block.info_6"}}</li>
+ <li>{{ctx.Locale.Tr "user.block.info_7"}}</li>
+ </ul>
+</div>
+<div class="ui segment">
+ <form class="ui form ignore-dirty" action="{{$.Link}}" method="post">
+ {{.CsrfTokenHtml}}
+ <input type="hidden" name="action" value="block" />
+ <div id="search-user-box" class="field ui fluid search input">
+ <input class="prompt tw-mr-2" name="blockee" placeholder="{{ctx.Locale.Tr "search.user_kind"}}" autocomplete="off" required>
+ <button class="ui red button">{{ctx.Locale.Tr "user.block.block"}}</button>
+ </div>
+ <div class="field">
+ <label>{{ctx.Locale.Tr "user.block.note.title"}}</label>
+ <input name="note">
+ <p class="help">{{ctx.Locale.Tr "user.block.note.info"}}</p>
+ </div>
+ </form>
+</div>
+<h4 class="ui top attached header">
+ {{ctx.Locale.Tr "user.block.list"}}
+</h4>
+<div class="ui attached segment">
+ <div class="flex-list">
+ {{range .UserBlocks}}
+ <div class="flex-item">
+ <div class="flex-item-leading">
+ {{ctx.AvatarUtils.Avatar .Blockee}}
+ </div>
+ <div class="flex-item-main">
+ <div class="flex-item-title">
+ <a class="item" href="{{.Blockee.HTMLURL}}">{{.Blockee.GetDisplayName}}</a>
+ </div>
+ {{if .Note}}
+ <div class="flex-item-body">
+ <i>{{ctx.Locale.Tr "user.block.note"}}:</i> {{.Note}}
+ </div>
+ {{end}}
+ </div>
+ <div class="flex-item-trailing">
+ <button class="ui compact mini button show-modal" data-modal="#block-user-note-modal" data-modal-modal-blockee="{{.Blockee.Name}}" data-modal-modal-note="{{.Note}}">{{ctx.Locale.Tr "user.block.note.edit"}}</button>
+ <form action="{{$.Link}}" method="post">
+ {{$.CsrfTokenHtml}}
+ <input type="hidden" name="action" value="unblock" />
+ <input type="hidden" name="blockee" value="{{.Blockee.Name}}" />
+ <button class="ui compact mini button">{{ctx.Locale.Tr "user.block.unblock"}}</button>
+ </form>
+ </div>
+ </div>
+ {{else}}
+ <div class="item">{{ctx.Locale.Tr "user.block.list.none"}}</div>
+ {{end}}
+ </div>
+</div>
+<div class="ui small modal" id="block-user-note-modal">
+ <div class="header">{{ctx.Locale.Tr "user.block.note.edit"}}</div>
+ <div class="content">
+ <form class="ui form" action="{{$.Link}}" method="post">
+ {{.CsrfTokenHtml}}
+ <input type="hidden" name="action" value="note" />
+ <input type="hidden" name="blockee" class="modal-blockee" />
+ <div class="field">
+ <label>{{ctx.Locale.Tr "user.block.note.title"}}</label>
+ <input name="note" class="modal-note" />
+ <p class="help">{{ctx.Locale.Tr "user.block.note.info"}}</p>
+ </div>
+ <div class="text right actions">
+ <button class="ui cancel button">{{ctx.Locale.Tr "cancel"}}</button>
+ <button class="ui primary button">{{ctx.Locale.Tr "save"}}</button>
+ </div>
+ </form>
+ </div>
+</div>
diff --git a/templates/shared/user/name.tmpl b/templates/shared/user/name.tmpl
new file mode 100644
index 0000000..896349f
--- /dev/null
+++ b/templates/shared/user/name.tmpl
@@ -0,0 +1 @@
+<a class="text muted" href="{{.HomeLink}}">{{.Name}}{{if .FullName}} ({{.FullName}}){{end}}</a>
diff --git a/templates/shared/user/namelink.tmpl b/templates/shared/user/namelink.tmpl
new file mode 100644
index 0000000..a122f4f
--- /dev/null
+++ b/templates/shared/user/namelink.tmpl
@@ -0,0 +1 @@
+<a{{if gt .ID 0}} href="{{.HomeLink}}"{{end}}>{{.GetDisplayName}}</a>
diff --git a/templates/shared/user/org_profile_avatar.tmpl b/templates/shared/user/org_profile_avatar.tmpl
new file mode 100644
index 0000000..c0abcab
--- /dev/null
+++ b/templates/shared/user/org_profile_avatar.tmpl
@@ -0,0 +1,16 @@
+{{with .ContextUser}}
+ <div class="ui container">
+ <div class="ui vertically grid head">
+ <div class="column">
+ <div class="ui header tw-flex tw-items-center tw-break-anywhere">
+ {{ctx.AvatarUtils.Avatar . 100}}
+ <span class="text grey"><a class="muted" href="{{.HomeLink}}">{{.DisplayName}}</a></span>
+ <span class="org-visibility">
+ {{if .Visibility.IsLimited}}<div class="ui medium basic horizontal label">{{ctx.Locale.Tr "org.settings.visibility.limited_shortname"}}</div>{{end}}
+ {{if .Visibility.IsPrivate}}<div class="ui medium basic horizontal label">{{ctx.Locale.Tr "org.settings.visibility.private_shortname"}}</div>{{end}}
+ </span>
+ </div>
+ </div>
+ </div>
+ </div>
+{{end}}
diff --git a/templates/shared/user/profile_big_avatar.tmpl b/templates/shared/user/profile_big_avatar.tmpl
new file mode 100644
index 0000000..d3033b4
--- /dev/null
+++ b/templates/shared/user/profile_big_avatar.tmpl
@@ -0,0 +1,129 @@
+{{if .IsHTMX}}
+ {{template "base/alert" .}}
+{{end}}
+<div id="profile-avatar-card" class="ui card" hx-swap="morph">
+ <div id="profile-avatar" class="content tw-flex">
+ {{if eq .SignedUserID .ContextUser.ID}}
+ <a class="image" href="{{AppSubUrl}}/user/settings" data-tooltip-content="{{ctx.Locale.Tr "user.change_avatar"}}">
+ {{/* the size doesn't take affect (and no need to take affect), image size(width) should be controlled by the parent container since this is not a flex layout*/}}
+ {{ctx.AvatarUtils.Avatar .ContextUser 256}}
+ </a>
+ {{else}}
+ <span class="image">
+ {{ctx.AvatarUtils.Avatar .ContextUser 256}}
+ </span>
+ {{end}}
+ </div>
+ <div class="content tw-break-anywhere profile-avatar-name">
+ {{if .ContextUser.FullName}}<span class="header text center">{{.ContextUser.FullName}}</span>{{end}}
+ <span class="username text center">{{.ContextUser.Name}}{{if .ContextUser.Pronouns}} · {{.ContextUser.Pronouns}}{{end}} {{if .IsAdmin}}
+ <a class="muted" href="{{AppSubUrl}}/admin/users/{{.ContextUser.ID}}" data-tooltip-content="{{ctx.Locale.Tr "admin.users.details"}}">
+ {{svg "octicon-gear" 18}}
+ </a>
+ {{end}}</span>
+ <div class="tw-mt-2">
+ <a class="muted" href="{{.ContextUser.HomeLink}}?tab=followers">{{svg "octicon-people" 18 "tw-mr-1"}}{{ctx.Locale.TrN .NumFollowers "user.followers_one" "user.followers_few" .NumFollowers}}</a> · <a class="muted" href="{{.ContextUser.HomeLink}}?tab=following">{{ctx.Locale.TrN .NumFollowing "user.following_one" "user.following_few" .NumFollowing}}</a>
+ {{if and .EnableFeed (or .IsAdmin (eq .SignedUserID .ContextUser.ID) (not .ContextUser.KeepActivityPrivate))}}
+ <a href="{{.ContextUser.HomeLink}}.rss"><i class="ui text grey tw-ml-2" data-tooltip-content="{{ctx.Locale.Tr "rss_feed"}}">{{svg "octicon-rss" 18}}</i></a>
+ {{end}}
+ </div>
+ </div>
+ <div class="extra content tw-break-anywhere">
+ <ul>
+ {{if .ContextUser.Location}}
+ <li>
+ {{svg "octicon-location"}}
+ <span class="tw-flex-1">{{.ContextUser.Location}}</span>
+ {{if .ContextUserLocationMapURL}}
+ <a href="{{.ContextUserLocationMapURL}}" rel="nofollow noreferrer" data-tooltip-content="{{ctx.Locale.Tr "user.show_on_map"}}">
+ {{svg "octicon-link-external"}}
+ </a>
+ {{end}}
+ </li>
+ {{end}}
+ {{if .ShowUserEmail}}
+ <li>
+ {{svg "octicon-mail"}}
+ <a class="tw-flex-1" href="mailto:{{.ContextUser.Email}}" rel="nofollow">{{.ContextUser.Email}}</a>
+ {{if (eq .SignedUserID .ContextUser.ID)}}
+ <a href="{{AppSubUrl}}/user/settings#privacy-user-settings">
+ <i data-tooltip-content="{{ctx.Locale.Tr "user.email_visibility.limited"}}">
+ {{svg "octicon-unlock"}}
+ </i>
+ </a>
+ {{end}}
+ </li>
+ {{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}}</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-calendar"}} <span>{{ctx.Locale.Tr "user.joined_on" (DateTime "short" .ContextUser.CreatedUnix)}}</span></li>
+ {{if and .Orgs .HasOrgsVisible}}
+ <li>
+ <ul class="user-orgs">
+ {{range .Orgs}}
+ {{if (or .Visibility.IsPublic (and ($.SignedUser) (or .Visibility.IsLimited (and (.HasMemberWithUserID ctx $.SignedUserID) .Visibility.IsPrivate) ($.IsAdmin))))}}
+ <li>
+ <a href="{{.HomeLink}}" data-tooltip-content="{{.Name}}">
+ {{ctx.AvatarUtils.Avatar .}}
+ </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" hx-target="#profile-avatar-card" hx-indicator="#profile-avatar-card">
+ {{if $.IsFollowing}}
+ <button hx-post="{{.ContextUser.HomeLink}}?action=unfollow" class="ui basic red button">
+ {{svg "octicon-person"}} {{ctx.Locale.Tr "user.unfollow"}}
+ </button>
+ {{else}}
+ <button hx-post="{{.ContextUser.HomeLink}}?action=follow" class="ui basic primary button">
+ {{svg "octicon-person"}} {{ctx.Locale.Tr "user.follow"}}
+ </button>
+ {{end}}
+ </li>
+ <li class="block" hx-target="#profile-avatar-card" hx-indicator="#profile-avatar-card">
+ {{if $.IsBlocked}}
+ <button class="ui basic red button" hx-post="{{.ContextUser.HomeLink}}?action=unblock">
+ {{svg "octicon-person"}} {{ctx.Locale.Tr "user.unblock"}}
+ </button>
+ {{else}}
+ <button type="submit" class="ui basic orange button" data-modal-id="block-user" hx-post="{{.ContextUser.HomeLink}}?action=block" hx-confirm="-">
+ {{svg "octicon-blocked"}} {{ctx.Locale.Tr "user.block"}}
+ </button>
+ {{end}}
+ </li>
+ {{end}}
+ </ul>
+ </div>
+</div>