de2618e05a5135a1f075e1bcfcbaf1cc3ab0615d
Andrew Lewman roll out new pages for dona...

Andrew Lewman authored 12 years ago

1) #! /usr/bin/wml
2) <: use strict; :>
3) <: use warnings; :>
4) #use "perl-globals.wmi"
5) #use "links.wmi"
6) #use "versions.wmi"
7) #use "sidenav.wmi"
8) <div class="img-shadow">
Sebastian Hahn ideas for donation page

Sebastian Hahn authored 8 years ago

9) <!--  <div id="sidenav">
Andrew Lewman roll out new pages for dona...

Andrew Lewman authored 12 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)     :>
Sebastian Hahn ideas for donation page

Sebastian Hahn authored 8 years ago

89)   </div> -->