WebDAV enabled/disabled
This commit is contained in:
parent
5ffa2d2ac4
commit
510d989be8
@ -93,9 +93,11 @@
|
||||
<% unless @folder && @folder.system %>
|
||||
<% other_formats_links do |f| %>
|
||||
<%= f.link_to 'CSV', url: { action: :show, id: @project, folder_id: @folder, encoding: Encoding::UTF_8 } if @project %>
|
||||
<span>
|
||||
<%= link_to 'WebDAV', webdav_url(@project, @folder) %>
|
||||
</span>
|
||||
<% if Setting.plugin_redmine_dmsf['dmsf_webdav'] == '1' %>
|
||||
<span>
|
||||
<%= link_to 'WebDAV', webdav_url(@project, @folder) %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
|
||||
@ -67,17 +67,20 @@
|
||||
ids: params[:ids], email_entries: true), method: :post, class: 'icon icon-email',
|
||||
disabled: !email_allowed %>
|
||||
</li>
|
||||
<li>
|
||||
<% if dmsf_file.last_revision && dmsf_file.last_revision.protocol %>
|
||||
<% url = "#{dmsf_file.last_revision.protocol}:ofe|u|#{Setting.protocol.strip}://#{Setting.host_name.strip}/dmsf/webdav/#{Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(dmsf_file.project))}/" %>
|
||||
<% if dmsf_file.dmsf_folder %>
|
||||
<% url << "#{dmsf_file.dmsf_folder.dmsf_path_str}/" %>
|
||||
<% if Setting.plugin_redmine_dmsf['dmsf_webdav'] == '1' %>
|
||||
<li>
|
||||
<% if dmsf_file.last_revision && dmsf_file.last_revision.protocol %>
|
||||
<% url = "#{dmsf_file.last_revision.protocol}:ofe|u|#{Setting.protocol.strip}://#{Setting.host_name.strip}/dmsf/webdav/#{Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(dmsf_file.project))}/" %>
|
||||
<% if dmsf_file.dmsf_folder %>
|
||||
<% url << "#{dmsf_file.dmsf_folder.dmsf_path_str}/" %>
|
||||
<% end %>
|
||||
<% url << dmsf_file.name %>
|
||||
<% end %>
|
||||
<% url << dmsf_file.name %>
|
||||
<% end %>
|
||||
<%= context_menu_link l(:button_edit_content), url, class: "icon icon-file #{DmsfHelper.filetype_css(dmsf_file.name)}",
|
||||
disabled: url.blank? || (locked && (!unlockable)) %>
|
||||
</li>
|
||||
<%= context_menu_link l(:button_edit_content), url, class: "icon icon-file #{DmsfHelper.filetype_css(dmsf_file.name)}",
|
||||
disabled: url.blank? || (locked && (!unlockable)) ||
|
||||
(Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] != 'WEBDAV_READ_WRITE') %>
|
||||
</li>
|
||||
<% end %>
|
||||
<li>
|
||||
<%= context_menu_link l(:button_delete),
|
||||
dmsf_link ? dmsf_link_path(id: dmsf_link, folder_id: folder) : dmsf_file_path(id: dmsf_file, folder_id: folder),
|
||||
|
||||
@ -229,62 +229,73 @@
|
||||
options_for_select([
|
||||
[l(:select_option_deactivated), nil],
|
||||
[l(:select_option_activated), '1']],
|
||||
selected: @settings['dmsf_webdav'],
|
||||
disabled: webdav_disabled) %>
|
||||
selected: webdav_disabled ? nil : @settings['dmsf_webdav']),
|
||||
disabled: webdav_disabled,
|
||||
onchange: "$('#dmsf_webdav_block').toggle()" %>
|
||||
<em class="info">
|
||||
<% if webdav_disabled %>
|
||||
<% @settings['dmsf_webdav'] = nil %>
|
||||
<%= l(:note_webdav_disabled) %>
|
||||
<% else %>
|
||||
<%= l(:note_webdav, protocol: Setting.protocol, domain: Setting.host_name).html_safe %>
|
||||
<%= l(:label_default) %>: <%= l(:select_option_activated) %>
|
||||
<% end %>
|
||||
</em>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<%= content_tag :label, l(:label_webdav_strategy) %>
|
||||
<%= select_tag'settings[dmsf_webdav_strategy]',
|
||||
options_for_select([
|
||||
[l(:select_option_webdav_readonly), 'WEBDAV_READ_ONLY'],
|
||||
[l(:select_option_webdav_readwrite), 'WEBDAV_READ_WRITE']],
|
||||
selected: @settings['dmsf_webdav_strategy']) %>
|
||||
<br/>
|
||||
<em class="info">
|
||||
<%= l(:note_webdav_strategy).html_safe %> <%= l(:label_default) %>: <%= l(:select_option_webdav_readonly) %>
|
||||
</em>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_webdav_ignore)) %>
|
||||
<%= text_field_tag 'settings[dmsf_webdav_ignore]', @settings['dmsf_webdav_ignore'], size: 50 %>
|
||||
<em class="info">
|
||||
<%= l(:note_webdav_ignore) %> <%= l(:label_default) %>: ^(\._|\.DS_Store$|Thumbs.db$)
|
||||
</em>
|
||||
</p>
|
||||
<p>
|
||||
<%= content_tag(:label, l(:dmsf_webdav_ignore_1b_file_for_authentication)) %>
|
||||
<%= check_box_tag 'settings[dmsf_webdav_ignore_1b_file_for_authentication]', true, @settings['dmsf_webdav_ignore_1b_file_for_authentication'], size: 50 %>
|
||||
<em class="info">
|
||||
<%= l(:dmsf_webdav_ignore_1b_file_for_authentication_info) %> <%= l(:label_default) %>: <%= l(:general_text_Yes)%>
|
||||
</em>
|
||||
</p>
|
||||
<p>
|
||||
<%= content_tag :label, l(:label_webdav_disable_versioning) %>
|
||||
<%= text_field_tag 'settings[dmsf_webdav_disable_versioning]', @settings['dmsf_webdav_disable_versioning'], size: 50 %>
|
||||
<em class="info">
|
||||
<%= l(:note_webdav_disable_versioning) %> <br/>
|
||||
<%= l(:label_default) %>: ^\~\$|\.tmp$
|
||||
</em>
|
||||
</p>
|
||||
<% visible_class = @settings['dmsf_webdav'].blank? ? 'dmsf-hidden' : '' %>
|
||||
|
||||
<p>
|
||||
<%= content_tag :label, l(:label_webdav_use_project_names) %>
|
||||
<%= check_box_tag 'settings[dmsf_webdav_use_project_names]', true, @settings['dmsf_webdav_use_project_names'] %>
|
||||
<em class="info">
|
||||
<%= l(:note_webdav_use_project_names) %> <br/>
|
||||
<%= l(:label_default)%>: <%= l(:general_text_No)%>
|
||||
</em>
|
||||
</p>
|
||||
<div id="dmsf_webdav_block" class="<%= visible_class %>">
|
||||
<p>
|
||||
<%= content_tag :label, l(:label_webdav_strategy) %>
|
||||
<%= select_tag'settings[dmsf_webdav_strategy]',
|
||||
options_for_select([
|
||||
[l(:select_option_webdav_readonly), 'WEBDAV_READ_ONLY'],
|
||||
[l(:select_option_webdav_readwrite), 'WEBDAV_READ_WRITE']],
|
||||
selected: @settings['dmsf_webdav_strategy']),
|
||||
onchange: "$('#dmsf_webdav_ro_block').toggle()" %>
|
||||
<br/>
|
||||
<em class="info">
|
||||
<%= l(:note_webdav_strategy).html_safe %> <%= l(:label_default) %>: <%= l(:select_option_webdav_readonly) %>
|
||||
</em>
|
||||
</p>
|
||||
|
||||
<% visible_class = (@settings['dmsf_webdav_strategy'] == 'WEBDAV_READ_ONLY') ? 'dmsf-hidden' : '' %>
|
||||
|
||||
<div id="dmsf_webdav_ro_block" class="<%= visible_class %>">
|
||||
<p>
|
||||
<%= content_tag(:label, l(:label_webdav_ignore)) %>
|
||||
<%= text_field_tag 'settings[dmsf_webdav_ignore]', @settings['dmsf_webdav_ignore'], size: 50 %>
|
||||
<em class="info">
|
||||
<%= l(:note_webdav_ignore) %> <%= l(:label_default) %>: ^(\._|\.DS_Store$|Thumbs.db$)
|
||||
</em>
|
||||
</p>
|
||||
<p>
|
||||
<%= content_tag(:label, l(:dmsf_webdav_ignore_1b_file_for_authentication)) %>
|
||||
<%= check_box_tag 'settings[dmsf_webdav_ignore_1b_file_for_authentication]', true, @settings['dmsf_webdav_ignore_1b_file_for_authentication'], size: 50 %>
|
||||
<em class="info">
|
||||
<%= l(:dmsf_webdav_ignore_1b_file_for_authentication_info) %> <%= l(:label_default) %>: <%= l(:general_text_Yes)%>
|
||||
</em>
|
||||
</p>
|
||||
<p>
|
||||
<%= content_tag :label, l(:label_webdav_disable_versioning) %>
|
||||
<%= text_field_tag 'settings[dmsf_webdav_disable_versioning]', @settings['dmsf_webdav_disable_versioning'], size: 50 %>
|
||||
<em class="info">
|
||||
<%= l(:note_webdav_disable_versioning) %> <br/>
|
||||
<%= l(:label_default) %>: ^\~\$|\.tmp$
|
||||
</em>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<%= content_tag :label, l(:label_webdav_use_project_names) %>
|
||||
<%= check_box_tag 'settings[dmsf_webdav_use_project_names]', true, @settings['dmsf_webdav_use_project_names'] %>
|
||||
<em class="info">
|
||||
<%= l(:note_webdav_use_project_names) %> <br/>
|
||||
<%= l(:label_default)%>: <%= l(:general_text_No)%>
|
||||
</em>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
<em class="info">
|
||||
@ -339,5 +350,3 @@
|
||||
<%= l(:text_enable_cjk_ngrams) %>
|
||||
</em>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
@ -25,7 +25,8 @@ module RedmineDmsf
|
||||
class DmsfViewListener < Redmine::Hook::ViewListener
|
||||
|
||||
def view_layouts_base_html_head(context={})
|
||||
return unless /^(Dmsf|Projects|Issues|Queries|EasyCrmCases|MyController)/.match?(context[:controller].class.name)
|
||||
return unless /^(Dmsf|Projects|Issues|Queries|EasyCrmCases|MyController|SettingsController)/.match?(
|
||||
context[:controller].class.name)
|
||||
meta = "\n".html_safe + stylesheet_link_tag('redmine_dmsf.css', plugin: :redmine_dmsf) +
|
||||
"\n".html_safe + stylesheet_link_tag('select2.min.css', plugin: :redmine_dmsf) +
|
||||
"\n".html_safe + javascript_include_tag('select2.min.js', plugin: :redmine_dmsf, defer: true) +
|
||||
|
||||
@ -63,11 +63,13 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
|
||||
User.current = @jsmith
|
||||
@file1.lock!
|
||||
User.current = nil
|
||||
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
|
||||
assert_select 'a.icon-unlock', text: l(:button_unlock)
|
||||
assert_select 'a.icon-unlock.disabled', text: l(:button_edit_content), count: 0
|
||||
assert_select 'a.icon-file', text: l(:button_edit_content)
|
||||
assert_select 'a.icon-file.disabled', text: l(:button_edit_content), count: 0
|
||||
with_settings plugin_redmine_dmsf: { 'dmsf_webdav' => '1', 'dmsf_webdav_strategy' => 'WEBDAV_READ_WRITE' } do
|
||||
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
|
||||
assert_select 'a.icon-unlock', text: l(:button_unlock)
|
||||
assert_select 'a.icon-unlock.disabled', text: l(:button_edit_content), count: 0
|
||||
assert_select 'a.icon-file', text: l(:button_edit_content)
|
||||
assert_select 'a.icon-file.disabled', text: l(:button_edit_content), count: 0
|
||||
end
|
||||
end
|
||||
|
||||
def test_dmsf_file_locked_force_unlock_permission_off
|
||||
@ -138,6 +140,28 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
|
||||
assert_select 'a.icon-del', text: l(:button_delete)
|
||||
end
|
||||
|
||||
def test_dmsf_file_edit_content
|
||||
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
|
||||
assert_response :success
|
||||
assert_select 'a.dmsf-icon-file', text: l(:button_edit_content)
|
||||
end
|
||||
|
||||
def test_dmsf_file_edit_content_webdav_disabled
|
||||
with_settings plugin_redmine_dmsf: { 'dmsf_webdav' => nil } do
|
||||
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
|
||||
assert_response :success
|
||||
assert_select 'a:not(dmsf-icon-file)'
|
||||
end
|
||||
end
|
||||
|
||||
def test_dmsf_file_edit_content_webdav_readonly
|
||||
with_settings plugin_redmine_dmsf: { 'dmsf_webdav' => '1', 'dmsf_webdav_strategy' => 'WEBDAV_READ_ONLY' } do
|
||||
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
|
||||
assert_response :success
|
||||
assert_select 'a.dmsf-icon-file.disabled', text: l(:button_edit_content)
|
||||
end
|
||||
end
|
||||
|
||||
def test_dmsf_file_link
|
||||
get :dmsf, params: {
|
||||
id: @file_link6.project.id, folder_id: @file_link6.dmsf_folder, ids: ["file-link-#{@file_link6.id}"] }
|
||||
|
||||
@ -204,11 +204,21 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
|
||||
assert_select 'table.dmsf'
|
||||
# CSV export
|
||||
assert_select 'a.csv'
|
||||
# WebDAV
|
||||
assert_select 'a', text: 'WebDAV'
|
||||
# 'Zero Size File' document and an expander is present
|
||||
assert_select 'a', text: @file10.title
|
||||
assert_select 'span.dmsf-expander'
|
||||
end
|
||||
|
||||
def test_show_webdav_disabled
|
||||
with_settings plugin_redmine_dmsf: { 'dmsf_webdav' => nil } do
|
||||
get :show, params: { id: @project1.id }
|
||||
assert_response :success
|
||||
assert_select 'a', text: 'WebDAV', count: 0
|
||||
end
|
||||
end
|
||||
|
||||
def test_show_filters_found
|
||||
get :show, params: { id: @project1.id, f: ['title'], op: { 'title' => '~' }, v: { 'title' => ['Zero'] } }
|
||||
assert_response :success
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user