/**
* @internal
* @param \Nette\Forms\ControlGroup $group
* @return object
*/
public function processGroup(\Nette\Forms\ControlGroup $group)
{
if (!$group->getOption('visual') || !$group->getControls()) {
return NULL;
}
$groupLabel = $group->getOption('label');
$groupDescription = $group->getOption('description');
// If we have translator, translate!
if ($translator = $this->form->getTranslator()) {
if (!$groupLabel instanceof Html) {
$groupLabel = $translator->translate($groupLabel);
}
if (!$groupDescription instanceof Html) {
$groupDescription = $translator->translate($groupDescription);
}
}
$controls = array_filter($group->getControls(), function (Controls\BaseControl $control) {
return !$control->getOption('rendered') && !$control instanceof Controls\HiddenField;
});
if (!$controls) {
return NULL;
// do not render empty groups
}
$groupAttrs = $group->getOption('container', Html::el())->setName(NULL);
/** @var Html $groupAttrs */
$groupAttrs->attrs += array_diff_key($group->getOptions(), array_fill_keys(array('container', 'label', 'description', 'visual', 'template'), NULL));
// fake group
return (object) (array('controls' => $controls, 'label' => $groupLabel, 'description' => $groupDescription, 'attrs' => $groupAttrs) + $group->getOptions());
}