##// 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 176 render_404
177 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 193 # make sure that the user is a member of the project (or admin) if project is private
180 194 # used as a before_filter for actions that do not require any particular permission on the project
181 195 def check_project_privacy
@@ -17,8 +17,9
17 17
18 18 class DocumentsController < ApplicationController
19 19 default_search_scope :documents
20 model_object Document
20 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 23 before_filter :find_project_from_association, :except => [:index, :new]
23 24 before_filter :authorize
24 25
@@ -82,10 +83,4 private
82 83 rescue ActiveRecord::RecordNotFound
83 84 render_404
84 85 end
85
86 def find_document
87 @document = @object = Document.find(params[:id])
88 rescue ActiveRecord::RecordNotFound
89 render_404
90 end
91 86 end
@@ -17,7 +17,8
17 17
18 18 class IssueCategoriesController < ApplicationController
19 19 menu_item :settings
20 before_filter :find_category, :except => :new
20 model_object IssueCategory
21 before_filter :find_model_object, :except => :new
21 22 before_filter :find_project_from_association, :except => :new
22 23 before_filter :find_project, :only => :new
23 24 before_filter :authorize
@@ -73,10 +74,11 class IssueCategoriesController < ApplicationController
73 74 end
74 75
75 76 private
76 def find_category
77 @category = @object = IssueCategory.find(params[:id])
78 rescue ActiveRecord::RecordNotFound
79 render_404
77 # Wrap ApplicationController's find_model_object method to set
78 # @category instead of just @issue_category
79 def find_model_object
80 super
81 @category = @object
80 82 end
81 83
82 84 def find_project
@@ -16,7 +16,8
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 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 21 before_filter :find_project_from_association, :except => [:new, :autocomplete_for_member]
21 22 before_filter :find_project, :only => [:new, :autocomplete_for_member]
22 23 before_filter :authorize
@@ -74,10 +75,4 class MembersController < ApplicationController
74 75 render :layout => false
75 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 78 end
@@ -17,7 +17,8
17 17
18 18 class NewsController < ApplicationController
19 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 22 before_filter :find_project_from_association, :except => [:new, :index, :preview]
22 23 before_filter :find_project, :only => [:new, :preview]
23 24 before_filter :authorize, :except => [:index, :preview]
@@ -89,12 +90,6 class NewsController < ApplicationController
89 90 end
90 91
91 92 private
92 def find_news
93 @news = @object = News.find(params[:id])
94 rescue ActiveRecord::RecordNotFound
95 render_404
96 end
97
98 93 def find_project
99 94 @project = Project.find(params[:project_id])
100 95 rescue ActiveRecord::RecordNotFound
@@ -17,7 +17,8
17 17
18 18 class VersionsController < ApplicationController
19 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 22 before_filter :find_project_from_association, :except => [:new, :close_completed]
22 23 before_filter :find_project, :only => [:new, :close_completed]
23 24 before_filter :authorize
@@ -94,12 +95,6 class VersionsController < ApplicationController
94 95 end
95 96
96 97 private
97 def find_version
98 @version = @object = Version.find(params[:id])
99 rescue ActiveRecord::RecordNotFound
100 render_404
101 end
102
103 98 def find_project
104 99 @project = Project.find(params[:project_id])
105 100 rescue ActiveRecord::RecordNotFound
General Comments 0
You need to be logged in to leave comments. Login now