diff --git app/controllers/wiki_controller.rb app/controllers/wiki_controller.rb index 46dec48..b079aa9 100644 --- app/controllers/wiki_controller.rb +++ app/controllers/wiki_controller.rb @@ -152,7 +152,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}) diff --git test/integration/api_test/wiki_pages_test.rb test/integration/api_test/wiki_pages_test.rb index 9a091e7..caa4f77 100644 --- test/integration/api_test/wiki_pages_test.rb +++ test/integration/api_test/wiki_pages_test.rb @@ -164,6 +164,44 @@ class Redmine::ApiTest::WikiPagesTest < Redmine::ApiTest::Base assert_nil page.parent end + test "PUT /projects/:project_id/wiki/:title.json with attachment via params[:attachments]" 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.json', + {:wiki_page => {:text => 'New content from API with Attachments', :comments => 'API create with Attachments'}, + :attachments => [: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 attachment via params[:wiki_page][:uploads]" 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