mirror of
https://github.com/pelican-dev/panel.git
synced 2026-07-17 12:43:56 +03:00
Compare commits
6 Commits
boy132/ran
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b9f0eff6b2 | ||
|
|
5b6f497863 | ||
|
|
d2dc6b69c8 | ||
|
|
2b34cc4d3c | ||
|
|
c6d777f25d | ||
|
|
4950bbd06e |
@@ -24,6 +24,7 @@ class DatabaseSettingsCommand extends Command
|
||||
protected $signature = 'p:environment:database
|
||||
{--driver= : The database driver backend to use.}
|
||||
{--database= : The database to use.}
|
||||
{--schema= : The schema to use for the PostgreSQL database.}
|
||||
{--host= : The connection address for the MySQL/ MariaDB/ PostgreSQL server.}
|
||||
{--port= : The connection port for the MySQL/ MariaDB/ PostgreSQL server.}
|
||||
{--username= : Username to use when connecting to the MySQL/ MariaDB/ PostgreSQL server.}
|
||||
@@ -196,6 +197,11 @@ class DatabaseSettingsCommand extends Command
|
||||
config('database.connections.pgsql.database', 'panel')
|
||||
);
|
||||
|
||||
$this->variables['DB_SCHEMA'] = $this->option('schema') ?? $this->ask(
|
||||
'Database Schema',
|
||||
config('database.connections.pgsql.search_path', 'public')
|
||||
);
|
||||
|
||||
$this->output->note(trans('commands.database_settings.DB_USERNAME_note'));
|
||||
$this->variables['DB_USERNAME'] = $this->option('username') ?? $this->ask(
|
||||
'Database Username',
|
||||
@@ -224,7 +230,7 @@ class DatabaseSettingsCommand extends Command
|
||||
'charset' => 'utf8',
|
||||
'prefix' => '',
|
||||
'prefix_indexes' => true,
|
||||
'search_path' => 'public',
|
||||
'search_path' => $this->variables['DB_SCHEMA'],
|
||||
'sslmode' => 'prefer',
|
||||
]);
|
||||
|
||||
|
||||
@@ -6,6 +6,11 @@ use Filament\Schemas\Components\Component;
|
||||
|
||||
interface HasPluginSettings
|
||||
{
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function getSettingsFormData(): array;
|
||||
|
||||
/**
|
||||
* @return Component[]
|
||||
*/
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\Extensions\Features;
|
||||
|
||||
use App\Models\Server;
|
||||
use App\Models\User;
|
||||
use Filament\Actions\Action;
|
||||
|
||||
interface FeatureSchemaInterface
|
||||
@@ -11,5 +13,7 @@ interface FeatureSchemaInterface
|
||||
|
||||
public function getId(): string;
|
||||
|
||||
public function authorize(User $user, Server $server): bool;
|
||||
|
||||
public function getAction(): Action;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ use App\Extensions\Features\FeatureSchemaInterface;
|
||||
use App\Facades\Activity;
|
||||
use App\Models\Server;
|
||||
use App\Models\ServerVariable;
|
||||
use App\Models\User;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use Closure;
|
||||
use Exception;
|
||||
@@ -37,6 +38,11 @@ class GSLTokenSchema implements FeatureSchemaInterface
|
||||
return 'gsl_token';
|
||||
}
|
||||
|
||||
public function authorize(User $user, Server $server): bool
|
||||
{
|
||||
return $user->can(SubuserPermission::StartupUpdate, $server);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
@@ -55,7 +61,6 @@ class GSLTokenSchema implements FeatureSchemaInterface
|
||||
->modalHeading(trans('server/feature.gsl_token.heading'))
|
||||
->modalDescription(trans('server/feature.gsl_token.description'))
|
||||
->modalSubmitActionLabel(trans('server/feature.gsl_token.submit'))
|
||||
->disabledSchema(fn () => !user()?->can(SubuserPermission::StartupUpdate, $server))
|
||||
->schema([
|
||||
TextEntry::make('info')
|
||||
->label(new HtmlString(Blade::render(trans('server/feature.gsl_token.info')))),
|
||||
|
||||
@@ -6,6 +6,7 @@ use App\Enums\SubuserPermission;
|
||||
use App\Extensions\Features\FeatureSchemaInterface;
|
||||
use App\Facades\Activity;
|
||||
use App\Models\Server;
|
||||
use App\Models\User;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use Exception;
|
||||
use Filament\Actions\Action;
|
||||
@@ -34,6 +35,11 @@ class JavaVersionSchema implements FeatureSchemaInterface
|
||||
return 'java_version';
|
||||
}
|
||||
|
||||
public function authorize(User $user, Server $server): bool
|
||||
{
|
||||
return $user->can(SubuserPermission::StartupDockerImage, $server);
|
||||
}
|
||||
|
||||
public function getAction(): Action
|
||||
{
|
||||
/** @var Server $server */
|
||||
@@ -44,7 +50,6 @@ class JavaVersionSchema implements FeatureSchemaInterface
|
||||
->modalHeading(trans('server/feature.java_version.heading'))
|
||||
->modalDescription(trans('server/feature.java_version.description'))
|
||||
->modalSubmitActionLabel(trans('server/feature.java_version.submit'))
|
||||
->disabledSchema(fn () => !user()?->can(SubuserPermission::StartupDockerImage, $server))
|
||||
->schema([
|
||||
TextEntry::make('java')
|
||||
->label(trans('server/feature.java_version.select_version')),
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
|
||||
namespace App\Extensions\Features\Schemas;
|
||||
|
||||
use App\Enums\SubuserPermission;
|
||||
use App\Extensions\Features\FeatureSchemaInterface;
|
||||
use App\Models\Server;
|
||||
use App\Models\User;
|
||||
use App\Repositories\Daemon\DaemonFileRepository;
|
||||
use App\Repositories\Daemon\DaemonServerRepository;
|
||||
use Exception;
|
||||
@@ -28,6 +30,11 @@ class MinecraftEulaSchema implements FeatureSchemaInterface
|
||||
return 'eula';
|
||||
}
|
||||
|
||||
public function authorize(User $user, Server $server): bool
|
||||
{
|
||||
return $user->can(SubuserPermission::FileUpdate, $server);
|
||||
}
|
||||
|
||||
public function getAction(): Action
|
||||
{
|
||||
return Action::make($this->getId())
|
||||
|
||||
@@ -4,6 +4,8 @@ namespace App\Extensions\Features\Schemas;
|
||||
|
||||
use App\Enums\TablerIcon;
|
||||
use App\Extensions\Features\FeatureSchemaInterface;
|
||||
use App\Models\Server;
|
||||
use App\Models\User;
|
||||
use Filament\Actions\Action;
|
||||
use Illuminate\Support\HtmlString;
|
||||
|
||||
@@ -27,6 +29,11 @@ class PIDLimitSchema implements FeatureSchemaInterface
|
||||
return 'pid_limit';
|
||||
}
|
||||
|
||||
public function authorize(User $user, Server $server): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getAction(): Action
|
||||
{
|
||||
return Action::make($this->getId())
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
namespace App\Extensions\Features\Schemas;
|
||||
|
||||
use App\Extensions\Features\FeatureSchemaInterface;
|
||||
use App\Models\Server;
|
||||
use App\Models\User;
|
||||
use Filament\Actions\Action;
|
||||
use Illuminate\Support\HtmlString;
|
||||
|
||||
@@ -22,6 +24,11 @@ class SteamDiskSpaceSchema implements FeatureSchemaInterface
|
||||
return 'steam_disk_space';
|
||||
}
|
||||
|
||||
public function authorize(User $user, Server $server): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getAction(): Action
|
||||
{
|
||||
return Action::make($this->getId())
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Filament\Admin\Resources\DatabaseHosts\RelationManagers;
|
||||
|
||||
use App\Filament\Admin\Resources\Servers\Pages\EditServer;
|
||||
use App\Filament\Components\Actions\RotateDatabasePasswordAction;
|
||||
use App\Filament\Components\Tables\Columns\DateTimeColumn;
|
||||
use App\Models\Database;
|
||||
@@ -51,7 +50,7 @@ class DatabasesRelationManager extends RelationManager
|
||||
{
|
||||
return $table
|
||||
->recordTitleAttribute('database')
|
||||
->heading(null)
|
||||
->heading('')
|
||||
->columns([
|
||||
TextColumn::make('database'),
|
||||
TextColumn::make('username')
|
||||
@@ -60,7 +59,7 @@ class DatabasesRelationManager extends RelationManager
|
||||
->label(trans('admin/databasehost.table.remote'))
|
||||
->formatStateUsing(fn (Database $record) => $record->remote === '%' ? trans('admin/databasehost.anywhere'). ' ( % )' : $record->remote),
|
||||
TextColumn::make('server.name')
|
||||
->url(fn (Database $database) => user()?->can('update', $database->server) ? EditServer::getUrl(['record' => $database->server]) : null),
|
||||
->url(fn (Database $database) => route('filament.admin.resources.servers.edit', ['record' => $database->server_id])),
|
||||
TextColumn::make('max_connections')
|
||||
->label(trans('admin/databasehost.table.max_connections'))
|
||||
->formatStateUsing(fn ($record) => $record->max_connections ?: trans('server/database.unlimited')),
|
||||
|
||||
@@ -34,7 +34,7 @@ class EggResource extends Resource
|
||||
|
||||
public static function getNavigationGroup(): ?string
|
||||
{
|
||||
if (user()?->getCustomization(CustomizationKey::TopNavigation)) {
|
||||
if (user()?->getCustomization(CustomizationKey::TopNavigation) === 'topbar') {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -43,8 +43,12 @@ class ListEggs extends ListRecords
|
||||
$defaultEggIcon = 'data:image/svg+xml;base64,' . base64_encode(file_get_contents(public_path($defaultEggIcon)));
|
||||
|
||||
return $table
|
||||
->searchable(true)
|
||||
->defaultPaginationPageOption(25)
|
||||
->columns([
|
||||
TextColumn::make('id')
|
||||
->label('Id')
|
||||
->hidden(),
|
||||
ImageColumn::make('icon')
|
||||
->label('')
|
||||
->alignCenter()
|
||||
@@ -52,7 +56,7 @@ class ListEggs extends ListRecords
|
||||
->getStateUsing(fn (Egg $record) => $record->icon ?: $defaultEggIcon),
|
||||
TextColumn::make('name')
|
||||
->label(trans('admin/egg.name'))
|
||||
->description(fn ($record) => (strlen($record->description) > 120) ? substr($record->description, 0, 120).'...' : $record->description)
|
||||
->description(fn ($record): ?string => (strlen($record->description) > 120) ? substr($record->description, 0, 120).'...' : $record->description)
|
||||
->wrap()
|
||||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
@@ -2,13 +2,9 @@
|
||||
|
||||
namespace App\Filament\Admin\Resources\Eggs\RelationManagers;
|
||||
|
||||
use App\Filament\Admin\Resources\Nodes\Pages\EditNode;
|
||||
use App\Filament\Admin\Resources\Servers\Pages\EditServer;
|
||||
use App\Filament\Admin\Resources\Users\Pages\EditUser;
|
||||
use App\Filament\Components\Actions\ViewConsoleAction;
|
||||
use App\Models\Server;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Resources\RelationManagers\RelationManager;
|
||||
use Filament\Tables\Columns\SelectColumn;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
@@ -22,35 +18,27 @@ class ServersRelationManager extends RelationManager
|
||||
->recordTitleAttribute('servers')
|
||||
->emptyStateDescription(trans('admin/egg.no_servers'))
|
||||
->emptyStateHeading(trans('admin/egg.no_servers_help'))
|
||||
->searchable(false)
|
||||
->heading(trans('admin/egg.servers'))
|
||||
->columns([
|
||||
TextColumn::make('user.username')
|
||||
->label(trans('admin/server.owner'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server->user) ? EditUser::getUrl(['record' => $server->user]) : null)
|
||||
->sortable()
|
||||
->searchable(),
|
||||
->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user]))
|
||||
->sortable(),
|
||||
TextColumn::make('name')
|
||||
->label(trans('admin/server.name'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server) ? EditServer::getUrl(['record' => $server]) : null)
|
||||
->sortable()
|
||||
->searchable(),
|
||||
->url(fn (Server $server): string => route('filament.admin.resources.servers.edit', ['record' => $server]))
|
||||
->sortable(),
|
||||
TextColumn::make('node.name')
|
||||
->label(trans('admin/server.node'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server->node) ? EditNode::getUrl(['record' => $server->node]) : null)
|
||||
->sortable()
|
||||
->searchable(),
|
||||
->url(fn (Server $server): string => route('filament.admin.resources.nodes.edit', ['record' => $server->node])),
|
||||
TextColumn::make('image')
|
||||
->label(trans('admin/server.docker_image'))
|
||||
->badge(),
|
||||
TextColumn::make('allocation.address')
|
||||
->label(trans('admin/server.docker_image')),
|
||||
SelectColumn::make('allocation.id')
|
||||
->label(trans('admin/server.primary_allocation'))
|
||||
->disabled()
|
||||
->options(fn (Server $server) => $server->allocations->take(1)->mapWithKeys(fn ($allocation) => [$allocation->id => $allocation->address]))
|
||||
->placeholder(trans('admin/server.none'))
|
||||
->sortable(),
|
||||
])
|
||||
->recordActions([
|
||||
ViewConsoleAction::make(),
|
||||
EditAction::make()
|
||||
->url(fn (Server $server) => EditServer::getUrl(['record' => $server], panel: 'admin')),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ class NodeResource extends Resource
|
||||
|
||||
public static function getNavigationGroup(): ?string
|
||||
{
|
||||
if (user()?->getCustomization(CustomizationKey::TopNavigation)) {
|
||||
if (user()?->getCustomization(CustomizationKey::TopNavigation) === 'topbar') {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ class ListNodes extends ListRecords
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->searchable(false)
|
||||
->checkIfRecordIsSelectableUsing(fn (Node $node) => $node->servers_count <= 0)
|
||||
->columns([
|
||||
TextColumn::make('uuid')
|
||||
|
||||
@@ -4,7 +4,6 @@ namespace App\Filament\Admin\Resources\Nodes\RelationManagers;
|
||||
|
||||
use App\Enums\TablerIcon;
|
||||
use App\Filament\Admin\Resources\Servers\Pages\CreateServer;
|
||||
use App\Filament\Admin\Resources\Servers\Pages\EditServer;
|
||||
use App\Filament\Components\Actions\UpdateNodeAllocations;
|
||||
use App\Models\Allocation;
|
||||
use App\Models\Node;
|
||||
@@ -12,8 +11,6 @@ use App\Services\Allocations\AssignmentService;
|
||||
use BackedEnum;
|
||||
use Exception;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Actions\DeleteBulkAction;
|
||||
use Filament\Forms\Components\Select;
|
||||
use Filament\Forms\Components\TagsInput;
|
||||
@@ -33,7 +30,7 @@ class AllocationsRelationManager extends RelationManager
|
||||
{
|
||||
protected static string $relationship = 'allocations';
|
||||
|
||||
protected static string|BackedEnum|null $icon = TablerIcon::Network;
|
||||
protected static string|BackedEnum|null $icon = TablerIcon::PlugConnected;
|
||||
|
||||
public function setTitle(): string
|
||||
{
|
||||
@@ -49,14 +46,28 @@ class AllocationsRelationManager extends RelationManager
|
||||
->recordTitleAttribute('address')
|
||||
->checkIfRecordIsSelectableUsing(fn (Allocation $allocation) => $allocation->server_id === null)
|
||||
->paginationPageOptions([10, 20, 50, 100, 200, 500])
|
||||
->heading(null)
|
||||
->searchable()
|
||||
->heading('')
|
||||
->selectCurrentPageOnly() //Prevent people from trying to nuke 30,000 ports at once.... -,-
|
||||
->columns([
|
||||
TextColumn::make('id')
|
||||
->label('ID')
|
||||
->sortable()
|
||||
->toggleable()
|
||||
->toggledHiddenByDefault(),
|
||||
TextColumn::make('port')
|
||||
->searchable()
|
||||
->label(trans('admin/node.ports')),
|
||||
TextColumn::make('server.name')
|
||||
->label(trans('admin/node.table.servers'))
|
||||
->icon(TablerIcon::BrandDocker)
|
||||
->visibleFrom('md')
|
||||
->searchable()
|
||||
->url(fn (Allocation $allocation): string => $allocation->server ? route('filament.admin.resources.servers.edit', ['record' => $allocation->server]) : ''),
|
||||
TextInputColumn::make('ip_alias')
|
||||
->searchable()
|
||||
->label(trans('admin/node.table.alias')),
|
||||
TextInputColumn::make('notes')
|
||||
->label(trans('admin/node.table.allocation_notes'))
|
||||
->placeholder(trans('admin/node.table.no_notes')),
|
||||
SelectColumn::make('ip')
|
||||
->options(function (Allocation $allocation) {
|
||||
$ips = Allocation::where('port', $allocation->port)->pluck('ip');
|
||||
@@ -70,35 +81,15 @@ class AllocationsRelationManager extends RelationManager
|
||||
})
|
||||
->selectablePlaceholder(false)
|
||||
->searchable()
|
||||
->sortable()
|
||||
->label(trans('admin/node.table.ip')),
|
||||
TextColumn::make('port')
|
||||
->searchable()
|
||||
->sortable()
|
||||
->label(trans('admin/node.port')),
|
||||
TextInputColumn::make('ip_alias')
|
||||
->searchable()
|
||||
->sortable()
|
||||
->label(trans('admin/node.table.alias'))
|
||||
->placeholder(trans('admin/node.table.no_alias')),
|
||||
TextInputColumn::make('notes')
|
||||
->label(trans('admin/node.table.allocation_notes'))
|
||||
->placeholder(trans('admin/node.table.no_notes')),
|
||||
TextColumn::make('server.name')
|
||||
->label(trans('admin/node.table.servers'))
|
||||
->placeholder(trans('admin/node.table.no_server'))
|
||||
->visibleFrom('md')
|
||||
->searchable()
|
||||
->url(fn (Allocation $allocation) => $allocation->server && user()?->can('update', $allocation->server) ? EditServer::getUrl(['record' => $allocation->server]) : null),
|
||||
])
|
||||
->emptyStateHeading(trans('admin/node.no_allocations'))
|
||||
->recordActions([
|
||||
DeleteAction::make()
|
||||
->visible(fn (Allocation $allocation) => $allocation->server_id === null),
|
||||
])
|
||||
->toolbarActions([
|
||||
CreateAction::make()
|
||||
->createAnother(false)
|
||||
DeleteBulkAction::make()
|
||||
->authorize(fn () => user()?->can('update', $this->getOwnerRecord())),
|
||||
Action::make('create new allocation')
|
||||
->label(trans('admin/node.create_allocation'))
|
||||
->tooltip(trans('admin/node.create_allocation'))
|
||||
->icon(TablerIcon::WorldPlus)
|
||||
->schema(fn () => [
|
||||
Select::make('allocation_ip')
|
||||
@@ -153,7 +144,6 @@ class AllocationsRelationManager extends RelationManager
|
||||
UpdateNodeAllocations::make()
|
||||
->nodeRecord($this->getOwnerRecord())
|
||||
->authorize(fn () => user()?->can('update', $this->getOwnerRecord())),
|
||||
DeleteBulkAction::make(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,13 +4,8 @@ namespace App\Filament\Admin\Resources\Nodes\RelationManagers;
|
||||
|
||||
use App\Enums\ServerResourceType;
|
||||
use App\Enums\TablerIcon;
|
||||
use App\Filament\Admin\Resources\Eggs\Pages\EditEgg;
|
||||
use App\Filament\Admin\Resources\Servers\Pages\EditServer;
|
||||
use App\Filament\Admin\Resources\Users\Pages\EditUser;
|
||||
use App\Filament\Components\Actions\ViewConsoleAction;
|
||||
use App\Models\Server;
|
||||
use BackedEnum;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Resources\RelationManagers\RelationManager;
|
||||
use Filament\Tables\Columns\SelectColumn;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
@@ -30,27 +25,29 @@ class ServersRelationManager extends RelationManager
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->heading(null)
|
||||
->searchable(false)
|
||||
->heading('')
|
||||
->columns([
|
||||
TextColumn::make('user.username')
|
||||
->label(trans('admin/node.table.owner'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server->user) ? EditUser::getUrl(['record' => $server->user]) : null)
|
||||
->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user]))
|
||||
->searchable(),
|
||||
TextColumn::make('name')
|
||||
->label(trans('admin/node.table.name'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server) ? EditServer::getUrl(['record' => $server]) : null)
|
||||
->url(fn (Server $server): string => route('filament.admin.resources.servers.edit', ['record' => $server]))
|
||||
->searchable()
|
||||
->sortable(),
|
||||
TextColumn::make('egg.name')
|
||||
->label(trans('admin/node.table.egg'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server->egg) ? EditEgg::getUrl(['record' => $server->egg]) : null)
|
||||
->url(fn (Server $server): string => route('filament.admin.resources.eggs.edit', ['record' => $server->user]))
|
||||
->sortable(),
|
||||
SelectColumn::make('allocation.id')
|
||||
->label(trans('admin/node.primary_allocation'))
|
||||
->disabled(fn (Server $server) => $server->allocations->count() <= 1)
|
||||
->options(fn (Server $server) => $server->allocations->take(1)->mapWithKeys(fn ($allocation) => [$allocation->id => $allocation->address]))
|
||||
->selectablePlaceholder(fn (Server $server) => $server->allocations->count() <= 1)
|
||||
->placeholder(trans('admin/server.none')),
|
||||
->placeholder(trans('admin/server.none'))
|
||||
->sortable(),
|
||||
TextColumn::make('cpu')
|
||||
->label(trans('admin/node.cpu'))
|
||||
->state(fn (Server $server) => $server->formatResource(ServerResourceType::CPULimit)),
|
||||
@@ -64,22 +61,13 @@ class ServersRelationManager extends RelationManager
|
||||
->counts('databases')
|
||||
->label(trans('admin/node.databases'))
|
||||
->numeric()
|
||||
->sortable()
|
||||
->toggleable()
|
||||
->toggledHiddenByDefault(),
|
||||
->sortable(),
|
||||
TextColumn::make('backups_count')
|
||||
->counts('backups')
|
||||
->label(trans('admin/node.backups'))
|
||||
->numeric()
|
||||
->sortable()
|
||||
->toggleable()
|
||||
->toggledHiddenByDefault(),
|
||||
->sortable(),
|
||||
])
|
||||
->emptyStateHeading(trans('admin/server.no_servers'))
|
||||
->recordActions([
|
||||
ViewConsoleAction::make(),
|
||||
EditAction::make()
|
||||
->url(fn (Server $server) => EditServer::getUrl(['record' => $server], panel: 'admin')),
|
||||
]);
|
||||
->emptyStateHeading(trans('admin/server.no_servers'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,6 +113,7 @@ class PluginResource extends Resource
|
||||
->color('primary')
|
||||
->visible(fn (Plugin $plugin) => $plugin->status === PluginStatus::Enabled && $plugin->hasSettings())
|
||||
->schema(fn (Plugin $plugin) => $plugin->getSettingsForm())
|
||||
->fillForm(fn (Plugin $plugin) => $plugin->getSettingsFormData())
|
||||
->action(fn (array $data, Plugin $plugin) => $plugin->saveSettings($data))
|
||||
->slideOver(),
|
||||
ActionGroup::make([
|
||||
|
||||
@@ -67,7 +67,7 @@ class RoleResource extends Resource
|
||||
|
||||
public static function getNavigationGroup(): ?string
|
||||
{
|
||||
return user()?->getCustomization(CustomizationKey::TopNavigation) ? trans('admin/dashboard.advanced') : trans('admin/dashboard.user');
|
||||
return user()?->getCustomization(CustomizationKey::TopNavigation) === 'topbar' ? trans('admin/dashboard.advanced') : trans('admin/dashboard.user');
|
||||
}
|
||||
|
||||
public static function getNavigationBadge(): ?string
|
||||
|
||||
@@ -3,14 +3,12 @@
|
||||
namespace App\Filament\Admin\Resources\Servers\Pages;
|
||||
|
||||
use App\Enums\TablerIcon;
|
||||
use App\Filament\Admin\Resources\Eggs\Pages\EditEgg;
|
||||
use App\Filament\Admin\Resources\Nodes\Pages\EditNode;
|
||||
use App\Filament\Admin\Resources\Servers\ServerResource;
|
||||
use App\Filament\Admin\Resources\Users\Pages\EditUser;
|
||||
use App\Filament\Components\Actions\ViewConsoleAction;
|
||||
use App\Filament\Server\Pages\Console;
|
||||
use App\Models\Server;
|
||||
use App\Traits\Filament\CanCustomizeHeaderActions;
|
||||
use App\Traits\Filament\CanCustomizeHeaderWidgets;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
@@ -30,11 +28,12 @@ class ListServers extends ListRecords
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->searchable(false)
|
||||
->defaultGroup('node.name')
|
||||
->groups([
|
||||
Group::make('node.name')->getDescriptionFromRecordUsing(fn (Server $server) => str($server->node->description)->limit(150)),
|
||||
Group::make('user.username')->getDescriptionFromRecordUsing(fn (Server $server) => $server->user->email),
|
||||
Group::make('egg.name')->getDescriptionFromRecordUsing(fn (Server $server) => str($server->egg->description)->limit(150)),
|
||||
Group::make('node.name')->getDescriptionFromRecordUsing(fn (Server $server): string => str($server->node->description)->limit(150)),
|
||||
Group::make('user.username')->getDescriptionFromRecordUsing(fn (Server $server): string => $server->user->email),
|
||||
Group::make('egg.name')->getDescriptionFromRecordUsing(fn (Server $server): string => str($server->egg->description)->limit(150)),
|
||||
])
|
||||
->columns([
|
||||
TextColumn::make('condition')
|
||||
@@ -55,19 +54,19 @@ class ListServers extends ListRecords
|
||||
->sortable(),
|
||||
TextColumn::make('node.name')
|
||||
->label(trans('admin/server.node'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server->node) ? EditNode::getUrl(['record' => $server->node]) : null)
|
||||
->url(fn (Server $server) => route('filament.admin.resources.nodes.edit', ['record' => $server->node]))
|
||||
->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'node.name')
|
||||
->sortable()
|
||||
->searchable(),
|
||||
TextColumn::make('egg.name')
|
||||
->label(trans('admin/server.egg'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server->egg) ? EditEgg::getUrl(['record' => $server->egg]) : null)
|
||||
->url(fn (Server $server) => route('filament.admin.resources.eggs.edit', ['record' => $server->egg]))
|
||||
->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'egg.name')
|
||||
->sortable()
|
||||
->searchable(),
|
||||
TextColumn::make('user.username')
|
||||
->label(trans('admin/user.username'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server->user) ? EditUser::getUrl(['record' => $server->user]) : null)
|
||||
->url(fn (Server $server) => route('filament.admin.resources.users.edit', ['record' => $server->user]))
|
||||
->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'user.username')
|
||||
->sortable()
|
||||
->searchable(),
|
||||
@@ -83,23 +82,19 @@ class ListServers extends ListRecords
|
||||
->label(trans('admin/server.primary_allocation'))
|
||||
->hidden(fn () => user()?->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty)
|
||||
->state(fn (Server $server) => $server->allocation->address ?? trans('admin/server.none')),
|
||||
TextColumn::make('databases_count')
|
||||
->counts('databases')
|
||||
->label(trans('admin/server.databases'))
|
||||
->numeric()
|
||||
->sortable()
|
||||
->toggleable()
|
||||
->toggledHiddenByDefault(),
|
||||
TextColumn::make('image')->hidden(),
|
||||
TextColumn::make('backups_count')
|
||||
->counts('backups')
|
||||
->label(trans('admin/server.backups'))
|
||||
->numeric()
|
||||
->sortable()
|
||||
->toggleable()
|
||||
->toggledHiddenByDefault(),
|
||||
->sortable(),
|
||||
])
|
||||
->recordActions([
|
||||
ViewConsoleAction::make(),
|
||||
Action::make('view')
|
||||
->tooltip(trans('admin/server.view'))
|
||||
->icon(TablerIcon::Terminal)
|
||||
->url(fn (Server $server) => Console::getUrl(panel: 'server', tenant: $server))
|
||||
->authorize(fn (Server $server) => user()?->canAccessTenant($server)),
|
||||
EditAction::make(),
|
||||
])
|
||||
->toolbarActions([
|
||||
|
||||
@@ -7,7 +7,6 @@ use App\Filament\Admin\Resources\Servers\Pages\CreateServer;
|
||||
use App\Models\Allocation;
|
||||
use App\Models\Server;
|
||||
use App\Services\Allocations\AssignmentService;
|
||||
use BackedEnum;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\AssociateAction;
|
||||
use Filament\Actions\CreateAction;
|
||||
@@ -20,6 +19,7 @@ use Filament\Forms\Components\TextInput;
|
||||
use Filament\Resources\RelationManagers\RelationManager;
|
||||
use Filament\Schemas\Components\Utilities\Get;
|
||||
use Filament\Schemas\Components\Utilities\Set;
|
||||
use Filament\Support\Enums\IconSize;
|
||||
use Filament\Tables\Columns\IconColumn;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Columns\TextInputColumn;
|
||||
@@ -32,30 +32,21 @@ class AllocationsRelationManager extends RelationManager
|
||||
{
|
||||
protected static string $relationship = 'allocations';
|
||||
|
||||
protected static string|BackedEnum|null $icon = TablerIcon::Network;
|
||||
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->heading(null)
|
||||
->heading('')
|
||||
->selectCurrentPageOnly()
|
||||
->recordTitleAttribute('address')
|
||||
->recordTitle(fn (Allocation $allocation) => $allocation->address)
|
||||
->inverseRelationship('server')
|
||||
->columns([
|
||||
TextColumn::make('ip')
|
||||
->label(trans('admin/server.ip_address'))
|
||||
->searchable()
|
||||
->sortable(),
|
||||
->label(trans('admin/server.ip_address')),
|
||||
TextColumn::make('port')
|
||||
->label(trans('admin/server.port'))
|
||||
->searchable()
|
||||
->sortable(),
|
||||
->label(trans('admin/server.port')),
|
||||
TextInputColumn::make('ip_alias')
|
||||
->label(trans('admin/server.alias'))
|
||||
->placeholder(trans('admin/server.no_alias'))
|
||||
->searchable()
|
||||
->sortable(),
|
||||
->label(trans('admin/server.alias')),
|
||||
TextInputColumn::make('notes')
|
||||
->label(trans('admin/server.notes'))
|
||||
->placeholder(trans('admin/server.no_notes')),
|
||||
@@ -81,26 +72,18 @@ class AllocationsRelationManager extends RelationManager
|
||||
->emptyStateHeading(trans('admin/server.no_allocations'))
|
||||
->recordActions([
|
||||
Action::make('make-primary')
|
||||
->authorize(fn (Allocation $allocation) => user()?->can('update', $allocation))
|
||||
->tooltip(trans('admin/server.make_primary'))
|
||||
->icon(TablerIcon::Star)
|
||||
->label(trans('admin/server.make_primary'))
|
||||
->action(fn (Allocation $allocation) => $this->getOwnerRecord()->update(['allocation_id' => $allocation->id]) && $this->deselectAllTableRecords())
|
||||
->hidden(fn (Allocation $allocation) => $allocation->id === $this->getOwnerRecord()->allocation_id),
|
||||
Action::make('lock')
|
||||
->authorize(fn (Allocation $allocation) => user()?->can('update', $allocation))
|
||||
->tooltip(trans('admin/server.lock'))
|
||||
->icon(TablerIcon::Lock)
|
||||
->label(trans('admin/server.lock'))
|
||||
->action(fn (Allocation $allocation) => $allocation->update(['is_locked' => true]) && $this->deselectAllTableRecords())
|
||||
->hidden(fn (Allocation $allocation) => $allocation->is_locked),
|
||||
Action::make('unlock')
|
||||
->authorize(fn (Allocation $allocation) => user()?->can('update', $allocation))
|
||||
->tooltip(trans('admin/server.unlock'))
|
||||
->icon(TablerIcon::LockOpen)
|
||||
->label(trans('admin/server.unlock'))
|
||||
->action(fn (Allocation $allocation) => $allocation->update(['is_locked' => false]) && $this->deselectAllTableRecords())
|
||||
->visible(fn (Allocation $allocation) => $allocation->is_locked),
|
||||
DissociateAction::make()
|
||||
->authorize(fn (Allocation $allocation) => user()?->can('update', $allocation))
|
||||
->tooltip(trans('admin/server.remove_allocation'))
|
||||
->after(function (Allocation $allocation) {
|
||||
$allocation->update([
|
||||
'notes' => null,
|
||||
@@ -127,7 +110,7 @@ class AllocationsRelationManager extends RelationManager
|
||||
CreateAction::make()
|
||||
->hiddenLabel()
|
||||
->tooltip(trans('admin/server.create_allocation'))
|
||||
->icon(TablerIcon::WorldPlus)
|
||||
->icon(TablerIcon::Network)
|
||||
->createAnother(false)
|
||||
->schema(fn () => [
|
||||
Select::make('allocation_ip')
|
||||
@@ -180,6 +163,8 @@ class AllocationsRelationManager extends RelationManager
|
||||
])
|
||||
->action(fn (array $data, AssignmentService $service) => $service->handle($this->getOwnerRecord()->node, $data, $this->getOwnerRecord())),
|
||||
AssociateAction::make()
|
||||
->icon(TablerIcon::FilePlus)
|
||||
->iconButton()->iconSize(IconSize::ExtraLarge)
|
||||
->multiple()
|
||||
->associateAnother(false)
|
||||
->preloadRecordSelect()
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
namespace App\Filament\Admin\Resources\Servers\RelationManagers;
|
||||
|
||||
use App\Enums\TablerIcon;
|
||||
use App\Filament\Admin\Resources\Servers\Pages\EditServer;
|
||||
use App\Filament\Components\Actions\RotateDatabasePasswordAction;
|
||||
use App\Filament\Components\Tables\Columns\DateTimeColumn;
|
||||
use App\Models\Database;
|
||||
@@ -11,7 +10,6 @@ use App\Models\DatabaseHost;
|
||||
use App\Models\Server;
|
||||
use App\Services\Databases\DatabaseManagementService;
|
||||
use App\Services\Servers\RandomWordService;
|
||||
use BackedEnum;
|
||||
use Exception;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Actions\DeleteAction;
|
||||
@@ -32,8 +30,6 @@ class DatabasesRelationManager extends RelationManager
|
||||
{
|
||||
protected static string $relationship = 'databases';
|
||||
|
||||
protected static string|BackedEnum|null $icon = TablerIcon::Database;
|
||||
|
||||
public function form(Schema $schema): Schema
|
||||
{
|
||||
return $schema
|
||||
@@ -66,7 +62,7 @@ class DatabasesRelationManager extends RelationManager
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->heading(null)
|
||||
->heading('')
|
||||
->recordTitleAttribute('database')
|
||||
->columns([
|
||||
TextColumn::make('database'),
|
||||
@@ -76,7 +72,7 @@ class DatabasesRelationManager extends RelationManager
|
||||
->label(trans('admin/databasehost.table.remote'))
|
||||
->formatStateUsing(fn (Database $record) => $record->remote === '%' ? trans('admin/databasehost.anywhere'). ' ( % )' : $record->remote),
|
||||
TextColumn::make('server.name')
|
||||
->url(fn (Database $database) => user()?->can('update', $database->server) ? EditServer::getUrl(['record' => $database->server]) : null),
|
||||
->url(fn (Database $database) => route('filament.admin.resources.servers.edit', ['record' => $database->server_id])),
|
||||
TextColumn::make('max_connections')
|
||||
->label(trans('admin/databasehost.table.max_connections'))
|
||||
->formatStateUsing(fn ($record) => $record->max_connections ?: trans('admin/databasehost.unlimited')),
|
||||
|
||||
@@ -50,7 +50,7 @@ class ServerResource extends Resource
|
||||
|
||||
public static function getNavigationGroup(): ?string
|
||||
{
|
||||
if (user()?->getCustomization(CustomizationKey::TopNavigation)) {
|
||||
if (user()?->getCustomization(CustomizationKey::TopNavigation) === 'topbar') {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,15 +4,10 @@ namespace App\Filament\Admin\Resources\Users\RelationManagers;
|
||||
|
||||
use App\Enums\ServerState;
|
||||
use App\Enums\SuspendAction;
|
||||
use App\Filament\Admin\Resources\Eggs\Pages\EditEgg;
|
||||
use App\Filament\Admin\Resources\Nodes\Pages\EditNode;
|
||||
use App\Filament\Admin\Resources\Servers\Pages\EditServer;
|
||||
use App\Filament\Components\Actions\ViewConsoleAction;
|
||||
use App\Models\Server;
|
||||
use App\Models\User;
|
||||
use App\Services\Servers\SuspensionService;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Resources\RelationManagers\RelationManager;
|
||||
use Filament\Tables\Columns\SelectColumn;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
@@ -28,6 +23,7 @@ class ServersRelationManager extends RelationManager
|
||||
$user = $this->getOwnerRecord();
|
||||
|
||||
return $table
|
||||
->searchable(false)
|
||||
->heading(trans('admin/user.servers'))
|
||||
->headerActions([
|
||||
Action::make('toggle_suspend')
|
||||
@@ -54,20 +50,22 @@ class ServersRelationManager extends RelationManager
|
||||
}),
|
||||
])
|
||||
->columns([
|
||||
TextColumn::make('uuid')
|
||||
->hidden()
|
||||
->label('UUID')
|
||||
->searchable(),
|
||||
TextColumn::make('name')
|
||||
->label(trans('admin/server.name'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server) ? EditServer::getUrl(['record' => $server]) : null)
|
||||
->url(fn (Server $server) => route('filament.admin.resources.servers.edit', ['record' => $server]))
|
||||
->searchable()
|
||||
->sortable(),
|
||||
TextColumn::make('node.name')
|
||||
->label(trans('admin/server.node'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server->node) ? EditNode::getUrl(['record' => $server->node]) : null)
|
||||
->searchable()
|
||||
->url(fn (Server $server) => route('filament.admin.resources.nodes.edit', ['record' => $server->node]))
|
||||
->sortable(),
|
||||
TextColumn::make('egg.name')
|
||||
->label(trans('admin/server.egg'))
|
||||
->url(fn (Server $server) => user()?->can('update', $server->egg) ? EditEgg::getUrl(['record' => $server->egg]) : null)
|
||||
->searchable()
|
||||
->url(fn (Server $server) => route('filament.admin.resources.eggs.edit', ['record' => $server->egg]))
|
||||
->sortable(),
|
||||
SelectColumn::make('allocation_id')
|
||||
->label(trans('admin/server.primary_allocation'))
|
||||
@@ -85,22 +83,13 @@ class ServersRelationManager extends RelationManager
|
||||
->counts('databases')
|
||||
->label(trans('admin/server.databases'))
|
||||
->numeric()
|
||||
->sortable()
|
||||
->toggleable()
|
||||
->toggledHiddenByDefault(),
|
||||
->sortable(),
|
||||
TextColumn::make('backups_count')
|
||||
->counts('backups')
|
||||
->label(trans('admin/server.backups'))
|
||||
->numeric()
|
||||
->sortable()
|
||||
->toggleable()
|
||||
->toggledHiddenByDefault(),
|
||||
->sortable(),
|
||||
])
|
||||
->emptyStateHeading(trans('admin/server.no_servers'))
|
||||
->recordActions([
|
||||
ViewConsoleAction::make(),
|
||||
EditAction::make()
|
||||
->url(fn (Server $server) => EditServer::getUrl(['record' => $server], panel: 'admin')),
|
||||
]);
|
||||
->emptyStateHeading(trans('admin/server.no_servers'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ class UserResource extends Resource
|
||||
|
||||
public static function getNavigationGroup(): ?string
|
||||
{
|
||||
if (user()?->getCustomization(CustomizationKey::TopNavigation)) {
|
||||
if (user()?->getCustomization(CustomizationKey::TopNavigation) === 'topbar') {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -118,12 +118,10 @@ class UserResource extends Resource
|
||||
->defaultImageUrl(fn (User $user) => Filament::getUserAvatarUrl($user)),
|
||||
TextColumn::make('username')
|
||||
->label(trans('admin/user.username'))
|
||||
->searchable()
|
||||
->sortable(),
|
||||
->searchable(),
|
||||
TextColumn::make('email')
|
||||
->label(trans('admin/user.email'))
|
||||
->searchable()
|
||||
->sortable(),
|
||||
->searchable(),
|
||||
IconColumn::make('mfa_email_enabled')
|
||||
->label(trans('profile.tabs.2fa'))
|
||||
->visibleFrom('lg')
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Components\Actions;
|
||||
|
||||
use App\Enums\TablerIcon;
|
||||
use App\Filament\Server\Pages\Console;
|
||||
use App\Models\Server;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Facades\Filament;
|
||||
|
||||
class ViewConsoleAction extends Action
|
||||
{
|
||||
protected ?Server $server = null;
|
||||
|
||||
public static function getDefaultName(): ?string
|
||||
{
|
||||
return 'view_console';
|
||||
}
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->tooltip(trans('admin/server.view_console'));
|
||||
|
||||
$this->icon(TablerIcon::Terminal);
|
||||
|
||||
$this->url(fn (?Server $server) => Console::getUrl(panel: 'server', tenant: $this->getServer() ?? $server));
|
||||
|
||||
$this->authorize(fn (?Server $server) => user()?->canAccessTenant($this->getServer() ?? $server));
|
||||
}
|
||||
|
||||
public function server(?Server $server): static
|
||||
{
|
||||
$this->server = $server;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getServer(): ?Server
|
||||
{
|
||||
/** @var ?Server $tenant */
|
||||
$tenant = Filament::getTenant();
|
||||
|
||||
return $this->server ?? $tenant;
|
||||
}
|
||||
}
|
||||
@@ -64,9 +64,15 @@ class Console extends Page
|
||||
public function boot(FeatureService $featureService): void
|
||||
{
|
||||
$this->featureService = $featureService;
|
||||
|
||||
/** @var Server $server */
|
||||
$server = Filament::getTenant();
|
||||
|
||||
foreach ($featureService->getActiveSchemas($server->egg->features) as $feature) {
|
||||
if (!$feature->authorize(user(), $server)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->cacheAction($feature->getAction());
|
||||
}
|
||||
}
|
||||
@@ -82,6 +88,13 @@ class Console extends Page
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var Server $server */
|
||||
$server = Filament::getTenant();
|
||||
|
||||
if (!$feature->authorize(user(), $server)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->getMountedAction()) {
|
||||
$this->replaceMountedAction($feature->getId());
|
||||
} else {
|
||||
|
||||
@@ -335,6 +335,21 @@ class Plugin extends Model implements HasPluginSettings
|
||||
return false;
|
||||
}
|
||||
|
||||
/** @return array<string, mixed> */
|
||||
public function getSettingsFormData(): array
|
||||
{
|
||||
try {
|
||||
$pluginObject = new ($this->fullClass());
|
||||
|
||||
if ($pluginObject instanceof HasPluginSettings) {
|
||||
return $pluginObject->getSettingsFormData();
|
||||
}
|
||||
} catch (Exception) {
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/** @return Component[] */
|
||||
public function getSettingsForm(): array
|
||||
{
|
||||
|
||||
@@ -6,11 +6,8 @@ use App\Enums\CustomizationKey;
|
||||
use App\Enums\TablerIcon;
|
||||
use App\Livewire\Passkeys;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\AssociateAction;
|
||||
use Filament\Actions\CreateAction;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Actions\DeleteBulkAction;
|
||||
use Filament\Actions\DissociateAction;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Actions\View\ActionsIconAlias;
|
||||
use Filament\Actions\ViewAction;
|
||||
@@ -30,7 +27,6 @@ use Filament\Support\Facades\FilamentColor;
|
||||
use Filament\Support\Facades\FilamentIcon;
|
||||
use Filament\Support\Facades\FilamentView;
|
||||
use Filament\Support\View\SupportIconAlias;
|
||||
use Filament\Tables\Columns\SelectColumn;
|
||||
use Filament\Tables\View\TablesIconAlias;
|
||||
use Filament\View\PanelsIconAlias;
|
||||
use Filament\View\PanelsRenderHook;
|
||||
@@ -108,8 +104,6 @@ class FilamentServiceProvider extends ServiceProvider
|
||||
|
||||
Select::configureUsing(fn (Select $select) => $select->native(false));
|
||||
|
||||
SelectColumn::configureUsing(fn (SelectColumn $select) => $select->native(false));
|
||||
|
||||
KeyValue::configureUsing(fn (KeyValue $keyValue) => $keyValue
|
||||
->addAction(function (Action $action) {
|
||||
$action->tooltip(fn () => $action->getLabel());
|
||||
@@ -167,18 +161,6 @@ class FilamentServiceProvider extends ServiceProvider
|
||||
}
|
||||
});
|
||||
|
||||
DeleteBulkAction::configureUsing(function (DeleteBulkAction $action) {
|
||||
$action->icon(TablerIcon::Trash);
|
||||
$action->tooltip(fn () => $action->getLabel());
|
||||
$action->hiddenLabel();
|
||||
$action->iconSize(IconSize::Large);
|
||||
|
||||
if (user()?->getCustomization(CustomizationKey::ButtonStyle)) {
|
||||
$action->iconButton();
|
||||
$action->iconSize(IconSize::ExtraLarge);
|
||||
}
|
||||
});
|
||||
|
||||
CreateAction::configureUsing(function (CreateAction $action) {
|
||||
$action->icon(TablerIcon::Plus);
|
||||
$action->tooltip(fn () => $action->getLabel());
|
||||
@@ -215,30 +197,6 @@ class FilamentServiceProvider extends ServiceProvider
|
||||
}
|
||||
});
|
||||
|
||||
AssociateAction::configureUsing(function (AssociateAction $action) {
|
||||
$action->icon(TablerIcon::Link);
|
||||
$action->tooltip(fn () => $action->getLabel());
|
||||
$action->hiddenLabel();
|
||||
$action->iconSize(IconSize::Large);
|
||||
|
||||
if (user()?->getCustomization(CustomizationKey::ButtonStyle)) {
|
||||
$action->iconButton();
|
||||
$action->iconSize(IconSize::ExtraLarge);
|
||||
}
|
||||
});
|
||||
|
||||
DissociateAction::configureUsing(function (DissociateAction $action) {
|
||||
$action->icon(TablerIcon::Unlink);
|
||||
$action->tooltip(fn () => $action->getLabel());
|
||||
$action->hiddenLabel();
|
||||
$action->iconSize(IconSize::Large);
|
||||
|
||||
if (user()?->getCustomization(CustomizationKey::ButtonStyle)) {
|
||||
$action->iconButton();
|
||||
$action->iconSize(IconSize::ExtraLarge);
|
||||
}
|
||||
});
|
||||
|
||||
Action::configureUsing(function (Action $action) {
|
||||
$action->iconSize(IconSize::Large);
|
||||
|
||||
|
||||
@@ -35,7 +35,11 @@ class DeleteBackupService
|
||||
}
|
||||
|
||||
$this->connection->transaction(function () use ($schema, $backup) {
|
||||
$schema->deleteBackup($backup);
|
||||
try {
|
||||
$schema->deleteBackup($backup);
|
||||
} catch (Exception $exception) {
|
||||
throw_if($backup->is_successful, $exception);
|
||||
}
|
||||
|
||||
$backup->delete();
|
||||
});
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"filament/filament": "^5.6",
|
||||
"gboquizosanchez/filament-log-viewer": "^2.3",
|
||||
"guzzlehttp/guzzle": "^7.13",
|
||||
"laravel/framework": "^13.19",
|
||||
"laravel/framework": "^13.20",
|
||||
"laravel/helpers": "^1.8",
|
||||
"laravel/passkeys": "^0.2",
|
||||
"laravel/sanctum": "^4.3",
|
||||
|
||||
129
composer.lock
generated
129
composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "d283be708c595af317f07d7ac6c0d092",
|
||||
"content-hash": "2905567ddd84041198a2f8120d3e5f22",
|
||||
"packages": [
|
||||
{
|
||||
"name": "anourvalar/eloquent-serialize",
|
||||
@@ -127,16 +127,16 @@
|
||||
},
|
||||
{
|
||||
"name": "aws/aws-sdk-php",
|
||||
"version": "3.388.0",
|
||||
"version": "3.388.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/aws/aws-sdk-php.git",
|
||||
"reference": "6dd9a0674641ef7d302a50cc8f275eb443182dc9"
|
||||
"reference": "6104783c60d9134e7ceaeef03997767a547462b8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/6dd9a0674641ef7d302a50cc8f275eb443182dc9",
|
||||
"reference": "6dd9a0674641ef7d302a50cc8f275eb443182dc9",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/6104783c60d9134e7ceaeef03997767a547462b8",
|
||||
"reference": "6104783c60d9134e7ceaeef03997767a547462b8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -218,9 +218,9 @@
|
||||
"support": {
|
||||
"forum": "https://github.com/aws/aws-sdk-php/discussions",
|
||||
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.388.0"
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.388.5"
|
||||
},
|
||||
"time": "2026-07-07T18:11:48+00:00"
|
||||
"time": "2026-07-13T18:09:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "blade-ui-kit/blade-heroicons",
|
||||
@@ -870,16 +870,16 @@
|
||||
},
|
||||
{
|
||||
"name": "dedoc/scramble",
|
||||
"version": "v0.13.31",
|
||||
"version": "v0.13.34",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dedoc/scramble.git",
|
||||
"reference": "422c759a26395933be308aec5eeeeae0f78229cf"
|
||||
"reference": "af86ba277ee71640215ec4715bac1aa04e0767f6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/dedoc/scramble/zipball/422c759a26395933be308aec5eeeeae0f78229cf",
|
||||
"reference": "422c759a26395933be308aec5eeeeae0f78229cf",
|
||||
"url": "https://api.github.com/repos/dedoc/scramble/zipball/af86ba277ee71640215ec4715bac1aa04e0767f6",
|
||||
"reference": "af86ba277ee71640215ec4715bac1aa04e0767f6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -939,7 +939,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/dedoc/scramble/issues",
|
||||
"source": "https://github.com/dedoc/scramble/tree/v0.13.31"
|
||||
"source": "https://github.com/dedoc/scramble/tree/v0.13.34"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -947,7 +947,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2026-07-07T14:30:53+00:00"
|
||||
"time": "2026-07-12T08:47:55+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dflydev/dot-access-data",
|
||||
@@ -2121,22 +2121,22 @@
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/guzzle",
|
||||
"version": "7.13.2",
|
||||
"version": "7.14.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/guzzle.git",
|
||||
"reference": "bcd989ad36c92d42a3715379af91f2defee5b8dd"
|
||||
"reference": "6b1d2429a2c312474c523aa9017fba0c07b5f4a0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/bcd989ad36c92d42a3715379af91f2defee5b8dd",
|
||||
"reference": "bcd989ad36c92d42a3715379af91f2defee5b8dd",
|
||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/6b1d2429a2c312474c523aa9017fba0c07b5f4a0",
|
||||
"reference": "6b1d2429a2c312474c523aa9017fba0c07b5f4a0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"guzzlehttp/promises": "^2.5",
|
||||
"guzzlehttp/psr7": "^2.12.3",
|
||||
"guzzlehttp/promises": "^2.5.1",
|
||||
"guzzlehttp/psr7": "^2.12.5",
|
||||
"php": "^7.2.5 || ^8.0",
|
||||
"psr/http-client": "^1.0",
|
||||
"symfony/deprecation-contracts": "^2.5 || ^3.0",
|
||||
@@ -2229,7 +2229,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/guzzle/issues",
|
||||
"source": "https://github.com/guzzle/guzzle/tree/7.13.2"
|
||||
"source": "https://github.com/guzzle/guzzle/tree/7.14.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2245,20 +2245,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-07-05T19:00:11+00:00"
|
||||
"time": "2026-07-13T01:32:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/promises",
|
||||
"version": "2.5.0",
|
||||
"version": "2.5.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/promises.git",
|
||||
"reference": "4360e982f87f5f258bf872d094647791db2f4c8e"
|
||||
"reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/promises/zipball/4360e982f87f5f258bf872d094647791db2f4c8e",
|
||||
"reference": "4360e982f87f5f258bf872d094647791db2f4c8e",
|
||||
"url": "https://api.github.com/repos/guzzle/promises/zipball/9ad1e4fc607446a055b95870c7f668e93b5cff29",
|
||||
"reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2313,7 +2313,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/promises/issues",
|
||||
"source": "https://github.com/guzzle/promises/tree/2.5.0"
|
||||
"source": "https://github.com/guzzle/promises/tree/2.5.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2329,20 +2329,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-06-02T12:23:43+00:00"
|
||||
"time": "2026-07-08T15:48:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/psr7",
|
||||
"version": "2.12.3",
|
||||
"version": "2.12.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/psr7.git",
|
||||
"reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d"
|
||||
"reference": "9365d578a9fd1552ad6ca9c3cb530708526feb09"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/7ec62dc3f44aa218487dbed81a9bf9bc647be55d",
|
||||
"reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d",
|
||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/9365d578a9fd1552ad6ca9c3cb530708526feb09",
|
||||
"reference": "9365d578a9fd1552ad6ca9c3cb530708526feb09",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2432,7 +2432,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/psr7/issues",
|
||||
"source": "https://github.com/guzzle/psr7/tree/2.12.3"
|
||||
"source": "https://github.com/guzzle/psr7/tree/2.12.5"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2448,20 +2448,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-06-23T15:21:08+00:00"
|
||||
"time": "2026-07-13T01:27:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/uri-template",
|
||||
"version": "v1.0.8",
|
||||
"version": "v1.0.9",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/uri-template.git",
|
||||
"reference": "9c19128923b05a5d7355e5d2318d7808b7e33bbd"
|
||||
"reference": "d7580af6d3f8384325d9cd3e99b21c3ed1848176"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/uri-template/zipball/9c19128923b05a5d7355e5d2318d7808b7e33bbd",
|
||||
"reference": "9c19128923b05a5d7355e5d2318d7808b7e33bbd",
|
||||
"url": "https://api.github.com/repos/guzzle/uri-template/zipball/d7580af6d3f8384325d9cd3e99b21c3ed1848176",
|
||||
"reference": "d7580af6d3f8384325d9cd3e99b21c3ed1848176",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2518,7 +2518,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/uri-template/issues",
|
||||
"source": "https://github.com/guzzle/uri-template/tree/v1.0.8"
|
||||
"source": "https://github.com/guzzle/uri-template/tree/v1.0.9"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2534,7 +2534,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-06-23T13:02:23+00:00"
|
||||
"time": "2026-07-08T16:19:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "kirschbaum-development/eloquent-power-joins",
|
||||
@@ -2601,16 +2601,16 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v13.19.0",
|
||||
"version": "v13.20.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/framework.git",
|
||||
"reference": "514502b38e11bd676ecf83b271c9452cc7500f16"
|
||||
"reference": "b9d1bccad5fbc32578dca22566bb11e7c0e545d7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/514502b38e11bd676ecf83b271c9452cc7500f16",
|
||||
"reference": "514502b38e11bd676ecf83b271c9452cc7500f16",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/b9d1bccad5fbc32578dca22566bb11e7c0e545d7",
|
||||
"reference": "b9d1bccad5fbc32578dca22566bb11e7c0e545d7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2689,6 +2689,7 @@
|
||||
"illuminate/filesystem": "self.version",
|
||||
"illuminate/hashing": "self.version",
|
||||
"illuminate/http": "self.version",
|
||||
"illuminate/image": "self.version",
|
||||
"illuminate/json-schema": "self.version",
|
||||
"illuminate/log": "self.version",
|
||||
"illuminate/macroable": "self.version",
|
||||
@@ -2715,6 +2716,7 @@
|
||||
"ext-gmp": "*",
|
||||
"fakerphp/faker": "^1.24",
|
||||
"guzzlehttp/psr7": "^2.9",
|
||||
"intervention/image": "^4.0",
|
||||
"laravel/pint": "^1.18",
|
||||
"league/flysystem-aws-s3-v3": "^3.25.1",
|
||||
"league/flysystem-ftp": "^3.25.1",
|
||||
@@ -2751,6 +2753,7 @@
|
||||
"ext-redis": "Required to use the Redis cache and queue drivers (^4.0 || ^5.0 || ^6.0).",
|
||||
"fakerphp/faker": "Required to generate fake data using the fake() helper (^1.23).",
|
||||
"filp/whoops": "Required for friendly error pages in development (^2.14.3).",
|
||||
"intervention/image": "Required to use the image processing features (^4.0).",
|
||||
"laravel/tinker": "Required to use the tinker console command (^2.0).",
|
||||
"league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).",
|
||||
"league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).",
|
||||
@@ -2821,7 +2824,7 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2026-07-07T14:13:33+00:00"
|
||||
"time": "2026-07-14T14:22:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/helpers",
|
||||
@@ -3410,16 +3413,16 @@
|
||||
},
|
||||
{
|
||||
"name": "league/commonmark",
|
||||
"version": "2.8.2",
|
||||
"version": "2.8.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/commonmark.git",
|
||||
"reference": "59fb075d2101740c337c7216e3f32b36c204218b"
|
||||
"reference": "1902f60f984235023acbe03db6ad614a37b3c3e7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/59fb075d2101740c337c7216e3f32b36c204218b",
|
||||
"reference": "59fb075d2101740c337c7216e3f32b36c204218b",
|
||||
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/1902f60f984235023acbe03db6ad614a37b3c3e7",
|
||||
"reference": "1902f60f984235023acbe03db6ad614a37b3c3e7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3441,8 +3444,8 @@
|
||||
"github/gfm": "0.29.0",
|
||||
"michelf/php-markdown": "^1.4 || ^2.0",
|
||||
"nyholm/psr7": "^1.5",
|
||||
"phpstan/phpstan": "^1.8.2",
|
||||
"phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0",
|
||||
"phpstan/phpstan": "^2.0.0",
|
||||
"phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0 || ^12.0.0 || ^13.0.0",
|
||||
"scrutinizer/ocular": "^1.8.1",
|
||||
"symfony/finder": "^5.3 | ^6.0 | ^7.0 || ^8.0",
|
||||
"symfony/process": "^5.4 | ^6.0 | ^7.0 || ^8.0",
|
||||
@@ -3513,7 +3516,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-03-19T13:16:38+00:00"
|
||||
"time": "2026-07-12T15:29:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/config",
|
||||
@@ -3995,16 +3998,16 @@
|
||||
},
|
||||
{
|
||||
"name": "league/mime-type-detection",
|
||||
"version": "1.16.0",
|
||||
"version": "1.17.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/mime-type-detection.git",
|
||||
"reference": "2d6702ff215bf922936ccc1ad31007edc76451b9"
|
||||
"reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9",
|
||||
"reference": "2d6702ff215bf922936ccc1ad31007edc76451b9",
|
||||
"url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/f5f47eff7c48ed1003069a2ca67f316fb4021c76",
|
||||
"reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4014,7 +4017,7 @@
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^3.2",
|
||||
"phpstan/phpstan": "^0.12.68",
|
||||
"phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
|
||||
"phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0 || ^11.0 || ^12.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@@ -4035,7 +4038,7 @@
|
||||
"description": "Mime-type detection for Flysystem",
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/mime-type-detection/issues",
|
||||
"source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0"
|
||||
"source": "https://github.com/thephpleague/mime-type-detection/tree/1.17.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -4047,7 +4050,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-21T08:32:55+00:00"
|
||||
"time": "2026-07-09T11:49:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/oauth1-client",
|
||||
@@ -4765,16 +4768,16 @@
|
||||
},
|
||||
{
|
||||
"name": "nesbot/carbon",
|
||||
"version": "3.13.0",
|
||||
"version": "3.13.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/CarbonPHP/carbon.git",
|
||||
"reference": "40f6618f052df16b545f626fbf9a878e6497d16a"
|
||||
"reference": "2937ad3d1d2c506fd2bc97d571438a95641f44e2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/40f6618f052df16b545f626fbf9a878e6497d16a",
|
||||
"reference": "40f6618f052df16b545f626fbf9a878e6497d16a",
|
||||
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/2937ad3d1d2c506fd2bc97d571438a95641f44e2",
|
||||
"reference": "2937ad3d1d2c506fd2bc97d571438a95641f44e2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4866,7 +4869,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-06-18T13:49:15+00:00"
|
||||
"time": "2026-07-09T18:23:49+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nette/php-generator",
|
||||
|
||||
@@ -101,7 +101,7 @@ return [
|
||||
'charset' => env('DB_CHARSET', 'utf8'),
|
||||
'prefix' => '',
|
||||
'prefix_indexes' => true,
|
||||
'search_path' => 'public',
|
||||
'search_path' => env('DB_SCHEMA', 'public'),
|
||||
'sslmode' => 'prefer',
|
||||
],
|
||||
|
||||
|
||||
@@ -25,8 +25,6 @@ return [
|
||||
'owner' => 'Owner',
|
||||
'allocation_notes' => 'Notes',
|
||||
'no_notes' => 'No notes',
|
||||
'no_server' => 'No server',
|
||||
'no_alias' => 'No alias',
|
||||
],
|
||||
'node_info' => 'Node Information',
|
||||
'wings_version' => 'Wings Version',
|
||||
|
||||
@@ -15,7 +15,6 @@ return [
|
||||
'ports' => 'Ports',
|
||||
'alias' => 'Alias',
|
||||
'alias_helper' => 'Optional display name to help you remember what these are.',
|
||||
'no_alias' => 'No Alias',
|
||||
'locked' => 'Locked?',
|
||||
'locked_helper' => 'Users won\'t be able to delete locked allocations',
|
||||
'lock' => 'Lock',
|
||||
@@ -111,8 +110,7 @@ return [
|
||||
'keep_old_variables' => 'Keep old variables if possible?',
|
||||
'create_allocation' => 'Create Allocation',
|
||||
'add_allocation' => 'Add Allocation',
|
||||
'remove_allocation' => 'Remove Allocation',
|
||||
'view_console' => 'View Console',
|
||||
'view' => 'View',
|
||||
'no_log' => 'No Log Available',
|
||||
'select_backups' => 'Select Backups',
|
||||
'warning_backups' => 'Be aware, not transferred backups will be deleted.',
|
||||
|
||||
Reference in New Issue
Block a user