admin global nav
This commit is contained in:
		
							
								
								
									
										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 { | ||||
|     padding-top: 52px; | ||||
|   } | ||||
|  | ||||
|   &.no-progressbar.admin { | ||||
|     padding-top: 0; | ||||
|   } | ||||
| } | ||||
| .page-title { | ||||
|   @include omega(); | ||||
|   | ||||
| @@ -4,7 +4,7 @@ module Admin | ||||
|     before_action :collect_quizzes, except: [:login, :auth] | ||||
|  | ||||
|     def index | ||||
|       @candidates = policy_scope current_recruiter.candidates | ||||
|       @candidates = policy_scope Candidate.order(:name) | ||||
|     end | ||||
|  | ||||
|     def new | ||||
| @@ -15,7 +15,7 @@ module Admin | ||||
|  | ||||
|     def create | ||||
|       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? | ||||
|         send_notifications @candidate | ||||
|   | ||||
| @@ -3,8 +3,25 @@ module Admin | ||||
|   class DashboardController < AdminController | ||||
|     def show | ||||
|       authorize :dashboard | ||||
|       @quizzes = policy_scope Quiz.includes(:questions).all | ||||
|       @users = policy_scope User.order(:role, :name) | ||||
|       send "redirect_for_#{current_user.role}" | ||||
|     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 | ||||
|   | ||||
| @@ -4,16 +4,6 @@ class ApplicationController < ActionController::Base | ||||
|  | ||||
|   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 | ||||
|     @current_candidate ||= Candidate.find_by(test_hash: session[:test_id]) if session[:test_id] | ||||
|   end | ||||
| @@ -29,14 +19,6 @@ class ApplicationController < ActionController::Base | ||||
|       params.require(:auth).permit(:email, :password) | ||||
|     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 | ||||
|       redirect_to login_path unless current_candidate | ||||
|     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"> | ||||
|   <h1>Candidates</h1> | ||||
|  | ||||
|   <%= link_to(admin_new_candidate_path, { class: 'secondary-btn' }) do %> | ||||
|     <button>Create New Candidate</button> | ||||
|   <% end %> | ||||
|   <% end if policy(User).create? %> | ||||
|  | ||||
|   <table cellspacing="0" cellpadding="0"> | ||||
|     <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.unit %></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> | ||||
|   <% end %> | ||||
| </table> | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| <% | ||||
|   content_for :section_title, "Completed Tests" | ||||
| %> | ||||
| <main class="summary_tpl"> | ||||
|   <h1>Completed Tests</h1> | ||||
|  | ||||
|   <table cellspacing="0" cellpadding="0"> | ||||
|     <tr> | ||||
|       <th>Test ID</th> | ||||
|   | ||||
| @@ -11,7 +11,7 @@ | ||||
|       <td><%= link_to user.name, admin_user_path(user.to_i) %></td> | ||||
|       <td><%= mail_to(user.email) %></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> | ||||
|   <% end %> | ||||
| </table> | ||||
|   | ||||
| @@ -4,4 +4,4 @@ | ||||
|  | ||||
| <h1>Users</h1> | ||||
| <%= 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> | ||||
|     <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"> | ||||
|           <% if content_for?(:section_title) %> | ||||
|             <div><%= yield(:section_title) %></div> | ||||
|   | ||||
| @@ -11,7 +11,7 @@ module Admin | ||||
|     test "should get dashboard" do | ||||
|       post admin_auth_url, params: { auth: | ||||
|           { email: 'alan.admin@mailinator.com', password: 'password' } } | ||||
|       get admin_url | ||||
|       get admin_users_url | ||||
|       assert_response :success | ||||
|     end | ||||
|   end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user