public function formatGroupInformation($blocks, $level = 2) { global $wgLang; if (is_array($blocks)) { foreach ($blocks as $i => $block) { if (!is_array($block) && MessageGroups::getPriority($block) === 'discouraged') { unset($blocks[$i]); } } $block = array_shift($blocks); } else { $block = $blocks; if (MessageGroups::getPriority($block) === 'discouraged') { return ''; } } $id = $block->getId(); $title = $this->getTitle(); $code = $this->options['language']; $queryParams = array('group' => $id, 'language' => $code); $linker = class_exists('DummyLinker') ? new DummyLinker() : new Linker(); $label = $linker->link($title, htmlspecialchars($block->getLabel()), array(), $queryParams); $desc = $this->getGroupDescription($block); $hasSubblocks = is_array($blocks) && count($blocks); $subid = Sanitizer::escapeId("mw-subgroup-{$id}"); if ($hasSubblocks) { $msg = wfMessage('translate-showsub', $wgLang->formatNum(count($blocks)))->text(); $target = TranslationHelpers::jQueryPathId($subid); $desc .= Html::element('a', array('onclick' => "jQuery({$target}).toggle()", 'class' => 'mw-sp-showmore'), $msg); } $out = "\n<tr><td>{$label}</td>\n<td>{$desc}</td></tr>\n"; if ($hasSubblocks) { $out .= "<tr><td></td><td>\n"; $tableParams = array('id' => $subid, 'style' => 'display:none;', 'class' => "mw-sp-translate-subgroup depth-{$level}"); $out .= Html::openElement('table', $tableParams); foreach ($blocks as $subBlock) { $out .= $this->formatGroupInformation($subBlock, $level + 1); } $out .= '</table></td></tr>'; } return $out; }