<div>
<h4><%= t(".description") %></h4>
- <div class="note-description">
+ <div class="overflow-hidden ms-2">
<%= h(@note_comments.first.body.to_html) %>
</div>
<div class="details" data-coordinates="<%= @note.lat %>,<%= @note.lon %>" data-status="<%= @note.status %>">
- <ul class="list-unstyled">
- <li><%= note_event("opened", @note.created_at, @note.author) %></li>
- <% if @note.status == "closed" %>
- <li><%= note_event(@note.status, @note.closed_at, @note.all_comments.last.author) %></li>
- <% end %>
- <li>
- <%= t "browse.location" %>
- <%= link_to(t(".coordinates_html",
- :latitude => tag.span(number_with_delimiter(@note.lat), :class => "latitude"),
- :longitude => tag.span(number_with_delimiter(@note.lon), :class => "longitude")),
- root_path(:anchor => "map=18/#{@note.lat}/#{@note.lon}")) %>
- </li>
- </ul>
+ <p class="mb-2"><%= note_event("opened", @note.created_at, @note.author) %></p>
+ <% if @note.status == "closed" %>
+ <p class="mb-2"><%= note_event(@note.status, @note.closed_at, @note.all_comments.last.author) %></p>
+ <% end %>
+ <p>
+ <%= t "browse.location" %>
+ <%= link_to t(".coordinates_html",
+ :latitude => tag.span(number_with_delimiter(@note.lat), :class => "latitude"),
+ :longitude => tag.span(number_with_delimiter(@note.lon), :class => "longitude")),
+ root_path(:anchor => "map=18/#{@note.lat}/#{@note.lon}") %>
+ </p>
</div>
<% if @note_comments.find { |comment| comment.author.nil? } -%>
- <p class='alert alert-warning'><%= t "javascripts.notes.show.anonymous_warning" %></p>
+ <p class='alert alert-warning'><%= t ".anonymous_warning" %></p>
<% end -%>
+ <div class="row">
+ <div class="col">
+ <h4><%= t(".discussion") %></h4>
+ </div>
+
+ <% if current_user %>
+ <div class="col-auto">
+ <% if @note.subscribers.exists?(current_user.id) %>
+ <%= tag.button t(".unsubscribe"),
+ :type => "button",
+ :class => "btn btn-sm btn-primary",
+ :name => "unsubscribe",
+ :data => { :method => "DELETE",
+ :url => api_note_subscription_path(@note) } %>
+ <% else %>
+ <%= tag.button t(".subscribe"),
+ :type => "button",
+ :class => "btn btn-sm btn-primary",
+ :name => "subscribe",
+ :data => { :method => "POST",
+ :url => api_note_subscription_path(@note) } %>
+ <% end %>
+ </div>
+ <% end %>
+ </div>
+
<% if @note_comments.length > 1 %>
<div class='note-comments'>
<ul class="list-unstyled">
<% @note_comments.drop(1).each do |comment| %>
<li id="c<%= comment.id %>">
- <small class='text-muted'><%= note_event(comment.event, comment.created_at, comment.author) %></small>
- <%= comment.body.to_html %>
+ <small class='text-body-secondary'><%= note_event(comment.event, comment.created_at, comment.author) %></small>
+ <div class="mx-2">
+ <%= comment.body.to_html %>
+ </div>
</li>
<% end %>
</ul>
<div class="mb-3">
<textarea class="form-control" name="text" cols="40" rows="5" maxlength="2000"></textarea>
</div>
- <div class="btn-wrapper">
+ <div id="comment-error" class="alert alert-danger p-2 mb-3" hidden>
+ </div>
+ <div class="d-flex flex-wrap gap-1">
<% if current_user.moderator? -%>
- <input type="submit" name="hide" value="<%= t("javascripts.notes.show.hide") %>" class="btn btn-light" data-method="DELETE" data-url="<%= api_note_url(@note, "json") %>">
+ <%= button_tag t(".hide"), :name => "hide", :class => "btn btn-light",
+ :data => { :method => "DELETE",
+ :url => api_note_url(@note, "json") } %>
<% end -%>
- <input type="submit" name="close" value="<%= t("javascripts.notes.show.resolve") %>" class="btn btn-primary"
- data-method="POST" data-url="<%= close_api_note_url(@note, "json") %>"
- data-default-action-text="<%= t("javascripts.notes.show.resolve") %>"
- data-comment-action-text="<%= t("javascripts.notes.show.comment_and_resolve") %>">
- <input type="submit" name="comment" value="<%= t("javascripts.notes.show.comment") %>" class="btn btn-primary" data-method="POST" data-url="<%= comment_api_note_url(@note, "json") %>" disabled="1">
+ <%= button_tag t(".resolve"), :name => "close", :class => "btn btn-primary",
+ :data => { :method => "POST",
+ :url => close_api_note_url(@note, "json"),
+ :default_action_text => t(".resolve"),
+ :comment_action_text => t(".comment_and_resolve") } %>
+ <%= button_tag t(".comment"), :name => "comment", :class => "btn btn-primary", :disabled => true,
+ :data => { :method => "POST",
+ :url => comment_api_note_url(@note, "json") } %>
</div>
</form>
+ <% else -%>
+ <p>
+ <%= link_to t(".log_in_to_comment"), login_path(:referer => request.fullpath) %>
+ </p>
<% end -%>
<% else %>
<form class="mb-3" action="#">
<input type="hidden" name="text" value="" autocomplete="off">
- <div class="btn-wrapper">
+ <div id="comment-error" class="alert alert-danger p-2 mb-3" hidden>
+ </div>
+ <div class="d-flex flex-wrap gap-1">
<% if @note.status != "hidden" and current_user and current_user.moderator? -%>
- <input type="submit" name="hide" value="<%= t("javascripts.notes.show.hide") %>" class="btn btn-light" data-method="DELETE" data-url="<%= api_note_url(@note, "json") %>">
+ <%= button_tag t(".hide"), :name => "hide", :class => "btn btn-light",
+ :data => { :method => "DELETE",
+ :url => api_note_url(@note, "json") } %>
<% end -%>
<% if current_user -%>
- <input type="submit" name="reopen" value="<%= t("javascripts.notes.show.reactivate") %>" class="btn btn-primary" data-method="POST" data-url="<%= reopen_api_note_url(@note, "json") %>">
+ <%= button_tag t(".reactivate"), :name => "reopen", :class => "btn btn-primary",
+ :data => { :method => "POST",
+ :url => reopen_api_note_url(@note, "json") } %>
<% end -%>
</div>
</form>
<% if current_user && current_user != @note.author %>
<p>
- <small class="text-muted">
- <%= t "javascripts.notes.show.report_link_html", :link => report_link(t(".report"), @note) %>
+ <small class="text-body-secondary">
+ <%= t ".report_link_html", :link => report_link(t(".report"), @note) %>
<% if @note.status == "open" %>
- <%= t "javascripts.notes.show.other_problems_resolve", :link => report_link(t(".report"), @note) %>
+ <%= t ".other_problems_resolve", :link => report_link(t(".report"), @note) %>
<% elsif @note.status == "closed" %>
- <%= t "javascripts.notes.show.other_problems_resolved" %>
+ <%= t ".other_problems_resolved" %>
<% end %>
</small>
</p>
<% end %>
<% if @note.freshly_closed? %>
- <small class="text-muted">
- <%= t "javascripts.notes.show.disappear_date_html", :disappear_in => disappear_in(@note) %>
+ <small class="text-body-secondary">
+ <%= t ".disappear_date_html", :disappear_in => friendly_date(@note.freshly_closed_until) %>
</small>
<% end %>
</div>