diff --git a/app/controllers/admin/communication/extranets_controller.rb b/app/controllers/admin/communication/extranets_controller.rb index 0329293ca8109949ecd81eb37556e0bc94c3e524..c4ca5d22ae83ccda613e1cc2fbb91ec39ca43b1f 100644 --- a/app/controllers/admin/communication/extranets_controller.rb +++ b/app/controllers/admin/communication/extranets_controller.rb @@ -55,6 +55,6 @@ class Admin::Communication::ExtranetsController < Admin::Communication::Applicat def extranet_params params.require(:communication_extranet) - .permit(:name, :domain) + .permit(:name, :domain, :logo, :logo_delete) end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c21323d51354df8dd2e94efec70a7f8c8b9a9790..b296bd1603094237c05fa47fa3d948a30040fde1 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,7 +1,7 @@ class ApplicationController < ActionController::Base include WithErrors include WithLocale - include WithUniversity + include WithDomain def breadcrumb add_breadcrumb t('home'), root_path diff --git a/app/controllers/application_controller/with_domain.rb b/app/controllers/application_controller/with_domain.rb new file mode 100644 index 0000000000000000000000000000000000000000..6311d132c8ee6c5ff8adba5992a960205c52a822 --- /dev/null +++ b/app/controllers/application_controller/with_domain.rb @@ -0,0 +1,30 @@ +module ApplicationController::WithDomain + extend ActiveSupport::Concern + + included do + def current_extranet + @current_extranet ||= Communication::Extranet.with_host(request.host) + end + helper_method :current_extranet + + def current_university + @current_university ||= begin + current_extranet.present? ? current_extranet.university + : University.with_host(request.host) + end + end + helper_method :current_university + + def current_context + @current_context ||= begin + # Take the extranet as a context + context = current_extranet + # If no extranet, university becomes the context + context ||= current_university + # Return context, might be nil if neither extranet nor university + context + end + end + helper_method :current_context + end +end diff --git a/app/controllers/application_controller/with_university.rb b/app/controllers/application_controller/with_university.rb deleted file mode 100644 index 6fa37e2878780bede8d647ca08200a701b0ea6a1..0000000000000000000000000000000000000000 --- a/app/controllers/application_controller/with_university.rb +++ /dev/null @@ -1,11 +0,0 @@ -module ApplicationController::WithUniversity - extend ActiveSupport::Concern - - included do - # Raises ActiveRecord::RecordNotFound to prevent access from non-listed hosts - def current_university - @current_university ||= University.with_host(request.host) - end - helper_method :current_university - end -end diff --git a/app/models/communication/extranet.rb b/app/models/communication/extranet.rb index ee7404ad87d539ce1d29c71cc6dd5d0447311483..3ab3df33121f64dedf46635849f7c8c5d05501d9 100644 --- a/app/models/communication/extranet.rb +++ b/app/models/communication/extranet.rb @@ -22,6 +22,12 @@ class Communication::Extranet < ApplicationRecord validates_presence_of :name, :domain + has_one_attached_deletable :logo + + def self.with_host(host) + find_by domain: host + end + def url "https://#{domain}" end diff --git a/app/models/university/with_identifier.rb b/app/models/university/with_identifier.rb index f11d17f1aa274493d15a5e27c5934b0f14702aca..1e7815b69b4d3f25356d8101dfb5ed53141a0515 100644 --- a/app/models/university/with_identifier.rb +++ b/app/models/university/with_identifier.rb @@ -14,7 +14,7 @@ module University::WithIdentifier end def self.with_host(host) - find_by!(identifier: extract_identifier_from(host)) + find_by identifier: extract_identifier_from(host) end private diff --git a/app/views/admin/communication/extranets/_form.html.erb b/app/views/admin/communication/extranets/_form.html.erb index b4b40af7ca312246322e4e4941a10c45de99b959..bcd279d9ffa618ad56fafa8680f599cfabc4c410 100644 --- a/app/views/admin/communication/extranets/_form.html.erb +++ b/app/views/admin/communication/extranets/_form.html.erb @@ -8,6 +8,22 @@ <div class="card-body"> <%= f.input :name %> <%= f.input :domain %> + + </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('logo') %></h5> + </div> + <div class="card-body"> + <%= f.input :logo, + as: :single_deletable_file, + input_html: { accept: '.jpg,.jpeg,.png,.svg' }, + preview: 200, + direct_upload: true %> + </div> </div> </div> diff --git a/app/views/layouts/devise.html.erb b/app/views/layouts/devise.html.erb index 61956b6598dc6754d32c9780c5cdada5bd20c237..da32f8c68dbf28f08c67e47c2de97b812c1c1800 100644 --- a/app/views/layouts/devise.html.erb +++ b/app/views/layouts/devise.html.erb @@ -16,10 +16,10 @@ <div class="col-sm-10 mx-auto"> <h1 class="my-5 py-5 text-center"> <%= link_to root_path do %> - <% if current_university.logo.attached? %> - <%= image_tag current_university.logo, width: 200, alt: current_university.to_s %> + <% if current_context.logo.attached? %> + <%= image_tag current_context.logo, width: 200, alt: current_context.to_s %> <% else %> - <%= current_university %> + <%= current_context %> <% end %> <% end %> </h1>