Also available in WebDAV

This commit is contained in:
karel.picman@lbcfree.net 2020-08-24 13:21:55 +02:00
parent 63f8c92712
commit 9aeac6e2fe
5 changed files with 70 additions and 13 deletions

View File

@ -81,4 +81,23 @@ module DmsfHelper
principals_check_box_tags 'user_ids[]', users principals_check_box_tags 'user_ids[]', users
end 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 end

View File

@ -83,6 +83,9 @@
<% unless @folder && @folder.system %> <% unless @folder && @folder.system %>
<% other_formats_links do |f| %> <% other_formats_links do |f| %>
<%= f.link_to 'CSV', url: { action: :show, id: @project, folder_id: @folder } %> <%= f.link_to 'CSV', url: { action: :show, id: @project, folder_id: @folder } %>
<span>
<%= link_to 'WebDAV', webdav_url(@project, @folder) %>
</span>
<% end %> <% end %>
<% end %> <% end %>

View File

@ -25,6 +25,8 @@ module RedmineDmsf
module Test module Test
class HelperTest < ActiveSupport::TestCase class HelperTest < ActiveSupport::TestCase
fixtures :users, :email_addresses, :projects
# Allow us to override the fixtures method to implement fixtures for our plugin. # Allow us to override the fixtures method to implement fixtures for our plugin.
# Ultimately it allows for better integration without blowing redmine fixtures up, # Ultimately it allows for better integration without blowing redmine fixtures up,
# and allowing us to suppliment redmine fixtures if we need to. # and allowing us to suppliment redmine fixtures if we need to.
@ -39,7 +41,14 @@ module RedmineDmsf
end end
end end
super redmine_table_names if redmine_table_names.any? 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 end
end end

View File

@ -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

View File

@ -21,18 +21,8 @@ require File.expand_path('../../test_helper', __FILE__)
class DmsfQueriesHelperTest < RedmineDmsf::Test::HelperTest class DmsfQueriesHelperTest < RedmineDmsf::Test::HelperTest
include DmsfQueriesHelper 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 def test_csv_value
c_size = QueryColumn.new(:size) c_size = QueryColumn.new(:size)
@ -45,7 +35,7 @@ class DmsfQueriesHelperTest < RedmineDmsf::Test::HelperTest
def test_column_value def test_column_value
c_size = QueryColumn.new(:size) 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
end end