Commits

Anonymous committed 63615e6

Resourcified attachments.

Comments (0)

Files changed (5)

app/controllers/attachments_controller.rb

 
   end
 
-  verify :method => :post, :only => :destroy
+  verify :method => :delete, :only => :destroy
   def destroy
     # Make sure association callbacks are called
     @attachment.container.attachments.delete(@attachment)

app/views/attachments/_links.html.erb

 <%= h(" - #{attachment.description}") unless attachment.description.blank? %>
   <span class="size">(<%= number_to_human_size attachment.filesize %>)</span>
   <% if options[:deletable] %>
-    <%= link_to image_tag('delete.png'), {:controller => 'attachments', :action => 'destroy', :id => attachment},
+    <%= link_to image_tag('delete.png'), attachment_path(attachment),
                                          :confirm => l(:text_are_you_sure),
-                                         :method => :post,
+                                         :method => :delete,
                                          :class => 'delete',
                                          :title => l(:button_delete) %>
   <% end %>

app/views/files/index.html.erb

     <td class="downloads"><%= file.downloads %></td>
     <td class="digest"><%= file.digest %></td>
     <td align="center">
-    <%= link_to(image_tag('delete.png'), {:controller => 'attachments', :action => 'destroy', :id => file},
-                                         :confirm => l(:text_are_you_sure), :method => :post) if delete_allowed %>
+    <%= link_to(image_tag('delete.png'), attachment_path(file),
+                                         :confirm => l(:text_are_you_sure), :method => :delete) if delete_allowed %>
     </td>
   </tr>
   <% end
 
     repositories.connect 'projects/:id/repository/:action', :conditions => {:method => :post}
   end
-
-  map.connect 'attachments/:id', :controller => 'attachments', :action => 'show', :id => /\d+/
-  map.connect 'attachments/:id.:format', :controller => 'attachments', :action => 'show', :id => /\d+/
+  
+  map.resources :attachments, :only => [:show, :destroy]
+  # additional routes for having the file name at the end of url
   map.connect 'attachments/:id/:filename', :controller => 'attachments', :action => 'show', :id => /\d+/, :filename => /.*/
   map.connect 'attachments/download/:id/:filename', :controller => 'attachments', :action => 'download', :id => /\d+/, :filename => /.*/
 

test/functional/attachments_controller_test.rb

     @request.session[:user_id] = 2
 
     assert_difference 'issue.attachments.count', -1 do
-      post :destroy, :id => 1
+      delete :destroy, :id => 1
     end
     # no referrer
     assert_redirected_to '/projects/ecookbook'
   def test_destroy_wiki_page_attachment
     @request.session[:user_id] = 2
     assert_difference 'Attachment.count', -1 do
-      post :destroy, :id => 3
+      delete :destroy, :id => 3
       assert_response 302
     end
     set_tmp_attachments_directory
   def test_destroy_project_attachment
     @request.session[:user_id] = 2
     assert_difference 'Attachment.count', -1 do
-      post :destroy, :id => 8
+      delete :destroy, :id => 8
       assert_response 302
     end
     set_tmp_attachments_directory
   def test_destroy_version_attachment
     @request.session[:user_id] = 2
     assert_difference 'Attachment.count', -1 do
-      post :destroy, :id => 9
+      delete :destroy, :id => 9
       assert_response 302
     end
     set_tmp_attachments_directory
   end
 
   def test_destroy_without_permission
-    post :destroy, :id => 3
-    assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fattachments%2Fdestroy%2F3'
+    assert_no_difference 'Attachment.count' do
+      delete :destroy, :id => 3
+    end
+    assert_response 302
     assert Attachment.find_by_id(3)
     set_tmp_attachments_directory
   end