public
Fork of edavis10/redmine
Description: A fork of Redmine with Texuna Technologies patches applied.
Homepage: http://www.redmine.org
Clone URL: git://github.com/artemv/redmine_tt.git
Version page: show not estimated (undone) issues count.
Count is a link that leads to relevant issues list.
For this 2 new filter operators added for status: 'done' and 'undone'.
artemv (author)
Thu Sep 04 07:31:27 -0700 2008
commit  2f53878ce1f51cd5c797eaa8a98e6ed327e13b96
tree    0ee9ed910f58f4a48a5836a5b73d273805e18ce5
parent  045169baf4b668ce869deb7a135340dd5962df5f
...
63
64
65
 
 
66
67
68
...
81
82
83
84
 
85
86
87
...
127
128
129
130
 
131
132
133
...
326
327
328
 
 
 
 
329
330
331
...
63
64
65
66
67
68
69
70
...
83
84
85
 
86
87
88
89
...
129
130
131
 
132
133
134
135
...
328
329
330
331
332
333
334
335
336
337
0
@@ -63,6 +63,8 @@ class Query < ActiveRecord::Base
0
                   "!"   => :label_not_equals,
0
                   "o"   => :label_open_issues,
0
                   "c"   => :label_closed_issues,
0
+                  "done"   => :label_done_issues,
0
+                  "undone"   => :label_undone_issues,
0
                   "!*"  => :label_none,
0
                   "*"   => :label_all,
0
                   ">="   => '>=',
0
@@ -81,7 +83,7 @@ class Query < ActiveRecord::Base
0
   cattr_reader :operators
0
     
0
   @@operators_by_filter_type = { :list => [ "=", "!" ],
0
-                                 :list_status => [ "o", "=", "!", "c", "*" ],
0
+                                 :list_status => [ "o", "c", "=", "!", "*", "done", "undone" ],
0
                                  :list_optional => [ "=", "!", "!*", "*" ],
0
                                  :list_subprojects => [ "*", "!*", "=" ],
0
                                  :date => [ "<t+", ">t+", "t+", "t", "w", ">t-", "<t-", "t-" ],
0
@@ -127,7 +129,7 @@ class Query < ActiveRecord::Base
0
           # filter requires one or more values
0
           (values_for(field) and !values_for(field).first.blank?) or 
0
           # filter doesn't require any value
0
-          ["o", "c", "!*", "*", "t", "w"].include? operator_for(field)
0
+          ["o", "c", "done", "undone", "!*", "*", "t", "w"].include? operator_for(field)
0
     end if filters
0
   end
0
   
0
@@ -326,6 +328,10 @@ class Query < ActiveRecord::Base
0
         sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false}" if field == "status_id"
0
       when "c"
0
         sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_true}" if field == "status_id"
0
+      when "undone"
0
+        sql = sql + "#{IssueStatus.table_name}.is_closed=#{connection.quoted_false} AND #{IssueStatus.table_name}.is_development_complete=#{connection.quoted_false}" if field == "status_id"
0
+      when "done"
0
+        sql = sql + "#{IssueStatus.table_name}.is_closed = #{connection.quoted_true} OR #{IssueStatus.table_name}.is_development_complete=#{connection.quoted_true}" if field == "status_id"
0
       when ">t-"
0
         sql = sql + "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date((Date.today - v.first.to_i).to_time), connection.quoted_date((Date.today + 1).to_time)]
0
       when "<t-"
...
102
103
104
 
 
 
 
 
 
 
105
106
107
...
102
103
104
105
106
107
108
109
110
111
112
113
114
0
@@ -102,6 +102,13 @@ class Version < ActiveRecord::Base
0
     @closed_issues_count ||= Issue.count(:all, :conditions => ["fixed_version_id = ? AND is_closed = ?", self.id, true], :include => :status)
0
   end
0
   
0
+  def not_estimated_undone_count
0
+    @not_estimated_undone_count ||= Issue.count(:all, :conditions => 
0
+        ["fixed_version_id = ? AND estimated_hours IS NULL AND " + 
0
+          "(is_closed = ? AND is_development_complete = ?)", self.id, false, 
0
+        false], :include => :status)
0
+  end
0
+  
0
   def wiki_page
