feat: add Filament packages for enhanced admin functionality

- Add backstage/filament-mails for mail management interface
  - Add binarybuilds/filament-failed-jobs for failed job monitoring
  - Add gboquizosanchez/filament-log-viewer for application log viewing
  - Add jacobtims/filament-logger for enhanced logging capabilities
  - Extend Filament admin panel with comprehensive monitoring tools
  - Improve developer experience with better visibility into system operations
This commit is contained in:
idevakk
2025-11-17 06:33:07 -08:00
parent e330c4f90e
commit bbbaf3a234
55 changed files with 2598 additions and 67 deletions

View File

@@ -90,6 +90,8 @@ STRIPE_SECRET=
STRIPE_WEBHOOK_SECRET=
CASHIER_LOGGER=stack
FILAMENT_LOG_VIEWER_DRIVER=raw
#IMAP_HOST=
#IMAP_PORT=
#IMAP_ENCRYPTION=

View File

@@ -2,6 +2,9 @@
namespace App\Providers\Filament;
use Backstage\FilamentMails\FilamentMailsPlugin;
use BinaryBuilds\FilamentFailedJobs\FilamentFailedJobsPlugin;
use Boquizo\FilamentLogViewer\FilamentLogViewerPlugin;
use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\AuthenticateSession;
use Filament\Http\Middleware\DisableBladeIconComponents;
@@ -16,6 +19,7 @@ use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
use Illuminate\Routing\Middleware\SubstituteBindings;
use Illuminate\Session\Middleware\StartSession;
use Illuminate\View\Middleware\ShareErrorsFromSession;
use Jacobtims\FilamentLogger\FilamentLoggerPlugin;
class DashPanelProvider extends PanelProvider
{
@@ -53,6 +57,12 @@ class DashPanelProvider extends PanelProvider
])
->authMiddleware([
Authenticate::class,
])
->plugins([
FilamentLoggerPlugin::make(),
FilamentMailsPlugin::make(),
FilamentLogViewerPlugin::make()->navigationGroup('Settings'),
FilamentFailedJobsPlugin::make()
]);
}
}

View File

