tabbar display/hide rework

pull/1782/head
Diego Sampaio 10 years ago
parent 1ee762e8db
commit 8d04d3c2c4
  1. 22
      client/routes/adminRouter.coffee
  2. 9
      client/routes/router.coffee
  3. 3
      client/startup/defaultRoomTypes.coffee
  4. 3
      packages/rocketchat-authorization/client/route.coffee
  5. 18
      packages/rocketchat-channel-settings/client/startup/tabBar.coffee
  6. 18
      packages/rocketchat-chatops/client/tabBar.coffee
  7. 7
      packages/rocketchat-integrations/client/route.coffee
  8. 11
      packages/rocketchat-lib/client/TabBar.coffee
  9. 35
      packages/rocketchat-lib/client/defaultTabBars.js
  10. 13
      packages/rocketchat-lib/client/lib/openRoom.coffee
  11. 2
      packages/rocketchat-lib/package.js
  12. 6
      packages/rocketchat-mailer/client/router.coffee
  13. 11
      packages/rocketchat-mentions-flextab/client/tabBar.coffee
  14. 13
      packages/rocketchat-message-pin/client/tabBar.coffee
  15. 11
      packages/rocketchat-message-star/client/tabBar.coffee
  16. 29
      packages/rocketchat-ui-admin/admin/users/adminUsers.coffee
  17. 2
      packages/rocketchat-ui-admin/admin/users/adminUsers.html
  18. 16
      packages/rocketchat-ui-flextab/flex-tab/flexTabBar.coffee
  19. 2
      packages/rocketchat-ui-flextab/flex-tab/flexTabBar.html
  20. 2
      packages/rocketchat-ui/lib/accountBox.coffee
  21. 3
      packages/rocketchat-ui/views/app/privateHistory.coffee
  22. 4
      packages/rocketchat-ui/views/app/room.coffee

@ -1,33 +1,27 @@
tabReset = ->
RocketChat.TabBar.reset()
FlowRouter.route '/admin/users',
name: 'admin-users'
triggersEnter: [tabReset]
triggersExit: [tabReset]
triggersExit: [ ->
Session.set 'adminSelectedUser'
]
action: ->
Session.set 'adminSelectedUser'
RocketChat.TabBar.showGroup 'adminusers'
BlazeLayout.render 'main', {center: 'adminUsers'}
FlowRouter.route '/admin/rooms',
name: 'admin-rooms'
triggersEnter: [tabReset]
triggersExit: [tabReset]
action: ->
RocketChat.TabBar.showGroup 'rooms'
BlazeLayout.render 'main', {center: 'adminRooms'}
FlowRouter.route '/admin/statistics',
name: 'admin-statistics'
triggersEnter: [tabReset]
triggersExit: [tabReset]
action: ->
RocketChat.TabBar.showGroup 'adminstatistics'
BlazeLayout.render 'main', {center: 'adminStatistics'}
FlowRouter.route '/admin/:group?',
name: 'admin'
triggersEnter: [tabReset]
triggersExit: [tabReset]
action: ->
RocketChat.TabBar.showGroup 'admin'
BlazeLayout.render 'main', {center: 'admin'}

@ -3,7 +3,6 @@ Blaze.registerHelper 'pathFor', (path, kw) ->
BlazeLayout.setRoot 'body'
FlowRouter.subscriptions = ->
Tracker.autorun =>
RoomManager.init()
@ -42,7 +41,7 @@ FlowRouter.route '/home',
name: 'home'
action: ->
RocketChat.TabBar.reset()
RocketChat.TabBar.showGroup 'home'
BlazeLayout.render 'main', {center: 'home'}
KonchatNotification.getDesktopPermission()
@ -51,18 +50,17 @@ FlowRouter.route '/changeavatar',
name: 'changeAvatar'
action: ->
RocketChat.TabBar.showGroup 'changeavatar'
BlazeLayout.render 'main', {center: 'avatarPrompt'}
FlowRouter.route '/account/:group?',
name: 'account'
action: (params) ->
RocketChat.TabBar.closeFlex()
RocketChat.TabBar.resetButtons()
unless params.group
params.group = 'Preferences'
params.group = _.capitalize params.group, true
RocketChat.TabBar.showGroup 'account'
BlazeLayout.render 'main', { center: "account#{params.group}" }
@ -74,6 +72,7 @@ FlowRouter.route '/history/private',
action: ->
Session.setDefault('historyFilter', '')
RocketChat.TabBar.showGroup 'private-history'
BlazeLayout.render 'main', {center: 'privateHistory'}

