From 879a614cdec87c47f9c3240e82f28ebf01eee70f Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 4 Feb 2007 09:18:40 +0000 Subject: [PATCH] added roadmap view git-svn-id: http://redmine.rubyforge.org/svn/trunk@228 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/projects_controller.rb | 14 +++++++++++ app/views/layouts/base.rhtml | 2 ++ app/views/projects/roadmap.rhtml | 26 +++++++++++++++++++++ app/views/trackers/_form.rhtml | 3 ++- db/migrate/023_add_tracker_is_in_roadmap.rb | 9 +++++++ db/migrate/024_add_roadmap_permission.rb | 9 +++++++ lang/de.yml | 1 + lang/en.yml | 1 + lang/es.yml | 1 + lang/fr.yml | 1 + lib/tasks/load_default_data.rake | 24 +++++++++---------- 11 files changed, 78 insertions(+), 13 deletions(-) create mode 100644 app/views/projects/roadmap.rhtml create mode 100644 db/migrate/023_add_tracker_is_in_roadmap.rb create mode 100644 db/migrate/024_add_roadmap_permission.rb diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index eec6977d..ac98c448 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -421,6 +421,20 @@ class ProjectsController < ApplicationController @fixed_issues ||= [] end + def roadmap + @trackers = Tracker.find(:all, :conditions => ["is_in_roadmap=?", true], :order => 'position') + if request.get? + @selected_tracker_ids = @trackers.collect {|t| t.id.to_s } + else + @selected_tracker_ids = params[:tracker_ids].collect { |id| id.to_i.to_s } if params[:tracker_ids] and params[:tracker_ids].is_a? Array + end + @selected_tracker_ids ||= [] + @versions = @project.versions.find(:all, + :conditions => [ "versions.effective_date>?", Date.today], + :order => "versions.effective_date ASC" + ) + end + def activity if params[:year] and params[:year].to_i > 1900 @year = params[:year].to_i diff --git a/app/views/layouts/base.rhtml b/app/views/layouts/base.rhtml index d5ae4d33..b359898f 100644 --- a/app/views/layouts/base.rhtml +++ b/app/views/layouts/base.rhtml @@ -89,6 +89,7 @@ <%= link_to l(:label_activity), {:controller => 'projects', :action => 'activity', :id => @project }, :class => "menuItem" %> <%= link_to l(:label_news_plural), {:controller => 'projects', :action => 'list_news', :id => @project }, :class => "menuItem" %> <%= link_to l(:label_change_log), {:controller => 'projects', :action => 'changelog', :id => @project }, :class => "menuItem" %> + <%= link_to l(:label_roadmap), {:controller => 'projects', :action => 'roadmap', :id => @project }, :class => "menuItem" %> <%= link_to l(:label_document_plural), {:controller => 'projects', :action => 'list_documents', :id => @project }, :class => "menuItem" %> <%= link_to l(:label_member_plural), {:controller => 'projects', :action => 'list_members', :id => @project }, :class => "menuItem" %> <%= link_to l(:label_attachment_plural), {:controller => 'projects', :action => 'list_files', :id => @project }, :class => "menuItem" %> @@ -111,6 +112,7 @@
  • <%= link_to l(:label_activity), :controller => 'projects', :action => 'activity', :id => @project %>
  • <%= link_to l(:label_news_plural), :controller => 'projects', :action => 'list_news', :id => @project %>
  • <%= link_to l(:label_change_log), :controller => 'projects', :action => 'changelog', :id => @project %>
  • +
  • <%= link_to l(:label_roadmap), :controller => 'projects', :action => 'roadmap', :id => @project %>
  • <%= link_to l(:label_document_plural), :controller => 'projects', :action => 'list_documents', :id => @project %>
  • <%= link_to l(:label_member_plural), :controller => 'projects', :action => 'list_members', :id => @project %>
  • <%= link_to l(:label_attachment_plural), :controller => 'projects', :action => 'list_files', :id => @project %>
  • diff --git a/app/views/projects/roadmap.rhtml b/app/views/projects/roadmap.rhtml new file mode 100644 index 00000000..aad4d519 --- /dev/null +++ b/app/views/projects/roadmap.rhtml @@ -0,0 +1,26 @@ +

    <%=l(:label_roadmap)%>

    + +
    + +
    +<% form_tag do %> +

    <%=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 %> +

    <%= submit_tag l(:button_apply), :class => 'button-small' %>

    +<% end %> +
    + +<% @versions.each do |version| %> +

    <%= version.name %>

    +

    <%= format_date(version.effective_date) %>
    + <%=h version.description %>

    + +<% end %> +
    \ No newline at end of file diff --git a/app/views/trackers/_form.rhtml b/app/views/trackers/_form.rhtml index 625c0d63..fd79bf5f 100644 --- a/app/views/trackers/_form.rhtml +++ b/app/views/trackers/_form.rhtml @@ -2,6 +2,7 @@

    <%= f.text_field :name, :required => true %>

    -

    <%= f.check_box :is_in_chlog %>

    +

    <%= f.check_box :is_in_chlog %>

    +

    <%= f.check_box :is_in_roadmap %>

    diff --git a/db/migrate/023_add_tracker_is_in_roadmap.rb b/db/migrate/023_add_tracker_is_in_roadmap.rb new file mode 100644 index 00000000..82ef87bb --- /dev/null +++ b/db/migrate/023_add_tracker_is_in_roadmap.rb @@ -0,0 +1,9 @@ +class AddTrackerIsInRoadmap < ActiveRecord::Migration + def self.up + add_column :trackers, :is_in_roadmap, :boolean, :default => true, :null => false + end + + def self.down + remove_column :trackers, :is_in_roadmap + end +end diff --git a/db/migrate/024_add_roadmap_permission.rb b/db/migrate/024_add_roadmap_permission.rb new file mode 100644 index 00000000..51c097ed --- /dev/null +++ b/db/migrate/024_add_roadmap_permission.rb @@ -0,0 +1,9 @@ +class AddRoadmapPermission < ActiveRecord::Migration + def self.up + Permission.create :controller => "projects", :action => "roadmap", :description => "label_roadmap", :sort => 107, :is_public => true, :mail_option => 1, :mail_enabled => 0 + end + + def self.down + Permission.find(:first, :conditions => ["controller=? and action=?", 'projects', 'roadmap']).destroy + end +end diff --git a/lang/de.yml b/lang/de.yml index ffc1f7f7..f3962d66 100644 --- a/lang/de.yml +++ b/lang/de.yml @@ -313,6 +313,7 @@ label_sort_highest: Erste label_sort_higher: Aufzurichten label_sort_lower: Herabzusteigen label_sort_lowest: Letzter +label_roadmap: Roadmap button_login: Einloggen button_submit: Einreichen diff --git a/lang/en.yml b/lang/en.yml index 824bb21f..fe691443 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -313,6 +313,7 @@ label_sort_highest: Move to top label_sort_higher: Move up label_sort_lower: Move down label_sort_lowest: Move to bottom +label_roadmap: Roadmap button_login: Login button_submit: Submit diff --git a/lang/es.yml b/lang/es.yml index ea07a50e..4c4ed816 100644 --- a/lang/es.yml +++ b/lang/es.yml @@ -313,6 +313,7 @@ label_sort_highest: Primero label_sort_higher: Subir label_sort_lower: Bajar label_sort_lowest: Último +label_roadmap: Roadmap button_login: Conexión button_submit: Someter diff --git a/lang/fr.yml b/lang/fr.yml index 6925a722..6f85240f 100644 --- a/lang/fr.yml +++ b/lang/fr.yml @@ -313,6 +313,7 @@ label_sort_highest: Remonter en premier label_sort_higher: Remonter label_sort_lower: Descendre label_sort_lowest: Descendre en dernier +label_roadmap: Roadmap button_login: Connexion button_submit: Soumettre diff --git a/lib/tasks/load_default_data.rake b/lib/tasks/load_default_data.rake index 12e0efd3..b554df1b 100644 --- a/lib/tasks/load_default_data.rake +++ b/lib/tasks/load_default_data.rake @@ -35,29 +35,29 @@ begin puts "Loading default configuration data for language: #{current_language}" # roles - manager = Role.create :name => l(:default_role_manager) + manager = Role.create :name => l(:default_role_manager), :position => 1 manager.permissions = Permission.find(:all, :conditions => ["is_public=?", false]) - developper = Role.create :name => l(:default_role_developper) + developper = Role.create :name => l(:default_role_developper), :position => 2 perms = [150, 320, 321, 322, 420, 421, 422, 1050, 1060, 1070, 1075, 1130, 1220, 1221, 1222, 1223, 1224, 1320, 1322, 1061, 1057] developper.permissions = Permission.find(:all, :conditions => ["sort IN (#{perms.join(',')})"]) - reporter = Role.create :name => l(:default_role_reporter) + reporter = Role.create :name => l(:default_role_reporter), :position => 3 perms = [1050, 1060, 1070, 1057, 1130] reporter.permissions = Permission.find(:all, :conditions => ["sort IN (#{perms.join(',')})"]) # trackers - Tracker.create(:name => l(:default_tracker_bug), :is_in_chlog => true) - Tracker.create(:name => l(:default_tracker_feature), :is_in_chlog => true) - Tracker.create(:name => l(:default_tracker_support), :is_in_chlog => false) + Tracker.create(:name => l(:default_tracker_bug), :is_in_chlog => true, :is_in_roadmap => false, :position => 1) + Tracker.create(:name => l(:default_tracker_feature), :is_in_chlog => true, :is_in_roadmap => true, :position => 2) + Tracker.create(:name => l(:default_tracker_support), :is_in_chlog => false, :is_in_roadmap => false, :position => 3) # issue statuses - new = IssueStatus.create(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :html_color => 'F98787') - assigned = IssueStatus.create(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :html_color => 'C0C0FF') - resolved = IssueStatus.create(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :html_color => '88E0B3') - feedback = IssueStatus.create(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :html_color => 'F3A4F4') - closed = IssueStatus.create(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :html_color => 'DBDBDB') - rejected = IssueStatus.create(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :html_color => 'F5C28B') + new = IssueStatus.create(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :html_color => 'F98787', :position => 1) + assigned = IssueStatus.create(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :html_color => 'C0C0FF', :position => 2) + resolved = IssueStatus.create(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :html_color => '88E0B3', :position => 3) + feedback = IssueStatus.create(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :html_color => 'F3A4F4', :position => 4) + closed = IssueStatus.create(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :html_color => 'DBDBDB', :position => 5) + rejected = IssueStatus.create(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :html_color => 'F5C28B', :position => 6) # workflow Tracker.find(:all).each { |t|