| | | | |
---|
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 | | |
| Tool Bar: New Section (FE) | AC
Tech | | |
| 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) actions: Cancel button
Save highlights button
disabled until form is dirty and valid closes dialog updates section (API POST) displays Saving Processing Feedback
| Section highlights update: | Delivered |
| Content: Section Highlights (BE) | | | |
| Content: Section Edit (FE) | AC Section card edit mode allows Section title editing; Section card enters edit mode: on its options menu Edit item click on card Edit (pencil icon) button click Edit button becomes disabled
Section card exits edit mode:
Tech | Design Section editing save: | Delivered |
| Content: Section Edit (BE) | | | |
| Content: Section Publish (FE) | AC
Tech | Section publishing: | Delivered |
| Content: Section Publish (BE) | | | |
| Content: Section Configure (FE) | AC Section settings can be updated Settings are configured via Section Settings modal dialog Configurations available:
Tech | Section configuration: | |
| Content: Section Configure (BE) | | | |
| Content: Section Duplicate (FE) | AC
Tech | Section duplication: | Delivered |
| Duplicated Section scroll effect - TBD | | | |
| Content: Section Duplicate (BE) | | | |
| Content: Section Delete (FE) | AC Section can be deleted (removed) Section deletion action happens via confirmation modal dialog Once deleted Section disappears from sections list
Tech | Section deletion: | Delivered |
| Content: Section Delete (BE) | | | |
| Content: Section Move (FE) - TBD | How exactly moving action should work? as it works in legacy (drag&drop section card; no action in menu) new approach (e.g. on click in options menu Move button section card enters moving mode and can be moved by arrow keys + or entering a number key it is moved to that numeric position…)
declined via Slack hybrid (always draggable + moving mode for keyboard actions)
| Only drag-n-drop is available. | |
| Content: Subsections list (FE) | AC Section card renders its children subsections in the content zone Subsections are expanded after initial page loading Nothing is rendered if there are no subsection in section
Tech renders section content (Subsection cards list) uses global page state data UI component: Subsection card
| Subsection card hover cursors Pointer Move Subsection card elements | |
| Content: New Subsection (FE) | AC Section’s content zone provides New subsection full-width button which allows new subsection creation Newly created subsection appears in the corresponding Section card’s content zone on the last position
Tech New subsection button is always displayed in section’s content
the button must be displayed in the end of the section content UI component: full-width New Subsection button on New subsection button click: new section’s Subsection is created (appears on the last position)
| UI: Section editing save: | |
| Content: New Subsection (BE) | | | |
| Content: Subsection Edit (FE) | AC Subsection card edit mode allows Subsection title editing; Subsection card enters edit mode: on its options menu Edit item click on card Edit (create icon) button click Edit button becomes disabled
Subsection card exits edit mode:
Tech | Subsection editing save: | |
| Content: Subsection Edit (BE) | | | |
| Content: Subsection Publish (FE) | AC
Tech | Subsection publishing: | |
| Content: Subsection Edit (BE) | | | |
| Content: Subsection Configure (FE) | AC Subsection settings can be updated Settings are configured via Section Settings modal dialog Configurations available: Subsection release date Subsection release time (UTC) Subsection grading Subsection due date Subsection due time (UTC) Subsection Visibility Subsection Assessment Results Visibility
Tech | Section configuration: | |
| Content: Subsection Configure (FE) | depends on previous Advanced tab:
| | |
| Content: Subsection Configure (BE) | | | |
| Tool Bar: Collapse All Sections (FE) | AC
Tech does not track each section state updates (single direction effect) button shouldn’t be displayed on empty outline button has 2 states: behaviour: repeats legacy completely
| | |
| Content: Subsection Duplicate (FE) | AC
Tech | Subsection duplication: | |
| Content: Subsection Duplicate (BE) | | | |
| Content: Subsection Delete (FE) | AC Subsection can be deleted (removed) Subsection deletion action happens via confirmation modal dialog Once deleted Subsection disappears from subsections list
Tech | Subsection deletion: | |
| Content: Subsection Delete (BE) | | | |
| Content: Subsection Move (FE) - TBDdeclined via Slack | How exactly moving action should work? as it works in legacy (drag&drop subsection card; no action in menu) new approach (e.g. on click in options menu Move button section card enters moving mode and can be moved by arrow keys hybrid (always draggable + moving mode for keyboard actions)
| Only drag-n-drop is available. | |
| Content: Subsection Units list (FE) | AC Subsection card renders its children units in the content zone Units are not collapsible Units are draggable (out of scope) Units are editable (out of scope) Nothing is rendered if there are no units in subsection
Tech | Unit card hover cursors Subsection card elements Unit card zones (legacy)
header status
| |
| Content: New Unit (FE) | AC
Tech New unit button is always displayed in subsection’s content
the button must be displayed in the end of the subsection content UI component: full-width New unit button on New unit button click:
| UI: Section editing save: | |
| Content: New Unit (BE) | | | |
| Content: Unit Edit (FE) | AC Unit card edit mode allows Unit title editing; Unit card enters edit mode: on its options menu Edit item click on card Edit (pencil icon) button click Edit button becomes disabled
Unit card exits edit mode:
Tech editable Unit elements on save event:
| Design Unit editing save: | |
| Content: Unit Edit (BE) | | | |
| Content: Unit Publish (FE) | AC
Tech | Unit publishing: | |
| Content: Unit Publish (BE) | | | |
| Content: Unit Configure (FE) - TBD | AC Unit settings can be updated Settings are configured via Unit Settings modal dialog Configurations available:
Tech | Unit configuration: | |
| Content: Unit Configure (BE) | | | |
| Content: Unit Duplicate (FE) | AC
Tech | Unit duplication: | |
| Content: Unit Duplicate (BE) | | | |
| Content: Unit Delete (FE) | AC Unit can be deleted (removed) Unit deletion action happens via confirmation modal dialog Once deleted Unit disappears from units list
Tech | Unit deletion: | |
| Content: Unit Delete (BE) | | | |
| Content: Unit Move (FE) - TBD | | Only drag-n-drop is available. | |
| Content: Entrance Exam (FE) - TBD | | | |