Skip to content

Commit

Permalink
feat: make partners editable
Browse files Browse the repository at this point in the history
  • Loading branch information
andreiio committed Jun 6, 2024
1 parent b762c32 commit 6e67b4c
Show file tree
Hide file tree
Showing 27 changed files with 772 additions and 38 deletions.
21 changes: 21 additions & 0 deletions app/Enums/ExpertLink.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

declare(strict_types=1);

namespace App\Enums;

use App\Concerns\Enums\Arrayable;
use App\Concerns\Enums\Comparable;
use App\Concerns\Enums\HasLabel;

enum ExpertLink: string
{
use Arrayable;
use Comparable;
use HasLabel;

case WEBSITE = 'website';
case FACEBOOK = 'facebook';
case TWITTER = 'twitter';
case LINKEDIN = 'linkedin';
}
2 changes: 2 additions & 0 deletions app/Filament/Resources/AuthorResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class AuthorResource extends Resource

protected static ?string $navigationIcon = 'heroicon-o-user-group';

protected static ?int $navigationSort = 11;

public static function getNavigationGroup(): ?string
{
return __('admin.navigation.newsfeed');
Expand Down
2 changes: 2 additions & 0 deletions app/Filament/Resources/ElectionDayResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ class ElectionDayResource extends Resource

protected static ?string $navigationIcon = 'heroicon-o-calendar-days';

protected static ?int $navigationSort = 12;

public static function getNavigationGroup(): ?string
{
return __('admin.navigation.newsfeed');
Expand Down
143 changes: 143 additions & 0 deletions app/Filament/Resources/ExpertResource.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
<?php

declare(strict_types=1);

namespace App\Filament\Resources;

use App\Enums\Country;
use App\Enums\ExpertLink;
use App\Filament\Resources\ExpertResource\Pages;
use App\Models\Expert;
use Filament\Forms\Components\Checkbox;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\SpatieMediaLibraryFileUpload;
use Filament\Forms\Components\Split;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\SpatieMediaLibraryImageColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Columns\ToggleColumn;
use Filament\Tables\Table;

class ExpertResource extends Resource
{
protected static ?string $model = Expert::class;

protected static ?string $navigationIcon = 'heroicon-o-identification';

protected static ?int $navigationSort = 22;

public static function getNavigationGroup(): ?string
{
return __('admin.navigation.partners');
}

public static function form(Form $form): Form
{
return $form
->columns(1)
->schema([
Split::make([
SpatieMediaLibraryFileUpload::make('avatar')
->collection('avatar')
->avatar()
->grow(false),

Grid::make()
->schema([
TextInput::make('name')
->required()
->maxLength(255)
->columnSpanFull(),

TextInput::make('title')
->nullable()
->maxLength(255),

Select::make('country')
->options(Country::options())
->enum(Country::class),

Checkbox::make('enabled')
->label('Enabled')
->columnSpanFull(),
]),
]),

Repeater::make('links')
->columns(4)
->schema([
Select::make('type')
->options(ExpertLink::options())
->enum(ExpertLink::class)
->required(),

TextInput::make('url')
->url()
->required()
->columnSpan(3),
])
->collapsible(),
]);
}

public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('order')
->alignRight()
->shrink(),

ToggleColumn::make('enabled')
->label('Enabled')
->shrink(),

SpatieMediaLibraryImageColumn::make('avatar')
->collection('avatar')
->conversion('thumb')
->toggleable()
->shrink(),

TextColumn::make('name')
->searchable()
->sortable(),

TextColumn::make('title')
->searchable()
->toggleable(isToggledHiddenByDefault: true),

TextColumn::make('country')
->badge()
->formatStateUsing(fn (?Country $state) => $state?->label())
->toggleable(),
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
])
->defaultSort('order', 'asc')
->reorderable('order');
}

public static function getRelations(): array
{
return [
//
];
}

public static function getPages(): array
{
return [
'index' => Pages\ManageExperts::route('/'),
];
}
}
21 changes: 21 additions & 0 deletions app/Filament/Resources/ExpertResource/Pages/ManageExperts.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

declare(strict_types=1);

