Commit cfe6f768486a38c67a03a15f4452d848fc67d6b1
1 parent
f2992440
Exists in
profile_api_improvements
and in
1 other branch
Fixes followers related controllers to use current profile instead of logged in user
Lists and edits followers and circles in control panel of profile that is being viewed instead of logged in person. Also unfollow person in control panel based on current viewed profile instead of current logged in user. This is necessary because sometimes an environment admin is editing someone else's profile and those actions should be performed on that profile instead of admin's profile.
Showing
7 changed files
with
26 additions
and
23 deletions
Show diff stats
app/controllers/my_profile/circles_controller.rb
@@ -3,7 +3,7 @@ class CirclesController < MyProfileController | @@ -3,7 +3,7 @@ class CirclesController < MyProfileController | ||
3 | before_action :accept_only_post, :only => [:create, :update, :destroy] | 3 | before_action :accept_only_post, :only => [:create, :update, :destroy] |
4 | 4 | ||
5 | def index | 5 | def index |
6 | - @circles = current_person.circles | 6 | + @circles = profile.circles |
7 | end | 7 | end |
8 | 8 | ||
9 | def new | 9 | def new |
@@ -11,7 +11,7 @@ class CirclesController < MyProfileController | @@ -11,7 +11,7 @@ class CirclesController < MyProfileController | ||
11 | end | 11 | end |
12 | 12 | ||
13 | def create | 13 | def create |
14 | - @circle = Circle.new(params[:circle].merge({ :person => current_person })) | 14 | + @circle = Circle.new(params[:circle].merge({ :person => profile })) |
15 | if @circle.save | 15 | if @circle.save |
16 | redirect_to :action => 'index' | 16 | redirect_to :action => 'index' |
17 | else | 17 | else |
@@ -21,7 +21,7 @@ class CirclesController < MyProfileController | @@ -21,7 +21,7 @@ class CirclesController < MyProfileController | ||
21 | 21 | ||
22 | def xhr_create | 22 | def xhr_create |
23 | if request.xhr? | 23 | if request.xhr? |
24 | - circle = Circle.new(params[:circle].merge({:person => current_person })) | 24 | + circle = Circle.new(params[:circle].merge({:person => profile })) |
25 | if circle.save | 25 | if circle.save |
26 | render :partial => "circle_checkbox", :locals => { :circle => circle }, | 26 | render :partial => "circle_checkbox", :locals => { :circle => circle }, |
27 | :status => 201 | 27 | :status => 201 |
app/controllers/my_profile/followers_controller.rb
@@ -4,7 +4,7 @@ class FollowersController < MyProfileController | @@ -4,7 +4,7 @@ class FollowersController < MyProfileController | ||
4 | before_action :accept_only_post, :only => [:update_category] | 4 | before_action :accept_only_post, :only => [:update_category] |
5 | 5 | ||
6 | def index | 6 | def index |
7 | - @followed_people = current_person.followed_profiles.order(:type) | 7 | + @followed_people = profile.followed_profiles.order(:type) |
8 | @profile_types = {_('All profiles') => nil}.merge(Circle.profile_types).to_a | 8 | @profile_types = {_('All profiles') => nil}.merge(Circle.profile_types).to_a |
9 | 9 | ||
10 | if params['filter'].present? | 10 | if params['filter'].present? |
@@ -16,9 +16,9 @@ class FollowersController < MyProfileController | @@ -16,9 +16,9 @@ class FollowersController < MyProfileController | ||
16 | end | 16 | end |
17 | 17 | ||
18 | def set_category_modal | 18 | def set_category_modal |
19 | - profile = Profile.find(params[:followed_profile_id]) | ||
20 | - circles = Circle.where(:person => current_person, :profile_type => profile.class.name) | ||
21 | - render :partial => 'followers/edit_circles_modal', :locals => { :circles => circles, :profile => profile } | 19 | + followed_profile = Profile.find(params[:followed_profile_id]) |
20 | + circles = Circle.where(:person => profile, :profile_type => followed_profile.class.name) | ||
21 | + render :partial => 'followers/edit_circles_modal', :locals => { :circles => circles, :followed_profile => followed_profile } | ||
22 | end | 22 | end |
23 | 23 | ||
24 | def update_category | 24 | def update_category |
@@ -27,7 +27,7 @@ class FollowersController < MyProfileController | @@ -27,7 +27,7 @@ class FollowersController < MyProfileController | ||
27 | selected_circles = params[:circles].map{ |circle_name, circle_id| Circle.find_by(:id => circle_id) }.select{ |c| c.present? } | 27 | selected_circles = params[:circles].map{ |circle_name, circle_id| Circle.find_by(:id => circle_id) }.select{ |c| c.present? } |
28 | 28 | ||
29 | if followed_profile | 29 | if followed_profile |
30 | - current_person.update_profile_circles(followed_profile, selected_circles) | 30 | + profile.update_profile_circles(followed_profile, selected_circles) |
31 | render :text => _("Circles of %s updated successfully") % followed_profile.name, :status => 200 | 31 | render :text => _("Circles of %s updated successfully") % followed_profile.name, :status => 200 |
32 | else | 32 | else |
33 | render :text => _("Error: No profile to follow."), :status => 400 | 33 | render :text => _("Error: No profile to follow."), :status => 400 |
app/controllers/public/profile_controller.rb
@@ -184,8 +184,10 @@ class ProfileController < PublicController | @@ -184,8 +184,10 @@ class ProfileController < PublicController | ||
184 | end | 184 | end |
185 | 185 | ||
186 | def unfollow | 186 | def unfollow |
187 | - if current_person.follows?(profile) | ||
188 | - current_person.unfollow(profile) | 187 | + follower = params[:follower_id].present? ? Person.find_by(id: params[:follower_id]) : current_person |
188 | + | ||
189 | + if follower && follower.follows?(profile) | ||
190 | + follower.unfollow(profile) | ||
189 | end | 191 | end |
190 | redirect_url = params["redirect_to"] ? params["redirect_to"] : profile.url | 192 | redirect_url = params["redirect_to"] ? params["redirect_to"] : profile.url |
191 | redirect_to redirect_url | 193 | redirect_to redirect_url |
app/views/blocks/profile_info_actions/_circles.html.erb
1 | <div class="circles" id='circles-list'> | 1 | <div class="circles" id='circles-list'> |
2 | 2 | ||
3 | <%= form_for :circles, :url => {:controller => 'profile', :action => 'follow'}, :html => {:id => "follow-circles-form"} do |f|%> | 3 | <%= form_for :circles, :url => {:controller => 'profile', :action => 'follow'}, :html => {:id => "follow-circles-form"} do |f|%> |
4 | - <%= render partial: "blocks/profile_info_actions/select_circles", :locals => {:circles => circles} %> | 4 | + <%= render partial: "blocks/profile_info_actions/select_circles", :locals => {:circles => circles, :followed_profile => profile, :follower => current_person } %> |
5 | 5 | ||
6 | <div id="circle-actions"> | 6 | <div id="circle-actions"> |
7 | <%= submit_button :ok, _("Follow") %> | 7 | <%= submit_button :ok, _("Follow") %> |
app/views/blocks/profile_info_actions/_select_circles.html.erb
1 | <div class="circles" id='circles-list'> | 1 | <div class="circles" id='circles-list'> |
2 | - <p><%= _("Select the circles for %s") % profile.name %></p> | 2 | + <p><%= _("Select the circles for %s") % followed_profile.name %></p> |
3 | <div id="circles-checkboxes"> | 3 | <div id="circles-checkboxes"> |
4 | <% circles.each do |circle| %> | 4 | <% circles.each do |circle| %> |
5 | <div class="circle"> | 5 | <div class="circle"> |
6 | - <%= labelled_check_box circle.name, "circles[#{circle.name}]", circle.id, profile.in_circle?(circle, current_person) %> | 6 | + <%= labelled_check_box circle.name, "circles[#{circle.name}]", circle.id, followed_profile.in_circle?(circle, follower) %> |
7 | </div> | 7 | </div> |
8 | <% end %> | 8 | <% end %> |
9 | </div> | 9 | </div> |
@@ -12,10 +12,10 @@ | @@ -12,10 +12,10 @@ | ||
12 | 12 | ||
13 | <div id="new-circle-form" style="display: none;"> | 13 | <div id="new-circle-form" style="display: none;"> |
14 | <%= labelled_text_field _('Circle name') , 'circle[name]', "",:id => 'text-field-name-new-circle'%> | 14 | <%= labelled_text_field _('Circle name') , 'circle[name]', "",:id => 'text-field-name-new-circle'%> |
15 | - <%= hidden_field_tag('circle[profile_type]', profile.class.name) %> | 15 | + <%= hidden_field_tag('circle[profile_type]', followed_profile.class.name) %> |
16 | 16 | ||
17 | <%= button_bar do %> | 17 | <%= button_bar do %> |
18 | - <%= button(:save, _('Create'), {:profile => profile.identifier, :controller => 'circles', :action => 'xhr_create'}, :id => "new-circle-submit") %> | 18 | + <%= button(:save, _('Create'), {:profile => follower.identifier, :controller => 'circles', :action => 'xhr_create'}, :id => "new-circle-submit") %> |
19 | <%= button(:cancel, _('Cancel'), '#', :id => "new-circle-cancel") %> | 19 | <%= button(:cancel, _('Cancel'), '#', :id => "new-circle-cancel") %> |
20 | <% end %> | 20 | <% end %> |
21 | </div> | 21 | </div> |
app/views/followers/_edit_circles_modal.html.erb
1 | <div class="circles" id='circles-list'> | 1 | <div class="circles" id='circles-list'> |
2 | <%= form_for :circles, :url => {:controller => 'followers', :action => 'update_category'}, :html => {:id => "follow-circles-form"} do |f|%> | 2 | <%= form_for :circles, :url => {:controller => 'followers', :action => 'update_category'}, :html => {:id => "follow-circles-form"} do |f|%> |
3 | - <%= render partial: "blocks/profile_info_actions/select_circles", :locals => {:circles => circles, :profile => profile} %> | 3 | + <%= render partial: "blocks/profile_info_actions/select_circles", :locals => {:circles => circles, :followed_profile => followed_profile, :follower => profile } %> |
4 | 4 | ||
5 | - <%= hidden_field_tag('followed_profile_id', profile.id) %> | 5 | + <%= hidden_field_tag('followed_profile_id', followed_profile.id) %> |
6 | 6 | ||
7 | <div id="circle-actions"> | 7 | <div id="circle-actions"> |
8 | <div id="actions-container"> | 8 | <div id="actions-container"> |
app/views/followers/_profile_list.html.erb
1 | <ul class="profile-list"> | 1 | <ul class="profile-list"> |
2 | - <% profiles.each do |profile| %> | 2 | + <% profiles.each do |followed_profile| %> |
3 | <li> | 3 | <li> |
4 | - <%= link_to_profile profile_image(profile) + tag('br') + profile.short_name, | ||
5 | - profile.identifier, :class => 'profile-link' %> | 4 | + <%= link_to_profile profile_image(followed_profile) + tag('br') + followed_profile.short_name, |
5 | + followed_profile.identifier, :class => 'profile-link' %> | ||
6 | <div class="controll"> | 6 | <div class="controll"> |
7 | <%= button_without_text :remove, content_tag('span',_('unfollow')), | 7 | <%= button_without_text :remove, content_tag('span',_('unfollow')), |
8 | - { :controller => "profile", :profile => profile.identifier , :action => 'unfollow', :redirect_to => url_for({:controller => "followers", :profile => user.identifier}) }, | ||
9 | - :title => _('remove') %> | 8 | + { :controller => "profile", :profile => followed_profile.identifier, :follower_id => profile.id, |
9 | + :action => 'unfollow', :redirect_to => url_for({:controller => "followers", :profile => profile.identifier}) }, | ||
10 | + :title => _('remove') %> | ||
10 | <%= modal_icon_button :edit, _('change category'), | 11 | <%= modal_icon_button :edit, _('change category'), |
11 | url_for(:controller => 'followers', :action => 'set_category_modal', | 12 | url_for(:controller => 'followers', :action => 'set_category_modal', |
12 | - :followed_profile_id => profile.id) %> | 13 | + :followed_profile_id => followed_profile.id) %> |
13 | </div><!-- end class="controll" --> | 14 | </div><!-- end class="controll" --> |
14 | </li> | 15 | </li> |
15 | <% end %> | 16 | <% end %> |