Tag blog posts and sign them with a member
Tags are named in every language and made from the page form; the byline is the member who signs a post on the site. The public API sends both, filters posts by tag and lists the tags in use. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@ use App\Filament\Resources\Pages\PageResource;
|
||||
use App\Filament\Support\TranslatableTabs;
|
||||
use App\Filament\Support\TranslatedOptionLabel;
|
||||
use App\Models\Page;
|
||||
use App\Models\Tag;
|
||||
use App\Rules\UniqueTranslatedSlug;
|
||||
use App\Support\DuplicateTitles;
|
||||
use Filament\Forms\Components\DateTimePicker;
|
||||
@@ -126,6 +127,39 @@ class PageForm
|
||||
->searchable()
|
||||
->preload(),
|
||||
|
||||
// What the post is about, for the blog to be read by
|
||||
// subject. A missing one is made from here.
|
||||
Select::make('tags')
|
||||
->label(__('panel.tags.plural'))
|
||||
->relationship('tags', 'name->'.config('locales.default'))
|
||||
->getOptionLabelFromRecordUsing(TranslatedOptionLabel::using('name'))
|
||||
->multiple()
|
||||
->searchable()
|
||||
->preload()
|
||||
->createOptionForm([
|
||||
TextInput::make('name')
|
||||
->label(__('panel.tags.fields.name'))
|
||||
->required()
|
||||
->maxLength(80),
|
||||
])
|
||||
->createOptionUsing(function (array $data): int {
|
||||
$locale = (string) config('locales.default');
|
||||
|
||||
return Tag::query()->create([
|
||||
'name' => [$locale => $data['name']],
|
||||
'slug' => [$locale => Str::slug($data['name'])],
|
||||
])->getKey();
|
||||
})
|
||||
->createOptionAction(fn ($action) => $action->authorize('create', Tag::class)),
|
||||
|
||||
// Who signs it on the site, with a link to their profile.
|
||||
Select::make('byline_member_id')
|
||||
->label(__('panel.pages.fields.byline'))
|
||||
->helperText(__('panel.pages.fields.byline_hint'))
|
||||
->relationship('byline', 'name')
|
||||
->searchable()
|
||||
->preload(),
|
||||
|
||||
Select::make('author_id')
|
||||
->label(__('panel.pages.fields.author'))
|
||||
->relationship('author', 'name')
|
||||
|
||||
Reference in New Issue
Block a user