1
1
class NetworksController < ApplicationController
2
2
include ProtipsHelper
3
- before_action :lookup_network , only : [ :show , :members , :join , :leave , :destroy , :add_tag , :remove_tag , :update_tags , :mayor , :expert , :tag , :current_mayor ]
4
- before_action :access_required , only : [ :new , :create , :edit , :update , :destroy ]
5
- before_action :require_admin! , only : [ :new , :create , :edit , :update , :destroy , :add_tag , :remove_tag , :update_tags ]
6
- before_action :limit_results , only : [ :index , :members , :show , :tag ]
7
- before_action :set_search_params , only : [ :show , :mayor , :expert , :expert , :tag ]
8
- before_action :redirect_to_search , only : [ :show , :tag ]
3
+ before_action :lookup_network , only : [ :show , :join , :leave ]
4
+ before_action :limit_results , only : [ :index , :show ]
5
+ before_action :set_search_params , only : [ :show ]
6
+ before_action :redirect_to_search , only : [ :show ]
9
7
respond_to :html , :json , :js
10
8
cache_sweeper :follow_sweeper , only : [ :join , :leave ]
11
9
12
- def new
13
- @network = Network . new
14
- end
15
-
16
- def create
17
- @network = Network . new ( params [ :network ] . permit ( :name ) )
18
- respond_to do |format |
19
- if @network . save
20
- format . html { redirect_to networks_path , notice : "#{ @network . name } Network was successfully created." }
21
- else
22
- format . html { render action : 'new' }
23
- end
24
- end
25
- end
26
-
27
10
def index
28
11
@index_networks_params = params . permit ( :sort , :action )
29
12
@@ -35,83 +18,6 @@ def index
35
18
end
36
19
end
37
20
38
- def members
39
- render :show
40
- end
41
-
42
- def show
43
- @protips = [ ]
44
- @topics = @network . tag_list
45
-
46
- if ( params [ :sort ] . blank? && params [ :filter ] . blank? ) || params [ :sort ] == 'upvotes'
47
- @protips = @network . most_upvoted_protips ( @per_page , @page )
48
- @query = 'sort:upvotes desc'
49
- params [ :sort ] = 'upvotes'
50
- elsif params [ :sort ] == 'new'
51
- @protips = @network . new_protips ( @per_page , @page )
52
- @query = 'sort:created_at desc'
53
- elsif params [ :filter ] == 'featured'
54
- @protips = @network . featured_protips ( @per_page , @page )
55
- @query = 'sort:featured desc'
56
- elsif params [ :filter ] == 'flagged'
57
- ensure_admin!
58
- @protips = @network . flagged_protips ( @per_page , @page )
59
- @query = 'sort:flagged desc'
60
- elsif params [ :sort ] == 'trending'
61
- @protips = @network . highest_scored_protips ( @per_page , @page , :trending_score )
62
- @query = 'sort:trending_score desc'
63
- elsif params [ :sort ] == 'hn'
64
- @protips = @network . highest_scored_protips ( @per_page , @page , :trending_hn_score )
65
- @query = 'sort:trending_hn_score desc'
66
- elsif params [ :sort ] == 'popular'
67
- @protips = @network . highest_scored_protips ( @per_page , @page , :popular_score )
68
- @query = 'sort:popular_score desc'
69
- end
70
- end
71
-
72
- def tag
73
- redirect_to network_path ( @network . slug ) unless @network . nil? || params [ :id ]
74
- @networks = [ @network ] unless @network . nil?
75
- tags_array = params [ :tags ] . nil? ? [ ] : params [ :tags ] . split ( '/' )
76
- @query = 'sort:score desc'
77
- @protips = Protip . search_trending_by_topic_tags ( @query , tags_array , @page , @per_page )
78
- @topics = tags_array
79
- @topic = tags_array . join ( ' + ' )
80
- @topic_user = nil
81
- @networks = tags_array . flat_map { |tag | Network . networks_for_tag ( tag ) } . uniq if @networks . nil?
82
- end
83
-
84
- def mayor
85
- @protips = @network . mayor_protips ( @per_page , @page )
86
- render :show
87
- end
88
-
89
- def expert
90
- @protips = @network . expert_protips ( @per_page , @page )
91
- render :show
92
- end
93
-
94
- def featured
95
- featured_networks = Network . featured
96
- if featured_networks . any?
97
- @networks = featured_networks
98
- else
99
- @networks = Network . most_protips . first ( 7 )
100
- end
101
- render :index
102
- end
103
-
104
- def user
105
- redirect_to_signup_if_unauthenticated ( request . referer , 'You must login/signup to view your networks' ) do
106
- user = current_user
107
- user = User . find_by_username ( params [ :username ] ) if is_admin?
108
- @networks = user . networks
109
- @user = user
110
- @index_networks_params = params . permit ( :sort , :action )
111
- render :index
112
- end
113
- end
114
-
115
21
def join
116
22
redirect_to_signup_if_unauthenticated ( request . referer , 'You must login/signup to join a network' ) do
117
23
return leave if current_user . member_of? ( @network )
@@ -132,62 +38,6 @@ def leave
132
38
end
133
39
end
134
40
135
- def destroy
136
- @network . destroy
137
- respond_to do |format |
138
- format . json { head :ok }
139
- end
140
- end
141
-
142
- def add_tag
143
- tag = params [ :tag ]
144
- @network . tag_list . add ( tag )
145
-
146
- respond_to do |format |
147
- if @network . save
148
- format . html { redirect_to network_path ( @network . slug ) }
149
- format . json { head :ok }
150
- else
151
- format . html { redirect_to network_path ( @network . slug ) }
152
- format . json { head :unprocessable_entity }
153
- end
154
- end
155
- end
156
-
157
- def remove_tag
158
- tag = params [ :tag ]
159
- @network . tag_list . remove ( tag )
160
-
161
- respond_to do |format |
162
- if @network . save
163
- format . html { redirect_to network_path ( @network . slug ) }
164
- format . json { head :ok }
165
- else
166
- format . html { redirect_to network_path ( @network . slug ) }
167
- format . json { head :unprocessable_entity }
168
- end
169
- end
170
- end
171
-
172
- def update_tags
173
- tags = params [ :tags ] [ :tags ]
174
- @network . tag_list = tags . split ( ',' ) . map ( &:strip ) . select { |tag | Tag . exists? ( name : tag ) }
175
-
176
- respond_to do |format |
177
- if @network . save
178
- format . html { redirect_to network_path ( @network . slug ) }
179
- format . json { head :ok }
180
- else
181
- format . html { redirect_to network_path ( @network . slug ) }
182
- format . json { head :unprocessable_entity }
183
- end
184
- end
185
- end
186
-
187
- def current_mayor
188
- @mayor = @network . try ( :mayor )
189
- end
190
-
191
41
private
192
42
193
43
def lookup_network
@@ -206,14 +56,6 @@ def set_search_params
206
56
@per_page = params [ :per_page ] || 15
207
57
end
208
58
209
- def featured_from_env
210
- ENV [ 'FEATURED_NETWORKS' ] . split ( ',' ) . map ( &:strip ) unless ENV [ 'FEATURED_NETWORKS' ] . nil?
211
- end
212
-
213
- def ensure_admin!
214
- redirect_to networks_path unless is_admin?
215
- end
216
-
217
59
def redirect_to_search
218
60
tags = @network . try ( :slug ) . try ( :split ) || ( params [ :tags ] && params [ :tags ] . split ( '/' ) ) || [ ]
219
61
tags = tags . map { |tag | "##{ tag } " } . join ( ' ' )
0 commit comments