refactor educational components and API routes; update form handling in various actions and Vue components, enhance user interface for form display, and improve data retrieval logic in CreateAdmissionPlan job
This commit is contained in:
@@ -142,12 +142,21 @@ class PageForm
|
||||
->label('Скрыть хлебные крошки')
|
||||
->helperText('Скрывает навигационную цепочку вверху страницы')
|
||||
->columnSpan(1),
|
||||
Select::make('settings.custom_form')->label('Прикрепить форму для страницы')
|
||||
])
|
||||
->columns(2),
|
||||
Section::make('Отображение плавающей формы на странице')
|
||||
->description('Управление плавающей формой на странице')
|
||||
->collapsible()
|
||||
->schema([
|
||||
Select::make('settings.form.id')->label('Прикрепить форму для страницы')
|
||||
->searchable()
|
||||
->preload()
|
||||
->options(CustomForm::query()
|
||||
->where('status', CustomFormStatus::PUBLISHED)->pluck('title', 'form_id'))
|
||||
->columnSpanFull()
|
||||
->columnSpanFull(),
|
||||
Textinput::make('settings.form.title')->label('Заголовок плавающего окна'),
|
||||
Textinput::make('settings.form.description')->label('Описание плавающего окна'),
|
||||
Textinput::make('settings.form.button')->label('Текст кнопки'),
|
||||
])
|
||||
->columns(2),
|
||||
]),
|
||||
@@ -155,4 +164,4 @@ class PageForm
|
||||
])
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Filament\Resources\AdmissionCampaignResource\Pages;
|
||||
|
||||
use App\Filament\Resources\AdmissionCampaignResource;
|
||||
use Filament\Actions;
|
||||
use Filament\Notifications\Notification;
|
||||
use Filament\Resources\Pages\EditRecord;
|
||||
|
||||
class EditAdmissionCampaign extends EditRecord
|
||||
@@ -13,6 +14,50 @@ class EditAdmissionCampaign extends EditRecord
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
Actions\Action::make('fetchData') // Кастомная кнопка
|
||||
->label('Обновить данные о местах набора')
|
||||
->color('primary') // Цвет кнопки
|
||||
->icon('heroicon-o-arrow-path') // Иконка
|
||||
->action(function () {
|
||||
// Отправляем запрос в фоновом режиме
|
||||
$this->js(<<<JS
|
||||
fetch('/api/get-admission-plans-data', {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content
|
||||
}
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(() => {
|
||||
// Показываем уведомление об успешном завершении
|
||||
window.dispatchEvent(new CustomEvent('filament-notify', {
|
||||
detail: {
|
||||
type: 'success',
|
||||
title: 'Данные обновлены',
|
||||
body: 'Данные успешно обновлены.'
|
||||
}
|
||||
}));
|
||||
})
|
||||
.catch(() => {
|
||||
// Показываем уведомление об ошибке
|
||||
window.dispatchEvent(new CustomEvent('filament-notify', {
|
||||
detail: {
|
||||
type: 'danger',
|
||||
title: 'Ошибка',
|
||||
body: 'Произошла ошибка при обновлении данных.'
|
||||
}
|
||||
}));
|
||||
});
|
||||
JS);
|
||||
|
||||
// Показываем уведомление
|
||||
Notification::make()
|
||||
->title('Данные обновляются')
|
||||
->body('Данные обновляются в фоновом режиме.')
|
||||
->success()
|
||||
->send();
|
||||
}),
|
||||
Actions\DeleteAction::make(),
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user