Changed TeamMembersModal to use UserList

Этот коммит содержится в:
hmhealey
2016-02-27 11:04:24 -05:00
коммит произвёл Harrison Healey
родитель b61ec9f883
Коммит fe21798872
6 изменённых файлов: 80 добавлений и 98 удалений

Просмотреть файл

@@ -44,7 +44,7 @@ export default class ConfirmModal extends React.Component {
className='btn btn-primary' className='btn btn-primary'
onClick={this.props.onConfirm} onClick={this.props.onConfirm}
> >
{this.props.confirm_button} {this.props.confirmButton}
</button> </button>
</Modal.Footer> </Modal.Footer>
</Modal> </Modal>
@@ -55,13 +55,13 @@ export default class ConfirmModal extends React.Component {
ConfirmModal.defaultProps = { ConfirmModal.defaultProps = {
title: '', title: '',
message: '', message: '',
confirm_button: '' confirmButton: ''
}; };
ConfirmModal.propTypes = { ConfirmModal.propTypes = {
show: React.PropTypes.bool.isRequired, show: React.PropTypes.bool.isRequired,
title: React.PropTypes.string, title: React.PropTypes.node,
message: React.PropTypes.string, message: React.PropTypes.node,
confirm_button: React.PropTypes.string, confirmButton: React.PropTypes.node,
onConfirm: React.PropTypes.func.isRequired, onConfirm: React.PropTypes.func.isRequired,
onCancel: React.PropTypes.func.isRequired onCancel: React.PropTypes.func.isRequired
}; };

Просмотреть файл

@@ -1,7 +1,8 @@
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information. // See License.txt for license information.
import MemberListTeamItem from './member_list_team_item.jsx'; import FilteredUserList from './filtered_user_list.jsx';
import TeamMembersDropdown from './team_members_dropdown.jsx';
import UserStore from '../stores/user_store.jsx'; import UserStore from '../stores/user_store.jsx';
export default class MemberListTeam extends React.Component { export default class MemberListTeam extends React.Component {
@@ -44,21 +45,11 @@ export default class MemberListTeam extends React.Component {
} }
render() { render() {
const memberList = this.state.users.map((user) => {
return ( return (
<MemberListTeamItem <FilteredUserList
key={user.id} users={this.state.users}
user={user} actions={[TeamMembersDropdown]}
/> />
); );
});
return (
<table className='table more-table member-list-holder'>
<tbody>
{memberList}
</tbody>
</table>
);
} }
} }

Просмотреть файл

@@ -9,28 +9,9 @@ import * as Utils from '../utils/utils.jsx';
import ConfirmModal from './confirm_modal.jsx'; import ConfirmModal from './confirm_modal.jsx';
import TeamStore from '../stores/team_store.jsx'; import TeamStore from '../stores/team_store.jsx';
import {injectIntl, intlShape, defineMessages, FormattedMessage} from 'mm-intl'; import {FormattedMessage} from 'mm-intl';
var holders = defineMessages({ export default class TeamMembersDropdown extends React.Component {
confirmDemoteRoleTitle: {
id: 'member_team_item.confirmDemoteRoleTitle',
defaultMessage: 'Confirm demotion from System Admin role'
},
confirmDemotion: {
id: 'member_team_item.confirmDemotion',
defaultMessage: 'Confirm Demotion'
},
confirmDemoteDescription: {
id: 'member_team_item.confirmDemoteDescription',
defaultMessage: 'If you demote yourself from the System Admin role and there is not another user with System Admin privileges, you\'ll need to re-assign a System Admin by accessing the Mattermost server through a terminal and running the following command.'
},
confirmDemotionCmd: {
id: 'member_team_item.confirmDemotionCmd',
defaultMessage: 'platform -assign_role -team_name="yourteam" -email="name@yourcompany.com" -role="system_admin"'
}
});
export default class MemberListTeamItem extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
@@ -163,7 +144,6 @@ export default class MemberListTeamItem extends React.Component {
defaultMessage='Member' defaultMessage='Member'
/> />
); );
const timestamp = UserStore.getCurrentUser().update_at;
if (user.roles.length > 0) { if (user.roles.length > 0) {
if (Utils.isSystemAdmin(user.roles)) { if (Utils.isSystemAdmin(user.roles)) {
@@ -185,7 +165,6 @@ export default class MemberListTeamItem extends React.Component {
} }
} }
const email = user.email;
let showMakeMember = user.roles === 'admin' || user.roles === 'system_admin'; let showMakeMember = user.roles === 'admin' || user.roles === 'system_admin';
let showMakeAdmin = user.roles === '' || user.roles === 'system_admin'; let showMakeAdmin = user.roles === '' || user.roles === 'system_admin';
let showMakeActive = false; let showMakeActive = false;
@@ -276,15 +255,43 @@ export default class MemberListTeamItem extends React.Component {
); );
} }
const me = UserStore.getCurrentUser(); const me = UserStore.getCurrentUser();
const {formatMessage} = this.props.intl;
let makeDemoteModal = null; let makeDemoteModal = null;
if (this.props.user.id === me.id) { if (this.props.user.id === me.id) {
const title = (
<FormattedMessage
id='member_team_item.confirmDemoteRoleTitle'
defaultMessage='Confirm demotion from System Admin role'
/>
);
const message = (
<div>
<FormattedMessage
id='member_team_item.confirmDemoteDescription'
defaultMessage="If you demote yourself from the System Admin role and there is not another user with System Admin privileges, you'll need to re-assign a System Admin by accessing the Mattermost server through a terminal and running the following command."
/>
<br/>
<br/>
<FormattedMessage
id='member_team_item.confirmDemotionCmd'
defaultMessage='platform -assign_role -team_name="yourteam" -email="name@yourcompany.com" -role="system_admin"'
/>
{serverError}
</div>
);
const confirmButton = (
<FormattedMessage
id='member_team_item.confirmDemotion'
defaultMessage='Confirm Demotion'
/>
);
makeDemoteModal = ( makeDemoteModal = (
<ConfirmModal <ConfirmModal
show={this.state.showDemoteModal} show={this.state.showDemoteModal}
title={formatMessage(holders.confirmDemoteRoleTitle)} title={title}
message={[formatMessage(holders.confirmDemoteDescription), React.createElement('br'), React.createElement('br'), formatMessage(holders.confirmDemotionCmd), serverError]} message={message}
confirm_button={formatMessage(holders.confirmDemotion)} confirmButton={confirmButton}
onConfirm={this.handleDemoteSubmit} onConfirm={this.handleDemoteSubmit}
onCancel={this.handleDemoteCancel} onCancel={this.handleDemoteCancel}
/> />
@@ -292,16 +299,6 @@ export default class MemberListTeamItem extends React.Component {
} }
return ( return (
<tr>
<td className='row member-div'>
<img
className='post-profile-img pull-left'
src={`/api/v1/users/${user.id}/image?time=${timestamp}&${Utils.getSessionIndex()}`}
height='36'
width='36'
/>
<span className='more-name'>{Utils.displayUsername(user.id)}</span>
<span className='more-description'>{email}</span>
<div className='dropdown member-drop'> <div className='dropdown member-drop'>
<a <a
href='#' href='#'
@@ -322,18 +319,13 @@ export default class MemberListTeamItem extends React.Component {
{makeActive} {makeActive}
{makeNotActive} {makeNotActive}
</ul> </ul>
</div>
{makeDemoteModal} {makeDemoteModal}
{serverError} {serverError}
</td> </div>
</tr>
); );
} }
} }
MemberListTeamItem.propTypes = { TeamMembersDropdown.propTypes = {
intl: intlShape.isRequired,
user: React.PropTypes.object.isRequired user: React.PropTypes.object.isRequired
}; };
export default injectIntl(MemberListTeamItem);

