Commit 7a649238fb5c72f1d29e47fcc91a32a17300d29f

Authored by Gabriel Silva
1 parent 601cc6ba

Changes category option on profile following

Signed-off-by: Gabriel Silva <gabriel93.silva@gmail.com>
app/controllers/my_profile/followers_controller.rb
@@ -8,7 +8,9 @@ class FollowersController &lt; MyProfileController @@ -8,7 +8,9 @@ class FollowersController &lt; MyProfileController
8 if request.method == "GET" 8 if request.method == "GET"
9 render :partial => "set_category_modal", :locals => { :followed_profile_id => params[:followed_profile_id] } 9 render :partial => "set_category_modal", :locals => { :followed_profile_id => params[:followed_profile_id] }
10 elsif request.method == "POST" 10 elsif request.method == "POST"
  11 + params[:followed_profile_id] ||= profile.id
11 follower = ProfileFollower.find_by(follower_id: current_person.id, profile_id: params[:followed_profile_id]) 12 follower = ProfileFollower.find_by(follower_id: current_person.id, profile_id: params[:followed_profile_id])
  13 +
12 follower.update_attributes(:group => params[:category_name]) if follower 14 follower.update_attributes(:group => params[:category_name]) if follower
13 redirect_to url_for(:controller => "followers", :action => "index") 15 redirect_to url_for(:controller => "followers", :action => "index")
14 end 16 end
app/controllers/public/profile_controller.rb
@@ -159,8 +159,13 @@ class ProfileController &lt; PublicController @@ -159,8 +159,13 @@ class ProfileController &lt; PublicController
159 if !current_person.follows?(profile) 159 if !current_person.follows?(profile)
160 group = params['follow'] ? params['follow']['category'] : '' 160 group = params['follow'] ? params['follow']['category'] : ''
161 current_person.follow(profile, group) 161 current_person.follow(profile, group)
  162 +
  163 + categories = ["Friends", "Family", "Work", "Interesting"]
  164 + render :partial => 'blocks/profile_info_actions/follow_categories', :locals => { :categories => categories }
  165 + else
  166 + # TODO return error
  167 + return "error"
162 end 168 end
163 - redirect_to profile.url  
164 end 169 end
165 170
166 def unfollow 171 def unfollow
app/views/blocks/profile_info_actions/_follow_categories.html.erb 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +<div class="follow-categories">
  2 +<p><%= _("You can set a category for %s") % profile.name %></p>
  3 + <% categories.each do |category| %>
  4 + <div class="category">
  5 + <a href="<%= url_for(:controller => 'followers', :action => 'set_category') %>" class="action-change-category">
  6 + <span><%= category %></span>
  7 + </a>
  8 + </div>
  9 + <% end %>
  10 +</div>
app/views/blocks/profile_info_actions/_person.html.erb
@@ -11,12 +11,9 @@ @@ -11,12 +11,9 @@
11 <% if user.follows?(profile) %> 11 <% if user.follows?(profile) %>
12 <%= button(:unfollow, content_tag('span', _('Unfollow')), {:profile => profile.identifier, :controller => 'profile', :action => 'unfollow'}) %> 12 <%= button(:unfollow, content_tag('span', _('Unfollow')), {:profile => profile.identifier, :controller => 'profile', :action => 'unfollow'}) %>
13 <% else %> 13 <% else %>
14 - <form id="follower-container" action="<%= url_for({:profile => profile.identifier, :controller => 'profile', :action => 'follow'}) %>">  
15 - <div id="category-form" style="display: none;">  
16 - <%= labelled_text_field _("Choose a category: "), "follow[category]" %>  
17 - </div>  
18 - <%= submit_button('follow', _('Follow')) %>  
19 - </form> 14 + <%= button(:follow, content_tag('span', _('Follow')), {:profile => profile.identifier, :controller => 'profile', :action => 'follow'}, :class => 'action-follow') %>
  15 + <div id="follow-categories-container" style="display: none;">
  16 + </div>
20 <% end %> 17 <% end %>
21 </li> 18 </li>
22 19
public/javascripts/followers.js
1 -$("#follower-container").live("mouseenter", function() {  
2 - $("#category-form").fadeIn();  
3 -}).live("mouseleave", function() {  
4 - $("#category-form").fadeOut(); 1 +$(".action-follow").live("click", function() {
  2 + var button = $(this);
  3 + var url = button.attr("href");
  4 +
  5 + // TODO: add progress cursor and error handling
  6 + $.post(url, function(data) {
  7 + button.fadeOut('fast', function() {
  8 + $("#follow-categories-container").html(data);
  9 + $("#follow-categories-container").fadeIn();
  10 + });
  11 + });
  12 +
  13 + return false;
  14 +});
  15 +
  16 +$(".action-change-category").live("click", function() {
  17 + var category = $(this).text().trim();
  18 + var url = $(this).attr("href");
  19 +
  20 + // TODO: add progress cursor and error handling
  21 + $.post(url, { 'category_name': category }, function(data) {
  22 + $("#follow-categories-container").fadeOut();
  23 + });
  24 +
  25 + return false;
5 }); 26 });
public/stylesheets/blocks/profile-info.scss
@@ -99,16 +99,11 @@ @@ -99,16 +99,11 @@
99 margin: 0px 0px 5px 0px; 99 margin: 0px 0px 5px 0px;
100 padding: 2px; 100 padding: 2px;
101 } 101 }
102 -#follower-container:hover { 102 +#follow-categories-container {
103 background-color: #eee; 103 background-color: #eee;
104 - -o-transition:.5s;  
105 - -ms-transition:.5s;  
106 - -moz-transition:.5s;  
107 - -webkit-transition:.5s;  
108 - transition:.5s;  
109 - padding-top: 5px;  
110 - padding-bottom: 5px; 104 + padding: 5px;
111 } 105 }
112 -#follower-container #category-form { 106 +#follow-categories-container p {
  107 + font-size: 12px;
113 margin-bottom: 5px; 108 margin-bottom: 5px;
114 } 109 }
test/functional/followers_controller_test.rb
@@ -12,7 +12,7 @@ class FollowersControllerTest &lt; ActionController::TestCase @@ -12,7 +12,7 @@ class FollowersControllerTest &lt; ActionController::TestCase
12 fast_create(ProfileFollower, :profile_id => person.id, :follower_id => @profile.id) 12 fast_create(ProfileFollower, :profile_id => person.id, :follower_id => @profile.id)
13 13
14 get :index, :profile => @profile.identifier 14 get :index, :profile => @profile.identifier
15 - assert_includes assigns(:followed_people), person 15 + assert_includes assigns(:followed_people), person
16 end 16 end
17 17
18 should 'redirect to login page if not logged in' do 18 should 'redirect to login page if not logged in' do