##// END OF EJS Templates
Refactor: Change the different find_object filters to share a common method....
Eric Davis -
r3483:194dab8e96f6
parent child
Show More
@@ -176,6 +176,20 class ApplicationController < ActionController::Base
176 render_404
176 render_404
177 end
177 end
178
178
179 def find_model_object
180 model = self.class.read_inheritable_attribute('model_object')
181 if model
182 @object = model.find(params[:id])
183 self.instance_variable_set('@' + controller_name.singularize, @object) if @object
184 end
185 rescue ActiveRecord::RecordNotFound
186 render_404
187 end
188
189 def self.model_object(model)
190 write_inheritable_attribute('model_object', model)
191 end
192
179 # make sure that the user is a member of the project (or admin) if project is private
193 # make sure that the user is a member of the project (or admin) if project is private
180 # used as a before_filter for actions that do not require any particular permission on the project
194 # used as a before_filter for actions that do not require any particular permission on the project
181 def check_project_privacy
195 def check_project_privacy
@@ -17,8 +17,9
17
17
18 class DocumentsController < ApplicationController
18 class DocumentsController < ApplicationController
19 default_search_scope :documents
19 default_search_scope :documents
20 model_object Document
20 before_filter :find_project, :only => [:index, :new]
21 before_filter :find_project, :only => [:index, :new]
21 before_filter :find_document, :except => [:index, :new]
22 before_filter :find_model_object, :except => [:index, :new]
22 before_filter :find_project_from_association, :except => [:index, :new]
23 before_filter :find_project_from_association, :except => [:index, :new]
23 before_filter :authorize
24 before_filter :authorize
24
25
@@ -82,10 +83,4 private
82 rescue ActiveRecord::RecordNotFound
83 rescue ActiveRecord::RecordNotFound
83 render_404
84 render_404
84 end
85 end
85
86 def find_document
87 @document = @object = Document.find(params[:id])
88 rescue ActiveRecord::RecordNotFound
89 render_404
90 end
91 end
86 end
@@ -17,7 +17,8
17
17
18 class IssueCategoriesController < ApplicationController
18 class IssueCategoriesController < ApplicationController
19 menu_item :settings
19 menu_item :settings
20 before_filter :find_category, :except => :new
20 model_object IssueCategory
21 before_filter :find_model_object, :except => :new
21 before_filter :find_project_from_association, :except => :new
22 before_filter :find_project_from_association, :except => :new
22 before_filter :find_project, :only => :new
23 before_filter :find_project, :only => :new
23 before_filter :authorize
24 before_filter :authorize
@@ -73,10 +74,11 class IssueCategoriesController < ApplicationController
73 end
74 end
74
75
75 private
76 private
76 def find_category
77 # Wrap ApplicationController's find_model_object method to set
77 @category = @object = IssueCategory.find(params[:id])
78 # @category instead of just @issue_category
78 rescue ActiveRecord::RecordNotFound
79 def find_model_object
79 render_404
80 super
81 @category = @object
80 end
82 end
81
83
82 def find_project
84 def find_project
@@ -16,7 +16,8
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 class MembersController < ApplicationController
18 class MembersController < ApplicationController
19 before_filter :find_member, :except => [:new, :autocomplete_for_member]
19 model_object Member
20 before_filter :find_model_object, :except => [:new, :autocomplete_for_member]
20 before_filter :find_project_from_association, :except => [:new, :autocomplete_for_member]
21 before_filter :find_project_from_association, :except => [:new, :autocomplete_for_member]
21 before_filter :find_project, :only => [:new, :autocomplete_for_member]
22 before_filter :find_project, :only => [:new, :autocomplete_for_member]
22 before_filter :authorize
23 before_filter :authorize
@@ -74,10 +75,4 class MembersController < ApplicationController
74 render :layout => false
75 render :layout => false
75 end
76 end
76
77
77 private
78 def find_member
79 @member = @object = Member.find(params[:id])
80 rescue ActiveRecord::RecordNotFound
81 render_404
82 end
83 end
78 end
@@ -17,7 +17,8
17
17
18 class NewsController < ApplicationController
18 class NewsController < ApplicationController
19 default_search_scope :news
19 default_search_scope :news
20 before_filter :find_news, :except => [:new, :index, :preview]
20 model_object News
21 before_filter :find_model_object, :except => [:new, :index, :preview]
21 before_filter :find_project_from_association, :except => [:new, :index, :preview]
22 before_filter :find_project_from_association, :except => [:new, :index, :preview]
22 before_filter :find_project, :only => [:new, :preview]
23 before_filter :find_project, :only => [:new, :preview]
23 before_filter :authorize, :except => [:index, :preview]
24 before_filter :authorize, :except => [:index, :preview]
@@ -89,12 +90,6 class NewsController < ApplicationController
89 end
90 end
90
91
91 private
92 private
92 def find_news
93 @news = @object = News.find(params[:id])
94 rescue ActiveRecord::RecordNotFound
95 render_404
96 end
97
98 def find_project
93 def find_project
99 @project = Project.find(params[:project_id])
94 @project = Project.find(params[:project_id])
100 rescue ActiveRecord::RecordNotFound
95 rescue ActiveRecord::RecordNotFound
@@ -17,7 +17,8
17
17
18 class VersionsController < ApplicationController
18 class VersionsController < ApplicationController
19 menu_item :roadmap
19 menu_item :roadmap
20 before_filter :find_version, :except => [:new, :close_completed]
20 model_object Version
21 before_filter :find_model_object, :except => [:new, :close_completed]
21 before_filter :find_project_from_association, :except => [:new, :close_completed]
22 before_filter :find_project_from_association, :except => [:new, :close_completed]
22 before_filter :find_project, :only => [:new, :close_completed]
23 before_filter :find_project, :only => [:new, :close_completed]
23 before_filter :authorize
24 before_filter :authorize
@@ -94,12 +95,6 class VersionsController < ApplicationController
94 end
95 end
95
96
96 private
97 private
97 def find_version
98 @version = @object = Version.find(params[:id])
99 rescue ActiveRecord::RecordNotFound
100 render_404
101 end
102
103 def find_project
98 def find_project
104 @project = Project.find(params[:project_id])
99 @project = Project.find(params[:project_id])
105 rescue ActiveRecord::RecordNotFound
100 rescue ActiveRecord::RecordNotFound
General Comments 0
You need to be logged in to leave comments. Login now