]> source.dussan.org Git - redmine.git/commitdiff
Refactor: split FilesController#new into #new and #create.
authorEric Davis <edavis@littlestreamsoftware.com>
Mon, 13 Sep 2010 20:35:03 +0000 (20:35 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Mon, 13 Sep 2010 20:35:03 +0000 (20:35 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4084 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/files_controller.rb
app/views/files/new.html.erb
config/routes.rb
lib/redmine.rb
test/functional/files_controller_test.rb
test/integration/routing_test.rb

index fe5eb48c8b4a4d3fc305177a5ac59ca71a2e7c7e..0a4903d082f849b791940ee4208d8d770eb8bfb9 100644 (file)
@@ -19,19 +19,18 @@ class FilesController < ApplicationController
     render :layout => !request.xhr?
   end
 
-  # TODO: split method into new (GET) and create (POST)
   def new
-    if request.post?
-      container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
-      attachments = Attachment.attach_files(container, params[:attachments])
-      render_attachment_warning_if_needed(container)
+    @versions = @project.versions.sort
+  end
 
-      if !attachments.empty? && Setting.notified_events.include?('file_added')
-        Mailer.deliver_attachments_added(attachments[:files])
-      end
-      redirect_to :controller => 'files', :action => 'index', :id => @project
-      return
+  def create
+    container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
+    attachments = Attachment.attach_files(container, params[:attachments])
+    render_attachment_warning_if_needed(container)
+
+    if !attachments.empty? && Setting.notified_events.include?('file_added')
+      Mailer.deliver_attachments_added(attachments[:files])
     end
-    @versions = @project.versions.sort
+    redirect_to :controller => 'files', :action => 'index', :id => @project
   end
 end
index bbb3b17334c8487f5846e864da75d56e71d1622d..870a315c9d675ee803736df1ca10f4012e66e266 100644 (file)
@@ -2,7 +2,7 @@
 
 <%= error_messages_for 'attachment' %>
 <div class="box">
-<% form_tag({ :action => 'new', :id => @project }, :multipart => true, :class => "tabular") do %>
+<% form_tag({ :action => 'create', :id => @project }, :multipart => true, :class => "tabular") do %>
 
 <% if @versions.any? %>
 <p><label for="version_id"><%=l(:field_version)%></label>
index 129c3b4560292d632298e4c581d9234b670adb3b..152b90f54ca0f7d5d59ac1241d7617dc3ce31cba 100644 (file)
@@ -196,7 +196,7 @@ ActionController::Routing::Routes.draw do |map|
     end
 
     project_mapper.with_options :conditions => {:method => :post} do |project_actions|
-      project_actions.connect 'projects/:id/files/new', :controller => 'files', :action => 'new'
+      project_actions.connect 'projects/:id/files/new', :controller => 'files', :action => 'create'
     end
   end
   
index 526b83e65bb2d58c04a134f0f30269b4a49c84c0..9d59390c1ab387b0725c074b3f0f225519e67d4a 100644 (file)
@@ -102,7 +102,7 @@ Redmine::AccessControl.map do |map|
   end
   
   map.project_module :files do |map|
-    map.permission :manage_files, {:files => :new}, :require => :loggedin
+    map.permission :manage_files, {:files => [:new, :create]}, :require => :loggedin
     map.permission :view_files, :files => :index, :versions => :download
   end
     
index 838caee70e3d17828e1a541769cf329f69acf2f9..2f6f009e7c7cd5981feb00282d1da8d93a34ffff 100644 (file)
@@ -26,14 +26,14 @@ class FilesControllerTest < ActionController::TestCase
                    :attributes => { :href => '/attachments/download/9/version_file.zip' }
   end
 
-  def test_add_file
+  def test_create_file
     set_tmp_attachments_directory
     @request.session[:user_id] = 2
     Setting.notified_events = ['file_added']
     ActionMailer::Base.deliveries.clear
     
     assert_difference 'Attachment.count' do
-      post :new, :id => 1, :version_id => '',
+      post :create, :id => 1, :version_id => '',
            :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
       assert_response :redirect
     end
@@ -48,13 +48,13 @@ class FilesControllerTest < ActionController::TestCase
     assert mail.body.include?('testfile.txt')
   end
   
-  def test_add_version_file
+  def test_create_version_file
     set_tmp_attachments_directory
     @request.session[:user_id] = 2
     Setting.notified_events = ['file_added']
     
     assert_difference 'Attachment.count' do
-      post :new, :id => 1, :version_id => '2',
+      post :create, :id => 1, :version_id => '2',
            :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
       assert_response :redirect
     end
index ac75d4d7cf057f4b72b06c723049c786903d6469..1867a60b0dd2d684f1241f158561019b4d13b3e4 100644 (file)
@@ -179,7 +179,7 @@ class RoutingTest < ActionController::IntegrationTest
     
     should_route :post, "/projects", :controller => 'projects', :action => 'create'
     should_route :post, "/projects.xml", :controller => 'projects', :action => 'create', :format => 'xml'
-    should_route :post, "/projects/33/files/new", :controller => 'files', :action => 'new', :id => '33'
+    should_route :post, "/projects/33/files/new", :controller => 'files', :action => 'create', :id => '33'
     should_route :post, "/projects/64/archive", :controller => 'projects', :action => 'archive', :id => '64'
     should_route :post, "/projects/64/unarchive", :controller => 'projects', :action => 'unarchive', :id => '64'