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