Skip to content
Snippets Groups Projects
Commit 7cc5e8c1 authored by Arnaud Levy's avatar Arnaud Levy
Browse files

Fix #505

parent cb229838
No related branches found
No related tags found
No related merge requests found
Showing
with 127 additions and 60 deletions
...@@ -89,7 +89,7 @@ GEM ...@@ -89,7 +89,7 @@ GEM
autoprefixer-rails (10.4.7.0) autoprefixer-rails (10.4.7.0)
execjs (~> 2) execjs (~> 2)
aws-eventstream (1.2.0) aws-eventstream (1.2.0)
aws-partitions (1.612.0) aws-partitions (1.613.0)
aws-sdk-core (3.131.5) aws-sdk-core (3.131.5)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.525.0) aws-partitions (~> 1, >= 1.525.0)
...@@ -314,7 +314,7 @@ GEM ...@@ -314,7 +314,7 @@ GEM
multi_json (~> 1.3) multi_json (~> 1.3)
multi_xml (~> 0.5) multi_xml (~> 0.5)
rack (>= 1.2, < 3) rack (>= 1.2, < 3)
octokit (5.1.0) octokit (5.2.0)
faraday (>= 1, < 3) faraday (>= 1, < 3)
sawyer (~> 0.9) sawyer (~> 0.9)
omniauth (2.1.0) omniauth (2.1.0)
...@@ -466,7 +466,7 @@ GEM ...@@ -466,7 +466,7 @@ GEM
nokogiri (~> 1.6) nokogiri (~> 1.6)
rubyzip (>= 1.3.0) rubyzip (>= 1.3.0)
selenium-webdriver (~> 4.0) selenium-webdriver (~> 4.0)
webmock (3.14.0) webmock (3.16.0)
addressable (>= 2.8.0) addressable (>= 2.8.0)
crack (>= 0.3.2) crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0) hashdiff (>= 0.4.0, < 2.0.0)
......
class Admin::Research::Journals::ArticlesController < Admin::Research::Journals::ApplicationController class Admin::Research::Journals::PapersController < Admin::Research::Journals::ApplicationController
load_and_authorize_resource class: Research::Journal::Article, through: :journal load_and_authorize_resource class: Research::Journal::Paper, through: :journal
include Admin::Reorderable include Admin::Reorderable
...@@ -21,13 +21,13 @@ class Admin::Research::Journals::ArticlesController < Admin::Research::Journals: ...@@ -21,13 +21,13 @@ class Admin::Research::Journals::ArticlesController < Admin::Research::Journals:
end end
def create def create
@article.assign_attributes( @paper.assign_attributes(
journal: @journal, journal: @journal,
university: current_university, university: current_university,
updated_by: current_user updated_by: current_user
) )
if @article.save_and_sync if @paper.save_and_sync
redirect_to admin_research_journal_article_path(@article), notice: t('admin.successfully_created_html', model: @article.to_s) redirect_to admin_research_journal_paper_path(@paper), notice: t('admin.successfully_created_html', model: @paper.to_s)
else else
breadcrumb breadcrumb
render :new, status: :unprocessable_entity render :new, status: :unprocessable_entity
...@@ -35,9 +35,9 @@ class Admin::Research::Journals::ArticlesController < Admin::Research::Journals: ...@@ -35,9 +35,9 @@ class Admin::Research::Journals::ArticlesController < Admin::Research::Journals:
end end
def update def update
@article.updated_by = current_user @paper.updated_by = current_user
if @article.update_and_sync(article_params) if @paper.update_and_sync(paper_params)
redirect_to admin_research_journal_article_path(@article), notice: t('admin.successfully_updated_html', model: @article.to_s) redirect_to admin_research_journal_paper_path(@paper), notice: t('admin.successfully_updated_html', model: @paper.to_s)
else else
breadcrumb breadcrumb
add_breadcrumb t('edit') add_breadcrumb t('edit')
...@@ -46,20 +46,20 @@ class Admin::Research::Journals::ArticlesController < Admin::Research::Journals: ...@@ -46,20 +46,20 @@ class Admin::Research::Journals::ArticlesController < Admin::Research::Journals:
end end
def destroy def destroy
@article.destroy_and_sync @paper.destroy_and_sync
redirect_to admin_research_journal_path(@journal), notice: t('admin.successfully_destroyed_html', model: @article.to_s) redirect_to admin_research_journal_path(@journal), notice: t('admin.successfully_destroyed_html', model: @paper.to_s)
end end
private private
def breadcrumb def breadcrumb
super super
add_breadcrumb Research::Journal::Article.model_name.human(count: 2), admin_research_journal_articles_path add_breadcrumb Research::Journal::Paper.model_name.human(count: 2), admin_research_journal_papers_path
breadcrumb_for @article breadcrumb_for @paper
end end
def article_params def paper_params
params.require(:research_journal_article) params.require(:research_journal_paper)
.permit(:title, :slug, :text, :published, :published_at, :abstract, :description, :pdf, :references, :keywords, :research_journal_volume_id, person_ids: []) .permit(:title, :slug, :text, :published, :published_at, :abstract, :description, :pdf, :references, :keywords, :research_journal_volume_id, person_ids: [])
.merge(university_id: current_university.id) .merge(university_id: current_university.id)
end end
......
...@@ -7,7 +7,7 @@ class Admin::Research::Journals::VolumesController < Admin::Research::Journals:: ...@@ -7,7 +7,7 @@ class Admin::Research::Journals::VolumesController < Admin::Research::Journals::
end end
def show def show
@articles = @volume.articles.ordered @papers = @volume.papers.ordered
breadcrumb breadcrumb
end end
......
...@@ -12,7 +12,7 @@ class Admin::Research::JournalsController < Admin::Research::ApplicationControll ...@@ -12,7 +12,7 @@ class Admin::Research::JournalsController < Admin::Research::ApplicationControll
end end
def show def show
@articles = @journal.articles.order(published_at: :desc, created_at: :desc).limit(10) @papers = @journal.papers.ordered.limit(10)
breadcrumb breadcrumb
end end
......
...@@ -24,7 +24,7 @@ class Ability ...@@ -24,7 +24,7 @@ class Ability
can :read, Education::Program, university_id: @user.university_id can :read, Education::Program, university_id: @user.university_id
can :read, Education::School, university_id: @user.university_id can :read, Education::School, university_id: @user.university_id
can :read, Research::Journal, university_id: @user.university_id can :read, Research::Journal, university_id: @user.university_id
can :read, Research::Journal::Article, university_id: @user.university_id can :read, Research::Journal::Paper, university_id: @user.university_id
can :read, Research::Journal::Volume, university_id: @user.university_id can :read, Research::Journal::Volume, university_id: @user.university_id
can :read, Research::Laboratory, university_id: @user.university_id can :read, Research::Laboratory, university_id: @user.university_id
can :read, User, university_id: @user.university_id can :read, User, university_id: @user.university_id
...@@ -107,7 +107,7 @@ class Ability ...@@ -107,7 +107,7 @@ class Ability
can :manage, Education::Program, university_id: @user.university_id can :manage, Education::Program, university_id: @user.university_id
can :manage, :all_programs # needed to prevent program_manager to access specific global screens can :manage, :all_programs # needed to prevent program_manager to access specific global screens
can :manage, Research::Journal, university_id: @user.university_id can :manage, Research::Journal, university_id: @user.university_id
can :manage, Research::Journal::Article, university_id: @user.university_id can :manage, Research::Journal::Paper, university_id: @user.university_id
can :manage, Research::Journal::Volume, university_id: @user.university_id can :manage, Research::Journal::Volume, university_id: @user.university_id
can :manage, Research::Laboratory, university_id: @user.university_id can :manage, Research::Laboratory, university_id: @user.university_id
can :manage, University::Role, university_id: @user.university_id can :manage, University::Role, university_id: @user.university_id
......
...@@ -68,8 +68,8 @@ class Communication::Website::Menu::Item < ApplicationRecord ...@@ -68,8 +68,8 @@ class Communication::Website::Menu::Item < ApplicationRecord
teachers: 54, teachers: 54,
volumes: 60, volumes: 60,
volume: 61, volume: 61,
articles: 62, papers: 62,
article: 63 paper: 63
}, _prefix: :kind }, _prefix: :kind
validates :title, presence: true validates :title, presence: true
...@@ -90,8 +90,8 @@ class Communication::Website::Menu::Item < ApplicationRecord ...@@ -90,8 +90,8 @@ class Communication::Website::Menu::Item < ApplicationRecord
'page' => Icon::COMMUNICATION_WEBSITE_PAGE, 'page' => Icon::COMMUNICATION_WEBSITE_PAGE,
'program' => Icon::EDUCATION_PROGRAM, 'program' => Icon::EDUCATION_PROGRAM,
'programs' => Icon::EDUCATION_PROGRAM, 'programs' => Icon::EDUCATION_PROGRAM,
'article' => Icon::RESEARCH_LABORATORY, 'paper' => Icon::RESEARCH_LABORATORY,
'articles' => Icon::RESEARCH_LABORATORY, 'papers' => Icon::RESEARCH_LABORATORY,
'volumes' => Icon::RESEARCH_LABORATORY, 'volumes' => Icon::RESEARCH_LABORATORY,
'volume' => Icon::RESEARCH_LABORATORY, 'volume' => Icon::RESEARCH_LABORATORY,
'researchers' => Icon::RESEARCH_RESEARCHER, 'researchers' => Icon::RESEARCH_RESEARCHER,
...@@ -147,7 +147,7 @@ class Communication::Website::Menu::Item < ApplicationRecord ...@@ -147,7 +147,7 @@ class Communication::Website::Menu::Item < ApplicationRecord
kind_category? || kind_category? ||
kind_post? || kind_post? ||
kind_volume? || kind_volume? ||
kind_article? kind_paper?
end end
def sync_menu def sync_menu
......
...@@ -78,12 +78,12 @@ module Communication::Website::Menu::Item::WithTargets ...@@ -78,12 +78,12 @@ module Communication::Website::Menu::Item::WithTargets
Static.clean_path "#{website.special_page(:research_volumes).path}#{about.path}" Static.clean_path "#{website.special_page(:research_volumes).path}#{about.path}"
end end
def target_for_articles def target_for_papers
Static.clean_path website.special_page(:research_articles).path Static.clean_path website.special_page(:research_papers).path
end end
def target_for_article def target_for_paper
return unless about&.published && about&.published_at return unless about&.published && about&.published_at
Static.clean_path "#{website.special_page(:research_articles).path}#{about.path}" Static.clean_path "#{website.special_page(:research_papers).path}#{about.path}"
end end
end end
...@@ -8,7 +8,7 @@ module Communication::Website::Page::WithKind ...@@ -8,7 +8,7 @@ module Communication::Website::Page::WithKind
communication_posts: 10, communication_posts: 10,
education_programs: 20, education_programs: 20,
education_diplomas: 21, education_diplomas: 21,
research_articles: 30, research_papers: 30,
research_volumes: 32, research_volumes: 32,
legal_terms: 80, legal_terms: 80,
sitemap: 81, sitemap: 81,
...@@ -26,7 +26,7 @@ module Communication::Website::Page::WithKind ...@@ -26,7 +26,7 @@ module Communication::Website::Page::WithKind
'communication_posts', 'communication_posts',
'education_programs', 'education_programs',
'education_diplomas', 'education_diplomas',
'research_articles', 'research_papers',
'research_volumes', 'research_volumes',
'organizations', 'organizations',
'persons', 'persons',
......
...@@ -49,8 +49,8 @@ module Communication::Website::WithDependencies ...@@ -49,8 +49,8 @@ module Communication::Website::WithDependencies
has_research_volumes? ? about.published_volumes : Research::Journal::Volume.none has_research_volumes? ? about.published_volumes : Research::Journal::Volume.none
end end
def research_articles def research_papers
has_research_articles? ? about.published_articles : Research::Journal::Article.none has_research_papers? ? about.published_papers : Research::Journal::Paper.none
end end
def administrators def administrators
...@@ -174,8 +174,8 @@ module Communication::Website::WithDependencies ...@@ -174,8 +174,8 @@ module Communication::Website::WithDependencies
about && about.has_education_diplomas? about && about.has_education_diplomas?
end end
def has_research_articles? def has_research_papers?
about && about.has_research_articles? about && about.has_research_papers?
end end
def has_research_volumes? def has_research_volumes?
......
...@@ -80,11 +80,11 @@ module Communication::Website::WithMenuItems ...@@ -80,11 +80,11 @@ module Communication::Website::WithMenuItems
has_research_volumes? has_research_volumes?
end end
def menu_item_kind_articles? def menu_item_kind_papers?
has_research_articles? has_research_papers?
end end
def menu_item_kind_article? def menu_item_kind_paper?
has_research_articles? has_research_papers?
end end
end end
...@@ -13,7 +13,7 @@ module Communication::Website::WithSpecialPages ...@@ -13,7 +13,7 @@ module Communication::Website::WithSpecialPages
def create_missing_special_pages def create_missing_special_pages
homepage = create_special_page('home') homepage = create_special_page('home')
# first level pages with test # first level pages with test
['legal_terms', 'sitemap', 'privacy_policy', 'accessibility', 'communication_posts', 'education_programs', 'education_diplomas', 'research_articles', 'research_volumes', 'organizations'].each do |kind| ['legal_terms', 'sitemap', 'privacy_policy', 'accessibility', 'communication_posts', 'education_programs', 'education_diplomas', 'research_papers', 'research_volumes', 'organizations'].each do |kind|
create_special_page(kind, homepage.id) if public_send("has_#{kind}?") create_special_page(kind, homepage.id) if public_send("has_#{kind}?")
end end
# team pages # team pages
......
...@@ -21,7 +21,7 @@ module Aboutable ...@@ -21,7 +21,7 @@ module Aboutable
raise NotImplementedError raise NotImplementedError
end end
def has_research_articles? def has_research_papers?
raise NotImplementedError raise NotImplementedError
end end
......
...@@ -202,7 +202,7 @@ class Education::Program < ApplicationRecord ...@@ -202,7 +202,7 @@ class Education::Program < ApplicationRecord
diploma.present? || descendants.any? { |descendant| descendant.diploma.present? } diploma.present? || descendants.any? { |descendant| descendant.diploma.present? }
end end
def has_research_articles? def has_research_papers?
false false
end end
......
...@@ -84,7 +84,7 @@ class Education::School < ApplicationRecord ...@@ -84,7 +84,7 @@ class Education::School < ApplicationRecord
# Aboutable methods # # Aboutable methods #
##################### #####################
def has_research_articles? def has_research_papers?
false false
end end
......
...@@ -28,10 +28,10 @@ class Research::Journal < ApplicationRecord ...@@ -28,10 +28,10 @@ class Research::Journal < ApplicationRecord
has_many :websites, class_name: 'Communication::Website', as: :about, dependent: :nullify has_many :websites, class_name: 'Communication::Website', as: :about, dependent: :nullify
has_many :volumes, foreign_key: :research_journal_id, dependent: :destroy has_many :volumes, foreign_key: :research_journal_id, dependent: :destroy
has_many :published_volumes, -> { published }, class_name: 'Research::Journal::Volume', foreign_key: :research_journal_id, dependent: :destroy has_many :published_volumes, -> { published }, class_name: 'Research::Journal::Volume', foreign_key: :research_journal_id, dependent: :destroy
has_many :articles, foreign_key: :research_journal_id, dependent: :destroy has_many :papers, foreign_key: :research_journal_id, dependent: :destroy
has_many :published_articles, -> { published }, class_name: 'Research::Journal::Article', foreign_key: :research_journal_id, dependent: :destroy has_many :published_papers, -> { published }, class_name: 'Research::Journal::Paper', foreign_key: :research_journal_id, dependent: :destroy
has_many :people, -> { distinct }, through: :articles has_many :people, -> { distinct }, through: :papers
has_many :people_through_published_articles, -> { distinct }, through: :published_articles, source: :people has_many :people_through_published_papers, -> { distinct }, through: :published_papers, source: :people
scope :ordered, -> { order(:title) } scope :ordered, -> { order(:title) }
scope :for_search_term, -> (term) { scope :for_search_term, -> (term) {
...@@ -48,7 +48,7 @@ class Research::Journal < ApplicationRecord ...@@ -48,7 +48,7 @@ class Research::Journal < ApplicationRecord
end end
def researchers def researchers
university.people.where(id: people_through_published_articles.pluck(:id), is_researcher: true) university.people.where(id: people_through_published_papers.pluck(:id), is_researcher: true)
end end
def git_path(website) def git_path(website)
...@@ -57,14 +57,14 @@ class Research::Journal < ApplicationRecord ...@@ -57,14 +57,14 @@ class Research::Journal < ApplicationRecord
def git_dependencies(website) def git_dependencies(website)
dependencies = [self] dependencies = [self]
dependencies += published_articles + published_articles.map(&:active_storage_blobs).flatten if has_research_articles? dependencies += published_papers + published_papers.map(&:active_storage_blobs).flatten if has_research_papers?
dependencies += published_volumes + published_volumes.map(&:active_storage_blobs).flatten if has_research_volumes? dependencies += published_volumes + published_volumes.map(&:active_storage_blobs).flatten if has_research_volumes?
dependencies += researchers + researchers.map(&:researcher) + researchers.map(&:active_storage_blobs).flatten if has_researchers? dependencies += researchers + researchers.map(&:researcher) + researchers.map(&:active_storage_blobs).flatten if has_researchers?
dependencies dependencies
end end
def git_destroy_dependencies(website) def git_destroy_dependencies(website)
[self] + articles + volumes [self] + papers + volumes
end end
##################### #####################
...@@ -90,8 +90,8 @@ class Research::Journal < ApplicationRecord ...@@ -90,8 +90,8 @@ class Research::Journal < ApplicationRecord
false false
end end
def has_research_articles? def has_research_papers?
published_articles.published.any? published_papers.published.any?
end end
def has_research_volumes? def has_research_volumes?
......
# == Schema Information # == Schema Information
# #
# Table name: research_journal_articles # Table name: research_journal_papers
# #
# id :uuid not null, primary key # id :uuid not null, primary key
# abstract :text # abstract :text
...@@ -22,10 +22,10 @@ ...@@ -22,10 +22,10 @@
# #
# Indexes # Indexes
# #
# index_research_journal_articles_on_research_journal_id (research_journal_id) # index_research_journal_papers_on_research_journal_id (research_journal_id)
# index_research_journal_articles_on_research_journal_volume_id (research_journal_volume_id) # index_research_journal_papers_on_research_journal_volume_id (research_journal_volume_id)
# index_research_journal_articles_on_university_id (university_id) # index_research_journal_papers_on_university_id (university_id)
# index_research_journal_articles_on_updated_by_id (updated_by_id) # index_research_journal_papers_on_updated_by_id (updated_by_id)
# #
# Foreign Keys # Foreign Keys
# #
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
# fk_rails_2713063b85 (updated_by_id => users.id) # fk_rails_2713063b85 (updated_by_id => users.id)
# fk_rails_935541e014 (university_id => universities.id) # fk_rails_935541e014 (university_id => universities.id)
# #
class Research::Journal::Article < ApplicationRecord class Research::Journal::Paper < ApplicationRecord
include Sanitizable include Sanitizable
include WithUniversity include WithUniversity
include WithGit include WithGit
...@@ -50,7 +50,7 @@ class Research::Journal::Article < ApplicationRecord ...@@ -50,7 +50,7 @@ class Research::Journal::Article < ApplicationRecord
belongs_to :updated_by, class_name: 'User' belongs_to :updated_by, class_name: 'User'
has_and_belongs_to_many :people, has_and_belongs_to_many :people,
class_name: 'University::Person', class_name: 'University::Person',
join_table: :research_journal_articles_researchers, join_table: :research_journal_papers_researchers,
association_foreign_key: :researcher_id association_foreign_key: :researcher_id
has_many :websites, -> { distinct }, through: :journal has_many :websites, -> { distinct }, through: :journal
...@@ -59,15 +59,16 @@ class Research::Journal::Article < ApplicationRecord ...@@ -59,15 +59,16 @@ class Research::Journal::Article < ApplicationRecord
before_validation :set_published_at, if: :published_changed? before_validation :set_published_at, if: :published_changed?
scope :published, -> { where(published: true) } scope :published, -> { where(published: true) }
scope :ordered, -> { order(published_at: :desc, created_at: :desc) }
def git_path(website) def git_path(website)
"content/articles/#{published_at.year}/#{published_at.strftime "%Y-%m-%d"}-#{slug}.html" if (volume.nil? || volume.published_at) && published_at "content/papers/#{published_at.year}/#{published_at.strftime "%Y-%m-%d"}-#{slug}.html" if (volume.nil? || volume.published_at) && published_at
end end
def git_dependencies(website) def git_dependencies(website)
[self] + [self] +
active_storage_blobs + active_storage_blobs +
other_articles_in_the_volume + other_papers_in_the_volume +
people + people +
people.map(&:active_storage_blobs).flatten + people.map(&:active_storage_blobs).flatten +
people.map(&:researcher) + people.map(&:researcher) +
...@@ -84,13 +85,13 @@ class Research::Journal::Article < ApplicationRecord ...@@ -84,13 +85,13 @@ class Research::Journal::Article < ApplicationRecord
protected protected
def other_articles_in_the_volume def other_papers_in_the_volume
return [] if volume.nil? return [] if volume.nil?
volume.articles.where.not(id: self) volume.papers.where.not(id: self)
end end
def last_ordered_element def last_ordered_element
Research::Journal::Article.where( Research::Journal::Paper.where(
university_id: university_id, university_id: university_id,
research_journal_volume_id: research_journal_volume_id research_journal_volume_id: research_journal_volume_id
).ordered.last ).ordered.last
......
...@@ -39,9 +39,9 @@ class Research::Journal::Volume < ApplicationRecord ...@@ -39,9 +39,9 @@ class Research::Journal::Volume < ApplicationRecord
has_summernote :text has_summernote :text
belongs_to :journal, foreign_key: :research_journal_id belongs_to :journal, foreign_key: :research_journal_id
has_many :articles, foreign_key: :research_journal_volume_id, dependent: :nullify has_many :papers, foreign_key: :research_journal_volume_id, dependent: :nullify
has_many :websites, -> { distinct }, through: :journal has_many :websites, -> { distinct }, through: :journal
has_many :people, -> { distinct }, through: :articles has_many :people, -> { distinct }, through: :papers
before_validation :set_published_at, if: :published_changed? before_validation :set_published_at, if: :published_changed?
...@@ -58,7 +58,7 @@ class Research::Journal::Volume < ApplicationRecord ...@@ -58,7 +58,7 @@ class Research::Journal::Volume < ApplicationRecord
def git_dependencies(website) def git_dependencies(website)
[self] + [self] +
articles + papers +
people + people +
people.map(&:active_storage_blobs).flatten + people.map(&:active_storage_blobs).flatten +
people.map(&:researcher) + people.map(&:researcher) +
......
...@@ -80,7 +80,7 @@ class Research::Laboratory < ApplicationRecord ...@@ -80,7 +80,7 @@ class Research::Laboratory < ApplicationRecord
false false
end end
def has_research_articles? def has_research_papers?
false false
end end
......
...@@ -70,9 +70,9 @@ class University::Person < ApplicationRecord ...@@ -70,9 +70,9 @@ class University::Person < ApplicationRecord
belongs_to :user, optional: true belongs_to :user, optional: true
has_and_belongs_to_many :research_journal_articles, has_and_belongs_to_many :research_journal_papers,
class_name: 'Research::Journal::Article', class_name: 'Research::Journal::Paper',
join_table: :research_journal_articles_researchers, join_table: :research_journal_papers_researchers,
foreign_key: :researcher_id foreign_key: :researcher_id
has_many :communication_website_posts, has_many :communication_website_posts,
...@@ -96,7 +96,7 @@ class University::Person < ApplicationRecord ...@@ -96,7 +96,7 @@ class University::Person < ApplicationRecord
has_many :researcher_websites, has_many :researcher_websites,
-> { distinct }, -> { distinct },
through: :research_journal_articles, through: :research_journal_papers,
source: :websites source: :websites
has_many :teacher_websites, has_many :teacher_websites,
......
...@@ -24,5 +24,5 @@ administrators: <%= @website.special_page(:persons).path_without_language %>:slu ...@@ -24,5 +24,5 @@ administrators: <%= @website.special_page(:persons).path_without_language %>:slu
teachers: <%= @website.special_page(:persons).path_without_language %>:slug/programs/ teachers: <%= @website.special_page(:persons).path_without_language %>:slug/programs/
<% end %> <% end %>
<% if @website.has_researchers? %> <% if @website.has_researchers? %>
researchers: <%= @website.special_page(:persons).path_without_language %>:slug/articles/ researchers: <%= @website.special_page(:persons).path_without_language %>:slug/papers/
<% end %> <% end %>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment