Skip to content

Commit 0791285

Browse files
committed
feat: pdf editor authoring flag
1 parent 110ec0c commit 0791285

File tree

6 files changed

+33
-3
lines changed

6 files changed

+33
-3
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class CourseWaffleFlagsSerializer(serializers.Serializer):
2121
use_new_import_page = serializers.SerializerMethodField()
2222
use_new_export_page = serializers.SerializerMethodField()
2323
use_new_files_uploads_page = serializers.SerializerMethodField()
24+
use_new_pdf_editor = serializers.SerializerMethodField()
2425
use_new_video_uploads_page = serializers.SerializerMethodField()
2526
use_new_course_outline_page = serializers.SerializerMethodField()
2627
use_new_unit_page = serializers.SerializerMethodField()
@@ -120,6 +121,12 @@ def get_use_new_files_uploads_page(self, obj):
120121
"""
121122
return True
122123

124+
def get_use_new_pdf_editor(self, obj):
125+
"""
126+
Method to get the use_new_pdf_editor switch
127+
"""
128+
return toggles.use_new_pdf_editor()
129+
123130
def get_use_new_video_uploads_page(self, obj):
124131
"""
125132
Method to get the use_new_video_uploads_page switch.

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class CourseWaffleFlagsViewTest(CourseTestCase):
3535
"use_new_unit_page": True,
3636
"use_new_updates_page": True,
3737
"use_new_video_uploads_page": False,
38+
"use_new_pdf_editor": True,
3839
"use_react_markdown_editor": False,
3940
"use_video_gallery_flow": False,
4041
"enable_course_optimizer_check_prev_run_links": False,

cms/djangoapps/contentstore/toggles.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,23 @@ def use_new_video_editor(course_key):
105105
return not LEGACY_STUDIO_VIDEO_EDITOR.is_enabled(course_key)
106106

107107

108+
# .. toggle_name: legacy_studio.pdf_editor
109+
# .. toggle_implementation: WaffleFlag
110+
# .. toggle_default: False
111+
# .. toggle_description: Use the PDF XBlock's studio_view instead of the new React-based editor. You may wish to do
112+
# this if you run a custom PDF block.
113+
# .. toggle_use_cases: opt_out
114+
# .. toggle_creation_date: 2026-03-10
115+
LEGACY_STUDIO_PDF_EDITOR = WaffleFlag('legacy_studio.pdf_editor', __name__)
116+
117+
118+
def use_new_pdf_editor():
119+
"""
120+
Returns a boolean = true if new video editor is enabled
121+
"""
122+
return not LEGACY_STUDIO_PDF_EDITOR.is_enabled()
123+
124+
108125
# .. toggle_name: new_core_editors.use_video_gallery_flow
109126
# .. toggle_implementation: WaffleFlag
110127
# .. toggle_default: False

cms/static/js/views/pages/container.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,14 +491,14 @@ function($, _, Backbone, gettext, BasePage,
491491
if ($target.closest('button, a, input, label, .actions-list').length) {
492492
return;
493493
}
494-
494+
495495
var $wrapper = $target.closest('.studio-xblock-wrapper');
496496

497497
// Deselect all other xblocks
498498
this.$('.studio-xblock-wrapper.is-selected').not($wrapper).removeClass('is-selected');
499499

500500
$wrapper.toggleClass('is-selected');
501-
501+
502502
if (this.options.isIframeEmbed) {
503503
const contentId = this.findXBlockElement(event.target).data('locator');
504504
this.postMessageToParent({
@@ -540,10 +540,12 @@ function($, _, Backbone, gettext, BasePage,
540540

541541
var useNewVideoEditor = primaryHeader.attr('use-new-editor-video'),
542542
blockType = primaryHeader.attr('data-block-type');
543+
var useNewPdfEditor = primaryHeader.attr('use-new-editor-pdf')
543544

544545
if((blockType === 'html')
545546
|| (useNewVideoEditor === 'True' && blockType === 'video')
546547
|| (blockType === 'problem')
548+
|| (useNewPdfEditor && blockType === 'pdf')
547549
) {
548550
var destinationUrl = primaryHeader.attr('authoring_MFE_base_url')
549551
+ '/' + blockType

cms/templates/container.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ <h1 class="page-header-title xblock-field-value incontext-editor-value"><span cl
167167

168168
<nav class="nav-actions" aria-label="${_('Page Actions')}"
169169
use-new-editor-video = ${use_new_editor_video}
170+
use-new-editor-pdf = ${use_new_editor_pdf}
170171
use-video-gallery-flow = ${use_new_video_gallery_flow}
171172
authoring_MFE_base_url = ${get_editor_page_base_url(xblock_locator.course_key)}
172173
data-block-type = ${xblock.scope_ids.block_type}

cms/templates/studio_xblock_wrapper.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@
88
from openedx.core.djangolib.js_utils import (
99
dump_js_escaped_json, js_escaped_string
1010
)
11-
from cms.djangoapps.contentstore.toggles import use_new_video_editor, use_video_gallery_flow
11+
from cms.djangoapps.contentstore.toggles import use_new_pdf_editor, use_new_video_editor, use_video_gallery_flow
1212
from cms.lib.xblock.upstream_sync import UpstreamLink
1313
from openedx.core.djangoapps.content_tagging.toggles import is_tagging_feature_disabled
1414
%>
1515
<%
1616
use_new_editor_video = use_new_video_editor(xblock.context_key)
17+
use_new_editor_pdf = use_new_pdf_editor()
1718
use_new_video_gallery_flow = use_video_gallery_flow()
1819
use_tagging = not is_tagging_feature_disabled()
1920
xblock_url = xblock_studio_url(xblock)
@@ -83,6 +84,7 @@
8384
% endif
8485
"
8586
use-new-editor-video = ${use_new_editor_video}
87+
use-new-editor-pdf = ${use_new_editor_pdf}
8688
use-video-gallery-flow = ${use_new_video_gallery_flow}
8789
authoring_MFE_base_url = ${get_editor_page_base_url(xblock.location.course_key)}
8890
data-block-type = ${xblock.scope_ids.block_type}

0 commit comments

Comments
 (0)