Filament Documents Editor
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
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