function render($mode, Doku_Renderer $renderer, $data) { global $ID; preg_match('/^\\[(' . $this->nested_brackets_re . ')\\][ ]?(?:\\n[ ]*)?\\[(.*?)\\]$/', $data[1], $matches); $title = $matches[1]; if ($matches[2] == '') { $rid = $matches[1]; } else { $rid = $matches[2]; } $rid = preg_replace("/ /", ".", $rid); $target = p_get_metadata($ID, 'markdowku_references_' . $rid, METADATA_RENDER_USING_CACHE); if ($target == '') { $renderer->cdata($data[1]); } else { if (preg_match('/^mailto:/', $target) or preg_match('<' . PREG_PATTERN_VALID_EMAIL . '>', $target)) { $target = preg_replace('/^mailto:/', '', $target); $renderer->emaillink($target, $title); } else { $renderer->externallink($target, $title); } } return true; }
/** * list all installed plugins * * uses some of the original renderer methods */ function _plugins_xhtml($type, Doku_Renderer &$renderer) { global $lang; $renderer->doc .= '<ul>'; $plugins = plugin_list($type); $plginfo = array(); // remove subparts foreach ($plugins as $p) { if (!($po = plugin_load($type, $p))) { continue; } list($name, $part) = explode('_', $p, 2); $plginfo[$name] = $po->getInfo(); } // list them foreach ($plginfo as $info) { $renderer->doc .= '<li><div class="li">'; $renderer->externallink($info['url'], $info['name']); $renderer->doc .= ' '; $renderer->doc .= '<em>' . $info['date'] . '</em>'; $renderer->doc .= ' '; $renderer->doc .= $lang['by']; $renderer->doc .= ' '; $renderer->emaillink($info['email'], $info['author']); $renderer->doc .= '<br />'; $renderer->doc .= strtr(hsc($info['desc']), array("\n" => "<br />")); $renderer->doc .= '</div></li>'; unset($po); } $renderer->doc .= '</ul>'; }
/** * Return formated data, depending on column type * * @param array $column * @param string $value * @param Doku_Renderer $R * @return string */ function _formatDataNew($column, $value, Doku_Renderer $R) { global $conf; $vals = explode("\n", $value); $outs = array(); //multivalued line from db result for pageid and wiki has only in first value the ID $storedID = ''; foreach ($vals as $val) { $val = trim($val); if ($val == '') { continue; } $type = $column['type']; if (is_array($type)) { $type = $type['type']; } switch ($type) { case 'page': $val = $this->_addPrePostFixes($column['type'], $val); $val = $this->ensureAbsoluteId($val); $outs[] = $R->internallink($val, null, null, true); break; case 'title': list($id, $title) = explode('|', $val, 2); $id = $this->_addPrePostFixes($column['type'], $id); $id = $this->ensureAbsoluteId($id); $outs[] = $R->internallink($id, $title, null, true); break; case 'pageid': list($id, $title) = explode('|', $val, 2); //use ID from first value of the multivalued line if ($title == null) { $title = $id; if (!empty($storedID)) { $id = $storedID; } } else { $storedID = $id; } $id = $this->_addPrePostFixes($column['type'], $id); $outs[] = $R->internallink($id, $title, null, true); break; case 'nspage': // no prefix/postfix here $val = ':' . $column['key'] . ":{$val}"; $outs[] = $R->internallink($val, null, null, true); break; case 'mail': list($id, $title) = explode(' ', $val, 2); $id = $this->_addPrePostFixes($column['type'], $id); if (!$title) { $title = $id; } else { $title = hsc($title); } $outs[] = $R->emaillink($id, $title, true); break; case 'url': $val = $this->_addPrePostFixes($column['type'], $val); $outs[] = $R->externallink($val, null, true); break; case 'tag': // per default use keyname as target page, but prefix on aliases if (!is_array($column['type'])) { $target = $column['key'] . ':'; } else { $target = $this->_addPrePostFixes($column['type'], ''); } $params = buildURLparams($this->_getTagUrlparam($column, $val)); $url = str_replace('/', ':', cleanID($target)) . '?' . $params; // FIXME: The title is lost when moving to $R->internallink, // but this syntax is required to support different renderers. // $title = sprintf($this->getLang('tagfilter'), hsc($val)); $outs[] = $R->internallink($url, hsc($val), true); break; case 'timestamp': $outs[] = dformat($val); break; case 'wiki': global $ID; $oldid = $ID; list($ID, $data) = explode('|', $val, 2); //use ID from first value of the multivalued line if ($data == null) { $data = $ID; $ID = $storedID; } else { $storedID = $ID; } $data = $this->_addPrePostFixes($column['type'], $data); // Trim document_{start,end}, p_{open,close} from instructions $allinstructions = p_get_instructions($data); $wraps = 1; if (isset($allinstructions[1]) && $allinstructions[1][0] == 'p_open') { $wraps++; } $instructions = array_slice($allinstructions, $wraps, -$wraps); $outs[] = p_render($R->getFormat(), $instructions, $byref_ignore); $ID = $oldid; break; default: $val = $this->_addPrePostFixes($column['type'], $val); //type '_img' or '_img<width>' if (substr($type, 0, 3) == 'img') { $width = (int) substr($type, 3); if (!$width) { $width = $this->getConf('image_width'); } list($mediaid, $title) = explode('|', $val, 2); if ($title === null) { $title = $column['key'] . ': ' . basename(str_replace(':', '/', $mediaid)); } else { $title = trim($title); } if (media_isexternal($val)) { $html = $R->externalmedia($mediaid, $title, $align = null, $width, $height = null, $cache = null, $linking = 'direct', true); } else { $html = $R->internalmedia($mediaid, $title, $align = null, $width, $height = null, $cache = null, $linking = 'direct', true); } if (strpos($html, 'mediafile') === false) { $html = str_replace('href', 'rel="lightbox" href', $html); } $outs[] = $html; } else { $outs[] = hsc($val); } } } return join(', ', $outs); }
/** * @param string $value * @param \Doku_Renderer $R * @param string $mode * @return bool */ public function renderValue($value, \Doku_Renderer $R, $mode) { $url = $this->buildURL($value); $R->externallink($url); return true; }