From efabbedebe80be51b5a05bed53de3eee7ce2e68b Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Tue, 30 Aug 2016 21:05:22 +0000 Subject: [PATCH] Enable filtering versions on Project -> Settings -> Versions (#22608). git-svn-id: http://svn.redmine.org/redmine/trunk@15759 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/projects_controller.rb | 4 +++ app/helpers/projects_helper.rb | 3 +- app/models/version.rb | 11 +++++++ app/views/common/_tabs.html.erb | 2 +- .../projects/settings/_versions.html.erb | 17 +++++++++-- test/functional/projects_controller_test.rb | 30 +++++++++++++++++++ 6 files changed, 62 insertions(+), 5 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 52243884f..ba7483c38 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -155,6 +155,10 @@ class ProjectsController < ApplicationController @issue_category ||= IssueCategory.new @member ||= @project.members.new @trackers = Tracker.sorted.to_a + + @version_status = params[:version_status] || 'open' + @version_name = params[:version_name] + @versions = @project.shared_versions.status(@version_status).like(@version_name) @wiki ||= @project.wiki || Wiki.new(:project => @project) end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 6a47b1ebc..a56fe73a3 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -22,7 +22,8 @@ module ProjectsHelper tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural}, {:name => 'modules', :action => :select_project_modules, :partial => 'projects/settings/modules', :label => :label_module_plural}, {:name => 'members', :action => :manage_members, :partial => 'projects/settings/members', :label => :label_member_plural}, - {:name => 'versions', :action => :manage_versions, :partial => 'projects/settings/versions', :label => :label_version_plural}, + {:name => 'versions', :action => :manage_versions, :partial => 'projects/settings/versions', :label => :label_version_plural, + :url => {:tab => 'versions', :version_status => params[:version_status], :version_name => params[:version_name]}}, {:name => 'categories', :action => :manage_categories, :partial => 'projects/settings/issue_categories', :label => :label_issue_category_plural}, {:name => 'wiki', :action => :manage_wiki, :partial => 'projects/settings/wiki', :label => :label_wiki}, {:name => 'repositories', :action => :manage_repository, :partial => 'projects/settings/repositories', :label => :label_repository_plural}, diff --git a/app/models/version.rb b/app/models/version.rb index dc02f27a3..98d1c6ac0 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -41,7 +41,18 @@ class Version < ActiveRecord::Base attr_protected :id scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)} + scope :like, lambda {|arg| + if arg.present? + pattern = "%#{arg.to_s.strip}%" + where("LOWER(#{Version.table_name}.name) LIKE :p", :p => pattern) + end + } scope :open, lambda { where(:status => 'open') } + scope :status, lambda {|status| + if status.present? + where(:status => status.to_s) + end + } scope :visible, lambda {|*args| joins(:project). where(Project.allowed_to_condition(args.first || User.current, :view_issues)) diff --git a/app/views/common/_tabs.html.erb b/app/views/common/_tabs.html.erb index 705ecc710..26a1c0875 100644 --- a/app/views/common/_tabs.html.erb +++ b/app/views/common/_tabs.html.erb @@ -1,7 +1,7 @@