admin global nav
This commit is contained in:
parent
aeef75bf8b
commit
5398a8ea8b
17
app/assets/stylesheets/molecules/_nav.scss
Normal file
17
app/assets/stylesheets/molecules/_nav.scss
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
nav {
|
||||||
|
margin: 15px 0;
|
||||||
|
padding: 0;
|
||||||
|
text-align: right;
|
||||||
|
|
||||||
|
a,
|
||||||
|
a:visited {
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 15px;
|
||||||
|
margin: 0;
|
||||||
|
text-transform: uppercase;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: $gray-lighter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -5,6 +5,10 @@ header {
|
|||||||
&.no-progressbar {
|
&.no-progressbar {
|
||||||
padding-top: 52px;
|
padding-top: 52px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.no-progressbar.admin {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.page-title {
|
.page-title {
|
||||||
@include omega();
|
@include omega();
|
||||||
|
@ -4,7 +4,7 @@ module Admin
|
|||||||
before_action :collect_quizzes, except: [:login, :auth]
|
before_action :collect_quizzes, except: [:login, :auth]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@candidates = policy_scope current_recruiter.candidates
|
@candidates = policy_scope Candidate.order(:name)
|
||||||
end
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@ -15,7 +15,7 @@ module Admin
|
|||||||
|
|
||||||
def create
|
def create
|
||||||
authorize Candidate
|
authorize Candidate
|
||||||
@candidate = Candidate.create(candidate_params.merge(recruiter_id: current_recruiter.id))
|
@candidate = Candidate.create(candidate_params.merge(recruiter_id: current_user.id))
|
||||||
|
|
||||||
if @candidate.persisted?
|
if @candidate.persisted?
|
||||||
send_notifications @candidate
|
send_notifications @candidate
|
||||||
|
@ -3,8 +3,25 @@ module Admin
|
|||||||
class DashboardController < AdminController
|
class DashboardController < AdminController
|
||||||
def show
|
def show
|
||||||
authorize :dashboard
|
authorize :dashboard
|
||||||
@quizzes = policy_scope Quiz.includes(:questions).all
|
send "redirect_for_#{current_user.role}"
|
||||||
@users = policy_scope User.order(:role, :name)
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def redirect_for_admin
|
||||||
|
redirect_to admin_users_url
|
||||||
|
end
|
||||||
|
|
||||||
|
def redirect_for_manager
|
||||||
|
redirect_to admin_quizzes_url
|
||||||
|
end
|
||||||
|
|
||||||
|
def redirect_for_reviewer
|
||||||
|
redirect_to admin_results_url
|
||||||
|
end
|
||||||
|
|
||||||
|
def redirect_for_recruiter
|
||||||
|
redirect_to admin_candidates_url
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -4,16 +4,6 @@ class ApplicationController < ActionController::Base
|
|||||||
|
|
||||||
add_flash_types :warning, :success
|
add_flash_types :warning, :success
|
||||||
|
|
||||||
def current_recruiter
|
|
||||||
user_parms = { id: session[:user], role: %w(admin recruiter) }
|
|
||||||
@current_recruiter ||= User.find_by(user_parms) if session[:user]
|
|
||||||
end
|
|
||||||
|
|
||||||
def current_reviewer
|
|
||||||
user_parms = { id: session[:user], role: %w(admin reviewer) }
|
|
||||||
@current_reviewer ||= User.find_by(user_parms) if session[:user]
|
|
||||||
end
|
|
||||||
|
|
||||||
def current_candidate
|
def current_candidate
|
||||||
@current_candidate ||= Candidate.find_by(test_hash: session[:test_id]) if session[:test_id]
|
@current_candidate ||= Candidate.find_by(test_hash: session[:test_id]) if session[:test_id]
|
||||||
end
|
end
|
||||||
@ -29,14 +19,6 @@ class ApplicationController < ActionController::Base
|
|||||||
params.require(:auth).permit(:email, :password)
|
params.require(:auth).permit(:email, :password)
|
||||||
end
|
end
|
||||||
|
|
||||||
def authorize_recruiter
|
|
||||||
redirect_to recruiter_login_path unless current_recruiter
|
|
||||||
end
|
|
||||||
|
|
||||||
def authorize_reviewer
|
|
||||||
redirect_to review_login_path unless current_reviewer
|
|
||||||
end
|
|
||||||
|
|
||||||
def authorize_candidate
|
def authorize_candidate
|
||||||
redirect_to login_path unless current_candidate
|
redirect_to login_path unless current_candidate
|
||||||
end
|
end
|
||||||
|
9
app/views/admin/_nav.html.erb
Normal file
9
app/views/admin/_nav.html.erb
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<nav>
|
||||||
|
<%= link_to("Users", admin_users_url) if policy(User).index? %>
|
||||||
|
<% #= link_to("Departments", admin_departments_url) if policy(Department).index? %>
|
||||||
|
<%= link_to("Quizzes", admin_quizzes_url) if policy(Quiz).index? %>
|
||||||
|
<%= link_to("Candidates", admin_candidates_url) if policy(Candidate).index? %>
|
||||||
|
<%= link_to("Results", admin_results_url) if policy(Quiz).index? %>
|
||||||
|
<%= link_to("Profile", admin_profile_url) %>
|
||||||
|
<%= link_to("Logout", admin_logout_url) %>
|
||||||
|
</nav>
|
@ -1,9 +1,10 @@
|
|||||||
|
<%
|
||||||
|
content_for :section_title, "Candidates"
|
||||||
|
%>
|
||||||
<main class="summary_tpl">
|
<main class="summary_tpl">
|
||||||
<h1>Candidates</h1>
|
|
||||||
|
|
||||||
<%= link_to(admin_new_candidate_path, { class: 'secondary-btn' }) do %>
|
<%= link_to(admin_new_candidate_path, { class: 'secondary-btn' }) do %>
|
||||||
<button>Create New Candidate</button>
|
<button>Create New Candidate</button>
|
||||||
<% end %>
|
<% end if policy(User).create? %>
|
||||||
|
|
||||||
<table cellspacing="0" cellpadding="0">
|
<table cellspacing="0" cellpadding="0">
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
<%
|
|
||||||
content_for :section_title, "Admin Dashboard"
|
|
||||||
%>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
## Admin
|
|
||||||
Users | Dept/Unit | Quizzes | Candidates | Results | Profile | Logout
|
|
||||||
|
|
||||||
## Manager
|
|
||||||
Quizzes | Results | Profile | Logout
|
|
||||||
|
|
||||||
## Recruiter
|
|
||||||
Results | Profile | Logout
|
|
||||||
|
|
||||||
## Reviewer
|
|
||||||
Candidates | Profile | Logout
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<% if policy(Quiz).index? %>
|
|
||||||
<section>
|
|
||||||
<h1>Quizzes</h1>
|
|
||||||
<%= render partial: 'admin/quiz/table_list', locals: { quizzes: @quizzes } %>
|
|
||||||
<%= link_to('New Quiz', admin_new_quiz_path, { class: 'btn' }) %>
|
|
||||||
</section>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<% if policy(User).index? %>
|
|
||||||
<section>
|
|
||||||
<h1>Users</h1>
|
|
||||||
<%= render partial: 'admin/user/table_list', locals: { users: @users } %>
|
|
||||||
<%= link_to('New User', admin_new_user_path, { class: 'btn' }) %>
|
|
||||||
</section>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
|||||||
<td><%= quiz.dept %></td>
|
<td><%= quiz.dept %></td>
|
||||||
<td><%= quiz.unit %></td>
|
<td><%= quiz.unit %></td>
|
||||||
<td><%= quiz.questions.count %></td>
|
<td><%= quiz.questions.count %></td>
|
||||||
<td><%= link_to 'edit', admin_edit_quiz_path(quiz.to_i), { class: 'btn tertiary-btn' } %></td>
|
<td><%= link_to 'edit', admin_edit_quiz_path(quiz.to_i), { class: 'btn tertiary-btn' } if policy(quiz).edit? %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</table>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
|
<%
|
||||||
|
content_for :section_title, "Completed Tests"
|
||||||
|
%>
|
||||||
<main class="summary_tpl">
|
<main class="summary_tpl">
|
||||||
<h1>Completed Tests</h1>
|
|
||||||
|
|
||||||
<table cellspacing="0" cellpadding="0">
|
<table cellspacing="0" cellpadding="0">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Test ID</th>
|
<th>Test ID</th>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<td><%= link_to user.name, admin_user_path(user.to_i) %></td>
|
<td><%= link_to user.name, admin_user_path(user.to_i) %></td>
|
||||||
<td><%= mail_to(user.email) %></td>
|
<td><%= mail_to(user.email) %></td>
|
||||||
<td><%= user.role %></td>
|
<td><%= user.role %></td>
|
||||||
<td><%= link_to 'edit', admin_edit_user_path(user.to_i), { class: 'btn tertiary-btn' } %></td>
|
<td><%= link_to 'edit', admin_edit_user_path(user.to_i), { class: 'btn tertiary-btn' } if policy(user).edit? %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</table>
|
||||||
|
@ -4,4 +4,4 @@
|
|||||||
|
|
||||||
<h1>Users</h1>
|
<h1>Users</h1>
|
||||||
<%= render partial: 'admin/user/table_list', locals: { users: @users } %>
|
<%= render partial: 'admin/user/table_list', locals: { users: @users } %>
|
||||||
<%= link_to('New User', admin_new_user_path, { class: 'btn' }) %>
|
<%= link_to('New User', admin_new_user_path, { class: 'btn' }) if policy(User).create? %>
|
||||||
|
@ -20,7 +20,8 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
|
|
||||||
<header class="no-progressbar">
|
<header class="no-progressbar admin">
|
||||||
|
<%= render partial: "admin/nav" if current_user %>
|
||||||
<div class="page-title slash-left">
|
<div class="page-title slash-left">
|
||||||
<% if content_for?(:section_title) %>
|
<% if content_for?(:section_title) %>
|
||||||
<div><%= yield(:section_title) %></div>
|
<div><%= yield(:section_title) %></div>
|
||||||
|
@ -11,7 +11,7 @@ module Admin
|
|||||||
test "should get dashboard" do
|
test "should get dashboard" do
|
||||||
post admin_auth_url, params: { auth:
|
post admin_auth_url, params: { auth:
|
||||||
{ email: 'alan.admin@mailinator.com', password: 'password' } }
|
{ email: 'alan.admin@mailinator.com', password: 'password' } }
|
||||||
get admin_url
|
get admin_users_url
|
||||||
assert_response :success
|
assert_response :success
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user