AppSettingsPageContents.tsx 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import React from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import AdminAppContainer from '~/client/services/AdminAppContainer';
  4. import { withUnstatedContainers } from '../../UnstatedUtils';
  5. import AppSetting from './AppSetting';
  6. import FileUploadSetting from './FileUploadSetting';
  7. import MailSetting from './MailSetting';
  8. import MaintenanceMode from './MaintenanceMode';
  9. import PluginSetting from './PluginSetting';
  10. import SiteUrlSetting from './SiteUrlSetting';
  11. import V5PageMigration from './V5PageMigration';
  12. type Props = {
  13. adminAppContainer: AdminAppContainer,
  14. }
  15. const AppSettingsPageContents = (props: Props) => {
  16. const { t } = useTranslation();
  17. const { adminAppContainer } = props;
  18. const { isV5Compatible } = adminAppContainer.state;
  19. return (
  20. <div data-testid="admin-app-settings">
  21. {
  22. // Alert message will be displayed in case that the GROWI is under maintenance
  23. adminAppContainer.state.isMaintenanceMode && (
  24. <div className="alert alert-danger alert-link" role="alert">
  25. <h3 className="alert-heading">
  26. {t('admin:maintenance_mode.maintenance_mode')}
  27. </h3>
  28. <p>
  29. {t('admin:maintenance_mode.description')}
  30. </p>
  31. <hr />
  32. <a className="btn-link" href="#maintenance-mode" rel="noopener noreferrer">
  33. <i className="fa fa-fw fa-arrow-down ml-1" aria-hidden="true"></i>
  34. <strong>{t('admin:maintenance_mode.end_maintenance_mode')}</strong>
  35. </a>
  36. </div>
  37. )
  38. }
  39. {
  40. !isV5Compatible
  41. && (
  42. <div className="row">
  43. <div className="col-lg-12">
  44. <h2 className="admin-setting-header">{t('V5 Page Migration')}</h2>
  45. <V5PageMigration />
  46. </div>
  47. </div>
  48. )
  49. }
  50. <div className="row">
  51. <div className="col-lg-12">
  52. <h2 className="admin-setting-header">{t('App Settings')}</h2>
  53. <AppSetting />
  54. </div>
  55. </div>
  56. <div className="row mt-5">
  57. <div className="col-lg-12">
  58. <h2 className="admin-setting-header">{t('Site URL settings')}</h2>
  59. <SiteUrlSetting />
  60. </div>
  61. </div>
  62. <div className="row mt-5">
  63. <div className="col-lg-12">
  64. <h2 className="admin-setting-header" id="mail-settings">{t('admin:app_setting.mail_settings')}</h2>
  65. <MailSetting />
  66. </div>
  67. </div>
  68. <div className="row mt-5">
  69. <div className="col-lg-12">
  70. <h2 className="admin-setting-header">{t('admin:app_setting.file_upload_settings')}</h2>
  71. <FileUploadSetting />
  72. </div>
  73. </div>
  74. <div className="row mt-5">
  75. <div className="col-lg-12">
  76. <h2 className="admin-setting-header">{t('admin:app_setting.plugin_settings')}</h2>
  77. <PluginSetting />
  78. </div>
  79. </div>
  80. <div className="row">
  81. <div className="col-lg-12">
  82. <h2 className="admin-setting-header" id="maintenance-mode">{t('admin:maintenance_mode.maintenance_mode')}</h2>
  83. <MaintenanceMode />
  84. </div>
  85. </div>
  86. </div>
  87. );
  88. };
  89. /**
  90. * Wrapper component for using unstated
  91. */
  92. const AppSettingsPageContentsWrapper = withUnstatedContainers(AppSettingsPageContents, [AdminAppContainer]);
  93. export default AppSettingsPageContentsWrapper;