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 8 if request.method == "GET"
9 9 render :partial => "set_category_modal", :locals => { :followed_profile_id => params[:followed_profile_id] }
10 10 elsif request.method == "POST"
  11 + params[:followed_profile_id] ||= profile.id
11 12 follower = ProfileFollower.find_by(follower_id: current_person.id, profile_id: params[:followed_profile_id])
  13 +
12 14 follower.update_attributes(:group => params[:category_name]) if follower
13 15 redirect_to url_for(:controller => "followers", :action => "index")
14 16 end
... ...
app/controllers/public/profile_controller.rb
... ... @@ -159,8 +159,13 @@ class ProfileController &lt; PublicController
159 159 if !current_person.follows?(profile)
160 160 group = params['follow'] ? params['follow']['category'] : ''
161 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 168 end
163   - redirect_to profile.url
164 169 end
165 170  
166 171 def unfollow
... ...
app/views/blocks/profile_info_actions/_follow_categories.html.erb 0 → 100644
... ... @@ -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 11 <% if user.follows?(profile) %>
12 12 <%= button(:unfollow, content_tag('span', _('Unfollow')), {:profile => profile.identifier, :controller => 'profile', :action => 'unfollow'}) %>
13 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 17 <% end %>
21 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 99 margin: 0px 0px 5px 0px;
100 100 padding: 2px;
101 101 }
102   -#follower-container:hover {
  102 +#follow-categories-container {
103 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 108 margin-bottom: 5px;
114 109 }
... ...
test/functional/followers_controller_test.rb
... ... @@ -12,7 +12,7 @@ class FollowersControllerTest &lt; ActionController::TestCase
12 12 fast_create(ProfileFollower, :profile_id => person.id, :follower_id => @profile.id)
13 13  
14 14 get :index, :profile => @profile.identifier
15   - assert_includes assigns(:followed_people), person
  15 + assert_includes assigns(:followed_people), person
16 16 end
17 17  
18 18 should 'redirect to login page if not logged in' do
... ...