--- /dev/null
+# 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