Skip to content

Commit 9f92255

Browse files
authored
Merge pull request #546 from alphagov/tidy-admin
Tidy up administration area
2 parents be6bfaa + ed181f6 commit 9f92255

52 files changed

Lines changed: 1253 additions & 199 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/assets/javascripts/admin.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
//= require jquery
22
//= require jquery_ujs
3+
//= require auto_logout
34
//= require autosubmit_selects
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
(function ($) {
2+
'use strict';
3+
4+
$.fn.autoLogout = function() {
5+
var $html = this;
6+
var $continue = $html.find('#logout-warning-continue');
7+
var $logout = $html.find('#logout-warning-logout');
8+
var INTERVAL = 10000;
9+
var WARNING_TIME = 120;
10+
11+
var AutoLogout = {
12+
continueClicked: function(e) {
13+
$.getJSON('/admin/continue.json', AutoLogout.processContinue);
14+
},
15+
16+
logoutClicked: function(e) {
17+
window.location = '/admin/logout';
18+
},
19+
20+
processContinue: function(data) {
21+
$html.hide();
22+
},
23+
24+
processStatus: function(data) {
25+
if (data.time_remaining == 0) {
26+
window.location = '/admin/logout';
27+
} else if (data.time_remaining <= WARNING_TIME) {
28+
$html.show();
29+
} else {
30+
$html.hide();
31+
}
32+
},
33+
34+
checkStatus: function() {
35+
$.getJSON('/admin/status.json', AutoLogout.processStatus);
36+
}
37+
};
38+
39+
$continue.on('click', AutoLogout.continueClicked);
40+
$logout.on('click', AutoLogout.logoutClicked);
41+
42+
window.setInterval(AutoLogout.checkStatus, INTERVAL);
43+
}
44+
})(jQuery);
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#logout-warning {
2+
width: 100%;
3+
height: 100%;
4+
position: fixed;
5+
top: 0;
6+
left: 0;
7+
background-color: rgba(0, 0, 0, 0.5);
8+
display: none;
9+
10+
.logout-warning-modal {
11+
background-color: #FFF;
12+
margin: 10% auto 0;
13+
width: 40%;
14+
padding: 24px;
15+
box-shadow: 0px 5px 20px 10px rgba(0, 0, 0, 0.3);
16+
}
17+
18+
.logout-warning-message {
19+
margin: 0 0 24px 0;
20+
}
21+
22+
.logout-warning-actions {
23+
margin: 0;
24+
25+
button {
26+
font-size: 16px;
27+
margin-bottom: 2px;
28+
}
29+
}
30+
}

app/assets/stylesheets/petitions/admin/views/_shared.scss

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@
6363
margin-top: $gutter;
6464
}
6565

