feat: Add support for using the discussions MFE UI instead of existing UI [BD-38] [TNL-9228] (#29285)

* feat: Add support for using the discussions MFE UI instead of existing UI

Adds a new course waffle flag that when set along with the discussions MFE URL shows the discussions MFE UI instead of the regular UI.

* test: add tests

* squash!: more consistent url name
This commit is contained in:
Kshitij Sobti
2021-11-23 09:56:25 +00:00
committed by GitHub
parent c12c3b0bf0
commit c8bd924e23
10 changed files with 141 additions and 10 deletions

View File

@@ -4,16 +4,19 @@ Discussion XBlock
import logging
import urllib
from django.conf import settings
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
from django.utils.translation import get_language_bidi
from web_fragments.fragment import Fragment
from xblock.completable import XBlockCompletionMode
from xblock.core import XBlock
from xblock.fields import Scope, String, UNIQUE_ID
from web_fragments.fragment import Fragment
from xblockutils.resources import ResourceLoader
from xblockutils.studio_editable import StudioEditableXBlockMixin
from lms.djangoapps.discussion.toggles import ENABLE_DISCUSSIONS_MFE
from openedx.core.djangolib.markup import HTML, Text
from openedx.core.lib.xblock_builtin import get_css_dependencies, get_js_dependencies
from xmodule.xml_module import XmlParserMixin
@@ -166,6 +169,21 @@ class DiscussionXBlock(XBlock, StudioEditableXBlockMixin, XmlParserMixin): # li
Renders student view for LMS.
"""
fragment = Fragment()
if ENABLE_DISCUSSIONS_MFE.is_enabled(self.course_key) and settings.DISCUSSIONS_MICROFRONTEND_URL:
url = f"{settings.DISCUSSIONS_MICROFRONTEND_URL}/discussions/{self.course_key}/topics/{self.discussion_id}"
fragment.add_content(HTML(
"<iframe id='discussions-mfe-tab-embed' src='{src}' title='{title}'></iframe>"
).format(src=url, title=_("Discussions")))
fragment.add_css(
"""
#discussions-mfe-tab-embed {
width: 100%;
height: 800px;
border: none;
}
"""
)
return fragment
self.add_resource_urls(fragment)