From 26dec1bf5e23a4b3ca4ef018bab99b952bb38eaa Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Mon, 5 Feb 2024 11:39:41 +0100
Subject: [PATCH] clean

---
 .../research/hal/publications_controller.rb   | 37 ----------
 .../admin/research/publications_controller.rb |  8 +-
 app/models/research/hal.rb                    |  7 +-
 app/models/research/hal/author.rb             |  2 +-
 app/models/research/publication.rb            |  8 +-
 app/services/citations.rb                     |  9 +++
 .../admin/research/hal/authors/_list.html.erb |  4 +-
 .../admin/research/hal/authors/show.html.erb  | 10 +--
 .../research/hal/publications/_list.html.erb  | 26 -------
 .../research/hal/publications/index.html.erb  |  4 -
 .../research/hal/publications/show.html.erb   | 74 -------------------
 .../research/hal/publications/static.html.erb | 51 -------------
 .../research/publications/_form.html.erb      | 18 ++++-
 .../research/publications/_list.html.erb      | 13 +---
 .../admin/research/publications/show.html.erb | 50 ++++++++-----
 .../research/publications/static.html.erb     | 33 ++++-----
 .../admin/research/researchers/show.html.erb  |  4 +-
 config/locales/research/en.yml                | 26 ++++++-
 config/locales/research/fr.yml                | 26 ++++++-
 config/routes/admin/research.rb               |  5 --
 20 files changed, 150 insertions(+), 265 deletions(-)
 delete mode 100644 app/controllers/admin/research/hal/publications_controller.rb
 create mode 100644 app/services/citations.rb
 delete mode 100644 app/views/admin/research/hal/publications/_list.html.erb
 delete mode 100644 app/views/admin/research/hal/publications/index.html.erb
 delete mode 100644 app/views/admin/research/hal/publications/show.html.erb
 delete mode 100644 app/views/admin/research/hal/publications/static.html.erb

diff --git a/app/controllers/admin/research/hal/publications_controller.rb b/app/controllers/admin/research/hal/publications_controller.rb
deleted file mode 100644
index 1fa195dff..000000000
--- a/app/controllers/admin/research/hal/publications_controller.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-class Admin::Research::Hal::PublicationsController < Admin::Research::Hal::ApplicationController
-  before_action :load_publication, except: :index
-
-  def index
-    @publications = Research::Publication.hal.ordered.page(params[:page])
-    breadcrumb
-  end
-
-  def show
-    breadcrumb
-  end
-
-  def static
-    @about = @publication
-    @website = @publication.websites&.first || current_university.websites.first
-    render_as_plain_text
-  end
-
-  def destroy
-    @publication.destroy
-    redirect_to admin_research_hal_publications_path
-  end
-
-  protected
-
-  def load_publication
-    @publication = Research::Publication.find params[:id]
-  end
-
-  def breadcrumb
-    super
-    add_breadcrumb Research::Publication.model_name.human(count: 2),
-                   admin_research_hal_publications_path
-    breadcrumb_for @publication
-  end
-
-end
diff --git a/app/controllers/admin/research/publications_controller.rb b/app/controllers/admin/research/publications_controller.rb
index 637dbf1ee..0c229a7db 100644
--- a/app/controllers/admin/research/publications_controller.rb
+++ b/app/controllers/admin/research/publications_controller.rb
@@ -12,6 +12,12 @@ class Admin::Research::PublicationsController < Admin::Research::ApplicationCont
     breadcrumb
   end
 
+  def static
+    @about = @publication
+    @website = @publication.websites&.first || current_university.websites.first
+    render_as_plain_text
+  end
+
   def new
     breadcrumb
   end
@@ -55,6 +61,6 @@ class Admin::Research::PublicationsController < Admin::Research::ApplicationCont
 
   def publication_params
     params.require(:research_publication)
-          .permit(:title)
+          .permit(:title, :publication_date, :abstract, :authors_list, :doi, :ref, :journal_title, :url, :open_access, :citation_full, researcher_ids: [])
   end
 end
