Yuki Takei 1 год назад
Родитель
Сommit
671ba53277

+ 1 - 1
apps/app/src/client/components/Admin/Customize/CustomizeTitle.tsx

@@ -16,7 +16,7 @@ export const CustomizeTitle: FC = () => {
 
   const { data: customizeTitle } = useCustomizeTitle();
 
-  const [currentCustomizeTitle, setCrrentCustomizeTitle] = useState(customizeTitle);
+  const [currentCustomizeTitle, setCrrentCustomizeTitle] = useState(customizeTitle ?? '');
 
   const onClickSubmit = async() => {
     try {

+ 2 - 1
apps/app/src/pages/admin/customize.page.tsx

@@ -12,6 +12,7 @@ import { Provider } from 'unstated';
 import type { CrowiRequest } from '~/interfaces/crowi-request';
 import type { CommonProps } from '~/pages/utils/commons';
 import { generateCustomTitle } from '~/pages/utils/commons';
+import { configManager } from '~/server/service/config-manager';
 import { useCustomizeTitle, useCurrentUser, useIsCustomizedLogoUploaded } from '~/stores-universal/context';
 
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -22,7 +23,7 @@ const ForbiddenPage = dynamic(() => import('~/client/components/Admin/ForbiddenP
 
 
 type Props = CommonProps & {
-  customizeTitle: string,
+  customizeTitle?: string,
   isCustomizedLogoUploaded: boolean,
 };
 

+ 53 - 52
apps/app/src/server/routes/apiv3/customize-setting.js

@@ -10,6 +10,7 @@ import { GrowiPlugin } from '~/features/growi-plugin/server/models';
 import { SupportedAction } from '~/interfaces/activity';
 import { AttachmentType } from '~/server/interfaces/attachment';
 import { Attachment } from '~/server/models/attachment';
+import { configManager } from '~/server/service/config-manager';
 import loggerFactory from '~/utils/logger';
 
 import { generateAddActivityMiddleware } from '../../middlewares/add-activity';
@@ -169,22 +170,22 @@ module.exports = (crowi) => {
    */
   router.get('/', loginRequiredStrictly, adminRequired, async(req, res) => {
     const customizeParams = {
-      isEnabledTimeline: await crowi.configManager.getConfig('crowi', 'customize:isEnabledTimeline'),
-      isEnabledAttachTitleHeader: await crowi.configManager.getConfig('crowi', 'customize:isEnabledAttachTitleHeader'),
-      pageLimitationS: await crowi.configManager.getConfig('crowi', 'customize:showPageLimitationS'),
-      pageLimitationM: await crowi.configManager.getConfig('crowi', 'customize:showPageLimitationM'),
-      pageLimitationL: await crowi.configManager.getConfig('crowi', 'customize:showPageLimitationL'),
-      pageLimitationXL: await crowi.configManager.getConfig('crowi', 'customize:showPageLimitationXL'),
-      isEnabledStaleNotification: await crowi.configManager.getConfig('crowi', 'customize:isEnabledStaleNotification'),
-      isAllReplyShown: await crowi.configManager.getConfig('crowi', 'customize:isAllReplyShown'),
-      isSearchScopeChildrenAsDefault: await crowi.configManager.getConfig('crowi', 'customize:isSearchScopeChildrenAsDefault'),
-      isEnabledMarp: await crowi.configManager.getConfig('crowi', 'customize:isEnabledMarp'),
-      styleName: await crowi.configManager.getConfig('crowi', 'customize:highlightJsStyle'),
-      styleBorder: await crowi.configManager.getConfig('crowi', 'customize:highlightJsStyleBorder'),
-      customizeTitle: await crowi.configManager.getConfig('crowi', 'customize:title'),
-      customizeScript: await crowi.configManager.getConfig('crowi', 'customize:script'),
-      customizeCss: await crowi.configManager.getConfig('crowi', 'customize:css'),
-      customizeNoscript: await crowi.configManager.getConfig('crowi', 'customize:noscript'),
+      isEnabledTimeline: await configManager.getConfig('crowi', 'customize:isEnabledTimeline'),
+      isEnabledAttachTitleHeader: await configManager.getConfig('crowi', 'customize:isEnabledAttachTitleHeader'),
+      pageLimitationS: await configManager.getConfig('crowi', 'customize:showPageLimitationS'),
+      pageLimitationM: await configManager.getConfig('crowi', 'customize:showPageLimitationM'),
+      pageLimitationL: await configManager.getConfig('crowi', 'customize:showPageLimitationL'),
+      pageLimitationXL: await configManager.getConfig('crowi', 'customize:showPageLimitationXL'),
+      isEnabledStaleNotification: await configManager.getConfig('crowi', 'customize:isEnabledStaleNotification'),
+      isAllReplyShown: await configManager.getConfig('crowi', 'customize:isAllReplyShown'),
+      isSearchScopeChildrenAsDefault: await configManager.getConfig('crowi', 'customize:isSearchScopeChildrenAsDefault'),
+      isEnabledMarp: await configManager.getConfig('crowi', 'customize:isEnabledMarp'),
+      styleName: await configManager.getConfig('crowi', 'customize:highlightJsStyle'),
+      styleBorder: await configManager.getConfig('crowi', 'customize:highlightJsStyleBorder'),
+      customizeTitle: await configManager.getConfig('crowi', 'customize:title'),
+      customizeScript: await configManager.getConfig('crowi', 'customize:script'),
+      customizeCss: await configManager.getConfig('crowi', 'customize:css'),
+      customizeNoscript: await configManager.getConfig('crowi', 'customize:noscript'),
     };
 
     return res.apiv3({ customizeParams });
@@ -210,7 +211,7 @@ module.exports = (crowi) => {
   router.get('/layout', loginRequiredStrictly, adminRequired, async(req, res) => {
 
     try {
-      const isContainerFluid = await crowi.configManager.getConfig('crowi', 'customize:isContainerFluid');
+      const isContainerFluid = await configManager.getConfig('crowi', 'customize:isContainerFluid');
       return res.apiv3({ isContainerFluid });
     }
     catch (err) {
@@ -249,9 +250,9 @@ module.exports = (crowi) => {
     };
 
     try {
-      await crowi.configManager.updateConfigs(requestParams);
+      await configManager.updateConfigs(requestParams);
       const customizedParams = {
-        isContainerFluid: await crowi.configManager.getConfig('crowi', 'customize:isContainerFluid'),
+        isContainerFluid: await configManager.getConfig('crowi', 'customize:isContainerFluid'),
       };
 
       const parameters = { action: SupportedAction.ACTION_ADMIN_LAYOUT_UPDATE };
@@ -269,7 +270,7 @@ module.exports = (crowi) => {
   router.get('/theme', loginRequiredStrictly, async(req, res) => {
 
     try {
-      const currentTheme = await crowi.configManager.getConfig('crowi', 'customize:theme');
+      const currentTheme = await configManager.getConfig('crowi', 'customize:theme');
 
       // retrieve plugin manifests
       const themePlugins = await GrowiPlugin.findEnabledPluginsByType(GrowiPluginType.Theme);
@@ -316,9 +317,9 @@ module.exports = (crowi) => {
     };
 
     try {
-      await crowi.configManager.updateConfigs(requestParams);
+      await configManager.updateConfigs(requestParams);
       const customizedParams = {
-        theme: await crowi.configManager.getConfig('crowi', 'customize:theme'),
+        theme: await configManager.getConfig('crowi', 'customize:theme'),
       };
       customizeService.initGrowiTheme();
       const parameters = { action: SupportedAction.ACTION_ADMIN_THEME_UPDATE };
@@ -336,8 +337,8 @@ module.exports = (crowi) => {
   router.get('/sidebar', loginRequiredStrictly, adminRequired, async(req, res) => {
 
     try {
-      const isSidebarCollapsedMode = await crowi.configManager.getConfig('crowi', 'customize:isSidebarCollapsedMode');
-      const isSidebarClosedAtDockMode = await crowi.configManager.getConfig('crowi', 'customize:isSidebarClosedAtDockMode');
+      const isSidebarCollapsedMode = await configManager.getConfig('crowi', 'customize:isSidebarCollapsedMode');
+      const isSidebarClosedAtDockMode = await configManager.getConfig('crowi', 'customize:isSidebarClosedAtDockMode');
       return res.apiv3({ isSidebarCollapsedMode, isSidebarClosedAtDockMode });
     }
     catch (err) {
@@ -354,10 +355,10 @@ module.exports = (crowi) => {
     };
 
     try {
-      await crowi.configManager.updateConfigs(requestParams);
+      await configManager.updateConfigs(requestParams);
       const customizedParams = {
-        isSidebarCollapsedMode: await crowi.configManager.getConfig('crowi', 'customize:isSidebarCollapsedMode'),
-        isSidebarClosedAtDockMode: await crowi.configManager.getConfig('crowi', 'customize:isSidebarClosedAtDockMode'),
+        isSidebarCollapsedMode: await configManager.getConfig('crowi', 'customize:isSidebarCollapsedMode'),
+        isSidebarClosedAtDockMode: await configManager.getConfig('crowi', 'customize:isSidebarClosedAtDockMode'),
       };
 
       activityEvent.emit('update', res.locals.activity._id, { action: SupportedAction.ACTION_ADMIN_SIDEBAR_UPDATE });
@@ -408,17 +409,17 @@ module.exports = (crowi) => {
     };
 
     try {
-      await crowi.configManager.updateConfigs(requestParams);
+      await configManager.updateConfigs(requestParams);
       const customizedParams = {
-        isEnabledTimeline: await crowi.configManager.getConfig('crowi', 'customize:isEnabledTimeline'),
-        isEnabledAttachTitleHeader: await crowi.configManager.getConfig('crowi', 'customize:isEnabledAttachTitleHeader'),
-        pageLimitationS: await crowi.configManager.getConfig('crowi', 'customize:showPageLimitationS'),
-        pageLimitationM: await crowi.configManager.getConfig('crowi', 'customize:showPageLimitationM'),
-        pageLimitationL: await crowi.configManager.getConfig('crowi', 'customize:showPageLimitationL'),
-        pageLimitationXL: await crowi.configManager.getConfig('crowi', 'customize:showPageLimitationXL'),
-        isEnabledStaleNotification: await crowi.configManager.getConfig('crowi', 'customize:isEnabledStaleNotification'),
-        isAllReplyShown: await crowi.configManager.getConfig('crowi', 'customize:isAllReplyShown'),
-        isSearchScopeChildrenAsDefault: await crowi.configManager.getConfig('crowi', 'customize:isSearchScopeChildrenAsDefault'),
+        isEnabledTimeline: await configManager.getConfig('crowi', 'customize:isEnabledTimeline'),
+        isEnabledAttachTitleHeader: await configManager.getConfig('crowi', 'customize:isEnabledAttachTitleHeader'),
+        pageLimitationS: await configManager.getConfig('crowi', 'customize:showPageLimitationS'),
+        pageLimitationM: await configManager.getConfig('crowi', 'customize:showPageLimitationM'),
+        pageLimitationL: await configManager.getConfig('crowi', 'customize:showPageLimitationL'),
+        pageLimitationXL: await configManager.getConfig('crowi', 'customize:showPageLimitationXL'),
+        isEnabledStaleNotification: await configManager.getConfig('crowi', 'customize:isEnabledStaleNotification'),
+        isAllReplyShown: await configManager.getConfig('crowi', 'customize:isAllReplyShown'),
+        isSearchScopeChildrenAsDefault: await configManager.getConfig('crowi', 'customize:isSearchScopeChildrenAsDefault'),
       };
       const parameters = { action: SupportedAction.ACTION_ADMIN_FUNCTION_UPDATE };
       activityEvent.emit('update', res.locals.activity._id, parameters);
@@ -438,9 +439,9 @@ module.exports = (crowi) => {
     };
 
     try {
-      await crowi.configManager.updateConfigs(requestParams);
+      await configManager.updateConfigs(requestParams);
       const customizedParams = {
-        isEnabledMarp: await crowi.configManager.getConfig('crowi', 'customize:isEnabledMarp'),
+        isEnabledMarp: await configManager.getConfig('crowi', 'customize:isEnabledMarp'),
       };
       const parameters = { action: SupportedAction.ACTION_ADMIN_FUNCTION_UPDATE };
       activityEvent.emit('update', res.locals.activity._id, parameters);
@@ -483,10 +484,10 @@ module.exports = (crowi) => {
     };
 
     try {
-      await crowi.configManager.updateConfigs(requestParams);
+      await configManager.updateConfigs(requestParams);
       const customizedParams = {
-        styleName: await crowi.configManager.getConfig('crowi', 'customize:highlightJsStyle'),
-        styleBorder: await crowi.configManager.getConfig('crowi', 'customize:highlightJsStyleBorder'),
+        styleName: await configManager.getConfig('crowi', 'customize:highlightJsStyle'),
+        styleBorder: await configManager.getConfig('crowi', 'customize:highlightJsStyleBorder'),
       };
       const parameters = { action: SupportedAction.ACTION_ADMIN_CODE_HIGHLIGHT_UPDATE };
       activityEvent.emit('update', res.locals.activity._id, parameters);
@@ -528,11 +529,11 @@ module.exports = (crowi) => {
     };
 
     try {
-      await crowi.configManager.updateConfigs(requestParams, { skipPubsub: true });
+      await configManager.updateConfigs(requestParams, { skipPubsub: true });
       crowi.customizeService.publishUpdatedMessage();
 
       const customizedParams = {
-        customizeTitle: await crowi.configManager.getConfig('crowi', 'customize:title'),
+        customizeTitle: await configManager.getConfig('crowi', 'customize:title'),
       };
       customizeService.initCustomTitle();
       const parameters = { action: SupportedAction.ACTION_ADMIN_CUSTOM_TITLE_UPDATE };
@@ -574,9 +575,9 @@ module.exports = (crowi) => {
       'customize:noscript': req.body.customizeNoscript,
     };
     try {
-      await crowi.configManager.updateConfigs(requestParams);
+      await configManager.updateConfigs(requestParams);
       const customizedParams = {
-        customizeNoscript: await crowi.configManager.getConfig('crowi', 'customize:noscript'),
+        customizeNoscript: await configManager.getConfig('crowi', 'customize:noscript'),
       };
       const parameters = { action: SupportedAction.ACTION_ADMIN_CUSTOM_NOSCRIPT_UPDATE };
       activityEvent.emit('update', res.locals.activity._id, parameters);
@@ -617,11 +618,11 @@ module.exports = (crowi) => {
       'customize:css': req.body.customizeCss,
     };
     try {
-      await crowi.configManager.updateConfigs(requestParams, { skipPubsub: true });
+      await configManager.updateConfigs(requestParams, { skipPubsub: true });
       crowi.customizeService.publishUpdatedMessage();
 
       const customizedParams = {
-        customizeCss: await crowi.configManager.getConfig('crowi', 'customize:css'),
+        customizeCss: await configManager.getConfig('crowi', 'customize:css'),
       };
       customizeService.initCustomCss();
       const parameters = { action: SupportedAction.ACTION_ADMIN_CUSTOM_CSS_UPDATE };
@@ -663,9 +664,9 @@ module.exports = (crowi) => {
       'customize:script': req.body.customizeScript,
     };
     try {
-      await crowi.configManager.updateConfigs(requestParams);
+      await configManager.updateConfigs(requestParams);
       const customizedParams = {
-        customizeScript: await crowi.configManager.getConfig('crowi', 'customize:script'),
+        customizeScript: await configManager.getConfig('crowi', 'customize:script'),
       };
       const parameters = { action: SupportedAction.ACTION_ADMIN_CUSTOM_SCRIPT_UPDATE };
       activityEvent.emit('update', res.locals.activity._id, parameters);
@@ -688,9 +689,9 @@ module.exports = (crowi) => {
       'customize:isDefaultLogo': isDefaultLogo,
     };
     try {
-      await crowi.configManager.updateConfigs(requestParams);
+      await configManager.updateConfigs(requestParams);
       const customizedParams = {
-        isDefaultLogo: await crowi.configManager.getConfig('crowi', 'customize:isDefaultLogo'),
+        isDefaultLogo: await configManager.getConfig('crowi', 'customize:isDefaultLogo'),
       };
       return res.apiv3({ customizedParams });
     }