Skip to content

Commit bc01024

Browse files
committed
Add page property is undeletable
1 parent 9ac2a64 commit bc01024

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

database/migrations/create_filament_flexible_content_block_pages_table.php.stub

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ return new class extends Migration
5959
$table->foreign('parent_id')
6060
->references('id')
6161
->on($pageTable)
62-
->onDelete('set null');;
62+
->onDelete('set null');
63+
64+
// Deletable:
65+
$table->boolean('is_undeletable')->default(false);
6366

6467
$table->timestamps();
6568
});

src/Models/Page.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
use Statikbe\FilamentFlexibleContentBlocks\Models\Contracts\HasSEOAttributes;
2929
use Statikbe\FilamentFlexibleContentBlocks\Models\Contracts\Linkable;
3030

31+
/**
32+
* @property bool $is_undeletable
33+
*/
3134
class Page extends Model implements HasCode, HasContentBlocks, HasHeroImageAttributes, HasIntroAttribute, HasMedia, HasMediaAttributes, HasOverviewAttributes, HasPageAttributes, HasParent, HasSEOAttributes, Linkable
3235
{
3336
use HasAuthorAttributeTrait;
@@ -46,6 +49,8 @@ class Page extends Model implements HasCode, HasContentBlocks, HasHeroImageAttri
4649

4750
const HOME_PAGE = 'HOME';
4851

52+
protected $fillable = ['is_undeletable'];
53+
4954
public function getTable()
5055
{
5156
return FilamentFlexibleContentBlockPages::config()->getPagesTable();
@@ -72,4 +77,10 @@ public function isHomePage(): bool
7277
{
7378
return $this->code === static::HOME_PAGE;
7479
}
80+
81+
public function isDeletable(): bool
82+
{
83+
// TODO improve once the authorisation is implemented:
84+
return ! $this->is_undeletable;
85+
}
7586
}

src/Resources/PageResource/Pages/EditPage.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Filament\Resources\Pages\EditRecord;
88
use Statikbe\FilamentFlexibleContentBlockPages\Facades\FilamentFlexibleContentBlockPages;
99
use Statikbe\FilamentFlexibleContentBlockPages\FilamentFlexibleContentBlockPagesConfig;
10+
use Statikbe\FilamentFlexibleContentBlockPages\Models\Page;
1011
use Statikbe\FilamentFlexibleContentBlocks\Filament\Pages\EditRecord\Concerns\TranslatableWithMedia;
1112
use Statikbe\FilamentFlexibleContentBlocks\Filament\Resource\Pages\Actions\CopyContentBlocksToLocalesAction;
1213

@@ -24,7 +25,8 @@ protected function getActions(): array
2425
return [
2526
CopyContentBlocksToLocalesAction::make(),
2627
LocaleSwitcher::make(),
27-
DeleteAction::make(),
28+
DeleteAction::make()
29+
->visible(fn (Page $record) => $record->isDeletable()),
2830
];
2931
}
3032

0 commit comments

Comments
 (0)