feat: add markdown editor waffle flag (#36512)
This PR adds contentstore.use_react_markdown_editor course waffle flag in cms. This flag helps in enabling the markdown editor in the authoring mfe. This PR also adds the markdown_edited field in the Problem Xblock to persist the user's choice of switching to the markdown editor on the authoring MFE. More details in the authoring MFE PR: openedx/frontend-app-authoring#1805
This commit is contained in:
@@ -28,6 +28,7 @@ class CourseWaffleFlagsSerializer(serializers.Serializer):
|
||||
use_new_textbooks_page = serializers.SerializerMethodField()
|
||||
use_new_group_configurations_page = serializers.SerializerMethodField()
|
||||
enable_course_optimizer = serializers.SerializerMethodField()
|
||||
use_react_markdown_editor = serializers.SerializerMethodField()
|
||||
|
||||
def get_course_key(self):
|
||||
"""
|
||||
@@ -152,3 +153,10 @@ class CourseWaffleFlagsSerializer(serializers.Serializer):
|
||||
"""
|
||||
course_key = self.get_course_key()
|
||||
return toggles.enable_course_optimizer(course_key)
|
||||
|
||||
def get_use_react_markdown_editor(self, obj):
|
||||
"""
|
||||
Method to get the use_react_markdown_editor waffle flag
|
||||
"""
|
||||
course_key = self.get_course_key()
|
||||
return toggles.use_react_markdown_editor(course_key)
|
||||
|
||||
@@ -62,6 +62,7 @@ class CourseWaffleFlagsView(APIView):
|
||||
"use_new_certificates_page": true,
|
||||
"use_new_textbooks_page": true,
|
||||
"use_new_group_configurations_page": true
|
||||
"use_react_markdown_editor": true,
|
||||
}
|
||||
```
|
||||
"""
|
||||
|
||||
@@ -34,6 +34,7 @@ class CourseWaffleFlagsViewTest(CourseTestCase):
|
||||
"use_new_certificates_page",
|
||||
"use_new_textbooks_page",
|
||||
"use_new_group_configurations_page",
|
||||
"use_react_markdown_editor"
|
||||
]
|
||||
|
||||
other_expected_waffle_flags = ["enable_course_optimizer"]
|
||||
@@ -71,7 +72,11 @@ class CourseWaffleFlagsViewTest(CourseTestCase):
|
||||
"""
|
||||
for flag in flags:
|
||||
WaffleFlagCourseOverrideModel.objects.create(
|
||||
waffle_flag=f"contentstore.new_studio_mfe.{flag}",
|
||||
waffle_flag=(
|
||||
f"contentstore.new_studio_mfe.{flag}"
|
||||
if flag != "use_react_markdown_editor"
|
||||
else "contentstore.use_react_markdown_editor"
|
||||
),
|
||||
course_id=self.course.id,
|
||||
enabled=enabled,
|
||||
)
|
||||
|
||||
@@ -219,6 +219,22 @@ def use_new_custom_pages(course_key):
|
||||
"""
|
||||
return ENABLE_NEW_STUDIO_CUSTOM_PAGES.is_enabled(course_key)
|
||||
|
||||
# .. toggle_name: contentstore.use_react_markdown_editor
|
||||
# .. toggle_implementation: CourseWaffleFlag
|
||||
# .. toggle_default: False
|
||||
# .. toggle_description: This flag enables the use of the Markdown editor when creating or editing problems in the authoring MFE
|
||||
# .. toggle_use_cases: opt_in
|
||||
# .. toggle_creation_date: 2025-4-11
|
||||
# .. toggle_tickets: https://openedx.atlassian.net/wiki/spaces/OEPM/pages/4517232656/Re-enable+Markdown+editing+of+CAPA+problems+to+meet+various+use+cases
|
||||
ENABLE_REACT_MARKDOWN_EDITOR = CourseWaffleFlag(
|
||||
f'{CONTENTSTORE_NAMESPACE}.use_react_markdown_editor', __name__)
|
||||
|
||||
|
||||
def use_react_markdown_editor(course_key):
|
||||
"""
|
||||
Returns a boolean if new studio custom pages mfe is enabled
|
||||
"""
|
||||
return ENABLE_REACT_MARKDOWN_EDITOR.is_enabled(course_key)
|
||||
|
||||
# .. toggle_name: contentstore.new_studio_mfe.use_new_schedule_details_page
|
||||
# .. toggle_implementation: CourseWaffleFlag
|
||||
|
||||
@@ -340,6 +340,11 @@ class _BuiltInProblemBlock(
|
||||
"or to report an issue, please contact moocsupport@mathworks.com"),
|
||||
scope=Scope.settings
|
||||
)
|
||||
markdown_edited = Boolean(
|
||||
help=_("Indicates if the problem was edited using the Markdown editor in the Authoring MFE."),
|
||||
scope=Scope.settings,
|
||||
default=False
|
||||
)
|
||||
|
||||
def bind_for_student(self, *args, **kwargs): # lint-amnesty, pylint: disable=signature-differs
|
||||
super().bind_for_student(*args, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user