diff --git a/cms/djangoapps/contentstore/views/component.py b/cms/djangoapps/contentstore/views/component.py index f4dcd66d9a7f..914c07884665 100644 --- a/cms/djangoapps/contentstore/views/component.py +++ b/cms/djangoapps/contentstore/views/component.py @@ -49,17 +49,19 @@ # NOTE: This list is disjoint from ADVANCED_COMPONENT_TYPES COMPONENT_TYPES = [ - 'discussion', - 'library', - 'library_v2', # Not an XBlock - 'itembank', 'html', - 'openassessment', - 'problem', 'video', + 'problem', + 'itembank', + 'library_v2', # Not an XBlock + 'library', + 'discussion', + 'openassessment', 'drag-and-drop-v2', ] +BETA_COMPONENT_TYPES = ['library_v2', 'itembank'] + ADVANCED_COMPONENT_TYPES = sorted({name for name, class_ in XBlock.load_classes()} - set(COMPONENT_TYPES)) ADVANCED_PROBLEM_TYPES = settings.ADVANCED_PROBLEM_TYPES @@ -426,7 +428,8 @@ def create_support_legend_dict(): "type": category, "templates": templates_for_category, "display_name": component_display_names[category], - "support_legend": create_support_legend_dict() + "support_legend": create_support_legend_dict(), + "beta": category in BETA_COMPONENT_TYPES, }) # Libraries do not support advanced components at this time. @@ -476,7 +479,7 @@ def create_support_legend_dict(): course_advanced_keys ) if advanced_component_templates['templates']: - component_templates.insert(0, advanced_component_templates) + component_templates.append(advanced_component_templates) return component_templates diff --git a/cms/djangoapps/contentstore/views/tests/test_block.py b/cms/djangoapps/contentstore/views/tests/test_block.py index f3e20b45b2ea..a6fefe5f554c 100644 --- a/cms/djangoapps/contentstore/views/tests/test_block.py +++ b/cms/djangoapps/contentstore/views/tests/test_block.py @@ -3184,13 +3184,13 @@ def _verify_advanced_xblocks(self, expected_xblocks, expected_support_levels): templates = get_component_templates(self.course) button_names = [template["display_name"] for template in templates] self.assertIn("Advanced", button_names) - self.assertEqual(len(templates[0]["templates"]), len(expected_xblocks)) + self.assertEqual(len(templates[-1]["templates"]), len(expected_xblocks)) template_display_names = [ - template["display_name"] for template in templates[0]["templates"] + template["display_name"] for template in templates[-1]["templates"] ] self.assertEqual(template_display_names, expected_xblocks) template_support_levels = [ - template["support_level"] for template in templates[0]["templates"] + template["support_level"] for template in templates[-1]["templates"] ] self.assertEqual(template_support_levels, expected_support_levels) diff --git a/cms/static/js/models/component_template.js b/cms/static/js/models/component_template.js index b2306d40e9c8..358b7b2f3433 100644 --- a/cms/static/js/models/component_template.js +++ b/cms/static/js/models/component_template.js @@ -11,7 +11,8 @@ define(['backbone'], function(Backbone) { // boilerplate_name (may be null) // is_common (only used for problems) templates: [], - support_legend: {} + support_legend: {}, + beta: false, }, parse: function(response) { // Returns true only for templates that both have no boilerplate and are of @@ -26,6 +27,7 @@ define(['backbone'], function(Backbone) { this.templates = response.templates; this.display_name = response.display_name; this.support_legend = response.support_legend; + this.beta = response.beta; // Sort the templates. this.templates.sort(function(a, b) { diff --git a/cms/static/js/views/components/add_xblock_button.js b/cms/static/js/views/components/add_xblock_button.js index 36b420a61068..4fa4d2effeff 100644 --- a/cms/static/js/views/components/add_xblock_button.js +++ b/cms/static/js/views/components/add_xblock_button.js @@ -8,7 +8,8 @@ define(['js/views/baseview', 'edx-ui-toolkit/js/utils/html-utils'], var attributes = { type: this.model.type, templates: this.model.templates, - display_name: this.model.display_name + display_name: this.model.display_name, + beta: this.model.beta, }; BaseView.prototype.initialize.call(this); this.template = this.loadTemplate('add-xblock-component-button'); diff --git a/cms/templates/js/add-xblock-component-button.underscore b/cms/templates/js/add-xblock-component-button.underscore index b591c336938c..df100d6dfcd1 100644 --- a/cms/templates/js/add-xblock-component-button.underscore +++ b/cms/templates/js/add-xblock-component-button.underscore @@ -6,7 +6,7 @@ <%- gettext("Add Component:") %> <%- display_name %> - <% if (type === 'library_v2' || type === 'itembank') { %> + <% if (beta) { %> <%- gettext("Beta") %> <% } %>