From: Tom Hughes
Date: Thu, 28 Dec 2023 18:39:22 +0000 (+0000)
Subject: Merge remote-tracking branch 'upstream/pull/4439'
X-Git-Tag: live~1377
X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/ee56d1057dffb23bc3836970aab06f455e4ae487?hp=8c32e6349281dc041af55d3b493fdeac85212b02
Merge remote-tracking branch 'upstream/pull/4439'
---
diff --git a/.rubocop.yml b/.rubocop.yml
index 97bb72e0a..1e18afd83 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -37,9 +37,6 @@ Metrics/ClassLength:
Metrics/ModuleLength:
Max: 150
-Minitest/MultipleAssertions:
- Enabled: false
-
Naming/FileName:
Exclude:
- 'script/deliver-message'
diff --git a/Gemfile.lock b/Gemfile.lock
index 29ad5ed31..96ece492d 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -95,8 +95,8 @@ GEM
autoprefixer-rails (10.4.16.0)
execjs (~> 2)
aws-eventstream (1.3.0)
- aws-partitions (1.869.0)
- aws-sdk-core (3.190.0)
+ aws-partitions (1.875.0)
+ aws-sdk-core (3.190.1)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
@@ -104,7 +104,7 @@ GEM
aws-sdk-kms (1.75.0)
aws-sdk-core (~> 3, >= 3.188.0)
aws-sigv4 (~> 1.1)
- aws-sdk-s3 (1.141.0)
+ aws-sdk-s3 (1.142.0)
aws-sdk-core (~> 3, >= 3.189.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8)
@@ -133,7 +133,8 @@ GEM
bootstrap_form (5.4.0)
actionpack (>= 6.1)
activemodel (>= 6.1)
- brakeman (6.1.0)
+ brakeman (6.1.1)
+ racc
brotli (0.4.0)
browser (5.3.1)
builder (3.2.4)
@@ -228,12 +229,12 @@ GEM
erubi (1.12.0)
execjs (2.9.1)
exifr (1.4.0)
- factory_bot (6.4.2)
+ factory_bot (6.4.4)
activesupport (>= 5.0.0)
factory_bot_rails (6.4.2)
factory_bot (~> 6.4)
railties (>= 5.0.0)
- faraday (2.7.12)
+ faraday (2.8.1)
base64
faraday-net_http (>= 2.0, < 3.1)
ruby2_keywords (>= 0.0.4)
@@ -289,7 +290,7 @@ GEM
image_size (3.3.0)
in_threads (1.6.0)
io-console (0.7.1)
- irb (1.10.1)
+ irb (1.11.0)
rdoc
reline (>= 0.3.8)
jbuilder (2.11.5)
@@ -335,7 +336,7 @@ GEM
multi_json (1.15.0)
multi_xml (0.6.0)
mutex_m (0.2.0)
- net-imap (0.4.8)
+ net-imap (0.4.9)
date
net-protocol
net-pop (0.1.2)
@@ -345,7 +346,7 @@ GEM
net-smtp (0.4.0)
net-protocol
nio4r (2.7.0)
- nokogiri (1.15.5)
+ nokogiri (1.16.0)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oauth (0.4.7)
@@ -495,13 +496,13 @@ GEM
rubocop (~> 1.41)
rubocop-factory_bot (2.24.0)
rubocop (~> 1.33)
- rubocop-minitest (0.34.1)
+ rubocop-minitest (0.34.2)
rubocop (>= 1.39, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
- rubocop-performance (1.20.0)
+ rubocop-performance (1.20.1)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
- rubocop-rails (2.23.0)
+ rubocop-rails (2.23.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
diff --git a/app/assets/images/key/cyclemap/cycleway.png b/app/assets/images/key/cyclemap/cycleway.png
deleted file mode 100644
index 13bed4a7d..000000000
Binary files a/app/assets/images/key/cyclemap/cycleway.png and /dev/null differ
diff --git a/app/assets/images/key/cyclemap/footway.svg b/app/assets/images/key/cyclemap/footway.svg
deleted file mode 100644
index ecad17425..000000000
--- a/app/assets/images/key/cyclemap/footway.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/cyclemap/motorway12.png b/app/assets/images/key/cyclemap/motorway12.png
deleted file mode 100644
index 749493ad6..000000000
Binary files a/app/assets/images/key/cyclemap/motorway12.png and /dev/null differ
diff --git a/app/assets/images/key/cyclemap/pedestrian.svg b/app/assets/images/key/cyclemap/pedestrian.svg
deleted file mode 100644
index af8fce170..000000000
--- a/app/assets/images/key/cyclemap/pedestrian.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/cyclemap/primary12.png b/app/assets/images/key/cyclemap/primary12.png
deleted file mode 100644
index fed37d054..000000000
Binary files a/app/assets/images/key/cyclemap/primary12.png and /dev/null differ
diff --git a/app/assets/images/key/cyclemap/rail.png b/app/assets/images/key/cyclemap/rail.png
deleted file mode 100644
index 0abf0c1df..000000000
Binary files a/app/assets/images/key/cyclemap/rail.png and /dev/null differ
diff --git a/app/assets/images/key/cyclemap/rail14.png b/app/assets/images/key/cyclemap/rail14.png
deleted file mode 100644
index 957f17c85..000000000
Binary files a/app/assets/images/key/cyclemap/rail14.png and /dev/null differ
diff --git a/app/assets/images/key/cyclemap/secondary12.png b/app/assets/images/key/cyclemap/secondary12.png
deleted file mode 100644
index cde008523..000000000
Binary files a/app/assets/images/key/cyclemap/secondary12.png and /dev/null differ
diff --git a/app/assets/images/key/cyclemap/track.png b/app/assets/images/key/cyclemap/track.png
deleted file mode 100644
index f294edca0..000000000
Binary files a/app/assets/images/key/cyclemap/track.png and /dev/null differ
diff --git a/app/assets/images/key/cyclemap/trunk12.png b/app/assets/images/key/cyclemap/trunk12.png
deleted file mode 100644
index 51230a021..000000000
Binary files a/app/assets/images/key/cyclemap/trunk12.png and /dev/null differ
diff --git a/app/assets/images/key/mapnik/bridge.svg b/app/assets/images/key/mapnik/bridge.svg
deleted file mode 100644
index 4096e8166..000000000
--- a/app/assets/images/key/mapnik/bridge.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/app/assets/images/key/mapnik/bridleway.png b/app/assets/images/key/mapnik/bridleway.png
deleted file mode 100644
index 9aec1ad33..000000000
Binary files a/app/assets/images/key/mapnik/bridleway.png and /dev/null differ
diff --git a/app/assets/images/key/mapnik/building15.svg b/app/assets/images/key/mapnik/building15.svg
deleted file mode 100644
index cc0507340..000000000
--- a/app/assets/images/key/mapnik/building15.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/mapnik/building16.svg b/app/assets/images/key/mapnik/building16.svg
deleted file mode 100644
index 6ff2210a5..000000000
--- a/app/assets/images/key/mapnik/building16.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/mapnik/cycleway.png b/app/assets/images/key/mapnik/cycleway.png
deleted file mode 100644
index a1a16f1ed..000000000
Binary files a/app/assets/images/key/mapnik/cycleway.png and /dev/null differ
diff --git a/app/assets/images/key/mapnik/footway.png b/app/assets/images/key/mapnik/footway.png
deleted file mode 100644
index 4486119ba..000000000
Binary files a/app/assets/images/key/mapnik/footway.png and /dev/null differ
diff --git a/app/assets/images/key/mapnik/glacier10.svg b/app/assets/images/key/mapnik/glacier10.svg
deleted file mode 100644
index be79f238a..000000000
--- a/app/assets/images/key/mapnik/glacier10.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/mapnik/glacier5.svg b/app/assets/images/key/mapnik/glacier5.svg
deleted file mode 100644
index 8e6d368eb..000000000
--- a/app/assets/images/key/mapnik/glacier5.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/mapnik/motorway.png b/app/assets/images/key/mapnik/motorway.png
deleted file mode 100644
index 484fc9daa..000000000
Binary files a/app/assets/images/key/mapnik/motorway.png and /dev/null differ
diff --git a/app/assets/images/key/mapnik/rail12.svg b/app/assets/images/key/mapnik/rail12.svg
deleted file mode 100644
index 45c76a41e..000000000
--- a/app/assets/images/key/mapnik/rail12.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/app/assets/images/key/mapnik/rail18.svg b/app/assets/images/key/mapnik/rail18.svg
deleted file mode 100644
index 5094bafde..000000000
--- a/app/assets/images/key/mapnik/rail18.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/app/assets/images/key/mapnik/track.png b/app/assets/images/key/mapnik/track.png
deleted file mode 100644
index f294edca0..000000000
Binary files a/app/assets/images/key/mapnik/track.png and /dev/null differ
diff --git a/app/assets/images/key/mapnik/tram15.svg b/app/assets/images/key/mapnik/tram15.svg
deleted file mode 100644
index 8f873f7ee..000000000
--- a/app/assets/images/key/mapnik/tram15.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/mapnik/tunnel.svg b/app/assets/images/key/mapnik/tunnel.svg
deleted file mode 100644
index 05cd7e713..000000000
--- a/app/assets/images/key/mapnik/tunnel.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/app/assets/images/key/mapnik/unclassified.png b/app/assets/images/key/mapnik/unclassified.png
deleted file mode 100644
index 3cdfb2dda..000000000
Binary files a/app/assets/images/key/mapnik/unclassified.png and /dev/null differ
diff --git a/app/assets/images/key/mapnik/unclassified13.png b/app/assets/images/key/mapnik/unclassified13.png
deleted file mode 100644
index 1a8792462..000000000
Binary files a/app/assets/images/key/mapnik/unclassified13.png and /dev/null differ
diff --git a/app/assets/images/key/opnvkarte/main_road11.svg b/app/assets/images/key/opnvkarte/main_road11.svg
deleted file mode 100644
index b03c74414..000000000
--- a/app/assets/images/key/opnvkarte/main_road11.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/opnvkarte/main_road13.svg b/app/assets/images/key/opnvkarte/main_road13.svg
deleted file mode 100644
index 2d5902236..000000000
--- a/app/assets/images/key/opnvkarte/main_road13.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/opnvkarte/main_road15.svg b/app/assets/images/key/opnvkarte/main_road15.svg
deleted file mode 100644
index cb5391648..000000000
--- a/app/assets/images/key/opnvkarte/main_road15.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/opnvkarte/main_road17.svg b/app/assets/images/key/opnvkarte/main_road17.svg
deleted file mode 100644
index de7db0f17..000000000
--- a/app/assets/images/key/opnvkarte/main_road17.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/opnvkarte/motorway13.svg b/app/assets/images/key/opnvkarte/motorway13.svg
deleted file mode 100644
index c44e777a2..000000000
--- a/app/assets/images/key/opnvkarte/motorway13.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/opnvkarte/motorway15.svg b/app/assets/images/key/opnvkarte/motorway15.svg
deleted file mode 100644
index c217bb2a7..000000000
--- a/app/assets/images/key/opnvkarte/motorway15.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/app/assets/images/key/opnvkarte/motorway17.svg b/app/assets/images/key/opnvkarte/motorway17.svg
deleted file mode 100644
index 36b37db59..000000000
--- a/app/assets/images/key/opnvkarte/motorway17.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/app/assets/images/key/opnvkarte/motorway8.svg b/app/assets/images/key/opnvkarte/motorway8.svg
deleted file mode 100644
index 21f006cef..000000000
--- a/app/assets/images/key/opnvkarte/motorway8.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/app/assets/images/key/opnvkarte/rail11.svg b/app/assets/images/key/opnvkarte/rail11.svg
deleted file mode 100644
index 849f5cf94..000000000
--- a/app/assets/images/key/opnvkarte/rail11.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/app/assets/images/key/opnvkarte/rail15.svg b/app/assets/images/key/opnvkarte/rail15.svg
deleted file mode 100644
index efe7792b9..000000000
--- a/app/assets/images/key/opnvkarte/rail15.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/app/assets/javascripts/messages.js b/app/assets/javascripts/messages.js
index 5accc1a60..cc86da05e 100644
--- a/app/assets/javascripts/messages.js
+++ b/app/assets/javascripts/messages.js
@@ -22,6 +22,8 @@ $(document).ready(function () {
$(".user-button").before(data.inboxanchor);
$("#inbox-count").replaceWith(data.inbox_count);
+ $("#outbox-count").replaceWith(data.outbox_count);
+ $("#muted-count").replaceWith(data.muted_count);
}
function updateReadState(target, isRead) {
diff --git a/app/helpers/svg_helper.rb b/app/helpers/svg_helper.rb
index abb512f0d..a40fa7086 100644
--- a/app/helpers/svg_helper.rb
+++ b/app/helpers/svg_helper.rb
@@ -1,7 +1,37 @@
module SvgHelper
- def solid_svg_tag(width, height, fill, **options)
- tag.svg :width => width, :height => height, **options do
- tag.rect :width => "100%", :height => "100%", :fill => fill
+ def key_svg_tag(**options)
+ border_width = options["border"] ? (options["border-width"] || 1) : 0
+ rect_attrs = {
+ :width => "100%",
+ :height => "100%",
+ :fill => options["fill"] || "none"
+ }
+ if border_width.positive?
+ rect_attrs[:x] = rect_attrs[:y] = format("%g", 0.5 * border_width)
+ rect_attrs[:width] = options["width"] - border_width
+ rect_attrs[:height] = options["height"] - border_width
end
+ svg_attrs = options.slice("width", "height", "opacity", :class)
+
+ tag.svg(**svg_attrs) do
+ horizontal = "H#{options['width']}"
+ concat tag.rect(**rect_attrs, **stroke_attrs(options, "border")) if options["fill"] || options["border"]
+ if options["line"]
+ y_middle = format("%g", 0.5 * options["height"])
+ concat tag.path(:d => "M0,#{y_middle} #{horizontal}", **stroke_attrs(options, "line"))
+ end
+ if options["casing"]
+ casing_width = options["casing-width"] || 1
+ y_top = format("%g", 0.5 * casing_width)
+ y_bottom = format("%g", options["height"] - (0.5 * casing_width))
+ concat tag.path(:d => "M0,#{y_top} #{horizontal} M0,#{y_bottom} #{horizontal}", **stroke_attrs(options, "casing"))
+ end
+ end
+ end
+
+ private
+
+ def stroke_attrs(attrs, prefix)
+ attrs.select { |key| key.start_with?(prefix) }.transform_keys { |key| key.delete_prefix(prefix).prepend("stroke") }
end
end
diff --git a/app/views/layouts/map.html.erb b/app/views/layouts/map.html.erb
index 55066f25f..f6a7473a4 100644
--- a/app/views/layouts/map.html.erb
+++ b/app/views/layouts/map.html.erb
@@ -50,13 +50,9 @@
:bytemark => link_to(t("layouts.partners_bytemark"), "https://www.bytemark.co.uk"),
:partners => link_to(t("layouts.partners_partners"), "https://hardware.openstreetmap.org/thanks/") %>
-
<% end %>
diff --git a/app/views/messages/_message_count.html.erb b/app/views/messages/_inbox_count.html.erb
similarity index 91%
rename from app/views/messages/_message_count.html.erb
rename to app/views/messages/_inbox_count.html.erb
index 33a3b52f3..86bb2c474 100644
--- a/app/views/messages/_message_count.html.erb
+++ b/app/views/messages/_inbox_count.html.erb
@@ -1,7 +1,7 @@
-
+
<%= t "messages.inbox.messages",
:new_messages => t("messages.inbox.new_messages",
:count => current_user.new_messages.size),
:old_messages => t("messages.inbox.old_messages",
:count => current_user.messages.size - current_user.new_messages.size) %>
-
+
diff --git a/app/views/messages/_muted_count.html.erb b/app/views/messages/_muted_count.html.erb
new file mode 100644
index 000000000..207973d58
--- /dev/null
+++ b/app/views/messages/_muted_count.html.erb
@@ -0,0 +1,3 @@
+
+<%= t "messages.muted.messages", :count => current_user.muted_messages.size %>
+
diff --git a/app/views/messages/_outbox_count.html.erb b/app/views/messages/_outbox_count.html.erb
new file mode 100644
index 000000000..5b27f1d6e
--- /dev/null
+++ b/app/views/messages/_outbox_count.html.erb
@@ -0,0 +1,3 @@
+
+<%= t "messages.outbox.messages", :count => current_user.sent_messages.size %>
+
diff --git a/app/views/messages/destroy.json.jbuilder b/app/views/messages/destroy.json.jbuilder
index 3403ac888..65bfd6a6b 100644
--- a/app/views/messages/destroy.json.jbuilder
+++ b/app/views/messages/destroy.json.jbuilder
@@ -1,2 +1,4 @@
json.inboxanchor render(:partial => "layouts/inbox")
-json.inbox_count render(:partial => "message_count")
+json.inbox_count render(:partial => "inbox_count")
+json.outbox_count render(:partial => "outbox_count")
+json.muted_count render(:partial => "muted_count")
diff --git a/app/views/messages/inbox.html.erb b/app/views/messages/inbox.html.erb
index db807d2df..4d6be787b 100644
--- a/app/views/messages/inbox.html.erb
+++ b/app/views/messages/inbox.html.erb
@@ -4,7 +4,7 @@
<%= render :partial => "heading", :locals => { :active_link_path => inbox_messages_path } %>
-<%= render :partial => "message_count" %>
+<%= render :partial => "inbox_count" %>
<% if current_user.messages.size > 0 %>
<%= render :partial => "messages_table", :locals => { :columns => %w[from subject date], :messages => current_user.messages, :inner_partial => "message_summary" } %>
diff --git a/app/views/messages/mark.json.jbuilder b/app/views/messages/mark.json.jbuilder
index 3403ac888..65bfd6a6b 100644
--- a/app/views/messages/mark.json.jbuilder
+++ b/app/views/messages/mark.json.jbuilder
@@ -1,2 +1,4 @@
json.inboxanchor render(:partial => "layouts/inbox")
-json.inbox_count render(:partial => "message_count")
+json.inbox_count render(:partial => "inbox_count")
+json.outbox_count render(:partial => "outbox_count")
+json.muted_count render(:partial => "muted_count")
diff --git a/app/views/messages/muted.html.erb b/app/views/messages/muted.html.erb
index 40c74e915..8e97abc7f 100644
--- a/app/views/messages/muted.html.erb
+++ b/app/views/messages/muted.html.erb
@@ -4,6 +4,6 @@
<%= render :partial => "heading", :locals => { :active_link_path => muted_messages_path } %>
-<%= t ".messages", :count => current_user.muted_messages.size %>
+<%= render :partial => "muted_count" %>
<%= render :partial => "messages_table", :locals => { :columns => %w[from subject date], :messages => current_user.muted_messages, :inner_partial => "message_summary" } %>
diff --git a/app/views/messages/outbox.html.erb b/app/views/messages/outbox.html.erb
index ae8a899c4..65fbaf326 100644
--- a/app/views/messages/outbox.html.erb
+++ b/app/views/messages/outbox.html.erb
@@ -4,7 +4,7 @@
<%= render :partial => "heading", :locals => { :active_link_path => outbox_messages_path } %>
-<%= t ".messages", :count => current_user.sent_messages.size %>
+<%= render :partial => "outbox_count" %>
<% if current_user.sent_messages.size > 0 %>
<%= render :partial => "messages_table", :locals => { :columns => %w[to subject date], :messages => current_user.sent_messages, :inner_partial => "sent_message_summary" } %>
diff --git a/app/views/site/key.html.erb b/app/views/site/key.html.erb
index 28e364685..82105097e 100644
--- a/app/views/site/key.html.erb
+++ b/app/views/site/key.html.erb
@@ -4,10 +4,10 @@
<% layer_data.each do |entry| %>
<%= tag.tr :class => "mapkey-table-entry", :data => { :layer => layer_name, :zoom_min => entry["min_zoom"], :zoom_max => entry["max_zoom"] } do %>
- <% if entry["width"] && entry["height"] && entry["fill"] %>
- <%= solid_svg_tag entry["width"], entry["height"], entry["fill"], :class => "d-block mx-auto" %>
- <% else %>
+ <% if entry["image"] %>
<%= image_tag "key/#{layer_name}/#{entry['image']}", :class => "d-block mx-auto" %>
+ <% else %>
+ <%= key_svg_tag :class => "d-block mx-auto", **entry %>
<% end %>
|
diff --git a/config/key.yml b/config/key.yml
index d7d4017b1..5341245e5 100644
--- a/config/key.yml
+++ b/config/key.yml
@@ -1,24 +1,24 @@
mapnik:
# transportation: roads.mss
- - { min_zoom: 6, name: motorway, image: motorway.png }
+ - { min_zoom: 6, name: motorway, width: 52, height: 5, fill: "#e892a2", casing: "#dc2a67" }
- { min_zoom: 6, name: main_road, image: mainroad.png }
- { min_zoom: 8, name: main_road, image: mainroad8.png }
- { min_zoom: 12, name: main_road, image: mainroad12.png }
- - { min_zoom: 13, name: track, image: track.png }
- - { min_zoom: 13, name: bridleway, image: bridleway.png }
- - { min_zoom: 13, name: cycleway, image: cycleway.png }
- - { min_zoom: 13, name: footway, image: footway.png }
+ - { min_zoom: 13, name: track, width: 52, height: 3, opacity: .8, line: "#996600", line-width: 1.5, line-dasharray: "6 5" }
+ - { min_zoom: 13, name: bridleway, width: 52, height: 3, line: green, line-width: 1.25, line-dasharray: "4 2" }
+ - { min_zoom: 13, name: cycleway, width: 52, height: 1, line: blue, line-dasharray: "3 3.5" }
+ - { min_zoom: 13, name: footway, width: 52, height: 3, line: salmon, line-width: 1.3, line-dasharray: "3 3.5" }
- { min_zoom: 8, name: rail, width: 52, height: 1, fill: "#787878" }
- - { min_zoom: 12, name: rail, image: rail12.svg }
- - { min_zoom: 18, name: rail, image: rail18.svg }
+ - { min_zoom: 12, name: rail, width: 52, height: 3, fill: "#707070", line: white, line-dasharray: 8, line-dashoffset: 2 }
+ - { min_zoom: 18, name: rail, width: 52, height: 4, fill: "#707070", line: white, line-dasharray: 8, line-dashoffset: 2, line-width: 2 }
- { min_zoom: 12, name: subway, width: 52, height: 2, fill: "#999" }
- { min_zoom: 8, name: light_rail, width: 52, height: 1, fill: "#ccc" }
- { min_zoom: 10, name: light_rail, width: 52, height: 1, fill: "#aaa" }
- { min_zoom: 13, name: light_rail, width: 52, height: 2, fill: "#666" }
- - { min_zoom: 12, name: tram_only, width: 52, height: 1, fill: "#6e6e6eaa" }
- - { min_zoom: 14, name: tram_only, width: 52, height: 1, fill: "#6e6e6e" }
- - { min_zoom: 15, name: tram_only, image: tram15.svg }
- - { min_zoom: 17, name: tram_only, width: 52, height: 2, fill: "#6e6e6e" }
+ - { min_zoom: 12, name: tram_only, width: 52, height: 1, line: "#6e6e6e", line-width: 0.75 }
+ - { min_zoom: 14, name: tram_only, width: 52, height: 3, line: "#6e6e6e", line-width: 1 }
+ - { min_zoom: 15, name: tram_only, width: 52, height: 3, line: "#6e6e6e", line-width: 1.5 }
+ - { min_zoom: 17, name: tram_only, width: 52, height: 2, line: "#6e6e6e", line-width: 2 }
- { min_zoom: 12, name: [cable_car, chair_lift], image: cable.png }
- { min_zoom: 11, name: [runway_only, taxiway], image: runway11.svg }
- { min_zoom: 12, name: [runway_only, taxiway], image: runway12.svg }
@@ -30,8 +30,8 @@ mapnik:
# landcover z5: landcover.mss, water.mss
- { name: [lake_only, reservoir], width: 26, height: 10, fill: "#aad3df" }
- { name: intermittent_water, image: intermittent_water.svg }
- - { min_zoom: 5, name: glacier, image: glacier5.svg }
- - { min_zoom: 10, name: glacier, image: glacier10.svg }
+ - { min_zoom: 5, name: glacier, width: 26, height: 10, fill: "#ddecec", border: "#9cf" }
+ - { min_zoom: 10, name: glacier, width: 26, height: 10, fill: "#ddecec", border: "#9cf", border-dasharray: "4 2" }
- { min_zoom: 10, name: reef, image: reef.png }
- { min_zoom: 10, name: wetland, image: wetland.png }
- { min_zoom: 5, name: [forest_only, wood], width: 26, height: 10, fill: "#bddab1" }
@@ -74,40 +74,42 @@ mapnik:
- { min_zoom: 13, name: [school_only, university, hospital], image: school.svg }
# buildings: buildings.mss
- { min_zoom: 14, name: building, width: 10, height: 10, fill: "#ab9793" }
- - { min_zoom: 15, name: building, image: building15.svg }
- - { min_zoom: 16, name: building, image: building16.svg }
+ - { min_zoom: 15, name: building, width: 10, height: 10, fill: "#b9a99c", border: "#a99a8d" }
+ - { min_zoom: 16, name: building, width: 10, height: 10, fill: "#c4b6ab", border: "#a99a8d" }
# stations: stations.mss
- { min_zoom: 12, name: station, width: 4, height: 4, fill: "#7981b0" }
- { min_zoom: 13, name: station, width: 6, height: 6, fill: "#7981b0" }
- { min_zoom: 15, name: station, width: 9, height: 9, fill: "#7981b0" }
# other
- { min_zoom: 11, name: [summit_only, peak], image: summit.svg } # amenity-points.mss
- - { min_zoom: 13, name: tunnel, image: tunnel.svg } # roads.mss
- - { min_zoom: 13, name: bridge, image: bridge.svg } # roads.mss
+ - { min_zoom: 13, name: tunnel, width: 50, height: 5, casing: grey, casing-dasharray: "4 2", casing-dashoffset: 1 } # roads.mss
+ - { min_zoom: 13, name: bridge, width: 50, height: 5, casing: black } # roads.mss
- { min_zoom: 15, name: private, image: private.png }
- { min_zoom: 15, name: destination, image: destination.png }
- { min_zoom: 12, name: construction, image: construction.png }
cyclemap:
- { min_zoom: 5, name: motorway, width: 50, height: 3, fill: "#9a9ab1" }
- - { min_zoom: 12, name: motorway, image: motorway12.png }
+ - { min_zoom: 12, name: motorway, width: 50, height: 5, fill: "#bdbece", casing: "#8d95a7" }
- { min_zoom: 6, name: trunk, width: 50, height: 2, fill: "#c8d8c8" }
- - { min_zoom: 12, name: trunk, image: trunk12.png }
+ - { min_zoom: 12, name: trunk, width: 50, height: 5, fill: "#c8d8c8", casing: "#abb5a4" }
- { min_zoom: 8, name: primary, width: 50, height: 2, fill: "#d8c8c8" }
- - { min_zoom: 12, name: primary, image: primary12.png }
+ - { min_zoom: 12, name: primary, width: 50, height: 4, fill: "#f0e3e3", casing: "#d4b6b7" }
- { min_zoom: 10, name: secondary, width: 50, height: 1, fill: "#dadacc" }
- - { min_zoom: 12, name: secondary, image: secondary12.png }
- - { min_zoom: 15, name: pedestrian, image: pedestrian.svg }
- - { min_zoom: 13, name: track, image: track.png }
- - { min_zoom: 8, name: cycleway, image: cycleway.png }
+ - { min_zoom: 12, name: secondary, width: 50, height: 4, fill: "#ededc8", casing: "#c8b48a" }
+ - { min_zoom: 15, name: pedestrian, width: 50, height: 4, fill: "#e2e3e2", casing: "#9a9a9a" }
+ - { min_zoom: 13, name: track, width: 50, height: 3, fill: white, casing: "#999", casing-dasharray: "5 3", casing-dashoffset: 1 }
+ - { min_zoom: 15, name: track, width: 50, height: 4, fill: white, casing: "#999", casing-dasharray: "5 3", casing-dashoffset: 1 }
+ - { min_zoom: 17, name: track, width: 50, height: 5, fill: white, casing: "#999", casing-dasharray: "5 3", casing-dashoffset: 1 }
+ - { min_zoom: 8, name: cycleway, width: 50, height: 3, line: "#0100fe", line-width: 1.5, line-dasharray: "6 2" }
- { min_zoom: 5, name: cycleway_national, width: 50, height: 2, fill: "#fe0000" }
- { min_zoom: 13, name: cycleway_national, width: 50, height: 4, fill: "#ffb3b3" }
- { min_zoom: 7, name: cycleway_regional, width: 50, height: 2, fill: "#b638fb" }
- { min_zoom: 13, name: cycleway_regional, width: 50, height: 4, fill: "#ddb5d9" }
- { min_zoom: 8, name: cycleway_local, width: 50, height: 2, fill: "#0100fe" }
- { min_zoom: 13, name: cycleway_local, width: 50, height: 4, fill: "#b2b2ff" }
- - { min_zoom: 13, name: footway, image: footway.svg }
- - { min_zoom: 7, name: rail, image: rail.png }
- - { min_zoom: 14, name: rail, image: rail14.png }
+ - { min_zoom: 13, name: footway, width: 50, height: 3, line: "#bd6d6e", line-width: 1.5, line-dasharray: "6 2" }
+ - { min_zoom: 7, name: rail, width: 50, height: 3, line: "#999999", line-width: 1.5 }
+ - { min_zoom: 14, name: rail, width: 50, height: 4, fill: "#999999", line: white, line-dasharray: 4, line-width: 2 }
- { min_zoom: 1, name: [lake_only, reservoir], width: 26, height: 10, fill: "#addeff" }
- { min_zoom: 9, name: [forest_only, wood], width: 26, height: 10, fill: "#b3d6a4" }
- { min_zoom: 10, name: meadow, width: 26, height: 10, fill: "#c0de9c" }
@@ -119,8 +121,8 @@ cyclemap:
opnvkarte:
- { min_zoom: 6, name: rail, width: 52, height: 1, fill: "#868686" }
- { min_zoom: 8, name: rail, width: 52, height: 2, fill: "#868686" }
- - { min_zoom: 11, name: rail, image: rail11.svg }
- - { min_zoom: 15, name: rail, image: rail15.svg }
+ - { min_zoom: 11, name: rail, width: 52, height: 3, fill: "#868686", line: "#eeeeee", line-dasharray: 10, line-dashoffset: 9 }
+ - { min_zoom: 15, name: rail, width: 52, height: 4, fill: "#868686", line: "#eeeeee", line-dasharray: 10, line-dashoffset: 9, line-width: 2 }
- { min_zoom: 17, name: rail, image: rail17.svg }
- { min_zoom: 6, name: train, width: 52, height: 2, fill: "#ffc366" }
- { min_zoom: 10, name: train, width: 52, height: 3, fill: "#ffc366" }
@@ -154,15 +156,15 @@ opnvkarte:
- { min_zoom: 15, name: bus_stop, image: bus_stop15.svg }
- { min_zoom: 13, name: stop, image: stop13.svg }
- { min_zoom: 15, name: stop, image: stop15.svg }
- - { min_zoom: 8, name: motorway, image: motorway8.svg }
- - { min_zoom: 13, name: motorway, image: motorway13.svg }
- - { min_zoom: 15, name: motorway, image: motorway15.svg }
- - { min_zoom: 17, name: motorway, image: motorway17.svg }
- - { min_zoom: 8, name: main_road, width: 52, height: 1, fill: "#5c6d6d88" }
- - { min_zoom: 11, name: main_road, image: main_road11.svg }
- - { min_zoom: 13, name: main_road, image: main_road13.svg }
- - { min_zoom: 15, name: main_road, image: main_road15.svg }
- - { min_zoom: 17, name: main_road, image: main_road17.svg }
+ - { min_zoom: 8, name: motorway, width: 52, height: 4, fill: "#dddddd", casing: "#6d6d6d" }
+ - { min_zoom: 13, name: motorway, width: 52, height: 8, fill: "#dddddd", casing: "#6d6d6d" }
+ - { min_zoom: 15, name: motorway, width: 52, height: 13, fill: "#dddddd", casing: "#6d6d6d", line: "#ffffff", line-dasharray: 12, line-dashoffset: 4 }
+ - { min_zoom: 17, name: motorway, width: 52, height: 17, fill: "#dddddd", casing: "#6d6d6d", line: "#ffffff", line-dasharray: 12, line-dashoffset: 4, casing-width: 2 }
+ - { min_zoom: 8, name: main_road, width: 52, height: 1, fill: "#5c6d6d88" }
+ - { min_zoom: 11, name: main_road, width: 52, height: 4, fill: "#dddddd", casing: "#a1968b" }
+ - { min_zoom: 13, name: main_road, width: 52, height: 8, fill: "#dddddd", casing: "#a1968b" }
+ - { min_zoom: 15, name: main_road, width: 52, height: 13, fill: "#dddddd", casing: "#a1968b" }
+ - { min_zoom: 17, name: main_road, width: 52, height: 17, fill: "#dddddd", casing: "#a1968b" }
# landcover
- { min_zoom: 0, name: [lake_only, reservoir], width: 26, height: 10, fill: "#a1cbea" }
- { min_zoom: 8, name: [lake_only, reservoir], width: 26, height: 10, fill: "#bfd3ef" }
diff --git a/config/locales/en.yml b/config/locales/en.yml
index fa10f018f..14e9b5c44 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -2683,6 +2683,7 @@ en:
application: "Application"
permissions: "Permissions"
no_applications_html: "You have not yet authorized any %{oauth2} applications."
+ oauth_2: "OAuth 2"
application:
revoke: "Revoke Access"
confirm_revoke: "Revoke access for this application?"
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 1caa4e7de..0db0ee2ce 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -1812,6 +1812,7 @@ fa:
no home location: Ø´Ù
ا Ù
ØÙ خاÙÙÙ Ø®ÙØ¯ØªØ§Ù را ÙØ§Ø±Ø¯ ÙکردÙâØ§ÛØ¯.
update home location on click: ÙÙØªÛ رÙÛ ÙÙØ´Ù Ú©ÙÛÚ© Ù
ÛâÚ©ÙÙ
Ù
ÙÙØ¹Ûت خاÙÙ Ø±ÙØ²Ø¢Ù
د
Ø´ÙØ¯.
+ delete: ØØ°Ù
update:
success: ÙÙ
اÛÙ Ø°Ø®ÛØ±Ù شد.
failure: Ø°Ø®ÛØ±ÙâØ³Ø§Ø²Û ÙÙ
اÛÙ Ø§ÙØ¬Ø§Ù
ÙØ´Ø¯.
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 9db11fabb..56a0ce9fc 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -2,6 +2,7 @@
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: 0x010C
+# Author: 2NumForIce
# Author: Adriendelucca
# Author: Ajeje Brazorf
# Author: Alno
@@ -137,6 +138,11 @@ fr:
messages:
invalid_email_address: ne semble pas être une adresse de courriel valide
email_address_not_routable: nâest pas routable
+ models:
+ user_mute:
+ attributes:
+ subject:
+ format: '%{message}'
models:
acl: Liste de contrôle dâaccès
changeset: Groupe de modifications
@@ -2526,7 +2532,7 @@ fr:
military: Zone militaire
school_only: Ãcole
university: université
- hospital: hôpital
+ hospital: Hôpital
building: Bâtiment important
station: Gare ferroviaire
summit_only: Sommet
@@ -2537,7 +2543,7 @@ fr:
destination: Accès réservé aux riverains
construction: Routes en construction
bus_stop: Arrêt de bus
- stop: Arrêt
+ stop: Arrêter
bicycle_shop: Magasin de vélos
bicycle_parking: Parking à vélos
toilets: Toilettes
diff --git a/config/locales/ia.yml b/config/locales/ia.yml
index 5a5bb722a..ac7a08dbc 100644
--- a/config/locales/ia.yml
+++ b/config/locales/ia.yml
@@ -2341,16 +2341,16 @@ ia:
cable_car: Telepherico
chair_lift: Telesedia
runway_only: Pista de aeroporto
- taxiway: via de circulation pro aviones
+ taxiway: Via de circulation pro aviones
apron_only: Platteforma pro aviones
admin: Limite administrative
orchard_only: Verdiero
- vineyard: vinia
+ vineyard: Vinia
forest_only: Foreste
- wood: bosco
+ wood: Bosco
farmland: Terra agricole
grass_only: Herba
- meadow: prato
+ meadow: Prato
bare_rock: Rocca nude
sand: Sablo
golf: Percurso de golf
@@ -2364,7 +2364,7 @@ ia:
heathland: Landa
scrubland: Terreno de brossas
lake_only: Laco
- reservoir: bassino
+ reservoir: Reservoir
intermittent_water: Massa de aqua intermittente
glacier: Glaciero
reef: Scolio
@@ -2378,12 +2378,12 @@ ia:
reserve: Reserva natural
military: Area militar
school_only: Schola
- university: universitate
- hospital: hospital
+ university: Universitate
+ hospital: Hospital
building: Edificio significante
station: Station ferroviari
summit_only: Summitate
- peak: picco
+ peak: Picco
tunnel: Bordo a lineettas = tunnel
bridge: Bordo nigre = ponte
private: Accesso private
diff --git a/config/locales/skr-arab.yml b/config/locales/skr-arab.yml
index 4bd17ca3c..b27491ed1 100644
--- a/config/locales/skr-arab.yml
+++ b/config/locales/skr-arab.yml
@@ -1054,6 +1054,7 @@ skr-arab:
back_to_inbox: Ø§ÙØ¨Ø§Ú©Ø³ ØªÛ ÙØ§Ù¾Ø³
outbox:
title: آؤٹ باکس
+ actions: عÙ
Ù
show:
title: سÙÛÛØ§ Ù¾ÚÚ¾Ù
reply_button: Ø¬ÙØ§Ø¨
@@ -1219,6 +1220,7 @@ skr-arab:
bus: بس
cable_car: Ú©ÛØ¨Ù کار
chair_lift: ÚÛØ¦Ø± ÙÙÙ¹
+ taxiway: Ù¹ÛÚ©Ø³Û Ø¯Ø§ راÛ
orchard_only: بغÛÚØ§
forest_only: جÙÚ¯Ù
wood: ÙÚ©Ú
@@ -1238,6 +1240,7 @@ skr-arab:
university: ÛÙÙÛ ÙØ±Ø³Ù¹Û
hospital: ÛØ³Ù¾ØªØ§Ù
station: رÛÙÙÛ Ù¹ÛØ´Ý¨
+ peak: ÚÙÙ¹Û
bus_stop: بساں دا Ø§ÝØ§
stop: اÝÛ
welcome:
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index 85e7d5faf..680773e89 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -53,6 +53,12 @@ ta:
messages:
invalid_email_address: à®à¯à®²à¯à®²à¯à®ªà®à®¿à®¯à®¾à®à¯à®®à¯ மினà¯à®©à®à¯à®à®²à¯ à®®à¯à®à®µà®°à®¿à®¯à®¾à®à®¤à¯ தà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯
email_address_not_routable: திà®à¯à®¤à®¿à®°à¯à®ªà¯à®ªà®à¯à®à¯à®à®¿à®¯à®¤à¯ à®
லà¯à®²
+ models:
+ user_mute:
+ attributes:
+ subject:
+ format: '%{message}'
+ is_already_muted: à®à®±à¯à®à®©à®µà¯ à®®à¯à®©à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¾à®°à¯
models:
acl: à®
னà¯à®®à®¤à®¿à®à¯ à®à®à¯à®à¯à®ªà¯à®ªà®¾à®à¯à®à¯à®ªà¯ பà®à¯à®à®¿à®¯à®²à¯
changeset: மாறà¯à®±à®à¯à®à®³à¯
@@ -597,14 +603,16 @@ ta:
from: 'à®
னà¯à®ªà¯à®ªà¯à®¨à®°à¯:'
subject: பà¯à®°à¯à®³à¯
date: நாளà¯
+ actions: à®à¯à®¯à®²à¯à®à®³à¯
message_summary:
unread_button: வாà®à®¿à®à¯à®à®ªà¯à®ªà®à®¾à®¤à®¤à®¾à® à®à®© à®à¯à®±à®¿à®¯à®¿à®à¯
read_button: வாà®à®¿à®¤à¯à®¤à®¤à®¾à® à®à¯à®±à®¿à®¯à®¿à®à¯
reply_button: பதிலளி
destroy_button: நà¯à®à¯à®à¯
+ unmute_button: வரà¯à®®à®à¯à®à®²à¯à®à¯à®à¯ நà®à®°à¯à®¤à¯à®¤à¯
new:
- title: தà®à®µà®²à¯ à®
னà¯à®ªà¯à®ªà¯
- send_message_to_html: '%{name} à®à¯à®à¯ பà¯à®¤à®¿à®¯ தà®à®µà®²à¯ à®
னà¯à®ªà¯à®ªà¯'
+ title: தà®à®µà®²à®©à¯à®ªà¯à®ªà¯
+ send_message_to_html: '%{name} à®à®©à¯à®ªà®µà®°à¯à®à¯à®à¯ à®à®°à¯ பà¯à®¤à®¿à®¯ தà®à®µà®²à¯ à®
னà¯à®ªà¯à®ªà¯'
back_to_inbox: à®à®³à¯à®ªà¯à®à¯à®à®¿à®à¯à®à¯ திரà¯à®®à¯à®ªà®µà¯à®®à¯
create:
message_sent: à®à¯à®¯à¯à®¤à®¿ à®
னà¯à®ªà¯à®ªà®ªà¯à®ªà®à¯à®à¯à®µà®¿à®à¯à®à®¤à¯
@@ -613,6 +621,12 @@ ta:
heading: à®
பà¯à®ªà®à®¿à®¯à¯à®°à¯ தà®à®µà®²à¯ à®à®²à¯à®²à¯
outbox:
title: à®
னà¯à®ªà¯à®ªà®¿à®¯à®µà¯
+ actions: à®à¯à®¯à®²à¯à®à®³à¯
+ muted:
+ title: à®®à¯à®©à®¿à®¤à¯à®¤ தà®à®µà®²à¯à®à®³à¯
+ messages:
+ one: '%{count} à®®à¯à®©à®¿à®¤à¯à®¤ தà®à®µà®²à¯'
+ other: à®à®®à®à¯à®à¯ %{count} à®®à¯à®©à®¿à®¤à¯à®¤ தà®à®µà®²à¯à®à®³à¯ à®à®³à¯à®³à®©
show:
title: தà®à®µà®²à¯ வாà®à®¿à®à¯à®à®µà¯à®®à¯
reply_button: பதிலளி
@@ -620,6 +634,10 @@ ta:
destroy_button: நà¯à®à¯à®à¯
sent_message_summary:
destroy_button: நà¯à®à¯à®à¯
+ heading:
+ muted_messages: à®®à¯à®©à®¿à®¤à¯à®¤ தà®à®µà®²à¯à®à®³à¯
+ unmute:
+ notice: தà®à®µà®²à¯ வரà¯à®®à®à¯à®à®²à¯à®à¯à®à¯ நà®à®°à¯à®¤à¯à®¤à®ªà¯à®ªà®à¯à®à¯à®³à¯à®³à®¤à¯
destroy:
destroyed: தà®à®µà®²à¯ நà¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯
passwords:
@@ -692,23 +710,33 @@ ta:
secondary: à®à®°à®£à¯à®à®¾à®®à¯ நில௠à®à®¾à®²à¯
unclassified: வà®à¯à®ªà¯à®ªà®à¯à®¤à¯à®¤à®¾à®¤ à®à®¾à®²à¯
rail: à®à®°à®¯à®¿à®²à¯à®µà¯
+ vineyard: திராà®à¯à®à¯à®¤à¯ தà¯à®à¯à®à®®à¯
forest_only: à®à®¾à®à¯
wood: விறà®à¯
+ farmland: பணà¯à®£à¯ நிலமà¯
+ meadow: பà¯à®²à¯à®µà¯à®³à®¿
+ bare_rock: வà¯à®±à¯à®±à¯à®ªà¯ பாறà¯
+ sand: மணலà¯
park: பà¯à®à¯à®à®¾
common_only: பà¯à®¤à¯à®µà®¾à®©
+ built_up: à®à®à¯à®à®à®ªà¯ பà®à¯à®¤à®¿
industrial: தà¯à®´à®¿à®±à¯à®à®¾à®²à¯ பà®à¯à®¤à®¿
commercial: வணி஠பà®à¯à®¤à®¿
+ scrubland: பà¯à®¤à®°à¯ நிலமà¯
lake_only: à®à®°à®¿
- reservoir: நà¯à®°à¯à®¤à¯à®¤à¯à®à¯à®à®®à¯
+ reservoir: நà¯à®°à¯à®¨à®¿à®²à¯
+ glacier: பனிபà¯à®ªà®¾à®±à¯
+ wetland: à®à®°à®¨à®¿à®²à®®à¯
farm: பணà¯à®£à¯
centre: விளà¯à®¯à®¾à®à¯à®à¯ à®®à¯à®¯à®®à¯
military: ராணà¯à®µ பà®à¯à®¤à®¿
school_only: பளà¯à®³à®¿
university: பலà¯à®à®²à¯à®à¯à®à®´à®à®®à¯
+ hospital: மரà¯à®¤à¯à®¤à¯à®µà®®à®©à¯
building: à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à®¤à¯à®¤à®à¯à® à®à®à¯à®à®¿à®à®®à¯
station: தà¯à®à®°à¯à®µà®£à¯à®à®¿ நிலà¯à®¯à®®à¯
summit_only: à®à®à¯à®à®¿ மாநாà®à¯
- peak: à®à®¯à®°à®®à®¾à®© à®à®à®®à¯
+ peak: à®à®à¯à®à®¿
private: தனியார௠à®
னà¯à®®à®¤à®¿
construction: à®à®¾à®²à¯à®à®³à®¿à®²à¯ à®à®à¯à®à¯à®®à®¾à®©à®ªà¯ பணிà®à®³à¯ நà®à®¨à¯à®¤à¯ வரà¯à®à®¿à®©à¯à®±à®©.
toilets: à®à®´à®¿à®µà®±à¯à®à®³à¯
@@ -750,6 +778,9 @@ ta:
in: à®à®³à¯
index:
upload_trace: à®à¯à®µà®à¯ பதிவà¯à®±à¯à®±à®µà¯à®®à¯
+ application:
+ settings_menu:
+ muted_users: à®®à¯à®©à®¿à®¤à¯à®¤ பயனரà¯à®à®³à¯
oauth_clients:
show:
edit: தà¯à®à¯à®ªà¯à®ªà¯ விவரà®à¯à®à®³à¯
@@ -772,6 +803,8 @@ ta:
my diary: à®à®©à®¤à¯ நாà®à¯à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯
my edits: à®à®©à¯ திரà¯à®¤à¯à®¤à®à¯à®à®³à¯
my settings: à®à®©à¯ à®
à®®à¯à®ªà¯à®ªà¯à®à®³à¯
+ create_mute: à®à®ªà¯à®ªà®¯à®©à®°à¯ à®®à¯à®©à®¿
+ destroy_mute: à®à®ªà¯à®ªà®¯à®©à®°à¯ à®à®à¯à®¯à®¾à®à¯à®à¯
diary: நாà®à¯à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯
edits: தà¯à®à¯à®ªà¯à®ªà¯à®à®³à¯
add as friend: நணà¯à®ªà®°à®¾à® à®à¯à®°à¯
@@ -824,6 +857,25 @@ ta:
display_name: தà®à¯à®à¯à®¯à¯à®¯à®ªà¯à®ªà®à¯à® பயனரà¯
creator_name: à®à®°à¯à®µà®¾à®à¯à®à®¿à®¯à®µà®°à¯
status: நிலà¯
+ user_mutes:
+ index:
+ title: à®®à¯à®©à®¿à®¤à¯à®¤ பயனரà¯à®à®³à¯
+ my_muted_users: à®à®©à®¤à¯ à®®à¯à®©à®¿à®à¯à®à®ªà¯à®ªà®à¯à® பயனரà¯à®à®³à¯
+ you_have_muted_n_users:
+ one: நà¯à®°à¯ %{count} பயனர௠மà¯à®©à®¿à®¤à¯à®¤à¯à®³à¯à®³à¯à®°à¯
+ other: நà¯à®°à¯ %{count} பயனரà¯à®à®³à¯ à®®à¯à®©à®¿à®¤à¯à®¤à¯à®³à¯à®³à¯à®°à¯
+ table:
+ thead:
+ muted_user: à®®à¯à®©à®¿à®¤à¯à®¤ பயனரà¯
+ actions: à®à¯à®¯à®²à¯à®à®³à¯
+ tbody:
+ unmute: à®à®à¯à®¯à®¾à®à¯à®à¯
+ send_message: தà®à®µà®²à®©à¯à®ªà¯à®ªà¯
+ create:
+ notice: நà¯à®°à¯ %{name} à®à®©à¯à®ªà®µà®°à¯ à®®à¯à®©à®¿à®¤à¯à®¤à¯à®°à¯.
+ error: '%{name} à®à®©à¯à®ªà®µà®°à¯ à®®à¯à®©à®¿à®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯. %{full_message}.'
+ destroy:
+ notice: நà¯à®°à¯ %{name} à®à®©à¯à®ªà®µà®°à¯ à®à®à¯à®¯à®¾à®à¯à®à®¿à®©à¯à®°à¯.
notes:
show:
description: விளà®à¯à®à®®à¯
diff --git a/test/helpers/svg_helper_test.rb b/test/helpers/svg_helper_test.rb
new file mode 100644
index 000000000..25a9e4568
--- /dev/null
+++ b/test/helpers/svg_helper_test.rb
@@ -0,0 +1,113 @@
+require "test_helper"
+
+class SvgHelperTest < ActionView::TestCase
+ def test_key_fill
+ svg = key_svg_tag("width" => 60, "height" => 40, "fill" => "green")
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+
+ def test_key_border
+ svg = key_svg_tag("width" => 60, "height" => 40, "border" => "red")
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+
+ def test_key_border_width
+ svg = key_svg_tag("width" => 60, "height" => 40, "border" => "red", "border-width" => 3)
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+
+ def test_key_border_with_integer_coords
+ svg = key_svg_tag("width" => 60, "height" => 40, "border" => "red", "border-width" => 2)
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+
+ def test_key_border_fractional_width
+ svg = key_svg_tag("width" => 60, "height" => 40, "border" => "red", "border-width" => 1.5)
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+
+ def test_key_line
+ svg = key_svg_tag("width" => 80, "height" => 15, "line" => "blue")
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+
+ def test_key_line_width
+ svg = key_svg_tag("width" => 80, "height" => 15, "line" => "blue", "line-width" => 3)
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+
+ def test_key_line_with_integer_coords
+ svg = key_svg_tag("width" => 80, "height" => 20, "line" => "blue")
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+
+ def test_key_casing
+ svg = key_svg_tag("width" => 80, "height" => 20, "casing" => "yellow")
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+
+ def test_key_casing_width
+ svg = key_svg_tag("width" => 80, "height" => 20, "casing" => "yellow", "casing-width" => 5)
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+
+ def test_key_casing_with_integer_coords
+ svg = key_svg_tag("width" => 80, "height" => 20, "casing" => "yellow", "casing-width" => 2)
+ expected = <<~HTML.gsub(/\n\s*/, "")
+
+ HTML
+ assert_dom_equal expected, svg
+ end
+end
diff --git a/test/system/messages_test.rb b/test/system/messages_test.rb
new file mode 100644
index 000000000..87021dd6b
--- /dev/null
+++ b/test/system/messages_test.rb
@@ -0,0 +1,41 @@
+require "application_system_test_case"
+
+class NoteCommentsTest < ApplicationSystemTestCase
+ def test_delete_received_message
+ user = create(:user)
+ create(:message, :recipient => user)
+ sign_in_as(user)
+
+ visit inbox_messages_path
+ assert_text "You have 1 new message and 0 old messages"
+
+ click_button "Delete"
+ assert_text "You have 0 new messages and 0 old messages"
+ end
+
+ def test_delete_sent_message
+ user = create(:user)
+ create(:message, :sender => user)
+ sign_in_as(user)
+
+ visit outbox_messages_path
+ assert_text "You have 1 sent message"
+
+ click_button "Delete"
+ assert_text "You have 0 sent messages"
+ end
+
+ def test_delete_muted_message
+ user = create(:user)
+ muted_user = create(:user)
+ create(:user_mute, :owner => user, :subject => muted_user)
+ create(:message, :sender => muted_user, :recipient => user)
+ sign_in_as(user)
+
+ visit muted_messages_path
+ assert_text "1 muted message"
+
+ click_button "Delete"
+ assert_text "0 muted messages"
+ end
+end
diff --git a/test/system/oauth2_test.rb b/test/system/oauth2_test.rb
new file mode 100644
index 000000000..ab4964052
--- /dev/null
+++ b/test/system/oauth2_test.rb
@@ -0,0 +1,10 @@
+require "application_system_test_case"
+
+class Oauth2Test < ApplicationSystemTestCase
+ def test_authorized_applications
+ sign_in_as(create(:user))
+ visit oauth_authorized_applications_path
+
+ assert_text "You have not yet authorized any OAuth 2 applications."
+ end
+end
diff --git a/yarn.lock b/yarn.lock
index f722b6a1b..f113d5752 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -574,9 +574,9 @@ optionator@^0.9.3:
type-check "^0.4.0"
osm-community-index@^5.2.0:
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.6.0.tgz#b2361fce7ded723844b0ed68d47bddfc4a8cb240"
- integrity sha512-C5AqEWidBIgKeaJKQwuPWvDqSzm9CpZgDbHDi+k4+ZCHBazRQjnl7TpWVv2/fQWMqsJL3I5qzh19rXBTWMWL1A==
+ version "5.6.1"
+ resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.6.1.tgz#5be72c700145e94c57f2006e6f767a0e49d93870"
+ integrity sha512-eMi5mDwwLkt3tbZtD60+aMj4kIa3smlQanxb3OcvJa2pv6w5uVCLbyCem0j8cTqAO3A+C7HD4T7dFUyt2WCYaQ==
dependencies:
diacritics "^1.3.0"
|