forest-lynx / moonshine-resource-lock
Requires
- php: ^8.1
- moonshine/moonshine: ^3.0
Conflicts
- moonshine/moonshine: <3.0
This package is auto-updated.
Last update: 2024-10-02 07:24:24 UTC
README
英文文档在此
为MoonShine管理面板添加资源锁定功能。当用户编辑条目时,资源将被锁定,以防止其他用户同时进行更改。
内容
安装
安装命令
composer require forest-lynx/moonshine-resource-lock
然后运行安装命令
php artisan resource-lock:install
命令将运行迁移,并提示发布配置文件和语言文件。
使用
package resource-lock
允许锁定资源并防止其他用户编辑。目前,锁定仅适用于在单独页面模式下编辑资源。
激活资源锁定
要激活资源锁定,需要在 ModelResource
中添加 WithResourceLock
特性。
<?php //... use ForestLynx\MoonShine\Traits\WithResourceLock; class PostResource extends ModelResource { use WithResourceLock; //...
现在您的资源可以被锁定。
配置
资源锁定时间。
默认情况下,资源将被锁定10分钟,或直到保存,以先到者为准。锁定时间由配置文件中的 lock_time
参数控制,其值以分钟为单位。
显示锁定资源的用户信息
默认情况下,在模态窗口中显示锁定资源的用户信息。
显示用户信息的参数是配置文件中的 show_owner_modal
(默认值为 true
)。
在模态窗口中仅显示锁定资源的用户名。要显示其他信息,您可以创建一个继承自 ResourceLockOwnerAction
的类,并将其注册到配置文件中。这样,您就可以在模态窗口中配置显示更多关于锁定用户的详细信息。例如
<?php namespace App\Actions; use ForestLynx\ResourceLock\Actions\ResourceLockOwnerAction; class CustomActions extends ResourceLockOwnerAction { public function execute(Model|Authenticatable $user): ?string { return $user->email; } }
然后将其添加到配置文件中
//... -'resource_lock_owner' => \ForestLynx\MoonShine\Actions\ResourceLockOwnerAction::class +'resource_lock_owner' => \App\Actions\CustomActions::class //...
资源锁定重定向
默认情况下,当您在锁定资源的模态窗口中点击“后退”按钮时,会跳转到资源索引页面。但是,您可以通过在资源中重定义 getReturnUrlResourceLock
方法来更改重定向页面的URL。
<?php //... class PostResource extends ModelResource { //... use WithResourceLock; //... protected function getReturnUrlResourceLock(): string { return 'https://...'; } //... }
在索引页面上显示锁定资源的详细信息
默认情况下,在资源索引页面上显示资源被其他用户锁定的信息。这以特殊图标的形式显示:
要隐藏资源索引页面上的此信息,可以在配置文件中将 resource_lock_to_index_page
参数设置为 false
。根据您的需求,您可以通过在资源中声明 isDisplayOnIndexPage()
方法来配置在资源索引页面上显示锁定资源的详细信息。此方法应返回逻辑值 true
或 false
。例如
<?php //... class PostResource extends ModelResource { //... use WithResourceLock; //... public function isDisplayOnIndexPage(): bool { return false; } //... }
注意
目前这仅适用于通过 TableBuilder
显示的资源。
显示所有锁定
在此包中可以配置显示所有锁定资源。
在MoonShine管理面板菜单中使用资源名称
ForestLynx\MoonShine\Resources\LockResource
.
删除记录将导致资源解锁。
要了解更多关于可用显示选项的信息,请参阅MoonShine管理面板文档 MoonShine
清除旧的资源阻止记录
要清除数据库表中的所有旧资源阻止记录,请运行以下命令:
php artisan resource-lock:clear-old
发布配置和语言文件
要发布配置文件,请运行以下命令:
php artisan vendor:publish --tag=resource-lock-config
有关包配置的详细信息。
要发布语言文件,请运行以下命令:
php artisan vendor:publish --tag=resource-lock-lang