OSDN Git Service

Splitted #find_issues filter in ApplicationController to #find_issues and #check_proj...
authorJean-Baptiste Barth <jeanbaptiste.barth@gmail.com>
Wed, 29 Sep 2010 05:22:53 +0000 (05:22 +0000)
committerJean-Baptiste Barth <jeanbaptiste.barth@gmail.com>
Wed, 29 Sep 2010 05:22:53 +0000 (05:22 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4228 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/application_controller.rb
app/controllers/issue_moves_controller.rb
app/controllers/issues_controller.rb

index 32bb528..fd6fc52 100644 (file)
@@ -213,16 +213,19 @@ class ApplicationController < ActionController::Base
   def find_issues
     @issues = Issue.find_all_by_id(params[:id] || params[:ids])
     raise ActiveRecord::RecordNotFound if @issues.empty?
-    projects = @issues.collect(&:project).compact.uniq
-    if projects.size == 1
-      @project = projects.first
-    else
+    @projects = @issues.collect(&:project).compact.uniq
+    @project = @projects.first if @projects.size == 1
+  rescue ActiveRecord::RecordNotFound
+    render_404
+  end
+  
+  # Check if project is unique before bulk operations
+  def check_project_uniqueness
+    unless @project
       # TODO: let users bulk edit/move/destroy issues from different projects
       render_error 'Can not bulk edit/move/destroy issues from different projects'
       return false
     end
-  rescue ActiveRecord::RecordNotFound
-    render_404
   end
   
   # make sure that the user is a member of the project (or admin) if project is private
index 6ac46a1..20da387 100644 (file)
@@ -1,6 +1,6 @@
 class IssueMovesController < ApplicationController
   default_search_scope :issues
-  before_filter :find_issues
+  before_filter :find_issues, :check_project_uniqueness
   before_filter :authorize
   
   def new
index a48a9e8..d137877 100644 (file)
@@ -21,6 +21,7 @@ class IssuesController < ApplicationController
   
   before_filter :find_issue, :only => [:show, :edit, :update]
   before_filter :find_issues, :only => [:bulk_edit, :bulk_update, :move, :perform_move, :destroy]
+  before_filter :check_project_uniqueness, :only => [:bulk_edit, :bulk_update, :move, :perform_move, :destroy]
   before_filter :find_project, :only => [:new, :create]
   before_filter :authorize, :except => [:index]
   before_filter :find_optional_project, :only => [:index]