hr {
border: none;
- background-color: #ccc;
- color: #ccc;
+ background-color: $grey;
+ color: $grey;
height: 1px;
}
/* Utility for de-emphasizing content */
.deemphasize {
- color: #999;
+ color: $darkgrey;
a {
color: $blue;
}
}
.disabled a {
- color: #ccc;
+ color: $grey;
cursor: default;
.caret {
- border-top-color: #ccc;
+ border-top-color: $grey;
}
}
}
&.active {
- background-color: #9ed485;
+ background-color: $vibrant-green;
}
.icon {
overflow: auto;
.section {
- border-bottom: 1px solid #DDD;
+ border-bottom: 1px solid $grey;
padding: 10px 20px;
}
font-size:20px;
line-height:10px;
color:#222;
- border:1px solid #ddd;
+ border:1px solid $grey;
}
.tooltip {
opacity: 1;
- border: 1px solid #ccc;
+ border: 1px solid $grey;
.tooltip-arrow {
- border-top-color: #ccc;
+ border-top-color: $grey;
}
}
}
font-size: 13px;
margin-bottom: 8px;
}
- li.disabled { color: #999; }
+ li.disabled { color: $darkgrey; }
}
}
position: relative;
padding: $lineheight/2 $lineheight;
// background: $offwhite;
- // border-bottom: 1px solid #ccc;
+ // border-bottom: 1px solid $grey;
> .close {
float: right;
margin-top: 2px;
input:focus {
outline: none;
- box-shadow: 0px 0px 7px #9ED485;
+ box-shadow: 0px 0px 7px $vibrant-green;
}
input[type=submit].float {
td.instruction, td.distance {
padding-top: $lineheight/5;
padding-bottom: $lineheight/5;
- border-bottom: 1px solid #DDD;
+ border-bottom: 1px solid $grey;
}
td.distance {
- color: #BBB;
+ color: $darkgrey;
text-align: right;
font-size: x-small;
}
#sidebar .changesets {
li {
padding: 15px 20px;
- border-bottom: 1px solid #ddd;
+ border-bottom: 1px solid $grey;
cursor: pointer;
&.selected { background: $list-highlight; }
.comments {
float: right;
- color: #999;
+ color: $darkgrey;
}
.comments-0 {
#sidebar_content {
.browse-section {
padding: $lineheight/2 $lineheight;
- border-bottom: 1px solid #ddd;
+ border-bottom: 1px solid $grey;
h4:first-child {
margin-top: 0;
.paginate {
float: right;
padding: 1px 6px;
- border: 1px solid #eee;
+ border: 1px solid $lightgrey;
border-radius: 3px;
}
h4 {
padding: 5px 0 5px 10px;
font-size: 12px;
- border: 1px solid #CCC;
+ border: 1px solid $grey;
border-radius: 4px 4px 0 0;
background-color: #F6F6F6;
}
padding: 7px 10px;
font-size: 12px;
background-color: #FFF;
- border: 1px solid #CCC;
+ border: 1px solid $grey;
border-top: 0;
border-radius: 0 0 4px 4px;
}
.browse-tag-list {
background-color: #F6F6F6;
- border: 1px solid #ddd;
+ border: 1px solid $grey;
border-radius: 3px;
font-size: 12px;
table-layout: fixed;
border-collapse: separate;
th, td {
- border-bottom: 1px solid #ddd;
+ border-bottom: 1px solid $grey;
}
tr:last-child th, tr:last-child td {
}
.browse-tag-v {
- border-left: 1px solid #ddd;
+ border-left: 1px solid $grey;
background-color: #fff;
}
width: 12px;
height: 12px;
margin: 4px 0px;
- border: 1px solid rgba(0, 0, 0, .1);
+ border: 1px solid rgba(0, 0, 0, .1);
// add color via inline css on element: background-color: <tag value>;
}
}
ul {
li {
padding: 15px 20px;
- border-bottom: 1px solid #ddd;
+ border-bottom: 1px solid $grey;
&.query-result {
cursor: pointer;
}
.export_boxy {
- background: #eee;
- border: 1px solid #ccc;
+ background: $lightgrey;
+ border: 1px solid $grey;
border-radius: 3px;
#maxlat { margin-top: -1px; }
position: relative;
width: 45%;
height: 400px;
- border: 1px solid #ccc;
+ border: 1px solid $grey;
margin-bottom: $lineheight;
float: right;
}
.activity-block {
clear: left;
- border-bottom: 1px solid #ccc;
+ border-bottom: 1px solid $grey;
padding-bottom: $lineheight;
float: left;
h3 {
position: relative;
padding-top: $lineheight;
padding-bottom: $lineheight/2;
- border-top: 1px solid #ccc;
+ border-top: 1px solid $grey;
&:first-of-type {
margin-top: $lineheight/2;
position: relative;
width: 90%;
height: 400px;
- border: 1px solid #ccc;
+ border: 1px solid $grey;
display: none;
margin-bottom: $lineheight;
}
#newcomment {
- border-top: 1px solid #ccc;
+ border-top: 1px solid $grey;
padding-top: $lineheight;
margin-top: $lineheight/2;
}
max-width: 740px;
}
.diary-comment {
- border-top: 1px dashed #ccc;
+ border-top: 1px dashed $grey;
padding-top: $lineheight/2;
padding-bottom: $lineheight/2;
&:first-child {
margin-top: $lineheight/2;
padding-top: $lineheight;
- border-top: 1px solid #ccc;
+ border-top: 1px solid $grey;
}
&.deemphasize {
background-color: #fee;
.users-terms {
.legale {
- border: 1px solid #ccc;
+ border: 1px solid $grey;
padding: $lineheight;
margin-bottom: $lineheight;
overflow: auto;
position: relative;
width: 500px;
height: 400px;
- border: 1px solid #ccc;
+ border: 1px solid $grey;
}
#accountForm .user_image {
.messages {
width: 100%;
- border: 1px solid #ddd;
+ border: 1px solid $grey;
input[type="submit"] {
margin: auto;
}
tbody tr {
- border-top: 1px solid #ccc;
+ border-top: 1px solid $grey;
}
.inbox-row {
- background: #f8f8ff;
+ background: $offwhite;
}
.inbox-row-unread {
.info-line {
margin-bottom: $lineheight;
padding: $lineheight/4 0px 4px 0px;
- border-bottom: 1px solid #ccc;
+ border-bottom: 1px solid $grey;
form, form div {
display: inline;
textarea {
color: #222;
background-color: #fff;
- border: 1px solid #ccc;
+ border: 1px solid $grey;
padding: 2px 5px;
margin: 0;
width: 200px;
img.user_image {
max-width: 100px;
max-height: 100px;
- border: 1px solid #ccc;
+ border: 1px solid $grey;
margin-bottom: $lineheight;
float: left;
margin-right: $lineheight;
img.user_thumbnail {
max-width: 50px;
max-height: 50px;
- border: 1px solid #ccc;
+ border: 1px solid $grey;
margin-right: $lineheight;
}
height: auto;
max-width: 25px;
max-height: 25px;
- border: 1px solid #ccc;
+ border: 1px solid $grey;
}
/* Rules for geo microformats */
display: block;
float: left;
list-style: none;
- border-left: 1px solid #ccc;
+ border-left: 1px solid $grey;
padding-left: $lineheight/2;
margin-right: $lineheight/2;
&:first-child {
.prose {
h1, h2 {
padding-bottom: $lineheight/2;
- border-bottom: 1px dashed #cccccc;
+ border-bottom: 1px dashed $grey;
margin-bottom: $lineheight/2;
}
code {
font-size: 13px;
- background: #e8e8e8;
+ background: $lightgrey;
padding: 2px 3px;
}
pre {
font-size: 13px;
- background: #e8e8e8;
+ background: $lightgrey;
padding: 2px 3px;
white-space: pre-wrap;
border-left: $lineheight solid $offwhite;
padding-left: $lineheight;
margin: 0;
- color: #7E7E7E;
+ color: $darkgrey;
}
ul, ol {
display: inline-block;
vertical-align: top;
margin-left: 15px;
- background-color: #f8f8ff;
+ background-color: $offwhite;
padding: $lineheight/2;
width: 220px;
}
h4.heading, li {
- border-bottom: 1px solid #ccc;
+ border-bottom: 1px solid $grey;
margin-bottom: $lineheight/4;
padding-bottom: $lineheight/4;
}
.note_list {
tr.creator {
- background-color: #eeeeee;
+ background-color: $lightgrey;
}
td {
margin: 0;
list-style: none;
background-color: #ffffff;
- border: 1px solid #ccc;
+ border: 1px solid $grey;
border-radius: 0 3px 3px;
*border-right-width: 2px;
*border-bottom-width: 2px;
margin: 9px 1px;
*margin: -5px 0 5px;
overflow: hidden;
- background-color: #e5e5e5;
+ background-color: $lightgrey;
border-bottom: 1px solid #ffffff;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
- color: #999999;
+ color: $darkgrey;
}
.dropdown-menu > .disabled > a:hover,
}
.site-about #content {
- //background-color: #000;
- background-color: #eee;
+ background-color: $lightgrey;
background-position: 50% 50%;
background-repeat: no-repeat;
background-size: cover;
right: 20px;
bottom: 60px;
text-shadow: #000 0px 1px 5px;
- color: #eee;
+ color: $lightgrey;
opacity: 0.8;
display: none;
}
font-weight: 300;
font-size: 34px;
span {
- color: #76c551;
+ color: $vibrant-green;
}
}
background-repeat: no-repeat;
background-image: image-url('about/osm.png');
background-size: cover;
- background-color: #76c551;
+ background-color: $vibrant-green;
}
.byosm {
font: 500 20px/24px Helvetica, Arial, sans-serif;
white-space: nowrap;
color: #fff;
- background: #76c551;
+ background: $vibrant-green;
}
.byosm span {
}
.read-reports {
- background: #eee;
+ background: $lightgrey;
opacity: 0.7;
}
$lineheight: 20px;
$typeheight: 14px;
-$offwhite: #f4f4ff;
+$offwhite: #f8f8ff;
$blue: #7092FF;
$lightblue: #B8C5F0;
$green: #7ebc6f;
+$vibrant-green: #76c551;
$grey: #CCC;
$red: red;
$lightgrey: #EEE;
# Alternative SQL queries for getway/whichways
def sql_find_ways_in_area(bbox)
- sql = <<-SQL
- SELECT DISTINCT current_ways.id AS wayid,current_ways.version AS version
- FROM current_way_nodes
- INNER JOIN current_nodes ON current_nodes.id=current_way_nodes.node_id
- INNER JOIN current_ways ON current_ways.id =current_way_nodes.id
- WHERE current_nodes.visible=TRUE
- AND current_ways.visible=TRUE
- AND #{OSM.sql_for_area(bbox, 'current_nodes.')}
+ sql = <<~SQL
+ SELECT DISTINCT current_ways.id AS wayid,current_ways.version AS version
+ FROM current_way_nodes
+ INNER JOIN current_nodes ON current_nodes.id=current_way_nodes.node_id
+ INNER JOIN current_ways ON current_ways.id =current_way_nodes.id
+ WHERE current_nodes.visible=TRUE
+ AND current_ways.visible=TRUE
+ AND #{OSM.sql_for_area(bbox, 'current_nodes.')}
SQL
ActiveRecord::Base.connection.select_all(sql).collect { |a| [a["wayid"].to_i, a["version"].to_i] }
end
def sql_find_pois_in_area(bbox)
pois = []
- sql = <<-SQL
+ sql = <<~SQL
SELECT current_nodes.id,current_nodes.latitude*0.0000001 AS lat,current_nodes.longitude*0.0000001 AS lon,current_nodes.version
FROM current_nodes
LEFT OUTER JOIN current_way_nodes cwn ON cwn.node_id=current_nodes.id
def sql_find_relations_in_area_and_ways(bbox, way_ids)
# ** It would be more Potlatchy to get relations for nodes within ways
# during 'getway', not here
- sql = <<-SQL
+ sql = <<~SQL
SELECT DISTINCT cr.id AS relid,cr.version AS version
FROM current_relations cr
INNER JOIN current_relation_members crm ON crm.id=cr.id
WHERE #{OSM.sql_for_area(bbox, 'cn.')}
SQL
unless way_ids.empty?
- sql += <<-SQL
- UNION
- SELECT DISTINCT cr.id AS relid,cr.version AS version
- FROM current_relations cr
- INNER JOIN current_relation_members crm ON crm.id=cr.id
- WHERE crm.member_type='Way'
- AND crm.member_id IN (#{way_ids.join(',')})
+ sql += <<~SQL
+ UNION
+ SELECT DISTINCT cr.id AS relid,cr.version AS version
+ FROM current_relations cr
+ INNER JOIN current_relation_members crm ON crm.id=cr.id
+ WHERE crm.member_type='Way'
+ AND crm.member_id IN (#{way_ids.join(',')})
SQL
end
ActiveRecord::Base.connection.select_all(sql).collect { |a| [a["relid"].to_i, a["version"].to_i] }
def sql_get_nodes_in_way(wayid)
points = []
- sql = <<-SQL
+ sql = <<~SQL
SELECT latitude*0.0000001 AS lat,longitude*0.0000001 AS lon,current_nodes.id,current_nodes.version
FROM current_way_nodes,current_nodes
WHERE current_way_nodes.id=#{wayid.to_i}
<% end %>
<table class="messages" width="100%">
- <tr>
- <th width="25%"><%= t ".post" %></th>
- <th width="25%"><%= t ".when" %></th>
- <th width="50%"><%= t ".comment" %></th>
- </tr>
+ <thead>
+ <tr>
+ <th width="25%"><%= t ".post" %></th>
+ <th width="25%"><%= t ".when" %></th>
+ <th width="50%"><%= t ".comment" %></th>
+ </tr>
+ </thead>
<% @comments.each do |comment| -%>
<% cl = cycle("table0", "table1") %>
<tr class="<%= cl %><%= " deemphasize" unless comment.visible? %>">
<%= render :partial => "notes_paging_nav" %>
<table class="note_list">
- <tr>
- <th></th>
- <th><%= t ".id" %></th>
- <th><%= t ".creator" %></th>
- <th><%= t ".description" %></th>
- <th><%= t ".created_at" %></th>
- <th><%= t ".last_changed" %></th>
- </tr>
+ <thead>
+ <tr>
+ <th></th>
+ <th><%= t ".id" %></th>
+ <th><%= t ".creator" %></th>
+ <th><%= t ".description" %></th>
+ <th><%= t ".created_at" %></th>
+ <th><%= t ".last_changed" %></th>
+ </tr>
+ </thead>
<% @notes.each do |note| -%>
<tr<% if note.author == @user %> class="creator"<% end %>>
<td>
<h3><%= t ".my_tokens" %></h3>
<p><%= t ".list_tokens" %></p>
<table>
- <tr>
- <th><%= t ".application" %></th>
- <th><%= t ".issued_at" %></th>
- <th> </th>
- </tr>
+ <thead>
+ <tr>
+ <th><%= t ".application" %></th>
+ <th><%= t ".issued_at" %></th>
+ <th> </th>
+ </tr>
+ </thead>
<% @tokens.each do |token| %>
<tr>
<td><%= link_to token.client_application.name, token.client_application.url %></td>
<table id="block_list" cellpadding="3">
- <tr>
- <% if show_user_name %>
- <th><%= t ".display_name" %></th>
- <% end %>
- <% if show_creator_name %>
- <th><%= t ".creator_name" %></th>
- <% end %>
- <th><%= t ".reason" %></th>
- <th><%= t ".status" %></th>
- <th><%= t ".revoker_name" %></th>
- <th></th>
- <th></th>
- <% if show_revoke_link %>
- <th></th>
- <% end %>
- </tr>
+ <thead>
+ <tr>
+ <% if show_user_name %>
+ <th><%= t ".display_name" %></th>
+ <% end %>
+ <% if show_creator_name %>
+ <th><%= t ".creator_name" %></th>
+ <% end %>
+ <th><%= t ".reason" %></th>
+ <th><%= t ".status" %></th>
+ <th><%= t ".revoker_name" %></th>
+ <th></th>
+ <th></th>
+ <% if show_revoke_link %>
+ <th></th>
+ <% end %>
+ </tr>
+ </thead>
<%= render :partial => "block", :locals => { :show_revoke_link => show_revoke_link, :show_user_name => show_user_name, :show_creator_name => show_creator_name }, :collection => @user_blocks %>
</table>
<%= hidden_field_tag :ip, params[:ip] if params[:ip] %>
<%= hidden_field_tag :page, params[:page] if params[:page] %>
<table id="user_list">
- <tr>
- <td colspan="2">
- <%= t ".showing",
- :page => @user_pages.current_page.number,
- :first_item => @user_pages.current_page.first_item,
- :last_item => @user_pages.current_page.last_item,
- :items => @user_pages.item_count,
- :count => @user_pages.current_page.last_item - @user_pages.current_page.first_item + 1 %>
- <% if @user_pages.page_count > 1 %>
- | <%= raw pagination_links_each(@user_pages, {}) { |n| link_to n, @params.merge(:page => n) } %>
- <% end %>
- </td>
- <td>
- <%= check_box_tag "user_all", "1", false %>
- </td>
- </tr>
+ <thead>
+ <tr>
+ <td colspan="2">
+ <%= t ".showing",
+ :page => @user_pages.current_page.number,
+ :first_item => @user_pages.current_page.first_item,
+ :last_item => @user_pages.current_page.last_item,
+ :items => @user_pages.item_count,
+ :count => @user_pages.current_page.last_item - @user_pages.current_page.first_item + 1 %>
+ <% if @user_pages.page_count > 1 %>
+ | <%= raw pagination_links_each(@user_pages, {}) { |n| link_to n, @params.merge(:page => n) } %>
+ <% end %>
+ </td>
+ <td>
+ <%= check_box_tag "user_all", "1", false %>
+ </td>
+ </tr>
+ </thead>
<%= render @users %>
</table>
# simple diff to change a node, way and relation by removing
# their tags
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
</relation>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset_id }, :body => diff
# simple diff to change a node, way and relation by removing
# their tags
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
</relation>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset_id }, :body => diff
# simple diff to change a node, way and relation by removing
# their tags
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
</relation>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset_id }, :body => diff
basic_authorization user.email, "test"
# simple diff to create a node way and relation using placeholders
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<create>
<node id='-1' lon='0' lat='0' changeset='#{changeset.id}'>
</relation>
</create>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
changeset_id = @response.body.to_i
# upload some widely-spaced nodes, spiralling positive and negative
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<create>
<node id='-1' lon='-20' lat='-10' changeset='#{changeset_id}'/>
<node id='-18' lon='179.9' lat='89.9' changeset='#{changeset_id}'/>
</create>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it, which used to cause an error like "PGError: ERROR:
# integer out of range" (bug #2152). but shouldn't any more.
basic_authorization changeset.user.email, "test"
# simple diff to create a node way and relation using placeholders
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<create>
<node id='-1' lon='0' lat='0' changeset='#{changeset.id}'>
</node>
</create>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
basic_authorization changeset.user.email, "test"
# simple diff to create a node way and relation using placeholders
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<create>
<node id='-1' lon='0' lat='0' changeset='#{changeset.id}'>
</relation>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
basic_authorization changeset.user.email, "test"
# simple diff to create a node way and relation using placeholders
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
</node>
</create>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
# change the location of a node multiple times, each time referencing
# the last version. doesn't this depend on version numbers being
# sequential?
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
<node id='#{node.id}' lon='9' lat='9' changeset='#{changeset.id}' version='8'/>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
basic_authorization changeset.user.email, "test"
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
<node id='#{node.id}' lon='1' lat='1' changeset='#{changeset.id}' version='1'/>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
basic_authorization changeset.user.email, "test"
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='1' lon='1' lat='1' changeset='#{changeset.id}'/>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
basic_authorization changeset.user.email, "test"
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<ping>
<node id='1' lon='1' lat='1' changeset='#{changeset.id}' />
</ping>
</osmChange>
-CHANGESET
+ CHANGESET
post :upload, :params => { :id => changeset.id }, :body => diff
assert_response :bad_request, "Shouldn't be able to upload a diff with the action ping"
assert_equal @response.body, "Unknown action ping, choices are create, modify, delete"
basic_authorization changeset.user.email, "test"
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify><node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}'
version='1'></node>
<member type='relation' role='some' ref='#{other_relation.id}'/>
</relation>
</modify></osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
basic_authorization changeset.user.email, "test"
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<create>
<node id='-1' lon='0' lat='0' changeset='#{changeset.id}'>
<node id='-1' lon='2' lat='2' changeset='#{changeset.id}' version='2'/>
</delete>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
basic_authorization changeset.user.email, "test"
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<create>
<node id='-1' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
<node id='-1' lon='2' lat='2' changeset='#{changeset.id}' version='2'/>
</create>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
basic_authorization changeset.user.email, "test"
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<create>
<node id="-1" lon="0" lat="0" changeset="#{changeset.id}" version="1"/>
</way>
</create>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
assert_equal "Placeholder node not found for reference -4 in way -1", @response.body
# the same again, but this time use an existing way
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<create>
<node id="-1" lon="0" lat="0" changeset="#{changeset.id}" version="1"/>
</way>
</create>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
basic_authorization changeset.user.email, "test"
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<create>
<node id="-1" lon="0" lat="0" changeset="#{changeset.id}" version="1"/>
</relation>
</create>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
assert_equal "Placeholder Node not found for reference -4 in relation -1.", @response.body
# the same again, but this time use an existing relation
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<create>
<node id="-1" lon="0" lat="0" changeset="#{changeset.id}" version="1"/>
</relation>
</create>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset.id }, :body => diff
changeset_id = @response.body.to_i
# add a diff to it
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
<node id='#{node.id}' lon='9' lat='9' changeset='#{changeset_id}' version='8'/>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset_id }, :body => diff
assert_response :success
changeset_id = @response.body.to_i
- diff = <<OSMFILE.strip_heredoc
+ diff = <<~OSMFILE
<osmChange version="0.6" generator="JOSM">
<create version="0.6" generator="JOSM">
<node id='-1' visible='true' changeset='#{changeset_id}' lat='51.49619982187321' lon='-0.18722061869438314' />
</way>
</create>
</osmChange>
-OSMFILE
+ OSMFILE
# upload it
post :upload, :params => { :id => changeset_id }, :body => diff
changeset_id = @response.body.to_i
# add a diff to it
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<delete>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
</way>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post :upload, :params => { :id => changeset_id }, :body => diff
basic_authorization user.email, "test"
- doc_str = <<OSM.strip_heredoc
+ doc_str = <<~OSM
<osm>
<relation changeset='#{changeset.id}'>
<member ref='#{node1.id}' type='node' role='first'/>
<member ref='#{way2.id}' type='way' role='fourth'/>
</relation>
</osm>
-OSM
+ OSM
doc = XML::Parser.string(doc_str).parse
put :create, :body => doc.to_s
node1 = create(:node)
node2 = create(:node)
- doc_str = <<OSM.strip_heredoc
+ doc_str = <<~OSM
<osm>
<relation changeset='#{changeset.id}'>
<member ref='#{node1.id}' type='node' role='forward'/>
<member ref='#{node2.id}' type='node' role='forward'/>
</relation>
</osm>
-OSM
+ OSM
doc = XML::Parser.string(doc_str).parse
## First try with the private user
node3 = create(:node)
node4 = create(:node)
- doc_str = <<OSM.strip_heredoc
+ doc_str = <<~OSM
<osm>
<relation changeset='#{changeset.id}'>
<member ref='#{node1.id}' type='node' role='forward'/>
<member ref='#{node2.id}' type='node' role='forward'/>
</relation>
</osm>
-OSM
+ OSM
doc = XML::Parser.string(doc_str).parse
basic_authorization user.email, "test"
# simple diff to change a node, way and relation by removing
# their tags
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
</relation>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post "/api/0.6/changeset/#{changeset.id}/upload",
# simple diff to change a node, way and relation by removing
# their tags
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
</relation>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post "/api/0.6/changeset/#{changeset.id}/upload",
# simple diff to change a node, way and relation by removing
# their tags
- diff = <<CHANGESET.strip_heredoc
+ diff = <<~CHANGESET
<osmChange>
<modify>
<node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
</relation>
</modify>
</osmChange>
-CHANGESET
+ CHANGESET
# upload it
post "/api/0.6/changeset/#{changeset.id}/upload",