1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-08-01 07:10:55 +00:00
seahub/frontend/src/components/user-settings/user-basic-info-form.js

101 lines
3.0 KiB
JavaScript
Raw Normal View History

2019-05-07 06:57:22 +00:00
import React from 'react';
import PropTypes from 'prop-types';
2019-05-07 06:57:22 +00:00
import { gettext } from '../../utils/constants';
const {
2019-05-07 06:57:22 +00:00
nameLabel,
enableUpdateUserInfo,
enableUserSetContactEmail,
enableUserSetName
2019-05-07 06:57:22 +00:00
} = window.app.pageOptions;
class UserBasicInfoForm extends React.Component {
constructor(props) {
super(props);
const {
contact_email,
login_id,
2019-06-06 06:15:48 +00:00
name
2019-05-07 06:57:22 +00:00
} = this.props.userInfo;
this.state = {
contactEmail: contact_email,
loginID: login_id,
2019-06-06 06:15:48 +00:00
name: name
2019-05-07 06:57:22 +00:00
};
}
handleNameInputChange = (e) => {
this.setState({
name: e.target.value
});
};
2019-05-07 06:57:22 +00:00
handleContactEmailInputChange = (e) => {
this.setState({
contactEmail: e.target.value
});
};
2019-05-07 06:57:22 +00:00
handleSubmit = (e) => {
e.preventDefault();
let data = {};
if (enableUserSetName) {
data.name = this.state.name;
}
2019-05-08 02:59:27 +00:00
if (enableUserSetContactEmail) {
data.contact_email = this.state.contactEmail;
}
this.props.updateUserInfo(data);
};
2019-05-07 06:57:22 +00:00
render() {
const {
contactEmail,
loginID,
2019-06-06 06:15:48 +00:00
name
2019-05-07 06:57:22 +00:00
} = this.state;
return (
<form action="" method="post" onSubmit={this.handleSubmit}>
<div className="form-group row">
<label className="col-sm-1 col-form-label" htmlFor="name">{nameLabel}</label>
<div className="col-sm-5">
<input className="form-control" id="name" type="text" name="nickname" value={name} disabled={!enableUpdateUserInfo || !enableUserSetName} onChange={this.handleNameInputChange} />
2019-05-07 06:57:22 +00:00
</div>
</div>
{loginID && (
<div className="form-group row">
<label className="col-sm-1 col-form-label" htmlFor="user-name">{gettext('Username:')}</label>
<div className="col-sm-5">
<input className="form-control" id="user-name" type="text" name="username" value={loginID} disabled={true} readOnly={true} />
</div>
2019-05-13 04:17:40 +00:00
<p className="col-sm-5 m-0 input-tip">{gettext('You can use this field at login.')}</p>
2019-05-07 06:57:22 +00:00
</div>
)}
{(contactEmail || enableUserSetContactEmail) && (
<div className="form-group row">
<label className="col-sm-1 col-form-label" htmlFor="contact-email">{gettext('Contact Email:')}</label>
<div className="col-sm-5">
<input className="form-control" id="contact-email" type="text" name="contact_email" value={contactEmail} disabled={!enableUserSetContactEmail} readOnly={!enableUserSetContactEmail} onChange={this.handleContactEmailInputChange} />
</div>
2019-05-13 04:17:40 +00:00
<p className="col-sm-5 m-0 input-tip">{gettext('Your notifications will be sent to this email.')}</p>
2019-05-07 06:57:22 +00:00
</div>
)}
<button type="submit" className="btn btn-outline-primary offset-sm-1" disabled={!enableUpdateUserInfo}>{gettext('Submit')}</button>
2019-05-07 06:57:22 +00:00
</form>
);
}
}
UserBasicInfoForm.propTypes = {
updateUserInfo: PropTypes.func.isRequired,
userInfo: PropTypes.object.isRequired,
};
2019-05-07 06:57:22 +00:00
export default UserBasicInfoForm;