]> git.openstreetmap.org Git - rails.git/blob - app/views/layouts/_header.html.erb
Merge pull request #7302 from tomhughes/terms-locale
[rails.git] / app / views / layouts / _header.html.erb
1 <%# locals: (hide_signup:) %>
2
3 <header class="navbar navbar-expand-md bg-body flex-column flex-md-row align-items-stretch p-0 position-relative flex-nowrap z-3">
4   <h1 class="d-flex m-0 align-items-center fw-semibold">
5     <a href="<%= root_path %>" class="icon-link gap-1 me-auto text-body-emphasis text-decoration-none geolink">
6       <%= image_tag "osm_logo.svg", :alt => t("layouts.logo.alt_text"), :size => 30 %>
7       <%= t "layouts.project_name.title" %>
8     </a>
9     <%= render "layouts/select_language_button", :extra_classes => ["border-secondary border-opacity-10 d-md-none"] %>
10     <button class="navbar-toggler p-0 border-0 collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#header-nav" aria-controls="header-nav" aria-expanded="false" aria-label="<%= t("layouts.main_navigation") %>">
11       <span class="navbar-toggler-icon"></span>
12     </button>
13   </h1>
14   <section id="header-nav" class="flex-grow-1 collapse d-md-block">
15     <%= content_for :header %>
16     <nav class="navbar-nav gap-2 flex-grow-1">
17       <div id="edit_tab" class="btn-group">
18         <%= link_to t(".edit"),
19                     edit_path,
20                     :class => ["btn btn-outline-primary geolink editlink", { "active" => current_page?(edit_path) }],
21                     :id => "editanchor",
22                     :data => { :editor => preferred_editor } %>
23         <button class="btn btn-outline-primary dropdown-toggle dropdown-toggle-split flex-grow-0" type="button" data-bs-toggle="dropdown"></button>
24         <ul class="dropdown-menu position-absolute">
25           <% Editors::RECOMMENDED_EDITORS.each do |editor| %>
26             <li>
27               <%= link_to t(".edit_with", :editor => t("editor.#{editor}.description")),
28                           edit_path(:editor => editor),
29                           :data => { :editor => editor },
30                           :class => "geolink editlink dropdown-item" %>
31             </li>
32           <% end %>
33         </ul>
34       </div>
35       <ul id="secondary-nav-menu" class="nav flex-grow-1 ms-md-2 align-items-center justify-content-center justify-content-md-start" data-turbo-permanent>
36         <% secondary_nav_items.each do |path, label, options = {}| %>
37           <li class="nav-item">
38             <%= link_to label, path, :class => ["nav-link", "px-1", "py-2", "py-md-1", current_page?(path) ? "active text-secondary-emphasis" : "text-secondary", options.delete(:class)], **options %>
39           </li>
40         <% end %>
41         <li id="compact-secondary-nav" class="dropdown nav-item ms-auto collapse">
42           <button class="dropdown-toggle nav-link btn btn-outline-secondary px-1 py-2 py-md-1 border-0 bg-body text-secondary" type="button" data-bs-toggle="dropdown"><%= t ".more" %></button>
43           <ul class="dropdown-menu">
44           </ul>
45         </li>
46       </ul>
47
48       <%= render "layouts/select_language_button", :extra_classes => ["d-none d-md-block py-0", { "border-secondary-subtle" => current_user&.id }] %>
49       <% if current_user && current_user.id %>
50         <div class="d-flex dropdown user-menu logged-in">
51           <button class="d-flex gap-1 align-items-center justify-content-center dropdown-toggle btn btn-outline-secondary border-secondary-subtle bg-body text-secondary px-2 py-1 flex-grow-1 mw-100" type="button" data-bs-toggle="dropdown">
52             <%= user_thumbnail_tiny(current_user, :class => "user_thumbnail_tiny rounded-1 bg-body") %>
53             <% if current_user.new_messages.size > 0 %>
54               <span class="badge count-number position-static m-1"><%= current_user.new_messages.size %></span>
55             <% end %>
56             <span class="username align-middle text-truncate" dir="auto">
57               <%= current_user.display_name_was %>
58             </span>
59           </button>
60           <div class="dropdown-menu dropdown-menu-end position-absolute">
61             <%= link_to t("users.show.my_dashboard"), dashboard_path, :class => "dropdown-item" %>
62             <%= link_to messages_inbox_path, :class => "dropdown-item" do %>
63               <%= t("users.show.my messages") %>
64               <span class="badge count-number"><%= number_with_delimiter(current_user.new_messages.size) %></span>
65             <% end %>
66             <%= link_to t("users.show.my profile"), current_user, :class => "dropdown-item" %>
67             <%= link_to t("users.show.my_notifications"), notifications_path, :class => "dropdown-item" %>
68             <%= link_to t("users.show.my_account"), account_path, :class => "dropdown-item" %>
69             <%= link_to t("users.show.my_preferences"), basic_preferences_path, :class => "dropdown-item" %>
70             <div class="dropdown-divider"></div>
71             <% if current_user.home_location? %>
72               <%= link_to t(".home"), account_home_path, :class => "dropdown-item" %>
73             <% end %>
74             <%= link_to t(".log_out"), logout_path(:referer => request.fullpath), :method => "post", :class => "geolink dropdown-item" %>
75           </div>
76         </div>
77       <% else %>
78         <% unless hide_signup %>
79           <div class="d-flex btn-group login-menu">
80             <%= link_to t(".log_in"), login_path(:referer => request.fullpath), :class => "geolink btn btn-outline-secondary" %>
81             <%= link_to t(".sign_up"), new_user_path, :class => "btn btn-outline-secondary" %>
82           </div>
83         <% end %>
84       <% end %>
85     </nav>
86   </section>
87 </header>
88
89 <div class="modal fade" id="select_language_dialog" tabindex="-1" aria-labelledby="select_language_dialog_label" role="dialog" aria-hidden="true">
90   <div class="modal-dialog modal-lg modal-dialog-scrollable">
91     <div class="modal-content">
92       <div class="modal-header">
93         <h1 class="modal-title fs-5" id="select_language_dialog_label"><%= t ".select_language" %></h1>
94         <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="<%= t "javascripts.close" %>"></button>
95       </div>
96       <div class="modal-body px-1">
97         <turbo-frame id="select_language_list" src="<%= languages_pane_path %>?source=<%= ERB::Util.url_encode(request.fullpath) %>" loading="lazy">
98           <div class="text-center py-3"><%= render "loader" %></div>
99         </turbo-frame>
100       </div>
101     </div>
102   </div>
103 </div>
104
105 <div class="modal fade" id="osm_alert_modal" tabindex="-1" aria-labelledby="osm_alert_title" role="alertdialog" aria-hidden="true">
106   <div class="modal-dialog modal-dialog-centered">
107     <div class="modal-content">
108       <div class="modal-header">
109         <h1 class="modal-title fs-5" id="osm_alert_title"></h1><%# herb:disable html-no-empty-headings %>
110         <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="<%= t "javascripts.close" %>"></button>
111       </div>
112       <div class="modal-body" id="osm_alert_message">
113       </div>
114       <div class="modal-footer">
115         <button type="button" class="btn btn-primary" data-bs-dismiss="modal"><%= t "javascripts.close" %></button>
116       </div>
117     </div>
118   </div>
119 </div>