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 0000000000000000000000000000000000000000..cc4f5fbc7e3bceb210998b6b7b516ac5fad56b6a --- /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 0000000000000000000000000000000000000000..007adc7ba2da0af43ab60fdc5f227ac6dede3e03 --- /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 df30f310aab2c5771f3e32f159feefee8675c88f..0f81f22ecb6a05b3e3a53fe50ca8645f57f5f83a 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 debcd5881b509255b8fc91a4c6596110019b4f0d..2d085e61bf783e13037be29c57294e58b3476801 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 0000000000000000000000000000000000000000..c95c7132ad3bc40c06aa63fa1edfa19f1abcbcf4 --- /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 0000000000000000000000000000000000000000..65db9df9c1f737ca807539f5915ac25b22c4db79 --- /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 27c4abcd11070866e1fb731dcfd863384b7f0f9f..4e64a85395a9d865503163c4ea92684696f4bc44 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 1e4b5e769f35e002067a223b2224e2d9afecdc85..75bec5370042ed02618cebe244a675b58b2d5b34 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]