You've already forked Epicnabbo-Catalogus-Updated-Daily
🆙 More fixes 🆙
This commit is contained in:
+7
-1
@@ -16,6 +16,7 @@ use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Columns\ToggleColumn;
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\WebsiteDrawBadge as WebsiteDrawBadgeModel;
|
||||
|
||||
class WebsiteDrawBadgeResource extends Resource
|
||||
{
|
||||
@@ -87,7 +88,12 @@ class WebsiteDrawBadgeResource extends Resource
|
||||
->dateTime(),
|
||||
ImageColumn::make('badge_url')
|
||||
->label(__('Badge'))
|
||||
->getStateUsing(fn ($record) => config('app.url') . $record->badge_url)
|
||||
->getStateUsing(function (WebsiteDrawBadgeModel $record): string {
|
||||
$appUrl = config('app.url');
|
||||
$appUrl = is_string($appUrl) ? $appUrl : '';
|
||||
$badgeUrl = is_string($record->badge_url) ? $record->badge_url : '';
|
||||
return $appUrl . $badgeUrl;
|
||||
})
|
||||
->extraAttributes(['style' => 'image-rendering: pixelated'])
|
||||
->size(40),
|
||||
ToggleColumn::make('published')
|
||||
|
||||
+12
-4
@@ -62,8 +62,9 @@ class BadgeTextEditorResource extends Resource
|
||||
->columns([
|
||||
ImageColumn::make('badge_key')
|
||||
->label('Badge Image')
|
||||
->getStateUsing(function ($record) use ($badgesPath) {
|
||||
$badgeName = str_replace('badge_desc_', '', $record->badge_key);
|
||||
->getStateUsing(function (WebsiteBadge $record) use ($badgesPath): string {
|
||||
$badgeKey = is_string($record->badge_key) ? $record->badge_key : '';
|
||||
$badgeName = str_replace('badge_desc_', '', $badgeKey);
|
||||
|
||||
return asset($badgesPath . $badgeName . '.gif');
|
||||
})
|
||||
@@ -71,7 +72,11 @@ class BadgeTextEditorResource extends Resource
|
||||
->height(50),
|
||||
TextColumn::make('badge_name')
|
||||
->label('Badge Code & Name')
|
||||
->formatStateUsing(fn ($record) => $record->badge_key . ' : ' . $record->badge_name)
|
||||
->formatStateUsing(function (WebsiteBadge $record): string {
|
||||
$key = is_string($record->badge_key) ? $record->badge_key : '';
|
||||
$name = is_string($record->badge_name) ? $record->badge_name : '';
|
||||
return $key . ' : ' . $name;
|
||||
})
|
||||
->searchable(query: function ($query, $search): void {
|
||||
$query->where('badge_key', 'like', "%{$search}%")
|
||||
->orWhere('badge_name', 'like', "%{$search}%");
|
||||
@@ -79,7 +84,10 @@ class BadgeTextEditorResource extends Resource
|
||||
->sortable(),
|
||||
TextColumn::make('badge_description')
|
||||
->label('Badge Description')
|
||||
->getStateUsing(fn ($record) => Str::limit($record->badge_description, 65))
|
||||
->getStateUsing(function (WebsiteBadge $record): string {
|
||||
$desc = is_string($record->badge_description) ? $record->badge_description : '';
|
||||
return Str::limit($desc, 65);
|
||||
})
|
||||
->searchable(),
|
||||
])
|
||||
->filters([])
|
||||
|
||||
+24
-10
@@ -23,6 +23,7 @@ use Filament\Tables\Filters\SelectFilter;
|
||||
use Filament\Tables\Filters\TernaryFilter;
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use App\Models\Game\Furniture\CatalogItem;
|
||||
|
||||
class CatalogItemsRelationManager extends RelationManager
|
||||
{
|
||||
@@ -227,7 +228,10 @@ class CatalogItemsRelationManager extends RelationManager
|
||||
->recordTitleAttribute('catalog_name')
|
||||
->columns([
|
||||
ImageColumn::make('icon')
|
||||
->getStateUsing(fn ($record) => url($record->itemBase?->icon()))
|
||||
->getStateUsing(function (CatalogItem $record): string {
|
||||
$icon = $record->itemBase?->icon();
|
||||
return is_string($icon) && $icon !== '' ? url($icon) : '';
|
||||
})
|
||||
->size('25px')
|
||||
|
||||
->label('Icon')
|
||||
@@ -278,11 +282,16 @@ class CatalogItemsRelationManager extends RelationManager
|
||||
])
|
||||
->filters([
|
||||
SelectFilter::make('type')
|
||||
->query(fn (Builder $query, array $data): Builder => empty($data['values'])
|
||||
? $query
|
||||
: $query->whereHas('itemBase', function (Builder $query) use ($data): void {
|
||||
$query->whereIn('type', $data['values']);
|
||||
}))
|
||||
->query(function (Builder $query, array $data): Builder {
|
||||
$values = $data['values'] ?? null;
|
||||
if (! is_array($values) || $values === []) {
|
||||
return $query;
|
||||
}
|
||||
|
||||
return $query->whereHas('itemBase', function (Builder $query) use ($values): void {
|
||||
$query->whereIn('type', $values);
|
||||
});
|
||||
})
|
||||
->options(
|
||||
fn () => ItemBase::query()
|
||||
->select('type')
|
||||
@@ -313,7 +322,7 @@ class CatalogItemsRelationManager extends RelationManager
|
||||
->icon('heroicon-m-cube')
|
||||
->modalWidth('3xl')
|
||||
->modalHeading('Edit Item Base')
|
||||
->fillForm(function ($record) {
|
||||
->fillForm(function (CatalogItem $record): array {
|
||||
$itemBase = $record->itemBase;
|
||||
if (! $itemBase) {
|
||||
return [];
|
||||
@@ -440,7 +449,7 @@ class CatalogItemsRelationManager extends RelationManager
|
||||
->nullable()
|
||||
->dehydrateStateUsing(fn ($state) => $state ?? ''),
|
||||
])
|
||||
->action(function (array $data, $record): void {
|
||||
->action(function (array $data, CatalogItem $record): void {
|
||||
// Transform any null or empty values to empty strings
|
||||
$data = collect($data)->map(function ($value) {
|
||||
if ($value === null || $value === '') {
|
||||
@@ -453,9 +462,14 @@ class CatalogItemsRelationManager extends RelationManager
|
||||
return $value;
|
||||
})->toArray();
|
||||
|
||||
$record->itemBase->forceFill($data)->save();
|
||||
$itemBase = $record->itemBase;
|
||||
if ($itemBase) {
|
||||
$itemBase->forceFill($data)->save();
|
||||
}
|
||||
})
|
||||
->visible(fn ($record) => $record->itemBase !== null),
|
||||
->visible(function (CatalogItem $record): bool {
|
||||
return $record->itemBase !== null;
|
||||
}),
|
||||
DeleteAction::make(),
|
||||
])
|
||||
->toolbarActions([
|
||||
|
||||
+37
-25
@@ -34,12 +34,24 @@ class ChatlogPrivateResource extends Resource
|
||||
->components([
|
||||
TextInput::make('sender')
|
||||
->disabled()
|
||||
->formatStateUsing(fn ($record) => $record->sender?->username)
|
||||
->formatStateUsing(function ($record): string {
|
||||
if (! ($record instanceof \App\Models\ChatlogPrivate)) {
|
||||
return '';
|
||||
}
|
||||
$username = $record->sender?->username;
|
||||
return is_string($username) ? $username : '';
|
||||
})
|
||||
->label(__('filament::resources.inputs.sender')),
|
||||
|
||||
TextInput::make('receiver')
|
||||
->disabled()
|
||||
->formatStateUsing(fn ($record) => $record->receiver?->username)
|
||||
->formatStateUsing(function ($record): string {
|
||||
if (! ($record instanceof \App\Models\ChatlogPrivate)) {
|
||||
return '';
|
||||
}
|
||||
$username = $record->receiver?->username;
|
||||
return is_string($username) ? $username : '';
|
||||
})
|
||||
->label(__('filament::resources.inputs.receiver')),
|
||||
|
||||
Textarea::make('message')
|
||||
@@ -54,7 +66,27 @@ class ChatlogPrivateResource extends Resource
|
||||
{
|
||||
return $table
|
||||
->defaultSort('timestamp', 'desc')
|
||||
->columns(self::getTable())
|
||||
->columns([
|
||||
TextColumn::make('sender.username')
|
||||
->label(__('filament::resources.columns.sender'))
|
||||
->toggleable()
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('receiver.username')
|
||||
->label(__('filament::resources.columns.receiver'))
|
||||
->toggleable()
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('message')
|
||||
->label(__('filament::resources.columns.message'))
|
||||
->limit(40)
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('timestamp')
|
||||
->label(__('filament::resources.columns.executed_at'))
|
||||
->dateTime('Y-m-d H:i')
|
||||
->toggleable(),
|
||||
])
|
||||
->filters([])
|
||||
->recordActions([
|
||||
ViewAction::make(),
|
||||
@@ -62,29 +94,9 @@ class ChatlogPrivateResource extends Resource
|
||||
->toolbarActions([]);
|
||||
}
|
||||
|
||||
public static function getTable(): array
|
||||
public static function getTable(): mixed
|
||||
{
|
||||
return [
|
||||
TextColumn::make('sender.username')
|
||||
->label(__('filament::resources.columns.sender'))
|
||||
->toggleable()
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('receiver.username')
|
||||
->label(__('filament::resources.columns.receiver'))
|
||||
->toggleable()
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('message')
|
||||
->label(__('filament::resources.columns.message'))
|
||||
->limit(40)
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('timestamp')
|
||||
->label(__('filament::resources.columns.executed_at'))
|
||||
->dateTime('Y-m-d H:i')
|
||||
->toggleable(),
|
||||
];
|
||||
return [];
|
||||
}
|
||||
|
||||
public static function getPages(): array
|
||||
|
||||
@@ -34,18 +34,36 @@ class ChatlogRoomResource extends Resource
|
||||
->components([
|
||||
TextInput::make('room')
|
||||
->label(__('filament::resources.inputs.room'))
|
||||
->formatStateUsing(fn ($record) => $record->room?->name)
|
||||
->formatStateUsing(function ($record): string {
|
||||
if (! ($record instanceof \App\Models\ChatlogRoom)) {
|
||||
return '';
|
||||
}
|
||||
$name = $record->room?->name;
|
||||
return is_string($name) ? $name : '';
|
||||
})
|
||||
->columnSpanFull()
|
||||
->disabled(),
|
||||
|
||||
TextInput::make('sender')
|
||||
->label(__('filament::resources.inputs.sender'))
|
||||
->formatStateUsing(fn ($record) => $record->sender?->username)
|
||||
->formatStateUsing(function ($record): string {
|
||||
if (! ($record instanceof \App\Models\ChatlogRoom)) {
|
||||
return '';
|
||||
}
|
||||
$username = $record->sender?->username;
|
||||
return is_string($username) ? $username : '';
|
||||
})
|
||||
->disabled(),
|
||||
|
||||
TextInput::make('receiver')
|
||||
->label(__('filament::resources.inputs.receiver'))
|
||||
->formatStateUsing(fn ($record) => $record->receiver?->username)
|
||||
->formatStateUsing(function ($record): string {
|
||||
if (! ($record instanceof \App\Models\ChatlogRoom)) {
|
||||
return '';
|
||||
}
|
||||
$username = $record->receiver?->username;
|
||||
return is_string($username) ? $username : '';
|
||||
})
|
||||
->disabled(),
|
||||
|
||||
Textarea::make('message')
|
||||
@@ -60,7 +78,32 @@ class ChatlogRoomResource extends Resource
|
||||
{
|
||||
return $table
|
||||
->defaultSort('timestamp', 'desc')
|
||||
->columns(self::getTable())
|
||||
->columns([
|
||||
TextColumn::make('room.name')
|
||||
->label(__('filament::resources.columns.room'))
|
||||
->toggleable()
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('sender.username')
|
||||
->label(__('filament::resources.columns.sender'))
|
||||
->toggleable()
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('receiver.username')
|
||||
->label(__('filament::resources.columns.receiver'))
|
||||
->toggleable()
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('message')
|
||||
->label(__('filament::resources.columns.message'))
|
||||
->limit(40)
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('timestamp')
|
||||
->label(__('filament::resources.columns.executed_at'))
|
||||
->dateTime('Y-m-d H:i')
|
||||
->toggleable(),
|
||||
])
|
||||
->filters([
|
||||
//
|
||||
])
|
||||
@@ -70,34 +113,9 @@ class ChatlogRoomResource extends Resource
|
||||
->toolbarActions([]);
|
||||
}
|
||||
|
||||
public static function getTable(): array
|
||||
public static function getTable(): mixed
|
||||
{
|
||||
return [
|
||||
TextColumn::make('room.name')
|
||||
->label(__('filament::resources.columns.room'))
|
||||
->toggleable()
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('sender.username')
|
||||
->label(__('filament::resources.columns.sender'))
|
||||
->toggleable()
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('receiver.username')
|
||||
->label(__('filament::resources.columns.receiver'))
|
||||
->toggleable()
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('message')
|
||||
->label(__('filament::resources.columns.message'))
|
||||
->limit(40)
|
||||
->searchable(isIndividual: true),
|
||||
|
||||
TextColumn::make('timestamp')
|
||||
->label(__('filament::resources.columns.executed_at'))
|
||||
->dateTime('Y-m-d H:i')
|
||||
->toggleable(),
|
||||
];
|
||||
return [];
|
||||
}
|
||||
|
||||
public static function getPages(): array
|
||||
|
||||
@@ -37,7 +37,7 @@ class EmulatorTextResource extends Resource
|
||||
->label(__('filament::resources.inputs.key'))
|
||||
->required()
|
||||
->maxLength(100)
|
||||
->unique(ignoreRecord: true),
|
||||
->unique('emulator_texts', 'key', ignoreRecord: true),
|
||||
|
||||
TextInput::make('value')
|
||||
->label(__('filament::resources.inputs.value'))
|
||||
|
||||
@@ -48,7 +48,8 @@ class ListUsers extends ListRecords
|
||||
->default(false),
|
||||
])
|
||||
->action(function (array $data): void {
|
||||
$allUsersId = collect($data['users'] ?? [])->values();
|
||||
$usersVal = $data['users'] ?? [];
|
||||
$allUsersId = collect(is_array($usersVal) ? $usersVal : [])->values();
|
||||
$senderId = !empty($data['as_staff']) ? null : auth()->id();
|
||||
|
||||
if ($allUsersId->isEmpty()) {
|
||||
|
||||
+1
-1
@@ -146,7 +146,7 @@ class SettingsRelationManager extends RelationManager
|
||||
|
||||
TextColumn::make('online_time')
|
||||
->label(__('filament::resources.columns.online_time'))
|
||||
->formatStateUsing(fn (string $state) => __(':m minutes', ['m' => round(CarbonInterval::seconds($state)->totalMinutes)]))
|
||||
->formatStateUsing(fn (string $state) => __(':m minutes', ['m' => round(CarbonInterval::seconds((int) $state)->totalMinutes)]))
|
||||
->toggleable(),
|
||||
|
||||
IconColumn::make('can_trade')
|
||||
|
||||
@@ -93,3 +93,9 @@
|
||||
[2026-01-20 16:37:44] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
|
||||
[2026-01-20 16:37:44] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
|
||||
[2026-01-20 16:46:43] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
|
||||
[2026-01-20 17:17:42] production.ERROR: Cannot use App\Models\WebsiteBadge as WebsiteBadge because the name is already in use {"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\FatalError(code: 0): Cannot use App\\Models\\WebsiteBadge as WebsiteBadge because the name is already in use at C:/Github/Epicnabbo-Catalogus-2025FullPack-Updated-Daily/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/BadgeTextEditorResource.php:20)
|
||||
[stacktrace]
|
||||
#0 {main}
|
||||
"}
|
||||
[2026-01-20 17:19:05] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
|
||||
[2026-01-20 17:19:06] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
|
||||
|
||||
Reference in New Issue
Block a user