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) %> +
<% jobs.each do |job| %> <% if job.domain %> <% else %> <% end %> <% if job.args.size > 70 %> <% else %> <% end %> <% end %>
Id Created at Domain Type Args Retries Controls
<%= job.id %> <%= job.created_at %><%= link_to job.domain.name, domain_path(job.domain) %><%= job.arguments['zone'] %><%= job.job_type %><%= truncate(job.args, length: 70) %><%= job.args %><%= 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 %>
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