Neuordnung des SuperAdminBackends
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2025-12-31 10:06:21 +01:00
parent d7c2f85eeb
commit 8e4d4c2ff6
34 changed files with 526 additions and 131 deletions

View File

@@ -2,33 +2,30 @@
namespace App\Filament\Blog\Resources;
use Illuminate\Support\Facades\Log;
use App\Filament\Blog\Resources\CategoryResource\Pages;
use App\Filament\Blog\Traits\HasContentEditor;
use App\Filament\Clusters\RareAdmin\RareAdminCluster;
use App\Models\BlogCategory;
use Filament\Forms;
use Filament\Forms\Components\MarkdownEditor;
use Filament\Schemas\Components\Section;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\Toggle;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Components\Utilities\Set;
use Filament\Infolists\Components\TextEntry;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Forms\Components\MarkdownEditor;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Infolists\Components\TextEntry;
use Filament\Resources\Resource;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Components\Tabs as SchemaTabs;
use Filament\Schemas\Components\Tabs\Tab as SchemaTab;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Components\Utilities\Set;
use Filament\Schemas\Schema;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\Str;
use Filament\Schemas\Components\Tabs as SchemaTabs;
use Filament\Schemas\Components\Tabs\Tab as SchemaTab;
class CategoryResource extends Resource
{
@@ -36,7 +33,9 @@ class CategoryResource extends Resource
protected static ?string $model = BlogCategory::class;
protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-list-bullet';
protected static ?string $cluster = RareAdminCluster::class;
protected static string|\BackedEnum|null $navigationIcon = 'heroicon-o-list-bullet';
protected static ?string $navigationLabel = 'Kategorien';
@@ -46,7 +45,7 @@ class CategoryResource extends Resource
public static function getNavigationGroup(): string
{
return 'Content & Bibliothek';
return __('admin.nav.content');
}
public static function form(Schema $schema): Schema
@@ -159,7 +158,6 @@ class CategoryResource extends Resource
return $transformed;
}
public static function table(Table $table): Table
{
return $table
@@ -219,4 +217,4 @@ class CategoryResource extends Resource
SoftDeletingScope::class,
]);
}
}
}

View File

