Skip to content

Commit

Permalink
filter out admin menu items
Browse files Browse the repository at this point in the history
  • Loading branch information
SachaG committed Apr 8, 2015
1 parent be9d017 commit 4ba2f69
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 17 deletions.
22 changes: 10 additions & 12 deletions client/components/menu/menu_component.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,20 +33,18 @@
<div class="menu {{menuClass}}">
<div class="menu-top-level" href="/">{{menuLabel}}</div>
<div class="menu-menu">
{{#with menuItems}}
{{#with getMenuItems}}
<ul class="menu-contents" role="menu" aria-labelledby="dLabel">
{{#each this}}
{{#if showMenuItem}}
{{#if hasTemplate}}
{{> Template.dynamic template=template data=data}}
{{else}}
<li class="menu-item {{itemClass}}">
<a class="menu-sub-level" href="{{itemRoute}}">
<span class="menu-label">{{itemLabel}}</span>
{{#if description}}<span class="menu-description">{{_ description}}</span>{{/if}}
</a>
</li>
{{/if}}
{{#if hasTemplate}}
{{> Template.dynamic template=template data=data}}
{{else}}
<li class="menu-item {{itemClass}}">
<a class="menu-sub-level" href="{{itemRoute}}">
<span class="menu-label">{{itemLabel}}</span>
{{#if description}}<span class="menu-description">{{_ description}}</span>{{/if}}
</a>
</li>
{{/if}}
{{/each}}
</ul>
Expand Down
22 changes: 17 additions & 5 deletions client/components/menu/menu_component.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,28 @@ getRoute = function (item) {
return typeof item.route == "function" ? item.route() : Router.path(item.route);
}

// filter out admin-only items if needed
getMenuItems = function (menu) {
var menuItems = menu.menuItems;

if (!isAdmin(Meteor.user())) {
menuItems = _.reject(menuItems, function (item) {
return item.adminOnly;
});
}

return menuItems;
}

Template[getTemplate('menuComponent')].helpers({
getMenuItems: function () {
return getMenuItems(this);
},
menuClass: function () {

var classes = [this.menuName+"-menu"];
var mode = (typeof this.menuMode === "undefined") ? "list" : this.menuMode;
var count = this.menuItems.length;
var count = getMenuItems(this).length;

classes.push("menu-"+mode);

Expand All @@ -32,10 +48,6 @@ Template[getTemplate('menuComponent')].helpers({
// if label is defined, use this. Else default to menu name
return !!this.menuLabel ? this.menuLabel : i18n.t(this.menuName);
},
showMenuItem: function () {
// if this is an admin item, only show it if current user is admin
return this.adminOnly ? isAdmin(Meteor.user()) : true;
},
hasTemplate: function () {
return !!this.template;
},
Expand Down

0 comments on commit 4ba2f69

Please sign in to comment.