awcodes/recently

轻松跟踪和访问您在filament面板中最近查看的记录。

资助包维护!
awcodes

v1.0.2 2024-09-11 12:52 UTC

This package is auto-updated.

Last update: 2024-09-11 12:53:49 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

screenshots of palette in a filament panel

轻松跟踪和访问您在filament面板中最近查看的记录。

安装

您可以通过composer安装此包,然后运行安装命令并按照提示操作。

composer require awcodes/recently
php artisan recently:install

为了与Filament的主题方法保持一致,您需要使用自定义主题才能使用此插件。

重要

如果您还没有设置自定义主题并且正在使用面板,请首先遵循Filament文档中的说明。以下内容适用于面板包和独立表单包。

将插件的视图添加到您的tailwind.config.js文件中。

content: [
    './vendor/awcodes/recently/resources/**/*.blade.php',
]

用法

此插件在您的filament面板中添加了“最近查看”功能,使用户能够快速访问他们最近交互过的资源。它跟踪已启用的资源的EditRecordViewRecord页面的查看/访问。

注册插件

use Awcodes\Recently\RecentlyPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            RecentlyPlugin::make(),
        ])
}

可能的冲突

如果您正在使用QuickCreatePluginOverlookPlugin,您需要从它们中排除RecentEntryResource

OverlookPlugin::make()
    ->excludes([
        RecentEntryResource::class,
    ]),
QuickCreatePlugin::make()
    ->excludes([
        RecentEntryResource::class,
    ]),

跟踪最近

要记录最近的编辑/查看,请将特性包含在您想要监控的资源EditRecordViewRecord页面中。

最近编辑:

use Awcodes\Recently\Concerns\HasRecentHistoryRecorder;

class EditUser extends EditRecord
{
    use HasRecentHistoryRecorder;

    protected static string $resource = UserResource::class;
}

最近查看:

class ViewUser extends ViewRecord
{
    use HasRecentHistoryRecorder;

    protected static string $resource = UserResource::class;
}

配置

您可以通过全局的config文件或按面板来启用/禁用或自定义插件的功能。

// config/recently.php
return [
    'user_model' => App\Models\User::class,
    'max_items' => 20,
    'width' => 'xs',
    'global_search' => true,
    'menu' => true,
    'icon' => 'heroicon-o-arrow-uturn-left',
];

全局搜索

默认情况下,插件将最近访问/查看的列表作为全局搜索结果的一部分列出。要禁用此功能,请从配置中将global_search选项设置为false,或通过按面板传递falseglobalSearch()方法。

use Awcodes\Recently\RecentlyPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            RecentlyPlugin::make()
                ->globalSearch(condition: false),
        ])
}

菜单

默认情况下,插件将最近访问/查看的列表作为顶栏中的下拉菜单列出,使用PanelsRenderHook::USER_MENU_BEFORE渲染钩子。要禁用此功能,请将配置中的menu选项设置为false,或通过按面板传递falsemenu()方法。

use Awcodes\Recently\RecentlyPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            RecentlyPlugin::make()
                ->menu(condition: false),
        ])
}

外观

图标

为菜单设置自定义的icon

use Awcodes\Recently\RecentlyPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            RecentlyPlugin::make()
                ->icon('heroicon-o-clock'),
        ]);
}

圆形

菜单图标是圆形的,您可以通过将false传递到rounded()方法来选择退出。

use Awcodes\Recently\RecentlyPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            RecentlyPlugin::make()
                ->rounded(condition: false),
        ]);
}

标签

菜单没有标签,但您可以通过将字符串传递到label()方法来自定义label

use Awcodes\Recently\RecentlyPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            RecentlyPlugin::make()
                ->label('Recently Viewed Records'),
        ]);
}

宽度

下拉菜单使用filament的dropdown blade component,因此您可以使用任何可用的选项,默认为xs

use Awcodes\Recently\RecentlyPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            RecentlyPlugin::make()
                ->width('sm'),
        ]);
}

最大项目数

指定在菜单中显示的最近查看项目的最大数量。

use Awcodes\Recently\RecentlyPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            RecentlyPlugin::make()
                ->maxItems(10),
        ]);
}

渲染钩子

插件将使用PanelsRenderHook::USER_MENU_BEFORE钩子渲染菜单。但是,您可以通过提供其他filament Render Hooks之一来使用renderUsingHook()方法进行更改。

use Awcodes\Recently\RecentlyPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            RecentlyPlugin::make()
                ->renderUsingHook('PanelsRenderHook::USER_MENU_AFTER'),
        ]);
}

测试

composer test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

如果您想为此插件做出贡献,您可能希望在真实的Filament项目中对其进行测试。

  • 将此存储库分支到您的GitHub账户。
  • 在本地创建一个Filament应用程序。
  • 在 Filament 应用程序的根目录中克隆您的分支。
  • /recently 目录下,为您的修复创建一个分支,例如 fix/error-message

在应用程序的 composer.json 中安装插件

"require": {
    "awcodes/recently": "dev-fix/error-message as main-dev",
},
"repositories": [
    {
        "type": "path",
        "url": "recently"
    }
]

现在,运行 composer update

有关详细信息,请参阅 贡献指南

安全漏洞

请查阅我们的安全策略,了解如何报告安全漏洞。

致谢

许可协议

MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件