From 916b170e411540129913911c92a895290b8537ca Mon Sep 17 00:00:00 2001 From: Karel Picman Date: Wed, 19 Apr 2017 15:38:01 +0200 Subject: [PATCH] Invalid characters check --- lib/redmine_dmsf/webdav/project_resource.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/redmine_dmsf/webdav/project_resource.rb b/lib/redmine_dmsf/webdav/project_resource.rb index 8a982f7a..1f18b2e8 100644 --- a/lib/redmine_dmsf/webdav/project_resource.rb +++ b/lib/redmine_dmsf/webdav/project_resource.rb @@ -116,15 +116,18 @@ module RedmineDmsf self.project.id if self.project end + # Characters that MATCH this regex will be replaced with dots, no more than one dot in a row. + INVALID_CHARACTERS = /[\/\\\?":<>#%\*\[\]]/.freeze # = / \ ? " : < > # % * [ ] + def self.create_project_name(p) use_project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] if use_project_names # 1. Invalid characters are replaced with a dot. # 2. Two or more dots in a row are replaced with a single dot. # (3. Windows WebClient does not like a dot at the end, but since the project id tag is appended this is not a problem.) - "#{p.name.gsub(DmsfFolder::INVALID_CHARACTERS, ".").gsub(/\.{2,}/, '.')} #{p.id}" unless p.nil? + "#{p.name.gsub(INVALID_CHARACTERS, '.').gsub(/\.{2,}/, '.')} #{p.id}" if p else - p.identifier unless p.nil? + p.identifier if p end end end