@@ -8,9 +8,13 @@
"require": {
"php": "^8.2",
"ext-imap": "*",
"backstage/filament-mails": "^3.0",
"binarybuilds/filament-failed-jobs": "^1.1",
"ddeboer/imap": "^1.14",
"filament/filament": "~4.0",
"gboquizosanchez/filament-log-viewer": "^2.1",
"inerba/filament-db-config": "^1.2",
"jacobtims/filament-logger": "^1.0",
"laravel/cashier": "^15.6",
"laravel/framework": "^12.0",
"laravel/sanctum": "^4.0",

709
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "ec08282da6aabd8a7f1ca24cc7603372",
"content-hash": "9cd772bef0570927eea1c7b6d0840ed3",
"packages": [
{
"name": "anourvalar/eloquent-serialize",
@@ -72,6 +72,229 @@
},
"time": "2025-07-30T15:45:57+00:00"
},
{
"name": "backstage/filament-mails",
"version": "v3.0.6",
"source": {
"type": "git",
"url": "https://github.com/backstagephp/filament-mails.git",
"reference": "fda281287070f4eb79f97408e1a92b21cddb3daa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/backstagephp/filament-mails/zipball/fda281287070f4eb79f97408e1a92b21cddb3daa",
"reference": "fda281287070f4eb79f97408e1a92b21cddb3daa",
"shasum": ""
},
"require": {
"backstage/laravel-mails": "^2.0",
"filament/filament": "^4.0",
"php": "^8.2",
"spatie/laravel-package-tools": "^1.15.0"
},
"require-dev": {
"laravel/pint": "^1.16",
"nunomaduro/collision": "^8.8.0",
"orchestra/testbench": "^9.0|^10.0",
"pestphp/pest": "^3.7",
"pestphp/pest-plugin-arch": "^3.1.0",
"pestphp/pest-plugin-laravel": "^3.0"
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"FilamentMails": "Backstage\\FilamentMails\\Facades\\FilamentMails"
},
"providers": [
"Backstage\\FilamentMails\\FilamentMailsServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Backstage\\FilamentMails\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Baspa",
"email": "hello@baspa.dev",
"role": "Developer"
}
],
"description": "View logged mails and events in a beautiful Filament UI.",
"homepage": "https://github.com/backstagephp/filament-mails",
"keywords": [
"backstagephp",
"filament-mails",
"laravel"
],
"support": {
"issues": "https://github.com/backstagephp/filament-mails/issues",
"source": "https://github.com/backstagephp/filament-mails"
},
"funding": [
{
"url": "https://github.com/vormkracht10",
"type": "github"
}
],
"time": "2025-10-03T11:13:43+00:00"
},
{
"name": "backstage/laravel-mails",
"version": "v2.1.0",
"source": {
"type": "git",
"url": "https://github.com/backstagephp/laravel-mails.git",
"reference": "b590728f2295be781ea19abd0275783d1598ca5c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/backstagephp/laravel-mails/zipball/b590728f2295be781ea19abd0275783d1598ca5c",
"reference": "b590728f2295be781ea19abd0275783d1598ca5c",
"shasum": ""
},
"require": {
"illuminate/contracts": "^10.0 || ^11.0 || ^12.0",
"laravel/helpers": "^1.7.0",
"php": "^8.2",
"spatie/laravel-package-tools": "^1.15.0"
},
"require-dev": {
"larastan/larastan": "^3.0",
"laravel-notification-channels/discord": "^1.6",
"laravel-notification-channels/telegram": "^4.0 || ^5.0 || ^6.0",
"laravel/pint": "^1.17.0",
"laravel/slack-notification-channel": "^2.5 || ^3.3.2",
"nunomaduro/collision": "^7.5.0|^8.4",
"orchestra/testbench": "^8.5.0|^9.4.0",
"pestphp/pest": "^3.0",
"pestphp/pest-plugin-laravel": "^3.0",
"phpstan/extension-installer": "^1.4",
"phpstan/phpstan-deprecation-rules": "^2.0",
"phpstan/phpstan-phpunit": "^2.0",
"phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Backstage\\Mails\\MailsServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Backstage\\Mails\\": "src",
"Backstage\\Mails\\Database\\Factories\\": "database/factories"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark van Eijk",
"email": "mark@vormkracht10.nl",
"role": "Developer"
}
],
"description": "Laravel Mails can collect everything you might want to track about the mails that has been sent by your Laravel app.",
"homepage": "https://github.com/backstagephp/laravel-mails",
"keywords": [
"backstagephp",
"laravel",
"laravel-mails"
],
"support": {
"issues": "https://github.com/backstagephp/laravel-mails/issues",
"source": "https://github.com/backstagephp/laravel-mails/tree/v2.1.0"
},
"funding": [
{
"url": "https://github.com/vormkracht10",
"type": "github"
}
],
"time": "2025-07-22T08:08:52+00:00"
},
{
"name": "binarybuilds/filament-failed-jobs",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/binarybuilds/filament-failed-jobs.git",
"reference": "eb9545095b7cfbf72afcb296b4511ba63c924aed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/binarybuilds/filament-failed-jobs/zipball/eb9545095b7cfbf72afcb296b4511ba63c924aed",
"reference": "eb9545095b7cfbf72afcb296b4511ba63c924aed",
"shasum": ""
},
"require": {
"filament/filament": "^4.0",
"php": "^8.2",
"spatie/laravel-package-tools": "^1.15.0"
},
"require-dev": {
"laravel/pint": "^1.0",
"nunomaduro/collision": "^8.0",
"nunomaduro/larastan": "^3.7",
"orchestra/testbench": "^10.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"BinaryBuilds\\FilamentFailedJobs\\FilamentFailedJobsServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"BinaryBuilds\\FilamentFailedJobs\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Srinath Reddy Dudi",
"email": "srinathreddydudi@gmail.com",
"role": "Developer"
}
],
"description": "A filament package to easily retry and prune failed jobs",
"homepage": "https://github.com/binarybuilds/filament-failed-jobs",
"keywords": [
"binarybuilds",
"failed jobs",
"filament",
"laravel",
"queued jobs"
],
"support": {
"issues": "https://github.com/binarybuilds/filament-failed-jobs/issues",
"source": "https://github.com/binarybuilds/filament-failed-jobs"
},
"funding": [
{
"url": "https://github.com/srinathreddydudi",
"type": "github"
}
],
"time": "2025-10-12T04:08:49+00:00"
},
{
"name": "blade-ui-kit/blade-heroicons",
"version": "2.6.0",
@@ -1623,6 +1846,70 @@
],
"time": "2023-10-12T05:21:21+00:00"
},
{
"name": "gboquizosanchez/filament-log-viewer",
"version": "2.1.8",
"source": {
"type": "git",
"url": "https://github.com/gboquizosanchez/filament-log-viewer.git",
"reference": "85480879ed0f4da15257393f6c2e0c0ea0892403"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/gboquizosanchez/filament-log-viewer/zipball/85480879ed0f4da15257393f6c2e0c0ea0892403",
"reference": "85480879ed0f4da15257393f6c2e0c0ea0892403",
"shasum": ""
},
"require": {
"ext-zip": "*",
"owenvoke/blade-fontawesome": "^2.9",
"php": "^8.2|^8.3|^8.4",
"symfony/polyfill-php83": "^1.33"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.64",
"hermes/dependencies": "^1.1",
"larastan/larastan": "^2.9",
"orchestra/testbench": "^9.1",
"pestphp/pest": "^3.5"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Boquizo\\FilamentLogViewer\\FilamentLogViewerServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Boquizo\\FilamentLogViewer\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Germán Boquizo Sánchez",
"email": "germanboquizosanchez@gmail.com",
"role": "Developer"
}
],
"description": "Filament Log Viewer",
"homepage": "https://github.com/gboquizosanchez",
"keywords": [
"filament",
"laravel",
"log-viewer"
],
"support": {
"issues": "https://github.com/gboquizosanchez/filament-log-viewer/issues",
"source": "https://github.com/gboquizosanchez/filament-log-viewer/tree/2.1.8"
},
"time": "2025-11-07T21:40:26+00:00"
},
{
"name": "graham-campbell/result-type",
"version": "v1.1.3",
@@ -2165,6 +2452,86 @@
},
"time": "2025-10-26T10:16:05+00:00"
},
{
"name": "jacobtims/filament-logger",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/Jacobtims/filament-logger.git",
"reference": "89797b630ac4895cb2eac56a4029b870f9022731"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Jacobtims/filament-logger/zipball/89797b630ac4895cb2eac56a4029b870f9022731",
"reference": "89797b630ac4895cb2eac56a4029b870f9022731",
"shasum": ""
},
"require": {
"filament/filament": "^4.0",
"illuminate/contracts": "^11.0 | ^12.0",
"laravel/pint": "^1.0",
"php": "^8.2",
"spatie/laravel-activitylog": "^4.5",
"spatie/laravel-package-tools": "^1.13.5"
},
"require-dev": {
"larastan/larastan": "^3.0",
"nunomaduro/collision": "^8.1",
"orchestra/testbench": "^9.0 | ^10.0",
"pestphp/pest": "^2.34 | ^3.7",
"pestphp/pest-plugin-laravel": "^2.3 | ^3.1",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan-deprecation-rules": "^2.0",
"phpstan/phpstan-phpunit": "^2.0",
"phpunit/phpunit": "^11.5.3",
"spatie/laravel-ray": "^1.26"
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"FilamentLogger": "Jacobtims\\FilamentLogger\\Facades\\FilamentLogger"
},
"providers": [
"Jacobtims\\FilamentLogger\\FilamentLoggerServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Jacobtims\\FilamentLogger\\": "src",
"Jacobtims\\FilamentLogger\\Database\\Factories\\": "database/factories"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ziyaan Hassan",
"email": "ziyaan2010@gmail.com",
"role": "Developer"
},
{
"name": "Jacobtims",
"email": "jacobtimmer04@gmail.com",
"role": "Developer"
}
],
"description": "Activity logger for filament",
"homepage": "https://github.com/jacobtims/filament-logger",
"keywords": [
"Jacobtims",
"Z3d0X",
"filament-logger",
"laravel"
],
"support": {
"source": "https://github.com/Jacobtims/filament-logger/tree/v1.0.0"
},
"time": "2025-08-20T07:24:12+00:00"
},
{
"name": "kirschbaum-development/eloquent-power-joins",
"version": "4.2.10",
@@ -2535,6 +2902,129 @@
},
"time": "2025-11-13T02:12:47+00:00"
},
{
"name": "laravel/helpers",
"version": "v1.8.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/helpers.git",
"reference": "d0094b4bc4364560c8ee3a9e956596d760d4afab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/helpers/zipball/d0094b4bc4364560c8ee3a9e956596d760d4afab",
"reference": "d0094b4bc4364560c8ee3a9e956596d760d4afab",
"shasum": ""
},
"require": {
"illuminate/support": "~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
"php": "^7.2.0|^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^7.0|^8.0|^9.0|^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"files": [
"src/helpers.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
},
{
"name": "Dries Vints",
"email": "dries@laravel.com"
}
],
"description": "Provides backwards compatibility for helpers in the latest Laravel release.",
"keywords": [
"helpers",
"laravel"
],
"support": {
"source": "https://github.com/laravel/helpers/tree/v1.8.1"
},
"time": "2025-09-02T15:31:25+00:00"
},
{
"name": "laravel/pint",
"version": "v1.25.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
"reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/pint/zipball/5016e263f95d97670d71b9a987bd8996ade6d8d9",
"reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
"ext-tokenizer": "*",
"ext-xml": "*",
"php": "^8.2.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.87.2",
"illuminate/view": "^11.46.0",
"larastan/larastan": "^3.7.1",
"laravel-zero/framework": "^11.45.0",
"mockery/mockery": "^1.6.12",
"nunomaduro/termwind": "^2.3.1",
"pestphp/pest": "^2.36.0"
},
"bin": [
"builds/pint"
],
"type": "project",
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Seeders\\": "database/seeders/",
"Database\\Factories\\": "database/factories/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nuno Maduro",
"email": "enunomaduro@gmail.com"
}
],
"description": "An opinionated code formatter for PHP.",
"homepage": "https://laravel.com",
"keywords": [
"format",
"formatter",
"lint",
"linter",
"php"
],
"support": {
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
"time": "2025-09-19T02:57:12+00:00"
},
{
"name": "laravel/prompts",
"version": "v0.3.7",
@@ -4480,6 +4970,66 @@
],
"time": "2025-09-03T16:03:54+00:00"
},
{
"name": "owenvoke/blade-fontawesome",
"version": "v2.9.1",
"source": {
"type": "git",
"url": "https://github.com/owenvoke/blade-fontawesome.git",
"reference": "94dcd0c78f43f8234b0d9c76c903ecd288b8b0d1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/owenvoke/blade-fontawesome/zipball/94dcd0c78f43f8234b0d9c76c903ecd288b8b0d1",
"reference": "94dcd0c78f43f8234b0d9c76c903ecd288b8b0d1",
"shasum": ""
},
"require": {
"blade-ui-kit/blade-icons": "^1.5",
"illuminate/support": "^10.34|^11.0|^12.0",
"php": "^8.1"
},
"require-dev": {
"laravel/pint": "^1.13",
"orchestra/testbench": "^8.12|^9.0|^10.0",
"pestphp/pest": "^2.26|^3.7",
"phpstan/phpstan": "^1.10|^2.1",
"symfony/var-dumper": "^6.3|^7.2"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"OwenVoke\\BladeFontAwesome\\BladeFontAwesomeServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"OwenVoke\\BladeFontAwesome\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "A package to easily make use of Font Awesome in your Laravel Blade views",
"support": {
"issues": "https://github.com/owenvoke/blade-fontawesome/issues",
"source": "https://github.com/owenvoke/blade-fontawesome/tree/v2.9.1"
},
"funding": [
{
"url": "https://ecologi.com/owenvoke?gift-trees",
"type": "custom"
},
{
"url": "https://github.com/owenvoke",
"type": "github"
}
],
"time": "2025-03-28T16:03:42+00:00"
},
{
"name": "paragonie/constant_time_encoding",
"version": "v3.1.3",
@@ -5723,6 +6273,97 @@
],
"time": "2024-05-17T09:06:10+00:00"
},
{
"name": "spatie/laravel-activitylog",
"version": "4.10.2",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-activitylog.git",
"reference": "bb879775d487438ed9a99e64f09086b608990c10"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-activitylog/zipball/bb879775d487438ed9a99e64f09086b608990c10",
"reference": "bb879775d487438ed9a99e64f09086b608990c10",
"shasum": ""
},
"require": {
"illuminate/config": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0",
"illuminate/database": "^8.69 || ^9.27 || ^10.0 || ^11.0 || ^12.0",
"illuminate/support": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.6.3"
},
"require-dev": {
"ext-json": "*",
"orchestra/testbench": "^6.23 || ^7.0 || ^8.0 || ^9.0 || ^10.0",
"pestphp/pest": "^1.20 || ^2.0 || ^3.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Spatie\\Activitylog\\ActivitylogServiceProvider"
]
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"Spatie\\Activitylog\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Freek Van der Herten",
"email": "freek@spatie.be",
"homepage": "https://spatie.be",
"role": "Developer"
},
{
"name": "Sebastian De Deyne",
"email": "sebastian@spatie.be",
"homepage": "https://spatie.be",
"role": "Developer"
},
{
"name": "Tom Witkowski",
"email": "dev.gummibeer@gmail.com",
"homepage": "https://gummibeer.de",
"role": "Developer"
}
],
"description": "A very simple activity logger to monitor the users of your website or application",
"homepage": "https://github.com/spatie/activitylog",
"keywords": [
"activity",
"laravel",
"log",
"spatie",
"user"
],
"support": {
"issues": "https://github.com/spatie/laravel-activitylog/issues",
"source": "https://github.com/spatie/laravel-activitylog/tree/4.10.2"
},
"funding": [
{
"url": "https://spatie.be/open-source/support-us",
"type": "custom"
},
{
"url": "https://github.com/spatie",
"type": "github"
}
],
"time": "2025-06-15T06:59:49+00:00"
},
{
"name": "spatie/laravel-package-tools",
"version": "1.92.7",
@@ -9675,72 +10316,6 @@
},
"time": "2025-06-05T13:55:57+00:00"
},
{
"name": "laravel/pint",
"version": "v1.25.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
"reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/pint/zipball/5016e263f95d97670d71b9a987bd8996ade6d8d9",
"reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
"ext-tokenizer": "*",
"ext-xml": "*",
"php": "^8.2.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.87.2",
"illuminate/view": "^11.46.0",
"larastan/larastan": "^3.7.1",
"laravel-zero/framework": "^11.45.0",
"mockery/mockery": "^1.6.12",
"nunomaduro/termwind": "^2.3.1",
"pestphp/pest": "^2.36.0"
},
"bin": [
"builds/pint"
],
"type": "project",
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Seeders\\": "database/seeders/",
"Database\\Factories\\": "database/factories/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nuno Maduro",
"email": "enunomaduro@gmail.com"
}
],
"description": "An opinionated code formatter for PHP.",
"homepage": "https://laravel.com",
"keywords": [
"format",
"formatter",
"lint",
"linter",
"php"
],
"support": {
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
"time": "2025-09-19T02:57:12+00:00"
},
{
"name": "laravel/roster",
"version": "v0.2.9",

View File

@@ -0,0 +1,119 @@
<?php
declare(strict_types=1);
return [
/* -----------------------------------------------------------------
| Driver
| -----------------------------------------------------------------
| Available drivers: 'daily', 'stack', 'raw'
| -----------------------------------------------------------------
*/
'driver' => env('FILAMENT_LOG_VIEWER_DRIVER', env('LOG_CHANNEL', 'stack')),
/* -----------------------------------------------------------------
| Resource configuration
| -----------------------------------------------------------------
*/
'resource' => [
'slug' => 'logs',
'cluster' => null,
],
/* -----------------------------------------------------------------
| Logs files can be cleared
| -----------------------------------------------------------------
*/
'clearable' => env('FILAMENT_LOG_VIEWER_CLEARABLE', false),
/* -----------------------------------------------------------------
| Log files storage path
| -----------------------------------------------------------------
*/
'storage_path' => storage_path('logs'),
/* -----------------------------------------------------------------
| Log files pattern
| -----------------------------------------------------------------
*/
'pattern' => [
'prefix' => 'laravel-',
'date' => '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]',
'extension' => '.log'
],
/* -----------------------------------------------------------------
| Log entries per page
| -----------------------------------------------------------------
| This defines how many logs and entries are displayed per page.
*/
'per-page' => [
5,
10,
25,
30,
],
/* -----------------------------------------------------------------
| Download settings
| -----------------------------------------------------------------
*/
'download' => [
'prefix' => 'laravel-',
'extension' => 'log',
],
/* -----------------------------------------------------------------
| Icons
| -----------------------------------------------------------------
*/
'icons' => [
'all' => 'fas-list', // http://fontawesome.io/icon/list/
'emergency' => 'fas-bug', // http://fontawesome.io/icon/bug/
'alert' => 'fas-bullhorn', // http://fontawesome.io/icon/bullhorn/
'critical' => 'fas-heartbeat', // http://fontawesome.io/icon/heartbeat/
'error' => 'fas-times-circle', // http://fontawesome.io/icon/times-circle/
'warning' => 'fas-exclamation-triangle', // http://fontawesome.io/icon/exclamation-triangle/
'notice' => 'fas-exclamation-circle', // http://fontawesome.io/icon/exclamation-circle/
'info' => 'fas-info-circle', // http://fontawesome.io/icon/info-circle/
'debug' => 'fas-life-ring', // http://fontawesome.io/icon/life-ring/
],
/* -----------------------------------------------------------------
| Colors
| -----------------------------------------------------------------
*/
'colors' => [
'levels' => [
'all' => '#8A8A8A',
'emergency' => '#B71C1C',
'alert' => '#D32F2F',
'critical' => '#F44336',
'error' => '#FF5722',
'warning' => '#FF9100',
'notice' => '#4CAF50',
'info' => '#1976D2',
'debug' => '#90CAF9',
],
],
/* -----------------------------------------------------------------
| Strings to highlight in stack trace
| -----------------------------------------------------------------
*/
'highlight' => [
'^#\d+', '^Stack trace:',
],
];

View File

@@ -0,0 +1,54 @@
<?php
return [
'datetime_format' => 'd/m/Y H:i:s',
'date_format' => 'd/m/Y',
'activity_resource' => \Jacobtims\FilamentLogger\Resources\ActivityResource::class,
'scoped_to_tenant' => true,
'navigation_sort' => null,
'resources' => [
'enabled' => true,
'log_name' => 'Resource',
'logger' => \Jacobtims\FilamentLogger\Loggers\ResourceLogger::class,
'color' => 'success',
'exclude' => [
// App\Filament\Resources\UserResource::class,
],
'cluster' => null,
'navigation_group' => 'Settings',
],
'access' => [
'enabled' => true,
'logger' => \Jacobtims\FilamentLogger\Loggers\AccessLogger::class,
'color' => 'danger',
'log_name' => 'Access',
],
'notifications' => [
'enabled' => true,
'logger' => \Jacobtims\FilamentLogger\Loggers\NotificationLogger::class,
'color' => null,
'log_name' => 'Notification',
],
'models' => [
'enabled' => true,
'log_name' => 'Model',
'color' => 'warning',
'logger' => \Jacobtims\FilamentLogger\Loggers\ModelLogger::class,
'register' => [
// App\Models\User::class,
],
],
'custom' => [
// [
// 'log_name' => 'Custom',
// 'color' => 'primary',
// ]
],
];

18
config/filament-mails.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
use Backstage\FilamentMails\Resources\EventResource;
use Backstage\FilamentMails\Resources\MailResource;
use Backstage\FilamentMails\Resources\SuppressionResource;
return [
'resources' => [
'mail' => MailResource::class,
'event' => EventResource::class,
'suppression' => SuppressionResource::class,
],
'navigation' => [
'group' => null,
'sort' => null,
],
];

141
config/mails.php Normal file
View File

@@ -0,0 +1,141 @@
<?php
use Backstage\Mails\Models\Mail;
use Backstage\Mails\Models\MailAttachment;
use Backstage\Mails\Models\MailEvent;
return [
// Eloquent model to use for sent emails
'models' => [
'mail' => Mail::class,
'event' => MailEvent::class,
'attachment' => MailAttachment::class,
],
// Table names for saving sent emails and polymorphic relations to database
'database' => [
'tables' => [
'mails' => 'mails',
'attachments' => 'mail_attachments',
'events' => 'mail_events',
'polymorph' => 'mailables',
],
'pruning' => [
'enabled' => true,
'after' => 30, // days
],
],
'headers' => [
'uuid' => 'X-Mails-UUID',
'associate' => 'X-Mails-Associated-Models',
],
'webhooks' => [
'routes' => [
'prefix' => 'webhooks/mails',
],
'queue' => env('MAILS_QUEUE_WEBHOOKS', false),
],
// Logging mails
'logging' => [
// Enable logging of all sent mails to database
'enabled' => env('MAILS_LOGGING_ENABLED', true),
// Specify attributes to log in database
'attributes' => [
'subject',
'from',
'to',
'reply_to',
'cc',
'bcc',
'html',
'text',
],
// Encrypt all attributes saved to database
'encrypted' => env('MAILS_ENCRYPTED', true),
// Track following events using webhooks from email provider
'tracking' => [
'bounces' => true,
'clicks' => true,
'complaints' => true,
'deliveries' => true,
'opens' => true,
'unsubscribes' => true,
],
// Enable saving mail attachments to disk
'attachments' => [
'enabled' => env('MAILS_LOGGING_ATTACHMENTS_ENABLED', true),
'disk' => env('FILESYSTEM_DISK', 'local'),
'root' => 'mails/attachments',
],
],
// Notifications for important mail events
'notifications' => [
'mail' => [
'to' => ['test@example.com'],
],
'discord' => [
// 'to' => ['1234567890'],
],
'slack' => [
// 'to' => ['https://hooks.slack.com/services/...'],
],
'telegram' => [
// 'to' => ['1234567890'],
],
],
'events' => [
'soft_bounced' => [
'notify' => ['mail'],
],
'hard_bounced' => [
'notify' => ['mail'],
],
'bouncerate' => [
'notify' => [],
'retain' => 30, // days
'treshold' => 1, // %
],
'deliveryrate' => [
'treshold' => 99,
],
'complained' => [
//
],
'unsent' => [
//
],
],
];

View File

@@ -0,0 +1,38 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create(config('mails.database.tables.mails'), function (Blueprint $table) {
$table->id();
$table->string('uuid')->nullable()->index();
$table->string('mail_class')->nullable()->index();
$table->string('subject')->nullable();
$table->json('from')->nullable();
$table->json('reply_to')->nullable();
$table->json('to')->nullable();
$table->json('cc')->nullable();
$table->json('bcc')->nullable();
$table->text('html')->nullable();
$table->text('text')->nullable();
$table->unsignedBigInteger('opens')->default(0);
$table->unsignedBigInteger('clicks')->default(0);
$table->timestamp('sent_at')->nullable();
$table->timestamp('resent_at')->nullable();
$table->timestamp('accepted_at')->nullable();
$table->timestamp('delivered_at')->nullable();
$table->timestamp('last_opened_at')->nullable();
$table->timestamp('last_clicked_at')->nullable();
$table->timestamp('complained_at')->nullable();
$table->timestamp('soft_bounced_at')->nullable();
$table->timestamp('hard_bounced_at')->nullable();
$table->timestamp('unsubscribed_at')->nullable();
$table->timestamps();
});
}
};

