Пример #1
0
 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;
 }