diff --git a/app/models/research/hal.rb b/app/models/research/hal.rb
index 9151d3e53..24a495024 100644
--- a/app/models/research/hal.rb
+++ b/app/models/research/hal.rb
@@ -18,11 +18,11 @@ module Research::Hal
   end
 
   def self.pause_git_sync
-    Research::Hal::Publication.skip_callback :save, :after, :connect_and_sync_direct_sources
+    Research::Publication.skip_callback :save, :after, :connect_and_sync_direct_sources
   end
 
   def self.unpause_git_sync
-    Research::Hal::Publication.set_callback :save, :after, :connect_and_sync_direct_sources
+    Research::Publication.set_callback :save, :after, :connect_and_sync_direct_sources
   end
 
   def self.clear_queue!
@@ -30,7 +30,7 @@ module Research::Hal
     Delayed::Job.find_each do |job|
       next unless job.public_respond_to?(:payload_object)
       if  job.payload_object.method_name == :sync_indirect_object_with_git_without_delay &&
-          job.payload_object.args.first.is_a?(Research::Hal::Publication)
+          job.payload_object.args.first.is_a?(Research::Publication)
         ids << job.id
       end
     end
@@ -39,7 +39,6 @@ module Research::Hal
 
   def self.parts
     [
-      [Research::Publication, :admin_research_hal_publications_path],
       [Research::Hal::Author, :admin_research_hal_authors_path],
     ]
   end
diff --git a/app/models/research/hal/author.rb b/app/models/research/hal/author.rb
index 1d45b4873..5ed274912 100644
--- a/app/models/research/hal/author.rb
+++ b/app/models/research/hal/author.rb
@@ -47,7 +47,7 @@ class Research::Hal::Author < ApplicationRecord
   end
 
   def self.create_from(doc)
-    author = where(docid: doc.hal_docid).first_or_create
+    author = where(docid: doc.docid).first_or_create
     author.form_identifier = doc.form_i
     author.person_identifier = doc&.person_i if doc.attributes.has_key?(:person_i)
     author.first_name = doc.firstName_s
diff --git a/app/models/research/publication.rb b/app/models/research/publication.rb
index 03599f916..8035c61da 100644
--- a/app/models/research/publication.rb
+++ b/app/models/research/publication.rb
@@ -46,8 +46,6 @@ class Research::Publication < ApplicationRecord
                           foreign_key: :research_hal_author_id,
                           association_foreign_key: :research_publication_id
 
-  validates_presence_of :docid
-
   scope :ordered, -> { order(publication_date: :desc)}
 
   enum source: {
@@ -55,8 +53,10 @@ class Research::Publication < ApplicationRecord
     hal: 1
   }
 
+  validates_presence_of :title, :publication_date
+
   def editable?
-    source == :osuny
+    source == 'osuny'
   end
 
   def template_static
@@ -90,7 +90,7 @@ class Research::Publication < ApplicationRecord
       "pdf" => file,
       "month-numeric" => publication_date.present? ? publication_date.month.to_s : nil,
       "issued" => publication_date.present? ? { "date-parts" => [[publication_date.year, publication_date.month]] } : nil,
-      "id" => docid
+      "id" => (hal_docid || id)
     }
   end
 
diff --git a/app/services/citations.rb b/app/services/citations.rb
new file mode 100644
index 000000000..9b383c258
--- /dev/null
+++ b/app/services/citations.rb
@@ -0,0 +1,9 @@
+class Citations
+  FORMATS = [
+    :apa, 
+    :mla, 
+    :chicago,
+    :harvard,
+    :iso690, 
+  ]
+end
\ No newline at end of file
diff --git a/app/views/admin/research/hal/authors/_list.html.erb b/app/views/admin/research/hal/authors/_list.html.erb
index 00855e7f1..eed75e7b6 100644
--- a/app/views/admin/research/hal/authors/_list.html.erb
+++ b/app/views/admin/research/hal/authors/_list.html.erb
@@ -3,8 +3,8 @@
     <thead>
       <tr>
         <th><%= Research::Hal::Author.human_attribute_name('full_name') %></th>
