diff --git a/app/Events/RenderingBadges.php b/app/Events/RenderingBadges.php new file mode 100644 index 00000000..4594d786 --- /dev/null +++ b/app/Events/RenderingBadges.php @@ -0,0 +1,13 @@ +badges = &$badges; + } +} diff --git a/app/Services/Hook.php b/app/Services/Hook.php index 5900e540..6b60c721 100644 --- a/app/Services/Hook.php +++ b/app/Services/Hook.php @@ -53,8 +53,6 @@ class Hook /** * Add routes. A router instance will be passed to the given callback. - * - * @param Closure $callback */ public static function addRoute(Closure $callback): void { @@ -118,4 +116,14 @@ class Hook } }, $priority); } + + public static function addUserBadge(string $text, $color = 'primary'): void + { + Event::listen( + Events\RenderingBadges::class, + function (Events\RenderingBadges $event) use ($text, $color) { + $event->badges[] = [$text, $color]; + } + ); + } } diff --git a/resources/misc/changelogs/en/4.3.0.md b/resources/misc/changelogs/en/4.3.0.md index e162278f..2b265caa 100644 --- a/resources/misc/changelogs/en/4.3.0.md +++ b/resources/misc/changelogs/en/4.3.0.md @@ -5,6 +5,7 @@ - Added configurable "Explore" menu. - Custom `PLUGINS_DIR` with relative path is allowed. - Added link for editing announcement. +- New plugin API: [`Hook::addUserBadge`](https://bs-plugin.netlify.com/guide/bootstrap.html#%E6%98%BE%E7%A4%BA%E7%94%A8%E6%88%B7-badge). ## Tweaked diff --git a/resources/misc/changelogs/zh_CN/4.3.0.md b/resources/misc/changelogs/zh_CN/4.3.0.md index a23d1001..adbcc6f2 100644 --- a/resources/misc/changelogs/zh_CN/4.3.0.md +++ b/resources/misc/changelogs/zh_CN/4.3.0.md @@ -5,6 +5,7 @@ - 添加可自定义的「浏览」菜单 - 允许在 `PLUGINS_DIR` 配置项中使用相对路径 - 添加「编辑公告」的链接 +- 新插件 API:[`Hook::addUserBadge`](https://bs-plugin.netlify.com/guide/bootstrap.html#%E6%98%BE%E7%A4%BA%E7%94%A8%E6%88%B7-badge) ## 调整 diff --git a/resources/views/common/user-panel.blade.php b/resources/views/common/user-panel.blade.php index 82c07984..59399d8c 100644 --- a/resources/views/common/user-panel.blade.php +++ b/resources/views/common/user-panel.blade.php @@ -7,6 +7,11 @@ $roles = [ ]; $role = $roles[$user->permission]; @endphp + +@php + $badges = []; + event(new \App\Events\RenderingBadges($badges)); +@endphp
{{ $user->nickname ?? $user->email }}
@lang("admin.users.status.$role") + @if (count($badges) === 1) + {{ $badges[0][0] }} + @endif