diff --git a/cms/static/coffee/fixtures/metadata-list-entry.underscore b/cms/static/coffee/fixtures/metadata-list-entry.underscore new file mode 120000 index 0000000000..78fa4e2000 --- /dev/null +++ b/cms/static/coffee/fixtures/metadata-list-entry.underscore @@ -0,0 +1 @@ +../../../templates/js/metadata-list-entry.underscore \ No newline at end of file diff --git a/cms/static/coffee/spec/views/metadata_edit_spec.coffee b/cms/static/coffee/spec/views/metadata_edit_spec.coffee index 0c2069cf00..8bd37edb77 100644 --- a/cms/static/coffee/spec/views/metadata_edit_spec.coffee +++ b/cms/static/coffee/spec/views/metadata_edit_spec.coffee @@ -3,12 +3,14 @@ describe "Test Metadata Editor", -> numberEntryTemplate = readFixtures('metadata-number-entry.underscore') stringEntryTemplate = readFixtures('metadata-string-entry.underscore') optionEntryTemplate = readFixtures('metadata-option-entry.underscore') + listEntryTemplate = readFixtures('metadata-list-entry.underscore') beforeEach -> setFixtures($(" + + <% showHighLevelSource='source_code' in editable_metadata_fields and editable_metadata_fields['source_code']['explicitly_set'] %> <% metadata_field_copy = copy.copy(editable_metadata_fields) %> ## Delete 'source_code' field (if it exists) so metadata editor view does not attempt to render it. @@ -40,4 +44,4 @@ <%include file="source-edit.html" /> % endif -
\ No newline at end of file +
diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index d399001a6a..ef7601430a 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -10,7 +10,7 @@ from pkg_resources import resource_listdir, resource_string, resource_isdir from xmodule.modulestore import inheritance, Location from xmodule.modulestore.exceptions import ItemNotFoundError, InsufficientSpecificationError, InvalidLocationError -from xblock.core import XBlock, Scope, String, Integer, Float, ModelType +from xblock.core import XBlock, Scope, String, Integer, Float, List, ModelType from xblock.fragment import Fragment from xblock.runtime import Runtime from xmodule.modulestore.locator import BlockUsageLocator @@ -766,7 +766,7 @@ class XModuleDescriptor(XModuleFields, HTMLSnippet, ResourceTemplates, XBlock): # 2. Number editors for integers and floats. # 3. A generic string editor for anything else (editing JSON representation of the value). editor_type = "Generic" - values = [] if field.values is None else copy.deepcopy(field.values) + values = copy.deepcopy(field.values) if isinstance(values, tuple): values = list(values) if isinstance(values, list): @@ -783,11 +783,13 @@ class XModuleDescriptor(XModuleFields, HTMLSnippet, ResourceTemplates, XBlock): editor_type = "Integer" elif isinstance(field, Float): editor_type = "Float" + elif isinstance(field, List): + editor_type = "List" metadata_fields[field.name] = {'field_name': field.name, 'type': editor_type, 'display_name': field.display_name, 'value': field.to_json(value), - 'options': values, + 'options': [] if values is None else values, 'default_value': field.to_json(default_value), 'inheritable': inheritable, 'explicitly_set': explicitly_set,