View File

@@ -0,0 +1,25 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create(config('mails.database.tables.attachments', 'mail_attachments'), function (Blueprint $table) {
$table->id();
$table->foreignIdFor(config('mails.models.mail'))
->constrained()
->cascadeOnDelete();
$table->string('disk');
$table->string('uuid');
$table->string('filename');
$table->string('mime');
$table->boolean('inline', false);
$table->bigInteger('size');
$table->timestamps();
});
}
};

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create(config('mails.database.tables.events', 'mail_events'), function (Blueprint $table) {
$table->id();
$table->foreignIdFor(config('mails.models.mail'))
->constrained()
->cascadeOnDelete();
$table->string('type');
$table->string('ip_address')->nullable();
$table->string('hostname')->nullable();
$table->string('platform')->nullable();
$table->string('os')->nullable();
$table->string('browser')->nullable();
$table->string('user_agent')->nullable();
$table->string('city')->nullable();
$table->char('country_code', 2)->nullable();
$table->string('link')->nullable();
$table->string('tag')->nullable();
$table->json('payload')->nullable();
$table->timestamps();
$table->timestamp('occurred_at')->nullable();
});
}
};

View File

@@ -0,0 +1,19 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create(config('mails.database.tables.polymorph'), function (Blueprint $table) {
$table->id();
$table->foreignIdFor(config('mails.models.mail'))
->constrained()
->cascadeOnDelete();
$table->morphs('mailable');
});
}
};

