Skip to content

Commit fff2e3d

Browse files
committed
Page resource + translations + panel
1 parent 4980e25 commit fff2e3d

16 files changed

+379
-11
lines changed

composer.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@
3737
"psr-4": {
3838
"Statikbe\\FilamentFlexibleContentBlockPages\\": "src/",
3939
"Statikbe\\FilamentFlexibleContentBlockPages\\Database\\Factories\\": "database/factories/"
40-
}
40+
},
41+
"files": [
42+
"src/helpers.php"
43+
]
4144
},
4245
"autoload-dev": {
4346
"psr-4": {
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
<?php
22

3-
// config for Statikbe/LaravelFilamentFlexibleContentBlockPages
3+
// config for Statikbe/FilamentFlexibleContentBlockPages
44
return [
55
'models' => [
6-
'page' => \Statikbe\LaravelFilamentFlexibleContentBlockPages\Models\Page::class,
6+
'page' => \Statikbe\FilamentFlexibleContentBlockPages\Models\Page::class,
77
],
88

99
'table_names' => [
1010
'pages' => 'pages',
1111
'authors' => 'users',
1212
],
13+
14+
'resources' => [
15+
'pages' => \Statikbe\FilamentFlexibleContentBlockPages\Resources\PageResource::class,
16+
],
17+
18+
'panel' => [
19+
'path' => 'content',
20+
],
1321
];

database/factories/ModelFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Statikbe\LaravelFilamentFlexibleContentBlockPages\Database\Factories;
3+
namespace Statikbe\FilamentFlexibleContentBlockPages\Database\Factories;
44

55
use Illuminate\Database\Eloquent\Factories\Factory;
66

database/migrations/create_pages_table.php.stub

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use Illuminate\Database\Migrations\Migration;
44
use Illuminate\Database\Schema\Blueprint;
55
use Illuminate\Support\Facades\Schema;
6-
use Statikbe\LaravelFilamentFlexibleContentBlockPages\Facades\FilamentFlexibleContentBlockPages;
6+
use Statikbe\FilamentFlexibleContentBlockPages\Facades\FilamentFlexibleContentBlockPages;
77

88
return new class extends Migration
99
{
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
3+
return [
4+
5+
];
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
return [
4+
'pages' => [
5+
'lbl' => 'Pagina',
6+
'plural_lbl' => 'Pagina\'s',
7+
'nav_group' => 'Website',
8+
'tabs' => [
9+
'lbl' => 'Pagina',
10+
'general' => 'Algemeen',
11+
'content' => 'Inhoud',
12+
'seo' => 'Search engine optimalisatie',
13+
'overview' => 'Overzicht',
14+
],
15+
'table' => [
16+
'created_at_col' => 'Aangemaakt op',
17+
]
18+
],
19+
20+
];

src/FilamentFlexibleContentBlockPagesConfig.php

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class FilamentFlexibleContentBlockPagesConfig
1010

1111
public function __construct()
1212
{
13-
$this->pageModel = $this->getConfig('models.page', Page::class);
13+
$this->pageModel = $this->packageConfig('models.page', Page::class);
1414
}
1515

1616
public function getPageModel(): Page
@@ -20,15 +20,28 @@ public function getPageModel(): Page
2020

2121
public function getAuthorsTable(): string
2222
{
23-
return $this->getConfig('table_names.authors', 'users');
23+
return $this->packageConfig('table_names.authors', 'users');
2424
}
2525

2626
public function getPagesTable(): string
2727
{
28-
return $this->getConfig('table_names.pages', 'pages');
28+
return $this->packageConfig('table_names.pages', 'pages');
2929
}
3030

31-
private function getConfig(string $configKey, $default = null): mixed
31+
/**
32+
* @return array<class-string<resource>>
33+
*/
34+
public function getResources(): array
35+
{
36+
return $this->packageConfig('resources');
37+
}
38+
39+
public function getPanelPath(): string
40+
{
41+
return $this->packageConfig('panel.path', 'content');
42+
}
43+
44+
private function packageConfig(string $configKey, $default = null): mixed
3245
{
3346
return config('filament-flexible-content-block-pages.' . $configKey);
3447
}

src/FilamentFlexibleContentBlockPagesServiceProvider.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public function configurePackage(Package $package): void
1818
->name('laravel-filament-flexible-content-block-pages')
1919
->hasConfigFile()
2020
->hasViews()
21-
->hasMigration('create_pages_table');
21+
->hasMigration('create_pages_table')
22+
->hasTranslations();
2223
}
2324
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace Statikbe\FilamentFlexibleContentBlockPages;
4+
5+
use Filament\Panel;
6+
use Filament\PanelProvider;
7+
use Statikbe\FilamentFlexibleContentBlockPages\Facades\FilamentFlexibleContentBlockPages;
8+
9+
class FlexibleContentBlockPagesPanel extends PanelProvider
10+
{
11+
public function panel(Panel $panel): Panel
12+
{
13+
return $panel
14+
->id('filament-flexible-content-block-pages')
15+
->path(FilamentFlexibleContentBlockPages::config()->getPanelPath())
16+
->plugin(FlexibleContentBlockPagesPlugin::make());
17+
}
18+
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<?php
2+
3+
namespace Statikbe\FilamentFlexibleContentBlockPages;
4+
5+
use Filament\Contracts\Plugin;
6+
use Filament\Panel;
7+
use Statikbe\FilamentFlexibleContentBlockPages\Facades\FilamentFlexibleContentBlockPages;
8+
9+
class FlexibleContentBlockPagesPlugin implements Plugin
10+
{
11+
protected static self $instance;
12+
13+
protected static array $resources;
14+
15+
protected static array $pages = [];
16+
17+
protected static array $widgets = [];
18+
19+
public function getId(): string
20+
{
21+
return 'filament-flexible-content-block-pages';
22+
}
23+
24+
public function register(Panel $panel): void
25+
{
26+
$panel
27+
->resources(self::getResources())
28+
->pages(self::getPages())
29+
->widgets(self::getWidgets());
30+
}
31+
32+
public function boot(Panel $panel): void
33+
{
34+
//
35+
}
36+
37+
public static function make(): static
38+
{
39+
return app(static::class);
40+
}
41+
42+
public static function get(): self
43+
{
44+
if (isset(self::$instance)) {
45+
return self::$instance;
46+
}
47+
48+
$instance = filament(app(static::class)->getId());
49+
50+
// Check if the instance is of the expected type for phpstan:
51+
if (!$instance instanceof FlexibleContentBlockPagesPlugin) {
52+
throw new \Exception('Expected a FlexibleContentBlocksPagesPlugin instance');
53+
}
54+
55+
self::$instance = $instance;
56+
57+
return $instance;
58+
}
59+
60+
/**
61+
* @return array<class-string<resource>>
62+
*/
63+
public static function getResources(): array
64+
{
65+
static::$resources ??= FilamentFlexibleContentBlockPages::config()->getResources();
66+
67+
return static::$resources;
68+
}
69+
70+
/**
71+
* @return array<class-string<\Filament\Pages\Page>>
72+
*/
73+
public static function getPages(): array
74+
{
75+
return static::$pages;
76+
}
77+
78+
/**
79+
* @return array<class-string<\Filament\Widgets\Widget>>
80+
*/
81+
public static function getWidgets(): array
82+
{
83+
return static::$widgets;
84+
}
85+
}

0 commit comments

Comments
 (0)