-        <th><%= Research::Hal::Publication.human_attribute_name('docid') %></th>
-        <th><%= Research::Hal::Publication.human_attribute_name('publications') %></th>
+        <th><%= Research::Hal::Author.human_attribute_name('docid') %></th>
+        <th><%= Research::Hal::Author.human_attribute_name('publications') %></th>
       </tr>
     </thead>
     <tbody>
diff --git a/app/views/admin/research/hal/authors/show.html.erb b/app/views/admin/research/hal/authors/show.html.erb
index 243de83b6..2649222ae 100644
--- a/app/views/admin/research/hal/authors/show.html.erb
+++ b/app/views/admin/research/hal/authors/show.html.erb
@@ -1,12 +1,12 @@
 <% content_for :title, @author %>
 
-<div class="row">
+<div class="row mb-5">
   <div class="col-lg-8">
-    <%= osuny_label Research::Hal::Author.human_attribute_name :docid %>
+    <%= osuny_label Research::Hal::Author.human_attribute_name(:docid) %>
     <p><%= @author.docid %></p>
   </div>
   <div class="col-lg-4">
-    <%= osuny_panel University::Person::Researcher.model_name.human do %>
+    <%= osuny_panel Research::Hal::Author.human_attribute_name(:researcher) do %>
       <% @author.researchers.in_university(current_university).each do |researcher| %>
         <%= render 'admin/university/people/researchers/researcher', researcher: researcher %>
       <% end %>
@@ -14,8 +14,8 @@
   </div>
 </div>
 
-<%= osuny_panel Research::Publication.model_name.human(count: 2), subtitle: @author.publications.count do %>
-  <%= render 'admin/research/hal/publications/list', publications: @author.publications.ordered %>
+<%= osuny_panel Research::Hal::Author.human_attribute_name(:publications), subtitle: @author.publications.count do %>
+  <%= render 'admin/research/publications/list', publications: @author.publications.ordered %>
 <% end %>
 
 <% content_for :action_bar_left do %>
