diff --git a/cms/templates/widgets/metadata-edit.html b/cms/templates/widgets/metadata-edit.html index 8367011c42..cfed8409b8 100644 --- a/cms/templates/widgets/metadata-edit.html +++ b/cms/templates/widgets/metadata-edit.html @@ -1,14 +1,18 @@ <% import hashlib + import copy import json hlskey = hashlib.md5(module.location.url()).hexdigest() %> -<% showHighLevelSource='source_code' in json_metadata_data and json_metadata_data['source_code']['explicitly_set'] %> -% if 'source_code' in json_metadata_data: - <% del json_metadata_data['source_code'] %> +<% showHighLevelSource='source_code' in editable_metadata_fields and editable_metadata_fields['source_code']['explicitly_set'] %> +<% metadata_field_copy = copy.deepcopy(editable_metadata_fields) %> +## Delete 'source_code' field (if it exists) so metadata editor view does not attempt to render it. +% if 'source_code' in editable_metadata_fields: + ## source-edit.html needs access to the 'source_code' value, so delete from a copy. + <% del metadata_field_copy['source_code'] %> % endif -
+
% if showHighLevelSource: Edit High Level Source diff --git a/common/lib/xmodule/xmodule/mako_module.py b/common/lib/xmodule/xmodule/mako_module.py index b47c4ccbd5..8abb1d7777 100644 --- a/common/lib/xmodule/xmodule/mako_module.py +++ b/common/lib/xmodule/xmodule/mako_module.py @@ -31,13 +31,9 @@ class MakoModuleDescriptor(XModuleDescriptor): """ Return the context to render the mako template with """ - # TODO: just return a single thing. - [editable_metadata, simplified_metadata] = self.editable_metadata_fields return { 'module': self, - 'editable_metadata_fields': editable_metadata, - 'json_metadata_data' : simplified_metadata - + 'editable_metadata_fields': self.editable_metadata_fields } def get_html(self): diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index 5c22106f75..11b0efecf8 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -626,8 +626,7 @@ class XModuleDescriptor(XModuleFields, HTMLSnippet, ResourceTemplates, XBlock): """ inherited_metadata = getattr(self, '_inherited_metadata', {}) inheritable_metadata = getattr(self, '_inheritable_metadata', {}) - metadata = {} - simple_metadata = {} + metadata_fields = {} for field in self.fields: if field.scope != Scope.settings or field in self.non_editable_metadata_fields: @@ -643,12 +642,6 @@ class XModuleDescriptor(XModuleFields, HTMLSnippet, ResourceTemplates, XBlock): if field.name in inherited_metadata: explicitly_set = False - metadata[field.name] = {'field': field, - 'value': value, - 'default_value': default_value, - 'inheritable': inheritable, - 'explicitly_set': explicitly_set} - # We support the following editors: # 1. A select editor for fields with a list of possible values (includes Booleans). # 2. Number editor for integers and floats. @@ -670,7 +663,7 @@ class XModuleDescriptor(XModuleFields, HTMLSnippet, ResourceTemplates, XBlock): type = "Integer" elif isinstance(field, Float): type = "Float" - simple_metadata[field.name] = {'field_name' : field.name, + metadata_fields[field.name] = {'field_name' : field.name, 'type' : type, 'display_name' : field.display_name, 'value': field.to_json(value), @@ -680,7 +673,7 @@ class XModuleDescriptor(XModuleFields, HTMLSnippet, ResourceTemplates, XBlock): 'explicitly_set': explicitly_set, 'help': field.help} - return metadata, simple_metadata + return metadata_fields class DescriptorSystem(object):