feat: @提及功能优化 + 默认头像改用SVG图标
- 评论区有效@提及渲染为蓝色链接跳转/space/{uid},无效@保持纯文本
- 输入@触发悬浮窗,根据输入实时搜索用户(含头像+等级)
- 无匹配时显示未搜索到用户,选中后插入为@用户名 格式(尾部空格)
- 悬浮窗定位于输入光标上方,不遮挡输入内容
- 后端Comment新增Mentions字段,批量加载提及映射供前端判断
- SearchUsers/parseMentions 统一限制LV2+用户
- 所有默认头像由首字符文字改为统一SVG人形图标(nav/home/space/mention等7处)
This commit is contained in:
@ -65,9 +65,8 @@
|
||||
{{if .IsLoggedIn}}
|
||||
{{if .Avatar}}
|
||||
<img src="{{.Avatar}}" alt="{{.Username}}" class="user-avatar-img">
|
||||
<div class="user-avatar-fallback" style="display:none">{{substr .Username 0 1}}</div>
|
||||
{{else}}
|
||||
<div class="user-avatar-fallback">{{substr .Username 0 1}}</div>
|
||||
<div class="user-avatar-fallback"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg></div>
|
||||
{{end}}
|
||||
<h3 class="user-card-name">{{.Username}}</h3>
|
||||
<p class="user-card-desc">欢迎加入 MetaLab</p>
|
||||
|
||||
@ -21,9 +21,8 @@
|
||||
<a href="/space" class="nav-avatar-link">
|
||||
{{if .Avatar}}
|
||||
<img src="{{.Avatar}}" alt="" class="nav-avatar">
|
||||
<span class="nav-avatar nav-avatar-default" style="display:none">{{substr .Username 0 1}}</span>
|
||||
{{else}}
|
||||
<span class="nav-avatar nav-avatar-default">{{substr .Username 0 1}}</span>
|
||||
<span class="nav-avatar nav-avatar-default"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg></span>
|
||||
{{end}}
|
||||
</a>
|
||||
<div class="nav-dropdown">
|
||||
@ -31,9 +30,8 @@
|
||||
<div class="nav-dropdown-avatar">
|
||||
{{if .Avatar}}
|
||||
<img src="{{.Avatar}}" alt="">
|
||||
<span style="display:none">{{substr .Username 0 1}}</span>
|
||||
{{else}}
|
||||
<span>{{substr .Username 0 1}}</span>
|
||||
<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg>
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="nav-dropdown-meta">
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
{{if .SpaceUser.Avatar}}
|
||||
<img src="{{.SpaceUser.Avatar}}" alt="{{.SpaceUser.Username}}" class="space-avatar-img">
|
||||
{{else}}
|
||||
<div class="space-avatar-placeholder">{{slice .SpaceUser.Username 0 1}}</div>
|
||||
<div class="space-avatar-placeholder"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg></div>
|
||||
{{end}}
|
||||
</a>
|
||||
<div class="space-header-info">
|
||||
@ -225,7 +225,7 @@
|
||||
{{if $item.FolloweeAvatar}}
|
||||
<img src="{{$item.FolloweeAvatar}}" alt="{{$item.FolloweeUsername}}" class="space-user-avatar-img">
|
||||
{{else}}
|
||||
<div class="space-user-avatar-placeholder">{{slice $item.FolloweeUsername 0 1}}</div>
|
||||
<div class="space-user-avatar-placeholder"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg></div>
|
||||
{{end}}
|
||||
</a>
|
||||
<div class="space-user-info">
|
||||
@ -293,7 +293,7 @@
|
||||
{{if $item.FollowerAvatar}}
|
||||
<img src="{{$item.FollowerAvatar}}" alt="{{$item.FollowerUsername}}" class="space-user-avatar-img">
|
||||
{{else}}
|
||||
<div class="space-user-avatar-placeholder">{{slice $item.FollowerUsername 0 1}}</div>
|
||||
<div class="space-user-avatar-placeholder"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg></div>
|
||||
{{end}}
|
||||
</a>
|
||||
<div class="space-user-info">
|
||||
|
||||
Reference in New Issue
Block a user