#1179 sub-projects in square brackets
This commit is contained in:
parent
90dbcd1765
commit
e0cc6ef78b
@ -84,7 +84,7 @@ module DmsfHelper
|
||||
def webdav_url(project, folder)
|
||||
url = ["#{Setting.protocol}:/", Setting.host_name, 'dmsf', 'webdav']
|
||||
if project
|
||||
url << RedmineDmsf::Webdav::ProjectResource.create_project_name(project)
|
||||
url << ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(project))
|
||||
if folder
|
||||
folders = [folder]
|
||||
while folder.dmsf_folder do
|
||||
@ -97,7 +97,7 @@ module DmsfHelper
|
||||
end
|
||||
end
|
||||
url << ''
|
||||
URI.encode(url.join '/')
|
||||
url.join '/'
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@ -96,7 +96,7 @@ module RedmineDmsf
|
||||
Confict unless collection?
|
||||
entities = children.map{ |child|
|
||||
DIR_FILE % [
|
||||
uri_encode(request.url_for(child.path)),
|
||||
uri_encode(request.url_for(child.path)),
|
||||
child.long_name || child.name,
|
||||
child.collection? ? '' : number_to_human_size(child.content_length),
|
||||
child.special_type || child.content_type,
|
||||
@ -166,7 +166,7 @@ module RedmineDmsf
|
||||
protected
|
||||
|
||||
def uri_encode(uri)
|
||||
uri.gsub /[\(\)&]/, '(' => '%28', ')' => '%29', '&' => '&'
|
||||
uri.gsub /[\(\)&\[\]]/, '(' => '%28', ')' => '%29', '&' => '%26', '[' => '%5B', ']' => '5D'
|
||||
end
|
||||
|
||||
def basename
|
||||
@ -188,9 +188,7 @@ module RedmineDmsf
|
||||
def self.get_project(scope, name, parent_project)
|
||||
prj = nil
|
||||
if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
|
||||
#if name =~ /^\[?.+ (\d+)\]?$/
|
||||
if name =~ / (\d+)$/
|
||||
#prj = scope.find_by(id: $1, parent_id: parent_project&.id)
|
||||
if name =~ /^\[?.+ (\d+)\]?$/
|
||||
if parent_project
|
||||
prj = scope.find_by(id: $1, parent_id: parent_project.id)
|
||||
else
|
||||
@ -198,18 +196,19 @@ module RedmineDmsf
|
||||
end
|
||||
if prj
|
||||
# Check again whether it's really the project and not a folder with a number as a suffix
|
||||
#prj = nil unless name.include?(DmsfFolder::get_valid_title(prj.name))
|
||||
prj = nil unless name.start_with?(DmsfFolder::get_valid_title(prj.name))
|
||||
prj = nil unless name.start_with?('[' + DmsfFolder::get_valid_title(prj.name))
|
||||
end
|
||||
end
|
||||
else
|
||||
# if name =~ /^\[?([^\]]+)\]?$/
|
||||
# prj = scope.find_by(identifier: $1, parent_id: parent_project&.id)
|
||||
# end
|
||||
if parent_project
|
||||
prj = scope.find_by(identifier: name, parent_id: parent_project.id)
|
||||
if name.start_with?('[') && name.end_with?(']')
|
||||
identifier = name[1..-2]
|
||||
else
|
||||
prj = scope.find_by(identifier: name)
|
||||
identifier = name
|
||||
end
|
||||
if parent_project
|
||||
prj = scope.find_by(identifier: identifier, parent_id: parent_project.id)
|
||||
else
|
||||
prj = scope.find_by(identifier: identifier)
|
||||
end
|
||||
end
|
||||
prj
|
||||
|
||||
@ -75,8 +75,7 @@ module RedmineDmsf
|
||||
end
|
||||
|
||||
def long_name
|
||||
#'[' + project&.name + ']'
|
||||
project&.name
|
||||
"[#{project&.name}]"
|
||||
end
|
||||
|
||||
def content_type
|
||||
@ -119,11 +118,9 @@ module RedmineDmsf
|
||||
def self.create_project_name(prj)
|
||||
if prj
|
||||
if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
|
||||
#"[#{DmsfFolder::get_valid_title(prj.name)} #{prj.id}]"
|
||||
"#{DmsfFolder::get_valid_title(prj.name)} #{prj.id}"
|
||||
"[#{DmsfFolder::get_valid_title(prj.name)} #{prj.id}]"
|
||||
else
|
||||
#"[#{prj.identifier}]"
|
||||
prj.identifier
|
||||
"[#{prj.identifier}]"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -131,7 +131,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", params: nil, headers: @jsmith
|
||||
assert_response :not_found
|
||||
p1name_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
p1name_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
delete "/dmsf/webdav/#{p1name_uri}/#{@folder6.title}", params: nil, headers: @jsmith
|
||||
assert_response :success
|
||||
@folder6.reload
|
||||
@ -156,7 +156,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
|
||||
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @jsmith
|
||||
assert_response :not_found
|
||||
p1name_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
p1name_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
delete "/dmsf/webdav/#{p1name_uri}/#{@file1.name}", params: nil, headers: @jsmith
|
||||
assert_response :success
|
||||
@file1.reload
|
||||
|
||||
@ -114,7 +114,7 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
|
||||
get "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
|
||||
assert_response :success
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
|
||||
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
get "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
|
||||
assert_response :not_found
|
||||
get "/dmsf/webdav/#{project1_uri}/test.txt", params: nil, headers: @admin
|
||||
|
||||
@ -63,7 +63,7 @@ class DmsfWebdavMkcolTest < RedmineDmsf::Test::IntegrationTest
|
||||
process :mkcol, "/dmsf/webdav/#{@project1.identifier}/test1", params: nil, headers: @jsmith
|
||||
assert_response :success
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
|
||||
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
process :mkcol, "/dmsf/webdav/#{@project1.identifier}/test2", params: nil, headers: @jsmith
|
||||
assert_response :not_found
|
||||
process :mkcol, "/dmsf/webdav/#{project1_uri}/test3", params: nil, headers: @jsmith
|
||||
|
||||
@ -108,7 +108,7 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
|
||||
|
||||
def test_move_to_new_filename_with_project_names
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
|
||||
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
new_name = "#{@file1.name}.moved"
|
||||
assert_difference '@file1.dmsf_file_revisions.count', +1 do
|
||||
process :move, "/dmsf/webdav/#{project1_uri}/#{@file1.name}", params: nil,
|
||||
@ -143,7 +143,7 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
|
||||
|
||||
def test_move_to_new_folder_with_project_names
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
|
||||
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
assert_difference '@file1.dmsf_file_revisions.count', +1 do
|
||||
process :move, "/dmsf/webdav/#{project1_uri}/#{@file1.name}", params: nil,
|
||||
headers: @jsmith.merge!({
|
||||
|
||||
@ -134,7 +134,7 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
|
||||
process :options, "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin.merge!({ HTTP_USER_AGENT: 'Other' })
|
||||
assert_response :success
|
||||
|
||||
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
process :options, "/dmsf/webdav/#{project1_uri}", params: nil, headers: @admin.merge!({ HTTP_USER_AGENT: 'Other' })
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
@ -146,7 +146,7 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
|
||||
def test_propfind_depth1_on_root_for_admin
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
|
||||
project1_new_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
|
||||
project1_new_uri = Addressable::URI.escape(project1_new_name)
|
||||
project1_new_uri = ERB::Util.url_encode(project1_new_name)
|
||||
process :propfind, "/dmsf/webdav/#{project1_new_uri}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1'})
|
||||
assert_response :multi_status
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{project1_new_uri}/</d:href>")
|
||||
|
||||
@ -75,7 +75,7 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
|
||||
file = DmsfFile.find_file_by_name @project1, nil, 'test-1234.txt'
|
||||
assert file, 'Check for files existance'
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
|
||||
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
|
||||
headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :conflict
|
||||
@ -115,7 +115,7 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :conflict
|
||||
|
||||
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
put "/dmsf/webdav/#{project1_uri}/test-1234.txt", params: '1234', headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :created # Now we have permissions
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user