From 9aeac6e2fe939f80f204be243d371bc50dc9ab48 Mon Sep 17 00:00:00 2001 From: "karel.picman@lbcfree.net" Date: Mon, 24 Aug 2020 13:21:55 +0200 Subject: [PATCH] Also available in WebDAV --- app/helpers/dmsf_helper.rb | 19 +++++++++++++ app/views/dmsf/show.html.erb | 3 ++ test/helper_test.rb | 11 +++++++- test/helpers/dmsf_helper_test.rb | 36 ++++++++++++++++++++++++ test/helpers/dmsf_queries_helper_test.rb | 14 ++------- 5 files changed, 70 insertions(+), 13 deletions(-) create mode 100644 test/helpers/dmsf_helper_test.rb diff --git a/app/helpers/dmsf_helper.rb b/app/helpers/dmsf_helper.rb index 3e51a0da..e5469a6c 100644 --- a/app/helpers/dmsf_helper.rb +++ b/app/helpers/dmsf_helper.rb @@ -81,4 +81,23 @@ module DmsfHelper principals_check_box_tags 'user_ids[]', users end + def webdav_url(project, folder) + url = ["#{Setting.protocol}:/", Setting.host_name, 'dmsf', 'webdav'] + if project + url << RedmineDmsf::Webdav::ProjectResource.create_project_name(project) + if folder + folders = [folder] + while folder.dmsf_folder do + folders << folder + folder = folder.dmsf_folder + end + folders.reverse.each do |folder| + url << folder.title + end + end + end + url << '' + url.join '/' + end + end diff --git a/app/views/dmsf/show.html.erb b/app/views/dmsf/show.html.erb index 428394c8..0821a29e 100644 --- a/app/views/dmsf/show.html.erb +++ b/app/views/dmsf/show.html.erb @@ -83,6 +83,9 @@ <% unless @folder && @folder.system %> <% other_formats_links do |f| %> <%= f.link_to 'CSV', url: { action: :show, id: @project, folder_id: @folder } %> + + <%= link_to 'WebDAV', webdav_url(@project, @folder) %> + <% end %> <% end %> diff --git a/test/helper_test.rb b/test/helper_test.rb index 3b0b3253..41d121cb 100644 --- a/test/helper_test.rb +++ b/test/helper_test.rb @@ -25,6 +25,8 @@ module RedmineDmsf module Test class HelperTest < ActiveSupport::TestCase + fixtures :users, :email_addresses, :projects + # Allow us to override the fixtures method to implement fixtures for our plugin. # Ultimately it allows for better integration without blowing redmine fixtures up, # and allowing us to suppliment redmine fixtures if we need to. @@ -39,7 +41,14 @@ module RedmineDmsf end end super redmine_table_names if redmine_table_names.any? - end + end + + def setup + @jsmith = User.find 2 + @project1 = Project.find 1 + @folder1 = DmsfFolder.find 1 + Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = nil + end end end end \ No newline at end of file diff --git a/test/helpers/dmsf_helper_test.rb b/test/helpers/dmsf_helper_test.rb new file mode 100644 index 00000000..3f6e9814 --- /dev/null +++ b/test/helpers/dmsf_helper_test.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +# Redmine - project management software +# Copyright (C) 2006-2019 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../test_helper', __FILE__) + +class DmsfHelperTest < RedmineDmsf::Test::HelperTest + include DmsfHelper + + fixtures :dmsf_folders + + def test_webdav_url + base_url = ["#{Setting.protocol}:/", Setting.host_name, 'dmsf', 'webdav'].join('/') + assert_equal "#{base_url}/", webdav_url(nil, nil) + assert_equal "#{base_url}/ecookbook/", webdav_url(@project1, nil) + assert_equal "#{base_url}/ecookbook/folder1/", webdav_url(@project1, @folder1) + Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1' + assert_equal "#{base_url}/eCookbook 1/", webdav_url(@project1, nil) + end + +end diff --git a/test/helpers/dmsf_queries_helper_test.rb b/test/helpers/dmsf_queries_helper_test.rb index 87de3589..da073868 100644 --- a/test/helpers/dmsf_queries_helper_test.rb +++ b/test/helpers/dmsf_queries_helper_test.rb @@ -21,18 +21,8 @@ require File.expand_path('../../test_helper', __FILE__) class DmsfQueriesHelperTest < RedmineDmsf::Test::HelperTest include DmsfQueriesHelper + fixtures :dmsf_folders - fixtures :users, :email_addresses - - def setup - @jsmith = User.find 2 - @item = DmsfFolder.new - end - - def test_truth - assert_kind_of User, @jsmith - assert_kind_of DmsfFolder, @item - end def test_csv_value c_size = QueryColumn.new(:size) @@ -45,7 +35,7 @@ class DmsfQueriesHelperTest < RedmineDmsf::Test::HelperTest def test_column_value c_size = QueryColumn.new(:size) - assert_equal '1 KB', csv_value(c_size, @item, 1024) + assert_equal '1 KB', csv_value(c_size, @folder1, 1024) end end