From f1a344b64f421d6eaadad6af4ee507ce2779f070 Mon Sep 17 00:00:00 2001 From: pabois <pierreandre.boissinot@noesya.coop> Date: Tue, 14 Dec 2021 18:02:06 +0100 Subject: [PATCH] wip members --- .../website/authors_controller.rb | 55 ++----------------- .../admin/research/researchers_controller.rb | 48 ++-------------- app/models/administration/member.rb | 14 +++++ app/models/communication/website/post.rb | 4 +- app/models/research/journal/article.rb | 5 +- .../members/_main_infos.html.erb | 28 ++++++++++ .../website/authors/_form.html.erb | 37 ------------- .../website/authors/_list.html.erb | 19 ++----- .../website/authors/edit.html.erb | 5 -- .../website/authors/index.html.erb | 10 ++-- .../website/authors/new.html.erb | 5 -- .../website/authors/show.html.erb | 46 +++------------- .../website/menus/index.html.erb | 8 ++- .../website/posts/_form.html.erb | 2 +- .../website/posts/index.html.erb | 8 ++- .../research/journal/articles/_form.html.erb | 2 +- .../research/journal/articles/_list.html.erb | 6 +- .../research/journal/articles/show.html.erb | 2 +- .../admin/research/researchers/_form.html.erb | 29 ---------- .../admin/research/researchers/edit.html.erb | 3 - .../admin/research/researchers/index.html.erb | 23 +++----- .../admin/research/researchers/new.html.erb | 3 - .../admin/research/researchers/show.html.erb | 44 ++++----------- config/locales/communication/en.yml | 2 + config/locales/communication/fr.yml | 2 + config/locales/research/en.yml | 3 + config/locales/research/fr.yml | 3 + config/routes/admin/communication.rb | 6 +- config/routes/admin/research.rb | 2 +- ...ex_on_communication_website_post_author.rb | 6 ++ ..._on_research_journal_article_researcher.rb | 6 ++ db/schema.rb | 6 +- 32 files changed, 138 insertions(+), 304 deletions(-) create mode 100644 app/views/admin/administration/members/_main_infos.html.erb delete mode 100644 app/views/admin/communication/website/authors/_form.html.erb delete mode 100644 app/views/admin/communication/website/authors/edit.html.erb delete mode 100644 app/views/admin/communication/website/authors/new.html.erb delete mode 100644 app/views/admin/research/researchers/_form.html.erb delete mode 100644 app/views/admin/research/researchers/edit.html.erb delete mode 100644 app/views/admin/research/researchers/new.html.erb create mode 100644 db/migrate/20211214150454_change_index_on_communication_website_post_author.rb create mode 100644 db/migrate/20211214163501_change_index_on_research_journal_article_researcher.rb diff --git a/app/controllers/admin/communication/website/authors_controller.rb b/app/controllers/admin/communication/website/authors_controller.rb index 432d5e02d..d53ac3ba9 100644 --- a/app/controllers/admin/communication/website/authors_controller.rb +++ b/app/controllers/admin/communication/website/authors_controller.rb @@ -1,68 +1,23 @@ class Admin::Communication::Website::AuthorsController < Admin::Communication::Website::ApplicationController - load_and_authorize_resource class: Communication::Website::Author, through: :website def index - @authors = @website.authors.ordered.page(params[:page]) + @authors = current_university.members.authors.accessible_by(current_ability).ordered.page(params[:page]) breadcrumb end def show - @posts = @author.posts.ordered.page(params[:page]) + @author = current_university.members.authors.accessible_by(current_ability).find(params[:id]) + @posts = @author.communication_website_posts.ordered.page(params[:page]) breadcrumb end - def publish - @author.force_publish! - redirect_to admin_communication_website_author_path(@author), notice: t('admin.will_be_published_html', model: @author.to_s) - end - - def new - @author.website = @website - breadcrumb - end - - def edit - breadcrumb - add_breadcrumb t('edit') - end - - def create - @author.website = @website - if @author.save - redirect_to admin_communication_website_author_path(@author), notice: t('admin.successfully_created_html', model: @author.to_s) - else - breadcrumb - render :new, status: :unprocessable_entity - end - end - - def update - if @author.update(author_params) - redirect_to admin_communication_website_author_path(@author), notice: t('admin.successfully_updated_html', model: @author.to_s) - else - breadcrumb - add_breadcrumb t('edit') - render :edit, status: :unprocessable_entity - end - end - - def destroy - @author.destroy - redirect_to admin_communication_website_authors_url, notice: t('admin.successfully_destroyed_html', model: @author.to_s) - end - protected def breadcrumb super - add_breadcrumb Communication::Website::Author.model_name.human(count: 2), - admin_communication_website_authors_path + add_breadcrumb Communication::Website::Author.model_name.human(count: 2), + admin_communication_website_authors_path breadcrumb_for @author end - def author_params - params.require(:communication_website_author) - .permit(:website_id, :first_name, :last_name, :biography, :slug, :user_id) - .merge(university_id: current_university.id) - end end diff --git a/app/controllers/admin/research/researchers_controller.rb b/app/controllers/admin/research/researchers_controller.rb index 47253a651..e8eeec4de 100644 --- a/app/controllers/admin/research/researchers_controller.rb +++ b/app/controllers/admin/research/researchers_controller.rb @@ -1,61 +1,23 @@ class Admin::Research::ResearchersController < Admin::Research::ApplicationController - load_and_authorize_resource class: Research::Researcher, - through: :current_university, - through_association: :research_researchers def index - @researchers = @researchers.ordered.page(params[:page]) + @researchers = current_university.members.researchers.accessible_by(current_ability).ordered.page(params[:page]) breadcrumb end def show + @researcher = current_university.members.authors.accessible_by(current_ability).find(params[:id]) + @articles = @researcher.research_journal_articles.ordered.page(params[:page]) breadcrumb end - def new - breadcrumb - end - - def edit - breadcrumb - add_breadcrumb t('edit') - end - - def create - if @researcher.save - redirect_to [:admin, @researcher], notice: t('admin.successfully_created_html', model: @researcher.to_s) - else - breadcrumb - render :new, status: :unprocessable_entity - end - end - - def update - if @researcher.update(researcher_params) - redirect_to [:admin, @researcher], notice: t('admin.successfully_updated_html', model: @researcher.to_s) - else - breadcrumb - add_breadcrumb t('edit') - render :edit, status: :unprocessable_entity - end - end - - def destroy - @researcher.destroy - redirect_to admin_research_researchers_url, notice: t('admin.successfully_destroyed_html', model: @researcher.to_s) - end - protected def breadcrumb super - add_breadcrumb Research::Researcher.model_name.human(count: 2), admin_research_researchers_path + add_breadcrumb Research::Researcher.model_name.human(count: 2), + admin_research_researchers_path breadcrumb_for @researcher end - def researcher_params - params.require(:research_researcher) - .permit(:first_name, :last_name, :slug, :biography, :user_id) - .merge(university_id: current_university.id) - end end diff --git a/app/models/administration/member.rb b/app/models/administration/member.rb index 4d428784d..c8b5a5364 100644 --- a/app/models/administration/member.rb +++ b/app/models/administration/member.rb @@ -34,7 +34,21 @@ class Administration::Member < ApplicationRecord belongs_to :university belongs_to :user, optional: true + has_many :communication_website_posts, + class_name: 'Communication::Website::Post', + foreign_key: :author_id, + dependent: :nullify + + has_and_belongs_to_many :research_journal_articles, + class_name: 'Research::Journal::Article', + join_table: :research_journal_articles_researchers, + foreign_key: :researcher_id + scope :ordered, -> { order(:last_name, :first_name) } + scope :administratives, -> { where(is_administrative: true) } + scope :authors, -> { where(is_author: true) } + scope :teachers, -> { where(is_teacher: true) } + scope :researchers, -> { where(is_researcher: true) } def to_s "#{last_name} #{first_name}" diff --git a/app/models/communication/website/post.rb b/app/models/communication/website/post.rb index 791b8b15a..2f31471eb 100644 --- a/app/models/communication/website/post.rb +++ b/app/models/communication/website/post.rb @@ -24,7 +24,7 @@ # # Foreign Keys # -# fk_rails_... (author_id => communication_website_authors.id) +# fk_rails_... (author_id => administration_members.id) # fk_rails_... (communication_website_id => communication_websites.id) # fk_rails_... (university_id => universities.id) # @@ -43,7 +43,7 @@ class Communication::Website::Post < ApplicationRecord belongs_to :website, foreign_key: :communication_website_id belongs_to :author, - class_name: 'Communication::Website::Author', + class_name: 'Administration::Member', optional: true has_and_belongs_to_many :categories, class_name: 'Communication::Website::Category', diff --git a/app/models/research/journal/article.rb b/app/models/research/journal/article.rb index 5d28a34f0..981887685 100644 --- a/app/models/research/journal/article.rb +++ b/app/models/research/journal/article.rb @@ -41,7 +41,10 @@ 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, class_name: 'Research::Researcher' + has_and_belongs_to_many :researchers, + class_name: 'Administration::Member', + join_table: :research_journal_articles_researchers, + association_foreign_key: :researcher_id has_many :websites, -> { distinct }, through: :journal validates :title, :published_at, presence: true diff --git a/app/views/admin/administration/members/_main_infos.html.erb b/app/views/admin/administration/members/_main_infos.html.erb new file mode 100644 index 000000000..0bc1dc6e9 --- /dev/null +++ b/app/views/admin/administration/members/_main_infos.html.erb @@ -0,0 +1,28 @@ +<div class="row"> + <div class="col-md-8"> + <div class="card flex-fill w-100"> + <div class="card-header"> + <h2 class="card-title mb-0 h5"><%= t('content') %></h2> + </div> + <div class="card-body"> + <h3 class="h5"><%= Administration::Member.human_attribute_name('biography') %></h3> + <%= member.biography %> + </div> + </div> + </div> + <div class="col-md-4"> + <div class="card flex-fill w-100"> + <div class="card-header"> + <h2 class="card-title mb-0 h5"><%= t('metadata') %></h2> + </div> + <div class="card-body"> + <h3 class="h5"><%= Administration::Member.human_attribute_name('slug') %></h3> + <p><%= member.slug %></p> + <% if member.user.present? %> + <h3 class="h5"><%= Administration::Member.human_attribute_name('user') %></h3> + <p><%= link_to_if can?(:read, member.user), member.user, admin_user_path(member.user) %></p> + <% end %> + </div> + </div> + </div> +</div> diff --git a/app/views/admin/communication/website/authors/_form.html.erb b/app/views/admin/communication/website/authors/_form.html.erb deleted file mode 100644 index 0058427ac..000000000 --- a/app/views/admin/communication/website/authors/_form.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -<%= simple_form_for [:admin, author] do |f| %> - <div class="row"> - <div class="col-md-8"> - <div class="card flex-fill w-100"> - <div class="card-header"> - <h5 class="card-title mb-0"><%= t('content') %></h5> - </div> - <div class="card-body"> - <%= f.input :first_name %> - <%= f.input :last_name %> - <%= f.input :biography, as: :rich_text_area %> - </div> - </div> - </div> - <div class="col-md-4"> - <div class="card flex-fill w-100"> - <div class="card-header"> - <h5 class="card-title mb-0"><%= t('metadata') %></h5> - </div> - <div class="card-body"> - <%= f.input :slug, - as: :string, - input_html: author.persisted? ? {} : { - class: 'js-slug-input', - data: { source: '#communication_website_author_first_name, #communication_website_author_last_name' } - } %> - <%= f.association :user, collection: current_university.users.ordered %> - <ul> - </ul> - </div> - </div> - </div> - </div> - <% content_for :action_bar_right do %> - <%= submit f %> - <% end %> -<% end %> diff --git a/app/views/admin/communication/website/authors/_list.html.erb b/app/views/admin/communication/website/authors/_list.html.erb index 96380bb00..fede64fd3 100644 --- a/app/views/admin/communication/website/authors/_list.html.erb +++ b/app/views/admin/communication/website/authors/_list.html.erb @@ -1,26 +1,15 @@ <table class="<%= table_classes %>"> <thead> <tr> - <th><%= Communication::Website::Author.human_attribute_name('name') %></th> - <th></th> + <th><%= Administration::Member.human_attribute_name('name') %></th> + <th><%= t('communication.number_of_posts') %></th> </tr> </thead> <tbody> <% authors.each do |author| %> <tr> - <td><%= link_to author, admin_communication_website_author_path(website_id: author.website.id, id: author.id) %></td> - <td class="text-end"> - <div class="btn-group" role="group"> - <%= link_to t('edit'), - edit_admin_communication_website_author_path(website_id: author.website.id, id: author.id), - class: button_classes %> - <%= link_to t('delete'), - admin_communication_website_author_path(website_id: author.website.id, id: author.id), - method: :delete, - data: { confirm: t('please-confirm') }, - class: button_classes_danger %> - </div> - </td> + <td><%= link_to author, admin_communication_website_author_path(website_id: @website.id, id: author.id) %></td> + <td><%= author.communication_website_posts.count %></td> </tr> <% end %> </tbody> diff --git a/app/views/admin/communication/website/authors/edit.html.erb b/app/views/admin/communication/website/authors/edit.html.erb deleted file mode 100644 index c5bbc5356..000000000 --- a/app/views/admin/communication/website/authors/edit.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -<% content_for :title, @author %> - -<%= render 'admin/communication/websites/sidebar' do %> - <%= render 'form', author: @author %> -<% end %> diff --git a/app/views/admin/communication/website/authors/index.html.erb b/app/views/admin/communication/website/authors/index.html.erb index e5d344d3d..71439e8ef 100644 --- a/app/views/admin/communication/website/authors/index.html.erb +++ b/app/views/admin/communication/website/authors/index.html.erb @@ -3,12 +3,14 @@ <%= render 'admin/communication/websites/sidebar' do %> <div class="card"> <%= render 'admin/communication/website/authors/list', authors: @authors %> - <div class="card-body"> - <%= paginate @authors, theme: 'bootstrap-5' %> - </div> + <% if @authors.total_pages > 1 %> + <div class="card-footer"> + <%= paginate @authors, theme: 'bootstrap-5' %> + </div> + <% end %> </div> <% end %> <% content_for :action_bar_right do %> - <%= create_link Communication::Website::Author %> + <%= link_to t('communication.manage_authors'), admin_administration_members_path, class: button_classes if can?(:read, Administration::Member) %> <% end %> diff --git a/app/views/admin/communication/website/authors/new.html.erb b/app/views/admin/communication/website/authors/new.html.erb deleted file mode 100644 index 1d9894c1e..000000000 --- a/app/views/admin/communication/website/authors/new.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -<% content_for :title, Communication::Website::Author.model_name.human %> - -<%= render 'admin/communication/websites/sidebar' do %> - <%= render 'form', author: @author %> -<% end %> diff --git a/app/views/admin/communication/website/authors/show.html.erb b/app/views/admin/communication/website/authors/show.html.erb index 78bdd5f6a..212a629cc 100644 --- a/app/views/admin/communication/website/authors/show.html.erb +++ b/app/views/admin/communication/website/authors/show.html.erb @@ -1,56 +1,24 @@ <% content_for :title, @author %> <%= render 'admin/communication/websites/sidebar' do %> - <div class="row"> - <div class="col-md-8"> - <div class="card flex-fill w-100"> - <div class="card-header"> - <h2 class="card-title mb-0 h5"><%= t('content') %></h2> - </div> - <div class="card-body"> - <h3 class="h5"><%= Communication::Website::Author.human_attribute_name('biography') %></h3> - <%= @author.biography %> - </div> - </div> - </div> - <div class="col-md-4"> - <div class="card flex-fill w-100"> - <div class="card-header"> - <h2 class="card-title mb-0 h5"><%= t('metadata') %></h2> - </div> - <div class="card-body"> - <h3 class="h5"><%= Communication::Website::Author.human_attribute_name('slug') %></h3> - <p><%= @author.slug %></p> - <% if @author.user.present? %> - <h3 class="h5"><%= Communication::Website::Author.human_attribute_name('user') %></h3> - <p><%= link_to_if can?(:read, @author.user), @author.user, admin_user_path(@author.user) %></p> - <% end %> - </div> - </div> - </div> - </div> + <%= render 'admin/administration/members/main_infos', member: @author %> + <% if @posts.total_count > 0 %> <div class="card"> <div class="card-header"> <h5><%= "#{Communication::Website::Post.model_name.human(count: 2)} (#{@posts.total_count})" %></h5> </div> <%= render 'admin/communication/website/posts/list', posts: @posts, hide_author: true %> - <div class="card-footer"> - <%= paginate @posts, theme: 'bootstrap-5' %> - </div> + <% if @posts.total_pages > 1 %> + <div class="card-footer"> + <%= paginate @posts, theme: 'bootstrap-5' %> + </div> + <% end %> </div> <% end %> <% end %> - -<% content_for :action_bar_left do %> - <%= link_to t('communication.website.force_publication'), - publish_admin_communication_website_author_path(@author), - method: :post, - class: button_classes %> -<% end %> - <% content_for :action_bar_right do %> <%= edit_link @author %> <% end %> diff --git a/app/views/admin/communication/website/menus/index.html.erb b/app/views/admin/communication/website/menus/index.html.erb index 03a573ee7..188904d98 100644 --- a/app/views/admin/communication/website/menus/index.html.erb +++ b/app/views/admin/communication/website/menus/index.html.erb @@ -3,9 +3,11 @@ <%= render 'admin/communication/websites/sidebar' do %> <div class="card"> <%= render 'admin/communication/website/menus/list', menus: @menus %> - <div class="card-footer"> - <%= paginate @menus, theme: 'bootstrap-5' %> - </div> + <% if @menus.total_pages > 1 %> + <div class="card-footer"> + <%= paginate @menus, theme: 'bootstrap-5' %> + </div> + <% end %> </div> <% end %> diff --git a/app/views/admin/communication/website/posts/_form.html.erb b/app/views/admin/communication/website/posts/_form.html.erb index fb2f47dfe..7e9244dcf 100644 --- a/app/views/admin/communication/website/posts/_form.html.erb +++ b/app/views/admin/communication/website/posts/_form.html.erb @@ -26,7 +26,7 @@ } %> <%= f.input :published %> <%= f.input :published_at, html5: true %> - <%= f.association :author, collection: @website.authors.ordered if @website.authors.any? %> + <%= f.association :author, collection: current_university.members.authors.ordered %> <%= f.association :categories, as: :check_boxes, collection: @website.list_of_categories.map { |category| [ diff --git a/app/views/admin/communication/website/posts/index.html.erb b/app/views/admin/communication/website/posts/index.html.erb index ed951db10..5cf39eb63 100644 --- a/app/views/admin/communication/website/posts/index.html.erb +++ b/app/views/admin/communication/website/posts/index.html.erb @@ -3,9 +3,11 @@ <%= render 'admin/communication/websites/sidebar' do %> <div class="card"> <%= render 'admin/communication/website/posts/list', posts: @posts, hide_author: true, hide_category: true %> - <div class="card-footer"> - <%= paginate @posts, theme: 'bootstrap-5' %> - </div> + <% if @posts.total_pages > 1 %> + <div class="card-footer"> + <%= paginate @posts, theme: 'bootstrap-5' %> + </div> + <% end %> </div> <% end %> diff --git a/app/views/admin/research/journal/articles/_form.html.erb b/app/views/admin/research/journal/articles/_form.html.erb index a37138e11..1ca5b93cb 100644 --- a/app/views/admin/research/journal/articles/_form.html.erb +++ b/app/views/admin/research/journal/articles/_form.html.erb @@ -29,7 +29,7 @@ <%= f.association :volume, collection: @journal.volumes, label: Research::Journal::Volume.model_name.human %> <%= f.input :published_at, html5: true %> <%= f.input :keywords, as: :text, input_html: { rows: 2 } %> - <%= f.association :researchers, collection: current_university.research_researchers.ordered, as: :check_boxes %> + <%= f.association :researchers, collection: current_university.members.researchers.ordered, as: :check_boxes %> </div> </div> </div> diff --git a/app/views/admin/research/journal/articles/_list.html.erb b/app/views/admin/research/journal/articles/_list.html.erb index 3d8425c40..d5e338ea9 100644 --- a/app/views/admin/research/journal/articles/_list.html.erb +++ b/app/views/admin/research/journal/articles/_list.html.erb @@ -9,15 +9,15 @@ <tbody> <% articles.each do |article| %> <tr> - <td><%= link_to article, admin_research_journal_article_path(journal_id: @journal, id: article) %></td> + <td><%= link_to article, admin_research_journal_article_path(journal_id: article.journal, id: article) %></td> <td><%= article.published_at %></td> <td class="text-end"> <div class="btn-group" role="group"> <%= link_to t('edit'), - edit_admin_research_journal_article_path(journal_id: @journal, id: article), + edit_admin_research_journal_article_path(journal_id: article.journal, id: article), class: button_classes %> <%= link_to t('delete'), - admin_research_journal_article_path(journal_id: @journal, id: article), + admin_research_journal_article_path(journal_id: article.journal, id: article), method: :delete, data: { confirm: t('please-confirm') }, class: button_classes_danger %> diff --git a/app/views/admin/research/journal/articles/show.html.erb b/app/views/admin/research/journal/articles/show.html.erb index 948d91e06..3d1b9e68b 100644 --- a/app/views/admin/research/journal/articles/show.html.erb +++ b/app/views/admin/research/journal/articles/show.html.erb @@ -40,7 +40,7 @@ <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, researcher] %></li> + <li><%= link_to researcher, admin_research_researcher_path(researcher) %></li> <% end %> </ul> <% end %> diff --git a/app/views/admin/research/researchers/_form.html.erb b/app/views/admin/research/researchers/_form.html.erb deleted file mode 100644 index aecb1a416..000000000 --- a/app/views/admin/research/researchers/_form.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -<%= simple_form_for [:admin, researcher] do |f| %> -<div class="row"> - <div class="col-md-4"> - <div class="card flex-fill w-100"> - <div class="card-body"> - <%= f.input :first_name %> - <%= f.input :last_name %> - <%= f.input :slug, - as: :string, - input_html: researcher.persisted? ? {} : { - class: 'js-slug-input', - data: { source: '#research_researcher_first_name, #research_researcher_last_name' } - } %> - <%= f.association :user, collection: current_university.users.ordered %> - </div> - </div> - </div> - <div class="col-md-8"> - <div class="card flex-fill w-100"> - <div class="card-body"> - <%= f.input :biography, as: :rich_text_area %> - </div> - </div> - </div> -</div> - <% content_for :action_bar_right do %> - <%= submit f %> - <% end %> -<% end %> diff --git a/app/views/admin/research/researchers/edit.html.erb b/app/views/admin/research/researchers/edit.html.erb deleted file mode 100644 index fbfc680d7..000000000 --- a/app/views/admin/research/researchers/edit.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -<% content_for :title, @researcher%> - -<%= render 'form', researcher: @researcher %> diff --git a/app/views/admin/research/researchers/index.html.erb b/app/views/admin/research/researchers/index.html.erb index 3f4104f02..a5a705318 100644 --- a/app/views/admin/research/researchers/index.html.erb +++ b/app/views/admin/research/researchers/index.html.erb @@ -3,32 +3,25 @@ <table class="table"> <thead> <tr> - <th><%= Research::Researcher.human_attribute_name('last_name') %></th> - <th><%= Research::Researcher.human_attribute_name('first_name') %></th> - <th><%= Research::Researcher.human_attribute_name('user') %></th> - <th></th> + <th><%= Administration::Member.human_attribute_name('name') %></th> + <th><%= t('research.number_of_articles') %></th> </tr> </thead> <tbody> <% @researchers.each do |researcher| %> <tr> - <td><%= link_to researcher.last_name, [:admin, researcher] %></td> - <td><%= link_to researcher.first_name, [:admin, researcher] %></td> - <td><%= link_to researcher.user, [:admin, researcher.user] if researcher.user %></td> - <td class="text-end"> - <div class="btn-group" role="group"> - <%= edit_link researcher %> - <%= destroy_link researcher %> - </div> - </td> + <td><%= link_to researcher, admin_research_researcher_path(researcher) %></td> + <td><%= researcher.research_journal_articles.count %></td> </tr> <% end %> </tbody> </table> -<%= paginate @researchers, theme: 'bootstrap-5' %> +<% if @researchers.total_pages > 1 %> + <%= paginate @researchers, theme: 'bootstrap-5' %> +<% end %> <% content_for :action_bar_right do %> - <%= create_link Research::Researcher %> + <%= link_to t('research.manage_researchers'), admin_administration_members_path, class: button_classes if can?(:read, Administration::Member) %> <% end %> diff --git a/app/views/admin/research/researchers/new.html.erb b/app/views/admin/research/researchers/new.html.erb deleted file mode 100644 index 862c45f3c..000000000 --- a/app/views/admin/research/researchers/new.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -<% content_for :title, Research::Researcher.model_name.human %> - -<%= render 'form', researcher: @researcher %> diff --git a/app/views/admin/research/researchers/show.html.erb b/app/views/admin/research/researchers/show.html.erb index e50282dea..1a6d84fac 100644 --- a/app/views/admin/research/researchers/show.html.erb +++ b/app/views/admin/research/researchers/show.html.erb @@ -1,40 +1,20 @@ <% content_for :title, @researcher %> -<div class="row"> - <div class="col-md-8"> - <div class="card flex-fill w-100"> - <div class="card-header"> - <h2 class="card-title mb-0 h5"><%= t('content') %></h2> - </div> - <div class="card-body"> - <h3 class="h5"><%= Research::Researcher.human_attribute_name('biography') %></h3> - <%= @researcher.biography %> - <% if @researcher.articles.any? %> - <h3 class="h5 mt-4"><%= Research::Researcher.human_attribute_name('articles') %></h3> - <ul> - <% @researcher.articles.each do |article| %> - <li><%= link_to article, admin_research_journal_article_path(journal_id: article.journal.id, id: article) %></li> - <% end %> - </ul> - <% end %> - </div> +<%= render 'admin/administration/members/main_infos', member: @researcher %> + +<% if @articles.total_count > 0 %> + <div class="card"> + <div class="card-header"> + <h5><%= "#{Research::Journal::Article.model_name.human(count: 2)} (#{@articles.total_count})" %></h5> </div> - </div> - <div class="col-md-4"> - <div class="card flex-fill w-100"> - <div class="card-header"> - <h2 class="card-title mb-0 h5"><%= t('metadata') %></h2> + <%= render 'admin/research/journal/articles/list', articles: @articles %> + <% if @articles.total_pages > 1 %> + <div class="card-footer"> + <%= paginate @articles, theme: 'bootstrap-5' %> </div> - <div class="card-body"> - <% if @researcher.user %> - <h3 class="h5"><%= Research::Researcher.human_attribute_name('user') %></h3> - <p><%= link_to @researcher.user, [:admin, @researcher.user] %></p> - <% end %> - </div> - </div> + <% end %> </div> -</div> - +<% end %> <% content_for :action_bar_right do %> <%= edit_link @researcher %> diff --git a/config/locales/communication/en.yml b/config/locales/communication/en.yml index 232963c1b..028fe052c 100644 --- a/config/locales/communication/en.yml +++ b/config/locales/communication/en.yml @@ -1,5 +1,7 @@ en: communication: + manage_authors: Manage authors + number_of_posts: Nunber of posts website: force_publication: 'Force publication' imported: diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml index 8c70d4361..36196b318 100644 --- a/config/locales/communication/fr.yml +++ b/config/locales/communication/fr.yml @@ -1,5 +1,7 @@ fr: communication: + manage_authors: Gérer les auteurs + number_of_posts: Nombre d'actualités website: force_publication: 'Forcer la publication' imported: diff --git a/config/locales/research/en.yml b/config/locales/research/en.yml index 0f66cd6e1..c6770e1d7 100644 --- a/config/locales/research/en.yml +++ b/config/locales/research/en.yml @@ -1,4 +1,7 @@ en: + research: + manage_researchers: Managege researchers + number_of_articles: Number of articles activemodel: models: research: Research diff --git a/config/locales/research/fr.yml b/config/locales/research/fr.yml index 454e569f8..6a2a44920 100644 --- a/config/locales/research/fr.yml +++ b/config/locales/research/fr.yml @@ -1,4 +1,7 @@ fr: + research: + manage_researchers: Gérer les Chercheu·rs·ses + number_of_articles: Nombre d'articles activemodel: models: research: Recherche diff --git a/config/routes/admin/communication.rb b/config/routes/admin/communication.rb index 0b94e89b9..ec6dc3e69 100644 --- a/config/routes/admin/communication.rb +++ b/config/routes/admin/communication.rb @@ -25,11 +25,7 @@ namespace :communication do post :publish end end - resources :authors, controller: 'website/authors' do - member do - post :publish - end - end + resources :authors, controller: 'website/authors', only: [:index, :show] resources :posts, controller: 'website/posts' do member do post :publish diff --git a/config/routes/admin/research.rb b/config/routes/admin/research.rb index 45d9c173d..678f7e597 100644 --- a/config/routes/admin/research.rb +++ b/config/routes/admin/research.rb @@ -1,5 +1,5 @@ namespace :research do - resources :researchers + resources :researchers, only: [:index, :show] resources :journals do resources :volumes, controller: 'journal/volumes' resources :articles, controller: 'journal/articles' diff --git a/db/migrate/20211214150454_change_index_on_communication_website_post_author.rb b/db/migrate/20211214150454_change_index_on_communication_website_post_author.rb new file mode 100644 index 000000000..708b31c7c --- /dev/null +++ b/db/migrate/20211214150454_change_index_on_communication_website_post_author.rb @@ -0,0 +1,6 @@ +class ChangeIndexOnCommunicationWebsitePostAuthor < ActiveRecord::Migration[6.1] + def change + remove_foreign_key :communication_website_posts, column: :author_id + add_foreign_key :communication_website_posts, :administration_members, column: :author_id + end +end diff --git a/db/migrate/20211214163501_change_index_on_research_journal_article_researcher.rb b/db/migrate/20211214163501_change_index_on_research_journal_article_researcher.rb new file mode 100644 index 000000000..a086077cf --- /dev/null +++ b/db/migrate/20211214163501_change_index_on_research_journal_article_researcher.rb @@ -0,0 +1,6 @@ +class ChangeIndexOnResearchJournalArticleResearcher < ActiveRecord::Migration[6.1] + def change + remove_foreign_key :research_journal_articles_researchers, column: :researcher_id + add_foreign_key :research_journal_articles_researchers, :administration_members, column: :researcher_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 73cdaade8..bf36c61b9 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: 2021_12_14_101323) do +ActiveRecord::Schema.define(version: 2021_12_14_163501) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" @@ -604,7 +604,7 @@ ActiveRecord::Schema.define(version: 2021_12_14_101323) do add_foreign_key "communication_website_pages", "communication_website_pages", column: "parent_id" add_foreign_key "communication_website_pages", "communication_websites" add_foreign_key "communication_website_pages", "universities" - add_foreign_key "communication_website_posts", "communication_website_authors", column: "author_id" + add_foreign_key "communication_website_posts", "administration_members", column: "author_id" add_foreign_key "communication_website_posts", "communication_websites" add_foreign_key "communication_website_posts", "universities" add_foreign_key "communication_websites", "universities" @@ -617,8 +617,8 @@ ActiveRecord::Schema.define(version: 2021_12_14_101323) do add_foreign_key "research_journal_articles", "research_journals" add_foreign_key "research_journal_articles", "universities" add_foreign_key "research_journal_articles", "users", column: "updated_by_id" + add_foreign_key "research_journal_articles_researchers", "administration_members", column: "researcher_id" add_foreign_key "research_journal_articles_researchers", "research_journal_articles", column: "article_id" - add_foreign_key "research_journal_articles_researchers", "research_researchers", column: "researcher_id" add_foreign_key "research_journal_volumes", "research_journals" add_foreign_key "research_journal_volumes", "universities" add_foreign_key "research_journals", "universities" -- GitLab