This retrieves user preferences for edxnotes visibility by:
1. Adding a `bind_course_for_student` method to course overview model.
2. Using a bound XBlock in the `toggle_notes.html` template.
The previously used unbound course instance was returning a default value.
These changes allow the ability to adapt to update/resize the unit content after loading and interaction. Main cases were with Open Response Assessment (ORA) and Discussion blocks.
Previously, we missed some kinds of resize events (like css changes)
when the DOM inside an xblock changed. And then the MFE iframe
wouldn't be the right size.
This switches from a MutateObserver to the more appropriate
ResizeObserver which catches more cases.
AA-1252
This PR changes the preview URL redirect from Studio. Before when a user clicked on the course preview button to check unpublished changes, the preview in the New Experience would show the most recently published version of the course. The unpublished changes that the user was hoping to view are no present. At the moment users have been publishing the content to check it then having to republish the old version if they did not like the changes. As a short-term fix, this PR redirects to the Legacy experience where the preview option previously worked. Now the user can see the unpublished changes. A long-term fix is still being explored. This change will impact the Course Author.
This PR changes the default function of HTML anchor tags that focus on
another element on a different page in the course. Previously the anchor
tags that were set to scroll on a different page would open up the page
but remain at the top of the page. As a result, users would have to
manually scroll to the correct part of the page if that information is
known or they will read the entire page. Now when the anchor tag is used
to focus on a different page, the link of the new page is checked for a
hash and sends the location of the hash to the parent page to scroll to
the correct location. This change will impact the Learner in the New
Experience view.
This PR changes the default function of HTML anchor tags that focus on another element on the page based on the name attribute. Previously the anchor tags that were set to scroll on the page to another element would do nothing since the scroll was set to only look for the id attribute. As a result, users would have to manually scroll to the location of the name attribute, if it is previously known. Otherwise, the link appears to be broken. Now when the anchor tag is used to focus it and send the location of the focus element to the parent page to scroll to the correct location. This change will impact the Learner in the New Experience view.
This PR changes the default function of HTML anchor tags that focus on another element on the page. Previously the anchor tags that were set to scroll on the page to another element would open the link outside of the iframe and redirect the parent page. As a result, users would have to have to click the back arrow to navigate back to the course and continue the unit. Now when the anchor tag is used to focus it and send the location of the focus element to the parent page to scroll to the correct location. This change will impact the Learner in the New Experience view.
Jira issue: TNL-8312
Removed tabindex="-1" from main element to fix accessibility issue
Description
Removed tabindex="-1" from main
We had a strange issue where TalkBack wasn’t reading content in some xBlocks but was reading some others. I figured out that if you remove tabindex=-1 from <main>, TalkBack works as expected again. Tangentially, this breaks the old method of implementing SkipNav links. Further tangentially, the SkipNav links were already broken (or in this case redundant on mobile). @wittjeff will file two separate issues after this one PR is merged — one for a better way to implement SkipNav links for Learning MFE, and one for a better / functional way to implement SkipNav links for Mobile.
How to reproduce
Go to [this unit](https://courses.edx.org/xblock/block-v1:W3Cx+WAI0.1x+3T2019+type@html+block@2eb3c86c479f44ba964f88ff0bfd9211) on mobile and turn on TalkBack. It will skip main content. For further information on testing go to [Jira Ticket](https://openedx.atlassian.net/browse/LEARNER-7858)
Course-team-authored JS expects $$course_id to be defined
in the global scope. This has worked fine in Legacy courseware,
but due to some differences in page loading (which I don't
understand) between Legacy and Chromeless (ie New/MFE) XBlock
rendering templates, $$course_id wasn't being assigned before
course-team-authored JS was run, causing the scripts to break
on the undefined variable.
The fix here is to assign $$course_id in the <head>,
guaranteeing that the variable is assigned before
any other JS is run.
TNL-7993
Mobile apps load HTML (and other) XBlocks individually using the
render_xblock endpoint. This is an attmept to reduce the number
of requests and JS processing needed to do so by detecting when
we have math content in HTMLBlocks and only adding the Mathjax
resources when necessary.
This is controlled by the "courseware.optimized_render_xblock"
CourseWaffleFlag. For maximum safety, we currently only optimize
in this way when directly hitting HTMLBlocks, and not for
ProblemBlock or VerticalBlock.
This was made as part of edX's Hackathon XXV.
- Hide the submit-button CTA link to reset dates in the mobile
app. They are working on their own solution.
- Don't show the dates_banner.html code in the courseware. It has
new CTA banner support with updated wording.
- use new dates banner template on course outline page
- remove old banner from main.html
- let dates tab use new dates banner template
- remove dates banner completely from the courseware problem view
on the web app
- use new banner on the courseware problem view on the mobile app
- update banner util to use get_course_blocks
[TNL-7043] If vertical block content is in an iframe in the learning microfrontend app, add a base tag in the head (of the iframe document) to force links to navigate the parent window.
This makes it easier for CSS rules to target chromeless mode. This is
useful for xblocks which want to use some CSS tweaks specific to the
chromeless view.
* Add openedx.core.lib.xblock_builtin.get_css_dependencies and get_js_dependencies,
which respect PIPELINE_ENABLED setting when determining dependencies.
* Move new discussion-related Sass files into discussion subdirectory.
* Use "load_unicode" instead of "render_template" to load JS to add to fragment for DiscussionXBlock.
* Remove unused "course" parameter from context for DiscussionXBlock.student_view.
* Add RTL stylesheet for DiscussionXBlock, and enable the block to load correct stylesheet.
* Load MathJax only once, and include code for configuring MathJax in discussion bundle.
* Make sure username renders correctly in DiscussionXBlock response header.
* Move WYSIWYIG Markdown editor styles to _build-discussion.scss.
* Remove unnecessary import of discussion/utilities/v1-compatibility from _build-discussion.scss.
* Keep courseware-chromeless.html in sync with courseware.html.
* Load CSS for discussions on Teams tab. This makes it possible to remove CSS for discussions from Sass files for "Course" tab.
* Load js/src/tooltip_manager.js, jquery.autocomplete.js and jquery.autocomplete.css on "Course" tab.
* Add openedx.core.lib.xblock_builtin.get_css_dependencies and get_js_dependencies,
which respect PIPELINE_ENABLED setting when determining dependencies.
* Move new discussion-related Sass files into discussion subdirectory.
* Use "load_unicode" instead of "render_template" to load JS to add to fragment for DiscussionXBlock.
* Remove unused "course" parameter from context for DiscussionXBlock.student_view.
* Add RTL stylesheet for DiscussionXBlock, and enable the block to load correct stylesheet.
* Load MathJax only once, and include code for configuring MathJax in discussion bundle.
* Make sure username renders correctly in DiscussionXBlock response header.
* Move WYSIWYIG Markdown editor styles to _build-discussion.scss.
* Remove unnecessary import of discussion/utilities/v1-compatibility from _build-discussion.scss.
* Keep courseware-chromeless.html in sync with courseware.html.
* Load CSS for discussions on Teams tab. This makes it possible to remove CSS for discussions from Sass files for "Course" tab.
* Load js/src/tooltip_manager.js, jquery.autocomplete.js and jquery.autocomplete.css on "Course" tab.