diff --git a/app/views/admin/research/hal/publications/_list.html.erb b/app/views/admin/research/hal/publications/_list.html.erb
deleted file mode 100644
index 27745c378..000000000
--- a/app/views/admin/research/hal/publications/_list.html.erb
+++ /dev/null
@@ -1,26 +0,0 @@
-<div class="table-responsive">
-  <table class="<%= table_classes %>">
-    <thead>
-      <tr>
-        <th><%= Research::Publication.human_attribute_name('title') %></th>
-        <th width="150"><%= Research::Publication.human_attribute_name('publication_date') %></th>
-        <th width="200"><%= University::Person::Researcher.model_name.human(count: 2) %></th>
-      </tr>
-    </thead>
-    <tbody>
-      <% publications.each do |publication| %>
-        <tr>
-          <td><%= link_to publication, admin_research_hal_publication_path(publication) %></td>
-          <td><%= l publication.publication_date %></td>
-          <td>
-            <% publication.researchers.in_university(current_university).each do |researcher| %>
-              <%= link_to_if  researcher.university == current_university, 
-                              researcher, 
-                              admin_research_researcher_path(researcher) %>
-            <% end %>
-          </td>
-        </tr>
-      <% end %>
-    </tbody>
-  </table>
-</div>
\ No newline at end of file
diff --git a/app/views/admin/research/hal/publications/index.html.erb b/app/views/admin/research/hal/publications/index.html.erb
deleted file mode 100644
index bf53ad41c..000000000
--- a/app/views/admin/research/hal/publications/index.html.erb
+++ /dev/null
@@ -1,4 +0,0 @@
-<% content_for :title, Research::Publication.model_name.human(count: 2) %>
-<% content_for :title_right, "#{ @publications.total_count }" %>
-<%= render 'admin/research/hal/publications/list', publications: @publications %>
-<%= paginate @publications, theme: 'bootstrap-5' %>
diff --git a/app/views/admin/research/hal/publications/show.html.erb b/app/views/admin/research/hal/publications/show.html.erb
deleted file mode 100644
index 3b8b38710..000000000
--- a/app/views/admin/research/hal/publications/show.html.erb
+++ /dev/null
@@ -1,74 +0,0 @@
-<% content_for :title, @publication %>
-
-<div class="row">
-  <div class="col-lg-8">
-    <% if @publication.abstract.present? %>
-      <p class="lead mb-5">
-        <%= sanitize @publication.abstract %>
-      </p>
-    <% end %>
-    <div class="row">
-      <div class="col-lg-6">
-        <%= osuny_label Research::Publication.human_attribute_name('citation_full') %>
-        <p><%= sanitize @publication.citation_full %></p>
-      </div>
-      <div class="col-lg-6">
-        <%= osuny_label Research::Publication.human_attribute_name('ref') %>
-        <p><%= sanitize @publication.ref %></p>
-      </div>
-      <div class="col-lg-6">
-        <%= osuny_label Research::Publication.human_attribute_name('docid') %>
-        <p><%= @publication.hal_docid %></p>
-      </div>
-      <div class="col-lg-6">
-        <%= osuny_label Research::Publication.human_attribute_name('publication_date') %>
-        <p><%= l @publication.publication_date %></p>
-      </div>
-      <div class="col-lg-6">
-        <%= osuny_label Research::Publication.human_attribute_name('open_access') %>
-        <p><%= t @publication.open_access %></p>
-      </div>
-    </div>
-  </div>
-  <div class="col-lg-4">
-    <%= osuny_panel Research::Publication.human_attribute_name('authors_list') do %>
-    <p><%= @publication.authors_list %></p>
-    <% end %>
-    <%= osuny_panel University::Person::Researcher.model_name.human(count: 2) do %>
-      <% @publication.researchers.in_university(current_university).each do |researcher| %>
-        <%= render 'admin/university/people/researchers/researcher', researcher: researcher %>
-      <% end %>
-    <% end %>
-    <%= osuny_panel Research::Hal::Author.model_name.human(count: 2) do %>
-      <ul class="list-unstyled">
-        <% @publication.authors.each do |author| %>
-          <li>
-            <%= link_to [:admin, author] do %>
-              <%= author %>
-              (<%= author.docid %>)
-            <% end %>
-          </li>
-        <% end %>
-      </ul>
-    <% end %>
-  </div>
-</div>
-
-<% [:url, :hal_url, :doi_url, :file].each do |key| %>
-  <% value = @publication.send key %>
-  <% next if value.blank? %>
-  <%= osuny_label Research::Publication.human_attribute_name(key) %>
-  <p><%= link_to value, value, target: :_blank %></p>
-<% end %>
-
-<% content_for :action_bar_left do %>
-  <% if current_user.server_admin? %>
-    <%= link_to t('delete'),
-                admin_research_hal_publication_path(@publication),
-                method: :delete,
-                class: button_classes_danger %>
-    <%= link_to t('static'),
-                static_admin_research_hal_publication_path(@publication),
-                class: button_classes('btn-light') %>
-  <% end %>
-<% end %>
diff --git a/app/views/admin/research/hal/publications/static.html.erb b/app/views/admin/research/hal/publications/static.html.erb
deleted file mode 100644
index 438b84b5a..000000000
--- a/app/views/admin/research/hal/publications/static.html.erb
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: >-
-  <%= @about.title %>
-date: "<%= @about.publication_date&.iso8601 %>"
-<%= render 'admin/application/static/breadcrumbs',
-            pages: @website.special_page(Communication::Website::Page::ResearchHalPublication).ancestors_and_self,
-            current_title: @about.to_s %>
-<%= render 'admin/application/static/permalink' %>
-hal:
-  docid: "<%= @about.hal_docid %>"
-  url: "<%= @about.hal_url %>"
-abstract: >-
-  <%= prepare_html_for_static @about.abstract, @website.university %>
-citation_full: >-
-  <%= prepare_html_for_static @about.citation_full, @website.university %>
-authors_list: >-
-  <%= @about.authors_list %>
-ref: >-
-  <%= sanitize @about.ref %>
-links:
-  - label: "HAL"
-    url: "<%= @about.hal_url %>"
-  - label: "DOI"
-    url: "<%= @about.doi_url %>"
-  - label: "URL"
-    url: "<%= @about.url %>"
-  - label: "PDF"
-    url: "<%= @about.file %>"
-researchers:
-<% @about.researchers.in_university(@website.university).each do |researcher| %>
-  - <%= researcher.slug %>
-<% end %>
-citations:
-  - label: "APA"
-    content: >-
-      <%= prepare_html_for_static @about.citation_apa, @website.university %>
-  - label: "MLA"
-    content: >-
-      <%= prepare_html_for_static @about.citation_mla, @website.university %>
-  - label: "Chicago"
-    content: >-
-      <%= prepare_html_for_static @about.citation_chicago, @website.university %>
-  - label: "Harvard"
-    content: >-
-      <%= prepare_html_for_static @about.citation_harvard, @website.university %>
-  <% if @website.default_language.iso_code == "fr" %>
-  - label: "ISO 690"
-    content: >-
-      <%= prepare_html_for_static @about.citation_iso690, @website.university %>
-  <% end %>
----
\ No newline at end of file
diff --git a/app/views/admin/research/publications/_form.html.erb b/app/views/admin/research/publications/_form.html.erb
index ca7c53895..fe564ffba 100644
--- a/app/views/admin/research/publications/_form.html.erb
+++ b/app/views/admin/research/publications/_form.html.erb
@@ -1,12 +1,26 @@
 <%= simple_form_for [:admin, publication] do |f| %>
   <%= f.error_notification %>
   <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
