Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@
"datalinx/php-utils": "^2.5",
"eclipsephp/common": "dev-main",
"filament/filament": "^4.0",
"filament/spatie-laravel-translatable-plugin": "^3.3",
"lara-zeus/spatie-translatable": "^1.0",
"spatie/image": "^3.8",
"solution-forest/filament-tree": "^2.1",
"solution-forest/filament-tree": "^3.0",
"spatie/laravel-package-tools": "^1.19"
},
"require-dev": {
Expand Down
4 changes: 2 additions & 2 deletions database/seeders/BannerSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ private function addImages($banner, $type, $suffix): void

$banner->images()->create([
'type_id' => $type->id,
'file' => $hidpiFilename,
'file' => ['en' => $hidpiFilename, 'sl' => $hidpiFilename],
'image_width' => $hidpiWidth,
'image_height' => $hidpiHeight,
'is_hidpi' => true,
Expand All @@ -74,7 +74,7 @@ private function addImages($banner, $type, $suffix): void

$banner->images()->create([
'type_id' => $type->id,
'file' => $regularFilename,
'file' => ['en' => $regularFilename, 'sl' => $regularFilename],
'image_width' => $type->image_width,
'image_height' => $type->image_height,
'is_hidpi' => false,
Expand Down
36 changes: 20 additions & 16 deletions src/Admin/Filament/Resources/BannerPositionResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,26 @@
use BezhanSalleh\FilamentShield\Contracts\HasShieldPermissions;
use Eclipse\Cms\Admin\Filament\Resources\BannerPositionResource\Pages;
use Eclipse\Cms\Models\Banner\Position as BannerPosition;
use Filament\Actions;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Concerns\Translatable;
use Filament\Resources\Resource;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use LaraZeus\SpatieTranslatable\Resources\Concerns\Translatable;

class BannerPositionResource extends Resource implements HasShieldPermissions
{
use Translatable;

protected static ?string $model = BannerPosition::class;

protected static ?string $navigationIcon = 'heroicon-o-photo';
protected static string|\BackedEnum|null $navigationIcon = 'heroicon-o-photo';

protected static ?string $navigationGroup = 'CMS';
protected static string|\UnitEnum|null $navigationGroup = 'CMS';

protected static ?string $modelLabel = 'Banner';

Expand All @@ -44,11 +46,12 @@ public static function getPermissionPrefixes(): array
];
}

public static function form(Form $form): Form
public static function form(Schema $schema): Schema
{
return $form
->schema([
Forms\Components\Section::make('Position')
return $schema
->components([
Section::make('Position')
->columnSpanFull()
->hidden(
fn (string $context): bool => ($context === 'view')
)
Expand All @@ -64,7 +67,8 @@ public static function form(Form $form): Form
->alphaDash(),
]),

Forms\Components\Section::make('Image Types')
Section::make('Image Types')
->columnSpanFull()
->hidden(
fn (string $context): bool => ($context === 'view')
)
Expand Down Expand Up @@ -131,17 +135,17 @@ public static function table(Table $table): Table
->filters([
Tables\Filters\TrashedFilter::make(),
])
->actions([
Tables\Actions\ViewAction::make()
->recordActions([
Actions\ViewAction::make()
->label('Manage banners'),
Tables\Actions\EditAction::make()
Actions\EditAction::make()
->label('Edit position'),
Tables\Actions\DeleteAction::make()
Actions\DeleteAction::make()
->label('Delete position'),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
->toolbarActions([
Actions\BulkActionGroup::make([
Actions\DeleteBulkAction::make(),
]),
]);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
namespace Eclipse\Cms\Admin\Filament\Resources\BannerPositionResource\Pages;

use Eclipse\Cms\Admin\Filament\Resources\BannerPositionResource;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
use LaraZeus\SpatieTranslatable\Actions\LocaleSwitcher;
use LaraZeus\SpatieTranslatable\Resources\Pages\CreateRecord\Concerns\Translatable;

class CreateBannerPosition extends CreateRecord
{
use CreateRecord\Concerns\Translatable;
use Translatable;

protected static string $resource = BannerPositionResource::class;

Expand All @@ -22,7 +23,7 @@ protected function getRedirectUrl(): string
protected function getHeaderActions(): array
{
return [
Actions\LocaleSwitcher::make(),
LocaleSwitcher::make(),
];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
use Eclipse\Cms\Admin\Filament\Resources\BannerPositionResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
use LaraZeus\SpatieTranslatable\Actions\LocaleSwitcher;
use LaraZeus\SpatieTranslatable\Resources\Pages\EditRecord\Concerns\Translatable;

class EditBannerPosition extends EditRecord
{
use EditRecord\Concerns\Translatable;
use Translatable;

protected static ?string $breadcrumb = 'Edit Position';

Expand All @@ -17,14 +19,14 @@ class EditBannerPosition extends EditRecord
protected function getHeaderActions(): array
{
return [
LocaleSwitcher::make(),
Actions\ViewAction::make()
->color('primary')
->icon('heroicon-o-photo')
->label('Manage Banners'),
Actions\DeleteAction::make()
->icon('heroicon-o-trash')
->label('Delete Position'),
Actions\LocaleSwitcher::make(),
];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,22 @@
use Eclipse\Cms\Admin\Filament\Resources\BannerPositionResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
use LaraZeus\SpatieTranslatable\Actions\LocaleSwitcher;
use LaraZeus\SpatieTranslatable\Resources\Pages\ListRecords\Concerns\Translatable;

class ListBannerPositions extends ListRecords
{
use ListRecords\Concerns\Translatable;
use Translatable;

protected static string $resource = BannerPositionResource::class;

protected function getHeaderActions(): array
{
return [
LocaleSwitcher::make(),
Actions\CreateAction::make()
->icon('heroicon-o-plus-circle')
->label('New Position'),
Actions\LocaleSwitcher::make(),
];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
use Eclipse\Cms\Admin\Filament\Resources\BannerPositionResource;
use Filament\Actions;
use Filament\Resources\Pages\ViewRecord;
use LaraZeus\SpatieTranslatable\Resources\Pages\ViewRecord\Concerns\Translatable;

class ViewBannerPosition extends ViewRecord
{
use ViewRecord\Concerns\Translatable;
use Translatable;

protected static ?string $breadcrumb = 'Manage Banners';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,19 @@
use Eclipse\Cms\Rules\BannerImageDimensionRule;
use Eclipse\Common\Filament\Tables\Columns\ImageColumn;
use Eclipse\Common\Helpers\MediaHelper;
use Filament\Actions;
use Filament\Forms;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Form;
use Filament\Forms\Get;
use Filament\Infolists;
use Filament\Infolists\Infolist;
use Filament\Resources\RelationManagers\Concerns\Translatable;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Components\Grid;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use LaraZeus\SpatieTranslatable\Actions\LocaleSwitcher;
use LaraZeus\SpatieTranslatable\Resources\RelationManagers\Concerns\Translatable;

class BannerRelationManager extends RelationManager
{
Expand Down Expand Up @@ -49,11 +50,10 @@ protected function getDynamicImageColumns(): array
$locale = $this->activeLocale ?? app()->getLocale();
$image = $record->images->where('type_id', $imageType->id)->first();

if ($image && $image->getTranslation('file', $locale)) {
if ($image?->getTranslation('file', $locale)) {
return $image->getTranslation('file', $locale);
}

// Fallback for test environment when MediaHelper is not autoloaded
if (class_exists(MediaHelper::class)) {
return MediaHelper::getPlaceholderImageUrl(
'Not Found',
Expand All @@ -74,12 +74,12 @@ protected function getDynamicImageColumns(): array
})->toArray();
}

public function form(Form $form): Form
public function form(Schema $schema): Schema
{
return $form
->schema([
Forms\Components\Section::make()
->compact()
return $schema
->components([
Grid::make()
->columnSpanFull()
->schema([
Forms\Components\TextInput::make('name')
->required()
Expand All @@ -106,7 +106,7 @@ public function form(Form $form): Form
Forms\Components\Hidden::make('is_hidpi'),
Forms\Components\Hidden::make('image_width'),
Forms\Components\Hidden::make('image_height'),
FileUpload::make('file')
Forms\Components\FileUpload::make('file')
->hiddenLabel()
->image()
->directory('banners')
Expand Down Expand Up @@ -213,10 +213,10 @@ function (Get $get): BannerImageDimensionRule|string {
]);
}

public function infolist(Infolist $infolist): Infolist
public function infolist(Schema $schema): Schema
{
return $infolist
->schema([
return $schema
->components([
Infolists\Components\TextEntry::make('name'),

Infolists\Components\TextEntry::make('link')
Expand All @@ -230,15 +230,14 @@ public function infolist(Infolist $infolist): Infolist
->boolean()
->label('Open in new tab'),

Infolists\Components\Grid::make()
Grid::make()
->columnSpanFull()
->schema(
fn (Banner $record) => $this->getOwnerRecord()->imageTypes()->get()
->map(function ($imageType) use ($record) {
$locale = app()->getLocale();
$image = $record->images->where('type_id', $imageType->id)->first();

// Only show image entry if there's an actual image
if (! $image || ! $image->getTranslation('file', $locale)) {
return null;
}
Expand All @@ -250,7 +249,7 @@ public function infolist(Infolist $infolist): Infolist
->height('auto')
->getStateUsing(fn () => $image->getTranslation('file', $locale));
})
->filter() // Remove null entries
->filter()
->toArray()
),
]);
Expand Down Expand Up @@ -306,8 +305,8 @@ public function table(Table $table): Table
])
->reorderable('sort')
->headerActions([
Tables\Actions\LocaleSwitcher::make(),
Tables\Actions\CreateAction::make()
LocaleSwitcher::make(),
Actions\CreateAction::make()
->icon('heroicon-o-plus-circle')
->label('Add banner')
->mutateFormDataUsing(function (array $data): array {
Expand All @@ -319,13 +318,13 @@ public function table(Table $table): Table
}),
])
->actions([
Tables\Actions\ViewAction::make(),
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
Actions\ViewAction::make(),
Actions\EditAction::make(),
Actions\DeleteAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
Actions\BulkActionGroup::make([
Actions\DeleteBulkAction::make(),
]),
])
->modifyQueryUsing(
Expand Down
Loading
Loading