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
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