Compare commits

...

6 Commits

Author SHA1 Message Date
Kyle McCormick
08e11b6f27 Fix logout URL 2020-04-09 12:32:43 -04:00
Kyle McCormick
a6522f5983 Prefix a bunch of routes with /learning 2020-04-09 12:32:32 -04:00
Kyle McCormick
a21be5d83c Update .env.development for devstack 2020-04-08 16:43:46 -04:00
Kyle McCormick
521483b836 Temporary: Prefix React routes with /learning 2020-04-08 15:53:44 -04:00
Kyle McCormick
6a5e906cbe Switch to kdmccormick/devstack-frontends branch of frontend-build
Required doing some reformatting in InsturctorToolbar.jsx
to make the linter happy.

Also, add dev-build command.
2020-04-07 12:01:13 -04:00
Kyle McCormick
9b76cc4d97 Make React routes relative 2020-04-07 11:32:44 -04:00
8 changed files with 5703 additions and 2251 deletions

View File

@@ -1,16 +1,16 @@
NODE_ENV='development' NODE_ENV='development'
PORT=2000 PORT=2000
ACCESS_TOKEN_COOKIE_NAME='edx-jwt-cookie-header-payload' ACCESS_TOKEN_COOKIE_NAME='edx-jwt-cookie-header-payload'
BASE_URL='localhost:2000' BASE_URL='localhost:19000/learning'
CREDENTIALS_BASE_URL='http://localhost:18150' CREDENTIALS_BASE_URL='http://localhost:18150'
CSRF_TOKEN_API_PATH='/csrf/api/v1/token' CSRF_TOKEN_API_PATH='/csrf/api/v1/token'
ECOMMERCE_BASE_URL='http://localhost:18130' ECOMMERCE_BASE_URL='http://localhost:18130'
LANGUAGE_PREFERENCE_COOKIE_NAME='openedx-language-preference' LANGUAGE_PREFERENCE_COOKIE_NAME='openedx-language-preference'
LMS_BASE_URL='http://localhost:18000' LMS_BASE_URL='http://localhost:18000'
LOGIN_URL='http://localhost:18000/login' LOGIN_URL='http://localhost:18000/login'
LOGOUT_URL='http://localhost:18000/login' LOGOUT_URL='http://localhost:18000/logout'
MARKETING_SITE_BASE_URL='http://localhost:18000' MARKETING_SITE_BASE_URL='http://localhost:18000'
ORDER_HISTORY_URL='localhost:1996/orders' ORDER_HISTORY_URL='localhost:19000/orders'
REFRESH_ACCESS_TOKEN_ENDPOINT='http://localhost:18000/login_refresh' REFRESH_ACCESS_TOKEN_ENDPOINT='http://localhost:18000/login_refresh'
SEGMENT_KEY=null SEGMENT_KEY=null
SITE_NAME='edX' SITE_NAME='edX'

