The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/client/views/admin/users/adminUsers.coffee

108 lines
3.5 KiB

Template.adminUsers.helpers
isReady: ->
return Template.instance().ready?.get()
users: ->
return Template.instance().users()
flexOpened: ->
return 'opened' if RocketChat.TabBar.isFlexOpen()
arrowPosition: ->
return 'left' unless RocketChat.TabBar.isFlexOpen()
userData: ->
return Meteor.users.findOne Session.get 'adminSelectedUser'
userChannels: ->
return ChatSubscription.find({ "u._id": Session.get 'adminSelectedUser' }, { fields: { rid: 1, name: 1, t: 1 }, sort: { t: 1, name: 1 } }).fetch()
isLoading: ->
return 'btn-loading' unless Template.instance().ready?.get()
hasMore: ->
return Template.instance().limit?.get() is Template.instance().users?().length
flexTemplate: ->
return RocketChat.TabBar.getTemplate()
flexData: ->
return RocketChat.TabBar.getData()
adminClass: ->
return 'admin' if RocketChat.authz.hasRole(Meteor.userId(), 'admin')
username: ->
return '@' + @username if @username?
emailAddress: ->
return _.map(@emails, (e) -> e.address).join(', ')
Template.adminUsers.onCreated ->
instance = @
@limit = new ReactiveVar 50
@filter = new ReactiveVar ''
@ready = new ReactiveVar true
RocketChat.TabBar.addButton({ id: 'invite-user', title: t('Invite_Users'), icon: 'icon-plus', template: 'adminInviteUser', order: 1 })
@autorun ->
filter = instance.filter.get()
limit = instance.limit.get()
subscription = instance.subscribe 'fullUserData', filter, limit
instance.ready.set subscription.ready()
@autorun ->
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', title: t('User_Info'), icon: 'icon-user', template: 'adminUserInfo', order: 2 })
# RocketChat.TabBar.addButton({ id: 'user-channel', title: t('User_Channels'), icon: 'icon-hash', template: 'adminUserChannels', order: 3 })
else
RocketChat.TabBar.reset()
RocketChat.TabBar.addButton({ id: 'invite-user', title: t('Invite_Users'), icon: 'icon-plus', template: 'adminInviteUser', order: 1 })
@users = ->
filter = _.trim instance.filter?.get()
if filter
filterReg = new RegExp filter, "i"
query = { $or: [ { username: filterReg }, { name: filterReg }, { "emails.address": filterReg } ] }
else
query = {}
return Meteor.users.find(query, { limit: instance.limit?.get(), sort: { username: 1, name: 1 } }).fetch()
Template.adminUsers.onRendered ->
Tracker.afterFlush ->
SideNav.setFlex "adminFlex"
SideNav.openFlex()
Template.adminUsers.events
'keydown #users-filter': (e) ->
if e.which is 13
e.stopPropagation()
e.preventDefault()
'keyup #users-filter': (e, t) ->
e.stopPropagation()
e.preventDefault()
t.filter.set e.currentTarget.value
'click .flex-tab .more': ->
if RocketChat.TabBar.isFlexOpen()
RocketChat.TabBar.closeFlex()
else
RocketChat.TabBar.openFlex()
'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
RocketChat.TabBar.setTemplate 'adminUserInfo'
RocketChat.TabBar.openFlex()
'click .info-tabs a': (e) ->
e.preventDefault()
$('.info-tabs a').removeClass 'active'
$(e.currentTarget).addClass 'active'
$('.user-info-content').hide()
$($(e.currentTarget).attr('href')).show()
'click .load-more': (e, t) ->
e.preventDefault()
e.stopPropagation()
t.limit.set t.limit.get() + 50