diff --git a/lms/djangoapps/django_comment_client/helpers.py b/lms/djangoapps/django_comment_client/helpers.py
new file mode 100644
index 0000000000..7c98aa4742
--- /dev/null
+++ b/lms/djangoapps/django_comment_client/helpers.py
@@ -0,0 +1,29 @@
+from django.core.urlresolvers import reverse
+from mitxmako.shortcuts import render_to_string
+import urllib
+
+def pluralize(singular_term, count):
+ if int(count) >= 2:
+ return singular_term + 's'
+ return singular_term
+
+def show_if(text, condition):
+ if condition:
+ return text
+ else:
+ return ''
+
+def close_thread_text(content):
+ if content.get('closed'):
+ return 'Re-open thread'
+ else:
+ return 'Close thread'
+
+def url_for_user(course_id, user_id):
+ return reverse('django_comment_client.forum.views.user_profile', args=[course_id, user_id])
+
+def url_for_tags(course_id, tags):
+ return reverse('django_comment_client.forum.views.forum_form_discussion', args=[course_id]) + '?' + urllib.urlencode({'tags': ",".join(tags)})
+
+def render_content(content):
+ return render_to_string('discussion/_content.html', {'content': content})
diff --git a/lms/djangoapps/django_comment_client/utils.py b/lms/djangoapps/django_comment_client/utils.py
index 3ef33afbbf..47d0a676b4 100644
--- a/lms/djangoapps/django_comment_client/utils.py
+++ b/lms/djangoapps/django_comment_client/utils.py
@@ -175,9 +175,3 @@ def get_annotated_content_infos(course_id, thread, user):
_annotate(child)
_annotate(thread)
return infos
-
-def pluralize(singular_term, count):
- if int(count) >= 2:
- return singular_term + 's'
- return singular_term
-
diff --git a/lms/templates/discussion/_content.html b/lms/templates/discussion/_content.html
new file mode 100644
index 0000000000..2f37bd89a7
--- /dev/null
+++ b/lms/templates/discussion/_content.html
@@ -0,0 +1,96 @@
+<%! from django_comment_client.helpers import url_for_tags, url_for_user %>
+<%! from datehelper import time_ago_in_words %>
+<%! from dateutil.parser import parse %>
+<%! from django_comment_client.helpers import close_thread_text, \
+ url_for_tags, \
+ url_for_user, \
+ pluralize
+%>
+
+
+
+ ${render_vote(content)}
+
+
+ % if content['type'] == "thread":
+ ${render_title(content)}
+ % endif
+
+
+
${(content.get('highlighted_body') or content['body']) | h}
+
${content['body'] | h}
+ % if content['type'] == "thread":
+ ${render_tags(content)}
+ % endif
+ ${render_bottom_bar(content)}
+
+
+
+
+
+<%def name="render_title(content)">
+ ${(content.get('highlighted_title') or content['title']) | h}
+ ${content['title']}
+%def>
+
+<%def name="render_tags(content)">
+
+ ${",".join(content['tags']) | h}
+%def>
+
+<%def name="render_bottom_bar(content)">
+
+ ${render_info(content)}
+
+ - ${render_link("discussion-link discussion-reply discussion-reply-" + content['type'], "Reply")}
+
+ - ${render_link("discussion-link discussion-permanent-link", "Permanent Link")}
+
+
+%def>
+
+<%def name="render_info(content)">
+
+
+
+%def>
+
+<%def name="render_link(cls, html)">
+ ${html}
+%def>
+
+<%def name="render_vote(content)">
+
+ ${render_link("discussion-vote discussion-vote-up", "▲")}
+
${content['votes']['point']}
+ ${render_link("discussion-vote discussion-vote-down", "▼")}
+
+%def>
diff --git a/lms/templates/discussion/_content_renderer.html b/lms/templates/discussion/_content_renderer.html
new file mode 100644
index 0000000000..8834e4b327
--- /dev/null
+++ b/lms/templates/discussion/_content_renderer.html
@@ -0,0 +1,20 @@
+<%! import django_comment_client.helpers as helpers %>
+
+<%def name="render_content(content)">
+ ${helpers.render_content(content)}
+%def>
+
+<%def name="render_content_with_comments(content)">
+
+ ${render_content(content)}
+ ${render_comments(content.get('children', []))}
+
+%def>
+
+<%def name="render_comments(comments)">
+
+%def>
diff --git a/lms/templates/discussion/_forum.html b/lms/templates/discussion/_forum.html
index f0c6ad4be9..21dd182002 100644
--- a/lms/templates/discussion/_forum.html
+++ b/lms/templates/discussion/_forum.html
@@ -1,4 +1,4 @@
-<%namespace name="renderer" file="_thread.html"/>
+<%namespace name="renderer" file="_content_renderer.html"/>
@@ -16,7 +16,7 @@
<%include file="_sort.html" />
% for thread in threads:
- ${renderer.render_thread(course_id, thread, show_comments=False)}
+ ${renderer.render_content_with_comments(thread)}
% endfor
<%include file="_paginator.html" />
diff --git a/lms/templates/discussion/_inline.html b/lms/templates/discussion/_inline.html
index 9e16c49d58..1737e2e558 100644
--- a/lms/templates/discussion/_inline.html
+++ b/lms/templates/discussion/_inline.html
@@ -1,4 +1,4 @@
-<%namespace name="renderer" file="_thread.html"/>
+<%namespace name="renderer" file="_content_renderer.html"/>
@@ -6,7 +6,7 @@
% for thread in threads:
- ${renderer.render_thread(course_id, thread, show_comments=False)}
+ ${renderer.render_content_with_comments(thread)}
% endfor
diff --git a/lms/templates/discussion/_thread.html b/lms/templates/discussion/_thread.html
deleted file mode 100644
index 8d4c36ea77..0000000000
--- a/lms/templates/discussion/_thread.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<%! from django.core.urlresolvers import reverse %>
-<%! from datehelper import time_ago_in_words %>
-<%! from dateutil.parser import parse %>
-<%! from django_comment_client.utils import pluralize %>
-<%! import urllib %>
-
-<%!
- def show_if(text, condition):
- if condition:
- return text
- else:
- return ''
-%>
-
-<%!
- def close_thread_text(content):
- if content.get('closed'):
- return 'Re-open thread'
- else:
- return 'Close thread'
-%>
-
-<%def name="render_thread(course_id, thread, show_comments=False)">
-
- ${render_content(thread, "thread", show_comments=show_comments)}
- % if show_comments:
- ${render_comments(thread.get('children', []))}
- % endif
-
-%def>
-
-<%def name="render_comment(comment)">
-
-%def>
-
-<%def name="render_comments(comments)">
-
-%def>
-
-<%def name="render_content(content, type, **kwargs)">
-
-
- ${render_vote(content)}
-
-
- ${render_title(content, type, **kwargs)}
-
-
-
${(content.get('highlighted_body') or content['body']) | h}
-
${content['body'] | h}
- ${render_tags(content, type, **kwargs)}
- ${render_bottom_bar(content, type, **kwargs)}
-
-
-
-
-%def>
-
-<%def name="render_title(content, type, **kwargs)">
- % if type == "thread":
- ${(content.get('highlighted_title') or content['title']) | h}
- ${content['title']}
- % endif
-%def>
-
-<%def name="render_tags(content, type, **kwargs)">
- <%
- def url_for_tags(tags):
- return reverse('django_comment_client.forum.views.forum_form_discussion', args=[course_id]) + '?' + urllib.urlencode({'tags': ",".join(tags)})
- %>
- % if type == "thread":
-
- ${",".join(content['tags']) | h}
- % endif
-%def>
-
-<%def name="render_bottom_bar(content, type, **kwargs)">
-
- ${render_info(content, type, **kwargs)}
-
- - ${render_link("discussion-link discussion-reply discussion-reply-" + type, "Reply")}
-
- - ${render_link("discussion-link discussion-permanent-link", "Permanent Link")}
-
-
-%def>
-
-<%def name="render_info(content, type, **kwargs)">
- <%
- def url_for_user(user_id):
- return reverse('django_comment_client.forum.views.user_profile', args=[course_id, user_id])
- %>
-
-
-%def>
-
-<%def name="render_link(cls, html)">
- ${html}
-%def>
-
-<%def name="render_vote(content)">
-
- ${render_link("discussion-vote discussion-vote-up", "▲")}
-
${content['votes']['point']}
- ${render_link("discussion-vote discussion-vote-down", "▼")}
-
-%def>
diff --git a/lms/templates/discussion/ajax_create_comment.html b/lms/templates/discussion/ajax_create_comment.html
index 9156040e54..92f78f9e52 100644
--- a/lms/templates/discussion/ajax_create_comment.html
+++ b/lms/templates/discussion/ajax_create_comment.html
@@ -1,3 +1,3 @@
-<%namespace name="renderer" file="_thread.html"/>
+<%namespace name="renderer" file="_content_renderer.html"/>
-${renderer.render_comment(content)}
+${renderer.render_content_with_comments(content)}
diff --git a/lms/templates/discussion/ajax_create_thread.html b/lms/templates/discussion/ajax_create_thread.html
index 884a96b3a4..92f78f9e52 100644
--- a/lms/templates/discussion/ajax_create_thread.html
+++ b/lms/templates/discussion/ajax_create_thread.html
@@ -1,3 +1,3 @@
-<%namespace name="renderer" file="_thread.html"/>
+<%namespace name="renderer" file="_content_renderer.html"/>
-${renderer.render_thread(course_id, content)}
+${renderer.render_content_with_comments(content)}
diff --git a/lms/templates/discussion/ajax_update_comment.html b/lms/templates/discussion/ajax_update_comment.html
index 61437467da..2a451bb34c 100644
--- a/lms/templates/discussion/ajax_update_comment.html
+++ b/lms/templates/discussion/ajax_update_comment.html
@@ -1,3 +1,3 @@
-<%namespace name="renderer" file="_thread.html"/>
+<%namespace name="renderer" file="_content_renderer.html"/>
-${renderer.render_content(content, "comment")}
+${renderer.render_content(content)}
diff --git a/lms/templates/discussion/ajax_update_thread.html b/lms/templates/discussion/ajax_update_thread.html
index 59afa57ecc..2a451bb34c 100644
--- a/lms/templates/discussion/ajax_update_thread.html
+++ b/lms/templates/discussion/ajax_update_thread.html
@@ -1,3 +1,3 @@
-<%namespace name="renderer" file="_thread.html"/>
+<%namespace name="renderer" file="_content_renderer.html"/>
-${renderer.render_content(content, "thread")}
+${renderer.render_content(content)}