CustomizeLayoutOptions.jsx 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import { createSubscribedElement } from '../../UnstatedUtils';
  5. import AdminCustomizeContainer from '../../../services/AdminCustomizeContainer';
  6. import AppContainer from '../../../services/AppContainer';
  7. import CustomizeLayoutOption from './CustomizeLayoutOption';
  8. class CustomizeLayoutOptions extends React.Component {
  9. render() {
  10. const { t, adminCustomizeContainer } = this.props;
  11. return (
  12. <div className="row">
  13. <div className="col-sm-4">
  14. <CustomizeLayoutOption
  15. layoutType="crowi-plus"
  16. isSelected={adminCustomizeContainer.state.currentLayout === 'growi'}
  17. onSelected={() => adminCustomizeContainer.switchLayoutType('growi')}
  18. labelHtml={`GROWI Enhanced Layout <small class="text-success">${t('customize_page.recommended')}</small>`}
  19. >
  20. <h4>{t('customize_page.layout_description.growi_title')}</h4>
  21. <ul>
  22. <li>{t('customize_page.layout_description.growi_text1')}</li>
  23. <li>{t('customize_page.layout_description.growi_text2')}</li>
  24. <li>{t('customize_page.layout_description.growi_text3')}</li>
  25. </ul>
  26. </CustomizeLayoutOption>
  27. </div>
  28. <div className="col-sm-4">
  29. <CustomizeLayoutOption
  30. layoutType="kibela"
  31. isSelected={adminCustomizeContainer.state.currentLayout === 'kibela'}
  32. onSelected={() => adminCustomizeContainer.switchLayoutType('kibela')}
  33. labelHtml="Kibela Like Layout"
  34. >
  35. <h4>{t('customize_page.layout_description.kibela_title')}</h4>
  36. <ul>
  37. <li>{t('customize_page.layout_description.kibela_text1')}</li>
  38. <li>{t('customize_page.layout_description.kibela_text2')}</li>
  39. <li>{t('customize_page.layout_description.kibela_text3')}</li>
  40. </ul>
  41. </CustomizeLayoutOption>
  42. </div>
  43. <div className="col-sm-4">
  44. <CustomizeLayoutOption
  45. layoutType="classic"
  46. isSelected={adminCustomizeContainer.state.currentLayout === 'crowi'}
  47. onSelected={() => adminCustomizeContainer.switchLayoutType('crowi')}
  48. labelHtml="Crowi Classic Layout"
  49. >
  50. <h4>{t('customize_page.layout_description.crowi_title')}</h4>
  51. <ul>
  52. <li>{t('customize_page.layout_description.crowi_text1')}</li>
  53. <li>{t('customize_page.layout_description.crowi_text2')}</li>
  54. <li>{t('customize_page.layout_description.crowi_text3')}</li>
  55. </ul>
  56. </CustomizeLayoutOption>
  57. </div>
  58. </div>
  59. );
  60. }
  61. }
  62. const CustomizeLayoutOptionsWrapper = (props) => {
  63. return createSubscribedElement(CustomizeLayoutOptions, props, [AppContainer, AdminCustomizeContainer]);
  64. };
  65. CustomizeLayoutOptions.propTypes = {
  66. t: PropTypes.func.isRequired, // i18next
  67. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  68. adminCustomizeContainer: PropTypes.instanceOf(AdminCustomizeContainer).isRequired,
  69. };
  70. export default withTranslation()(CustomizeLayoutOptionsWrapper);