mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-29 13:36:13 +00:00
notification: alter form type to add and remove email addresses
This commit is contained in:
parent
4425f2ad49
commit
24d28b0a52
@ -18,6 +18,7 @@ use Doctrine\Common\Collections\ArrayCollection;
|
|||||||
use Doctrine\Common\Collections\Collection;
|
use Doctrine\Common\Collections\Collection;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
use Symfony\Component\Validator\Constraints as Assert;
|
||||||
|
use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Entity
|
* @ORM\Entity
|
||||||
@ -36,7 +37,6 @@ class Notification implements TrackUpdateInterface
|
|||||||
/**
|
/**
|
||||||
* @ORM\ManyToMany(targetEntity=User::class)
|
* @ORM\ManyToMany(targetEntity=User::class)
|
||||||
* @ORM\JoinTable(name="chill_main_notification_addresses_user")
|
* @ORM\JoinTable(name="chill_main_notification_addresses_user")
|
||||||
* @Assert\Count(min="1", minMessage="notification.At least one addressee")
|
|
||||||
*/
|
*/
|
||||||
private Collection $addressees;
|
private Collection $addressees;
|
||||||
|
|
||||||
@ -400,4 +400,19 @@ class Notification implements TrackUpdateInterface
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Assert\Callback()
|
||||||
|
* @param ExecutionContextInterface $context
|
||||||
|
* @param array $payload
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function assertCountAddresses(ExecutionContextInterface $context, $payload): void
|
||||||
|
{
|
||||||
|
if (0 === (count($this->getAddressesEmails()) + count($this->getAddressees()))) {
|
||||||
|
$context->buildViolation('notification.At least one addressee')
|
||||||
|
->atPath('addressees')
|
||||||
|
->addViolation();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,12 +12,17 @@ declare(strict_types=1);
|
|||||||
namespace Chill\MainBundle\Form;
|
namespace Chill\MainBundle\Form;
|
||||||
|
|
||||||
use Chill\MainBundle\Entity\Notification;
|
use Chill\MainBundle\Entity\Notification;
|
||||||
|
use Chill\MainBundle\Form\Type\ChillCollectionType;
|
||||||
use Chill\MainBundle\Form\Type\ChillTextareaType;
|
use Chill\MainBundle\Form\Type\ChillTextareaType;
|
||||||
use Chill\MainBundle\Form\Type\PickUserDynamicType;
|
use Chill\MainBundle\Form\Type\PickUserDynamicType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
use Symfony\Component\Validator\Constraints\Email;
|
||||||
|
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||||
|
use Symfony\Component\Validator\Constraints\NotNull;
|
||||||
|
|
||||||
class NotificationType extends AbstractType
|
class NotificationType extends AbstractType
|
||||||
{
|
{
|
||||||
@ -30,9 +35,27 @@ class NotificationType extends AbstractType
|
|||||||
])
|
])
|
||||||
->add('addressees', PickUserDynamicType::class, [
|
->add('addressees', PickUserDynamicType::class, [
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
|
'required' => false,
|
||||||
])
|
])
|
||||||
->add('message', ChillTextareaType::class, [
|
->add('message', ChillTextareaType::class, [
|
||||||
'required' => false,
|
'required' => false,
|
||||||
|
])
|
||||||
|
->add('addressesEmails', ChillCollectionType::class, [
|
||||||
|
'label' => 'notification.dest by email',
|
||||||
|
'help' => 'notification.dest by email help',
|
||||||
|
'by_reference' => false,
|
||||||
|
'allow_add' => true,
|
||||||
|
'allow_delete' => true,
|
||||||
|
'entry_type' => EmailType::class,
|
||||||
|
'button_add_label' => 'notification.Add an email',
|
||||||
|
'button_remove_label' => 'notification.Remove an email',
|
||||||
|
'empty_collection_explain' => 'notification.Any email',
|
||||||
|
'entry_options' => [
|
||||||
|
'constraints' => [
|
||||||
|
new NotNull(), new NotBlank(), new Email(['checkMX' => true]),
|
||||||
|
],
|
||||||
|
'label' => 'Email',
|
||||||
|
],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,8 @@
|
|||||||
{{ form_row(form.title, { 'label': 'notification.subject'|trans }) }}
|
{{ form_row(form.title, { 'label': 'notification.subject'|trans }) }}
|
||||||
{{ form_row(form.addressees, { 'label': 'notification.sent_to'|trans }) }}
|
{{ form_row(form.addressees, { 'label': 'notification.sent_to'|trans }) }}
|
||||||
|
|
||||||
|
{{ form_row(form.addressesEmails) }}
|
||||||
|
|
||||||
{% include handler.template(notification) with handler.templateData(notification) %}
|
{% include handler.template(notification) with handler.templateData(notification) %}
|
||||||
|
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
|
@ -21,6 +21,8 @@
|
|||||||
{{ form_row(form.title, { 'label': 'notification.subject'|trans }) }}
|
{{ form_row(form.title, { 'label': 'notification.subject'|trans }) }}
|
||||||
{{ form_row(form.addressees, { 'label': 'notification.sent_to'|trans }) }}
|
{{ form_row(form.addressees, { 'label': 'notification.sent_to'|trans }) }}
|
||||||
|
|
||||||
|
{{ form_row(form.addressesEmails) }}
|
||||||
|
|
||||||
{% include handler.template(notification) with handler.templateData(notification) %}
|
{% include handler.template(notification) with handler.templateData(notification) %}
|
||||||
|
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
|
@ -450,4 +450,9 @@ notification:
|
|||||||
subject: Objet
|
subject: Objet
|
||||||
see_comments_thread: Voir le fil de commentaires associé
|
see_comments_thread: Voir le fil de commentaires associé
|
||||||
object_prefix: "[CHILL] notification - "
|
object_prefix: "[CHILL] notification - "
|
||||||
|
dest by email: Lien d'accès par email
|
||||||
|
Any email: Aucun email
|
||||||
|
Add an email: Ajouter un email
|
||||||
|
dest by email help: Les adresses email mentionnées ici recevront un lien d'accès. Un compte utilisateur sera toujours nécessaire.
|
||||||
|
Remove an email: Supprimer l'adresse email
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user