@ -11,6 +11,7 @@ RocketChat.roomTypes.add 'c', 10,
action: (params, queryParams) ->
Session.set 'showUserInfo'
openRoom 'c', params.name
RocketChat.TabBar.showGroup 'channel'
link: (sub) ->
return { name: sub.name }
permissions: [ 'view-c-room' ]
@ -24,6 +25,7 @@ RocketChat.roomTypes.add 'd', 20,
action: (params, queryParams) ->
Session.set 'showUserInfo', params.username
openRoom 'd', params.username
RocketChat.TabBar.showGroup 'directmessage'
link: (sub) ->
return { username: sub.name }
permissions: [ 'view-d-room' ]
@ -37,6 +39,7 @@ RocketChat.roomTypes.add 'p', 30,
action: (params, queryParams) ->
Session.set 'showUserInfo'
openRoom 'p', params.name
RocketChat.TabBar.showGroup 'privategroup'
link: (sub) ->
return { name: sub.name }
permissions: [ 'view-p-room' ]

@ -1,6 +1,7 @@
FlowRouter.route '/admin/permissions',
name: 'admin-permissions'
action: (params) ->
RocketChat.TabBar.showGroup 'admin-permissions'
BlazeLayout.render 'main',
center: 'pageContainer'
pageTitle: t('Permissions')
@ -9,6 +10,7 @@ FlowRouter.route '/admin/permissions',
FlowRouter.route '/admin/permissions/:name?/edit',
name: 'admin-permissions-edit'
action: (params) ->
RocketChat.TabBar.showGroup 'admin-permissions'
BlazeLayout.render 'main',
center: 'pageContainer'
pageTitle: t('Role_Editing')
@ -17,6 +19,7 @@ FlowRouter.route '/admin/permissions/:name?/edit',
FlowRouter.route '/admin/permissions/new',
name: 'admin-permissions-new'
action: (params) ->
RocketChat.TabBar.showGroup 'admin-permissions'
BlazeLayout.render 'main',
center: 'pageContainer'
pageTitle: t('Role_Editing')

@ -1,12 +1,8 @@
Meteor.startup ->
RocketChat.callbacks.add 'enter-room', (subscription) ->
RocketChat.TabBar.addButton
id: 'channel-settings'
i18nTitle: 'Room_Info'
icon: 'octicon octicon-info'
template: 'channelSettings'
order: 0
, RocketChat.callbacks.priority.MEDIUM, 'enter-room-tabbar-channel-settings'
RocketChat.TabBar.addButton
groups: ['channel', 'privategroup', 'directmessage']
id: 'channel-settings'
i18nTitle: 'Room_Info'
icon: 'octicon octicon-info'
template: 'channelSettings'
order: 0

@ -1,18 +1,9 @@
Meteor.startup ->
RocketChat.callbacks.add 'enter-room', ->
#if Meteor.user()?.services?.github?.id or Meteor.user()?.services?.gitlab?.id
# console.log 'Adding chatops to tabbar'
# RocketChat.TabBar.addButton
# id: 'chatops-button'
# i18nTitle: 'rocketchat-chatops:Chatops_Title'
# icon: 'icon-code'
# template: 'chatops'
# order: 4
Tracker.autorun ->
if RocketChat.settings.get('Chatops_Enabled')
console.log 'Adding chatops to tabbar'
RocketChat.TabBar.addButton
groups: ['channel', 'privategroup', 'directmessage']
id: 'chatops-button2'
i18nTitle: 'rocketchat-chatops:Chatops_Title'
icon: 'octicon octicon-hubot'
@ -21,10 +12,13 @@ Meteor.startup ->
console.log 'Adding chatops to tabbar'
RocketChat.TabBar.addButton
groups: ['channel', 'privategroup', 'directmessage']
id: 'chatops-button3'
i18nTitle: 'rocketchat-chatops:Chatops_Title'
icon: 'octicon octicon-inbox'
template: 'chatops_droneflight'
width: 675
order: 5
, RocketChat.callbacks.priority.MEDIUM, 'enter-room-tabbar-chatops'
else
RocketChat.TabBar.removeButton 'chatops-button2'
RocketChat.TabBar.removeButton 'chatops-button3'

