From c67d1437197b8c91ded3549ad10096fdfb5443eb Mon Sep 17 00:00:00 2001 From: danielgrippi Date: Wed, 11 May 2011 15:47:13 -0700 Subject: [PATCH] dropdown in ContactsController#sharing now works --- app/helpers/aspects_helper.rb | 8 ++++++-- app/views/aspect_memberships/create.js.erb | 2 +- app/views/aspect_memberships/destroy.js.erb | 11 +---------- app/views/contacts/sharing.haml | 6 +++++- features/manages_aspects.feature | 4 ++++ features/step_definitions/user_steps.rb | 2 +- public/javascripts/contact-edit.js | 1 + 7 files changed, 19 insertions(+), 15 deletions(-) diff --git a/app/helpers/aspects_helper.rb b/app/helpers/aspects_helper.rb index e72bee5a1..8d2e97637 100644 --- a/app/helpers/aspects_helper.rb +++ b/app/helpers/aspects_helper.rb @@ -23,7 +23,9 @@ module AspectsHelper :person_id => person_id}, :remote => true, :method => 'post', - :class => 'add button' + :class => 'add button', + 'data-aspect_id' => aspect_id, + 'data-person_id' => person_id end def remove_from_aspect_button(aspect_id, person_id) @@ -35,7 +37,9 @@ module AspectsHelper :person_id => person_id}, :remote => true, :method => 'delete', - :class => 'added button' + :class => 'added button', + 'data-aspect_id' => aspect_id, + 'data-person_id' => person_id end def aspect_membership_button(aspect, contact, person) diff --git a/app/views/aspect_memberships/create.js.erb b/app/views/aspect_memberships/create.js.erb index 62874556f..12aa09d23 100644 --- a/app/views/aspect_memberships/create.js.erb +++ b/app/views/aspect_memberships/create.js.erb @@ -1,4 +1,4 @@ -var element = $(".add", "li[data-guid=<%= @aspect.id %>]"); +var element = $(".add[data-aspect_id=<%= @aspect.id %>][data-person_id=<%= @contact.person_id%>]"); if( $("#no_contacts").is(':visible') ) { $("#no_contacts").fadeOut(200); diff --git a/app/views/aspect_memberships/destroy.js.erb b/app/views/aspect_memberships/destroy.js.erb index f153fbe52..da287593f 100644 --- a/app/views/aspect_memberships/destroy.js.erb +++ b/app/views/aspect_memberships/destroy.js.erb @@ -1,13 +1,4 @@ -var element = $(".added", "li[data-guid=<%= @aspect.id %>]"), - contactPictures = $(".contact_pictures"); - -if( contactPictures.length > 0 ) { - if( contactPictures[0].childElementCount == 0 ) { - $("#no_contacts").fadeIn(200); - } -} - -$("a[data-guid=<%= @aspect_id %>]", ".aspects").parent().remove(); +var element = $(".added[data-aspect_id=<%= @aspect.id %>][data-person_id=<%= @contact.person_id%>]"); element.parent().html("<%= escape_javascript(render('aspect_memberships/remove_from_aspect', :aspect => @aspect, :person => @contact.person, :contact => @contact)) %>"); element.fadeTo(200,1); diff --git a/app/views/contacts/sharing.haml b/app/views/contacts/sharing.haml index 5ff074df0..0633f20b1 100644 --- a/app/views/contacts/sharing.haml +++ b/app/views/contacts/sharing.haml @@ -35,9 +35,13 @@ %ul.dropdown_list - for aspect in @all_aspects %li{:data => {:aspect_id => aspect.id}} - = check_box_tag "yo" + = check_box_tag "yo", "hey", aspect.contacts.include?(contact) = aspect.name + .hidden + = aspect_membership_button(aspect, contact, contact.person) + + %br %div{:style => "text-align:right;"} = link_to t('aspects.edit.done'), '#', :class => 'button', :rel => 'close' diff --git a/features/manages_aspects.feature b/features/manages_aspects.feature index 8e41a860f..81f3af494 100644 --- a/features/manages_aspects.feature +++ b/features/manages_aspects.feature @@ -33,3 +33,7 @@ Feature: User manages aspects And I wait for the ajax to finish Then I should have 1 contact in "Cat People" + When I press the 2nd "li" within ".dropdown.active .dropdown_list" + And I wait for the ajax to finish + Then I should have 0 contacts in "Cat People" + diff --git a/features/step_definitions/user_steps.rb b/features/step_definitions/user_steps.rb index 8c613fffc..e1f985464 100644 --- a/features/step_definitions/user_steps.rb +++ b/features/step_definitions/user_steps.rb @@ -155,7 +155,7 @@ Given /^many posts from alice for bob$/ do end Then /^I should have (\d) contacts? in "([^"]*)"$/ do |n_contacts, aspect_name| - @me.aspects.where(:name => aspect_name).first.contacts.size.should == n_contacts.to_i + @me.aspects.where(:name => aspect_name).first.contacts.count.should == n_contacts.to_i end Given /^I have (\d) contacts?$/ do |count| diff --git a/public/javascripts/contact-edit.js b/public/javascripts/contact-edit.js index cc3cd1770..e2969594b 100644 --- a/public/javascripts/contact-edit.js +++ b/public/javascripts/contact-edit.js @@ -16,6 +16,7 @@ var checkbox = li.find('input[type=checkbox]'); toggleCheckbox(checkbox); + $.fn.callRemote.apply(li.find(".button")); }; $(document).ready(function(){