summaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
authorEric Davis <edavis@littlestreamsoftware.com>2010-03-17 15:41:58 +0000
committerEric Davis <edavis@littlestreamsoftware.com>2010-03-17 15:41:58 +0000
commit194dab8e96f632c457e49cce60611c30af68ef5b (patch)
tree9523207317165bd372b81d0120c6fd43b59f3ea6 /app/controllers
parent0f999ef0e09ea5672c79294c7119f3766285f8c1 (diff)
downloadredmine-194dab8e96f632c457e49cce60611c30af68ef5b.tar.gz
redmine-194dab8e96f632c457e49cce60611c30af68ef5b.zip
Refactor: Change the different find_object filters to share a common method.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3597 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/application_controller.rb14
-rw-r--r--app/controllers/documents_controller.rb9
-rw-r--r--app/controllers/issue_categories_controller.rb12
-rw-r--r--app/controllers/members_controller.rb9
-rw-r--r--app/controllers/news_controller.rb9
-rw-r--r--app/controllers/versions_controller.rb9
6 files changed, 29 insertions, 33 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index da90e7564..f788c179d 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -176,6 +176,20 @@ class ApplicationController < ActionController::Base
render_404
end
+ def find_model_object
+ model = self.class.read_inheritable_attribute('model_object')
+ if model
+ @object = model.find(params[:id])
+ self.instance_variable_set('@' + controller_name.singularize, @object) if @object
+ end
+ rescue ActiveRecord::RecordNotFound
+ render_404
+ end
+
+ def self.model_object(model)
+ write_inheritable_attribute('model_object', model)
+ end
+
# make sure that the user is a member of the project (or admin) if project is private
# used as a before_filter for actions that do not require any particular permission on the project
def check_project_privacy
diff --git a/app/controllers/documents_controller.rb b/app/controllers/documents_controller.rb
index 6f2432386..118a7d99e 100644
--- a/app/controllers/documents_controller.rb
+++ b/app/controllers/documents_controller.rb
@@ -17,8 +17,9 @@
class DocumentsController < ApplicationController
default_search_scope :documents
+ model_object Document
before_filter :find_project, :only => [:index, :new]
- before_filter :find_document, :except => [:index, :new]
+ before_filter :find_model_object, :except => [:index, :new]
before_filter :find_project_from_association, :except => [:index, :new]
before_filter :authorize
@@ -82,10 +83,4 @@ private
rescue ActiveRecord::RecordNotFound
render_404
end
-
- def find_document
- @document = @object = Document.find(params[:id])
- rescue ActiveRecord::RecordNotFound
- render_404
- end
end
diff --git a/app/controllers/issue_categories_controller.rb b/app/controllers/issue_categories_controller.rb
index 2904c2399..a43a767bb 100644
--- a/app/controllers/issue_categories_controller.rb
+++ b/app/controllers/issue_categories_controller.rb
@@ -17,7 +17,8 @@
class IssueCategoriesController < ApplicationController
menu_item :settings
- before_filter :find_category, :except => :new
+ model_object IssueCategory
+ before_filter :find_model_object, :except => :new
before_filter :find_project_from_association, :except => :new
before_filter :find_project, :only => :new
before_filter :authorize
@@ -73,10 +74,11 @@ class IssueCategoriesController < ApplicationController
end
private
- def find_category
- @category = @object = IssueCategory.find(params[:id])
- rescue ActiveRecord::RecordNotFound
- render_404
+ # Wrap ApplicationController's find_model_object method to set
+ # @category instead of just @issue_category
+ def find_model_object
+ super
+ @category = @object
end
def find_project
diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb
index 14c65d747..6de7f82d0 100644
--- a/app/controllers/members_controller.rb
+++ b/app/controllers/members_controller.rb
@@ -16,7 +16,8 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class MembersController < ApplicationController
- before_filter :find_member, :except => [:new, :autocomplete_for_member]
+ model_object Member
+ before_filter :find_model_object, :except => [:new, :autocomplete_for_member]
before_filter :find_project_from_association, :except => [:new, :autocomplete_for_member]
before_filter :find_project, :only => [:new, :autocomplete_for_member]
before_filter :authorize
@@ -74,10 +75,4 @@ class MembersController < ApplicationController
render :layout => false
end
-private
- def find_member
- @member = @object = Member.find(params[:id])
- rescue ActiveRecord::RecordNotFound
- render_404
- end
end
diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb
index 5ce216fb7..4d44158a4 100644
--- a/app/controllers/news_controller.rb
+++ b/app/controllers/news_controller.rb
@@ -17,7 +17,8 @@
class NewsController < ApplicationController
default_search_scope :news
- before_filter :find_news, :except => [:new, :index, :preview]
+ model_object News
+ before_filter :find_model_object, :except => [:new, :index, :preview]
before_filter :find_project_from_association, :except => [:new, :index, :preview]
before_filter :find_project, :only => [:new, :preview]
before_filter :authorize, :except => [:index, :preview]
@@ -89,12 +90,6 @@ class NewsController < ApplicationController
end
private
- def find_news
- @news = @object = News.find(params[:id])
- rescue ActiveRecord::RecordNotFound
- render_404
- end
-
def find_project
@project = Project.find(params[:project_id])
rescue ActiveRecord::RecordNotFound
diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb
index 6625ff634..dc1b7eb2b 100644
--- a/app/controllers/versions_controller.rb
+++ b/app/controllers/versions_controller.rb
@@ -17,7 +17,8 @@
class VersionsController < ApplicationController
menu_item :roadmap
- before_filter :find_version, :except => [:new, :close_completed]
+ model_object Version
+ before_filter :find_model_object, :except => [:new, :close_completed]
before_filter :find_project_from_association, :except => [:new, :close_completed]
before_filter :find_project, :only => [:new, :close_completed]
before_filter :authorize
@@ -94,12 +95,6 @@ class VersionsController < ApplicationController
end
private
- def find_version
- @version = @object = Version.find(params[:id])
- rescue ActiveRecord::RecordNotFound
- render_404
- end
-
def find_project
@project = Project.find(params[:project_id])
rescue ActiveRecord::RecordNotFound