From 3ee1b6c8442dc23155968848ff74ecdece9a3e7e Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Wed, 19 Jan 2022 10:11:41 +0100
Subject: [PATCH] research

---
 Gemfile.lock                                  | 20 +++++++++----------
 app/models/research/journal/article.rb        | 12 +++++++++--
 app/models/university/person/researcher.rb    |  2 +-
 .../research/journal/articles/_form.html.erb  |  2 +-
 .../research/journal/articles/show.html.erb   |  6 +++---
 .../research/journal/articles/static.html.erb |  6 +++---
 .../admin/research/journals/static.html.erb   |  4 ++--
 .../admin/research/researchers/index.html.erb |  2 +-
 config/locales/research/en.yml                |  2 +-
 config/locales/research/fr.yml                |  2 +-
 10 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index 2dc460e48..6846aec41 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -79,8 +79,8 @@ GEM
     autoprefixer-rails (10.4.2.0)
       execjs (~> 2)
     aws-eventstream (1.2.0)
-    aws-partitions (1.548.0)
-    aws-sdk-core (3.125.3)
+    aws-partitions (1.549.0)
+    aws-sdk-core (3.125.4)
       aws-eventstream (~> 1, >= 1.0.2)
       aws-partitions (~> 1, >= 1.525.0)
       aws-sigv4 (~> 1.1)
@@ -96,8 +96,8 @@ GEM
       aws-eventstream (~> 1, >= 1.0.2)
     bcrypt (3.1.16)
     bindex (0.8.1)
-    bootsnap (1.9.4)
-      msgpack (~> 1.0)
+    bootsnap (1.10.1)
+      msgpack (~> 1.2)
     bootstrap (5.1.3)
       autoprefixer-rails (>= 9.1.0)
       popper_js (>= 2.9.3, < 3)
@@ -126,17 +126,17 @@ GEM
     countries (4.2.1)
       i18n_data (~> 0.15.0)
       sixarm_ruby_unaccent (~> 1.1)
-    country_select (6.0.0)
-      countries (~> 4.0)
+    country_select (6.1.0)
+      countries (~> 4.2)
       sort_alphabetical (~> 1.1)
     crass (1.0.6)
     curation (1.7)
       metainspector
       nokogiri
-    delayed_job (4.1.9)
-      activesupport (>= 3.0, < 6.2)
-    delayed_job_active_record (4.1.6)
-      activerecord (>= 3.0, < 6.2)
+    delayed_job (4.1.10)
+      activesupport (>= 3.0, < 8.0)
+    delayed_job_active_record (4.1.7)
+      activerecord (>= 3.0, < 8.0)
       delayed_job (>= 3.0, < 5)
     delayed_job_web (1.4.4)
       activerecord (> 3.0.0)
diff --git a/app/models/research/journal/article.rb b/app/models/research/journal/article.rb
index 508ab94d5..b7d7c5780 100644
--- a/app/models/research/journal/article.rb
+++ b/app/models/research/journal/article.rb
@@ -35,6 +35,7 @@
 #
 class Research::Journal::Article < ApplicationRecord
   include WithGit
+  include WithMedia
   include WithPosition
 
   has_rich_text :text
@@ -44,7 +45,7 @@ class Research::Journal::Article < ApplicationRecord
   belongs_to :journal, foreign_key: :research_journal_id
   belongs_to :volume, foreign_key: :research_journal_volume_id, optional: true
   belongs_to :updated_by, class_name: 'User'
-  has_and_belongs_to_many :researchers,
+  has_and_belongs_to_many :persons,
                           class_name: 'University::Person',
                           join_table: :research_journal_articles_researchers,
                           association_foreign_key: :researcher_id
@@ -61,7 +62,10 @@ class Research::Journal::Article < ApplicationRecord
   end
 
   def git_dependencies(website)
-    [self] + other_articles_in_the_volume + researchers + researchers.map(&:researcher)
+    [self] +
+    other_articles_in_the_volume +
+    persons +
+    persons.map(&:researcher)
   end
 
   def to_s
@@ -86,6 +90,10 @@ class Research::Journal::Article < ApplicationRecord
     ).ordered.last
   end
 
+  def blob_ids
+    [pdf&.blob_id]
+  end
+
   def set_published_at
     self.published_at = published? ? Time.zone.now : nil
   end
diff --git a/app/models/university/person/researcher.rb b/app/models/university/person/researcher.rb
index 048b79ed9..45e450b4c 100644
--- a/app/models/university/person/researcher.rb
+++ b/app/models/university/person/researcher.rb
@@ -38,7 +38,7 @@ class University::Person::Researcher < University::Person
 
   def for_website?(website)
     is_researcher && website.about_journal? && website.research_articles
