Skip to content

Commit 9d79bbe

Browse files
update
1 parent b46e238 commit 9d79bbe

File tree

13 files changed

+286
-2
lines changed

13 files changed

+286
-2
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?php
2+
3+
namespace Modules\Email\App\Filament\Resources;
4+
5+
use App\Models\Domain;
6+
use Modules\Email\App\Filament\Resources\EmailAliasDomainResource\Pages;
7+
use Modules\Email\App\Filament\Resources\EmailAliasDomainResource\RelationManagers;
8+
use Modules\Email\App\Models\EmailAliasDomain;
9+
use Filament\Forms;
10+
use Filament\Forms\Form;
11+
use Filament\Resources\Resource;
12+
use Filament\Tables;
13+
use Filament\Tables\Table;
14+
use Illuminate\Database\Eloquent\Builder;
15+
use Illuminate\Database\Eloquent\SoftDeletingScope;
16+
17+
class EmailAliasDomainResource extends Resource
18+
{
19+
protected static ?string $model = EmailAliasDomain::class;
20+
21+
protected static ?string $navigationIcon = 'heroicon-o-arrow-trending-up';
22+
23+
protected static ?string $navigationGroup = 'Email';
24+
25+
protected static ?string $label = 'Alias Domains';
26+
27+
protected static ?int $navigationSort = 3;
28+
29+
public static function form(Form $form): Form
30+
{
31+
return $form
32+
->schema([
33+
34+
Forms\Components\Select::make('alias_domain')
35+
->options(Domain::get()->pluck('domain', 'domain')->toArray())
36+
->helperText('The domain that mails come in for.')
37+
->columnSpanFull(),
38+
39+
Forms\Components\Select::make('target_domain')
40+
->options(Domain::get()->pluck('domain', 'domain')->toArray())
41+
->helperText('The domain where mails should go to.')
42+
->columnSpanFull(),
43+
44+
]);
45+
}
46+
47+
public static function table(Table $table): Table
48+
{
49+
return $table
50+
->columns([
51+
Tables\Columns\TextColumn::make('alias_domain')
52+
->searchable()
53+
->sortable(),
54+
55+
Tables\Columns\TextColumn::make('target_domain')
56+
->searchable()
57+
->sortable(),
58+
59+
])
60+
->filters([
61+
//
62+
])
63+
->actions([
64+
Tables\Actions\EditAction::make(),
65+
Tables\Actions\DeleteAction::make(),
66+
])
67+
->bulkActions([
68+
// Tables\Actions\BulkActionGroup::make([
69+
// Tables\Actions\DeleteBulkAction::make(),
70+
// ]),
71+
]);
72+
}
73+
74+
public static function getRelations(): array
75+
{
76+
return [
77+
//
78+
];
79+
}
80+
81+
public static function getPages(): array
82+
{
83+
return [
84+
'index' => Pages\ListEmailAliasDomains::route('/'),
85+
// 'create' => Pages\CreateEmailAliasDomain::route('/create'),
86+
// 'edit' => Pages\EditEmailAliasDomain::route('/{record}/edit'),
87+
];
88+
}
89+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace Modules\Email\App\Filament\Resources\EmailAliasDomainResource\Pages;
4+
5+
use Modules\Email\App\Filament\Resources\EmailAliasDomainResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\CreateRecord;
8+
9+
class CreateEmailAliasDomain extends CreateRecord
10+
{
11+
protected static string $resource = EmailAliasDomainResource::class;
12+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace Modules\Email\App\Filament\Resources\EmailAliasDomainResource\Pages;
4+
5+
use Modules\Email\App\Filament\Resources\EmailAliasDomainResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\EditRecord;
8+
9+
class EditEmailAliasDomain extends EditRecord
10+
{
11+
protected static string $resource = EmailAliasDomainResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\DeleteAction::make(),
17+
];
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace Modules\Email\App\Filament\Resources\EmailAliasDomainResource\Pages;
4+
5+
use Modules\Email\App\Filament\Resources\EmailAliasDomainResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\ListRecords;
8+
9+
class ListEmailAliasDomains extends ListRecords
10+
{
11+
protected static string $resource = EmailAliasDomainResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\CreateAction::make(),
17+
];
18+
}
19+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
<?php
2+
3+
namespace Modules\Email\App\Filament\Resources;
4+
5+
use App\Models\Domain;
6+
use Modules\Email\App\Filament\Resources\EmailAliasResource\Pages;
7+
use Modules\Email\App\Filament\Resources\EmailAliasResource\RelationManagers;
8+
use Modules\Email\App\Models\EmailAlias;
9+
use Filament\Forms;
10+
use Filament\Forms\Form;
11+
use Filament\Resources\Resource;
12+
use Filament\Tables;
13+
use Filament\Tables\Table;
14+
use Illuminate\Database\Eloquent\Builder;
15+
use Illuminate\Database\Eloquent\SoftDeletingScope;
16+
17+
class EmailAliasResource extends Resource
18+
{
19+
protected static ?string $model = EmailAlias::class;
20+
21+
protected static ?string $navigationIcon = 'heroicon-o-arrow-trending-up';
22+
23+
protected static ?string $navigationGroup = 'Email';
24+
25+
// protected static ?string $label = 'Aliases';
26+
27+
protected static ?int $navigationSort = 3;
28+
29+
public static function form(Form $form): Form
30+
{
31+
return $form
32+
->schema([
33+
34+
Forms\Components\TextInput::make('forward')
35+
->helperText('To create a catch-all use an "*" as alias.')
36+
->required(),
37+
38+
Forms\Components\Select::make('domain')
39+
->options(Domain::get()->pluck('domain', 'domain')->toArray()),
40+
41+
Forms\Components\Textarea::make('to')
42+
->columnSpanFull()
43+
->placeholder('Accepts multiple targets, one entry per line.')
44+
->cols(20)
45+
46+
]);
47+
}
48+
49+
public static function table(Table $table): Table
50+
{
51+
return $table
52+
->columns([
53+
//
54+
])
55+
->filters([
56+
//
57+
])
58+
->actions([
59+
Tables\Actions\EditAction::make(),
60+
])
61+
->bulkActions([
62+
Tables\Actions\BulkActionGroup::make([
63+
Tables\Actions\DeleteBulkAction::make(),
64+
]),
65+
]);
66+
}
67+
68+
public static function getRelations(): array
69+
{
70+
return [
71+
//
72+
];
73+
}
74+
75+
public static function getPages(): array
76+
{
77+
return [
78+
'index' => Pages\ListEmailAliases::route('/'),
79+
'create' => Pages\CreateEmailAlias::route('/create'),
80+
'edit' => Pages\EditEmailAlias::route('/{record}/edit'),
81+
];
82+
}
83+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace Modules\Email\App\Filament\Resources\EmailAliasResource\Pages;
4+
5+
use Modules\Email\App\Filament\Resources\EmailAliasResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\CreateRecord;
8+
9+
class CreateEmailAlias extends CreateRecord
10+
{
11+
protected static string $resource = EmailAliasResource::class;
12+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace Modules\Email\App\Filament\Resources\EmailAliasResource\Pages;
4+
5+
use Modules\Email\App\Filament\Resources\EmailAliasResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\EditRecord;
8+
9+
class EditEmailAlias extends EditRecord
10+
{
11+
protected static string $resource = EmailAliasResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\DeleteAction::make(),
17+
];
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace Modules\Email\App\Filament\Resources\EmailAliasResource\Pages;
4+
5+
use Modules\Email\App\Filament\Resources\EmailAliasResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\ListRecords;
8+
9+
class ListEmailAliases extends ListRecords
10+
{
11+
protected static string $resource = EmailAliasResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\CreateAction::make(),
17+
];
18+
}
19+
}

web/Modules/Email/App/Filament/Resources/EmailBoxResource.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ class EmailBoxResource extends Resource
2222

2323
protected static ?string $navigationGroup = 'Email';
2424

25+
protected static ?string $label = 'Boxes';
26+
2527
protected static ?int $navigationSort = 0;
2628

2729
public static function form(Form $form): Form

web/Modules/Email/App/Models/EmailAlias.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ class EmailAlias extends Model
1313
/**
1414
* The attributes that are mass assignable.
1515
*/
16-
protected $fillable = [];
16+
protected $fillable = [
17+
'address',
18+
'goto',
19+
'domain',
20+
];
1721

1822
}

0 commit comments

Comments
 (0)