, Copyright 2007. ####### Set up various variables $RecipeInfo['Hg']['Version'] = '2007-04-26'; SDV($hgseparator, '-'); SDV($hgmaxlevels, 7); SDV($hglinkprefix, ''); SDV($hgprefixcode, 'Hg'); SDV($hgname, ''); SDV($hggroup, ''); SDV($hgbreadcrumbseparator, ' > '); SDV($EnableBreadCrumbName, true); 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'); $FmtPV['$g0'] = 'hgCountLevels($group)'; $FmtPV['$n0'] = 'hgCountLevels($name)'; for ($i=0; $i < $hgmaxlevels; $i++) { $hg = "g" . ($i + 1); $hn = "n" . ($i + 1); $FmtPV['$' . $hg] = 'hgSplitName($group,' . $i . ')'; $FmtPV['$' . $hn] = 'hgSplitName($name,' . $i . ')'; } $FmtPV['$grouptitle'] = 'hgGroupTitles($group)'; ####### The following are set by default to function hierarchically, others can be set in config.php. $FmtPV['$SideBar'] = 'HierarchicalPagenames($group, "SideBar")'; $FmtPV['$SideMenu'] = 'HierarchicalPagenames($group, "SideMenu")'; ####### Set up hierarchical configs, headers, footers, attributes & styles $EnablePGCust = 0; $hgc = 0; $hgh = 0; $hgf = 0; $hgs = 0; $hgm = 0; $hga = 0; if (file_exists("$LocalDir/$hggroup.$hgname.php")) { include_once("$LocalDir/$hggroup.$hgname.php"); $hgc = 1; } $hggroups = explode($hgseparator, $hggroup); while (count($hggroups) != 0) { $hg = implode ($hgseparator, $hggroups); if ($hgc == 0 && file_exists("$LocalDir/$hg.php")) { include_once("$LocalDir/$hg.php"); $hgc = 1; } if ($hgh == 0 && PageExists("$hg.GroupHeader")) { $GroupHeaderFmt = "(:include $hg.GroupHeader:)"; $hgh = 1; } if ($hgf == 0 && PageExists("$hg.GroupFooter")) { $GroupFooterFmt = "(:include $hg.GroupFooter:)"; $hgf = 1; } if ($hga == 0 && PageExists("$hg.GroupAttributes")) { $GroupAttributesFmt = "$hg/GroupAttributes"; $hga = 1; } $PageCSSListFmt["pub/css/$hg.css"] = "$PubDirUrl/css/$hg.css"; array_pop($hggroups); } ####### Set up default configs, headers, footers, sidebars & styles if ($hgc == 0 && file_exists("$LocalDir/default.php")) include_once("$LocalDir/default.php"); if ($hgh == 0 && PageExists("Site.GroupHeader")) $GroupHeaderFmt = "(:include Site.GroupHeader:)"; if ($hgf == 0 && PageExists("Site.GroupFooter")) $GroupFooterFmt = "(:include Site.GroupFooter:)"; $PageCSSListFmt["pub/css/local.css"] = "$PubDirUrl/css/local.css"; $PageCSSListFmt = array_reverse($PageCSSListFmt, true); ####### Set's up hierarchical pagenames like SideBar and SideMenu function HierarchicalPagenames($group, $name) { global $hgseparator, $SiteGroup; $groups = explode($hgseparator, $group); while (count($groups) != 0) { $hg_group = implode ($hgseparator, $groups); if (PageExists("$hg_group.$name")) return "$hg_group.$name"; array_pop($groups); } return "$SiteGroup.$name"; } ####### Sets up {$g0} and {$n0} page variables function hgCountLevels($name) { global $hgseparator; $parts = explode($hgseparator, $name); return count($parts); } ####### Sets up {$g2} and {$n3} page variables function hgSplitName($name, $i) { global $hgseparator, $SiteGroup; $parts = explode($hgseparator, $name); if ($i < 0 || $i >= count($parts)) return ''; $title = PageTextVar("$SiteGroup.HgGroupTitles", $parts[$i]); if ($title != '') return $title; return $parts[$i]; } ####### 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 if used from link display function hgCreateFmt($x) { global $hglinkprefix; $x = substr($x, strlen($hglinkprefix)); return "\$LinkText"; } ####### Hierarchical links shortcut notation. Markup('[[hg','var', '/\(:breadcrumb:\)/e', 'hgBreadCrumb()'); function hgBreadCrumb() { global $hgseparator, $hgbreadcrumbseparator, $hgmaxlevels, $hggroup, $hgname, $pagename, $SiteGroup, $EnableBreadCrumbName, $DefaultName; $groups = explode($hgseparator, $hggroup); if (PageExists("$SiteGroup.HgBreadCrumbs")) $t = "true"; while (count($groups) != 0) { $hg_group = implode ($hgseparator, $groups); $hg_title = PageTextVar("$SiteGroup.HgBreadCrumbs", $groups[count($groups) - 1]); if (($t == "true") && ($hg_title != '')) $outgroup = $hg_title . $outgroup; else $outgroup = "[[$hg_group/$DefaultName|".$groups[count($groups)-1]."]]" . $hgbreadcrumbseparator . $outgroup; array_pop($groups); } if ($EnableBreadCrumbName == false) return substr($outgroup, 0, - strlen($hgbreadcrumbseparator)); $outname = PageTextVar($pagename, 'Title'); if ($outname == '') $outname = PageTextVar($pagename, 'title'); if ($outname == '') $outname = $hgname; return AsSpaced("$outgroup$outname"); } ####### GroupTitle page variables function hgGroupTitles($group) { global $SiteGroup, $hgseparator; $groups = explode($hgseparator, $group); $hg_name = $groups[count($groups) - 1]; if (PageExists("$SiteGroup.HgGroupTitles")) { while (count($groups) != 0) { $hg_group = implode ($hgseparator, $groups); $hg_title = PageTextVar("$SiteGroup.HgGroupTitles", $hg_group); if ($hg_title != '') break; array_pop($groups); } if ($hg_title != '' && $hg_title != ' ') return $hg_title; } return $hg_name; }