fix: ajax form submit, alert render on mobile
This commit is contained in:
@@ -45,7 +45,7 @@ class PreferencesController extends AbstractController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/user/preferences', 'app_user_preferences_submit', methods: ['POST'])]
|
#[Route('/user/preferences/media', 'app_user_media_preferences_submit', methods: ['POST'])]
|
||||||
public function mediaPreferencesSubmit(
|
public function mediaPreferencesSubmit(
|
||||||
Request $request,
|
Request $request,
|
||||||
SaveUserMediaPreferencesHandler $saveUserMediaPreferencesHandler
|
SaveUserMediaPreferencesHandler $saveUserMediaPreferencesHandler
|
||||||
@@ -56,14 +56,12 @@ class PreferencesController extends AbstractController
|
|||||||
$form = $this->createForm(UserMediaPreferencesForm::class, $formData);
|
$form = $this->createForm(UserMediaPreferencesForm::class, $formData);
|
||||||
|
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
$saveUserMediaPreferencesHandler->handle(
|
$saveUserMediaPreferencesHandler->handle(
|
||||||
SaveUserMediaPreferencesCommand::fromUserMediaPreferencesForm($form)
|
SaveUserMediaPreferencesCommand::fromUserMediaPreferencesForm($form)
|
||||||
);
|
);
|
||||||
$this->broadcaster->alert(
|
$this->broadcaster->alert('Success', 'Your media preferences have been saved.');
|
||||||
title: 'Success',
|
|
||||||
message: 'Your media preferences have been saved.'
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->render(
|
return $this->render(
|
||||||
@@ -75,38 +73,6 @@ class PreferencesController extends AbstractController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/user/preferences/media', 'app_save_media_preferences', methods: ['POST'])]
|
|
||||||
public function saveMediaPreferences(
|
|
||||||
SaveUserMediaPreferencesInput $input,
|
|
||||||
SaveUserMediaPreferencesHandler $saveUserMediaPreferencesHandler,
|
|
||||||
): Response
|
|
||||||
{
|
|
||||||
$saveUserMediaPreferencesHandler->handle($input->toCommand());
|
|
||||||
$mediaPreferences = $this->getUser()->getMediaPreferences();
|
|
||||||
$downloadPreferences = $this->getUser()->getDownloadPreferences();
|
|
||||||
|
|
||||||
$languages = CountryLanguages::$languages;
|
|
||||||
sort($languages);
|
|
||||||
|
|
||||||
$this->broadcaster->alert(
|
|
||||||
title: 'Success',
|
|
||||||
message: 'Your media preferences have been saved.'
|
|
||||||
);
|
|
||||||
|
|
||||||
return $this->render(
|
|
||||||
'user/preferences.html.twig',
|
|
||||||
[
|
|
||||||
'preferences' => $this->preferencesRepository->findEnabled(),
|
|
||||||
'languages' => $languages,
|
|
||||||
'providers' => ProviderList::$providers,
|
|
||||||
'qualities' => QualityList::getBaseQualities(),
|
|
||||||
'mediaPreferences' => $mediaPreferences,
|
|
||||||
'downloadPreferences' => $downloadPreferences,
|
|
||||||
'filterForm' => $this->createForm(GettingStartedFilterForm::class ?? null),
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[Route('/user/preferences/download', 'app_save_download_preferences', methods: ['POST'])]
|
#[Route('/user/preferences/download', 'app_save_download_preferences', methods: ['POST'])]
|
||||||
public function saveDownloadPreferences(
|
public function saveDownloadPreferences(
|
||||||
SaveUserDownloadPreferencesInput $input,
|
SaveUserDownloadPreferencesInput $input,
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ class UserMediaPreferencesForm extends AbstractType
|
|||||||
private function addChoiceField(FormBuilderInterface $builder, string $fieldName, array $choices): void
|
private function addChoiceField(FormBuilderInterface $builder, string $fieldName, array $choices): void
|
||||||
{
|
{
|
||||||
$question = [
|
$question = [
|
||||||
'action' => $this->urlGenerator->generate('app_user_preferences_submit'),
|
|
||||||
'attr' => ['class' => 'w-64 text-input mb-4'],
|
'attr' => ['class' => 'w-64 text-input mb-4'],
|
||||||
'label_attr' => ['class' => 'w-64 text-white block font-semibold mb-2'],
|
'label_attr' => ['class' => 'w-64 text-white block font-semibold mb-2'],
|
||||||
'choices' => $this->addDefaultChoice($choices),
|
'choices' => $this->addDefaultChoice($choices),
|
||||||
@@ -44,7 +43,9 @@ class UserMediaPreferencesForm extends AbstractType
|
|||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver): void
|
public function configureOptions(OptionsResolver $resolver): void
|
||||||
{
|
{
|
||||||
$resolver->setDefaults([]);
|
$resolver->setDefaults([
|
||||||
|
'action' => $this->urlGenerator->generate('app_user_media_preferences_submit'),
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getPreferenceChoices(string $preference): array
|
private function getPreferenceChoices(string $preference): array
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<li {{ attributes }} id="alert_{{ alert_id }}"
|
<li {{ attributes }} id="alert_{{ alert_id }}"
|
||||||
class="alert alert-{{ type|default('success') }}"
|
class="alert alert-{{ type|default('success') }}"
|
||||||
role="alert"
|
role="alert"
|
||||||
>
|
>
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<svg class="shrink-0 w-4 h-4 me-2" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20">
|
<svg class="shrink-0 w-4 h-4 me-2" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<span class="sr-only">Info</span>
|
<span class="sr-only">Info</span>
|
||||||
<h3 class="text-lg font-medium font-bold">{{ title|default('') }}</h3>
|
<h3 class="text-lg font-medium font-bold">{{ title|default('') }}</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-2 text-sm w-[350px] font-bold">
|
<div class="mt-2 text-sm w-[300px] font-bold overflow-hidden text-wrap">
|
||||||
{{ message }}
|
{{ message }}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div {{ turbo_stream_listen(app.session.get('mercure_alert_topic')) }} class="fixed z-40 top-10 right-10">
|
<div {{ turbo_stream_listen(app.session.get('mercure_alert_topic')) }} class="fixed z-40 top-4 right-3 md:top-10 md:right-10">
|
||||||
<div class="z-40">
|
<div class="z-40">
|
||||||
<ul id="alert_list" class="flex flex-col gap-2">
|
<ul id="alert_list" class="flex flex-col gap-2">
|
||||||
{% for message in app.flashes('warning') %}
|
{% for message in app.flashes('warning') %}
|
||||||
|
|||||||
Reference in New Issue
Block a user