]> source.dussan.org Git - redmine.git/commitdiff
Refactor: move IssuesController#preview to a new controller.
authorEric Davis <edavis@littlestreamsoftware.com>
Wed, 18 Aug 2010 15:01:35 +0000 (15:01 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Wed, 18 Aug 2010 15:01:35 +0000 (15:01 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3946 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/issues_controller.rb
app/controllers/previews_controller.rb [new file with mode: 0644]
app/views/issues/_edit.rhtml
app/views/issues/new.rhtml
app/views/issues/preview.html.erb [deleted file]
app/views/previews/issue.html.erb [new file with mode: 0644]
config/routes.rb
test/functional/issues_controller_test.rb
test/functional/previews_controller_test.rb [new file with mode: 0644]
test/integration/routing_test.rb

index 4981f43ee407f7db845c02099fb3b73d56767d71..239c23e71afb292bc060bd154060ed83b8e131cc 100644 (file)
@@ -301,21 +301,6 @@ class IssuesController < ApplicationController
     render :partial => 'attributes'
   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
   def find_issue
     @issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category])
diff --git a/app/controllers/previews_controller.rb b/app/controllers/previews_controller.rb
new file mode 100644 (file)
index 0000000..e1c6446
--- /dev/null
@@ -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
index 0c01f80beb04664bb3517c532745a53e6fe75057..ec36b14592384cf852c509e5e17385ecd021f265 100644 (file)
@@ -44,7 +44,7 @@
     <%= f.hidden_field :lock_version %>
     <%= submit_tag l(:button_submit) %>
     <%= 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',
                          :update => 'preview',
                          :with => 'Form.serialize("issue-form")',
index 839286bdbb17d946f9c8099a13f117ef660199a6..310085d7cc41c8922bcf3e04fcb9594132fc2ed4 100644 (file)
@@ -9,7 +9,7 @@
     <%= submit_tag l(:button_create) %>
     <%= submit_tag l(:button_create_and_continue), :name => 'continue' %>
     <%= link_to_remote l(:label_preview), 
-                       { :url => { :controller => 'issues', :action => 'preview', :project_id => @project },
+                       { :url => preview_issue_path(:project_id => @project),
                          :method => 'post',
                          :update => 'preview',
                          :with => "Form.serialize('issue-form')",
diff --git a/app/views/issues/preview.html.erb b/app/views/issues/preview.html.erb
deleted file mode 100644 (file)
index 2377285..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<% if @notes %>
-       <fieldset class="preview"><legend><%= l(:field_notes) %></legend>
-               <%= textilizable @notes, :attachments => @attachements, :object => @issue %>
-       </fieldset>
-<% end %>
-
-<% if @description %>
-       <fieldset class="preview"><legend><%= l(:field_description) %></legend>
-               <%= textilizable @description, :attachments => @attachements, :object => @issue %>
-       </fieldset>
-<% end %>
diff --git a/app/views/previews/issue.html.erb b/app/views/previews/issue.html.erb
new file mode 100644 (file)
index 0000000..2377285
--- /dev/null
@@ -0,0 +1,11 @@
+<% if @notes %>
+       <fieldset class="preview"><legend><%= l(:field_notes) %></legend>
+               <%= textilizable @notes, :attachments => @attachements, :object => @issue %>
+       </fieldset>
+<% end %>
+
+<% if @description %>
+       <fieldset class="preview"><legend><%= l(:field_description) %></legend>
+               <%= textilizable @description, :attachments => @attachements, :object => @issue %>
+       </fieldset>
+<% end %>
index 910087ab9e381ebdb94a0972e4d68fe6dbdc9959..956ce054b9190bcbefd63d8ee38c875ed7e729ca 100644 (file)
@@ -105,6 +105,8 @@ ActionController::Routing::Routes.draw do |map|
 
   map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move'
   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|
     issues_routes.with_options :conditions => {:method => :get} do |issues_views|
index 948cf85984ec65b81c1d476478ff3e501d6ace1a..22f528b7b72193286e4508772d3ab7a083c6dcfe 100644 (file)
@@ -1107,22 +1107,6 @@ class IssuesControllerTest < ActionController::TestCase
                                              :class => 'icon-del disabled' }
   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
     assert_nil TimeEntry.find_by_issue_id(2)
     @request.session[:user_id] = 2
diff --git a/test/functional/previews_controller_test.rb b/test/functional/previews_controller_test.rb
new file mode 100644 (file)
index 0000000..63456d1
--- /dev/null
@@ -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
index 607df5b066a0aa65dc5320d0dea8e8669d33f3a5..01a96b7aa445d58e2ad9cda2c17355ece8d5529d 100644 (file)
@@ -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 :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
 
   context "issue categories" do