1. Go to this page and download the library: Download rmsramos/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/ */
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\LogOptions;
class NewsItem extends Model
{
use LogsActivity;
protected $fillable = ['name', 'text'];
public function getActivitylogOptions(): LogOptions
{
return LogOptions::defaults()
->logOnly(['name', 'text']);
}
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make(),
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->resource(\Path\For\Your\CustomResource::class),
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->label('Log')
->pluralLabel('Logs'),
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->navigationItem(false), // by default is true
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->navigationGroup('Activity Log'),
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->navigationIcon('heroicon-o-shield-check'),
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->navigationCountBadge(true),
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->navigationSort(3),
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->authorize(
fn () => auth()->user()->id === 1
),
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->translateSubject(fn($label) => __("yourCustomLangFile.".$label)),
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
use Morilog\Jalali\Jalalian;
use Carbon\Carbon;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->dateParser(
fn($date) => auth()->user()->isJalaliCalendar() ?
Jalalian::fromDateTime($date) :
Carbon::parse($date)
)
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->dateFormat('Y-m-d')
->datetimeFormat(fn() => auth()->user()->getFilamentDateTimeFormat())
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->customizeDatetimeColumn(function ($column) {
return $column->when(
auth()->user()->isJalaliCalendar(),
function ($column) {
return $column->jalaliDateTime();
}
);
})
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->customizeDatePicker(function ($field) {
return $field->when(
auth()->user()->isJalaliCalendar(),
function ($field) {
return $field->jalali();
}
);
})
]);
}
use Rmsramos\Activitylog\Traits\HasCustomActivityResource;
trait HasCustomActivityResource
{
public function getFilamentActualResourceModel($record)
{
$record = $record->subject->translatable;
$model = null;
switch ($record::class) {
case FirstTranslatableModel::class:
$model = $record->firstModel;
break;
case SecondTranslatableModel::class:
$model = $record->secondModel;
break;
default:
throw new Exception("Error Translatable subject model not found. record = ".$record::class, 1);
break;
}
return $model;
}
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->isRestoreActionHidden(true)
->isResourceActionHidden(true)
->resourceActionLabel("Sample Label")
]);
}
use Rmsramos\Activitylog\ActivitylogPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ActivitylogPlugin::make()
->isRestoreModelActionHidden(false)
]);
}
use App\Policies\ActivityPolicy;
use Illuminate\Support\Facades\Gate;
use Spatie\Activitylog\Models\Activity;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
Gate::policy(Activity::class, ActivityPolicy::class);
}
}
use Rmsramos\Activitylog\RelationManagers\ActivitylogRelationManager;
public static function getRelations(): array
{
return [
ActivitylogRelationManager::class,
];
}
use Rmsramos\Activitylog\Actions\ActivityLogTimelineTableAction;
public static function table(Table $table): Table
{
return $table
->actions([
ActivityLogTimelineTableAction::make('Activities'),
]);
}
public static function table(Table $table): Table
{
return $table
->actions([
ActivityLogTimelineTableAction::make('Activities')
->withRelations(['profile', 'address']), //opcional
]);
}