-                                                      .joins(:researchers)
+                                                      .joins(:persons)
                                                       .where(university_people: { id: id })
                                                       .any?
   end
diff --git a/app/views/admin/research/journal/articles/_form.html.erb b/app/views/admin/research/journal/articles/_form.html.erb
index c52f9d1e7..51b7b29b7 100644
--- a/app/views/admin/research/journal/articles/_form.html.erb
+++ b/app/views/admin/research/journal/articles/_form.html.erb
@@ -30,7 +30,7 @@
           <%= f.input :published %>
           <%= f.input :published_at, html5: true %>
           <%= f.input :keywords, as: :text, input_html: { rows: 2 } %>
-          <%= f.association :researchers, collection: current_university.people.researchers.ordered, as: :check_boxes %>
+          <%= f.association :persons, collection: current_university.people.researchers.ordered, as: :check_boxes %>
         </div>
       </div>
     </div>
diff --git a/app/views/admin/research/journal/articles/show.html.erb b/app/views/admin/research/journal/articles/show.html.erb
index dc84c32a4..f9ddcfd81 100644
--- a/app/views/admin/research/journal/articles/show.html.erb
+++ b/app/views/admin/research/journal/articles/show.html.erb
@@ -40,11 +40,11 @@
           <h3 class="h5"><%= Research::Journal::Article.human_attribute_name('keywords') %></h3>
           <p><%= @article.keywords %></p>
         <% end %>
-        <% if @article.researchers.any? %>
+        <% if @article.persons.any? %>
           <h3 class="h5"><%= Research::Journal::Article.human_attribute_name('researchers') %></h3>
           <ul class="list-unstyled mb-0">
-            <% @article.researchers.each do |researcher| %>
-              <li><%= link_to researcher, admin_research_researcher_path(researcher) %></li>
+            <% @article.persons.each do |person| %>
+              <li><%= link_to person, admin_research_researcher_path(person) %></li>
             <% end %>
           </ul>
         <% end %>
diff --git a/app/views/admin/research/journal/articles/static.html.erb b/app/views/admin/research/journal/articles/static.html.erb
index 345de93af..a6b95c541 100644
--- a/app/views/admin/research/journal/articles/static.html.erb
+++ b/app/views/admin/research/journal/articles/static.html.erb
@@ -11,10 +11,10 @@ date: <%= @article.published_at %> UTC
 keywords: >
   <%= @article.keywords %>
 researchers:
-<% @article.researchers.each do |researcher| %>
-- "<%= researcher.slug %>"
+<% @article.persons.each do |person| %>
+- "<%= person.slug %>"
 <% end %>
 abstract: "<%= @article.abstract %>"
 references: "<%= @article.references %>"
 ---
-<%= @article.text %>
+<%= prepare_html_for_static @article.text, @article.university %>
diff --git a/app/views/admin/research/journals/static.html.erb b/app/views/admin/research/journals/static.html.erb
index 8c6ebc60c..4446f6506 100644
--- a/app/views/admin/research/journals/static.html.erb
+++ b/app/views/admin/research/journals/static.html.erb
@@ -1,8 +1,8 @@
 ---
 title: >
   <%= @journal.title %>
-description: >
-  <%= prepare_text_for_static @journal.description %>
 issn: >
   <%= @journal.issn %>
+description: >
+  <%= prepare_text_for_static @journal.description %>
 ---
diff --git a/app/views/admin/research/researchers/index.html.erb b/app/views/admin/research/researchers/index.html.erb
index 9fa1cdad6..2a56d4f11 100644
--- a/app/views/admin/research/researchers/index.html.erb
+++ b/app/views/admin/research/researchers/index.html.erb
@@ -1,4 +1,4 @@
-<% content_for :title, t('researcher.researchers', count: 2) %>
+<% content_for :title, t('research.researchers', count: 2) %>
 
 <table class="table">
   <thead>
diff --git a/config/locales/research/en.yml b/config/locales/research/en.yml
index f77d0d0e4..2f64c1926 100644
--- a/config/locales/research/en.yml
+++ b/config/locales/research/en.yml
@@ -24,7 +24,7 @@ en:
         published: Published?
         published_at: Published at
         references: References
-        researchers: Authors
+        persons: Authors
         text: Text
         title: Title
       research/journal/volume:
diff --git a/config/locales/research/fr.yml b/config/locales/research/fr.yml
index 3e0afa176..90a1a8d03 100644
--- a/config/locales/research/fr.yml
+++ b/config/locales/research/fr.yml
@@ -24,7 +24,7 @@ fr:
         published: Publié ?
         published_at: Publié le
         references: Références
-        researchers: Auteu·rs·rices
+        persons: Auteu·rs·rices
         text: Texte
         title: Titre
       research/journal/volume:
-- 
GitLab