-<div id="header" class="closed">
- <h1>
- <a href="<%= root_path %>" class="geolink">
- <%= image_tag "osm_logo.png", :alt => t('layouts.logo.alt_text'), :class => 'logo' %>
- <%= t 'layouts.project_name.h1' %>
+<header class="d-flex bg-body text-nowrap closed z-3">
+ <h1 class="d-flex m-0 fw-semibold">
+ <a href="<%= root_path %>" class="icon-link gap-1 text-body-emphasis text-decoration-none geolink">
+ <%= image_tag "osm_logo.svg", :alt => t("layouts.logo.alt_text"), :size => 30 %>
+ <%= t "layouts.project_name.h1" %>
</a>
</h1>
<a href="#" id="menu-icon"></a>
- <div class='nav primary'>
+ <nav class='primary'>
<%= content_for :header %>
- <ul>
- <li id="edit_tab" class="dropdown <%= current_page_class(edit_path) %>">
- <%= link_to t('layouts.edit'), edit_path, :class => "tab geolink editlink",
- :id => 'editanchor',
- :data => { :editor => preferred_editor }
- %><a class='dropdown-toggle' data-toggle='dropdown' href='#'><b class="caret"></b></a>
- <ul class='dropdown-menu'>
- <% Editors::RECOMMENDED_EDITORS.each do |editor| %>
+ <div id="edit_tab" class="btn-group">
+ <%= link_to t("layouts.edit"),
+ edit_path,
+ :class => "btn btn-outline-primary geolink editlink",
+ :id => "editanchor",
+ :data => { :editor => preferred_editor } %>
+ <button class='btn btn-outline-primary dropdown-toggle dropdown-toggle-split flex-grow-0' type='button' data-bs-toggle='dropdown'></button>
+ <ul class='dropdown-menu'>
+ <% Editors::RECOMMENDED_EDITORS.each do |editor| %>
+ <li>
+ <%= link_to t("layouts.edit_with", :editor => t("editor.#{editor}.description")),
+ edit_path(:editor => editor),
+ :data => { :editor => editor },
+ :class => "geolink editlink dropdown-item" %>
+ </li>
+ <% end %>
+ </ul>
+ </div>
+ </nav>
+ <nav class='secondary d-flex gap-2 align-items-center'>
+ <ul class='nav flex-nowrap'>
+ <% if Settings.status != "database_offline" && can?(:index, Issue) %>
+ <li class="compact-hide nav-item">
+ <%= link_to issues_path(:status => "open"), :class => header_nav_link_class(issues_path) do %>
+ <%= t("layouts.issues") %>
+ <%= open_issues_count %>
+ <% end -%>
+ </li>
+ <% end %>
+ <li class="compact-hide nav-item">
+ <%= link_to t("layouts.history"), history_path, :class => header_nav_link_class(history_path) %>
+ </li>
+ <li class="compact-hide nav-item">
+ <%= link_to t("layouts.export"), export_path, :class => header_nav_link_class(export_path) %>
+ </li>
+ <li class="compact-hide nav-item">
+ <%= link_to t("layouts.gps_traces"), traces_path, :class => header_nav_link_class(traces_path) %>
+ </li>
+ <li class="compact-hide nav-item">
+ <%= link_to t("layouts.user_diaries"), diary_entries_path, :class => header_nav_link_class(diary_entries_path) %>
+ </li>
+ <li class="compact-hide nav-item">
+ <%= link_to t("layouts.communities"), communities_path, :class => header_nav_link_class(communities_path) %>
+ </li>
+ <li class="compact-hide nav-item">
+ <%= link_to t("layouts.copyright"), copyright_path, :class => header_nav_link_class(copyright_path) %>
+ </li>
+ <li class="compact-hide nav-item">
+ <%= link_to t("layouts.help"), help_path, :class => header_nav_link_class(help_path) %>
+ </li>
+ <li class="compact-hide nav-item">
+ <%= link_to t("layouts.about"), about_path, :class => header_nav_link_class(about_path) %>
+ </li>
+ <li id="compact-secondary-nav" class="dropdown nav-item">
+ <button class="dropdown-toggle nav-link btn btn-outline-secondary border-0 bg-body text-secondary" type="button" data-bs-toggle="dropdown"><%= t "layouts.more" %></button>
+ <ul class="dropdown-menu">
+ <% if Settings.status != "database_offline" && can?(:index, Issue) %>
<li>
- <%= link_to t('layouts.edit_with', :editor => t("editor.#{editor}.description")),
- edit_path(:editor => editor),
- :data => { :editor => editor },
- :class => "geolink editlink" %>
+ <%= link_to issues_path(:status => "open"), :class => "dropdown-item" do %>
+ <%= t("layouts.issues") %>
+ <%= open_issues_count %>
+ <% end -%>
</li>
<% end %>
+ <li><%= link_to t("layouts.history"), history_path, :class => "dropdown-item" %></li>
+ <li><%= link_to t("layouts.export"), export_path, :class => "dropdown-item" %></li>
+ <li><%= link_to t("layouts.gps_traces"), traces_path, :class => "dropdown-item" %></li>
+ <li><%= link_to t("layouts.user_diaries"), diary_entries_path, :class => "dropdown-item" %></li>
+ <li><%= link_to t("layouts.communities"), communities_path, :class => "dropdown-item" %></li>
+ <li><%= link_to t("layouts.copyright"), copyright_path, :class => "dropdown-item" %></li>
+ <li><%= link_to t("layouts.help"), help_path, :class => "dropdown-item" %></li>
+ <li><%= link_to t("layouts.about"), about_path, :class => "dropdown-item" %></li>
</ul>
</li>
- <li id="history_tab" class="<%= current_page_class(history_path) %>">
- <%= link_to t('layouts.history'), history_path, :class => 'tab geolink' %>
- </li>
- <li id="export_tab" class="<%= current_page_class(export_path) %>">
- <%= link_to t('layouts.export'), export_path, :class => 'tab geolink' %>
- </li>
</ul>
- </div>
- <div class='nav secondary'>
- <ul class="compact-hide">
- <li class="<%= current_page_class(traces_path) %>"><%= link_to t('layouts.gps_traces'), traces_path %></li>
- <li class="<%= current_page_class(diary_path) %>"><%= link_to t('layouts.user_diaries'), diary_path %></li>
- <li class="<%= current_page_class(help_path) %>"><%= link_to t('layouts.help'), help_path %></li>
- <li class="<%= current_page_class(about_path) %>"><%= link_to t('layouts.about'), about_path %></li>
- </ul>
- <div id="compact-secondary-nav" class="dropdown">
- <a class="dropdown-toggle" data-toggle="dropdown" href="#">More <b class="caret"></b></a>
- <ul class="dropdown-menu">
- <li class="<%= current_page_class(traces_path) %>"><%= link_to t('layouts.gps_traces'), traces_path %></li>
- <li class="<%= current_page_class(diary_path) %>"><%= link_to t('layouts.user_diaries'), diary_path %></li>
- <li class="<%= current_page_class(help_path) %>"><%= link_to t('layouts.help'), help_path %></li>
- <li class="<%= current_page_class(about_path) %>"><%= link_to t('layouts.about'), about_path %></li>
- </ul>
- </div>
- <% if @user %>
- <div class='dropdown user-menu logged-in'>
- <a class='dropdown-toggle' data-toggle='dropdown' href="#">
- <%= user_thumbnail_tiny(@user, :size => 25, :width => 25, :height => 25)
- %><%= render :partial => 'layouts/inbox'
- %><span class="user-button"><span class='username'><%= @user.display_name %></span>
- <b class="caret"></b></span>
- </a>
- <ul class='dropdown-menu'>
- <li>
- <%= link_to inbox_path(:display_name => @user.display_name) do %>
- <span class='count-number'><%= number_with_delimiter(@user.new_messages.size) %></span>
- <%= t('message.inbox.my_inbox') %>
- <% end %>
- </li>
- <li>
- <%= link_to t('user.view.my profile'), user_path(:display_name => @user.display_name) %>
- </li>
- <li>
- <%= link_to t('user.view.my settings'), :controller => 'user', :action => 'account', :display_name => @user.display_name %>
- </li>
- <li class="divider"></li>
- <li>
- <%= yield :greeting %>
- </li>
- <li>
- <%= link_to t('layouts.logout'), logout_path(:session => request.session_options[:id], :referer => request.fullpath) %>
- </li>
- </ul>
+ <% if current_user && current_user.id %>
+ <div class='d-inline-flex dropdown user-menu logged-in'>
+ <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'>
+ <%= user_thumbnail_tiny(current_user, :class => "user_thumbnail_tiny rounded-1 bg-body") %>
+ <% if current_user.new_messages.size > 0 %>
+ <span class="badge count-number position-static m-1"><%= current_user.new_messages.size %></span>
+ <% end %>
+ <span class='username align-middle text-truncate' dir='auto'>
+ <%= current_user.display_name %>
+ </span>
+ </button>
+ <div class='dropdown-menu dropdown-menu-end'>
+ <%= link_to t("users.show.my_dashboard"), dashboard_path, :class => "dropdown-item" %>
+ <%= link_to inbox_messages_path, :class => "dropdown-item" do %>
+ <%= t("users.show.my messages") %>
+ <span class='badge count-number'><%= number_with_delimiter(current_user.new_messages.size) %></span>
+ <% end %>
+ <%= link_to t("users.show.my profile"), current_user, :class => "dropdown-item" %>
+ <%= link_to t("users.show.my settings"), edit_account_path, :class => "dropdown-item" %>
+ <%= link_to t("users.show.my_preferences"), preferences_path, :class => "dropdown-item" %>
+ <div class="dropdown-divider"></div>
+ <%= yield :greeting %>
+ <%= link_to t("layouts.logout"), logout_path(:referer => request.fullpath), :method => "post", :class => "geolink dropdown-item" %>
+ </div>
</div>
<% else %>
- <ul class="user-menu clearfix">
- <li><%= link_to t('layouts.log_in'), login_path(:referer => request.fullpath) %></li>
- <li><%= link_to t('layouts.sign_up'), user_new_path %></li>
- </ul>
+ <div class="d-inline-flex btn-group login-menu" role="">
+ <%= link_to t("layouts.log_in"), login_path(:referer => request.fullpath), :class => "geolink btn btn-outline-secondary" %>
+ <%= link_to t("layouts.sign_up"), user_new_path, :class => "btn btn-outline-secondary" %>
+ </div>
<% end %>
- </div>
-</div>
+ </nav>
+</header>