66+
.mandatory {
67+
color: $red-50;
68+
font-weight: bold;
69+
font-size: 24px;
70+
}
71+
72+
.form-label-inline {
73+
display: inline-block;
74+
}
75+
6676
.button_to {
6777
display: inline-block;
6878

app/assets/stylesheets/site-admin.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
@import "petitions/admin/meta";
4646
@import "petitions/admin/actions";
4747
@import "petitions/admin/list";
48+
@import "petitions/admin/logout";
4849
@import "petitions/admin/tables";
4950

5051
// Petition admin views
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
class Admin::AdminController < ApplicationController
2-
include Authentication
2+
include Authentication, FlashI18n, FlashRender
33

4-
before_action :require_admin_and_check_for_password_change
54
before_action :do_not_cache
65

76
layout 'admin'
87

98
def index
109
end
11-
1210
end

app/controllers/admin/admin_users_controller.rb

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,58 @@
11
class Admin::AdminUsersController < Admin::AdminController
22
before_filter :require_sysadmin
3+
before_filter :find_user, only: %i[edit update destroy]
4+
5+
rescue_from AdminUser::CannotDeleteCurrentUser do
6+
redirect_to admin_admin_users_url, alert: :user_is_current_user
7+
end
8+
9+
rescue_from AdminUser::MustBeAtLeastOneAdminUser do
10+
redirect_to admin_admin_users_url, alert: :user_count_is_too_low
11+
end
312

413
def index
5-
@users = AdminUser.by_name.paginate(:page => params[:page], :per_page => 50)
14+
@users = AdminUser.by_name.paginate(page: params[:page], per_page: 50)
615
end
716

817
def new
918
@user = AdminUser.new
1019
end
1120

1221
def create
13-
@user = AdminUser.create(admin_user_params)
22+
@user = AdminUser.new(admin_user_params)
23+
1424
if @user.save
15-
flash[:notice] = "User was successfully created"
16-
redirect_to admin_admin_users_url
25+
redirect_to admin_admin_users_url, notice: :user_created
1726
else
18-
render :action => 'new'
27+
render :new
1928
end
2029
end
2130

2231
def edit
23-
@user = AdminUser.find(params[:id])
2432
end
2533

2634
def update
27-
@user = AdminUser.find(params[:id])
28-
if @user.update_attributes(admin_user_params)
29-
flash[:notice] = "User was successfully updated"
30-
redirect_to admin_admin_users_url
35+
if @user.update(admin_user_params)
36+
redirect_to admin_admin_users_url, notice: :user_updated
3137
else
32-
render :action => 'edit'
38+
render :edit
3339
end
3440
end
3541

3642
def destroy
37-
@user = AdminUser.find(params[:id])
38-
39-
# only destroy if user is not the logged in user and there are at least 2 users
40-
if @user == current_user
41-
flash[:error] = "You are not allowed to delete yourself!"
42-
elsif AdminUser.count < 2
43-
flash[:error] = "There needs to be at least 1 admin user"
43+
if @user.destroy(current_user: current_user)
44+
redirect_to admin_admin_users_url, notice: :user_deleted
4445
else
45-
@user.destroy
46+
redirect_to admin_admin_users_url, alert: :user_not_deleted
4647
end
47-
redirect_to admin_admin_users_url
4848
end
4949

5050
protected
5151

52+
def find_user
53+
@user = AdminUser.find(params[:id])
54+
end
55+
5256
def admin_user_params
5357
params.
5458
require(:admin_user).

app/controllers/admin/debate_outcomes_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ def update
1515
if @debate_outcome.update(debate_outcome_params)
1616
if send_email_to_petitioners?
1717
EmailDebateOutcomesJob.run_later_tonight(petition: @petition)
18-
message = 'Email will be sent overnight'
18+
message = :email_sent_overnight
1919
else
20-
message = 'Updated debate outcome successfully'
20+
message = :debate_outcome_updated
2121
end
2222

2323
redirect_to [:admin, @petition], notice: message

app/controllers/admin/government_response_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ def update
1515
if @government_response.update(government_response_params)
1616
if send_email_to_petitioners?
1717
EmailThresholdResponseJob.run_later_tonight(petition: @petition)
18-
message = 'Email will be sent overnight'
18+
message = :email_sent_overnight
1919
else
20-
message = 'Updated government response successfully'
20+
message = :government_response_updated
2121
end
2222

2323
redirect_to [:admin, @petition], notice: message

app/controllers/admin/invalidations_controller.rb

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def new
1818

1919
def create
2020
if @invalidation.save
21-
redirect_to admin_invalidations_url, notice: "Invalidation created successfully"
21+
redirect_to admin_invalidations_url, notice: :invalidation_created
2222
else
2323
respond_to do |format|
2424
format.html { render :new }
@@ -32,69 +32,69 @@ def edit
3232
format.html
3333
end
3434
else
35-
redirect_to_index_url notice: "Can't edit invalidations that aren't pending"
35+
redirect_to_index_url notice: :invalidation_cant_be_edited
3636
end
3737
end
3838

3939
def update
4040
if @invalidation.pending?
4141
if @invalidation.update(invalidation_params)
42-
redirect_to admin_invalidations_url, notice: "Invalidation updated successfully"
42+
redirect_to admin_invalidations_url, notice: :invalidation_updated
4343
else
4444
respond_to do |format|
4545
format.html { render :edit }
4646
end
4747
end
4848
else
49-
redirect_to_index_url notice: "Can't edit invalidations that aren't pending"
49+
redirect_to_index_url notice: :invalidation_cant_be_edited
5050
end
5151
end
5252

5353
def destroy
5454
if @invalidation.started?
55-
redirect_to_index_url notice: "Can't remove invalidations that have started"
55+
redirect_to_index_url notice: :invalidation_cant_be_removed
5656
else
5757
if @invalidation.destroy
58-
redirect_to_index_url notice: "Invalidation removed successfully"
58+
redirect_to_index_url notice: :invalidation_removed
5959
else
60-
redirect_to_index_url alert: "Invalidation could not be removed - please contact support"
60+
redirect_to_index_url alert: :invalidation_not_removed
6161
end
6262
end
6363
end
6464

6565
def cancel
6666
if @invalidation.completed?
67-
redirect_to_index_url notice: "Can't cancel invalidations that have completed"
67+
redirect_to_index_url notice: :invalidation_cant_be_cancelled
6868
else
6969
if @invalidation.cancel!
70-
redirect_to_index_url notice: "Invalidation cancelled successfully"
70+
redirect_to_index_url notice: :invalidation_cancelled
7171
else
72-
redirect_to_index_url alert: "Invalidation could not be cancelled - please contact support"
72+
redirect_to_index_url alert: :invalidation_not_cancelled
7373
end
7474
end
7575
end
7676

7777
def count
7878
if @invalidation.pending?
7979
if @invalidation.count!
80-
redirect_to_index_url notice: "Counted the matching signatures for invalidation #{@invalidation.summary.inspect}"
80+
redirect_to_index_url notice: [:invalidation_counted, summary: @invalidation.summary.inspect]
8181
else
82-
redirect_to_index_url alert: "Invalidation could not be counted - please contact support"
82+
redirect_to_index_url alert: :invalidation_not_counted
8383
end
8484
else
85-
redirect_to_index_url notice: "Can't count invalidations that aren't pending"
85+
redirect_to_index_url notice: :invalidation_cant_be_counted
8686
end
8787
end
8888

8989
def start
9090
if @invalidation.pending?
9191
if @invalidation.start!
92-
redirect_to_index_url notice: "Enqueued the invalidation #{@invalidation.summary.inspect}"
92+
redirect_to_index_url notice: [:invalidation_started, summary: @invalidation.summary.inspect]
9393
else
94-
redirect_to_index_url alert: "Invalidation could not be enqueued - please contact support"
94+
redirect_to_index_url alert: :invalidation_not_started
9595
end
9696
else
97-
redirect_to_index_url notice: "Can't start invalidations that aren't pending"
97+
redirect_to_index_url notice: :invalidation_cant_be_started
9898
end
9999
end
100100

0 commit comments

Comments
 (0)