From 5721f77e336e07dbf3a3f0f70fb459414edfc655 Mon Sep 17 00:00:00 2001 From: "kshitij.sobti" Date: Fri, 4 Oct 2024 22:56:53 +0530 Subject: [PATCH] feat: Add plugin slots for progress page components Adds a slot for different components in the progress tab to allow them to be overridden with custom components. --- .../progress-tab/ProgressHeader.jsx | 2 +- src/course-home/progress-tab/ProgressTab.jsx | 39 ++++++--------- .../certificate-status/CertificateStatus.jsx | 18 +++---- .../CompletionDonutChart.jsx | 6 +-- .../credit-information/CreditInformation.jsx | 6 +-- .../grades/course-grade/CourseGrade.jsx | 6 +-- .../grades/course-grade/CourseGradeFooter.jsx | 6 +-- .../grades/course-grade/CourseGradeHeader.jsx | 6 +-- .../course-grade/CurrentGradeTooltip.jsx | 6 +-- .../grades/course-grade/GradeBar.jsx | 6 +-- .../grades/course-grade/GradeRangeTooltip.jsx | 6 +-- .../grades/detailed-grades/DetailedGrades.jsx | 6 +-- .../detailed-grades/DetailedGradesTable.jsx | 6 +-- .../detailed-grades/SubsectionTitleCell.jsx | 6 +-- .../grade-summary/AssignmentTypeCell.jsx | 6 +-- .../DroppableAssignmentFootnote.jsx | 7 ++- .../grades/grade-summary/GradeSummary.jsx | 7 ++- .../grade-summary/GradeSummaryHeader.jsx | 9 ++-- .../grade-summary/GradeSummaryTable.jsx | 6 +-- .../grade-summary/GradeSummaryTableFooter.jsx | 6 +-- .../related-links/RelatedLinks.jsx | 6 +-- src/data/hooks.ts | 5 ++ src/index.jsx | 4 +- .../README.md | 47 ++++++++++++++++++ .../progress_tab_certificate_status_slot.png | Bin 0 -> 24215 bytes .../index.jsx | 19 +++++++ .../README.md | 47 ++++++++++++++++++ .../progress_tab_certificate_status_slot.png | Bin 0 -> 24215 bytes .../index.jsx | 19 +++++++ .../ProgressTabCourseGradeSlot/README.md | 46 +++++++++++++++++ .../images/progress_tab_course_grade_slot.png | Bin 0 -> 60463 bytes .../ProgressTabCourseGradeSlot/index.jsx | 14 ++++++ .../ProgressTabGradeBreakdownSlot/README.md | 46 +++++++++++++++++ .../progress_tab_grade_breakdown_slot.png | Bin 0 -> 90250 bytes .../ProgressTabGradeBreakdownSlot/index.jsx | 29 +++++++++++ .../ProgressTabRelatedLinksSlot/README.md | 46 +++++++++++++++++ .../progress_tab_related_links_slot.png | Bin 0 -> 28704 bytes .../ProgressTabRelatedLinksSlot/index.jsx | 14 ++++++ src/{store.js => store.ts} | 4 ++ 39 files changed, 401 insertions(+), 111 deletions(-) create mode 100644 src/data/hooks.ts create mode 100644 src/plugin-slots/ProgressTabCertificateStatusMainBodySlot/README.md create mode 100644 src/plugin-slots/ProgressTabCertificateStatusMainBodySlot/images/progress_tab_certificate_status_slot.png create mode 100644 src/plugin-slots/ProgressTabCertificateStatusMainBodySlot/index.jsx create mode 100644 src/plugin-slots/ProgressTabCertificateStatusSidePanelSlot/README.md create mode 100644 src/plugin-slots/ProgressTabCertificateStatusSidePanelSlot/images/progress_tab_certificate_status_slot.png create mode 100644 src/plugin-slots/ProgressTabCertificateStatusSidePanelSlot/index.jsx create mode 100644 src/plugin-slots/ProgressTabCourseGradeSlot/README.md create mode 100644 src/plugin-slots/ProgressTabCourseGradeSlot/images/progress_tab_course_grade_slot.png create mode 100644 src/plugin-slots/ProgressTabCourseGradeSlot/index.jsx create mode 100644 src/plugin-slots/ProgressTabGradeBreakdownSlot/README.md create mode 100644 src/plugin-slots/ProgressTabGradeBreakdownSlot/images/progress_tab_grade_breakdown_slot.png create mode 100644 src/plugin-slots/ProgressTabGradeBreakdownSlot/index.jsx create mode 100644 src/plugin-slots/ProgressTabRelatedLinksSlot/README.md create mode 100644 src/plugin-slots/ProgressTabRelatedLinksSlot/images/progress_tab_related_links_slot.png create mode 100644 src/plugin-slots/ProgressTabRelatedLinksSlot/index.jsx rename src/{store.js => store.ts} (92%) diff --git a/src/course-home/progress-tab/ProgressHeader.jsx b/src/course-home/progress-tab/ProgressHeader.jsx index 4648fd20ca..1d0fd56f8d 100644 --- a/src/course-home/progress-tab/ProgressHeader.jsx +++ b/src/course-home/progress-tab/ProgressHeader.jsx @@ -1,9 +1,9 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { Button } from '@openedx/paragon'; +import { useSelector } from 'react-redux'; import { useModel } from '../../generic/model-store'; diff --git a/src/course-home/progress-tab/ProgressTab.jsx b/src/course-home/progress-tab/ProgressTab.jsx index 1b829037eb..a0d86a288b 100644 --- a/src/course-home/progress-tab/ProgressTab.jsx +++ b/src/course-home/progress-tab/ProgressTab.jsx @@ -1,27 +1,20 @@ import React from 'react'; -import { useSelector } from 'react-redux'; -import { breakpoints, useWindowSize } from '@openedx/paragon'; +import { useWindowSize } from '@openedx/paragon'; +import { useContextId } from '../../data/hooks'; +import ProgressTabCertificateStatusSidePanelSlot from '../../plugin-slots/ProgressTabCertificateStatusSidePanelSlot'; -import CertificateStatus from './certificate-status/CertificateStatus'; import CourseCompletion from './course-completion/CourseCompletion'; -import CourseGrade from './grades/course-grade/CourseGrade'; -import DetailedGrades from './grades/detailed-grades/DetailedGrades'; -import GradeSummary from './grades/grade-summary/GradeSummary'; import ProgressHeader from './ProgressHeader'; -import RelatedLinks from './related-links/RelatedLinks'; +import ProgressTabCertificateStatusMainBodySlot from '../../plugin-slots/ProgressTabCertificateStatusMainBodySlot'; +import ProgressTabCourseGradeSlot from '../../plugin-slots/ProgressTabCourseGradeSlot'; +import ProgressTabGradeBreakdownSlot from '../../plugin-slots/ProgressTabGradeBreakdownSlot'; +import ProgressTabRelatedLinksSlot from '../../plugin-slots/ProgressTabRelatedLinksSlot'; import { useModel } from '../../generic/model-store'; const ProgressTab = () => { - const { - courseId, - } = useSelector(state => state.courseHome); - - const { - gradesFeatureIsFullyLocked, disableProgressGraph, - } = useModel('progress', courseId); - - const applyLockedOverlay = gradesFeatureIsFullyLocked ? 'locked-overlay' : ''; + const courseId = useContextId(); + const { disableProgressGraph } = useModel('progress', courseId); const windowWidth = useWindowSize().width; if (windowWidth === undefined) { @@ -31,7 +24,6 @@ const ProgressTab = () => { return null; } - const wideScreen = windowWidth >= breakpoints.large.minWidth; return ( <> @@ -39,18 +31,15 @@ const ProgressTab = () => { {/* Main body */}
{!disableProgressGraph && } - {!wideScreen && } - -
- - -
+ + +
{/* Side panel */}
- {wideScreen && } - + +
diff --git a/src/course-home/progress-tab/certificate-status/CertificateStatus.jsx b/src/course-home/progress-tab/certificate-status/CertificateStatus.jsx index 03837ee1c9..db237b0fc9 100644 --- a/src/course-home/progress-tab/certificate-status/CertificateStatus.jsx +++ b/src/course-home/progress-tab/certificate-status/CertificateStatus.jsx @@ -1,23 +1,23 @@ import React, { useEffect } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; +import { useDispatch } from 'react-redux'; import { sendTrackEvent } from '@edx/frontend-platform/analytics'; import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; import { - FormattedDate, FormattedMessage, injectIntl, intlShape, + FormattedDate, FormattedMessage, useIntl, } from '@edx/frontend-platform/i18n'; import { Button, Card } from '@openedx/paragon'; import { getConfig } from '@edx/frontend-platform'; +import { useContextId } from '../../../data/hooks'; import { useModel } from '../../../generic/model-store'; import { COURSE_EXIT_MODES, getCourseExitMode } from '../../../courseware/course/course-exit/utils'; import { DashboardLink, IdVerificationSupportLink, ProfileLink } from '../../../shared/links'; import { requestCert } from '../../data/thunks'; import messages from './messages'; -const CertificateStatus = ({ intl }) => { - const { - courseId, - } = useSelector(state => state.courseHome); +const CertificateStatus = () => { + const intl = useIntl(); + const courseId = useContextId(); const { entranceExamData, @@ -267,8 +267,6 @@ const CertificateStatus = ({ intl }) => { ); }; -CertificateStatus.propTypes = { - intl: intlShape.isRequired, -}; +CertificateStatus.propTypes = {}; -export default injectIntl(CertificateStatus); +export default CertificateStatus; diff --git a/src/course-home/progress-tab/course-completion/CompletionDonutChart.jsx b/src/course-home/progress-tab/course-completion/CompletionDonutChart.jsx index 54b6caa9c6..8c008f0c48 100644 --- a/src/course-home/progress-tab/course-completion/CompletionDonutChart.jsx +++ b/src/course-home/progress-tab/course-completion/CompletionDonutChart.jsx @@ -1,8 +1,8 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import { getLocale, injectIntl, intlShape, isRtl, } from '@edx/frontend-platform/i18n'; +import { useContextId } from '../../../data/hooks'; import { useModel } from '../../../generic/model-store'; import CompleteDonutSegment from './CompleteDonutSegment'; @@ -11,9 +11,7 @@ import LockedDonutSegment from './LockedDonutSegment'; import messages from './messages'; const CompletionDonutChart = ({ intl }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { completionSummary: { diff --git a/src/course-home/progress-tab/credit-information/CreditInformation.jsx b/src/course-home/progress-tab/credit-information/CreditInformation.jsx index f1bbcf6a1b..27843f9b0a 100644 --- a/src/course-home/progress-tab/credit-information/CreditInformation.jsx +++ b/src/course-home/progress-tab/credit-information/CreditInformation.jsx @@ -1,9 +1,9 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import { getConfig } from '@edx/frontend-platform'; import { FormattedMessage, injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { CheckCircle, WarningFilled, WatchFilled } from '@openedx/paragon/icons'; import { Hyperlink, Icon } from '@openedx/paragon'; +import { useContextId } from '../../../data/hooks'; import { useModel } from '../../../generic/model-store'; import { DashboardLink } from '../../../shared/links'; @@ -11,9 +11,7 @@ import { DashboardLink } from '../../../shared/links'; import messages from './messages'; const CreditInformation = ({ intl }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { creditCourseRequirements, diff --git a/src/course-home/progress-tab/grades/course-grade/CourseGrade.jsx b/src/course-home/progress-tab/grades/course-grade/CourseGrade.jsx index 6aabdc08e6..c8dfb7e616 100644 --- a/src/course-home/progress-tab/grades/course-grade/CourseGrade.jsx +++ b/src/course-home/progress-tab/grades/course-grade/CourseGrade.jsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; @@ -12,9 +12,7 @@ import CreditInformation from '../../credit-information/CreditInformation'; import messages from '../messages'; const CourseGrade = ({ intl }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { creditCourseRequirements, diff --git a/src/course-home/progress-tab/grades/course-grade/CourseGradeFooter.jsx b/src/course-home/progress-tab/grades/course-grade/CourseGradeFooter.jsx index e662b13768..650e328356 100644 --- a/src/course-home/progress-tab/grades/course-grade/CourseGradeFooter.jsx +++ b/src/course-home/progress-tab/grades/course-grade/CourseGradeFooter.jsx @@ -1,19 +1,17 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import PropTypes from 'prop-types'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { CheckCircle, WarningFilled } from '@openedx/paragon/icons'; import { breakpoints, Icon, useWindowSize } from '@openedx/paragon'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import GradeRangeTooltip from './GradeRangeTooltip'; import messages from '../messages'; const CourseGradeFooter = ({ intl, passingGrade }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { courseGrade: { diff --git a/src/course-home/progress-tab/grades/course-grade/CourseGradeHeader.jsx b/src/course-home/progress-tab/grades/course-grade/CourseGradeHeader.jsx index 4c4cfc7a16..6349240eb8 100644 --- a/src/course-home/progress-tab/grades/course-grade/CourseGradeHeader.jsx +++ b/src/course-home/progress-tab/grades/course-grade/CourseGradeHeader.jsx @@ -1,19 +1,17 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import { sendTrackEvent } from '@edx/frontend-platform/analytics'; import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { Locked } from '@openedx/paragon/icons'; import { Button, Icon } from '@openedx/paragon'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import messages from '../messages'; const CourseGradeHeader = ({ intl }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { org, } = useModel('courseHomeMeta', courseId); diff --git a/src/course-home/progress-tab/grades/course-grade/CurrentGradeTooltip.jsx b/src/course-home/progress-tab/grades/course-grade/CurrentGradeTooltip.jsx index b869937045..3ea957858d 100644 --- a/src/course-home/progress-tab/grades/course-grade/CurrentGradeTooltip.jsx +++ b/src/course-home/progress-tab/grades/course-grade/CurrentGradeTooltip.jsx @@ -1,20 +1,18 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { useSelector } from 'react-redux'; import { getLocale, injectIntl, intlShape, isRtl, } from '@edx/frontend-platform/i18n'; import { OverlayTrigger, Popover } from '@openedx/paragon'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import messages from '../messages'; const CurrentGradeTooltip = ({ intl, tooltipClassName }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { courseGrade: { diff --git a/src/course-home/progress-tab/grades/course-grade/GradeBar.jsx b/src/course-home/progress-tab/grades/course-grade/GradeBar.jsx index 3cbbe5b1c0..98ed604e97 100644 --- a/src/course-home/progress-tab/grades/course-grade/GradeBar.jsx +++ b/src/course-home/progress-tab/grades/course-grade/GradeBar.jsx @@ -1,10 +1,10 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import PropTypes from 'prop-types'; import { getLocale, injectIntl, intlShape, isRtl, } from '@edx/frontend-platform/i18n'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import CurrentGradeTooltip from './CurrentGradeTooltip'; import PassingGradeTooltip from './PassingGradeTooltip'; @@ -12,9 +12,7 @@ import PassingGradeTooltip from './PassingGradeTooltip'; import messages from '../messages'; const GradeBar = ({ intl, passingGrade }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { courseGrade: { diff --git a/src/course-home/progress-tab/grades/course-grade/GradeRangeTooltip.jsx b/src/course-home/progress-tab/grades/course-grade/GradeRangeTooltip.jsx index 7489e73ae4..c049cde742 100644 --- a/src/course-home/progress-tab/grades/course-grade/GradeRangeTooltip.jsx +++ b/src/course-home/progress-tab/grades/course-grade/GradeRangeTooltip.jsx @@ -1,5 +1,4 @@ import React, { useState } from 'react'; -import { useSelector } from 'react-redux'; import PropTypes from 'prop-types'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; @@ -7,14 +6,13 @@ import { InfoOutline } from '@openedx/paragon/icons'; import { Icon, IconButton, OverlayTrigger, Popover, } from '@openedx/paragon'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import messages from '../messages'; const GradeRangeTooltip = ({ intl, iconButtonClassName, passingGrade }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { gradesFeatureIsFullyLocked, diff --git a/src/course-home/progress-tab/grades/detailed-grades/DetailedGrades.jsx b/src/course-home/progress-tab/grades/detailed-grades/DetailedGrades.jsx index 529859c52b..deb9dde2ab 100644 --- a/src/course-home/progress-tab/grades/detailed-grades/DetailedGrades.jsx +++ b/src/course-home/progress-tab/grades/detailed-grades/DetailedGrades.jsx @@ -1,11 +1,11 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import { sendTrackEvent } from '@edx/frontend-platform/analytics'; import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; import { FormattedMessage, injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { Blocked } from '@openedx/paragon/icons'; import { Icon, Hyperlink } from '@openedx/paragon'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import { showUngradedAssignments } from '../../utils'; @@ -15,9 +15,7 @@ import messages from '../messages'; const DetailedGrades = ({ intl }) => { const { administrator } = getAuthenticatedUser(); - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { org, tabs, diff --git a/src/course-home/progress-tab/grades/detailed-grades/DetailedGradesTable.jsx b/src/course-home/progress-tab/grades/detailed-grades/DetailedGradesTable.jsx index f20bae3294..4b55e8249d 100644 --- a/src/course-home/progress-tab/grades/detailed-grades/DetailedGradesTable.jsx +++ b/src/course-home/progress-tab/grades/detailed-grades/DetailedGradesTable.jsx @@ -1,10 +1,10 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import { getLocale, injectIntl, intlShape, isRtl, } from '@edx/frontend-platform/i18n'; import { DataTable } from '@openedx/paragon'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import messages from '../messages'; @@ -12,9 +12,7 @@ import SubsectionTitleCell from './SubsectionTitleCell'; import { showUngradedAssignments } from '../../utils'; const DetailedGradesTable = ({ intl }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { sectionScores, diff --git a/src/course-home/progress-tab/grades/detailed-grades/SubsectionTitleCell.jsx b/src/course-home/progress-tab/grades/detailed-grades/SubsectionTitleCell.jsx index c3b3cb8bfe..a1776456e0 100644 --- a/src/course-home/progress-tab/grades/detailed-grades/SubsectionTitleCell.jsx +++ b/src/course-home/progress-tab/grades/detailed-grades/SubsectionTitleCell.jsx @@ -1,5 +1,4 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import PropTypes from 'prop-types'; import { sendTrackEvent } from '@edx/frontend-platform/analytics'; @@ -9,15 +8,14 @@ import { Collapsible, Icon, Row } from '@openedx/paragon'; import { ArrowDropDown, ArrowDropUp, Blocked, Info, } from '@openedx/paragon/icons'; +import { useContextId } from '../../../../data/hooks'; import messages from '../messages'; import { useModel } from '../../../../generic/model-store'; import ProblemScoreDrawer from './ProblemScoreDrawer'; const SubsectionTitleCell = ({ intl, subsection }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { org, } = useModel('courseHomeMeta', courseId); diff --git a/src/course-home/progress-tab/grades/grade-summary/AssignmentTypeCell.jsx b/src/course-home/progress-tab/grades/grade-summary/AssignmentTypeCell.jsx index 8de9fcedb4..d0602af9be 100644 --- a/src/course-home/progress-tab/grades/grade-summary/AssignmentTypeCell.jsx +++ b/src/course-home/progress-tab/grades/grade-summary/AssignmentTypeCell.jsx @@ -1,18 +1,16 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import PropTypes from 'prop-types'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { Blocked } from '@openedx/paragon/icons'; import { Icon } from '@openedx/paragon'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import messages from '../messages'; const AssignmentTypeCell = ({ intl, assignmentType, footnoteMarker, footnoteId, locked, }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { gradesFeatureIsFullyLocked, diff --git a/src/course-home/progress-tab/grades/grade-summary/DroppableAssignmentFootnote.jsx b/src/course-home/progress-tab/grades/grade-summary/DroppableAssignmentFootnote.jsx index 14f6b2c337..92b78ebe03 100644 --- a/src/course-home/progress-tab/grades/grade-summary/DroppableAssignmentFootnote.jsx +++ b/src/course-home/progress-tab/grades/grade-summary/DroppableAssignmentFootnote.jsx @@ -1,16 +1,15 @@ import React from 'react'; -import { useSelector } from 'react-redux'; + import PropTypes from 'prop-types'; import { FormattedMessage, injectIntl, intlShape } from '@edx/frontend-platform/i18n'; +import { useContextId } from '../../../../data/hooks'; import messages from '../messages'; import { useModel } from '../../../../generic/model-store'; const DroppableAssignmentFootnote = ({ footnotes, intl }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { gradesFeatureIsFullyLocked, } = useModel('progress', courseId); diff --git a/src/course-home/progress-tab/grades/grade-summary/GradeSummary.jsx b/src/course-home/progress-tab/grades/grade-summary/GradeSummary.jsx index e6c6b9ad02..ffc5e2c890 100644 --- a/src/course-home/progress-tab/grades/grade-summary/GradeSummary.jsx +++ b/src/course-home/progress-tab/grades/grade-summary/GradeSummary.jsx @@ -1,14 +1,13 @@ import React, { useState } from 'react'; -import { useSelector } from 'react-redux'; + +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import GradeSummaryHeader from './GradeSummaryHeader'; import GradeSummaryTable from './GradeSummaryTable'; const GradeSummary = () => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { gradingPolicy: { diff --git a/src/course-home/progress-tab/grades/grade-summary/GradeSummaryHeader.jsx b/src/course-home/progress-tab/grades/grade-summary/GradeSummaryHeader.jsx index fc860c10fa..6a91061fe7 100644 --- a/src/course-home/progress-tab/grades/grade-summary/GradeSummaryHeader.jsx +++ b/src/course-home/progress-tab/grades/grade-summary/GradeSummaryHeader.jsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { useSelector } from 'react-redux'; + import PropTypes from 'prop-types'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; @@ -7,14 +7,13 @@ import { Icon, IconButton, OverlayTrigger, Popover, } from '@openedx/paragon'; import { Blocked, InfoOutline } from '@openedx/paragon/icons'; +import { useContextId } from '../../../../data/hooks'; import messages from '../messages'; import { useModel } from '../../../../generic/model-store'; const GradeSummaryHeader = ({ intl, allOfSomeAssignmentTypeIsLocked }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { gradesFeatureIsFullyLocked, } = useModel('progress', courseId); @@ -28,7 +27,7 @@ const GradeSummaryHeader = ({ intl, allOfSomeAssignmentTypeIsLocked }) => { placement="top" show={showTooltip} overlay={( - + {intl.formatMessage(messages.gradeSummaryTooltipBody)} diff --git a/src/course-home/progress-tab/grades/grade-summary/GradeSummaryTable.jsx b/src/course-home/progress-tab/grades/grade-summary/GradeSummaryTable.jsx index 628a65e24a..54e0388eeb 100644 --- a/src/course-home/progress-tab/grades/grade-summary/GradeSummaryTable.jsx +++ b/src/course-home/progress-tab/grades/grade-summary/GradeSummaryTable.jsx @@ -1,11 +1,11 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { useSelector } from 'react-redux'; import { getLocale, injectIntl, intlShape, isRtl, } from '@edx/frontend-platform/i18n'; import { DataTable } from '@openedx/paragon'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import AssignmentTypeCell from './AssignmentTypeCell'; @@ -15,9 +15,7 @@ import GradeSummaryTableFooter from './GradeSummaryTableFooter'; import messages from '../messages'; const GradeSummaryTable = ({ intl, setAllOfSomeAssignmentTypeIsLocked }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { gradingPolicy: { diff --git a/src/course-home/progress-tab/grades/grade-summary/GradeSummaryTableFooter.jsx b/src/course-home/progress-tab/grades/grade-summary/GradeSummaryTableFooter.jsx index 2c3235be86..18ad54d820 100644 --- a/src/course-home/progress-tab/grades/grade-summary/GradeSummaryTableFooter.jsx +++ b/src/course-home/progress-tab/grades/grade-summary/GradeSummaryTableFooter.jsx @@ -1,18 +1,16 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import { getLocale, injectIntl, intlShape, isRtl, } from '@edx/frontend-platform/i18n'; import { DataTable } from '@openedx/paragon'; +import { useContextId } from '../../../../data/hooks'; import { useModel } from '../../../../generic/model-store'; import messages from '../messages'; const GradeSummaryTableFooter = ({ intl }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { courseGrade: { diff --git a/src/course-home/progress-tab/related-links/RelatedLinks.jsx b/src/course-home/progress-tab/related-links/RelatedLinks.jsx index e7a6adf35e..0030f42139 100644 --- a/src/course-home/progress-tab/related-links/RelatedLinks.jsx +++ b/src/course-home/progress-tab/related-links/RelatedLinks.jsx @@ -1,18 +1,16 @@ import React from 'react'; -import { useSelector } from 'react-redux'; import { sendTrackEvent } from '@edx/frontend-platform/analytics'; import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { Hyperlink } from '@openedx/paragon'; +import { useContextId } from '../../../data/hooks'; import messages from './messages'; import { useModel } from '../../../generic/model-store'; const RelatedLinks = ({ intl }) => { - const { - courseId, - } = useSelector(state => state.courseHome); + const courseId = useContextId(); const { org, tabs, diff --git a/src/data/hooks.ts b/src/data/hooks.ts new file mode 100644 index 0000000000..f8ad29bed8 --- /dev/null +++ b/src/data/hooks.ts @@ -0,0 +1,5 @@ +import { useSelector } from 'react-redux'; +import { RootState } from '../store'; + +// eslint-disable-next-line import/prefer-default-export +export const useContextId = () => useSelector(state => state.courseHome.courseId); diff --git a/src/index.jsx b/src/index.jsx index 6da653de6c..972d3c1ed2 100755 --- a/src/index.jsx +++ b/src/index.jsx @@ -26,7 +26,7 @@ import { TabContainer } from './tab-page'; import { fetchDatesTab, fetchOutlineTab, fetchProgressTab } from './course-home/data'; import { fetchCourse } from './courseware/data'; -import initializeStore from './store'; +import { store } from './store'; import NoticesProvider from './generic/notices'; import PathFixesProvider from './generic/path-fixes'; import LiveTab from './course-home/live-tab/LiveTab'; @@ -38,7 +38,7 @@ import PageNotFound from './generic/PageNotFound'; subscribe(APP_READY, () => { ReactDOM.render( - + diff --git a/src/plugin-slots/ProgressTabCertificateStatusMainBodySlot/README.md b/src/plugin-slots/ProgressTabCertificateStatusMainBodySlot/README.md new file mode 100644 index 0000000000..f2fe797ef3 --- /dev/null +++ b/src/plugin-slots/ProgressTabCertificateStatusMainBodySlot/README.md @@ -0,0 +1,47 @@ +# Progress Tab Certificate Status Slot + +### Slot ID: `progress_tab_certificate_status_main_body_slot` +### Props: + +## Description + +This slot is used to replace or modify the Certificate Status component in the +main body of the Progress Tab. + +## Example + +The following `env.config.jsx` will render the `course_id` of the course as a `

` element in a `

`. + +![Screenshot of Content added after the Certificate Status Container](./images/progress_tab_certificate_status_slot.png) + +```js +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; +import { useContextId } from './src/data/hooks'; + +const config = { + pluginSlots: { + progress_tab_certificate_status_main_body_slot: { + plugins: [ + { + // Insert custom content after certificate status + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_certificate_status_content', + type: DIRECT_PLUGIN, + RenderWidget: () => { + const courseId = useContextId(); + return ( +
+

📚: {courseId}

+
+ ); + }, + }, + }, + ] + } + }, +} + +export default config; +``` diff --git a/src/plugin-slots/ProgressTabCertificateStatusMainBodySlot/images/progress_tab_certificate_status_slot.png b/src/plugin-slots/ProgressTabCertificateStatusMainBodySlot/images/progress_tab_certificate_status_slot.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5858d4a97e8af8f1bba56befe7054be5072e4e GIT binary patch literal 24215 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
    ?_XAuVCk>#tR?6!ue$qY$zk%0*~oEj~Z%a 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 i{?+>bApq#SWnSSU!{*fI^88QFkcxt)e6_4) { + const windowWidth = useWindowSize().width; + const wideScreen = windowWidth >= breakpoints.large.minWidth; + return ( + + {windowWidth && !wideScreen && } + + ); +}; + +ProgressTabCertificateStatusMainBodySlot.propTypes = {}; + +export default ProgressTabCertificateStatusMainBodySlot; diff --git a/src/plugin-slots/ProgressTabCertificateStatusSidePanelSlot/README.md b/src/plugin-slots/ProgressTabCertificateStatusSidePanelSlot/README.md new file mode 100644 index 0000000000..83f73643db --- /dev/null +++ b/src/plugin-slots/ProgressTabCertificateStatusSidePanelSlot/README.md @@ -0,0 +1,47 @@ +# Progress Tab Certificate Status Slot + +### Slot ID: `progress_tab_certificate_status_side_panel_slot` +### Props: + +## Description + +This slot is used to replace or modify the Certificate Status component in the +side panel of the Progress Tab. + +## Example + +The following `env.config.jsx` will render the `course_id` of the course as a `

    ` element in a `

    `. + +![Screenshot of Content added after the Certificate Status Container](./images/progress_tab_certificate_status_slot.png) + +```js +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; +import { useContextId } from './src/data/hooks'; + +const config = { + pluginSlots: { + progress_tab_certificate_status_side_panel_slot: { + plugins: [ + { + // Insert custom content after certificate status + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_certificate_status_content', + type: DIRECT_PLUGIN, + RenderWidget: () => { + const courseId = useContextId(); + return ( +
    +

    📚: {courseId}

    +
    + ); + }, + }, + }, + ] + } + }, +} + +export default config; +``` diff --git a/src/plugin-slots/ProgressTabCertificateStatusSidePanelSlot/images/progress_tab_certificate_status_slot.png b/src/plugin-slots/ProgressTabCertificateStatusSidePanelSlot/images/progress_tab_certificate_status_slot.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5858d4a97e8af8f1bba56befe7054be5072e4e GIT binary patch literal 24215 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
      ?_XAuVCk>#tR?6!ue$qY$zk%0*~oEj~Z%a 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 i{?+>bApq#SWnSSU!{*fI^88QFkcxt)e6_4) { + const windowWidth = useWindowSize().width; + const wideScreen = windowWidth >= breakpoints.large.minWidth; + return ( + + {windowWidth && wideScreen && } + + ); +}; + +ProgressTabCertificateStatusSidePanelSlot.propTypes = {}; + +export default ProgressTabCertificateStatusSidePanelSlot; diff --git a/src/plugin-slots/ProgressTabCourseGradeSlot/README.md b/src/plugin-slots/ProgressTabCourseGradeSlot/README.md new file mode 100644 index 0000000000..8c0d738132 --- /dev/null +++ b/src/plugin-slots/ProgressTabCourseGradeSlot/README.md @@ -0,0 +1,46 @@ +# Progress Tab Course Grade Slot + +### Slot ID: `progress_tab_course_grade_slot` +### Props: + +## Description + +This slot is used to replace or modify the Course Grades view in the Progress Tab. + +## Example + +The following `env.config.jsx` will render the `course_id` of the course as a `

      ` element in a `

      `. + +![Screenshot of Content added after the Grades Container](./images/progress_tab_course_grade_slot.png) + +```js +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; +import { useContextId } from './src/data/hooks'; + +const config = { + pluginSlots: { + progress_tab_course_grade_slot: { + plugins: [ + { + // Insert custom content after course grade widget + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_course_grade_content', + type: DIRECT_PLUGIN, + RenderWidget: () => { + const courseId = useContextId(); + return ( +
      +

      📚: {courseId}

      +
      + ); + }, + }, + }, + ] + } + }, +} + +export default config; +``` diff --git a/src/plugin-slots/ProgressTabCourseGradeSlot/images/progress_tab_course_grade_slot.png b/src/plugin-slots/ProgressTabCourseGradeSlot/images/progress_tab_course_grade_slot.png new file mode 100644 index 0000000000000000000000000000000000000000..82a15f26bf4781945e40edb8b1c18a9d2336d9d7 GIT binary patch literal 60463 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 z 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

      Kz{j5-iMNLd_(~E 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�K;*HpMLx@kR==-a7+H?<0 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 e|4sT03cSMzqG;>~ literal 0 HcmV?d00001 diff --git a/src/plugin-slots/ProgressTabCourseGradeSlot/index.jsx b/src/plugin-slots/ProgressTabCourseGradeSlot/index.jsx new file mode 100644 index 0000000000..fa4bf95693 --- /dev/null +++ b/src/plugin-slots/ProgressTabCourseGradeSlot/index.jsx @@ -0,0 +1,14 @@ +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import CourseGrade from '../../course-home/progress-tab/grades/course-grade/CourseGrade'; + +const ProgressTabCourseGradeSlot = () => ( + + + +); + +ProgressTabCourseGradeSlot.propTypes = {}; + +export default ProgressTabCourseGradeSlot; diff --git a/src/plugin-slots/ProgressTabGradeBreakdownSlot/README.md b/src/plugin-slots/ProgressTabGradeBreakdownSlot/README.md new file mode 100644 index 0000000000..85465e69c4 --- /dev/null +++ b/src/plugin-slots/ProgressTabGradeBreakdownSlot/README.md @@ -0,0 +1,46 @@ +# Progress Tab Grade Breakdown Slot + +### Slot ID: `progress_tab_grade_breakdown_slot` +### Props: + +## Description + +This slot is used to replace or modify the Grade Summary and Details Breakdown view in the Progress Tab. + +## Example + +The following `env.config.jsx` will render the `course_id` of the course as a `

      ` element in a `

      `. + +![Screenshot of Content added after the Grade Summary and Details Container](./images/progress_tab_grade_breakdown_slot.png) + +```js +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; +import { useContextId } from './src/data/hooks'; + +const config = { + pluginSlots: { + progress_tab_grade_breakdown_slot: { + plugins: [ + { + // Insert custom content after grade summary widget + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_grade_summary_content', + type: DIRECT_PLUGIN, + RenderWidget: () => { + const courseId = useContextId(); + return ( +
      +

      📚: {courseId}

      +
      + ); + }, + }, + }, + ] + } + }, +} + +export default config; +``` diff --git a/src/plugin-slots/ProgressTabGradeBreakdownSlot/images/progress_tab_grade_breakdown_slot.png b/src/plugin-slots/ProgressTabGradeBreakdownSlot/images/progress_tab_grade_breakdown_slot.png new file mode 100644 index 0000000000000000000000000000000000000000..03df7a4a87d7cb990217f6fbb93f1944b85be373 GIT binary patch literal 90250 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 literal 0 HcmV?d00001 diff --git a/src/plugin-slots/ProgressTabGradeBreakdownSlot/index.jsx b/src/plugin-slots/ProgressTabGradeBreakdownSlot/index.jsx new file mode 100644 index 0000000000..f54f1f7cee --- /dev/null +++ b/src/plugin-slots/ProgressTabGradeBreakdownSlot/index.jsx @@ -0,0 +1,29 @@ +import { useModel } from '@src/generic/model-store'; +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import React from 'react'; +import DetailedGrades from '../../course-home/progress-tab/grades/detailed-grades/DetailedGrades'; +import GradeSummary from '../../course-home/progress-tab/grades/grade-summary/GradeSummary'; +import { useContextId } from '../../data/hooks'; + +const ProgressTabGradeBreakdownSlot = () => { + const courseId = useContextId(); + const { gradesFeatureIsFullyLocked } = useModel('progress', courseId); + const applyLockedOverlay = gradesFeatureIsFullyLocked ? 'locked-overlay' : ''; + return ( + +

      + + ); +}; + +ProgressTabGradeBreakdownSlot.propTypes = {}; + +export default ProgressTabGradeBreakdownSlot; diff --git a/src/plugin-slots/ProgressTabRelatedLinksSlot/README.md b/src/plugin-slots/ProgressTabRelatedLinksSlot/README.md new file mode 100644 index 0000000000..32ea76109a --- /dev/null +++ b/src/plugin-slots/ProgressTabRelatedLinksSlot/README.md @@ -0,0 +1,46 @@ +# Progress Tab Related Links Slot + +### Slot ID: `progress_tab_related_links_slot` +### Props: + +## Description + +This slot is used to replace or modify the related links view in the Progress Tab. + +## Example + +The following `env.config.jsx` will render the `course_id` of the course as a `

      ` element in a `

      `. + +![Screenshot of Content added after the Related Links Container](./images/progress_tab_related_links_slot.png) + +```js +import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; +import { useContextId } from './src/data/hooks'; + +const config = { + pluginSlots: { + progress_tab_related_links_slot: { + plugins: [ + { + // Insert custom content after related links widget + op: PLUGIN_OPERATIONS.Insert, + widget: { + id: 'custom_related_links_content', + type: DIRECT_PLUGIN, + RenderWidget: () => { + const courseId = useContextId(); + return ( +
      +

      📚: {courseId}

      +
      + ); + }, + }, + }, + ] + } + }, +} + +export default config; +``` diff --git a/src/plugin-slots/ProgressTabRelatedLinksSlot/images/progress_tab_related_links_slot.png b/src/plugin-slots/ProgressTabRelatedLinksSlot/images/progress_tab_related_links_slot.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad62f9143fd175025855743130a7acf688d4f8a GIT binary patch literal 28704 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 UM5BoN%gg^>Mn$?t$}Hr60C<|W-T(jq literal 0 HcmV?d00001 diff --git a/src/plugin-slots/ProgressTabRelatedLinksSlot/index.jsx b/src/plugin-slots/ProgressTabRelatedLinksSlot/index.jsx new file mode 100644 index 0000000000..c91dec1a86 --- /dev/null +++ b/src/plugin-slots/ProgressTabRelatedLinksSlot/index.jsx @@ -0,0 +1,14 @@ +import { PluginSlot } from '@openedx/frontend-plugin-framework'; +import RelatedLinks from '../../course-home/progress-tab/related-links/RelatedLinks'; + +const ProgressTabRelatedLinksSlot = () => ( + + + +); + +ProgressTabRelatedLinksSlot.propTypes = {}; + +export default ProgressTabRelatedLinksSlot; diff --git a/src/store.js b/src/store.ts similarity index 92% rename from src/store.js rename to src/store.ts index 9343b0d24a..32a77cdafe 100644 --- a/src/store.js +++ b/src/store.ts @@ -29,3 +29,7 @@ export default function initializeStore() { }), }); } + +export const store = initializeStore(); + +export type RootState = ReturnType;