View File

@@ -0,0 +1,29 @@
<?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(config('mails.database.tables.events', 'mail_events'), function (Blueprint $table): void {
$table->timestamp('unsuppressed_at')
->nullable()
->after('occurred_at');
});
Schema::table(config('mails.database.tables.mails', 'mails'), function (Blueprint $table): void {
$table->string('mailer')
->after('uuid');
$table->string('stream_id')
->nullable()
->after('mailer');
});
}
};

View File

@@ -0,0 +1,17 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::table(config('mails.database.tables.mails'), function (Blueprint $table) {
$table->after('clicks', function (Blueprint $table) {
$table->json('tags')->nullable();
});
});
}
};

View File

@@ -0,0 +1,17 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::table(config('mails.database.tables.mails', 'mails'), function (Blueprint $table): void {
$table->string('transport')
->nullable()
->after('mailer');
});
}
};

View File

@@ -0,0 +1,25 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::table(config('mails.database.tables.mails'), function (Blueprint $table) {
$table->longText('html')->nullable()->change();
$table->longText('text')->nullable()->change();
});
}
public function down()
{
Schema::table(config('mails.database.tables.mails'), function (Blueprint $table) {
$table->text('html')->nullable()->change();
$table->text('text')->nullable()->change();
});
}
};

View File

@@ -0,0 +1,23 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::table(config('mails.database.tables.events', 'mail_events'), function (Blueprint $table) {
$table->longText('link')->nullable()->change();
});
}
public function down()
{
Schema::table(config('mails.database.tables.events', 'mail_events'), function (Blueprint $table) {
$table->string('link')->nullable()->change();
});
}
};

View File

@@ -0,0 +1,27 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateActivityLogTable extends Migration
{
public function up()
{
Schema::connection(config('activitylog.database_connection'))->create(config('activitylog.table_name'), function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('log_name')->nullable();
$table->text('description');
$table->nullableMorphs('subject', 'subject');
$table->nullableMorphs('causer', 'causer');
$table->json('properties')->nullable();
$table->timestamps();
$table->index('log_name');
});
}
public function down()
{
Schema::connection(config('activitylog.database_connection'))->dropIfExists(config('activitylog.table_name'));
}
}

View File

@@ -0,0 +1,22 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddEventColumnToActivityLogTable extends Migration
{
public function up()
{
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
$table->string('event')->nullable()->after('subject_type');
});
}
public function down()
{
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
$table->dropColumn('event');
});
}
}

View File

@@ -0,0 +1,22 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddBatchUuidColumnToActivityLogTable extends Migration
{
public function up()
{
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
$table->uuid('batch_uuid')->nullable()->after('properties');
});
}
public function down()
{
Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) {
$table->dropColumn('batch_uuid');
});
}
}

View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
return [
'dashboard' => [
'title' => 'عارض السجلات',
],
'show' => [
'title' => 'عرض السجل :log',
],
'navigation' => [
'group' => 'السجلات',
'label' => 'عارض السجلات',
'sort' => 100,
],
'table' => [
'columns' => [
'date' => [
'label' => 'التاريخ',
],
'level' => [
'label' => 'المستوى',
],
'message' => [
'label' => 'الرسالة',
],
'filename' => [
'label' => 'اسم الملف',
],
],
'actions' => [
'view' => [
'label' => 'عرض',
],
'download' => [
'label' => 'تحميل السجل :log',
'bulk' => [
'label' => 'تحميل السجلات',
'error' => 'خطأ في تحميل السجلات',
],
],
'delete' => [
'label' => 'حذف السجل :log',
'success' => 'تم حذف السجل بنجاح',
'error' => 'خطأ في حذف السجل',
'bulk' => [
'label' => 'حذف السجلات المحددة',
],
],
'clear' => [
'label' => 'مسح السجل :log',
'success' => 'تم مسح السجل بنجاح',
'error' => 'حدث خطأ أثناء مسح السجل',
'bulk' => [
'success' => 'تم مسح السجلات بنجاح',
'label' => 'مسح السجلات المحددة',
],
],
'close' => [
'label' => 'رجوع',
],
],
'detail' => [
'title' => 'التفاصيل',
'file_path' => 'مسار الملف',
'log_entries' => 'المداخل',
'size' => 'الحجم',
'created_at' => 'تاريخ الإنشاء',
'updated_at' => 'آخر تعديل',
],
],
'levels' => [
'all' => 'الكل',
'emergency' => 'حالة طوارئ',
'alert' => 'تنبيه',
'critical' => 'حرج',
'error' => 'خطأ',
'warning' => 'تحذير',
'notice' => 'إشعار',
'info' => 'معلومات',
'debug' => 'تصحيح الأخطاء',
],
];

