/**
  * Specify modes allowed in the imgcaption/tabcaption
  * Using getAllowedTypes() includes too much modes.
  *
  * @param string $mode Parser mode
  * @return bool true if $mode is accepted
  */
 public function accepts($mode)
 {
     $allowedsinglemodes = array('table', 'plugin_diagram_main');
     if (in_array($mode, $allowedsinglemodes)) {
         return true;
     }
     return parent::accepts($mode);
 }
 /**
  * Render xhtml output or metadata
  *
  * @param string         $mode      Renderer mode (supported modes: xhtml and metadata)
  * @param Doku_Renderer  $renderer  The renderer
  * @param array          $data      The data from the handler function
  * @return bool If rendering was successful.
  */
 function render($mode, Doku_Renderer &$renderer, $data)
 {
     global $ID, $ACT;
     if ($data === false) {
         return false;
     }
     switch ($mode) {
         case 'xhtml':
             /** @var Doku_Renderer_xhtml $renderer */
             if ($data['page'] == '') {
                 $data['page'] = $ID;
             }
             resolve_pageid(getNS($ID), $data['page'], $exists);
             //determine referencenumber
             if ($ACT == 'preview' && $data['page'] == $ID) {
                 $caprefs = syntax_plugin_imagereference_imgcaption::getCaptionreferences($ID, $data['type']);
             } else {
                 $caprefs = p_get_metadata($data['page'], 'captionreferences ' . $data['type']);
             }
             $refNumber = array_search($data['caprefname'], $caprefs);
             if (!$refNumber) {
                 $refNumber = "##";
             }
             $renderer->doc .= '<a href="' . wl($data['page']) . '#' . $data['type'] . '_' . cleanID($data['caprefname']) . '">' . $this->getLang($data['type'] . 'full') . '&nbsp;' . $refNumber . '</a>';
             return true;
         case 'latex':
             $renderer->doc .= $this->getLang($data['type'] . 'full') . " \\ref{" . $data['caprefname'] . "}";
             return true;
     }
     return false;
 }