|
@@ -4,10 +4,12 @@ import React, { useEffect } from 'react';
|
|
|
import EventEmitter from 'events';
|
|
import EventEmitter from 'events';
|
|
|
|
|
|
|
|
import {
|
|
import {
|
|
|
- IDataWithMeta, IPageInfoForEntity, IPagePopulatedToShowRevision, isClient, isIPageInfoForEntity, IUser, IUserHasId, pagePathUtils, pathUtils,
|
|
|
|
|
|
|
+ isClient, isIPageInfoForEntity, pagePathUtils, pathUtils,
|
|
|
|
|
+} from '@growi/core';
|
|
|
|
|
+import type {
|
|
|
|
|
+ IDataWithMeta, IPageInfoForEntity, IPagePopulatedToShowRevision, IUser, IUserHasId,
|
|
|
} from '@growi/core';
|
|
} from '@growi/core';
|
|
|
import ExtensibleCustomError from 'extensible-custom-error';
|
|
import ExtensibleCustomError from 'extensible-custom-error';
|
|
|
-import { model as mongooseModel } from 'mongoose';
|
|
|
|
|
import {
|
|
import {
|
|
|
NextPage, GetServerSideProps, GetServerSidePropsContext,
|
|
NextPage, GetServerSideProps, GetServerSidePropsContext,
|
|
|
} from 'next';
|
|
} from 'next';
|
|
@@ -22,20 +24,18 @@ import { PageAlerts } from '~/components/PageAlert/PageAlerts';
|
|
|
// import { useTranslation } from '~/i18n';
|
|
// import { useTranslation } from '~/i18n';
|
|
|
import { CurrentPageContentFooter } from '~/components/PageContentFooter';
|
|
import { CurrentPageContentFooter } from '~/components/PageContentFooter';
|
|
|
import { UsersHomePageFooterProps } from '~/components/UsersHomePageFooter';
|
|
import { UsersHomePageFooterProps } from '~/components/UsersHomePageFooter';
|
|
|
-import { CrowiRequest } from '~/interfaces/crowi-request';
|
|
|
|
|
|
|
+import type { CrowiRequest } from '~/interfaces/crowi-request';
|
|
|
// import { renderScriptTagByName, renderHighlightJsStyleTag } from '~/service/cdn-resources-loader';
|
|
// import { renderScriptTagByName, renderHighlightJsStyleTag } from '~/service/cdn-resources-loader';
|
|
|
-// import { useIndentSize } from '~/stores/editor';
|
|
|
|
|
// import { useRendererSettings } from '~/stores/renderer';
|
|
// import { useRendererSettings } from '~/stores/renderer';
|
|
|
// import { EditorMode, useEditorMode, useIsMobile } from '~/stores/ui';
|
|
// import { EditorMode, useEditorMode, useIsMobile } from '~/stores/ui';
|
|
|
-import { EditorConfig } from '~/interfaces/editor-settings';
|
|
|
|
|
-import { CustomWindow } from '~/interfaces/global';
|
|
|
|
|
-import { RendererConfig } from '~/interfaces/services/renderer';
|
|
|
|
|
-import { ISidebarConfig } from '~/interfaces/sidebar-config';
|
|
|
|
|
-import { IUserUISettings } from '~/interfaces/user-ui-settings';
|
|
|
|
|
-import { PageModel, PageDocument } from '~/server/models/page';
|
|
|
|
|
-import { PageRedirectModel } from '~/server/models/page-redirect';
|
|
|
|
|
-import { UserUISettingsModel } from '~/server/models/user-ui-settings';
|
|
|
|
|
-import { useSWRxLayoutSetting } from '~/stores/admin/customize';
|
|
|
|
|
|
|
+import type { EditorConfig } from '~/interfaces/editor-settings';
|
|
|
|
|
+import type { CustomWindow } from '~/interfaces/global';
|
|
|
|
|
+import type { RendererConfig } from '~/interfaces/services/renderer';
|
|
|
|
|
+import type { ISidebarConfig } from '~/interfaces/sidebar-config';
|
|
|
|
|
+import type { IUserUISettings } from '~/interfaces/user-ui-settings';
|
|
|
|
|
+import type { PageModel, PageDocument } from '~/server/models/page';
|
|
|
|
|
+import type { PageRedirectModel } from '~/server/models/page-redirect';
|
|
|
|
|
+import type { UserUISettingsModel } from '~/server/models/user-ui-settings';
|
|
|
import { useSWRxCurrentPage, useSWRxIsGrantNormalized, useSWRxPageInfo } from '~/stores/page';
|
|
import { useSWRxCurrentPage, useSWRxIsGrantNormalized, useSWRxPageInfo } from '~/stores/page';
|
|
|
import { useRedirectFrom } from '~/stores/page-redirect';
|
|
import { useRedirectFrom } from '~/stores/page-redirect';
|
|
|
import {
|
|
import {
|
|
@@ -59,7 +59,7 @@ import {
|
|
|
useIsForbidden, useIsNotFound, useIsTrashPage, useIsSharedUser,
|
|
useIsForbidden, useIsNotFound, useIsTrashPage, useIsSharedUser,
|
|
|
useIsEnabledStaleNotification, useIsIdenticalPath,
|
|
useIsEnabledStaleNotification, useIsIdenticalPath,
|
|
|
useIsSearchServiceConfigured, useIsSearchServiceReachable, useDisableLinkSharing,
|
|
useIsSearchServiceConfigured, useIsSearchServiceReachable, useDisableLinkSharing,
|
|
|
- useDrawioUri, useHackmdUri,
|
|
|
|
|
|
|
+ useDrawioUri, useHackmdUri, useDefaultIndentSize, useIsIndentSizeForced,
|
|
|
useIsAclEnabled, useIsUserPage, useIsSearchPage,
|
|
useIsAclEnabled, useIsUserPage, useIsSearchPage,
|
|
|
useCsrfToken, useIsSearchScopeChildrenAsDefault, useCurrentPageId, useCurrentPathname,
|
|
useCsrfToken, useIsSearchScopeChildrenAsDefault, useCurrentPageId, useCurrentPathname,
|
|
|
useIsSlackConfigured, useRendererConfig, useEditingMarkdown,
|
|
useIsSlackConfigured, useRendererConfig, useEditingMarkdown,
|
|
@@ -75,7 +75,7 @@ import { calcIsContainerFluid } from './utils/layout';
|
|
|
|
|
|
|
|
const NotCreatablePage = dynamic(() => import('../components/NotCreatablePage').then(mod => mod.NotCreatablePage), { ssr: false });
|
|
const NotCreatablePage = dynamic(() => import('../components/NotCreatablePage').then(mod => mod.NotCreatablePage), { ssr: false });
|
|
|
const ForbiddenPage = dynamic(() => import('../components/ForbiddenPage'), { ssr: false });
|
|
const ForbiddenPage = dynamic(() => import('../components/ForbiddenPage'), { ssr: false });
|
|
|
-const UnsavedAlertDialog = dynamic(() => import('./UnsavedAlertDialog'), { ssr: false });
|
|
|
|
|
|
|
+const UnsavedAlertDialog = dynamic(() => import('../components/UnsavedAlertDialog'), { ssr: false });
|
|
|
const GrowiSubNavigationSwitcher = dynamic(() => import('../components/Navbar/GrowiSubNavigationSwitcher'), { ssr: false });
|
|
const GrowiSubNavigationSwitcher = dynamic(() => import('../components/Navbar/GrowiSubNavigationSwitcher'), { ssr: false });
|
|
|
const UsersHomePageFooter = dynamic<UsersHomePageFooterProps>(() => import('../components/UsersHomePageFooter')
|
|
const UsersHomePageFooter = dynamic<UsersHomePageFooterProps>(() => import('../components/UsersHomePageFooter')
|
|
|
.then(mod => mod.UsersHomePageFooter), { ssr: false });
|
|
.then(mod => mod.UsersHomePageFooter), { ssr: false });
|
|
@@ -159,8 +159,8 @@ type Props = CommonProps & {
|
|
|
isEnabledStaleNotification: boolean,
|
|
isEnabledStaleNotification: boolean,
|
|
|
// isEnabledLinebreaks: boolean,
|
|
// isEnabledLinebreaks: boolean,
|
|
|
// isEnabledLinebreaksInComments: boolean,
|
|
// isEnabledLinebreaksInComments: boolean,
|
|
|
- // adminPreferredIndentSize: number,
|
|
|
|
|
- // isIndentSizeForced: boolean,
|
|
|
|
|
|
|
+ adminPreferredIndentSize: number,
|
|
|
|
|
+ isIndentSizeForced: boolean,
|
|
|
disableLinkSharing: boolean,
|
|
disableLinkSharing: boolean,
|
|
|
|
|
|
|
|
rendererConfig: RendererConfig,
|
|
rendererConfig: RendererConfig,
|
|
@@ -219,7 +219,8 @@ const GrowiPage: NextPage<Props> = (props: Props) => {
|
|
|
useDrawioUri(props.drawioUri);
|
|
useDrawioUri(props.drawioUri);
|
|
|
useHackmdUri(props.hackmdUri);
|
|
useHackmdUri(props.hackmdUri);
|
|
|
// useNoCdn(props.noCdn);
|
|
// useNoCdn(props.noCdn);
|
|
|
- // useIndentSize(props.adminPreferredIndentSize);
|
|
|
|
|
|
|
+ useDefaultIndentSize(props.adminPreferredIndentSize);
|
|
|
|
|
+ useIsIndentSizeForced(props.isIndentSizeForced);
|
|
|
useDisableLinkSharing(props.disableLinkSharing);
|
|
useDisableLinkSharing(props.disableLinkSharing);
|
|
|
useRendererConfig(props.rendererConfig);
|
|
useRendererConfig(props.rendererConfig);
|
|
|
// useRendererSettings(props.rendererSettingsStr != null ? JSON.parse(props.rendererSettingsStr) : undefined);
|
|
// useRendererSettings(props.rendererSettingsStr != null ? JSON.parse(props.rendererSettingsStr) : undefined);
|
|
@@ -304,7 +305,9 @@ const GrowiPage: NextPage<Props> = (props: Props) => {
|
|
|
<BasicLayout title={useCustomTitle(props, 'GROWI')} className={classNames.join(' ')} expandContainer={isContainerFluid}>
|
|
<BasicLayout title={useCustomTitle(props, 'GROWI')} className={classNames.join(' ')} expandContainer={isContainerFluid}>
|
|
|
<div className="h-100 d-flex flex-column justify-content-between">
|
|
<div className="h-100 d-flex flex-column justify-content-between">
|
|
|
<header className="py-0 position-relative">
|
|
<header className="py-0 position-relative">
|
|
|
- <GrowiContextualSubNavigation isLinkSharingDisabled={props.disableLinkSharing} />
|
|
|
|
|
|
|
+ <div id="grw-subnav-container">
|
|
|
|
|
+ <GrowiContextualSubNavigation isLinkSharingDisabled={props.disableLinkSharing} />
|
|
|
|
|
+ </div>
|
|
|
</header>
|
|
</header>
|
|
|
<div className="d-edit-none">
|
|
<div className="d-edit-none">
|
|
|
<GrowiSubNavigationSwitcher />
|
|
<GrowiSubNavigationSwitcher />
|
|
@@ -373,6 +376,8 @@ class MultiplePagesHitsError extends ExtensibleCustomError {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function injectPageData(context: GetServerSidePropsContext, props: Props): Promise<void> {
|
|
async function injectPageData(context: GetServerSidePropsContext, props: Props): Promise<void> {
|
|
|
|
|
+ const { model: mongooseModel } = await import('mongoose');
|
|
|
|
|
+
|
|
|
const req: CrowiRequest = context.req as CrowiRequest;
|
|
const req: CrowiRequest = context.req as CrowiRequest;
|
|
|
const { crowi } = req;
|
|
const { crowi } = req;
|
|
|
const { revisionId } = req.query;
|
|
const { revisionId } = req.query;
|
|
@@ -425,6 +430,8 @@ async function injectPageData(context: GetServerSidePropsContext, props: Props):
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function injectUserUISettings(context: GetServerSidePropsContext, props: Props): Promise<void> {
|
|
async function injectUserUISettings(context: GetServerSidePropsContext, props: Props): Promise<void> {
|
|
|
|
|
+ const { model: mongooseModel } = await import('mongoose');
|
|
|
|
|
+
|
|
|
const req = context.req as CrowiRequest<IUserHasId & any>;
|
|
const req = context.req as CrowiRequest<IUserHasId & any>;
|
|
|
const { user } = req;
|
|
const { user } = req;
|
|
|
const UserUISettings = mongooseModel('UserUISettings') as UserUISettingsModel;
|
|
const UserUISettings = mongooseModel('UserUISettings') as UserUISettingsModel;
|
|
@@ -519,8 +526,8 @@ function injectServerConfigurations(context: GetServerSidePropsContext, props: P
|
|
|
isUploadableImage: crowi.fileUploadService.getIsUploadable(),
|
|
isUploadableImage: crowi.fileUploadService.getIsUploadable(),
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
- // props.adminPreferredIndentSize = configManager.getConfig('markdown', 'markdown:adminPreferredIndentSize');
|
|
|
|
|
- // props.isIndentSizeForced = configManager.getConfig('markdown', 'markdown:isIndentSizeForced');
|
|
|
|
|
|
|
+ props.adminPreferredIndentSize = configManager.getConfig('markdown', 'markdown:adminPreferredIndentSize');
|
|
|
|
|
+ props.isIndentSizeForced = configManager.getConfig('markdown', 'markdown:isIndentSizeForced');
|
|
|
|
|
|
|
|
props.rendererConfig = {
|
|
props.rendererConfig = {
|
|
|
isEnabledLinebreaks: configManager.getConfig('markdown', 'markdown:isEnabledLinebreaks'),
|
|
isEnabledLinebreaks: configManager.getConfig('markdown', 'markdown:isEnabledLinebreaks'),
|