X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/538bfed8a61a576e44d8cc71d7727c0310bcf238..656ed0af7618232bfd45875945e4718c372081d2:/app/views/api/changesets/_changeset.builder diff --git a/app/views/api/changesets/_changeset.builder b/app/views/api/changesets/_changeset.builder new file mode 100644 index 000000000..47c494d9b --- /dev/null +++ b/app/views/api/changesets/_changeset.builder @@ -0,0 +1,43 @@ +# basic attributes + +attrs = { + "id" => changeset.id, + "created_at" => changeset.created_at.xmlschema, + "open" => changeset.is_open?, + "comments_count" => changeset.comments.length, + "changes_count" => changeset.num_changes +} +attrs["closed_at"] = changeset.closed_at unless changeset.is_open? +changeset.bbox.to_unscaled.add_bounds_to(attrs, "_") if changeset.bbox.complete? + +# user attributes + +if changeset.user.data_public? + attrs["uid"] = changeset.user_id + attrs["user"] = changeset.user.display_name +end + +xml.changeset(attrs) do |changeset_xml_node| + changeset.tags.each do |k, v| + changeset_xml_node.tag(:k => k, :v => v) + end + + # include discussion if requested + + if @include_discussion + changeset_xml_node.discussion do |discussion_xml_node| + changeset.comments.includes(:author).each do |comment| + cattrs = { + "date" => comment.created_at.xmlschema + } + if comment.author.data_public? + cattrs["uid"] = comment.author.id + cattrs["user"] = comment.author.display_name + end + discussion_xml_node.comment(cattrs) do |comment_xml_node| + comment_xml_node.text(comment.body) + end + end + end + end +end