]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/4158'
authorTom Hughes <tom@compton.nu>
Sun, 13 Aug 2023 09:00:29 +0000 (10:00 +0100)
committerTom Hughes <tom@compton.nu>
Sun, 13 Aug 2023 09:00:29 +0000 (10:00 +0100)
21 files changed:
app/assets/javascripts/messages.js
app/assets/javascripts/user.js
app/assets/stylesheets/common.scss
app/controllers/diary_entries_controller.rb
app/helpers/application_helper.rb
app/models/user.rb
app/views/api/users/_user.json.jbuilder
app/views/api/users/_user.xml.builder
app/views/dashboards/_contact.html.erb
app/views/dashboards/show.html.erb
app/views/layouts/_banner.html.erb
app/views/layouts/map.html.erb
app/views/messages/_message_summary.html.erb
app/views/messages/_sent_message_summary.html.erb
app/views/messages/inbox.html.erb
app/views/messages/outbox.html.erb
app/views/profiles/edit.html.erb
config/locales/en.yml
test/controllers/api/changesets_controller_test.rb
test/controllers/api/relations_controller_test.rb
yarn.lock

index 0cae79a58cd2924255f0daead205e9bf7effb033..5accc1a6036fb94ec958eaf8f5c803832ecf3c09 100644 (file)
@@ -1,30 +1,34 @@
 $(document).ready(function () {
   $(".inbox-mark-unread").on("ajax:success", function (event, data) {
-    $("#inboxanchor").remove();
-    $(".user-button").before(data.inboxanchor);
-
-    $("#inbox-count").replaceWith(data.inbox_count);
-
-    $(this).parents(".inbox-row").removeClass("inbox-row").addClass("inbox-row-unread");
+    updateHtml(data);
+    updateReadState(this, false);
   });
 
   $(".inbox-mark-read").on("ajax:success", function (event, data) {
-    $("#inboxanchor").remove();
-    $(".user-button").before(data.inboxanchor);
+    updateHtml(data);
+    updateReadState(this, true);
+  });
 
-    $("#inbox-count").replaceWith(data.inbox_count);
+  $(".inbox-destroy").on("ajax:success", function (event, data) {
+    updateHtml(data);
 
-    $(this).parents(".inbox-row-unread").removeClass("inbox-row-unread").addClass("inbox-row");
+    $(this).closest("tr").fadeOut(800, "linear", function () {
+      $(this).remove();
+    });
   });
 
-  $(".inbox-destroy").on("ajax:success", function (event, data) {
+  function updateHtml(data) {
     $("#inboxanchor").remove();
     $(".user-button").before(data.inboxanchor);
 
     $("#inbox-count").replaceWith(data.inbox_count);
-
-    $(this).parents(".inbox-row, .inbox-row-unread").fadeOut(800, "linear", function () {
-      $(this).remove();
-    });
-  });
+  }
+
+  function updateReadState(target, isRead) {
+    $(target).closest("tr")
+      .toggleClass("inbox-row", isRead)
+      .toggleClass("inbox-row-unread", !isRead)
+      .find(".inbox-mark-unread").prop("hidden", !isRead).end()
+      .find(".inbox-mark-read").prop("hidden", isRead);
+  }
 });
