Class: Spina::Admin::Journal::ArticlesController
- Inherits:
-
ApplicationController
- Object
- AdminController
- ApplicationController
- Spina::Admin::Journal::ArticlesController
- Defined in:
- app/controllers/spina/admin/journal/articles_controller.rb
Overview
Controller for Article 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 =
[:issue_id, :title, :url, :doi, :status, { affiliation_ids: [], **CONTENT_PARAMS }].freeze
- PARTS =
%w[abstract 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
43 44 45 46 47 48 49 50 51 52 53 |
# File 'app/controllers/spina/admin/journal/articles_controller.rb', line 43 def create @article = Article.new(article_params) sister_articles = Article.where(issue: @article.issue_id) @article.number = sister_articles.any? ? sister_articles.sorted_desc.first.number + 1 : 1 if @article.save redirect_to admin_journal_articles_path, success: t('.saved') else render :new end end |
#destroy ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'app/controllers/spina/admin/journal/articles_controller.rb', line 63 def destroy @article.destroy respond_to do |format| format.html do redirect_to admin_journal_articles_path, success: t('.deleted') end end end |
#edit ⇒ Object
41 |
# File 'app/controllers/spina/admin/journal/articles_controller.rb', line 41 def edit; end |
#index ⇒ Object
31 32 33 |
# File 'app/controllers/spina/admin/journal/articles_controller.rb', line 31 def index @articles = Article.sorted_desc end |
#new ⇒ Object
35 36 37 38 39 |
# File 'app/controllers/spina/admin/journal/articles_controller.rb', line 35 def new @article = Article.new build_parts t('.new') end |
#sort ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 |
# File 'app/controllers/spina/admin/journal/articles_controller.rb', line 72 def sort ActiveRecord::Base.transaction do sort_params.each do |id, new_pos| Article.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
55 56 57 58 59 60 61 |
# File 'app/controllers/spina/admin/journal/articles_controller.rb', line 55 def update if @article.update(article_params) redirect_to admin_journal_articles_path, success: t('.saved') else render :edit end end |