Class: Spina::Admin::Journal::IssuesController
- Inherits:
-
ApplicationController
- Object
- AdminController
- ApplicationController
- Spina::Admin::Journal::IssuesController
- Defined in:
- app/controllers/spina/admin/journal/issues_controller.rb
Overview
Controller for Issue records.
Constant Summary collapse
- PARTS_PARAMS =
:name, :title, :type, :content, :filename, :signed_blob_id, :alt, :attachment_id, :image_id, { images_attributes: %i[filename signed_blob_id image_id alt], content_attributes: [ :name, :title, { parts_attributes: [ :name, :title, :type, :content, :filename, :signed_blob_id, :alt, :attachment_id, :image_id, { images_attributes: %i[filename signed_blob_id image_id alt] } ] } ] } ].freeze- CONTENT_PARAMS =
Spina.config.locales.inject({}) do |params, locale| params.merge("#{locale}_content_attributes": [*PARTS_PARAMS]) end
- PARAMS =
[:volume_id, :title, :date, { **CONTENT_PARAMS }].freeze
- PARTS =
%w[cover_img description attachment].freeze
Instance Method Summary collapse
- #create ⇒ Object
- #destroy ⇒ Object
- #edit ⇒ Object
- #index ⇒ Object
- #new ⇒ Object
- #sort ⇒ Object
- #update ⇒ Object
Instance Method Details
#create ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# File 'app/controllers/spina/admin/journal/issues_controller.rb', line 47 def create @issue = Issue.new(issue_params) sister_issues = Issue.where(volume: @issue.volume_id) @issue.number = sister_issues.any? ? sister_issues.sorted_desc.first.number + 1 : 1 if @issue.save redirect_to admin_journal_issues_path, success: t('.saved') else render :new end end |
#destroy ⇒ Object
67 68 69 70 71 72 73 74 |
# File 'app/controllers/spina/admin/journal/issues_controller.rb', line 67 def destroy @issue.destroy respond_to do |format| format.html do redirect_to admin_journal_issues_path, success: t('.deleted') end end end |
#edit ⇒ Object
41 42 43 44 45 |
# File 'app/controllers/spina/admin/journal/issues_controller.rb', line 41 def edit t('spina.admin.journal.volumes.volume_number', number: @issue.volume.number), edit_admin_journal_volume_path(@issue.volume) t('spina.admin.journal.issues.issue_number', number: @issue.number) end |
#index ⇒ Object
31 32 33 |
# File 'app/controllers/spina/admin/journal/issues_controller.rb', line 31 def index @issues = Issue.sorted_desc end |
#new ⇒ Object
35 36 37 38 39 |
# File 'app/controllers/spina/admin/journal/issues_controller.rb', line 35 def new @issue = Issue.new build_parts t('.new') end |
#sort ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'app/controllers/spina/admin/journal/issues_controller.rb', line 76 def sort ActiveRecord::Base.transaction do sort_params.each do |id, new_pos| # ignore uniqueness validation for now Issue.find(id.to_i).update_attribute(:number, new_pos.to_i) # rubocop:disable Rails/SkipsModelValidations end validate_sort_order end render json: { success: true, message: t('.sort_success') } rescue ActiveRecord::RecordInvalid render json: { success: false, message: t('.sort_error') } end |
#update ⇒ Object
59 60 61 62 63 64 65 |
# File 'app/controllers/spina/admin/journal/issues_controller.rb', line 59 def update if @issue.update(issue_params) redirect_to admin_journal_issues_path, success: t('.saved') else render :edit end end |