Description:
assigns all users from on contest list to another
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r298:e6c044028e60 - - 2 files changed: 40 inserted, 15 deleted
@@ -148,35 +148,45 | |||
|
148 | 148 | password = random_password |
|
149 | 149 | user.password = password |
|
150 | 150 | user.password_confirmation = password |
|
151 | 151 | user.save |
|
152 | 152 | end |
|
153 | 153 | @changed = true |
|
154 | 154 | end |
|
155 | 155 | end |
|
156 | 156 | |
|
157 | 157 | # contest management |
|
158 | 158 | |
|
159 | 159 | def contests |
|
160 | - if params[:id]!='none' | |
|
161 |
- |
|
|
162 | - else | |
|
163 | - @contest = nil | |
|
160 | + @contest, @users = find_contest_and_user_from_contest_id(params[:id]) | |
|
161 | + @contests = Contest.enabled | |
|
162 | + end | |
|
163 | + | |
|
164 | + def assign_from_list | |
|
165 | + contest_id = params[:users_contest_id] | |
|
166 | + org_contest, users = find_contest_and_user_from_contest_id(contest_id) | |
|
167 | + contest = Contest.find(params[:new_contest][:id]) | |
|
168 | + if !contest | |
|
169 | + flash[:notice] = 'Error: no contest' | |
|
170 | + redirect_to :action => 'contests', :id =>contest_id | |
|
164 | 171 | end |
|
165 | - if @contest | |
|
166 | - @users = @contest.users | |
|
167 | - else | |
|
168 | - @users = User.find_users_with_no_contest | |
|
172 | + | |
|
173 | + note = [] | |
|
174 | + users.each do |u| | |
|
175 | + u.contests = [contest] | |
|
176 | + note << u.login | |
|
169 | 177 | end |
|
170 | - @contests = Contest.enabled | |
|
178 | + flash[:notice] = 'User(s) ' + note.join(', ') + | |
|
179 | + " were successfully reassigned to #{contest.title}." | |
|
180 | + redirect_to :action => 'contests', :id =>contest.id | |
|
171 | 181 | end |
|
172 | 182 | |
|
173 | 183 | def add_to_contest |
|
174 | 184 | user = User.find(params[:id]) |
|
175 | 185 | contest = Contest.find(params[:contest_id]) |
|
176 | 186 | if user and contest |
|
177 | 187 | user.contests << contest |
|
178 | 188 | end |
|
179 | 189 | redirect_to :action => 'list' |
|
180 | 190 | end |
|
181 | 191 | |
|
182 | 192 | def remove_from_contest |
@@ -370,13 +380,27 | |||
|
370 | 380 | subject = t('contest.notification.email_subject', { |
|
371 | 381 | :contest_title_name => contest_title_name, |
|
372 | 382 | :contest_name => contest_name }) |
|
373 | 383 | body = t('contest.notification.email_body', { |
|
374 | 384 | :full_name => user.full_name, |
|
375 | 385 | :contest_title_name => contest_title_name, |
|
376 | 386 | :contest_name => contest.name, |
|
377 | 387 | }) |
|
378 | 388 | |
|
379 | 389 | logger.info body |
|
380 | 390 | send_mail(user.email, subject, body) |
|
381 | 391 | end |
|
392 | + | |
|
393 | + def find_contest_and_user_from_contest_id(id) | |
|
394 | + if id!='none' | |
|
395 | + @contest = Contest.find(id) | |
|
396 | + else | |
|
397 | + @contest = nil | |
|
398 | + end | |
|
399 | + if @contest | |
|
400 | + @users = @contest.users | |
|
401 | + else | |
|
402 | + @users = User.find_users_with_no_contest | |
|
403 | + end | |
|
404 | + return [@contest, @users] | |
|
405 | + end | |
|
382 | 406 | end |
@@ -5,24 +5,31 | |||
|
5 | 5 | |
|
6 | 6 | <div class="submitbox"> |
|
7 | 7 | <%= link_to '[View all users]', :action => 'list' %> |
|
8 | 8 | <% if Configuration.multicontests? %> |
|
9 | 9 | <%= link_to '[Manage bulk users in contests]', :action => 'contest_management' %> |
|
10 | 10 | <br/> |
|
11 | 11 | View users in: |
|
12 | 12 | <% @contests.each do |contest| %> |
|
13 | 13 | <%= link_to "[#{contest.name}]", :action => 'contests', :id => contest.id %> |
|
14 | 14 | <% end %> |
|
15 | 15 | <%= link_to "[no contest]", :action => 'contests', :id => 'none' %> |
|
16 | 16 | <% end %> |
|
17 | + <br/> | |
|
18 | + <% form_tag :action => 'assign_from_list' do %> | |
|
19 | + <%= hidden_field_tag 'users_contest_id', (@contest ? @contest.id : 'none') %> | |
|
20 | + Assign all to | |
|
21 | + <%= select("new_contest","id",Contest.all.collect {|c| [c.title, c.id]}) %> | |
|
22 | + <%= submit_tag "Assign", :confirm => 'Are you sure?' %> | |
|
23 | + <% end %> | |
|
17 | 24 | </div> |
|
18 | 25 | |
|
19 | 26 | <table class="info"> |
|
20 | 27 | <tr class="info-head"> |
|
21 | 28 | <th>Login</th> |
|
22 | 29 | <th>Full name</th> |
|
23 | 30 | <th>Email</th> |
|
24 | 31 | <th>Activated?</th> |
|
25 | 32 | <th></th> |
|
26 | 33 | <th></th> |
|
27 | 34 | <th></th> |
|
28 | 35 | <% if Configuration.multicontests? %> |
@@ -48,18 +55,12 | |||
|
48 | 55 | </td> |
|
49 | 56 | <td> |
|
50 | 57 | <% @contests.each do |contest| %> |
|
51 | 58 | <% if not user.contests.all.find {|c| c.id==contest.id } %> |
|
52 | 59 | <%= contest.name %> [<%= link_to '+', :action => 'add_to_contest', :id => user.id, :contest_id => contest.id %>] |
|
53 | 60 | <% end %> |
|
54 | 61 | <% end %> |
|
55 | 62 | </td> |
|
56 | 63 | <% end %> |
|
57 | 64 | </tr> |
|
58 | 65 | <% end %> |
|
59 | 66 | </table> |
|
60 | - | |
|
61 | - | |
|
62 | - <br /> | |
|
63 | - | |
|
64 | - <%= link_to 'New user', :action => 'new' %> | |
|
65 | - <%= link_to 'New list of users', :action => 'new_list' %> |
You need to be logged in to leave comments.
Login now