Просмотреть файл

@@ -28,12 +28,13 @@ export default class TeamMembersModal extends React.Component {
} }
onShow() { onShow() {
if ($(window).width() > 768) { // TODO ugh
/*if ($(window).width() > 768) {
$(ReactDOM.findDOMNode(this.refs.modalBody)).perfectScrollbar(); $(ReactDOM.findDOMNode(this.refs.modalBody)).perfectScrollbar();
$(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 200); $(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 200);
} else { } else {
$(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 150); $(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 150);
} }*/
} }
render() { render() {
@@ -41,7 +42,7 @@ export default class TeamMembersModal extends React.Component {
return ( return (
<Modal <Modal
dialogClassName='team-members-modal' dialogClassName='more-modal'
show={this.props.show} show={this.props.show}
onHide={this.props.onHide} onHide={this.props.onHide}
> >
@@ -54,10 +55,8 @@ export default class TeamMembersModal extends React.Component {
}} }}
/> />
</Modal.Header> </Modal.Header>
<Modal.Body ref='modalBody'> <Modal.Body>
<div className='team-member-list'>
<MemberListTeam/> <MemberListTeam/>
</div>
</Modal.Body> </Modal.Body>
<Modal.Footer> <Modal.Footer>
<button <button

Просмотреть файл

@@ -9,6 +9,7 @@
} }
.more-table { .more-table {
margin: 0; margin: 0;
table-layout: fixed;
p { p {
font-size: 0.9em; font-size: 0.9em;
overflow: hidden; overflow: hidden;
@@ -55,8 +56,12 @@
&.td--action { &.td--action {
text-align: right; text-align: right;
padding: 8px 15px 8px 8px; padding: 8px 15px 8px 8px;
width: 80px;
vertical-align: middle; vertical-align: middle;
position: relative; position: relative;
&.lg {
width: 110px;
}
} }
} }
} }

Просмотреть файл

@@ -399,10 +399,6 @@ h3 {
} }
.member-role, .member-drop { .member-role, .member-drop {
position:absolute;
right: 15px;
top: 8px;
.fa { .fa {
margin-right: 5px; margin-right: 5px;
@include opacity(0.5); @include opacity(0.5);
@@ -413,7 +409,6 @@ h3 {
top: -50%; top: -50%;
right: 110%; right: 110%;
} }
} }
.member-invite { .member-invite {