UserGroupPageList.jsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React, { Fragment } from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import UserPicture from '../../User/UserPicture';
  5. import PageListMeta from '../../PageList/PageListMeta';
  6. import { createSubscribedElement } from '../../UnstatedUtils';
  7. import AppContainer from '../../../services/AppContainer';
  8. class UserGroupPageList extends React.Component {
  9. constructor(props) {
  10. super(props);
  11. this.renderPageList = this.renderPageList.bind(this);
  12. }
  13. renderPageList(page) {
  14. return (
  15. <li key={page._id}>
  16. <UserPicture user={page.lastUpdateUser} className="picture img-circle" />
  17. <a
  18. href={page.path}
  19. className="page-list-link"
  20. data-path={page.path}
  21. >
  22. {decodeURIComponent(page.path)}
  23. </a>
  24. <PageListMeta page={page} />
  25. </li>
  26. );
  27. }
  28. render() {
  29. const { t } = this.props;
  30. return (
  31. <Fragment>
  32. <legend className="m-t-20">{ t('Page') }</legend>
  33. <div className="page-list">
  34. <ul className="page-list-ul page-list-ul-flat">
  35. {this.props.relatedPages.map((page) => { return this.renderPageList(page) })}
  36. </ul>
  37. {this.props.relatedPages.length === 0 ? <p>{ t('user_group_management.no_pages') }</p> : null}
  38. </div>
  39. </Fragment>
  40. );
  41. }
  42. }
  43. UserGroupPageList.propTypes = {
  44. t: PropTypes.func.isRequired, // i18next
  45. relatedPages: PropTypes.arrayOf(PropTypes.object).isRequired,
  46. };
  47. /**
  48. * Wrapper component for using unstated
  49. */
  50. const UserGroupPageListWrapper = (props) => {
  51. return createSubscribedElement(UserGroupPageList, props, [AppContainer]);
  52. };
  53. export default withTranslation()(UserGroupPageListWrapper);