From f4eb85200a61b50d1c030f5f73d97426c94b556a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Karel=20Pi=C4=8Dman?=
Date: Thu, 5 Jan 2023 11:01:18 +0100
Subject: [PATCH] #1414 Empty default version by default
---
app/helpers/dmsf_upload_helper.rb | 2 +-
app/models/dmsf_file_revision.rb | 3 +-
app/models/dmsf_upload.rb | 9 +++-
.../dmsf_files/_version_selector.html.erb | 9 +++-
app/views/settings/_dmsf_settings.html.erb | 8 +++
config/locales/cs.yml | 2 +
config/locales/de.yml | 2 +
config/locales/en.yml | 2 +
config/locales/es.yml | 2 +
config/locales/fa.yml | 2 +
config/locales/fr.yml | 2 +
config/locales/hu.yml | 2 +
config/locales/it.yml | 2 +
config/locales/ja.yml | 2 +
config/locales/ko.yml | 2 +
config/locales/nl.yml | 2 +
config/locales/pl.yml | 2 +
config/locales/pt-BR.yml | 2 +
config/locales/sl.yml | 2 +
config/locales/zh-TW.yml | 2 +
config/locales/zh.yml | 2 +
init.rb | 3 +-
test/unit/dmsf_upload_test.rb | 53 +++++++++++++++++++
23 files changed, 112 insertions(+), 7 deletions(-)
create mode 100644 test/unit/dmsf_upload_test.rb
diff --git a/app/helpers/dmsf_upload_helper.rb b/app/helpers/dmsf_upload_helper.rb
index 26602a4d..fbde8888 100644
--- a/app/helpers/dmsf_upload_helper.rb
+++ b/app/helpers/dmsf_upload_helper.rb
@@ -165,7 +165,7 @@ module DmsfUploadHelper
# 1 -> 2, -1 -> -2, A -> B
def self.increase_version(version)
- version ||= 0
+ return nil unless version
return 1 if ((version == ' ') || ((-version) == ' '.ord))
if Integer(version)
if version >= 0
diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb
index 5a6913d7..40c8d2c1 100644
--- a/app/models/dmsf_file_revision.rb
+++ b/app/models/dmsf_file_revision.rb
@@ -274,7 +274,8 @@ class DmsfFileRevision < ActiveRecord::Base
# Patch version
self.patch_version = case version_to_increase
when PATCH_VERSION
- DmsfUploadHelper.increase_version patch_version
+ patch_version = 0 unless patch_version
+ DmsfUploadHelper.increase_version patch_version
else
nil
end
diff --git a/app/models/dmsf_upload.rb b/app/models/dmsf_upload.rb
index baafe59d..804050cf 100644
--- a/app/models/dmsf_upload.rb
+++ b/app/models/dmsf_upload.rb
@@ -82,8 +82,13 @@ class DmsfUpload
if file.nil? || file.last_revision.nil?
@title = DmsfFileRevision.filename_to_title(@name)
@description = uploaded[:comment]
- @major_version = 0
- @minor_version = 0
+ if Setting.plugin_redmine_dmsf['empty_minor_version_by_default']
+ @major_version = 1
+ @minor_version = nil
+ else
+ @major_version = 0
+ @minor_version = 0
+ end
@patch_version = nil
@workflow = nil
file = DmsfFile.new
diff --git a/app/views/dmsf_files/_version_selector.html.erb b/app/views/dmsf_files/_version_selector.html.erb
index fece2234..9d6fd65c 100644
--- a/app/views/dmsf_files/_version_selector.html.erb
+++ b/app/views/dmsf_files/_version_selector.html.erb
@@ -36,8 +36,13 @@
DmsfUploadHelper::gui_version(DmsfUploadHelper.increase_version(revision_or_upload.patch_version))),
class: 'dmsf-select-version' %>
<% else %>
- <%= select_tag select_tag_name_minor, options_for_select(DmsfUploadHelper::minor_version_select_options,
- DmsfUploadHelper::gui_version(DmsfUploadHelper.increase_version(revision_or_upload.minor_version))),
+ <% if revision_or_upload.minor_version %>
+ <% minor_version = DmsfUploadHelper::gui_version(DmsfUploadHelper.increase_version(revision_or_upload.minor_version)) %>
+ <% else %>
+ <% minor_version = '' %>
+ <% end %>
+ <%= select_tag select_tag_name_minor,
+ options_for_select(DmsfUploadHelper::minor_version_select_options, minor_version),
class: 'dmsf-select-version' %>
.
<%= select_tag select_tag_name_patch, options_for_select(DmsfUploadHelper::patch_version_select_options,
diff --git a/app/views/settings/_dmsf_settings.html.erb b/app/views/settings/_dmsf_settings.html.erb
index a949213d..d8b5bedb 100644
--- a/app/views/settings/_dmsf_settings.html.erb
+++ b/app/views/settings/_dmsf_settings.html.erb
@@ -160,6 +160,14 @@
+
+ <%= content_tag :label, l(:label_empty_minor_version_by_default) %>
+ <%= check_box_tag 'settings[empty_minor_version_by_default]', false, @settings['empty_minor_version_by_default'] %>
+
+ <%= l(:label_default) %>: <%= l(:general_text_No) %>
+
+
+
<%= l(:label_dmsf_columns) %>
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 427cbc0b..8e60ca46 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -464,6 +464,8 @@ cs:
note_dmsf_global_menu_disabled: Pokud je zašrtnuto, tak položka DMS není v hlavním menu.
error_dmsf_workflow_assigned: Použitý schvalovací proces nemůže být ani upraven ani smazán.
+ label_empty_minor_version_by_default: Prázdná vedlejší verze jako výchozí
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 6927629b..ad0b99f9 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -460,6 +460,8 @@ de:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Der verwendete Genehmigungs-Workflow kann weder bearbeitet noch gelöscht werden.
+ label_empty_minor_version_by_default: Leere Unterversion als Standard
+
easy_pages:
modules:
dmsf_locked_documents: Von mir gesperrte Dokumente
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 079770d3..111cf5a0 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -464,6 +464,8 @@ en:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 5ee1ff7d..35c78717 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -464,6 +464,8 @@ es:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 6cb2299d..40e631cb 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -443,6 +443,8 @@ fa:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: اسناد قفل شدهی من
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index eebb10da..1f97b249 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -464,6 +464,8 @@ fr:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 5930fa7a..c720aead 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -463,6 +463,8 @@ hu:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/it.yml b/config/locales/it.yml
index e05bd205..4ad1b7c7 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -464,6 +464,8 @@ it: # Italian strings thx 2 Matteo Arceci!
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 886f7ed8..e4bd2f66 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -465,6 +465,8 @@ ja:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: 自分がロック中の文書
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index ee487ed1..adf60b45 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -464,6 +464,8 @@ ko:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: 내 잠긴 파일
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 2ed1c5ed..387391cd 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -464,6 +464,8 @@ nl:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index f717cd44..42cdfed9 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -464,6 +464,8 @@ pl:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 13c59a35..c9934b1a 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -464,6 +464,8 @@ pt-BR:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index e1fe6d95..b58f86f2 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -464,6 +464,8 @@ sl:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 6c5f0d8f..cd9ee108 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -463,6 +463,8 @@ zh-TW:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index 18ed2e42..a51a81c3 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -464,6 +464,8 @@ zh:
note_dmsf_global_menu_disabled: If yes, DMS menu item is not present in the top menu.
error_dmsf_workflow_assigned: Approval workflow in use can be neither edited nor deleted.
+ label_empty_minor_version_by_default: Empty minor version by default
+
easy_pages:
modules:
dmsf_locked_documents: My locked documents
diff --git a/init.rb b/init.rb
index c11440af..cb9ed593 100644
--- a/init.rb
+++ b/init.rb
@@ -58,7 +58,8 @@ Redmine::Plugin.register :redmine_dmsf do
'dmsf_max_notification_receivers_info' => 10,
'office_bin' => 'libreoffice',
'dmsf_global_menu_disabled' => nil,
- 'dmsf_default_query' => nil
+ 'dmsf_default_query' => nil,
+ 'empty_minor_version_by_default' => nil
}
end
diff --git a/test/unit/dmsf_upload_test.rb b/test/unit/dmsf_upload_test.rb
new file mode 100644
index 00000000..2ce352c8
--- /dev/null
+++ b/test/unit/dmsf_upload_test.rb
@@ -0,0 +1,53 @@
+# encoding: utf-8
+# frozen_string_literal: true
+#
+# Redmine plugin for Document Management System "Features"
+#
+# Copyright © 2011-23 Karel Pičman
+#
+# 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 DmsfUploadTest < RedmineDmsf::Test::UnitTest
+
+ fixtures :projects
+
+ def setup
+ super
+ @uploaded = {
+ disk_filename: '230105094726_1-TIOMAN_IMG_4391a.JPG',
+ content_type: 'image/jpeg',
+ original_filename: '1-TIOMAN_IMG_4391a.JPG',
+ comment: '',
+ tempfile_path: '/opt/redmine/files/2023/01/230105104724_1-TIOMAN_IMG_4391a.JPG',
+ digest: '3fae7e571666c3b9a70067970a00396b5019e6ea94b26398d13e989e695a1a39'
+ }
+ end
+
+ def test_initialize
+ with_settings plugin_redmine_dmsf: { 'empty_minor_version_by_default' => '1' } do
+ upload = DmsfUpload.new(@project1, nil, @uploaded)
+ assert_equal 1, upload.major_version
+ assert_nil upload.minor_version
+ end
+ with_settings plugin_redmine_dmsf: { 'empty_minor_version_by_default' => nil } do
+ upload = DmsfUpload.new(@project1, nil, @uploaded)
+ assert_equal 0, upload.major_version
+ assert_equal 0, upload.minor_version
+ end
+ end
+
+end
\ No newline at end of file