| | | | |
---|
Course Outline [CO] | | |
| Top level page (BE) | New REST endpoint to get initial data for the page using legacy functionality by URI https://cms-studio-mfe-dev.raccoongang.com/course/course-v1:2u_rerun+1+123 , def course_index - contains all necessary data to render whole page Main Serializer with methods, which use ready utils to get appropriate data (course_structure, initial_state, lms_link etc.)
| @Volodymyr Bergman investigated see: Status Bar API (BE)
we need to investigate two endpoint when user enter to the page, and create ticket for creatingcourse/{course_id} we need to figure out if we're going to rewrite them or union with with the previous one endpoint course_index http://localhost:18010/api/courses/v1/quality/course-v1:edx+10101+1012/?exclude_graded=true&all=true http://localhost:18010/api/courses/v1/validation/course-v1:edx+10101+1012/?graded_only=true&all=true Because it give us additional variables for status bar | Delivered feat: create DRF endpoint to get course index context by ruzniaievdm · Pull Request #32856 · openedx/edx-platform |
| Top level page (FE) | Create a new page with path /course/:course_id/outline Display Sections A,B,D from the screen
| | Delivered |
| Status Bar (FE)start date pacing type checklists
| | Current implementation sfe stands for studiofrontend
Assumptions | Delivered |
| Status Bar: Course Highlight Emails (FE) | course highlight emails depends on: course.highlights_enabled_for_messaging uses global page state data activated not activated docs link
UI: docs navigation button UI: activation button (relation: backend handler) UI: modal confirmation dialog UI component
| Assumptions | |
| Porting: Video Sharing - blocker - TBD(legacy backport) | | | |
| Status Bar: Video Sharing (FE) - TBD blocked | blocked by Video Sharing legacy backport depends on: waffle video_config.public_video_share optional feature (can be deactivated) how initial state is fulfilled? dropdown selector for sharing mode update docs URL: help-tokens "social_sharing"
| resolved
Official docs backend is available in edx-platform#master BE app: openedx/core/djangoapps/video_config widget template (legacy, for reference): cms/templates/js/course-video-sharing-enable.underscore
BE utils: | |
| Status Bar: Video Sharing (BE) - TBD | blocked by Video Sharing legacy backport | Assumptions | |
| Status Bar API (BE) | | | |
| | Course validation metrics API | upstream PR GET details # URL
<CMS>/api/courses/v1/validation/course-v1:RG+DEV+TL0/?graded_only=true&all=true
# params
- graded_only: true
- all: true
# response
{
"is_self_paced": false,
"dates": {
"has_start_date": false,
"has_end_date": false
},
"assignments": {
"total_number": 0,
"total_visible": 0,
"assignments_with_dates_before_start": [],
"assignments_with_dates_after_end": [],
"assignments_with_ora_dates_before_start": [],
"assignments_with_ora_dates_after_end": []
},
"grades": {
"has_grading_policy": false,
"sum_of_weights": 1.0
},
"certificates": {
"is_activated": false,
"has_certificate": false,
"is_enabled": true
},
"updates": {
"has_update": false
},
"proctoring": {
"needs_proctoring_escalation_email": false,
"has_proctoring_escalation_email": false
}
}
| |
| | Course quality metrics API | upstream PR GET details # URL
<CMS>/api/courses/v1/quality/course-v1:RG+DEV+TL0/?exclude_graded=true&all=true
# params
- exclude_graded: true
- all: true
# response
{
"is_self_paced": false,
"sections": {
"total_number": 0,
"total_visible": 0,
"number_with_highlights": 0,
"highlights_active_for_course": false,
"highlights_enabled": true
},
"subsections": {
"total_visible": 0,
"num_with_one_block_type": 0,
"num_block_types": {
"min": null,
"max": null,
"mean": null,
"median": null,
"mode": null
}
},
"units": {
"total_visible": 0,
"num_blocks": {
"min": null,
"max": null,
"mean": null,
"median": null,
"mode": null
}
},
"videos": {
"total_number": 0,
"num_mobile_encoded": 0,
"num_with_val_id": 0,
"durations": {
"min": null,
"max": null,
"mean": null,
"median": null,
"mode": null
}
}
}
| |
| Tool Bar: New Section (FE) | AC
Tech | POST details # URL
<CMS>/xblock/
# payload
{
"parent_locator":"block-v1:RG+DEV+TL0+type@course+block@course",
"category":"chapter",
"display_name":"Section"
}
# response
{
courseKey: "course-v1:RG+DEV+TL0"
locator: "block-v1:RG+DEV+TL0+type@chapter+block@c11e7df2bd8449fa8c7782ef46ba77df"
} GET details # URL
<CMS>/xblock/outline/block-v1:RG+DEV+TL0+type@course+block@course
# response
{
"id": "block-v1:RG+DEV+TL0+type@course+block@course",
"display_name": "Course Outline",
"category": "course",
"has_children": true,
"unit_level_discussions": false,
"edited_on": "Jul 29, 2023 at 15:51 UTC",
"published": true,
"published_on": "Jul 29, 2023 at 15:51 UTC",
"studio_url": "/course/course-v1:RG+DEV+TL0",
"released_to_students": false,
"release_date": null,
"visibility_state": null,
"has_explicit_staff_lock": false,
"start": "2030-01-01T00:00:00Z",
"graded": false,
"due_date": "",
"due": null,
"relative_weeks_due": null,
"format": null,
"course_graders": [
"Homework",
"Lab",
"Midterm Exam",
"Final Exam"
],
"has_changes": false,
"actions": {
"deletable": true,
"draggable": true,
"childAddable": true,
"duplicable": true
},
"explanatory_message": null,
"group_access": {},
"user_partitions": [
{
"id": 50,
"name": "Enrollment Track Groups",
"scheme": "enrollment_track",
"groups": [
{
"id": 1,
"name": "Audit",
"selected": false,
"deleted": false
}
]
}
],
"show_correctness": "always",
"highlights_enabled_for_messaging": false,
"highlights_enabled": true,
"highlights_preview_only": false,
"highlights_doc_url": "http://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/open-release-olive.master/developing_course/course_sections.html#set-section-highlights-for-weekly-course-highlight-messages",
"enable_proctored_exams": false,
"create_zendesk_tickets": true,
"enable_timed_exams": true,
"child_info": {
"category": "chapter",
"display_name": "Section",
"children": [
{
"id": "block-v1:RG+DEV+TL0+type@chapter+block@c11e7df2bd8449fa8c7782ef46ba77df",
"display_name": "Section",
"category": "chapter",
"has_children": true,
"edited_on": "Jul 29, 2023 at 15:51 UTC",
"published": true,
"published_on": "Jul 29, 2023 at 15:51 UTC",
"studio_url": "/course/course-v1:RG+DEV+TL0?show=block-v1%3ARG%2BDEV%2BTL0%2Btype%40chapter%2Bblock%40c11e7df2bd8449fa8c7782ef46ba77df",
"released_to_students": false,
"release_date": null,
"visibility_state": "unscheduled",
"has_explicit_staff_lock": false,
"start": "2030-01-01T00:00:00Z",
"graded": false,
"due_date": "",
"due": null,
"relative_weeks_due": null,
"format": null,
"course_graders": [
"Homework",
"Lab",
"Midterm Exam",
"Final Exam"
],
"has_changes": false,
"actions": {
"deletable": true,
"draggable": true,
"childAddable": true,
"duplicable": true
},
"explanatory_message": null,
"group_access": {},
"user_partitions": [
{
"id": 50,
"name": "Enrollment Track Groups",
"scheme": "enrollment_track",
"groups": [
{
"id": 1,
"name": "Audit",
"selected": false,
"deleted": false
}
]
}
],
"show_correctness": "always",
"highlights": [],
"highlights_enabled": true,
"highlights_preview_only": false,
"highlights_doc_url": "http://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/open-release-olive.master/developing_course/course_sections.html#set-section-highlights-for-weekly-course-highlight-messages",
"child_info": {
"category": "sequential",
"display_name": "Subsection",
"children": []
},
"ancestor_has_staff_lock": false,
"staff_only_message": false,
"has_partition_group_components": false,
"user_partition_info": {
"selectable_partitions": [],
"selected_partition_index": -1,
"selected_groups_label": ""
}
}
]
},
"ancestor_has_staff_lock": false,
"staff_only_message": false,
"has_partition_group_components": false,
"user_partition_info": {
"selectable_partitions": [],
"selected_partition_index": -1,
"selected_groups_label": ""
}
}
| |
| Tool Bar: New Section (BE) | use existing API name='xblock_handler'
| | |
| Tool Bar: Reindex (FE) | uses global page state data optional feature (button renders conditionally) button is disabled while reindex depends on setting ‘reindex_link' uses legacy API endpoint implement Success Alert component (generic) use Success Alert when reindex has succeeded display error alert when reindex has failed (see legacy for text/title) Note: course re-run uses similar UI feedback component tooltip: Reindex current course
| | Delivered |
| Tool Bar: Reindex (BE) | | | Delivered |
| Tool Bar: View Live (FE) | | | Delivered |
| Generic: Processing Feedback (FE) | | | Delivered |
| Content: Empty (FE) | uses global page state data UI component: empty course placeholder API interactions: on New Section button click tooltip: Click to add a new section
| | Delivered |
| Content: Not empty (FE) | uses global page state data UI component: full-width New Section button conditional rendering: not empty course content the button must be displayed in the end of course content API interactions: on New Section button click - another course Section is created (appears on the last position)
| Assumptions | |
| Content: Sections list (FE) | renders course content (Section cards list) actions menu items - non-functioning edit mode - out of scope content (subsections) - out of scope highlights - out of scope
uses global page state data UI component: Section card
| | Partially delivered |
| Update Section card | AC
Tech update | | Delivered |
| | AC A new widget is added to a Section card; Section Highlights widget displays a number of highlights for the given Section;
The whole widget is interactive - if clicked a modal window opens; Modal’s descriptions must include corresponding documentation link (a part of the help-tokens feature) Section highlights modal allows section highlights items editing;
Tech uses global page state data widget placement: Section card status zone (see: new design) UI component: highlights widget UI component: Section highlights modal dialog elements: title description form (see new design)
|