Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
37 changes: 21 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 @@ -32,6 +34,7 @@ public static function getPermissionPrefixes(): array
{
return [
'view_any',
'view',
'create',
'update',
'delete',
Expand All @@ -44,11 +47,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 +68,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 +136,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