]> git.openstreetmap.org Git - rails.git/commitdiff
Traces#index: Introduce tab navigation, fix tag-filter
authorTobias Jordans <t@tobiasjordans.de>
Sat, 2 Jan 2021 21:36:49 +0000 (22:36 +0100)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 16 Jun 2021 14:55:55 +0000 (15:55 +0100)
- introduce bootstrap tabs to switch the views
- introduce `content_for :heading_class` to remove the padding below the bootstrap tabs
- update the rss-image to use a svg, adopted from https://icons.getbootstrap.com/icons/rss/ (without the outer border)
- move rss- and new-button away from the view-switching actions
- the `@tag` logic was broken. introduce new link to remove the tag-filter; the tabs keep the filter once given; use params[:tag] directly in the view
- use `&.` syntax nil-safety so we can remove `@display_name`

app/controllers/traces_controller.rb
app/views/layouts/_content.html.erb
app/views/traces/index.html.erb

index 0d3a1aa33c652a4c320e14ee0ebc48568d1ce0fb..b4853c6b8f7c5c1c91367cf98c14ced1c8253d90 100644 (file)
@@ -67,7 +67,6 @@ class TracesController < ApplicationController
 
     # final helper vars for view
     @target_user = target_user
-    @display_name = target_user.display_name if target_user
   end
 
   def mine
index a4d93cc0ec59027adc5a292858538c4f5024b758..cfb8d712cc7ebef8873640b03c6f1ebb151a467a 100644 (file)
@@ -5,7 +5,7 @@
     <%= render :partial => "layouts/flash", :locals => { :flash => flash } %>
     <% if content_for? :heading %>
       <div class="content-heading">
-        <div class="content-inner">
+        <div class="content-inner <%= yield :heading_class %>">
           <%= yield :heading %>
         </div>
       </div>
index b38436c0a4c5d3ac8e156537108620cb527a0e0a..612a47e802150c0d8c3a27f160c348c4b2fd7d85 100644 (file)
@@ -1,25 +1,61 @@
+<% content_for :heading_class, 'pb-0' %>
 <% content_for :heading do %>
   <h1><%= @title %></h1>
-  <ul class='secondary-actions clearfix'>
-    <li><%= t(".description") %></li>
-    <li><%= rss_link_to :action => "georss", :display_name => @display_name, :tag => @tag %></li>
-    <li><%= link_to t(".upload_trace"), new_trace_path %></li>
-    <% if @tag %>
-      <li><%= link_to t(".see_all_traces"), :controller => "traces", :action => "index", :display_name => nil, :tag => nil, :page => nil %></li>
-      <li><%= link_to t(".see_my_traces"), :action => "mine", :tag => nil, :page => nil %></li>
-    <% else %>
-      <% if @display_name %>
-        <li><%= link_to t(".see_all_traces"), :controller => "traces", :action => "index", :display_name => nil, :tag => nil, :page => nil %></li>
-      <% end %>
-      <% if current_user && current_user != @target_user %>
-        <li><%= link_to t(".see_my_traces"), :action => "mine", :tag => nil, :page => nil %></li>
-      <% end %>
+  <p>
+    <%= t(".description") %>
+    <% if params[:tag] %>
+      <%= link_to t(".remove_tag_filter", :tag => params[:tag]), {:controller => "traces", :action => "index", :display_name => nil, :tag => nil, :page => nil}, {:class => "border-left ml-2 pl-2"} %>
     <% end %>
+  </p>
+  <ul class="nav nav-tabs">
+    <li class="nav-item">
+      <% if @target_user.blank? %>
+        <!-- public traces -->
+        <% if current_user %>
+          <li class="nav-item">
+            <%= link_to t(".see_my_traces"), {:action => "mine", :page => nil}, {:class => "nav-link"} %>
+          </li>
+        <% end %>
+        <li class="nav-item">
+          <%= link_to t(".see_all_traces"), {:controller => "traces", :action => "index", :display_name => nil, :page => nil}, {:class => "nav-link active"} %>
+        </li>
+      <% elsif current_user && current_user == @target_user %>
+        <!-- my traces -->
+        <li class="nav-item">
+          <%= link_to t(".see_my_traces"), {:action => "mine", :page => nil}, {:class => "nav-link active"} %>
+        </li>
+        <li class="nav-item">
+          <%= link_to t(".see_all_traces"), {:controller => "traces", :action => "index", :display_name => nil, :page => nil}, {:class => "nav-link"} %>
+        </li>
+      <% else %>
+        <!-- public_traces_from @target_user -->
+        <li class="nav-item">
+          <%= link_to t(".see_public_traces_from", :user => @target_user&.display_name), {:action => "mine", :page => nil}, {:class => "nav-link active"} %>
+        </li>
+        <% if current_user && current_user != @target_user %>
+          <li class="nav-item">
+            <%= link_to t(".see_my_traces"), {:action => "mine", :page => nil}, {:class => "nav-link"} %>
+          </li>
+        <% end %>
+        <li class="nav-item">
+          <%= link_to t(".see_all_traces"), {:controller => "traces", :action => "index", :display_name => nil, :page => nil}, {:class => "nav-link"} %>
+        </li>
+      <% end %>
+    </li>
+
+    <li class="nav-item ml-auto pt-1">
+      <%= link_to({:action => :georss, :display_name => @target_user&.display_name, :tag => params[:tag]}, {:class => "btn btn-secondary btn-sm px-1 py-0"}) do %>
+        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="white" viewBox="0 0 16 16">
+          <path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z"/>
+        </svg>
+      <% end -%>
+      <%= link_to t(".upload_trace"), new_trace_path, :class => "btn btn-secondary btn-sm px-1 py-0" %>
+    </li>
   </ul>
 <% end %>
 
 <% content_for :auto_discovery_link_tag do %>
-<%= auto_discovery_link_tag :rss, :action => "georss", :display_name => @display_name, :tag => @tag %>
+  <%= auto_discovery_link_tag :rss, :action => "georss", :display_name => @target_user&.display_name, :tag => params[:tag] %>
 <% end %>
 
 <% if @traces.size > 0 %>