mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-03-04 02:01:58 -05:00
Added routing to Portal (#17240)
refs. https://github.com/TryGhost/Product/issues/3545 Routing for Portal settings in AdminX was missing
This commit is contained in:
parent
702c88b9ba
commit
ca3fe7d9db
4 changed files with 15 additions and 6 deletions
|
@ -3,6 +3,7 @@ import DesignModal from '../settings/site/DesignModal';
|
||||||
import InviteUserModal from '../settings/general/InviteUserModal';
|
import InviteUserModal from '../settings/general/InviteUserModal';
|
||||||
import NavigationModal from '../settings/site/NavigationModal';
|
import NavigationModal from '../settings/site/NavigationModal';
|
||||||
import NiceModal from '@ebay/nice-modal-react';
|
import NiceModal from '@ebay/nice-modal-react';
|
||||||
|
import PortalModal from '../settings/membership/PortalModal';
|
||||||
import React, {createContext, useCallback, useContext, useEffect, useState} from 'react';
|
import React, {createContext, useCallback, useContext, useEffect, useState} from 'react';
|
||||||
import {SettingsContext} from './SettingsProvider';
|
import {SettingsContext} from './SettingsProvider';
|
||||||
|
|
||||||
|
@ -49,6 +50,8 @@ function handleNavigation() {
|
||||||
NiceModal.show(NavigationModal);
|
NiceModal.show(NavigationModal);
|
||||||
} else if (pathName === 'users/invite') {
|
} else if (pathName === 'users/invite') {
|
||||||
NiceModal.show(InviteUserModal);
|
NiceModal.show(InviteUserModal);
|
||||||
|
} else if (pathName === 'portal/edit') {
|
||||||
|
NiceModal.show(PortalModal);
|
||||||
}
|
}
|
||||||
const element = document.getElementById(pathName);
|
const element = document.getElementById(pathName);
|
||||||
if (element) {
|
if (element) {
|
||||||
|
|
|
@ -5,9 +5,9 @@ import React from 'react';
|
||||||
import SettingSection from '../../../admin-x-ds/settings/SettingSection';
|
import SettingSection from '../../../admin-x-ds/settings/SettingSection';
|
||||||
|
|
||||||
const searchKeywords = {
|
const searchKeywords = {
|
||||||
portal: ['portal', 'signup', 'sign up', 'sign in', 'login', 'account'],
|
portal: ['portal', 'signup', 'sign up', 'signin', 'sign in', 'login', 'account', 'membership'],
|
||||||
access: ['access', 'subscription', 'post'],
|
access: ['access', 'subscription', 'post', 'membership'],
|
||||||
analytics: ['analytics', 'tracking', 'privacy']
|
analytics: ['analytics', 'tracking', 'privacy', 'membership']
|
||||||
};
|
};
|
||||||
|
|
||||||
const MembershipSettings: React.FC = () => {
|
const MembershipSettings: React.FC = () => {
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import Button from '../../../admin-x-ds/global/Button';
|
import Button from '../../../admin-x-ds/global/Button';
|
||||||
import NiceModal from '@ebay/nice-modal-react';
|
|
||||||
import PortalModal from './PortalModal';
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import SettingGroup from '../../../admin-x-ds/settings/SettingGroup';
|
import SettingGroup from '../../../admin-x-ds/settings/SettingGroup';
|
||||||
|
import useRouting from '../../../hooks/useRouting';
|
||||||
|
|
||||||
const Portal: React.FC<{ keywords: string[] }> = ({keywords}) => {
|
const Portal: React.FC<{ keywords: string[] }> = ({keywords}) => {
|
||||||
|
const {updateRoute} = useRouting();
|
||||||
const openPreviewModal = () => {
|
const openPreviewModal = () => {
|
||||||
NiceModal.show(PortalModal);
|
updateRoute('portal/edit');
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -7,6 +7,7 @@ import React, {useContext, useState} from 'react';
|
||||||
import SignupOptions from './portal/SignupOptions';
|
import SignupOptions from './portal/SignupOptions';
|
||||||
import TabView, {Tab} from '../../../admin-x-ds/global/TabView';
|
import TabView, {Tab} from '../../../admin-x-ds/global/TabView';
|
||||||
import useForm, {Dirtyable} from '../../../hooks/useForm';
|
import useForm, {Dirtyable} from '../../../hooks/useForm';
|
||||||
|
import useRouting from '../../../hooks/useRouting';
|
||||||
import {PreviewModalContent} from '../../../admin-x-ds/global/modal/PreviewModal';
|
import {PreviewModalContent} from '../../../admin-x-ds/global/modal/PreviewModal';
|
||||||
import {Setting, SettingValue, Tier} from '../../../types/api';
|
import {Setting, SettingValue, Tier} from '../../../types/api';
|
||||||
import {SettingsContext} from '../../providers/SettingsProvider';
|
import {SettingsContext} from '../../providers/SettingsProvider';
|
||||||
|
@ -61,6 +62,7 @@ const Sidebar: React.FC<{
|
||||||
|
|
||||||
const PortalModal: React.FC = () => {
|
const PortalModal: React.FC = () => {
|
||||||
const modal = useModal();
|
const modal = useModal();
|
||||||
|
const {updateRoute} = useRouting();
|
||||||
|
|
||||||
const [selectedPreviewTab, setSelectedPreviewTab] = useState('signup');
|
const [selectedPreviewTab, setSelectedPreviewTab] = useState('signup');
|
||||||
|
|
||||||
|
@ -152,6 +154,9 @@ const PortalModal: React.FC = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
return <PreviewModalContent
|
return <PreviewModalContent
|
||||||
|
afterClose={() => {
|
||||||
|
updateRoute('portal');
|
||||||
|
}}
|
||||||
deviceSelector={false}
|
deviceSelector={false}
|
||||||
dirty={saveState === 'unsaved'}
|
dirty={saveState === 'unsaved'}
|
||||||
okLabel={okLabel}
|
okLabel={okLabel}
|
||||||
|
@ -165,6 +170,7 @@ const PortalModal: React.FC = () => {
|
||||||
onOk={async () => {
|
onOk={async () => {
|
||||||
if (!Object.values(errors).filter(Boolean).length) {
|
if (!Object.values(errors).filter(Boolean).length) {
|
||||||
await handleSave();
|
await handleSave();
|
||||||
|
updateRoute('portal');
|
||||||
modal.remove();
|
modal.remove();
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|
Loading…
Add table
Reference in a new issue