/**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * @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;
 }
Ejemplo n.º 3
0
 /**
  * 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;
 }
Ejemplo n.º 4
0
 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;
 }
Ejemplo n.º 5
0
 /**
  * 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;
 }
Ejemplo n.º 6
0
 /**
  * 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;
 }
Ejemplo n.º 7
0
 /**
  * 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);
 }