Commit 46870f43 by Chris Dodge

be sure to always pass in a course namespace - which can be just the location of…

be sure to always pass in a course namespace - which can be just the location of the module itself since it has the same org/course pair - when rewriting links. Also, allow for an option parameter in get_module() to disable the wrapping of the module's HTML with the xmodule_display.html. This is needed for ancillary course content such as 'about', 'course info', which are now stored as xmodules, but should not be wrapped in xmodule_display.html as it breaks some styling
parent 050cb89c
...@@ -347,7 +347,7 @@ class CapaModule(XModule): ...@@ -347,7 +347,7 @@ class CapaModule(XModule):
id=self.location.html_id(), ajax_url=self.system.ajax_url) + html + "</div>" id=self.location.html_id(), ajax_url=self.system.ajax_url) + html + "</div>"
# now do the substitutions which are filesystem based, e.g. '/static/' prefixes # now do the substitutions which are filesystem based, e.g. '/static/' prefixes
return self.system.replace_urls(html, self.metadata['data_dir']) return self.system.replace_urls(html, self.metadata['data_dir'], self.location)
def handle_ajax(self, dispatch, get): def handle_ajax(self, dispatch, get):
''' '''
...@@ -451,7 +451,7 @@ class CapaModule(XModule): ...@@ -451,7 +451,7 @@ class CapaModule(XModule):
new_answers = dict() new_answers = dict()
for answer_id in answers: for answer_id in answers:
try: try:
new_answer = {answer_id: self.system.replace_urls(answers[answer_id], self.metadata['data_dir'])} new_answer = {answer_id: self.system.replace_urls(answers[answer_id], self.metadata['data_dir'], self.location)}
except TypeError: except TypeError:
log.debug('Unable to perform URL substitution on answers[%s]: %s' % (answer_id, answers[answer_id])) log.debug('Unable to perform URL substitution on answers[%s]: %s' % (answer_id, answers[answer_id]))
new_answer = {answer_id: answers[answer_id]} new_answer = {answer_id: answers[answer_id]}
......
...@@ -148,7 +148,7 @@ def get_course_about_section(course, section_key): ...@@ -148,7 +148,7 @@ def get_course_about_section(course, section_key):
request = get_request_for_thread() request = get_request_for_thread()
loc = course.location._replace(category='about', name=section_key) loc = course.location._replace(category='about', name=section_key)
course_module = get_module(request.user, request, loc, None, course.id, not_found_ok = True) course_module = get_module(request.user, request, loc, None, course.id, not_found_ok = True, wrap_xmodule_display = False)
html = '' html = ''
...@@ -186,8 +186,7 @@ def get_course_info_section(request, cache, course, section_key): ...@@ -186,8 +186,7 @@ def get_course_info_section(request, cache, course, section_key):
loc = Location(course.location.tag, course.location.org, course.location.course, 'course_info', section_key) loc = Location(course.location.tag, course.location.org, course.location.course, 'course_info', section_key)
course_module = get_module(request.user, request, loc, cache, course.id) course_module = get_module(request.user, request, loc, cache, course.id, wrap_xmodule_display = False)
html = '' html = ''
if course_module is not None: if course_module is not None:
...@@ -196,7 +195,6 @@ def get_course_info_section(request, cache, course, section_key): ...@@ -196,7 +195,6 @@ def get_course_info_section(request, cache, course, section_key):
return html return html
# TODO: Fix this such that these are pulled in as extra course-specific tabs. # TODO: Fix this such that these are pulled in as extra course-specific tabs.
# arjun will address this by the end of October if no one does so prior to # arjun will address this by the end of October if no one does so prior to
# then. # then.
...@@ -222,7 +220,7 @@ def get_course_syllabus_section(course, section_key): ...@@ -222,7 +220,7 @@ def get_course_syllabus_section(course, section_key):
filepath = find_file(fs, dirs, section_key + ".html") filepath = find_file(fs, dirs, section_key + ".html")
with fs.open(filepath) as htmlFile: with fs.open(filepath) as htmlFile:
return replace_urls(htmlFile.read().decode('utf-8'), return replace_urls(htmlFile.read().decode('utf-8'),
course.metadata['data_dir']) course.metadata['data_dir'], course.location)
except ResourceNotFoundError: except ResourceNotFoundError:
log.exception("Missing syllabus section {key} in course {url}".format( log.exception("Missing syllabus section {key} in course {url}".format(
key=section_key, url=course.location.url())) key=section_key, url=course.location.url()))
......
...@@ -115,7 +115,7 @@ def toc_for_course(user, request, course, active_chapter, active_section): ...@@ -115,7 +115,7 @@ def toc_for_course(user, request, course, active_chapter, active_section):
return chapters return chapters
def get_module(user, request, location, student_module_cache, course_id, position=None, not_found_ok = False): def get_module(user, request, location, student_module_cache, course_id, position=None, not_found_ok = False, wrap_xmodule_display = True):
""" """
Get an instance of the xmodule class identified by location, Get an instance of the xmodule class identified by location,
setting the state based on an existing StudentModule, or creating one if none setting the state based on an existing StudentModule, or creating one if none
...@@ -136,7 +136,7 @@ def get_module(user, request, location, student_module_cache, course_id, positio ...@@ -136,7 +136,7 @@ def get_module(user, request, location, student_module_cache, course_id, positio
if possible. If not possible, return None. if possible. If not possible, return None.
""" """
try: try:
return _get_module(user, request, location, student_module_cache, course_id, position) return _get_module(user, request, location, student_module_cache, course_id, position, wrap_xmodule_display)
except ItemNotFoundError: except ItemNotFoundError:
if not not_found_ok: if not not_found_ok:
log.exception("Error in get_module") log.exception("Error in get_module")
...@@ -146,7 +146,7 @@ def get_module(user, request, location, student_module_cache, course_id, positio ...@@ -146,7 +146,7 @@ def get_module(user, request, location, student_module_cache, course_id, positio
log.exception("Error in get_module") log.exception("Error in get_module")
return None return None
def _get_module(user, request, location, student_module_cache, course_id, position=None): def _get_module(user, request, location, student_module_cache, course_id, position=None, wrap_xmodule_display = True):
""" """
Actually implement get_module. See docstring there for details. Actually implement get_module. See docstring there for details.
""" """
...@@ -261,8 +261,13 @@ def _get_module(user, request, location, student_module_cache, course_id, positi ...@@ -261,8 +261,13 @@ def _get_module(user, request, location, student_module_cache, course_id, positi
# Make an error module # Make an error module
return err_descriptor.xmodule_constructor(system)(None, None) return err_descriptor.xmodule_constructor(system)(None, None)
_get_html = module.get_html
if wrap_xmodule_display == True:
_get_html = wrap_xmodule(module.get_html, module, 'xmodule_display.html')
module.get_html = replace_static_urls( module.get_html = replace_static_urls(
wrap_xmodule(module.get_html, module, 'xmodule_display.html'), _get_html,
module.metadata['data_dir'] if 'data_dir' in module.metadata else '', module.metadata['data_dir'] if 'data_dir' in module.metadata else '',
course_namespace = module.location._replace(category=None, name=None)) course_namespace = module.location._replace(category=None, name=None))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment