]> git.openstreetmap.org Git - rails.git/blob - app/views/changeset/list.atom.builder
An initial (incomplete) "proof of concept" integration of an OpenStreetBugs interface...
[rails.git] / app / views / changeset / list.atom.builder
1 atom_feed(:language => I18n.locale, :schema_date => 2009,
2           :id => url_for(params.merge({ :only_path => false })),
3           :root_url => url_for(params.merge({ :only_path => false, :format => nil })),
4           "xmlns:georss" => "http://www.georss.org/georss") do |feed|
5   feed.title @title
6
7   feed.subtitle :type => 'xhtml' do |xhtml|
8     xhtml.p do |p|
9       p << @description
10     end
11   end
12
13   feed.updated @edits.map {|e|  [e.created_at, e.closed_at].max }.max
14   feed.icon "http://#{SERVER_URL}/favicon.ico"
15   feed.logo "http://#{SERVER_URL}/images/mag_map-rss2.0.png"
16
17   feed.rights :type => 'xhtml' do |xhtml|
18     xhtml.a :href => "http://creativecommons.org/licenses/by-sa/2.0/" do |a|
19       a.img :src => "http://#{SERVER_URL}/images/cc_button.png", :alt => "CC by-sa 2.0"
20     end
21   end
22
23   for changeset in @edits
24     feed.entry(changeset, :updated => changeset.closed_at, :id => changeset_url(changeset.id, :only_path => false)) do |entry|
25       entry.link :rel => "alternate",
26                  :href => changeset_read_url(changeset, :only_path => false),
27                  :type => "application/osm+xml"
28       entry.link :rel => "alternate",
29                  :href => changeset_download_url(changeset, :only_path => false),
30                  :type => "application/osmChange+xml"
31
32       if !changeset.tags.empty? and changeset.tags.has_key? "comment"
33         entry.title t('browse.changeset.feed.title_comment', :id => h(changeset.id), :comment => h(changeset.tags['comment'])), :type => "html"
34       else
35         entry.title t('browse.changeset.feed.title', :id => h(changeset.id))
36       end
37
38       if changeset.user.data_public?
39         entry.author do |author|
40           author.name changeset.user.display_name
41           author.uri url_for(:controller => 'user', :action => 'view', :display_name => changeset.user.display_name, :only_path => false)
42         end
43       end
44
45       feed.content :type => 'xhtml' do |xhtml|
46         xhtml.style "th { text-align: left } tr { vertical-align: top }"
47         xhtml.table do |table|
48           table.tr do |tr|
49             tr.th t("browse.changeset_details.created_at")
50             tr.td l(changeset.created_at)
51           end
52           table.tr do |tr|
53             tr.th t("browse.changeset_details.closed_at")
54             tr.td l(changeset.closed_at)
55           end
56           if changeset.user.data_public?
57             table.tr do |tr|
58               tr.th t("browse.changeset_details.belongs_to")
59               tr.td do |td|
60                 td.a h(changeset.user.display_name), :href => url_for(:controller => "user", :action => "view", :display_name => changeset.user.display_name, :only_path => false)
61               end
62             end
63           end
64           unless changeset.tags.empty?
65             table.tr do |tr|
66               tr.th t("browse.tag_details.tags")
67               tr.td do |td|
68                 td.table :cellpadding => "0" do |table|
69                   changeset.tags.sort.each do |tag|
70                     table.tr do |tr|
71                       tr.td << "#{h(tag[0])} = #{auto_link(h(tag[1]))}"
72                     end
73                   end
74                 end
75               end
76             end
77           end
78         end
79       end
80
81       unless changeset.min_lat.nil?
82         minlon = changeset.min_lon/GeoRecord::SCALE.to_f
83         minlat = changeset.min_lat/GeoRecord::SCALE.to_f
84         maxlon = changeset.max_lon/GeoRecord::SCALE.to_f
85         maxlat = changeset.max_lat/GeoRecord::SCALE.to_f
86
87         # See http://georss.org/Encodings#Geometry
88         lower_corner = "#{minlat} #{minlon}"
89         upper_corner = "#{maxlat} #{maxlon}"
90
91         feed.georss :box, lower_corner + " " + upper_corner
92       end
93     end
94   end
95 end