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 ;
@@ -94,19 +95,23 @@ protected function assemble()
9495
9596 $ collection = new Collection ('reportlet ' );
9697 $ collection ->setLabel ('Reportlets ' );
97- $ collection ->setAddTrigger ('select ' , 'reportlet ' , [
98- 'required ' => false ,
99- 'label ' => 'Reportlet ' ,
100- 'options ' => [null => 'Please choose ' ] + $ this ->listReports (),
101- 'class ' => 'autosubmit '
102- ]);
103- $ collection ->setRemoveTrigger ('submitButton ' , 'remove_reportlet ' , [
104- 'label ' => new Icon ('trash ' ),
105- 'class ' => 'btn-remove-reportlet ' ,
106- 'formnovalidate ' => true ,
107- 'title ' => 'Remove Reportlet '
108- ]);
109- $ collection ->on (Collection::ON_LOAD , function ($ group , $ addElement , $ removeElement ) {
98+
99+
100+ $ collection
101+ ->setAddElement ('select ' , 'reportlet ' , [
102+ 'required ' => false ,
103+ 'label ' => 'Reportlet ' ,
104+ 'options ' => [null => 'Please choose ' ] + $ this ->listReports (),
105+ 'class ' => 'autosubmit '
106+ ])
107+ ->setRemoveElement ('submitButton ' , 'remove_reportlet ' , [
108+ 'label ' => new Icon ('trash ' ),
109+ 'class ' => 'btn-remove-reportlet ' ,
110+ 'formnovalidate ' => true ,
111+ 'title ' => 'Remove Reportlet '
112+ ]);
113+
114+ $ collection ->onAssembleGroup (function (/** @var Fieldset $group */ $ group , $ addElement , $ removeElement ) {
110115 $ group ->setDefaultElementDecorator (new IcingaFormDecorator ());
111116
112117 $ this ->decorate ($ addElement );
@@ -115,29 +120,15 @@ protected function assemble()
115120 ->registerElement ($ addElement )
116121 ->addHtml ($ addElement );
117122
123+ $ group ->registerElement ($ removeElement );
118124 $ addElement ->getWrapper ()->ensureAssembled ()->add ($ removeElement );
119125
120- $ innerCollection = new Collection ('inner ' );
121- $ innerCollection ->setLabel ('Inner Collection ' );
122- $ innerCollection ->setAddTrigger ('select ' , 'reportlet ' , [
123- 'required ' => false ,
124- 'label ' => 'Reportlet ' ,
125- 'options ' => [null => 'Please choose ' ],
126- 'class ' => 'autosubmit '
127- ]);
128- $ innerCollection ->on (Collection::ON_LOAD , function ($ group , $ addElement ) {
129- $ group ->setDefaultElementDecorator (new IcingaFormDecorator ());
130- $ group ->addElement ($ addElement );
131- });
132-
133- $ group ->registerElement ($ innerCollection );
134- $ group ->addHtml ($ innerCollection );
135-
136- if (isset ($ items ['reportlet ' ]) && ! empty ($ items ['reportlet ' ])) {
126+ $ reportletClass = $ group ->getPopulatedValue ('reportlet ' );
127+ if (! empty ($ reportletClass )) {
137128 $ config = new Form ();
138129
139130 /** @var ReportHook $reportlet */
140- $ reportlet = new $ items [ ' reportlet ' ] ;
131+ $ reportlet = new $ reportletClass () ;
141132 $ reportlet ->initConfigForm ($ config );
142133
143134 foreach ($ config ->getElements () as $ element ) {
0 commit comments