From 342565486959bf938e986515b40502bf7593ab80 Mon Sep 17 00:00:00 2001 From: "karel.picman@lbcfree.net" Date: Tue, 6 Oct 2020 16:00:32 +0200 Subject: [PATCH] Do not display projects without DMSF available --- lib/redmine_dmsf/webdav/base_resource.rb | 13 +++++++++++++ lib/redmine_dmsf/webdav/project_resource.rb | 2 +- test/integration/webdav/dmsf_webdav_get_test.rb | 4 ++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/redmine_dmsf/webdav/base_resource.rb b/lib/redmine_dmsf/webdav/base_resource.rb index ed99aac5..7c59417f 100644 --- a/lib/redmine_dmsf/webdav/base_resource.rb +++ b/lib/redmine_dmsf/webdav/base_resource.rb @@ -207,10 +207,23 @@ module RedmineDmsf def load_projects(project_scope) project_scope.visible.find_each do |p| + if dmsf_available?(p) @children << child_project(p) + end end end + private + + # Go recursively through the project tree until a dmsf enabled project is found + def dmsf_available?(p) + return true if(p.visible? && p.module_enabled?(:dmsf)) + p.children.each do |child| + return true if dmsf_available?(child) + end + false + end + end end end diff --git a/lib/redmine_dmsf/webdav/project_resource.rb b/lib/redmine_dmsf/webdav/project_resource.rb index 04d78acf..a22b8338 100644 --- a/lib/redmine_dmsf/webdav/project_resource.rb +++ b/lib/redmine_dmsf/webdav/project_resource.rb @@ -71,7 +71,7 @@ module RedmineDmsf end def etag - sprintf '%x-%x-%x', 0, 4096, last_modified.to_i + sprintf '%x-%x-%x', 0, 4096, (last_modified ? last_modified.to_i : 0) end def name diff --git a/test/integration/webdav/dmsf_webdav_get_test.rb b/test/integration/webdav/dmsf_webdav_get_test.rb index 8f6d2808..83eec2b0 100644 --- a/test/integration/webdav/dmsf_webdav_get_test.rb +++ b/test/integration/webdav/dmsf_webdav_get_test.rb @@ -61,11 +61,11 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest assert_match project1_uri, response.body end - def test_should_list_non_dmsf_enabled_project + def test_should_not_list_non_dmsf_enabled_project @project2.disable_module! :dmsf get '/dmsf/webdav', params: nil, headers: @jsmith assert_response :success - assert response.body.match(@project2.identifier) + assert !response.body.match(@project2.identifier) end def test_should_return_status_404_when_project_does_not_exist