forest-lynx/moonshine-resource-lock

2.0.0-beta 2024-09-27 10:10 UTC

This package is auto-updated.

Last update: 2024-10-02 07:24:24 UTC


README

Latest Stable Version Total Downloads Software License
Laravel PHP PHP

英文文档在此

为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;
//...

现在您的资源可以被锁定。

配置

preview

资源锁定时间。

默认情况下,资源将被锁定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://...';
    }
    //...
}
在索引页面上显示锁定资源的详细信息

默认情况下,在资源索引页面上显示资源被其他用户锁定的信息。这以特殊图标的形式显示:preview

要隐藏资源索引页面上的此信息,可以在配置文件中将 resource_lock_to_index_page 参数设置为 false。根据您的需求,您可以通过在资源中声明 isDisplayOnIndexPage() 方法来配置在资源索引页面上显示锁定资源的详细信息。此方法应返回逻辑值 truefalse。例如

<?php
//...
class PostResource extends ModelResource
{
    //...
    use WithResourceLock;
    //...
    public function isDisplayOnIndexPage(): bool
    {
        return false;
    }
    //...
}

注意

目前这仅适用于通过 TableBuilder 显示的资源。

显示所有锁定

在此包中可以配置显示所有锁定资源。

preview

在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

许可证

MIT许可.