1313use ipl \Html \Contract \FormSubmitElement ;
1414use ipl \Html \Form ;
1515use ipl \Html \FormElement \Collection ;
16+ use ipl \Html \FormElement \Fieldset ;
1617use ipl \Web \Compat \CompatForm ;
1718use ipl \Web \FormDecorator \IcingaFormDecorator ;
1819use ipl \Web \Widget \Icon ;
@@ -84,19 +85,23 @@ protected function assemble()
8485
8586 $ collection = new Collection ('reportlet ' );
8687 $ collection ->setLabel ('Reportlets ' );
87- $ collection ->setAddTrigger ('select ' , 'reportlet ' , [
88- 'required ' => false ,
89- 'label ' => 'Reportlet ' ,
90- 'options ' => [null => 'Please choose ' ] + $ this ->listReports (),
91- 'class ' => 'autosubmit '
92- ]);
93- $ collection ->setRemoveTrigger ('submitButton ' , 'remove_reportlet ' , [
94- 'label ' => new Icon ('trash ' ),
95- 'class ' => 'btn-remove-reportlet ' ,
96- 'formnovalidate ' => true ,
97- 'title ' => 'Remove Reportlet '
98- ]);
99- $ collection ->on (Collection::ON_LOAD , function ($ group , $ addElement , $ removeElement ) {
88+
89+
90+ $ collection
91+ ->setAddElement ('select ' , 'reportlet ' , [
92+ 'required ' => false ,
93+ 'label ' => 'Reportlet ' ,
94+ 'options ' => [null => 'Please choose ' ] + $ this ->listReports (),
95+ 'class ' => 'autosubmit '
96+ ])
97+ ->setRemoveElement ('submitButton ' , 'remove_reportlet ' , [
98+ 'label ' => new Icon ('trash ' ),
99+ 'class ' => 'btn-remove-reportlet ' ,
100+ 'formnovalidate ' => true ,
101+ 'title ' => 'Remove Reportlet '
102+ ]);
103+
104+ $ collection ->onAssembleGroup (function (/** @var Fieldset $group */ $ group , $ addElement , $ removeElement ) {
100105 $ group ->setDefaultElementDecorator (new IcingaFormDecorator ());
101106
102107 $ this ->decorate ($ addElement );
@@ -105,29 +110,15 @@ protected function assemble()
105110 ->registerElement ($ addElement )
106111 ->addHtml ($ addElement );
107112
113+ $ group ->registerElement ($ removeElement );
108114 $ addElement ->getWrapper ()->ensureAssembled ()->add ($ removeElement );
109115
110- $ innerCollection = new Collection ('inner ' );
111- $ innerCollection ->setLabel ('Inner Collection ' );
112- $ innerCollection ->setAddTrigger ('select ' , 'reportlet ' , [
113- 'required ' => false ,
114- 'label ' => 'Reportlet ' ,
115- 'options ' => [null => 'Please choose ' ],
116- 'class ' => 'autosubmit '
117- ]);
118- $ innerCollection ->on (Collection::ON_LOAD , function ($ group , $ addElement ) {
119- $ group ->setDefaultElementDecorator (new IcingaFormDecorator ());
120- $ group ->addElement ($ addElement );
121- });
122-
123- $ group ->registerElement ($ innerCollection );
124- $ group ->addHtml ($ innerCollection );
125-
126- if (isset ($ items ['reportlet ' ]) && ! empty ($ items ['reportlet ' ])) {
116+ $ reportletClass = $ group ->getPopulatedValue ('reportlet ' );
117+ if (! empty ($ reportletClass )) {
127118 $ config = new Form ();
128119
129120 /** @var ReportHook $reportlet */
130- $ reportlet = new $ items [ ' reportlet ' ] ;
121+ $ reportlet = new $ reportletClass () ;
131122 $ reportlet ->initConfigForm ($ config );
132123
133124 foreach ($ config ->getElements () as $ element ) {
0 commit comments