AdminNavigation.jsx 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. <div className="list-group admin-navigation">
  13. <a href="/admin" className={`list-group-item list-group-item-action border-0 round-corner ${pathname === '/admin' && 'active'}`}>
  14. <i className="icon-fw icon-home"></i> {t('Management Wiki Home')}
  15. </a>
  16. <a href="/admin/app" className={`list-group-item list-group-item-action border-0 round-corner ${isActiveMenu('/app') && 'active'}`}>
  17. <i className="icon-fw icon-settings"></i> {t('App Settings')}
  18. </a>
  19. <a href="/admin/security" className={`list-group-item list-group-item-action border-0 round-corner ${isActiveMenu('/security') && 'active'}`}>
  20. <i className="icon-fw icon-shield"></i> {t('security_settings')}
  21. </a>
  22. <a href="/admin/markdown" className={`list-group-item list-group-item-action border-0 round-corner ${isActiveMenu('/markdown') && 'active'}`}>
  23. <i className="icon-fw icon-note"></i> {t('Markdown Settings')}
  24. </a>
  25. <a href="/admin/customize" className={`list-group-item list-group-item-action border-0 round-corner ${isActiveMenu('/customize') && 'active'}`}>
  26. <i className="icon-fw icon-wrench"></i> {t('Customize')}
  27. </a>
  28. <a href="/admin/importer" className={`list-group-item list-group-item-action border-0 round-corner ${isActiveMenu('/importer') && 'active'}`}>
  29. <i className="icon-fw icon-cloud-upload"></i> {t('Import Data')}
  30. </a>
  31. <a href="/admin/export" className={`list-group-item list-group-item-action border-0 round-corner ${isActiveMenu('/export') && 'active'}`}>
  32. <i className="icon-fw icon-cloud-download"></i> {t('Export Archive Data')}
  33. </a>
  34. <a
  35. href="/admin/notification"
  36. className={
  37. `list-group-item list-group-item-action border-0 round-corner ${(isActiveMenu('/notification') || isActiveMenu('/global-notification')) && 'active'}`
  38. }
  39. >
  40. <i className="icon-fw icon-bell"></i> {t('Notification Settings')}
  41. </a>
  42. <a href="/admin/users" className={`list-group-item list-group-item-action border-0 round-corner ${(isActiveMenu('/users')) && 'active'}`}>
  43. <i className="icon-fw icon-user"></i> {t('User_Management')}
  44. </a>
  45. <a href="/admin/user-groups" className={`list-group-item list-group-item-action border-0 round-corner ${isActiveMenu('/user-group') && 'active'}`}>
  46. <i className="icon-fw icon-people"></i> {t('UserGroup Management')}
  47. </a>
  48. <a href="/admin/search" className={`list-group-item list-group-item-action border-0 round-corner ${isActiveMenu('/search') && 'active'}`}>
  49. <i className="icon-fw icon-magnifier"></i> {t('Full Text Search Management')}
  50. </a>
  51. </div>
  52. );
  53. };
  54. AdminNavigation.propTypes = {
  55. t: PropTypes.func.isRequired, // i18next
  56. };
  57. export default withTranslation()(AdminNavigation);