<?php if (!defined('PmWiki')) exit(); /* * HgUrls.php for PmWiki 2 * * HgUrls is a subset of the Hg hierarchical groups recipe, and should NOT be * used in conjunction with Hg, since this functionality is already included! * It translates pseudo-hierarchical URLs between hyphens "-" and slashes "/". * So, Group-SubGroup-SubSubGroup.Name resolves successfully as * Group/SubGroup/SubSubGroup/Name and vice-versa. Idea for this recipe * originates from an email list discussion between ... * Dan Vis, http://www.pmwiki.org/wiki/Cookbook/Hg * Kathryn Andersen, http://www.pmwiki.org/wiki/Cookbook/Cluster * Patrick R. Michaud, creator of the PmWiki universe * * Based on Hg by Dan Vis <editor àt fast döt st>, Copyright 2007. * Modified by: C.R. Andrews, Jr. */ $RecipeInfo['Hg_Urls']['Version'] = '2008-05-04'; ####### Set up various variables SDV($hgseparator, '-'); SDV($hglinkprefix, ''); SDV($EnableHgCleanUrls, false); $pagename = hgResolvePageName($pagename); $FmtPV['$PageUrl'] = 'PUE("$ScriptUrl?n=" . hgUrl($group, $name))'; $LinkPageCreateFmt = hgCreateFmt("{\$PageUrl}"); $PagePathFmt = array('{$Group}.$1', '$1.{$DefaultName}', '$1.$1'); ####### Returns fixed page name 1) with prefixing, 2) if not cleanurls, and 3) if cleanurls function hgResolvePageName($pagename) { global $hglinkprefix, $hgprefixcode, $hgseparator, $hgname, $hggroup; if (substr($pagename, 0, strlen($hgprefixcode)) == $hgprefixcode) $pagename = substr($pagename, strlen($hgprefixcode)); $r = '/'; if (! strpos($pagename, $r)) { $pagename = ResolvePageName($pagename); $hggroup = FmtPageName('$Group', $pagename); $hgname = FmtPageName('$Name', $pagename); return $pagename; } $hgpagename = explode($r, $pagename); if ($hgpagename[count($hgpagename) - 1 ] == '') array_pop($hgpagename); $hgname = $hgpagename[count($hgpagename) - 1]; array_pop($hgpagename); $hggroup = implode($hgseparator, $hgpagename); $pagename = ResolvePageName("$hggroup.$hgname"); return "$pagename"; } ####### Fixes URL's to allow for prefixing and cleanurls, otherwise no effect function hgURL($group, $name) { global $ScriptUrl, $hglinkprefix, $hgprefixcode, $EnableHgCleanUrls; $r = '/'; if (substr($group, 0, strlen($hgprefixcode)) == $hgprefixcode) { $group = substr($group, strlen($hgprefixcode)); if (substr($name, 0, strlen($hgprefixcode)) == $hgprefixcode) $name = substr($name, strlen($hgprefixcode)); } elseif (($hglinkprefix != '') && (substr($group, 0, strlen($hglinkprefix)) != $hglinkprefix)) $group = $hglinkprefix . "-" . $group; if ($EnableHgCleanUrls == true) $group = str_replace("-", $r, $group); return "$group$r$name"; } ####### Strips off prefix if linkprefixing is used from link display function hgCreateFmt($x) { global $hglinkprefix; $x = substr($x, strlen($hglinkprefix)); return "<a class='wikilink' rel='nofollow' href=$x>\$LinkText</a>"; }