index 964f187f9795d7861ffc7ceb6b0c8f3514234e5b..146d876f789643d20abfed4043cbf44989c8af59 100644 (file)
@@ -1,8 +1,11 @@
 //= require leaflet.locatecontrol/src/L.Control.Locate
 
 $(document).ready(function () {
+  var defaultHomeZoom = 12;
+  var map, marker, deleted_lat, deleted_lon;
+
   if ($("#map").length) {
-    var map = L.map("map", {
+    map = L.map("map", {
       attributionControl: false,
       zoomControl: false
     }).addLayer(new L.OSM.Mapnik());
@@ -35,13 +38,17 @@ $(document).ready(function () {
       .addClass("control-button");
 
     if (OSM.home) {
-      map.setView([OSM.home.lat, OSM.home.lon], 12);
+      map.setView([OSM.home.lat, OSM.home.lon], defaultHomeZoom);
     } else {
       map.setView([0, 0], 0);
     }
 
     if ($("#map").hasClass("set_location")) {
-      var marker = L.marker([0, 0], { icon: OSM.getUserIcon() });
+      marker = L.marker([0, 0], {
+        icon: OSM.getUserIcon(),
+        keyboard: false,
+        interactive: false
+      });
 
       if (OSM.home) {
         marker.setLatLng([OSM.home.lat, OSM.home.lon]);
@@ -49,18 +56,65 @@ $(document).ready(function () {
       }
 
       map.on("click", function (e) {
-        if ($("#updatehome").is(":checked")) {
-          var zoom = map.getZoom(),
-              precision = OSM.zoomPrecision(zoom),
-              location = e.latlng.wrap();
+        if (!$("#updatehome").is(":checked")) return;
+
+        var zoom = map.getZoom(),
+            precision = OSM.zoomPrecision(zoom),
+            location = e.latlng.wrap();
+
+        $("#home_lat").val(location.lat.toFixed(precision));
+        $("#home_lon").val(location.lng.toFixed(precision));
+
+        deleted_lat = null;
+        deleted_lon = null;
+        respondToHomeUpdate();
+      }).on("moveend", function () {
+        var lat = $("#home_lat").val().trim(),
+            lon = $("#home_lon").val().trim(),
+            location;
+
+        try {
+          if (lat && lon) {
+            location = L.latLng(lat, lon);
+          }
+        } catch (error) {
+          // keep location undefined
+        }
 
-          $("#home_message").hide();
-          $("#home_lat").val(location.lat.toFixed(precision));
-          $("#home_lon").val(location.lng.toFixed(precision));
+        $("#home_show").prop("disabled", !location || isCloseEnoughToMapCenter(location));
+      });
 
-          marker.setLatLng(e.latlng);
-          marker.addTo(map);
-        }
+      $("#home_lat, #home_lon").on("input", function () {
+        deleted_lat = null;
+        deleted_lon = null;
+        respondToHomeUpdate();
+      });
+
+      $("#home_show").click(function () {
+        var lat = $("#home_lat").val(),
+            lon = $("#home_lon").val();
+
+        map.setView([lat, lon], defaultHomeZoom);
+      });
+
+      $("#home_delete").click(function () {
+        var lat = $("#home_lat").val(),
+            lon = $("#home_lon").val();
+
+        $("#home_lat, #home_lon").val("");
+        deleted_lat = lat;
+        deleted_lon = lon;
+        respondToHomeUpdate();
+        $("#home_undelete").trigger("focus");
+      });
+
+      $("#home_undelete").click(function () {
+        $("#home_lat").val(deleted_lat);
+        $("#home_lon").val(deleted_lon);
+        deleted_lat = null;
+        deleted_lon = null;
+        respondToHomeUpdate();
+        $("#home_delete").trigger("focus");
       });
     } else {
       $("[data-user]").each(function () {
@@ -73,6 +127,41 @@ $(document).ready(function () {
     }
   }
 
+  function respondToHomeUpdate() {
+    var lat = $("#home_lat").val().trim(),
+        lon = $("#home_lon").val().trim(),
+        location;
+
+    try {
+      if (lat && lon) {
+        location = L.latLng(lat, lon);
+      }
+      $("#home_lat, #home_lon").removeClass("is-invalid");
+    } catch (error) {
+      if (lat && isNaN(lat)) $("#home_lat").addClass("is-invalid");
+      if (lon && isNaN(lon)) $("#home_lon").addClass("is-invalid");
+    }
+
+    $("#home_message").toggleClass("invisible", Boolean(location));
+    $("#home_show").prop("hidden", !location);
+    $("#home_delete").prop("hidden", !location);
+    $("#home_undelete").prop("hidden", !(!location && deleted_lat && deleted_lon));
+    if (location) {
+      marker.setLatLng([lat, lon]);
+      marker.addTo(map);
+      map.panTo([lat, lon]);
+    } else {
+      marker.removeFrom(map);
+    }
+  }
+
+  function isCloseEnoughToMapCenter(location) {
+    var inputPt = map.latLngToContainerPoint(location),
+        centerPt = map.latLngToContainerPoint(map.getCenter());
+
+    return centerPt.distanceTo(inputPt) < 10;
+  }
+
   function updateAuthUID() {
     var provider = $("select#user_auth_provider").val();
 
index 5a033bd0b6a3ed8e26cecf1c9d33930f8b29e89a..f7192a68eaf5ac34cd9a4d31e77233de19e4a8fc 100644 (file)
@@ -1132,11 +1132,6 @@ tr.turn:hover {
 /* Rules for messages pages */
 
 .messages {
-  button[type="submit"] {
-    margin: auto;
-    white-space: nowrap;
-  }
-
   .inbox-row {
     background: $offwhite;
   }
@@ -1146,24 +1141,6 @@ tr.turn:hover {
   }
 }
 
-.inbox-row .inbox-mark-read {
-  display: none;
-}
-
-.inbox-sent {
-  white-space: nowrap;
-}
-
-.inbox-mark-unread,
-.inbox-mark-read,
-.inbox-delete {
-  width: 1%;
-}
-
-.inbox-row-unread .inbox-mark-unread {
-  display: none;
-}
-
 .search_form {
   background-color: $lightgrey;
 
index ea9aacb21d97f5e72b18e95fc3e28635cf89d903..018343d7c457dbc3d0565e106f9e6008a78fd0c9 100644 (file)
@@ -280,7 +280,7 @@ class DiaryEntriesController < ApplicationController
       @lon = @diary_entry.longitude
       @lat = @diary_entry.latitude
       @zoom = 12
-    elsif current_user.home_lat.nil? || current_user.home_lon.nil?
+    elsif !current_user.has_home?
       @lon = params[:lon] || -0.1
       @lat = params[:lat] || 51.5
       @zoom = params[:zoom] || 4
index bb09f3a49953bd66ec26fcb8734befb800c767e1..4b3a22cd3955c4984011fab89dc2b9f937f49be9 100644 (file)
@@ -54,7 +54,7 @@ module ApplicationHelper
     if current_user
       data[:user] = current_user.id.to_json
 
-      data[:user_home] = { :lat => current_user.home_lat, :lon => current_user.home_lon } unless current_user.home_lon.nil? || current_user.home_lat.nil?
+      data[:user_home] = { :lat => current_user.home_lat, :lon => current_user.home_lon } if current_user.has_home?
     end
 
     data[:location] = session[:location] if session[:location]
index c809b619294732038c97558423b349fe2050212c..41f249d4e484b628ca236e7e01af2be5a4cb386e 100644 (file)
@@ -238,8 +238,12 @@ class User < ApplicationRecord
     @preferred_languages ||= Locale.list(languages)
   end
 
+  def has_home?
+    home_lat && home_lon
+  end
+
   def nearby(radius = Settings.nearby_radius, num = Settings.nearby_users)
-    if home_lon && home_lat
+    if has_home?
       gc = OSM::GreatCircle.new(home_lat, home_lon)
       sql_for_area = QuadTile.sql_for_area(gc.bounds(radius), "home_")
       sql_for_distance = gc.sql_for_distance("home_lat", "home_lon")
@@ -401,6 +405,6 @@ class User < ApplicationRecord
   end
 
   def update_tile
-    self.home_tile = QuadTile.tile_for_point(home_lat, home_lon) if home_lat && home_lon
+    self.home_tile = QuadTile.tile_for_point(home_lat, home_lon) if has_home?
   end
 end
index 15f0685ac9e24b9131b75ab2389a73c04157e008..b8491601055207ac3609b6dcf3ba9c120b27d5f5 100644 (file)
@@ -46,7 +46,7 @@ json.user do
   end
 
   if current_user && current_user == user && can?(:details, User)
-    if user.home_lat && user.home_lon
+    if user.has_home?
       json.home do
         json.lat user.home_lat
         json.lon user.home_lon
index 1791c60ef96fb0cf78d876106ed07c2b836b7135..23ec1d34d6c0af80fc9b6899b84f3aed8b731973 100644 (file)
@@ -25,7 +25,7 @@ xml.tag! "user", :id => user.id,
     end
   end
   if current_user && current_user == user && can?(:details, User)
-    if user.home_lat && user.home_lon
+    if user.has_home?
       xml.tag! "home", :lat => user.home_lat,
                        :lon => user.home_lon,
                        :zoom => user.home_zoom
index 7785c05523fb287cc3a239b430b65392b3c15953..aba6094b2c9a159815917d87c929a983160d48f0 100644 (file)
@@ -11,7 +11,7 @@
   <div class="col">
     <p class='text-muted mb-0'>
       <%= link_to contact.display_name, user_path(contact) %>
-      <% if @user.home_lon and @user.home_lat and contact.home_lon and contact.home_lat %>
+      <% if @user.has_home? and contact.has_home? %>
         <% distance = @user.distance(contact) %>
         <% if distance < 1 %>
           (<%= t ".m away", :count => (distance * 1000).round %>)
index d0344ce79bd61a7c773994328dcc915bf3cc8656..eb3ceef6c528e35174acaf7c3053694f6a2741df 100644 (file)
@@ -5,7 +5,7 @@
 <div class="row">
   <% if current_user and @user.id == current_user.id %>
     <div class="col-md order-md-last">
-      <% if @user.home_lat.nil? or @user.home_lon.nil? %>
+      <% if !@user.has_home? %>
         <div id="map" class="content_map border border-grey">
           <p class="m-3"><%= t(".no_home_location_html", :edit_profile_link => link_to(t(".edit_your_profile"), edit_profile_path)) %></p>
         </div>
index f806201eb8ff929eedc11585370ff904c42c3ecf..c7cc75c492ff26d7b50d00b81994ae70293bb7c9 100644 (file)
@@ -1,4 +1,4 @@
 <% unless (banner = next_banner()).nil? %>
-<%= link_to (image_tag banner[:img], :alt => banner[:alt], :title => banner[:alt]), banner[:link] %>
+<%= link_to (image_tag banner[:img], :srcset => banner[:srcset], :alt => banner[:alt], :title => banner[:alt]), banner[:link] %>
 <button type="button" class="btn-close position-absolute top-0 end-0 p-4" id="<%= banner_cookie(banner[:id]) %>" aria-label="<%= t("javascripts.close") %>"></button>
 <% end %>
index 6d983d30ea153454ed225068d3baa97f79cd5c66..40f06a8990f41878c51033a95c35b277525cc5d1 100644 (file)
@@ -4,7 +4,7 @@
 
 <% content_for(:body_class) { "map-layout" } %>
 
-<% if current_user and !current_user.home_lon.nil? and !current_user.home_lat.nil? %>
+<% if current_user&.has_home? %>
   <% content_for :greeting do %>
     <%= link_to t("layouts.home"),
                 "#",
index 1a4445eae9edad0b4d6aedb110f3c7e9b84ee663..b2a1bc26868e82de84ee3cac44a0357c313a36b2 100644 (file)
@@ -1,8 +1,10 @@
 <tr id="inbox-<%= message_summary.id %>" class="inbox-row<%= "-unread" unless message_summary.message_read? %>">
-  <td class="inbox-sender"><%= link_to message_summary.sender.display_name, user_path(message_summary.sender) %></td>
-  <td class="inbox-subject"><%= link_to message_summary.title, message_path(message_summary) %></td>
-  <td class="inbox-sent"><%= l message_summary.sent_on, :format => :friendly %></td>
-  <td class="inbox-mark-unread"><%= button_to t(".unread_button"), message_mark_path(message_summary, :mark => "unread"), :remote => true, :class => "btn btn-sm btn-primary" %></td>
-  <td class="inbox-mark-read"><%= button_to t(".read_button"), message_mark_path(message_summary, :mark => "read"), :remote => true, :class => "btn btn-sm btn-primary" %></td>
-  <td class="inbox-destroy"><%= button_to t(".destroy_button"), message_path(message_summary, :referer => request.fullpath), :method => :delete, :remote => true, :class => "btn btn-sm btn-danger" %></td>
+  <td><%= link_to message_summary.sender.display_name, user_path(message_summary.sender) %></td>
+  <td><%= link_to message_summary.title, message_path(message_summary) %></td>
+  <td class="text-nowrap"><%= l message_summary.sent_on, :format => :friendly %></td>
+  <td class="text-nowrap d-flex justify-content-end gap-1">
+    <%= button_to t(".unread_button"), message_mark_path(message_summary, :mark => "unread"), :remote => true, :class => "btn btn-sm btn-primary", :form => { :class => "inbox-mark-unread", :hidden => !message_summary.message_read? } %>
+    <%= button_to t(".read_button"), message_mark_path(message_summary, :mark => "read"), :remote => true, :class => "btn btn-sm btn-primary", :form => { :class => "inbox-mark-read", :hidden => message_summary.message_read? } %>
+    <%= button_to t(".destroy_button"), message_path(message_summary, :referer => request.fullpath), :method => :delete, :remote => true, :class => "btn btn-sm btn-danger", :form_class => "inbox-destroy" %>
+  </td>
 </tr>
index 4d1b361b1822dd8f2cf3d8ad0171a1ddca522c21..24caba5ab0a495d1b74d6255b5983602cb9ed3e8 100644 (file)
@@ -1,6 +1,8 @@
 <tr class="inbox-row">
-  <td class="inbox-sender"><%= link_to sent_message_summary.recipient.display_name, user_path(sent_message_summary.recipient) %></td>
-  <td class="inbox-subject"><%= link_to sent_message_summary.title, message_path(sent_message_summary) %></td>
-  <td class="inbox-sent"><%= l sent_message_summary.sent_on, :format => :friendly %></td>
-  <td class="inbox-destroy"><%= button_to t(".destroy_button"), message_path(sent_message_summary, :referer => request.fullpath), :method => :delete, :remote => true, :class => "btn btn-sm btn-danger" %></td>
+  <td><%= link_to sent_message_summary.recipient.display_name, user_path(sent_message_summary.recipient) %></td>
+  <td><%= link_to sent_message_summary.title, message_path(sent_message_summary) %></td>
+  <td class="text-nowrap"><%= l sent_message_summary.sent_on, :format => :friendly %></td>
+  <td class="text-nowrap d-flex justify-content-end gap-1">
+    <%= button_to t(".destroy_button"), message_path(sent_message_summary, :referer => request.fullpath), :method => :delete, :remote => true, :class => "btn btn-sm btn-danger", :form_class => "inbox-destroy" %>
+  </td>
 </tr>
index 4f2925b149e386f86fa4e07c372c8ec5152797fd..54089c34a65ba6cea80c625b0ed7b362b0e7cdcd 100644 (file)
   <h4><%= render :partial => "message_count" %></h4>
 
 <% if current_user.messages.size > 0 %>
-  <table class="table table-sm">
+  <table class="table table-sm align-middle">
     <thead>
       <tr>
         <th><%= t ".from" %></th>
         <th><%= t ".subject" %></th>
         <th><%= t ".date" %></th>
-        <th></th>
-        <th></th>
       </tr>
     </thead>
     <tbody>
index 0099b573d816a0d289ca4e65cf17ee52bc400ad5..e246f9292ebb8afaf0161e306b55fb812176f379 100644 (file)
 <h4><%= t ".messages", :count => current_user.sent_messages.size %></h4>
 
 <% if current_user.sent_messages.size > 0 %>
-  <table class="table table-sm">
+  <table class="table table-sm align-middle">
     <thead>
       <tr>
         <th><%= t ".to" %></th>
         <th><%= t ".subject" %></th>
         <th><%= t ".date" %></th>
-        <th></th>
       </tr>
     </thead>
     <tbody>
index 5bf7426f2946c74a1ecc3a770b5a4363954eb13f..cac657ff1a91cf500c9ee469ef9d8b276082fe55 100644 (file)
 
   <fieldset>
     <legend><%= t ".home location" -%></legend>
-    <p id="home_message" class="text-muted"<% if current_user.home_lat and current_user.home_lon %> hidden<% end %>><%= t ".no home location" %></p>
+    <p id="home_message" class="text-muted m-0<% if current_user.has_home? %> invisible<% end %>"><%= t ".no home location" %></p>
     <div class="row">
       <%= f.text_field :home_lat, :wrapper_class => "col-sm-4", :id => "home_lat" %>
       <%= f.text_field :home_lon, :wrapper_class => "col-sm-4", :id => "home_lon" %>
+      <div class="col-sm-4 pt-2 align-self-end">
+        <button type="button" id="home_show" class="btn btn-outline-primary"<% unless current_user.has_home? %> hidden<% end %> disabled><%= t ".show" %></button>
+        <button type="button" id="home_delete" class="btn btn-outline-primary"<% unless current_user.has_home? %> hidden<% end %>><%= t ".delete" %></button>
+        <button type="button" id="home_undelete" class="btn btn-outline-primary" hidden><%= t ".undelete" %></button>
+      </div>
     </div>
     <div class="form-check">
-      <input class="form-check-input" type="checkbox" name="updatehome" value="1" <% unless current_user.home_lat and current_user.home_lon %> checked="checked" <% end %> id="updatehome" />
+      <input class="form-check-input" type="checkbox" name="updatehome" value="1" <% unless current_user.has_home? %> checked <% end %> id="updatehome" />
       <label class="form-check-label" for="updatehome"><%= t ".update home location on click" %></label>
     </div>
     <%= tag.div "", :id => "map", :class => "content_map set_location border border-grey rounded" %>
index c05b92d44e23df1de3861f522f9c64a7b6e98ffd..e14c5806ccfb3df5955041d517a2ec10244d5fe9 100644 (file)
@@ -1754,6 +1754,9 @@ en:
       home location: "Home Location"
       no home location: "You have not entered your home location."
       update home location on click: "Update home location when I click on the map?"
+      show: "Show"
+      delete: "Delete"
+      undelete: "Undo delete"
     update:
       success: Profile updated.
       failure: Couldn't update profile.
index 9f266ab763145f37401aa83d16d240e8e73a7d02..4f96e3ecb0d713b78f70988adb8f2f301d9c35e9 100644 (file)
@@ -151,7 +151,7 @@ module Api
       get changeset_show_path(changeset)
       assert_response :success, "cannot get first changeset"
 
-      assert_select "osm[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "osm>changeset[id='#{changeset.id}']", 1
       assert_select "osm>changeset>@open", "true"
       assert_select "osm>changeset>@created_at", changeset.created_at.xmlschema
@@ -161,7 +161,7 @@ module Api
       get changeset_show_path(changeset), :params => { :include_discussion => true }
       assert_response :success, "cannot get first changeset with comments"
 
-      assert_select "osm[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "osm>changeset[id='#{changeset.id}']", 1
       assert_select "osm>changeset>@open", "true"
       assert_select "osm>changeset>@created_at", changeset.created_at.xmlschema
@@ -175,7 +175,7 @@ module Api
       get changeset_show_path(changeset), :params => { :include_discussion => true }
       assert_response :success, "cannot get closed changeset with comments"
 
-      assert_select "osm[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "osm>changeset[id='#{changeset.id}']", 1
       assert_select "osm>changeset>@open", "false"
       assert_select "osm>changeset>@created_at", changeset.created_at.xmlschema
@@ -194,7 +194,7 @@ module Api
       assert_not_nil js
 
       assert_equal Settings.api_version, js["version"]
-      assert_equal "OpenStreetMap server", js["generator"]
+      assert_equal Settings.generator, js["generator"]
       assert_equal changeset.id, js["changeset"]["id"]
       assert js["changeset"]["open"]
       assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"]
@@ -210,7 +210,7 @@ module Api
       js = ActiveSupport::JSON.decode(@response.body)
       assert_not_nil js
       assert_equal Settings.api_version, js["version"]
-      assert_equal "OpenStreetMap server", js["generator"]
+      assert_equal Settings.generator, js["generator"]
       assert_equal changeset.id, js["changeset"]["id"]
       assert js["changeset"]["open"]
       assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"]
@@ -247,7 +247,7 @@ module Api
 
       assert_not_nil js
       assert_equal Settings.api_version, js["version"]
-      assert_equal "OpenStreetMap server", js["generator"]
+      assert_equal Settings.generator, js["generator"]
       assert_equal changeset.id, js["changeset"]["id"]
       assert_not js["changeset"]["open"]
       assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"]
@@ -521,7 +521,7 @@ module Api
                       "can't upload a simple valid creation to changeset: #{@response.body}"
 
       # check the returned payload
-      assert_select "diffResult[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "diffResult[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "diffResult>node", 1
       assert_select "diffResult>way", 1
       assert_select "diffResult>relation", 1
@@ -759,7 +759,7 @@ module Api
                       "can't do a conditional delete of in use objects: #{@response.body}"
 
       # check the returned payload
-      assert_select "diffResult[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "diffResult[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "diffResult>node", 1
       assert_select "diffResult>way", 1
       assert_select "diffResult>relation", 1
@@ -1430,7 +1430,7 @@ module Api
                       "failed to return error in XML format"
 
       # check the returned payload
-      assert_select "osmError[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "osmError[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
       assert_select "osmError>status", 1
       assert_select "osmError>message", 1
     end
@@ -1890,7 +1890,7 @@ module Api
       assert_not_nil js
 
       assert_equal Settings.api_version, js["version"]
-      assert_equal "OpenStreetMap server", js["generator"]
+      assert_equal Settings.generator, js["generator"]
       assert_equal 2, js["changesets"].count
 
       # check that the correct error is given when we provide both UID and name
index eb8f8e02256eb5c3d8e97341a2f2758316199ba6..7f2c196654476c6499f058728952e0e2a17348aa 100644 (file)
@@ -915,7 +915,7 @@ module Api
       assert_response :success
 
       # count one osm element
-      assert_select "osm[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 
       # we should have only the expected number of relations
       assert_select "osm>relation", expected_relations.size
index 2be69e654412d3d4eaef79bf29672638e387fa71..5ff60cd309f263db36b99d2d5011f7e4814e684a 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
   resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8"
   integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==
 
-"@eslint/eslintrc@^2.1.1":
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.1.tgz#18d635e24ad35f7276e8a49d135c7d3ca6a46f93"
-  integrity sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==
+"@eslint/eslintrc@^2.1.2":
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396"
+  integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==
   dependencies:
     ajv "^6.12.4"
     debug "^4.3.2"
     minimatch "^3.1.2"
     strip-json-comments "^3.1.1"
 
-"@eslint/js@^8.46.0":
-  version "8.46.0"
-  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.46.0.tgz#3f7802972e8b6fe3f88ed1aabc74ec596c456db6"
-  integrity sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==
+"@eslint/js@^8.47.0":
+  version "8.47.0"
+  resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.47.0.tgz#5478fdf443ff8158f9de171c704ae45308696c7d"
+  integrity sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==
 
 "@humanwhocodes/config-array@^0.11.10":
   version "0.11.10"
@@ -218,20 +218,20 @@ eslint-scope@^7.2.2:
     esrecurse "^4.3.0"
     estraverse "^5.2.0"
 
-eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.2:
-  version "3.4.2"
-  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz#8c2095440eca8c933bedcadf16fefa44dbe9ba5f"
-  integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+  version "3.4.3"
+  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+  integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
 
 eslint@^8.0.0:
-  version "8.46.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.46.0.tgz#a06a0ff6974e53e643acc42d1dcf2e7f797b3552"
-  integrity sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==
+  version "8.47.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.47.0.tgz#c95f9b935463fb4fad7005e626c7621052e90806"
+  integrity sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==
   dependencies:
     "@eslint-community/eslint-utils" "^4.2.0"
     "@eslint-community/regexpp" "^4.6.1"
-    "@eslint/eslintrc" "^2.1.1"
-    "@eslint/js" "^8.46.0"
+    "@eslint/eslintrc" "^2.1.2"
+    "@eslint/js" "^8.47.0"
     "@humanwhocodes/config-array" "^0.11.10"
     "@humanwhocodes/module-importer" "^1.0.1"
     "@nodelib/fs.walk" "^1.2.8"
@@ -242,7 +242,7 @@ eslint@^8.0.0:
     doctrine "^3.0.0"
     escape-string-regexp "^4.0.0"
     eslint-scope "^7.2.2"
-    eslint-visitor-keys "^3.4.2"
+    eslint-visitor-keys "^3.4.3"
     espree "^9.6.1"
     esquery "^1.4.2"
     esutils "^2.0.2"