-
   <div class="row">
-    <div class="col-md-6">
+    <div class="col-lg-8">
       <%= f.input :title %>
+      <%= f.input :abstract, input_html: { rows: 12 } %>
+      <%= f.input :citation_full, as: :summernote %>
+      <%= f.input :ref, as: :text %>
+      <%= f.input :authors_list, as: :string %>
+      <%= f.input :url %>
+      </div>
+      <div class="col-lg-4">
+      <%= f.input :publication_date, html5: true %>
+      <%= f.input :doi %>
+      <%= f.input :journal_title %>
+      <%= f.input :open_access %>
+      <%= f.association :researchers, 
+                        as: :check_boxes, 
+                        collection: current_university.university_people.researchers.ordered %>
     </div>
   </div>
+
   <% content_for :action_bar_right do %>
     <%= submit f %>
   <% end %>
diff --git a/app/views/admin/research/publications/_list.html.erb b/app/views/admin/research/publications/_list.html.erb
index 347ceff66..2f29e7bd5 100644
--- a/app/views/admin/research/publications/_list.html.erb
+++ b/app/views/admin/research/publications/_list.html.erb
@@ -3,26 +3,19 @@
     <thead>
       <tr>
         <th><%= Research::Publication.human_attribute_name('title') %></th>
+        <th><%= Research::Publication.human_attribute_name('source') %></th>
         <th><%= Research::Publication.human_attribute_name('publication_date') %></th>
-        <th></th>
       </tr>
     </thead>
     <tbody>
-      <% @publications.each do |publication| %>
+      <% publications.each do |publication| %>
         <tr>
           <td>
             <%= link_to publication, [:admin, publication] %><br>
             <small><%= publication.authors_list %></small>
           </td>
+          <td class="pe-4"><span class="badge text-bg-light"><%= publication.source_i18n %></span></td>
           <td><%= l publication.publication_date %></td>
-          <td class="text-end">
-            <% if publication.editable? %>
-              <div class="btn-group" role="group">
-                <%= edit_link publication %>
-                <%= destroy_link publication %>
-              </div>
-            <% end %>
-          </td>
         </tr>
       <% end %>
     </tbody>
diff --git a/app/views/admin/research/publications/show.html.erb b/app/views/admin/research/publications/show.html.erb
index 8c1428cba..8ea09134b 100644
--- a/app/views/admin/research/publications/show.html.erb
+++ b/app/views/admin/research/publications/show.html.erb
@@ -1,7 +1,7 @@
 <% content_for :title, @publication %>
 
 
