xref: /plugin/strata/types/ref.php (revision 5b1ccf784770423822a57eeb268566ad0e6200fa)
15153720fSfkaag71<?php
25153720fSfkaag71/**
35153720fSfkaag71 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
45153720fSfkaag71 * @author     Brend Wanders <b.wanders@utwente.nl>
55153720fSfkaag71 */
65153720fSfkaag71// must be run within Dokuwiki
75153720fSfkaag71if(!defined('DOKU_INC')) die('Meh.');
85153720fSfkaag71
95153720fSfkaag71/**
105153720fSfkaag71 * The reference link type.
115153720fSfkaag71 */
125153720fSfkaag71class plugin_strata_type_ref extends plugin_strata_type_page {
135153720fSfkaag71    function __construct() {
145153720fSfkaag71        $this->util =& plugin_load('helper', 'strata_util');
155153720fSfkaag71        parent::__construct();
165153720fSfkaag71    }
175153720fSfkaag71
18*5b1ccf78SFKaag    function render($mode, &$R, &$T, $value, $hint='') {
195153720fSfkaag71        $heading = null;
205153720fSfkaag71
215153720fSfkaag71        // only use heading if allowed by configuration
225153720fSfkaag71        if(useHeading('content')) {
235153720fSfkaag71            $titles = $T->fetchTriples($value, $this->util->getTitleKey());
245153720fSfkaag71            if($titles) {
255153720fSfkaag71                $heading = $titles[0]['object'];
265153720fSfkaag71            }
275153720fSfkaag71        }
285153720fSfkaag71
295153720fSfkaag71        // render internal link
305153720fSfkaag71        // (':' is prepended to make sure we use an absolute pagename,
315153720fSfkaag71        // internallink resolves page names, but the name is already resolved.)
32*5b1ccf78SFKaag        $R->internallink($hint.':'.$value, $heading);
335153720fSfkaag71    }
345153720fSfkaag71
355153720fSfkaag71    function getInfo() {
365153720fSfkaag71        return array(
375153720fSfkaag71            'desc'=>'References another piece of data or wiki page, and creates a link. The optional hint is used as namespace for the link. If the hint ends with a #, all values will be treated as fragments.',
385153720fSfkaag71            'hint'=>'namespace'
395153720fSfkaag71        );
405153720fSfkaag71    }
415153720fSfkaag71}
42