Class: Spotlight::PagesController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- ApplicationController
- Spotlight::PagesController
- Includes:
- Blacklight::SearchContext, Base, SearchHelper
- Defined in:
- app/controllers/spotlight/pages_controller.rb
Overview
Base CRUD controller for pages
Direct Known Subclasses
AboutPagesController, FeaturePagesController, HomePagesController
Instance Method Summary collapse
- #clone ⇒ Object
-
#create ⇒ Object
POST /exhibits/1/pages.
-
#destroy ⇒ Object
DELETE /pages/1.
-
#edit ⇒ Object
GET /pages/1/edit.
-
#index ⇒ Object
GET /exhibits/1/pages.
-
#new ⇒ Object
GET /exhibits/1/pages/new.
- #preview ⇒ Object
-
#show ⇒ Object
GET /pages/1.
-
#update ⇒ Object
PATCH/PUT /pages/1.
- #update_all ⇒ Object
Methods included from Base
#autocomplete_json_response, #autocomplete_json_response_for_document, #blacklight_config, #controller_tracking_method
Methods included from Config
#exhibit_specific_blacklight_config
Methods included from SearchHelper
#search_service, #search_service_context
Methods included from Concerns::ApplicationController
#enabled_in_spotlight_view_type_configuration?, #field_enabled?
Methods included from Controller
#blacklight_config, #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, #set_exhibit_locale_scope, #set_locale
Instance Method Details
#clone ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'app/controllers/spotlight/pages_controller.rb', line 99 def clone new_page = CloneTranslatedPageFromLocale.call(locale: clone_params, page: @page) model_name = @page.class.model_name.human.downcase if new_page.save redirect_to( edit_exhibit_translations_path(current_exhibit, language: clone_params, tab: 'pages'), notice: t(:'helpers.submit.page.created', model: model_name) ) else redirect_to :back, error: t(:'helpers.submit.page.clone_error', model: model_name) end end |
#create ⇒ Object
POST /exhibits/1/pages
60 61 62 63 64 65 66 67 68 69 70 |
# File 'app/controllers/spotlight/pages_controller.rb', line 60 def create @page.attributes = page_params @page.last_edited_by = @page.created_by = current_user if @page.save redirect_to [spotlight, @page.exhibit, page_collection_name.to_sym], notice: t(:'helpers.submit.page.created', model: @page.class.model_name.human.downcase) else render action: 'new' end end |
#destroy ⇒ Object
DELETE /pages/1
84 85 86 87 88 |
# File 'app/controllers/spotlight/pages_controller.rb', line 84 def destroy @page.destroy redirect_to [spotlight, @page.exhibit, page_collection_name.to_sym], flash: { html_safe: true }, notice: undo_notice(:destroyed) end |
#edit ⇒ Object
GET /pages/1/edit
55 56 57 |
# File 'app/controllers/spotlight/pages_controller.rb', line 55 def edit @page.lock! current_user end |
#index ⇒ Object
GET /exhibits/1/pages
26 27 28 29 30 31 32 33 34 |
# File 'app/controllers/spotlight/pages_controller.rb', line 26 def index # set up a model the inline "add a new page" form @page = CanCan::ControllerResource.new(self).send(:build_resource) respond_to do |format| format.html format.json { render json: @pages.for_default_locale.published.to_json(methods: [:thumbnail_image_url]) } end end |
#new ⇒ Object
GET /exhibits/1/pages/new
52 |
# File 'app/controllers/spotlight/pages_controller.rb', line 52 def new; end |
#preview ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'app/controllers/spotlight/pages_controller.rb', line 41 def preview @page = current_exhibit.pages.find(params['id']) :read, @page @block = SirTrevorRails::Block.from_hash(JSON.parse(params[:block], symbolize_names: true), @page) respond_to do |format| format.html { render 'preview', layout: false } end end |
#show ⇒ Object
GET /pages/1
37 38 39 |
# File 'app/controllers/spotlight/pages_controller.rb', line 37 def show fresh_when([@page.exhibit, @page]) end |
#update ⇒ Object
PATCH/PUT /pages/1
73 74 75 76 77 78 79 80 81 |
# File 'app/controllers/spotlight/pages_controller.rb', line 73 def update @page.lock&.delete if @page.update(page_params.merge(last_edited_by: current_user)) redirect_to [spotlight, @page.exhibit, @page, format: params.permit(:format)], flash: { html_safe: true }, notice: undo_notice(:updated) else render action: 'edit' end end |
#update_all ⇒ Object
90 91 92 93 94 95 96 97 |
# File 'app/controllers/spotlight/pages_controller.rb', line 90 def update_all notice = if @exhibit.update update_all_page_params t(:'helpers.submit.page.batch_updated', model: human_name) else t(:'helpers.submit.page.batch_error', model: human_name) end redirect_back fallback_location: spotlight.exhibit_dashboard_path(@exhibit), notice: notice end |