7883
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,7 @@
], ],
"scripts": { "scripts": {
"build": "fedx-scripts webpack", "build": "fedx-scripts webpack",
"dev-build": "fedx-scripts webpack-dev",
"i18n_extract": "BABEL_ENV=i18n fedx-scripts babel src --quiet > /dev/null", "i18n_extract": "BABEL_ENV=i18n fedx-scripts babel src --quiet > /dev/null",
"is-es5": "es-check es5 ./dist/*.js", "is-es5": "es-check es5 ./dist/*.js",
"lint": "fedx-scripts eslint --ext .js --ext .jsx .", "lint": "fedx-scripts eslint --ext .js --ext .jsx .",
@@ -56,7 +57,7 @@
"regenerator-runtime": "^0.13.3" "regenerator-runtime": "^0.13.3"
}, },
"devDependencies": { "devDependencies": {
"@edx/frontend-build": "^3.0.0", "@edx/frontend-build": "github:edx/frontend-build#kdmccormick/devstack-frontends",
"codecov": "^3.6.1", "codecov": "^3.6.1",
"es-check": "^5.1.0", "es-check": "^5.1.0",
"glob": "^7.1.6", "glob": "^7.1.6",

View File

@@ -7,7 +7,7 @@ export default function SequenceLink({ id, courseId }) {
const sequence = useModel('sequences', id); const sequence = useModel('sequences', id);
return ( return (
<div className="ml-4"> <div className="ml-4">
<Link to={`/course/${courseId}/${id}`}>{sequence.title}</Link> <Link to={`/learning/course/${courseId}/${id}`}>{sequence.title}</Link>
</div> </div>
); );
} }

View File

@@ -22,7 +22,7 @@ function useUnitNavigationHandler(courseId, sequenceId, unitId) {
const dispatch = useDispatch(); const dispatch = useDispatch();
return useCallback((nextUnitId) => { return useCallback((nextUnitId) => {
dispatch(checkBlockCompletion(courseId, sequenceId, unitId)); dispatch(checkBlockCompletion(courseId, sequenceId, unitId));
history.push(`/course/${courseId}/${sequenceId}/${nextUnitId}`); history.push(`/learning/course/${courseId}/${sequenceId}/${nextUnitId}`);
}, [courseId, sequenceId]); }, [courseId, sequenceId]);
} }
@@ -56,7 +56,7 @@ function useNextSequenceHandler(courseId, sequenceId) {
return useCallback(() => { return useCallback(() => {
if (nextSequence !== null) { if (nextSequence !== null) {
const nextUnitId = nextSequence.unitIds[0]; const nextUnitId = nextSequence.unitIds[0];
history.push(`/course/${courseId}/${nextSequence.id}/${nextUnitId}`); history.push(`/learning/course/${courseId}/${nextSequence.id}/${nextUnitId}`);
} }
}, [courseStatus, sequenceStatus, sequenceId]); }, [courseStatus, sequenceStatus, sequenceId]);
} }
@@ -68,7 +68,7 @@ function usePreviousSequenceHandler(courseId, sequenceId) {
return useCallback(() => { return useCallback(() => {
if (previousSequence !== null) { if (previousSequence !== null) {
const previousUnitId = previousSequence.unitIds[previousSequence.unitIds.length - 1]; const previousUnitId = previousSequence.unitIds[previousSequence.unitIds.length - 1];
history.push(`/course/${courseId}/${previousSequence.id}/${previousUnitId}`); history.push(`/learning/course/${courseId}/${previousSequence.id}/${previousUnitId}`);
} }
}, [courseStatus, sequenceStatus, sequenceId]); }, [courseStatus, sequenceStatus, sequenceId]);
} }
@@ -91,7 +91,7 @@ function useContentRedirect(courseStatus, sequenceStatus) {
useEffect(() => { useEffect(() => {
if (courseStatus === 'loaded' && !sequenceId) { if (courseStatus === 'loaded' && !sequenceId) {
// This is a replace because we don't want this change saved in the browser's history. // This is a replace because we don't want this change saved in the browser's history.
history.replace(`/course/${courseId}/${firstSequenceId}`); history.replace(`/learning/course/${courseId}/${firstSequenceId}`);
} }
}, [courseStatus, sequenceId]); }, [courseStatus, sequenceId]);
@@ -102,7 +102,7 @@ function useContentRedirect(courseStatus, sequenceStatus) {
const unitIndex = sequence.position || 0; const unitIndex = sequence.position || 0;
const nextUnitId = sequence.unitIds[unitIndex]; const nextUnitId = sequence.unitIds[unitIndex];
// This is a replace because we don't want this change saved in the browser's history. // This is a replace because we don't want this change saved in the browser's history.
history.replace(`/course/${courseId}/${sequence.id}/${nextUnitId}`); history.replace(`/learning/course/${courseId}/${sequence.id}/${nextUnitId}`);
} }
} }
}, [sequenceStatus, sequenceId, unitId]); }, [sequenceStatus, sequenceId, unitId]);
@@ -163,7 +163,7 @@ export default function CoursewareContainer() {
useSavedSequencePosition(courseId, sequenceId, routeUnitId); useSavedSequencePosition(courseId, sequenceId, routeUnitId);
if (courseStatus === 'denied') { if (courseStatus === 'denied') {
return <Redirect to={`/redirect/course-home/${courseId}`} />; return <Redirect to={`/learning/redirect/course-home/${courseId}`} />;
} }
return ( return (

View File

@@ -12,7 +12,7 @@ function ContentLock({
intl, courseId, prereqSectionName, prereqId, sequenceTitle, intl, courseId, prereqSectionName, prereqId, sequenceTitle,
}) { }) {
const handleClick = useCallback(() => { const handleClick = useCallback(() => {
history.push(`/course/${courseId}/${prereqId}`); history.push(`/learning/course/${courseId}/${prereqId}`);
}); });
return ( return (

View File

@@ -28,13 +28,13 @@ subscribe(APP_READY, () => {
<AppProvider store={store}> <AppProvider store={store}>
<UserMessagesProvider> <UserMessagesProvider>
<Switch> <Switch>
<Route path="/redirect" component={CoursewareRedirect} /> <Route path="/learning/redirect" component={CoursewareRedirect} />
<Route path="/course/:courseId/home" component={CourseHomeContainer} /> <Route path="/learning/course/:courseId/home" component={CourseHomeContainer} />
<Route <Route
path={[ path={[
'/course/:courseId/:sequenceId/:unitId', '/learning/course/:courseId/:sequenceId/:unitId',
'/course/:courseId/:sequenceId', '/learning/course/:courseId/:sequenceId',
'/course/:courseId', '/learning/course/:courseId',
]} ]}
component={CoursewareContainer} component={CoursewareContainer}
/> />