tomatophp / filament-docs
Manage your documents and contracts all in one place with template builder
Fund package maintenance!
3x1io
Requires
- php: ^8.1|^8.2
- awcodes/filament-tiptap-editor: ^3.4
- filament/filament: ^3.2
- tomatophp/console-helpers: ^1.1
- tomatophp/filament-icons: ^1.1
This package is auto-updated.
Last update: 2024-10-14 12:43:11 UTC
README
Filament Documents Editor
Manage your documents and contracts all in one place with template builder
Features
- Generate Documents From Template
- Build Template using Tiptop Editor
- Add Custom Vars By Facade
- Generate Documents Action
- Documents Filter By Template
- Print Document or Export as PDF
- 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