Files
frontend-app-learning/src/courseware/course/course-exit/CourseNonPassing.jsx
Michael Terry cd1d3dd379 AA-402: send segment events for course-exit (#265)
Specifically, a "I visited this page" event, with information on
which variant was seen. And "I clicked this button" events, for
our various calls to action.
2020-10-29 09:55:14 -04:00

60 lines
2.1 KiB
JavaScript

import React, { useEffect } from 'react';
import { getAuthenticatedUser } from '@edx/frontend-platform/auth';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import { Helmet } from 'react-helmet';
import { useSelector } from 'react-redux';
import { Alert, Button } from '@edx/paragon';
import { getConfig } from '@edx/frontend-platform';
import { useModel } from '../../../generic/model-store';
import DashboardFootnote from './DashboardFootnote';
import messages from './messages';
import { logClick, logVisit } from './utils';
function CourseNonPassing({ intl }) {
const { courseId } = useSelector(state => state.courseware);
const { tabs } = useModel('courses', courseId);
const { administrator } = getAuthenticatedUser();
// Get progress tab link for 'view grades' button
const progressTab = tabs.find(tab => tab.slug === 'progress');
const progressLink = progressTab && progressTab.url;
useEffect(() => logVisit(courseId, administrator, 'nonpassing'), [courseId, administrator]);
return (
<>
<Helmet>
<title>{`${intl.formatMessage(messages.endOfCourseTitle)} | ${getConfig().SITE_NAME}`}</title>
</Helmet>
<div className="row w-100 mx-0 mb-4 px-5 py-4 border border-light justify-content-center">
<div className="col-12 p-0 h2 text-center">
{ intl.formatMessage(messages.endOfCourseHeader) }
</div>
<Alert variant="primary" className="col col-lg-10 mt-4 d-flex align-items-start">
<div className="flex-grow-1 mr-5">{ intl.formatMessage(messages.endOfCourseDescription) }</div>
{progressLink && (
<Button
variant="primary"
className="flex-shrink-0"
href={progressLink}
onClick={() => logClick(courseId, administrator, 'view_grades')}
>
{intl.formatMessage(messages.viewGradesButton)}
</Button>
)}
</Alert>
<DashboardFootnote />
</div>
</>
);
}
CourseNonPassing.propTypes = {
intl: intlShape.isRequired,
};
export default injectIntl(CourseNonPassing);