-<div class="row">
+<div class="row mb-5">
   <div class="col-lg-8">
     <% if @publication.abstract.present? %>
       <p class="lead mb-5">
@@ -17,23 +17,27 @@
         <%= osuny_label Research::Publication.human_attribute_name('ref') %>
         <p><%= sanitize @publication.ref %></p>
       </div>
-      <div class="col-lg-6">
-        <%= osuny_label Research::Publication.human_attribute_name('docid') %>
-        <p><%= @publication.hal_docid %></p>
-      </div>
-      <div class="col-lg-6">
-        <%= osuny_label Research::Publication.human_attribute_name('publication_date') %>
-        <p><%= l @publication.publication_date %></p>
-      </div>
+      <% if @publication.publication_date %>
+        <div class="col-lg-6">
+          <%= osuny_label Research::Publication.human_attribute_name('publication_date') %>
+          <p><%= l @publication.publication_date %></p>
+        </div>
+      <% end %>
       <div class="col-lg-6">
         <%= osuny_label Research::Publication.human_attribute_name('open_access') %>
         <p><%= t @publication.open_access %></p>
       </div>
+      <% if @publication.hal? %>
+        <div class="col-lg-6">
+          <%= osuny_label Research::Publication.human_attribute_name('docid') %>
+          <p><%= @publication.hal_docid %></p>
+        </div>
+      <% end %>
     </div>
   </div>
   <div class="col-lg-4">
     <%= osuny_panel Research::Publication.human_attribute_name('authors_list') do %>
-    <p><%= @publication.authors_list %></p>
+     <p><%= @publication.authors_list %></p>
     <% end %>
     <%= osuny_panel University::Person::Researcher.model_name.human(count: 2) do %>
       <% @publication.researchers.in_university(current_university).each do |researcher| %>
@@ -51,20 +55,32 @@
           </li>
         <% end %>
       </ul>
-    <% end %>
+    <% end if @publication.hal? %>
+    <%= osuny_panel Research::Publication.human_attribute_name('urls') do %>
+      <% [:url, :hal_url, :doi_url, :file].each do |key| %>
+        <% value = @publication.send key %>
+        <% next if value.blank? %>
+        <%= osuny_label Research::Publication.human_attribute_name(key) %>
+        <p><%= link_to value, value, target: :_blank %></p>
+      <% end %>    
+    <% end %>    
   </div>
 </div>
 
-<% [:url, :hal_url, :doi_url, :file].each do |key| %>
-  <% value = @publication.send key %>
-  <% next if value.blank? %>
-  <%= osuny_label Research::Publication.human_attribute_name(key) %>
-  <p><%= link_to value, value, target: :_blank %></p>
+<%= osuny_panel Research::Publication.human_attribute_name('citations') do %>
+  <div class="row">
+    <% Citations::FORMATS.each do |format| %>
+      <div class="col-lg-4">
+        <%= osuny_label t("research.citations.#{format}.label") %>
+        <p><%= sanitize @publication.public_send("citation_#{format}") %></p>
+      </div>
+    <% end %>
+  </div>
 <% end %>
 
-
 <% content_for :action_bar_left do %>
   <%= destroy_link @publication if @publication.editable? %>
+  <%= static_link static_admin_research_publication_path(@publication) %>
 <% end %>
 
 <% content_for :action_bar_right do %>
diff --git a/app/views/admin/research/publications/static.html.erb b/app/views/admin/research/publications/static.html.erb
index e0cf8a3c6..e3e5a1d2b 100644
--- a/app/views/admin/research/publications/static.html.erb
+++ b/app/views/admin/research/publications/static.html.erb
@@ -1,10 +1,14 @@
+<%
+special_page = @website.special_page(Communication::Website::Page::ResearchPublication)
+pages = special_page.ancestors_and_self if special_page
+%>
 ---
 title: >-
   <%= @about.title %>
 date: "<%= @about.publication_date&.iso8601 %>"
 <%= render 'admin/application/static/breadcrumbs',
