diff --git a/app/controllers/admin/jobs_controller.rb b/app/controllers/admin/jobs_controller.rb
index 48d6d8c..486203d 100644
--- a/app/controllers/admin/jobs_controller.rb
+++ b/app/controllers/admin/jobs_controller.rb
@@ -1,41 +1,43 @@
module Admin
class JobsController < ApplicationController
before_action :authenticate_user!
before_action :admin_only!
before_action :job, only: [:destroy, :update]
# GET /jobs
def index
@job_categories = {
'Pending' => Job.includes(:domain).pending,
'Completed' => Job.includes(:domain).completed.order('id desc')
}
+
+ @category = params[:category] || 'pending'
end
# DELETE /jobs/1
def destroy
@job.destroy
redirect_to admin_jobs_url, notice: "#{@job.id} was successfully destroyed."
end
# PUT /jobs/1
def update
if @job.update(job_params)
redirect_to admin_jobs_url, notice: 'Job was successfully updated.'
else
render :edit
end
end
private
def job
@job = Job.find(params[:id])
end
def job_params
params.require(:job).permit(:status)
end
end
end
diff --git a/app/views/admin/jobs/index.html.erb b/app/views/admin/jobs/index.html.erb
index eb795fe..d2b4434 100644
--- a/app/views/admin/jobs/index.html.erb
+++ b/app/views/admin/jobs/index.html.erb
@@ -1,53 +1,55 @@
<% @job_categories.each_with_index do |pair, idx| %>
<% title, jobs = pair %>
-
+ <% active = title.downcase == @category.try(:to_s) %>
+
Id |
Created at |
Domain |
Type |
Args |
Retries |
Controls |
<% jobs.each do |job| %>
<%= job.id %> |
<%= job.created_at %> |
<% if job.domain %>
<%= link_to job.domain.name, domain_path(job.domain) %> |
<% else %>
<%= job.arguments['zone'] %> |
<% end %>
<%= job.job_type %> |
<% if job.args.size > 70 %>
<%= truncate(job.args, length: 70) %> |
<% else %>
<%= job.args %> |
<% end %>
<%= job.retries %> |
<%= link_to('done', done_admin_job_path(job), method: :put) unless job.done? %>
<%= link_to('pending', pending_admin_job_path(job), method: :put) if job.failed? %>
|
<%= link_to_destroy admin_job_path(job), method: :delete, data: { confirm: 'Are you sure?' } %> |
<% end %>
<% end %>
diff --git a/config/routes.rb b/config/routes.rb
index c76f3ab..291cad9 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,79 +1,81 @@
Rails.application.routes.draw do
# Override devise user removal
devise_scope :users do
delete :users, to: redirect('/')
end
devise_for :users
get '/auth/saml', to: 'auth#saml'
root to: redirect('/domains')
resources :users, only: [] do
get :token, to: 'users#token', on: :member
post :generate_token, to: 'users#generate_token', on: :member
end
resources :groups, only: [:show] do
get :search_member,
to: 'groups#search_member', on: :member
post :members,
to: 'groups#create_member', as: :create_member, on: :member
delete 'member/:user_id',
to: 'groups#destroy_member', as: :destroy_member, on: :member
end
resources :domains do
get :edit_dnssec, to: 'domains#edit_dnssec', on: :member
delete :full_destroy, to: 'domains#full_destroy', on: :member
resources :records, except: [:index, :show] do
# Reuse records#update instead of introducing new controller actions
#
# rubocop:disable Style/AlignHash
put :disable, to: 'records#update', on: :member,
defaults: { record: { disabled: true } }
put :enable, to: 'records#update', on: :member,
defaults: { record: { disabled: false } }
put :editable, to: 'records#editable', on: :collection
post :valid, to: 'records#valid', on: :collection
post :bulk, to: 'records#bulk', on: :collection
# rubocop:enable Style/AlignHash
end
end
get '/records/search', to: 'records#search'
# Admin
namespace :admin do
root to: redirect('/admin/groups')
resources :groups, except: [:show]
resources :jobs, only: [:index, :destroy] do
put :done, to: 'jobs#update', on: :member,
defaults: { job: { status: 1 } }
put :pending, to: 'jobs#update', on: :member,
defaults: { job: { status: 0 } }
+ get '/type/:category', to: 'jobs#index', on: :collection,
+ constraints: proc { |req| ['completed', 'pending'].include?(req.params[:category]) }
end
resources :users, only: [:destroy] do
get :orphans, to: 'users#orphans', on: :collection
put :update_groups, to: 'users#update_groups', on: :collection
end
end
# API
scope '/api' do
get :ping, to: 'api#ping'
get :whoami, to: 'api#whoami'
get '/domain/:domain/list', to: 'api#list', constraints: { domain: /[^\/]+/}
post '/domain/:domain/bulk', to: 'api#bulk', constraints: { domain: /[^\/]+/}
end if WebDNS.settings[:api]
# Private
put 'private/replace_ds', to: 'private#replace_ds'
put 'private/trigger_event', to: 'private#trigger_event'
get 'private/zones', to: 'private#zones'
get 'help/api', to: 'help#api'
end