1717use Shopsys \FrameworkBundle \Form \Locale \LocalizedType ;
1818use Shopsys \FrameworkBundle \Form \SortableValuesType ;
1919use Shopsys \FrameworkBundle \Form \UrlListType ;
20+ use Shopsys \FrameworkBundle \Model \Category \AutomatedFilter \CategoryAutomatedFilterFacade ;
2021use Shopsys \FrameworkBundle \Model \Category \Category ;
2122use Shopsys \FrameworkBundle \Model \Category \CategoryData ;
2223use Shopsys \FrameworkBundle \Model \Category \CategoryFacade ;
@@ -44,6 +45,7 @@ class CategoryFormType extends AbstractType
4445 * @param \Shopsys\FrameworkBundle\Component\Plugin\PluginCrudExtensionFacade $pluginCrudExtensionFacade
4546 * @param \Shopsys\FrameworkBundle\Model\Localization\Localization $localization
4647 * @param \Shopsys\FrameworkBundle\Model\Product\Parameter\ParameterRepository $parameterRepository
48+ * @param \Shopsys\FrameworkBundle\Model\Category\AutomatedFilter\CategoryAutomatedFilterFacade $categoryAutomatedFilterFacade
4749 */
4850 public function __construct (
4951 private readonly CategoryFacade $ categoryFacade ,
@@ -52,6 +54,7 @@ public function __construct(
5254 private readonly PluginCrudExtensionFacade $ pluginCrudExtensionFacade ,
5355 private readonly Localization $ localization ,
5456 private readonly ParameterRepository $ parameterRepository ,
57+ private readonly CategoryAutomatedFilterFacade $ categoryAutomatedFilterFacade ,
5558 ) {
5659 }
5760
@@ -110,6 +113,8 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
110113 ]);
111114 }
112115
116+ $ categoryAutomatedFiltersNotesIndexedByValue = $ this ->categoryAutomatedFilterFacade ->getNotesIndexedByValue ();
117+
113118 $ builderSettingsGroup
114119 ->add ('name ' , LocalizedType::class, [
115120 'main_constraints ' => [
@@ -139,6 +144,28 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
139144 ->add ('enabled ' , DomainsType::class, [
140145 'required ' => false ,
141146 'label ' => t ('Display on ' ),
147+ ])
148+ ->add ('automatedFilters ' , ChoiceType::class, [
149+ 'label ' => 'Automated filters ' ,
150+ 'required ' => false ,
151+ 'multiple ' => true ,
152+ 'expanded ' => true ,
153+ 'choice_translation_domain ' => false ,
154+ 'choices ' => $ this ->categoryAutomatedFilterFacade ->getAllValuesIndexedByLabel (),
155+ 'choice_attr ' => function ($ choice , $ key , $ value ) use ($ categoryAutomatedFiltersNotesIndexedByValue ) {
156+ $ iconTitle = $ categoryAutomatedFiltersNotesIndexedByValue [$ value ] ?? null ;
157+
158+ if ($ iconTitle === null ) {
159+ return [];
160+ }
161+
162+ return [
163+ 'icon ' => true ,
164+ 'iconTitle ' => $ iconTitle ,
165+ 'iconPlacement ' => 'right ' ,
166+ 'iconClass ' => 'margin-left-10 ' ,
167+ ];
168+ },
142169 ]);
143170
144171 $ builderSeoGroup = $ builder ->create ('seo ' , GroupType::class, [
0 commit comments