Просмотр исходного кода

Merge pull request #2796 from weseek/feat/GW-3662-switch-file-uploader-form

Feat/gw 3662 switch file uploader form
itizawa 5 лет назад
Родитель
Сommit
248dd2524d

+ 1 - 0
resource/locales/en_US/admin/admin.json

@@ -43,6 +43,7 @@
     "confirm_to_initialize_mail_settings": "You can't restore to the current settings. Are you sure you want to initialize e-mail settings?",
     "file_upload_settings":"File Upload Settings",
     "file_upload_method":"File Upload Method",
+    "fixed_by_env_var": "This is fixed by the env var <code>FILE_UPLOAD={{fileUploadType}}</code>.",
     "gcp_label": "GCP",
     "aws_label": "AWS",
     "file_upload": "This is for uploading file settings. If you complete file upload settings, file upload function, profile picture function etc will be enabled.",

+ 1 - 0
resource/locales/ja_JP/admin/admin.json

@@ -45,6 +45,7 @@
     "file_upload_method":"ファイルアップロード方法",
     "gcp_label": "GCP",
     "aws_label": "AWS",
+    "fixed_by_env_var": "環境変数 <code>FILE_UPLOAD={{fileUploadType}}</code> により固定されています。",
     "file_upload": "ファイルをアップロードするための設定を行います。ファイルアップロードの設定を完了させると、ファイルアップロード機能、プロフィール写真機能などが有効になります。",
     "ses_settings":"SES設定",
     "test_connection": "接続テスト",

+ 1 - 0
resource/locales/zh_CN/admin/admin.json

@@ -45,6 +45,7 @@
     "file_upload_method":"File Upload Method",
     "gcp_label": "GCP",
     "aws_label": "AWS",
+		"fixed_by_env_var": "这是由env var<code>FILE_UPLOAD={{fileUploadType}}</code>修复的。",
     "file_upload": "This is for uploading file settings. If you complete file upload settings, file upload function, profile picture function etc will be enabled.",
     "ses_settings":"SES设置",
     "test_connection": "测试邮件服务器连接",

+ 9 - 0
src/client/js/components/Admin/App/FileUploadSetting.jsx

@@ -57,6 +57,7 @@ function FileUploadSetting(props) {
                     name="file-upload-type"
                     id={`file-upload-type-radio-${type}`}
                     checked={adminAppContainer.state.fileUploadType === type}
+                    disabled={adminAppContainer.state.isFixedFileUploadByEnvVar}
                     onChange={(e) => {
                     adminAppContainer.changeFileUploadType(type);
                   }}
@@ -66,6 +67,14 @@ function FileUploadSetting(props) {
               );
             })}
         </div>
+        {adminAppContainer.state.isFixedFileUploadByEnvVar && (
+          <p className="alert alert-warning mt-2 text-left offset-3 col-6">
+            <i className="icon-exclamation icon-fw">
+            </i><b>FIXED</b><br />
+            {/* eslint-disable-next-line react/no-danger */}
+            <b dangerouslySetInnerHTML={{ __html: t('admin:app_setting.fixed_by_env_var', { fileUploadType: adminAppContainer.state.envFileUploadType }) }} />
+          </p>
+        )}
       </div>
 
       {fileUploadType === 'aws' && <AwsSetting />}

+ 19 - 0
src/client/js/services/AdminAppContainer.js

@@ -36,6 +36,8 @@ export default class AdminAppContainer extends Container {
       sesSecretAccessKey: '',
 
       fileUploadType: '',
+      envFileUploadType: '',
+      isFixedFileUploadByEnvVar: false,
 
       gcsApiKeyJsonPath: '',
       envGcsApiKeyJsonPath: '',
@@ -88,6 +90,8 @@ export default class AdminAppContainer extends Container {
       sesSecretAccessKey: appSettingsParams.sesSecretAccessKey,
 
       fileUploadType: appSettingsParams.fileUploadType,
+      envFileUploadType: appSettingsParams.envFileUploadType,
+
       s3Region: appSettingsParams.s3Region,
       s3CustomEndpoint: appSettingsParams.s3CustomEndpoint,
       s3Bucket: appSettingsParams.s3Bucket,
@@ -101,6 +105,21 @@ export default class AdminAppContainer extends Container {
       envGcsUploadNamespace: appSettingsParams.envGcsUploadNamespace,
       isEnabledPlugins: appSettingsParams.isEnabledPlugins,
     });
+
+    // check is file upload type forced
+    if (this.isFixedFileUploadByEnvVar(appSettingsParams.envFileUploadType)) {
+      this.setState({ fileUploadType: appSettingsParams.envFileUploadType });
+      this.setState({ isFixedFileUploadByEnvVar: true });
+    }
+
+  }
+
+  /**
+   * get isFixedFileUploadByEnvVar
+   * @return {bool} isFixedFileUploadByEnvVar
+   */
+  isFixedFileUploadByEnvVar(envFileUploadType) {
+    return envFileUploadType != null;
   }
 
   /**

+ 2 - 0
src/server/routes/apiv3/app-settings.js

@@ -225,6 +225,8 @@ module.exports = (crowi) => {
       sesSecretAccessKey: crowi.configManager.getConfig('crowi', 'mail:sesSecretAccessKey'),
 
       fileUploadType: crowi.configManager.getConfig('crowi', 'app:fileUploadType'),
+      envFileUploadType: crowi.configManager.getConfigFromEnvVars('crowi', 'app:fileUploadType'),
+
       s3Region: crowi.configManager.getConfig('crowi', 'aws:s3Region'),
       s3CustomEndpoint: crowi.configManager.getConfig('crowi', 'aws:s3CustomEndpoint'),
       s3Bucket: crowi.configManager.getConfig('crowi', 'aws:s3Bucket'),

+ 6 - 6
src/server/service/config-loader.js

@@ -23,12 +23,12 @@ const TYPES = {
  *  So, parameters of these are under consideration.
  */
 const ENV_VAR_NAME_TO_CONFIG_INFO = {
-  // FILE_UPLOAD: {
-  //   ns:      ,
-  //   key:     ,
-  //   type:    ,
-  //   default:
-  // },
+  FILE_UPLOAD: {
+    ns:      'crowi',
+    key:     'app:fileUploadType',
+    type:    TYPES.STRING,
+    default: null,
+  },
   // HACKMD_URI: {
   //   ns:      ,
   //   key:     ,