Index: app/views/issues/index.api.rsb =================================================================== --- app/views/issues/index.api.rsb (révision 5570) +++ app/views/issues/index.api.rsb (copie de travail) @@ -31,6 +31,30 @@ api.relation(:id => relation.id, :issue_id => relation.issue_from_id, :issue_to_id => relation.issue_to_id, :relation_type => relation.relation_type, :delay => relation.delay) end end if include_in_api_response?('relations') + + api.array :journals do + issue.journals.each do |journal| + api.journal :id => journal.id do + api.user(:id => journal.user_id, :name => journal.user.name) unless journal.user.nil? + api.notes journal.notes + api.created_on journal.created_on + api.array :details do + journal.visible_details.each do |detail| + api.detail :property => detail.property, :name => detail.prop_key do + api.old_value detail.old_value + api.new_value detail.value + end + end + end + end + end + end if include_in_api_response?('journals') + + api.array :watchers do + issue.watcher_users.each do |user| + api.user :id => user.id, :name => user.name + end + end if include_in_api_response?('watchers') && User.current.allowed_to?(:view_issue_watchers, issue.project) end end end Index: app/controllers/issues_controller.rb =================================================================== --- app/controllers/issues_controller.rb (révision 5570) +++ app/controllers/issues_controller.rb (copie de travail) @@ -87,6 +87,17 @@ format.html { render :template => 'issues/index', :layout => !request.xhr? } format.api { Issue.load_visible_relations(@issues) if include_in_api_response?('relations') + + if include_in_api_response?('journals') + @issues.each{|issue| + issue.journals.each_with_index {|j,i| j.indice = i+1} + issue.journals.reject!(&:private_notes?) unless User.current.allowed_to?(:view_private_notes, issue.project) + Journal.preload_journals_details_custom_fields(issue.journals) + # TODO: use #select! when ruby1.8 support is dropped + issue.journals.reject! {|journal| !journal.notes? && journal.visible_details.empty?} + issue.journals.reverse! if User.current.wants_comments_in_reverse_order? + } + end } format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") } format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => 'issues.csv') }