Non-versioned files are destroyed directly when deleted via WebDav. #654
This commit is contained in:
parent
2b866ad190
commit
5ae0a65152
@ -231,11 +231,10 @@ module RedmineDmsf
|
||||
def delete
|
||||
if file
|
||||
raise Forbidden unless User.current.admin? || User.current.allowed_to?(:file_delete, project)
|
||||
if file.name.match(/.\.tmp$/i)
|
||||
# .tmp files should be destroyed (MsOffice file)
|
||||
destroy = true
|
||||
elsif file.name.match(/^\~\$/i)
|
||||
# Files starting with ~$ should be destroyed (MsOffice file)
|
||||
|
||||
pattern = Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning']
|
||||
if !pattern.blank? && basename.match(pattern)
|
||||
# Files that are not versioned should be destroyed
|
||||
destroy = true
|
||||
elsif file.last_revision.size == 0
|
||||
# Zero-sized files should be destroyed
|
||||
|
||||
@ -212,5 +212,18 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
@file1.reload
|
||||
assert !@file1.deleted?, "File #{@file1.name} is expected to exist"
|
||||
end
|
||||
|
||||
def test_non_versioned_file
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning'] = '\.tmp$'
|
||||
@project1.enable_module! :dmsf
|
||||
@role.add_permission! :view_dmsf_folders
|
||||
@role.add_permission! :file_delete
|
||||
|
||||
file = @file1.copy_to_filename(@project1, nil, "delete_test.tmp")
|
||||
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/delete_test.tmp", nil, @jsmith
|
||||
# The file should be destroyed
|
||||
assert_nil DmsfFile.find_file_by_name(@project1, nil, "delete_test.tmp")
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user