diff --git a/src/pages-and-resources/PagesAndResources.jsx b/src/pages-and-resources/PagesAndResources.jsx index 1daa89096..7935aebea 100644 --- a/src/pages-and-resources/PagesAndResources.jsx +++ b/src/pages-and-resources/PagesAndResources.jsx @@ -14,6 +14,7 @@ import ResourceList from './resources/ResourcesList'; import { fetchPages } from './data/thunks'; import { useModels } from '../generic/model-store'; +import PagesAndResourcesProvider from './PagesAndResourcesProvider'; function PagesAndResources({ courseId, intl }) { const { path } = useRouteMatch(); @@ -29,23 +30,25 @@ function PagesAndResources({ courseId, intl }) { const pages = useModels('pages', pageIds); return ( -
-
-
-

{intl.formatMessage(messages.heading)}

- - {intl.formatMessage(messages['viewLive.button'])} - + +
+
+
+

{intl.formatMessage(messages.heading)}

+ + {intl.formatMessage(messages['viewLive.button'])} + +
+ +
- - -
- - - - - -
+ + + + + + + ); } diff --git a/src/pages-and-resources/PagesAndResourcesProvider.jsx b/src/pages-and-resources/PagesAndResourcesProvider.jsx new file mode 100644 index 000000000..0b34d9ed8 --- /dev/null +++ b/src/pages-and-resources/PagesAndResourcesProvider.jsx @@ -0,0 +1,21 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +export const PagesAndResourcesContext = React.createContext({}); + +export default function PagesAndResourcesProvider({ courseId, children }) { + return ( + + {children} + + ); +} + +PagesAndResourcesProvider.propTypes = { + courseId: PropTypes.string.isRequired, + children: PropTypes.node.isRequired, +}; diff --git a/src/pages-and-resources/discussions/DiscussionsSettings.jsx b/src/pages-and-resources/discussions/DiscussionsSettings.jsx index e628d4c15..44e77fd49 100644 --- a/src/pages-and-resources/discussions/DiscussionsSettings.jsx +++ b/src/pages-and-resources/discussions/DiscussionsSettings.jsx @@ -1,5 +1,5 @@ import React, { - useCallback, useEffect, useRef, useState, + useCallback, useContext, useEffect, useRef, useState, } from 'react'; import PropTypes from 'prop-types'; import { useDispatch } from 'react-redux'; @@ -22,6 +22,7 @@ import AppList from './AppList'; import ConfigFormContainer from './ConfigFormContainer'; import messages from './messages'; import { fetchApps, saveAppConfig } from './data/thunks'; +import { PagesAndResourcesContext } from '../PagesAndResourcesProvider'; function DiscussionsSettings({ courseId, intl }) { const [selectedAppId, setSelectedAppId] = useState(null); @@ -32,9 +33,9 @@ function DiscussionsSettings({ courseId, intl }) { const dispatch = useDispatch(); const app = useModel('apps', selectedAppId); + const { path: pagesAndResourcesPath } = useContext(PagesAndResourcesContext); + // Route paths - // TODO: pagesAndResourcesPath should probably be passed in. - const pagesAndResourcesPath = `/course/${courseId}/pages-and-resources`; const discussionsPath = `${pagesAndResourcesPath}/discussions`; const selectedAppConfigPath = `${discussionsPath}/configure/${selectedAppId}`;