diff --git a/packages/rocketchat-ui-sidenav/side-nav/sideNav.coffee b/packages/rocketchat-ui-sidenav/side-nav/sideNav.coffee index 7c9d2574f8a..227023ce43f 100644 --- a/packages/rocketchat-ui-sidenav/side-nav/sideNav.coffee +++ b/packages/rocketchat-ui-sidenav/side-nav/sideNav.coffee @@ -36,7 +36,10 @@ Template.sideNav.helpers return RocketChat.authz.hasAtLeastOnePermission( ['view-statistics', 'view-room-administration', 'view-user-administration', 'view-privileged-setting']) registeredMenus: -> - return AccountBox.getOptions() + return AccountBox.getItems() + + itemPath: -> + FlowRouter.path @route.name Template.sideNav.events 'click .close-flex': -> diff --git a/packages/rocketchat-ui-sidenav/side-nav/sideNav.html b/packages/rocketchat-ui-sidenav/side-nav/sideNav.html index 605c277d14e..69de45698bd 100644 --- a/packages/rocketchat-ui-sidenav/side-nav/sideNav.html +++ b/packages/rocketchat-ui-sidenav/side-nav/sideNav.html @@ -21,7 +21,7 @@ {{_ "Invisible"}} {{_ "My_Account"}} {{#each registeredMenus}} - {{name}} + {{name}} {{/each}} {{#if showAdminOption }} {{_ "Administration"}} diff --git a/packages/rocketchat-ui/lib/accountBox.coffee b/packages/rocketchat-ui/lib/accountBox.coffee index c575f1760f7..a83288bfe3d 100644 --- a/packages/rocketchat-ui/lib/accountBox.coffee +++ b/packages/rocketchat-ui/lib/accountBox.coffee @@ -1,7 +1,7 @@ @AccountBox = (-> status = 0 self = {} - options = new ReactiveVar [] + items = new ReactiveVar [] setStatus = (status) -> Meteor.call('UserPresence:setDefaultStatus', status) @@ -30,20 +30,25 @@ ### # @param newOption: - # name: Button label - # icon: Button icon - # class: Class of item - # roles: Which roles see this options + # name: Button label + # icon: Button icon + # class: Class of the item + # permissions: Which permissions a user should have (all of them) to see this item ### - addOption = (newOption) -> + addItem = (newItem) -> Tracker.nonreactive -> - actual = options.get() - actual.push newOption - options.set actual - - getOptions = -> - return _.filter options.get(), (option) -> - if not option.roles? or RocketChat.authz.hasRole(Meteor.userId(), option.roles) + actual = items.get() + actual.push newItem + items.set actual + + if newItem.route?.path? and newItem.route?.name? and newItem.route?.action? + FlowRouter.route newItem.route.path, + name: newItem.route.name + action: newItem.route.action + + getItems = -> + return _.filter items.get(), (item) -> + if not item.permissions? or RocketChat.authz.hasAllPermission item.permissions return true setStatus: setStatus @@ -51,6 +56,7 @@ open: open close: close init: init - addOption: addOption - getOptions: getOptions + + addItem: addItem + getItems: getItems )() diff --git a/packages/rocketchat-ui/package.js b/packages/rocketchat-ui/package.js index 34ddea1afb0..bff71ffe618 100644 --- a/packages/rocketchat-ui/package.js +++ b/packages/rocketchat-ui/package.js @@ -28,6 +28,8 @@ Package.onUse(function(api) { 'raix:ui-dropped-event' ]); + api.use('kadira:flow-router', 'client'); + // LIB FILES api.addFiles('lib/accountBox.coffee', 'client'); api.addFiles('lib/accounts.coffee', 'client');