@ -1,34 +1,35 @@
FlowRouter.route '/admin/integrations',
name: 'admin-integrations'
action: (params) ->
RocketChat.TabBar.showGroup 'admin-integrations'
BlazeLayout.render 'main',
center: 'pageSettingsContainer'
pageTitle: t('Integrations')
pageTemplate: 'integrations'
FlowRouter.route '/admin/integrations/new',
name: 'admin-integrations-new'
action: (params) ->
RocketChat.TabBar.showGroup 'admin-integrations'
BlazeLayout.render 'main',
center: 'pageSettingsContainer'
pageTitle: t('Integration_New')
pageTemplate: 'integrationsNew'
FlowRouter.route '/admin/integrations/incoming/:id?',
name: 'admin-integrations-incoming'
action: (params) ->
RocketChat.TabBar.showGroup 'admin-integrations'
BlazeLayout.render 'main',
center: 'pageSettingsContainer'
pageTitle: t('Integration_Incoming_WebHook')
pageTemplate: 'integrationsIncoming'
params: params
FlowRouter.route '/admin/integrations/outgoing/:id?',
name: 'admin-integrations-outgoing'
action: (params) ->
RocketChat.TabBar.showGroup 'admin-integrations'
BlazeLayout.render 'main',
center: 'pageSettingsContainer'
pageTitle: t('Integration_Outgoing_WebHook')

@ -9,6 +9,8 @@ RocketChat.TabBar = new class
template = new ReactiveVar ''
data = new ReactiveVar {}
visibleGroup = new ReactiveVar ''
setTemplate = (t, callback) ->
return if animating is true
template.set t
@ -93,6 +95,12 @@ RocketChat.TabBar = new class
resetButtons = ->
buttons.set {}
showGroup = (group) ->
visibleGroup.set group
getVisibleGroup = ->
visibleGroup.get()
setTemplate: setTemplate
setData: setData
getTemplate: getTemplate
@ -108,3 +116,6 @@ RocketChat.TabBar = new class
getButtons: getButtons
reset: reset
resetButtons: resetButtons
showGroup: showGroup
getVisibleGroup: getVisibleGroup

@ -0,0 +1,35 @@
RocketChat.TabBar.addButton({
groups: ['channel', 'privategroup', 'directmessage'],
id: 'message-search',
i18nTitle: TAPi18n.__('Search'),
icon: 'octicon octicon-search',
template: 'messageSearch',
order: 1
});
RocketChat.TabBar.addButton({
groups: ['directmessage'],
id: 'members-list',
i18nTitle: TAPi18n.__('User_Info'),
icon: 'octicon octicon-person',
template: 'membersList',
order: 2
});
RocketChat.TabBar.addButton({
groups: ['channel', 'privategroup'],
id: 'members-list',
i18nTitle: TAPi18n.__('Members_List'),
icon: 'octicon octicon-organization',
template: 'membersList',
order: 2
});
RocketChat.TabBar.addButton({
groups: ['channel', 'privategroup', 'directmessage'],
id: 'uploaded-files-list',
i18nTitle: TAPi18n.__('Room_uploaded_file_list'),
icon: 'octicon octicon-file-symlink-directory',
template: 'uploadedFilesList',
order: 3
});

@ -50,16 +50,9 @@ currentTracker = undefined
$('.message-form .input-message').focus()
, 100
RocketChat.TabBar.resetButtons()
RocketChat.TabBar.addButton({ id: 'message-search', i18nTitle: t('Search'), icon: 'octicon octicon-search', template: 'messageSearch', order: 1 })
if type is 'd'
RocketChat.TabBar.addButton({ id: 'members-list', i18nTitle: t('User_Info'), icon: 'octicon octicon-person', template: 'membersList', order: 2 })
else
RocketChat.TabBar.addButton({ id: 'members-list', i18nTitle: t('Members_List'), icon: 'octicon octicon-organization', template: 'membersList', order: 2 })
RocketChat.TabBar.addButton({ id: 'uploaded-files-list', i18nTitle: t('Room_uploaded_file_list'), icon: 'octicon octicon-file-symlink-directory', template: 'uploadedFilesList', order: 3 })
# update user's room subscription
if ChatSubscription.findOne({rid: room._id})?.open is false
sub = ChatSubscription.findOne({rid: room._id})
if sub?.open is false
Meteor.call 'openRoom', room._id
RocketChat.callbacks.run 'enter-room', ChatSubscription.findOne({rid: room._id})
RocketChat.callbacks.run 'enter-room', sub

