Taichi Masuyama 4 anni fa
parent
commit
52ac5fefda

+ 4 - 4
packages/app/src/client/services/AdminAppContainer.js

@@ -22,7 +22,7 @@ export default class AdminAppContainer extends Container {
       isEmailPublishedForNewUser: true,
       fileUpload: '',
 
-      isPageSchemaV4Compatible: false,
+      isV5Compatible: null,
       siteUrl: '',
       envSiteUrl: '',
       isSetSiteUrl: true,
@@ -82,7 +82,7 @@ export default class AdminAppContainer extends Container {
       globalLang: appSettingsParams.globalLang,
       isEmailPublishedForNewUser: appSettingsParams.isEmailPublishedForNewUser,
       fileUpload: appSettingsParams.fileUpload,
-      isPageSchemaV4Compatible: appSettingsParams.isPageSchemaV4Compatible,
+      isV5Compatible: appSettingsParams.isV5Compatible,
       siteUrl: appSettingsParams.siteUrl,
       envSiteUrl: appSettingsParams.envSiteUrl,
       isSetSiteUrl: !!appSettingsParams.siteUrl,
@@ -165,8 +165,8 @@ export default class AdminAppContainer extends Container {
   /**
    * Change site url
    */
-  changeIsPageSchemaV4Compatible(isPageSchemaV4Compatible) {
-    this.setState({ isPageSchemaV4Compatible });
+  changeisV5Compatible(isV5Compatible) {
+    this.setState({ isV5Compatible });
   }
 
   /**

+ 8 - 4
packages/app/src/components/Admin/AdminHome/AdminHome.jsx

@@ -34,15 +34,19 @@ class AdminHome extends React.Component {
 
   render() {
     const { t, adminHomeContainer, adminAppContainer } = this.props;
-    const { isPageSchemaV4Compatible } = adminAppContainer.state;
+    const { isV5Compatible } = adminAppContainer.state;
+
+    let alertStyle = 'alert-info';
+    if (isV5Compatible == null) alertStyle = 'alert-warning';
 
     return (
       <Fragment>
         {
-          !isPageSchemaV4Compatible
+          // not show if true
+          !isV5Compatible
           && (
-            <div className="alert alert-warning">
-              GROWI is running with v4 compatible mode. To use new features such as Page tree or easy renaming, please migrate page schema to v5.<br />
+            <div className={`alert ${alertStyle}`}>
+              GROWI is running with v4 compatible pages. To use new features such as Page tree or easy renaming, please migrate page schema to v5.<br />
               <a className="btn-link" href="/admin/app" rel="noopener noreferrer">
                 <i className="fa fa-link ml-1" aria-hidden="true"></i>
                 <strong>Upgrade to v5</strong>

+ 5 - 5
packages/app/src/components/Admin/App/AppSettingsPageContents.jsx

@@ -8,7 +8,7 @@ import SiteUrlSetting from './SiteUrlSetting';
 import MailSetting from './MailSetting';
 import PluginSetting from './PluginSetting';
 import FileUploadSetting from './FileUploadSetting';
-import { V4PageMigration } from './V4PageMigration';
+import { V5PageMigration } from './V5PageMigration';
 
 import AdminAppContainer from '~/client/services/AdminAppContainer';
 
@@ -16,17 +16,17 @@ class AppSettingsPageContents extends React.Component {
 
   render() {
     const { t, adminAppContainer } = this.props;
-    const { isPageSchemaV4Compatible } = adminAppContainer.state;
+    const { isV5Compatible } = adminAppContainer.state;
 
     return (
       <Fragment>
         {
-          !isPageSchemaV4Compatible
+          !isV5Compatible
           && (
             <div className="row">
               <div className="col-lg-12">
-                <h2 className="admin-setting-header">V4 Page Migration</h2>
-                <V4PageMigration />
+                <h2 className="admin-setting-header">V5 Page Migration</h2>
+                <V5PageMigration isV5Compatible={isV5Compatible} />
               </div>
             </div>
           )

+ 9 - 6
packages/app/src/components/Admin/App/V4PageMigration.tsx → packages/app/src/components/Admin/App/V5PageMigration.tsx

@@ -3,13 +3,13 @@ import PropTypes from 'prop-types';
 import { withTranslation } from 'react-i18next';
 
 
-export const V4PageMigration: FC<any> = (props) => {
-  const { t } = props;
+export const V5PageMigration: FC<any> = (props) => {
+  const { t, isV5Compatible } = props;
 
   return (
     <>
       <p className="card well">
-        GROWI is running with v4 compatible mode.<br />
+        GROWI is running with v4 compatible pages.<br />
         To use new features such as Page tree or easy renaming, please migrate page schema to v5.<br />
         <br />
         <span className="text-danger">
@@ -19,6 +19,10 @@ export const V4PageMigration: FC<any> = (props) => {
       </p>
       <div className="row my-3">
         <div className="mx-auto">
+          {
+            isV5Compatible == null
+            && (<button type="button" className="btn btn-secondary mr-3" onClick={() => { /* Set false */ }}>Not now</button>)
+          }
           <button type="button" className="btn btn-warning" onClick={() => { /* Show modal, then start migration */ }}>Upgrade to v5</button>
         </div>
       </div>
@@ -26,8 +30,7 @@ export const V4PageMigration: FC<any> = (props) => {
   );
 };
 
-V4PageMigration.propTypes = {
+V5PageMigration.propTypes = {
   t: PropTypes.func.isRequired, // i18next
+  isV5Compatible: PropTypes.bool,
 };
-
-export default withTranslation()(V4PageMigration);

+ 1 - 0
packages/app/src/server/models/config.ts

@@ -36,6 +36,7 @@ export const generateConfigsForInstalling = (): { [key: string]: any } => {
   config['app:installed'] = true;
   config['app:fileUpload'] = true;
   config['customize:isSavedStatesOfTabChanges'] = false;
+  config['app:isV5Compatible'] = true;
 
   return config;
 };

+ 1 - 1
packages/app/src/server/routes/apiv3/app-settings.js

@@ -225,7 +225,7 @@ module.exports = (crowi) => {
       globalLang: crowi.configManager.getConfig('crowi', 'app:globalLang'),
       isEmailPublishedForNewUser: crowi.configManager.getConfig('crowi', 'customize:isEmailPublishedForNewUser'),
       fileUpload: crowi.configManager.getConfig('crowi', 'app:fileUpload'),
-      isPageSchemaV4Compatible: crowi.configManager.getConfig('crowi', 'app:isPageSchemaV4Compatible'),
+      isV5Compatible: crowi.configManager.getConfig('crowi', 'app:isV5Compatible'),
       siteUrl: crowi.configManager.getConfig('crowi', 'app:siteUrl'),
       envSiteUrl: crowi.configManager.getConfigFromEnvVars('crowi', 'app:siteUrl'),
       isMailerSetup: crowi.mailService.isMailerSetup,

+ 4 - 4
packages/app/src/server/service/config-loader.ts

@@ -172,11 +172,11 @@ const ENV_VAR_NAME_TO_CONFIG_INFO = {
     type:    ValueType.BOOLEAN,
     default: false,
   },
-  IS_PAGE_SCHEMA_V4_COMPATIBLE: {
+  IS_V5_COMPATIBLE: {
     ns:      'crowi',
-    key:     'app:isPageSchemaV4Compatible',
-    type:    ValueType.STRING,
-    default: false,
+    key:     'app:isV5Compatible',
+    type:    ValueType.BOOLEAN,
+    default: undefined,
   },
   S2SMSG_PUBSUB_SERVER_TYPE: {
     ns:      'crowi',