]> source.dussan.org Git - redmine.git/commitdiff
Add support for attaching file to WIKI pages by REST API (#14830).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 16 May 2016 06:29:52 +0000 (06:29 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 16 May 2016 06:29:52 +0000 (06:29 +0000)
Patch by Takenori TAKAKI.

git-svn-id: http://svn.redmine.org/redmine/trunk@15415 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/wiki_controller.rb
test/integration/api_test/wiki_pages_test.rb

index 2f174877fdd734ee3741e890231105932fa721b0..10fd099e023278f79138e33af341e243c8f04c0d 100644 (file)
@@ -169,7 +169,7 @@ class WikiController < ApplicationController
     @content.author = User.current
 
     if @page.save_with_content(@content)
-      attachments = Attachment.attach_files(@page, params[:attachments])
+      attachments = Attachment.attach_files(@page, params[:attachments] || (params[:wiki_page] && params[:wiki_page][:uploads]))
       render_attachment_warning_if_needed(@page)
       call_hook(:controller_wiki_edit_after_save, { :params => params, :page => @page})
 
index 9a091e781d5c082514e87845903dbdca0f3e1cff..51e132edab1f36e5ea51986542f8261887ec8ee6 100644 (file)
@@ -164,6 +164,25 @@ class Redmine::ApiTest::WikiPagesTest < Redmine::ApiTest::Base
     assert_nil page.parent
   end
 
+  test "PUT /projects/:project_id/wiki/:title.xml with attachment" do
+    set_tmp_attachments_directory
+    attachment = Attachment.create!(:file => uploaded_test_file("testfile.txt", "text/plain"), :author_id => 2)
+    assert_difference 'WikiPage.count' do
+      assert_difference 'WikiContent::Version.count' do
+        put '/projects/ecookbook/wiki/New_page_from_API.xml',
+            {:wiki_page => {:text => 'New content from API with Attachments', :comments => 'API create with Attachments',
+                            :uploads => [:token => attachment.token, :filename => 'testfile.txt', :content_type => "text/plain"]}},
+            credentials('jsmith')
+        assert_response 201
+      end
+    end
+
+    page = WikiPage.order('id DESC').first
+    assert_equal 'New_page_from_API', page.title
+    assert_include attachment, page.attachments
+    assert_equal attachment.filename, page.attachments.first.filename
+  end
+
   test "PUT /projects/:project_id/wiki/:title.xml with parent" do
     assert_difference 'WikiPage.count' do
       assert_difference 'WikiContent::Version.count' do