Screenshot

Filament Documents Editor

Latest Stable Version License Downloads

Manage your documents and contracts all in one place with template builder

Features

  • [x] Generate Documents From Template
  • [x] Build Template using Tiptop Editor
  • [x] Add Custom Vars By Facade
  • [x] Generate Documents Action
  • [x] Documents Filter By Template
  • [x] Print Document or Export as PDF
  • [x] Documents Relation Manager

Screenshots

Documents Create Document Documents Filters Print Document Templates Create Template Edit Template Edit Template Vars Edit Template Icons Document Action Document Relation Manager Generate Document Generate Document Notification

Installation

composer require tomatophp/filament-docs

after install your package please run this command

php artisan filament-docs:install

if you are not using this package as a plugin please register the plugin on /app/Providers/Filament/AdminPanelProvider.php

->plugin(
    \TomatoPHP\FilamentDocs\FilamentDocsPlugin::make()
)

Using

you can add the action to any table like this

use TomatoPHP\FilamentDocs\Filament\Actions\DocumentAction;

DocumentAction::make()
    ->vars(fn($record) => [
        DocsVar::make('$ACCOUNT_NAME')
            ->value($record->name),
        DocsVar::make('$ACCOUNT_EMAIL')
            ->value($record->email),
        DocsVar::make('$ACCOUNT_PHONE')
            ->value($record->phone)
    ])

and then you can use $ACCOUNT_NAME in your template

if you like to add a Global Var you can use Facade class like this

use TomatoPHP\FilamentDocs\Facades\FilamentDocs;
use TomatoPHP\FilamentDocs\Services\Contracts\DocsVar;

public function boot()
{
    FilamentDocs::register([
        DocsVar::make('$POST_TITLE')
            ->label('Post Title')
            ->model(Post::class)
            ->column('title'),
        DocsVar::make('$POST_TYPE')
            ->label('Post Type')
            ->model(Post::class)
            ->column('type'),
        DocsVar::make('$SELECTED_TIME')
            ->label('SELECTED TIME')
            ->value(fn () => Carbon::now()->subDays(10)->translatedFormat('D-M-Y')),
    ]);
}

as you can see you can use data from selected table or from a static function

Allow Tenants

to allow tenants just use this method

->plugin(
    \TomatoPHP\FilamentDocs\FilamentDocsPlugin::make()
        ->isScopedToTenant()
)

and add this migration

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::table('documents', function (Blueprint $table) {
            $table->foreignId('team_id')->nullable()->constrained('teams')->onDelete('cascade');
        });
        
        Schema::table('document_templates', function (Blueprint $table) {
            $table->foreignId('team_id')->nullable()->constrained('teams')->onDelete('cascade');
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('documents', function (Blueprint $table) {
            $table->dropForeign(['team_id']);
            $table->dropColumn('team_id');
        });
        
        Schema::table('document_templates', function (Blueprint $table) {
            $table->dropForeign(['team_id']);
            $table->dropColumn('team_id');
        });
    }
};

Publish Assets

you can publish config file by use this command

php artisan vendor:publish --tag="filament-docs-config"

you can publish views file by use this command

php artisan vendor:publish --tag="filament-docs-views"

you can publish languages file by use this command

php artisan vendor:publish --tag="filament-docs-lang"

you can publish migrations file by use this command

php artisan vendor:publish --tag="filament-docs-migrations"

Other Filament Packages

Checkout our Awesome TomatoPHP

Share To Social Networks

Login To Leave a Comment