diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index ca6ea8d..971d0ac 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -448,10 +448,11 @@ class ProjectsController < ApplicationController
def roadmap
@trackers = Tracker.find(:all, :conditions => ["is_in_roadmap=?", true], :order => 'position')
- retrieve_selected_tracker_ids(@trackers)
+ retrieve_selected_tracker_ids(@trackers)
+ conditions = ("1" == params[:completed] ? nil : [ "#{Version.table_name}.effective_date > ?", Date.today])
@versions = @project.versions.find(:all,
- :conditions => [ "#{Version.table_name}.effective_date>?", Date.today],
+ :conditions => conditions,
:order => "#{Version.table_name}.effective_date ASC"
)
end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index c7e80b0..74805ba 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -16,4 +16,13 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module ProjectsHelper
+ def link_to_version(version, options = {})
+ return '' unless version && version.is_a?(Version)
+ link_to version.name, {:controller => 'projects',
+ :action => 'roadmap',
+ :id => version.project_id,
+ :completed => (version.completed? ? 1 : nil),
+ :anchor => version.name
+ }, options
+ end
end
diff --git a/app/models/version.rb b/app/models/version.rb
index ddae037..463ca33 100644
--- a/app/models/version.rb
+++ b/app/models/version.rb
@@ -33,6 +33,10 @@ class Version < ActiveRecord::Base
effective_date
end
+ def completed?
+ effective_date && effective_date <= Date.today
+ end
+
private
def check_integrity
raise "Can't delete version" if self.fixed_issues.find(:first)
diff --git a/app/views/projects/calendar.rhtml b/app/views/projects/calendar.rhtml
index 2a53831..48fdaf6 100644
--- a/app/views/projects/calendar.rhtml
+++ b/app/views/projects/calendar.rhtml
@@ -74,7 +74,7 @@ while day <= @date_to
<% else %>
- <%= image_tag('milestone.png') %> <%= "#{l(:label_version)}: #{i.name}" %>
+ <%= link_to_version i, :class => "icon icon-package" %>
<% end %>
<% end %>
diff --git a/app/views/projects/changelog.rhtml b/app/views/projects/changelog.rhtml
index 51724f1..f42f32c 100644
--- a/app/views/projects/changelog.rhtml
+++ b/app/views/projects/changelog.rhtml
@@ -1,14 +1,12 @@
<%=l(:label_change_log)%>
-
-
<% form_tag do %>
-
<%=l(:label_tracker_plural)%>
+
<%=l(:label_tracker_plural)%>
<% @trackers.each do |tracker| %>
<%= check_box_tag "tracker_ids[]", tracker.id, (@selected_tracker_ids.include? tracker.id.to_s) %>
<%= tracker.name %>
-<% end %>
+<% end %>
<%= submit_tag l(:button_apply), :class => 'button-small' %>
<% end %>
@@ -27,4 +25,3 @@
end %>
<%= link_to_issue issue %>: <%=h issue.subject %>
<% end %>
-
\ No newline at end of file
diff --git a/app/views/projects/gantt.rhtml b/app/views/projects/gantt.rhtml
index 317fd99..ccc9a01 100644
--- a/app/views/projects/gantt.rhtml
+++ b/app/views/projects/gantt.rhtml
@@ -90,7 +90,7 @@ top = headers_height + 8
<%= link_to_issue i %><%= " (#{i.project.name})" unless @project && @project == i.project %>:
<%=h i.subject %>
<% else %>
- <%= "#{l(:label_version)}: #{i.name}" %>
+ <%= link_to_version i, :class => "icon icon-package" %>
<% end %>
<% top = top + 20
diff --git a/app/views/projects/roadmap.rhtml b/app/views/projects/roadmap.rhtml
index e1449dc..ab591a8 100644
--- a/app/views/projects/roadmap.rhtml
+++ b/app/views/projects/roadmap.rhtml
@@ -1,14 +1,13 @@
<%=l(:label_roadmap)%>
-
-
-
+
<% form_tag do %>
-
<%=l(:label_tracker_plural)%>
+
<%=l(:label_tracker_plural)%>
<% @trackers.each do |tracker| %>
<%= check_box_tag "tracker_ids[]", tracker.id, (@selected_tracker_ids.include? tracker.id.to_s) %>
<%= tracker.name %>
-<% end %>
+<% end %>
+
<%= submit_tag l(:button_apply), :class => 'button-small' %>
<% end %>
@@ -16,13 +15,17 @@
<% if @versions.empty? %>
<%= l(:label_no_data) %>
<% end %>
<% @versions.each do |version| %>
-
<%= version.name %>
+
<%= version.name %>
+ <% if version.completed? %>
+
<%= format_date(version.effective_date) %>
+ <% else %>
+
<%=l(:label_roadmap_due_in)%> <%= distance_of_time_in_words Time.now, version.effective_date %> (<%= format_date(version.effective_date) %>)
+ <% end %>
<%=h version.description %>
-
<%=l(:label_roadmap_due_in)%> <%= distance_of_time_in_words Time.now, version.effective_date %> (<%= format_date(version.effective_date) %>)
<% issues = version.fixed_issues.find(:all,
- :include => :status,
+ :include => [:status, :tracker],
:conditions => ["tracker_id in (#{@selected_tracker_ids.join(',')})"],
- :order => "position")
+ :order => "#{Tracker.table_name}.position")
total = issues.size
complete = issues.inject(0) {|c,i| i.status.is_closed? ? c + 1 : c }
@@ -56,4 +59,3 @@
<% end %>
<% end %>
-
diff --git a/lang/bg.yml b/lang/bg.yml
index 1e348cb..3db6cc8 100644
--- a/lang/bg.yml
+++ b/lang/bg.yml
@@ -383,6 +383,7 @@ label_start_to_start: start to start
label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
+label_show_completed_versions: Show completed versions
button_login: Вход
button_submit: Изпращане
diff --git a/lang/de.yml b/lang/de.yml
index 1fc529b..bb43bf3 100644
--- a/lang/de.yml
+++ b/lang/de.yml
@@ -383,6 +383,7 @@ label_start_to_start: start to start
label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
+label_show_completed_versions: Show completed versions
button_login: Einloggen
button_submit: OK
diff --git a/lang/en.yml b/lang/en.yml
index 1800b5d..ef56872 100644
--- a/lang/en.yml
+++ b/lang/en.yml
@@ -383,6 +383,7 @@ label_start_to_start: start to start
label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
+label_show_completed_versions: Show completed versions
button_login: Login
button_submit: Submit
diff --git a/lang/es.yml b/lang/es.yml
index 3a66e0b..dce1551 100644
--- a/lang/es.yml
+++ b/lang/es.yml
@@ -383,6 +383,7 @@ label_start_to_start: start to start
label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
+label_show_completed_versions: Show completed versions
button_login: Conexión
button_submit: Someter
diff --git a/lang/fr.yml b/lang/fr.yml
index bd1973b..e332f1c 100644
--- a/lang/fr.yml
+++ b/lang/fr.yml
@@ -383,6 +383,7 @@ label_start_to_start: début à début
label_start_to_end: début à fin
label_stay_logged_in: Rester connecté
label_disabled: désactivé
+label_show_completed_versions: Voire les versions passées
button_login: Connexion
button_submit: Soumettre
diff --git a/lang/it.yml b/lang/it.yml
index c1e9645..4d100a2 100644
--- a/lang/it.yml
+++ b/lang/it.yml
@@ -383,6 +383,7 @@ label_start_to_start: start to start
label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
+label_show_completed_versions: Show completed versions
button_login: Login
button_submit: Invia
diff --git a/lang/ja.yml b/lang/ja.yml
index 9557994..ac5e48e 100644
--- a/lang/ja.yml
+++ b/lang/ja.yml
@@ -384,6 +384,7 @@ label_start_to_start: start to start
label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
+label_show_completed_versions: Show completed versions
button_login: ログイン
button_submit: 変更
diff --git a/lang/pt.yml b/lang/pt.yml
index 3c6debf..33da15f 100644
--- a/lang/pt.yml
+++ b/lang/pt.yml
@@ -383,6 +383,7 @@ label_start_to_start: start to start
label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
+label_show_completed_versions: Show completed versions
button_login: Login
button_submit: Enviar
diff --git a/lang/zh.yml b/lang/zh.yml
index f9f2a75..894aa1f 100644
--- a/lang/zh.yml
+++ b/lang/zh.yml
@@ -386,6 +386,7 @@ label_start_to_start: start to start
label_start_to_end: start to end
label_stay_logged_in: Stay logged in
label_disabled: disabled
+label_show_completed_versions: Show completed versions
button_login: 登录
button_submit: 提交
diff --git a/public/images/arrow_bw.png b/public/images/arrow_bw.png
index 52dfc96f02a57a6fa62164322a79f426da2bd98a..2af9e2cd4bf59db8d46bf266dab6f11a1c64fa22 100644
GIT binary patch
delta 77
zc$|C6{)~M>GS_uhHX&(gp{dHBH|9Dqn=5&`IEGZ*N={&5Vq-JlOl!Q!BOumsmLZk#
grpBTZS&3>43~Ve6>R*hvColkkr>mdKI;Vst0I+!%W&i*H
delta 76
zc$|C2{*-+}GS@Y3c2PM=kK$GPHs(4pn<;v_IEGZ*N=`^fNnuHJV`DRz%-DI7K~drW
fL##-s?hO_OHZ}(J5QQV}7=Xaj)z4*}Q$iB}w8
;FMk&R7&G1aJH22Vi4krW3(
d*C1|lMh4bJ3@Y4aws8zV;OXk;vd$@?2>@*W6(j%v
delta 73
zc$|C8{)l}-GS@Y3c2POibeU_G8*`nQjpaOD978H@B_|}XFbbSxNHtP0l$1Eg!8XD5
c;#DR?2Dal2I^3m!tPDWl>FVdQ&MBb@06{YqBLDyZ
diff --git a/public/images/arrow_to.png b/public/images/arrow_to.png
index 4f969716f4f344dfdd7e8f042b1dd03101bb49f6..f021e98c941ef145fe9095e30dda3ac645b3a6fd 100644
GIT binary patch
delta 76
zc$~Y>{*-+}GS_uhHX$jI*@pbe8*`nQ%@jRd978H@B`2h$q$DJ;FtQ17A4_RqvS2>q
fBIFvzZO+KRTF;7Eu5I