View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
return [
'dashboard' => [
'title' => 'Log-Viewer',
],
'show' => [
'title' => 'Log :log anzeigen',
],
'navigation' => [
'group' => 'Logs',
'label' => 'Log-Viewer',
'sort' => 100,
],
'table' => [
'columns' => [
'date' => [
'label' => 'Datum',
],
'level' => [
'label' => 'Stufe',
],
'message' => [
'label' => 'Nachricht',
],
'filename' => [
'label' => 'Dateiname',
],
],
'actions' => [
'view' => [
'label' => 'Ansehen',
],
'download' => [
'label' => 'Log :log herunterladen',
'bulk' => [
'label' => 'Ausgewählte herunterladen',
'error' => 'Fehler beim Herunterladen der Logs',
],
],
'delete' => [
'label' => 'Log :log löschen',
'success' => 'Log erfolgreich gelöscht',
'error' => 'Fehler beim Löschen des Logs',
'bulk' => [
'label' => 'Ausgewählte Logs löschen',
],
],
'clear' => [
'label' => 'Protokoll löschen :log',
'success' => 'Protokoll erfolgreich gelöscht',
'error' => 'Fehler beim Löschen des Protokolls',
'bulk' => [
'success' => 'Protokolle erfolgreich gelöscht',
'label' => 'Ausgewählte Protokolle löschen',
],
],
'close' => [
'label' => 'Zurück',
],
],
'detail' => [
'title' => 'Detail',
'file_path' => 'Dateipfad',
'log_entries' => 'Einträge',
'size' => 'Größe',
'created_at' => 'Erstellt am',
'updated_at' => 'Aktualisiert am',
],
],
'levels' => [
'all' => 'Alle',
'emergency' => 'Notfall',
'alert' => 'Alarm',
'critical' => 'Kritisch',
'error' => 'Fehler',
'warning' => 'Warnung',
'notice' => 'Hinweis',
'info' => 'Info',
'debug' => 'Debug',
],
];

View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
return [
'dashboard' => [
'title' => 'Log Viewer',
],
'show' => [
'title' => 'View log :log',
],
'navigation' => [
'group' => 'Logs',
'label' => 'Log Viewer',
'sort' => 100,
],
'table' => [
'columns' => [
'date' => [
'label' => 'Date',
],
'level' => [
'label' => 'Level',
],
'message' => [
'label' => 'Message',
],
'filename' => [
'label' => 'Filename',
],
],
'actions' => [
'view' => [
'label' => 'View',
],
'download' => [
'label' => 'Download log :log',
'bulk' => [
'label' => 'Download logs',
'error' => 'Error downloading the logs',
],
],
'delete' => [
'label' => 'Delete log :log',
'success' => 'Log deleted successfully',
'error' => 'Error deleting the log',
'bulk' => [
'label' => 'Delete selected logs',
],
],
'clear' => [
'label' => 'Clear log :log',
'success' => 'Log cleared successfully',
'error' => 'Error clearing the log',
'bulk' => [
'success' => 'Logs cleared successfully',
'label' => 'Clear selected logs',
],
],
'close' => [
'label' => 'Back',
],
],
'detail' => [
'title' => 'Detail',
'file_path' => 'File Path',
'log_entries' => 'Entries',
'size' => 'Size',
'created_at' => 'Created at',
'updated_at' => 'Updated at',
],
],
'levels' => [
'all' => 'All',
'emergency' => 'Emergency',
'alert' => 'Alert',
'critical' => 'Critical',
'error' => 'Error',
'warning' => 'Warning',
'notice' => 'Notice',
'info' => 'Info',
'debug' => 'Debug',
],
];

View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
return [
'dashboard' => [
'title' => 'Visor de logs',
],
'show' => [
'title' => 'Ver el log :log',
],
'navigation' => [
'group' => 'Logs',
'label' => 'Visor de logs',
'sort' => 100,
],
'table' => [
'columns' => [
'date' => [
'label' => 'Fecha',
],
'level' => [
'label' => 'Nivel',
],
'message' => [
'label' => 'Mensaje',
],
'filename' => [
'label' => 'Nombre del archivo',
],
],
'actions' => [
'view' => [
'label' => 'Ver',
],
'download' => [
'label' => 'Descargar el log :log',
'bulk' => [
'label' => 'Descargar seleccionados',
'error' => 'Error al descargar los logs',
],
],
'delete' => [
'label' => 'Eliminar el log :log',
'success' => 'Log eliminado con éxito',
'error' => 'Error al eliminar el log',
'bulk' => [
'label' => 'Eliminar logs seleccionados',
],
],
'clear' => [
'label' => 'Limpiar el log :log',
'success' => 'Log limpiado con éxito',
'error' => 'Error limpiando el log',
'bulk' => [
'success' => 'Logs limpiados con éxito',
'label' => 'Limpiar logs seleccionados',
],
],
'close' => [
'label' => 'Volver',
],
],
'detail' => [
'title' => 'Detalle',
'file_path' => 'Ruta del archivo',
'log_entries' => 'Entradas',
'size' => 'Tamaño',
'created_at' => 'Creado el',
'updated_at' => 'Actualizado el',
],
],
'levels' => [
'all' => 'Todos',
'emergency' => 'Emergencia',
'alert' => 'Alerta',
'critical' => 'Crítico',
'error' => 'Error',
'warning' => 'Advertencia',
'notice' => 'Aviso',
'info' => 'Información',
'debug' => 'Depuración',
],
];

View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
return [
'dashboard' => [
'title' => 'Visionneuse de logs',
],
'show' => [
'title' => 'Voir le log :log',
],
'navigation' => [
'group' => 'Logs',
'label' => 'Visionneuse de logs',
'sort' => 100,
],
'table' => [
'columns' => [
'date' => [
'label' => 'Date',
],
'level' => [
'label' => 'Niveau',
],
'message' => [
'label' => 'Message',
],
'filename' => [
'label' => 'Nom du fichier',
],
],
'actions' => [
'view' => [
'label' => 'Voir',
],
'download' => [
'label' => 'Télécharger le log :log',
'bulk' => [
'label' => 'Télécharger sélectionnés',
'error' => 'Erreur lors du téléchargement des logs',
],
],
'delete' => [
'label' => 'Supprimer le log :log',
'success' => 'Log supprimé avec succès',
'error' => 'Erreur lors de la suppression du log',
'bulk' => [
'label' => 'Supprimer les logs sélectionnés',
],
],
'clear' => [
'label' => 'Effacer le journal :log',
'success' => 'Journal effacé avec succès',
'error' => 'Erreur lors de l\'effacement du journal',
'bulk' => [
'success' => 'Journaux effacés avec succès',
'label' => 'Effacer les journaux sélectionnés',
],
],
'close' => [
'label' => 'Retour',
],
],
'detail' => [
'title' => 'Détail',
'file_path' => 'Chemin du fichier',
'log_entries' => 'Entrées',
'size' => 'Taille',
'created_at' => 'Créé le',
'updated_at' => 'Mis à jour le',
],
],
'levels' => [
'all' => 'Tous',
'emergency' => 'Urgent',
'alert' => 'Alerte',
'critical' => 'Critique',
'error' => 'Erreur',
'warning' => 'Avertissement',
'notice' => 'Avis',
'info' => 'Info',
'debug' => 'Débogage',
],
];

