AdminNavigation.jsx 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import urljoin from 'url-join';
  5. const AdminNavigation = (props) => {
  6. const { t } = props;
  7. const pathname = window.location.pathname;
  8. const isActiveMenu = (path) => {
  9. return (pathname.startsWith(urljoin('/admin', path)));
  10. };
  11. return (
  12. <ul className="nav nav-pills nav-stacked">
  13. <li className={`${pathname === '/admin' && 'active'}`}>
  14. <a href="/admin"><i className="icon-fw icon-home"></i> { t('Wiki Management Home Page') }</a>
  15. </li>
  16. <li className={`${isActiveMenu('/app') && 'active'}`}>
  17. <a href="/admin/app"><i className="icon-fw icon-settings"></i> { t('App Settings') }</a>
  18. </li>
  19. <li className={`${isActiveMenu('/security') && 'active'}`}>
  20. <a href="/admin/security"><i className="icon-fw icon-shield"></i> { t('security_settings') }</a>
  21. </li>
  22. <li className={`${isActiveMenu('/markdown') && 'active'}`}>
  23. <a href="/admin/markdown"><i className="icon-fw icon-note"></i> { t('Markdown Settings') }</a>
  24. </li>
  25. <li className={`${isActiveMenu('/customize') && 'active'}`}>
  26. <a href="/admin/customize"><i className="icon-fw icon-wrench"></i> { t('Customize') }</a>
  27. </li>
  28. <li className={`${isActiveMenu('/importer') && 'active'}`}>
  29. <a href="/admin/importer"><i className="icon-fw icon-cloud-upload"></i> { t('Import Data') }</a>
  30. </li>
  31. <li className={`${isActiveMenu('/export') && 'active'}`}>
  32. <a href="/admin/export"><i className="icon-fw icon-cloud-download"></i> { t('Export Archive Data') }</a>
  33. </li>
  34. <li className={`${(isActiveMenu('/notification') || isActiveMenu('/global-notification')) && 'active'}`}>
  35. <a href="/admin/notification"><i className="icon-fw icon-bell"></i> { t('Notification Settings') }</a>
  36. </li>
  37. <li className={`${(isActiveMenu('/users')) && 'active'}`}>
  38. <a href="/admin/users"><i className="icon-fw icon-user"></i> { t('User_Management') }</a>
  39. </li>
  40. <li className={`${isActiveMenu('/user-group') && 'active'}`}>
  41. <a href="/admin/user-groups"><i className="icon-fw icon-people"></i> { t('UserGroup Management') }</a>
  42. </li>
  43. <li className={`${isActiveMenu('/search') && 'active'}`}>
  44. <a href="/admin/search"><i className="icon-fw icon-magnifier"></i> { t('Full Text Search Management') }</a>
  45. </li>
  46. </ul>
  47. );
  48. };
  49. AdminNavigation.propTypes = {
  50. t: PropTypes.func.isRequired, // i18next
  51. };
  52. export default withTranslation()(AdminNavigation);