protected static function inputAddOn($addOns, $htmlOptions, $position = 'prepend')
{
// todo: refactor this method
$normal = array();
$buttons = array();
$addOnOptions = TbArray::popValue('addOnOptions', $htmlOptions, array());
$normalAddOnOptions = $addOnOptions;
$buttonAddOnOptions = $addOnOptions;
self::addCssClass('input-group-addon', $normalAddOnOptions);
self::addCssClass('input-group-btn', $buttonAddOnOptions);
if (!is_array($addOns)) {
$addOns = array($addOns);
}
foreach ($addOns as $addOn) {
if (strpos($addOn, 'btn') === false) {
$normal[] = $addOn;
} else {
// TbHtml::butonDropdown() requires special parsing
if (preg_match('/^<div.*class="(.*)".*>(.*)<\\/div>$/U', $addOn, $matches) > 0 && isset($matches[1]) && strpos($matches[1], 'btn-group') !== false) {
$buttons[] = $matches[2];
} else {
$buttons[] = $addOn;
}
}
}
$output = '';
if ($position == 'prepend') {
if (!empty($buttons)) {
$output .= self::tag('span', $buttonAddOnOptions, implode(' ', $buttons));
}
if (!empty($normal)) {
$output .= self::tag('span', $normalAddOnOptions, implode(' ', $normal));
}
} else {
// append
if (!empty($normal)) {
$output .= self::tag('span', $normalAddOnOptions, implode(' ', $normal));
}
if (!empty($buttons)) {
$output .= self::tag('span', $buttonAddOnOptions, implode(' ', $buttons));
}
}
return $output;
}