From f71f7f206fe9397ade149df282f16229c367d1b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com> Date: Tue, 11 Jan 2022 12:02:25 +0100 Subject: [PATCH] published volume --- .../admin/research/journal/volumes_controller.rb | 2 +- app/models/research/journal/article.rb | 2 +- app/models/research/journal/volume.rb | 10 ++++++++++ .../admin/research/journal/articles/show.html.erb | 2 +- .../admin/research/journal/volumes/_form.html.erb | 1 + .../admin/research/journal/volumes/index.html.erb | 6 +++++- app/views/admin/research/journals/show.html.erb | 4 +++- config/locales/research/en.yml | 1 + config/locales/research/fr.yml | 1 + ...101410_add_published_to_research_journal_volumes.rb | 5 +++++ db/schema.rb | 3 ++- lib/tasks/app.rake | 3 +++ 12 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 db/migrate/20220111101410_add_published_to_research_journal_volumes.rb diff --git a/app/controllers/admin/research/journal/volumes_controller.rb b/app/controllers/admin/research/journal/volumes_controller.rb index a07b2849b..b0c1d63da 100644 --- a/app/controllers/admin/research/journal/volumes_controller.rb +++ b/app/controllers/admin/research/journal/volumes_controller.rb @@ -56,7 +56,7 @@ class Admin::Research::Journal::VolumesController < Admin::Research::Journal::Ap def volume_params params.require(:research_journal_volume) .permit( - :title, :slug, :number, :keywords, :published_at, :description, + :title, :slug, :number, :keywords, :published, :published_at, :description, :featured_image, :featured_image_infos, :featured_image_delete, :featured_image_alt ) .merge(university_id: current_university.id) diff --git a/app/models/research/journal/article.rb b/app/models/research/journal/article.rb index 1ab24435d..ca553be57 100644 --- a/app/models/research/journal/article.rb +++ b/app/models/research/journal/article.rb @@ -57,7 +57,7 @@ class Research::Journal::Article < ApplicationRecord scope :published, -> { where(published: true) } def git_path(website) - "content/articles/#{published_at.year}/#{published_at.strftime "%Y-%m-%d"}-#{slug}.html" if published_at + "content/articles/#{published_at.year}/#{published_at.strftime "%Y-%m-%d"}-#{slug}.html" if (volume.nil? || volume.published_at) && published_at end def git_dependencies(website) diff --git a/app/models/research/journal/volume.rb b/app/models/research/journal/volume.rb index 6724c4399..328ded75e 100644 --- a/app/models/research/journal/volume.rb +++ b/app/models/research/journal/volume.rb @@ -7,6 +7,7 @@ # featured_image_alt :string # keywords :text # number :integer +# published :boolean default(FALSE) # published_at :date # slug :string # title :string @@ -37,6 +38,9 @@ class Research::Journal::Volume < ApplicationRecord has_many :websites, -> { distinct }, through: :journal has_many :researchers, through: :articles + before_validation :set_published_at, if: :published_changed? + + scope :published, -> { where(published: true) } scope :ordered, -> { order(number: :desc, published_at: :desc) } def website @@ -62,4 +66,10 @@ class Research::Journal::Volume < ApplicationRecord def to_s "##{ number } #{ title }" end + + protected + + def set_published_at + self.published_at = published? ? Time.zone.now : nil + end end diff --git a/app/views/admin/research/journal/articles/show.html.erb b/app/views/admin/research/journal/articles/show.html.erb index ab0dfb960..dc84c32a4 100644 --- a/app/views/admin/research/journal/articles/show.html.erb +++ b/app/views/admin/research/journal/articles/show.html.erb @@ -28,7 +28,7 @@ <div class="card-body"> <% if @article.volume %> <h3 class="h5"><%= Research::Journal::Article.human_attribute_name('volume') %></h3> - <p><%= link_to @article.volume, [:admin, @article.volume] %></p> + <p><%= link_to @article.volume, [:admin, @article.volume], class: "#{'opacity-50' unless @article.volume.published?}" %></p> <% end %> <h3 class="h5"><%= Research::Journal::Article.human_attribute_name('published') %></h3> <p><%= t @article.published %></p> diff --git a/app/views/admin/research/journal/volumes/_form.html.erb b/app/views/admin/research/journal/volumes/_form.html.erb index 0b53bf292..77e82605d 100644 --- a/app/views/admin/research/journal/volumes/_form.html.erb +++ b/app/views/admin/research/journal/volumes/_form.html.erb @@ -30,6 +30,7 @@ </div> <div class="card-body"> <%= f.input :number %> + <%= f.input :published %> <%= f.input :published_at, html5: true %> <%= f.input :keywords %> </div> diff --git a/app/views/admin/research/journal/volumes/index.html.erb b/app/views/admin/research/journal/volumes/index.html.erb index cd16b28fe..0b72e856a 100644 --- a/app/views/admin/research/journal/volumes/index.html.erb +++ b/app/views/admin/research/journal/volumes/index.html.erb @@ -12,7 +12,11 @@ <tbody> <% @volumes.each do |volume| %> <tr> - <td><%= link_to volume, admin_research_journal_volume_path(journal_id: @journal, id: volume) %></td> + <td> + <%= link_to volume, + admin_research_journal_volume_path(journal_id: @journal, id: volume), + class: "#{'opacity-50' unless volume.published?}" %> + </td> <td><%= image_tag volume.featured_image.variant(resize: 'x200'), height: 100 if volume.featured_image.attached? %></td> <td><%= volume.published_at %></td> diff --git a/app/views/admin/research/journals/show.html.erb b/app/views/admin/research/journals/show.html.erb index ffee7a259..6866b76a8 100644 --- a/app/views/admin/research/journals/show.html.erb +++ b/app/views/admin/research/journals/show.html.erb @@ -30,7 +30,9 @@ <div class="card"> <%= image_tag volume.featured_image, class: 'img-fluid' if volume.featured_image.attached? %> <div class="card-body"> - <%= link_to volume, admin_research_journal_volume_path(journal_id: @journal, id: volume), class: 'stretched-link' %> + <%= link_to volume, + admin_research_journal_volume_path(journal_id: @journal, id: volume), + class: "stretched-link #{'opacity-50' unless volume.published?}" %> </div> </div> </div> diff --git a/config/locales/research/en.yml b/config/locales/research/en.yml index e733e35ad..f77d0d0e4 100644 --- a/config/locales/research/en.yml +++ b/config/locales/research/en.yml @@ -33,6 +33,7 @@ en: description: Description keywords: Keywords number: Number + published: Published? published_at: Published at title: Title research: diff --git a/config/locales/research/fr.yml b/config/locales/research/fr.yml index f8ca8b6a2..3e0afa176 100644 --- a/config/locales/research/fr.yml +++ b/config/locales/research/fr.yml @@ -33,6 +33,7 @@ fr: description: Description keywords: Mots clés number: Numéro + published: Publié ? published_at: Publié le title: Titre research: diff --git a/db/migrate/20220111101410_add_published_to_research_journal_volumes.rb b/db/migrate/20220111101410_add_published_to_research_journal_volumes.rb new file mode 100644 index 000000000..0ef13b711 --- /dev/null +++ b/db/migrate/20220111101410_add_published_to_research_journal_volumes.rb @@ -0,0 +1,5 @@ +class AddPublishedToResearchJournalVolumes < ActiveRecord::Migration[6.1] + def change + add_column :research_journal_volumes, :published, :boolean, default: false + end +end diff --git a/db/schema.rb b/db/schema.rb index ce33a4428..50acbfe29 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_01_11_092324) do +ActiveRecord::Schema.define(version: 2022_01_11_101410) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" @@ -477,6 +477,7 @@ ActiveRecord::Schema.define(version: 2022_01_11_092324) do t.text "keywords" t.string "slug" t.string "featured_image_alt" + t.boolean "published", default: false t.index ["research_journal_id"], name: "index_research_journal_volumes_on_research_journal_id" t.index ["university_id"], name: "index_research_journal_volumes_on_university_id" end diff --git a/lib/tasks/app.rake b/lib/tasks/app.rake index 4ba4f91fd..95f457320 100644 --- a/lib/tasks/app.rake +++ b/lib/tasks/app.rake @@ -38,6 +38,9 @@ namespace :app do }) end end + Research::Journal::Volume.find_each do |volume| + volume.update_column :published, volume.published_at.present? + end end namespace :db do -- GitLab