View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
return [
'dashboard' => [
'title' => 'Visualizzatore di log',
],
'show' => [
'title' => 'Vedi il log :log',
],
'navigation' => [
'group' => 'Log',
'label' => 'Visualizzatore di log',
'sort' => 100,
],
'table' => [
'columns' => [
'date' => [
'label' => 'Data',
],
'level' => [
'label' => 'Livello',
],
'message' => [
'label' => 'Messaggio',
],
'filename' => [
'label' => 'Nome del file',
],
],
'actions' => [
'view' => [
'label' => 'Vedi',
],
'download' => [
'label' => 'Scarica il log :log',
'bulk' => [
'label' => 'Scarica i log selezionati',
'error' => 'Errore durante il download dei log',
],
],
'delete' => [
'label' => 'Elimina il log :log',
'success' => 'Log eliminato con successo',
'error' => 'Errore durante l\'eliminazione del log',
'bulk' => [
'label' => 'Elimina i log selezionati',
],
],
'clear' => [
'label' => 'Cancella registro :log',
'success' => 'Registro cancellato con successo',
'error' => 'Errore durante la cancellazione del registro',
'bulk' => [
'success' => 'Log cancellati con successo',
'label' => 'Cancella i log selezionati',
],
],
'close' => [
'label' => 'Indietro',
],
],
'detail' => [
'title' => 'Dettaglio',
'file_path' => 'Percorso del file',
'log_entries' => 'Voci',
'size' => 'Dimensione',
'created_at' => 'Creato il',
'updated_at' => 'Aggiornato il',
],
],
'levels' => [
'all' => 'Tutti',
'emergency' => 'Emergenza',
'alert' => 'Allerta',
'critical' => 'Critico',
'error' => 'Errore',
'warning' => 'Avviso',
'notice' => 'Notifica',
'info' => 'Informazioni',
'debug' => 'Debug',
],
];

View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
return [
'dashboard' => [
'title' => 'Przegląd logów',
],
'show' => [
'title' => 'Podgląd logu :log',
],
'navigation' => [
'group' => 'System',
'label' => 'Logi systemowe',
'sort' => 100,
],
'table' => [
'columns' => [
'date' => [
'label' => 'Data',
],
'level' => [
'label' => 'Poziom',
],
'message' => [
'label' => 'Wiadomość',
],
'filename' => [
'label' => 'Nazwa pliku',
],
],
'actions' => [
'view' => [
'label' => 'Podgląd',
],
'download' => [
'label' => 'Pobierz log :log',
'bulk' => [
'label' => 'Pobierz logi',
'error' => 'Błąd podczas pobierania logów',
],
],
'delete' => [
'label' => 'Usuń log :log',
'success' => 'Log został pomyślnie usunięty',
'error' => 'Błąd podczas usuwania logu',
'bulk' => [
'label' => 'Usuń zaznaczone logi',
],
],
'clear' => [
'label' => 'Wyczyść log :log',
'success' => 'Log został pomyślnie wyczyszczony',
'error' => 'Błąd podczas czyszczenia logu',
'bulk' => [
'success' => 'Logi zostały pomyślnie wyczyszczone',
'label' => 'Wyczyść zaznaczone logi',
],
],
'close' => [
'label' => 'Powrót',
],
],
'detail' => [
'title' => 'Szczegóły',
'file_path' => 'Ścieżka pliku',
'log_entries' => 'Wpisy',
'size' => 'Rozmiar',
'created_at' => 'Utworzono',
'updated_at' => 'Zaktualizowano',
],
],
'levels' => [
'all' => 'Wszystkie',
'emergency' => 'Krytyczny (Emergency)',
'alert' => 'Alert',
'critical' => 'Bardzo poważny (Critical)',
'error' => 'Błąd',
'warning' => 'Ostrzeżenie',
'notice' => 'Informacja (Notice)',
'info' => 'Informacja',
'debug' => 'Debugowanie',
],
];

View File

@@ -0,0 +1,84 @@
<?php
declare(strict_types=1);
return [
'dashboard' => [
'title' => 'Visualizador de logs',
],
'show' => [
'title' => 'Ver log :log',
],
'navigation' => [
'group' => 'Logs',
'label' => 'Visualizador de logs',
'sort' => 100,
],
'table' => [
'columns' => [
'date' => [
'label' => 'Data',
],
'level' => [
'label' => 'Nível',
],
'message' => [
'label' => 'Mensagem',
],
'filename' => [
'label' => 'Nome do arquivo',
],
],
'actions' => [
'view' => [
'label' => 'Ver',
],
'download' => [
'label' => 'Baixar log :log',
'bulk' => [
'label' => 'Baixar selecionados',
'error' => 'Erro ao baixar os logs',
],
],
'delete' => [
'label' => 'Excluir log :log',
'success' => 'Log excluído com sucesso',
'error' => 'Erro ao excluir o log',
'bulk' => [
'label' => 'Excluir logs selecionados',
],
],
'clear' => [
'label' => 'Limpar log :log',
'success' => 'Log limpo com sucesso',
'error' => 'Erro ao limpar o log',
'bulk' => [
'success' => 'Logs limpos com sucesso',
'label' => 'Limpar logs selecionados',
],
],
'close' => [
'label' => 'Voltar',
],
],
'detail' => [
'title' => 'Detalhes',
'file_path' => 'Caminho do arquivo',
'log_entries' => 'Entradas',
'size' => 'Tamanho',
'created_at' => 'Criado em',
'updated_at' => 'Atualizado em',
],
],
'levels' => [
'all' => 'Todos',
'emergency' => 'Emergência',
'alert' => 'Alerta',
'critical' => 'Crítico',
'error' => 'Erro',
'warning' => 'Aviso',
'notice' => 'Aviso',
'info' => 'Informação',
'debug' => 'Depuração',
],
];

View File

@@ -0,0 +1,28 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'إعدادات',
'nav.log.label' => 'سجل النشاطات',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'سجل النشاط',
'resource.label.logs' => 'سجل النشاطات',
'resource.label.user' => 'المستخدم',
'resource.label.subject' => 'الموضوع',
'resource.label.subject_type' => 'نوع الموضوع',
'resource.label.description' => 'الوصف',
'resource.label.type' => 'النوع',
'resource.label.event' => 'الحدث',
'resource.label.logged_at' => 'مسجل في',
'resource.label.properties' => 'خصائص',
'resource.label.old' => 'قديم',
'resource.label.new' => 'جديد',
'resource.label.old_value' => 'قيمة قديمة',
'resource.label.new_value' => 'قيمة جديدة',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Nastavení',
'nav.log.label' => 'Záznam aktivit',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Záznam aktivit',
'resource.label.logs' => 'Záznamy aktivit',
'resource.label.user' => 'Uživatel',
'resource.label.subject' => 'Subjekt',
'resource.label.subject_type' => 'Typ subjektu',
'resource.label.description' => 'Popis',
'resource.label.type' => 'Typ',
'resource.label.event' => 'Událost',
'resource.label.logged_at' => 'Zaznamenáno v',
'resource.label.properties' => 'Vlastnosti',
'resource.label.old' => 'Původní',
'resource.label.new' => 'Nové',
'resource.label.old_value' => 'Původní hodnota',
'resource.label.new_value' => 'Nová hodnota',
'resource.label.properties_hint' => 'Může být klíč nebo hodnota',
'resource.label.old_attributes' => 'Původní atribut nebo hodnota: ',
'resource.label.new_attributes' => 'Nový atribut nebo hodnota: ',
];

View File

@@ -0,0 +1,25 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Settings',
'nav.log.label' => 'Activity Log',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Aktivitätslog',
'resource.label.logs' => 'Aktivitätslog',
'resource.label.user' => 'Nutzer',
'resource.label.subject' => 'Thema',
'resource.label.subject_type' => 'Thematyp',
'resource.label.description' => 'Beschreibung',
'resource.label.type' => 'Typ',
'resource.label.event' => 'Event',
'resource.label.logged_at' => 'Protokolliert am',
'resource.label.properties' => 'Eigenschaften',
'resource.label.old' => 'Alt',
'resource.label.new' => 'Neu',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Settings',
'nav.log.label' => 'Activity Log',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Activity log',
'resource.label.logs' => 'Activity logs',
'resource.label.user' => 'User',
'resource.label.subject' => 'Subject',
'resource.label.subject_type' => 'Subject type',
'resource.label.description' => 'Description',
'resource.label.type' => 'Type',
'resource.label.event' => 'Event',
'resource.label.logged_at' => 'Logged At',
'resource.label.properties' => 'Properties',
'resource.label.old' => 'Old',
'resource.label.new' => 'New',
'resource.label.old_value' => 'Old Value',
'resource.label.new_value' => 'New Value',
'resource.label.properties_hint' => 'Can be key or value',
'resource.label.old_attributes' => 'Old Attribute or Value: ',
'resource.label.new_attributes' => 'New Attribute or Value: ',
];

View File

