From 50f32ce5ac5949bdfdc5026e5abb1507f6ec84f7 Mon Sep 17 00:00:00 2001 From: Andrej Kacian Date: Sat, 6 Aug 2011 15:36:41 +0200 Subject: [PATCH 1/4] Show ajax loader and hide the hide icon when hiding a post. --- app/views/post_visibilities/update.js.erb | 6 ++++++ app/views/shared/_stream_element.html.haml | 14 +++++++------- public/javascripts/stream.js | 11 +++++++++++ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/app/views/post_visibilities/update.js.erb b/app/views/post_visibilities/update.js.erb index b7c4a701a..1b444dc2a 100644 --- a/app/views/post_visibilities/update.js.erb +++ b/app/views/post_visibilities/update.js.erb @@ -1,3 +1,9 @@ var target = $("#<%= @post.guid %>") target.find(".sm_body").toggleClass("hidden"); target.find(".undo_text").toggleClass("hidden"); +target.find(".hide_loader").toggleClass("hidden"); + +var hide_icon = target.find(".stream_element_delete") +if (target.find(".undo_text").hasClass("hidden")) { + hide_icon.toggleClass("hidden"); +} diff --git a/app/views/shared/_stream_element.html.haml b/app/views/shared/_stream_element.html.haml index 16c58d7ea..aaf0efc31 100644 --- a/app/views/shared/_stream_element.html.haml +++ b/app/views/shared/_stream_element.html.haml @@ -4,17 +4,17 @@ .stream_element{:id => post.guid} - - if user_signed_in? - - if post.author.owner_id == current_user.id - .right.controls - = link_to image_tag('deletelabel.png'), post_path(post), :confirm => t('are_you_sure'), :method => :delete, :remote => true, :class => "delete stream_element_delete", :title => t('delete') + .right.controls + - if current_user && post.author.owner_id == current_user.id + = link_to image_tag('deletelabel.png'), post_path(post), :confirm => t('are_you_sure'), :method => :delete, :remote => true, :class => "delete stream_element_delete", :title => t('delete') - else - .right.controls - = link_to image_tag('deletelabel.png'), post_visibility_path(:id => "42", :post_id => post.id), :method => :put, :remote => true, :class => "delete stream_element_delete", :title => t('hide') + = link_to image_tag('deletelabel.png'), post_visibility_path(:id => "42", :post_id => post.id), :method => :put, :remote => true, :class => "delete stream_element_delete vis_hide", :title => t('hide') + = image_tag 'ajax-loader.gif', :class => "hide_loader hidden" .undo_text.hidden = t('post_visibilites.update.post_hidden', :name => post.author.name) - = link_to t('undo'), post_visibility_path(:id => "42", :post_id => post.id), :method => :put, :remote => true, :class => "delete stream_element_delete" + = link_to t('undo'), post_visibility_path(:id => "42", :post_id => post.id), :method => :put, :remote => true, :class => "delete stream_element_hide_undo" + .sm_body = person_image_link(post.author, :size => :thumb_small) diff --git a/public/javascripts/stream.js b/public/javascripts/stream.js index 7665ffcf8..252479245 100644 --- a/public/javascripts/stream.js +++ b/public/javascripts/stream.js @@ -24,6 +24,7 @@ var Stream = { Diaspora.widgets.subscribe("stream/scrolled", Stream.collapseText); Stream.collapseText('eventID', $(Stream.selector)[0]); + Stream.bindHideIcon(); }, collapseText: function(){ elements = $(Array.prototype.slice.call(arguments,1)); @@ -188,6 +189,16 @@ var Stream = { textarea.focus(); } } + }, + + bindHideIcon: function(){ + $("a.stream_element_delete.vis_hide").live("click", function(evt){ + $(this).toggleClass("hidden"); + $(this).next("img.hide_loader").toggleClass("hidden"); + }); + $("a.stream_element_hide_undo").live("click", function(evt){ + $("img.hide_loader").toggleClass("hidden"); + }); } }; From 2a52face1202692e1b9697c3ddd81026b7c94c9d Mon Sep 17 00:00:00 2001 From: Andrej Kacian Date: Wed, 10 Aug 2011 23:03:37 +0200 Subject: [PATCH 2/4] Add jasmine test for ajax spinner display --- spec/controllers/aspects_controller_spec.rb | 1 + spec/javascripts/stream-spec.js | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/spec/controllers/aspects_controller_spec.rb b/spec/controllers/aspects_controller_spec.rb index c358b4eb1..8f6e2920a 100644 --- a/spec/controllers/aspects_controller_spec.rb +++ b/spec/controllers/aspects_controller_spec.rb @@ -64,6 +64,7 @@ describe AspectsController do end it 'generates a jasmine fixture with posts', :fixture => true do + bob.post(:status_message, :text => "Is anyone out there?", :to => @bob.aspects.first.id) message = alice.post(:status_message, :text => "hello "*800, :to => @alices_aspect_2.id) 3.times { bob.comment("what", :post => message) } get :index diff --git a/spec/javascripts/stream-spec.js b/spec/javascripts/stream-spec.js index 522ad0200..55b9c98a9 100644 --- a/spec/javascripts/stream-spec.js +++ b/spec/javascripts/stream-spec.js @@ -40,6 +40,21 @@ describe("Stream", function() { }); }); + describe("streamElement", function() { + it("makes sure that ajax spinner appears when hiding a post", function() { + Stream.bindHideIcon(); + link = $("a.stream_element_delete.vis_hide"); + spinner = link.next("img.hide_loader"); + expect(link).not.toHaveClass("hidden"); + expect(spinner).toHaveClass("hidden"); + spyOn($, "ajax"); + link.click(); + expect($.ajax).toHaveBeenCalled(); + expect(link).toHaveClass("hidden"); + expect(spinner).not.toHaveClass("hidden"); + }); + }); + describe("initialize", function() { it("calls collapseText",function(){ spyOn(Stream, "collapseText"); @@ -71,4 +86,5 @@ describe("Stream", function() { expect(link.text()).toEqual("comments.show pl"); }); }); + }); From 395df041dbf04d30073de77400c62cf724b5d2da Mon Sep 17 00:00:00 2001 From: Andrej Kacian Date: Thu, 18 Aug 2011 23:35:39 +0200 Subject: [PATCH 3/4] Made toggleComments jasmine test aware that there are more posts in the fixture --- spec/javascripts/stream-spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/javascripts/stream-spec.js b/spec/javascripts/stream-spec.js index 55b9c98a9..950f8987f 100644 --- a/spec/javascripts/stream-spec.js +++ b/spec/javascripts/stream-spec.js @@ -65,7 +65,7 @@ describe("Stream", function() { describe("toggleComments", function() { it("toggles class hidden on the comments ul", function () { - link = $("a.toggle_post_comments"); + link = $("a.toggle_post_comments").first(); expect(jQuery('ul.comments')).not.toHaveClass("hidden"); Stream.toggleComments.call( link, {preventDefault: function(){} } @@ -75,7 +75,7 @@ describe("Stream", function() { }); it("changes the text on the show comments link", function() { - link = $("a.toggle_post_comments"); + link = $("a.toggle_post_comments").first(); Diaspora.widgets.i18n.loadLocale( {'comments' : {'show': 'comments.show pl'}}, 'en'); expect(link.text()).toEqual("Hide all comments"); From bd3683d0d19ba1a61a313330e8fc815a0cda983b Mon Sep 17 00:00:00 2001 From: Andrej Kacian Date: Mon, 22 Aug 2011 01:15:43 +0200 Subject: [PATCH 4/4] Fix selector in the hide undo click handler. --- public/javascripts/stream.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/javascripts/stream.js b/public/javascripts/stream.js index 252479245..43964adef 100644 --- a/public/javascripts/stream.js +++ b/public/javascripts/stream.js @@ -197,7 +197,7 @@ var Stream = { $(this).next("img.hide_loader").toggleClass("hidden"); }); $("a.stream_element_hide_undo").live("click", function(evt){ - $("img.hide_loader").toggleClass("hidden"); + $(this).closest('.stream_element').find("img.hide_loader").toggleClass("hidden"); }); } };