-            pages: @website.special_page(Communication::Website::Page::ResearchPublication).ancestors_and_self,
-            current_title: @about.to_s %>
+            pages: pages,
+            current_title: @about.to_s if pages %>
 <%= render 'admin/application/static/permalink' %>
 hal:
   docid: "<%= @about.hal_docid %>"
@@ -31,21 +35,14 @@ researchers:
   - <%= researcher.slug %>
 <% end %>
 citations:
-  - label: "APA"
+<% 
+Citations::FORMATS.each do |format| 
+  citation = @about.public_send("citation_#{format}")
+  next if (@website.default_language.iso_code == "fr" && format == 'iso690') 
+%>
+  - label: "<%= t("research.citations.#{format}.label") %>"
+    format: "<%= format %>"
     content: >-
-      <%= prepare_html_for_static @about.citation_apa, @website.university %>
-  - label: "MLA"
-    content: >-
-      <%= prepare_html_for_static @about.citation_mla, @website.university %>
-  - label: "Chicago"
-    content: >-
-      <%= prepare_html_for_static @about.citation_chicago, @website.university %>
-  - label: "Harvard"
-    content: >-
-      <%= prepare_html_for_static @about.citation_harvard, @website.university %>
-  <% if @website.default_language.iso_code == "fr" %>
-  - label: "ISO 690"
-    content: >-
-      <%= prepare_html_for_static @about.citation_iso690, @website.university %>
-  <% end %>
+      <%= prepare_html_for_static citation, @website.university %>
+<% end %>
 ---
\ No newline at end of file
diff --git a/app/views/admin/research/researchers/show.html.erb b/app/views/admin/research/researchers/show.html.erb
index d67e6524a..cb50619b8 100644
--- a/app/views/admin/research/researchers/show.html.erb
+++ b/app/views/admin/research/researchers/show.html.erb
@@ -46,11 +46,11 @@
 
 <%= osuny_panel Research::Publication.model_name.human(count: 2) do %>
   <p>
-    <%= "#{@researcher.hal_publications.count} #{Research::Publication.model_name.human(count: @researcher.hal_publications.count).downcase}" %>.
+    <%= "#{@researcher.publications.count} #{Research::Publication.model_name.human(count: @researcher.publications.count).downcase}" %>.
     Les publications sont mises à jour automatiquement, chaque nuit.
   </p>
   <div class="table-responsive">
-    <%= render 'admin/research/publications/list', publications: @researcher.hal_publications.ordered %>
+    <%= render 'admin/research/publications/list', publications: @researcher.publications.ordered %>
   </div>
 <% end %>
 
diff --git a/config/locales/research/en.yml b/config/locales/research/en.yml
index 874e2fe7f..6ccfd688e 100644
--- a/config/locales/research/en.yml
+++ b/config/locales/research/en.yml
@@ -41,6 +41,8 @@ en:
         first_name: First name
         full_name: Full name
         last_name: Last name
+        publications: Publications imported from HAL
+        researcher: Researchers in Osuny
       research/journal:
         issn: ISSN
         title: Title
@@ -81,13 +83,18 @@ en:
         short_name: Short name
         text: Text
       research/publication:
+        abstract: Abstract
         authors_list: Authors list
         docid: Identifier
+        doi: DOI
         doi_url: URL DOI
+        hal_url: URL HAL
+        journal_title: In...
+        open_access: Open access
         publication_date: Publication date
         title: Title
         url: URL
-        hal_url: URL HAL
+        urls: Web URLs
       research/thesis:
         abstract: Abstract
         author: Author
@@ -97,11 +104,28 @@ en:
         laboratory: Laboratory
         started_at: Started at
         title: Title
+  enums:
+    research:
+      publication:
+        source:
+          hal: HAL
+          osuny: Osuny
   research/hal:
     description: 
       text: "HAL signifie Hyper Article en Ligne. C’est une plateforme pluridisciplinaire nationale pour le dépôt et la consultation des écrits, travaux et résultats de recherches scientifiques des chercheur·e·s et enseignant·e·s-chercheur·e·s. HAL est un bien commun pour la recherche : Les plus grands organismes de recherche et la majorité des universités françaises ont choisi et soutiennent HAL, une infrastructure publique, pérenne et responsable."
       source: HAL.science
   research:
