@@ -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_ |
|
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