diff --git a/src/api/app/controllers/webui/configuration_controller.rb b/src/api/app/controllers/webui/configuration_controller.rb index 45f407af3dfe..1618ad6a5a53 100644 --- a/src/api/app/controllers/webui/configuration_controller.rb +++ b/src/api/app/controllers/webui/configuration_controller.rb @@ -18,7 +18,7 @@ def update def configuration_params params.require(:configuration).permit(:name, :title, :description, :tos_url, :code_of_conduct, :contact_name, :contact_url, - :unlisted_projects_filter, :unlisted_projects_filter_description) + :unlisted_projects_filter, :unlisted_projects_filter_description, :logo) end def set_configuration diff --git a/src/api/app/models/configuration.rb b/src/api/app/models/configuration.rb index 428f4bb8195c..2c257bfcc7d1 100644 --- a/src/api/app/models/configuration.rb +++ b/src/api/app/models/configuration.rb @@ -1,5 +1,6 @@ # The OBS instance configuration class Configuration < ApplicationRecord + has_one_attached :logo after_save :delayed_write_to_backend include CanRenderModel diff --git a/src/api/app/views/layouts/webui/_top_navigation.html.haml b/src/api/app/views/layouts/webui/_top_navigation.html.haml index c27e7b65e6f5..40a35584862e 100644 --- a/src/api/app/views/layouts/webui/_top_navigation.html.haml +++ b/src/api/app/views/layouts/webui/_top_navigation.html.haml @@ -1,7 +1,7 @@ %nav.navbar.navbar-dark.navbar-themed-colors.fixed-top .container-fluid.d-flex.flex-nowrap.justify-content-between.w-100 = link_to(root_path, class: 'navbar-brand', alt: 'Logo') do - = image_tag('obs-logo_small.svg') + = image_tag(::Configuration.logo.attached? ? ::Configuration.logo : 'obs-logo_small.svg') .d-flex.nav = render partial: 'layouts/webui/top_navigation_search' - if User.session diff --git a/src/api/app/views/webui/configuration/index.html.haml b/src/api/app/views/webui/configuration/index.html.haml index f852528b679e..9555e932ab58 100644 --- a/src/api/app/views/webui/configuration/index.html.haml +++ b/src/api/app/views/webui/configuration/index.html.haml @@ -18,6 +18,11 @@ Description %abbr.text-danger{ title: 'required' } * ~ f.text_area :description, rows: 7, required: true, class: 'form-control' + .mb-3 + = f.label(:logo) do + Logo + %small.form-text The image displayed on the left side of the top navigation bar. + ~ f.file_field :logo, class: 'form-control' .mb-3 = f.label(:tos_url) do Terms Of Service URL