diff --git a/common/lib/xmodule/xmodule/conditional_module.py b/common/lib/xmodule/xmodule/conditional_module.py
index 0a241c99de..e20681e614 100644
--- a/common/lib/xmodule/xmodule/conditional_module.py
+++ b/common/lib/xmodule/xmodule/conditional_module.py
@@ -43,7 +43,6 @@ class ConditionalModule(XModule):
"""
XModule.__init__(self, system, location, definition, descriptor, instance_state, shared_state, **kwargs)
self.contents = None
- #self.required_modules_list = [tuple(x.split('/',1)) for x in self.metadata.get('required','').split('&')]
self.condition = self.metadata.get('condition','')
#log.debug('conditional module required=%s' % self.required_modules_list)
@@ -105,9 +104,7 @@ class ConditionalModule(XModule):
if not self.is_condition_satisfied():
context = {'module': self}
html = self.system.render_template('conditional_module.html', context)
- # html = render_to_string('conditional_module.html', context)
return json.dumps({'html': html})
- #return self.system.render_template('conditional_module.html', context)
if self.contents is None:
self.contents = [child.get_html() for child in self.get_display_items()]
@@ -115,10 +112,7 @@ class ConditionalModule(XModule):
# for now, just deal with one child
html = self.contents[0]
- #log.debug('rendered conditional module %s' % str(self.location))
-
return json.dumps({'html': html})
- #return html
class ConditionalDescriptor(SequenceDescriptor):
module_class = ConditionalModule
diff --git a/doc/xml-format.md b/doc/xml-format.md
index f4fd1054cb..b93f3bbeab 100644
--- a/doc/xml-format.md
+++ b/doc/xml-format.md
@@ -141,6 +141,7 @@ That's basically all there is to the organizational structure. Read the next se
* `abtest` -- Support for A/B testing. TODO: add details..
* `chapter` -- top level organization unit of a course. The courseware display code currently expects the top level `course` element to contain only chapters, though there is no philosophical reason why this is required, so we may change it to properly display non-chapters at the top level.
+* `conditional` -- conditional element, which shows one or more modules only if certain conditions are satisfied.
* `course` -- top level tag. Contains everything else.
* `customtag` -- render an html template, filling in some parameters, and return the resulting html. See below for details.
* `discussion` -- Inline discussion forum
@@ -163,6 +164,22 @@ Container tags include `chapter`, `sequential`, `videosequence`, `vertical`, and
`course` is also a container, and is similar, with one extra wrinkle: the top level pointer tag _must_ have `org` and `course` attributes specified--the organization name, and course name. Note that `course` is referring to the platonic ideal of this course (e.g. "6.002x"), not to any particular run of this course. The `url_name` should be the particular run of this course.
+### `conditional`
+
+`conditional` is as special kind of container tag as well. Here are two examples:
+
+
+
+
+
+
+
+
+
+The condition can be either `require_completed`, in which case the required modules must be completed, or `require_attempted`, in which case the required modules must have been attempted.
+
+The required modules are specified as a set of `tag`/`url_name`, joined by an ampersand.
+
### `customtag`
When we see ``, we will: