> to be used to build "trails" through wiki documents. This feature is automatically included from stdconfig.php unless disabled by $EnableWikiTrails = 0; . To explicitly include this feature, execute include_once("scripts/trails.php"); from config.php somewhere. Once enabled, the <<|TrailPage|>> markup is replaced with << PrevPage | TrailPage | NextPage >> on output. TrailPage should contain either a bullet or number list defining the sequence of pages in the "trail". The ^|TrailPage|^ markup uses the depth of the bullets to display the ancestry of the TrailPage to the current one. The <|TrailPage|> markup is like <<|TrailPage|>> except that "< PrevPage |" and "| NextPage >" are omitted if at the beginning or end of the trail respectively. Thanks to John Rankin for contributing these markups and the original suggestion for WikiTrails. */ $TrailLinkPattern = "(?:($GroupNamePattern)([\\/.]))?(($WikiWordPattern)|($FreeLinkPattern))"; $DoubleBrackets["/<<\\|($TrailLinkPattern)\\|>>/e"] = 'MakeTrailStop("$1");'; $DoubleBrackets["/<\\|($TrailLinkPattern)\\|>/e"] = 'MakeTrailStopB("$1");'; $DoubleBrackets["/\\^\\|($TrailLinkPattern)\\|\\^/e"] = 'MakeTrailPath("$1");'; SDV($TrailPathSep,' | '); function MakeTrailStop($link) { global $pagename; $t = ReadTrail($link); $prev = ''; $next = ''; for($i=0;$i0) $prev = $t[$i-1]['link']; if ($i+1<< $prev | $link | $next >>"; } function MakeTrailStopB($link) { global $pagename; $t = ReadTrail($link); $prev = ''; $next = ''; for($i=0;$i0) $prev = '< '.$t[$i-1]['link'].' | '; if ($i+1$prev$link$next"; } function MakeTrailPath($link) { global $pagename,$TrailPathSep; $t = ReadTrail($link); for($i=0;$i0) { $crumbs = $TrailPathSep.$t[$i]['link'].$crumbs; $i = $t[$i]['parent']; } return "$link$crumbs"; } } return $link; } function ReadTrail($link) { global $pagename,$TrailLinkPattern; $trailname = FmtWikiLink('',$link,NULL,'PageName'); $trailpage = ReadPage($trailname); if ($trailpage) { $trailgroup = FmtPageName('$Group',$trailname); $n = 0; foreach(explode("\n",$trailpage['text']) as $x) { if (preg_match("/([#*]+)\\s*(\\[\\[)?($TrailLinkPattern)/",$x,$match)) { $t[$n]['depth'] = $depth = strlen($match[1]); $link = $match[3]; if (!preg_match('![./]!',$link)) $link="$trailgroup/$link"; $t[$n]['link'] = $link; $t[$n]['name'] = FmtWikiLink('',$link,NULL,'PageName',$trailname); if ($match[2]>'' && preg_match("/^[#*]+\\s*\\[\\[($TrailLinkPattern)((?:\\s.*?)?\\]\\])/",$x,$dbm)) $t[$n]['link'] = "[[$link".array_pop($dbm); for($i=$depth;$i<10;$i++) $d[$i] = $n; if ($depth>1) $t[$n]['parent']=@$d[$depth-1]; $n++; } } } return $t; } ?>