profile_controller.rb
2.52 KB
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
class ProfileController < PublicController
needs_profile
before_filter :check_access_to_profile
before_filter :login_required, :only => [:join, :refuse_join, :leave]
helper TagsHelper
def index
@tags = profile.article_tags
end
def tags
@tags = profile.article_tags
end
def tag
@tag = params[:id]
@tagged = profile.find_tagged_with(@tag)
end
def communities
if is_cache_expired?(profile.communities_cache_key(params))
@communities = profile.communities.paginate(:per_page => per_page, :page => params[:npage])
end
end
def enterprises
@enterprises = profile.enterprises
end
def friends
if is_cache_expired?(profile.friends_cache_key(params))
@friends = profile.friends.paginate(:per_page => per_page, :page => params[:npage])
end
end
def members
@members = profile.members
end
def favorite_enterprises
@favorite_enterprises = profile.favorite_enterprises
end
def sitemap
@articles = profile.top_level_articles
end
def join
@wizard = params[:wizard]
if request.post? && params[:confirmation]
profile.add_member(current_user.person)
flash[:notice] = _('%s administrator still needs to accept you as member.') % profile.name if profile.closed?
if @wizard
redirect_to :controller => 'search', :action => 'assets', :asset => 'communities', :wizard => true
else
redirect_back_or_default profile.url
end
else
store_location(request.referer)
if request.xhr?
render :layout => false
end
end
end
def leave
@wizard = params[:wizard]
if request.post? && params[:confirmation]
profile.remove_member(current_user.person)
if @wizard
redirect_to :controller => 'search', :action => 'assets', :asset => 'communities', :wizard => true
else
redirect_back_or_default profile.url
end
else
store_location(request.referer)
if request.xhr?
render :layout => false
end
end
end
def refuse_join
p = current_user.person
p.refused_communities << profile
p.save
redirect_to profile.url
end
def refuse_for_now
session[:no_asking] ||= []
session[:no_asking].shift if session[:no_asking].size >= 10
session[:no_asking] << profile.id
render :text => '', :layout => false
end
protected
def check_access_to_profile
unless profile.display_info_to?(user)
render :action => 'private_profile', :status => 403, :layout => false
end
end
def per_page
10
end
end