diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-05-20 17:46:02 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-05-20 17:46:02 +0000 |
commit | d34ea9a56986a524382641de987f818bbd0131e4 (patch) | |
tree | c9a09706ca3ac5e3b650faed3192c7418bd2a348 /app | |
parent | bb1fccb7b7202ec065fdc39646067054580d278f (diff) | |
download | redmine-d34ea9a56986a524382641de987f818bbd0131e4.tar.gz redmine-d34ea9a56986a524382641de987f818bbd0131e4.zip |
Versions can now be created with no date.
Versions with no date appear at the end of the roadmap, sorted by name.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@536 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/projects_controller.rb | 24 | ||||
-rw-r--r-- | app/models/query.rb | 2 | ||||
-rw-r--r-- | app/models/version.rb | 12 | ||||
-rw-r--r-- | app/views/projects/changelog.rhtml | 31 | ||||
-rw-r--r-- | app/views/projects/roadmap.rhtml | 2 | ||||
-rw-r--r-- | app/views/projects/settings.rhtml | 2 | ||||
-rw-r--r-- | app/views/versions/_form.rhtml | 2 |
7 files changed, 42 insertions, 33 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index e90196495..debb0a00a 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -426,35 +426,25 @@ class ProjectsController < ApplicationController Mailer.deliver_attachments_add(@attachments) if !@attachments.empty? and Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled? redirect_to :controller => 'projects', :action => 'list_files', :id => @project end - @versions = @project.versions + @versions = @project.versions.sort end def list_files - @versions = @project.versions + @versions = @project.versions.sort end # Show changelog for @project def changelog @trackers = Tracker.find(:all, :conditions => ["is_in_chlog=?", true], :order => 'position') - retrieve_selected_tracker_ids(@trackers) - - @fixed_issues = @project.issues.find(:all, - :include => [ :fixed_version, :status, :tracker ], - :conditions => [ "#{IssueStatus.table_name}.is_closed=? and #{Issue.table_name}.tracker_id in (#{@selected_tracker_ids.join(',')}) and #{Issue.table_name}.fixed_version_id is not null", true], - :order => "#{Version.table_name}.effective_date DESC, #{Issue.table_name}.id DESC" - ) unless @selected_tracker_ids.empty? - @fixed_issues ||= [] + retrieve_selected_tracker_ids(@trackers) + @versions = @project.versions.sort end def roadmap @trackers = Tracker.find(:all, :conditions => ["is_in_roadmap=?", true], :order => 'position') - retrieve_selected_tracker_ids(@trackers) - conditions = ("1" == params[:completed] ? nil : [ "#{Version.table_name}.effective_date > ?", Date.today]) - - @versions = @project.versions.find(:all, - :conditions => conditions, - :order => "#{Version.table_name}.effective_date ASC" - ) + retrieve_selected_tracker_ids(@trackers) + conditions = ("1" == params[:completed] ? nil : [ "#{Version.table_name}.effective_date > ? OR #{Version.table_name}.effective_date IS NULL", Date.today]) + @versions = @project.versions.find(:all, :conditions => conditions).sort end def activity diff --git a/app/models/query.rb b/app/models/query.rb index 026e79ea9..47468ba12 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -94,7 +94,7 @@ class Query < ActiveRecord::Base @available_filters["assigned_to_id"] = { :type => :list_optional, :order => 4, :values => user_values } @available_filters["author_id"] = { :type => :list, :order => 5, :values => user_values } @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => @project.issue_categories.collect{|s| [s.name, s.id.to_s] } } - @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => @project.versions.collect{|s| [s.name, s.id.to_s] } } + @available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => @project.versions.sort.collect{|s| [s.name, s.id.to_s] } } unless @project.children.empty? @available_filters["subproject_id"] = { :type => :list_one_or_more, :order => 13, :values => @project.children.collect{|s| [s.name, s.id.to_s] } } end diff --git a/app/models/version.rb b/app/models/version.rb index 463ca3354..a4e93118e 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -23,7 +23,7 @@ class Version < ActiveRecord::Base validates_presence_of :name validates_uniqueness_of :name, :scope => [:project_id] - validates_format_of :effective_date, :with => /^\d{4}-\d{2}-\d{2}$/, :message => :activerecord_error_not_a_date + validates_format_of :effective_date, :with => /^\d{4}-\d{2}-\d{2}$/, :message => :activerecord_error_not_a_date, :allow_nil => true def start_date effective_date @@ -37,6 +37,16 @@ class Version < ActiveRecord::Base effective_date && effective_date <= Date.today end + # Versions are sorted by effective_date + # Those with no effective_date are at the end, sorted by name + def <=>(version) + if self.effective_date + version.effective_date ? (self.effective_date <=> version.effective_date) : -1 + else + version.effective_date ? 1 : (self.name <=> version.name) + end + end + private def check_integrity raise "Can't delete version" if self.fixed_issues.find(:first) diff --git a/app/views/projects/changelog.rhtml b/app/views/projects/changelog.rhtml index f42f32c42..c76159471 100644 --- a/app/views/projects/changelog.rhtml +++ b/app/views/projects/changelog.rhtml @@ -11,17 +11,26 @@ <% end %> </div> -<% if @fixed_issues.empty? %><p><i><%= l(:label_no_data) %></i></p><% end %> +<% if @versions.empty? %><p><i><%= l(:label_no_data) %></i></p><% end %> -<% ver_id = nil - @fixed_issues.each do |issue| %> - <% unless ver_id == issue.fixed_version_id %> - <% if ver_id %></ul><% end %> - <h3 class="icon22 icon22-package"><%= issue.fixed_version.name %></h3> - <p><%= format_date(issue.fixed_version.effective_date) %><br /> - <%=h issue.fixed_version.description %></p> +<% @versions.each do |version| %> + <a name="<%= version.name %>"><h3 class="icon22 icon22-package"><%= version.name %></h3></a> + <% if version.completed? %> + <p><%= format_date(version.effective_date) %></p> + <% elsif version.effective_date %> + <p><strong><%=l(:label_roadmap_due_in)%> <%= distance_of_time_in_words Time.now, version.effective_date %> (<%= format_date(version.effective_date) %>)</strong></p> + <% end %> + <p><%=h version.description %></p> + <% issues = version.fixed_issues.find(:all, + :include => [:status, :tracker], + :conditions => ["#{IssueStatus.table_name}.is_closed=? AND #{Issue.table_name}.tracker_id in (#{@selected_tracker_ids.join(',')})", true], + :order => "#{Tracker.table_name}.position") + %> + <% if !issues.empty? %> <ul> - <% ver_id = issue.fixed_version_id - end %> - <li><%= link_to_issue issue %>: <%=h issue.subject %></li> + <% issues.each do |issue| %> + <li><%= link_to_issue(issue) %>: <%=h issue.subject %></li> + <% end %> + </ul> + <% end %> <% end %> diff --git a/app/views/projects/roadmap.rhtml b/app/views/projects/roadmap.rhtml index ab591a830..81ea703c6 100644 --- a/app/views/projects/roadmap.rhtml +++ b/app/views/projects/roadmap.rhtml @@ -18,7 +18,7 @@ <a name="<%= version.name %>"><h3 class="icon22 icon22-package"><%= version.name %></h3></a> <% if version.completed? %> <p><%= format_date(version.effective_date) %></p> - <% else %> + <% elsif version.effective_date %> <p><strong><%=l(:label_roadmap_due_in)%> <%= distance_of_time_in_words Time.now, version.effective_date %> (<%= format_date(version.effective_date) %>)</strong></p> <% end %> <p><%=h version.description %></p> diff --git a/app/views/projects/settings.rhtml b/app/views/projects/settings.rhtml index 81150dd54..bd73076cc 100644 --- a/app/views/projects/settings.rhtml +++ b/app/views/projects/settings.rhtml @@ -27,7 +27,7 @@ <table class="list"> <thead><th><%= l(:label_version) %></th><th><%= l(:field_effective_date) %></th><th><%= l(:field_description) %></th><th style="width:15%"></th><th style="width:15%"></th></thead> <tbody> -<% for version in @project.versions %> +<% for version in @project.versions.sort %> <tr class="<%= cycle 'odd', 'even' %>"> <td><%=h version.name %></td> <td align="center"><%= format_date(version.effective_date) %></td> diff --git a/app/views/versions/_form.rhtml b/app/views/versions/_form.rhtml index 3d6c9c208..8dca13e36 100644 --- a/app/views/versions/_form.rhtml +++ b/app/views/versions/_form.rhtml @@ -4,7 +4,7 @@ <!--[form:version]--> <p><%= f.text_field :name, :size => 20, :required => true %></p> <p><%= f.text_field :description, :size => 60 %></p> -<p><%= f.text_field :effective_date, :size => 10, :required => true %><%= calendar_for('version_effective_date') %></p> +<p><%= f.text_field :effective_date, :size => 10 %><%= calendar_for('version_effective_date') %></p> <!--[eoform:version]--> </div> |