]> git.openstreetmap.org Git - rails.git/commitdiff
Refactor reports form to use bootstrap
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 12 Aug 2020 14:55:34 +0000 (16:55 +0200)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 19 Aug 2020 14:58:43 +0000 (16:58 +0200)
app/helpers/reports_helper.rb
app/views/reports/new.html.erb
config/locales/en.yml

index 70c9adac6527d59b1140717df537e7c812ef911f..f9cc996210d7b419267d3879bf123b8c0a45966c 100644 (file)
@@ -1,5 +1,14 @@
+require "ostruct"
+
 module ReportsHelper
   def report_link(name, reportable)
     link_to name, new_report_url(:reportable_id => reportable.id, :reportable_type => reportable.class.name)
   end
+
+  # Convert a list of strings into objects with methods that the collection_radio_buttons helper expects
+  def report_categories(reportable)
+    Report.categories_for(reportable).map do |c|
+      OpenStruct.new(:id => c, :label => t(".categories.#{reportable.class.name.underscore}.#{c}_label"))
+    end
+  end
 end
index a29104ae7874a7a7569b7fc760437d931a582dec..6c12c14e334205bb0e31d9eb65cde46bf67cfe9a 100644 (file)
   </ul>
 </div>
 
-<%= form_for(@report) do |f| %>
-  <%= f.error_messages %>
-  <fieldset class="standard-form">
-    <%= f.fields_for @report.issue do |issue_form| %>
-      <%= issue_form.hidden_field :reportable_id %>
-      <%= issue_form.hidden_field :reportable_type %>
-    <% end %>
+<%= bootstrap_form_for(@report) do |f| %>
+  <%= f.fields_for @report.issue do |issue_form| %>
+    <%= issue_form.hidden_field :reportable_id %>
+    <%= issue_form.hidden_field :reportable_type %>
+  <% end %>
 
-    <div class='standard-form-row'>
-      <p><%= t(".select") %></p>
-      <ul class="form-list">
-      <% Report.categories_for(@report.issue.reportable).each do |c| %>
-        <li>
-          <%= radio_button :report, :category, c, :required => true %>
-          <%= label_tag "report_category_#{c}", t(".categories.#{@report.issue.reportable.class.name.underscore}.#{c}_label") %>
-        </li>
-      <% end %>
-      </ul>
-    </div>
-
-    <div class='standard-form-row'>
-      <%= text_area :report, :details, :cols => 20, :rows => 5, :placeholder => t(".details") %>
-    </div>
-
-    <div class='buttons'>
-      <%= f.submit %>
-    </div>
-  </fieldset>
+  <%= f.collection_radio_buttons :category, report_categories(@report.issue.reportable), :id, :label %>
+  <%= f.text_area :details, :rows => 5, :label_as_placeholder => true %>
+  <%= f.primary %>
 <% end %>
index 185129e83f58fb4a977df653e3033f216b44e423..fe07bab929acf35aaf3625ea2030ae71bf06e16d 100644 (file)
@@ -104,6 +104,9 @@ en:
         title: "Subject"
         body: "Body"
         recipient: "Recipient"
+      report:
+        category: Select a reason for your report
+        details: Please provide some more details about the problem (required).
       user:
         email: "Email"
         active: "Active"
@@ -1118,8 +1121,6 @@ en:
     new:
       title_html: "Report %{link}"
       missing_params: "Cannot create a new report"
-      details: Please provide some more details about the problem (required).
-      select: "Select a reason for your report:"
       disclaimer:
         intro: "Before sending your report to the site moderators, please ensure that:"
         not_just_mistake: You are certain that the problem is not just a mistake