@@ -0,0 +1,25 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Settings',
'nav.log.label' => 'Bitácora de actividad',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Registro de actividad',
'resource.label.logs' => 'Registros de actividad',
'resource.label.user' => 'Usuario',
'resource.label.subject' => 'Asunto',
'resource.label.subject_type' => 'Tipo de asunto',
'resource.label.description' => 'Descripción',
'resource.label.type' => 'Tipo',
'resource.label.event' => 'Evento',
'resource.label.logged_at' => 'Registrado el',
'resource.label.properties' => 'Propiedades',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'تنظیمات',
'nav.log.label' => 'لاگ فعالیت ها',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'لاگ فعالیت',
'resource.label.logs' => 'لاگ فعالیت ها',
'resource.label.user' => 'کاربر',
'resource.label.subject' => 'موضوع',
'resource.label.subject_type' => 'نوع موضوع',
'resource.label.description' => 'شرح',
'resource.label.type' => 'نوع',
'resource.label.event' => 'رویداد',
'resource.label.logged_at' => 'لاگ شده در',
'resource.label.properties' => 'خصوصیات',
'resource.label.old' => 'قدیمی',
'resource.label.new' => 'جدید',
'resource.label.old_value' => 'مقدار قدیمی',
'resource.label.new_value' => 'مقدار جدید',
'resource.label.properties_hint' => 'می‌تواند کلید یا مقدار باشد',
'resource.label.old_attributes' => 'کلید یا مقدار قدیمی: ',
'resource.label.new_attributes' => 'کلید یا مقدار جدید: ',
];

View File

@@ -0,0 +1,25 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Paramètres',
'nav.log.label' => 'Journal d\'activités',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Journal d\'activité',
'resource.label.logs' => 'Journal d\'activités',
'resource.label.user' => 'Utilisateur',
'resource.label.subject' => 'Sujet',
'resource.label.subject_type' => 'Type de sujet',
'resource.label.description' => 'Description',
'resource.label.type' => 'Type',
'resource.label.event' => 'Événement',
'resource.label.logged_at' => 'Enregistré à',
'resource.label.properties' => 'Propriétés',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Կարգավորումներ',
'nav.log.label' => 'Գործողությունների մատյան',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Գործողությունների մատյան',
'resource.label.logs' => 'Գործողությունների մատյաններ',
'resource.label.user' => 'Օգտագործող',
'resource.label.subject' => 'Սուբյեկտ',
'resource.label.subject_type' => 'Սուբյեկտի տեսակ',
'resource.label.description' => 'Նկարագրություն',
'resource.label.type' => 'Տեսակ',
'resource.label.event' => 'Իրադարձություն',
'resource.label.logged_at' => 'Գրանցման ամսաթիվ',
'resource.label.properties' => 'Հատկություններ',
'resource.label.old' => 'Հին',
'resource.label.new' => 'Նոր',
'resource.label.old_value' => 'Հին արժեք',
'resource.label.new_value' => 'Նոր արժեք',
'resource.label.properties_hint' => 'Կարող է լինել բանալի կամ արժեք',
'resource.label.old_attributes' => 'Հին հատկանիշ կամ արժեք՝',
'resource.label.new_attributes' => 'Նոր հատկանիշ կամ արժեք՝',
];

View File

@@ -0,0 +1,28 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Pengaturan',
'nav.log.label' => 'Catatan Aktivitas',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Catatan aktivitas',
'resource.label.logs' => 'Catatan aktivitas',
'resource.label.user' => 'Pengguna',
'resource.label.subject' => 'Subjek',
'resource.label.subject_type' => 'Tipe Subjek',
'resource.label.description' => 'Deskripsi',
'resource.label.type' => 'Jenis',
'resource.label.event' => 'Kegiatan',
'resource.label.logged_at' => 'Tercatat pada',
'resource.label.properties' => 'Properti',
'resource.label.old' => 'Lama',
'resource.label.new' => 'Baru',
'resource.label.old_value' => 'Nilai Lama',
'resource.label.new_value' => 'Nilai Baru',
];

View File

@@ -0,0 +1,28 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Impostazioni',
'nav.log.label' => 'Registro attività',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Log',
'resource.label.logs' => 'Log',
'resource.label.user' => 'User',
'resource.label.subject' => 'Soggetto',
'resource.label.subject_type' => 'Tipo di soggetto',
'resource.label.description' => 'Descrizione',
'resource.label.type' => 'Tipologia',
'resource.label.event' => 'Evento',
'resource.label.logged_at' => 'Registrato Il',
'resource.label.properties' => 'Proprietà',
'resource.label.old' => 'Prima',
'resource.label.new' => 'Ora',
'resource.label.old_value' => 'Valore Precedente',
'resource.label.new_value' => 'Nuovo Valore',
];

View File

@@ -0,0 +1,28 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'პარამეტრები',
'nav.log.label' => 'საქმიანობის ჟურნალი',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'საქმიანობის ჟურნალი',
'resource.label.logs' => 'საქმიანობის ჟურნალი',
'resource.label.user' => 'მომხმარებელი',
'resource.label.subject' => 'საგანი',
'resource.label.subject_type' => 'საგნის ტიპი',
'resource.label.description' => 'აღწერილობა',
'resource.label.type' => 'ტიპი',
'resource.label.event' => 'ქმედება',
'resource.label.logged_at' => 'ავტორიზირებული როგორც',
'resource.label.properties' => 'Თვისებები',
'resource.label.old' => 'ძველი',
'resource.label.new' => 'ახალი',
'resource.label.old_value' => 'ძველი მნიშვნელობა',
'resource.label.new_value' => 'ახალი მნიშვნელობა',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => '설정',
'nav.log.label' => '활동 로그',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => '활동 로그',
'resource.label.logs' => '활동 로그',
'resource.label.user' => '사용자',
'resource.label.subject' => '주제',
'resource.label.subject_type' => '주제 유형',
'resource.label.description' => '설명',
'resource.label.type' => '유형',
'resource.label.event' => '이벤트',
'resource.label.logged_at' => '기록된 시간',
'resource.label.properties' => '속성',
'resource.label.old' => '이전',
'resource.label.new' => '새로운',
'resource.label.old_value' => '이전 값',
'resource.label.new_value' => '새로운 값',
'resource.label.properties_hint' => '키 또는 값이 될 수 있습니다',
'resource.label.old_attributes' => '이전 속성 또는 값: ',
'resource.label.new_attributes' => '새로운 속성 또는 값: ',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Instellingen',
'nav.log.label' => 'Activiteitenlog',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Activiteiten log',
'resource.label.logs' => 'Activiteiten logs',
'resource.label.user' => 'Gebruiker',
'resource.label.subject' => 'Onderwerp',
'resource.label.subject_type' => 'Onderwerp type',
'resource.label.description' => 'Beschrijving',
'resource.label.type' => 'Type',
'resource.label.event' => 'Gebeurtenis',
'resource.label.logged_at' => 'Gelogd op',
'resource.label.properties' => 'Eigenschappen',
'resource.label.old' => 'Oud',
'resource.label.new' => 'Nieuw',
'resource.label.old_value' => 'Oude waarde',
'resource.label.new_value' => 'Nieuwe waarde',
'resource.label.properties_hint' => 'Kan sleutel of waarde zijn',
'resource.label.old_attributes' => 'Oude attribuut of waarde: ',
'resource.label.new_attributes' => 'Nieuwe attribuut of waarde: ',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Configurações',
'nav.log.label' => 'Registro de atividade',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Registro de atividade',
'resource.label.logs' => 'Registros de atividade',
'resource.label.user' => 'Usuário',
'resource.label.subject' => 'Assunto',
'resource.label.subject_type' => 'Tipo de assunto',
'resource.label.description' => 'Descrição',
'resource.label.type' => 'Tipo',
'resource.label.event' => 'Evento',
'resource.label.logged_at' => 'Registrado em',
'resource.label.properties' => 'Propriedades',
'resource.label.old' => 'Antigo',
'resource.label.new' => 'Novo',
'resource.label.old_value' => 'Valor antigo',
'resource.label.new_value' => 'Novo valor',
'resource.label.properties_hint' => 'Pode ser uma chave ou valor',
'resource.label.old_attributes' => 'Atributo ou Valor Antigo: ',
'resource.label.new_attributes' => 'Atributo ou Valor Novo: ',
];

View File

