Commit 3b76fe16 by Rocky Duan

make inline page working

parent 951fb063
...@@ -125,7 +125,11 @@ def inline_discussion(request, course_id, discussion_id): ...@@ -125,7 +125,11 @@ def inline_discussion(request, course_id, discussion_id):
threads, query_params = get_threads(request, course_id, discussion_id) threads, query_params = get_threads(request, course_id, discussion_id)
html = render_inline_discussion(request, course_id, threads, discussion_id=discussion_id, \ html = render_inline_discussion(request, course_id, threads, discussion_id=discussion_id, \
query_params=query_params) query_params=query_params)
return utils.HtmlResponse(html)
return utils.JsonResponse({
'html': html,
'discussionData': threads,
})
def render_search_bar(request, course_id, discussion_id=None, text=''): def render_search_bar(request, course_id, discussion_id=None, text=''):
if not discussion_id: if not discussion_id:
...@@ -142,8 +146,6 @@ def forum_form_discussion(request, course_id): ...@@ -142,8 +146,6 @@ def forum_form_discussion(request, course_id):
threads, query_params = get_threads(request, course_id) threads, query_params = get_threads(request, course_id)
content = render_forum_discussion(request, course_id, threads, discussion_id=_general_discussion_id(course_id), query_params=query_params) content = render_forum_discussion(request, course_id, threads, discussion_id=_general_discussion_id(course_id), query_params=query_params)
if request.is_ajax(): if request.is_ajax():
return utils.JsonResponse({ return utils.JsonResponse({
'html': content, 'html': content,
......
...@@ -175,7 +175,7 @@ class @ContentView extends Backbone.View ...@@ -175,7 +175,7 @@ class @ContentView extends Backbone.View
data: data:
body: body body: body
anonymous: anonymous anonymous: anonymous
autowatch: autowatch auto_subscribe: autowatch
error: DiscussionUtil.formErrorHandler @$(".discussion-errors") error: DiscussionUtil.formErrorHandler @$(".discussion-errors")
success: (response, textStatus) => success: (response, textStatus) =>
DiscussionUtil.clearFormErrors @$(".discussion-errors") DiscussionUtil.clearFormErrors @$(".discussion-errors")
......
...@@ -15,8 +15,6 @@ class @Discussion extends Backbone.Collection ...@@ -15,8 +15,6 @@ class @Discussion extends Backbone.Collection
@add model @add model
model model
class @DiscussionModuleView extends Backbone.View
class @DiscussionView extends Backbone.View class @DiscussionView extends Backbone.View
$: (selector) -> $: (selector) ->
...@@ -39,11 +37,13 @@ class @DiscussionView extends Backbone.View ...@@ -39,11 +37,13 @@ class @DiscussionView extends Backbone.View
@newPost() @newPost()
reload: ($elem, url) -> reload: ($elem, url) ->
console.log "here"
if not url then return if not url then return
DiscussionUtil.get $elem, url, {}, (response, textStatus) => DiscussionUtil.get $elem, url, {}, (response, textStatus) =>
$discussion = $(response.html) console.log response
$parent = @$el.parent() $parent = @$el.parent()
@$el.replaceWith($discussion) @$el.replaceWith(response.html)
$discussion = $parent.find("section.discussion")
@model.reset(response.discussionData, { silent: false }) @model.reset(response.discussionData, { silent: false })
view = new DiscussionView el: $discussion[0], model: @model view = new DiscussionView el: $discussion[0], model: @model
DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info) DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info)
...@@ -111,6 +111,8 @@ class @DiscussionView extends Backbone.View ...@@ -111,6 +111,8 @@ class @DiscussionView extends Backbone.View
title = @$(".new-post-title").val() title = @$(".new-post-title").val()
body = DiscussionUtil.getWmdContent @$el, $.proxy(@$, @), "new-post-body" body = DiscussionUtil.getWmdContent @$el, $.proxy(@$, @), "new-post-body"
tags = @$(".new-post-tags").val() tags = @$(".new-post-tags").val()
anonymous = false || @$(".discussion-post-anonymously").is(":checked")
autowatch = false || @$(".discussion-auto-watch").is(":checked")
url = DiscussionUtil.urlFor('create_thread', @model.id) url = DiscussionUtil.urlFor('create_thread', @model.id)
DiscussionUtil.safeAjax DiscussionUtil.safeAjax
$elem: $(event.target) $elem: $(event.target)
...@@ -121,6 +123,8 @@ class @DiscussionView extends Backbone.View ...@@ -121,6 +123,8 @@ class @DiscussionView extends Backbone.View
title: title title: title
body: body body: body
tags: tags tags: tags
anonymous: anonymous
auto_subscribe: autowatch
error: DiscussionUtil.formErrorHandler(@$(".new-post-form-errors")) error: DiscussionUtil.formErrorHandler(@$(".new-post-form-errors"))
success: (response, textStatus) => success: (response, textStatus) =>
DiscussionUtil.clearFormErrors(@$(".new-post-form-errors")) DiscussionUtil.clearFormErrors(@$(".new-post-form-errors"))
......
if not @Discussion? class @DiscussionModuleView extends Backbone.View
@Discussion = {} events:
"click .discussion-show": "toggleDiscussion"
Discussion = @Discussion toggleDiscussion: (event) ->
console.log "toggle"
@Discussion = $.extend @Discussion, if @showed
initializeDiscussionModule: (elem) -> @$("section.discussion").hide()
$discussionModule = $(elem) $(event.target).html("Show Discussion")
$local = Discussion.generateLocal($discussionModule) @showed = false
handleShowDiscussion = (elem) -> else
$elem = $(elem) if @retrieved
if not $local("section.discussion").length @$("section.discussion").show()
$(event.target).html("Hide Discussion")
@showed = true
else
$elem = $(event.target)
discussion_id = $elem.attr("discussion_id") discussion_id = $elem.attr("discussion_id")
url = Discussion.urlFor 'retrieve_discussion', discussion_id url = DiscussionUtil.urlFor 'retrieve_discussion', discussion_id
Discussion.safeAjax Discussion.safeAjax
$elem: $elem $elem: $elem
url: url url: url
type: "GET" type: "GET"
success: (data, textStatus, xhr) -> dataType: 'json'
$discussionModule.append(data) success: (response, textStatus) =>
discussion = $local("section.discussion") @$el.append(response.html)
Discussion.initializeDiscussion(discussion) $discussion = @$el.find("section.discussion")
Discussion.bindDiscussionEvents(discussion) $(event.target).html("Hide Discussion")
$elem.html("Hide Discussion") discussion = new Discussion()
$elem.unbind('click').click -> discussion.reset(response.discussionData, {silent: false})
handleHideDiscussion(this) view = new DiscussionView(el: $discussion[0], model: discussion)
dataType: 'html' DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info)
else @retrieved = true
$local("section.discussion").show() @showed = true
$elem.html("Hide Discussion")
$elem.unbind('click').click ->
handleHideDiscussion(this)
handleHideDiscussion = (elem) ->
$local("section.discussion").hide()
$elem = $(elem)
$elem.html("Show Discussion")
$elem.unbind('click').click ->
handleShowDiscussion(this)
$local(".discussion-show").click ->
handleShowDiscussion(this)
...@@ -7,7 +7,7 @@ $ -> ...@@ -7,7 +7,7 @@ $ ->
view = new DiscussionModuleView(el: elem) view = new DiscussionModuleView(el: elem)
$("section.discussion").each (index, elem) -> $("section.discussion").each (index, elem) ->
discussionData = DiscussionUtil.getDiscussionData(elem) discussionData = DiscussionUtil.getDiscussionData($(elem).attr("_id"))
discussion = new Discussion() discussion = new Discussion()
discussion.reset(discussionData, {silent: false}) discussion.reset(discussionData, {silent: false})
view = new DiscussionView(el: elem, model: discussion) view = new DiscussionView(el: elem, model: discussion)
......
...@@ -6,10 +6,6 @@ class @DiscussionUtil ...@@ -6,10 +6,6 @@ class @DiscussionUtil
$("script##{id}").html() $("script##{id}").html()
@getDiscussionData: (id) -> @getDiscussionData: (id) ->
if id instanceof $
id = id.attr("_id")
else if typeof id == "object"
id = $(id).attr("_id")
return $$discussion_data[id] return $$discussion_data[id]
@addContent: (id, content) -> window.$$contents[id] = content @addContent: (id, content) -> window.$$contents[id] = content
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<%block name="headextra"> <%block name="headextra">
<%static:css group='course'/> <%static:css group='course'/>
<%include file="discussion/_js_head_dependencies.html" /> <%include file="../discussion/_js_head_dependencies.html" />
</%block> </%block>
<%block name="js_extra"> <%block name="js_extra">
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<%static:js group='courseware'/> <%static:js group='courseware'/>
<%include file="discussion/_js_body_dependencies.html" /> <%include file="../discussion/_js_body_dependencies.html" />
<!-- TODO: http://docs.jquery.com/Plugins/Validation --> <!-- TODO: http://docs.jquery.com/Plugins/Validation -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment