diff --git a/.env b/.env index c33fe8af1d..b507871bcb 100644 --- a/.env +++ b/.env @@ -44,3 +44,4 @@ BBB_LEARN_MORE_URL='' HOTJAR_APP_ID='' HOTJAR_VERSION=6 HOTJAR_DEBUG=false +INVITE_STUDENTS_EMAIL_TO='' diff --git a/.env.development b/.env.development index 11c5b491fc..89e7e860e3 100644 --- a/.env.development +++ b/.env.development @@ -34,7 +34,7 @@ ENABLE_NEW_COURSE_OUTLINE_PAGE = false ENABLE_NEW_UPDATES_PAGE = false ENABLE_NEW_FILES_UPLOADS_PAGE = false ENABLE_NEW_VIDEO_UPLOAD_PAGE = false -ENABLE_NEW_SCHEDULE_DETAILS_PAGE = false +ENABLE_NEW_SCHEDULE_DETAILS_PAGE = true ENABLE_NEW_GRADING_PAGE = false ENABLE_NEW_COURSE_TEAM_PAGE = false ENABLE_NEW_ADVANCED_SETTINGS_PAGE = true @@ -46,3 +46,4 @@ BBB_LEARN_MORE_URL='' HOTJAR_APP_ID='' HOTJAR_VERSION=6 HOTJAR_DEBUG=true +INVITE_STUDENTS_EMAIL_TO="someone@domain.com" diff --git a/.env.test b/.env.test index b778ac52f9..27cd02713a 100644 --- a/.env.test +++ b/.env.test @@ -42,3 +42,4 @@ ENABLE_NEW_EXPORT_PAGE = true ENABLE_UNIT_PAGE = true ENABLE_NEW_CUSTOM_PAGES = true BBB_LEARN_MORE_URL='' +INVITE_STUDENTS_EMAIL_TO="someone@domain.com" diff --git a/src/CourseAuthoringRoutes.jsx b/src/CourseAuthoringRoutes.jsx index 7e83e2ec2f..71fa7d378a 100644 --- a/src/CourseAuthoringRoutes.jsx +++ b/src/CourseAuthoringRoutes.jsx @@ -9,6 +9,7 @@ import ProctoredExamSettings from './proctored-exam-settings/ProctoredExamSettin import EditorContainer from './editors/EditorContainer'; import VideoSelectorContainer from './selectors/VideoSelectorContainer'; import { AdvancedSettings } from './advanced-settings'; +import ScheduleAndDetails from './schedule-and-details'; /** * As of this writing, these routes are mounted at a path prefixed with the following: @@ -92,7 +93,7 @@ const CourseAuthoringRoutes = ({ courseId }) => { {process.env.ENABLE_NEW_SCHEDULE_DETAILS_PAGE === 'true' && ( - + )} diff --git a/src/advanced-settings/AdvancedSettings.jsx b/src/advanced-settings/AdvancedSettings.jsx index 3061c3f215..7372731024 100644 --- a/src/advanced-settings/AdvancedSettings.jsx +++ b/src/advanced-settings/AdvancedSettings.jsx @@ -13,7 +13,7 @@ import { getCourseAppSettings, getSavingStatus, getProctoringExamErrors, getSendRequestErrors, } from './data/selectors'; import SettingCard from './setting-card/SettingCard'; -import SettingAlert from './setting-alert/SettingAlert'; +import AlertMessage from '../generic/alert-message'; import SettingsSidebar from './settings-sidebar/SettingsSidebar'; import validateAdvancedSettingsData from './utils'; import messages from './messages'; @@ -91,7 +91,7 @@ const AdvancedSettings = ({ intl, courseId }) => { aria-describedby={intl.formatMessage(messages.alertProctoringDescribedby)} /> )} - {
- ({ getProctoringExamErrors: jest.fn(), })); +const mockPathname = '/foo-bar'; +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: () => ({ + pathname: mockPathname, + }), +})); + describe('AdvancedSettings', () => { const courseId = '123'; const mockDispatch = jest.fn(); @@ -70,14 +78,14 @@ describe('AdvancedSettings', () => { const textarea = settingCard.find('textarea'); textarea.simulate('change', { target: { value: 'new value' } }); expect(textarea.text()).toBe('new value'); - const settingAlert = wrapper.find('SettingAlert'); + const settingAlert = wrapper.find('AlertMessage'); expect(settingAlert.find('AlertHeading').at(0).text()).toBe('You`ve made some changes'); }); it('show warning alert and after click on Cancel button reset textarea value', () => { const settingCard = wrapper.find('SettingCard').at(0); const textarea = settingCard.find('textarea'); textarea.simulate('change', { target: { value: 'new value' } }); - const settingAlert = wrapper.find('SettingAlert'); + const settingAlert = wrapper.find('AlertMessage'); const resetBtn = settingAlert.find('Button').at(1); resetBtn.simulate('click'); expect(textarea.text()).toBe('value1'); diff --git a/src/advanced-settings/scss/AdvencedSettings.scss b/src/advanced-settings/scss/AdvancedSettings.scss similarity index 69% rename from src/advanced-settings/scss/AdvencedSettings.scss rename to src/advanced-settings/scss/AdvancedSettings.scss index 2d23b184d3..ac1c472904 100644 --- a/src/advanced-settings/scss/AdvencedSettings.scss +++ b/src/advanced-settings/scss/AdvancedSettings.scss @@ -97,40 +97,6 @@ } } -.setting-sidebar-supplementary { - margin-top: 1.875rem; - - .setting-sidebar-supplementary-about { - .setting-sidebar-supplementary-about-title { - font: normal $font-weight-bold 1.125rem/1.5rem $font-family-base; - color: $headings-color; - margin-bottom: 1.25rem; - } - - .setting-sidebar-supplementary-about-descriptions { - font: normal $font-weight-normal .875rem/1.5rem $font-family-base; - color: $text-color-base; - } - } - - .setting-sidebar-supplementary-other-links ul { - list-style: none; - - .setting-sidebar-supplementary-other-link { - font: normal $font-weight-normal .875rem/1.5rem $font-family-base; - line-height: 1.5rem; - color: $info-500; - margin-bottom: .5rem; - } - } - - .setting-sidebar-supplementary-other-title { - font: normal $font-weight-bold 1.125rem/1.5rem $font-family-base; - color: $headings-color; - margin-bottom: 1.25rem; - } -} - .modal-error-item { list-style: none; diff --git a/src/advanced-settings/scss/_variables.scss b/src/advanced-settings/scss/_variables.scss index 39daf6dfa2..77933cba03 100644 --- a/src/advanced-settings/scss/_variables.scss +++ b/src/advanced-settings/scss/_variables.scss @@ -1,3 +1 @@ -$font-family-base: inter, sans-serif; -$text-color-base: $gray-700; $setting-form-control-width: 34.375rem; diff --git a/src/advanced-settings/settings-sidebar/SettingsSidebar.jsx b/src/advanced-settings/settings-sidebar/SettingsSidebar.jsx index 82e5d1d8e9..02dd5921ee 100644 --- a/src/advanced-settings/settings-sidebar/SettingsSidebar.jsx +++ b/src/advanced-settings/settings-sidebar/SettingsSidebar.jsx @@ -1,75 +1,34 @@ -import React, { useContext } from 'react'; -import { FormattedMessage, injectIntl, intlShape } from '@edx/frontend-platform/i18n'; -import { AppContext } from '@edx/frontend-platform/react'; +import React from 'react'; +import { + FormattedMessage, + injectIntl, + intlShape, +} from '@edx/frontend-platform/i18n'; import PropTypes from 'prop-types'; -import { Hyperlink } from '@edx/paragon'; -import { getPagePath } from '../../utils'; +import HelpSidebar from '../../generic/HelpSidebar'; import messages from './messages'; -const SettingsSidebar = ({ intl, courseId }) => { - const { config } = useContext(AppContext); - return ( - - ); -}; +const SettingsSidebar = ({ intl, courseId }) => ( + +

+ {intl.formatMessage(messages.about)} +

+

+ {intl.formatMessage(messages.aboutDescription1)} +

+

+ {intl.formatMessage(messages.aboutDescription2)} +

+

+ Note: }} + /> +

+
+); SettingsSidebar.propTypes = { intl: intlShape.isRequired, diff --git a/src/advanced-settings/settings-sidebar/SettingsSidebar.test.jsx b/src/advanced-settings/settings-sidebar/SettingsSidebar.test.jsx index 4c5c4a9683..30ec849381 100644 --- a/src/advanced-settings/settings-sidebar/SettingsSidebar.test.jsx +++ b/src/advanced-settings/settings-sidebar/SettingsSidebar.test.jsx @@ -4,6 +4,14 @@ import { IntlProvider, injectIntl } from '@edx/frontend-platform/i18n'; import { AppContext } from '@edx/frontend-platform/react'; import SettingsSidebar from './SettingsSidebar'; +const mockPathname = '/foo-bar'; +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: () => ({ + pathname: mockPathname, + }), +})); + describe('SettingsSidebar', () => { const config = { STUDIO_BASE_URL: 'https://example.com' }; const courseId = 'course123'; diff --git a/src/advanced-settings/settings-sidebar/__snapshots__/SettingsSidebar.test.jsx.snap b/src/advanced-settings/settings-sidebar/__snapshots__/SettingsSidebar.test.jsx.snap index 16c4ec23f4..d0ca580cbc 100644 --- a/src/advanced-settings/settings-sidebar/__snapshots__/SettingsSidebar.test.jsx.snap +++ b/src/advanced-settings/settings-sidebar/__snapshots__/SettingsSidebar.test.jsx.snap @@ -2,28 +2,28 @@ exports[`SettingsSidebar should match the snapshot 1`] = `