knowledge_base.html.erb 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <!DOCTYPE HTML>
  2. <html lang="<%= system_locale_via_uri.locale %>"
  3. data-id='<%= @knowledge_base.id %>'
  4. data-iconset='<%= @knowledge_base.iconset %>'
  5. data-available-locales='<%= all_locales.map(&:locale).join(',') %>'
  6. data-base-path='<%= custom_path_if_needed help_root_path(locale: '{locale}'), @knowledge_base %>'
  7. data-primary-locale="<%= (filter_primary_kb_locale || all_locales.first)&.locale %>">
  8. <meta charset="utf-8">
  9. <title><%= kb_public_page_title(@knowledge_base, @object, @page_title_error) %></title>
  10. <meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover">
  11. <%= stylesheet_link_tag "knowledge_base.css", :media => 'all' %>
  12. <%= render 'knowledge_base/public/inline_stylesheet', knowledge_base: @knowledge_base %>
  13. <div class="wrapper js-wrapper">
  14. <%= render 'knowledge_base/public/top_banner', object: @object || @knowledge_base if editor? %>
  15. <header class="header js-header">
  16. <div class="container">
  17. <h1 class="logo">
  18. <%= link_to custom_path_if_needed(help_root_path(locale: params[:locale]), @knowledge_base) do %>
  19. <img src="/assets/images/<%= Setting.get('product_logo') %>">
  20. <% end %>
  21. </h1>
  22. <nav class="menu">
  23. <% menu_items.each do |menu_item| %>
  24. <%= link_to menu_item.title, menu_item.url, class: 'menu-item', target: menu_item.new_tab ? '_blank' : nil %>
  25. <% end %>
  26. </nav>
  27. </div>
  28. <div class="container">
  29. <div class="search">
  30. <div class="search-field">
  31. <%= icon 'magnifier' %>
  32. <input class="js-search-input" type="search" placeholder="<%= zt('How can we help you? Search for an answer or a topic...') %>">
  33. </div>
  34. <ul class="search-results js-search-results" data-empty-placeholder="<%= zt('No results were found.') %>"></ul>
  35. </div>
  36. </div>
  37. </header>
  38. <%= render_breadcrumb_if_needed(@knowledge_base, @object, @alternative) %>
  39. <%= yield %>
  40. <footer class="footer">
  41. <div class="container">
  42. <div class="footer-menu">
  43. <div class="copyright">
  44. <%= @knowledge_base.translation.footer_note %>
  45. </div>
  46. <div class="language-picker">
  47. <a class="btn btn--action" href="#" data-toggle="dropdown" aria-expanded="false">
  48. <%= system_locale_via_uri.name %>
  49. <%= icon 'arrow-down' %>
  50. </a>
  51. <ul class="dropdown-menu dropdown-menu-right dropdown-menu-up" role="menu">
  52. <% @object_locales&.each do |locale| %>
  53. <li class="<%= 'is-selected' if locale.name == system_locale_via_uri.name %>">
  54. <%= link_to custom_path_if_needed(url_for(locale: locale.locale), @knowledge_base), hreflang: locale.locale do %>
  55. <%= icon 'checkmark' %>
  56. <%= locale.name %>
  57. <% end %>
  58. </li>
  59. <% end %>
  60. </ul>
  61. </div>
  62. </div>
  63. </div>
  64. </footer>
  65. </div>
  66. <%= javascript_tag nonce: true do -%>
  67. if(window.fetch === undefined || window.Promise === undefined || Element.prototype.prepend === undefined){
  68. var polyfillScriptTag = document.createElement('script');
  69. polyfillScriptTag.setAttribute('src', '<%= path_to_javascript('knowledge_base_public_polyfills') %>');
  70. polyfillScriptTag.setAttribute('nonce', '<%= content_security_policy_nonce %>');
  71. document.body.appendChild(polyfillScriptTag);
  72. }
  73. <% end -%>
  74. <%= javascript_include_tag 'knowledge_base_public', nonce: true %>