setHook("tabber", "Tabber\\TabberHooks::renderTabber"); return true; } /** * Renders the necessary HTML for a tag. * * @param string $input The input URL between the beginning and ending tags. * @param array $args Array of attribute arguments on that beginning tag. * @param object $parser Mediawiki Parser Object * @param object $frame Mediawiki PPFrame Object * * @return string HTML */ public static function renderTabber($input, array $args, Parser $parser, PPFrame $frame) { $parser->getOutput()->addModules('ext.Tabber'); $key = md5($input); $arr = explode("|-|", $input); $htmlTabs = ''; foreach ($arr as $tab) { $htmlTabs .= self::buildTab($tab, $parser, $frame); } $HTML = '
' . $htmlTabs . "
"; return $HTML; } /** * Build individual tab. * * @param string $tab Tab information * @param object $parser Mediawiki Parser Object * @param object $frame Mediawiki PPFrame Object * * @return string HTML */ private static function buildTab($tab, Parser $parser, PPFrame $frame) { $tab = trim($tab); if (empty($tab)) { return $tab; } // Use array_pad to make sure at least 2 array values are always returned list($tabName, $tabBody) = array_pad(explode('=', $tab, 2), 2, ''); $tabBody = $parser->recursiveTagParse($tabBody, $frame); $tab = '

' . $tabBody . '

'; return $tab; } }