andreaselia/laravel-firefly

为 Laravel 提供的简单论坛包。

v1.9.1 2023-02-16 00:43 UTC

This package is auto-updated.

Last update: 2024-08-28 22:12:02 UTC


README

Latest Stable Version PHP version License StyleCI

Laravel Firefly Logo

Laravel Firefly

Firefly 是一个为 Laravel 设计的简单论坛包,旨在便于使用和扩展。

该包包含前端,但通过发布包的资产,您可以灵活地自定义可用的模板,使其与您的当前应用程序模板相匹配,如果您需要的话。

安装

安装包

composer require andreaselia/laravel-firefly

发布包文件(配置、迁移、资产和视图)

php artisan vendor:publish --provider="Firefly\FireflyServiceProvider"

运行迁移

php artisan migrate

将 FireflyUser 特性添加到您的 User 模型

<?php

namespace App\Models;

use Firefly\Traits\FireflyUser;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use HasFactory, Notifiable, FireflyUser;
}

可选功能

关注者

您可以通过在配置中添加/更新标志来启用用户“关注”讨论

'features' => [
    'watchers' => true,
    // ...
],

这将为关注者提供在新帖子发布在讨论中的通知

所见即所得编辑器

所见即所得编辑器使用 Quill 库,文档可以在这里找到。

您可以通过在配置中添加/更新标志来启用所见即所得编辑器

'features' => [
    // ...
    'wysiwyg' => [
        'enabled' => true,
        'theme' => 'snow', // More about themes at https://quilljs.com/docs/themes/
        'toolbar_options' => [ // Docs at https://quilljs.com/docs/modules/toolbar/
            ['bold', 'italic', 'underline', 'strike'],
            [['list' => 'ordered'], ['list'=> 'bullet']],
            ['clean'],
        ],
    ],
    // ...
],

雪主题和基本编辑控件在配置中提供,但可以根据您的需求进行修改。

正确帖子

您可以通过将帖子标记为“正确”来启用标记帖子,表示它回答了问题或是一个推广帖子。正确的帖子将被提升到顶部,直接在初始帖子下方。

注意:如果您在现有安装上启用此功能,请确保运行数据库迁移,然后运行 posts:set-initial-flag 命令,以使数据库保持最新状态。这也引入了两个新的策略,markunmark

'features' => [
    'correct_posts' => true,
    // ...
],

反应

启用反应允许用户使用表情符号对帖子进行反应。这类似于 Discord、Slack 和其他流行的消息系统。点击反应将将其添加到帖子中。再次点击相同的反应将移除它。

如果您正在运行较旧版本或较旧的 MySQL 字符集或其他不支持本地表情符号的数据库,启用 convert 标志将转换表情符号到和从 HTML 实体,以便它们在后端正确存储。如果您正在使用 utf8mb4 字符集或更新的版本,则不需要此操作。

注意:如果您在现有安装上启用此功能,请确保运行数据库迁移。这也引入了一个新的策略 react

'features' => [
    'reactions' => [
        'enabled' => true,
        'convert' => true
     ]
    // ...
],

策略

默认情况下,Firefly 策略非常宽容。为了为您自己的应用程序自定义权限,请使用您的 AuthServiceProvider 文件,按照以下步骤覆盖策略。

  1. 通过 php artisan make:policy MyGroupPolicy 创建您的策略文件
  2. 在生成的类中扩展基本 Firefly 策略
<?php

namespace App\Policies;

use Illuminate\Auth\Access\HandlesAuthorization;
use Firefly\Policies\GroupPolicy;

class MyGroupPolicy extends GroupPolicy
{
    // ...
  1. 实现您想要的策略(使用 vendor/andreaselia/laravel-firefly/src/Policies 中的策略进行参考)
  2. 按照如下方式更新 app/Providers/AuthServiceProvider.php 文件中的策略数组
<?php

use Firefly\Models\Group;

// ...

protected $policies = [
    Group::class => 'App\Policies\MyGroupPolicy',
];

有关 Laravel 策略的更多信息,请访问这里

贡献

欢迎您提交拉取请求,或者如果您不想这样做 - 创建一个问题,以便其他人可以将其捡起。