Skip to content

Commit 9f12d69

Browse files
Anas12091101UsamaSadiq
authored andcommitted
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
1 parent 6413664 commit 9f12d69

5 files changed

Lines changed: 36 additions & 1 deletion

File tree

cms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class CourseWaffleFlagsSerializer(serializers.Serializer):
2828
use_new_textbooks_page = serializers.SerializerMethodField()
2929
use_new_group_configurations_page = serializers.SerializerMethodField()
3030
enable_course_optimizer = serializers.SerializerMethodField()
31+
use_react_markdown_editor = serializers.SerializerMethodField()
3132

3233
def get_course_key(self):
3334
"""
@@ -152,3 +153,10 @@ def get_enable_course_optimizer(self, obj):
152153
"""
153154
course_key = self.get_course_key()
154155
return toggles.enable_course_optimizer(course_key)
156+
157+
def get_use_react_markdown_editor(self, obj):
158+
"""
159+
Method to get the use_react_markdown_editor waffle flag
160+
"""
161+
course_key = self.get_course_key()
162+
return toggles.use_react_markdown_editor(course_key)

cms/djangoapps/contentstore/rest_api/v1/views/course_waffle_flags.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def get(self, request, course_id=None):
6262
"use_new_certificates_page": true,
6363
"use_new_textbooks_page": true,
6464
"use_new_group_configurations_page": true
65+
"use_react_markdown_editor": true,
6566
}
6667
```
6768
"""

cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_waffle_flags.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class CourseWaffleFlagsViewTest(CourseTestCase):
3434
"use_new_certificates_page",
3535
"use_new_textbooks_page",
3636
"use_new_group_configurations_page",
37+
"use_react_markdown_editor"
3738
]
3839

3940
other_expected_waffle_flags = ["enable_course_optimizer"]
@@ -71,7 +72,11 @@ def create_waffle_flags(self, flags, enabled=True):
7172
"""
7273
for flag in flags:
7374
WaffleFlagCourseOverrideModel.objects.create(
74-
waffle_flag=f"contentstore.new_studio_mfe.{flag}",
75+
waffle_flag=(
76+
f"contentstore.new_studio_mfe.{flag}"
77+
if flag != "use_react_markdown_editor"
78+
else "contentstore.use_react_markdown_editor"
79+
),
7580
course_id=self.course.id,
7681
enabled=enabled,
7782
)

cms/djangoapps/contentstore/toggles.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,22 @@ def use_new_custom_pages(course_key):
219219
"""
220220
return ENABLE_NEW_STUDIO_CUSTOM_PAGES.is_enabled(course_key)
221221

222+
# .. toggle_name: contentstore.use_react_markdown_editor
223+
# .. toggle_implementation: CourseWaffleFlag
224+
# .. toggle_default: False
225+
# .. toggle_description: This flag enables the use of the Markdown editor when creating or editing problems in the authoring MFE
226+
# .. toggle_use_cases: opt_in
227+
# .. toggle_creation_date: 2025-4-11
228+
# .. toggle_tickets: https://openedx.atlassian.net/wiki/spaces/OEPM/pages/4517232656/Re-enable+Markdown+editing+of+CAPA+problems+to+meet+various+use+cases
229+
ENABLE_REACT_MARKDOWN_EDITOR = CourseWaffleFlag(
230+
f'{CONTENTSTORE_NAMESPACE}.use_react_markdown_editor', __name__)
231+
232+
233+
def use_react_markdown_editor(course_key):
234+
"""
235+
Returns a boolean if new studio custom pages mfe is enabled
236+
"""
237+
return ENABLE_REACT_MARKDOWN_EDITOR.is_enabled(course_key)
222238

223239
# .. toggle_name: contentstore.new_studio_mfe.use_new_schedule_details_page
224240
# .. toggle_implementation: CourseWaffleFlag

xmodule/capa_block.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,11 @@ class _BuiltInProblemBlock(
340340
"or to report an issue, please contact moocsupport@mathworks.com"),
341341
scope=Scope.settings
342342
)
343+
markdown_edited = Boolean(
344+
help=_("Indicates if the problem was edited using the Markdown editor in the Authoring MFE."),
345+
scope=Scope.settings,
346+
default=False
347+
)
343348

344349
def bind_for_student(self, *args, **kwargs): # lint-amnesty, pylint: disable=signature-differs
345350
super().bind_for_student(*args, **kwargs)

0 commit comments

Comments
 (0)