roll out new pages for dona...
Andrew Lewman authored 13 years ago
|
10) <h2>Help another way:</h2>
11) <:
12) # recursively search menu structure to see if it contains a given page
13) sub containsSub($$);
14) sub containsSub($$) {
15) my ($elements, $page) = @_;
16) for my $ele (@{$elements}) {
17) if (containsSub($ele->{'subelements'},$page)){
18) return 1;
19) } elsif ($page eq $ele->{'url'}) {
20) return 1;
21) }
22)
23) }
24) return 0;
25) }
26)
27) # generate navigation menu
28) sub printNavMenu($$$);
29) sub printNavMenu($$$) {
30) my ($navmenu, $page, $lang) = @_;
31) print '<ul>'."\n";
32) for my $navmenu (@{$navmenu}) {
33) # this menu entry is the current (active) page
34) if ($navmenu->{'url'} eq $page) {
35)
36) # the current page has nested menu elements
37) if ($navmenu->{'subelements'}) { # menu has dropdown
38) printf '<li class="dropdown active"><a class="active" href="%s">%s</a></li>'."\n",
39) pageToURL($navmenu->{'url'}, $lang), $navmenu->{'txt'};
40)
41) print '<li>'."\n";
42) printNavMenu($navmenu->{'subelements'},$page,$lang);
43) print '</li>'."\n";
44)
45) # the current (active) page does not have sub elements
46) } else {
47) printf '<li class="active"><a class="active" href="%s">%s</a></li>'."\n",
48) pageToURL($navmenu->{'url'}, $lang), $navmenu->{'txt'};
49) }
50)
51) # a subelement of this menu item is the current (active) page
52) } elsif (containsSub($navmenu->{'subelements'}, $page)) {
53) printf '<li class="dropdown"><a class="active" href="%s">%s</a></li>'."\n",
54) pageToURL($navmenu->{'url'}, $lang), $navmenu->{'txt'};
55)
56) print '<li>'."\n"; #encapsulate subelements
57) # recurse to generate the expanded menu
58) printNavMenu($navmenu->{'subelements'},$page,$lang);
59) print '</li>'."\n"; #encapsulate subelements
60)
61) # the menu entry is not active and does not enclose the active page
62) } else {
63)
64) # if there are subelements, set collapsed style
65) if ($navmenu->{'subelements'}) {
66) printf '<li class="dropdown"><a href="%s">%s</a></li>'."\n",
67) pageToURL($navmenu->{'url'}, $lang), $navmenu->{'txt'};
68) # regular menu entry
69) } else {
70) printf '<li><a href="%s">%s</a></li>'."\n",
71) pageToURL($navmenu->{'url'}, $lang), $navmenu->{'txt'};
72) }
73) }
74) }
75) print '</ul>'."\n";
76) }
77)
78) my $lang = "$(LANG)";
79)
80) use Cwd;
81) use Cwd 'abs_path';
82) use File::Spec;
83)
84) # get document path from site root
85) my $path = File::Spec->abs2rel(getcwd(),abs_path("$(DOCROOT)"));
86) my $page = $WML_SRC_BASENAME;
87) printNavMenu($sidenav, $path.'/'.$page, $lang);
88) :>
|