From abe12ddd7c284a2f914d48b346e564f92343adea Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Thu, 23 Aug 2012 01:47:47 -0700 Subject: [PATCH 1/2] display loading status --- .../coffee/src/discussion/content.coffee | 78 ++++++++++++------ .../coffee/src/discussion/discussion.coffee | 22 +++-- lms/static/coffee/src/discussion/utils.coffee | 16 +++- lms/static/images/discussion/loading.gif | Bin 0 -> 809 bytes lms/static/sass/_discussion.scss | 8 ++ 5 files changed, 92 insertions(+), 32 deletions(-) create mode 100644 lms/static/images/discussion/loading.gif diff --git a/lms/static/coffee/src/discussion/content.coffee b/lms/static/coffee/src/discussion/content.coffee index a8caf3e392..e691365f83 100644 --- a/lms/static/coffee/src/discussion/content.coffee +++ b/lms/static/coffee/src/discussion/content.coffee @@ -120,14 +120,19 @@ if Backbone? else $elem = $.merge @$(".thread-title"), @$showComments() url = @model.urlFor('retrieve') - DiscussionUtil.get $elem, url, {}, (response, textStatus) => - @showed = true - @updateShowComments() - @$showComments().addClass("retrieved") - @$el.children(".comments").replaceWith response.html - @model.resetComments response.content.children - @initCommentViews() - DiscussionUtil.bulkUpdateContentInfo response.annotated_content_info + DiscussionUtil.safeAjax + $elem: $elem + $loading: $(event.target) if event + type: "GET" + url: url + success: (response, textStatus) => + @showed = true + @updateShowComments() + @$showComments().addClass("retrieved") + @$el.children(".comments").replaceWith response.html + @model.resetComments response.content.children + @initCommentViews() + DiscussionUtil.bulkUpdateContentInfo response.annotated_content_info toggleSingleThread: (event) -> if @showed @@ -169,6 +174,7 @@ if Backbone? DiscussionUtil.safeAjax $elem: $(event.target) + $loading: $(event.target) if event url: url type: "POST" dataType: 'json' @@ -197,16 +203,24 @@ if Backbone? unvote: (event) -> url = @model.urlFor('unvote') $elem = @$(".discussion-vote") - DiscussionUtil.post $elem, url, {}, (response, textStatus) => - @model.set('voted', '') - @model.set('votes_point', response.votes.point) + DiscussionUtil.safeAjax + $elem: $elem + url: url + type: "POST" + success: (response, textStatus) => + @model.set('voted', '') + @model.set('votes_point', response.votes.point) vote: (event, value) -> url = @model.urlFor("#{value}vote") $elem = @$(".discussion-vote") - DiscussionUtil.post $elem, url, {}, (response, textStatus) => - @model.set('voted', value) - @model.set('votes_point', response.votes.point) + DiscussionUtil.safeAjax + $elem: $elem + url: url + type: "POST" + success: (response, textStatus) => + @model.set('voted', value) + @model.set('votes_point', response.votes.point) toggleVote: (event) -> $elem = $(event.target) @@ -221,8 +235,13 @@ if Backbone? url = @model.urlFor('endorse') endorsed = @model.get('endorsed') data = { endorsed: not endorsed } - DiscussionUtil.post $elem, url, data, (response, textStatus) => - @model.set('endorsed', not endorsed) + DiscussionUtil.safeAjax + $elem: $elem + url: url + data: data + type: "POST" + success: (response, textStatus) => + @model.set('endorsed', not endorsed) toggleFollow: (event) -> $elem = $(event.target) @@ -231,16 +250,25 @@ if Backbone? url = @model.urlFor('unfollow') else url = @model.urlFor('follow') - DiscussionUtil.post $elem, url, {}, (response, textStatus) => - @model.set('subscribed', not subscribed) + DiscussionUtil.safeAjax + $elem: $elem + url: url + type: "POST" + success: (response, textStatus) => + @model.set('subscribed', not subscribed) toggleClosed: (event) -> $elem = $(event.target) url = @model.urlFor('close') closed = @model.get('closed') data = { closed: not closed } - DiscussionUtil.post $elem, url, data, (response, textStatus) => - @model.set('closed', not closed) + DiscussionUtil.safeAjax + $elem: $elem + url: url + type: "POST" + data: data + success: (response, textStatus) => + @model.set('closed', not closed) edit: (event) -> @$(".discussion-content-wrapper").hide() @@ -274,6 +302,7 @@ if Backbone? data.body = DiscussionUtil.getWmdContent @$el, $.proxy(@$, @), "comment-body-edit" DiscussionUtil.safeAjax $elem: $(event.target) + $loading: $(event.target) if event url: url type: "POST" dataType: 'json' @@ -298,9 +327,12 @@ if Backbone? if not c return $elem = $(event.target) - DiscussionUtil.post $elem, url, {}, (response, textStatus) => - @$el.remove() - @model.get('thread').removeComment(@model) + DiscussionUtil.safeAjax + $elem: $elem + url: url + success: (response, textStatus) => + @$el.remove() + @model.get('thread').removeComment(@model) events: "click .discussion-follow-thread": "toggleFollow" diff --git a/lms/static/coffee/src/discussion/discussion.coffee b/lms/static/coffee/src/discussion/discussion.coffee index 0b6c59964b..71adf08b40 100644 --- a/lms/static/coffee/src/discussion/discussion.coffee +++ b/lms/static/coffee/src/discussion/discussion.coffee @@ -39,14 +39,19 @@ if Backbone? reload: ($elem, url) -> if not url then return - DiscussionUtil.get $elem, url, {}, (response, textStatus) => - $parent = @$el.parent() - @$el.replaceWith(response.html) - $discussion = $parent.find("section.discussion") - @model.reset(response.discussionData, { silent: false }) - view = new DiscussionView el: $discussion[0], model: @model - DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info) - $("html, body").animate({ scrollTop: 0 }, 0) + DiscussionUtil.safeAjax + $elem: $elem + $loading: $elem + url: url + type: "GET" + success: (response, textStatus) => + $parent = @$el.parent() + @$el.replaceWith(response.html) + $discussion = $parent.find("section.discussion") + @model.reset(response.discussionData, { silent: false }) + view = new DiscussionView el: $discussion[0], model: @model + DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info) + $("html, body").animate({ scrollTop: 0 }, 0) loadSimilarPost: (event) -> $title = @$(".new-post-title") @@ -114,6 +119,7 @@ if Backbone? url = DiscussionUtil.urlFor('create_thread', @model.id) DiscussionUtil.safeAjax $elem: $(event.target) + $loading: $(event.target) if event url: url type: "POST" dataType: 'json' diff --git a/lms/static/coffee/src/discussion/utils.coffee b/lms/static/coffee/src/discussion/utils.coffee index 0610ade1f8..b05d3d8974 100644 --- a/lms/static/coffee/src/discussion/utils.coffee +++ b/lms/static/coffee/src/discussion/utils.coffee @@ -1,3 +1,10 @@ +$ -> + $.fn.extend + loading: -> + $(this).after("") + loaded: -> + $(this).parent().children(".loading").remove() + class @DiscussionUtil @wmdEditors: {} @@ -62,9 +69,16 @@ class @DiscussionUtil $elem = params.$elem if $elem.attr("disabled") return - $elem.attr("disabled", "disabled") + params["beforeSend"] = -> + $elem.attr("disabled", "disabled") + if params["$loading"] + console.log "loading" + params["$loading"].loading() $.ajax(params).always -> $elem.removeAttr("disabled") + if params["$loading"] + console.log "loaded" + params["$loading"].loaded() @get: ($elem, url, data, success) -> @safeAjax diff --git a/lms/static/images/discussion/loading.gif b/lms/static/images/discussion/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..85638328a4f7e6220d27bf336143d5bef17b81b1 GIT binary patch literal 809 zcmZ?wbhEHbo#un4~{M@tz5ox?W@;sR=@u`q-Vg)$iTp$_>+Z|2WXlOkPW2x85~&L zKAc?HGD}#b!P=s}TShvghx&p_s$Y?k1_W;DyZ zvrSu+fkrpK`3f|e^Fd$Y9Twb1b8^kNEZDwVsA~(4_i+}UX&`e?T$bU*X0*t>vyEGX zfkwBy2?ZL>_~2aP9TVI}?>sikxUt2WyXT33AG-)c8_3+Vi#fQk8O<}#w`of-(CCIY zra+^4AM_>MvB7Qh%Z}N?k}cL64O19AxASmc1DSj3FbfYhqXp*qHf%8l8r}A0E6`~E z2Yv~6L~t8D(_z-;xoy9tx?3bXo(u3T1DSh Date: Thu, 23 Aug 2012 01:55:31 -0700 Subject: [PATCH 2/2] fixed loading for discussion module --- .../src/discussion/discussion_module.coffee | 1 + lms/static/coffee/src/discussion/utils.coffee | 4 ++-- lms/static/sass/_discussion.scss | 18 +++++++----------- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/lms/static/coffee/src/discussion/discussion_module.coffee b/lms/static/coffee/src/discussion/discussion_module.coffee index 6452d065d8..4bcacc1474 100644 --- a/lms/static/coffee/src/discussion/discussion_module.coffee +++ b/lms/static/coffee/src/discussion/discussion_module.coffee @@ -18,6 +18,7 @@ if Backbone? url = DiscussionUtil.urlFor 'retrieve_discussion', discussion_id DiscussionUtil.safeAjax $elem: $elem + $loading: $elem url: url type: "GET" dataType: 'json' diff --git a/lms/static/coffee/src/discussion/utils.coffee b/lms/static/coffee/src/discussion/utils.coffee index b05d3d8974..e156b09a63 100644 --- a/lms/static/coffee/src/discussion/utils.coffee +++ b/lms/static/coffee/src/discussion/utils.coffee @@ -1,9 +1,9 @@ $ -> $.fn.extend loading: -> - $(this).after("") + $(this).after("") loaded: -> - $(this).parent().children(".loading").remove() + $(this).parent().children(".discussion-loading").remove() class @DiscussionUtil diff --git a/lms/static/sass/_discussion.scss b/lms/static/sass/_discussion.scss index 28466894ad..717770f459 100644 --- a/lms/static/sass/_discussion.scss +++ b/lms/static/sass/_discussion.scss @@ -35,7 +35,13 @@ $tag-text-color: #5b614f; } } - +.discussion-loading { + background-image: url(../images/discussion/loading.gif); + width: 15px; + height: 15px; + margin-left: 2px; + display: inline-block; +} /*** Discussions ***/ @@ -49,16 +55,6 @@ $tag-text-color: #5b614f; margin-top: 0; } - .loading { - background-image: url(../images/discussion/loading.gif); - width: 15px; - height: 15px; - margin-left: 2px; - display: inline-block; - } - - - /*** Sidebar ***/ .sidebar-module {