diff --git a/common/lib/xmodule/xmodule/discussion_module.py b/common/lib/xmodule/xmodule/discussion_module.py index 475c41e04d..7cb94de1b3 100644 --- a/common/lib/xmodule/xmodule/discussion_module.py +++ b/common/lib/xmodule/xmodule/discussion_module.py @@ -1,15 +1,27 @@ +from lxml import etree + from xmodule.x_module import XModule from xmodule.raw_module import RawDescriptor +import comment_client +import dateutil +from dateutil.tz import tzlocal +from datehelper import time_ago_in_words class DiscussionModule(XModule): def get_html(self): - return "Discussion: To be implemented" + context = { + 'threads': comment_client.get_threads(self.discussion_id, recursive=True), + 'time_ago_in_words': time_ago_in_words, + 'parse': dateutil.parser.parse, + } + return self.system.render_template('discussion.html', context) def __init__(self, system, location, definition, instance_state=None, shared_state=None, **kwargs): XModule.__init__(self, system, location, definition, instance_state, shared_state, **kwargs) - print "Initialized" - print definition + xml_data = etree.fromstring(definition['data']) + self.discussion_id = xml_data.attrib['id'] + self.title = xml_data.attrib['for'] class DiscussionDescriptor(RawDescriptor): module_class = DiscussionModule diff --git a/lms/lib/comment_client.py b/lms/lib/comment_client.py new file mode 120000 index 0000000000..ecf4baf7e2 --- /dev/null +++ b/lms/lib/comment_client.py @@ -0,0 +1 @@ +/Users/dementrock/coding/cs_comments_client_python/comment_client.py \ No newline at end of file diff --git a/lms/static/sass/_discussion.scss b/lms/static/sass/_discussion.scss new file mode 100644 index 0000000000..f2f40a307d --- /dev/null +++ b/lms/static/sass/_discussion.scss @@ -0,0 +1,30 @@ +.discussion { + .title { + font-size: 20px; + line-height: 20px; + font-weight: bold; + } + .thread { + margin-top: 10px; + margin-bottom: 10px; + .title { + font-size: 16px; + line-height: 16px; + } + .body { + font-size: 14px; + line-height: 14px; + } + .comments { + margin-left: 20px; + .comment { + .body { + } + .subcomments { + margin-left: 20px; + } + } + } + } + +} diff --git a/lms/templates/discussion.html b/lms/templates/discussion.html new file mode 100644 index 0000000000..07a2afe0c3 --- /dev/null +++ b/lms/templates/discussion.html @@ -0,0 +1,31 @@ +
+
+ Discussion +
+ % for thread in threads: +
+
${thread['title']}
+
${thread['body']}
+
+ ${time_ago_in_words(parse(thread['updated_at']))} ago by user No.${thread['user_id']} +
+
+ ${render_comments(thread['children'])} +
+
+ % endfor +
+ +<%def name="render_comments(comments)"> + % for comment in comments: +
+
${comment['body']}
+
+ ${time_ago_in_words(parse(comment['updated_at']))} ago by user No.${comment['user_id']} +
+
+ ${render_comments(comment['children'])} +
+
+ % endfor +