cirandas.net

ref: master

app/controllers/my_profile/memberships_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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
class MembershipsController < MyProfileController

  protect 'manage_memberships', :profile
  helper CustomFieldsHelper

  def index
    @roles = environment.roles.select do |role|
      ra = profile.role_assignments.find_by(role_id: role.id)
      ra.present? && ra.resource_type == 'Profile'
    end
    @filter = params[:filter_type].to_i
    begin
      @memberships = @filter.zero? ? profile.memberships : profile.memberships_by_role(environment.roles.find(@filter))
    rescue ActiveRecord::RecordNotFound
      @memberships = []
    end
  end

  def new_community
    @community = Community.new(params[:community])
    custom_values = params[:profile_data][:custom_values] if (params[:profile_data] && params[:profile_data][:custom_values])
    @community.custom_values = custom_values
    @community.environment = environment
    @back_to = params[:back_to] || url_for(:action => 'index')
    @kinds = environment.kinds.where(:type => 'Community')
    if request.post? && @community.valid?
      begin
        # Community was created
        @community = Community.create_after_moderation(user, params[:community].merge({:environment => environment, :custom_values => custom_values}))
        @community.reload
        redirect_to :action => 'welcome', :community_id => @community.id, :back_to => @back_to
      rescue ActiveRecord::RecordNotFound
        # Community pending approval
        session[:notice] = _('Your new community creation request will be evaluated by an administrator. You will be notified.')
        redirect_to @back_to
      end
      return
    end
  end

  def welcome
    @community = Community.find(params[:community_id])
    @back_to = params[:back_to]
  end

  def suggest
    @suggestions = profile.suggested_profiles.of_community.enabled.includes(:suggestion).limit(per_page)
  end

  def remove_suggestion
    @community = profile.suggested_communities.find_by(identifier: params[:id])
    custom_per_page = params[:per_page] || per_page
    redirect_to :action => 'suggest' unless @community
    if @community && request.post?
      profile.remove_suggestion(@community)
      @suggestions = profile.suggested_profiles.of_community.enabled.includes(:suggestion).limit(custom_per_page)
      render :partial => 'shared/profile_suggestions_list', :locals => { :suggestions => @suggestions, :collection => :communities_suggestions, :per_page => custom_per_page}
    end
  end

  def connections
    @suggestion = profile.suggested_profiles.of_community.enabled.find_by(suggestion_id: params[:id])
    if @suggestion
      @tags = @suggestion.tag_connections
      @profiles = @suggestion.profile_connections
    else
      redirect_to :action => 'suggest'
    end
  end

  protected

  def per_page
    12
  end

end