<%! from django.core.urlresolvers import reverse %> <%! from datehelper import time_ago_in_words %> <%! from dateutil.parser import parse %> <%! import urllib %> <%def name="render_thread(course_id, thread, edit_thread=False, show_comments=False)">
${render_content(thread, "thread", edit_thread=edit_thread, show_comments=show_comments)} % if show_comments: ${render_comments(thread['children'])} % endif
<%def name="render_comments(comments)">
% for comment in comments:
${render_content(comment, "comment")}
${render_comments(comment['children'])}
% endfor
<%def name="render_content(content, type, **kwargs)">
${render_vote(content)}
${render_title(content, type, **kwargs)}
${content['body'] | h}
${render_tags(content, type, **kwargs)} ${render_bottom_bar(content, type, **kwargs)}
<%def name="render_title(content, type, **kwargs)"> <% if kwargs.get('show_comments', False): url_for_thread = "" else: url_for_thread = reverse('django_comment_client.forum.views.single_thread', args=[course_id, content['id']]) %> % if type == "thread": ${content['title'] | h} % endif <%def name="render_tags(content, type, **kwargs)"> <% def url_for_tags(tags): return reverse('django_comment_client.forum.views.search', args=[course_id]) + '?' + urllib.urlencode({'tags': ",".join(tags)}) %> % if type == "thread":
% for tag in content['tags']: ${tag} % endfor
% endif <%def name="render_bottom_bar(content, type, **kwargs)">
${render_info(content)} % if type == "thread" and kwargs['edit_thread'] or type == "comment": ${render_link("discussion-link discussion-reply", "Reply")} ${render_link("discussion-link discussion-edit", "Edit")} % endif
<%def name="render_info(content)"> ${time_ago_in_words(parse(content['updated_at']))} ago by % if content.get('user_id', False): user No.${content['user_id']} % else: anonymous % endif <%def name="render_link(cls, html)"> ${html} <%def name="render_vote(content)">
${render_link("discussion-vote discussion-vote-up", "˄")} ${content['votes']['point']} ${render_link("discussion-vote discussion-vote-down", "˅")}