namespace App\Filament\Resources\ExpertResource\Pages;

use App\Filament\Resources\ExpertResource;
use Filament\Actions;
use Filament\Resources\Pages\ManageRecords;

class ManageExperts extends ManageRecords
{
protected static string $resource = ExpertResource::class;

protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}
105 changes: 105 additions & 0 deletions app/Filament/Resources/InstitutionResource.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<?php

declare(strict_types=1);

namespace App\Filament\Resources;

use App\Filament\Resources\InstitutionResource\Pages;
use App\Models\Institution;
use Filament\Forms\Components\Checkbox;
use Filament\Forms\Components\SpatieMediaLibraryFileUpload;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\SpatieMediaLibraryImageColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Columns\ToggleColumn;
use Filament\Tables\Table;

class InstitutionResource extends Resource
{
protected static ?string $model = Institution::class;

protected static ?string $navigationIcon = 'heroicon-o-building-library';

protected static ?int $navigationSort = 21;

public static function getNavigationGroup(): ?string
{
return __('admin.navigation.partners');
}

public static function form(Form $form): Form
{
return $form
->schema([
Checkbox::make('enabled')
->label('Enabled')
->columnSpanFull(),

TextInput::make('name')
->required(),

TextInput::make('url')
->url(),

SpatieMediaLibraryFileUpload::make('logo')
->collection('logo')
->image()
->columnSpanFull()
->required(),
]);
}

public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('order')
->alignRight()
->shrink(),

ToggleColumn::make('enabled')
->label('Enabled')
->shrink(),

SpatieMediaLibraryImageColumn::make('logo')
->collection('logo')
->conversion('thumb')
->toggleable()
->shrink(),

TextColumn::make('name')
->sortable(),

TextColumn::make('updated_at')
->label('Last Updated')
->toggleable()
->sortable(),
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
])
->defaultSort('order', 'asc')
->reorderable('order');
}

public static function getRelations(): array
{
return [
//
];
}

public static function getPages(): array
{
return [
'index' => Pages\ManageInstitutions::route('/'),
];
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

declare(strict_types=1);

namespace App\Filament\Resources\InstitutionResource\Pages;

use App\Filament\Resources\InstitutionResource;
use Filament\Actions;
use Filament\Resources\Pages\ManageRecords;

class ManageInstitutions extends ManageRecords
{
protected static string $resource = InstitutionResource::class;

protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}
4 changes: 3 additions & 1 deletion app/Filament/Resources/PostResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ class PostResource extends Resource
{
protected static ?string $model = Post::class;

protected static ?string $navigationIcon = 'heroicon-o-document-text';
protected static ?string $navigationIcon = 'heroicon-o-chat-bubble-bottom-center-text';

protected static ?int $navigationSort = 10;

public static function getNavigationGroup(): ?string
{
Expand Down
9 changes: 5 additions & 4 deletions app/Filament/Resources/StatResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,14 @@ public static function table(Table $table): Table
{
return $table
->columns([
ToggleColumn::make('enabled')
->label('Enabled')
->shrink(),

TextColumn::make('order')
->alignRight()
->shrink(),

ToggleColumn::make('enabled')
->label('Enabled')
->shrink(),

TextColumn::make('key')
->label('Name')
->formatStateUsing(fn (?StatKey $state) => $state?->label())
Expand All @@ -69,6 +69,7 @@ public static function table(Table $table): Table

TextColumn::make('updated_at')
->label('Last Updated')
->toggleable()
->sortable(),
])
->filters([
Expand Down
3 changes: 2 additions & 1 deletion app/Filament/Resources/UserResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ class UserResource extends Resource

protected static ?string $navigationIcon = 'heroicon-o-users';

protected static ?int $navigationSort = 31;

public static function getNavigationGroup(): ?string
{
return __('admin.navigation.admin');
Expand Down Expand Up @@ -67,7 +69,6 @@ public static function table(Table $table): Table
SpatieMediaLibraryImageColumn::make('avatar')
->collection('avatar')
->conversion('thumb')
->circular()
->shrink(),

TextColumn::make('name')
Expand Down
Loading

0 comments on commit 6e67b4c

Please sign in to comment.