@@ -4,46 +4,43 @@ namespace App\Filament\Blog\Resources;
use App\Filament\Blog\Resources\PostResource\Pages;
use App\Filament\Blog\Traits\HasContentEditor;
use App\Models\BlogPost;
use App\Filament\Clusters\RareAdmin\RareAdminCluster;
use App\Models\BlogCategory;
use Filament\Forms;
use App\Models\BlogPost;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteAction;
use Filament\Actions\DeleteBulkAction;
use Filament\Forms\Components\DateTimePicker;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\MarkdownEditor;
use Filament\Schemas\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Resources\Resource;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Components\Tabs as SchemaTabs;
use Filament\Schemas\Components\Tabs\Tab as SchemaTab;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Components\Utilities\Set;
use Filament\Infolists\Components\TextEntry;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\CreateAction;
use Filament\Actions\DeleteAction;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Actions\ViewAction;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Filters\TernaryFilter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Filament\Schemas\Components\Tabs as SchemaTabs;
use Filament\Schemas\Components\Tabs\Tab as SchemaTab;
class PostResource extends Resource
{
use HasContentEditor;
protected static ?string $model = BlogPost::class;
protected static string | \BackedEnum | null $navigationIcon = 'heroicon-o-document-text';
protected static ?string $cluster = RareAdminCluster::class;
protected static string|\BackedEnum|null $navigationIcon = 'heroicon-o-document-text';
protected static ?string $navigationLabel = 'Beiträge';
@@ -53,7 +50,7 @@ class PostResource extends Resource
public static function getNavigationGroup(): string
{
return 'Content & Bibliothek';
return __('admin.nav.content');
}
public static function form(Schema $schema): Schema

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Filament\Clusters\DailyOps;
use BackedEnum;
use Filament\Clusters\Cluster;
use Filament\Pages\Enums\SubNavigationPosition;
use Filament\Support\Icons\Heroicon;
class DailyOpsCluster extends Cluster
{
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedBolt;
protected static ?int $navigationSort = 10;
protected static ?SubNavigationPosition $subNavigationPosition = SubNavigationPosition::Top;
public static function getNavigationLabel(): string
{
return __('admin.nav.daily_ops');
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Filament\Clusters\RareAdmin;
use BackedEnum;
use Filament\Clusters\Cluster;
use Filament\Pages\Enums\SubNavigationPosition;
use Filament\Support\Icons\Heroicon;
class RareAdminCluster extends Cluster
{
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedShieldExclamation;
protected static ?int $navigationSort = 30;
protected static ?SubNavigationPosition $subNavigationPosition = SubNavigationPosition::Top;
public static function getNavigationLabel(): string
{
return __('admin.nav.rare_admin');
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Filament\Clusters\WeeklyOps;
use BackedEnum;
use Filament\Clusters\Cluster;
use Filament\Pages\Enums\SubNavigationPosition;
use Filament\Support\Icons\Heroicon;
class WeeklyOpsCluster extends Cluster
{
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedCalendarDays;
protected static ?int $navigationSort = 20;
protected static ?SubNavigationPosition $subNavigationPosition = SubNavigationPosition::Top;
public static function getNavigationLabel(): string
{
return __('admin.nav.weekly_ops');
}
}

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Coupons;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\Coupons\Pages\CreateCoupon;
use App\Filament\Resources\Coupons\Pages\EditCoupon;
use App\Filament\Resources\Coupons\Pages\ListCoupons;
@@ -24,6 +25,8 @@ class CouponResource extends Resource
{
protected static ?string $model = Coupon::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedTicket;
protected static ?int $navigationSort = 60;
@@ -32,7 +35,7 @@ class CouponResource extends Resource
public static function getNavigationGroup(): string
{
return __('Billing & Finanzen');
return __('admin.nav.commercial');
}
public static function form(Schema $schema): Schema

View File

@@ -2,34 +2,38 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\EmotionResource\Pages;
use App\Models\Emotion;
use BackedEnum;
use Filament\Actions;
use Filament\Forms\Components\KeyValue;
use Filament\Forms\Components\MarkdownEditor;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Forms\Form;
use Filament\Forms\Components\MarkdownEditor;
use Filament\Schemas\Schema;
use Filament\Resources\Resource;
use Filament\Schemas\Components\Tabs as SchemaTabs;
use Filament\Schemas\Components\Tabs\Tab as SchemaTab;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Table;
use UnitEnum;
use BackedEnum;
class EmotionResource extends Resource
{
protected static ?string $model = Emotion::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-face-smile';
protected static UnitEnum|string|null $navigationGroup = null;
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.tasks_emotions');
return __('admin.nav.curation');
}
protected static ?int $navigationSort = 10;
public static function form(Schema $form): Schema
@@ -87,8 +91,10 @@ class EmotionResource extends Resource
$value = $record->name;
if (is_array($value)) {
$loc = app()->getLocale();
return $value[$loc] ?? ($value['de'] ?? ($value['en'] ?? ''));
}
return (string) $value;
})
->searchable(['name->de', 'name->en'])

View File

@@ -2,36 +2,35 @@
namespace App\Filament\Resources;
use App\Exports\EventPurchaseExporter;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\EventPurchaseResource\Pages;
use App\Models\EventPurchase;
use App\Exports\EventPurchaseExporter;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Textarea;
use Filament\Schemas\Schema;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Actions\Action;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\ExportBulkAction;
use Filament\Actions\ViewAction;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Filters\Filter;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Filters\TernaryFilter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Illuminate\Support\Facades\Log;
use BackedEnum;
use UnitEnum;
class EventPurchaseResource extends Resource
{
protected static ?string $model = EventPurchase::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
public static function shouldRegisterNavigation(): bool
{
return false;
@@ -39,7 +38,7 @@ class EventPurchaseResource extends Resource
public static function getNavigationGroup(): string
{
return 'Billing & Finanzen';
return __('admin.nav.commercial');
}
public static function form(Schema $schema): Schema
@@ -99,7 +98,7 @@ class EventPurchaseResource extends Resource
TextColumn::make('package_id')
->label('Paket')
->badge()
->color(fn (string $state): string => match($state) {
->color(fn (string $state): string => match ($state) {
'starter_pack' => 'info',
'pro_pack' => 'success',
'lifetime_unlimited' => 'danger',
@@ -112,7 +111,7 @@ class EventPurchaseResource extends Resource
->sortable(),
TextColumn::make('platform')
->badge()
->color(fn (string $state): string => match($state) {
->color(fn (string $state): string => match ($state) {
'ios' => 'info',
'android' => 'success',
'web' => 'warning',
@@ -174,7 +173,7 @@ class EventPurchaseResource extends Resource
->visible(fn (EventPurchase $record): bool => $record->transaction_id && is_null($record->refunded_at))
->action(function (EventPurchase $record) {
$record->update(['refunded_at' => now()]);
Log::info('Refund processed for purchase ID: ' . $record->id);
Log::info('Refund processed for purchase ID: '.$record->id);
}),
])
->bulkActions([

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\DailyOps\DailyOpsCluster;
use App\Filament\Resources\EventResource\Pages;
use App\Filament\Resources\EventResource\RelationManagers\EventPackagesRelationManager;
use App\Models\Event;
@@ -27,6 +28,8 @@ class EventResource extends Resource
{
protected static ?string $model = Event::class;
protected static ?string $cluster = DailyOpsCluster::class;
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-calendar';
protected static UnitEnum|string|null $navigationGroup = null;
@@ -35,7 +38,7 @@ class EventResource extends Resource
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.event_management');
return __('admin.nav.events');
}
public static function form(Schema $form): Schema

View File

@@ -2,31 +2,37 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\EventTypeResource\Pages;
use App\Models\EventType;
use BackedEnum;
use Filament\Actions;
use Filament\Forms\Components\KeyValue;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Schema;
use Filament\Resources\Resource;
use Filament\Schemas\Components\Tabs as SchemaTabs;
use Filament\Schemas\Components\Tabs\Tab as SchemaTab;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Actions;
use Filament\Tables\Table;
use UnitEnum;
use BackedEnum;
class EventTypeResource extends Resource
{
protected static ?string $model = EventType::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-swatch';
protected static UnitEnum|string|null $navigationGroup = null;
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.event_management');
return __('admin.nav.events');
}
protected static ?int $navigationSort = 20;
public static function form(Schema $form): Schema
@@ -76,8 +82,10 @@ class EventTypeResource extends Resource
$value = $record->name;
if (is_array($value)) {
$loc = app()->getLocale();
return $value[$loc] ?? ($value['de'] ?? ($value['en'] ?? ''));
}
return (string) $value;
})
->searchable(['name->de', 'name->en'])

View File

@@ -2,34 +2,37 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\GiftVoucherResource\Pages;
use App\Models\GiftVoucher;
use App\Services\GiftVouchers\GiftVoucherService;
use BackedEnum;
use Carbon\Carbon;
use Filament\Forms\Components\Textarea;
use Filament\Actions\Action;
use Filament\Actions\ExportAction;
use Filament\Forms\Components\DateTimePicker;
use Filament\Forms\Components\Textarea;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables\Columns\BadgeColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
use Filament\Tables\Actions\ExportAction;
use UnitEnum;
class GiftVoucherResource extends Resource
{
protected static ?string $model = GiftVoucher::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
protected static string|BackedEnum|null $navigationIcon = 'heroicon-o-gift';
protected static ?int $navigationSort = 12;
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.billing');
return __('admin.nav.commercial');
}
public static function table(Table $table): Table

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources\InfrastructureActionLogs;
use App\Filament\Clusters\RareAdmin\RareAdminCluster;
use App\Filament\Resources\InfrastructureActionLogs\Pages\ManageInfrastructureActionLogs;
use App\Models\InfrastructureActionLog;
use BackedEnum;
@@ -16,12 +17,19 @@ class InfrastructureActionLogResource extends Resource
{
protected static ?string $model = InfrastructureActionLog::class;
protected static ?string $cluster = RareAdminCluster::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack;
protected static string|UnitEnum|null $navigationGroup = 'Platform';
protected static string|UnitEnum|null $navigationGroup = null;
protected static ?int $navigationSort = 90;
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.infrastructure');
}
public static function table(Table $table): Table
{
return $table

View File

@@ -2,33 +2,39 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\RareAdmin\RareAdminCluster;
use App\Filament\Resources\LegalPageResource\Pages;
use App\Models\LegalPage;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use BackedEnum;
use Filament\Actions;
use Filament\Schemas\Schema;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\KeyValue;
use Filament\Forms\Components\MarkdownEditor;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Forms\Components\KeyValue;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\MarkdownEditor;
use Filament\Resources\Resource;
use Filament\Schemas\Components\Tabs as SchemaTabs;
use Filament\Schemas\Components\Tabs\Tab as SchemaTab;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Table;
use UnitEnum;
use BackedEnum;
class LegalPageResource extends Resource
{
protected static ?string $model = LegalPage::class;
protected static ?string $cluster = RareAdminCluster::class;
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-scale';
protected static UnitEnum|string|null $navigationGroup = null;
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.content_library');
return __('admin.nav.content');
}
protected static ?int $navigationSort = 40;
public static function form(Schema $form): Schema

View File

@@ -2,8 +2,10 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\RareAdmin\RareAdminCluster;
use App\Filament\Resources\MediaStorageTargetResource\Pages;
use App\Models\MediaStorageTarget;
use BackedEnum;
use Filament\Actions;
use Filament\Forms\Components\KeyValue;
use Filament\Forms\Components\Select;
@@ -14,19 +16,20 @@ use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Table;
use UnitEnum;
use BackedEnum;
class MediaStorageTargetResource extends Resource
{
protected static ?string $model = MediaStorageTarget::class;
protected static ?string $cluster = RareAdminCluster::class;
protected static string|BackedEnum|null $navigationIcon = 'heroicon-o-server';
protected static string|UnitEnum|null $navigationGroup = null;
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.platform_management');
return __('admin.nav.storage');
}
protected static ?int $navigationSort = 60;

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\PackageAddonResource\Pages;
use App\Jobs\SyncPackageAddonToPaddle;
use App\Models\PackageAddon;
@@ -21,13 +22,15 @@ class PackageAddonResource extends Resource
{
protected static ?string $model = PackageAddon::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
protected static \BackedEnum|string|null $navigationIcon = 'heroicon-o-plus-circle';
protected static ?int $navigationSort = 6;
public static function getNavigationGroup(): \BackedEnum|string|null
{
return __('admin.nav.platform_management');
return __('admin.nav.commercial');
}
public static function form(Schema $schema): Schema

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\PackageResource\Pages;
use App\Jobs\PullPackageFromPaddle;
use App\Jobs\SyncPackageToPaddle;
@@ -11,9 +12,9 @@ use Filament\Actions;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteAction;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Actions\ForceDeleteAction;
use Filament\Actions\ForceDeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Actions\RestoreAction;
use Filament\Actions\RestoreBulkAction;
use Filament\Actions\ViewAction;
@@ -45,13 +46,15 @@ class PackageResource extends Resource
{
protected static ?string $model = Package::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
protected static string|BackedEnum|null $navigationIcon = 'heroicon-o-cube';
protected static string|UnitEnum|null $navigationGroup = null;
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.platform_management');
return __('admin.nav.commercial');
}
protected static ?int $navigationSort = 5;

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\DailyOps\DailyOpsCluster;
use App\Filament\Resources\PhotoResource\Pages;
use App\Models\Event;
use App\Models\Photo;
@@ -11,7 +12,6 @@ use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\KeyValue;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Toggle;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables;
@@ -22,6 +22,8 @@ class PhotoResource extends Resource
{
protected static ?string $model = Photo::class;
protected static ?string $cluster = DailyOpsCluster::class;
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-photo';
protected static UnitEnum|string|null $navigationGroup = null;
@@ -30,7 +32,7 @@ class PhotoResource extends Resource
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.event_management');
return __('admin.nav.events');
}
public static function form(Schema $form): Schema

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources\PhotoboothSettings;
use App\Filament\Clusters\RareAdmin\RareAdminCluster;
use App\Filament\Resources\PhotoboothSettings\Pages\EditPhotoboothSetting;
use App\Filament\Resources\PhotoboothSettings\Pages\ListPhotoboothSettings;
use App\Filament\Resources\PhotoboothSettings\Schemas\PhotoboothSettingForm;
@@ -20,6 +21,8 @@ class PhotoboothSettingResource extends Resource
{
protected static ?string $model = PhotoboothSetting::class;
protected static ?string $cluster = RareAdminCluster::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedRectangleStack;
protected static UnitEnum|string|null $navigationGroup = null;
@@ -28,7 +31,7 @@ class PhotoboothSettingResource extends Resource
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.platform_management');
return __('admin.nav.storage');
}
public static function form(Schema $schema): Schema

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources\PhotoboothSettings\Tables;
use Filament\Actions\EditAction;
use Filament\Tables;
use Filament\Tables\Table;
@@ -28,7 +29,7 @@ class PhotoboothSettingsTable
->label(__('Aktualisiert')),
])
->recordActions([
Tables\Actions\EditAction::make(),
EditAction::make(),
])
->headerActions([])
->bulkActions([]);

View File

@@ -3,6 +3,7 @@
namespace App\Filament\Resources;
use App\Exports\PurchaseHistoryExporter;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\PurchaseHistoryResource\Pages;
use App\Models\PurchaseHistory;
use BackedEnum;
@@ -21,13 +22,15 @@ class PurchaseHistoryResource extends Resource
{
protected static ?string $model = PurchaseHistory::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-receipt-refund';
protected static ?int $navigationSort = 20;
public static function getNavigationGroup(): string
{
return __('admin.nav.billing');
return __('admin.nav.commercial');
}
public static function form(Schema $form): Schema

View File

@@ -2,8 +2,12 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\DailyOps\DailyOpsCluster;
use App\Filament\Resources\PurchaseResource\Pages;
use App\Models\PackagePurchase;
use App\Notifications\Customer\RefundReceipt;
use App\Notifications\Ops\RefundProcessed;
use App\Services\Paddle\PaddleTransactionService;
use BackedEnum;
use Filament\Actions\Action;
use Filament\Actions\BulkActionGroup;
@@ -26,19 +30,18 @@ use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Notification;
use App\Notifications\Ops\RefundProcessed;
use App\Notifications\Customer\RefundReceipt;
use App\Services\Paddle\PaddleTransactionService;
class PurchaseResource extends Resource
{
protected static ?string $model = PackagePurchase::class;
protected static ?string $cluster = DailyOpsCluster::class;
protected static string|BackedEnum|null $navigationIcon = 'heroicon-o-shopping-cart';
public static function getNavigationGroup(): string
{
return 'Billing & Finanzen';
return __('admin.nav.billing');
}
protected static ?int $navigationSort = 10;

View File

@@ -2,33 +2,38 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\TaskResource\Pages;
use App\Models\Task;
use Filament\Forms\Components\KeyValue;
use BackedEnum;
use Filament\Actions;
use Filament\Forms\Components\MarkdownEditor;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Forms\Components\MarkdownEditor;
use Filament\Schemas\Schema;
use Filament\Resources\Resource;
use Filament\Schemas\Components\Tabs as SchemaTabs;
use Filament\Schemas\Components\Tabs\Tab as SchemaTab;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Table;
use Filament\Actions;
use UnitEnum;
use BackedEnum;
class TaskResource extends Resource
{
protected static ?string $model = Task::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-clipboard-document-check';
protected static UnitEnum|string|null $navigationGroup = null;
protected static ?int $navigationSort = 30;
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.tasks_emotions');
return __('admin.nav.curation');
}
public static function getNavigationLabel(): string
@@ -106,8 +111,10 @@ class TaskResource extends Resource
$value = $record->title;
if (is_array($value)) {
$loc = app()->getLocale();
return $value[$loc] ?? ($value['de'] ?? ($value['en'] ?? ''));
}
return (string) $value;
})
->limit(60)
@@ -119,8 +126,10 @@ class TaskResource extends Resource
$value = optional($record->emotion)->name;
if (is_array($value)) {
$loc = app()->getLocale();
return $value[$loc] ?? ($value['de'] ?? ($value['en'] ?? ''));
}
return (string) ($value ?? '');
})
->sortable()
@@ -132,8 +141,10 @@ class TaskResource extends Resource
$value = optional($record->eventType)->name;
if (is_array($value)) {
$loc = app()->getLocale();
return $value[$loc] ?? ($value['de'] ?? ($value['en'] ?? ''));
}
return (string) ($value ?? '');
})
->toggleable(),

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\DailyOps\DailyOpsCluster;
use App\Filament\Resources\TenantFeedbackResource\Pages\ListTenantFeedback;
use App\Filament\Resources\TenantFeedbackResource\Pages\ViewTenantFeedback;
use App\Filament\Resources\TenantFeedbackResource\Schemas\TenantFeedbackForm;
@@ -19,6 +20,8 @@ class TenantFeedbackResource extends Resource
{
protected static ?string $model = TenantFeedback::class;
protected static ?string $cluster = DailyOpsCluster::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedChatBubbleBottomCenterText;
protected static UnitEnum|string|null $navigationGroup = null;
@@ -47,7 +50,7 @@ class TenantFeedbackResource extends Resource
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('Feedback & Support');
return __('admin.nav.feedback_support');
}
public static function getRelations(): array

View File

@@ -3,6 +3,7 @@
namespace App\Filament\Resources\TenantFeedbackResource\Tables;
use App\Models\TenantFeedback;
use Filament\Actions\ViewAction;
use Filament\Tables;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
@@ -69,7 +70,7 @@ class TenantFeedbackTable
->toArray()),
])
->recordActions([
Tables\Actions\ViewAction::make(),
ViewAction::make(),
])
->bulkActions([]);
}

View File

@@ -2,12 +2,12 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\TenantPackageResource\Pages;
use App\Models\TenantPackage;
use BackedEnum;
use Filament\Actions\ActionGroup;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\CreateAction;
use Filament\Actions\DeleteAction;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
@@ -15,26 +15,25 @@ use Filament\Actions\ViewAction;
use Filament\Forms\Components\DateTimePicker;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Toggle;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use UnitEnum;
class TenantPackageResource extends Resource
{
protected static ?string $model = TenantPackage::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-shopping-bag';
protected static ?string $slug = 'tenant-packages';
public static function getNavigationGroup(): string
{
return 'Billing & Finanzen';
return __('admin.nav.commercial');
}
public static function form(Schema $form): Schema

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\DailyOps\DailyOpsCluster;
use App\Filament\Resources\TenantResource\Pages;
use App\Filament\Resources\TenantResource\RelationManagers\PackagePurchasesRelationManager;
use App\Filament\Resources\TenantResource\RelationManagers\TenantPackagesRelationManager;
@@ -13,7 +14,6 @@ use Filament\Forms\Components\KeyValue;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Notifications\Notification;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables;
@@ -25,13 +25,15 @@ class TenantResource extends Resource
{
protected static ?string $model = Tenant::class;
protected static ?string $cluster = DailyOpsCluster::class;
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-building-office';
protected static UnitEnum|string|null $navigationGroup = null;
public static function getNavigationGroup(): UnitEnum|string|null
{
return __('admin.nav.platform_management');
return __('admin.nav.tenants');
}
protected static ?int $navigationSort = 10;

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources;
use App\Filament\Clusters\WeeklyOps\WeeklyOpsCluster;
use App\Filament\Resources\UserResource\Pages;
use App\Models\User;
use BackedEnum;
@@ -10,29 +11,28 @@ use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Actions\ViewAction;
use Filament\Schemas\Components\Section;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;
use Filament\Tables;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use UnitEnum;
class UserResource extends Resource
{
protected static ?string $model = User::class;
protected static ?string $cluster = WeeklyOpsCluster::class;
protected static BackedEnum|string|null $navigationIcon = 'heroicon-o-user-circle';
protected static ?string $slug = 'users';
public static function getNavigationGroup(): string
{
return 'Plattform-Verwaltung';
return __('admin.nav.platform');
}
public static function form(Schema $form): Schema

View File

@@ -2,6 +2,7 @@
namespace App\Filament\SuperAdmin\Pages;
use App\Filament\Clusters\RareAdmin\RareAdminCluster;
use App\Models\InfrastructureActionLog;
use App\Services\Dokploy\DokployClient;
use BackedEnum;
@@ -17,6 +18,10 @@ class DokployDeployments extends Page
protected static ?string $title = 'Infrastructure Controls';
protected static null|string|\UnitEnum $navigationGroup = null;
protected static ?string $cluster = RareAdminCluster::class;
protected string $view = 'filament.super-admin.pages.dokploy-deployments';
public array $composes = [];
@@ -25,6 +30,11 @@ class DokployDeployments extends Page
public ?string $dokployWebUrl = null;
public static function getNavigationGroup(): \UnitEnum|string|null
{
return __('admin.nav.infrastructure');
}
public function mount(DokployClient $client): void
{
$this->dokployWebUrl = config('dokploy.web_url');

View File

@@ -2,6 +2,7 @@
namespace App\Filament\SuperAdmin\Pages;
use App\Filament\Clusters\RareAdmin\RareAdminCluster;
use App\Models\WatermarkSetting;
use Filament\Forms;
use Filament\Forms\Form;
@@ -12,12 +13,19 @@ class WatermarkSettingsPage extends Page
{
protected static null|string|\BackedEnum $navigationIcon = 'heroicon-o-sparkles';
protected static ?string $cluster = RareAdminCluster::class;
protected string $view = 'filament.super-admin.pages.watermark-settings-page';
protected static null|string|\UnitEnum $navigationGroup = 'Branding';
protected static null|string|\UnitEnum $navigationGroup = null;
protected static ?int $navigationSort = 20;
public static function getNavigationGroup(): \UnitEnum|string|null
{
return __('admin.nav.branding');
}
public ?string $asset = null;
public string $position = 'bottom-right';

View File

@@ -2,10 +2,6 @@
namespace App\Providers\Filament;
use App\Filament\Blog\Resources\CategoryResource;
use App\Filament\Blog\Resources\PostResource;
use App\Filament\Resources\InfrastructureActionLogs\InfrastructureActionLogResource;
use App\Filament\Resources\LegalPageResource;
use App\Filament\Widgets\DokployPlatformHealth;
use App\Filament\Widgets\PlatformStatsWidget;
use App\Filament\Widgets\RevenueTrendWidget;
@@ -15,6 +11,7 @@ use Boquizo\FilamentLogViewer\FilamentLogViewerPlugin;
use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent;
use Filament\Navigation\NavigationGroup;
use Filament\Pages;
use Filament\Panel;
use Filament\PanelProvider;
@@ -38,18 +35,45 @@ class SuperAdminPanelProvider extends PanelProvider
->default()
->id('superadmin')
->path('super-admin')
->topNavigation()
->colors([
'primary' => Color::Pink,
])
->plugins([
FilamentLogViewerPlugin::make()
->navigationGroup('Platform')
->navigationGroup(__('admin.nav.infrastructure'))
->navigationLabel('Log Viewer')
->navigationIcon(Heroicon::OutlinedDocumentText)
->navigationSort(20),
])
->navigationGroups([
NavigationGroup::make()
->label(__('admin.nav.curation')),
NavigationGroup::make()
->label(__('admin.nav.events')),
NavigationGroup::make()
->label(__('admin.nav.tenants')),
NavigationGroup::make()
->label(__('admin.nav.billing')),
NavigationGroup::make()
->label(__('admin.nav.feedback_support')),
NavigationGroup::make()
->label(__('admin.nav.platform')),
NavigationGroup::make()
->label(__('admin.nav.commercial')),
NavigationGroup::make()
->label(__('admin.nav.infrastructure')),
NavigationGroup::make()
->label(__('admin.nav.storage')),
NavigationGroup::make()
->label(__('admin.nav.content')),
NavigationGroup::make()
->label(__('admin.nav.branding')),
])
->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
->discoverResources(in: app_path('Filament/Blog/Resources'), for: 'App\\Filament\\Blog\\Resources')
->discoverPages(in: app_path('Filament/SuperAdmin/Pages'), for: 'App\\Filament\\SuperAdmin\\Pages')
->discoverClusters(in: app_path('Filament/Clusters'), for: 'App\\Filament\\Clusters')
->pages([
Pages\Dashboard::class,
])
@@ -84,18 +108,6 @@ class SuperAdminPanelProvider extends PanelProvider
->authMiddleware([
Authenticate::class,
])
->resources([
\App\Filament\Resources\EventResource::class,
\App\Filament\Resources\PhotoResource::class,
\App\Filament\Resources\UserResource::class,
\App\Filament\Resources\TenantPackageResource::class,
\App\Filament\Resources\TaskResource::class,
\App\Filament\Resources\MediaStorageTargetResource::class,
PostResource::class,
CategoryResource::class,
LegalPageResource::class,
InfrastructureActionLogResource::class,
])
->pages([
Pages\Dashboard::class,
\App\Filament\SuperAdmin\Pages\WatermarkSettingsPage::class,