@@ -0,0 +1,24 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Настройки',
'nav.log.label' => 'Лог действий',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Лога действий',
'resource.label.logs' => 'Журнал активности',
'resource.label.user' => 'Юзер',
'resource.label.subject' => 'Объект',
'resource.label.subject_type' => 'Тип объекта',
'resource.label.description' => 'Описание',
'resource.label.type' => 'Тип',
'resource.label.event' => 'Событие',
'resource.label.logged_at' => 'Время',
'resource.label.properties' => 'Свойства',
];

View File

@@ -0,0 +1,31 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigácia & Zdroje
|--------------------------------------------------------------------------
*/
'nav.group' => 'Nastavenia',
'nav.log.label' => 'Záznam aktivity',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Záznam aktivity',
'resource.label.logs' => 'Záznamy aktivity',
'resource.label.user' => 'Používateľ',
'resource.label.subject' => 'Predmet',
'resource.label.subject_type' => 'Typ predmetu',
'resource.label.description' => 'Popis',
'resource.label.type' => 'Typ',
'resource.label.event' => 'Udalosť',
'resource.label.logged_at' => 'Zaznamenané',
'resource.label.properties' => 'Vlastnosti',
'resource.label.old' => 'Starý',
'resource.label.new' => 'Nový',
'resource.label.old_value' => 'Stará hodnota',
'resource.label.new_value' => 'Nová hodnota',
'resource.label.properties_hint' => 'Môže byť kľúč alebo hodnota',
'resource.label.old_attributes' => 'Starý atribút alebo hodnota: ',
'resource.label.new_attributes' => 'Nový atribút alebo hodnota: ',
];

View File

@@ -0,0 +1,28 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Ayarlar',
'nav.log.label' => 'Aktivite Günlüğü',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Aktivite Günlüğü',
'resource.label.logs' => 'Aktivite Günlükleri',
'resource.label.user' => 'Kullanıcı',
'resource.label.subject' => 'Nesne',
'resource.label.subject_type' => 'Nesne Tipi',
'resource.label.description' => 'Açıklama',
'resource.label.type' => 'Tip',
'resource.label.event' => 'Olay',
'resource.label.logged_at' => 'Kayıt Zamanı',
'resource.label.properties' => 'Değerler',
'resource.label.old' => 'Eski',
'resource.label.new' => 'Yeni',
'resource.label.old_value' => 'Eski Değerler',
'resource.label.new_value' => 'Yeni Değerler',
];

View File

@@ -0,0 +1,25 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Налаштування',
'nav.log.label' => 'Лог дій',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Лога дій',
'resource.label.logs' => 'Журнал активності',
'resource.label.user' => 'Юзер',
'resource.label.subject' => 'Об\'єкт',
'resource.label.subject_type' => 'Тип об\'єкта',
'resource.label.description' => 'Опис',
'resource.label.type' => 'Тип',
'resource.label.event' => 'Подія',
'resource.label.logged_at' => 'Час',
'resource.label.properties' => 'Властивості',
];

View File

@@ -0,0 +1,25 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Navigation & Resource
|--------------------------------------------------------------------------
*/
'nav.group' => 'Cài đặt',
'nav.log.label' => 'Nhật ký hoạt động',
'nav.log.icon' => 'heroicon-o-clipboard-document-list',
'resource.label.log' => 'Nhật ký hoạt động',
'resource.label.logs' => 'Nhật ký hoạt động',
'resource.label.user' => 'Người dùng',
'resource.label.subject' => 'Chủ đề',
'resource.label.subject_type' => 'Loại chủ đề',
'resource.label.description' => 'Mô tả',
'resource.label.type' => 'Kiểu',
'resource.label.event' => 'Sự kiện',
'resource.label.logged_at' => 'Lúc',
'resource.label.properties' => 'Thuộc tính',
];

View File

@@ -0,0 +1,20 @@
<x-filament-panels::page>
@if ($this->getTableRecords()->count() > 0)
<div class="w-full">
<div class="flex flex-col 2xl:flex-row gap-6">
<div class="2xl:w-1/3 flex items-center justify-center">
<div class="w-full max-w-sm">
@livewire(\Boquizo\FilamentLogViewer\Widgets\StatsOverviewWidget::class)
</div>
</div>
<div class="2xl:w-2/3 w-full">
@livewire(\Boquizo\FilamentLogViewer\Widgets\IconsWidget::class)
</div>
</div>
</div>
@endif
<div class="w-full mt-2">
{{ $this->table }}
</div>
</x-filament-panels::page>

View File

@@ -0,0 +1,49 @@
<style>
.fi-ta-header-toolbar {
display: none;
}
</style>
<div class="filament-tables-table overflow-hidden bg-white dark:bg-gray-900 shadow xs:rounded-lg">
<div class="px-6 py-4 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700">
<h3 class="text-md font-semibold text-gray-900 dark:text-gray-100">
{{ __('filament-log-viewer::log.table.detail.title') }}
</h3>
</div>
<div class="px-6 py-4">
<div class="flex items-center py-3 border-b border-gray-200 dark:border-gray-700">
<div class="text-sm font-medium text-gray-900 dark:text-gray-100 w-36 me-3">
{{ __('filament-log-viewer::log.table.detail.file_path') }}:
</div>
<div class="text-sm text-gray-500 dark:text-gray-400">{{ $data->path() }}</div>
</div>
<div class="flex flex-col lg:flex-row justify-between py-3">
<div class="flex items-center py-2">
<div class="text-sm font-medium text-gray-900 dark:text-gray-100 w-36 me-3">
{{ __('filament-log-viewer::log.table.detail.log_entries') }}:
</div>
<div class="text-sm text-gray-500 dark:text-gray-400">{{ $data->entries()->count() }}</div>
</div>
<div class="flex items-center py-2">
<div class="text-sm font-medium text-gray-900 dark:text-gray-100 w-36 me-3">
{{ __('filament-log-viewer::log.table.detail.size') }}:
</div>
<div class="text-sm text-gray-500 dark:text-gray-400">{{ $data->size() }}</div>
</div>
<div class="flex items-center py-2">
<div class="text-sm font-medium text-gray-900 dark:text-gray-100 w-36 me-3">
{{ __('filament-log-viewer::log.table.detail.created_at') }}:
</div>
<div class="text-sm text-gray-500 dark:text-gray-400">{{ $data->createdAt() }}</div>
</div>
<div class="flex items-center py-2">
<div class="text-sm font-medium text-gray-900 dark:text-gray-100 w-36 me-3">
{{ __('filament-log-viewer::log.table.detail.updated_at') }}:
</div>
<div class="text-sm text-gray-500 dark:text-gray-400">{{ $data->updatedAt() }}</div>
</div>
</div>
</div>
</div>
<div class="py-2 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700">
</div>

View File

@@ -0,0 +1,10 @@
{!! $style !!}
<div class="w-full bg-gray-200 dark:bg-gray-700 h-1 rounded-full overflow-hidden shadow-inner">
<div class="h-full rounded-full transition-width duration-400 ease-in-out"
style="width: {{ $percent }}%; background-color: {{ $progressColor }};">
</div>
</div>
<div class="items-center mt-4 w-full">
<span class="w-full text-gray-800 dark:text-gray-200">{{ $percent }}% </span>
</div>

View File

@@ -0,0 +1,5 @@
<x-filament-panels::page>
<div class="flex flex-col gap-y-6">
{{ $this->content }}
</div>
</x-filament-panels::page>

View File

View File

@@ -0,0 +1,8 @@
<a type="button"
href="{{ route('filament.' . Filament\Facades\Filament::getCurrentPanel()->getId() . '.mails.attachment.download', [
'tenant' => Filament\Facades\Filament::getTenant(),
'mail' => $getState()->mail_id,
'attachment' => $getState()->id,
'filename' => $getState()->filename,
]) }}"
class="rounded-md bg-white px-3.5 py-2.5 text-sm font-semibold cursor-pointer text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50">Download</a>

View File

@@ -0,0 +1,5 @@
<div class="prose prose-sm sm:prose lg:prose-lg xl:prose-2xl max-w-full overflow-x-auto">
<pre class="whitespace-pre-wrap break-words">
<code class="language-html">{{ $html }}</code>
</pre>
</div>

View File

@@ -0,0 +1,6 @@
<div class="w-full h-screen">
<iframe
src="{{ route('filament.' . Filament\Facades\Filament::getCurrentPanel()->getId() . '.mails.preview', ['tenant' => Filament\Facades\Filament::getTenant(), 'mail' => $mail->id]) }}"
class="w-full h-full max-w-full" style="width: 100vw; height: 100vh; border: none;">
</iframe>
</div>