##// END OF EJS Templates
Refactor: Extract duplicated code to a new method....
Eric Davis -
r3575:23f097e344c3
parent child
Show More
@@ -24,6 +24,7 class IssuesController < ApplicationController
24 before_filter :find_project, :only => [:new, :create, :update_form, :preview, :auto_complete]
24 before_filter :find_project, :only => [:new, :create, :update_form, :preview, :auto_complete]
25 before_filter :authorize, :except => [:index, :changes, :gantt, :calendar, :preview, :context_menu]
25 before_filter :authorize, :except => [:index, :changes, :gantt, :calendar, :preview, :context_menu]
26 before_filter :find_optional_project, :only => [:index, :changes, :gantt, :calendar]
26 before_filter :find_optional_project, :only => [:index, :changes, :gantt, :calendar]
27 before_filter :build_new_issue_from_params, :only => [:new, :create]
27 accept_key_auth :index, :show, :changes
28 accept_key_auth :index, :show, :changes
28
29
29 rescue_from Query::StatementInvalid, :with => :query_statement_invalid
30 rescue_from Query::StatementInvalid, :with => :query_statement_invalid
@@ -128,53 +129,10 class IssuesController < ApplicationController
128 # Add a new issue
129 # Add a new issue
129 # The new issue will be created from an existing one if copy_from parameter is given
130 # The new issue will be created from an existing one if copy_from parameter is given
130 def new
131 def new
131 @issue = Issue.new
132 @issue.copy_from(params[:copy_from]) if params[:copy_from]
133 @issue.project = @project
134 # Tracker must be set before custom field values
135 @issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first)
136 if @issue.tracker.nil?
137 render_error l(:error_no_tracker_in_project)
138 return
139 end
140 if @issue.status.nil?
141 render_error l(:error_no_default_issue_status)
142 return
143 end
144 if params[:issue].is_a?(Hash)
145 @issue.safe_attributes = params[:issue]
146 @issue.watcher_user_ids = params[:issue]['watcher_user_ids'] if User.current.allowed_to?(:add_issue_watchers, @project)
147 end
148 @issue.author = User.current
149 @issue.start_date ||= Date.today
150 @priorities = IssuePriority.all
151 @allowed_statuses = @issue.new_statuses_allowed_to(User.current, true)
152 render :action => 'new', :layout => !request.xhr?
132 render :action => 'new', :layout => !request.xhr?
153 end
133 end
154
134
155 def create
135 def create
156 @issue = Issue.new
157 @issue.copy_from(params[:copy_from]) if params[:copy_from]
158 @issue.project = @project
159 # Tracker must be set before custom field values
160 @issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first)
161 if @issue.tracker.nil?
162 render_error l(:error_no_tracker_in_project)
163 return
164 end
165 if @issue.status.nil?
166 render_error l(:error_no_default_issue_status)
167 return
168 end
169 if params[:issue].is_a?(Hash)
170 @issue.safe_attributes = params[:issue]
171 @issue.watcher_user_ids = params[:issue]['watcher_user_ids'] if User.current.allowed_to?(:add_issue_watchers, @project)
172 end
173 @issue.author = User.current
174
175 @priorities = IssuePriority.all
176 @allowed_statuses = @issue.new_statuses_allowed_to(User.current, true)
177
178 call_hook(:controller_issues_new_before_save, { :params => params, :issue => @issue })
136 call_hook(:controller_issues_new_before_save, { :params => params, :issue => @issue })
179 if @issue.save
137 if @issue.save
180 attachments = Attachment.attach_files(@issue, params[:attachments])
138 attachments = Attachment.attach_files(@issue, params[:attachments])
@@ -588,6 +546,31 private
588
546
589 end
547 end
590
548
549 # TODO: Refactor, lots of extra code in here
550 def build_new_issue_from_params
551 @issue = Issue.new
552 @issue.copy_from(params[:copy_from]) if params[:copy_from]
553 @issue.project = @project
554 # Tracker must be set before custom field values
555 @issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first)
556 if @issue.tracker.nil?
557 render_error l(:error_no_tracker_in_project)
558 return false
559 end
560 if @issue.status.nil?
561 render_error l(:error_no_default_issue_status)
562 return false
563 end
564 if params[:issue].is_a?(Hash)
565 @issue.safe_attributes = params[:issue]
566 @issue.watcher_user_ids = params[:issue]['watcher_user_ids'] if User.current.allowed_to?(:add_issue_watchers, @project)
567 end
568 @issue.author = User.current
569 @issue.start_date ||= Date.today
570 @priorities = IssuePriority.all
571 @allowed_statuses = @issue.new_statuses_allowed_to(User.current, true)
572 end
573
591 def set_flash_from_bulk_issue_save(issues, unsaved_issue_ids)
574 def set_flash_from_bulk_issue_save(issues, unsaved_issue_ids)
592 if unsaved_issue_ids.empty?
575 if unsaved_issue_ids.empty?
593 flash[:notice] = l(:notice_successful_update) unless issues.empty?
576 flash[:notice] = l(:notice_successful_update) unless issues.empty?
General Comments 0
You need to be logged in to leave comments. Login now