Refactor: move IssuesController#preview to a new controller.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3946 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
3eff27344b
commit
1f8d396e3f
|
@ -301,21 +301,6 @@ class IssuesController < ApplicationController
|
||||||
render :partial => 'attributes'
|
render :partial => 'attributes'
|
||||||
end
|
end
|
||||||
|
|
||||||
def preview
|
|
||||||
@issue = @project.issues.find_by_id(params[:id]) unless params[:id].blank?
|
|
||||||
if @issue
|
|
||||||
@attachements = @issue.attachments
|
|
||||||
@description = params[:issue] && params[:issue][:description]
|
|
||||||
if @description && @description.gsub(/(\r?\n|\n\r?)/, "\n") == @issue.description.to_s.gsub(/(\r?\n|\n\r?)/, "\n")
|
|
||||||
@description = nil
|
|
||||||
end
|
|
||||||
@notes = params[:notes]
|
|
||||||
else
|
|
||||||
@description = (params[:issue] ? params[:issue][:description] : nil)
|
|
||||||
end
|
|
||||||
render :layout => false
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
def find_issue
|
def find_issue
|
||||||
@issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category])
|
@issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category])
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
class PreviewsController < ApplicationController
|
||||||
|
before_filter :find_project
|
||||||
|
|
||||||
|
def issue
|
||||||
|
@issue = @project.issues.find_by_id(params[:id]) unless params[:id].blank?
|
||||||
|
if @issue
|
||||||
|
@attachements = @issue.attachments
|
||||||
|
@description = params[:issue] && params[:issue][:description]
|
||||||
|
if @description && @description.gsub(/(\r?\n|\n\r?)/, "\n") == @issue.description.to_s.gsub(/(\r?\n|\n\r?)/, "\n")
|
||||||
|
@description = nil
|
||||||
|
end
|
||||||
|
@notes = params[:notes]
|
||||||
|
else
|
||||||
|
@description = (params[:issue] ? params[:issue][:description] : nil)
|
||||||
|
end
|
||||||
|
render :layout => false
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def find_project
|
||||||
|
project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id]
|
||||||
|
@project = Project.find(project_id)
|
||||||
|
rescue ActiveRecord::RecordNotFound
|
||||||
|
render_404
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -44,7 +44,7 @@
|
||||||
<%= f.hidden_field :lock_version %>
|
<%= f.hidden_field :lock_version %>
|
||||||
<%= submit_tag l(:button_submit) %>
|
<%= submit_tag l(:button_submit) %>
|
||||||
<%= link_to_remote l(:label_preview),
|
<%= link_to_remote l(:label_preview),
|
||||||
{ :url => { :controller => 'issues', :action => 'preview', :project_id => @project, :id => @issue },
|
{ :url => preview_issue_path(:project_id => @project, :id => @issue),
|
||||||
:method => 'post',
|
:method => 'post',
|
||||||
:update => 'preview',
|
:update => 'preview',
|
||||||
:with => 'Form.serialize("issue-form")',
|
:with => 'Form.serialize("issue-form")',
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<%= submit_tag l(:button_create) %>
|
<%= submit_tag l(:button_create) %>
|
||||||
<%= submit_tag l(:button_create_and_continue), :name => 'continue' %>
|
<%= submit_tag l(:button_create_and_continue), :name => 'continue' %>
|
||||||
<%= link_to_remote l(:label_preview),
|
<%= link_to_remote l(:label_preview),
|
||||||
{ :url => { :controller => 'issues', :action => 'preview', :project_id => @project },
|
{ :url => preview_issue_path(:project_id => @project),
|
||||||
:method => 'post',
|
:method => 'post',
|
||||||
:update => 'preview',
|
:update => 'preview',
|
||||||
:with => "Form.serialize('issue-form')",
|
:with => "Form.serialize('issue-form')",
|
||||||
|
|
|
@ -105,6 +105,8 @@ ActionController::Routing::Routes.draw do |map|
|
||||||
|
|
||||||
map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move'
|
map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move'
|
||||||
map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues'
|
map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues'
|
||||||
|
# TODO: would look nicer as /issues/:id/preview
|
||||||
|
map.preview_issue '/issues/preview/:id', :controller => 'previews', :action => 'issue'
|
||||||
|
|
||||||
map.with_options :controller => 'issues' do |issues_routes|
|
map.with_options :controller => 'issues' do |issues_routes|
|
||||||
issues_routes.with_options :conditions => {:method => :get} do |issues_views|
|
issues_routes.with_options :conditions => {:method => :get} do |issues_views|
|
||||||
|
|
|
@ -1107,22 +1107,6 @@ class IssuesControllerTest < ActionController::TestCase
|
||||||
:class => 'icon-del disabled' }
|
:class => 'icon-del disabled' }
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_preview_new_issue
|
|
||||||
@request.session[:user_id] = 2
|
|
||||||
post :preview, :project_id => '1', :issue => {:description => 'Foo'}
|
|
||||||
assert_response :success
|
|
||||||
assert_template 'preview'
|
|
||||||
assert_not_nil assigns(:description)
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_preview_notes
|
|
||||||
@request.session[:user_id] = 2
|
|
||||||
post :preview, :project_id => '1', :id => 1, :issue => {:description => Issue.find(1).description}, :notes => 'Foo'
|
|
||||||
assert_response :success
|
|
||||||
assert_template 'preview'
|
|
||||||
assert_not_nil assigns(:notes)
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_destroy_issue_with_no_time_entries
|
def test_destroy_issue_with_no_time_entries
|
||||||
assert_nil TimeEntry.find_by_issue_id(2)
|
assert_nil TimeEntry.find_by_issue_id(2)
|
||||||
@request.session[:user_id] = 2
|
@request.session[:user_id] = 2
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
|
|
||||||
|
class PreviewsControllerTest < ActionController::TestCase
|
||||||
|
fixtures :all
|
||||||
|
|
||||||
|
def test_preview_new_issue
|
||||||
|
@request.session[:user_id] = 2
|
||||||
|
post :issue, :project_id => '1', :issue => {:description => 'Foo'}
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'preview'
|
||||||
|
assert_not_nil assigns(:description)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_preview_issue_notes
|
||||||
|
@request.session[:user_id] = 2
|
||||||
|
post :issue, :project_id => '1', :id => 1, :issue => {:description => Issue.find(1).description}, :notes => 'Foo'
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'preview'
|
||||||
|
assert_not_nil assigns(:notes)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -101,6 +101,9 @@ class RoutingTest < ActionController::IntegrationTest
|
||||||
should_route :post, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name'
|
should_route :post, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name'
|
||||||
|
|
||||||
should_route :get, "/issues/auto_complete", :controller => 'auto_completes', :action => 'issues'
|
should_route :get, "/issues/auto_complete", :controller => 'auto_completes', :action => 'issues'
|
||||||
|
|
||||||
|
should_route :get, "/issues/preview/123", :controller => 'previews', :action => 'issue', :id => '123'
|
||||||
|
should_route :post, "/issues/preview/123", :controller => 'previews', :action => 'issue', :id => '123'
|
||||||
end
|
end
|
||||||
|
|
||||||
context "issue categories" do
|
context "issue categories" do
|
||||||
|
|
Loading…
Reference in New Issue