/** * Handles the actual output creation. * * @param string $mode output format being rendered * @param Doku_Renderer $renderer the current renderer object * @param array $data data created by handler() * @return boolean rendered correctly? (however, returned value is not used at the moment) */ public function render($mode, Doku_Renderer $renderer, $data) { if ($mode == 'xhtml') { $renderer->internallink($data['link'], $data['title']); return true; } return false; }
/** * @param int|string $value * @param \Doku_Renderer $R * @param string $mode * @return bool */ public function renderValue($value, \Doku_Renderer $R, $mode) { $context = $this->getContext(); $filter = SearchConfigParameters::$PARAM_FILTER . '[' . $context->getTable() . '.' . $context->getLabel() . '*~]=' . $value; $page = trim($this->config['page']); if (!$page) { $page = cleanID($context->getLabel()); } $R->internallink($page . '?' . $filter, $value); return true; }
/** * Output the stored data * * @param string $value the value stored in the database - JSON when titles are used * @param \Doku_Renderer $R the renderer currently used to render the data * @param string $mode The mode the output is rendered in (eg. XHTML) * @return bool true if $mode could be satisfied */ public function renderValue($value, \Doku_Renderer $R, $mode) { if ($this->config['usetitles']) { list($id, $title) = json_decode($value); } else { $id = $value; $title = null; } if (!$id) { return true; } $R->internallink(":{$id}", $title); return true; }
function render($mode, Doku_Renderer &$renderer, $data) { list($page) = $data; if ($mode == 'xhtml') { $renderer->doc .= DOKU_LF . '<p class="include_readmore">' . DOKU_LF; } else { $renderer->p_open(); } $renderer->internallink($page, $this->getLang('readmore')); if ($mode == 'xhtml') { $renderer->doc .= DOKU_LF . '</p>' . DOKU_LF; } else { $renderer->p_close(); } return true; }
/** * Create output */ function render($format, Doku_Renderer $renderer, $data) { global $ID; if ($format != 'xhtml') { return false; } if (is_null($data)) { return false; } if (!$this->dthlp->ready()) { return false; } $sqlite = $this->dthlp->_getDB(); if (!$sqlite) { return false; } if (!$data['sql']) { return true; } // sql build $this->dthlp->_replacePlaceholdersInSQL($data); $res = $sqlite->query($data['sql']); if (!$sqlite->res2count($res)) { return true; } // no rows matched $rows = $sqlite->res2arr($res); $renderer->doc .= '<dl class="' . $data['classes'] . '">'; $renderer->doc .= '<dt>' . htmlspecialchars($data['title']) . '</dt>'; $renderer->doc .= '<dd>'; $renderer->listu_open(); foreach ($rows as $row) { $renderer->listitem_open(1); $renderer->internallink($row['page']); $renderer->listitem_close(); } $renderer->listu_close(); $renderer->doc .= '</dd>'; $renderer->doc .= '</dl>'; return true; }
/** * Create output * * @param string $format Renderer mode (supported modes: xhtml) * @param Doku_Renderer $renderer The renderer * @param array $data The data from the handler() function * @return bool If rendering was successful. */ function render($format, Doku_Renderer $renderer, $data) { if ($format == 'metadata') { return false; } if ($data[0] != DOKU_LEXER_SPECIAL) { return false; } $hlp = plugin_load('helper', 'rating'); $list = $hlp->best($data[1]['lang'], $data[1]['startdate'], 20); if ($data[1]['tag'] == 'ol') { $renderer->listo_open(); } else { $renderer->listu_open(); } $num_items = 0; foreach ($list as $item) { if (auth_aclcheck($item['page'], '', null) < AUTH_READ) { continue; } if (!page_exists($item['page'])) { continue; } $num_items = $num_items + 1; $renderer->listitem_open(1); if (strpos($item['page'], ':') === false) { $item['page'] = ':' . $item['page']; } $renderer->internallink($item['page']); if ($data[1]['score'] === 'true') { $renderer->cdata(' (' . $item['val'] . ')'); } $renderer->listitem_close(); if ($num_items >= 10) { break; } } if ($data[1]['tag'] == 'ol') { $renderer->listo_close(); } else { $renderer->listu_close(); } return true; }
/** * 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); }