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