-
Notifications
You must be signed in to change notification settings - Fork 4.2k
docs: ADR that documents how MFEs can access in-context discussions [BD-38] [TNL-8396] [BB-4367] #28452
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: ADR that documents how MFEs can access in-context discussions [BD-38] [TNL-8396] [BB-4367] #28452
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| Making Linked In-Context Discussions Available to MFEs | ||
| ====================================================== | ||
|
|
||
|
|
||
| Status | ||
| ------ | ||
|
|
||
| Proposal | ||
|
|
||
|
|
||
| Context | ||
| ------- | ||
|
|
||
| In the `ADR 0004 <./0004-in-context-discussions-linking.rst>`_ we investigated | ||
| how to link a discussion to a unit. We also need some way to make these linked | ||
| discussions available to the frontend so they can display those in-context | ||
| discussions in the correct view. | ||
|
|
||
|
|
||
| Requirements | ||
| ------------ | ||
|
|
||
| An API to access linked discussions for a Unit. | ||
|
|
||
|
|
||
| Decision | ||
| -------- | ||
|
|
||
| A direct link to the topic that needs to be embedded can be generated | ||
| by edx-platform and provided to MFEs via the course blocks API which is | ||
| already used by the learning MFE. The learning MFE can then directly | ||
| embed this link in an iframe as a sidebar. | ||
|
|
||
| For example, when the discussion link is requested using | ||
| `requested_fields=discussions_embed_url` it will return roughly the | ||
| following: | ||
|
|
||
| .. code-block:: JSON | ||
|
|
||
| { | ||
| ... | ||
| "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_98cf62510471": { | ||
| "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_98cf62510471", | ||
| "block_id": "vertical_98cf62510471", | ||
| "lms_web_url": "http...", | ||
| "legacy_web_url": "http...", | ||
| "student_view_url": "http...", | ||
| "discussions_embed_url": "http://localhost:2002/discussions/course-v1:edX+DemoX+Demo_Course/topics/zooming-diagrams/" | ||
| "type": "vertical", | ||
| "display_name": "Zooming Diagrams" | ||
| }, | ||
| ... | ||
| } | ||
|
|
||
| For units that don't have a linked discussion, no link will be returned. | ||
|
|
||
| The new discussions experience includes a setting called | ||
| `discussions_group_at_subsection` to group discussions at the subsection | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is the discussion MFE is the provider of this setting? How this setting is turned on or off?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think the previous ADR is good reference for this. It's a setting stored in the course structure and will be configurable using an API, and using the course authoring MFE. You can see these in the figma mockup.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. got it |
||
| level instead of the unit level. By default this setting is disabled and | ||
| the sidebar next to a unit will only show threads from that unit. | ||
| However, if this setting is enabled then the MFE should show threads | ||
| related to all the units from the subsection in the sidebar. | ||
|
|
||
| If this setting is enabled, then the blocks API will return a link for | ||
| the entire subsection. The MFE can accomodate for this in the UI by | ||
| presenting it in a different way if need be. | ||
|
|
||
| E.g. | ||
|
|
||
| .. code-block:: JSON | ||
|
|
||
| { | ||
| ... | ||
| "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_98cf62510471": { | ||
| "id": "block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_98cf62510471", | ||
| "block_id": "vertical_98cf62510471", | ||
| "lms_web_url": "http...", | ||
| "legacy_web_url": "http...", | ||
| "student_view_url": "http...", | ||
| "discussions_embed_url": "http://localhost:2002/discussions/course-v1:edX+DemoX+Demo_Course/category/lesson-2-lets-get-interactive/" | ||
| "type": "vertical", | ||
| "display_name": "Zooming Diagrams" | ||
| }, | ||
| ... | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You said that "a direct link to the topic" will be provided by edx-platform using the course blocks API, but when you access the API using
requested_fields=discussions_embed_url, it returns an object with different kinds of URLs.Can specify which is the embeddable URL among those when you call it "a direct link"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is just the standard default response of the course blocks API. It returns some standard fields, and other fields can be requested in addition as needed.
In this case, the idea is to add a new field option as specified above and have that add a new return value called "discussions_embed_url". I've cleaned up some the other URLs so it's easier to focus on this new field.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, taking a look.