SavePageControls.jsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { translate } from 'react-i18next';
  4. import * as toastr from 'toastr';
  5. import SlackNotification from './SlackNotification';
  6. import GrantSelector from './SavePageControls/GrantSelector';
  7. class SavePageControls extends React.PureComponent {
  8. constructor(props) {
  9. super(props);
  10. this.state = {
  11. };
  12. this.apiErrorHandler = this.apiErrorHandler.bind(this);
  13. }
  14. componentWillMount() {
  15. }
  16. save() {
  17. const params = {
  18. };
  19. this.props.crowi.apiPost('/page.save', params)
  20. .then(res => {
  21. if (!res.ok) {
  22. throw new Error(res.error);
  23. }
  24. })
  25. .catch(this.apiErrorHandler)
  26. .then(() => {
  27. });
  28. }
  29. apiErrorHandler(error) {
  30. toastr.error(error.message, 'Error occured', {
  31. closeButton: true,
  32. progressBar: true,
  33. newestOnTop: false,
  34. showDuration: '100',
  35. hideDuration: '100',
  36. timeOut: '3000',
  37. });
  38. }
  39. render() {
  40. const { t } = this.props;
  41. return (
  42. <div className="d-flex align-items-center form-inline">
  43. <div className="mr-2">
  44. <SlackNotification
  45. crowi={this.props.crowi}
  46. pageId={this.props.pageId}
  47. pagePath={this.props.pagePath}
  48. isSlackEnabled={false}
  49. slackChannels={this.props.slackChannels}
  50. formName='pageForm' />
  51. </div>
  52. <div className="mr-2">
  53. <GrantSelector crowi={this.props.crowi}
  54. pageGrant={this.props.pageGrant}
  55. pageGrantGroupId={this.props.pageGrantGroupId}
  56. pageGrantGroupName={this.props.pageGrantGroupName} />
  57. </div>
  58. <button className="btn btn-primary btn-submit">{t('Save')}</button>
  59. </div>
  60. );
  61. }
  62. }
  63. SavePageControls.propTypes = {
  64. t: PropTypes.func.isRequired, // i18next
  65. crowi: PropTypes.object.isRequired,
  66. // for SlackNotification
  67. pageId: PropTypes.string,
  68. pagePath: PropTypes.string,
  69. slackChannels: PropTypes.string,
  70. // for GrantSelector
  71. pageGrant: PropTypes.number,
  72. pageGrantGroupId: PropTypes.string,
  73. pageGrantGroupName: PropTypes.string,
  74. };
  75. export default translate()(SavePageControls);