Merge branch 'master' of github.com:dementrock/mitx into discussion2
This commit is contained in:
@@ -49,6 +49,10 @@ def create_thread(request, course_id, commentable_id):
|
||||
attributes = extract(request.POST, ['body', 'title', 'tags'])
|
||||
attributes['user_id'] = request.user.id
|
||||
attributes['course_id'] = course_id
|
||||
if request.POST.get('anonymous', 'false').lower() == 'true':
|
||||
attributes['anonymous'] = True
|
||||
if request.POST.get('autowatch', 'false').lower() == 'true':
|
||||
attributes['auto_subscribe'] = True
|
||||
response = comment_client.create_thread(commentable_id, attributes)
|
||||
return JsonResponse(response)
|
||||
|
||||
@@ -64,11 +68,13 @@ def update_thread(request, course_id, thread_id):
|
||||
@require_POST
|
||||
def create_comment(request, course_id, thread_id):
|
||||
attributes = extract(request.POST, ['body'])
|
||||
if request.POST.get('anonymous', 'false').lower() == 'false':
|
||||
attributes['user_id'] = request.user.id
|
||||
attributes['user_id'] = request.user.id
|
||||
attributes['course_id'] = course_id
|
||||
attributes['auto_subscribe'] = bool(request.POST.get('autowatch', False))
|
||||
print attributes
|
||||
print request.POST
|
||||
if request.POST.get('anonymous', 'false').lower() == 'true':
|
||||
attributes['anonymous'] = True
|
||||
if request.POST.get('autowatch', 'false').lower() == 'true':
|
||||
attributes['auto_subscribe'] = True
|
||||
response = comment_client.create_comment(thread_id, attributes)
|
||||
return JsonResponse(response)
|
||||
|
||||
@@ -99,10 +105,12 @@ def endorse_comment(request, course_id, comment_id):
|
||||
@require_POST
|
||||
def create_sub_comment(request, course_id, comment_id):
|
||||
attributes = extract(request.POST, ['body'])
|
||||
if request.POST.get('anonymous', 'false').lower() == 'false':
|
||||
attributes['user_id'] = request.user.id
|
||||
attributes['user_id'] = request.user.id
|
||||
attributes['course_id'] = course_id
|
||||
attributes['auto_subscribe'] = bool(request.POST.get('autowatch', False))
|
||||
if request.POST.get('anonymous', 'false').lower() == 'true':
|
||||
attributes['anonymous'] = True
|
||||
if request.POST.get('autowatch', 'false').lower() == 'true':
|
||||
attributes['auto_subscribe'] = True
|
||||
response = comment_client.create_sub_comment(comment_id, attributes)
|
||||
return JsonResponse(response)
|
||||
|
||||
|
||||
@@ -78,9 +78,23 @@ def forum_form_discussion(request, course_id, discussion_id):
|
||||
|
||||
def render_single_thread(request, course_id, thread_id):
|
||||
|
||||
def get_annotated_content_info(thread, user_id):
|
||||
infos = {}
|
||||
def _annotate(content):
|
||||
infos[str(content['id'])] = {
|
||||
'editable': str(content['user_id']) == str(user_id), # TODO may relax this to instructors
|
||||
}
|
||||
for child in content['children']:
|
||||
_annotate(child)
|
||||
_annotate(thread)
|
||||
return infos
|
||||
|
||||
thread = comment_client.get_thread(thread_id, recursive=True)
|
||||
|
||||
context = {
|
||||
'thread': comment_client.get_thread(thread_id, recursive=True),
|
||||
'thread': thread,
|
||||
'user_info': comment_client.get_user_info(request.user.id, raw=True),
|
||||
'annotated_content_info': json.dumps(get_annotated_content_info(thread=thread, user_id=request.user.id)),
|
||||
'tags': comment_client.get_threads_tags(raw=True),
|
||||
'course_id': course_id,
|
||||
}
|
||||
|
||||
@@ -199,7 +199,7 @@ Discussion =
|
||||
else
|
||||
view = {
|
||||
id: id
|
||||
showWatchCheckbox: $discussionContent.parent(".thread").attr("_id") not in $$user_info.subscribed_thread_ids
|
||||
showWatchCheckbox: $discussionContent.parents(".thread").attr("_id") not in $$user_info.subscribed_thread_ids
|
||||
}
|
||||
$discussionContent.append Mustache.render Discussion.replyTemplate, view
|
||||
Markdown.makeWmdEditor $local(".reply-body"), "-reply-body-#{id}", Discussion.urlFor('upload')
|
||||
@@ -341,6 +341,11 @@ Discussion =
|
||||
raw_text = $local(".content-body").html()
|
||||
converter = Markdown.getMathCompatibleConverter()
|
||||
$local(".content-body").html(converter.makeHtml(raw_text))
|
||||
id = $content.attr("_id")
|
||||
if not ($$annotated_content_info[id] || [])['editable']
|
||||
$local(".discussion-edit").remove()
|
||||
|
||||
|
||||
|
||||
bindDiscussionEvents: (discussion) ->
|
||||
$discussion = $(discussion)
|
||||
|
||||
@@ -14,4 +14,5 @@
|
||||
var $$user_info = JSON.parse('${user_info | escape_quotes}');
|
||||
var $$course_id = "${course_id}";
|
||||
var $$tags = JSON.parse("${tags | escape_quotes}");
|
||||
var $$annotated_content_info = JSON.parse("${annotated_content_info | escape_quotes}");
|
||||
</script>
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
<%! import urllib %>
|
||||
|
||||
<%def name="render_thread(course_id, thread, edit_thread=False, show_comments=False)">
|
||||
|
||||
<div class="thread" _id="${thread['id']}">
|
||||
${render_content(thread, "thread", edit_thread=edit_thread, show_comments=show_comments)}
|
||||
% if show_comments:
|
||||
@@ -83,10 +82,13 @@
|
||||
|
||||
<%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:
|
||||
% if content['anonymous']:
|
||||
anonymous
|
||||
% else:
|
||||
user No.${content['user_id']}
|
||||
% endif
|
||||
% if content.get('comments_count', -1) >= 0:
|
||||
/ ${content['comments_count']} comment(s)
|
||||
% endif
|
||||
</%def>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user