Skip to content

Commit 14dd852

Browse files
committed
Refactor to solution-forest/filament-tree: Add desc
1 parent 30f63f6 commit 14dd852

File tree

2 files changed

+43
-5
lines changed

2 files changed

+43
-5
lines changed

src/Models/MenuItem.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ class MenuItem extends Model
4343

4444
public $translatable = ['label'];
4545

46+
/*
47+
* The filament-tree package iterates over the tree and it is too complicated to implement eager fetching
48+
* on a recursive children relationship.
49+
*/
50+
protected $with = ['linkable'];
51+
4652
public function getTable()
4753
{
4854
return FilamentFlexibleContentBlockPages::config()->getMenuItemsTable();

src/Resources/MenuResource/Pages/ManageMenuItems.php

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Filament\Actions\CreateAction;
66
use Filament\Actions\LocaleSwitcher;
77
use Illuminate\Database\Eloquent\Model;
8+
use Illuminate\Support\HtmlString;
89
use SolutionForest\FilamentTree\Actions\DeleteAction;
910
use SolutionForest\FilamentTree\Actions\EditAction;
1011
use SolutionForest\FilamentTree\Concern\TreeRecords\Translatable;
@@ -39,11 +40,6 @@ public function getModel(): string
3940
return FilamentFlexibleContentBlockPages::config()->getMenuItemModel()::class;
4041
}
4142

42-
public function getTranslatableLocales(): array
43-
{
44-
return static::getResource()::getTranslatableLocales();
45-
}
46-
4743
public function getTitle(): string
4844
{
4945
return flexiblePagesTrans('menu_items.manage.title', [
@@ -111,6 +107,42 @@ public function getTreeRecordTitle(?Model $record = null): string
111107
return $record->getDisplayLabel($locale);
112108
}
113109

110+
public function getTreeRecordDescription(?Model $record = null): string|HtmlString|null
111+
{
112+
/** @var MenuItem $record */
113+
if (! $record) {
114+
return null;
115+
}
116+
117+
$description = $this->getMenuItemTypeDescription($record);
118+
119+
// Add visibility indicator if hidden
120+
if (! $record->is_visible) {
121+
$hiddenText = flexiblePagesTrans('menu_items.status.hidden');
122+
$eyeSlashIcon = svg('heroicon-o-eye-slash', 'w-4 h-4 inline text-warning-600 dark:text-warning-400')->toHtml();
123+
$description .= " • <span class=\"text-warning-600 dark:text-warning-400\">{$eyeSlashIcon} {$hiddenText}</span>";
124+
}
125+
126+
return new HtmlString($description);
127+
}
128+
129+
protected function getMenuItemTypeDescription(MenuItem $record): string
130+
{
131+
if ($record->linkable_type && $record->linkable) {
132+
return flexiblePagesTrans('menu_items.tree.linked_to') . ' ' . class_basename($record->linkable_type);
133+
}
134+
135+
if ($record->url) {
136+
return flexiblePagesTrans('menu_items.tree.external_url') . ': ' . $record->url;
137+
}
138+
139+
if ($record->route) {
140+
return flexiblePagesTrans('menu_items.tree.route') . ': ' . $record->route;
141+
}
142+
143+
return flexiblePagesTrans('menu_items.tree.no_link');
144+
}
145+
114146
public function getTreeRecordIcon(?\Illuminate\Database\Eloquent\Model $record = null): ?string
115147
{
116148
// TODO

0 commit comments

Comments
 (0)