(
+
+ {title}
+ {description}
+
+);
+
+AlertMessage.propTypes = {
+ title: PropTypes.string,
+ description: PropTypes.string,
+};
+
+AlertMessage.defaultProps = {
+ title: undefined,
+ description: undefined,
+};
+
+export default AlertMessage;
diff --git a/src/generic/messages.js b/src/generic/messages.js
new file mode 100644
index 0000000000..589b2ea250
--- /dev/null
+++ b/src/generic/messages.js
@@ -0,0 +1,40 @@
+import { defineMessages } from '@edx/frontend-platform/i18n';
+
+const messages = defineMessages({
+ sidebarTitleOther: {
+ id: 'course-authoring.help-sidebar.other.title',
+ defaultMessage: 'Other Course Settings',
+ },
+ sidebarLinkToScheduleAndDetails: {
+ id: 'course-authoring.help-sidebar.links.schedule-and-details',
+ defaultMessage: 'Schedule & Details',
+ description: 'Link to Studio Schedule & Details page',
+ },
+ sidebarLinkToGrading: {
+ id: 'course-authoring.help-sidebar.links.grading',
+ defaultMessage: 'Grading',
+ description: 'Link to Studio Grading page',
+ },
+ sidebarLinkToCourseTeam: {
+ id: 'course-authoring.help-sidebar.links.course-team',
+ defaultMessage: 'Course Team',
+ description: 'Link to Studio Course Team page',
+ },
+ sidebarLinkToGroupConfigurations: {
+ id: 'course-authoring.help-sidebar.links.group-configurations',
+ defaultMessage: 'Group Configurations',
+ description: 'Link to Studio Group Configurations page',
+ },
+ sidebarLinkToProctoredExamSettings: {
+ id: 'course-authoring.help-sidebar.links.proctored-exam-settings',
+ defaultMessage: 'Proctored exam settings',
+ description: 'Link to Proctored exam settings page',
+ },
+ sidebarLinkToAdvancedSettings: {
+ id: 'course-authoring.help-sidebar.links.advanced-settings',
+ defaultMessage: 'Advanced Settings',
+ description: 'Link to Advanced Settings',
+ },
+});
+
+export default messages;
diff --git a/src/generic/scss/HelpSidebar.scss b/src/generic/scss/HelpSidebar.scss
new file mode 100644
index 0000000000..a3fe661b8d
--- /dev/null
+++ b/src/generic/scss/HelpSidebar.scss
@@ -0,0 +1,32 @@
+.help-sidebar {
+ margin-top: 1.875rem;
+
+ .help-sidebar-about {
+ .help-sidebar-about-title {
+ color: $headings-color;
+ margin-bottom: 1.25rem;
+ }
+
+ .help-sidebar-about-descriptions {
+ font: normal $font-weight-normal .875rem/1.5rem $font-family-base;
+ color: $text-color-base;
+ }
+ }
+
+ .help-sidebar-other-links ul {
+ list-style: none;
+
+ .help-sidebar-other-link {
+ font: normal $font-weight-normal .875rem/1.5rem $font-family-base;
+ line-height: 1.5rem;
+ color: $info-500;
+ margin-bottom: .5rem;
+ }
+ }
+
+ .help-sidebar-other-title {
+ font: normal $font-weight-bold 1.125rem/1.5rem $font-family-base;
+ color: $headings-color;
+ margin-bottom: 1.25rem;
+ }
+}
diff --git a/src/i18n/messages/ar.json b/src/i18n/messages/ar.json
index 32bfa00832..964e10411e 100644
--- a/src/i18n/messages/ar.json
+++ b/src/i18n/messages/ar.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/de.json b/src/i18n/messages/de.json
index 2ad561c193..3b8d98ef0a 100644
--- a/src/i18n/messages/de.json
+++ b/src/i18n/messages/de.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/de_DE.json b/src/i18n/messages/de_DE.json
index 0bbd34e77e..4539dccf83 100644
--- a/src/i18n/messages/de_DE.json
+++ b/src/i18n/messages/de_DE.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/es_419.json b/src/i18n/messages/es_419.json
index 956f6946a3..e666f5a7a6 100644
--- a/src/i18n/messages/es_419.json
+++ b/src/i18n/messages/es_419.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/fr.json b/src/i18n/messages/fr.json
index 52389ec06f..c70b0c3545 100644
--- a/src/i18n/messages/fr.json
+++ b/src/i18n/messages/fr.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/fr_CA.json b/src/i18n/messages/fr_CA.json
index eefa26ca24..7e43d4ecc2 100644
--- a/src/i18n/messages/fr_CA.json
+++ b/src/i18n/messages/fr_CA.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/hi.json b/src/i18n/messages/hi.json
index 2ad561c193..3b8d98ef0a 100644
--- a/src/i18n/messages/hi.json
+++ b/src/i18n/messages/hi.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/it.json b/src/i18n/messages/it.json
index 2ad561c193..3b8d98ef0a 100644
--- a/src/i18n/messages/it.json
+++ b/src/i18n/messages/it.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/it_IT.json b/src/i18n/messages/it_IT.json
index 8e4ceb77d2..5b005c283f 100644
--- a/src/i18n/messages/it_IT.json
+++ b/src/i18n/messages/it_IT.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/pt.json b/src/i18n/messages/pt.json
index 2ad561c193..3b8d98ef0a 100644
--- a/src/i18n/messages/pt.json
+++ b/src/i18n/messages/pt.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/pt_PT.json b/src/i18n/messages/pt_PT.json
index ba712257a6..da7a2b23bd 100644
--- a/src/i18n/messages/pt_PT.json
+++ b/src/i18n/messages/pt_PT.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/ru.json b/src/i18n/messages/ru.json
index 2ad561c193..3b8d98ef0a 100644
--- a/src/i18n/messages/ru.json
+++ b/src/i18n/messages/ru.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/uk.json b/src/i18n/messages/uk.json
index 2ad561c193..3b8d98ef0a 100644
--- a/src/i18n/messages/uk.json
+++ b/src/i18n/messages/uk.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/i18n/messages/zh_CN.json b/src/i18n/messages/zh_CN.json
index 2ad561c193..3b8d98ef0a 100644
--- a/src/i18n/messages/zh_CN.json
+++ b/src/i18n/messages/zh_CN.json
@@ -376,11 +376,6 @@
"course-authoring.advanced-settings.sidebar.about.title": "What do advanced settings do?",
"course-authoring.advanced-settings.sidebar.about.description-1": "Advanced settings control specific course functionality. On this page, you can edit manual policies, which are JSON-based key and value pairs that control specific course settings.",
"course-authoring.advanced-settings.sidebar.about.description-2": "Any policies you modify here override all other information you’ve defined elsewhere in Studio. Do not edit policies unless you are familiar with both their purpose and syntax.",
- "course-authoring.advanced-settings.sidebar.other.title": "Other Course Settings",
- "course-authoring.advanced-settings.sidebar.links.schedule-and-details": "Schedule & Details",
- "course-authoring.advanced-settings.sidebar.links.grading": "Grading",
- "course-authoring.advanced-settings.sidebar.links.course-team": "Course Team",
- "course-authoring.advanced-settings.sidebar.links.group-configurations": "Group Configurations",
"course-authoring.advanced-settings.button.deprecated": "Deprecated",
"course-authoring.advanced-settings.modal.error.title": "Validation Error While Saving",
"course-authoring.advanced-settings.modal.error.btn.change-manually": "Change Manually",
@@ -388,5 +383,51 @@
"course-authoring.advanced-settings.modal.error.description": "There was {errorCounter} while trying to save the course settings in the database. Please check the following validation feedbacks and reflect them in your course settings:",
"course-authoring.advanced-settings.policies.description": "{notice} Do not modify these policies unless you are familiar with their purpose.",
"course-authoring.advanced-settings.deprecated.button.text": "{visibility} Deprecated Settings",
- "course-authoring.advanced-settings.button.help": "Show help text"
+ "course-authoring.advanced-settings.button.help": "Show help text",
+ "course-authoring.schedule.basic.title": "Basic information",
+ "course-authoring.schedule.basic.description": "The nuts and bolts of this course",
+ "course-authoring.schedule.basic.email-icon": "Invite your students email icon",
+ "course-authoring.schedule.basic.organization": "Organization",
+ "course-authoring.schedule.basic.course-number": "Course number",
+ "course-authoring.schedule.basic.course-run": "Course run",
+ "course-authoring.schedule.basic.banner.title": "Promoting your course with edX",
+ "course-authoring.schedule.basic.banner.text": "Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.",
+ "course-authoring.schedule.basic.promotion.button": "Invite your students",
+ "course-authoring.schedule.credit.title": "Course Credit Requirements",
+ "course-authoring.schedule.credit.description": "Steps required to earn course credit",
+ "course-authoring.schedule.credit.help": "A requirement appears in this list when you publish the unit that contains the requirement.",
+ "course-authoring.schedule.credit.minimum-grade": "Minimum Grade",
+ "course-authoring.schedule.credit.proctored-exam": "Successful Proctored Exam",
+ "course-authoring.schedule.credit.verification": "ID Verification",
+ "course-authoring.schedule.credit.not-found": "No credit requirements found.",
+ "course-authoring.schedule.pacing.title": "Course Pacing",
+ "course-authoring.schedule.pacing.description": "Set the pacing for this course",
+ "course-authoring.schedule.pacing.restriction": "Course pacing cannot be changed once a course has started",
+ "course-authoring.schedule.pacing.radio.instructor.label": "Instructor-Paced",
+ "course-authoring.schedule.pacing.radio.instructor.description": "Instructor-paced courses progress at the pace that the course author sets. You can configure release dates for course content and due dates for assignments.",
+ "course-authoring.schedule.pacing.radio.self-paced.label": "Self-Paced",
+ "course-authoring.schedule.pacing.radio.self-paced.description": "Self-paced courses offer suggested due dates for assignments or exams based on the learner’s enrollment date and the expected course duration. These courses offer learners flexibility to modify the assignment dates as needed.",
+ "course-authoring.schedule.sidebar.about.title": "How are these settings used?",
+ "course-authoring.schedule.sidebar.about.text": "Your course's schedule determines when students can enroll in and begin a course. Other information from this page appears on the About page for your course. This information includes the course overview, course image, introduction video, and estimated time requirements. Students use About pages to choose new courses to take.",
+ "course-authoring.schedule.heading.title": "Schedule & details",
+ "course-authoring.schedule.heading.subtitle": "Settings",
+ "course-authoring.schedule.alert.button.save": "Save Changes",
+ "course-authoring.schedule.alert.button.cancel": "Cancel",
+ "course-authoring.schedule.alert.warning.aria.labelledby": "notification-warning-title",
+ "course-authoring.schedule.alert.warning.aria.describedby": "notification-warning-description",
+ "course-authoring.schedule.alert.warning": "You`ve made some changes",
+ "course-authoring.schedule.alert.warning.descriptions": "Your changes will not take effect until you save your progress.",
+ "course-authoring.schedule.alert.success.aria.labelledby": "alert-confirmation-title",
+ "course-authoring.schedule.alert.success.aria.describedby": "alert-confirmation-description",
+ "course-authoring.schedule.alert.success": "Your changes have been saved.",
+ "course-authoring.help-sidebar.other.title": "Other Course Settings",
+ "course-authoring.help-sidebar.links.schedule-and-details": "Schedule & Details",
+ "course-authoring.help-sidebar.links.grading": "Grading",
+ "course-authoring.help-sidebar.links.course-team": "Course Team",
+ "course-authoring.help-sidebar.links.group-configurations": "Group Configurations",
+ "course-authoring.help-sidebar.links.proctored-exam-settings": "Proctored exam settings",
+ "course-authoring.help-sidebar.links.advanced-settings": "Advanced Settings",
+ "course-authoring.schedule.basic.email.subject":"Enroll in {courseDisplayName}.",
+ "course-authoring.schedule.basic.email.body": "The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.",
+ "course-authoring.schedule.basic.promotion.title": "Course Summary Page {smallText}"
}
diff --git a/src/index.scss b/src/index.scss
index 5c7bad7064..2b4ce95f16 100755
--- a/src/index.scss
+++ b/src/index.scss
@@ -4,6 +4,9 @@
@import "~@edx/brand/paragon/overrides";
@import "studio-header/header";
@import "~@edx/frontend-component-footer/dist/footer";
+@import "assets/scss/variables";
@import "proctored-exam-settings/proctoredExamSettings";
@import "pages-and-resources/discussions/app-list/AppList";
-@import "advanced-settings/scss/AdvencedSettings";
+@import "advanced-settings/scss/AdvancedSettings";
+@import "schedule-and-details/ScheduleAndDetails";
+@import "generic/scss/HelpSidebar";
diff --git a/src/proctored-exam-settings/proctoredExamSettings.scss b/src/proctored-exam-settings/proctoredExamSettings.scss
index 8ffc2e6f0e..7dc00ecad3 100644
--- a/src/proctored-exam-settings/proctoredExamSettings.scss
+++ b/src/proctored-exam-settings/proctoredExamSettings.scss
@@ -1,6 +1,6 @@
// legend styling should match label styling
legend {
- font-size: 1rem;
+ font-size: $spacer;
font-weight: 700;
}
diff --git a/src/schedule-and-details/ScheduleAndDetails.scss b/src/schedule-and-details/ScheduleAndDetails.scss
new file mode 100644
index 0000000000..51327a6f7e
--- /dev/null
+++ b/src/schedule-and-details/ScheduleAndDetails.scss
@@ -0,0 +1,18 @@
+@import "./basic-section/BasicSection";
+@import "./credit-section/CreditSection";
+@import "./pacing-section/PacingSection";
+
+.section-container {
+ &:not(:last-child) {
+ margin-bottom: 1.75rem;
+ }
+
+ .section-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-bottom: .25rem;
+ margin-bottom: .75rem;
+ border-bottom: $border-width solid $light-400;
+ }
+}
diff --git a/src/schedule-and-details/ScheduleAndDetails.test.jsx b/src/schedule-and-details/ScheduleAndDetails.test.jsx
new file mode 100644
index 0000000000..582b2dfd26
--- /dev/null
+++ b/src/schedule-and-details/ScheduleAndDetails.test.jsx
@@ -0,0 +1,77 @@
+import React from 'react';
+import { shallow, mount } from 'enzyme';
+import { IntlProvider, injectIntl } from '@edx/frontend-platform/i18n';
+import { useDispatch, useSelector } from 'react-redux';
+
+import { courseDetails, courseSettings } from './__mocks__';
+import {
+ fetchCourseDetailsQuery,
+ fetchCourseSettingsQuery,
+} from './data/thunks';
+import ScheduleAndDetails from '.';
+
+jest.mock('react-redux', () => ({
+ useSelector: jest.fn(),
+ useDispatch: jest.fn(),
+}));
+
+jest.mock('./data/thunks', () => ({
+ fetchCourseDetailsQuery: jest.fn(),
+ fetchCourseSettingsQuery: jest.fn(),
+ updateCourseDetailsQuery: jest.fn(),
+}));
+
+jest.mock('./data/selectors', () => ({
+ getCourseSettings: jest.fn(),
+ getSavingStatus: jest.fn(),
+ getCourseDetails: jest.fn(),
+ getLoadingDetailsStatus: jest.fn(),
+ getLoadingSettingsStatus: jest.fn(),
+}));
+
+const mockPathname = '/foo-bar';
+jest.mock('react-router-dom', () => ({
+ ...jest.requireActual('react-router-dom'),
+ useLocation: () => ({
+ pathname: mockPathname,
+ }),
+}));
+
+describe('
', () => {
+ const courseId = '123';
+ const mockDispatch = jest.fn();
+ let wrapper;
+ useDispatch.mockReturnValue(mockDispatch);
+
+ beforeEach(() => {
+ useSelector
+ .mockReturnValueOnce(courseSettings)
+ .mockReturnValueOnce(courseDetails);
+ wrapper = mount(
+
+
+ ,
+ );
+ });
+
+ afterEach(() => jest.clearAllMocks());
+
+ it('should render without errors', () => {
+ shallow(
);
+ });
+
+ it('should fetch course setting and details on mount', () => {
+ expect(mockDispatch).toHaveBeenCalledTimes(2);
+ expect(fetchCourseDetailsQuery).toHaveBeenCalledWith(courseId);
+ expect(fetchCourseSettingsQuery).toHaveBeenCalledWith(courseId);
+ });
+
+ it('should render available sections', () => {
+ const basicSection = wrapper.find('BasicSection');
+ const creditSection = wrapper.find('CreditSection');
+ const pacingSection = wrapper.find('PacingSection');
+ expect(basicSection.exists()).toBe(true);
+ expect(creditSection.exists()).toBe(true);
+ expect(pacingSection.exists()).toBe(true);
+ });
+});
diff --git a/src/schedule-and-details/__mocks__/courseDetails.js b/src/schedule-and-details/__mocks__/courseDetails.js
new file mode 100644
index 0000000000..494a9ee914
--- /dev/null
+++ b/src/schedule-and-details/__mocks__/courseDetails.js
@@ -0,0 +1,48 @@
+module.exports = {
+ aboutSidebarHtml: '',
+ bannerImageName: 'images_course_image.jpg',
+ bannerImageAssetPath:
+ '/asset-v1:edX+M12+2T2023+type@asset+block@images_courseasdd_image.jpg',
+ certificateAvailableDate: null,
+ certificatesDisplayBehavior: 'end',
+ courseId: 'M12',
+ courseImageAssetPath: '/static/studio/images/pencils.jpg',
+ courseImageName: '',
+ description: '',
+ duration: '',
+ effort: null,
+ endDate: null,
+ enrollmentEnd: null,
+ enrollmentStart: null,
+ entranceExamEnabled: '',
+ entranceExamId: '',
+ entranceExamMinimumScorePct: '50',
+ instructorInfo: {
+ instructors: [
+ {
+ name: 'foo bar',
+ title: 'title',
+ organization: 'org',
+ image: 'image',
+ bio: '',
+ },
+ ],
+ },
+ introVideo: null,
+ language: 'creative-commons: ver=4.0 BY NC ND',
+ learningInfo: [],
+ license: 'creative-commons: ver=4.0 BY NC ND',
+ org: 'edX',
+ overview: "
",
+ preRequisiteCourses: [],
+ run: '2T2023',
+ selfPaced: false,
+ shortDescription: '',
+ startDate: '2023-06-14T00:00:00Z',
+ subtitle: '',
+ syllabus: null,
+ title: '',
+ videoThumbnailImageAssetPath:
+ '/asset-v1:edX+M12+2T2023+type@asset+block@images_course_image.jpg',
+ videoThumbnailImageName: 'images_course_image.jpg',
+};
diff --git a/src/schedule-and-details/__mocks__/courseSettings.js b/src/schedule-and-details/__mocks__/courseSettings.js
new file mode 100644
index 0000000000..bf748e2980
--- /dev/null
+++ b/src/schedule-and-details/__mocks__/courseSettings.js
@@ -0,0 +1,60 @@
+module.exports = {
+ aboutPageEditable: false,
+ canShowCertificateAvailableDateField: false,
+ courseDisplayName: 'Differential Equations',
+ courseDisplayNameWithDefault: 'Differential Equations',
+ creditEligibilityEnabled: true,
+ creditRequirements: {
+ grade: [
+ {
+ name: 'grade',
+ displayName: 'Minimum Grade',
+ criteria: {
+ minGrade: 0.8,
+ },
+ },
+ ],
+ },
+ enableExtendedCourseDetails: true,
+ enrollmentEndEditable: true,
+ isCreditCourse: true,
+ isEntranceExamsEnabled: true,
+ isPrerequisiteCoursesEnabled: true,
+ languageOptions: [
+ ['en', 'English'],
+ ['uk', 'Ukrainian'],
+ ],
+ lmsLinkForAboutPage:
+ 'http://localhost:18000/courses/course-v1:edX+M12+2T2023/about',
+ marketingEnabled: true,
+ mfeProctoredExamSettingsUrl: '',
+ possiblePreRequisiteCourses: [
+ {
+ courseKey: 'course-v1:edX+P315+2T2023',
+ displayName: 'Quantum Entanglement',
+ lmsLink:
+ '//localhost:18000/courses/course-v1:edX+P315+2T2023/jump_to/block-v1:edX+P315+2T2023+type@course+block@course',
+ number: 'P315',
+ org: 'edX',
+ rerunLink: '/course_rerun/course-v1:edX+P315+2T2023',
+ run: '2T2023',
+ url: '/course/course-v1:edX+P315+2T2023',
+ },
+ {
+ courseKey: 'course-v1:edX+DemoX+Demo_Course',
+ displayName: 'Demonstration Course',
+ lmsLink:
+ '//localhost:18000/courses/course-v1:edX+DemoX+Demo_Course/jump_to/block-v1:edX+DemoX+Demo_Course+type@course+block@course',
+ number: 'DemoX',
+ org: 'edX',
+ rerunLink: '/course_rerun/course-v1:edX+DemoX+Demo_Course',
+ run: 'Demo_Course',
+ url: '/course/course-v1:edX+DemoX+Demo_Course',
+ },
+ ],
+ shortDescriptionEditable: true,
+ showMinGradeWarning: false,
+ sidebarHtmlEnabled: true,
+ upgradeDeadline: '2023-07-02T23:59:59+00:00',
+ useV2CertDisplaySettings: false,
+};
diff --git a/src/schedule-and-details/__mocks__/index.js b/src/schedule-and-details/__mocks__/index.js
new file mode 100644
index 0000000000..bb59092754
--- /dev/null
+++ b/src/schedule-and-details/__mocks__/index.js
@@ -0,0 +1,2 @@
+export { default as courseDetails } from './courseDetails';
+export { default as courseSettings } from './courseSettings';
diff --git a/src/schedule-and-details/basic-section/BasicSection.scss b/src/schedule-and-details/basic-section/BasicSection.scss
new file mode 100644
index 0000000000..a4069a3b80
--- /dev/null
+++ b/src/schedule-and-details/basic-section/BasicSection.scss
@@ -0,0 +1,31 @@
+.basic-section {
+ .basic-info-list {
+ display: flex;
+ justify-content: space-between;
+ margin: .75rem 0 1.75rem;
+ padding-inline-start: 0;
+ list-style-type: none;
+ }
+
+ .pgn__pageBanner-component {
+ @include pgn-box-shadow(1, "down");
+
+ background-color: $white;
+ border-radius: .375rem;
+ }
+
+ .pgn__pageBanner-content {
+ align-items: flex-start;
+ padding: 1.5rem;
+ flex-direction: column;
+ }
+
+ .pgn__pageBanner-dismissButtonContainer {
+ margin: 1.5rem 1.5rem 0 0;
+ align-self: baseline;
+ }
+
+ .pgn__card-header-content {
+ margin-top: .75rem;
+ }
+}
diff --git a/src/schedule-and-details/basic-section/BasicSection.test.jsx b/src/schedule-and-details/basic-section/BasicSection.test.jsx
new file mode 100644
index 0000000000..bb78537f30
--- /dev/null
+++ b/src/schedule-and-details/basic-section/BasicSection.test.jsx
@@ -0,0 +1,80 @@
+import React from 'react';
+import { render } from '@testing-library/react';
+import renderer from 'react-test-renderer';
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { IntlProvider } from 'react-intl';
+
+import { INVITE_STUDENTS_LINK_ID } from './constants';
+import BasicSection from '.';
+
+describe('
', () => {
+ const RootWrapper = (props) => (
+
+
+
+ );
+
+ const props = {
+ intl: {},
+ org: 'foo org',
+ courseNumber: 'bar number',
+ run: 'foo run',
+ lmsLinkForAboutPage: 'link://to',
+ marketingEnabled: true,
+ courseDisplayName: 'foo course',
+ platformName: 'Your platform name here',
+ };
+
+ it('matches the snapshots', () => {
+ const tree = renderer.create(
).toJSON();
+ expect(tree).toMatchSnapshot();
+ });
+
+ it('renders basic section successfully', () => {
+ const { getByText } = render(
);
+ expect(getByText(/Basic information/i)).toBeInTheDocument();
+ expect(getByText(/The nuts and bolts of this course/i)).toBeInTheDocument();
+ expect(getByText(/Organization/i)).toBeInTheDocument();
+ expect(getByText(props.org)).toBeInTheDocument();
+ expect(getByText(/Course number/i)).toBeInTheDocument();
+ expect(getByText(props.courseNumber)).toBeInTheDocument();
+ expect(getByText(/Course run/i)).toBeInTheDocument();
+ expect(getByText(props.run)).toBeInTheDocument();
+ });
+
+ it('shows the page banner if the marketingEnabled is true', () => {
+ const { getByText, queryAllByText } = render(
);
+ expect(getByText(/Promoting your course with edX/i)).toBeInTheDocument();
+ expect(
+ getByText(
+ /Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page./i,
+ ),
+ ).toBeInTheDocument();
+ expect(queryAllByText('Course Summary Page').length).toBe(0);
+ });
+
+ it('shows the course promotion if the marketingEnabled is false', () => {
+ const initialProps = { ...props, marketingEnabled: false };
+ const { getByText, getByRole, queryAllByText } = render(
+
,
+ );
+ const inviteButton = getByRole('button', { name: 'Invite your students' });
+
+ expect(getByText(/Course Summary Page/i)).toBeInTheDocument();
+ expect(
+ getByText(/(for student enrollment and access)/i),
+ ).toBeInTheDocument();
+ expect(getByText(props.lmsLinkForAboutPage)).toBeInTheDocument();
+ expect(inviteButton).toBeInTheDocument();
+ expect(queryAllByText('Promoting your course with edX').length).toBe(0);
+ });
+
+ it('checks link link to invite', () => {
+ const initialProps = { ...props, marketingEnabled: false };
+ const { getByTestId } = render(
);
+ const inviteLink = getByTestId(INVITE_STUDENTS_LINK_ID);
+ expect(decodeURIComponent(inviteLink.href)).toEqual(
+ `mailto:${process.env.INVITE_STUDENTS_EMAIL_TO}?body=The course ${props.courseDisplayName}, provided by ${props.platformName}, is open for enrollment. Please navigate to this course at ${props.lmsLinkForAboutPage} to enroll.&subject=Enroll in ${props.courseDisplayName}.`,
+ );
+ });
+});
diff --git a/src/schedule-and-details/basic-section/__snapshots__/BasicSection.test.jsx.snap b/src/schedule-and-details/basic-section/__snapshots__/BasicSection.test.jsx.snap
new file mode 100644
index 0000000000..2b89920365
--- /dev/null
+++ b/src/schedule-and-details/basic-section/__snapshots__/BasicSection.test.jsx.snap
@@ -0,0 +1,123 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`
matches the snapshots 1`] = `
+
+
+
+ Basic information
+
+
+ The nuts and bolts of this course
+
+
+
+ -
+
+ Organization
+
+
+ foo org
+
+
+ -
+
+ Course number
+
+
+ bar number
+
+
+ -
+
+ Course run
+
+
+ foo run
+
+
+
+
+
+
+ Promoting your course with edX
+
+
+ Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.
+
+
+
+
+
+
+
+`;
diff --git a/src/schedule-and-details/basic-section/constants.js b/src/schedule-and-details/basic-section/constants.js
new file mode 100644
index 0000000000..56e1cc84ed
--- /dev/null
+++ b/src/schedule-and-details/basic-section/constants.js
@@ -0,0 +1,2 @@
+/* eslint-disable-next-line import/prefer-default-export */
+export const INVITE_STUDENTS_LINK_ID = 'invite-students-link';
diff --git a/src/schedule-and-details/basic-section/index.jsx b/src/schedule-and-details/basic-section/index.jsx
new file mode 100644
index 0000000000..042d9db997
--- /dev/null
+++ b/src/schedule-and-details/basic-section/index.jsx
@@ -0,0 +1,155 @@
+import React, { useState } from 'react';
+import PropTypes from 'prop-types';
+import {
+ injectIntl,
+ intlShape,
+ FormattedMessage,
+} from '@edx/frontend-platform/i18n';
+import {
+ PageBanner, Button, Card, MailtoLink, Hyperlink,
+} from '@edx/paragon';
+import { Email as EmailIcon } from '@edx/paragon/icons';
+
+import { INVITE_STUDENTS_LINK_ID } from './constants';
+import messages from './messages';
+
+const BasicSection = ({
+ intl,
+ org,
+ courseNumber,
+ run,
+ lmsLinkForAboutPage,
+ marketingEnabled,
+ courseDisplayName,
+ platformName,
+}) => {
+ const [showPageBanner, setShowPageBanner] = useState(true);
+ const emailSubject = intl.formatMessage(
+ {
+ id: 'course-authoring.schedule.basic.email.subject',
+ defaultMessage: 'Enroll in {courseDisplayName}.',
+ },
+ { courseDisplayName },
+ );
+
+ const emailBody = intl.formatMessage(
+ {
+ id: 'course-authoring.schedule.basic.email.body',
+ defaultMessage:
+ 'The course {courseDisplayName}, provided by {platformName}, is open for enrollment. Please navigate to this course at {lmsLinkForAboutPage} to enroll.',
+ },
+ {
+ courseDisplayName,
+ platformName,
+ lmsLinkForAboutPage,
+ },
+ );
+
+ const promotionTitle = (
+
(for student enrollment and access),
+ }}
+ />
+ );
+
+ const courseBasicInfo = [
+ {
+ label: `${intl.formatMessage(messages.courseOrganization)}`,
+ prefix: 'basic-organization',
+ value: org,
+ },
+ {
+ label: `${intl.formatMessage(messages.courseNumber)}`,
+ prefix: 'basic-course-number',
+ value: courseNumber,
+ },
+ {
+ label: `${intl.formatMessage(messages.courseRun)}`,
+ prefix: 'basic-course-run',
+ value: run,
+ },
+ ];
+
+ const renderBasicInfo = (info) => (
+
+ {info.label}
+ {info.value}
+
+ );
+
+ const renderPageBanner = () => (
+ setShowPageBanner(false)}
+ className="align-items-start"
+ >
+ {intl.formatMessage(messages.basicBannerTitle)}
+
+ {intl.formatMessage(messages.basicBannerText)}
+
+
+ );
+
+ const renderCoursePromotion = () => (
+
+
+
+
+ {lmsLinkForAboutPage}
+
+
+
+
+
+
+
+
+
+ );
+
+ return (
+
+
+
+ {intl.formatMessage(messages.basicTitle)}
+
+
+ {intl.formatMessage(messages.basicDescription)}
+
+
+
+ {courseBasicInfo.map(renderBasicInfo)}
+
+ {marketingEnabled ? renderPageBanner() : renderCoursePromotion()}
+
+ );
+};
+
+BasicSection.propTypes = {
+ intl: intlShape.isRequired,
+ org: PropTypes.string.isRequired,
+ courseNumber: PropTypes.string.isRequired,
+ run: PropTypes.string.isRequired,
+ lmsLinkForAboutPage: PropTypes.string.isRequired,
+ marketingEnabled: PropTypes.bool.isRequired,
+ courseDisplayName: PropTypes.string.isRequired,
+ platformName: PropTypes.string.isRequired,
+};
+
+export default injectIntl(BasicSection);
diff --git a/src/schedule-and-details/basic-section/messages.js b/src/schedule-and-details/basic-section/messages.js
new file mode 100644
index 0000000000..6b358b5e4e
--- /dev/null
+++ b/src/schedule-and-details/basic-section/messages.js
@@ -0,0 +1,42 @@
+import { defineMessages } from '@edx/frontend-platform/i18n';
+
+const messages = defineMessages({
+ basicTitle: {
+ id: 'course-authoring.schedule.basic.title',
+ defaultMessage: 'Basic information',
+ },
+ basicDescription: {
+ id: 'course-authoring.schedule.basic.description',
+ defaultMessage: 'The nuts and bolts of this course',
+ },
+ basicEmailIcon: {
+ id: 'course-authoring.schedule.basic.email-icon',
+ defaultMessage: 'Invite your students email icon',
+ },
+ courseOrganization: {
+ id: 'course-authoring.schedule.basic.organization',
+ defaultMessage: 'Organization',
+ },
+ courseNumber: {
+ id: 'course-authoring.schedule.basic.course-number',
+ defaultMessage: 'Course number',
+ },
+ courseRun: {
+ id: 'course-authoring.schedule.basic.course-run',
+ defaultMessage: 'Course run',
+ },
+ basicBannerTitle: {
+ id: 'course-authoring.schedule.basic.banner.title',
+ defaultMessage: 'Promoting your course with edX',
+ },
+ basicBannerText: {
+ id: 'course-authoring.schedule.basic.banner.text',
+ defaultMessage: 'Your course summary page will not be viewable until your course has been announced. To provide content for the page and preview it, follow the instructions provided by your Program Manager. Please note that changes here may take up to a business day to appear on your course summary page.',
+ },
+ basicPromotionButton: {
+ id: 'course-authoring.schedule.basic.promotion.button',
+ defaultMessage: 'Invite your students',
+ },
+});
+
+export default messages;
diff --git a/src/schedule-and-details/credit-section/CreditSection.scss b/src/schedule-and-details/credit-section/CreditSection.scss
new file mode 100644
index 0000000000..febcc2e779
--- /dev/null
+++ b/src/schedule-and-details/credit-section/CreditSection.scss
@@ -0,0 +1,7 @@
+.credit-section .credit-info-list {
+ display: flex;
+ justify-content: space-between;
+ margin: 1.25rem 0 1.75rem;
+ padding-inline-start: 0;
+ list-style-type: none;
+}
diff --git a/src/schedule-and-details/credit-section/CreditSection.test.jsx b/src/schedule-and-details/credit-section/CreditSection.test.jsx
new file mode 100644
index 0000000000..c91007ec66
--- /dev/null
+++ b/src/schedule-and-details/credit-section/CreditSection.test.jsx
@@ -0,0 +1,61 @@
+import React from 'react';
+import { render } from '@testing-library/react';
+import renderer from 'react-test-renderer';
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { IntlProvider } from 'react-intl';
+
+import CreditSection from '.';
+
+describe('', () => {
+ const RootWrapper = (props) => (
+
+
+
+ );
+
+ const props = {
+ creditRequirements: {
+ grade: [
+ {
+ name: 'grade',
+ displayName: 'Minimum Grade',
+ criteria: {
+ minGrade: 0.8,
+ },
+ },
+ ],
+ },
+ };
+
+ it('matches the snapshots', () => {
+ const tree = renderer.create().toJSON();
+ expect(tree).toMatchSnapshot();
+ });
+
+ it('renders credit section successfully', () => {
+ const { getByText } = render();
+ expect(getByText(/Course Credit Requirements/i)).toBeInTheDocument();
+ expect(
+ getByText(/Steps required to earn course credit/i),
+ ).toBeInTheDocument();
+ expect(
+ getByText(
+ /A requirement appears in this list when you publish the unit that contains the requirement./i,
+ ),
+ ).toBeInTheDocument();
+ });
+
+ it('renders empty requirements', () => {
+ const initialProps = { ...props, creditRequirements: {} };
+ const { getByText } = render();
+ expect(getByText(/No credit requirements found./i)).toBeInTheDocument();
+ });
+
+ it('renders requirements successfully', () => {
+ const { getByText, queryAllByText } = render();
+ expect(getByText(/Minimum Grade/)).toBeInTheDocument();
+ expect(getByText(/80%/i)).toBeInTheDocument();
+ expect(queryAllByText('Successful Proctored Exam').length).toBe(0);
+ expect(queryAllByText('ID Verification').length).toBe(0);
+ });
+});
diff --git a/src/schedule-and-details/credit-section/__snapshots__/CreditSection.test.jsx.snap b/src/schedule-and-details/credit-section/__snapshots__/CreditSection.test.jsx.snap
new file mode 100644
index 0000000000..b4f215f0a2
--- /dev/null
+++ b/src/schedule-and-details/credit-section/__snapshots__/CreditSection.test.jsx.snap
@@ -0,0 +1,47 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[` matches the snapshots 1`] = `
+
+
+
+ Course Credit Requirements
+
+
+ Steps required to earn course credit
+
+
+
+ A requirement appears in this list when you publish the unit that contains the requirement.
+
+
+ -
+
+ Minimum Grade
+
+
+
+ 80%
+
+
+
+
+
+`;
diff --git a/src/schedule-and-details/credit-section/index.jsx b/src/schedule-and-details/credit-section/index.jsx
new file mode 100644
index 0000000000..a75da4c090
--- /dev/null
+++ b/src/schedule-and-details/credit-section/index.jsx
@@ -0,0 +1,84 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
+
+import messages from './messages';
+
+const CreditSection = ({ intl, creditRequirements }) => {
+ const CREDIT_REQUIREMENTS_TYPES = {
+ grade: intl.formatMessage(messages.creditMinimumGrade),
+ proctoredExam: intl.formatMessage(messages.creditProctoredExam),
+ reverification: intl.formatMessage(messages.creditVerification),
+ };
+
+ const renderRequirementValue = (requirementValue, key) => {
+ const displayValue = key === 'grade'
+ ? `${(parseFloat(requirementValue.criteria.minGrade) || 0) * 100}%`
+ : requirementValue.displayName;
+ return (
+
+ {displayValue}
+
+ );
+ };
+
+ const renderCreditRequirements = (requirements) => {
+ const creditRequirementsKeys = Object.keys(requirements);
+
+ if (creditRequirementsKeys.length) {
+ return (
+
+ );
+ }
+ return {intl.formatMessage(messages.creditNotFound)}
;
+ };
+
+ return (
+
+
+ {intl.formatMessage(messages.creditTitle)}
+
+ {intl.formatMessage(messages.creditDescription)}
+
+
+ {intl.formatMessage(messages.creditHelp)}
+ {renderCreditRequirements(creditRequirements)}
+
+ );
+};
+
+const creditRequirementsNamespace = PropTypes.shape({
+ name: PropTypes.string,
+ display_name: PropTypes.string,
+ criteria: PropTypes.shape({
+ min_grade: PropTypes.number,
+ }),
+});
+
+const creditRequirementsPropTypes = PropTypes.shape({
+ proctoredExam: PropTypes.arrayOf(creditRequirementsNamespace),
+ grade: PropTypes.arrayOf(creditRequirementsNamespace),
+ reverification: PropTypes.arrayOf(creditRequirementsNamespace),
+});
+
+CreditSection.defaultProps = {
+ creditRequirements: undefined,
+};
+
+CreditSection.propTypes = {
+ intl: intlShape.isRequired,
+ creditRequirements: creditRequirementsPropTypes,
+};
+
+export default injectIntl(CreditSection);
diff --git a/src/schedule-and-details/credit-section/messages.js b/src/schedule-and-details/credit-section/messages.js
new file mode 100644
index 0000000000..164ed515ab
--- /dev/null
+++ b/src/schedule-and-details/credit-section/messages.js
@@ -0,0 +1,35 @@
+import { defineMessages } from '@edx/frontend-platform/i18n';
+
+const messages = defineMessages({
+ creditTitle: {
+ id: 'course-authoring.schedule.credit.title',
+ defaultMessage: 'Course Credit Requirements',
+ },
+ creditDescription: {
+ id: 'course-authoring.schedule.credit.description',
+ defaultMessage: 'Steps required to earn course credit',
+ },
+ creditHelp: {
+ id: 'course-authoring.schedule.credit.help',
+ defaultMessage:
+ 'A requirement appears in this list when you publish the unit that contains the requirement.',
+ },
+ creditMinimumGrade: {
+ id: 'course-authoring.schedule.credit.minimum-grade',
+ defaultMessage: 'Minimum Grade',
+ },
+ creditProctoredExam: {
+ id: 'course-authoring.schedule.credit.proctored-exam',
+ defaultMessage: 'Successful Proctored Exam',
+ },
+ creditVerification: {
+ id: 'course-authoring.schedule.credit.verification',
+ defaultMessage: 'ID Verification',
+ },
+ creditNotFound: {
+ id: 'course-authoring.schedule.credit.not-found',
+ defaultMessage: 'No credit requirements found.',
+ },
+});
+
+export default messages;
diff --git a/src/schedule-and-details/data/api.js b/src/schedule-and-details/data/api.js
new file mode 100644
index 0000000000..94d45de094
--- /dev/null
+++ b/src/schedule-and-details/data/api.js
@@ -0,0 +1,41 @@
+/* eslint-disable import/prefer-default-export */
+import { camelCaseObject, getConfig } from '@edx/frontend-platform';
+import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
+import { convertObjectToSnakeCase } from '../../utils';
+
+const getApiBaseUrl = () => getConfig().STUDIO_BASE_URL;
+const getCourseDetailsApiUrl = () => `${getApiBaseUrl()}/api/contentstore/v1/course_details/`;
+const getCourseSettingsApiUrl = () => `${getApiBaseUrl()}/api/contentstore/v1/course_settings/`;
+
+/**
+ * Get course details.
+ * @param {string} courseId
+ * @returns {Promise