diff --git a/app/assets/javascripts/app/views/knowledge_base/base_form.coffee b/app/assets/javascripts/app/views/knowledge_base/base_form.coffee index 2a0972da0..05bc423e5 100644 --- a/app/assets/javascripts/app/views/knowledge_base/base_form.coffee +++ b/app/assets/javascripts/app/views/knowledge_base/base_form.coffee @@ -116,9 +116,8 @@ class App.KnowledgeBaseCustomAddressForm extends App.KnowledgeBaseForm openSnippetsModal: (e) -> @preventDefaultAndStopPropagation(e) - loader = new App.ControllerModalLoading( - container: @el.closest('.main') - ) + button = e.currentTarget + button.disabled = true @ajax( id: 'knowledge_bases_init_admin' @@ -126,7 +125,7 @@ class App.KnowledgeBaseCustomAddressForm extends App.KnowledgeBaseForm url: @object().manageUrl('server_snippets') processData: true success: (data, status, xhr) => - loader.hide() + button.disabled = false new App.KnowledgeBaseServerSnippet( container: @el.closest('.main') @@ -135,7 +134,7 @@ class App.KnowledgeBaseCustomAddressForm extends App.KnowledgeBaseForm address_type: data.address_type ) error: (xhr) => - loader.hide() + button.disabled = false if xhr.status != 422 return diff --git a/app/controllers/knowledge_base/public/categories_controller.rb b/app/controllers/knowledge_base/public/categories_controller.rb index 7bf497716..c19908da0 100644 --- a/app/controllers/knowledge_base/public/categories_controller.rb +++ b/app/controllers/knowledge_base/public/categories_controller.rb @@ -39,7 +39,7 @@ class KnowledgeBase::Public::CategoriesController < KnowledgeBase::Public::BaseC path = help_root_path(locale: primary_locale.locale) - redirect_to custom_path_if_needed(path, knowledge_base) + redirect_to custom_path_if_needed(path, knowledge_base, full: true) end private diff --git a/app/helpers/knowledge_base_helper.rb b/app/helpers/knowledge_base_helper.rb index 78dc13193..ed94f664d 100644 --- a/app/helpers/knowledge_base_helper.rb +++ b/app/helpers/knowledge_base_helper.rb @@ -5,13 +5,20 @@ module KnowledgeBaseHelper knowledge_base.send("#{layout_prefix}_layout") end - def custom_path_if_needed(path, knowledge_base) - return path if knowledge_base.custom_address_matches? request + def custom_path_if_needed(path, knowledge_base, full: false) + return path unless knowledge_base.custom_address_matches? request - prefix = knowledge_base.custom_address_uri&.path - return path if prefix.nil? + custom_address = knowledge_base.custom_address_uri + return path unless custom_address - path.gsub(%r{^\/help}, prefix).presence || '/' + output = path.gsub(%r{^\/help}, custom_address.path || '').presence || '/' + + if full + fqdn = request.headers.env['SERVER_NAME'] + output = "#{custom_address.scheme}://#{custom_address.host || fqdn}#{output}" + end + + output end def translation_locale_code(translation) diff --git a/app/models/knowledge_base.rb b/app/models/knowledge_base.rb index ea9cd244d..87af42a03 100644 --- a/app/models/knowledge_base.rb +++ b/app/models/knowledge_base.rb @@ -63,7 +63,9 @@ class KnowledgeBase < ApplicationModel def custom_address_uri return nil if custom_address.blank? - URI("protocol://#{custom_address}") + scheme = Setting.get('http_type') || 'http' + + URI("#{scheme}://#{custom_address}") rescue URI::InvalidURIError nil end