/** * Build Items for navbar, subnav, sidebar * * @param $items String * @param $options Array * @param $context String */ public function buildItems($items, $options, $context) { global $wgTweekiSkinSpecialElements; $buttons = array(); $customItems = array(); $navbarItems = explode(',', $items); foreach ($navbarItems as $navbarItem) { $navbarItem = trim($navbarItem); $navbarItem = $this->renderNavigation($navbarItem); if (is_array($navbarItem)) { $this->renderCustomNavigation($buttons, $customItems); if (count($navbarItem) !== 0) { $buttons = array_merge($buttons, $navbarItem); } } else { $customItems[] = $navbarItem; } } $this->renderCustomNavigation($buttons, $customItems); foreach ($buttons as $button) { /* standard button rendering */ if (!isset($button['special'])) { echo TweekiHooks::renderButtons(array($button), $options); } else { call_user_func_array($wgTweekiSkinSpecialElements[$button['special']], array($this, $context, $options)); } } }
/** * Build buttons, groups of buttons and dropdowns * * @param $input string * @param $args array tag arguments * @param $parser Parser current parser * @param $frame PPFrame current frame * @return string */ static function buildButtons($input, array $args, Parser $parser, PPFrame $frame) { $sizes = array('large' => 'btn-lg', 'lg' => 'btn-lg', 'small' => 'btn-sm', 'sm' => 'btn-sm', 'mini' => 'btn-xs', 'xs' => 'btn-xs'); $renderedButtons = ''; $buttongroups = preg_split('/\\n{2,}/', $input); // set standard classes for all buttons in the group if (!isset($args['class'])) { $args['class'][] = 'btn btn-default'; } else { $args['class'] = explode(' ', $args['class']); } if (isset($args['size'])) { if (isset($sizes[$args['size']])) { $args['class'][] = $sizes[$args['size']]; } } foreach ($buttongroups as $buttongroup) { $buttons = array(); $buttons = TweekiHooks::parseButtons($buttongroup, $parser, $frame); $renderedButtons .= TweekiHooks::renderButtons($buttons, $args); } // more than one buttongroup build a toolbar if (count($buttongroups) > 1) { $renderedButtons = '<div class="btn-toolbar">' . $renderedButtons . '</div>'; } return $renderedButtons; }