From 4996f786d513b5ce9671fc681e16285d7ee91bee Mon Sep 17 00:00:00 2001 From: Arnaud Levy <contact@arnaudlevy.com> Date: Mon, 27 Feb 2023 05:47:17 +0100 Subject: [PATCH] extranet nav --- .../extranets/alumni_controller.rb | 11 +++++++ .../extranets/application_controller.rb | 22 +++++++++++++ .../communication/extranets_controller.rb | 5 --- app/services/icon.rb | 2 ++ .../communication/extranets/_sidebar.html.erb | 33 +++++++++++++++++++ .../extranets/alumni/index.html.erb | 28 ++++++++++++++++ .../communication/extranets/show.html.erb | 25 ++------------ config/routes/admin/communication.rb | 4 ++- 8 files changed, 101 insertions(+), 29 deletions(-) create mode 100644 app/controllers/admin/communication/extranets/alumni_controller.rb create mode 100644 app/controllers/admin/communication/extranets/application_controller.rb create mode 100644 app/views/admin/communication/extranets/_sidebar.html.erb create mode 100644 app/views/admin/communication/extranets/alumni/index.html.erb diff --git a/app/controllers/admin/communication/extranets/alumni_controller.rb b/app/controllers/admin/communication/extranets/alumni_controller.rb new file mode 100644 index 000000000..cc4f5fbc7 --- /dev/null +++ b/app/controllers/admin/communication/extranets/alumni_controller.rb @@ -0,0 +1,11 @@ +class Admin::Communication::Extranets::AlumniController < Admin::Communication::Extranets::ApplicationController + def index + @about = @extranet.about + @alumni = @extranet.alumni + @cohorts = @extranet.cohorts + @years = @extranet.years + @organizations = @extranet.organizations + breadcrumb + add_breadcrumb Communication::Extranet.human_attribute_name(:feature_alumni) + end +end \ No newline at end of file diff --git a/app/controllers/admin/communication/extranets/application_controller.rb b/app/controllers/admin/communication/extranets/application_controller.rb new file mode 100644 index 000000000..007adc7ba --- /dev/null +++ b/app/controllers/admin/communication/extranets/application_controller.rb @@ -0,0 +1,22 @@ +class Admin::Communication::Extranets::ApplicationController < Admin::Communication::ApplicationController + load_and_authorize_resource :extranet, + class: Communication::Extranet, + through: :current_university, + through_association: :communication_extranets + + protected + + def breadcrumb + super + add_breadcrumb Communication::Extranet.model_name.human(count: 2), admin_communication_extranets_path + breadcrumb_for @extranet + end + + def default_url_options + options = {} + if @extranet.present? + options[:extranet_id] = @extranet.id + end + options + end +end diff --git a/app/controllers/admin/communication/extranets_controller.rb b/app/controllers/admin/communication/extranets_controller.rb index df30f310a..0f81f22ec 100644 --- a/app/controllers/admin/communication/extranets_controller.rb +++ b/app/controllers/admin/communication/extranets_controller.rb @@ -12,11 +12,6 @@ class Admin::Communication::ExtranetsController < Admin::Communication::Applicat end def show - @about = @extranet.about - @alumni = @extranet.alumni - @cohorts = @extranet.cohorts - @years = @extranet.years - @organizations = @extranet.organizations breadcrumb end diff --git a/app/services/icon.rb b/app/services/icon.rb index debcd5881..2d085e61b 100644 --- a/app/services/icon.rb +++ b/app/services/icon.rb @@ -15,6 +15,8 @@ class Icon COMMUNICATION_WEBSITE_PREVIEW_DESKTOP = 'fas fa-laptop' COMMUNICATION_WEBSITE_MENU_BLANK = 'fas fa-font' COMMUNICATION_WEBSITE_MENU_URL = 'fas fa-globe' + COMMUNICATION_EXTRANET_HOME = COMMUNICATION_WEBSITE_HOME + COMMUNICATION_EXTRANET_ALUMNI = 'fas fa-user-graduate' COMMUNICATION_NEWSLETTERS = 'fas fa-envelope' EDUCATION_DIPLOMA = 'fas fa-graduation-cap' diff --git a/app/views/admin/communication/extranets/_sidebar.html.erb b/app/views/admin/communication/extranets/_sidebar.html.erb new file mode 100644 index 000000000..c95c7132a --- /dev/null +++ b/app/views/admin/communication/extranets/_sidebar.html.erb @@ -0,0 +1,33 @@ +<div class="row mt-2 website__sidebar"> + <div class="col-lg-3 col-xl-2"> + <ul class="list-unstyled" role="tablist"> + <% + navigation = [ + { + title: Communication::Extranet.model_name.human, + path: admin_communication_extranet_path(id: @extranet), + icon: Icon::COMMUNICATION_EXTRANET_HOME + }, + { + title: Communication::Extranet.human_attribute_name(:feature_alumni), + path: admin_communication_extranet_alumni_path(extranet_id: @extranet), + icon: Icon::COMMUNICATION_EXTRANET_ALUMNI + }, + ] + navigation.each_with_index do |object, index| + active = index.zero? ? controller_name == "extranets" && action_name == "show" + : object[:path].in?(request.path) + %> + <li class="mb-3"> + <a class="d-block py-1 <%= active ? 'text-black' : 'text-muted' %>" href="<%= object[:path] %>"> + <i class="<%= object[:icon] %>" style="min-width: 30px"></i> + <%= object[:title].html_safe %> + </a> + </li> + <% end %> + </ul> + </div> + <div class="col-lg-9 col-xl-10"> + <%= yield %> + </div> +</div> diff --git a/app/views/admin/communication/extranets/alumni/index.html.erb b/app/views/admin/communication/extranets/alumni/index.html.erb new file mode 100644 index 000000000..65db9df9c --- /dev/null +++ b/app/views/admin/communication/extranets/alumni/index.html.erb @@ -0,0 +1,28 @@ +<% content_for :title, Communication::Extranet.human_attribute_name(:feature_alumni) %> + +<%= render 'admin/communication/extranets/sidebar' do %> + <% if @alumni %> + <p> + <%= @alumni.count %> + <%= University::Person::Alumnus.model_name.human(count: @alumni.count).downcase %> + </p> + <% end %> + <% if @cohorts %> + <p> + <%= @cohorts.count %> + <%= Education::Cohort.model_name.human(count: @cohorts.count).downcase %> + </p> + <% end %> + <% if @years %> + <p> + <%= @years.count %> + <%= Education::AcademicYear.model_name.human(count: @years.count).downcase %> + </p> + <% end %> + <% if @organizations %> + <p> + <%= @organizations.count %> + <%= University::Organization.model_name.human(count: @organizations.count).downcase %> + </p> + <% end %> +<% end %> \ No newline at end of file diff --git a/app/views/admin/communication/extranets/show.html.erb b/app/views/admin/communication/extranets/show.html.erb index 27c4abcd1..4e64a8539 100644 --- a/app/views/admin/communication/extranets/show.html.erb +++ b/app/views/admin/communication/extranets/show.html.erb @@ -10,29 +10,8 @@ <% end %> <% end %> -<% if @alumni %> - <p> - <%= @alumni.count %> - <%= University::Person::Alumnus.model_name.human(count: @alumni.count).downcase %> - </p> -<% end %> -<% if @cohorts %> - <p> - <%= @cohorts.count %> - <%= Education::Cohort.model_name.human(count: @cohorts.count).downcase %> - </p> -<% end %> -<% if @years %> - <p> - <%= @years.count %> - <%= Education::AcademicYear.model_name.human(count: @years.count).downcase %> - </p> -<% end %> -<% if @organizations %> - <p> - <%= @organizations.count %> - <%= University::Organization.model_name.human(count: @organizations.count).downcase %> - </p> +<%= render 'admin/communication/extranets/sidebar' do %> + <% end %> <% content_for :action_bar_left do %> diff --git a/config/routes/admin/communication.rb b/config/routes/admin/communication.rb index 1e4b5e769..75bec5370 100644 --- a/config/routes/admin/communication.rb +++ b/config/routes/admin/communication.rb @@ -65,7 +65,9 @@ namespace :communication do post :duplicate end end - resources :extranets, controller: 'extranets' + resources :extranets, controller: 'extranets' do + resources :alumni, only: :index, controller: 'extranets/alumni' + end resources :alumni do collection do resources :imports, only: [:index, :show, :new, :create] -- GitLab