<?php if (!defined('PmWiki')) exit(); /********************************************************************** Copyright 2005 Douglas Stebila <douglas@stebila.ca> Based in part on TrackingMenu by Mike Ivanov Portions Copyright 2005 Mike Ivanov <mike70i@yahoo.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. **********************************************************************/ $RecipeInfo['ExpandingMenu']['Version'] = '20180628'; $InsideEMenu = 0; $EMenuGroup = ''; function BuildEMenu($m) { global $PubDirUrl, $HTMLHeaderFmt, $InsideEMenu; $name = $m[1]; if ($name == 'emenu') { $InsideEMenu = 1; return "<:block><div class='emenu'>"; } if ($name == 'emenuend') { $InsideEMenu = 0; return '<:block></div>'; } return '<:block>'; } function BuildEItem($m) { global $InsideEMenu, $EMenuGroup, $pagename, $DefaultPage; $star = $m[1]; $tail = $m[2]; if( $InsideEMenu ) { if ($star == '*') { if( preg_match("/^\\s*\\[\\[([^|]*?)(\\|.*?)?\\]\\]/", $tail, $match ) ) { $pn = MakePageName( $DefaultPage, $match[1] ); if( preg_match("/^([^.]*)/", $pn, $gn) ) { $EMenuGroup = $gn[0]; } } return $star. $tail; } else { if( preg_match("/^([^.]*)/", $pagename, $gn) ) { if ($EMenuGroup == $gn[0]) { return $star . $tail; } else { return; } } } } return $star . $tail; } ## precede link handlers Markup('emenu','<links','/^\\(:(emenu|emenuend)\\s?:\\)/', "BuildEMenu"); Markup('^*E','>emenu','/^(\\*+)(.*)/', "BuildEItem");