public static function buttonGroup(array $buttons, $htmlOptions = array())
{
if (!empty($buttons)) {
self::addCssClass('btn-group', $htmlOptions);
if (TbArray::popValue('vertical', $htmlOptions, false)) {
self::addCssClass('btn-group-vertical', $htmlOptions);
}
$toggle = TbArray::popValue('toggle', $htmlOptions);
$name = TbArray::popValue('name', $htmlOptions);
if (!empty($name) && substr($name, -2) !== '[]') {
$name .= '[]';
}
if (in_array($toggle, array(self::BUTTON_TOGGLE_CHECKBOX, self::BUTTON_TOGGLE_RADIO))) {
$htmlOptions['data-toggle'] = 'buttons';
if (empty($name)) {
if ($toggle === self::BUTTON_TOGGLE_CHECKBOX) {
$name = 'checkbox[]';
} elseif ($toggle === self::BUTTON_TOGGLE_RADIO) {
$name = 'radio[]';
}
}
} else {
$htmlOptions['data-toggle'] = $toggle;
}
$parentOptions = array('color' => TbArray::popValue('color', $htmlOptions), 'size' => TbArray::popValue('size', $htmlOptions), 'disabled' => TbArray::popValue('disabled', $htmlOptions));
$output = self::openTag('div', $htmlOptions);
foreach ($buttons as $buttonOptions) {
if (isset($buttonOptions['visible']) && $buttonOptions['visible'] === false) {
continue;
}
// todo: consider removing the support for htmlOptions.
$options = TbArray::popValue('htmlOptions', $buttonOptions, array());
if (!empty($options)) {
$buttonOptions = TbArray::merge($options, $buttonOptions);
}
$buttonLabel = TbArray::popValue('label', $buttonOptions, '');
$buttonOptions = TbArray::copyValues(array('color', 'size', 'disabled'), $parentOptions, $buttonOptions);
TbArray::defaultValue('color', 'default', $buttonOptions);
$items = TbArray::popValue('items', $buttonOptions, array());
if (!empty($items)) {
$output .= self::buttonDropdown($buttonLabel, $items, $buttonOptions);
} else {
if (in_array($toggle, array(self::BUTTON_TOGGLE_CHECKBOX, self::BUTTON_TOGGLE_RADIO))) {
// Put the "button" label back into its options and add a few label options as well
$buttonOptions['label'] = $buttonLabel;
self::addCssClass(array('btn', 'btn-' . TbArray::getValue('color', $buttonOptions)), $buttonOptions['labelOptions']);
$checked = TbArray::popValue('checked', $buttonOptions, false);
if ($checked) {
self::addCssClass('active', $buttonOptions['labelOptions']);
}
if ($toggle === self::BUTTON_TOGGLE_CHECKBOX) {
// BS3 toggle uses checkbox...
$output .= self::checkBox($name, $checked, $buttonOptions);
} elseif ($toggle === self::BUTTON_TOGGLE_RADIO) {
// ...or BS3 toggle uses radio
$output .= self::radioButton($name, $checked, $buttonOptions);
}
} else {
$output .= self::linkButton($buttonLabel, $buttonOptions);
}
}
}
$output .= '</div>';
return $output;
}
return '';
}