From 81ed1ce712cc31a7402d5c7f17f9630ea15b3917 Mon Sep 17 00:00:00 2001 From: Daniel Munn Date: Mon, 11 Jun 2012 21:40:32 +0100 Subject: [PATCH] MKCOL correctly responded to, creates folders within DMSF (as expected) --- lib/redmine_dmsf/webdav/dmsf_resource.rb | 33 +++++++++++++++++++++++ lib/redmine_dmsf/webdav/resource_proxy.rb | 4 +++ 2 files changed, 37 insertions(+) diff --git a/lib/redmine_dmsf/webdav/dmsf_resource.rb b/lib/redmine_dmsf/webdav/dmsf_resource.rb index 1040293c..efe2d788 100644 --- a/lib/redmine_dmsf/webdav/dmsf_resource.rb +++ b/lib/redmine_dmsf/webdav/dmsf_resource.rb @@ -112,6 +112,39 @@ module RedmineDmsf OK end + def make_collection + debugger + if (request.body.read.to_s == '') + + _folder = false + if (File.basename(File.dirname(projectless_path)) != "/") + folders = DmsfFolder.find(:all, :conditions => ["project_id = :project_id AND title = :title", {:project_id => self.Project.id, :title => File.basename(File.dirname(path))}], :order => "title ASC") + if (folders.length > 1) then + folders.delete_if {|x| x.dmsf_path_str != File.dirname(projectless_path)} + return false unless folders.length > 0 + _folder=true + _folderdata = folders[0] + elsif (folders.length == 1) + if ('/'+folders[0].dmsf_path_str == File.dirname(projectless_path)) then + _folder=true + _folderdata = folders[0] + else + _folder= false + end + end + return MethodNotAllowed unless _folder + folder = DmsfFolder.new({:title => basename, :dmsf_folder_id => _folderdata.id, :description => 'Folder created from WebDav'}) + else + folder = DmsfFolder.new({:title => basename, :dmsf_folder_id => nil, :description => 'Folder created from WebDav'}) + end + folder.project = self.Project + folder.user = User.current + folder.save ? OK : MethodNotAllowed + else + UnsupportedMediaType + end + end + protected def download raise NotFound unless file? diff --git a/lib/redmine_dmsf/webdav/resource_proxy.rb b/lib/redmine_dmsf/webdav/resource_proxy.rb index 739a431a..0cb75434 100644 --- a/lib/redmine_dmsf/webdav/resource_proxy.rb +++ b/lib/redmine_dmsf/webdav/resource_proxy.rb @@ -70,6 +70,10 @@ module RedmineDmsf @resource_c.long_name end + def make_collection + @resource_c.make_collection + end + def special_type @resource_c.special_type end