Yuki Takei 6 лет назад
Родитель
Сommit
c09c8cad3d

+ 9 - 2
src/client/js/components/Admin/ImportData/GrowiZipImportForm.jsx

@@ -4,6 +4,7 @@ import { withTranslation } from 'react-i18next';
 import * as toastr from 'toastr';
 
 import GrowiArchiveImportOption from '@commons/models/admin/growi-archive-import-option';
+import ImportOptionForPages from '@commons/models/admin/import-option-for-pages';
 
 import { createSubscribedElement } from '../../UnstatedUtils';
 import AppContainer from '../../../services/AppContainer';
@@ -27,6 +28,10 @@ const GROUPS_CONFIG = [
 ];
 const ALL_GROUPED_COLLECTIONS = GROUPS_PAGE.concat(GROUPS_USER).concat(GROUPS_CONFIG);
 
+const IMPORT_OPTION_CLASS_MAPPING = {
+  pages: ImportOptionForPages,
+};
+
 class GrowiImportForm extends React.Component {
 
   constructor(props) {
@@ -66,8 +71,9 @@ class GrowiImportForm extends React.Component {
       const initialMode = (MODE_RESTRICTED_COLLECTION[collectionName] != null)
         ? MODE_RESTRICTED_COLLECTION[collectionName][0]
         : DEFAULT_MODE;
-      // create GrowiArchiveImportOption
-      this.initialState.optionsMap[collectionName] = new GrowiArchiveImportOption(initialMode);
+      // create GrowiArchiveImportOption instance
+      const ImportOption = IMPORT_OPTION_CLASS_MAPPING[collectionName] || GrowiArchiveImportOption;
+      this.initialState.optionsMap[collectionName] = new ImportOption(initialMode);
     });
 
     this.state = this.initialState;
@@ -402,6 +408,7 @@ class GrowiImportForm extends React.Component {
       <GrowiZipImportConfigurationModal
         isOpen={isConfigurationModalOpen}
         onClose={() => this.setState({ isConfigurationModalOpen: false })}
+        onOptionChange={this.updateOption}
         collectionName={collectionName}
         option={optionsMap[collectionName]}
       />

+ 5 - 2
src/lib/models/admin/growi-archive-import-option.js

@@ -1,8 +1,11 @@
 class GrowiArchiveImportOption {
 
-  constructor(mode, schema = {}) {
+  constructor(mode, initProps = {}) {
     this.mode = mode;
-    this.schema = schema;
+
+    Object.entries(initProps).forEach(([key, value]) => {
+      this[key] = value;
+    });
   }
 
 }

+ 20 - 0
src/lib/models/admin/import-option-for-pages.js

@@ -0,0 +1,20 @@
+const GrowiArchiveImportOption = require('./growi-archive-import-option');
+
+const DEFAULT_PROPS = {
+  isOverwriteAuthorWithCurrentUser: false,
+  makePublicForGrant2: false,
+  makePublicForGrant4: false,
+  makePublicForGrant5: false,
+  initPageMetadatas: false,
+  initHackmdDatas: false,
+};
+
+class ImportOptionForPages extends GrowiArchiveImportOption {
+
+  constructor(mode, initProps) {
+    super(mode, initProps || DEFAULT_PROPS);
+  }
+
+}
+
+module.exports = ImportOptionForPages;