@ -96,6 +96,8 @@ Package.onUse(function(api) {
api.addFiles('client/TabBar.coffee', 'client');
api.addFiles('client/MessageAction.coffee', 'client');
api.addFiles('client/defaultTabBars.js', 'client');
// VERSION
api.addFiles('rocketchat.info');

@ -1,11 +1,7 @@
tabReset = ->
RocketChat.TabBar.reset()
FlowRouter.route '/mailer',
name: 'mailer'
triggersEnter: [tabReset]
triggersExit: [tabReset]
action: ->
RocketChat.TabBar.showGroup 'mailer'
BlazeLayout.render 'main', {center: 'mailer'}
FlowRouter.route '/mailer/unsubscribe/:_id/:createdAt',

@ -1,4 +1,9 @@
Meteor.startup ->
RocketChat.callbacks.add 'enter-room', ->
RocketChat.TabBar.addButton({ id: 'mentions', i18nTitle: 'Mentions', icon: 'icon-at', template: 'mentionsFlexTab', order: 3 })
, RocketChat.callbacks.priority.MEDIUM, 'enter-room-tabbar-mentions'
RocketChat.TabBar.addButton({
groups: ['channel', 'privategroup'],
id: 'mentions',
i18nTitle: 'Mentions',
icon: 'icon-at',
template: 'mentionsFlexTab',
order: 3
})

@ -1,5 +1,10 @@
Meteor.startup ->
RocketChat.callbacks.add 'enter-room', ->
if RocketChat.settings.get 'Message_AllowPinning'
RocketChat.TabBar.addButton({ id: 'pinned-messages', i18nTitle: 'Pinned_Messages', icon: 'icon-pin', template: 'pinnedMessages', order: 10 })
, RocketChat.callbacks.priority.MEDIUM, 'enter-room-tabbar-pin'
if RocketChat.settings.get 'Message_AllowPinning'
RocketChat.TabBar.addButton({
groups: ['channel', 'privategroup', 'directmessage'],
id: 'pinned-messages',
i18nTitle: 'Pinned_Messages',
icon: 'icon-pin',
template: 'pinnedMessages',
order: 10
})

@ -1,4 +1,9 @@
Meteor.startup ->
RocketChat.callbacks.add 'enter-room', ->
RocketChat.TabBar.addButton({ id: 'starred-messages', i18nTitle: 'Starred_Messages', icon: 'icon-star', template: 'starredMessages', order: 3 })
, RocketChat.callbacks.priority.MEDIUM, 'enter-room-tabbar-star'
RocketChat.TabBar.addButton({
groups: ['channel', 'privategroup', 'directmessage'],
id: 'starred-messages',
i18nTitle: 'Starred_Messages',
icon: 'icon-star',
template: 'starredMessages',
order: 3
})

@ -37,7 +37,23 @@ Template.adminUsers.onCreated ->
@filter = new ReactiveVar ''
@ready = new ReactiveVar true
RocketChat.TabBar.addButton({ id: 'invite-user', i18nTitle: t('Invite_Users'), icon: 'icon-plus', template: 'adminInviteUser', order: 1 })
RocketChat.TabBar.addButton({
groups: ['adminusers', 'adminusers-selected'],
id: 'invite-user',
i18nTitle: t('Invite_Users'),
icon: 'icon-plus',
template: 'adminInviteUser',
order: 1
})
RocketChat.TabBar.addButton({
groups: ['adminusers-selected']
id: 'user-info',
i18nTitle: t('User_Info'),
icon: 'icon-user',
template: 'adminUserInfo',
order: 2
})
@autorun ->
filter = instance.filter.get()
@ -49,11 +65,10 @@ Template.adminUsers.onCreated ->
if Session.get 'adminSelectedUser'
channelSubscription = instance.subscribe 'userChannels', Session.get 'adminSelectedUser'
RocketChat.TabBar.setData Meteor.users.findOne Session.get 'adminSelectedUser'
RocketChat.TabBar.addButton({ id: 'user-info', i18nTitle: t('User_Info'), icon: 'icon-user', template: 'adminUserInfo', order: 2 })
# RocketChat.TabBar.addButton({ id: 'user-channel', i18nTitle: t('User_Channels'), icon: 'icon-hash', template: 'adminUserChannels', order: 3 })
RocketChat.TabBar.showGroup 'adminusers-selected'
else
RocketChat.TabBar.reset()
RocketChat.TabBar.addButton({ id: 'invite-user', i18nTitle: t('Invite_Users'), icon: 'icon-plus', template: 'adminInviteUser', order: 1 })
RocketChat.TabBar.showGroup 'adminusers'
@users = ->
filter = _.trim instance.filter?.get()
@ -89,8 +104,8 @@ Template.adminUsers.events
'click .user-info': (e) ->
e.preventDefault()
Session.set 'adminSelectedUser', $(e.currentTarget).data('id')
Session.set 'showUserInfo', Meteor.users.findOne($(e.currentTarget).data('id'))?.username or true
Session.set 'adminSelectedUser', @_id
Session.set 'showUserInfo', Meteor.users.findOne(@_id)?.username or true
RocketChat.TabBar.setTemplate 'adminUserInfo'
RocketChat.TabBar.openFlex()

@ -32,7 +32,7 @@
</thead>
<tbody>
{{#each users}}
<tr class="user-info" data-id="{{_id}}">
<tr class="user-info">
<td>
<div class="user-image status-{{status}}">
{{> avatar username=username}}

@ -6,22 +6,26 @@ Template.flexTabBar.helpers
return RocketChat.TabBar.getButtons()
title: ->
return t(@i18nTitle) or @title
visible: ->
if @groups.indexOf(RocketChat.TabBar.getVisibleGroup()) is -1
# if it was active, close it
if @template is RocketChat.TabBar.getTemplate() and RocketChat.TabBar.isFlexOpen()
RocketChat.TabBar.closeFlex()
return 'hidden'
Template.flexTabBar.events
'click .tab-button': (e, t) ->
e.preventDefault()
if RocketChat.TabBar.isFlexOpen() and RocketChat.TabBar.getTemplate() is $(e.currentTarget).data('template')
if RocketChat.TabBar.isFlexOpen() and RocketChat.TabBar.getTemplate() is @template
RocketChat.TabBar.closeFlex()
$('.flex-tab').css('max-width', '')
else
width = $(e.currentTarget).data('width')
if width?
$('.flex-tab').css('max-width', "#{width}px")
if @width?
$('.flex-tab').css('max-width', "#{@width}px")
else
$('.flex-tab').css('max-width', '')
RocketChat.TabBar.setTemplate $(e.currentTarget).data('template'), ->
RocketChat.TabBar.setTemplate @template, ->
$('.flex-tab')?.find("input[type='text']:first")?.focus()
$('.flex-tab .content')?.scrollTop(0)

@ -1,6 +1,6 @@
<template name="flexTabBar">
{{#each buttons}}
<div class="tab-button {{active}}" data-template="{{template}}" data-width="{{width}}" title="{{title}}">
<div class="tab-button {{active}} {{visible}}" title="{{title}}">
<i class="{{icon}}" aria-label="{{title}}" role="button" tabindex="0"></i>
</div>
{{/each}}

@ -63,6 +63,7 @@
name: newRoute.name
action: ->
Session.set 'openedRoom'
RocketChat.TabBar.showGroup newRoute.name
BlazeLayout.render 'main', routeConfig
triggersEnter: [ ->
if newRoute.sideNav?
@ -70,7 +71,6 @@
SideNav.openFlex()
]
setStatus: setStatus
toggle: toggle
open: open

@ -37,9 +37,6 @@ Template.privateHistory.helpers
when 'd'
return FlowRouter.path 'direct', { username: this.name }
Template.privateHistory.onRendered ->
RocketChat.TabBar.reset()
Template.privateHistory.events
'keydown #history-filter': (event) ->
if event.which is 13

@ -484,13 +484,9 @@ Template.room.onCreated ->
@autorun =>
@subscribe 'fullUserData', Session.get('showUserInfo'), 1
Template.room.onDestroyed ->
RocketChat.TabBar.resetButtons()
window.removeEventListener 'resize', this.onWindowResize
Template.room.onRendered ->
unless window.chatMessages
window.chatMessages = {}

Loading…
Cancel
Save