New plugin API: addUserBadge
This commit is contained in:
parent
be9f6011bb
commit
e8108959e3
13
app/Events/RenderingBadges.php
Normal file
13
app/Events/RenderingBadges.php
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
|
class RenderingBadges extends Event
|
||||||
|
{
|
||||||
|
public $badges;
|
||||||
|
|
||||||
|
public function __construct(array &$badges)
|
||||||
|
{
|
||||||
|
$this->badges = &$badges;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -53,8 +53,6 @@ class Hook
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add routes. A router instance will be passed to the given callback.
|
* Add routes. A router instance will be passed to the given callback.
|
||||||
*
|
|
||||||
* @param Closure $callback
|
|
||||||
*/
|
*/
|
||||||
public static function addRoute(Closure $callback): void
|
public static function addRoute(Closure $callback): void
|
||||||
{
|
{
|
||||||
|
|
@ -118,4 +116,14 @@ class Hook
|
||||||
}
|
}
|
||||||
}, $priority);
|
}, $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];
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
- Added configurable "Explore" menu.
|
- Added configurable "Explore" menu.
|
||||||
- Custom `PLUGINS_DIR` with relative path is allowed.
|
- Custom `PLUGINS_DIR` with relative path is allowed.
|
||||||
- Added link for editing announcement.
|
- 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
|
## Tweaked
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
- 添加可自定义的「浏览」菜单
|
- 添加可自定义的「浏览」菜单
|
||||||
- 允许在 `PLUGINS_DIR` 配置项中使用相对路径
|
- 允许在 `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)
|
||||||
|
|
||||||
## 调整
|
## 调整
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,11 @@ $roles = [
|
||||||
];
|
];
|
||||||
$role = $roles[$user->permission];
|
$role = $roles[$user->permission];
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
|
@php
|
||||||
|
$badges = [];
|
||||||
|
event(new \App\Events\RenderingBadges($badges));
|
||||||
|
@endphp
|
||||||
<div class="user-panel">
|
<div class="user-panel">
|
||||||
<div class="pull-left image">
|
<div class="pull-left image">
|
||||||
<img src="{{ url("avatar/45/".base64_encode($user->email).'.png?tid='.$user->avatar) }}" alt="User Image">
|
<img src="{{ url("avatar/45/".base64_encode($user->email).'.png?tid='.$user->avatar) }}" alt="User Image">
|
||||||
|
|
@ -14,5 +19,15 @@ $role = $roles[$user->permission];
|
||||||
<div class="pull-left info">
|
<div class="pull-left info">
|
||||||
<p class="nickname">{{ $user->nickname ?? $user->email }}</p>
|
<p class="nickname">{{ $user->nickname ?? $user->email }}</p>
|
||||||
<i class="fas fa-circle text-success"></i> @lang("admin.users.status.$role")
|
<i class="fas fa-circle text-success"></i> @lang("admin.users.status.$role")
|
||||||
|
@if (count($badges) === 1)
|
||||||
|
<small class="label bg-{{ $badges[0][1] }}">{{ $badges[0][0] }}</small>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@if (count($badges) > 1)
|
||||||
|
<div class="user-panel" style="padding-top: 0">
|
||||||
|
@foreach ($badges as $badge)
|
||||||
|
<small class="label bg-{{ $badge[1] }}">{{ $badge[0] }}</small>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
|
||||||
|
|
@ -84,4 +84,12 @@ class HookTest extends TestCase
|
||||||
$this->get('/skinlib')
|
$this->get('/skinlib')
|
||||||
->assertSee('<script src="/script/pattern"></script>');
|
->assertSee('<script src="/script/pattern"></script>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAddUserBadge()
|
||||||
|
{
|
||||||
|
Hook::addUserBadge('hi', 'green');
|
||||||
|
$this->actAs('normal')
|
||||||
|
->get('/user')
|
||||||
|
->assertSee('<small class="label bg-green">hi</small>');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user