Compare commits
6 Commits
release/ul
...
kdmccormic
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
08e11b6f27 | ||
|
|
a6522f5983 | ||
|
|
a21be5d83c | ||
|
|
521483b836 | ||
|
|
6a5e906cbe | ||
|
|
9b76cc4d97 |
@@ -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'
|
||||||
|
|||||||
7915
package-lock.json
generated
7915
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -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",
|
||||||
|
|||||||
@@ -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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -14,14 +14,14 @@ function InstructorToolbar(props) {
|
|||||||
<div className="container-fluid py-3 d-md-flex justify-content-end align-items-center">
|
<div className="container-fluid py-3 d-md-flex justify-content-end align-items-center">
|
||||||
<div className="flex-grow-1">
|
<div className="flex-grow-1">
|
||||||
<Collapsible.Advanced className="mr-5 mb-md-0">
|
<Collapsible.Advanced className="mr-5 mb-md-0">
|
||||||
You are currently previewing the new learning sequence experience.
|
You are currently previewing the new learning sequence experience.
|
||||||
<Collapsible.Trigger className="d-inline-block ml-2" style={{ cursor: 'pointer' }}>
|
<Collapsible.Trigger className="d-inline-block ml-2" style={{ cursor: 'pointer' }}>
|
||||||
<Collapsible.Visible whenClosed>
|
<Collapsible.Visible whenClosed>
|
||||||
<span style={{ borderBottom: 'solid 1px white' }}>More info</span> →
|
<span style={{ borderBottom: 'solid 1px white' }}>More info</span> →
|
||||||
</Collapsible.Visible>
|
</Collapsible.Visible>
|
||||||
</Collapsible.Trigger>
|
</Collapsible.Trigger>
|
||||||
<Collapsible.Body>
|
<Collapsible.Body>
|
||||||
This preview is to allow for early content testing, especially for custom content blocks, with the goal of ensuring it renders as expected in the next experience. You can learn more through the following <a className="text-white" style={{ textDecoration: 'underline' }} href="https://partners.edx.org/announcements/author-preview-learning-sequence-experience-update" target="blank" rel="noopener">Partner Portal post</a>. Please report any issues or provide <a className="text-white" style={{ textDecoration: 'underline' }} target="blank" rel="noopener" href="https://forms.gle/R6jMYJNTCj1vgC1D6">feedback using the linked form</a>.
|
This preview is to allow for early content testing, especially for custom content blocks, with the goal of ensuring it renders as expected in the next experience. You can learn more through the following <a className="text-white" style={{ textDecoration: 'underline' }} href="https://partners.edx.org/announcements/author-preview-learning-sequence-experience-update" target="blank" rel="noopener">Partner Portal post</a>. Please report any issues or provide <a className="text-white" style={{ textDecoration: 'underline' }} target="blank" rel="noopener" href="https://forms.gle/R6jMYJNTCj1vgC1D6">feedback using the linked form</a>.
|
||||||
<Collapsible.Trigger className="d-inline-block ml-2" style={{ cursor: 'pointer' }}>
|
<Collapsible.Trigger className="d-inline-block ml-2" style={{ cursor: 'pointer' }}>
|
||||||
<Collapsible.Visible whenOpen>
|
<Collapsible.Visible whenOpen>
|
||||||
<span style={{ borderBottom: 'solid 1px white' }}>Close</span> ×
|
<span style={{ borderBottom: 'solid 1px white' }}>Close</span> ×
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user