# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
# URISchemes: http, https
Metrics/LineLength:
- Max: 1073
+ Max: 307
around_action :api_call_handle_error
def show
- trace = Trace.visible.find(params[:id])
+ @trace = Trace.visible.find(params[:id])
- if trace.public? || trace.user == current_user
- render :xml => trace.to_xml.to_s
- else
- head :forbidden
- end
+ head :forbidden unless @trace.public? || @trace.user == current_user
end
def update
def show
if @user.visible?
- render :action => :show, :content_type => "text/xml"
+ render :content_type => "text/xml"
else
head :gone
end
@users = User.visible.find(ids)
- render :action => :index, :content_type => "text/xml"
+ render :content_type => "text/xml"
end
def gpx_files
- doc = OSM::API.new.get_xml_doc
- current_user.traces.reload.each do |trace|
- doc.root << trace.to_xml_node
- end
- render :xml => doc.to_s
+ @traces = current_user.traces.reload
+ render :content_type => "application/xml"
end
private
changesets = changesets.where("changesets.id <= ?", @params[:max_id]) if @params[:max_id]
- @edits = changesets.order("changesets.id DESC").limit(20).preload(:user, :changeset_tags, :comments)
+ @changesets = changesets.order("changesets.id DESC").limit(20).preload(:user, :changeset_tags, :comments)
render :action => :index, :layout => false
end
:style_src => %w['unsafe-inline']
)
- render "id", :layout => false
+ render :layout => false
end
private
content_tag(:span, time_ago_in_words(date), :title => l(date, :format => :friendly))
end
+ def friendly_date_ago(date)
+ content_tag(:span, time_ago_in_words(date, :scope => :'datetime.distance_in_words_ago'), :title => l(date, :format => :friendly))
+ end
+
def body_class
if content_for? :body_class
content_for :body_class
def changeset_details(changeset)
if changeset.closed_at > Time.now
action = :created
- time = distance_of_time_in_words_to_now(changeset.created_at)
+ time = time_ago_in_words(changeset.created_at, :scope => :'datetime.distance_in_words_ago')
title = l(changeset.created_at)
else
action = :closed
- time = distance_of_time_in_words_to_now(changeset.closed_at)
+ time = time_ago_in_words(changeset.closed_at, :scope => :'datetime.distance_in_words_ago')
title = "#{t('browse.created')}: #{l(changeset.created_at)} #{t('browse.closed')}: #{l(changeset.closed_at)}".html_safe
end
def note_event(event, at, by)
if by.nil?
I18n.t("browse.note." + event + "_by_anonymous",
- :when => friendly_date(at),
+ :when => friendly_date_ago(at),
:exact_time => l(at)).html_safe
else
I18n.t("browse.note." + event + "_by",
- :when => friendly_date(at),
+ :when => friendly_date_ago(at),
:exact_time => l(at),
:user => note_author(by)).html_safe
end
# either because the user viewed the block (updated_at) or it expired or was
# revoked (ends_at)
last_time = [block.ends_at, block.updated_at].max
- I18n.t("user_blocks.helper.time_past", :time => friendly_date(last_time)).html_safe
+ I18n.t("user_blocks.helper.time_past", :time => friendly_date_ago(last_time)).html_safe
end
end
extension
end
- def to_xml
- doc = OSM::API.new.get_xml_doc
- doc.root << to_xml_node
- doc
- end
-
- def to_xml_node
- el1 = XML::Node.new "gpx_file"
- el1["id"] = id.to_s
- el1["name"] = name.to_s
- el1["lat"] = latitude.to_s if inserted
- el1["lon"] = longitude.to_s if inserted
- el1["user"] = user.display_name
- el1["visibility"] = visibility
- el1["pending"] = inserted ? "false" : "true"
- el1["timestamp"] = timestamp.xmlschema
-
- el2 = XML::Node.new "description"
- el2 << description
- el1 << el2
-
- tags.each do |tag|
- el2 = XML::Node.new("tag")
- el2 << tag.tag
- el1 << el2
- end
-
- el1
- end
-
def update_from_xml(xml, create = false)
p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
doc = p.parse
# basic attributes
xml.osm(OSM::API.new.xml_root_attributes) do |osm|
- osm << render(:partial => "api/changesets/changeset.builder", :locals => { :changeset => @changeset })
+ osm << render(@changeset)
end
xml.osm(OSM::API.new.xml_root_attributes) do |osm|
@changesets.each do |changeset|
- osm << render(:partial => "api/changesets/changeset.builder", :locals => { :changeset => changeset })
+ osm << render(changeset)
end
end
<div class="note-comment" style="margin-top: 5px">
<% if comment.author.nil? -%>
- <div class="note-comment-description" style="font-size: smaller; color: #999999"><%= t ".#{comment.event}_at_html", :when => friendly_date(comment.created_at) %></div>
+ <div class="note-comment-description" style="font-size: smaller; color: #999999"><%= t ".#{comment.event}_at_html", :when => friendly_date_ago(comment.created_at) %></div>
<% else -%>
- <div class="note-comment-description" style="font-size: smaller; color: #999999"><%= t ".#{comment.event}_at_by_html", :when => friendly_date(comment.created_at), :user => note_author(comment.author, :only_path => false) %></div>
+ <div class="note-comment-description" style="font-size: smaller; color: #999999"><%= t ".#{comment.event}_at_by_html", :when => friendly_date_ago(comment.created_at), :user => note_author(comment.author, :only_path => false) %></div>
<% end -%>
<div class="note-comment-text"><%= comment.body %></div>
</div>
"xmlns" => "http://www.topografix.com/GPX/1/1",
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
"xsi:schemaLocation" => "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd") do
- xml << (render(:partial => "note", :collection => @notes) || "")
+ xml << (render(@notes) || "")
end
json.type "FeatureCollection"
json.features(@notes) do |note|
- json.ingest! render(:partial => "note", :object => note)
+ json.ingest! render(note)
end
xml.description t("api.notes.rss.description_area", :min_lat => @min_lat, :min_lon => @min_lon, :max_lat => @max_lat, :max_lon => @max_lon)
xml.link url_for(:controller => "/site", :action => "index", :only_path => false)
- xml << (render(:partial => "note", :collection => @notes) || "")
+ xml << (render(@notes) || "")
end
end
xml.instruct!
xml.osm(OSM::API.new.xml_root_attributes) do |osm|
- osm << (render(:partial => "note", :collection => @notes) || "")
+ osm << (render(@notes) || "")
end
"xmlns" => "http://www.topografix.com/GPX/1/1",
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
"xsi:schemaLocation" => "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd") do
- xml << render(:partial => "note", :object => @note)
+ xml << render(@note)
end
-json.ingest! render(:partial => "note", :object => @note)
+json.ingest! render(@note)
xml.description t("api.notes.rss.description_item", :id => @note.id)
xml.link url_for(:controller => "/site", :action => "index", :only_path => false)
- xml << render(:partial => "note", :object => @note)
+ xml << render(@note)
end
end
xml.instruct!
xml.osm(OSM::API.new.xml_root_attributes) do |osm|
- osm << render(:partial => "note", :object => @note)
+ osm << render(@note)
end
--- /dev/null
+# basic attributes
+
+attrs = {
+ "id" => trace.id,
+ "name" => trace.name,
+ "user" => trace.user.display_name,
+ "visibility" => trace.visibility,
+ "pending" => trace.inserted ? "false" : "true",
+ "timestamp" => trace.timestamp.xmlschema
+}
+
+if trace.inserted
+ attrs["lat"] = trace.latitude.to_s
+ attrs["lon"] = trace.longitude.to_s
+end
+
+xml.gpx_file(attrs) do |trace_xml_node|
+ trace_xml_node.description(trace.description)
+ trace.tags.each do |t|
+ trace_xml_node.tag(t.tag)
+ end
+end
--- /dev/null
+xml.instruct! :xml, :version => "1.0"
+
+xml.osm(OSM::API.new.xml_root_attributes) do |osm|
+ osm << render(@trace)
+end
--- /dev/null
+xml.instruct! :xml, :version => "1.0"
+
+xml.osm(OSM::API.new.xml_root_attributes) do |osm|
+ @traces.each do |trace|
+ osm << render(:partial => "api/traces/trace", :locals => { :trace => trace })
+ end
+end
xml.instruct! :xml, :version => "1.0"
xml.osm(OSM::API.new.xml_root_attributes) do |osm|
- osm << render(:partial => "user", :collection => @users)
+ osm << render(@users)
end
xml.instruct! :xml, :version => "1.0"
xml.osm(OSM::API.new.xml_root_attributes) do |osm|
- osm << render(:partial => "user", :object => @user)
+ osm << render(@user)
end
<div class="details">
<%= t "browse.#{common_details.visible? ? :edited : :deleted}_by_html",
- :time => distance_of_time_in_words_to_now(common_details.timestamp),
+ :time => time_ago_in_words(common_details.timestamp, :scope => :'datetime.distance_in_words_ago'),
:user => changeset_user_link(common_details.changeset),
:title => l(common_details.timestamp) %>
</div>
<li id="c<%= comment.id %>">
<small class='deemphasize'>
<%= t(".commented_by",
- :when => friendly_date(comment.created_at),
+ :when => friendly_date_ago(comment.created_at),
:exact_time => l(comment.created_at),
:user => link_to(h(comment.author.display_name), user_path(comment.author))).html_safe %>
<% if current_user and current_user.moderator? %>
<li id="c<%= comment.id %>">
<small class='deemphasize'>
<%= t(".hidden_commented_by",
- :when => friendly_date(comment.created_at),
+ :when => friendly_date_ago(comment.created_at),
:exact_time => l(comment.created_at),
:user => link_to(h(comment.author.display_name), user_path(comment.author))).html_safe %>
— <span class="action-button deemphasize" data-comment-id="<%= comment.id %>" data-method="POST" data-url="<%= changeset_comment_unhide_url(comment.id) %>"><%= t("javascripts.changesets.show.unhide_comment") %></span>
:author => comment.author.display_name,
:changeset_id => comment.changeset.id.to_s %></h2>
<div class="changeset-comment" style="margin-top: 5px">
- <div class="changeset-comment-description" style="font-size: smaller; color: #999999"><%= t ".commented_at_by_html", :when => friendly_date(comment.created_at), :user => comment.author.display_name %></div>
+ <div class="changeset-comment-description" style="font-size: smaller; color: #999999"><%= t ".commented_at_by_html", :when => friendly_date_ago(comment.created_at), :user => comment.author.display_name %></div>
<div class="changeset-comment-text"><%= comment.body %></div>
</div>
"xmlns:georss" => "http://www.georss.org/georss") do |feed|
feed.title changeset_index_title(params, current_user)
- feed.updated @edits.map { |e| [e.created_at, e.closed_at].max }.max
+ feed.updated @changesets.map { |e| [e.created_at, e.closed_at].max }.max
feed.icon image_url("favicon.ico")
feed.logo image_url("mag_map-rss2.0.png")
end
end
- @edits.each do |changeset|
+ @changesets.each do |changeset|
feed.entry(changeset, :updated => changeset.closed_at, :id => changeset_url(changeset.id, :only_path => false)) do |entry|
entry.link :rel => "alternate",
:href => changeset_show_url(changeset, :only_path => false),
-<% if @edits.present? %>
+<% if @changesets.present? %>
<ol class="changesets">
- <%= render :partial => "changeset", :collection => @edits %>
+ <%= render @changesets %>
</ol>
-<% if @edits.size == 20 -%>
+<% if @changesets.size == 20 -%>
<div class="changeset_more">
- <%= link_to t(".load_more"), url_for(@params.merge(:max_id => @edits.last.id - 1)), :class => "button load_more" %>
+ <%= link_to t(".load_more"), url_for(@params.merge(:max_id => @changesets.last.id - 1)), :class => "button load_more" %>
<div class="loader"><%= image_tag "searching.gif" %></div>
</div>
<% end -%>
+++ /dev/null
-<%= render :partial => "diary_entry", :object => diary_index_entry %>
<% cl = cycle("table0", "table1") %>
<tr class="<%= cl %>">
<td width="25%"><%= link_to comment.diary_entry.title, diary_entry_path(comment.diary_entry.user, comment.diary_entry) %></td>
- <td width="25%"><span title="<%= l comment.created_at, :format => :friendly %>"><%= t ".ago", :ago => time_ago_in_words(comment.created_at) %></span></td>
+ <td width="25%"><span title="<%= l comment.created_at, :format => :friendly %>"><%= time_ago_in_words(comment.created_at, :scope => :'datetime.distance_in_words_ago') %></span></td>
<td width="50%" class="richtext"><%= comment.body.to_html %></td>
</tr>
<% end -%>
<% else %>
<h4><%= t ".recent_entries" %></h4>
- <% if @user %>
- <%= render :partial => "diary_entry", :collection => @entries %>
- <% else %>
- <%= render :partial => "diary_index_entry", :collection => @entries %>
- <% end %>
+ <%= render @entries %>
<div class="pagination">
<% if @entries.size < @page_size -%>
</div>
<% end %>
-<%= render :partial => "diary_entry", :object => @entry %>
+<%= render @entry %>
<a id="comments"></a>
<div class='comments'>
<td>
<% if issue.user_updated %>
<%= t ".last_updated_time_user_html", :user => link_to(issue.user_updated.display_name, user_path(issue.user_updated)),
- :time => distance_of_time_in_words_to_now(issue.updated_at),
+ :time => time_ago_in_words(issue.updated_at, :scope => :'datetime.distance_in_words_ago'),
:title => l(issue.updated_at) %>
<% else %>
- <%= t ".last_updated_time_html", :time => distance_of_time_in_words_to_now(issue.updated_at),
+ <%= t ".last_updated_time_html", :time => time_ago_in_words(issue.updated_at, :scope => :'datetime.distance_in_words_ago'),
:title => l(issue.updated_at) %>
<% end %>
</td>
<td><%= link_to note.id, browse_note_path(note) %></td>
<td><%= note_author(note.author) %></td>
<td><%= note.comments.first.body.to_html %></td>
- <td><%= t ".ago_html", :when => friendly_date(note.created_at) %></td>
- <td><%= t ".ago_html", :when => friendly_date(note.updated_at) %></td>
+ <td><%= friendly_date_ago(note.created_at) %></td>
+ <td><%= friendly_date_ago(note.updated_at) %></td>
</tr>
<% end -%>
</table>
+++ /dev/null
-<ul id="redaction_list">
- <%= render :partial => "redaction", :collection => @redactions %>
-</ul>
<% end %>
<% unless @redactions.empty? %>
- <%= render :partial => "redactions" %>
+ <ul id="redaction_list">
+ <%= render @redactions %>
+ </ul>
<% else %>
<p><%= t ".empty" %></p>
<% end %>
<% if trace.inserted %>
(<%= t ".count_points", :count => trace.size.to_s.gsub(/(\d)(?=(\d{3})+$)/, '\1,') %>)
<% end %>
- ... <%= t ".ago", :time_in_words_ago => time_ago_in_words(trace.timestamp) %></span>
+ ... <%= time_ago_in_words(trace.timestamp, :scope => :'datetime.distance_in_words_ago') %></span>
<%= link_to_if trace.inserted?, t(".map"), { :controller => "site", :action => "index", :mlat => trace.latitude, :mlon => trace.longitude, :anchor => "map=14/#{trace.latitude}/#{trace.longitude}" }, { :title => t(".view_map") } %> /
<%= link_to t(".edit"), { :controller => "site", :action => "edit", :gpx => trace.id }, { :title => t(".edit_map") } %>
<span class="trace_<%= trace.visibility %>"><%= t("." + trace.visibility) %></span>
</tr>
</thead>
<tbody>
- <%= render :partial => "trace", :collection => @traces unless @traces.nil? %>
+ <%= render @traces unless @traces.nil? %>
</tbody>
</table>
<% else %>
<p>
- <%= t(".past", :time => distance_of_time_in_words_to_now(@user_block.ends_at)) %>
+ <%= t(".past", :time => time_ago_in_words(@user_block.ends_at, :scope => :'datetime.distance_in_words_ago')) %>
</p>
<% end %>
</p>
<% end %>
-<p><b><%= t ".created" %></b>: <%= raw t ".ago", :time => friendly_date(@user_block.created_at) %></p>
+<p><b><%= t ".created" %></b>: <%= friendly_date_ago(@user_block.created_at) %></p>
<p><b><%= t ".status" %></b>: <%= block_status(@user_block) %></p>
<p>
<% changeset = contact.changesets.first %>
<% if changeset %>
- <%= t("users.show.latest edit", :ago => t("users.show.ago", :time_in_words_ago => time_ago_in_words(changeset.created_at))) %>
+ <%= t("users.show.latest edit", :ago => time_ago_in_words(changeset.created_at, :scope => :'datetime.distance_in_words_ago')) %>
<% comment = changeset.tags["comment"].to_s != "" ? changeset.tags["comment"] : t("browse.no_comment") %>
"<%= link_to(comment,
{ :controller => "browse", :action => "changeset", :id => changeset.id },
<%= check_box_tag "user_all", "1", false %>
</td>
</tr>
- <%= render :partial => "user", :collection => @users %>
+ <%= render @users %>
</table>
<div id="user_list_actions buttons">
api:
notes:
comment:
- opened_at_html: "Created %{when} ago"
- opened_at_by_html: "Created %{when} ago by %{user}"
- commented_at_html: "Updated %{when} ago"
- commented_at_by_html: "Updated %{when} ago by %{user}"
- closed_at_html: "Resolved %{when} ago"
- closed_at_by_html: "Resolved %{when} ago by %{user}"
- reopened_at_html: "Reactivated %{when} ago"
- reopened_at_by_html: "Reactivated %{when} ago by %{user}"
+ opened_at_html: "Created %{when}"
+ opened_at_by_html: "Created %{when} by %{user}"
+ commented_at_html: "Updated %{when}"
+ commented_at_by_html: "Updated %{when}by %{user}"
+ closed_at_html: "Resolved %{when}"
+ closed_at_by_html: "Resolved %{when} by %{user}"
+ reopened_at_html: "Reactivated %{when}"
+ reopened_at_by_html: "Reactivated %{when} by %{user}"
rss:
title: "OpenStreetMap Notes"
description_area: "A list of notes, reported, commented on or closed in your area [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]"
browse:
created: "Created"
closed: "Closed"
- created_html: "Created <abbr title='%{title}'>%{time} ago</abbr>"
- closed_html: "Closed <abbr title='%{title}'>%{time} ago</abbr>"
- created_by_html: "Created <abbr title='%{title}'>%{time} ago</abbr> by %{user}"
- deleted_by_html: "Deleted <abbr title='%{title}'>%{time} ago</abbr> by %{user}"
- edited_by_html: "Edited <abbr title='%{title}'>%{time} ago</abbr> by %{user}"
- closed_by_html: "Closed <abbr title='%{title}'>%{time} ago</abbr> by %{user}"
+ created_html: "Created <abbr title='%{title}'>%{time}</abbr>"
+ closed_html: "Closed <abbr title='%{title}'>%{time}</abbr>"
+ created_by_html: "Created <abbr title='%{title}'>%{time}</abbr> by %{user}"
+ deleted_by_html: "Deleted <abbr title='%{title}'>%{time}</abbr> by %{user}"
+ edited_by_html: "Edited <abbr title='%{title}'>%{time}</abbr> by %{user}"
+ closed_by_html: "Closed <abbr title='%{title}'>%{time}</abbr> by %{user}"
version: "Version"
in_changeset: "Changeset"
anonymous: "anonymous"
relation: "Relations (%{count})"
relation_paginated: "Relations (%{x}-%{y} of %{count})"
comment: "Comments (%{count})"
- hidden_commented_by: "Hidden comment from %{user} <abbr title='%{exact_time}'>%{when} ago</abbr>"
- commented_by: "Comment from %{user} <abbr title='%{exact_time}'>%{when} ago</abbr>"
+ hidden_commented_by: "Hidden comment from %{user} <abbr title='%{exact_time}'>%{when}</abbr>"
+ commented_by: "Comment from %{user} <abbr title='%{exact_time}'>%{when}</abbr>"
changesetxml: "Changeset XML"
osmchangexml: "osmChange XML"
feed:
open_title: "Unresolved note #%{note_name}"
closed_title: "Resolved note #%{note_name}"
hidden_title: "Hidden note #%{note_name}"
- open_by: "Created by %{user} <abbr title='%{exact_time}'>%{when} ago</abbr>"
- open_by_anonymous: "Created by anonymous <abbr title='%{exact_time}'>%{when} ago</abbr>"
- commented_by: "Comment from %{user} <abbr title='%{exact_time}'>%{when} ago</abbr>"
- commented_by_anonymous: "Comment from anonymous <abbr title='%{exact_time}'>%{when} ago</abbr>"
- closed_by: "Resolved by %{user} <abbr title='%{exact_time}'>%{when} ago</abbr>"
- closed_by_anonymous: "Resolved by anonymous <abbr title='%{exact_time}'>%{when} ago</abbr>"
- reopened_by: "Reactivated by %{user} <abbr title='%{exact_time}'>%{when} ago</abbr>"
- reopened_by_anonymous: "Reactivated by anonymous <abbr title='%{exact_time}'>%{when} ago</abbr>"
- hidden_by: "Hidden by %{user} <abbr title='%{exact_time}'>%{when} ago</abbr>"
+ open_by: "Created by %{user} <abbr title='%{exact_time}'>%{when}</abbr>"
+ open_by_anonymous: "Created by anonymous <abbr title='%{exact_time}'>%{when}</abbr>"
+ commented_by: "Comment from %{user} <abbr title='%{exact_time}'>%{when}</abbr>"
+ commented_by_anonymous: "Comment from anonymous <abbr title='%{exact_time}'>%{when}</abbr>"
+ closed_by: "Resolved by %{user} <abbr title='%{exact_time}'>%{when}</abbr>"
+ closed_by_anonymous: "Resolved by anonymous <abbr title='%{exact_time}'>%{when}</abbr>"
+ reopened_by: "Reactivated by %{user} <abbr title='%{exact_time}'>%{when}</abbr>"
+ reopened_by_anonymous: "Reactivated by anonymous <abbr title='%{exact_time}'>%{when}</abbr>"
+ hidden_by: "Hidden by %{user} <abbr title='%{exact_time}'>%{when}</abbr>"
report: Report this note
query:
title: "Query Features"
changeset_comments:
comment:
comment: "New comment on changeset #%{changeset_id} by %{author}"
- commented_at_by_html: "Updated %{when} ago by %{user}"
+ commented_at_by_html: "Updated %{when} by %{user}"
comments:
comment: "New comment on changeset #%{changeset_id} by %{author}"
index:
post: Post
when: When
comment: Comment
- ago: "%{ago} ago"
newer_comments: "Newer Comments"
older_comments: "Older Comments"
geocoder:
status: Status
reports: Reports
last_updated: Last Updated
- last_updated_time_html: "<abbr title='%{title}'>%{time} ago</abbr>"
- last_updated_time_user_html: "<abbr title='%{title}'>%{time} ago</abbr> by %{user}"
+ last_updated_time_html: "<abbr title='%{title}'>%{time}</abbr>"
+ last_updated_time_user_html: "<abbr title='%{title}'>%{time}</abbr> by %{user}"
link_to_reports: View Reports
reported_user: Reported User
reports_count:
trace:
pending: "PENDING"
count_points: "%{count} points"
- ago: "%{time_in_words_ago} ago"
more: "more"
trace_details: "View Trace Details"
view_map: "View Map"
remove as friend: Unfriend
add as friend: Add Friend
mapper since: "Mapper since:"
- ago: "(%{time_in_words_ago} ago)"
ct status: "Contributor terms:"
ct undecided: Undecided
ct declined: Declined
- ct accepted: Accepted %{ago} ago
- latest edit: "Latest edit %{ago}:"
+ latest edit: "Latest edit (%{ago}):"
email address: "Email address:"
created from: "Created from:"
status: "Status:"
title: "Revoking block on %{block_on}"
heading: "Revoking block on %{block_on} by %{block_by}"
time_future: "This block will end in %{time}."
- past: "This block ended %{time} ago and cannot be revoked now."
+ past: "This block ended %{time} and cannot be revoked now."
confirm: "Are you sure you wish to revoke this block?"
revoke: "Revoke!"
flash: "This block has been revoked."
time_future: "Ends in %{time}."
until_login: "Active until the user logs in."
time_future_and_until_login: "Ends in %{time} and after the user has logged in."
- time_past: "Ended %{time} ago."
+ time_past: "Ended %{time}."
block_duration:
hours:
one: "1 hour"
show:
title: "%{block_on} blocked by %{block_by}"
heading: "%{block_on} blocked by %{block_by}"
- time_future: "Ends in %{time}"
- time_past: "Ended %{time} ago"
created: "Created"
- ago: "%{time} ago"
status: "Status"
show: "Show"
edit: "Edit"
description: "Description"
created_at: "Created at"
last_changed: "Last changed"
- ago_html: "%{when} ago"
javascripts:
close: Close
share:
anon_trace_file = create(:trace, :visibility => "private")
# First with no auth
- put :update, :params => { :id => public_trace_file.id }, :body => public_trace_file.to_xml.to_s
+ put :update, :params => { :id => public_trace_file.id }, :body => create_trace_xml(public_trace_file)
assert_response :unauthorized
# Now with some other user, which should fail
basic_authorization create(:user).display_name, "test"
- put :update, :params => { :id => public_trace_file.id }, :body => public_trace_file.to_xml.to_s
+ put :update, :params => { :id => public_trace_file.id }, :body => create_trace_xml(public_trace_file)
assert_response :forbidden
# Now with a trace which doesn't exist
basic_authorization create(:user).display_name, "test"
- put :update, :params => { :id => 0 }, :body => public_trace_file.to_xml.to_s
+ put :update, :params => { :id => 0 }, :body => create_trace_xml(public_trace_file)
assert_response :not_found
# Now with a trace which did exist but has been deleted
basic_authorization deleted_trace_file.user.display_name, "test"
- put :update, :params => { :id => deleted_trace_file.id }, :body => deleted_trace_file.to_xml.to_s
+ put :update, :params => { :id => deleted_trace_file.id }, :body => create_trace_xml(deleted_trace_file)
assert_response :not_found
# Now try an update with the wrong ID
basic_authorization public_trace_file.user.display_name, "test"
- put :update, :params => { :id => public_trace_file.id }, :body => anon_trace_file.to_xml.to_s
+ put :update, :params => { :id => public_trace_file.id }, :body => create_trace_xml(anon_trace_file)
assert_response :bad_request,
"should not be able to update a trace with a different ID from the XML"
t = public_trace_file
t.description = "Changed description"
t.visibility = "private"
- put :update, :params => { :id => t.id }, :body => t.to_xml.to_s
+ put :update, :params => { :id => t.id }, :body => create_trace_xml(t)
assert_response :success
nt = Trace.find(t.id)
assert_equal nt.description, t.description
trace = tracetag.trace
basic_authorization trace.user.display_name, "test"
- put :update, :params => { :id => trace.id }, :body => trace.to_xml.to_s
+ put :update, :params => { :id => trace.id }, :body => create_trace_xml(trace)
assert_response :success
updated = Trace.find(trace.id)
assert_equal content_type, response.content_type
assert_equal "attachment; filename=\"#{trace.id}.#{extension}\"", @response.header["Content-Disposition"]
end
+
+ ##
+ # build XML for traces
+ # this builds a minimum viable XML for the tests in this suite
+ def create_trace_xml(trace)
+ root = XML::Document.new
+ root.root = XML::Node.new "osm"
+ trc = XML::Node.new "gpx_file"
+ trc["id"] = trace.id.to_s
+ trc["visibility"] = trace.visibility
+ trc["visible"] = trace.visible.to_s
+ desc = XML::Node.new "description"
+ desc << trace.description
+ trc << desc
+ trace.tags.each do |tag|
+ t = XML::Node.new "tag"
+ t << tag.tag
+ trc << t
+ end
+ root.root << trc
+ root.to_s
+ end
end
end
date = Time.new(2014, 3, 5, 21, 37, 45, "+00:00")
user = create(:user)
- assert_match %r{^Created by anonymous <abbr title='Wed, 05 Mar 2014 21:37:45 \+0000'><span title=" 5 March 2014 at 21:37">.*</span> ago</abbr>$}, note_event("open", date, nil)
- assert_match %r{^Resolved by <a href="/user/#{ERB::Util.u(user.display_name)}">#{user.display_name}</a> <abbr title='Wed, 05 Mar 2014 21:37:45 \+0000'><span title=" 5 March 2014 at 21:37">.*</span> ago</abbr>$}, note_event("closed", date, user)
+ assert_match %r{^Created by anonymous <abbr title='Wed, 05 Mar 2014 21:37:45 \+0000'><span title=" 5 March 2014 at 21:37">.* ago</span></abbr>$}, note_event("open", date, nil)
+ assert_match %r{^Resolved by <a href="/user/#{ERB::Util.u(user.display_name)}">#{user.display_name}</a> <abbr title='Wed, 05 Mar 2014 21:37:45 \+0000'><span title=" 5 March 2014 at 21:37">.* ago</span></abbr>$}, note_event("closed", date, user)
end
def test_note_author
assert_dom_equal "", icon
icon = role_icon(create(:moderator_user), "moderator")
- assert_dom_equal '<picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" /></picture>', icon
+ expected = <<~HTML.delete("\n")
+ <picture>
+ <source srcset="/images/roles/moderator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" />
+ </picture>
+ HTML
+ assert_dom_equal expected, icon
end
def test_role_icon_administrator
user = create(:user)
icon = role_icon(user, "moderator")
- assert_dom_equal %(<a confirm="Are you sure you want to grant the role `moderator' to the user `#{user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(user.display_name)}/role/moderator/grant"><picture><source srcset="/images/roles/blank_moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/blank_moderator.svg" border="0" alt="Grant moderator access" title="Grant moderator access" src="/images/roles/blank_moderator.png" width="20" height="20" /></picture></a>), icon
+ expected = <<~HTML.delete("\n")
+ <a confirm="Are you sure you want to grant the role `moderator' to the user `#{user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(user.display_name)}/role/moderator/grant">
+ <picture>
+ <source srcset="/images/roles/blank_moderator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/blank_moderator.svg" border="0" alt="Grant moderator access" title="Grant moderator access" src="/images/roles/blank_moderator.png" width="20" height="20" />
+ </picture>
+ </a>
+ HTML
+ assert_dom_equal expected, icon
moderator_user = create(:moderator_user)
icon = role_icon(moderator_user, "moderator")
- assert_dom_equal %(<a confirm="Are you sure you want to revoke the role `moderator' from the user `#{moderator_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(moderator_user.display_name)}/role/moderator/revoke"><picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" /></picture></a>), icon
+ expected = <<~HTML.delete("\n")
+ <a confirm="Are you sure you want to revoke the role `moderator' from the user `#{moderator_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(moderator_user.display_name)}/role/moderator/revoke">
+ <picture>
+ <source srcset="/images/roles/moderator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" />
+ </picture>
+ </a>
+ HTML
+ assert_dom_equal expected, icon
end
def test_role_icons_normal
assert_dom_equal " ", icons
icons = role_icons(create(:moderator_user))
- assert_dom_equal ' <picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" /></picture>', icons
+ expected = " " + <<~HTML.delete("\n")
+ <picture>
+ <source srcset="/images/roles/moderator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" />
+ </picture>
+ HTML
+ assert_dom_equal expected, icons
icons = role_icons(create(:super_user))
- assert_dom_equal ' <picture><source srcset="/images/roles/administrator.svg" type="image/svg+xml" /><img srcset="/images/roles/administrator.svg" border="0" alt="This user is an administrator" title="This user is an administrator" src="/images/roles/administrator.png" width="20" height="20" /></picture> <picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" /></picture>', icons
+ expected = " " + <<~HTML.delete("\n")
+ <picture>
+ <source srcset="/images/roles/administrator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/administrator.svg" border="0" alt="This user is an administrator" title="This user is an administrator" src="/images/roles/administrator.png" width="20" height="20" />
+ </picture>
+ <picture>
+ <source srcset="/images/roles/moderator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/moderator.svg" border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" />
+ </picture>
+ HTML
+ assert_dom_equal expected, icons
end
def test_role_icons_administrator
user = create(:user)
icons = role_icons(user)
- assert_dom_equal %( <a confirm="Are you sure you want to grant the role `administrator' to the user `#{user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(user.display_name)}/role/administrator/grant"><picture><source srcset="/images/roles/blank_administrator.svg" type="image/svg+xml" /><img srcset="/images/roles/blank_administrator.svg" border="0" alt="Grant administrator access" title="Grant administrator access" src="/images/roles/blank_administrator.png" width="20" height="20" /></picture></a> <a confirm="Are you sure you want to grant the role `moderator' to the user `#{user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(user.display_name)}/role/moderator/grant"><picture><source srcset="/images/roles/blank_moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/blank_moderator.svg" border="0" alt="Grant moderator access" title="Grant moderator access" src="/images/roles/blank_moderator.png" width="20" height="20" /></picture></a>), icons
+ expected = " " + <<~HTML.delete("\n")
+ <a confirm="Are you sure you want to grant the role `administrator' to the user `#{user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(user.display_name)}/role/administrator/grant">
+ <picture>
+ <source srcset="/images/roles/blank_administrator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/blank_administrator.svg" border="0" alt="Grant administrator access" title="Grant administrator access" src="/images/roles/blank_administrator.png" width="20" height="20" />
+ </picture>
+ </a>
+ <a confirm="Are you sure you want to grant the role `moderator' to the user `#{user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(user.display_name)}/role/moderator/grant">
+ <picture>
+ <source srcset="/images/roles/blank_moderator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/blank_moderator.svg" border="0" alt="Grant moderator access" title="Grant moderator access" src="/images/roles/blank_moderator.png" width="20" height="20" />
+ </picture>
+ </a>
+ HTML
+ assert_dom_equal expected, icons
moderator_user = create(:moderator_user)
icons = role_icons(moderator_user)
- assert_dom_equal %( <a confirm="Are you sure you want to grant the role `administrator' to the user `#{moderator_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(moderator_user.display_name)}/role/administrator/grant"><picture><source srcset="/images/roles/blank_administrator.svg" type="image/svg+xml" /><img srcset="/images/roles/blank_administrator.svg" border="0" alt="Grant administrator access" title="Grant administrator access" src="/images/roles/blank_administrator.png" width="20" height="20" /></picture></a> <a confirm="Are you sure you want to revoke the role `moderator' from the user `#{moderator_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(moderator_user.display_name)}/role/moderator/revoke"><picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" /></picture></a>), icons
+ expected = " " + <<~HTML.delete("\n")
+ <a confirm="Are you sure you want to grant the role `administrator' to the user `#{moderator_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(moderator_user.display_name)}/role/administrator/grant">
+ <picture>
+ <source srcset="/images/roles/blank_administrator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/blank_administrator.svg" border="0" alt="Grant administrator access" title="Grant administrator access" src="/images/roles/blank_administrator.png" width="20" height="20" />
+ </picture>
+ </a>
+ <a confirm="Are you sure you want to revoke the role `moderator' from the user `#{moderator_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(moderator_user.display_name)}/role/moderator/revoke">
+ <picture>
+ <source srcset="/images/roles/moderator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" />
+ </picture>
+ </a>
+ HTML
+ assert_dom_equal expected, icons
super_user = create(:super_user)
icons = role_icons(super_user)
- assert_dom_equal %( <a confirm="Are you sure you want to revoke the role `administrator' from the user `#{super_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(super_user.display_name)}/role/administrator/revoke"><picture><source srcset="/images/roles/administrator.svg" type="image/svg+xml" /><img srcset="/images/roles/administrator.svg" border="0" alt="Revoke administrator access" title="Revoke administrator access" src="/images/roles/administrator.png" width="20" height="20" /></picture></a> <a confirm="Are you sure you want to revoke the role `moderator' from the user `#{super_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(super_user.display_name)}/role/moderator/revoke"><picture><source srcset="/images/roles/moderator.svg" type="image/svg+xml" /><img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" /></picture></a>), icons
+ expected = " " + <<~HTML.delete("\n")
+ <a confirm="Are you sure you want to revoke the role `administrator' from the user `#{super_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(super_user.display_name)}/role/administrator/revoke">
+ <picture>
+ <source srcset="/images/roles/administrator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/administrator.svg" border="0" alt="Revoke administrator access" title="Revoke administrator access" src="/images/roles/administrator.png" width="20" height="20" />
+ </picture>
+ </a>
+ <a confirm="Are you sure you want to revoke the role `moderator' from the user `#{super_user.display_name}'?" rel="nofollow" data-method="post" href="/user/#{ERB::Util.u(super_user.display_name)}/role/moderator/revoke">
+ <picture>
+ <source srcset="/images/roles/moderator.svg" type="image/svg+xml" />
+ <img srcset="/images/roles/moderator.svg" border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" />
+ </picture>
+ </a>
+ HTML
+ assert_dom_equal expected, icons
end
end