1. Go to this page and download the library: Download swisnl/filament-activitylog library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
swisnl / filament-activitylog example snippets
namespace App\Filament\Resources;
use Filament\Resources\Resource;
use Filament\Tables\Table;
use Swis\Filament\Activitylog\Tables\Actions\ActivitylogAction;
class MyResource extends Resource
{
public static function table(Table $table): Table
{
return $table
...
->actions([
...
ActivitylogAction::make(),
...
]);
}
}
namespace App\Filament\Resources\MyResource\Pages;
use App\Filament\Resources\MyResource;
use Filament\Resources\Pages\EditRecord;
use Swis\Filament\ActivityLog\Actions\ActivitylogAction;
class EditContract extends EditRecord
{
protected static string $resource = ContractResource::class;
protected function getHeaderActions(): array
{
return [
...
ActivitylogAction::make(),
];
}
}
namespace App\Policies;
use App\Models\MyModel;
use App\Models\User;
class MyModelPolicy
{
public function viewActivitylog(User $user, MyModel $myModel)
{
return $user->isAdmin();
}
public function commentActivitylog(User $user, MyModel $myModel)
{
return $user->isAdmin();
}
}
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Swis\Filament\Activitylog\Facades\FilamentActivitylog;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
FilamentActivitylog::registerEntryContentEventViewResolver('myevent', 'activitylog.entries.myevent');
}
}
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Stringable;
use Swis\Filament\Activitylog\Facades\FilamentActivitylog;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
FilamentActivitylog::registerAttributeTableLabelProvider(function ($key, $recordClass) {
$instance = new $recordClass;
$translationKey = $instance->getMorphClass().'.fields.'.$key.'.label';
$translation = __($translationKey);
if ($translation === $translationKey) {
return null;
}
return $translation;
});
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Swis\Filament\Activitylog\AttributeTable\Contracts\LabelProvider;
class MyModel extends Model implements LabelProvider
{
public function getAttributeTableLabel(string $key, string $recordClass): ?string
{
return match ($key) {
'myproperty' => 'My Property',
default => null,
};
}
}
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Swis\Filament\Activitylog\AttributeTable\Builder;
use Swis\Filament\Activitylog\Facades\FilamentActivitylog;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
FilamentActivitylog::registerAttributeTableValueFormatter(function (Builder $builder, mixed $value, string $key, array $attributes, string $recordClass) {
// Implement custom value formatting logic here.
});
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Swis\Filament\Activitylog\AttributeTable\Builder;
use Swis\Filament\Activitylog\AttributeTable\Contracts\ValueFormatter;
class MyModel extends Model implements ValueFormatter
{
public function formatAttributeTableValue(Builder $builder, mixed $value, string $key, array $attributes, string $recordClass): Stringable|string|null
{
if ($key === 'myproperty') {
return 'This is a custom formatted value';
}
return null;
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Swis\Filament\Activitylog\AttributeTable\Contracts\SkipsAttributes;
class MyModel extends Model implements SkipsAttributes
{
public function skipAttributeTableAttributes() {
return ['foo', 'bar'];
}
}
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Swis\Filament\Activitylog\AttributeTable\Concerns\SkipsHiddenAttributes;
use Swis\Filament\Activitylog\AttributeTable\Contracts\SkipsAttributes;
class User extends Authenticatable implements SkipsAttributes
{
use SkipsHiddenAttributes;
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.