Collection of smaller v4 fixes (#1684)
Co-authored-by: RMartinOscar <40749467+RMartinOscar@users.noreply.github.com> Co-authored-by: notCharles <charles@pelican.dev>
This commit is contained in:
parent
cba8717188
commit
d5d50d4150
27
app/Enums/ScheduleStatus.php
Normal file
27
app/Enums/ScheduleStatus.php
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Enums;
|
||||||
|
|
||||||
|
use Filament\Support\Contracts\HasColor;
|
||||||
|
use Filament\Support\Contracts\HasLabel;
|
||||||
|
|
||||||
|
enum ScheduleStatus: string implements HasColor, HasLabel
|
||||||
|
{
|
||||||
|
case Inactive = 'inactive';
|
||||||
|
case Processing = 'processing';
|
||||||
|
case Active = 'active';
|
||||||
|
|
||||||
|
public function getColor(): string
|
||||||
|
{
|
||||||
|
return match ($this) {
|
||||||
|
self::Inactive => 'danger',
|
||||||
|
self::Processing => 'warning',
|
||||||
|
self::Active => 'success',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLabel(): string
|
||||||
|
{
|
||||||
|
return trans('server/schedule.schedule_status.' . $this->value);
|
||||||
|
}
|
||||||
|
}
|
@ -73,9 +73,8 @@ class GSLTokenSchema implements FeatureSchemaInterface
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
])
|
])
|
||||||
->hintIcon('tabler-code')
|
->hintIcon('tabler-code', fn () => implode('|', $serverVariable->variable->rules))
|
||||||
->label(fn () => $serverVariable->variable->name)
|
->label(fn () => $serverVariable->variable->name)
|
||||||
->hintIconTooltip(fn () => implode('|', $serverVariable->variable->rules))
|
|
||||||
->prefix(fn () => '{{' . $serverVariable->variable->env_variable . '}}')
|
->prefix(fn () => '{{' . $serverVariable->variable->env_variable . '}}')
|
||||||
->helperText(fn () => empty($serverVariable->variable->description) ? '—' : $serverVariable->variable->description),
|
->helperText(fn () => empty($serverVariable->variable->description) ? '—' : $serverVariable->variable->description),
|
||||||
])
|
])
|
||||||
|
@ -153,14 +153,12 @@ class Settings extends Page implements HasSchemas
|
|||||||
->schema([
|
->schema([
|
||||||
TextInput::make('APP_LOGO')
|
TextInput::make('APP_LOGO')
|
||||||
->label(trans('admin/setting.general.app_logo'))
|
->label(trans('admin/setting.general.app_logo'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/setting.general.app_logo_help'))
|
||||||
->hintIconTooltip(trans('admin/setting.general.app_logo_help'))
|
|
||||||
->default(env('APP_LOGO'))
|
->default(env('APP_LOGO'))
|
||||||
->placeholder('/pelican.svg'),
|
->placeholder('/pelican.svg'),
|
||||||
TextInput::make('APP_FAVICON')
|
TextInput::make('APP_FAVICON')
|
||||||
->label(trans('admin/setting.general.app_favicon'))
|
->label(trans('admin/setting.general.app_favicon'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/setting.general.app_favicon_help'))
|
||||||
->hintIconTooltip(trans('admin/setting.general.app_favicon_help'))
|
|
||||||
->required()
|
->required()
|
||||||
->default(env('APP_FAVICON', '/pelican.ico'))
|
->default(env('APP_FAVICON', '/pelican.ico'))
|
||||||
->placeholder('/pelican.ico'),
|
->placeholder('/pelican.ico'),
|
||||||
|
@ -143,7 +143,7 @@ class DatabaseHostResource extends Resource
|
|||||||
->maxValue(65535),
|
->maxValue(65535),
|
||||||
TextInput::make('max_databases')
|
TextInput::make('max_databases')
|
||||||
->label(trans('admin/databasehost.max_database'))
|
->label(trans('admin/databasehost.max_database'))
|
||||||
->helpertext(trans('admin/databasehost.max_databases_help'))
|
->helperText(trans('admin/databasehost.max_databases_help'))
|
||||||
->numeric(),
|
->numeric(),
|
||||||
TextInput::make('name')
|
TextInput::make('name')
|
||||||
->label(trans('admin/databasehost.display_name'))
|
->label(trans('admin/databasehost.display_name'))
|
||||||
|
@ -143,7 +143,7 @@ class CreateDatabaseHost extends CreateRecord
|
|||||||
->maxValue(65535),
|
->maxValue(65535),
|
||||||
TextInput::make('max_databases')
|
TextInput::make('max_databases')
|
||||||
->label(trans('admin/databasehost.max_database'))
|
->label(trans('admin/databasehost.max_database'))
|
||||||
->helpertext(trans('admin/databasehost.max_databases_help'))
|
->helperText(trans('admin/databasehost.max_databases_help'))
|
||||||
->placeholder(trans('admin/databasehost.unlimited'))
|
->placeholder(trans('admin/databasehost.unlimited'))
|
||||||
->numeric(),
|
->numeric(),
|
||||||
TextInput::make('name')
|
TextInput::make('name')
|
||||||
|
@ -102,8 +102,7 @@ class CreateEgg extends CreateRecord
|
|||||||
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 1, 'lg' => 1]),
|
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 1, 'lg' => 1]),
|
||||||
Toggle::make('force_outgoing_ip')
|
Toggle::make('force_outgoing_ip')
|
||||||
->label(trans('admin/egg.force_ip'))
|
->label(trans('admin/egg.force_ip'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/egg.force_ip_help')),
|
||||||
->hintIconTooltip(trans('admin/egg.force_ip_help')),
|
|
||||||
Hidden::make('script_is_privileged')
|
Hidden::make('script_is_privileged')
|
||||||
->default(1),
|
->default(1),
|
||||||
TagsInput::make('tags')
|
TagsInput::make('tags')
|
||||||
@ -111,8 +110,7 @@ class CreateEgg extends CreateRecord
|
|||||||
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2]),
|
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2]),
|
||||||
TextInput::make('update_url')
|
TextInput::make('update_url')
|
||||||
->label(trans('admin/egg.update_url'))
|
->label(trans('admin/egg.update_url'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/egg.update_url_help'))
|
||||||
->hintIconTooltip(trans('admin/egg.update_url_help'))
|
|
||||||
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2])
|
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2])
|
||||||
->url(),
|
->url(),
|
||||||
KeyValue::make('docker_images')
|
KeyValue::make('docker_images')
|
||||||
@ -203,8 +201,7 @@ class CreateEgg extends CreateRecord
|
|||||||
->maxLength(255)
|
->maxLength(255)
|
||||||
->prefix('{{')
|
->prefix('{{')
|
||||||
->suffix('}}')
|
->suffix('}}')
|
||||||
->hintIcon('tabler-code')
|
->hintIcon('tabler-code', fn ($state) => "{{{$state}}}")
|
||||||
->hintIconTooltip(fn ($state) => "{{{$state}}}")
|
|
||||||
->unique(modifyRuleUsing: fn (Unique $rule, Get $get) => $rule->where('egg_id', $get('../../id')))
|
->unique(modifyRuleUsing: fn (Unique $rule, Get $get) => $rule->where('egg_id', $get('../../id')))
|
||||||
->rules(EggVariable::getRulesForField('env_variable'))
|
->rules(EggVariable::getRulesForField('env_variable'))
|
||||||
->validationMessages([
|
->validationMessages([
|
||||||
|
@ -97,8 +97,7 @@ class EditEgg extends EditRecord
|
|||||||
Toggle::make('force_outgoing_ip')
|
Toggle::make('force_outgoing_ip')
|
||||||
->inline(false)
|
->inline(false)
|
||||||
->label(trans('admin/egg.force_ip'))
|
->label(trans('admin/egg.force_ip'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/egg.force_ip_help')),
|
||||||
->hintIconTooltip(trans('admin/egg.force_ip_help')),
|
|
||||||
Hidden::make('script_is_privileged')
|
Hidden::make('script_is_privileged')
|
||||||
->helperText('The docker images available to servers using this egg.'),
|
->helperText('The docker images available to servers using this egg.'),
|
||||||
TagsInput::make('tags')
|
TagsInput::make('tags')
|
||||||
@ -107,8 +106,7 @@ class EditEgg extends EditRecord
|
|||||||
TextInput::make('update_url')
|
TextInput::make('update_url')
|
||||||
->label(trans('admin/egg.update_url'))
|
->label(trans('admin/egg.update_url'))
|
||||||
->url()
|
->url()
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/egg.update_url_help'))
|
||||||
->hintIconTooltip(trans('admin/egg.update_url_help'))
|
|
||||||
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2]),
|
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2]),
|
||||||
KeyValue::make('docker_images')
|
KeyValue::make('docker_images')
|
||||||
->label(trans('admin/egg.docker_images'))
|
->label(trans('admin/egg.docker_images'))
|
||||||
@ -192,8 +190,7 @@ class EditEgg extends EditRecord
|
|||||||
->maxLength(255)
|
->maxLength(255)
|
||||||
->prefix('{{')
|
->prefix('{{')
|
||||||
->suffix('}}')
|
->suffix('}}')
|
||||||
->hintIcon('tabler-code')
|
->hintIcon('tabler-code', fn ($state) => "{{{$state}}}")
|
||||||
->hintIconTooltip(fn ($state) => "{{{$state}}}")
|
|
||||||
->unique(modifyRuleUsing: fn (Unique $rule, Get $get) => $rule->where('egg_id', $get('../../id')))
|
->unique(modifyRuleUsing: fn (Unique $rule, Get $get) => $rule->where('egg_id', $get('../../id')))
|
||||||
->rules(EggVariable::getRulesForField('env_variable'))
|
->rules(EggVariable::getRulesForField('env_variable'))
|
||||||
->validationMessages([
|
->validationMessages([
|
||||||
|
@ -226,8 +226,7 @@ class CreateNode extends CreateRecord
|
|||||||
->label(trans('admin/node.maintenance_mode'))->inline()
|
->label(trans('admin/node.maintenance_mode'))->inline()
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
->default(false)
|
->default(false)
|
||||||
->hinticon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/node.maintenance_mode_help'))
|
||||||
->hintIconTooltip(trans('admin/node.maintenance_mode_help'))
|
|
||||||
->options([
|
->options([
|
||||||
true => trans('admin/node.enabled'),
|
true => trans('admin/node.enabled'),
|
||||||
false => trans('admin/node.disabled'),
|
false => trans('admin/node.disabled'),
|
||||||
@ -254,8 +253,7 @@ class CreateNode extends CreateRecord
|
|||||||
TextInput::make('upload_size')
|
TextInput::make('upload_size')
|
||||||
->label(trans('admin/node.upload_limit'))
|
->label(trans('admin/node.upload_limit'))
|
||||||
->helperText(trans('admin/node.upload_limit_help.0'))
|
->helperText(trans('admin/node.upload_limit_help.0'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/node.upload_limit_help.1'))
|
||||||
->hintIconTooltip(trans('admin/node.upload_limit_help.1'))
|
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
->numeric()->required()
|
->numeric()->required()
|
||||||
->default(256)
|
->default(256)
|
||||||
@ -417,7 +415,7 @@ class CreateNode extends CreateRecord
|
|||||||
protected function getRedirectUrlParameters(): array
|
protected function getRedirectUrlParameters(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'tab' => '-configuration-file-tab',
|
'tab' => 'configuration-file::data::tab',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,8 +311,7 @@ class EditNode extends EditRecord
|
|||||||
'lg' => 1,
|
'lg' => 1,
|
||||||
])
|
])
|
||||||
->label(trans('admin/node.upload_limit'))
|
->label(trans('admin/node.upload_limit'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/node.upload_limit_help.0') . trans('admin/node.upload_limit_help.1'))
|
||||||
->hintIconTooltip(trans('admin/node.upload_limit_help.0') . trans('admin/node.upload_limit_help.1'))
|
|
||||||
->numeric()->required()
|
->numeric()->required()
|
||||||
->minValue(1)
|
->minValue(1)
|
||||||
->maxValue(1024)
|
->maxValue(1024)
|
||||||
@ -366,8 +365,7 @@ class EditNode extends EditRecord
|
|||||||
])
|
])
|
||||||
->label(trans('admin/node.maintenance_mode'))
|
->label(trans('admin/node.maintenance_mode'))
|
||||||
->inline()
|
->inline()
|
||||||
->hinticon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/node.maintenance_mode_help'))
|
||||||
->hintIconTooltip(trans('admin/node.maintenance_mode_help'))
|
|
||||||
->stateCast(new BooleanStateCast(false, true))
|
->stateCast(new BooleanStateCast(false, true))
|
||||||
->options([
|
->options([
|
||||||
1 => trans('admin/node.enabled'),
|
1 => trans('admin/node.enabled'),
|
||||||
|
@ -42,7 +42,7 @@ class AllocationsRelationManager extends RelationManager
|
|||||||
return $table
|
return $table
|
||||||
->recordTitleAttribute('address')
|
->recordTitleAttribute('address')
|
||||||
->checkIfRecordIsSelectableUsing(fn (Allocation $allocation) => $allocation->server_id === null)
|
->checkIfRecordIsSelectableUsing(fn (Allocation $allocation) => $allocation->server_id === null)
|
||||||
->paginationPageOptions(['10', '20', '50', '100', '200', '500'])
|
->paginationPageOptions([10, 20, 50, 100, 200, 500])
|
||||||
->searchable()
|
->searchable()
|
||||||
->heading('')
|
->heading('')
|
||||||
->selectCurrentPageOnly() //Prevent people from trying to nuke 30,000 ports at once.... -,-
|
->selectCurrentPageOnly() //Prevent people from trying to nuke 30,000 ports at once.... -,-
|
||||||
|
@ -193,7 +193,7 @@ class RoleResource extends Resource
|
|||||||
])
|
])
|
||||||
->schema([
|
->schema([
|
||||||
CheckboxList::make(strtolower($model) . '_list')
|
CheckboxList::make(strtolower($model) . '_list')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->options($options)
|
->options($options)
|
||||||
->columns()
|
->columns()
|
||||||
->gridDirection('row')
|
->gridDirection('row')
|
||||||
|
@ -169,8 +169,7 @@ class CreateServer extends CreateRecord
|
|||||||
|
|
||||||
TextInput::make('password')
|
TextInput::make('password')
|
||||||
->label(trans('admin/user.password'))
|
->label(trans('admin/user.password'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/user.password_help'))
|
||||||
->hintIconTooltip(trans('admin/user.password_help'))
|
|
||||||
->password(),
|
->password(),
|
||||||
])
|
])
|
||||||
->createOptionUsing(function ($data, UserCreationService $service) {
|
->createOptionUsing(function ($data, UserCreationService $service) {
|
||||||
@ -521,8 +520,7 @@ class CreateServer extends CreateRecord
|
|||||||
->hidden(fn (Get $get) => $get('unlimited_mem'))
|
->hidden(fn (Get $get) => $get('unlimited_mem'))
|
||||||
->label(trans('admin/server.memory_limit'))->inlineLabel()
|
->label(trans('admin/server.memory_limit'))->inlineLabel()
|
||||||
->suffix(config('panel.use_binary_prefix') ? 'MiB' : 'MB')
|
->suffix(config('panel.use_binary_prefix') ? 'MiB' : 'MB')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/server.memory_helper'))
|
||||||
->hintIconToolTip(trans('admin/server.memory_helper'))
|
|
||||||
->default(0)
|
->default(0)
|
||||||
->required()
|
->required()
|
||||||
->columnSpan(2)
|
->columnSpan(2)
|
||||||
|
@ -288,8 +288,7 @@ class EditServer extends EditRecord
|
|||||||
->hidden(fn (Get $get) => $get('unlimited_mem'))
|
->hidden(fn (Get $get) => $get('unlimited_mem'))
|
||||||
->label(trans('admin/server.memory_limit'))->inlineLabel()
|
->label(trans('admin/server.memory_limit'))->inlineLabel()
|
||||||
->suffix(config('panel.use_binary_prefix') ? 'MiB' : 'MB')
|
->suffix(config('panel.use_binary_prefix') ? 'MiB' : 'MB')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/server.memory_helper'))
|
||||||
->hintIconToolTip(trans('admin/server.memory_helper'))
|
|
||||||
->required()
|
->required()
|
||||||
->columnSpan(2)
|
->columnSpan(2)
|
||||||
->numeric()
|
->numeric()
|
||||||
@ -567,10 +566,10 @@ class EditServer extends EditRecord
|
|||||||
Action::make('change_egg')
|
Action::make('change_egg')
|
||||||
->label(trans('admin/server.change_egg'))
|
->label(trans('admin/server.change_egg'))
|
||||||
->action(function (array $data, Server $server, EggChangerService $service) {
|
->action(function (array $data, Server $server, EggChangerService $service) {
|
||||||
$service->handle($server, $data['egg_id'], $data['keepOldVariables']);
|
$service->handle($server, $data['egg_id'], $data['keep_old_variables']);
|
||||||
|
|
||||||
// Use redirect instead of fillForm to prevent server variables from duplicating
|
// Use redirect instead of fillForm to prevent server variables from duplicating
|
||||||
$this->redirect($this->getUrl(['record' => $server, 'tab' => '-egg-tab']), true);
|
$this->redirect($this->getUrl(['record' => $server, 'tab' => 'egg::data::tab']), true);
|
||||||
})
|
})
|
||||||
->schema(fn (Server $server) => [
|
->schema(fn (Server $server) => [
|
||||||
Select::make('egg_id')
|
Select::make('egg_id')
|
||||||
@ -580,7 +579,7 @@ class EditServer extends EditRecord
|
|||||||
->searchable()
|
->searchable()
|
||||||
->preload()
|
->preload()
|
||||||
->required(),
|
->required(),
|
||||||
Toggle::make('keepOldVariables')
|
Toggle::make('keep_old_variables')
|
||||||
->label(trans('admin/server.keep_old_variables'))
|
->label(trans('admin/server.keep_old_variables'))
|
||||||
->default(true),
|
->default(true),
|
||||||
])
|
])
|
||||||
@ -793,7 +792,7 @@ class EditServer extends EditRecord
|
|||||||
Action::make('transfer')
|
Action::make('transfer')
|
||||||
->label(trans('admin/server.transfer'))
|
->label(trans('admin/server.transfer'))
|
||||||
->disabled(fn (Server $server) => Node::count() <= 1 || $server->isInConflictState())
|
->disabled(fn (Server $server) => Node::count() <= 1 || $server->isInConflictState())
|
||||||
->modalheading(trans('admin/server.transfer'))
|
->modalHeading(trans('admin/server.transfer'))
|
||||||
->schema($this->transferServer())
|
->schema($this->transferServer())
|
||||||
->action(function (TransferServerService $transfer, Server $server, $data) {
|
->action(function (TransferServerService $transfer, Server $server, $data) {
|
||||||
try {
|
try {
|
||||||
|
@ -130,26 +130,23 @@ class DatabasesRelationManager extends RelationManager
|
|||||||
Select::make('database_host_id')
|
Select::make('database_host_id')
|
||||||
->label(trans('admin/databasehost.model_label'))
|
->label(trans('admin/databasehost.model_label'))
|
||||||
->required()
|
->required()
|
||||||
->placeholder(trans('admin/databasehost.table.select_placeholder'))
|
|
||||||
->options(fn () => DatabaseHost::query()
|
->options(fn () => DatabaseHost::query()
|
||||||
->whereHas('nodes', fn ($query) => $query->where('nodes.id', $this->getOwnerRecord()->node_id))
|
->whereHas('nodes', fn ($query) => $query->where('nodes.id', $this->getOwnerRecord()->node_id))
|
||||||
->pluck('name', 'id')
|
->pluck('name', 'id')
|
||||||
)
|
)
|
||||||
->default(fn () => (DatabaseHost::query()->first())?->id)
|
->selectablePlaceholder(false)
|
||||||
->selectablePlaceholder(false),
|
->default(fn () => (DatabaseHost::query()->first())?->id),
|
||||||
TextInput::make('database')
|
TextInput::make('database')
|
||||||
->label(trans('admin/server.name'))
|
->label(trans('admin/server.name'))
|
||||||
->alphaDash()
|
->alphaDash()
|
||||||
->prefix(fn () => 's' . $this->getOwnerRecord()->id . '_')
|
->prefix(fn () => 's' . $this->getOwnerRecord()->id . '_')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/databasehost.table.name_helper')),
|
||||||
->hintIconTooltip(trans('admin/databasehost.table.name_helper')),
|
|
||||||
TextInput::make('remote')
|
TextInput::make('remote')
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
->regex('/^[\w\-\/.%:]+$/')
|
->regex('/^[\w\-\/.%:]+$/')
|
||||||
->label(trans('admin/databasehost.table.remote'))
|
->label(trans('admin/databasehost.table.remote'))
|
||||||
->default('%')
|
->default('%')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('admin/databasehost.table.remote_helper')),
|
||||||
->hintIconTooltip(trans('admin/databasehost.table.remote_helper')),
|
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ class ServerResource extends Resource
|
|||||||
}
|
}
|
||||||
|
|
||||||
return CheckboxList::make('mounts')
|
return CheckboxList::make('mounts')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->relationship('mounts')
|
->relationship('mounts')
|
||||||
->live()
|
->live()
|
||||||
->options(fn () => $allowedMounts->mapWithKeys(fn ($mount) => [$mount->id => $mount->name]))
|
->options(fn () => $allowedMounts->mapWithKeys(fn ($mount) => [$mount->id => $mount->name]))
|
||||||
|
@ -140,8 +140,7 @@ class UserResource extends Resource
|
|||||||
->maxLength(255),
|
->maxLength(255),
|
||||||
TextInput::make('password')
|
TextInput::make('password')
|
||||||
->label(trans('admin/user.password'))
|
->label(trans('admin/user.password'))
|
||||||
->hintIcon(fn ($operation) => $operation === 'create' ? 'tabler-question-mark' : null)
|
->hintIcon(fn ($operation) => $operation === 'create' ? 'tabler-question-mark' : null, fn ($operation) => $operation === 'create' ? trans('admin/user.password_help') : null)
|
||||||
->hintIconTooltip(fn ($operation) => $operation === 'create' ? trans('admin/user.password_help') : null)
|
|
||||||
->password(),
|
->password(),
|
||||||
CheckboxList::make('roles')
|
CheckboxList::make('roles')
|
||||||
->hidden(fn (?User $user) => $user && $user->isRootAdmin())
|
->hidden(fn (?User $user) => $user && $user->isRootAdmin())
|
||||||
|
@ -216,7 +216,7 @@ class ListServers extends ListRecords
|
|||||||
|
|
||||||
cache()->forget("servers.$server->uuid.status");
|
cache()->forget("servers.$server->uuid.status");
|
||||||
|
|
||||||
$this->redirect(self::getUrl(['activeTab' => $this->activeTab]));
|
$this->redirect(self::getUrl(['tab' => $this->activeTab]));
|
||||||
} catch (ConnectionException) {
|
} catch (ConnectionException) {
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title(trans('exceptions.node.error_connecting', ['node' => $server->node->name]))
|
->title(trans('exceptions.node.error_connecting', ['node' => $server->node->name]))
|
||||||
@ -233,26 +233,26 @@ class ListServers extends ListRecords
|
|||||||
->color('primary')
|
->color('primary')
|
||||||
->icon('tabler-player-play-filled')
|
->icon('tabler-player-play-filled')
|
||||||
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_START, $server))
|
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_START, $server))
|
||||||
->visible(fn (Server $server) => !$server->isInConflictState() & $server->retrieveStatus()->isStartable())
|
->visible(fn (Server $server) => !$server->isInConflictState() && $server->retrieveStatus()->isStartable())
|
||||||
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'start']),
|
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'start']),
|
||||||
Action::make('restart')
|
Action::make('restart')
|
||||||
->color('gray')
|
->color('gray')
|
||||||
->icon('tabler-reload')
|
->icon('tabler-reload')
|
||||||
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_RESTART, $server))
|
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_RESTART, $server))
|
||||||
->visible(fn (Server $server) => !$server->isInConflictState() & $server->retrieveStatus()->isRestartable())
|
->visible(fn (Server $server) => !$server->isInConflictState() && $server->retrieveStatus()->isRestartable())
|
||||||
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'restart']),
|
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'restart']),
|
||||||
Action::make('stop')
|
Action::make('stop')
|
||||||
->color('danger')
|
->color('danger')
|
||||||
->icon('tabler-player-stop-filled')
|
->icon('tabler-player-stop-filled')
|
||||||
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_STOP, $server))
|
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_STOP, $server))
|
||||||
->visible(fn (Server $server) => !$server->isInConflictState() & $server->retrieveStatus()->isStoppable())
|
->visible(fn (Server $server) => !$server->isInConflictState() && $server->retrieveStatus()->isStoppable())
|
||||||
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'stop']),
|
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'stop']),
|
||||||
Action::make('kill')
|
Action::make('kill')
|
||||||
->color('danger')
|
->color('danger')
|
||||||
->icon('tabler-alert-square')
|
->icon('tabler-alert-square')
|
||||||
->tooltip('This can result in data corruption and/or data loss!')
|
->tooltip('This can result in data corruption and/or data loss!')
|
||||||
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_STOP, $server))
|
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_STOP, $server))
|
||||||
->visible(fn (Server $server) => !$server->isInConflictState() & $server->retrieveStatus()->isKillable())
|
->visible(fn (Server $server) => !$server->isInConflictState() && $server->retrieveStatus()->isKillable())
|
||||||
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'kill']),
|
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'kill']),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -130,8 +130,7 @@ class ImportEggAction extends Action
|
|||||||
->searchable()
|
->searchable()
|
||||||
->preload()
|
->preload()
|
||||||
->live()
|
->live()
|
||||||
->hintIcon('tabler-refresh')
|
->hintIcon('tabler-refresh', trans('admin/egg.import.refresh'))
|
||||||
->hintIconTooltip(trans('admin/egg.import.refresh'))
|
|
||||||
->hintAction(function () {
|
->hintAction(function () {
|
||||||
Artisan::call(UpdateEggIndexCommand::class);
|
Artisan::call(UpdateEggIndexCommand::class);
|
||||||
})
|
})
|
||||||
@ -144,7 +143,7 @@ class ImportEggAction extends Action
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
Repeater::make('urls')
|
Repeater::make('urls')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->itemLabel(fn (array $state) => str($state['url'])->afterLast('/egg-')->beforeLast('.')->headline())
|
->itemLabel(fn (array $state) => str($state['url'])->afterLast('/egg-')->beforeLast('.')->headline())
|
||||||
->hint(trans('admin/egg.import.url_help'))
|
->hint(trans('admin/egg.import.url_help'))
|
||||||
->addActionLabel(trans('admin/egg.import.add_url'))
|
->addActionLabel(trans('admin/egg.import.add_url'))
|
||||||
|
@ -46,9 +46,7 @@ class StartupVariable extends Field
|
|||||||
|
|
||||||
$this->prefix(fn (StartupVariable $component) => '{{' . $component->getVariableEnv() . '}}');
|
$this->prefix(fn (StartupVariable $component) => '{{' . $component->getVariableEnv() . '}}');
|
||||||
|
|
||||||
$this->hintIcon('tabler-code');
|
$this->hintIcon('tabler-code', fn (StartupVariable $component) => implode('|', $component->getVariableRules()));
|
||||||
|
|
||||||
$this->hintIconTooltip(fn (StartupVariable $component) => implode('|', $component->getVariableRules()));
|
|
||||||
|
|
||||||
$this->helperText(fn (StartupVariable $component) => !$component->getVariableDesc() ? '—' : $component->getVariableDesc());
|
$this->helperText(fn (StartupVariable $component) => !$component->getVariableDesc() ? '—' : $component->getVariableDesc());
|
||||||
|
|
||||||
@ -90,11 +88,11 @@ class StartupVariable extends Field
|
|||||||
|
|
||||||
public function fromRecord(): static
|
public function fromRecord(): static
|
||||||
{
|
{
|
||||||
$this->variableName(fn (ServerVariable $record) => $record->variable->name);
|
$this->variableName(fn (?ServerVariable $record) => $record?->variable->name);
|
||||||
$this->variableDesc(fn (ServerVariable $record) => $record->variable->description);
|
$this->variableDesc(fn (?ServerVariable $record) => $record?->variable->description);
|
||||||
$this->variableEnv(fn (ServerVariable $record) => $record->variable->env_variable);
|
$this->variableEnv(fn (?ServerVariable $record) => $record?->variable->env_variable);
|
||||||
$this->variableDefault(fn (ServerVariable $record) => $record->variable->default_value);
|
$this->variableDefault(fn (?ServerVariable $record) => $record?->variable->default_value);
|
||||||
$this->variableRules(fn (ServerVariable $record) => $record->variable->rules);
|
$this->variableRules(fn (?ServerVariable $record) => $record?->variable->rules);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ use Filament\Infolists\Components\TextEntry;
|
|||||||
use Filament\Forms\Components\Repeater;
|
use Filament\Forms\Components\Repeater;
|
||||||
use Filament\Schemas\Components\Section;
|
use Filament\Schemas\Components\Section;
|
||||||
use Filament\Forms\Components\Select;
|
use Filament\Forms\Components\Select;
|
||||||
|
use Filament\Schemas\Components\StateCasts\BooleanStateCast;
|
||||||
use Filament\Schemas\Components\Tabs;
|
use Filament\Schemas\Components\Tabs;
|
||||||
use Filament\Schemas\Components\Tabs\Tab;
|
use Filament\Schemas\Components\Tabs\Tab;
|
||||||
use Filament\Forms\Components\TagsInput;
|
use Filament\Forms\Components\TagsInput;
|
||||||
@ -150,6 +151,7 @@ class EditProfile extends BaseEditProfile
|
|||||||
->avatar()
|
->avatar()
|
||||||
->acceptedFileTypes(['image/png'])
|
->acceptedFileTypes(['image/png'])
|
||||||
->directory('avatars')
|
->directory('avatars')
|
||||||
|
->disk('public')
|
||||||
->getUploadedFileNameForStorageUsing(fn () => $this->getUser()->id . '.png')
|
->getUploadedFileNameForStorageUsing(fn () => $this->getUser()->id . '.png')
|
||||||
->hintAction(function (FileUpload $fileUpload) {
|
->hintAction(function (FileUpload $fileUpload) {
|
||||||
$path = $fileUpload->getDirectory() . '/' . $this->getUser()->id . '.png';
|
$path = $fileUpload->getDirectory() . '/' . $this->getUser()->id . '.png';
|
||||||
@ -176,9 +178,9 @@ class EditProfile extends BaseEditProfile
|
|||||||
$unlink = array_key_exists($id, $this->getUser()->oauth ?? []);
|
$unlink = array_key_exists($id, $this->getUser()->oauth ?? []);
|
||||||
|
|
||||||
$actions[] = Action::make("oauth_$id")
|
$actions[] = Action::make("oauth_$id")
|
||||||
->label(($unlink ? trans('profile.unlink') : trans('profile.link')) . $name)
|
->label(trans('profile.' . ($unlink ? 'unlink' : 'link'), ['name' => $name]))
|
||||||
->icon($unlink ? 'tabler-unlink' : 'tabler-link')
|
->icon($unlink ? 'tabler-unlink' : 'tabler-link')
|
||||||
->color(Color::generateV3Palette($schema->getHexColor()))
|
->color(Color::hex($schema->getHexColor()))
|
||||||
->action(function (UserUpdateService $updateService) use ($id, $name, $unlink) {
|
->action(function (UserUpdateService $updateService) use ($id, $name, $unlink) {
|
||||||
if ($unlink) {
|
if ($unlink) {
|
||||||
$oauth = auth()->user()->oauth;
|
$oauth = auth()->user()->oauth;
|
||||||
@ -232,7 +234,7 @@ class EditProfile extends BaseEditProfile
|
|||||||
Action::make('create')
|
Action::make('create')
|
||||||
->label(trans('filament-actions::create.single.modal.actions.create.label'))
|
->label(trans('filament-actions::create.single.modal.actions.create.label'))
|
||||||
->disabled(fn (Get $get) => empty($get('description')))
|
->disabled(fn (Get $get) => empty($get('description')))
|
||||||
->successRedirectUrl(self::getUrl(['tab' => '-api-keys-tab'], panel: 'app'))
|
->successRedirectUrl(self::getUrl(['tab' => 'api-keys::data::tab'], panel: 'app'))
|
||||||
->action(function (Get $get, Action $action, User $user) {
|
->action(function (Get $get, Action $action, User $user) {
|
||||||
$token = $user->createToken(
|
$token = $user->createToken(
|
||||||
$get('description'),
|
$get('description'),
|
||||||
@ -315,7 +317,7 @@ class EditProfile extends BaseEditProfile
|
|||||||
Action::make('create')
|
Action::make('create')
|
||||||
->label(trans('filament-actions::create.single.modal.actions.create.label'))
|
->label(trans('filament-actions::create.single.modal.actions.create.label'))
|
||||||
->disabled(fn (Get $get) => empty($get('name')) || empty($get('public_key')))
|
->disabled(fn (Get $get) => empty($get('name')) || empty($get('public_key')))
|
||||||
->successRedirectUrl(self::getUrl(['tab' => '-ssh-keys-tab'], panel: 'app'))
|
->successRedirectUrl(self::getUrl(['tab' => 'ssh-keys::data::tab'], panel: 'app'))
|
||||||
->action(function (Get $get, Action $action, User $user, KeyCreationService $service) {
|
->action(function (Get $get, Action $action, User $user, KeyCreationService $service) {
|
||||||
try {
|
try {
|
||||||
$sshKey = $service->handle($user, $get('name'), $get('public_key'));
|
$sshKey = $service->handle($user, $get('name'), $get('public_key'));
|
||||||
@ -422,11 +424,11 @@ class EditProfile extends BaseEditProfile
|
|||||||
ToggleButtons::make('top_navigation')
|
ToggleButtons::make('top_navigation')
|
||||||
->label(trans('profile.navigation'))
|
->label(trans('profile.navigation'))
|
||||||
->inline()
|
->inline()
|
||||||
->required()
|
|
||||||
->options([
|
->options([
|
||||||
true => trans('profile.top'),
|
1 => trans('profile.top'),
|
||||||
false => trans('profile.side'),
|
0 => trans('profile.side'),
|
||||||
]),
|
])
|
||||||
|
->stateCast(new BooleanStateCast(false, true)),
|
||||||
]),
|
]),
|
||||||
Section::make(trans('profile.console'))
|
Section::make(trans('profile.console'))
|
||||||
->collapsible()
|
->collapsible()
|
||||||
@ -501,8 +503,7 @@ class EditProfile extends BaseEditProfile
|
|||||||
TextInput::make('console_graph_period')
|
TextInput::make('console_graph_period')
|
||||||
->label(trans('profile.graph_period'))
|
->label(trans('profile.graph_period'))
|
||||||
->suffix(trans('profile.seconds'))
|
->suffix(trans('profile.seconds'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('profile.graph_period_helper'))
|
||||||
->hintIconTooltip(trans('profile.graph_period_helper'))
|
|
||||||
->columnSpan(2)
|
->columnSpan(2)
|
||||||
->numeric()
|
->numeric()
|
||||||
->default(30)
|
->default(30)
|
||||||
@ -562,11 +563,11 @@ class EditProfile extends BaseEditProfile
|
|||||||
protected function mutateFormDataBeforeFill(array $data): array
|
protected function mutateFormDataBeforeFill(array $data): array
|
||||||
{
|
{
|
||||||
$data['console_font'] = $this->getUser()->getCustomization(CustomizationKey::ConsoleFont);
|
$data['console_font'] = $this->getUser()->getCustomization(CustomizationKey::ConsoleFont);
|
||||||
$data['console_font_size'] = $this->getUser()->getCustomization(CustomizationKey::ConsoleFontSize);
|
$data['console_font_size'] = (int) $this->getUser()->getCustomization(CustomizationKey::ConsoleFontSize);
|
||||||
$data['console_rows'] = $this->getUser()->getCustomization(CustomizationKey::ConsoleRows);
|
$data['console_rows'] = (int) $this->getUser()->getCustomization(CustomizationKey::ConsoleRows);
|
||||||
$data['console_graph_period'] = $this->getUser()->getCustomization(CustomizationKey::ConsoleGraphPeriod);
|
$data['console_graph_period'] = (int) $this->getUser()->getCustomization(CustomizationKey::ConsoleGraphPeriod);
|
||||||
$data['dashboard_layout'] = $this->getUser()->getCustomization(CustomizationKey::DashboardLayout);
|
$data['dashboard_layout'] = $this->getUser()->getCustomization(CustomizationKey::DashboardLayout);
|
||||||
$data['top_navigation'] = $this->getUser()->getCustomization(CustomizationKey::TopNavigation);
|
$data['top_navigation'] = (bool) $this->getUser()->getCustomization(CustomizationKey::TopNavigation);
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,8 @@ class Login extends BaseLogin
|
|||||||
];
|
];
|
||||||
|
|
||||||
if ($captchaComponent = $this->getCaptchaComponent()) {
|
if ($captchaComponent = $this->getCaptchaComponent()) {
|
||||||
$components[] = $captchaComponent;
|
$components[] = $captchaComponent
|
||||||
|
->hidden(fn () => filled($this->userUndertakingMultiFactorAuthentication));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $schema
|
return $schema
|
||||||
@ -78,7 +79,7 @@ class Login extends BaseLogin
|
|||||||
$actions[] = Action::make("oauth_$id")
|
$actions[] = Action::make("oauth_$id")
|
||||||
->label($schema->getName())
|
->label($schema->getName())
|
||||||
->icon($schema->getIcon())
|
->icon($schema->getIcon())
|
||||||
->color(Color::generateV3Palette($schema->getHexColor()))
|
->color(Color::hex($schema->getHexColor()))
|
||||||
->url(route('auth.oauth.redirect', ['driver' => $id], false));
|
->url(route('auth.oauth.redirect', ['driver' => $id], false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ class Settings extends ServerFormPage
|
|||||||
])
|
])
|
||||||
->schema([
|
->schema([
|
||||||
TextInput::make('name')
|
TextInput::make('name')
|
||||||
->label(trans('server/setting.server_info.server_name'))
|
->label(trans('server/setting.server_info.name'))
|
||||||
->disabled(fn (Server $server) => !auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server))
|
->disabled(fn (Server $server) => !auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server))
|
||||||
->required()
|
->required()
|
||||||
->columnSpan([
|
->columnSpan([
|
||||||
@ -109,42 +109,42 @@ class Settings extends ServerFormPage
|
|||||||
])
|
])
|
||||||
->schema([
|
->schema([
|
||||||
TextInput::make('cpu')
|
TextInput::make('cpu')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->prefix(trans('server/setting.server_info.limits.cpu'))
|
->prefix(trans('server/setting.server_info.limits.cpu'))
|
||||||
->prefixIcon('tabler-cpu')
|
->prefixIcon('tabler-cpu')
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
->disabled()
|
->disabled()
|
||||||
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : format_number($server->cpu) . '%'),
|
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : format_number($server->cpu) . '%'),
|
||||||
TextInput::make('memory')
|
TextInput::make('memory')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->prefix(trans('server/setting.server_info.limits.memory'))
|
->prefix(trans('server/setting.server_info.limits.memory'))
|
||||||
->prefixIcon('tabler-device-desktop-analytics')
|
->prefixIcon('tabler-device-desktop-analytics')
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
->disabled()
|
->disabled()
|
||||||
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : convert_bytes_to_readable($server->memory * 2 ** 20)),
|
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : convert_bytes_to_readable($server->memory * 2 ** 20)),
|
||||||
TextInput::make('disk')
|
TextInput::make('disk')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->prefix(trans('server/setting.server_info.limits.disk'))
|
->prefix(trans('server/setting.server_info.limits.disk'))
|
||||||
->prefixIcon('tabler-device-sd-card')
|
->prefixIcon('tabler-device-sd-card')
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
->disabled()
|
->disabled()
|
||||||
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : convert_bytes_to_readable($server->disk * 2 ** 20)),
|
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : convert_bytes_to_readable($server->disk * 2 ** 20)),
|
||||||
TextInput::make('backup_limit')
|
TextInput::make('backup_limit')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->prefix(trans('server/setting.server_info.limits.backups'))
|
->prefix(trans('server/setting.server_info.limits.backups'))
|
||||||
->prefixIcon('tabler-file-zip')
|
->prefixIcon('tabler-file-zip')
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
->disabled()
|
->disabled()
|
||||||
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/backup.empty') : $server->backups->count() . ' ' .trans('server/setting.server_info.limits.of', ['max' => $state])),
|
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/backup.empty') : $server->backups->count() . ' ' .trans('server/setting.server_info.limits.of', ['max' => $state])),
|
||||||
TextInput::make('database_limit')
|
TextInput::make('database_limit')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->prefix(trans('server/setting.server_info.limits.databases'))
|
->prefix(trans('server/setting.server_info.limits.databases'))
|
||||||
->prefixIcon('tabler-database')
|
->prefixIcon('tabler-database')
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
->disabled()
|
->disabled()
|
||||||
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/database.empty') : $server->databases->count() . ' ' . trans('server/setting.server_info.limits.of', ['max' => $state])),
|
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/database.empty') : $server->databases->count() . ' ' . trans('server/setting.server_info.limits.of', ['max' => $state])),
|
||||||
TextInput::make('allocation_limit')
|
TextInput::make('allocation_limit')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->prefix(trans('server/setting.server_info.limits.allocations'))
|
->prefix(trans('server/setting.server_info.limits.allocations'))
|
||||||
->prefixIcon('tabler-network')
|
->prefixIcon('tabler-network')
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
|
@ -86,7 +86,7 @@ class BackupResource extends Resource
|
|||||||
TextInput::make('name')
|
TextInput::make('name')
|
||||||
->label(trans('server/backup.actions.create.name'))
|
->label(trans('server/backup.actions.create.name'))
|
||||||
->columnSpanFull(),
|
->columnSpanFull(),
|
||||||
TextArea::make('ignored')
|
Textarea::make('ignored')
|
||||||
->label(trans('server/backup.actions.create.ignored'))
|
->label(trans('server/backup.actions.create.ignored'))
|
||||||
->columnSpanFull(),
|
->columnSpanFull(),
|
||||||
Toggle::make('is_locked')
|
Toggle::make('is_locked')
|
||||||
|
@ -178,8 +178,7 @@ class DatabaseResource extends Resource
|
|||||||
->label(trans('server/database.name'))
|
->label(trans('server/database.name'))
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
->prefix('s'. $server->id . '_')
|
->prefix('s'. $server->id . '_')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('server/database.name_hint')),
|
||||||
->hintIconTooltip(trans('server/database.name_hint')),
|
|
||||||
TextInput::make('remote')
|
TextInput::make('remote')
|
||||||
->label(trans('server/database.connections_from'))
|
->label(trans('server/database.connections_from'))
|
||||||
->columnSpan(1)
|
->columnSpan(1)
|
||||||
|
@ -25,6 +25,7 @@ use Filament\Panel;
|
|||||||
use Filament\Resources\Pages\Page;
|
use Filament\Resources\Pages\Page;
|
||||||
use Filament\Resources\Pages\PageRegistration;
|
use Filament\Resources\Pages\PageRegistration;
|
||||||
use Filament\Schemas\Components\Section;
|
use Filament\Schemas\Components\Section;
|
||||||
|
use Filament\Schemas\Components\Utilities\Get;
|
||||||
use Filament\Schemas\Schema;
|
use Filament\Schemas\Schema;
|
||||||
use Filament\Support\Enums\Alignment;
|
use Filament\Support\Enums\Alignment;
|
||||||
use Illuminate\Contracts\Filesystem\FileNotFoundException;
|
use Illuminate\Contracts\Filesystem\FileNotFoundException;
|
||||||
@ -155,6 +156,7 @@ class EditFiles extends Page
|
|||||||
}),
|
}),
|
||||||
CodeEditor::make('editor')
|
CodeEditor::make('editor')
|
||||||
->hiddenLabel()
|
->hiddenLabel()
|
||||||
|
->language(fn (Get $get) => $get('lang'))
|
||||||
->default(function () {
|
->default(function () {
|
||||||
try {
|
try {
|
||||||
return $this->getDaemonFileRepository()->getContent($this->path, config('panel.files.max_edit_size'));
|
return $this->getDaemonFileRepository()->getContent($this->path, config('panel.files.max_edit_size'));
|
||||||
|
@ -86,10 +86,11 @@ class ListFiles extends ListRecords
|
|||||||
$files = File::get($server, $this->path);
|
$files = File::get($server, $this->path);
|
||||||
|
|
||||||
return $table
|
return $table
|
||||||
->paginated()
|
->paginated([25, 50, 100, 150, 200])
|
||||||
->paginationMode(PaginationMode::Simple)
|
->paginationMode(PaginationMode::Simple)
|
||||||
|
->defaultPaginationPageOption(50)
|
||||||
|
->deferLoading()
|
||||||
->searchable()
|
->searchable()
|
||||||
->defaultPaginationPageOption(25)
|
|
||||||
->query(fn () => $files->orderByDesc('is_directory'))
|
->query(fn () => $files->orderByDesc('is_directory'))
|
||||||
->defaultSort('name')
|
->defaultSort('name')
|
||||||
->columns([
|
->columns([
|
||||||
@ -333,7 +334,7 @@ class ListFiles extends ListRecords
|
|||||||
])->iconSize(IconSize::Large),
|
])->iconSize(IconSize::Large),
|
||||||
DeleteAction::make()
|
DeleteAction::make()
|
||||||
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_DELETE, $server))
|
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_DELETE, $server))
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->icon('tabler-trash')->iconSize(IconSize::Large)
|
->icon('tabler-trash')->iconSize(IconSize::Large)
|
||||||
->requiresConfirmation()
|
->requiresConfirmation()
|
||||||
->modalHeading(fn (File $file) => trans('filament-actions::delete.single.modal.heading', ['label' => $file->name . ' ' . ($file->is_directory ? 'folder' : 'file')]))
|
->modalHeading(fn (File $file) => trans('filament-actions::delete.single.modal.heading', ['label' => $file->name . ' ' . ($file->is_directory ? 'folder' : 'file')]))
|
||||||
@ -433,7 +434,7 @@ class ListFiles extends ListRecords
|
|||||||
$this->getDaemonFileRepository()->putContent($path, $data['editor'] ?? '');
|
$this->getDaemonFileRepository()->putContent($path, $data['editor'] ?? '');
|
||||||
|
|
||||||
Activity::event('server:file.write')
|
Activity::event('server:file.write')
|
||||||
->property('file', join_paths($path, $data['name']))
|
->property('file', $path)
|
||||||
->log();
|
->log();
|
||||||
} catch (FileExistsException) {
|
} catch (FileExistsException) {
|
||||||
AlertBanner::make('file_already_exists')
|
AlertBanner::make('file_already_exists')
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Filament\Server\Resources\Schedules\Pages;
|
namespace App\Filament\Server\Resources\Schedules\Pages;
|
||||||
|
|
||||||
|
use App\Enums\ScheduleStatus;
|
||||||
use App\Facades\Activity;
|
use App\Facades\Activity;
|
||||||
use App\Filament\Server\Resources\Schedules\ScheduleResource;
|
use App\Filament\Server\Resources\Schedules\ScheduleResource;
|
||||||
use App\Models\Permission;
|
use App\Models\Permission;
|
||||||
@ -27,11 +28,11 @@ class ViewSchedule extends ViewRecord
|
|||||||
protected function getDefaultHeaderActions(): array
|
protected function getDefaultHeaderActions(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
Action::make('runNow')
|
Action::make('run_now')
|
||||||
->authorize(fn () => auth()->user()->can(Permission::ACTION_SCHEDULE_UPDATE, Filament::getTenant()))
|
->authorize(fn () => auth()->user()->can(Permission::ACTION_SCHEDULE_UPDATE, Filament::getTenant()))
|
||||||
->label(fn (Schedule $schedule) => $schedule->tasks->count() === 0 ? trans('server/schedule.no_tasks') : ($schedule->is_processing ? trans('server/schedule.processing') : trans('server/schedule.run_now')))
|
->label(fn (Schedule $schedule) => $schedule->tasks->count() === 0 ? trans('server/schedule.no_tasks') : ($schedule->status === ScheduleStatus::Processing ? ScheduleStatus::Processing->getLabel() : trans('server/schedule.run_now')))
|
||||||
->color(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->is_processing ? 'warning' : 'primary')
|
->color(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->status === ScheduleStatus::Processing ? 'warning' : 'primary')
|
||||||
->disabled(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->is_processing)
|
->disabled(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->status === ScheduleStatus::Processing)
|
||||||
->action(function (ProcessScheduleService $service, Schedule $schedule) {
|
->action(function (ProcessScheduleService $service, Schedule $schedule) {
|
||||||
$service->handle($schedule, true);
|
$service->handle($schedule, true);
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Filament\Server\Resources\Schedules;
|
namespace App\Filament\Server\Resources\Schedules;
|
||||||
|
|
||||||
|
use App\Enums\ScheduleStatus;
|
||||||
use App\Filament\Components\Actions\ImportScheduleAction;
|
use App\Filament\Components\Actions\ImportScheduleAction;
|
||||||
use App\Filament\Server\Resources\Schedules\Pages\ListSchedules;
|
use App\Filament\Server\Resources\Schedules\Pages\ListSchedules;
|
||||||
use App\Filament\Server\Resources\Schedules\Pages\CreateSchedule;
|
use App\Filament\Server\Resources\Schedules\Pages\CreateSchedule;
|
||||||
@ -102,28 +103,21 @@ class ScheduleResource extends Resource
|
|||||||
->required(),
|
->required(),
|
||||||
Toggle::make('only_when_online')
|
Toggle::make('only_when_online')
|
||||||
->label(trans('server/schedule.only_online'))
|
->label(trans('server/schedule.only_online'))
|
||||||
->hintIconTooltip(trans('server/schedule.only_online_hint'))
|
->hintIcon('tabler-question-mark', trans('server/schedule.only_online_hint'))
|
||||||
->hintIcon('tabler-question-mark')
|
|
||||||
->inline(false)
|
->inline(false)
|
||||||
->required()
|
->required()
|
||||||
->default(1),
|
->default(1),
|
||||||
Toggle::make('is_active')
|
Toggle::make('is_active')
|
||||||
->label(trans('server/schedule.enabled'))
|
->label(trans('server/schedule.enabled'))
|
||||||
->hintIconTooltip(trans('server/schedule.enabled_hint'))
|
->hintIcon('tabler-question-mark', trans('server/schedule.enabled_hint'))
|
||||||
->hintIcon('tabler-question-mark')
|
|
||||||
->inline(false)
|
->inline(false)
|
||||||
->hiddenOn('view')
|
->hiddenOn('view')
|
||||||
->required()
|
->required()
|
||||||
->default(1),
|
->default(1),
|
||||||
ToggleButtons::make('Status')
|
ToggleButtons::make('status')
|
||||||
->formatStateUsing(fn (Schedule $schedule) => !$schedule->is_active ? 'inactive' : ($schedule->is_processing ? 'processing' : 'active'))
|
->enum(ScheduleStatus::class)
|
||||||
->options(fn (Schedule $schedule) => !$schedule->is_active ? ['inactive' => trans('server/schedule.inactive')] : ($schedule->is_processing ? ['processing' => trans('server/schedule.processing')] : ['active' => trans('server/schedule.active')]))
|
->formatStateUsing(fn (?Schedule $schedule) => $schedule?->status->value ?? 'new')
|
||||||
->colors([
|
->options(fn (?Schedule $schedule) => [$schedule?->status->value ?? 'new' => $schedule?->status->getLabel() ?? 'New'])
|
||||||
'new' => 'primary',
|
|
||||||
'inactive' => 'danger',
|
|
||||||
'processing' => 'warning',
|
|
||||||
'active' => 'success',
|
|
||||||
])
|
|
||||||
->visibleOn('view'),
|
->visibleOn('view'),
|
||||||
Section::make('Cron')
|
Section::make('Cron')
|
||||||
->label(trans('server/schedule.cron'))
|
->label(trans('server/schedule.cron'))
|
||||||
@ -162,7 +156,7 @@ class ScheduleResource extends Resource
|
|||||||
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
|
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
|
||||||
->schema([
|
->schema([
|
||||||
TextInput::make('x')
|
TextInput::make('x')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->numeric()
|
->numeric()
|
||||||
->minValue(1)
|
->minValue(1)
|
||||||
->maxValue(60)
|
->maxValue(60)
|
||||||
@ -184,7 +178,7 @@ class ScheduleResource extends Resource
|
|||||||
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
|
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
|
||||||
->schema([
|
->schema([
|
||||||
TextInput::make('x')
|
TextInput::make('x')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->numeric()
|
->numeric()
|
||||||
->minValue(1)
|
->minValue(1)
|
||||||
->maxValue(24)
|
->maxValue(24)
|
||||||
@ -206,7 +200,7 @@ class ScheduleResource extends Resource
|
|||||||
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
|
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
|
||||||
->schema([
|
->schema([
|
||||||
TextInput::make('x')
|
TextInput::make('x')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->numeric()
|
->numeric()
|
||||||
->minValue(1)
|
->minValue(1)
|
||||||
->maxValue(24)
|
->maxValue(24)
|
||||||
@ -228,7 +222,7 @@ class ScheduleResource extends Resource
|
|||||||
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
|
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
|
||||||
->schema([
|
->schema([
|
||||||
TextInput::make('x')
|
TextInput::make('x')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->numeric()
|
->numeric()
|
||||||
->minValue(1)
|
->minValue(1)
|
||||||
->maxValue(24)
|
->maxValue(24)
|
||||||
@ -250,7 +244,7 @@ class ScheduleResource extends Resource
|
|||||||
&& $get('cron_day_of_week') != '*' ? 'success' : 'primary')
|
&& $get('cron_day_of_week') != '*' ? 'success' : 'primary')
|
||||||
->schema([
|
->schema([
|
||||||
Select::make('x')
|
Select::make('x')
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->prefix(trans('server/schedule.time.every'))
|
->prefix(trans('server/schedule.time.every'))
|
||||||
->options([
|
->options([
|
||||||
'1' => trans('server/schedule.time.monday'),
|
'1' => trans('server/schedule.time.monday'),
|
||||||
@ -344,7 +338,9 @@ class ScheduleResource extends Resource
|
|||||||
->state(fn (Schedule $schedule) => $schedule->cron_minute . ' ' . $schedule->cron_hour . ' ' . $schedule->cron_day_of_month . ' ' . $schedule->cron_month . ' ' . $schedule->cron_day_of_week),
|
->state(fn (Schedule $schedule) => $schedule->cron_minute . ' ' . $schedule->cron_hour . ' ' . $schedule->cron_day_of_month . ' ' . $schedule->cron_month . ' ' . $schedule->cron_day_of_week),
|
||||||
TextColumn::make('status')
|
TextColumn::make('status')
|
||||||
->label(trans('server/schedule.status'))
|
->label(trans('server/schedule.status'))
|
||||||
->state(fn (Schedule $schedule) => !$schedule->is_active ? trans('server/schedule.inactive') : ($schedule->is_processing ? trans('server/schedule.processing') : trans('server/schedule.active'))),
|
->state(fn (Schedule $schedule) => $schedule->status->getLabel())
|
||||||
|
->color(fn (Schedule $schedule) => $schedule->status->getColor())
|
||||||
|
->badge(),
|
||||||
IconColumn::make('only_when_online')
|
IconColumn::make('only_when_online')
|
||||||
->label(trans('server/schedule.online_only'))
|
->label(trans('server/schedule.online_only'))
|
||||||
->boolean()
|
->boolean()
|
||||||
@ -359,7 +355,7 @@ class ScheduleResource extends Resource
|
|||||||
->placeholder(trans('server/schedule.never'))
|
->placeholder(trans('server/schedule.never'))
|
||||||
->since()
|
->since()
|
||||||
->sortable()
|
->sortable()
|
||||||
->state(fn (Schedule $schedule) => $schedule->is_active ? $schedule->next_run_at : null),
|
->state(fn (Schedule $schedule) => $schedule->status === ScheduleStatus::Active ? $schedule->next_run_at : null),
|
||||||
])
|
])
|
||||||
->recordActions([
|
->recordActions([
|
||||||
ViewAction::make(),
|
ViewAction::make(),
|
||||||
|
@ -109,7 +109,7 @@ class UserResource extends Resource
|
|||||||
->icon($data['icon'])
|
->icon($data['icon'])
|
||||||
->schema([
|
->schema([
|
||||||
CheckboxList::make($data['name'])
|
CheckboxList::make($data['name'])
|
||||||
->label('')
|
->hiddenLabel()
|
||||||
->bulkToggleable()
|
->bulkToggleable()
|
||||||
->columns(2)
|
->columns(2)
|
||||||
->options($options)
|
->options($options)
|
||||||
|
@ -58,7 +58,7 @@ class OAuthController extends Controller
|
|||||||
if ($request->user()) {
|
if ($request->user()) {
|
||||||
$this->linkUser($request->user(), $driver, $oauthUser);
|
$this->linkUser($request->user(), $driver, $oauthUser);
|
||||||
|
|
||||||
return redirect(EditProfile::getUrl(['tab' => '-oauth-tab'], panel: 'app'));
|
return redirect(EditProfile::getUrl(['tab' => 'oauth::data::tab'], panel: 'app'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = User::whereJsonContains('oauth->'. $driver->getId(), $oauthUser->getId())->first();
|
$user = User::whereJsonContains('oauth->'. $driver->getId(), $oauthUser->getId())->first();
|
||||||
|
@ -29,8 +29,7 @@ class CacheStep
|
|||||||
->schema([
|
->schema([
|
||||||
ToggleButtons::make('env_cache.CACHE_STORE')
|
ToggleButtons::make('env_cache.CACHE_STORE')
|
||||||
->label(trans('installer.cache.driver'))
|
->label(trans('installer.cache.driver'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.cache.driver_help'))
|
||||||
->hintIconTooltip(trans('installer.cache.driver_help'))
|
|
||||||
->required()
|
->required()
|
||||||
->inline()
|
->inline()
|
||||||
->options(self::CACHE_DRIVERS)
|
->options(self::CACHE_DRIVERS)
|
||||||
@ -52,29 +51,25 @@ class CacheStep
|
|||||||
TextInput::make('env_cache.REDIS_HOST')
|
TextInput::make('env_cache.REDIS_HOST')
|
||||||
->label(trans('installer.cache.fields.host'))
|
->label(trans('installer.cache.fields.host'))
|
||||||
->placeholder('127.0.0.1')
|
->placeholder('127.0.0.1')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.cache.fields.host_help'))
|
||||||
->hintIconTooltip(trans('installer.cache.fields.host_help'))
|
|
||||||
->required(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis')
|
->required(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis')
|
||||||
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.host') : null)
|
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.host') : null)
|
||||||
->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'),
|
->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'),
|
||||||
TextInput::make('env_cache.REDIS_PORT')
|
TextInput::make('env_cache.REDIS_PORT')
|
||||||
->label(trans('installer.cache.fields.port'))
|
->label(trans('installer.cache.fields.port'))
|
||||||
->placeholder('6379')
|
->placeholder('6379')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.cache.fields.port_help'))
|
||||||
->hintIconTooltip(trans('installer.cache.fields.port_help'))
|
|
||||||
->required(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis')
|
->required(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis')
|
||||||
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.port') : null)
|
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.port') : null)
|
||||||
->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'),
|
->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'),
|
||||||
TextInput::make('env_cache.REDIS_USERNAME')
|
TextInput::make('env_cache.REDIS_USERNAME')
|
||||||
->label(trans('installer.cache.fields.username'))
|
->label(trans('installer.cache.fields.username'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.cache.fields.username_help'))
|
||||||
->hintIconTooltip(trans('installer.cache.fields.username_help'))
|
|
||||||
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.username') : null)
|
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.username') : null)
|
||||||
->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'),
|
->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'),
|
||||||
TextInput::make('env_cache.REDIS_PASSWORD')
|
TextInput::make('env_cache.REDIS_PASSWORD')
|
||||||
->label(trans('installer.cache.fields.password'))
|
->label(trans('installer.cache.fields.password'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.cache.fields.password_help'))
|
||||||
->hintIconTooltip(trans('installer.cache.fields.password_help'))
|
|
||||||
->password()
|
->password()
|
||||||
->revealable()
|
->revealable()
|
||||||
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.password') : null)
|
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.password') : null)
|
||||||
|
@ -30,8 +30,7 @@ class DatabaseStep
|
|||||||
->schema([
|
->schema([
|
||||||
ToggleButtons::make('env_database.DB_CONNECTION')
|
ToggleButtons::make('env_database.DB_CONNECTION')
|
||||||
->label(trans('installer.database.driver'))
|
->label(trans('installer.database.driver'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.database.driver_help'))
|
||||||
->hintIconTooltip(trans('installer.database.driver_help'))
|
|
||||||
->required()
|
->required()
|
||||||
->inline()
|
->inline()
|
||||||
->options(self::DATABASE_DRIVERS)
|
->options(self::DATABASE_DRIVERS)
|
||||||
@ -63,22 +62,19 @@ class DatabaseStep
|
|||||||
TextInput::make('env_database.DB_DATABASE')
|
TextInput::make('env_database.DB_DATABASE')
|
||||||
->label(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? trans('installer.database.fields.path') : trans('installer.database.fields.name'))
|
->label(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? trans('installer.database.fields.path') : trans('installer.database.fields.name'))
|
||||||
->placeholder(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? 'database.sqlite' : 'panel')
|
->placeholder(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? 'database.sqlite' : 'panel')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? trans('installer.database.fields.path_help') : trans('installer.database.fields.name_help'))
|
||||||
->hintIconTooltip(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? trans('installer.database.fields.path_help') : trans('installer.database.fields.name_help'))
|
|
||||||
->required()
|
->required()
|
||||||
->default('database.sqlite'),
|
->default('database.sqlite'),
|
||||||
TextInput::make('env_database.DB_HOST')
|
TextInput::make('env_database.DB_HOST')
|
||||||
->label(trans('installer.database.fields.host'))
|
->label(trans('installer.database.fields.host'))
|
||||||
->placeholder('127.0.0.1')
|
->placeholder('127.0.0.1')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.database.fields.host_help'))
|
||||||
->hintIconTooltip(trans('installer.database.fields.host_help'))
|
|
||||||
->required(fn (Get $get) => $get('env_database.DB_CONNECTION') !== 'sqlite')
|
->required(fn (Get $get) => $get('env_database.DB_CONNECTION') !== 'sqlite')
|
||||||
->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'),
|
->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'),
|
||||||
TextInput::make('env_database.DB_PORT')
|
TextInput::make('env_database.DB_PORT')
|
||||||
->label(trans('installer.database.fields.port'))
|
->label(trans('installer.database.fields.port'))
|
||||||
->placeholder('3306')
|
->placeholder('3306')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.database.fields.port_help'))
|
||||||
->hintIconTooltip(trans('installer.database.fields.port_help'))
|
|
||||||
->numeric()
|
->numeric()
|
||||||
->minValue(1)
|
->minValue(1)
|
||||||
->maxValue(65535)
|
->maxValue(65535)
|
||||||
@ -87,14 +83,12 @@ class DatabaseStep
|
|||||||
TextInput::make('env_database.DB_USERNAME')
|
TextInput::make('env_database.DB_USERNAME')
|
||||||
->label(trans('installer.database.fields.username'))
|
->label(trans('installer.database.fields.username'))
|
||||||
->placeholder('pelican')
|
->placeholder('pelican')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.database.fields.username_help'))
|
||||||
->hintIconTooltip(trans('installer.database.fields.username_help'))
|
|
||||||
->required(fn (Get $get) => $get('env_database.DB_CONNECTION') !== 'sqlite')
|
->required(fn (Get $get) => $get('env_database.DB_CONNECTION') !== 'sqlite')
|
||||||
->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'),
|
->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'),
|
||||||
TextInput::make('env_database.DB_PASSWORD')
|
TextInput::make('env_database.DB_PASSWORD')
|
||||||
->label(trans('installer.database.fields.password'))
|
->label(trans('installer.database.fields.password'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.database.fields.password_help'))
|
||||||
->hintIconTooltip(trans('installer.database.fields.password_help'))
|
|
||||||
->password()
|
->password()
|
||||||
->revealable()
|
->revealable()
|
||||||
->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'),
|
->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'),
|
||||||
|
@ -17,14 +17,12 @@ class EnvironmentStep
|
|||||||
->schema([
|
->schema([
|
||||||
TextInput::make('env_general.APP_NAME')
|
TextInput::make('env_general.APP_NAME')
|
||||||
->label(trans('installer.environment.fields.app_name'))
|
->label(trans('installer.environment.fields.app_name'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.environment.fields.app_name_help'))
|
||||||
->hintIconTooltip(trans('installer.environment.fields.app_name_help'))
|
|
||||||
->required()
|
->required()
|
||||||
->default(config('app.name')),
|
->default(config('app.name')),
|
||||||
TextInput::make('env_general.APP_URL')
|
TextInput::make('env_general.APP_URL')
|
||||||
->label(trans('installer.environment.fields.app_url'))
|
->label(trans('installer.environment.fields.app_url'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.environment.fields.app_url_help'))
|
||||||
->hintIconTooltip(trans('installer.environment.fields.app_url_help'))
|
|
||||||
->required()
|
->required()
|
||||||
->default(url('')),
|
->default(url('')),
|
||||||
Fieldset::make('admin_user')
|
Fieldset::make('admin_user')
|
||||||
|
@ -30,8 +30,7 @@ class QueueStep
|
|||||||
->schema([
|
->schema([
|
||||||
ToggleButtons::make('env_queue.QUEUE_CONNECTION')
|
ToggleButtons::make('env_queue.QUEUE_CONNECTION')
|
||||||
->label(trans('installer.queue.driver'))
|
->label(trans('installer.queue.driver'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.queue.driver_help'))
|
||||||
->hintIconTooltip(trans('installer.queue.driver_help'))
|
|
||||||
->required()
|
->required()
|
||||||
->inline()
|
->inline()
|
||||||
->options(self::QUEUE_DRIVERS)
|
->options(self::QUEUE_DRIVERS)
|
||||||
|
@ -23,8 +23,7 @@ class SessionStep
|
|||||||
->schema([
|
->schema([
|
||||||
ToggleButtons::make('env_session.SESSION_DRIVER')
|
ToggleButtons::make('env_session.SESSION_DRIVER')
|
||||||
->label(trans('installer.session.driver'))
|
->label(trans('installer.session.driver'))
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark', trans('installer.session.driver_help'))
|
||||||
->hintIconTooltip(trans('installer.session.driver_help'))
|
|
||||||
->required()
|
->required()
|
||||||
->inline()
|
->inline()
|
||||||
->options(self::SESSION_DRIVERS)
|
->options(self::SESSION_DRIVERS)
|
||||||
|
@ -92,7 +92,7 @@ class ActivityLog extends Model implements HasIcon, HasLabel
|
|||||||
|
|
||||||
public function actor(): MorphTo
|
public function actor(): MorphTo
|
||||||
{
|
{
|
||||||
return $this->morphTo()->withTrashed();
|
return $this->morphTo()->withTrashed()->withoutGlobalScopes();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -6,8 +6,10 @@ use Carbon\Carbon;
|
|||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Exception;
|
use Exception;
|
||||||
use App\Contracts\Validatable;
|
use App\Contracts\Validatable;
|
||||||
|
use App\Enums\ScheduleStatus;
|
||||||
use App\Helpers\Utilities;
|
use App\Helpers\Utilities;
|
||||||
use App\Traits\HasValidation;
|
use App\Traits\HasValidation;
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
@ -27,6 +29,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|||||||
* @property bool $only_when_online
|
* @property bool $only_when_online
|
||||||
* @property Carbon|null $last_run_at
|
* @property Carbon|null $last_run_at
|
||||||
* @property Carbon|null $next_run_at
|
* @property Carbon|null $next_run_at
|
||||||
|
* @property ScheduleStatus $status
|
||||||
* @property Carbon $created_at
|
* @property Carbon $created_at
|
||||||
* @property Carbon $updated_at
|
* @property Carbon $updated_at
|
||||||
* @property Server $server
|
* @property Server $server
|
||||||
@ -107,6 +110,13 @@ class Schedule extends Model implements Validatable
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function status(): Attribute
|
||||||
|
{
|
||||||
|
return Attribute::make(
|
||||||
|
get: fn () => !$this->is_active ? ScheduleStatus::Inactive : ($this->is_processing ? ScheduleStatus::Processing : ScheduleStatus::Active),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the schedule's execution crontab entry as a string.
|
* Returns the schedule's execution crontab entry as a string.
|
||||||
*
|
*
|
||||||
|
@ -111,7 +111,7 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
'primary' => Color::Blue,
|
'primary' => Color::Blue,
|
||||||
'success' => Color::Green,
|
'success' => Color::Green,
|
||||||
'warning' => Color::Amber,
|
'warning' => Color::Amber,
|
||||||
'blurple' => Color::generateV3Palette('#5865F2'),
|
'blurple' => Color::hex('#5865F2'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
FilamentView::registerRenderHook(
|
FilamentView::registerRenderHook(
|
||||||
|
@ -16,7 +16,7 @@ class AdminPanelProvider extends PanelProvider
|
|||||||
->path('admin')
|
->path('admin')
|
||||||
->homeUrl('/')
|
->homeUrl('/')
|
||||||
->breadcrumbs(false)
|
->breadcrumbs(false)
|
||||||
->sidebarCollapsibleOnDesktop()
|
->sidebarCollapsibleOnDesktop(fn () => !$panel->hasTopNavigation())
|
||||||
->userMenuItems([
|
->userMenuItems([
|
||||||
Action::make('exit_admin')
|
Action::make('exit_admin')
|
||||||
->label(fn () => trans('profile.exit_admin'))
|
->label(fn () => trans('profile.exit_admin'))
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
"aws/aws-sdk-php": "^3.351",
|
"aws/aws-sdk-php": "^3.351",
|
||||||
"calebporzio/sushi": "^2.5",
|
"calebporzio/sushi": "^2.5",
|
||||||
"dedoc/scramble": "^0.12.10",
|
"dedoc/scramble": "^0.12.10",
|
||||||
"doctrine/dbal": "~3.6.0",
|
|
||||||
"filament/filament": "~4.0",
|
"filament/filament": "~4.0",
|
||||||
"guzzlehttp/guzzle": "^7.9",
|
"guzzlehttp/guzzle": "^7.9",
|
||||||
"laravel/framework": "^12.23",
|
"laravel/framework": "^12.23",
|
||||||
|
522
composer.lock
generated
522
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "09abbfbce5021c591de46868e3abfc3f",
|
"content-hash": "179b8bb70681716cab28fac53ba87943",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "amphp/amp",
|
"name": "amphp/amp",
|
||||||
@ -936,16 +936,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "aws/aws-sdk-php",
|
"name": "aws/aws-sdk-php",
|
||||||
"version": "3.356.12",
|
"version": "3.356.17",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/aws/aws-sdk-php.git",
|
"url": "https://github.com/aws/aws-sdk-php.git",
|
||||||
"reference": "0068088fed44e2bed3a2e82f2c7a0bb9e356b3c3"
|
"reference": "d0357fbe2535bb7d832e594a4ff2ff8da29d229c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/0068088fed44e2bed3a2e82f2c7a0bb9e356b3c3",
|
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d0357fbe2535bb7d832e594a4ff2ff8da29d229c",
|
||||||
"reference": "0068088fed44e2bed3a2e82f2c7a0bb9e356b3c3",
|
"reference": "d0357fbe2535bb7d832e594a4ff2ff8da29d229c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -958,7 +958,7 @@
|
|||||||
"guzzlehttp/psr7": "^2.4.5",
|
"guzzlehttp/psr7": "^2.4.5",
|
||||||
"mtdowling/jmespath.php": "^2.8.0",
|
"mtdowling/jmespath.php": "^2.8.0",
|
||||||
"php": ">=8.1",
|
"php": ">=8.1",
|
||||||
"psr/http-message": "^2.0"
|
"psr/http-message": "^1.0 || ^2.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"andrewsville/php-token-reflection": "^1.4",
|
"andrewsville/php-token-reflection": "^1.4",
|
||||||
@ -1027,9 +1027,9 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"forum": "https://github.com/aws/aws-sdk-php/discussions",
|
"forum": "https://github.com/aws/aws-sdk-php/discussions",
|
||||||
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
||||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.356.12"
|
"source": "https://github.com/aws/aws-sdk-php/tree/3.356.17"
|
||||||
},
|
},
|
||||||
"time": "2025-09-05T18:10:41+00:00"
|
"time": "2025-09-12T18:07:37+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "blade-ui-kit/blade-heroicons",
|
"name": "blade-ui-kit/blade-heroicons",
|
||||||
@ -1297,26 +1297,26 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "carbonphp/carbon-doctrine-types",
|
"name": "carbonphp/carbon-doctrine-types",
|
||||||
"version": "1.0.0",
|
"version": "3.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
|
"url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
|
||||||
"reference": "3c430083d0b41ceed84ecccf9dac613241d7305d"
|
"reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/3c430083d0b41ceed84ecccf9dac613241d7305d",
|
"url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
|
||||||
"reference": "3c430083d0b41ceed84ecccf9dac613241d7305d",
|
"reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1.8 || ^8.0"
|
"php": "^8.1"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"doctrine/dbal": ">=3.7.0"
|
"doctrine/dbal": "<4.0.0 || >=5.0.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/dbal": ">=2.0.0",
|
"doctrine/dbal": "^4.0.0",
|
||||||
"nesbot/carbon": "^2.71.0 || ^3.0.0",
|
"nesbot/carbon": "^2.71.0 || ^3.0.0",
|
||||||
"phpunit/phpunit": "^10.3"
|
"phpunit/phpunit": "^10.3"
|
||||||
},
|
},
|
||||||
@ -1346,7 +1346,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues",
|
"issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues",
|
||||||
"source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/1.0.0"
|
"source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -1362,7 +1362,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-10-01T12:35:29+00:00"
|
"time": "2024-02-09T16:56:22+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "chillerlan/php-qrcode",
|
"name": "chillerlan/php-qrcode",
|
||||||
@ -1674,16 +1674,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "dedoc/scramble",
|
"name": "dedoc/scramble",
|
||||||
"version": "v0.12.31",
|
"version": "v0.12.34",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/dedoc/scramble.git",
|
"url": "https://github.com/dedoc/scramble.git",
|
||||||
"reference": "ff8fd4295ccf9d9e4dcea98a193e13f9acd1f071"
|
"reference": "fdedbaac3271b466182d4029651aa90eac53cee5"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/dedoc/scramble/zipball/ff8fd4295ccf9d9e4dcea98a193e13f9acd1f071",
|
"url": "https://api.github.com/repos/dedoc/scramble/zipball/fdedbaac3271b466182d4029651aa90eac53cee5",
|
||||||
"reference": "ff8fd4295ccf9d9e4dcea98a193e13f9acd1f071",
|
"reference": "fdedbaac3271b466182d4029651aa90eac53cee5",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -1742,7 +1742,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/dedoc/scramble/issues",
|
"issues": "https://github.com/dedoc/scramble/issues",
|
||||||
"source": "https://github.com/dedoc/scramble/tree/v0.12.31"
|
"source": "https://github.com/dedoc/scramble/tree/v0.12.34"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -1750,7 +1750,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-08-24T11:19:04+00:00"
|
"time": "2025-09-09T14:36:44+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "dflydev/dot-access-data",
|
"name": "dflydev/dot-access-data",
|
||||||
@ -1827,212 +1827,6 @@
|
|||||||
},
|
},
|
||||||
"time": "2024-07-08T12:26:09+00:00"
|
"time": "2024-07-08T12:26:09+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "doctrine/cache",
|
|
||||||
"version": "2.2.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/doctrine/cache.git",
|
|
||||||
"reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
|
|
||||||
"reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "~7.1 || ^8.0"
|
|
||||||
},
|
|
||||||
"conflict": {
|
|
||||||
"doctrine/common": ">2.2,<2.4"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"cache/integration-tests": "dev-master",
|
|
||||||
"doctrine/coding-standard": "^9",
|
|
||||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
|
||||||
"psr/cache": "^1.0 || ^2.0 || ^3.0",
|
|
||||||
"symfony/cache": "^4.4 || ^5.4 || ^6",
|
|
||||||
"symfony/var-exporter": "^4.4 || ^5.4 || ^6"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Guilherme Blanco",
|
|
||||||
"email": "guilhermeblanco@gmail.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Roman Borschel",
|
|
||||||
"email": "roman@code-factory.org"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Benjamin Eberlei",
|
|
||||||
"email": "kontakt@beberlei.de"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Jonathan Wage",
|
|
||||||
"email": "jonwage@gmail.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Johannes Schmitt",
|
|
||||||
"email": "schmittjoh@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
|
|
||||||
"homepage": "https://www.doctrine-project.org/projects/cache.html",
|
|
||||||
"keywords": [
|
|
||||||
"abstraction",
|
|
||||||
"apcu",
|
|
||||||
"cache",
|
|
||||||
"caching",
|
|
||||||
"couchdb",
|
|
||||||
"memcached",
|
|
||||||
"php",
|
|
||||||
"redis",
|
|
||||||
"xcache"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/doctrine/cache/issues",
|
|
||||||
"source": "https://github.com/doctrine/cache/tree/2.2.0"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://www.doctrine-project.org/sponsorship.html",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://www.patreon.com/phpdoctrine",
|
|
||||||
"type": "patreon"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2022-05-20T20:07:39+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "doctrine/dbal",
|
|
||||||
"version": "3.6.7",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/doctrine/dbal.git",
|
|
||||||
"reference": "8e0e268052b4a8974cb00215bb2892787021614f"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/doctrine/dbal/zipball/8e0e268052b4a8974cb00215bb2892787021614f",
|
|
||||||
"reference": "8e0e268052b4a8974cb00215bb2892787021614f",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"composer-runtime-api": "^2",
|
|
||||||
"doctrine/cache": "^1.11|^2.0",
|
|
||||||
"doctrine/deprecations": "^0.5.3|^1",
|
|
||||||
"doctrine/event-manager": "^1|^2",
|
|
||||||
"php": "^7.4 || ^8.0",
|
|
||||||
"psr/cache": "^1|^2|^3",
|
|
||||||
"psr/log": "^1|^2|^3"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"doctrine/coding-standard": "12.0.0",
|
|
||||||
"fig/log-test": "^1",
|
|
||||||
"jetbrains/phpstorm-stubs": "2023.1",
|
|
||||||
"phpstan/phpstan": "1.10.34",
|
|
||||||
"phpstan/phpstan-strict-rules": "^1.5",
|
|
||||||
"phpunit/phpunit": "9.6.12",
|
|
||||||
"psalm/plugin-phpunit": "0.18.4",
|
|
||||||
"slevomat/coding-standard": "8.13.1",
|
|
||||||
"squizlabs/php_codesniffer": "3.7.2",
|
|
||||||
"symfony/cache": "^5.4|^6.0",
|
|
||||||
"symfony/console": "^4.4|^5.4|^6.0",
|
|
||||||
"vimeo/psalm": "4.30.0"
|
|
||||||
},
|
|
||||||
"suggest": {
|
|
||||||
"symfony/console": "For helpful console commands such as SQL execution and import of files."
|
|
||||||
},
|
|
||||||
"bin": [
|
|
||||||
"bin/doctrine-dbal"
|
|
||||||
],
|
|
||||||
"type": "library",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Doctrine\\DBAL\\": "src"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Guilherme Blanco",
|
|
||||||
"email": "guilhermeblanco@gmail.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Roman Borschel",
|
|
||||||
"email": "roman@code-factory.org"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Benjamin Eberlei",
|
|
||||||
"email": "kontakt@beberlei.de"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Jonathan Wage",
|
|
||||||
"email": "jonwage@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
|
|
||||||
"homepage": "https://www.doctrine-project.org/projects/dbal.html",
|
|
||||||
"keywords": [
|
|
||||||
"abstraction",
|
|
||||||
"database",
|
|
||||||
"db2",
|
|
||||||
"dbal",
|
|
||||||
"mariadb",
|
|
||||||
"mssql",
|
|
||||||
"mysql",
|
|
||||||
"oci8",
|
|
||||||
"oracle",
|
|
||||||
"pdo",
|
|
||||||
"pgsql",
|
|
||||||
"postgresql",
|
|
||||||
"queryobject",
|
|
||||||
"sasql",
|
|
||||||
"sql",
|
|
||||||
"sqlite",
|
|
||||||
"sqlserver",
|
|
||||||
"sqlsrv"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/doctrine/dbal/issues",
|
|
||||||
"source": "https://github.com/doctrine/dbal/tree/3.6.7"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://www.doctrine-project.org/sponsorship.html",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://www.patreon.com/phpdoctrine",
|
|
||||||
"type": "patreon"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2023-09-19T20:15:41+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "doctrine/deprecations",
|
"name": "doctrine/deprecations",
|
||||||
"version": "1.1.5",
|
"version": "1.1.5",
|
||||||
@ -2081,97 +1875,6 @@
|
|||||||
},
|
},
|
||||||
"time": "2025-04-07T20:06:18+00:00"
|
"time": "2025-04-07T20:06:18+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "doctrine/event-manager",
|
|
||||||
"version": "2.0.1",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/doctrine/event-manager.git",
|
|
||||||
"reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e",
|
|
||||||
"reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^8.1"
|
|
||||||
},
|
|
||||||
"conflict": {
|
|
||||||
"doctrine/common": "<2.9"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"doctrine/coding-standard": "^12",
|
|
||||||
"phpstan/phpstan": "^1.8.8",
|
|
||||||
"phpunit/phpunit": "^10.5",
|
|
||||||
"vimeo/psalm": "^5.24"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Doctrine\\Common\\": "src"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Guilherme Blanco",
|
|
||||||
"email": "guilhermeblanco@gmail.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Roman Borschel",
|
|
||||||
"email": "roman@code-factory.org"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Benjamin Eberlei",
|
|
||||||
"email": "kontakt@beberlei.de"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Jonathan Wage",
|
|
||||||
"email": "jonwage@gmail.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Johannes Schmitt",
|
|
||||||
"email": "schmittjoh@gmail.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Marco Pivetta",
|
|
||||||
"email": "ocramius@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
|
|
||||||
"homepage": "https://www.doctrine-project.org/projects/event-manager.html",
|
|
||||||
"keywords": [
|
|
||||||
"event",
|
|
||||||
"event dispatcher",
|
|
||||||
"event manager",
|
|
||||||
"event system",
|
|
||||||
"events"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/doctrine/event-manager/issues",
|
|
||||||
"source": "https://github.com/doctrine/event-manager/tree/2.0.1"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://www.doctrine-project.org/sponsorship.html",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://www.patreon.com/phpdoctrine",
|
|
||||||
"type": "patreon"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2024-05-22T20:47:39+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "doctrine/inflector",
|
"name": "doctrine/inflector",
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
@ -2473,16 +2176,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filament/actions",
|
"name": "filament/actions",
|
||||||
"version": "v4.0.8",
|
"version": "v4.0.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/filamentphp/actions.git",
|
"url": "https://github.com/filamentphp/actions.git",
|
||||||
"reference": "aad259842f1888602130cc78d989aa2250149c6b"
|
"reference": "fd48fa35095a2b5bb0d5264bd132c36a2adc6b09"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/filamentphp/actions/zipball/aad259842f1888602130cc78d989aa2250149c6b",
|
"url": "https://api.github.com/repos/filamentphp/actions/zipball/fd48fa35095a2b5bb0d5264bd132c36a2adc6b09",
|
||||||
"reference": "aad259842f1888602130cc78d989aa2250149c6b",
|
"reference": "fd48fa35095a2b5bb0d5264bd132c36a2adc6b09",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2518,20 +2221,20 @@
|
|||||||
"issues": "https://github.com/filamentphp/filament/issues",
|
"issues": "https://github.com/filamentphp/filament/issues",
|
||||||
"source": "https://github.com/filamentphp/filament"
|
"source": "https://github.com/filamentphp/filament"
|
||||||
},
|
},
|
||||||
"time": "2025-09-07T19:30:06+00:00"
|
"time": "2025-09-15T11:16:33+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filament/filament",
|
"name": "filament/filament",
|
||||||
"version": "v4.0.8",
|
"version": "v4.0.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/filamentphp/panels.git",
|
"url": "https://github.com/filamentphp/panels.git",
|
||||||
"reference": "0c697fbeb399d2655ad7dc55f8827e72ba25e438"
|
"reference": "18bb60f075a76147e7397b34011160e36fa1e948"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/filamentphp/panels/zipball/0c697fbeb399d2655ad7dc55f8827e72ba25e438",
|
"url": "https://api.github.com/repos/filamentphp/panels/zipball/18bb60f075a76147e7397b34011160e36fa1e948",
|
||||||
"reference": "0c697fbeb399d2655ad7dc55f8827e72ba25e438",
|
"reference": "18bb60f075a76147e7397b34011160e36fa1e948",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2575,20 +2278,20 @@
|
|||||||
"issues": "https://github.com/filamentphp/filament/issues",
|
"issues": "https://github.com/filamentphp/filament/issues",
|
||||||
"source": "https://github.com/filamentphp/filament"
|
"source": "https://github.com/filamentphp/filament"
|
||||||
},
|
},
|
||||||
"time": "2025-09-07T19:30:10+00:00"
|
"time": "2025-09-15T11:16:32+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filament/forms",
|
"name": "filament/forms",
|
||||||
"version": "v4.0.8",
|
"version": "v4.0.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/filamentphp/forms.git",
|
"url": "https://github.com/filamentphp/forms.git",
|
||||||
"reference": "d6be629b717861d14c7f603f416dde9d25a4f4d0"
|
"reference": "6ac60ebf4321944bbfba91b23c138201986a71b8"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/filamentphp/forms/zipball/d6be629b717861d14c7f603f416dde9d25a4f4d0",
|
"url": "https://api.github.com/repos/filamentphp/forms/zipball/6ac60ebf4321944bbfba91b23c138201986a71b8",
|
||||||
"reference": "d6be629b717861d14c7f603f416dde9d25a4f4d0",
|
"reference": "6ac60ebf4321944bbfba91b23c138201986a71b8",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2625,20 +2328,20 @@
|
|||||||
"issues": "https://github.com/filamentphp/filament/issues",
|
"issues": "https://github.com/filamentphp/filament/issues",
|
||||||
"source": "https://github.com/filamentphp/filament"
|
"source": "https://github.com/filamentphp/filament"
|
||||||
},
|
},
|
||||||
"time": "2025-09-07T19:30:05+00:00"
|
"time": "2025-09-15T12:50:58+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filament/infolists",
|
"name": "filament/infolists",
|
||||||
"version": "v4.0.8",
|
"version": "v4.0.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/filamentphp/infolists.git",
|
"url": "https://github.com/filamentphp/infolists.git",
|
||||||
"reference": "050bd1423579be7fcc76bdcd06448c61ab787d23"
|
"reference": "881bc4899d87604ffb49ff3611685f520658d469"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/filamentphp/infolists/zipball/050bd1423579be7fcc76bdcd06448c61ab787d23",
|
"url": "https://api.github.com/repos/filamentphp/infolists/zipball/881bc4899d87604ffb49ff3611685f520658d469",
|
||||||
"reference": "050bd1423579be7fcc76bdcd06448c61ab787d23",
|
"reference": "881bc4899d87604ffb49ff3611685f520658d469",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2670,20 +2373,20 @@
|
|||||||
"issues": "https://github.com/filamentphp/filament/issues",
|
"issues": "https://github.com/filamentphp/filament/issues",
|
||||||
"source": "https://github.com/filamentphp/filament"
|
"source": "https://github.com/filamentphp/filament"
|
||||||
},
|
},
|
||||||
"time": "2025-09-07T19:30:04+00:00"
|
"time": "2025-09-11T14:01:29+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filament/notifications",
|
"name": "filament/notifications",
|
||||||
"version": "v4.0.8",
|
"version": "v4.0.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/filamentphp/notifications.git",
|
"url": "https://github.com/filamentphp/notifications.git",
|
||||||
"reference": "8dac65801cb62eb291a06617f56c81d4e9740ad3"
|
"reference": "c4792d807c37a2e7640ad7ad9b189fc3e09b3dcb"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/filamentphp/notifications/zipball/8dac65801cb62eb291a06617f56c81d4e9740ad3",
|
"url": "https://api.github.com/repos/filamentphp/notifications/zipball/c4792d807c37a2e7640ad7ad9b189fc3e09b3dcb",
|
||||||
"reference": "8dac65801cb62eb291a06617f56c81d4e9740ad3",
|
"reference": "c4792d807c37a2e7640ad7ad9b189fc3e09b3dcb",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2717,20 +2420,20 @@
|
|||||||
"issues": "https://github.com/filamentphp/filament/issues",
|
"issues": "https://github.com/filamentphp/filament/issues",
|
||||||
"source": "https://github.com/filamentphp/filament"
|
"source": "https://github.com/filamentphp/filament"
|
||||||
},
|
},
|
||||||
"time": "2025-09-07T19:30:09+00:00"
|
"time": "2025-09-09T20:21:33+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filament/schemas",
|
"name": "filament/schemas",
|
||||||
"version": "v4.0.8",
|
"version": "v4.0.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/filamentphp/schemas.git",
|
"url": "https://github.com/filamentphp/schemas.git",
|
||||||
"reference": "20b97f2850dc90a605e1b754ddad7fcdacd00dbc"
|
"reference": "a54e9f3386eaba867dfb1274685392ccc86fb620"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/filamentphp/schemas/zipball/20b97f2850dc90a605e1b754ddad7fcdacd00dbc",
|
"url": "https://api.github.com/repos/filamentphp/schemas/zipball/a54e9f3386eaba867dfb1274685392ccc86fb620",
|
||||||
"reference": "20b97f2850dc90a605e1b754ddad7fcdacd00dbc",
|
"reference": "a54e9f3386eaba867dfb1274685392ccc86fb620",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2762,20 +2465,20 @@
|
|||||||
"issues": "https://github.com/filamentphp/filament/issues",
|
"issues": "https://github.com/filamentphp/filament/issues",
|
||||||
"source": "https://github.com/filamentphp/filament"
|
"source": "https://github.com/filamentphp/filament"
|
||||||
},
|
},
|
||||||
"time": "2025-09-07T19:30:03+00:00"
|
"time": "2025-09-15T11:19:20+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filament/support",
|
"name": "filament/support",
|
||||||
"version": "v4.0.8",
|
"version": "v4.0.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/filamentphp/support.git",
|
"url": "https://github.com/filamentphp/support.git",
|
||||||
"reference": "65c9039bdc005326325c8702d9ff92e65f2fe88d"
|
"reference": "93a25877d8ee4663132fd3df297f78352e212049"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/filamentphp/support/zipball/65c9039bdc005326325c8702d9ff92e65f2fe88d",
|
"url": "https://api.github.com/repos/filamentphp/support/zipball/93a25877d8ee4663132fd3df297f78352e212049",
|
||||||
"reference": "65c9039bdc005326325c8702d9ff92e65f2fe88d",
|
"reference": "93a25877d8ee4663132fd3df297f78352e212049",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2820,20 +2523,20 @@
|
|||||||
"issues": "https://github.com/filamentphp/filament/issues",
|
"issues": "https://github.com/filamentphp/filament/issues",
|
||||||
"source": "https://github.com/filamentphp/filament"
|
"source": "https://github.com/filamentphp/filament"
|
||||||
},
|
},
|
||||||
"time": "2025-09-07T19:30:25+00:00"
|
"time": "2025-09-15T11:16:50+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filament/tables",
|
"name": "filament/tables",
|
||||||
"version": "v4.0.8",
|
"version": "v4.0.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/filamentphp/tables.git",
|
"url": "https://github.com/filamentphp/tables.git",
|
||||||
"reference": "a8582dfdea9e198a1b0bbd3ba4e1881f62e3bd1a"
|
"reference": "dfd85c5bad70f0819a44f14ee2d1a6a3da442cc4"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/filamentphp/tables/zipball/a8582dfdea9e198a1b0bbd3ba4e1881f62e3bd1a",
|
"url": "https://api.github.com/repos/filamentphp/tables/zipball/dfd85c5bad70f0819a44f14ee2d1a6a3da442cc4",
|
||||||
"reference": "a8582dfdea9e198a1b0bbd3ba4e1881f62e3bd1a",
|
"reference": "dfd85c5bad70f0819a44f14ee2d1a6a3da442cc4",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2865,20 +2568,20 @@
|
|||||||
"issues": "https://github.com/filamentphp/filament/issues",
|
"issues": "https://github.com/filamentphp/filament/issues",
|
||||||
"source": "https://github.com/filamentphp/filament"
|
"source": "https://github.com/filamentphp/filament"
|
||||||
},
|
},
|
||||||
"time": "2025-09-07T19:30:25+00:00"
|
"time": "2025-09-15T11:19:39+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filament/widgets",
|
"name": "filament/widgets",
|
||||||
"version": "v4.0.8",
|
"version": "v4.0.15",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/filamentphp/widgets.git",
|
"url": "https://github.com/filamentphp/widgets.git",
|
||||||
"reference": "f761a52df367f8bde47d9d2518c3c0b646155345"
|
"reference": "35e245262210a944a1a1707fb0ec9857362f527e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/filamentphp/widgets/zipball/f761a52df367f8bde47d9d2518c3c0b646155345",
|
"url": "https://api.github.com/repos/filamentphp/widgets/zipball/35e245262210a944a1a1707fb0ec9857362f527e",
|
||||||
"reference": "f761a52df367f8bde47d9d2518c3c0b646155345",
|
"reference": "35e245262210a944a1a1707fb0ec9857362f527e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2909,7 +2612,7 @@
|
|||||||
"issues": "https://github.com/filamentphp/filament/issues",
|
"issues": "https://github.com/filamentphp/filament/issues",
|
||||||
"source": "https://github.com/filamentphp/filament"
|
"source": "https://github.com/filamentphp/filament"
|
||||||
},
|
},
|
||||||
"time": "2025-09-04T14:12:52+00:00"
|
"time": "2025-09-12T09:56:30+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "firebase/php-jwt",
|
"name": "firebase/php-jwt",
|
||||||
@ -4564,16 +4267,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "league/csv",
|
"name": "league/csv",
|
||||||
"version": "9.24.1",
|
"version": "9.25.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/thephpleague/csv.git",
|
"url": "https://github.com/thephpleague/csv.git",
|
||||||
"reference": "e0221a3f16aa2a823047d59fab5809d552e29bc8"
|
"reference": "f856f532866369fb1debe4e7c5a1db185f40ef86"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/thephpleague/csv/zipball/e0221a3f16aa2a823047d59fab5809d552e29bc8",
|
"url": "https://api.github.com/repos/thephpleague/csv/zipball/f856f532866369fb1debe4e7c5a1db185f40ef86",
|
||||||
"reference": "e0221a3f16aa2a823047d59fab5809d552e29bc8",
|
"reference": "f856f532866369fb1debe4e7c5a1db185f40ef86",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -4589,7 +4292,7 @@
|
|||||||
"phpstan/phpstan-deprecation-rules": "^1.2.1",
|
"phpstan/phpstan-deprecation-rules": "^1.2.1",
|
||||||
"phpstan/phpstan-phpunit": "^1.4.2",
|
"phpstan/phpstan-phpunit": "^1.4.2",
|
||||||
"phpstan/phpstan-strict-rules": "^1.6.2",
|
"phpstan/phpstan-strict-rules": "^1.6.2",
|
||||||
"phpunit/phpunit": "^10.5.16 || ^11.5.22",
|
"phpunit/phpunit": "^10.5.16 || ^11.5.22 || ^12.3.6",
|
||||||
"symfony/var-dumper": "^6.4.8 || ^7.3.0"
|
"symfony/var-dumper": "^6.4.8 || ^7.3.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
@ -4651,7 +4354,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-06-25T14:53:51+00:00"
|
"time": "2025-09-11T08:29:08+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "league/flysystem",
|
"name": "league/flysystem",
|
||||||
@ -7061,55 +6764,6 @@
|
|||||||
],
|
],
|
||||||
"time": "2025-04-30T15:16:02+00:00"
|
"time": "2025-04-30T15:16:02+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "psr/cache",
|
|
||||||
"version": "3.0.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/php-fig/cache.git",
|
|
||||||
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
|
|
||||||
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=8.0.0"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.0.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Psr\\Cache\\": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "PHP-FIG",
|
|
||||||
"homepage": "https://www.php-fig.org/"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Common interface for caching libraries",
|
|
||||||
"keywords": [
|
|
||||||
"cache",
|
|
||||||
"psr",
|
|
||||||
"psr-6"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/php-fig/cache/tree/3.0.0"
|
|
||||||
},
|
|
||||||
"time": "2021-02-03T23:26:27+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "psr/clock",
|
"name": "psr/clock",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@ -13326,16 +12980,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "larastan/larastan",
|
"name": "larastan/larastan",
|
||||||
"version": "v3.6.1",
|
"version": "v3.7.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/larastan/larastan.git",
|
"url": "https://github.com/larastan/larastan.git",
|
||||||
"reference": "3c223047e374befd1b64959784685d6ecccf66aa"
|
"reference": "2e653fd19585a825e283b42f38378b21ae481cc7"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/larastan/larastan/zipball/3c223047e374befd1b64959784685d6ecccf66aa",
|
"url": "https://api.github.com/repos/larastan/larastan/zipball/2e653fd19585a825e283b42f38378b21ae481cc7",
|
||||||
"reference": "3c223047e374befd1b64959784685d6ecccf66aa",
|
"reference": "2e653fd19585a825e283b42f38378b21ae481cc7",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -13349,7 +13003,7 @@
|
|||||||
"illuminate/pipeline": "^11.44.2 || ^12.4.1",
|
"illuminate/pipeline": "^11.44.2 || ^12.4.1",
|
||||||
"illuminate/support": "^11.44.2 || ^12.4.1",
|
"illuminate/support": "^11.44.2 || ^12.4.1",
|
||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
"phpstan/phpstan": "^2.1.11"
|
"phpstan/phpstan": "^2.1.23"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/coding-standard": "^13",
|
"doctrine/coding-standard": "^13",
|
||||||
@ -13403,7 +13057,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/larastan/larastan/issues",
|
"issues": "https://github.com/larastan/larastan/issues",
|
||||||
"source": "https://github.com/larastan/larastan/tree/v3.6.1"
|
"source": "https://github.com/larastan/larastan/tree/v3.7.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -13411,7 +13065,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-08-25T07:24:56+00:00"
|
"time": "2025-09-10T19:42:11+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/pail",
|
"name": "laravel/pail",
|
||||||
@ -14381,16 +14035,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan",
|
"name": "phpstan/phpstan",
|
||||||
"version": "2.1.22",
|
"version": "2.1.25",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpstan.git",
|
"url": "https://github.com/phpstan/phpstan.git",
|
||||||
"reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4"
|
"reference": "4087d28bd252895874e174d65e26b2c202ed893a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4",
|
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/4087d28bd252895874e174d65e26b2c202ed893a",
|
||||||
"reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4",
|
"reference": "4087d28bd252895874e174d65e26b2c202ed893a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -14435,7 +14089,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-08-04T19:17:37+00:00"
|
"time": "2025-09-12T14:26:42+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
@ -16400,7 +16054,7 @@
|
|||||||
],
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"stability-flags": [],
|
"stability-flags": {},
|
||||||
"prefer-stable": true,
|
"prefer-stable": true,
|
||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
"platform": {
|
"platform": {
|
||||||
@ -16411,7 +16065,7 @@
|
|||||||
"ext-pdo": "*",
|
"ext-pdo": "*",
|
||||||
"ext-zip": "*"
|
"ext-zip": "*"
|
||||||
},
|
},
|
||||||
"platform-dev": [],
|
"platform-dev": {},
|
||||||
"platform-overrides": {
|
"platform-overrides": {
|
||||||
"php": "8.2"
|
"php": "8.2"
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Models\User;
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
@ -18,16 +17,6 @@ return new class extends Migration
|
|||||||
$table->boolean('mfa_email_enabled')->default(false);
|
$table->boolean('mfa_email_enabled')->default(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
User::chunk(100, function ($users) {
|
|
||||||
foreach ($users as $user) {
|
|
||||||
$user->update([
|
|
||||||
'mfa_app_secret' => $user->use_totp ? $user->totp_secret : null,
|
|
||||||
'mfa_app_recovery_codes' => null,
|
|
||||||
'mfa_email_enabled' => false,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('users', function (Blueprint $table) {
|
Schema::table('users', function (Blueprint $table) {
|
||||||
$table->dropColumn('use_totp');
|
$table->dropColumn('use_totp');
|
||||||
$table->dropColumn('totp_secret');
|
$table->dropColumn('totp_secret');
|
||||||
|
@ -5,7 +5,6 @@ return [
|
|||||||
'model_label' => 'Database Host',
|
'model_label' => 'Database Host',
|
||||||
'model_label_plural' => 'Database Hosts',
|
'model_label_plural' => 'Database Hosts',
|
||||||
'table' => [
|
'table' => [
|
||||||
'select_placeholder' => 'Select Database Host',
|
|
||||||
'database' => 'Database',
|
'database' => 'Database',
|
||||||
'name' => 'Name',
|
'name' => 'Name',
|
||||||
'host' => 'Host',
|
'host' => 'Host',
|
||||||
|
@ -11,9 +11,11 @@ return [
|
|||||||
'name' => 'Name',
|
'name' => 'Name',
|
||||||
'cron' => 'Cron',
|
'cron' => 'Cron',
|
||||||
'status' => 'Status',
|
'status' => 'Status',
|
||||||
|
'schedule_status' => [
|
||||||
'inactive' => 'Inactive',
|
'inactive' => 'Inactive',
|
||||||
'processing' => 'Processing',
|
'processing' => 'Processing',
|
||||||
'active' => 'Active',
|
'active' => 'Active',
|
||||||
|
],
|
||||||
'no_tasks' => 'No Tasks',
|
'no_tasks' => 'No Tasks',
|
||||||
'run_now' => 'Run Now',
|
'run_now' => 'Run Now',
|
||||||
'online_only' => 'Only When Online',
|
'online_only' => 'Only When Online',
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user