cirandas.net

ref: master

app/controllers/my_profile/followers_controller.rb


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class FollowersController < MyProfileController

  before_action :only_for_person, :only => :index
  before_action :accept_only_post, :only => [:update_category]

  def index
    @followed_people = profile.followed_profiles.order(:type)
    @profile_types = {_('All profiles') => nil}.merge(Circle.profile_types).to_a

    if params['filter'].present?
      @followed_people = @followed_people.where(:type => params['filter'])
      @active_filter = params['filter']
    end

    @followed_people = @followed_people.paginate(:per_page => 15, :page => params[:npage])
  end

  def set_category_modal
    followed_profile = Profile.find(params[:followed_profile_id])
    circles = Circle.where(:person => profile, :profile_type => followed_profile.class.name)
    render :partial => 'followers/edit_circles_modal', :locals => { :circles => circles, :followed_profile => followed_profile }
  end

  def update_category
    followed_profile = Profile.find_by(:id => params["followed_profile_id"])

    selected_circles = params[:circles].map{ |circle_name, circle_id| Circle.find_by(:id => circle_id) }.select{ |c| c.present? }

    if followed_profile
      profile.update_profile_circles(followed_profile, selected_circles)
      render :text => _("Circles of %s updated successfully") % followed_profile.name, :status => 200
    else
      render :text => _("Error: No profile to follow."), :status => 400
    end
  end

  protected

  def only_for_person
    render_not_found unless profile.person?
  end

end