Merge branch 'master' of github.com:dementrock/mitx into discussion2
This commit is contained in:
@@ -38,7 +38,7 @@ def comment_author_only(fn):
|
||||
return JsonError("unauthorized")
|
||||
return verified_fn
|
||||
|
||||
def instructor_only(fn): #TODO add instructor verification
|
||||
def instructor_only(fn):
|
||||
def verified_fn(request, *args, **kwargs):
|
||||
if not request.user.is_staff:
|
||||
return JsonError("unauthorized")
|
||||
@@ -46,8 +46,6 @@ def instructor_only(fn): #TODO add instructor verification
|
||||
return fn(request, *args, **kwargs)
|
||||
return verified_fn
|
||||
|
||||
|
||||
|
||||
@login_required
|
||||
@require_POST
|
||||
def create_thread(request, course_id, commentable_id):
|
||||
@@ -64,9 +62,10 @@ def create_thread(request, course_id, commentable_id):
|
||||
'course_id': course_id,
|
||||
'thread': response,
|
||||
}
|
||||
html = render_to_string('discussion/ajax_thread_only.html', context)
|
||||
html = render_to_string('discussion/ajax_create_thread.html', context)
|
||||
return JsonResponse({
|
||||
'html': html,
|
||||
'content': response,
|
||||
})
|
||||
else:
|
||||
return JsonResponse(response)
|
||||
@@ -77,6 +76,15 @@ def create_thread(request, course_id, commentable_id):
|
||||
def update_thread(request, course_id, thread_id):
|
||||
attributes = extract(request.POST, ['body', 'title', 'tags'])
|
||||
response = comment_client.update_thread(thread_id, attributes)
|
||||
if response.is_ajax():
|
||||
context = {
|
||||
'thread': response,
|
||||
}
|
||||
html = render_to_string('discussion/ajax_update_thread.html', context)
|
||||
return JsonResponse({
|
||||
'html': html,
|
||||
'content': response,
|
||||
})
|
||||
return JsonResponse(response)
|
||||
|
||||
def _create_comment(request, course_id, _response_from_attributes):
|
||||
@@ -92,9 +100,10 @@ def _create_comment(request, course_id, _response_from_attributes):
|
||||
context = {
|
||||
'comment': response,
|
||||
}
|
||||
html = render_to_string('discussion/ajax_comment_only.html', context)
|
||||
html = render_to_string('discussion/ajax_create_comment.html', context)
|
||||
return JsonResponse({
|
||||
'html': html,
|
||||
'content': response,
|
||||
})
|
||||
else:
|
||||
return JsonResponse(response)
|
||||
@@ -119,6 +128,15 @@ def delete_thread(request, course_id, thread_id):
|
||||
def update_comment(request, course_id, comment_id):
|
||||
attributes = extract(request.POST, ['body'])
|
||||
response = comment_client.update_comment(comment_id, attributes)
|
||||
if response.is_ajax():
|
||||
context = {
|
||||
'comment': response,
|
||||
}
|
||||
html = render_to_string('discussion/ajax_update_comment.html', context)
|
||||
return JsonResponse({
|
||||
'html': html,
|
||||
'content': response,
|
||||
})
|
||||
return JsonResponse(response)
|
||||
|
||||
@instructor_only
|
||||
|
||||
@@ -19,7 +19,7 @@ import comment_client
|
||||
import dateutil
|
||||
|
||||
|
||||
THREADS_PER_PAGE = 20
|
||||
THREADS_PER_PAGE = 5
|
||||
PAGES_NEARBY_DELTA = 2
|
||||
|
||||
def render_accordion(request, course, discussion_id):
|
||||
|
||||
@@ -25,10 +25,9 @@ Discussion = @Discussion
|
||||
}
|
||||
$discussionContent.append Mustache.render Discussion.replyTemplate, view
|
||||
Discussion.makeWmdEditor $content, $local, "reply-body"
|
||||
$local(".discussion-reply").hide()
|
||||
$local(".discussion-submit-post").click -> handleSubmitReply(this)
|
||||
$local(".discussion-cancel-post").click -> handleCancelReply(this)
|
||||
$local(".discussion-link").hide()
|
||||
$discussionContent.attr("status", "reply")
|
||||
|
||||
handleCancelReply = (elem) ->
|
||||
$replyView = $local(".discussion-reply-new")
|
||||
@@ -36,7 +35,7 @@ Discussion = @Discussion
|
||||
$replyView.hide()
|
||||
#reply = Discussion.generateDiscussionLink("discussion-reply", "Reply", handleReply)
|
||||
#$(elem).replaceWith(reply)
|
||||
$discussionContent.attr("status", "normal")
|
||||
$local(".discussion-reply").show()
|
||||
|
||||
handleSubmitReply = (elem) ->
|
||||
if $content.hasClass("thread")
|
||||
@@ -61,13 +60,14 @@ Discussion = @Discussion
|
||||
anonymous: anonymous
|
||||
autowatch: autowatch
|
||||
success: Discussion.formErrorHandler($local(".discussion-errors"), (response, textStatus) ->
|
||||
console.log response
|
||||
$comment = $(response.html)
|
||||
$content.children(".comments").prepend($comment)
|
||||
Discussion.setWmdContent $content, $local, "reply-body", ""
|
||||
Discussion.setContentInfo response.content['id'], 'editable', true
|
||||
Discussion.initializeContent($comment)
|
||||
Discussion.bindContentEvents($comment)
|
||||
$local(".discussion-reply-new").hide()
|
||||
$local(".discussion-reply").show()
|
||||
$discussionContent.attr("status", "normal")
|
||||
)
|
||||
|
||||
@@ -189,9 +189,7 @@ Discussion = @Discussion
|
||||
type: "GET"
|
||||
dataType: 'json'
|
||||
success: (response, textStatus) ->
|
||||
if not $$annotated_content_info?
|
||||
window.$$annotated_content_info = {}
|
||||
window.$$annotated_content_info = $.extend $$annotated_content_info, response['annotated_content_info']
|
||||
Discussion.bulkExtendContentInfo response['annotated_content_info']
|
||||
$content.append(response['html'])
|
||||
$content.find(".comment").each (index, comment) ->
|
||||
Discussion.initializeContent(comment)
|
||||
@@ -240,6 +238,5 @@ Discussion = @Discussion
|
||||
$contentBody.html(converter.makeHtml(raw_text))
|
||||
MathJax.Hub.Queue ["Typeset", MathJax.Hub, $contentBody.attr("id")]
|
||||
id = $content.attr("_id")
|
||||
if $$annotated_content_info?
|
||||
if not ($$annotated_content_info[id] || [])['editable']
|
||||
$local(".discussion-edit").remove()
|
||||
if not Discussion.getContentInfo id, 'editable'
|
||||
$local(".discussion-edit").remove()
|
||||
|
||||
@@ -104,10 +104,10 @@ initializeFollowThread = (index, thread) ->
|
||||
body: body
|
||||
tags: tags
|
||||
success: Discussion.formErrorHandler($local(".new-post-form-error"), (response, textStatus) ->
|
||||
console.log response
|
||||
$thread = $(response.html)
|
||||
$discussion.children(".threads").prepend($thread)
|
||||
Discussion.setWmdContent $discussion, $local, "new-post-body", ""
|
||||
Discussion.setContentInfo response.content['id'], 'editable', true
|
||||
Discussion.initializeContent($thread)
|
||||
Discussion.bindContentEvents($thread)
|
||||
$(".new-post-form").hide()
|
||||
|
||||
@@ -26,8 +26,8 @@ wmdEditors = {}
|
||||
delete_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/delete"
|
||||
upvote_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/upvote"
|
||||
downvote_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/downvote"
|
||||
follow_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/follow"
|
||||
unfollow_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/unfollow"
|
||||
follow_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/follow"
|
||||
unfollow_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/unfollow"
|
||||
update_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/update"
|
||||
endorse_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/endorse"
|
||||
create_sub_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/reply"
|
||||
@@ -92,7 +92,6 @@ wmdEditors = {}
|
||||
imageUploadUrl = Discussion.urlFor('upload')
|
||||
editor = Markdown.makeWmdEditor elem, appended_id, imageUploadUrl
|
||||
wmdEditors["#{cls_identifier}-#{id}"] = editor
|
||||
console.log wmdEditors
|
||||
editor
|
||||
|
||||
getWmdEditor: ($content, $local, cls_identifier) ->
|
||||
@@ -106,6 +105,20 @@ wmdEditors = {}
|
||||
setWmdContent: ($content, $local, cls_identifier, text) ->
|
||||
id = $content.attr("_id")
|
||||
$local("#wmd-input-#{cls_identifier}-#{id}").val(text)
|
||||
console.log wmdEditors
|
||||
console.log "#{cls_identifier}-#{id}"
|
||||
wmdEditors["#{cls_identifier}-#{id}"].refreshPreview()
|
||||
|
||||
getContentInfo: (id, attr) ->
|
||||
if not window.$$annotated_content_info?
|
||||
window.$$annotated_content_info = {}
|
||||
(window.$$annotated_content_info[id] || {})[attr]
|
||||
|
||||
setContentInfo: (id, attr, value) ->
|
||||
if not window.$$annotated_content_info?
|
||||
window.$$annotated_content_info = {}
|
||||
window.$$annotated_content_info[id] ||= {}
|
||||
window.$$annotated_content_info[id][attr] = value
|
||||
|
||||
bulkExtendContentInfo: (newInfos) ->
|
||||
if not window.$$annotated_content_info?
|
||||
window.$$annotated_content_info = {}
|
||||
window.$$annotated_content_info = $.extend window.$$annotated_content_info, newInfos
|
||||
|
||||
Reference in New Issue
Block a user