-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
DwcEntryFiltersType.php
107 lines (95 loc) · 3.26 KB
/
DwcEntryFiltersType.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
namespace Mautic\DynamicContentBundle\Form\Type;
use Mautic\LeadBundle\Form\Type\FilterTrait;
use Mautic\LeadBundle\Model\ListModel;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\Exception\AccessException;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Contracts\Translation\TranslatorInterface;
/**
* @extends AbstractType<mixed>
*/
class DwcEntryFiltersType extends AbstractType
{
use FilterTrait;
public function __construct(
private TranslatorInterface $translator,
private ListModel $listModel
) {
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add(
'glue',
ChoiceType::class,
[
'label' => false,
'choices' => [
'mautic.lead.list.form.glue.and' => 'and',
'mautic.lead.list.form.glue.or' => 'or',
],
'attr' => [
'class' => 'form-control not-chosen glue-select',
'onchange' => 'Mautic.updateFilterPositioning(this)',
],
]
);
$formModifier = function (FormEvent $event, $eventName): void {
$this->buildFiltersForm($eventName, $event, $this->translator);
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier): void {
$formModifier($event, FormEvents::PRE_SET_DATA);
}
);
$builder->addEventListener(
FormEvents::PRE_SUBMIT,
function (FormEvent $event) use ($formModifier): void {
$formModifier($event, FormEvents::PRE_SUBMIT);
}
);
$builder->add('field', HiddenType::class);
$builder->add('object', HiddenType::class);
$builder->add('type', HiddenType::class);
}
/**
* @throws AccessException
*/
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setRequired(
[
'countries',
'regions',
'timezones',
'locales',
'fields',
'deviceTypes',
'deviceBrands',
'deviceOs',
'tags',
'lists',
]
);
$resolver->setDefaults(
[
'label' => false,
'error_bubbling' => false,
// @see \Mautic\LeadBundle\Controller\AjaxController::loadSegmentFilterFormAction()
'lists' => $this->listModel->getChoiceFields()['lead']['leadlist']['properties']['list'],
]
);
}
public function buildView(FormView $view, FormInterface $form, array $options): void
{
$view->vars['fields'] = $options['fields'];
}
}