0
     if project.wiki && !wiki_page_title.blank?
0
       @wiki_page ||= project.wiki.find_page(wiki_page_title)
...
36
37
38
 
 
39
40
41
...
36
37
38
39
40
41
42
43
0
@@ -36,6 +36,8 @@ function toggle_operator(field) {
0
     case "t":
0
     case "w":
0
     case "o":
0
+    case "undone":
0
+    case "done":
0
     case "c":
0
       Element.hide("div_values_" + field);
0
       break;
...
12
13
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
16
17
...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
0
@@ -12,6 +12,22 @@
0
     <td class="label"><%= l(:field_estimated_hours) %></td>
0
     <td class="total-hours"><%= html_hours(lwr(:label_f_hour, @version.estimated_hours)) %></td>
0
 </tr>
0
+<% if @version.not_estimated_undone_count > 0 %>
0
+<tr>
0
+    <td class="label"><%= l(:label_not_estimated_and_undone) %></td>
0
+    <td class="not_estimated total-hours"><%= link_to(" <span class = \"count\">%s</span> %s" % 
0
+        [@version.not_estimated_undone_count, lwr(:label_issue, @version.not_estimated_undone_count).downcase],                                             
0
+        {:controller => 'issues', 
0
+        :action => 'index',
0
+        :project_id => @version.project,
0
+        :set_filter => 1,
0
+        :fields => ["estimated_hours", "fixed_version_id", "status_id"],
0
+        :values => {"estimated_hours" => [1], "fixed_version_id" => [@version], "status_id" => [1]},
0
+        :operators => {"estimated_hours" => "!*", "fixed_version_id" => "=", "status_id" => "undone"}
0
+        }
0
+)%></td>
0
+</tr>
0
+<% end %>
0
 <% if User.current.allowed_to?(:view_time_entries, @project) %>
0
 <tr>
0
     <td class="label"><%= l(:label_spent_time) %></td>
...
347
348
349
 
 
 
 
350
351
352
...
535
536
537
 
538
539
540
...
347
348
349
350
351
352
353
354
355
356
...
539
540
541
542
543
544
545
0
@@ -347,6 +347,10 @@ label_open_issues_plural: open
0
 label_closed_issues: closed
0
 label_closed_issues_plural: closed
0
 label_done_issues_genitive_case: done
0
+label_done_issues: done
0
+label_done_issues_plural: done
0
+label_undone_issues: undone
0
+label_undone_issues_plural: undone
0
 label_total: Total
0
 label_permissions: Permissions
0
 label_current_status: Current status
0
@@ -535,6 +539,7 @@ label_remaining_time_short: Rem.
0
 label_issues_count: Count
0
 label_time: Time
0
 label_spent_time_log: Spent time log
0
+label_not_estimated_and_undone: Not estimated
0
 
0
 label_issue_watchers: Watchers
0
 
...
315
316
317
318
 
 
 
 
 
319
320
321
...
315
316
317
 
318
319
320
321
322
323
324
325
0
@@ -315,7 +315,11 @@ label_public_projects: Общие проекты
0
 label_open_issues: открытый
0
 label_open_issues_plural: открытые
0
 label_closed_issues: закрытый
0
-label_done_issues_genitive_case: сделанных
0
+label_done_issues_genitive_case: выполненных
0
+label_done_issues: выполненный
0
+label_done_issues_plural: выполненные
0
+label_undone_issues: невыполненный
0
+label_undone_issues_plural: невыполненные
0
 label_total: Всего
0
 label_permissions: Права доступа
0
 label_current_status: Текущий статус
...
676
677
678
 
 
 
 
679
...
676
677
678
679
680
681
682
683
0
@@ -676,3 +676,7 @@ div.wiki pre.linebreak {
0
     margin:0;
0
     padding:0;
0
 }
0
+
0
+.not_estimated .count {
0
+    color:red;
0
+}
0
\ No newline at end of file

Comments