Use ReactBootstrap.Modal instead.
Этот коммит содержится в:
@@ -1,37 +1,30 @@
|
|||||||
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
||||||
// See License.txt for license information.
|
// See License.txt for license information.
|
||||||
|
|
||||||
|
var Modal = ReactBootstrap.Modal;
|
||||||
|
|
||||||
export default class AboutBuildModal extends React.Component {
|
export default class AboutBuildModal extends React.Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.doHide = this.doHide.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
doHide() {
|
||||||
|
this.props.onModalDismissed();
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const config = global.window.config;
|
const config = global.window.config;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<Modal
|
||||||
className='modal fade'
|
show={this.props.show}
|
||||||
ref='modal'
|
onHide={this.doHide}
|
||||||
id='about_build'
|
|
||||||
tabIndex='-1'
|
|
||||||
role='dialog'
|
|
||||||
aria-hidden='true'
|
|
||||||
>
|
>
|
||||||
<div className='modal-dialog'>
|
<Modal.Header closeButton={true}>
|
||||||
<div className='modal-content'>
|
<Modal.Title>{`Mattermost ${config.Version}`}</Modal.Title>
|
||||||
<div className='modal-header'>
|
</Modal.Header>
|
||||||
<button
|
<Modal.Body>
|
||||||
type='button'
|
|
||||||
className='close'
|
|
||||||
data-dismiss='modal'
|
|
||||||
aria-label='Close'
|
|
||||||
>
|
|
||||||
<span aria-hidden='true'>×</span>
|
|
||||||
</button>
|
|
||||||
<h4
|
|
||||||
className='modal-title'
|
|
||||||
>
|
|
||||||
<span className='name'>{`Mattermost ${config.Version}`}</span>
|
|
||||||
</h4>
|
|
||||||
</div>
|
|
||||||
<div className='modal-body'>
|
|
||||||
<div className='row form-group'>
|
<div className='row form-group'>
|
||||||
<div className='col-sm-3 info__label'>{'Build Number:'}</div>
|
<div className='col-sm-3 info__label'>{'Build Number:'}</div>
|
||||||
<div className='col-sm-9'>{config.BuildNumber}</div>
|
<div className='col-sm-9'>{config.BuildNumber}</div>
|
||||||
@@ -44,17 +37,26 @@ export default class AboutBuildModal extends React.Component {
|
|||||||
<div className='col-sm-3 info__label'>{'Build Hash:'}</div>
|
<div className='col-sm-3 info__label'>{'Build Hash:'}</div>
|
||||||
<div className='col-sm-9'>{config.BuildHash}</div>
|
<div className='col-sm-9'>{config.BuildHash}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</Modal.Body>
|
||||||
<div className='modal-footer'>
|
<Modal.Footer>
|
||||||
<button
|
<button
|
||||||
type='button'
|
type='button'
|
||||||
className='btn btn-default'
|
className='btn btn-default'
|
||||||
data-dismiss='modal'
|
onClick={this.doHide}
|
||||||
>{'Close'}</button>
|
>
|
||||||
</div>
|
{'Close'}
|
||||||
</div>
|
</button>
|
||||||
</div>
|
</Modal.Footer>
|
||||||
</div>
|
</Modal>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AboutBuildModal.defaultProps = {
|
||||||
|
show: false
|
||||||
|
};
|
||||||
|
|
||||||
|
AboutBuildModal.propTypes = {
|
||||||
|
show: React.PropTypes.bool.isRequired,
|
||||||
|
onModalDismissed: React.PropTypes.func.isRequired
|
||||||
|
};
|
||||||
@@ -6,6 +6,8 @@ var client = require('../utils/client.jsx');
|
|||||||
var UserStore = require('../stores/user_store.jsx');
|
var UserStore = require('../stores/user_store.jsx');
|
||||||
var TeamStore = require('../stores/team_store.jsx');
|
var TeamStore = require('../stores/team_store.jsx');
|
||||||
|
|
||||||
|
var AboutBuildModal = require('./about_build_modal.jsx');
|
||||||
|
|
||||||
var Constants = require('../utils/constants.jsx');
|
var Constants = require('../utils/constants.jsx');
|
||||||
|
|
||||||
function getStateFromStores() {
|
function getStateFromStores() {
|
||||||
@@ -18,7 +20,9 @@ export default class NavbarDropdown extends React.Component {
|
|||||||
this.blockToggle = false;
|
this.blockToggle = false;
|
||||||
|
|
||||||
this.handleLogoutClick = this.handleLogoutClick.bind(this);
|
this.handleLogoutClick = this.handleLogoutClick.bind(this);
|
||||||
|
this.handleAboutModal = this.handleAboutModal.bind(this);
|
||||||
this.onListenerChange = this.onListenerChange.bind(this);
|
this.onListenerChange = this.onListenerChange.bind(this);
|
||||||
|
this.aboutModalDismissed = this.aboutModalDismissed.bind(this);
|
||||||
|
|
||||||
this.state = getStateFromStores();
|
this.state = getStateFromStores();
|
||||||
}
|
}
|
||||||
@@ -26,6 +30,12 @@ export default class NavbarDropdown extends React.Component {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
client.logout();
|
client.logout();
|
||||||
}
|
}
|
||||||
|
handleAboutModal() {
|
||||||
|
this.setState({showAboutModal: true});
|
||||||
|
}
|
||||||
|
aboutModalDismissed() {
|
||||||
|
this.setState({showAboutModal: false});
|
||||||
|
}
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
UserStore.addTeamsChangeListener(this.onListenerChange);
|
UserStore.addTeamsChangeListener(this.onListenerChange);
|
||||||
TeamStore.addChangeListener(this.onListenerChange);
|
TeamStore.addChangeListener(this.onListenerChange);
|
||||||
@@ -226,12 +236,15 @@ export default class NavbarDropdown extends React.Component {
|
|||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href='#'
|
href='#'
|
||||||
data-toggle='modal'
|
onClick={this.handleAboutModal}
|
||||||
data-target='#about_build'
|
|
||||||
>
|
>
|
||||||
{'About Mattermost'}
|
{'About Mattermost'}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<AboutBuildModal
|
||||||
|
show={this.state.showAboutModal}
|
||||||
|
onModalDismissed={this.aboutModalDismissed}
|
||||||
|
/>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ var ErrorStore = require('../stores/error_store.jsx');
|
|||||||
var ChannelLoader = require('../components/channel_loader.jsx');
|
var ChannelLoader = require('../components/channel_loader.jsx');
|
||||||
var MentionList = require('../components/mention_list.jsx');
|
var MentionList = require('../components/mention_list.jsx');
|
||||||
var ChannelInfoModal = require('../components/channel_info_modal.jsx');
|
var ChannelInfoModal = require('../components/channel_info_modal.jsx');
|
||||||
var AboutBuildModal = require('../components/about_build_modal.jsx');
|
|
||||||
var AccessHistoryModal = require('../components/access_history_modal.jsx');
|
var AccessHistoryModal = require('../components/access_history_modal.jsx');
|
||||||
var ActivityLogModal = require('../components/activity_log_modal.jsx');
|
var ActivityLogModal = require('../components/activity_log_modal.jsx');
|
||||||
var RemovedFromChannelModal = require('../components/removed_from_channel_modal.jsx');
|
var RemovedFromChannelModal = require('../components/removed_from_channel_modal.jsx');
|
||||||
@@ -151,11 +150,6 @@ function setupChannelPage(props) {
|
|||||||
document.getElementById('channel_info_modal')
|
document.getElementById('channel_info_modal')
|
||||||
);
|
);
|
||||||
|
|
||||||
React.render(
|
|
||||||
<AboutBuildModal />,
|
|
||||||
document.getElementById('about_build_modal')
|
|
||||||
);
|
|
||||||
|
|
||||||
React.render(
|
React.render(
|
||||||
<MoreChannelsModal />,
|
<MoreChannelsModal />,
|
||||||
document.getElementById('more_channels_modal')
|
document.getElementById('more_channels_modal')
|
||||||
|
|||||||
@@ -47,7 +47,6 @@
|
|||||||
<div id="team_members_modal"></div>
|
<div id="team_members_modal"></div>
|
||||||
<div id="direct_channel_modal"></div>
|
<div id="direct_channel_modal"></div>
|
||||||
<div id="channel_info_modal"></div>
|
<div id="channel_info_modal"></div>
|
||||||
<div id="about_build_modal"></div>
|
|
||||||
<div id="access_history_modal"></div>
|
<div id="access_history_modal"></div>
|
||||||
<div id="activity_log_modal"></div>
|
<div id="activity_log_modal"></div>
|
||||||
<div id="removed_from_channel_modal"></div>
|
<div id="removed_from_channel_modal"></div>
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user