Class: Spotlight::BulkUpdatesController

Inherits:
ApplicationController show all
Defined in:
app/controllers/spotlight/bulk_updates_controller.rb

Overview

Controller enabling bulk functionality for items defined in a spreadsheet.

Instance Method Summary collapse

Methods included from Concerns::ApplicationController

#enabled_in_spotlight_view_type_configuration?, #field_enabled?

Methods included from Controller

#add_breadcrumb, #blacklight_config, #breadcrumbs, #current_exhibit, #current_masthead, #current_masthead=, #current_site, #default_url_options, #exhibit_masthead?, #exhibit_search_action_url, #exhibit_search_facet_path, #resource_masthead?, #search_action_url, #search_facet_path, #search_state, #set_exhibit_locale_scope, #set_locale

Methods included from Config

#exhibit_specific_blacklight_config

Instance Method Details

#download_templateObject



19
20
21
22
23
24
25
26
27
28
# File 'app/controllers/spotlight/bulk_updates_controller.rb', line 19

def download_template
  # Set Last-Modified as a work-around for https://github.com/rack/rack/issues/1619
  headers['Last-Modified'] = ''
  headers['Cache-Control'] = 'no-cache'
  headers['Content-Type'] = 'text/csv'
  headers['Content-Disposition'] = "attachment; filename=\"#{current_exhibit.slug}-bulk-update-template.csv\""
  headers.delete('Content-Length')

  self.response_body = csv_template
end

#editObject



13
14
15
16
17
# File 'app/controllers/spotlight/bulk_updates_controller.rb', line 13

def edit
  add_breadcrumb(t(:'spotlight.exhibits.breadcrumb', title: @exhibit.title), @exhibit)
  add_breadcrumb(t(:'spotlight.curation.sidebar.header'), exhibit_dashboard_path(@exhibit))
  add_breadcrumb(t(:'spotlight.pages.index.bulk_updates.header'), edit_exhibit_bulk_updates_path(@exhibit))
end

#monitorObject



40
41
42
# File 'app/controllers/spotlight/bulk_updates_controller.rb', line 40

def monitor
  render json: BackgroundJobProgress.new(current_exhibit, job_class: Spotlight::ProcessBulkUpdatesCsvJob)
end

#updateObject



30
31
32
33
34
35
36
37
38
# File 'app/controllers/spotlight/bulk_updates_controller.rb', line 30

def update
  bulk_update = Spotlight::BulkUpdate.new(exhibit: current_exhibit, file: file_params)
  if bulk_update.save
    ProcessBulkUpdatesCsvJob.perform_later(current_exhibit, bulk_update)
    redirect_back fallback_location: spotlight.edit_exhibit_bulk_updates_path(current_exhibit), notice: t(:'spotlight.bulk_updates.update.submitted')
  else
    redirect_back fallback_location: spotlight.edit_exhibit_bulk_updates_path(current_exhibit), alert: t(:'spotlight.bulk_updates.update.error')
  end
end