<% Site.navigation %>
macro rendering two different navigation-skins depending on user-status & rights

Sourcecode in Site/macros.js:
1:   function navigation_macro(param) {
2:      if (param["for"] == "users" && !param.modules) {
3:         // FIXME: this is left for backwards-compatibility
4:         // sometime in the future we'll get rid of the usernavigation.skin
5:         res.write("...&nbsp;");
6:         Html.link({href: "http://project.antville.org/project/stories/146"}, "<strong>README</strong>");
7:         Html.tag("br");
8:         Html.tag("br");
9:         this.renderSkin("usernavigation");
10:     }
11:     if (!session.user)
12:        return;
13:     switch (param["for"]) {
14:        case "contributors" :
15:           if (session.user.sysadmin ||
16:               this.preferences.getProperty("usercontrib") ||
17:               req.data.memberlevel >= CONTRIBUTOR)
18:              this.renderSkin("contribnavigation");
19:           break;
20:        case "admins" :
21:           if (session.user.sysadmin || req.data.memberlevel >= ADMIN)
22:              this.renderSkin("adminnavigation");
23:           break;
24:     }
25:     if (param.modules != null) {
26:        var mods = param.modules.split(",");
27:        if (mods.length == 1 && mods[0] == "all") {
28:           for (var i in app.modules)
29:              this.applyModuleMethod(app.modules[i], "renderSiteNavigation", param);
30:        } else {
31:           for (var i in mods)
32:              this.applyModuleMethod(app.modules[mods[i]], "renderSiteNavigation", param);
33:        }
34:     }
35:     return;
36:  }