From 5d49b57e0d4a3cdcffde2667962650086ed68558 Mon Sep 17 00:00:00 2001 From: "karel.picman@lbcfree.net" Date: Thu, 8 Jul 2021 08:51:02 +0200 Subject: [PATCH] Document editing from a mounted folder in MS Office 2016 #1267 --- lib/redmine_dmsf/webdav/dmsf_resource.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/redmine_dmsf/webdav/dmsf_resource.rb b/lib/redmine_dmsf/webdav/dmsf_resource.rb index e27240ac..d51dc5c6 100644 --- a/lib/redmine_dmsf/webdav/dmsf_resource.rb +++ b/lib/redmine_dmsf/webdav/dmsf_resource.rb @@ -154,6 +154,10 @@ module RedmineDmsf response['Content-Type'] = 'text/html' else raise Forbidden unless User.current.admin? || User.current.allowed_to?(:view_dmsf_files, project) + http_if_none_match = request.get_header('HTTP_IF_NONE_MATCH') + if http_if_none_match.present? && (http_if_none_match == etag) + return NotModified # MS Office 2016, PROTECTED VIEW => Enable editing? + end response.body = download # Rack based provider end OK @@ -185,7 +189,7 @@ module RedmineDmsf if file raise Forbidden unless User.current.admin? || User.current.allowed_to?(:file_delete, project) raise Forbidden unless (!parent.exist? || !parent.folder || DmsfFolder.permissions?(parent.folder, false)) - raise Locked if file.locked? + raise Locked if file.locked_for_user? pattern = Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning'] if pattern.present? && basename.match(pattern) # Files that are not versioned should be destroyed