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:
Muhammad Anas
2025-04-15 20:28:19 +05:00
committed by GitHub
parent ec4fd59d49
commit 2930214067
5 changed files with 36 additions and 1 deletions

View File

@@ -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)

View File

@@ -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,
}
```
"""

View File

@@ -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,
)

View File

@@ -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

View File

@@ -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)