]> source.dussan.org Git - redmine.git/commitdiff
tracker filter added on change log
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 30 Jul 2006 12:55:29 +0000 (12:55 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 30 Jul 2006 12:55:29 +0000 (12:55 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@18 e93f8b46-1217-0410-a6f0-8f06a7374b81

redmine/app/controllers/projects_controller.rb
redmine/app/views/projects/changelog.rhtml

index 0f8f19422a86dbcdee8bad3dc8054cf0e2a00f7b..2bfb841d660c829951fb431942ca77ab71be033d 100644 (file)
@@ -276,18 +276,27 @@ class ProjectsController < ApplicationController
     @versions = @project.versions\r
   end\r
   \r
-  # Show changelog of @project\r
+  # Show changelog for @project\r
   def changelog\r
+    @trackers = Tracker.find(:all, :conditions => ["is_in_chlog=?", true])\r
+    if request.get?\r
+      @selected_tracker_ids = @trackers.collect {|t| t.id.to_s }\r
+    else\r
+      @selected_tracker_ids = params[:tracker_ids].collect { |id| id.to_i.to_s } if params[:tracker_ids] and params[:tracker_ids].is_a? Array\r
+    end\r
+    @selected_tracker_ids ||= []\r
     @fixed_issues = @project.issues.find(:all, \r
-                                       :include => [ :fixed_version, :status, :tracker ], \r
-                                       :conditions => [ "issue_statuses.is_closed=? and trackers.is_in_chlog=? and issues.fixed_version_id is not null", true, true]\r
-                                      )\r
+      :include => [ :fixed_version, :status, :tracker ], \r
+      :conditions => [ "issue_statuses.is_closed=? and issues.tracker_id in (#{@selected_tracker_ids.join(',')}) and issues.fixed_version_id is not null", true],\r
+      :order => "versions.effective_date DESC, issues.id DESC"\r
+    ) unless @selected_tracker_ids.empty?\r
+    @fixed_issues ||= []\r
   end\r
 \r
 private\r
   # Find project of id params[:id]\r
   # if not found, redirect to project list\r
-  # used as a before_filter\r
+  # Used as a before_filter\r
   def find_project\r
     @project = Project.find(params[:id])               \r
   rescue
index c3c7bb6041df4c5efa2726f4f3040be1e48095ce..fc9d2beba4c19ac33b040f971878605c61a4f4ae 100644 (file)
@@ -1,12 +1,25 @@
 <h2><%=l(:label_change_log)%></h2>\r
 \r
-<% fixed_issues = @fixed_issues.group_by {|i| i.fixed_version } %>\r
-<% fixed_issues.each do |version, issues| %>\r
-  <p><strong><%= version.name %></strong> - <%= format_date(version.effective_date) %><br />\r
-  <%=h version.description %></p>\r
-  <ul>  \r
-    <% issues.each do |i| %>\r
-    <li><%= link_to i.long_id, :controller => 'issues', :action => 'show', :id => i %> [<%= i.tracker.name %>]: <%= i.subject %></li>\r
-    <% end %>\r
-  </ul>\r
+\r
+<%= start_form_tag %>\r
+<% @trackers.each do |tracker| %>\r
+  <%= check_box_tag "tracker_ids[]", tracker.id, (@selected_tracker_ids.include? tracker.id.to_s) %>\r
+  <%= tracker.name %>\r
 <% end %>\r
+&nbsp;&nbsp;<%= submit_tag l(:button_apply), :class => 'button-small' %>\r
+<%= end_form_tag %>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<% ver_id = nil\r
+   @fixed_issues.each do |issue| %>   \r
+    <% unless ver_id == issue.fixed_version_id %>\r
+    <% if ver_id %></ul><% end %>\r
+    <p><strong><%= issue.fixed_version.name %></strong> - <%= format_date(issue.fixed_version.effective_date) %><br />\r
+    <%=h issue.fixed_version.description %></p>\r
+    <ul>\r
+    <% ver_id = issue.fixed_version_id\r
+    end %>\r
+    <li><%= link_to issue.long_id, :controller => 'issues', :action => 'show', :id => issue %> [<%= issue.tracker.name %>]: <%= issue.subject %></li>\r
+<% end %>\r
+\r