Disable file versioning for files that match the filter.
This commit is contained in:
parent
a57031957a
commit
0f288ba881
@ -179,6 +179,14 @@
|
||||
<%= l(:note_webdav_ignore) %> <%= l(:label_default) %>: ^(\._|\.DS_Store$|Thumbs.db$)
|
||||
</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>
|
||||
|
||||
<hr/>
|
||||
<em class="info">
|
||||
|
||||
@ -347,4 +347,7 @@ en:
|
||||
note_webdav_ignore: A regular expresion with filenames to ignore by PUT requests.
|
||||
|
||||
label_document_url: Url
|
||||
label_last_revision_id: Revision
|
||||
label_last_revision_id: Revision
|
||||
|
||||
label_webdav_disable_versioning: No versioning files patterns
|
||||
note_webdav_disable_versioning: A regular expression that disables versioning for matching files.
|
||||
|
||||
3
init.rb
3
init.rb
@ -49,7 +49,8 @@ Redmine::Plugin.register :redmine_dmsf do
|
||||
'dmsf_global_title_format' => '',
|
||||
'dmsf_columns' => %w(title size modified version workflow author),
|
||||
'dmsf_memcached_servers' => '',
|
||||
'dmsf_webdav_ignore' => '^(\._|\.DS_Store$|Thumbs.db$)'
|
||||
'dmsf_webdav_ignore' => '^(\._|\.DS_Store$|Thumbs.db$)',
|
||||
'dmsf_webdav_disable_versioning' => '^\~\$|\.tmp$'
|
||||
}
|
||||
|
||||
menu :project_menu, :dmsf, { :controller => 'dmsf', :action => 'show' }, :caption => :menu_dmsf, :before => :documents, :param => :id
|
||||
|
||||
@ -534,6 +534,7 @@ module RedmineDmsf
|
||||
def put(request, response)
|
||||
raise BadRequest if collection?
|
||||
raise Forbidden unless User.current.admin? || User.current.allowed_to?(:file_manipulation, project)
|
||||
|
||||
# Ignore file name patterns given in the plugin settings
|
||||
pattern = Setting.plugin_redmine_dmsf['dmsf_webdav_ignore']
|
||||
pattern = /^(\._|\.DS_Store$|Thumbs.db$)/ if pattern.blank?
|
||||
@ -542,17 +543,24 @@ module RedmineDmsf
|
||||
return NoContent
|
||||
end
|
||||
|
||||
new_revision = DmsfFileRevision.new
|
||||
reuse_revision = false
|
||||
# Disable versioning for file name patterns given in the plugin settings.
|
||||
pattern = Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning']
|
||||
if !pattern.blank? && basename.match(pattern)
|
||||
Rails.logger.info "Versioning disabled for #{basename}"
|
||||
reuse_revision = true
|
||||
else
|
||||
reuse_revision = false
|
||||
end
|
||||
|
||||
if exist? # We're over-writing something, so ultimately a new revision
|
||||
f = file
|
||||
last_revision = file.last_revision
|
||||
if last_revision.size == 0
|
||||
if last_revision.size == 0 || reuse_revision
|
||||
new_revision = last_revision
|
||||
new_revision.minor_version -= 1
|
||||
reuse_revision = true
|
||||
else
|
||||
new_revision = DmsfFileRevision.new
|
||||
new_revision.source_revision = last_revision
|
||||
if last_revision
|
||||
new_revision.major_version = last_revision.major_version
|
||||
@ -568,8 +576,10 @@ module RedmineDmsf
|
||||
f.name = basename
|
||||
f.dmsf_folder = parent.folder
|
||||
f.notification = !Setting.plugin_redmine_dmsf['dmsf_default_notifications'].blank?
|
||||
new_revision = DmsfFileRevision.new
|
||||
new_revision.minor_version = 0
|
||||
new_revision.major_version = 0
|
||||
reuse_revision = false
|
||||
end
|
||||
|
||||
new_revision.dmsf_file = f
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user