diff --git a/cms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.py b/cms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.py index 33dd99792882..3a885f8c96bc 100644 --- a/cms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.py +++ b/cms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.py @@ -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 @@ def get_enable_course_optimizer(self, obj): """ 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) diff --git a/cms/djangoapps/contentstore/rest_api/v1/views/course_waffle_flags.py b/cms/djangoapps/contentstore/rest_api/v1/views/course_waffle_flags.py index ba96ff2b4a6c..47dacdab27d1 100644 --- a/cms/djangoapps/contentstore/rest_api/v1/views/course_waffle_flags.py +++ b/cms/djangoapps/contentstore/rest_api/v1/views/course_waffle_flags.py @@ -62,6 +62,7 @@ def get(self, request, course_id=None): "use_new_certificates_page": true, "use_new_textbooks_page": true, "use_new_group_configurations_page": true + "use_react_markdown_editor": true, } ``` """ diff --git a/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_waffle_flags.py b/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_waffle_flags.py index f0332d7f2870..6dcbe7f9ad40 100644 --- a/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_waffle_flags.py +++ b/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_waffle_flags.py @@ -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 @@ def create_waffle_flags(self, flags, enabled=True): """ 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, ) diff --git a/cms/djangoapps/contentstore/toggles.py b/cms/djangoapps/contentstore/toggles.py index 4fcc8372c594..5bc1615057c5 100644 --- a/cms/djangoapps/contentstore/toggles.py +++ b/cms/djangoapps/contentstore/toggles.py @@ -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 diff --git a/xmodule/capa_block.py b/xmodule/capa_block.py index fa0e87325bb7..1b2d18cf1770 100644 --- a/xmodule/capa_block.py +++ b/xmodule/capa_block.py @@ -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)