Skip to content

Commit 0a2382f

Browse files
committed
fix: reduce section seeding, add WYSIWYG to short description, allow slug auto-generation
1 parent dc0a915 commit 0a2382f

6 files changed

Lines changed: 26 additions & 21 deletions

File tree

database/seeders/CmsSeeder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ protected function seedForTenant($tenant): void
3030
{
3131
$sections = Section::factory()
3232
->forSite($tenant)
33-
->count(5)
33+
->count(2)
3434
->create();
3535

3636
$sections->each(function (Section $section): void {
@@ -48,7 +48,7 @@ protected function seedForTenant($tenant): void
4848
protected function seedWithoutTenancy(): void
4949
{
5050
$sections = Section::factory()
51-
->count(5)
51+
->count(2)
5252
->create();
5353

5454
$sections->each(function (Section $section): void {

src/Admin/Filament/Resources/BannerPositionResource/RelationManagers/BannerRelationManager.php

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
use Eclipse\Cms\Models\Banner;
66
use Eclipse\Cms\Rules\BannerImageDimensionRule;
7-
use Eclipse\Common\Filament\Tables\Columns\ImageColumn;
87
use Eclipse\Common\Helpers\MediaHelper;
98
use Filament\Actions;
109
use Filament\Forms;
@@ -14,6 +13,7 @@
1413
use Filament\Schemas\Components\Utilities\Get;
1514
use Filament\Schemas\Schema;
1615
use Filament\Tables;
16+
use Filament\Tables\Columns\ImageColumn;
1717
use Filament\Tables\Table;
1818
use Illuminate\Database\Eloquent\Builder;
1919
use Illuminate\Database\Eloquent\SoftDeletingScope;
@@ -45,7 +45,6 @@ protected function getDynamicImageColumns(): array
4545
return $imageTypes->map(function ($imageType) {
4646
return ImageColumn::make("image_type_{$imageType->id}")
4747
->label($imageType->name)
48-
->preview()
4948
->getStateUsing(function (Banner $record) use ($imageType) {
5049
$locale = $this->activeLocale ?? app()->getLocale();
5150
$image = $record->images->where('type_id', $imageType->id)->first();
@@ -64,12 +63,6 @@ protected function getDynamicImageColumns(): array
6463

6564
return null;
6665
})
67-
->title(function (Banner $record) use ($imageType) {
68-
$locale = $this->activeLocale ?? app()->getLocale();
69-
70-
return $record->getTranslation('name', $locale).' - '.$imageType->name;
71-
})
72-
->link(fn (Banner $record) => $record->link ?? '#')
7366
->sortable(false);
7467
})->toArray();
7568
}

src/Admin/Filament/Resources/PageResource.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
use Filament\Forms\Components\Placeholder;
1414
use Filament\Forms\Components\RichEditor;
1515
use Filament\Forms\Components\Select;
16-
use Filament\Forms\Components\Textarea;
1716
use Filament\Forms\Components\TextInput;
1817
use Filament\Resources\Resource;
1918
use Filament\Schemas\Components\Section;
@@ -77,9 +76,9 @@ public static function form(Schema $schema): Schema
7776

7877
TextInput::make('sef_key')
7978
->label('URL Slug')
80-
->required()
8179
->maxLength(255)
8280
->placeholder('auto-generated-from-title')
81+
->helperText('Leave empty to auto-generate from title')
8382
->columnSpan(2),
8483

8584
Select::make('status')
@@ -102,10 +101,15 @@ public static function form(Schema $schema): Schema
102101
Section::make('Content')
103102
->columnSpanFull()
104103
->schema([
105-
Textarea::make('short_text')
104+
RichEditor::make('short_text')
106105
->label('Short Description')
107106
->placeholder('Brief summary or excerpt...')
108-
->rows(3)
107+
->toolbarButtons([
108+
'bold',
109+
'italic',
110+
'underline',
111+
'link',
112+
])
109113
->columnSpanFull(),
110114

111115
RichEditor::make('long_text')

src/Models/Menu/Item.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Illuminate\Database\Eloquent\Factories\HasFactory;
1212
use Illuminate\Database\Eloquent\Model;
1313
use Illuminate\Database\Eloquent\Relations\BelongsTo;
14+
use Illuminate\Database\Eloquent\Relations\HasMany;
1415
use Illuminate\Database\Eloquent\Relations\MorphTo;
1516
use Illuminate\Database\Eloquent\SoftDeletes;
1617
use SolutionForest\FilamentTree\Concern\ModelTree;
@@ -82,6 +83,13 @@ public function parent(): BelongsTo
8283
return $this->belongsTo(Item::class, 'parent_id');
8384
}
8485

86+
public function children(): HasMany
87+
{
88+
return $this->hasMany(static::class, $this->determineParentColumnName())
89+
->with('children')
90+
->orderBy($this->determineOrderColumnName());
91+
}
92+
8593
public function linkable(): MorphTo
8694
{
8795
return $this->morphTo('linkable', 'linkable_class', 'linkable_id');

tests/Unit/MenuItemTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,9 @@
236236

237237
it('deleting parent item cascades to delete children', function () {
238238
$menu = Menu::factory()->create();
239-
$parent = Item::factory()->create(['menu_id' => $menu->id]);
240-
$child1 = Item::factory()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id]);
241-
$child2 = Item::factory()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id]);
239+
$parent = Item::factory()->active()->create(['menu_id' => $menu->id]);
240+
$child1 = Item::factory()->active()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id]);
241+
$child2 = Item::factory()->active()->create(['menu_id' => $menu->id, 'parent_id' => $parent->id]);
242242

243243
expect(Item::withoutGlobalScopes()->where('parent_id', $parent->id)->count())->toBe(2);
244244
expect($child1->trashed())->toBeFalse();
@@ -269,10 +269,10 @@
269269

270270
it('cascading delete only affects children, not siblings', function () {
271271
$menu = Menu::factory()->create();
272-
$parent1 = Item::factory()->create(['menu_id' => $menu->id]);
273-
$parent2 = Item::factory()->create(['menu_id' => $menu->id]);
274-
$child1 = Item::factory()->create(['menu_id' => $menu->id, 'parent_id' => $parent1->id]);
275-
$child2 = Item::factory()->create(['menu_id' => $menu->id, 'parent_id' => $parent2->id]);
272+
$parent1 = Item::factory()->active()->create(['menu_id' => $menu->id]);
273+
$parent2 = Item::factory()->active()->create(['menu_id' => $menu->id]);
274+
$child1 = Item::factory()->active()->create(['menu_id' => $menu->id, 'parent_id' => $parent1->id]);
275+
$child2 = Item::factory()->active()->create(['menu_id' => $menu->id, 'parent_id' => $parent2->id]);
276276

277277
$parent1->delete();
278278

workbench/database/database.sqlite

Whitespace-only changes.

0 commit comments

Comments
 (0)