+    citations:
+      apa:
+        label: APA
+      mla: 
+        label: MLA
+      chicago: 
+        label: Chicago
+      harvard: 
+        label: Harvard
+      iso690: 
+        label: ISO 690
     description:
       text: Scientific research is both an approach that creates knowledge motivated by pure curiosity and an activity that generates innovations that increase the means of action and diagnosis on nature, man and society. These two aspects of research, fundamental and applied, far from opposing each other, complement each other. Fundamental research creates the knowledge base from which applications are born and, conversely, technological advances provide the increasingly sophisticated investigative tools that lead to a deepening of our fundamental knowledge.
       source: Serge Haroche, Prix Nobel de physique 2012
diff --git a/config/locales/research/fr.yml b/config/locales/research/fr.yml
index 796dc026b..841f696bd 100644
--- a/config/locales/research/fr.yml
+++ b/config/locales/research/fr.yml
@@ -41,6 +41,8 @@ fr:
         first_name: Prénom
         full_name: Nom complet
         last_name: Nom
+        publications: Publications importées de HAL
+        researcher: Chercheur·e dans Osuny
       research/journal:
         issn: ISSN
         title: Titre
@@ -81,13 +83,18 @@ fr:
         short_name: Nom court
         text: Texte
       research/publication:
+        abstract: Résumé
         authors_list: Liste des auteur·e·s
         docid: Identifiant
+        doi: DOI
         doi_url: URL DOI
+        hal_url: URL HAL
+        journal_title: Dans...
+        open_access: Accès ouvert (open access)
         publication_date: Date de publication
         title: Titre
         url: URL
-        hal_url: URL HAL
+        urls: Adresses Web
       research/thesis:
         abstract: Résumé
         author: Auteur·e
@@ -97,11 +104,28 @@ fr:
         laboratory: Laboratoire
         started_at: Commencée le
         title: Titre
+  enums:
+    research:
+      publication:
+        source:
+          hal: HAL
+          osuny: Osuny
   research/hal:
     description: 
       text: "HAL signifie Hyper Article en Ligne. C’est une plateforme pluridisciplinaire nationale pour le dépôt et la consultation des écrits, travaux et résultats de recherches scientifiques des chercheur·e·s et enseignant·e·s-chercheur·e·s. HAL est un bien commun pour la recherche : Les plus grands organismes de recherche et la majorité des universités françaises ont choisi et soutiennent HAL, une infrastructure publique, pérenne et responsable."
       source: HAL.science
   research:
+    citations:
+      apa:
+        label: APA
+      mla: 
+        label: MLA
+      chicago: 
+        label: Chicago
+      harvard: 
+        label: Harvard
+      iso690: 
+        label: ISO 690
     description:
       text: La recherche scientifique est, à la fois, une démarche créatrice de connaissances motivée par la curiosité pure et une activité génératrice d’innovations qui augmentent les moyens d’action et de diagnostic sur la nature, l’homme et la société. Ces deux aspects de la recherche, le fondamental et l’appliqué, loin de s’opposer, sont complémentaires l’un de l’autre. La recherche fondamentale crée le socle de connaissances à partir duquel naissent les applications et, inversement, les avancées technologiques procurent les outils d’investigation de plus en plus perfectionnés qui conduisent à approfondir nos connaissances fondamentales.
       source: Serge Haroche, Prix Nobel de physique 2012
diff --git a/config/routes/admin/research.rb b/config/routes/admin/research.rb
index 00428c433..7dbfd99d0 100644
--- a/config/routes/admin/research.rb
+++ b/config/routes/admin/research.rb
@@ -16,11 +16,6 @@ namespace :research do
         delete 'researchers/:researcher_id' => 'authors#disconnect_researcher'
       end
     end
-    resources :publications, only: [:index, :show, :destroy] do
-      member do
-        get :static
-      end
-    end
     root to: 'dashboard#index'
   end
   resources :journals do
-- 
GitLab