diff --git a/app/controllers/dmsf_context_menus_controller.rb b/app/controllers/dmsf_context_menus_controller.rb
index 5c2ff5a5..e7cca722 100644
--- a/app/controllers/dmsf_context_menus_controller.rb
+++ b/app/controllers/dmsf_context_menus_controller.rb
@@ -31,15 +31,15 @@ class DmsfContextMenusController < ApplicationController
def dmsf
if @dmsf_file
@locked = @dmsf_file.locked?
- @unlockable = @dmsf_file.unlockable? && (!@dmsf_file.locked_for_user? ||
- User.current.allowed_to?(:force_file_unlock, @project))
@allowed = User.current.allowed_to? :file_manipulation, @project
+ @unlockable = @allowed && @dmsf_file.unlockable? && (!@dmsf_file.locked_for_user? ||
+ User.current.allowed_to?(:force_file_unlock, @project))
@email_allowed = User.current.allowed_to?(:email_documents, @project)
elsif @dmsf_folder
@locked = @dmsf_folder.locked?
- @unlockable = @dmsf_folder.unlockable? && (!@dmsf_folder.locked_for_user?) &&
- User.current.allowed_to?(:force_file_unlock, @project)
@allowed = User.current.allowed_to?(:folder_manipulation, @project)
+ @unlockable = @allowed && @dmsf_folder.unlockable? && (!@dmsf_folder.locked_for_user?) &&
+ User.current.allowed_to?(:force_file_unlock, @project)
@email_allowed = User.current.allowed_to?(:email_documents, @project)
elsif @dmsf_link
@allowed = User.current.allowed_to? :file_manipulation, @project
diff --git a/app/controllers/dmsf_upload_controller.rb b/app/controllers/dmsf_upload_controller.rb
index a71947aa..335ac516 100644
--- a/app/controllers/dmsf_upload_controller.rb
+++ b/app/controllers/dmsf_upload_controller.rb
@@ -58,6 +58,9 @@ class DmsfUploadController < ApplicationController
end
end
end
+ if @uploads.empty?
+ flash.now[:error] = l(:label_attachment) + ' ' + l('activerecord.errors.messages.invalid')
+ end
end
# async single file upload handling
diff --git a/app/views/dmsf_upload/upload_files.html.erb b/app/views/dmsf_upload/upload_files.html.erb
index 40badae5..e1834eac 100644
--- a/app/views/dmsf_upload/upload_files.html.erb
+++ b/app/views/dmsf_upload/upload_files.html.erb
@@ -24,8 +24,8 @@
<% html_title l(:dmsf) %>
-<%= render(:partial => '/dmsf/path',
- :locals => {:folder => @folder, :filename => nil, :title => l(:heading_uploaded_files)}) %>
+<%= render(partial: '/dmsf/path',
+ locals: { folder: @folder, filename: nil, title: l(:heading_uploaded_files) }) %>
<% if (@folder && @folder.description.present?) || @project.dmsf_description.present? %>
@@ -33,16 +33,18 @@
<% end %>
-<%= form_tag({:action => 'commit_files', :id => @project, :folder_id => @folder},
- :method => :post) do %>
- <% @uploads.each_with_index do |upload, i| %>
- <% if upload.locked %>
- <%= render(:partial => 'upload_file_locked', :locals => {:upload => upload, :i => i}) %>
- <% else %>
- <%= render(:partial => 'upload_file', :locals => {:upload => upload, :i => i}) %>
+<% unless@uploads.empty? %>
+ <%= form_tag({ action: 'commit_files', id: @project, folder_id: @folder },
+ method: :post) do %>
+ <% @uploads.each_with_index do |upload, i| %>
+ <% if upload.locked %>
+ <%= render(partial: 'upload_file_locked', locals: { upload: upload, i: i }) %>
+ <% else %>
+ <%= render(partial: 'upload_file', locals: { upload: upload, i: i }) %>
+ <% end %>
<% end %>
+
+ <%= submit_tag l(:submit_commit), class: 'button-positive' %>
+
<% end %>
-
- <%= submit_tag l(:submit_commit), :class => 'button-positive' %>
-
<% end %>
\ No newline at end of file
diff --git a/lib/redmine_dmsf/webdav/base_resource.rb b/lib/redmine_dmsf/webdav/base_resource.rb
index f0ba3846..5def382f 100644
--- a/lib/redmine_dmsf/webdav/base_resource.rb
+++ b/lib/redmine_dmsf/webdav/base_resource.rb
@@ -86,7 +86,7 @@ module RedmineDmsf
def child_project(p)
project_display_name = ProjectResource.create_project_name(p)
- new_path = +@path
+ new_path = @path
new_path = new_path + '/' unless new_path[-1,1] == '/'
new_path = '/' + new_path unless new_path[0,1] == '/'
new_path += project_display_name
diff --git a/lib/redmine_dmsf/webdav/custom_middleware.rb b/lib/redmine_dmsf/webdav/custom_middleware.rb
index 89287a15..ec4b0bfd 100644
--- a/lib/redmine_dmsf/webdav/custom_middleware.rb
+++ b/lib/redmine_dmsf/webdav/custom_middleware.rb
@@ -57,20 +57,7 @@ module RedmineDmsf
# If the URL map generated by Rack::Builder did not find a matching path,
# it will return a 404 along with the X-Cascade header set to 'pass'.
if (status == 404) && (headers['X-Cascade'] == 'pass')
- # The MS web redirector webdav client likes to go up a level and try
- # OPTIONS and PROPFIND there. We catch that here and respond telling it that just
- # plain HTTP is going on.
- if %w(/ /dmsf).include?(env['PATH_INFO'])
- if 'OPTIONS'.casecmp(env['REQUEST_METHOD']) == 0
- [ '200', { 'Allow' => 'OPTIONS,HEAD,GET,PUT,POST,DELETE' }, [''] ]
- elsif 'PROPFIND'.casecmp(env['REQUEST_METHOD']) == 0
- [ '404', {}, [''] ]
- else
- @rails_app.call env # let Rails handle the request
- end
- else
- @rails_app.call env # let Rails handle the request
- end
+ @rails_app.call env # Let Rails handle the request
else
[status, headers, body]
end
diff --git a/lib/redmine_dmsf/webdav/dmsf_resource.rb b/lib/redmine_dmsf/webdav/dmsf_resource.rb
index 5b4c3470..0c0f5e59 100644
--- a/lib/redmine_dmsf/webdav/dmsf_resource.rb
+++ b/lib/redmine_dmsf/webdav/dmsf_resource.rb
@@ -71,15 +71,14 @@ module RedmineDmsf
# Is this entity a folder?
def collection?
- folder.present? # No need to check if entity exists, as false is returned if entity does not exist anyways
+ !folder.nil?
end
# Check if current entity is a folder and return DmsfFolder object if found (nil if not)
def folder
unless @folder
- return nil unless project
- @folder = DmsfFolder.visible.where(:project_id => project.id, :title => basename,
- :dmsf_folder_id => parent.folder ? parent.folder.id : nil).first
+ @folder = DmsfFolder.visible.where(project_id: project.id, title: basename,
+ dmsf_folder_id: parent.folder ? parent.folder.id : nil).first if project
end
@folder
end
diff --git a/lib/redmine_dmsf/webdav/project_resource.rb b/lib/redmine_dmsf/webdav/project_resource.rb
index f7840ad7..2a099119 100644
--- a/lib/redmine_dmsf/webdav/project_resource.rb
+++ b/lib/redmine_dmsf/webdav/project_resource.rb
@@ -46,15 +46,11 @@ module RedmineDmsf
end
def exist?
- return false if (project.nil? || User.current.anonymous?)
- return false unless project.module_enabled?('dmsf')
- User.current.admin? || User.current.allowed_to?(:view_dmsf_folders, project)
+ really_exist? && User.current.allowed_to?(:view_dmsf_folders, project)
end
def really_exist?
- return false if project.nil?
- return false unless project.module_enabled?('dmsf')
- true
+ project && project.module_enabled?('dmsf')
end
def collection?
@@ -62,11 +58,11 @@ module RedmineDmsf
end
def creation_date
- project.created_on unless project.nil?
+ project.created_on if project
end
def last_modified
- project.updated_on unless project.nil?
+ project.updated_on if project
end
def etag
@@ -78,7 +74,7 @@ module RedmineDmsf
end
def long_name
- project.name unless project.nil?
+ project.name if project
end
def content_type
diff --git a/test/fixtures/dmsf_links.yml b/test/fixtures/dmsf_links.yml
index 69fbce27..b9729b66 100644
--- a/test/fixtures/dmsf_links.yml
+++ b/test/fixtures/dmsf_links.yml
@@ -54,7 +54,6 @@ file_link2:
url_link:
id: 5
target_project_id: 1
- target_id: 4
target_type: DmsfUrl
name: url_link
project_id: 1
@@ -62,4 +61,17 @@ url_link:
deleted: 0
deleted_by_user_id: NULL
created_at: <%= DateTime.current %>
+ updated_at: <%= DateTime.current %>
+
+file_link3:
+ id: 6
+ target_project_id: 1
+ target_id: 1
+ target_type: DmsfFile
+ name: file1_link
+ project_id: 1
+ dmsf_folder_id: NULL
+ deleted: 0
+ deleted_by_user_id: NULL
+ created_at: <%= DateTime.current %>
updated_at: <%= DateTime.current %>
\ No newline at end of file
diff --git a/test/functional/dmsf_context_menus_controller_test.rb b/test/functional/dmsf_context_menus_controller_test.rb
index a215894a..4e583ad4 100644
--- a/test/functional/dmsf_context_menus_controller_test.rb
+++ b/test/functional/dmsf_context_menus_controller_test.rb
@@ -36,6 +36,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
@folder1 = DmsfFolder.find 1
@folder5 = DmsfFolder.find 5
@file_link2 = DmsfLink.find 2
+ @file_link6 = DmsfLink.find 6
@folder_link1 = DmsfLink.find 1
@url_link5 = DmsfLink.find 5
User.current = nil
@@ -51,6 +52,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
assert_kind_of DmsfFolder, @folder1
assert_kind_of DmsfFolder, @folder5
assert_kind_of DmsfLink, @file_link2
+ assert_kind_of DmsfLink, @file_link6
assert_kind_of DmsfLink, @folder_link1
assert_kind_of DmsfLink, @url_link5
assert_kind_of Role, @role1
@@ -160,7 +162,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
def test_dmsf_file_link
get :dmsf, params: {
- id: @file_link2.project.id, folder_id: @file_link2.dmsf_folder.id, ids: ["file-link-#{@file_link2.id}"] }
+ id: @file_link6.project.id, folder_id: @file_link6.dmsf_folder, ids: ["file-link-#{@file_link6.id}"] }
assert_response :success
assert_select 'a.icon-edit', text: l(:button_edit)
assert_select 'a.icon-lock', text: l(:button_lock)
@@ -172,7 +174,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_file_link_locked
- @file_link2.target_file.lock!
+ assert @file_link2.target_file.locked?
get :dmsf, params: {
id: @file_link2.project.id, folder_id: @file_link2.dmsf_folder.id, ids: ["file-link-#{@file_link2.id}"] }
assert_response :success
@@ -190,7 +192,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_folder
- get :dmsf, params: { id: @folder5.project.id, ids: ["folder-#{@folder5.id}"] }
+ get :dmsf, params: { id: @folder1.project.id, ids: ["folder-#{@folder1.id}"] }
assert_response :success
assert_select 'a.icon-edit', text: l(:button_edit)
assert_select 'a.icon-lock', text: l(:button_lock)
@@ -208,7 +210,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_folder_locked
- @folder5.lock!
+ assert @folder5.locked?
get :dmsf, params: { id: @folder5.project.id, ids: ["folder-#{@folder5.id}"] }
assert_response :success
assert_select 'a.icon-edit.disabled', text: l(:button_edit)
@@ -228,7 +230,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
def test_dmsf_folder_manipulation_permmissions_off
@role1.remove_permission! :folder_manipulation
- get :dmsf, params: { id: @folder5.project.id, ids: ["folder-#{@folder5.id}"] }
+ get :dmsf, params: { id: @folder1.project.id, ids: ["folder-#{@folder1.id}"] }
assert_response :success
assert_select 'a.icon-edit.disabled', text: l(:button_edit)
assert_select 'a.icon-lock.disabled', text: l(:button_lock)
@@ -238,7 +240,8 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
def test_dmsf_folder_manipulation_permmissions_on
@role1.add_permission! :folder_manipulation
- get :dmsf, params: { id: @folder5.project.id, ids: ["folder-#{@folder5.id}"] }
+ #assert !@folder5.locked?
+ get :dmsf, params: { id: @folder1.project.id, ids: ["folder-#{@folder1.id}"] }
assert_response :success
assert_select 'a:not(icon-edit.disabled)', text: l(:button_edit)
assert_select 'a:not(icon-lock.disabled)', text: l(:button_lock)
diff --git a/test/integration/rest_api/dmsf_file_api_test.rb b/test/integration/rest_api/dmsf_file_api_test.rb
index 7e6775ee..33d3da1b 100644
--- a/test/integration/rest_api/dmsf_file_api_test.rb
+++ b/test/integration/rest_api/dmsf_file_api_test.rb
@@ -118,7 +118,6 @@ class DmsfFileApiTest < RedmineDmsf::Test::IntegrationTest
#
#
#
- #puts response.body
assert_select 'dmsf_file > id', text: @file1.id.to_s
assert_select 'dmsf_file > title', text: @file1.title
assert_select 'dmsf_file > name', text: @file1.name
diff --git a/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb b/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb
index a834bdaa..359c4428 100644
--- a/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb
+++ b/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb
@@ -34,12 +34,12 @@ class DmsfWebdavCustomMiddlewareTest < RedmineDmsf::Test::IntegrationTest
def test_options_for_root_path
process :options, '/'
- assert_response :success
+ assert_response :not_found
end
def test_options_for_dmsf_root_path
process :options, '/dmsf'
- assert_response :success
+ assert_response :not_found
end
def test_propfind_for_root_path
diff --git a/test/unit/project_patch_test.rb b/test/unit/project_patch_test.rb
index 5214e460..34c49055 100644
--- a/test/unit/project_patch_test.rb
+++ b/test/unit/project_patch_test.rb
@@ -81,7 +81,7 @@ class ProjectPatchTest < RedmineDmsf::Test::UnitTest
def test_copy_dmsf
assert_equal 4, @project1.dmsf_files.visible.all.size
assert_equal 4, @project1.dmsf_folders.visible.all.size
- assert_equal 1, @project1.file_links.visible.all.size
+ assert_equal 2, @project1.file_links.visible.all.size
assert_equal 1, @project1.folder_links.visible.all.size
assert_equal 1, @project1.url_links.visible.all.size
assert_equal 0, @project3.dmsf_files.visible.all.size
@@ -92,7 +92,7 @@ class ProjectPatchTest < RedmineDmsf::Test::UnitTest
@project3.copy_dmsf(@project1)
assert_equal 4, @project3.dmsf_files.visible.all.size
assert_equal 4, @project3.dmsf_folders.all.size
- assert_equal 1, @project3.file_links.visible.all.size
+ assert_equal 2, @project3.file_links.visible.all.size
assert_equal 1, @project3.folder_links.visible.all.size
assert_equal 1, @project3.url_links.visible.all.size
end