knowledge_base_helper.rb 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. module KnowledgeBaseHelper
  2. def effective_layout_name(knowledge_base, object)
  3. layout_prefix = object.present? ? :category : :homepage
  4. knowledge_base.send("#{layout_prefix}_layout")
  5. end
  6. def custom_path_if_needed(path, knowledge_base, full: false)
  7. return path unless knowledge_base.custom_address_matches? request
  8. custom_address = knowledge_base.custom_address_uri
  9. return path unless custom_address
  10. output = path.gsub(%r{^\/help}, custom_address.path || '').presence || '/'
  11. if full
  12. fqdn = request.headers.env['SERVER_NAME']
  13. output = "#{custom_address.scheme}://#{custom_address.host || fqdn}#{output}"
  14. end
  15. output
  16. end
  17. def translation_locale_code(translation)
  18. translation.kb_locale.system_locale.locale
  19. end
  20. def edit_kb_link_label(object)
  21. suffix = case object
  22. when KnowledgeBase::Answer
  23. 'answer'
  24. when KnowledgeBase::Category
  25. 'category'
  26. when KnowledgeBase
  27. 'knowledge base'
  28. end
  29. "edit #{suffix}"
  30. end
  31. def build_kb_link(object)
  32. locale = params.fetch(:locale, object.translation.kb_locale)
  33. path = case object
  34. when KnowledgeBase::Answer
  35. "knowledge_base/#{object.category.knowledge_base.id}/locale/#{locale}/answer/#{object.id}/edit"
  36. when KnowledgeBase::Category
  37. "knowledge_base/#{object.knowledge_base.id}/locale/#{locale}/category/#{object.id}/edit"
  38. when KnowledgeBase
  39. "knowledge_base/#{object.id}/locale/#{locale}/edit"
  40. end
  41. build_zammad_link path
  42. end
  43. def build_zammad_link(path)
  44. host, port = Setting.get('fqdn').split ':'
  45. scheme = Setting.get('http_type')
  46. URI::Generic
  47. .build(host: host, scheme: scheme, port: port, fragment: path)
  48. .to_s
  49. end
  50. end