openstreetmap-website/app/views/user/api_read.builder
Simon Poole fc78f3c4a2 Add messages count to API response for logged in user details
Allows external editors to alert the user to the fact that they
have unread messages on the OSM site.
2013-08-16 21:09:04 +01:00

51 lines
2 KiB
Ruby

xml.instruct! :xml, :version => "1.0"
xml.osm("version" => API_VERSION, "generator" => GENERATOR) do
xml.tag! "user", :id => @this_user.id,
:display_name => @this_user.display_name,
:account_created => @this_user.creation_time.xmlschema do
if @this_user.description
xml.tag! "description", @this_user.description
end
if @user && @user == @this_user
xml.tag! "contributor-terms", :agreed => !!@this_user.terms_agreed,
:pd => !!@this_user.consider_pd
else
xml.tag! "contributor-terms", :agreed => !!@this_user.terms_agreed
end
if @this_user.image.file? or @this_user.image_use_gravatar
xml.tag! "img", :href => user_image_url(@this_user, :size => 256)
end
xml.tag! "roles" do
@this_user.roles.each do |role|
xml.tag! role.role
end
end
xml.tag! "changesets", :count => @this_user.changesets.size
xml.tag! "traces", :count => @this_user.traces.size
xml.tag! "blocks" do
xml.tag! "received", :count => @this_user.blocks.size,
:active => @this_user.blocks.active.size
if @this_user.moderator?
xml.tag! "issued", :count => @this_user.blocks_created.size,
:active => @this_user.blocks_created.active.size
end
end
if @user && @user == @this_user
if @this_user.home_lat and @this_user.home_lon
xml.tag! "home", :lat => @this_user.home_lat,
:lon => @this_user.home_lon,
:zoom => @this_user.home_zoom
end
if @this_user.languages
xml.tag! "languages" do
@this_user.languages.split(",") { |lang| xml.tag! "lang", lang }
end
end
xml.tag! "messages" do
xml.tag! "received", :count => @this_user.messages.size,
:unread => @this_user.new_messages.size
xml.tag! "sent", :count => @this_user.sent_messages.size
end
end
end
end