From fe217988724c5c74fc02c34180eab504a4d906c1 Mon Sep 17 00:00:00 2001 From: hmhealey Date: Sat, 27 Feb 2016 11:04:24 -0500 Subject: Changed TeamMembersModal to use UserList --- web/react/components/team_members_dropdown.jsx | 331 +++++++++++++++++++++++++ 1 file changed, 331 insertions(+) create mode 100644 web/react/components/team_members_dropdown.jsx (limited to 'web/react/components/team_members_dropdown.jsx') diff --git a/web/react/components/team_members_dropdown.jsx b/web/react/components/team_members_dropdown.jsx new file mode 100644 index 000000000..35ec66519 --- /dev/null +++ b/web/react/components/team_members_dropdown.jsx @@ -0,0 +1,331 @@ +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import UserStore from '../stores/user_store.jsx'; +import ChannelStore from '../stores/channel_store.jsx'; +import * as Client from '../utils/client.jsx'; +import * as AsyncClient from '../utils/async_client.jsx'; +import * as Utils from '../utils/utils.jsx'; +import ConfirmModal from './confirm_modal.jsx'; +import TeamStore from '../stores/team_store.jsx'; + +import {FormattedMessage} from 'mm-intl'; + +export default class TeamMembersDropdown extends React.Component { + constructor(props) { + super(props); + + this.handleMakeMember = this.handleMakeMember.bind(this); + this.handleMakeActive = this.handleMakeActive.bind(this); + this.handleMakeNotActive = this.handleMakeNotActive.bind(this); + this.handleMakeAdmin = this.handleMakeAdmin.bind(this); + this.handleDemote = this.handleDemote.bind(this); + this.handleDemoteSubmit = this.handleDemoteSubmit.bind(this); + this.handleDemoteCancel = this.handleDemoteCancel.bind(this); + + this.state = { + serverError: null, + showDemoteModal: false, + user: null, + role: null + }; + } + handleMakeMember() { + const me = UserStore.getCurrentUser(); + if (this.props.user.id === me.id) { + this.handleDemote(this.props.user, ''); + } else { + const data = { + user_id: this.props.user.id, + new_roles: '' + }; + Client.updateRoles(data, + () => { + AsyncClient.getProfiles(); + }, + (err) => { + this.setState({serverError: err.message}); + } + ); + } + } + handleMakeActive() { + Client.updateActive(this.props.user.id, true, + () => { + AsyncClient.getProfiles(); + AsyncClient.getChannelExtraInfo(ChannelStore.getCurrentId()); + }, + (err) => { + this.setState({serverError: err.message}); + } + ); + } + handleMakeNotActive() { + Client.updateActive(this.props.user.id, false, + () => { + AsyncClient.getProfiles(); + AsyncClient.getChannelExtraInfo(ChannelStore.getCurrentId()); + }, + (err) => { + this.setState({serverError: err.message}); + } + ); + } + handleMakeAdmin() { + const me = UserStore.getCurrentUser(); + if (this.props.user.id === me.id) { + this.handleDemote(this.props.user, 'admin'); + } else { + const data = { + user_id: this.props.user.id, + new_roles: 'admin' + }; + + Client.updateRoles(data, + () => { + AsyncClient.getProfiles(); + }, + (err) => { + this.setState({serverError: err.message}); + } + ); + } + } + handleDemote(user, role) { + this.setState({ + serverError: this.state.serverError, + showDemoteModal: true, + user, + role + }); + } + handleDemoteCancel() { + this.setState({ + serverError: null, + showDemoteModal: false, + user: null, + role: null + }); + } + handleDemoteSubmit() { + const data = { + user_id: this.props.user.id, + new_roles: this.state.role + }; + + Client.updateRoles(data, + () => { + const teamUrl = TeamStore.getCurrentTeamUrl(); + if (teamUrl) { + window.location.href = teamUrl; + } else { + window.location.href = '/'; + } + }, + (err) => { + this.setState({serverError: err.message}); + } + ); + } + render() { + let serverError = null; + if (this.state.serverError) { + serverError = ( +
+ +
+ ); + } + + const user = this.props.user; + let currentRoles = ( + + ); + + if (user.roles.length > 0) { + if (Utils.isSystemAdmin(user.roles)) { + currentRoles = ( + + ); + } else if (Utils.isAdmin(user.roles)) { + currentRoles = ( + + ); + } else { + currentRoles = user.roles.charAt(0).toUpperCase() + user.roles.slice(1); + } + } + + let showMakeMember = user.roles === 'admin' || user.roles === 'system_admin'; + let showMakeAdmin = user.roles === '' || user.roles === 'system_admin'; + let showMakeActive = false; + let showMakeNotActive = user.roles !== 'system_admin'; + + if (user.delete_at > 0) { + currentRoles = ( + + ); + showMakeMember = false; + showMakeAdmin = false; + showMakeActive = true; + showMakeNotActive = false; + } + + let makeAdmin = null; + if (showMakeAdmin) { + makeAdmin = ( +
  • + + + +
  • + ); + } + + let makeMember = null; + if (showMakeMember) { + makeMember = ( +
  • + + + +
  • + ); + } + + let makeActive = null; + if (showMakeActive) { + makeActive = ( +
  • + + + +
  • + ); + } + + let makeNotActive = null; + if (showMakeNotActive) { + makeNotActive = ( +
  • + + + +
  • + ); + } + const me = UserStore.getCurrentUser(); + let makeDemoteModal = null; + if (this.props.user.id === me.id) { + const title = ( + + ); + const message = ( +
    + +
    +
    + + {serverError} +
    + ); + + const confirmButton = ( + + ); + + makeDemoteModal = ( + + ); + } + + return ( +
    + + + {currentRoles} + +
      + {makeAdmin} + {makeMember} + {makeActive} + {makeNotActive} +
    + {makeDemoteModal} + {serverError} +
    + ); + } +} + +TeamMembersDropdown.propTypes = { + user: React.PropTypes.object.isRequired +}; -- cgit v1.2.3-1-g7c22 From a92b51935e172f4e4fc7af83f410a071d0590f90 Mon Sep 17 00:00:00 2001 From: hmhealey Date: Wed, 2 Mar 2016 11:00:01 -0500 Subject: Moved localized strings for PLT-1090 --- web/react/components/team_members_dropdown.jsx | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'web/react/components/team_members_dropdown.jsx') diff --git a/web/react/components/team_members_dropdown.jsx b/web/react/components/team_members_dropdown.jsx index 35ec66519..7a298d26a 100644 --- a/web/react/components/team_members_dropdown.jsx +++ b/web/react/components/team_members_dropdown.jsx @@ -140,7 +140,7 @@ export default class TeamMembersDropdown extends React.Component { const user = this.props.user; let currentRoles = ( ); @@ -149,14 +149,14 @@ export default class TeamMembersDropdown extends React.Component { if (Utils.isSystemAdmin(user.roles)) { currentRoles = ( ); } else if (Utils.isAdmin(user.roles)) { currentRoles = ( ); @@ -173,7 +173,7 @@ export default class TeamMembersDropdown extends React.Component { if (user.delete_at > 0) { currentRoles = ( ); @@ -193,7 +193,7 @@ export default class TeamMembersDropdown extends React.Component { onClick={this.handleMakeAdmin} > @@ -211,7 +211,7 @@ export default class TeamMembersDropdown extends React.Component { onClick={this.handleMakeMember} > @@ -229,7 +229,7 @@ export default class TeamMembersDropdown extends React.Component { onClick={this.handleMakeActive} > @@ -247,7 +247,7 @@ export default class TeamMembersDropdown extends React.Component { onClick={this.handleMakeNotActive} > @@ -259,20 +259,20 @@ export default class TeamMembersDropdown extends React.Component { if (this.props.user.id === me.id) { const title = ( ); const message = (


    {serverError} @@ -281,7 +281,7 @@ export default class TeamMembersDropdown extends React.Component { const confirmButton = ( ); -- cgit v1.2.3-1-g7c22 From 48eac58eaacba075f3b7ef518d0312b5f7ab3c17 Mon Sep 17 00:00:00 2001 From: hmhealey Date: Wed, 2 Mar 2016 17:11:51 -0500 Subject: Fixed warnings and removed injectIntl from System Console user list --- web/react/components/team_members_dropdown.jsx | 1 + 1 file changed, 1 insertion(+) (limited to 'web/react/components/team_members_dropdown.jsx') diff --git a/web/react/components/team_members_dropdown.jsx b/web/react/components/team_members_dropdown.jsx index 7a298d26a..8aacba8ca 100644 --- a/web/react/components/team_members_dropdown.jsx +++ b/web/react/components/team_members_dropdown.jsx @@ -263,6 +263,7 @@ export default class TeamMembersDropdown extends React.Component { defaultMessage='Confirm demotion from System Admin role' /> ); + const message = (