##// END OF EJS Templates
Refactor: move IssuesController#preview to a new controller....
Eric Davis -
r3832:1f8d396e3f12
parent child
Show More
@@ -0,0 +1,28
1 class PreviewsController < ApplicationController
2 before_filter :find_project
3
4 def issue
5 @issue = @project.issues.find_by_id(params[:id]) unless params[:id].blank?
6 if @issue
7 @attachements = @issue.attachments
8 @description = params[:issue] && params[:issue][:description]
9 if @description && @description.gsub(/(\r?\n|\n\r?)/, "\n") == @issue.description.to_s.gsub(/(\r?\n|\n\r?)/, "\n")
10 @description = nil
11 end
12 @notes = params[:notes]
13 else
14 @description = (params[:issue] ? params[:issue][:description] : nil)
15 end
16 render :layout => false
17 end
18
19 private
20
21 def find_project
22 project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id]
23 @project = Project.find(project_id)
24 rescue ActiveRecord::RecordNotFound
25 render_404
26 end
27
28 end
@@ -0,0 +1,22
1 require File.dirname(__FILE__) + '/../test_helper'
2
3 class PreviewsControllerTest < ActionController::TestCase
4 fixtures :all
5
6 def test_preview_new_issue
7 @request.session[:user_id] = 2
8 post :issue, :project_id => '1', :issue => {:description => 'Foo'}
9 assert_response :success
10 assert_template 'preview'
11 assert_not_nil assigns(:description)
12 end
13
14 def test_preview_issue_notes
15 @request.session[:user_id] = 2
16 post :issue, :project_id => '1', :id => 1, :issue => {:description => Issue.find(1).description}, :notes => 'Foo'
17 assert_response :success
18 assert_template 'preview'
19 assert_not_nil assigns(:notes)
20 end
21
22 end
@@ -301,21 +301,6 class IssuesController < ApplicationController
301 render :partial => 'attributes'
301 render :partial => 'attributes'
302 end
302 end
303
303
304 def preview
305 @issue = @project.issues.find_by_id(params[:id]) unless params[:id].blank?
306 if @issue
307 @attachements = @issue.attachments
308 @description = params[:issue] && params[:issue][:description]
309 if @description && @description.gsub(/(\r?\n|\n\r?)/, "\n") == @issue.description.to_s.gsub(/(\r?\n|\n\r?)/, "\n")
310 @description = nil
311 end
312 @notes = params[:notes]
313 else
314 @description = (params[:issue] ? params[:issue][:description] : nil)
315 end
316 render :layout => false
317 end
318
319 private
304 private
320 def find_issue
305 def find_issue
321 @issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category])
306 @issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category])
@@ -44,7 +44,7
44 <%= f.hidden_field :lock_version %>
44 <%= f.hidden_field :lock_version %>
45 <%= submit_tag l(:button_submit) %>
45 <%= submit_tag l(:button_submit) %>
46 <%= link_to_remote l(:label_preview),
46 <%= link_to_remote l(:label_preview),
47 { :url => { :controller => 'issues', :action => 'preview', :project_id => @project, :id => @issue },
47 { :url => preview_issue_path(:project_id => @project, :id => @issue),
48 :method => 'post',
48 :method => 'post',
49 :update => 'preview',
49 :update => 'preview',
50 :with => 'Form.serialize("issue-form")',
50 :with => 'Form.serialize("issue-form")',
@@ -9,7 +9,7
9 <%= submit_tag l(:button_create) %>
9 <%= submit_tag l(:button_create) %>
10 <%= submit_tag l(:button_create_and_continue), :name => 'continue' %>
10 <%= submit_tag l(:button_create_and_continue), :name => 'continue' %>
11 <%= link_to_remote l(:label_preview),
11 <%= link_to_remote l(:label_preview),
12 { :url => { :controller => 'issues', :action => 'preview', :project_id => @project },
12 { :url => preview_issue_path(:project_id => @project),
13 :method => 'post',
13 :method => 'post',
14 :update => 'preview',
14 :update => 'preview',
15 :with => "Form.serialize('issue-form')",
15 :with => "Form.serialize('issue-form')",
1 NO CONTENT: file renamed from app/views/issues/preview.html.erb to app/views/previews/issue.html.erb
NO CONTENT: file renamed from app/views/issues/preview.html.erb to app/views/previews/issue.html.erb
@@ -105,6 +105,8 ActionController::Routing::Routes.draw do |map|
105
105
106 map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move'
106 map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move'
107 map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues'
107 map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues'
108 # TODO: would look nicer as /issues/:id/preview
109 map.preview_issue '/issues/preview/:id', :controller => 'previews', :action => 'issue'
108
110
109 map.with_options :controller => 'issues' do |issues_routes|
111 map.with_options :controller => 'issues' do |issues_routes|
110 issues_routes.with_options :conditions => {:method => :get} do |issues_views|
112 issues_routes.with_options :conditions => {:method => :get} do |issues_views|
@@ -1107,22 +1107,6 class IssuesControllerTest < ActionController::TestCase
1107 :class => 'icon-del disabled' }
1107 :class => 'icon-del disabled' }
1108 end
1108 end
1109
1109
1110 def test_preview_new_issue
1111 @request.session[:user_id] = 2
1112 post :preview, :project_id => '1', :issue => {:description => 'Foo'}
1113 assert_response :success
1114 assert_template 'preview'
1115 assert_not_nil assigns(:description)
1116 end
1117
1118 def test_preview_notes
1119 @request.session[:user_id] = 2
1120 post :preview, :project_id => '1', :id => 1, :issue => {:description => Issue.find(1).description}, :notes => 'Foo'
1121 assert_response :success
1122 assert_template 'preview'
1123 assert_not_nil assigns(:notes)
1124 end
1125
1126 def test_destroy_issue_with_no_time_entries
1110 def test_destroy_issue_with_no_time_entries
1127 assert_nil TimeEntry.find_by_issue_id(2)
1111 assert_nil TimeEntry.find_by_issue_id(2)
1128 @request.session[:user_id] = 2
1112 @request.session[:user_id] = 2
@@ -101,6 +101,9 class RoutingTest < ActionController::IntegrationTest
101 should_route :post, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name'
101 should_route :post, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name'
102
102
103 should_route :get, "/issues/auto_complete", :controller => 'auto_completes', :action => 'issues'
103 should_route :get, "/issues/auto_complete", :controller => 'auto_completes', :action => 'issues'
104
105 should_route :get, "/issues/preview/123", :controller => 'previews', :action => 'issue', :id => '123'
106 should_route :post, "/issues/preview/123", :controller => 'previews', :action => 'issue', :id => '123'
104 end
107 end
105
108
106 context "issue categories" do
109 context "issue categories" do
General Comments 0
You need to be logged in to leave comments. Login now